From b83e5b534a757ac777a36ef3da3dc31d9f41f825 Mon Sep 17 00:00:00 2001 From: Kyrylo Riabov Date: Thu, 22 Aug 2024 18:58:21 +0300 Subject: [PATCH] Use custom artifacts for types generation (#12) * Used custom artifacts for types generation * Updated config types * Updated README * Updated CHANGELOG.md --- .gitignore | 2 + CHANGELOG.md | 5 + README.md | 5 +- package-lock.json | 567 +----------------- package.json | 8 +- src/config.ts | 3 +- src/constants/circom.ts | 8 +- src/core/BaseTSGenerator.ts | 19 +- src/core/CircuitArtifactGenerator.ts | 491 --------------- src/core/CircuitTypesGenerator.ts | 43 +- src/core/ZkitTSGenerator.ts | 24 +- src/errors/ParseError.ts | 19 - src/errors/common.ts | 3 - src/errors/index.ts | 2 - src/index.ts | 2 - src/types/ast.ts | 135 ----- src/types/circuitArtifact.ts | 48 +- src/types/common.ts | 4 +- src/types/config.ts | 13 +- src/types/index.ts | 1 - test/CircuitArtifactGenerator.test.ts | 97 --- test/CircuitProofGeneration.test.ts | 92 +-- test/CircuitTypesGenerator.test.ts | 33 +- ...AtomicQueryMTPOnChainVoting_artifacts.json | 399 ++++++++++++ test/fixture-cache/Multiplier2_artifacts.json | 51 ++ .../artifacts/Basic.circom/Multiplier2.r1cs | Bin 0 -> 264 bytes .../Basic.circom/Multiplier2.vkey.json | 1 + .../artifacts/Basic.circom/Multiplier2.zkey | Bin 0 -> 3082 bytes .../Multiplier2_js/Multiplier2.wasm | Bin 0 -> 34290 bytes .../Multiplier2_js/generate_witness.js | 20 + .../Multiplier2_js/witness_calculator.js | 337 +++++++++++ .../artifacts/auth/Matrix.circom/Matrix.r1cs | Bin 0 -> 1520 bytes .../auth/Matrix.circom/Matrix.vkey.json | 1 + .../artifacts/auth/Matrix.circom/Matrix.zkey | Bin 0 -> 19914 bytes .../auth/Matrix.circom/Matrix_js/Matrix.wasm | Bin 0 -> 35029 bytes .../Matrix_js/generate_witness.js | 20 + .../Matrix_js/witness_calculator.js | 337 +++++++++++ .../auth/EnhancedMultiplier_artifacts.json | 55 ++ test/fixture-cache/auth/Matrix_artifacts.json | 81 +++ .../auth/Multiplier2_artifacts.json | 51 ++ .../lib/Multiplier2_artifacts.json | 51 ++ test/helpers/CircuitCompiler.ts | 244 -------- test/helpers/CircuitProcessor.ts | 199 ------ test/helpers/generateTypes.ts | 29 - test/helpers/generator.ts | 23 - test/helpers/powersOfTau28_hez_final_08.ptau | Bin 378008 -> 0 bytes test/helpers/types.ts | 53 -- 47 files changed, 1524 insertions(+), 2052 deletions(-) delete mode 100644 src/core/CircuitArtifactGenerator.ts delete mode 100644 src/errors/ParseError.ts delete mode 100644 src/errors/common.ts delete mode 100644 src/errors/index.ts delete mode 100644 src/types/ast.ts delete mode 100644 test/CircuitArtifactGenerator.test.ts create mode 100644 test/fixture-cache/CredentialAtomicQueryMTPOnChainVoting_artifacts.json create mode 100644 test/fixture-cache/Multiplier2_artifacts.json create mode 100644 test/fixture-cache/artifacts/Basic.circom/Multiplier2.r1cs create mode 100644 test/fixture-cache/artifacts/Basic.circom/Multiplier2.vkey.json create mode 100644 test/fixture-cache/artifacts/Basic.circom/Multiplier2.zkey create mode 100644 test/fixture-cache/artifacts/Basic.circom/Multiplier2_js/Multiplier2.wasm create mode 100644 test/fixture-cache/artifacts/Basic.circom/Multiplier2_js/generate_witness.js create mode 100644 test/fixture-cache/artifacts/Basic.circom/Multiplier2_js/witness_calculator.js create mode 100644 test/fixture-cache/artifacts/auth/Matrix.circom/Matrix.r1cs create mode 100644 test/fixture-cache/artifacts/auth/Matrix.circom/Matrix.vkey.json create mode 100644 test/fixture-cache/artifacts/auth/Matrix.circom/Matrix.zkey create mode 100644 test/fixture-cache/artifacts/auth/Matrix.circom/Matrix_js/Matrix.wasm create mode 100644 test/fixture-cache/artifacts/auth/Matrix.circom/Matrix_js/generate_witness.js create mode 100644 test/fixture-cache/artifacts/auth/Matrix.circom/Matrix_js/witness_calculator.js create mode 100644 test/fixture-cache/auth/EnhancedMultiplier_artifacts.json create mode 100644 test/fixture-cache/auth/Matrix_artifacts.json create mode 100644 test/fixture-cache/auth/Multiplier2_artifacts.json create mode 100644 test/fixture-cache/lib/Multiplier2_artifacts.json delete mode 100644 test/helpers/CircuitCompiler.ts delete mode 100644 test/helpers/CircuitProcessor.ts delete mode 100644 test/helpers/generateTypes.ts delete mode 100644 test/helpers/generator.ts delete mode 100644 test/helpers/powersOfTau28_hez_final_08.ptau delete mode 100644 test/helpers/types.ts diff --git a/.gitignore b/.gitignore index 6538fe2..33b53f7 100644 --- a/.gitignore +++ b/.gitignore @@ -45,3 +45,5 @@ typings/ # Optional npm cache directory .npm + +!test/fixture-cache/artifacts diff --git a/CHANGELOG.md b/CHANGELOG.md index 194d442..6b82348 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## [v0.3.0] + +* Switched to the use of custom artifacts generated by the hardhat-zkit package +* Removed all code related to artifact generation and circuit compilation + ## [v0.2.7] * Improved error messages during the artifact extraction process diff --git a/README.md b/README.md index 20edccc..ee68bfd 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,6 @@ ZKTypeConfig = { basePath: string; projectRoot: string; circuitsASTPaths: string[]; - outputArtifactsDir?: string; outputTypesDir?: string; }; ``` @@ -41,9 +40,7 @@ This config contains all the information required to generate TypeScript binding - `basePath` - Path to the root directory of the project where circuits are stored. - `projectRoot` - Absolute path to the root directory of the project. -- `circuitsASTPaths` - Array of paths to the circuits' AST files. -- `outputArtifactsDir` - Path to the directory where the generated artifacts will be stored. - - Optional. Default: `artifacts/circuits`. +- `circuitsArtifactsPaths` - Array of paths to the circuits' Artifact files. - `outputTypesDir` - Path to the directory where the generated types will be stored. - Optional. Default: `generated-types/circuits`. diff --git a/package-lock.json b/package-lock.json index 31126a6..e5aab2d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@solarity/zktype", - "version": "0.2.7", + "version": "0.3.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@solarity/zktype", - "version": "0.2.7", + "version": "0.3.0", "license": "MIT", "dependencies": { "ejs": "3.1.10", @@ -14,7 +14,6 @@ "typescript": "5.5.4" }, "devDependencies": { - "@distributedlab/circom2": "0.2.18-rc.2", "@types/chai": "^4.3.12", "@types/chai-as-promised": "^7.1.8", "@types/ejs": "^3.1.5", @@ -370,23 +369,6 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, - "node_modules/@distributedlab/circom2": { - "version": "0.2.18-rc.2", - "resolved": "https://registry.npmjs.org/@distributedlab/circom2/-/circom2-0.2.18-rc.2.tgz", - "integrity": "sha512-hBFZ6J7qvxXYgERDspIeG+hh4QfUrN4O7S7JftR1J3zvF5tJ5hpXyguHDn6STQOc4fLtnjTAWDZyIbnCihJWQA==", - "dev": true, - "dependencies": { - "@wasmer/wasi": "^0.12.0", - "is-typed-array": "^1.1.8", - "path-browserify": "^1.0.1" - }, - "engines": { - "node": ">=15" - }, - "optionalDependencies": { - "rustwasmc": "^0.1.29" - } - }, "node_modules/@ethersproject/abi": { "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", @@ -1645,18 +1627,6 @@ "@types/node": "*" } }, - "node_modules/@wasmer/wasi": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@wasmer/wasi/-/wasi-0.12.0.tgz", - "integrity": "sha512-FJhLZKAfLWm/yjQI7eCRHNbA8ezmb7LSpUYFkHruZXs2mXk2+DaQtSElEtOoNrVQ4vApTyVaAd5/b7uEu8w6wQ==", - "dev": true, - "dependencies": { - "browser-process-hrtime": "^1.0.0", - "buffer-es6": "^4.9.3", - "path-browserify": "^1.0.0", - "randomfill": "^1.0.4" - } - }, "node_modules/acorn": { "version": "8.12.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", @@ -1826,32 +1796,6 @@ "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" }, - "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==", - "dev": true, - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/axios": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", - "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", - "deprecated": "Critical security vulnerability fixed in v0.21.1. For more information, see https://github.com/axios/axios/pull/3410", - "dev": true, - "optional": true, - "dependencies": { - "follow-redirects": "1.5.10" - } - }, "node_modules/b4a": { "version": "1.6.6", "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", @@ -1898,21 +1842,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/binary-install": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/binary-install/-/binary-install-0.0.1.tgz", - "integrity": "sha512-axr6lqB4ec/pkEOb/JMnZpfcroWv1zT48pVz1oQHG7XmGkS77vmdxmP1btuH79lWQdy9e2MVw/uW0D8siopkRg==", - "dev": true, - "optional": true, - "dependencies": { - "axios": "^0.19.0", - "env-paths": "^2.2.0", - "mkdirp": "^0.5.1", - "rimraf": "^3.0.0", - "tar": "^5.0.5", - "universal-url": "^2.0.0" - } - }, "node_modules/blake2b-wasm": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/blake2b-wasm/-/blake2b-wasm-2.4.0.tgz", @@ -2070,12 +1999,6 @@ "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", "dev": true }, - "node_modules/browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, "node_modules/browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", @@ -2148,12 +2071,6 @@ "safe-buffer": "^5.1.2" } }, - "node_modules/buffer-es6": { - "version": "4.9.3", - "resolved": "https://registry.npmjs.org/buffer-es6/-/buffer-es6-4.9.3.tgz", - "integrity": "sha512-Ibt+oXxhmeYJSsCkODPqNpPmyegefiD8rfutH1NYGhMZQhSp95Rz7haemgnJ6dxa6LT+JLLbtgOMORRluwKktw==", - "dev": true - }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -2190,25 +2107,6 @@ "node": ">=8" } }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "dev": true, - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/camelcase": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", @@ -2326,13 +2224,6 @@ "fsevents": "~2.3.2" } }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true, - "optional": true - }, "node_modules/ci-info": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", @@ -2560,23 +2451,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -2664,27 +2538,6 @@ "node": ">=6" } }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/es6-error": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", @@ -2973,45 +2826,6 @@ "flat": "cli.js" } }, - "node_modules/follow-redirects": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", - "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", - "dev": true, - "optional": true, - "dependencies": { - "debug": "=3.1.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/follow-redirects/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "optional": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/follow-redirects/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "optional": true - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.3" - } - }, "node_modules/foreground-child": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", @@ -3065,19 +2879,6 @@ "node": ">=6 <7 || >=8" } }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "optional": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -3098,15 +2899,6 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.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==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -3134,25 +2926,6 @@ "node": "*" } }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "dev": true, - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "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", @@ -3204,18 +2977,6 @@ "node": ">=4" } }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "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", @@ -3297,57 +3058,6 @@ "node": ">=4" } }, - "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==", - "dev": true, - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "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==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "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", @@ -3397,28 +3107,6 @@ "node": ">=8" } }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hasurl": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hasurl/-/hasurl-1.0.0.tgz", - "integrity": "sha512-43ypUd3DbwyCT01UYpA99AEZxZ4aKtRxWGBHEIbjcOsUghd9YUON0C+JF6isNjaiwC/UF5neaUudy6JS9jZPZQ==", - "dev": true, - "optional": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -3571,18 +3259,6 @@ "node": ">=8" } }, - "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==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -3653,21 +3329,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", - "dev": true, - "dependencies": { - "which-typed-array": "^1.1.14" - }, - "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", @@ -4067,13 +3728,6 @@ "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", "dev": true }, - "node_modules/lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", - "dev": true, - "optional": true - }, "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", @@ -4253,70 +3907,6 @@ "node": "*" } }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "optional": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "optional": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true, - "optional": true - }, - "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "optional": true, - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minizlib/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true, - "optional": true - }, - "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==", - "dev": true, - "optional": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, "node_modules/mnemonist": { "version": "0.38.5", "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz", @@ -4903,12 +4493,6 @@ "node": ">=8" } }, - "node_modules/path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "dev": true - }, "node_modules/path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", @@ -5067,15 +4651,6 @@ "node": ">=8" } }, - "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -5110,16 +4685,6 @@ "node": ">=8" } }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "optional": true, - "engines": { - "node": ">=6" - } - }, "node_modules/r1csfile": { "version": "0.0.48", "resolved": "https://registry.npmjs.org/r1csfile/-/r1csfile-0.0.48.tgz", @@ -5141,16 +4706,6 @@ "safe-buffer": "^5.1.0" } }, - "node_modules/randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "dependencies": { - "randombytes": "^2.0.5", - "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", @@ -5278,20 +4833,6 @@ "rlp": "bin/rlp" } }, - "node_modules/rustwasmc": { - "version": "0.1.29", - "resolved": "https://registry.npmjs.org/rustwasmc/-/rustwasmc-0.1.29.tgz", - "integrity": "sha512-yYqYQ61W1P/DUIcUF/djhltHqLQwETuiVorJ52ZqDSYeU2D6+4FrVPbICe7vhz7Y9FeMPz0K1SkBoJjnLjFS6g==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "dependencies": { - "binary-install": "0.0.1" - }, - "bin": { - "rustwasmc": "run.js" - } - }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -5363,23 +4904,6 @@ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", @@ -5664,31 +5188,6 @@ "node": ">=4" } }, - "node_modules/tar": { - "version": "5.0.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-5.0.11.tgz", - "integrity": "sha512-E6q48d5y4XSCD+Xmwc0yc8lXuyDK38E0FB8N4S/drQRtXOMUhfhDxbB0xr2KKDhNfO51CFmoa6Oz00nAkWsjnA==", - "dev": true, - "optional": true, - "dependencies": { - "chownr": "^1.1.4", - "fs-minipass": "^2.1.0", - "minipass": "^3.1.3", - "minizlib": "^2.1.2", - "mkdirp": "^0.5.5", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/tar/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true, - "optional": true - }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -5745,16 +5244,6 @@ "node": ">=0.6" } }, - "node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", - "dev": true, - "optional": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, "node_modules/tryer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", @@ -5912,20 +5401,6 @@ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", "dev": true }, - "node_modules/universal-url": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universal-url/-/universal-url-2.0.0.tgz", - "integrity": "sha512-3DLtXdm/G1LQMCnPj+Aw7uDoleQttNHp2g5FnNQKR6cP6taNWS1b/Ehjjx4PVyvejKi3TJyu8iBraKM4q3JQPg==", - "dev": true, - "optional": true, - "dependencies": { - "hasurl": "^1.0.0", - "whatwg-url": "^7.0.0" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", @@ -6013,25 +5488,6 @@ "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.2.0.tgz", "integrity": "sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==" }, - "node_modules/webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true, - "optional": true - }, - "node_modules/whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "optional": true, - "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -6053,25 +5509,6 @@ "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", "dev": true }, - "node_modules/which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/widest-line": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", diff --git a/package.json b/package.json index c1eeb8d..1e1d858 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@solarity/zktype", - "version": "0.2.7", + "version": "0.3.0", "description": "Unleash TypeScript bindings for Circom circuits", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -15,9 +15,8 @@ ], "scripts": { "prepare": "husky", - "prepare-test": "ts-node ./test/helpers/generateTypes.ts", - "build": "npm run prepare-test && tsc", - "test": "npm run prepare-test && mocha --recursive 'test/**/*.ts' --exit", + "build": "tsc", + "test": "mocha --recursive 'test/**/*.ts' --exit", "coverage": "prepare-test && nyc mocha --recursive 'test/**/*.ts' --exit", "lint-fix": "prettier --write '**/*.ts'", "publish-to-npm": "npm run build && npm run lint-fix && rm -rf dist/core/templates && cp -rf src/core/templates dist/core/templates && npm publish ./ --access public" @@ -53,7 +52,6 @@ "@solarity/zkit": "^0.2.4" }, "devDependencies": { - "@distributedlab/circom2": "0.2.18-rc.2", "@types/chai": "^4.3.12", "@types/chai-as-promised": "^7.1.8", "@types/ejs": "^3.1.5", diff --git a/src/config.ts b/src/config.ts index 4aba044..9f0410d 100644 --- a/src/config.ts +++ b/src/config.ts @@ -3,7 +3,6 @@ import { ZKTypeConfig } from "./types"; export const defaultCircuitArtifactGeneratorConfig: ZKTypeConfig = { basePath: "circuits", projectRoot: process.cwd(), - circuitsASTPaths: [], - outputArtifactsDir: "artifacts/circuits", + circuitsArtifactsPaths: [], outputTypesDir: "generated-types/circuits", }; diff --git a/src/constants/circom.ts b/src/constants/circom.ts index fc2d23c..b4049e9 100644 --- a/src/constants/circom.ts +++ b/src/constants/circom.ts @@ -5,11 +5,15 @@ export enum SignalTypeNames { } export enum SignalVisibilityNames { - Public = "public", - Private = "private", + Public = "Public", + Private = "Private", } export enum InternalType { BigInt = "", BigIntArray = "", } + +export enum Formats { + V1HH_ZKIT_TYPE = "hh-zkit-artifacts-1", +} diff --git a/src/core/BaseTSGenerator.ts b/src/core/BaseTSGenerator.ts index 43041a5..e6051b9 100644 --- a/src/core/BaseTSGenerator.ts +++ b/src/core/BaseTSGenerator.ts @@ -2,8 +2,6 @@ import fs from "fs"; import path from "path"; import ts from "typescript"; -import CircuitArtifactGenerator from "./CircuitArtifactGenerator"; - import { CircuitArtifact, ZKTypeConfig } from "../types"; /** @@ -24,13 +22,9 @@ export default class BaseTSGenerator { protected readonly _printer: ts.Printer; protected readonly _resultFile: ts.SourceFile; - protected readonly _artifactsGenerator: CircuitArtifactGenerator; - constructor(config: ZKTypeConfig) { this._zktypeConfig = config; - this._artifactsGenerator = new CircuitArtifactGenerator(config); - this._projectRoot = config.projectRoot; this._printer = ts.createPrinter({ newLine: ts.NewLineKind.LineFeed }); @@ -46,13 +40,6 @@ export default class BaseTSGenerator { return path.join(this._projectRoot, relativePath); } - /** - * Returns the path to the output directory for the generated artifacts. - */ - public getOutputArtifactsDir(): string { - return this._artifactsGenerator.getOutputArtifactsDir(); - } - /** * Saves the content to the file with the given name. * @@ -87,7 +74,7 @@ export default class BaseTSGenerator { * @returns {string} The extracted type name. */ protected _getTypeName(circuitArtifact: CircuitArtifact, prefix: string = ""): string { - return `${prefix}${circuitArtifact.circuitName.replace(path.extname(circuitArtifact.circuitName), "")}`; + return `${prefix}${circuitArtifact.circuitTemplateName.replace(path.extname(circuitArtifact.circuitTemplateName), "")}`; } /** @@ -97,7 +84,7 @@ export default class BaseTSGenerator { * @returns {string} The extracted circuit name. */ protected _getCircuitName(circuitArtifact: CircuitArtifact): string { - return `${circuitArtifact.circuitName.replace(path.extname(circuitArtifact.circuitName), "")}`; + return `${circuitArtifact.circuitTemplateName.replace(path.extname(circuitArtifact.circuitTemplateName), "")}`; } /** @@ -109,7 +96,7 @@ export default class BaseTSGenerator { * @returns {string} The full circuit name. */ protected _getFullCircuitName(circuitArtifact: CircuitArtifact): string { - return `${circuitArtifact.sourceName}:${this._getCircuitName(circuitArtifact)}`; + return `${circuitArtifact.circuitSourceName}:${this._getCircuitName(circuitArtifact)}`; } /** diff --git a/src/core/CircuitArtifactGenerator.ts b/src/core/CircuitArtifactGenerator.ts deleted file mode 100644 index 373e7c4..0000000 --- a/src/core/CircuitArtifactGenerator.ts +++ /dev/null @@ -1,491 +0,0 @@ -import fs from "fs"; -import path from "path"; - -import { InternalType, SignalTypeNames, SignalVisibilityNames } from "../constants"; -import { - Stmt, - Signal, - Result, - Template, - CircuitAST, - SignalType, - Declaration, - CircuitArtifact, - SignalVisibility, - CircomCompilerOutput, - ArtifactGeneratorConfig, -} from "../types"; - -import { ASTParserError } from "../errors"; -import { ErrorObj } from "../errors/common"; - -/** - * `CircuitArtifactGenerator` is responsible for generating circuit artifacts based on the AST files. - * - * The artifact is a JSON file which can be used further in the pipeline for type generation, strict typing natively by TypeScript, etc. - * If the format of the artifact changes, the `CURRENT_FORMAT` constant should be updated for backward compatibility. - * - * This class mainly parses and validates the generated AST JSONs. Validation is needed to ensure that the generated AST files meet expectations and necessary - * fields exist. - */ -export default class CircuitArtifactGenerator { - /** - * The current format version of the circuit artifact. - */ - public static readonly CURRENT_FORMAT: string = "zktype-circom-artifact-1"; - - /** - * The default format version of the circuit artifact. - */ - public static readonly DEFAULT_CIRCUIT_FORMAT: string = "zktype-circom-artifact-default"; - - private readonly _projectRoot: string; - private readonly _circuitArtifactGeneratorConfig: ArtifactGeneratorConfig; - - /** - * Creates an instance of CircuitArtifactGenerator. - * @param {ArtifactGeneratorConfig} circuitArtifactGeneratorConfig - The configuration for the `CircuitArtifactGenerator`. - */ - constructor(circuitArtifactGeneratorConfig: ArtifactGeneratorConfig) { - this._projectRoot = circuitArtifactGeneratorConfig.projectRoot; - this._circuitArtifactGeneratorConfig = circuitArtifactGeneratorConfig; - } - - /** - * Generates circuit artifacts based on the ASTs. - */ - public async generateCircuitArtifacts(): Promise { - const astFilePaths = this._circuitArtifactGeneratorConfig.circuitsASTPaths; - - const errors: ErrorObj[] = []; - - for (const astFilePath of astFilePaths) { - const circuitArtifact = await this.getCircuitArtifact(astFilePath); - - if (circuitArtifact.error) { - errors.push(circuitArtifact.error); - } - - this._saveArtifact(circuitArtifact.data, this._circuitArtifactGeneratorConfig.basePath); - } - - return errors; - } - - /** - * Returns the configuration of the `CircuitArtifactGenerator`. - */ - public getOutputArtifactsDir(): string { - const relativePath: string = this._circuitArtifactGeneratorConfig.outputArtifactsDir ?? "artifacts/circuits"; - - return path.join(this._projectRoot, relativePath); - } - - /** - * Extracts the artifact information from the AST JSON file. - * - * All the fields that are required for the artifact are extracted from the AST are validated. - * - * Will throw an error if: - * - The AST is missing. - * - _validateCircuitAST function fails. - * - * Will return an error if failed to get necessary information from the AST. - * - * @param {string} pathToTheAST - The path to the AST JSON file. - * @returns {Promise} A promise that resolves to the extracted circuit artifact. - */ - public async getCircuitArtifact(pathToTheAST: string): Promise> { - try { - return { - data: await this._extractArtifact(pathToTheAST), - error: null, - }; - } catch (error: any | ASTParserError) { - return { - data: this._getDefaultArtifact(pathToTheAST, CircuitArtifactGenerator.DEFAULT_CIRCUIT_FORMAT), - error: error, - }; - } - } - - /** - * Returns the template arguments for the circuit. - * - * @param circuitArtifact - The circuit artifact. - * @param {string[]} args - The arguments of the template. - * @param {any[]} names - The names of the arguments. - * @returns {Record} The template arguments for the circuit. - */ - private getTemplateArgs(circuitArtifact: CircuitArtifact, args: string[], names: any[]): Record { - if (args.length === 0) { - return {}; - } - - const result: Record = {}; - - for (let i = 0; i < args.length; i++) { - const argObj = (args[i] as any)["Number"]; - - result[names[i]] = BigInt(this.resolveNumber(circuitArtifact, argObj)); - } - - return result; - } - - /** - * Resolves the variable from - */ - private resolveVariable(circuitArtifact: CircuitArtifact, variableObj: any) { - if (!variableObj || !variableObj.name) { - throw new ASTParserError( - this._getCircuitFullName(circuitArtifact), - `The argument is not a variable`, - variableObj, - ); - } - - return variableObj.name; - } - - /** - * Resolves the number from the AST. - */ - private resolveNumber(circuitArtifact: CircuitArtifact, numberObj: any) { - if (!numberObj || !numberObj.length || numberObj.length < 2) { - throw new ASTParserError(this._getCircuitFullName(circuitArtifact), `The argument is not a number`, numberObj); - } - - if (!numberObj[1] || !numberObj[1].length || numberObj[1].length < 2) { - throw new ASTParserError( - this._getCircuitFullName(circuitArtifact), - `The argument is of unexpected format`, - numberObj, - ); - } - - const actualArg = numberObj[1][1]; - - if (!actualArg || !actualArg.length || numberObj[1].length < 1) { - throw new ASTParserError( - this._getCircuitFullName(circuitArtifact), - `The argument is of unexpected format`, - actualArg, - ); - } - - return actualArg[0]; - } - - /** - * Resolves the dimensions of the signal. - */ - private resolveDimension(circuitArtifact: CircuitArtifact, dimensions: number[]): number[] { - const result: number[] = []; - - for (const dimension of dimensions) { - if (dimension === 0) { - result.push(0); - - continue; - } - - const numberObj = (dimension as any)["Number"]; - const variableObj = (dimension as any)["Variable"]; - - if ( - (numberObj !== undefined && variableObj !== undefined) || - (numberObj === undefined && variableObj === undefined) - ) { - throw new ASTParserError( - this._getCircuitFullName(circuitArtifact), - `The dimension is of unexpected format`, - dimension, - ); - } - - if (numberObj) { - result.push(this.resolveNumber(circuitArtifact, numberObj)); - - continue; - } - - result.push(this.resolveVariable(circuitArtifact, variableObj)); - } - - return result; - } - - /** - * Cleans the artifacts directory by removing all files and subdirectories. - */ - public cleanArtifacts(): void { - const artifactsDir = this.getOutputArtifactsDir(); - - if (fs.existsSync(artifactsDir)) { - fs.rmSync(artifactsDir, { recursive: true, force: true }); - } - } - - /** - * Saves the circuit artifact to a JSON file. - * - * @param {CircuitArtifact} artifact - The circuit artifact to be saved. - * @param commonPath - The common path of the circuit artifacts. - */ - private _saveArtifact(artifact: CircuitArtifact, commonPath: string = ""): void { - const circuitArtifactPath = path - .join(this.getOutputArtifactsDir(), artifact.sourceName.replace(commonPath, "")) - .replace(path.extname(artifact.sourceName), ".json"); - - fs.mkdirSync(circuitArtifactPath.replace(path.basename(circuitArtifactPath), ""), { recursive: true }); - - fs.writeFileSync(circuitArtifactPath, JSON.stringify(artifact, null, 2)); - } - - /** - * Determines the internal type of declared variable based on its dimensions. - * - * This method checks if the declared variable has dimensions. If the variable has non-empty dimensions, - * it is considered an array. - * - * @param {Declaration} declaration - The declaration to check. - * @returns {string} The internal type of the declared variable, either 'bigint' or 'bigint[]'. - */ - private _getInternalType(declaration: Declaration): string { - if (declaration.dimensions.length > 0) { - return InternalType.BigIntArray; - } - - return InternalType.BigInt; - } - - /** - * Determines the visibility of a signal based on the circuit compiler output and the statement. - * - * If the signal is used in the main component or is an output signal, it is considered public. - * - * @param {CircomCompilerOutput} compilerOutput - The compiler output of the circuit. - * @param {Stmt} statement - The statement to check. - * @returns {SignalVisibility} The visibility of the signal. - */ - private _getSignalVisibility(compilerOutput: CircomCompilerOutput, statement: Stmt): SignalVisibility { - const signalName = statement.InitializationBlock!.initializations[0].Declaration.name; - - if ( - compilerOutput.main_component![0].includes(signalName) || - statement.InitializationBlock?.initializations[0].Declaration.xtype.Signal[0] === SignalTypeNames.Output - ) { - return SignalVisibilityNames.Public; - } - - return SignalVisibilityNames.Private; - } - - /** - * Finds the template for the circuit based on the circuit name. - * - * @param {CircuitArtifact} circuitArtifact - The circuit artifact. - * @param {CircomCompilerOutput[]} compilerOutputs - The compiler outputs of the circuit. - * @returns {Template} The template for the circuit. - */ - private _findTemplateForCircuit(circuitArtifact: CircuitArtifact, compilerOutputs: CircomCompilerOutput[]): Template { - for (const compilerOutput of compilerOutputs) { - if (!compilerOutput.definitions || compilerOutput.definitions.length < 1) { - continue; - } - - for (const definition of compilerOutput.definitions) { - if (!definition.Template) { - continue; - } - - if (definition.Template.name === circuitArtifact.circuitName) { - return definition.Template; - } - } - } - - throw new ASTParserError( - this._getCircuitFullName(circuitArtifact), - `The template for the circuit could not be found.`, - undefined, - ); - } - - /** - * Extracts the artifact information from the AST JSON file. - * - * @param {string} pathToTheAST - The path to the AST JSON file. - * @returns {Promise} A promise that resolves to the extracted circuit artifact. - */ - private async _extractArtifact(pathToTheAST: string): Promise { - const ast: CircuitAST | undefined = JSON.parse(fs.readFileSync(pathToTheAST, "utf-8")); - - if (!ast) { - throw new Error(`The circuit AST is missing. Path: ${pathToTheAST}`); - } - - const circuitArtifact: CircuitArtifact = this._getDefaultArtifact(pathToTheAST); - - const template = this._findTemplateForCircuit(circuitArtifact, ast.circomCompilerOutput); - const templateArgs = this.getTemplateArgs( - circuitArtifact, - ast.circomCompilerOutput[0].main_component![1].Call.args, - template.args, - ); - - for (const statement of template.body.Block.stmts) { - if ( - !statement.InitializationBlock || - !this._validateInitializationBlock(circuitArtifact, ast.sourcePath, statement.InitializationBlock) || - statement.InitializationBlock.xtype.Signal[0] === SignalTypeNames.Intermediate - ) { - continue; - } - - const dimensions = this.resolveDimension( - circuitArtifact, - statement.InitializationBlock.initializations[0].Declaration.dimensions, - ); - const resolvedDimensions = dimensions.map((dimension: any) => { - if (typeof dimension === "string") { - const templateArg = templateArgs[dimension]; - - if (!templateArg) { - throw new ASTParserError( - this._getCircuitFullName(circuitArtifact), - `The template argument is missing in the circuit ${circuitArtifact.circuitName}`, - dimension, - ); - } - - return Number(templateArg); - } - - return Number(dimension); - }); - - const signal: Signal = { - type: statement.InitializationBlock.xtype.Signal[0] as SignalType, - internalType: this._getInternalType(statement.InitializationBlock.initializations[0].Declaration), - visibility: this._getSignalVisibility(ast.circomCompilerOutput[0], statement), - name: statement.InitializationBlock.initializations[0].Declaration.name, - dimensions: resolvedDimensions, - }; - - circuitArtifact.signals.push(signal); - } - - return circuitArtifact; - } - - /** - * Creates a default circuit artifact. - * - * @param {string} pathToTheAST - The path to the AST JSON file. - * @param {string} format - The format of the circuit artifact. - * @returns {CircuitArtifact} The default circuit artifact. - */ - private _getDefaultArtifact(pathToTheAST: string, format?: string): CircuitArtifact { - const ast: CircuitAST | undefined = JSON.parse(fs.readFileSync(pathToTheAST, "utf-8")); - - if (!ast) { - throw new Error(`The circuit AST is missing. Path: ${pathToTheAST}`); - } - - this._validateCircuitAST(ast); - - return { - _format: format ?? CircuitArtifactGenerator.CURRENT_FORMAT, - circuitName: ast.circomCompilerOutput[0].main_component![1].Call.id, - sourceName: ast.sourcePath, - basePath: this._circuitArtifactGeneratorConfig.basePath, - compilerVersion: ast.circomCompilerOutput[0].compiler_version.join("."), - signals: [], - }; - } - - /** - * Validates the AST of a circuit to ensure it meets the expected structure. - * - * @param {CircuitAST} ast - The AST of the circuit to be validated. - * - * @throws {Error} If the AST does not meet the expected structure. - */ - private _validateCircuitAST(ast: CircuitAST): void { - if (!ast.circomCompilerOutput) { - throw new Error(`The circomCompilerOutput field is missing in the circuit AST: ${ast.sourcePath}`); - } - - if ( - ast.circomCompilerOutput.length < 1 || - !ast.circomCompilerOutput[0].main_component || - ast.circomCompilerOutput[0].main_component.length < 2 || - !ast.circomCompilerOutput[0].main_component[1].Call - ) { - throw new Error(`The main component is missing or incomplete in the circuit AST: ${ast.sourcePath}`); - } - - if (!ast.circomCompilerOutput[0].compiler_version) { - throw new Error(`The compiler version is missing in the circuit AST: ${ast.sourcePath}`); - } - - if (!ast.circomCompilerOutput[0].main_component[1].Call.id) { - throw new Error(`The main component id is missing in the circuit AST: ${ast.sourcePath}`); - } - } - - /** - * Validates the initialization block in the circuit AST. - * - * @param {CircuitArtifact} circuitArtifact - The default circuit artifact. - * @param {string} astSourcePath - The source path of the AST. - * @param {any} initializationBlock - The initialization block to be validated. - * - * @returns {boolean} Returns `true` if the initialization block is valid, `false` otherwise. - * @throws {Error} If the initialization block is missing required fields. - */ - private _validateInitializationBlock( - circuitArtifact: CircuitArtifact, - astSourcePath: string, - initializationBlock: any, - ): boolean { - if (!initializationBlock.xtype) { - throw new ASTParserError( - this._getCircuitFullName(circuitArtifact), - `The initialization block xtype is missing in the circuit AST`, - initializationBlock, - ); - } - - if ( - !initializationBlock.initializations || - initializationBlock.initializations.length < 1 || - !initializationBlock.initializations[0].Declaration || - !initializationBlock.initializations[0].Declaration.name - ) { - throw new ASTParserError( - this._getCircuitFullName(circuitArtifact), - `The initializations field of initialization block is missing or incomplete in the circuit AST: ${astSourcePath}`, - initializationBlock, - ); - } - - if (!initializationBlock.xtype.Signal || initializationBlock.xtype.Signal.length < 1) { - return false; - } - - return true; - } - - /** - * Returns the full name of the circuit. - * - * @param {CircuitArtifact} artifact - The circuit artifact. - * @returns {string} The full name of the circuit. - */ - private _getCircuitFullName(artifact: CircuitArtifact): string { - return `${artifact.sourceName}:${artifact.circuitName}`; - } -} diff --git a/src/core/CircuitTypesGenerator.ts b/src/core/CircuitTypesGenerator.ts index 42a1f1e..d7d5d64 100644 --- a/src/core/CircuitTypesGenerator.ts +++ b/src/core/CircuitTypesGenerator.ts @@ -3,12 +3,11 @@ import path from "path"; import ts from "typescript"; import ZkitTSGenerator from "./ZkitTSGenerator"; -import CircuitArtifactGenerator from "./CircuitArtifactGenerator"; import { normalizeName } from "../utils"; +import { Formats } from "../constants"; import { CircuitArtifact, ArtifactWithPath } from "../types"; -import { ErrorObj } from "../errors/common"; /** * `CircuitTypesGenerator` is need for generating TypeScript bindings based on circuit artifacts. @@ -56,9 +55,7 @@ export class CircuitTypesGenerator extends ZkitTSGenerator { * * @returns {Promise} A promise that resolves when all types have been generated. */ - public async generateTypes(): Promise { - const errorsWhenGenArtifacts = await this._artifactsGenerator.generateCircuitArtifacts(); - + public async generateTypes(): Promise { const circuitArtifacts = this._fetchCircuitArtifacts(); fs.mkdirSync(this.getOutputTypesDir(), { recursive: true }); @@ -67,21 +64,21 @@ export class CircuitTypesGenerator extends ZkitTSGenerator { const typePathsToResolve: ArtifactWithPath[] = []; for (let i = 0; i < circuitArtifacts.length; i++) { - const circuitName = circuitArtifacts[i].circuitName; + const circuitName = circuitArtifacts[i].circuitTemplateName; const isNameAlreadyExist = isNameExist.has(circuitName); isNameExist.set(circuitName, true); let circuitTypePath = this._getCircuitTypeShortPath( - circuitArtifacts[i].basePath, - circuitArtifacts[i].sourceName, + this._zktypeConfig.basePath, + circuitArtifacts[i].circuitSourceName, circuitName, ); if (isNameAlreadyExist) { circuitTypePath = this._getCircuitTypeLongPath( - circuitArtifacts[i].basePath, - circuitArtifacts[i].sourceName, + this._zktypeConfig.basePath, + circuitArtifacts[i].circuitSourceName, circuitName, ); } @@ -107,8 +104,6 @@ export class CircuitTypesGenerator extends ZkitTSGenerator { const utilsDirPath = this.getOutputTypesDir(); fs.mkdirSync(utilsDirPath, { recursive: true }); fs.copyFileSync(path.join(__dirname, "templates", "utils.ts"), path.join(utilsDirPath, "utils.ts")); - - return errorsWhenGenArtifacts; } /** @@ -156,19 +151,19 @@ export class CircuitTypesGenerator extends ZkitTSGenerator { } } - if (!isCircuitNameExist.has(typePath.circuitArtifact.circuitName)) { + if (!isCircuitNameExist.has(typePath.circuitArtifact.circuitTemplateName)) { indexFilesMap.set(pathToMainIndexFile, [ ...(indexFilesMap.get(pathToMainIndexFile) === undefined ? [] : indexFilesMap.get(pathToMainIndexFile)!), this._getExportDeclarationForFile(path.relative(this._projectRoot, levels.join(path.sep))), ]); } - isCircuitNameExist.set(typePath.circuitArtifact.circuitName, true); + isCircuitNameExist.set(typePath.circuitArtifact.circuitTemplateName, true); - topLevelCircuits[typePath.circuitArtifact.circuitName] = - topLevelCircuits[typePath.circuitArtifact.circuitName] === undefined + topLevelCircuits[typePath.circuitArtifact.circuitTemplateName] = + topLevelCircuits[typePath.circuitArtifact.circuitTemplateName] === undefined ? [typePath] - : [...topLevelCircuits[typePath.circuitArtifact.circuitName], typePath]; + : [...topLevelCircuits[typePath.circuitArtifact.circuitTemplateName], typePath]; } for (const [absolutePath, content] of indexFilesMap) { @@ -260,37 +255,31 @@ export class CircuitTypesGenerator extends ZkitTSGenerator { pathToGeneratedFile: string, ): Promise { switch (circuitArtifact._format) { - case CircuitArtifactGenerator.CURRENT_FORMAT: + case Formats.V1HH_ZKIT_TYPE: return await this._genCircuitWrapperClassContent(circuitArtifact, pathToGeneratedFile); - case CircuitArtifactGenerator.DEFAULT_CIRCUIT_FORMAT: - return await this._genDefaultCircuitWrapperClassContent(circuitArtifact); default: throw new Error(`Unsupported format: ${circuitArtifact._format}`); } } /** - * Fetches the circuit artifacts from the `ARTIFACTS_DIR` directory. + * Fetches the circuit artifacts from the specified paths. * * Directories and not JSON files are ignored. * * @returns {CircuitArtifact[]} The fetched circuit artifacts. */ private _fetchCircuitArtifacts(): CircuitArtifact[] { - const files = fs.readdirSync(this._artifactsGenerator.getOutputArtifactsDir(), { recursive: true }); - const artifacts: CircuitArtifact[] = []; - for (const file of files) { + for (const file of this._zktypeConfig.circuitsArtifactsPaths) { const filePath = file.toString(); if (!path.extname(filePath) || !path.extname(filePath).includes(".json")) { continue; } - artifacts.push( - JSON.parse(fs.readFileSync(path.join(this._artifactsGenerator.getOutputArtifactsDir(), filePath), "utf-8")), - ); + artifacts.push(JSON.parse(fs.readFileSync(path.join(this._projectRoot, filePath), "utf-8"))); } return artifacts; diff --git a/src/core/ZkitTSGenerator.ts b/src/core/ZkitTSGenerator.ts index a28240c..1e18727 100644 --- a/src/core/ZkitTSGenerator.ts +++ b/src/core/ZkitTSGenerator.ts @@ -11,10 +11,10 @@ import { CircuitArtifact, CircuitClass, Inputs, - Signal, TypeExtensionTemplateParams, DefaultWrapperTemplateParams, WrapperTemplateParams, + SignalInfo, } from "../types"; import { normalizeName } from "../utils"; @@ -75,18 +75,18 @@ export default class ZkitTSGenerator extends BaseTSGenerator { let outputCounter: number = 0; const publicInputs: Inputs[] = []; - const privateInputs: Inputs[] = circuitArtifact.signals + const privateInputs: Inputs[] = circuitArtifact.baseCircuitInfo.signals .filter((signal) => signal.type != SignalTypeNames.Output) .map((signal) => { return { name: signal.name, - dimensions: "[]".repeat(signal.dimensions.length), - dimensionsArray: new Array(signal.dimensions).join(", "), + dimensions: "[]".repeat(signal.dimension.length), + dimensionsArray: new Array(signal.dimension).join(", "), }; }); let calldataPubSignalsCount = 0; - for (const signal of circuitArtifact.signals) { + for (const signal of circuitArtifact.baseCircuitInfo.signals) { if (signal.visibility === SignalVisibilityNames.Private) { continue; } @@ -94,8 +94,8 @@ export default class ZkitTSGenerator extends BaseTSGenerator { if (signal.type === SignalTypeNames.Output) { publicInputs.splice(outputCounter, 0, { name: signal.name, - dimensions: "[]".repeat(signal.dimensions.length), - dimensionsArray: new Array(signal.dimensions).join(", "), + dimensions: "[]".repeat(signal.dimension.length), + dimensionsArray: new Array(signal.dimension).join(", "), }); calldataPubSignalsCount += this._getPublicSignalsCount(signal); @@ -105,8 +105,8 @@ export default class ZkitTSGenerator extends BaseTSGenerator { publicInputs.push({ name: signal.name, - dimensions: "[]".repeat(signal.dimensions.length), - dimensionsArray: new Array(signal.dimensions).join(", "), + dimensions: "[]".repeat(signal.dimension.length), + dimensionsArray: new Array(signal.dimension).join(", "), }); calldataPubSignalsCount += this._getPublicSignalsCount(signal); @@ -143,11 +143,11 @@ export default class ZkitTSGenerator extends BaseTSGenerator { return this._getNodeContent(ts.factory.createTupleTypeNode(calldataType)); } - private _getPublicSignalsCount(signal: Signal): number { - if (signal.dimensions.length === 0) { + private _getPublicSignalsCount(signal: SignalInfo): number { + if (signal.dimension.length === 0) { return 1; } - return signal.dimensions.reduce((acc, dim) => acc * dim, 1); + return signal.dimension.reduce((acc: number, dim: string) => acc * Number(dim), 1); } } diff --git a/src/errors/ParseError.ts b/src/errors/ParseError.ts deleted file mode 100644 index e7430b4..0000000 --- a/src/errors/ParseError.ts +++ /dev/null @@ -1,19 +0,0 @@ -export interface ASTParserErrorDetails { - circuitFullNames: string; - message: string; - context: any; -} - -export class ASTParserError extends Error { - public error: ASTParserErrorDetails; - - constructor(fullName: string, message: string, context: any) { - super(); - this.message = message; - this.error = { - circuitFullNames: fullName, - message, - context, - }; - } -} diff --git a/src/errors/common.ts b/src/errors/common.ts deleted file mode 100644 index 30ba12f..0000000 --- a/src/errors/common.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { ASTParserError } from "./ParseError"; - -export type ErrorObj = { message: string } | ASTParserError | null; diff --git a/src/errors/index.ts b/src/errors/index.ts deleted file mode 100644 index 6b504c2..0000000 --- a/src/errors/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./common"; -export * from "./ParseError"; diff --git a/src/index.ts b/src/index.ts index 838740b..21ca96e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -2,5 +2,3 @@ export * from "./types"; export * from "./constants"; export * from "./core/CircuitTypesGenerator"; - -export * from "./errors"; diff --git a/src/types/ast.ts b/src/types/ast.ts deleted file mode 100644 index 6ea6b92..0000000 --- a/src/types/ast.ts +++ /dev/null @@ -1,135 +0,0 @@ -// Helper types - -export type SignalType = "Output" | "Input" | "Intermediate"; - -export type SignalVisibility = "public" | "private"; - -export interface CircuitAST { - sourcePath: string; - circomCompilerOutput: CircomCompilerOutput[]; -} - -// Compiler and Definitions - -export interface CircomCompilerOutput { - meta: Meta; - compiler_version: number[]; - custom_gates: boolean; - custom_gates_declared: boolean; - includes: string[]; - definitions: Definition[]; - main_component?: MainComponent; -} - -export type MainComponent = [string[], Call]; - -export interface Call { - Call: { - meta: Meta; - id: string; - args: any[]; - }; -} - -export type Definition = { - Template?: Template; -}; - -export interface Template { - meta: Meta; - name: string; - args: string[]; - arg_location: Location; - body: Body; - parallel: boolean; - is_custom_gate: boolean; -} - -export interface Body { - Block: Block; -} - -export interface Block { - meta: Meta; - stmts: Stmt[]; -} - -export type Stmt = { - InitializationBlock?: InitializationBlock; - Substitution?: Substitution; -}; - -export interface InitializationBlock { - meta: Meta; - xtype: XType; - initializations: Initialization[]; -} - -export type Initialization = { - Declaration: Declaration; -}; - -export interface Declaration { - meta: Meta; - xtype: XType; - name: string; - dimensions: any[]; - is_constant: boolean; -} - -export interface Substitution { - meta: Meta; - var: string; - access: any[]; - op: string; - rhe: Rhe; -} - -export interface Rhe { - InfixOp: InfixOp; -} - -export interface InfixOp { - meta: Meta; - lhe: Variable; - infix_op: string; - rhe: Variable; -} - -export interface Variable { - meta: Meta; - name: string; - access: any[]; -} - -export type XType = { - Signal: [string, any[]]; -}; - -// Base Types - -export interface Meta { - elem_id: number; - start: number; - end: number; - location: Location; - file_id?: string; - component_inference?: string; - type_knowledge: TypeKnowledge; - memory_knowledge: MemoryKnowledge; -} - -export interface Location { - start: number; - end: number; -} - -export interface TypeKnowledge { - reduces_to?: string; -} - -export interface MemoryKnowledge { - concrete_dimensions?: string; - full_length?: string; - abstract_memory_address?: string; -} diff --git a/src/types/circuitArtifact.ts b/src/types/circuitArtifact.ts index d9ef10f..07d9a7b 100644 --- a/src/types/circuitArtifact.ts +++ b/src/types/circuitArtifact.ts @@ -1,4 +1,8 @@ -import { SignalType, SignalVisibility } from "./ast"; +export type FormatTypes = "hh-zkit-artifacts-1"; + +export type SignalType = "Output" | "Input" | "Intermediate"; + +export type VisibilityType = "Public" | "Private"; /** * Represents a circuit artifact generated by the `CircuitArtifactGenerator`. @@ -8,31 +12,39 @@ import { SignalType, SignalVisibility } from "./ast"; * @param {string} sourceName - The circuit file path relative to the project root. * @param {string} basePath - The root directory of the project for circuits. * @param {string} compilerVersion - The version of the Circom compiler specified in the circuit. - * @param {Signal[]} signals - An array of `input` and `output` signals used in the circuit. + * @param {BaseCircuitInfo} baseCircuitInfo - The base circuit information. + */ +export type CircuitArtifact = { + _format: FormatTypes; + circuitFileName: string; + circuitTemplateName: string; + circuitSourceName: string; + baseCircuitInfo: BaseCircuitInfo; +}; + +/** + * Represents the base circuit information. + * + * @param {number} constraintsNumber - The number of constraints in the circuit. + * @param {SignalInfo[]} signals - The array of `input` and `output` signals used in the circuit. */ -export interface CircuitArtifact { - _format: string; - circuitName: string; - sourceName: string; - basePath: string; - compilerVersion: string; - signals: Signal[]; -} +export type BaseCircuitInfo = { + constraintsNumber: number; + signals: SignalInfo[]; +}; /** * Represents a signal used in a circuit. * * @param {string} name - The name of the signal. * @param {SignalType} type - The type of the signal (possible values: `Input`, `Output`). - * @param {string} visibility - The visibility of the signal (possible values: `public`, `private`). - * @param {string} internalType - The internal type of the signal (only possible value: `bigint`). - * @param {number} dimensions - The array of dimensions of the signal. If the signal is a scalar, the value is `[]`. + * @param {VisibilityType} visibility - The visibility of the signal (possible values: `Public`, `Private`). + * @param {string} dimensions - The array of dimensions of the signal. If the signal is a scalar, the value is `[]`. * For example for a signal a[2][3], the value is `[2, 3]`. */ -export interface Signal { +export type SignalInfo = { name: string; + dimension: string[]; type: SignalType; - visibility: SignalVisibility; - internalType: string; - dimensions: number[]; -} + visibility: VisibilityType; +}; diff --git a/src/types/common.ts b/src/types/common.ts index 060d74c..9c53d79 100644 --- a/src/types/common.ts +++ b/src/types/common.ts @@ -1,6 +1,4 @@ -import { ASTParserError } from "../errors"; - export interface Result { data: T; - error: { message: string } | ASTParserError | null; + error: { message: string } | null; } diff --git a/src/types/config.ts b/src/types/config.ts index ec12025..2155761 100644 --- a/src/types/config.ts +++ b/src/types/config.ts @@ -1,28 +1,21 @@ -export interface ZKTypeConfig extends ArtifactGeneratorConfig { +export interface ZKTypeConfig { /** * The path to the directory where the generated types will be stored. */ outputTypesDir?: string; -} -export interface ArtifactGeneratorConfig { /** * The base path to the root directory of the project where circuits are stored. */ basePath: string; /** - * An array of paths to the circuits' AST files. + * An array of paths to all circuit artifacts. */ - circuitsASTPaths: string[]; + circuitsArtifactsPaths: string[]; /** * The absolute path to the root directory of the project. */ projectRoot: string; - - /** - * The path to the directory where the generated artifacts will be stored. - */ - outputArtifactsDir?: string; } diff --git a/src/types/index.ts b/src/types/index.ts index 568407b..27183ed 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -1,4 +1,3 @@ -export * from "./ast"; export * from "./config"; export * from "./common"; export * from "./typesGenerator"; diff --git a/test/CircuitArtifactGenerator.test.ts b/test/CircuitArtifactGenerator.test.ts deleted file mode 100644 index 07d0741..0000000 --- a/test/CircuitArtifactGenerator.test.ts +++ /dev/null @@ -1,97 +0,0 @@ -import fs from "fs"; -import path from "path"; - -import { expect } from "chai"; - -import { generateAST } from "./helpers/generator"; - -import CircuitArtifactGenerator from "../src/core/CircuitArtifactGenerator"; - -import { findProjectRoot } from "../src/utils"; -import { defaultCircuitArtifactGeneratorConfig } from "../src/config"; - -describe("Circuit Artifact Generation", function () { - const expectedGeneratedArtifacts = [ - "Basic.json", - "credentialAtomicQueryMTPV2OnChainVoting.json", - "lib/BasicInLib.json", - "auth/BasicInAuth.json", - ]; - - const inputDir = "test/fixture"; - const astDir = "test/cache/circuits-ast"; - const artifactGenerator = new CircuitArtifactGenerator({ - basePath: "test/fixture", - projectRoot: findProjectRoot(process.cwd()), - circuitsASTPaths: [ - "test/cache/circuits-ast/Basic.json", - "test/cache/circuits-ast/credentialAtomicQueryMTPV2OnChainVoting.json", - "test/cache/circuits-ast/lib/BasicInLib.json", - "test/cache/circuits-ast/auth/EMultiplier.json", - "test/cache/circuits-ast/auth/BasicInAuth.json", - ], - outputArtifactsDir: defaultCircuitArtifactGeneratorConfig.outputArtifactsDir, - }); - - function getPathToArtifact(artifactPath: string) { - return path.join(artifactGenerator.getOutputArtifactsDir(), artifactPath); - } - - beforeEach(async () => { - await generateAST(inputDir, astDir, true, [], []); - }); - - afterEach(async () => { - if (fs.existsSync(astDir)) { - fs.rmSync(astDir, { recursive: true, force: true }); - } - }); - - it("should generate artifacts based on the AST files", async function () { - await artifactGenerator.generateCircuitArtifacts(); - - for (const artifactPath of expectedGeneratedArtifacts) { - const pathToCircuit = getPathToArtifact(artifactPath); - - expect(fs.existsSync(pathToCircuit)).to.be.true; - } - }); - - it("should throw an error if the compiler version field is missing", async function () { - await expect(artifactGenerator.getCircuitArtifact("test/mocks/InvalidCompilerVersion.json")).to.be.rejectedWith( - "The compiler version is missing in the circuit AST: test/fixture/InvalidCompilerVersion.circom", - ); - }); - - it("should return an error if the name in the initialization block is missing", async function () { - const result = await artifactGenerator.getCircuitArtifact("test/mocks/InvalidInitializationBlockName.json"); - - expect(result.error!.message).to.be.equal( - "The initializations field of initialization block is missing or incomplete in the circuit AST: test/fixture/InvalidInitializationBlockName.circom", - ); - }); - - it("should throw an error if the main component is missing", async function () { - await expect(artifactGenerator.getCircuitArtifact("test/mocks/InvalidMainComponent.json")).to.be.rejectedWith( - "The main component is missing or incomplete in the circuit AST: test/fixture/InvalidMainComponent.circom", - ); - }); - - it("should throw an error if the id of the main component is missing", async function () { - await expect(artifactGenerator.getCircuitArtifact("test/mocks/InvalidMainComponentId.json")).to.be.rejectedWith( - "The main component id is missing in the circuit AST: test/fixture/InvalidMainComponentId.circom", - ); - }); - - it("should return an error if the template block is missing", async function () { - const result = await artifactGenerator.getCircuitArtifact("test/mocks/InvalidTemplateBlock.json"); - - expect(result.error!.message).to.be.equal("The template for the circuit could not be found."); - }); - - it("should return an error if the xtype of the initialization block is missing", async function () { - const result = await artifactGenerator.getCircuitArtifact("test/mocks/InvalidXTypeField.json"); - - expect(result.error!.message).to.be.equal("The initialization block xtype is missing in the circuit AST"); - }); -}); diff --git a/test/CircuitProofGeneration.test.ts b/test/CircuitProofGeneration.test.ts index d321f82..abd31d2 100644 --- a/test/CircuitProofGeneration.test.ts +++ b/test/CircuitProofGeneration.test.ts @@ -1,62 +1,42 @@ -import fs from "fs"; import { expect } from "chai"; import { CircuitZKitConfig } from "@solarity/zkit"; -import { generateAST } from "./helpers/generator"; - import { CircuitTypesGenerator } from "../src"; import { findProjectRoot } from "../src/utils"; describe("Circuit Proof Generation", function () { - const astDir = "test/cache/circuits-ast"; - const circuitTypesGenerator = new CircuitTypesGenerator({ basePath: "test/fixture", projectRoot: findProjectRoot(process.cwd()), - circuitsASTPaths: [ - "test/cache/circuits-ast/Basic.json", - "test/cache/circuits-ast/credentialAtomicQueryMTPV2OnChainVoting.json", - "test/cache/circuits-ast/lib/BasicInLib.json", - "test/cache/circuits-ast/auth/BasicInAuth.json", - "test/cache/circuits-ast/auth/EMultiplier.json", + circuitsArtifactsPaths: [ + "test/fixture-cache/auth/EnhancedMultiplier_artifacts.json", + "test/fixture-cache/auth/Matrix_artifacts.json", + "test/fixture-cache/auth/Multiplier2_artifacts.json", + "test/fixture-cache/lib/Multiplier2_artifacts.json", + "test/fixture-cache/CredentialAtomicQueryMTPOnChainVoting_artifacts.json", + "test/fixture-cache/Multiplier2_artifacts.json", ], }); const basicConfig: CircuitZKitConfig = { - circuitName: "Basic", - circuitArtifactsPath: "test/cache/Basic", - verifierDirPath: "test/cache", + circuitName: "Multiplier2", + circuitArtifactsPath: "test/fixture-cache/artifacts/Basic.circom", + verifierDirPath: "", }; const matrixConfig: CircuitZKitConfig = { circuitName: "Matrix", - circuitArtifactsPath: "test/cache/Matrix", - verifierDirPath: "test/cache", - }; - - const complexMainConfig: CircuitZKitConfig = { - circuitName: "ComplexMain", - circuitArtifactsPath: "test/cache/ComplexMain", - verifierDirPath: "test/cache", + circuitArtifactsPath: "test/fixture-cache/artifacts/auth/Matrix.circom", + verifierDirPath: "", }; beforeEach(async () => { - const preprocessor = await generateAST("test/fixture", astDir, true, [], []); await circuitTypesGenerator.generateTypes(); - await preprocessor.circuitCompiler.compileCircuit("test/fixture/Basic.circom", basicConfig.circuitArtifactsPath); - await preprocessor.circuitCompiler.compileCircuit( - "test/fixture/auth/Matrix.circom", - matrixConfig.circuitArtifactsPath, - ); - await preprocessor.circuitCompiler.compileCircuit( - "test/fixture/ComplexMain.circom", - complexMainConfig.circuitArtifactsPath, - ); }); it("should generate and verify proof for Basic.circom", async () => { - const object = await circuitTypesGenerator.getCircuitObject("test/fixture/Basic.circom:Multiplier2"); + const object = await circuitTypesGenerator.getCircuitObject("circuits/fixture/Basic.circom:Multiplier2"); const circuit = new object(basicConfig); @@ -67,24 +47,8 @@ describe("Circuit Proof Generation", function () { expect(calldata[3].length).to.equal(2); }); - it("should generate and verify proof for ComplexMain.circom", async () => { - const object = await circuitTypesGenerator.getCircuitObject("ComplexMain"); - - const circuit = new object(complexMainConfig); - - const proof = await circuit.generateProof({ - in1: 2n, - in2: 3n, - }); - - expect(await circuit.verifyProof(proof)).to.be.true; - - const calldata = await circuit.generateCalldata(proof); - expect(calldata[3].length).to.equal(2); - }); - it("should generate and verify proof for Matrix.circom", async () => { - const object = await circuitTypesGenerator.getCircuitObject("test/fixture/auth/Matrix.circom:Matrix"); + const object = await circuitTypesGenerator.getCircuitObject("Matrix"); const circuit = new object(matrixConfig); @@ -109,11 +73,12 @@ describe("Circuit Proof Generation", function () { }); it("should correctly import all of the zktype objects", async () => { - new (await circuitTypesGenerator.getCircuitObject("test/fixture/Basic.circom:Multiplier2"))(); - new (await circuitTypesGenerator.getCircuitObject("test/fixture/auth/BasicInAuth.circom:Multiplier2"))(); - new (await circuitTypesGenerator.getCircuitObject("test/fixture/lib/BasicInLib.circom:Multiplier2"))(); + new (await circuitTypesGenerator.getCircuitObject("circuits/fixture/Basic.circom:Multiplier2"))(); + new (await circuitTypesGenerator.getCircuitObject("circuits/fixture/lib/BasicInLib.circom:Multiplier2"))(); + new (await circuitTypesGenerator.getCircuitObject("circuits/fixture/auth/BasicInAuth.circom:Multiplier2"))(); new (await circuitTypesGenerator.getCircuitObject("CredentialAtomicQueryMTPOnChainVoting"))(); new (await circuitTypesGenerator.getCircuitObject("EnhancedMultiplier"))(); + new (await circuitTypesGenerator.getCircuitObject("Matrix"))(); await expect(circuitTypesGenerator.getCircuitObject("Multiplier3")).to.be.rejectedWith( "Circuit Multiplier3 type does not exist.", @@ -122,25 +87,4 @@ describe("Circuit Proof Generation", function () { "Circuit Multiplier3 type does not exist.", ); }); - - it("should regenerate type if the circuit is updated", async () => { - const initialFile = fs.readFileSync( - "generated-types/circuits/core/auth/BasicInAuth.circom/Multiplier2.ts", - "utf-8", - ); - const initialFileHash = require("crypto").createHash("sha256").update(initialFile).digest("hex"); - - fs.rmSync("test/cache/circuits-ast/auth/BasicInAuth.json", { recursive: true, force: true }); - fs.copyFileSync("test/mocks/BasicInAuth.json", "test/cache/circuits-ast/auth/BasicInAuth.json"); - - await circuitTypesGenerator.generateTypes(); - - const regeneratedFile = fs.readFileSync( - "generated-types/circuits/core/auth/BasicInAuth.circom/Multiplier2.ts", - "utf-8", - ); - const regeneratedFileHash = require("crypto").createHash("sha256").update(regeneratedFile).digest("hex"); - - expect(initialFileHash).to.not.equal(regeneratedFileHash); - }); }); diff --git a/test/CircuitTypesGenerator.test.ts b/test/CircuitTypesGenerator.test.ts index 7c86b39..6aa3905 100644 --- a/test/CircuitTypesGenerator.test.ts +++ b/test/CircuitTypesGenerator.test.ts @@ -3,26 +3,31 @@ import path from "path"; import { expect } from "chai"; -import { generateAST } from "./helpers/generator"; - import { findProjectRoot } from "../src/utils"; import { CircuitTypesGenerator } from "../src"; describe("Circuit Types Generation", function () { - const expectedTypes = ["core/CredentialAtomicQueryMTPOnChainVoting.ts", "core/Multiplier2.ts"]; - - const astDir = "test/cache/circuits-ast"; + const expectedTypes = [ + "core/lib/BasicInLib.circom/Multiplier2.ts", + "core/auth/EnhancedMultiplier.ts", + "core/auth/Matrix.ts", + "core/auth/Multiplier2.ts", + "core/Basic.circom/Multiplier2.ts", + "core/lib/BasicInLib.circom/Multiplier2.ts", + "core/CredentialAtomicQueryMTPOnChainVoting.ts", + ]; const circuitTypesGenerator = new CircuitTypesGenerator({ - basePath: "test/fixture", + basePath: "circuits/fixture", projectRoot: findProjectRoot(process.cwd()), - circuitsASTPaths: [ - "test/cache/circuits-ast/Basic.json", - "test/cache/circuits-ast/credentialAtomicQueryMTPV2OnChainVoting.json", - "test/cache/circuits-ast/lib/BasicInLib.json", - "test/cache/circuits-ast/auth/EMultiplier.json", - "test/cache/circuits-ast/auth/BasicInAuth.json", + circuitsArtifactsPaths: [ + "test/fixture-cache/auth/EnhancedMultiplier_artifacts.json", + "test/fixture-cache/auth/Matrix_artifacts.json", + "test/fixture-cache/auth/Multiplier2_artifacts.json", + "test/fixture-cache/lib/Multiplier2_artifacts.json", + "test/fixture-cache/CredentialAtomicQueryMTPOnChainVoting_artifacts.json", + "test/fixture-cache/Multiplier2_artifacts.json", ], }); @@ -30,10 +35,6 @@ describe("Circuit Types Generation", function () { return path.join(circuitTypesGenerator.getOutputTypesDir(), generatedTypePath); } - beforeEach(async () => { - await generateAST("test/fixture", astDir, true, [], []); - }); - afterEach(async () => { if (fs.existsSync(circuitTypesGenerator.getOutputTypesDir())) { fs.rmSync(circuitTypesGenerator.getOutputTypesDir(), { recursive: true, force: true }); diff --git a/test/fixture-cache/CredentialAtomicQueryMTPOnChainVoting_artifacts.json b/test/fixture-cache/CredentialAtomicQueryMTPOnChainVoting_artifacts.json new file mode 100644 index 0000000..497f991 --- /dev/null +++ b/test/fixture-cache/CredentialAtomicQueryMTPOnChainVoting_artifacts.json @@ -0,0 +1,399 @@ +{ + "_format": "hh-zkit-artifacts-1", + "circuitTemplateName": "CredentialAtomicQueryMTPOnChainVoting", + "circuitFileName": "credentialAtomicQueryMTPV2OnChainVoting", + "circuitSourceName": "circuits/fixture/credentialAtomicQueryMTPV2OnChainVoting.circom", + "baseCircuitInfo": { + "constraintsNumber": 86791, + "signals": [ + { + "name": "merklized", + "dimension": [], + "type": "Output", + "visibility": "Public" + }, + { + "name": "userID", + "dimension": [], + "type": "Output", + "visibility": "Public" + }, + { + "name": "circuitQueryHash", + "dimension": [], + "type": "Output", + "visibility": "Public" + }, + { + "name": "requestID", + "dimension": [], + "type": "Input", + "visibility": "Public" + }, + { + "name": "userGenesisID", + "dimension": [], + "type": "Input", + "visibility": "Private" + }, + { + "name": "profileNonce", + "dimension": [], + "type": "Input", + "visibility": "Private" + }, + { + "name": "userState", + "dimension": [], + "type": "Input", + "visibility": "Private" + }, + { + "name": "userClaimsTreeRoot", + "dimension": [], + "type": "Input", + "visibility": "Private" + }, + { + "name": "userRevTreeRoot", + "dimension": [], + "type": "Input", + "visibility": "Private" + }, + { + "name": "userRootsTreeRoot", + "dimension": [], + "type": "Input", + "visibility": "Private" + }, + { + "name": "authClaim", + "dimension": [ + "8" + ], + "type": "Input", + "visibility": "Private" + }, + { + "name": "authClaimIncMtp", + "dimension": [ + "40" + ], + "type": "Input", + "visibility": "Private" + }, + { + "name": "authClaimNonRevMtp", + "dimension": [ + "40" + ], + "type": "Input", + "visibility": "Private" + }, + { + "name": "authClaimNonRevMtpNoAux", + "dimension": [], + "type": "Input", + "visibility": "Private" + }, + { + "name": "authClaimNonRevMtpAuxHi", + "dimension": [], + "type": "Input", + "visibility": "Private" + }, + { + "name": "authClaimNonRevMtpAuxHv", + "dimension": [], + "type": "Input", + "visibility": "Private" + }, + { + "name": "challenge", + "dimension": [], + "type": "Input", + "visibility": "Public" + }, + { + "name": "challengeSignatureR8x", + "dimension": [], + "type": "Input", + "visibility": "Private" + }, + { + "name": "challengeSignatureR8y", + "dimension": [], + "type": "Input", + "visibility": "Private" + }, + { + "name": "challengeSignatureS", + "dimension": [], + "type": "Input", + "visibility": "Private" + }, + { + "name": "gistRoot", + "dimension": [], + "type": "Input", + "visibility": "Public" + }, + { + "name": "gistMtp", + "dimension": [ + "64" + ], + "type": "Input", + "visibility": "Private" + }, + { + "name": "gistMtpAuxHi", + "dimension": [], + "type": "Input", + "visibility": "Private" + }, + { + "name": "gistMtpAuxHv", + "dimension": [], + "type": "Input", + "visibility": "Private" + }, + { + "name": "gistMtpNoAux", + "dimension": [], + "type": "Input", + "visibility": "Private" + }, + { + "name": "claimSubjectProfileNonce", + "dimension": [], + "type": "Input", + "visibility": "Private" + }, + { + "name": "issuerID", + "dimension": [], + "type": "Input", + "visibility": "Public" + }, + { + "name": "issuerClaim", + "dimension": [ + "8" + ], + "type": "Input", + "visibility": "Private" + }, + { + "name": "issuerClaimMtp", + "dimension": [ + "40" + ], + "type": "Input", + "visibility": "Private" + }, + { + "name": "issuerClaimClaimsTreeRoot", + "dimension": [], + "type": "Input", + "visibility": "Private" + }, + { + "name": "issuerClaimRevTreeRoot", + "dimension": [], + "type": "Input", + "visibility": "Private" + }, + { + "name": "issuerClaimRootsTreeRoot", + "dimension": [], + "type": "Input", + "visibility": "Private" + }, + { + "name": "issuerClaimIdenState", + "dimension": [], + "type": "Input", + "visibility": "Public" + }, + { + "name": "isRevocationChecked", + "dimension": [], + "type": "Input", + "visibility": "Public" + }, + { + "name": "issuerClaimNonRevMtp", + "dimension": [ + "40" + ], + "type": "Input", + "visibility": "Private" + }, + { + "name": "issuerClaimNonRevMtpNoAux", + "dimension": [], + "type": "Input", + "visibility": "Private" + }, + { + "name": "issuerClaimNonRevMtpAuxHi", + "dimension": [], + "type": "Input", + "visibility": "Private" + }, + { + "name": "issuerClaimNonRevMtpAuxHv", + "dimension": [], + "type": "Input", + "visibility": "Private" + }, + { + "name": "issuerClaimNonRevClaimsTreeRoot", + "dimension": [], + "type": "Input", + "visibility": "Private" + }, + { + "name": "issuerClaimNonRevRevTreeRoot", + "dimension": [], + "type": "Input", + "visibility": "Private" + }, + { + "name": "issuerClaimNonRevRootsTreeRoot", + "dimension": [], + "type": "Input", + "visibility": "Private" + }, + { + "name": "issuerClaimNonRevState", + "dimension": [], + "type": "Input", + "visibility": "Public" + }, + { + "name": "timestamp", + "dimension": [], + "type": "Input", + "visibility": "Public" + }, + { + "name": "claimSchema", + "dimension": [], + "type": "Input", + "visibility": "Private" + }, + { + "name": "claimPathNotExists", + "dimension": [], + "type": "Input", + "visibility": "Private" + }, + { + "name": "claimPathMtp", + "dimension": [ + "32" + ], + "type": "Input", + "visibility": "Private" + }, + { + "name": "claimPathMtpNoAux", + "dimension": [], + "type": "Input", + "visibility": "Private" + }, + { + "name": "claimPathMtpAuxHi", + "dimension": [], + "type": "Input", + "visibility": "Private" + }, + { + "name": "claimPathMtpAuxHv", + "dimension": [], + "type": "Input", + "visibility": "Private" + }, + { + "name": "claimPathKey", + "dimension": [], + "type": "Input", + "visibility": "Private" + }, + { + "name": "claimPathValue", + "dimension": [], + "type": "Input", + "visibility": "Private" + }, + { + "name": "slotIndex", + "dimension": [], + "type": "Input", + "visibility": "Private" + }, + { + "name": "operator", + "dimension": [], + "type": "Input", + "visibility": "Private" + }, + { + "name": "value", + "dimension": [ + "1" + ], + "type": "Input", + "visibility": "Private" + }, + { + "name": "votingAddress", + "dimension": [], + "type": "Input", + "visibility": "Public" + }, + { + "name": "commitment", + "dimension": [], + "type": "Input", + "visibility": "Public" + }, + { + "name": "votingAddressSquare", + "dimension": [], + "type": "Intermediate", + "visibility": "Private" + }, + { + "name": "commitmentSquare", + "dimension": [], + "type": "Intermediate", + "visibility": "Private" + } + ] + }, + "compilerOutputFiles": { + "ast": { + "fileSourcePath": "/Users/oleh/Work/go/src/github/solarity/circom-lib/zkit/artifacts/circuits/fixture/credentialAtomicQueryMTPV2OnChainVoting.circom/CredentialAtomicQueryMTPOnChainVoting_ast.json", + "fileHash": "9536bf5e8e6e0dc48306d534896f5329" + }, + "wasm": { + "fileSourcePath": "/Users/oleh/Work/go/src/github/solarity/circom-lib/zkit/artifacts/circuits/fixture/credentialAtomicQueryMTPV2OnChainVoting.circom/CredentialAtomicQueryMTPOnChainVoting_js/CredentialAtomicQueryMTPOnChainVoting.wasm", + "fileHash": "805d70b0c8c485c9a9e14d9a9e055dfe" + }, + "c": { + "fileSourcePath": "/Users/oleh/Work/go/src/github/solarity/circom-lib/zkit/artifacts/circuits/fixture/credentialAtomicQueryMTPV2OnChainVoting.circom/CredentialAtomicQueryMTPOnChainVoting_cpp/main.cpp", + "fileHash": "90ab764db6ce0dc1ed4a47304d86596b" + }, + "r1cs": { + "fileSourcePath": "/Users/oleh/Work/go/src/github/solarity/circom-lib/zkit/artifacts/circuits/fixture/credentialAtomicQueryMTPV2OnChainVoting.circom/CredentialAtomicQueryMTPOnChainVoting.r1cs", + "fileHash": "14d45098ce326540abf72d7968af8db9" + }, + "sym": { + "fileSourcePath": "/Users/oleh/Work/go/src/github/solarity/circom-lib/zkit/artifacts/circuits/fixture/credentialAtomicQueryMTPV2OnChainVoting.circom/CredentialAtomicQueryMTPOnChainVoting.sym", + "fileHash": "480e9646ca12f3c062bf53361369838b" + } + } +} diff --git a/test/fixture-cache/Multiplier2_artifacts.json b/test/fixture-cache/Multiplier2_artifacts.json new file mode 100644 index 0000000..57d1e55 --- /dev/null +++ b/test/fixture-cache/Multiplier2_artifacts.json @@ -0,0 +1,51 @@ +{ + "_format": "hh-zkit-artifacts-1", + "circuitTemplateName": "Multiplier2", + "circuitFileName": "Basic", + "circuitSourceName": "circuits/fixture/Basic.circom", + "baseCircuitInfo": { + "constraintsNumber": 1, + "signals": [ + { + "name": "in1", + "dimension": [], + "type": "Input", + "visibility": "Public" + }, + { + "name": "in2", + "dimension": [], + "type": "Input", + "visibility": "Private" + }, + { + "name": "out", + "dimension": [], + "type": "Output", + "visibility": "Public" + } + ] + }, + "compilerOutputFiles": { + "ast": { + "fileSourcePath": "/Users/oleh/Work/go/src/github/solarity/circom-lib/zkit/artifacts/circuits/fixture/Basic.circom/Multiplier2_ast.json", + "fileHash": "7a24e6e26498000ec46beebf7b513b39" + }, + "wasm": { + "fileSourcePath": "/Users/oleh/Work/go/src/github/solarity/circom-lib/zkit/artifacts/circuits/fixture/Basic.circom/Multiplier2_js/Multiplier2.wasm", + "fileHash": "f86a885a3eca331d9261be16d382dabb" + }, + "c": { + "fileSourcePath": "/Users/oleh/Work/go/src/github/solarity/circom-lib/zkit/artifacts/circuits/fixture/Basic.circom/Multiplier2_cpp/main.cpp", + "fileHash": "90ab764db6ce0dc1ed4a47304d86596b" + }, + "r1cs": { + "fileSourcePath": "/Users/oleh/Work/go/src/github/solarity/circom-lib/zkit/artifacts/circuits/fixture/Basic.circom/Multiplier2.r1cs", + "fileHash": "64b6520bb96fd100a127557726322d47" + }, + "sym": { + "fileSourcePath": "/Users/oleh/Work/go/src/github/solarity/circom-lib/zkit/artifacts/circuits/fixture/Basic.circom/Multiplier2.sym", + "fileHash": "7ab02b651b7961bf54c051d1444b9b2e" + } + } +} diff --git a/test/fixture-cache/artifacts/Basic.circom/Multiplier2.r1cs b/test/fixture-cache/artifacts/Basic.circom/Multiplier2.r1cs new file mode 100644 index 0000000000000000000000000000000000000000..8db3126d2f00f35fa87a3b5d4c4d4202ea7bf20c GIT binary patch literal 264 zcmXRiOfF_*U|?VdVkRK20AdgTiGlb)@L}@Tht3lVc2;`4FxH5TXl&f(8n8oif#Jg< zzZ3(QUJ#8BfaIZS2%6^rHAn%X2d{b-h#IijAoD?d5CE}3eo_EpWB_#o%x_>dAb9}V Co-JYk literal 0 HcmV?d00001 diff --git a/test/fixture-cache/artifacts/Basic.circom/Multiplier2.vkey.json b/test/fixture-cache/artifacts/Basic.circom/Multiplier2.vkey.json new file mode 100644 index 0000000..dbf04a2 --- /dev/null +++ b/test/fixture-cache/artifacts/Basic.circom/Multiplier2.vkey.json @@ -0,0 +1 @@ +{"protocol":"groth16","curve":"bn128","nPublic":2,"vk_alpha_1":["20491192805390485299153009773594534940189261866228447918068658471970481763042","9383485363053290200918347156157836566562967994039712273449902621266178545958","1"],"vk_beta_2":[["6375614351688725206403948262868962793625744043794305715222011528459656738731","4252822878758300859123897981450591353533073413197771768651442665752259397132"],["10505242626370262277552901082094356697409835680220590971873171140371331206856","21847035105528745403288232691147584728191162732299865338377159692350059136679"],["1","0"]],"vk_gamma_2":[["10857046999023057135944570762232829481370756359578518086990519993285655852781","11559732032986387107991004021392285783925812861821192530917403151452391805634"],["8495653923123431417604973247489272438418190587263600148770280649306958101930","4082367875863433681332203403145435568316851327593401208105741076214120093531"],["1","0"]],"vk_delta_2":[["12677407451819624117141967627088851717460048508649335281858267139752861654521","12366720788575129559875383994533952164526951901491024920712084668205075110408"],["12778484976476400409991863056610849328877842644414273562960637898983981430912","7221118514499974149913208781126512142171554628320581886459732736315277151837"],["1","0"]],"vk_alphabeta_12":[[["2029413683389138792403550203267699914886160938906632433982220835551125967885","21072700047562757817161031222997517981543347628379360635925549008442030252106"],["5940354580057074848093997050200682056184807770593307860589430076672439820312","12156638873931618554171829126792193045421052652279363021382169897324752428276"],["7898200236362823042373859371574133993780991612861777490112507062703164551277","7074218545237549455313236346927434013100842096812539264420499035217050630853"]],[["7077479683546002997211712695946002074877511277312570035766170199895071832130","10093483419865920389913245021038182291233451549023025229112148274109565435465"],["4595479056700221319381530156280926371456704509942304414423590385166031118820","19831328484489333784475432780421641293929726139240675179672856274388269393268"],["11934129596455521040620786944827826205713621633706285934057045369193958244500","8037395052364110730298837004334506829870972346962140206007064471173334027475"]]],"IC":[["6819801395408938350212900248749732364821477541620635511814266536599629892365","9092252330033992554755034971584864587974280972948086568597554018278609861372","1"],["17882351432929302592725330552407222299541667716607588771282887857165175611387","18907419617206324833977586007131055763810739835484972981819026406579664278293","1"],["15838138634521468894153380932528531886891906022296751863057552941301429532008","10499496224041775125547926627482656159317436804293654376137218419558038465083","1"]]} \ No newline at end of file diff --git a/test/fixture-cache/artifacts/Basic.circom/Multiplier2.zkey b/test/fixture-cache/artifacts/Basic.circom/Multiplier2.zkey new file mode 100644 index 0000000000000000000000000000000000000000..9164ab49bfa6cf2b9c32f4d103dfe185648f5917 GIT binary patch literal 3082 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 "); +} else { + const input = JSON.parse(readFileSync(process.argv[3], "utf8")); + + const buffer = readFileSync(process.argv[2]); + wc(buffer).then(async witnessCalculator => { + // const w= await witnessCalculator.calculateWitness(input,0); + // for (let i=0; i< w.length; i++){ + // console.log(w[i]); + // } + const buff= await witnessCalculator.calculateWTNSBin(input,0); + writeFile(process.argv[4], buff, function(err) { + if (err) throw err; + }); + }); +} diff --git a/test/fixture-cache/artifacts/Basic.circom/Multiplier2_js/witness_calculator.js b/test/fixture-cache/artifacts/Basic.circom/Multiplier2_js/witness_calculator.js new file mode 100644 index 0000000..20e6e20 --- /dev/null +++ b/test/fixture-cache/artifacts/Basic.circom/Multiplier2_js/witness_calculator.js @@ -0,0 +1,337 @@ +module.exports = async function builder(code, options) { + + options = options || {}; + + let wasmModule; + try { + wasmModule = await WebAssembly.compile(code); + } catch (err) { + console.log(err); + console.log("\nTry to run circom --c in order to generate c++ code instead\n"); + throw new Error(err); + } + + let wc; + + let errStr = ""; + let msgStr = ""; + + const instance = await WebAssembly.instantiate(wasmModule, { + runtime: { + exceptionHandler : function(code) { + let err; + if (code == 1) { + err = "Signal not found.\n"; + } else if (code == 2) { + err = "Too many signals set.\n"; + } else if (code == 3) { + err = "Signal already set.\n"; + } else if (code == 4) { + err = "Assert Failed.\n"; + } else if (code == 5) { + err = "Not enough memory.\n"; + } else if (code == 6) { + err = "Input signal array access exceeds the size.\n"; + } else { + err = "Unknown error.\n"; + } + throw new Error(err + errStr); + }, + printErrorMessage : function() { + errStr += getMessage() + "\n"; + // console.error(getMessage()); + }, + writeBufferMessage : function() { + const msg = getMessage(); + // Any calls to `log()` will always end with a `\n`, so that's when we print and reset + if (msg === "\n") { + console.log(msgStr); + msgStr = ""; + } else { + // If we've buffered other content, put a space in between the items + if (msgStr !== "") { + msgStr += " " + } + // Then append the message to the message we are creating + msgStr += msg; + } + }, + showSharedRWMemory : function() { + printSharedRWMemory (); + } + + } + }); + + const sanityCheck = + options +// options && +// ( +// options.sanityCheck || +// options.logGetSignal || +// options.logSetSignal || +// options.logStartComponent || +// options.logFinishComponent +// ); + + + wc = new WitnessCalculator(instance, sanityCheck); + return wc; + + function getMessage() { + var message = ""; + var c = instance.exports.getMessageChar(); + while ( c != 0 ) { + message += String.fromCharCode(c); + c = instance.exports.getMessageChar(); + } + return message; + } + + function printSharedRWMemory () { + const shared_rw_memory_size = instance.exports.getFieldNumLen32(); + const arr = new Uint32Array(shared_rw_memory_size); + for (let j=0; j { + const h = fnvHash(k); + const hMSB = parseInt(h.slice(0,8), 16); + const hLSB = parseInt(h.slice(8,16), 16); + const fArr = flatArray(input[k]); + let signalSize = this.instance.exports.getInputSignalSize(hMSB, hLSB); + if (signalSize < 0){ + throw new Error(`Signal ${k} not found\n`); + } + if (fArr.length < signalSize) { + throw new Error(`Not enough values for input signal ${k}\n`); + } + if (fArr.length > signalSize) { + throw new Error(`Too many values for input signal ${k}\n`); + } + for (let i=0; i0) { + res.unshift(0); + i--; + } + } + return res; +} + +function fromArray32(arr) { //returns a BigInt + var res = BigInt(0); + const radix = BigInt(0x100000000); + for (let i = 0; ifvoZWLf zvP`ijnLT$W=k7f_cXuYe*N=>d%`pS-wl#o~26~liJV+4G0K895gE`NVuzpfNQc?8e*2CjA=j;RN*_S=$ z`QOvM$|3V*@(~%H0rt+cU&yIXr*}p859FNr3-TrTij3Y0pq~J@o& literal 0 HcmV?d00001 diff --git a/test/fixture-cache/artifacts/auth/Matrix.circom/Matrix.vkey.json b/test/fixture-cache/artifacts/auth/Matrix.circom/Matrix.vkey.json new file mode 100644 index 0000000..d7f2a04 --- /dev/null +++ b/test/fixture-cache/artifacts/auth/Matrix.circom/Matrix.vkey.json @@ -0,0 +1 @@ +{"protocol":"groth16","curve":"bn128","nPublic":36,"vk_alpha_1":["20491192805390485299153009773594534940189261866228447918068658471970481763042","9383485363053290200918347156157836566562967994039712273449902621266178545958","1"],"vk_beta_2":[["6375614351688725206403948262868962793625744043794305715222011528459656738731","4252822878758300859123897981450591353533073413197771768651442665752259397132"],["10505242626370262277552901082094356697409835680220590971873171140371331206856","21847035105528745403288232691147584728191162732299865338377159692350059136679"],["1","0"]],"vk_gamma_2":[["10857046999023057135944570762232829481370756359578518086990519993285655852781","11559732032986387107991004021392285783925812861821192530917403151452391805634"],["8495653923123431417604973247489272438418190587263600148770280649306958101930","4082367875863433681332203403145435568316851327593401208105741076214120093531"],["1","0"]],"vk_delta_2":[["11440336177506448739598777468510751601176956252879434831279895853065771192334","6440580438269700134388742401489231656538758440455175419466966179398446308071"],["3525105165801031639293306011256904126225634474456303850787682066065297811617","14180479392284360806353622861926630604002423663439452215560379753008674394599"],["1","0"]],"vk_alphabeta_12":[[["2029413683389138792403550203267699914886160938906632433982220835551125967885","21072700047562757817161031222997517981543347628379360635925549008442030252106"],["5940354580057074848093997050200682056184807770593307860589430076672439820312","12156638873931618554171829126792193045421052652279363021382169897324752428276"],["7898200236362823042373859371574133993780991612861777490112507062703164551277","7074218545237549455313236346927434013100842096812539264420499035217050630853"]],[["7077479683546002997211712695946002074877511277312570035766170199895071832130","10093483419865920389913245021038182291233451549023025229112148274109565435465"],["4595479056700221319381530156280926371456704509942304414423590385166031118820","19831328484489333784475432780421641293929726139240675179672856274388269393268"],["11934129596455521040620786944827826205713621633706285934057045369193958244500","8037395052364110730298837004334506829870972346962140206007064471173334027475"]]],"IC":[["9208057762924632572964202763407094714370989117267209682581276771332575669704","18156644940811900240263589767151469724812141047030221768360082386164863345967","1"],["5503432946562926082531235973045833784799225237055410196973698215065904922106","11779049786411547481925747529050617010976153240653735594345171775327090075521","1"],["20074520160875305508800158742099702448021825298027512071515803576140548556301","19291774108886976327170650630212554286157953506141771026514389798871233649509","1"],["11953135638070308188662480347608062411146703720111554291554536473044546380072","18331462173555389338415100845810103754796640698302801992610691056428881935216","1"],["7722290252567287702711433123329290975423602452727936092367314990465669320936","12283036322149791256639689593643336839991608908344242571620914010682638045715","1"],["3911490010594310350735948707190859517280332260219749597373769480163188184229","14712246518734512869034505036495199058071814878180202147606322357547928678877","1"],["4032204944032768964596303497870066505028692738614148522478438994769752018040","14280339454300761646471017145718471085495653650747592269728151698347035919426","1"],["4036537250924636817451240931530516760314157295195401025897179410240321867344","1112533668395923763229420404900625316399787081669995125731299478267583484572","1"],["17862169518525637501219820803223743097334916291523986425244563638017024704470","7634652596005949543961730509414274251176345189400993747325414285036779776462","1"],["15903271332867078170462642492805333446865901617584007335624070748464283861253","5757195205726094323832167721704568837490805414233721147631695161761816994822","1"],["9401457182765199107546373309399958540153119165435583277386457109394805546862","18791673952512770653078185925670450943254663056146047714326902662295635542012","1"],["16364997412972216224384721673119991256131334005013519101819845464158104469590","20099416439969274031863058250994327932769419235293055506831313815302765666916","1"],["14645756258334887998276228538078258279821117182834974693727866676877218571109","2895578571360465288081043861419086556931884789842659022379898913930612878424","1"],["15667136927998742103707802481607979204445580402869932801643917709189712969850","15106577709172797183626729265543741623513881311852629252486349132777802357188","1"],["11347113930745321384453211637124789773327996596637735146529382304899607720639","20856550163684469833769402028689786272410939517824321879641050803970708384560","1"],["6839153724050422821987355195753709685392266415004663018587345523393290701320","17616326538862291407915220081306789993240586112683134454471006734582073110266","1"],["14194018969204187471814649594482319337299260299712238608880861786370125340602","11177692755665557494511662934866800105677803734912540877334766211017186683933","1"],["7222464390462493118952459378965788173447554508495425751466637923128115415873","2321114148258080841170953487254658080146125503682747780240508628843861278102","1"],["20510534074028974319960937921577402033764845378089740294068727194660912882642","13636817777043429396737625681426737586224585120641242036233763618385237377217","1"],["14162744794297712803848814510395373255069207537027545063985957652143070759323","4602989699169132945657125985828112965356493638898784247792562257388916439857","1"],["5564545906152922878618906388593239713344872861567194404274146951402477518118","13222143414269761133901853095759427565627287990982481093248361564583363283521","1"],["17554396490523413996722489564899763298139970915299391150786171407343949055759","1265452618203457841013387415718006615564931035565628209861821322769620749934","1"],["5210211751721392144843771898237527967587434852883265874490917024055753924463","8987460236710304101613262213174249115381958095056123316635571616827280936130","1"],["1925193750364605146545231957864022683951234719829785054042273258944093192655","16727493016695856111911475649884335540512358047359047074084191471090675705489","1"],["18386391420849853324332563865742214818549638249599475268702354152619347005464","9602266131231327362212274604158572005217856661592170646749231060199750485992","1"],["11801497860757012710413358272255585920447962034047933586957271329174073932243","14726142748575626414260249814570780109901770651351556373049219032383424948443","1"],["21363961380092020987452630687674737847085734760194771087968396708864341454195","20368277194804284634606324912663567098056606216690846086870902173013403842684","1"],["12588695067006664894460086802080942245019219228599680903336913427992711897598","15108467579808502229572476598119011691749674834403172556211880035292398272331","1"],["16555867947364149535400273004143071241280934155621285762082489462222819083554","8694566674639429970733787440890067174312616204157420046538117509486172021115","1"],["294966981220838049348302488186690905860849812505626890512658337817252339457","15373811294672474806610847887617169883332714617555480693284450334105887892447","1"],["3320418467171227158908144730975237705925121824317924894471294220676910246683","8207996063173304041411757041827000881275797356218547762736035213976082565435","1"],["18689826792119732765506809850433913722710468432704056813537057868548595865632","3865956193141979731564112124942953756413977201786776301336392288721879189850","1"],["21821557820322032236987080939922838003640574575608202428982160185834885553303","11968699524110155944670073128709711588267348441104640526025185074264633791058","1"],["9229203930174544821543115618915951787962178783244083062859468375984818232639","886051251451006034852483839143390076039585266590161724902344667896346473663","1"],["19630984484242657903278101478678872608357355539990378036189594318880957253815","5768344143934204381210620506227629419053109588147002075350757745355395141340","1"],["20200624028299402657047933592757081744281691335201852348783540946415847642935","18713280981953745633828254420363940685933399423332257697122840426701442627882","1"],["5244511058548673950771846179995429960759305365150583332689649114524156590398","20520675731193826905706139056021543360934585813506382034462743909172814648233","1"]]} \ No newline at end of file diff --git a/test/fixture-cache/artifacts/auth/Matrix.circom/Matrix.zkey b/test/fixture-cache/artifacts/auth/Matrix.circom/Matrix.zkey new file mode 100644 index 0000000000000000000000000000000000000000..8057312e563950335d65b4866ba0345a87ebecc6 GIT binary patch literal 19914 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 literal 0 HcmV?d00001 diff --git a/test/fixture-cache/artifacts/auth/Matrix.circom/Matrix_js/Matrix.wasm b/test/fixture-cache/artifacts/auth/Matrix.circom/Matrix_js/Matrix.wasm new file mode 100644 index 0000000000000000000000000000000000000000..5b998f493b170f461bb0199d7e37a0728b1e0ca2 GIT binary patch literal 35029 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 literal 0 HcmV?d00001 diff --git a/test/fixture-cache/artifacts/auth/Matrix.circom/Matrix_js/generate_witness.js b/test/fixture-cache/artifacts/auth/Matrix.circom/Matrix_js/generate_witness.js new file mode 100644 index 0000000..eabb86e --- /dev/null +++ b/test/fixture-cache/artifacts/auth/Matrix.circom/Matrix_js/generate_witness.js @@ -0,0 +1,20 @@ +const wc = require("./witness_calculator.js"); +const { readFileSync, writeFile } = require("fs"); + +if (process.argv.length != 5) { + console.log("Usage: node generate_witness.js "); +} else { + const input = JSON.parse(readFileSync(process.argv[3], "utf8")); + + const buffer = readFileSync(process.argv[2]); + wc(buffer).then(async witnessCalculator => { + // const w= await witnessCalculator.calculateWitness(input,0); + // for (let i=0; i< w.length; i++){ + // console.log(w[i]); + // } + const buff= await witnessCalculator.calculateWTNSBin(input,0); + writeFile(process.argv[4], buff, function(err) { + if (err) throw err; + }); + }); +} diff --git a/test/fixture-cache/artifacts/auth/Matrix.circom/Matrix_js/witness_calculator.js b/test/fixture-cache/artifacts/auth/Matrix.circom/Matrix_js/witness_calculator.js new file mode 100644 index 0000000..20e6e20 --- /dev/null +++ b/test/fixture-cache/artifacts/auth/Matrix.circom/Matrix_js/witness_calculator.js @@ -0,0 +1,337 @@ +module.exports = async function builder(code, options) { + + options = options || {}; + + let wasmModule; + try { + wasmModule = await WebAssembly.compile(code); + } catch (err) { + console.log(err); + console.log("\nTry to run circom --c in order to generate c++ code instead\n"); + throw new Error(err); + } + + let wc; + + let errStr = ""; + let msgStr = ""; + + const instance = await WebAssembly.instantiate(wasmModule, { + runtime: { + exceptionHandler : function(code) { + let err; + if (code == 1) { + err = "Signal not found.\n"; + } else if (code == 2) { + err = "Too many signals set.\n"; + } else if (code == 3) { + err = "Signal already set.\n"; + } else if (code == 4) { + err = "Assert Failed.\n"; + } else if (code == 5) { + err = "Not enough memory.\n"; + } else if (code == 6) { + err = "Input signal array access exceeds the size.\n"; + } else { + err = "Unknown error.\n"; + } + throw new Error(err + errStr); + }, + printErrorMessage : function() { + errStr += getMessage() + "\n"; + // console.error(getMessage()); + }, + writeBufferMessage : function() { + const msg = getMessage(); + // Any calls to `log()` will always end with a `\n`, so that's when we print and reset + if (msg === "\n") { + console.log(msgStr); + msgStr = ""; + } else { + // If we've buffered other content, put a space in between the items + if (msgStr !== "") { + msgStr += " " + } + // Then append the message to the message we are creating + msgStr += msg; + } + }, + showSharedRWMemory : function() { + printSharedRWMemory (); + } + + } + }); + + const sanityCheck = + options +// options && +// ( +// options.sanityCheck || +// options.logGetSignal || +// options.logSetSignal || +// options.logStartComponent || +// options.logFinishComponent +// ); + + + wc = new WitnessCalculator(instance, sanityCheck); + return wc; + + function getMessage() { + var message = ""; + var c = instance.exports.getMessageChar(); + while ( c != 0 ) { + message += String.fromCharCode(c); + c = instance.exports.getMessageChar(); + } + return message; + } + + function printSharedRWMemory () { + const shared_rw_memory_size = instance.exports.getFieldNumLen32(); + const arr = new Uint32Array(shared_rw_memory_size); + for (let j=0; j { + const h = fnvHash(k); + const hMSB = parseInt(h.slice(0,8), 16); + const hLSB = parseInt(h.slice(8,16), 16); + const fArr = flatArray(input[k]); + let signalSize = this.instance.exports.getInputSignalSize(hMSB, hLSB); + if (signalSize < 0){ + throw new Error(`Signal ${k} not found\n`); + } + if (fArr.length < signalSize) { + throw new Error(`Not enough values for input signal ${k}\n`); + } + if (fArr.length > signalSize) { + throw new Error(`Too many values for input signal ${k}\n`); + } + for (let i=0; i0) { + res.unshift(0); + i--; + } + } + return res; +} + +function fromArray32(arr) { //returns a BigInt + var res = BigInt(0); + const radix = BigInt(0x100000000); + for (let i = 0; i} A promise that resolves to true if the AST was generated successfully, otherwise false. - */ - public async generateCircuitAST(filePath: string): Promise { - if (!fs.existsSync(filePath)) { - throw new Error(`The specified circuit file does not exist: ${filePath}`); - } - - const sourcePath = this._extractSourcePath(filePath); - const circuitName = this._extractCircuitName(filePath); - - this._createCircuitASTDirectory(sourcePath); - - const astFilePath = this._getFutureASTFilePath(sourcePath, circuitName); - - const args = ["--dry_run", "--save_ast", astFilePath, "--", filePath]; - - try { - await this._getCircomRunner(args, true).execute(this._wasmBytes); - - const circuitAST: CircuitAST = { - sourcePath: path.relative(this.projectRoot, filePath), - circomCompilerOutput: JSON.parse(fs.readFileSync(astFilePath, "utf-8")), - }; - - fs.writeFileSync(astFilePath, JSON.stringify(circuitAST)); - - return true; - } catch (error) { - await this._displayCircuitGenerationError(circuitName, args); - - return false; - } - } - - public async compileCircuit(filePath: string, outputDir: string): Promise { - if (!fs.existsSync(filePath)) { - throw new Error(`The specified circuit file does not exist: ${filePath}`); - } - - const circuitName = this._extractCircuitName(filePath); - - fs.mkdirSync(path.join(this.projectRoot, outputDir), { recursive: true }); - - const args = [ - path.join(this.projectRoot, filePath), - "--output", - path.join(this.projectRoot, outputDir), - "--wasm", - "--json", - "--r1cs", - ]; - - try { - await this._getCircomRunner(args, true).execute(this._wasmBytes); - - await this._generateZKeyFile(outputDir, circuitName); - await this._generateVKeyFile(outputDir, circuitName); - - return true; - } catch (error) { - await this._displayCircuitGenerationError(circuitName, args); - - console.error(error); - - return false; - } - } - - private async _generateZKeyFile(outputDir: string, circuitName: string) { - const r1csFile = `${path.join(this.projectRoot, outputDir)}/${circuitName}.r1cs`; - const zKeyFile = `${path.join(this.projectRoot, outputDir)}/${circuitName}.zkey`; - - await snarkjs.zKey.newZKey( - r1csFile, - path.join(this.projectRoot, "test/helpers/powersOfTau28_hez_final_08.ptau"), - zKeyFile, - ); - } - - private async _generateVKeyFile(outputDir: string, circuitName: string) { - const zkeyFile = `${path.join(this.projectRoot, outputDir)}/${circuitName}.zkey`; - const vKeyFile = `${path.join(this.projectRoot, outputDir)}/${circuitName}.vkey.json`; - - const vKeyData = await snarkjs.zKey.exportVerificationKey(zkeyFile); - - fs.writeFileSync(vKeyFile, JSON.stringify(vKeyData)); - } - - /** - * Cleans up all previously generated circuit ASTs. - */ - public cleanupCircuitASTs(): void { - fs.rmSync(path.join(this.projectRoot, this.outputDir), { recursive: true, force: true }); - } - - /** - * Returns JSON file path with a specified filename. If the filename does not have a '.json' extension, - * it is appended. - * - * @param {string} sourcePath - The source path to the circuit file. - * @param {string} filename - The base name for the JSON file. - * @returns {string} The full path to the possibly created JSON file. - */ - private _getFutureASTFilePath(sourcePath: string, filename: string): string { - const jsonFilename = filename.endsWith(".json") ? filename : `${filename}.json`; - - const filePath = path.join(this.outputDir, sourcePath, jsonFilename); - - return path.resolve(filePath); - } - - /** - * Extracts the circuit name from the file path. Used to identify the circuit in the AST. - * - * @param {string} filePath - The full path to the circuit file. - * @returns {string} The extracted name of the circuit. - */ - private _extractCircuitName(filePath: string): string { - const baseName = path.basename(filePath); - - return baseName.replace(path.extname(baseName), ""); - } - - /** - * Extracts the source path from the file path. This is intended to identify the directory path - * where the AST should be stored. - * - * The extracted path is relative to the project root and skips the top-level directory. - * - * For example, if the `filePath` is `circuits/utils/utility.circom`, then the resulting file with - * the AST will be saved with the following tree structure relative to the project root: - * - * ``` - * . (PROJECT_ROOT) - * ├── (TEMP_DIR, default: `cache/circuits-ast`) - * │ └── utils (circuits directory is skipped) - * │ └── utility.json - * ``` - * - * @param {string} filePath - The full path to the circuit file. - * @returns {string} The extracted source path. - */ - private _extractSourcePath(filePath: string): string { - const pathParts = path - .resolve(this.projectRoot, filePath) - .replace(path.resolve(this.defaultDir), "") - .split(path.sep); - - // Skip the `/` symbol - pathParts.shift(); - - return path.dirname(pathParts.join(path.sep)); - } - - /** - * Creates a sequence of directories based on the provided source path. - * - * @param {string} sourcePath - The source path of the circuit file. - */ - private _createCircuitASTDirectory(sourcePath: string): void { - const fullPath = path.join(this.outputDir, sourcePath); - - fs.mkdirSync(fullPath, { recursive: true }); - } - - /** - * Displays the error message when the circuit generation fails. - */ - private async _displayCircuitGenerationError(circuitName: string, args: string[]): Promise { - if (!this.quiet) { - console.error(`Error generating AST for circuit: ${circuitName}. Reason: \n`); - - try { - await this._getCircomRunner(args).execute(this._wasmBytes); - } catch {} - } - } - - /** - * Returns an instance of the CircomRunner with the specified arguments. - * - * FIXME: explain error handling - */ - private _getCircomRunner(args: string[], quiet: boolean = false): any { - return new CircomRunner({ - args, - preopens: { "/": "/" }, - bindings: { - ...bindings, - exit(_code: number) {}, - fs, - }, - quiet, - }); - } -} diff --git a/test/helpers/CircuitProcessor.ts b/test/helpers/CircuitProcessor.ts deleted file mode 100644 index fbe23fa..0000000 --- a/test/helpers/CircuitProcessor.ts +++ /dev/null @@ -1,199 +0,0 @@ -import fs from "fs"; -import path from "path"; - -import { CircuitProcessorConfig } from "./types"; - -import CircuitCompiler from "./CircuitCompiler"; - -import { findProjectRoot } from "../../src/utils"; - -/** - * `CircuitProcessor` is responsible for processing circuits by generating their Abstract Syntax Trees (ASTs) using the `CircuitCompiler`. - * It provides a mechanism for filtering which circuits to process based on the configuration provided. - * - * Filtering is based on the RegExp matching of file paths against the `only` and `skip` patterns. - */ -export default class CircuitProcessor { - public readonly supportedFileExtensions = [".circom"]; - - private readonly _circuitProcessorConfig: CircuitProcessorConfig; - - private readonly _onlyFilterGlobs: RegExp[]; - private readonly _skipFilterGlobs: RegExp[]; - - public readonly circuitCompiler: CircuitCompiler; - - private readonly _projectRoot: string = findProjectRoot(process.cwd()); - - /** - * Initializes a new instance of the CircuitProcessor class with optional custom configuration. - * It sets up filters using RegExp based on the configuration for which files to process or skip. - * - * @param {CircuitProcessorConfig} [circuitProcessorConfig=defaultCircuitProcessorConfig] - The configuration object for - * the circuit processor, including definitions for the default folder, and patterns for files to include or skip. - */ - constructor(circuitProcessorConfig: CircuitProcessorConfig) { - this._circuitProcessorConfig = circuitProcessorConfig; - - this._onlyFilterGlobs = this._circuitProcessorConfig.only.map((file) => new RegExp(file)); - this._skipFilterGlobs = this._circuitProcessorConfig.skip.map((file) => new RegExp(file)); - - this.circuitCompiler = new CircuitCompiler( - this._circuitProcessorConfig.astOutputDir, - this._circuitProcessorConfig.defaultFolder, - this._circuitProcessorConfig.quiet, - ); - } - - /** - * Processes all circuits within the default folder by generating their ASTs using the CircuitCompiler. - * It performs a health check of the default folder before proceeding with the file processing. - * - * If the `clean` option is set to `true`, the method will clean up the previously generated circuit ASTs before processing the circuits. - * If during the circuit processing an error occurs and the `strict` option is set to `true`, the method will throw an error. - * - * @returns {Promise} A promise that resolves when all circuits have been processed, or immediately if the default folder is not "healthy". - */ - public async processCircuits(): Promise { - if (!this._defaultFolderHeathCheck()) { - return; - } - - if (this._circuitProcessorConfig.clean) { - this.circuitCompiler.cleanupCircuitASTs(); - } - - const circuitFiles = this._fetchCircuitFiles(); - - for (const circuitFile of circuitFiles) { - const isSuccess = await this.circuitCompiler.generateCircuitAST( - path.resolve(this._circuitProcessorConfig.defaultFolder, circuitFile), - ); - - if (!isSuccess && this._circuitProcessorConfig.strict) { - throw new Error(`An error occurred while processing the circuit: ${circuitFile}`); - } - } - } - - /** - * Retrieves the relative to the project root default folder path specified in the configuration. - * - * @returns {string} The path to the default folder. - */ - public getDefaultFolder(): string { - return path.relative(this._projectRoot, this._circuitProcessorConfig.defaultFolder); - } - - /** - * Validates the health of the default folder by checking its existence and ensuring it's not empty. - * If the folder doesn't exist, an error is thrown. If the folder is empty, a warning message is logged. - * - * @returns {boolean} True if the default folder is valid and not empty, otherwise false. - */ - private _defaultFolderHeathCheck(): boolean { - if (!fs.existsSync(this._circuitProcessorConfig.defaultFolder)) { - throw new Error(`The specified default folder does not exist: ${this._circuitProcessorConfig.defaultFolder}`); - } - - if (fs.readdirSync(this._circuitProcessorConfig.defaultFolder).length === 0) { - console.info(`The specified default folder is empty: ${this._circuitProcessorConfig.defaultFolder}`); - - return false; - } - - return true; - } - - /** - * Fetches the list of circuit files from the default folder that meet the criteria specified in the configuration. - * It filters out files based on the `skip` and `only` configurations and checks if a file contains the main component. - * The 'skip' option has higher priority than the 'only' option. - * Files not matching the criteria are excluded from processing. - * - * Currently, only files with the `.circom` extension are considered for processing. - * - * @returns {string[]} An array of file paths that are eligible for processing based on the provided configurations. - */ - private _fetchCircuitFiles(): string[] { - const files = fs.readdirSync(this._circuitProcessorConfig.defaultFolder, { recursive: true }); - - const circuitFiles: string[] = []; - - for (const file of files) { - const stringRepresentation = file.toString(); - - if ( - !path.extname(stringRepresentation) || - !this.supportedFileExtensions.includes(path.extname(stringRepresentation)) - ) { - continue; - } - - if (this._isFilePathInSkipOption(stringRepresentation)) { - continue; - } - - if (this._circuitProcessorConfig.only.length > 0 && !this._isFilePathInOnlyOption(stringRepresentation)) { - continue; - } - - if (!this._isCircuitContainsMain(stringRepresentation)) { - continue; - } - - circuitFiles.push(stringRepresentation); - } - - return circuitFiles; - } - - /** - * Checks if a given file path matches any of the patterns specified in the `only` configuration. - * This determines whether the file is among those that should be exclusively processed. - * - * @param {string} filePath - The path of the file to check against the `only` patterns. - * @returns {boolean} True if the file matches an `only` pattern, otherwise false. - */ - private _isFilePathInOnlyOption(filePath: string): boolean { - for (const glob of this._onlyFilterGlobs) { - if (glob.test(filePath)) { - return true; - } - } - - return false; - } - - /** - * Checks if a given file path matches any of the patterns specified in the `skip` configuration. - * This determines whether the file is among those that should be skipped during processing. - * - * @param {string} filePath - The path of the file to check against the `skip` patterns. - * @returns {boolean} True if the file matches a `skip` pattern, otherwise false. - */ - private _isFilePathInSkipOption(filePath: string): boolean { - for (const glob of this._skipFilterGlobs) { - if (glob.test(filePath)) { - return true; - } - } - - return false; - } - - /** - * Verifies if a file contains the main component, which is a criterion for processing. - * This method reads the file's content to search for a specific pattern indicating the presence of the main component. - * - * @param {string} filePath - The path of the file to check for the main component. - * @returns {boolean} True if the file contains the main component, otherwise false. - */ - private _isCircuitContainsMain(filePath: string): boolean { - const fileContent = fs.readFileSync(path.resolve(this._circuitProcessorConfig.defaultFolder, filePath), "utf8"); - - const regex = /component +main/; - - return regex.test(fileContent); - } -} diff --git a/test/helpers/generateTypes.ts b/test/helpers/generateTypes.ts deleted file mode 100644 index 32ddf52..0000000 --- a/test/helpers/generateTypes.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { generateAST } from "./generator"; - -import { CircuitTypesGenerator } from "../../src"; - -import { findProjectRoot } from "../../src/utils"; - -const astDir = "test/cache/circuits-ast"; - -const circuitTypesGenerator = new CircuitTypesGenerator({ - basePath: "test/fixture", - projectRoot: findProjectRoot(process.cwd()), - circuitsASTPaths: [ - "test/cache/circuits-ast/Basic.json", - "test/cache/circuits-ast/ComplexMain.json", - "test/cache/circuits-ast/credentialAtomicQueryMTPV2OnChainVoting.json", - "test/cache/circuits-ast/lib/BasicInLib.json", - "test/cache/circuits-ast/auth/EMultiplier.json", - "test/cache/circuits-ast/auth/BasicInAuth.json", - "test/cache/circuits-ast/auth/Matrix.json", - ], -}); - -async function generateTypes() { - await generateAST("test/fixture", astDir, true, [], []); - - await circuitTypesGenerator.generateTypes(); -} - -generateTypes().catch(console.error); diff --git a/test/helpers/generator.ts b/test/helpers/generator.ts deleted file mode 100644 index da6a310..0000000 --- a/test/helpers/generator.ts +++ /dev/null @@ -1,23 +0,0 @@ -import CircuitProcessor from "./CircuitProcessor"; - -export async function generateAST( - inputDir: string, - outputDir: string, - clean: boolean, - skip: string[], - only: string[], -): Promise { - const preprocessor = new CircuitProcessor({ - defaultFolder: inputDir, - astOutputDir: outputDir, - clean, - skip, - only, - strict: false, - quiet: false, - }); - - await preprocessor.processCircuits(); - - return preprocessor; -} diff --git a/test/helpers/powersOfTau28_hez_final_08.ptau b/test/helpers/powersOfTau28_hez_final_08.ptau deleted file mode 100644 index 7fe5f5b83987221b33c930c259ab59939c2ca03b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 378008 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%0Dof3FJXao^qWH5XP%#kw5Eo#c|x@J=6fxg z_c+Y_xun&avQsvId+hB-bE<9yUIZcOY^lU3T1s%`kIFIGNl>?~^K-4mVC(dF3;vCy z2@ed&_(+Pg2_#KMxQ$w{^b)*Jm6LbvpPb+6va@d86pSSMUa0Bllr6jV5kfM7rx=Vu(5SqvX0|~C}u3Y>DI#K4X;4=O!3X#KP4C9d6N7sfA_T?si zytsy|HMEdzFGz-WW(a$GxtDxIAM>qnFBb_K?_2He!arDBO#1hD9~=HVP(7CE@G>lq zw+m*x4+OC2z4fmPU3*>aI~;hVb~|3)_kIreJvi)4$uRxGk602~vb%+w*m60g|yUP>Xojb*BOyVNS%T-QrLddwjIV3(pg&1a%gufU|zgOd!*Ip4Md{Cj$ zE);~m@6LN?J$iDU&BH&vX|>wYTalu@dQM>nLGp<*jBwtMe{=#h-Z(2CNgeIQdC5j~ zh#A4fk5xHz8ub3EM9al74@QL1$0a!!+U+zYRZfkAA2B4wCnU226YKZZk|^c!$&2QM zTBP?3H48Y6Ht8(bmXg3cIYBl-B}1aeIjZ=MM2_rdnTpv$2F+8d4vNzjPTB-Mt!iQ> zv6mDHANRI74<$*PRwv#FXEJ^vqSy%|N_sW25>@FUcDZ&U_=qwT=~dXKO5E`VW`P6hn?~aNWxTG- zE5yYpBqQONlJgP$zes<^4tbeE!#%(y`vG8YF)iSkEfB8gzWB!2DA4sC5ZPWII)ijc zfa2+;;;M~4>Dsif1%FYU6FM-?Qm2B)e3uK$#qjkRwsY^wm@9w z^T=Y`eOSSM4M>RWA)*+p8Sj@RxQpxH`JJ4)K2dD4RwvZbNRG;ycq;lCeV6nNBv715 z8ST>G9F1EpnUJ2OHn2c!KRI{z&8gZ0Ra$f4Rab?^Sm_mJ??k%*C%_L2SpAMYI5zcj zY@n`Ox%jO5oA65^S@bl(Jd6#z)fq#<9ngpb5;9>qxexE%2!eLWnj${mOVn4C(j1hp zph$=0bRxalNuF1iiwKKy5xkk^GDyaAI8euZ!BuB*8Vw9a{|no0P5a%YUr@qtojpR3 zss4wcLI0i$kHrfYj+^Rw;nS-}x>t`FffkzjM?s*KNHeNe!-mHDyAuSDUl%_*R-|#x z8fdrD0=|2)Sp^yEy3boC2}~XMr(Czo4IO|((+s9N^W?$IcUIJmpvoH!-pH4BL%F)| zz^MH5V~>qYm*Dtp*$1K~~iu}@0v*tg91W9qyh9haqNkxgIJSbK4CB3vt?L;d9&dMfzT{i*#%MI=} zOG7XVeMP_;cQvtKRj}T7$eL*dMk`C`THYhcVFT+^|!u>8A`G!NM zDH#y1h*sQhdQ-D@)2_e{q}M#qPA=TjP)Y7cdKr*{x&e6i8W`GQ5X6BVDVEI-GVvnd zs`}pqZta_U18C66ee6g_Q~4o1*Q3?843G8fC!Qg9NOgy_+_Q=$SIpVNNmYnvUmKS@ ziNJ_Itu)Ve>yx7se!Vz9EZ#OUD&22?wm&IDr=xyfgja6Rj;OxyQ8S>nfdZ-UwZuxV zp!&K}Vdc@6)*+Cylyeb+u){4`Go?h(XDG{4aStA2Q#SYs!L=Z8JMTmB{DnM2M$xiZ z)S=cX0^fJ*WiB0?$!k~TlmtN+>VDss>ylHs-ixhd?^${@S5QCzJD1i)ryv<(n-!tI z=WK_b>UK4+#HkM__LQ|v&Zl=5|MM7Px|?sb*k1vYsy0<($auiN4AaR&c~UaRETa6I zf-I^aOhS0!G;A7YhZLG&bLGOS^iOV;m$i)<0I#Qds%ghyV86ObAqb38JKh|rJ6CHg z8(q77(KO5hZmd3(S|Op~16;hD)D?@eZ9AecE7fj5{0!v$MwISSS$Dkvx7{y)mcvK` zGHi{Nk2Lim5dA`As{|A;QR^o}bVPFSvkZO>S<=j~CRHN<*nH|Bk zSZV>&CfF7sqA?$&Y;jHPy`+wSGO1c0?A#r&fPSBv15k9!$>q{qvXG9{tU)B@QI~g~ z5&o$f8yq=2O0>p#eNKriGyWo!Gp2)%QLZKd1fB(NUT;3G-sfnoCj*?=>~(BzjODapD}60IuVB`nA{3KxuZA!IGm9^ zeA9sg9o@!;Dai~Hh_@v|-v-;F-@}C*@QoZR|ELTclk{eGwccsNt*`u_{(Oak@(-&6V1UD?nR3822a0<&T2QuIyzt`@M==*(oW!MgTVjwRLNFva{dDE$(cy$5PmAo-C>2FqFzg*ct#YLeLWMOkf# zrM!ql_imZLbfwjZCjQWL;AlaRSJs8VvlJ!Qs?@S^*~FqAS%n|?9D-IO1`v521u~uV z9_@+ayZsE`#CktKO~)$XPi*}NTII|vZ3#bhKj1&kaSbmG|6oID-khq|gF#}l`5Xt&m zx^ML^>2I6^4nLyaf~h;nurO!0++t)Hn}`6CQJcw0Z7Sh(A2d$bAmo(9&4Kjph`O7v z_}GKH{uc%jJEHX|&1b?)SyvJ7VOD#_D7K3+>*np$HW0=@@EKo^`*@?6G6=(-@#~XHX@19ms;TM(aF+F2on#_qS{47AywHJn`$MM8@ zZ?CMoKK~+)82Hd7uJV>OmsfYJR0LIBC9B-)TT=Gw^<4L|lf!8Ffx?hbnQ~eeq5HIV ze*nGIS=28vPxcFJcKpDEn@zUmOh0f{194|4#Ud~!e`nn1WduY?AFIVy^w8@=@cyhE4F3=T$4*HWka`%IK4ED+$(@Qw#qK;3r`z5lk~)zgD_P$0CrG zrr!LGi~5JbXh~{#0#<&EmyBACr<6oFPxLjG32?;Ub>nHuc!P&eJfPXafC~N2TugDk zfV{>JI^IC6KaNLFV7=}H=j{&7c=z+A^K7#w6{^&DVk>7;251=X#)IHDYH+$0-)l< zub}LhUZ4o3ICNkpU2xuQc)%VLSN55|n@6JXeu;6fAB1D~k~1ZsT$=EBE{N}XLi|s| zaemdkexvTUz&^gQlM*X%9Fmn_a2DD!k!}}kv(tJd0IiP}$uWY+6Zjx>!H33s)Wda) zQGM(U&Z|fDRrZBKt3?|fjPn%iPlJor&H!s!*OO@su{}BeT6>bjcOKzFu^|vqW0pVg zx79|@LhX4O;`$BmyRP3@3c4UenP)^p5KOm=nMR4labb_BhM20%Slj7C7^$MGANx!9 zE7_oX;~|VH4}6X-(o*svx4KxbH%BYt|N73?;@kTo>7Od9)umSFP$i^jO@b>KCIA91 zt@V8}GVKFYT|42ycelrPT@`GasF6#s0HHK;N2z?|Lmoo2CqNqnB1hcb{BDUbP z5t5hL#A;xtv=)ktK<~D;h|%F7)ko+GA%Y)=@(S{Lp416!+n0%VzjtvYv>vy~9Gq>e zb$Qp}NW@<8N^MBe0qJCFEh}7OTQ1-=yI-xJe|yYhIs4i#AQign`E?P&24e&&ue?%VqFoRK-u<%9 znh?dCqo|Is=gBv)KC3E2&xt7Qp>=B5z(zU=3r1Zp19b3fg)*s>>W;`Mj07uqfr4IgS zDRtBX1;nXc(0_)DkuPne1 z1<5ZPxOv5r_L+^K27~NKzD{#q~ zY~|}uMbn_59VPAZ83>gaN-7MEpxk3O)v3l+4B%x_Fl{>P?rk}SDNSJ@Qu&Fw~ z(~}~++9;(#_#dH6ZGq%YfZ4RK&g!8@R-skgm~Ok8(zw;t?RNv@Nn^?IXx8$-@Un9- z=ncS^?v4-o?KQ`90$vjDk!a@o3X?&gsdP=h396N^F-bqOV-s3semY~+G!r$})AQ5g zoUc&+;+vEYFKbW978*3SIY=+AO`%mC>aKJ?YJxWo5wC-B{W#_!L|Ku9xk zQ=zy80^Dyj2CpgFBmRkw@>xGvLp0`)H&hO3IFw|ybV|y!ANvK8AaEv(VVto5P(_Sb z(|$&8;EWjDaqIYVJZp{4$i;OmcA!RJvT7m6fT6jv`jw6vqvmE`={7arsjCIktvMQ4 z$3!g%M|^xTJdV?W15=z_Q?CHrTLJJd?C+P`vF@Yf@_#XSd9S?`DVUOK)*Acc2Ct13 z*!oPSACroS0fTJ5eAyIb%Kia+#r&d7lgx_M;2xkM+ zsAE2RkMuAPkl-;GGB+ECjcc$_ep#K_vB`gzU~5Sd2UAZq%=$%oO4rxL)|2Q2vnWH4x+UYF(f)X5bxBN<6!sC#tmG) zl|1hPT7KuY;w1EhBw%YR&{gpk!W9$-vmR0u$8EC?vl~Ownv^Zpt*!f%my(t3maU-f z|1Zwt&lMLFvsK69Y!#q1;K&&Z_qs)Z5C?xCP%YHB(amwo+|Q9azOs`I`E-^tnp>|S z7Jwm-9)}%El*6YAhAz+iNB6(q`F~SbJI2!^X!>i+T2728VTedZ71v{w65l-(vr~)V zVS6U=SWMcH>~$~EwpHhZ`{R7@nn|uT86M{V2BlBx?K^O~-dQ_3VPjQya)Qbe) z?;g)63S`$Gx}LD!oB3=NGay0Xr;Vg(hK<2yx^XHN6FqFuXzv*_{p!};GM&N7W|Z0U z21^oT@z9hb&W_D-ruoJk&AeQ8oPOB@sE^ph9^kR~BOmE>@btmw{t{e>mzhdA>#NtU zQ-&2D2U5sL71S`%JWy)076>5>+1?V2foHt4L3_Zw{a3fxaawF?EZXWId?baUf{va9 zd7BDdq(0s(h_N}>b_NJVN%e@F78F8ba->M~?=)i1Uu{^-;&G@`q(5S_rg3DwjvQ@; z&kVjWCID}19+^Cmz_TSn+WRjJixp!-6(#SfoVIGgDF(84MHoB*KXkvw=xqhX2y246 z;!f3-4YOMEu9+sq8PLzYi3Ta}z7YmVh$6$ma@Z4b+M zaHVPwtvK>+9kO@O6f_h2S=P=)vAI zJqga$IziP!6VFgz<(ov{ryP}yDl95?#rR#3QJpxb(1nUq0V>s>R0m;1j#N-8Lx(h% z$R+mSz1nW97J>w>WNDKIGYT`T=^~?{&xxc$MUbE$N0pWvYuwIVT6v8K-n*F}A8IAJ zyzA5={0>5VWV8JVJitsPMs7JjRE*D;irjpt4YcHjy-F?L_YM{=6c^iimpLVwQqdss z3{FMa*M5dP6{P&A8ccs7=dq-NST~c{E_dPfOCqyFpl|YnXX~X;JXA1g&uwcv`c{lQ z{|KNDM*ThJ2^hy3VRAw8c#E}z2QyesT~~?5KDu_-*LsdF+$xl-4#8t5UmLeE_yAgE z7dG}vhB%_d`PU^M^T2#GPsMp>ihX+gkex2JM+^G-Uv!HUW5Z`e+;W&5{c)?a5=&06 zX{}4uu->mZKzs6C0|*Gl61Ua7$;8qDi)J!E-xm-gN8TeN=vj=ZtWaTRbyP%M3fy%7}pq$?$a)bp2HdqCjy4Zxl)v`NvXWyPsxOONv{?tDlken zWM36zkBz^K{x*prm~tW}6sXBHc&8AeqJEPsYKvK`V!uNwzwh|}TaGa9^(g&110Gz{+> z3-Z~_4{}P`%IF~n6Dpo|Db5{BGP+dW`AcWxD@gywacSe5$|fOJIaXw1cvVOof{xiI zZ-$gv>odH!1);a`!cDiK1?;MmxahED3?;F_V@QAq1+UZ5;) zsNdqQ;S}q=@RG%&c{qaZGudq6e$Den4$~Z>$=5_UnD^6$(j@rO`v&t2n)HF;b#$?b zJW4j1vuWfPHv`KdK6joUbI{WJQ-`o^1PcbmrJ&ccW3u;597Q7$ByH_y z)utJJ6YxAw)c5wXbjHNNI=LJmen{&2=)?mWS~I7cK0;&OQCPb^SHOVl7IaU-q6?Ag zBKvfL7f{)3nL^{ zvt6-isT}i&;7fw1@y|D7TWFnk@{&FzYNEtc&d!lU8!ML`tJ}Oy-u*gQeE&bpyE>WL zRM+xGBHR&0d=qS=f%BMEFO>eK(cV;XwX2N-lgSZ=^u`WiTQU%fD|@8-tw$yDe*S>& zD85HC-62QxtV6Cs*cdP4KdaOs3;uHtJ^vBj{UutWoKj-Lso3QK4j^rS=vqpy!JZJ> zHeXD95mjio{KbddifMWxaAO;qs z>@PBjADR3(#Ep0q5c)@kN3JH1SRUX7O}(4W0Gsn9*d5A^oc6*(s?Q{fHl-0UYj=6H z3~17q7*mB=tFr4aGz)3P3C5|eB7~PCP}sSS9~}t^m)yWAu{Hqs&Z&o5#TzjYw+P#X zNNuA-+@r*eXql4k?RR@PQEe^x4rR*v%{W|1-z^ULpH34 z=2g(_*@}(g)^v>MvQ7P`&!!fRp|1B&*TLrAa>%m_A~WrH4l_P9sHd;NebJo26$!B~ z*$Wsk3$@nYzWpK2yM_4F4qnW`lA@UlDIg%{2o#w)D9sUZs*1Cv=n0f7Mz1Ca`HwFQ z7nqVQzAT<*HnZkZoK}Jgr>a~b7CUI5ENDBa62;VcqNa8bC10lILp3u@WW`jfpE07Y zM?YyWlP-jGv_8q5ef*SA#|r`EZbP*T7>KN$hq%#L6>7&8%->-CcqB#hOx_;$TR#pp zubRS2u&wPl^ISo^X#r&v5~_?~?_|TR*Mr9iD)nCCCs$*y$O|9Q*OS)!XX|`komZ#I zw4TMhfVI>aW>uZ3Jxtw71_OK3BmHfiKe4>;uYaEx=w5IlaohHj1Bl9D9a5;dfh*8d zkth1cu|&Cn4UzX8P%SUZlkNYG=a{1Zy^k}%qERfJx$dZ|vRpIJ<;7TjhwDbx5c`>Fk7(B0c5 zPc}Dts0NWKYkm4yz4JBuCT)Acgne7NX_bCa`dFl92cWJZ$$-Ox;|Wm>#OoO=WKf1$ zWD-Z?Tda%;<$y5sM3Ix z+F1tEiIWoLWSb3|%J->|ouXA~0Roy>gc1SyoT(ElISs)t1jpkuJj}yQCMo!Y8l9nk zNl8kg3N|x8L08Y`xJcGK^1QEm5ig+ ztQJYQ&~4pcIAI2a_ru}HQhGGYZZ4w{!vJHKvWQqEv&(gkfS5^M;6iNVek zcMv!Kg%O~(AmMki`t@j&sMrP%d}Oao-iShgQiPCEIDJ$JG&~$DnNaG4Y7i@Xe2%to z3BeKvyWUt0uK>M4R23|;zLt&^n#Z$KwcaGg5DyCE znpvFY>70~`$Ic#Id>{!c;ngxbLtzJ9pNO)jr%y=|ywFt2l;>B3 zrlCaX;$qe=LbLnL4{%PL3YdX_<5E;08XN_TQb@M`C;;2QPH$jO0s^_IE9i-CJYP|B z6TBOV4Ne(j8Y$8Ws!uC^t1MJ~joJy%#}*0`C+%>^!*?TDhbad#vNeD9F5$=h_^ecO z%Hf~+f)SyBY7vI%Cm~UIbdIJv)L*+~yDU4|`S;?fH_9wG+05SD?as~tCD@yIJZby5 z8SX7qj5Hm)c->ExzJ*!);Zk_OM^ZPh<%pbU-p>@yt1{33ruKD|)G@Ak+27(Bn7_Cj z5CuysKhv@Cj{B>qU201<#IbZvk@BAutRS-%uRKxo8j$nD&xVM>BUyeR|2ehXWkVCA ztvrrj#pV0~*fNqS!?AATGK$cUt}wVe{pTDshP)?qXz`%O?_%Mzl&9t|l!3>J$o-uF zrD-uEPnpEi2-dIiJ;qJf=&F>dFA9XoT1Y02v4wF8|6;HOV!vV_ga&?av+Kg}(+s=W z%t7zq^vz`L;MZhgyW2bsHe9$F#bpj3?P1GVekA##P}lvT{mA_9vvX&FfrhH^moHVx zX!8LdajjV6f{ud=YgmCD8HIk@pFTa1DHYc*XM6yH)vk0Xt-drz!ti;=)u#E43is_1 z3PcVaWzf6cZ&6f7s(>rqm7`^uGE=;&dWdy zV|VwWS=LG9s(!f!1{kTJyaN~6njg0I!CTZ@l1D2WO#4U_g2TpOhGU!B0GX5Hem%3_As@)>^fpfi+-$a zwbu+o=N*2ID^8EXpaumnyLspY;wLQ2azHZKB z<3Df$h(o$eIrNHf35txvE9(D9+eQM8N|!Rya)qQD6i-u(F3fdwKQi5*W&j9^rN5wR zP$}6lwEX-xvSbgA3epX5I_vINN^O%E?&OM1`^9f`G;0;B4fbWnHm1&y0TnLlj6!nC zmIDnW`1YrJ_Xs2x7gjAW{fk-qtS^YYdplu@061QizY@8mZI$)UX_h+MqjurH3lOVI z&srAJug(Dx-by4StKR*zy7mFq*O4Z7F3{agzgY2FttcXENU1yPTpP#VWmhEN%KmEj zf55k}Y^e6IT&kk2kkBEI%Sq^#k^O+VZsiA*Rea~1#*F+1%#J7XhXOB4wX$?0+y zX<%|dA~o-$T@=#c?u|u-gV(>|#=f|v#JB$*d0ngdHYQ`&Hk@gpB+VG`jDYG*xjp$? zxhfn!6QeZ^Q4-{IUw)(wgIhlZGIhI3JoE*fJtwLi{^z+~|FF5>WSN5(ell$Tp@&%* zmk6rLOvf>^@?t%N!8tZg^O_J{Twnud=tV<1ca}HHguJ^w_*Vz#P(e_VO1A-W$a|Bm zWs3Q4BGw&8a>2LSGB6R3;_k+E6&aMMRQa~v$16mTc^{~J(^b(9j3ICBE;u`czF_+y z7^_wUYa9nC4{;h)!W5iUYHo19ye6DBYp`)`A!>?KKeqCa??yDNzfsq07emj3noiZR zU`NeN`imC0fcE3P0p5}xI5gW14@n;8*`$@`9pQq_60sE0wEx9+QDc449XFs#5me}VyAr%!I(fd-Gh;FrtO$x|Z$xyyG9Y##{O;n!dAbFkEh9cm|*{;S$l2 znQo`OD)gSoA9=9rOffkS05g@=DAGbq8y(KRg)_+mRPeYP6#4uQ@m z12?kCN=ePWw5yMu?jByzf@eUJw3x^dLmk252@ZR}Ga5Iuvi39dR?Px*>E*Qrb!FF7 zs#$^D#kQKOAsl4dSo#^kDj|VC74}HO^70^`?S@3~d!Rgue1n!`2r4B}h)XnhtEurA zT4+Dk`LH3c!%C}-+?8RKCkhne8g?7I%`~mV{QUEwjY=pJiWvW+ykk zbD~NCTdClnu54l{tUB;o+!3xeuiG=Y4|2~$s3JFw20~8X2$p}5heQB{ju2!?277;U z%OffYzXa_(bODnAX2e(yGj&Gs^hMZ!0hK!HxUiA$Lmez+%As7_aZtG_NO~74@p+LI z!VBWxcfCg1dSWuJI*Kc-5SGgWS7Tw_N@P^Ik~Fy+5d%)zbi)O5i%%fX0ri%ZC3rD1 zC)!|#a+u(Zzu~Gw(4cG}8&@Q~TLgyKLg*$luf01C?^4b-NT9;vLl`jO`E9Jjc%8Sd zLCs~o@0Q_zEb7SW(@)59oPhrI|A85ac+7f-xmh@j{*?2q$kg2n7pGTXXY*jUU=q4M z*r1iVDO!+_E0uoN>464-D=W2Xorp)k9sK?lg*C4)d4`tXz@YaRmMD0x$caqXn*OtZ z!zwPnVkA)bEANSRmEL%uM zNMUD=)i}5iq88$!FiKmmlKt@mt-mWDS2+mpdUJG>ZX~(mx^Xy?MyTg#-s8O9amI^{ zvv%o1u7fUw24E4ViW1spJXvs=A^H>?u%_B#Je|rkfSo@Z=e+n5WVT_8z<3&SzoO{< zN4_)&tx2~CJPI)+F+MsT%;3Gbsc&50iMdOnAuCBDO0?-b_IA`-K`@5SmnYmEUr-@t zKVr&(zYj;3rp9NG!OSA)iiI+<4RYl~!jkln_$RlOoAM07#$@B`YF?9ZNPU{iLiZz- z;YxZSU4o2vPO0X}<@@Lv&!Gr6gUr*z0^rDq72Pc$d-C%>XJkv`+t0cbXd#+dBJ%=; z96J5IAYEgD42v&an)eOfl-sMkW8d?jITgy6vD8gm;wcXBJ`vjg4XeZFiyywT?M zm@PETNy=2L1lv5Zf1O*y_IO{Pv6PD1o8DJBLI z_sYFCZCweyQGMHGIE)CsLPPI48KFcP(HDr0Eve=ylUD~qzqNy9MCPW+*AigH)6^t> zzlT6UgeTVC`POwYQ1+@#;1#Rmx&$t~S(mR6hz^Kr3g-r65qihLh0`9KHcVHI*b<0J zjF;Q0bv_rGtpGmPO|YZ%5vQ2aM77WHeb1KJc0ED~2lK~rIm0y*Y1f(zi4Fjc2aG>e z_H}HQD0etFmB0wkIx~i;m9t{q2UHalmEvGe5nJ#w`?_zvWhsmkT1`9AC0%J|rBtn; zFM8Kk=n8_^zVqE3uO^7Qr(-{BkFBDyMv_?g-9P{xR}+~|1_%(0y{Dwn^YrG5!t~|k zMdY87VV?oL3f1f~{Az+%2`hu7QG~`k>9bY|=?Q@>9mVzY+hKcdu-3V_{m@WZ6OhG8 zh(!fsAUvs&z1e`iY{gtBpCaB4;7l78M6~yuT1B(hVpCyA&^#zx|Xp zhb*Er^$6n`+Q3K3LxBzn=Q z>@pXO0PzoRUf<~6d*dL#epP?%DNg6xXMn{p@q*#JwhI) z{v{K{(zBSXF|tHS4{ca5%C*>Lp)%3de!>3RL5q2ctEFN&_1Y4v$U*HUlg#74Z}I2C~8 z(Qn_mhF1WMVl|g{R)7&R->lx;gv1mwNvKf@w``0E_o>m3ISLkW2-srBsfI9LNm5gr zL#O#MyjupQOloFT8kkVV;<*7}hl#K%zoxM7Z5XvB$F!J~@!5K%f$+sjY!H8H7&4fw zZw4tD5*o#+g-CF82k|-C7J`^2=*%|VG;ov)&5r}xQpg>!YUGq~Td67nV17Vx3eIc+ z%w-Ab-zv&Qo=jY@Le}E<0h4vLx;w~_ zQ#2(3Eoc5|8qc018yOmR_YEA|EZOpZ$#PAG;c&_U56SHVEOYk@pjqmHkPG1JLHxv$M#Ewao@GKdVXByM z681Y)0h>_5w<49#XhemMNaC1gLeazanBk%ivX^3VY?cTqA&omI^61dVa@`>ZUd6lCJ%msFzbFq|C|vd^ zDDa4H)y!oM^*FzBZ2mxJP0h2lvBU4*zDze&Ht+30qZ4(U#04C+5^mIs1W}fwZw8&|-P)D;If2nMP7B1DB|)KcIy1xAoqaN6J`29p zIB#VgiD5Cqp-{V>uj$gaq5 zG}Lvh z8b`R7TRQ7%ZiviQhM^fpj>FvbI&a?VS1@43k|8iX_p#P>)`r4MKv0V5cj!m z;km^(>81n);6L3Kxb>9|+mUSR8`7&)eJ3Uh^4 z?e~z$kHcpE4oaPVm7r8!^!ZwWQrtx0MRhTx1%jYJOUh(Sj~kXUPyEIX zHI1F+rNA=tl?0_C7x;?kC_YHeFc3uD>0y-^@Y|3Mh2dCkCj_+c#VFR2roao65O8Hb zFn*`!GR(RO2X6*1c#|cs?UPGN^M_Kpc$1G_gmDN(;Y>meRF+n^~Gz0Vqt8~+<0WXZp&N2y2A6-fQ~{q(Q?eHdH3T6(a0 z`kwWpftW-W@!m*w-J2U107EA?|6h>bovc#K+91Oww{`w^z9NY(f7ceS;j;YeaXiw@i`M5JJkOL$Rv(S6Z3{Nzf<%fsULUq(D*sgbQ!RB(IAQ2 z>&~c zxP<^OycsYUAK}*5pUlFGm3^Cl6udVyFJ;RlpwN%4{UaA3(u}wZmh%fpn^69hf_}w7 zkicC!!PweLP}2|_6H%*BTQ-gW>QQ50>$9)OyiSp!o9P~Opg@pMpiAVdkx_Y|a?ni{ zQHGVDF&}VwV1QX)*(%F~Di~!8)UyK#b5q}p%7S%N%4Ap^7t5ppp&e44(HKu)GyRY> zikoNw=bafvY_jrRS(@$~nHse?Pz~Rw9SW@b0=zam=pRxUBw)Q^h?$JM!}~i?4Qf7> z{G$u&>v(_9@GciJnnt?K(}F%w=5eluzp#5J)&8Ag;#9~Nlo$}P{18aGh+tZTC$Tn1 zk7*p(#u!MGk0T$+FJSZiV_*@;+T>*GIE44@NN{rrNU8g%zo*j)&MRRyv(mH-W+t~v z2LYhwKzemd>j1F=Kl1x8D>EFRpIcA8APN5HP$3kZt{^pan)Ctw=MV%6VfV0Ey@|qf z5U;ha%FRuct3|zCYi<1@;*)}Sdn6{A;WsEwGy@>$!|k@gFWkwnU+ktTl->LYE(BuUS6EMMPRbax zS2a~o>_8Rn`RxA`MAQXJ@?G`y9!nYPR`x5D_YEFE{)lrwDi49_K3ecX>+G4dQms8dL%So7K|EeX+I=c8EjRK;9` z6uq(DobnZC$XKa%Z!+#K+K;V5C_&Ia$S5m>fFGtMCr&z$)0B2{ARZqFTO)w^(`HAQ zkXIzkADv`4OPzBL%%g_?6{7!az>n^koJ?;B(bKQiHe0Dc>lR8QDGQB~+CIav3a(`X z(>9JJOOob?FMeC|*20&cAJp>y8H}zZS#m}gXxpj02YQmnJwm?E5BmzTH}14i?oUzA z8jQ0omOiLbE40c0MAos4zM3=H`@U9s= z^nM;j5e9(@U`_I(V88gS8%bZ72H7sFe$7;|deK9|`o3H>j| zqaA&_YjP3NT1K2E0D6o?rYRRS10uMuxGG`^gw&9l$oHzW2Cnk81luwrCCqDFGx&8% zMG3k_C(X+6!EzE&{-gWfRZ6FSHGy`;o7BufuWuLpkuggSurymCju4Y4r(8G~5^FW0;K}K_vwra3YgKg%^R%>l4*7UkW5^)ur zo8>(IgMJBrE#Ws?#0m&`pfHMs11(sEG$0D3rUs4D0{zlREMc{umrz%j`d$P^yTi)< zwx1>5iC^}OSEdh*>C8%o>O$0RmeA(aI5jBFbjCG1dndY5vE6Bmkn`wIrsxF_3t4S1 zTf0f)%uK}uFA4rS7KyR#&qh#(k}Z)~f21N!s4M0m!; zy3SXNSC4a20H=X6Y9&Rnr9DDuTjP>KO|V!?L7Va9ETwVMHUUqjAMVgp{CWzf*Fv&! z1CDOL8Lk~*=`XVvNM|V8&yN~)b~B_E(7bR23^UCQ z)=hdTN75d6^0`5W-8mWyB#wfvc^s~pC3XY4M?HjX1`cmz7=?{Z2Z|@=B4r{-^UOSj>?))FR-l0phVB5M)+qP}nwr$(a z+-cjkZSS;g+qR9j&plsjuX67nn1xm7En=(@v(NuwD^8mt<^%zI^#5UeS1)2Q-mAb- zyipU1QFeP9x|cmBIi2ehkrRO>PaW-jiB;i~46nwDgz!Tc#V~8b?q;ZVJMG)g9?OC$ z3pI1LR009ghD}GBJ&DAqj&m}fhu@e+C!zJBlg2~^5ZoPN59xYj~F(_www{Fp`8 z-894eWv&65TQiQ+!5Mqn*;#Vn`{X41&eH^pL_>mFX)tuoBaIbs$AoLLfcbmzcg$vi zb#M+4>$MUKwVb}x?wVVSw8LonYd*Ilas{K6PyZ_00s@U>V)-}PkHrO@+RVX>?9r9r zyJW<1Fs73IYTs6;X@8(mg^xx*Ns`kj;m{ILT=c;@b_-IuMHatPJ;piF7 z@H0&G54A=P?;Z@7ZhgdZUKn*;I=XHDZJdGMKyWHY_OBC_4>SnnE62VEP(H<%uY?IP>IZK%-N9esr~Act}o_DlFpn zqVg;HyFN!_S-$AlDXs}Ju$vS-62gdL;4kXq^Uz2*44N7Y=?K3a7AsZwNd?WSNKfq^ zw9L2o{7jmUhs#v9^D&#J1Pd>V3O#8!7sc(Aai3BAO{R#u7+axvwFQ5tn4bt5a9 zuOh23qRBnUtUGzMh49m=Upa1nu5@ADP7W5Jo}mH_Ea^m0v@$azmqEO6RQI{Y8)*<1 zSf)vQXC*?=GzyWr=h*fD_A-#F2I}drW{YVK_)QZePF*z>m*JrqDc&?GW^a&TRI40L z5v0{?rLFvC4n(TbCX|PQUF`sv|H996N=)NWcU>22<*%ioEb`Ea0c@o|^# zwC&`UOG-b$joJoQ+OGapdBzp_t*x!JRyY$Ab_om+M%}AuuA$K&OH&=A*|;- zGfvF_O(@xI%mNKReaOGXT~GDj$6Dp(f=WLl_iVXocpyPbQ=$lx7c9XV&^>kTcCxG}$91NS&0Qv6_fbw$z{E7D zpH|)p^mSICQndCh54NKE?G{_EDcv|$c1%#_l<~qU!zxWD<0=c%Y#U70A$Yq4qMl{v^hVZ^k5-Wdz`iL3MPOQE6ex^Bqx(b z4LX6_BUMrYD2)c_2lk~1*KT8H40?Zb^YXcrIgF}bRm8;alZ&<`IqbF|rSQ;nM;{suJHY0&pq;q~BJVx$wGcWFN zL}P5Br732sAQkoDk7JQwOmBON-t zgG$(37-i-Ge)P6J4i+tNQ(%+~o@n=DHu)RDg2fQ0Rp7AWzgnZ>dp|LA%vR0`~5&>N*RQAp$@Cb4>L1Suh=o7R8`hB>TrZf;kIAqv?ohHwFog02s)i2I~G z7Z&wxWZv*`U;OgvZu;S}qU?_Qr}tUp6%g~T6+3WV)~9shR0R?!63$p@<94_)?waki zvOfbQb6;rL9&xdofc?g88hf9-EVc z`3eqW$7>Hve;*hF1=LjP@aMLdZRyQsVQoXCC+w9~PcRS)PJ@|SU8I=Z-Al!d{NJ$P2n}vFB ztG#qU*2XNNKiR=7E@+Mehp5Me1&Q01GH=Dw3ZN4`!3Z+<@5x{TIoaimIFV%rBKA?O zgmh>L?2O&!3mZs9LRv6`u-b-wp(9q^IubN05LvH?=r7NC;kIUuzJcEvk2VxVyTe9W zde2-Nr4`c=F4Qs5&L_Kn*G>o@+3=V5@R5`JpZg5`&VgH@vFBG)pnoE6I(vbS#JI9#6L58zN%Prh8%^D{WQK*w&w3DFjGLHGWe3o~|s3GNAJT}Rn%@IfS&3ZQcKN$mF33~>#Z=H_z$w|*PFArk<` zR5l&`V@F%A_!t zs9nQjLa%^o{2wRA55PE`>@I|%seNIo$%_=WU{nkVbu-g z#5Pw|d2RVV0~$Ghoi%&_tVUFrKHbpQ8t53G(|OOx|0M2;&)lGWim;NbC_C@VVQ4l* z&+80uQ!xe(=hg86oL{GINcG6clq#0!m{g;cly~+0fP3t6D$>H_pq99-=^9Phl!JS| zDu7zlM18WeEaK?eq%eyY*W7gwVga;RQx$LM_1ezN6%5x_2KV3AgDWT2 z08Fc3lk&{JA3Ce{96yj_0h|V0Hi;6lxCC4N=d$H`s7pyYY4tDOJ$%sH?0HvGQAByW z#q18W!N&MzC!W(rxN#1tX*OM&xKRR{8)cQ2KZ?8y#=J z`!b*eKh@Gu2xvIK5m$*=Vfr%>mHspLznP7jk$*I-6%2^zjZ*=+L#`D~bsBmw*rXm; z-_Sh`D~wq_alz!wL$yPJ77uY=h%LKxUD+FBC%^$~B-LkkBG4Zq82iPpQwRSPwFyhy zF&BV_^yWx5%0j6G=ILZ)K=WxZ05f~^6!LXZPrXE%v{=>82sf*=Zh#&HsM-;Y#sElT zEH&t+Rj&$<;Njt-k1bUCqqdnCu|tAUU0t-78QpfYNXH40W6Q_ zO#WJxP1G(nkkBeaISq8@1?>s&4TjuxNH-f>pT&>3CLfo<5&~^LS?tOI6M$9Ch9!>JRpO-*5zM;BEZEw?Ogstf z!iwd4S%BcUgs?T*0y|jT+Pjo8TzjKC|N1L8pjo%UQ_fq&=-55VYhm=__7UG#7uI6v^l9aR>4WhRrfJJB#j-#N} z9A))UW&fDwBBM=kUFk$kgGcc3XbB_y zF-3YNu}f)bvUH3&sG~zR2G9)eDWZE5k=#mqE6OO%U9^3Kx-(R?J5i*L+X&@UAmtE# z7MhsjV_=-md5B#lq_;N>N^@j8hFLoAc+?;HA*`+9c#ayz8bv)%get9$PRkKCIfz;t zyTPiF*e(Ej12g#3^GpuHb=oQM>LytAPTZ?vv;r-tq3}M-#W0%+Mrq?k6U&!sX6q;7 zla{kwyRsjrSn)&V&H+kaa|7GoOSv|J4lNl2SVMFdI-nB4AViv{5*7L=AE$)+Ja2Iz z3lZy?OK8O9zUXSL5r%Hct7H(j4v-?gbeNA$_N@*{14l&bWMMx8nt8vM%_O?x^Sy^t zJ9$A1OnSKWgIA6-m!g&Q$pvP>>3Eqya@5g<^tQRpOLW+2gE6$H_A@?~#@dqAQ9<{d) zTANcDfSfBKV)svPOK8VX1U?D;Vbc4xlMoz@&ezPB`bF)r6F%N|JlIs<^!nm^3x?$FSVK*=U`-13SW5(I ziC1Q!jFEC9jb1u#`_g#qvf{oLjG#Ix zz$;dJvNqSN3b`a6-D<9?@MH?;E%FHcpHWWe6a&Ygh;Z7y;|b_M>$fOqZPv|2!hJvS z|6%-p3-it{re=nA!5Lo5gC-dc{@;7)c5Fe7S`VM1>6+nLirF&3Lob8aYDJr9&&5SU z$qR3-J}M3ukw8bUbWS;jk5Xr2h}+r3=H0hMi*?w{dCgrX2AfH=d$zvKr)Pgh2?ANF zgiK=zGr&zmE(ywYWjwDs266s++ePJ`=V}$i5yC;0?3dai;O1P%TKBjqWnbcQCKx?6 z!L7)59Xy)!o_q%LBR&!!D;nCeo$alVyCj50# znYl>g$(GW4TS{+@D*@n?%nTK2k;gb+6bD3OBjRm7d-*hp7#MAtEs;9HYQfstZ4v*a zJRrvfJBpYf|9fY{v#>gx5mAqQozobMLS;ato9=;zilS6HTVBpaEPd)Qc9t2}!hl^o zr%=e+wRugC*CVYqEOc*Zv;{ds;xq7~9_EeLLdEYME^CxJRLWS(D3E$zX`=sa+z&kq z-$7&m1;V=d5CuR_?bmvx&29fouztpLq3+h+J?d;vHC+dQ0)#A3UrB^bDDniWbTF_; zLbF2_(?#+(V~9q9JO#k3ERQB0JD1gwIEO#bvGjMwq{h6aB1aAKWDijYQAZWymTIu& z-jZ>LQC@HTn#{D_PY1)z#tw2!)w+s-PDU$oW~%63OiNN zzI3UNJ^!&ivK(>Tzg0nVQjmE=qOd-}d)<8i`(cT{3-6~S@tJ#g#-z#yJ+kjk*cK!W z7Hdg|aebT_WMdsK1n;sa*(h1wSvS6EiOUx*gC2u}Mi0+fGgyg<@In00DK%=6LlC=F zawlPO_~4C?{;^%}Pi(*tJxV=3ZNtM2ZXg&hh5X^OS|!n3Q>b$k)pP_nbckp2=q9jf zh_iAc14qKV`1JP^mO>vUB0+MKF+0cI-9RvVHz8$wePaq3Vn2?vjUwnQqCe~`FZLC} zK6)}zrzvN?H^;Vx))fumTrQnEE+_>DuKYvuXI7ok@o)Lz%GF~fe;Ga+8qrP&*P`2| z5$1BpJt@RP2O}gC?PZPtK@j?=?d~=0$0mkS-v>Z10Tkw zKB$pU`sWM{D%ke+Ixb2*wLDQGRLAc0zNh*wQ6iE1VmMhZ2c-NH@bMzX{7FHI#xsAU z>Gxg5x`r_0&+z_6s1Sl1?tV-#9Sb=o795hC$~Lob)*|~fbs`CN7|P(rcDz~JR-Vrh z;n5@woR}_1yEnVV=XvVI8ghAj+SG(=)>MB{-Us_jbOWbfve!=~JBrCHp;_ngjZ4UVv{X4 z2np{hQn_O8N6as8pMYQ2?f>xjf8#ttcO_Clod`sX(yLs4X^0EL5dX$3Vu>^o56XGG z0!~)~nG5=+ff-(J0xmxI@N1L)+9{>(cnQg$O7CaEhommkq7ebI8JsL4mU z-R~SdY$VqoMfXOlRVi@LnwOZDzfOi~ubbI8*ydou%)6(Om%cTOc$9zyS zS?LCqd3zN(+Uu72>b4hHvPPDr{EO0k&?C+DiBC9amTyYhr-VA^GTIoWpo1>j8%)w^ zdG4*q3phl64!>J^8LP&r9FD^6HQ!s+1E|18Y=s9Vmh)v>4B|jh3#mL1*JO9fy82>) zQSrvcxY7Q(b4Z~gMOZ@WK}Su%0!hMU7lO(UaYnQH%%e|lcw^>h6sTlM+#FEDp<#gk zNwE6vd^B(bs$`k?MLlquP5cuyHW`jLsJD}5X)ku#1k{&<95cc}697CZZ`ZZk#3EDz zdC;0nnDq7tKhhNPhE9AVNT7+kKK`@0}_Y2^qZ_M zRjiP0#xYr+a>eXfK8%FQth_;F{{=bY1A-#a-Qa5KoF=?2KBdbm`^=BtFk`E^(%{pf zXh%(I0BSryaF+XX*#LCF>)Ktlq~@;gSonZj5f1|BPz9_kLOr(fad93{aHG9NID?p# zn=zE&snLc3Z|JeTY=)7)M3?Shjb;rrUWj1Gs(v=Ngmq*$JDtB6X0CCfU)CKzOG0 z9bd}eRuom^8IJ_x(HnJG8iumFl~L{zMfz?;3(Y4;Kpr;7s}0~{6kIyMqac{=AbhD5 zuhr1i!wRR^@QSmb+p1uhahOu46X(a<;r{Bvrg?xeT7(o+>Y}6t?W2P)mn2r4nx!E_ z7JCm8&TW{TVJsHC#F)M9b-&|qn4K&%BHNCf>U#p9BVbrCvOLVyREBuQ&*_W*5f%c6Dli(qT z{jx=^ud{_S*aRM*t)kOx0k|0M$NnU0)g^q2!Yf$Op2tII367^137QUog7Qk^T z`p<8d7T9sm6VLB<{%Qj%bIE~+ESu*HAXcUe5;690HCx?g`>`hoP!?NyrJpv&EQI4omi=%USRY zN~F_dbXeYK%jRVrX2X!dl@V!2O@8EBNOuC#o;n9q{-Ao= zcMXIKGISwJh z%6J3>Rg!w`z_=buB8W2R#cHGh$=^Db|5WjTa`WOx&PO9|+TqnY3~c0xB?%S6&bt2> z=3nuWP(h<{!aHOZ=m6i0gx0Y2Ty_F8|83sCx)s+cnpw`R{I?micM)YUYA3kZw|5YQ zNhv!mD!5T+`?Zvi*zrGe|J#^1v@!Ky=8Un_8}p|Sh}D~rORb6;F+ry(8bE?Y@GWft z3~@sfdWyO-R{Vpq*Fab3)G3e2k1T?x&ZA1VW`EN1>|Tg}SrJ*s(3G;-S?UnMkEg5| zZ4;_uEoRLOcuR{d)?`MV|JJjI%3=*S=eujxhrd*K7gQA4>aSa2M{Th z(bmfzh%kdVBU1l!sJq(T#b+snkA;O^L#va7$08VErKD|PoGJp~dVC$JOeb4?J9(-x zQd`E($WsUCBqLW2)=p3AyO0DBxU5-21ZlQb#piHu1^W2)A(-nAokuuIrrw*WvE>cn zh1V9*HqF?Eg6Mx#$uX=Z%M}$$umv@Nwi#;n9%c$dSZH7Nv)f?&!_LRGCD&#n1Ow8M zg>3sV&T-G7fE`4kL1nZugH-V>>QyQI(IZwPGMc1R%kc6C5k~JNo*EQ9)lQuC^Z_y| zXWZ3b=4Q`Y@g7@O>buFU95}U64ts&hl{+AAT^hD%(y#;QpQF|%iU$x&=e(z=X4!T9 zZeIuCwHX(PjuG)-T(Yvdnl?se7>Vw#4xc}oW`-7Vd3ch_sYiJ6HcxKW^K#yXgztf^ z$Sv=E92#e*BU*i011ttW#pV#Y(OPo;LoDjC#=oOU^4hoDXXbQ6r+aRkmKvT4)Y#Cd z;gKI@w2@VrhZjjJ&TK1tQnSC!A4qi%x^Ekn6cp-Q)yg8#M;&yS1gPdHMbZTcviE`Z zueG`TSTlWv0 zKZR*lH=TY1=igwyHivd&k7?m&L!?>@P<;Aw8WC;SIhN#d^YLJks;?OiLHU!*1CpBP zHpFP2;op`Jh7kf}s{I5<-8QXdgwnB~y{C&L>Gl|vpFeFaLRy6BIf+*^T)5Xg<-e)J zAJU*^jj*>J-sK_oy)%y4V&iz4wWDkR?<>Dj81_*P#2tKw_h8mr6?0~wD;%V#Nx<1V zi&*H`+<9Wf0$@X(akP|r!%4GyM%I9fhd>7i0#eYUCO``aPQkv!xL!wKhBMs8MFonC zk1%lX!|`*Wy!@`6mloZSOHSYJ#%|4Vzw>Ln_-=Ro%FB{*OJsBBI9!3?=;}5E3xsd) zMZcd&IzZ{x-Os$;eCg^j#5+^VLC(!=JT=uoumQG6M|7>3hRpdrw4FedO1te$ohZQg z$r79VXj%^0%!HnD5Y_0X&@>s&*Ykk#iD8Ge3*aO*b)Sn%;I0!GrT zi|5m8n=*e4aA~;X_)puh)Me&rj}@q)L8E%pPdo`gqY2Wc5p-kBnH#4Ygn<%7ZMd1x z?3R)vjgfhUp`dy1)!T*M_mLT+X)3=&ld~a)74L$GaSH;kUOo?4B_h_Xk*+8lkaDyf zCsU>#t?Y~_M7nRG<-`0HTWQA2Dis7_4cgz>GfGbmJozi5qg*zs~Hxr5tOs4UXtcjTg0kOy3T?KM_ zj8GdGV)v_7noLrn%}`*kaU+*#W$Vs%hAyY|PAyhi_2dq4`~^SF*U|2crAIA(NvqYd z-Y6^tZVtqqL?OYQl)4S)iCx;mJGd2I4RY7~&pG~oJV*m~s$>-2TfC{r@lMYjt8WQFB5M2OVbi!l1n-2X~N zOe}3JU7Rfc$-B=nlL7E@rg#E%(M1G)_A`PR*v{gmEhmqlEhi3;f(%9|s$}ZgvBXqg z17<;y9xw*h_RD5Tn&Ub^djX|!F{zV8i-WW?k(V;tln9%O7LHQDW5PC}ek+i{rB5@qFcK=;KbBbs zGg`Xk#0ffJ!2R(7zUYo_yBPd~(N(Ni$0bVKKyEa?zT^FAWTFn_S}6UYa+gt|6s}UY z1RiyE5m5pmHwJo$I0*quQ@MYsnqORzqrp>{fDlJJU5DhQ3{S!5xuT_=)rThB>fpbc zd19r}E(XPr#X~H^@?Sp`_#D+1O~lyZWwGJTyowB{Lcks|$fQUrgO)SSbH7Mm_e z)B(!2+K7W9{2 z>FZVr?G-DO%3JT4;_$1CarfUBMK#Y6vSP)8_3_l!3&@sPtRdrRmR&8**1J}=WfmNp zyfBFafaq`>B7#My%^$bQ3UoNbFtHm8(w*Dq%xsFZr^0~4m}5?Lz=9{Uk;KRFrAtV> zZ1vST-uK3hG3cd5n-Oo|1onM-cJY2P-zwL|MQ8hAoU3cX^MZ9tSY5$Y8Mq(9p!?lm_ zP7U6SgcKA(PCL1Fl;RErX1C0o2zSXPhV78Z-z>XT#{LNSGl11o@Y>7x_DoQVk&m6= z0bVtsajigCa7mTqRA3Nh@F3Yi#0O&k5*}lDZn7C1VGBr^;snXS6A&qUU!%~oSwoHT*Ht5O>5gnl$v7m8lJ%w%H6<@ zB>VcH672N^k%)ez&ccU5p`TdeEB;-LlQSCt-fa52mGnVZwX}Afrb=}U|6Sx4kc?me!H#-kNL{msx)i3l^Mu-RBkK6e(G@wl!hL`gxM;@H!GHFvh;RAQ0^usCIP~RKLR%e8 zI3B2DH^u{3v-qxx-Ge(Ip@1uO`R?oetH;`e)+s>?2xKfb}@9b-x-}3(6u?q;I{5Q zDG@eg_W(g7&2deiYF5{Mpxt>UKZz>y_CT%pu(6g^-t#_o#91kfqu23xd`G}nfo~l*z-9LGPk@*)12ddFcukTq9J$?B1=N*#@ z0WSr_F^yJOMLK5FI1`XEA7r~zr_#Oa>iPxOf#{H*sJ~6eBylRbBfe1(ua6M=25#yP zkztQZL=8?VnuFTD-;1892&I7YlWpiCekWj1iKc!{I6Q-jQvcObQm^ zI_w*w5Fud)$r%O7$<({Cpm3&wdBI+nxSCpqVL<_(MafyvKBbC(k4;>zhsStMd)l6l zQw;{A$54b$b?pRIUQ!!l$sSO7nA(aynNP6(?C7cov@L zUq~Z`!nccp(Z$p_F}g+X8I8conktfpxxH=N3XSUzgxDD2Av4T_<~$qD@+m7ky+P{1 z)Be2W&H@^WpF3BIG54G~Spdw!*pWE54@XJ-YW6;}0Czkt<~5US0z-QQZRN;7$t8kQ z)(s3`!<>QV&E^~@R7P$kzs_=W^CAGB3?#K4Z3||jTdeBYcZCcTvJhlwJurB{;<481 z$siAbHBgTgXkPdc6)(VK7C7^;J>?#2WZmoaxQj1LjYkBGhlzVgHaAV6J9VpvX2Qqv zUm1R9apXd>3vmYG#zEUcd9XYxSff9|h;tulxG}r`8N6i@LSf7$?f}~(rVHyN?EECa zNm{Q%)D%OEQt9OFkK>F0S!m<$VTmkCDy07&`E!N4k2?&3l5|&jX(@W2MARimjMgz6 z-L*ajG#^deD@Mv!0_gftNkD?k0VH}Nm0qoXzt_XspKAYdm zEmTX25V$(k>H^$>*G+q+B9GW77_}16BI?$twj4x=ftfmw@rlO=Ko+T`N{4)l`)}Tz z#^+Z7^KO3;|MLD7579S&k}V(S^hxuB3S4(T3wFvepg~FEAqHHe5lz&P*K@Xz@zo+AVpfFMzFvmSxE>DcB!KV?W zv(=uB@@)|Naa0403L-hTb{|``sPoKfg}-jUx{Nvy64#r zWs^@6?-->h#~=Y}3Po+xE6zrt(Yg3oEmpx_t6tI~)qhtM+N>))u6G4hGW9PxyJJA* z?pH4LbZ)p-SDr$K-NzNcQO$OXwE0oFrlkpr+jY>z2Y3dU(jUy#iyzI1o0 zgAURPqi1^nJiUHacCgQ`!kUM+(&$k((FY?&zXm5-V{RrUcNjO?M&>C=6|$U`xAj^9 z+J`D=qoxuKJerhV0NLS{4~v+-9Y7xT^qBJ7p)$H!r;#=+ZXe21mHOaop1d5L@9W;h z3Z@hPlcmBGI5fUuGRyh_w>dd?e6PuLm|7I{rpLgZTuf9Db=8$n?jMg5l#+zQQ)M${ zD}0pkh)%HiDMkR9G^7`9-}$)=poEKm_8XJ|C6KtZ~6Qy z3=i-b^3hw0 z=HT4Z_;pyWQR?0!C=v0Oum75CP5GF>B6r=s%psZHV_7BYS*44_*uIF|I&cGgWNcrxiZ%qwU$c8{BA`fL zIIW`xsv6@HqTRM!Jf3M8CmbLdS7mvk_=}$?FrOlJWqqAJDv4VDY6%`xlJ3tMQ^-L9 z(W=L>B|xESUC=6T@{qe{d!9e8QL2v(1Oi<(9H2zliy_U-yNH=s^+9Z}j}1o_Exx{O z%1Obq7V)@<7|7z0Mr_EQe>9Xr4?c-~m3h!mz5)oW)br!n!GeagY2Z=H&XM2>tiE7I zBi#>u$yI`@OwlQuxcT!yyeC@&(n;d^7u~dnch=_LoxeRs2+}?A!pKNKKy(#j)&u5_ zw}18dr#f`PVk|2Qvi<*QBlEOVf@YOpfw3)j(4#2#MWegvP zM_9S@Y81-z2C1g1L!p+{wADQ*U zPGp*1+oce^2av5hx3!1^ERR`sMuE;Ob_MaEl|@@(2}FKW+JZt5xX#%`3ZTL3_#II*r)_t|2#M2u`GF+Zp$kPKLfT%d0u-`8+3ABs z?U&P#?N+6YQO?DQ^{fWpp$@g$uHEQfPZsJ5hEChuT>iyiVfEZaa;^x`s z_I2AkPGEDwiGkXR2hRm=Y^REB#f`c(dPWtBgy)A;Q$I^JZ3H!}Nxb8ZGRyWN2qi1o zc&5?K?0I*!7#?ryn6_!bZbASwU~j42((Z{X*~0{^Lrq6+b8nv)CjmOu6etBFZ<#ls zisaEPb3mvzy2JE_n+xdF+%TX@=-r;jzm@_?v!V2AvdCbCU~nUpANKS22dUVhV&8u=Yq5 ziT(y1icwWVSF+mld7sV*<-9fGVDQ{=c!F$(6;Yj0?(q*~!Mw4HR2igLH}Ze1Gm7F3 zBj8ANi7H+$20Al)G_DW!D<61fdk@_~e9kWpc@7*RE}o<;+-6M8EgS!0$!P!JK&FIZ z9a1{9$qMFMAR9YFUvFl=Mzhl1K~jDc`ked^j{i5zyQNsbk6h{^9%4)M6c7nTBF?H% zE=&95Op}axrn}V|S|~g)!CR!tHrjz~gUzUmr|S6$)_&k!dBUZb>A)Ea{r{LZx3@91 z1vQ=Z?7sqeeV;dh8A=vy3O0_z+tU+ub`iz37Lk|1?267R4lkT@e^OO$XdZY&2^?3CY`ofZtu>m{g{43pgi?)|0vp}HT?KEWR?OL8;~ zDOYsX8<`}MP+)oO#FwHD`p~+M6PrEk&44BxmBBrzWiXYpO-HE3As_!X{6(;aEHKjo z{aM!j2v9vZ%}og6XjV@_rRbQ4nt=0SQzcW6^KCpE#}10vk^tYf7$xn>IMJ=Iy{M7Z zzKNHCBX}%J2)3qP2j{QGr)Ds#YZsJs3^I1jc|>a9U7tOi*MN@)csI@qN2k9ZX8c~@ z6}qckg@NT)6yv49<2sZ{VnwV0Q6n})l$NjQ8)^}9_=M$DhVXp)>{~0Xr{z`{g|1Xj z2~+7-p!m%&Lot(lgc9w5mnleK4M}9wpENy9jcxgX)68b8BUUdZS-|tex zoGu9U?K!0JcfRVdfZTL!!DIQ!cU--Tz1m7EwS}Z+diaq zVqQuEyA`%Rp+`Q&4T6{Lb+=~Q2;=7Q{KNN&Adsv4uh~YhB0cMB*KjK3tR=rgPE9CI zrIvlW^p<&s7D#SUbYwlqsYJ}5C7nJnDM;Q7-O0Sc!TGd8s>HEI^c8l#(Dn__7-DhH zNAshc)kE#d8-2O3+ldN*kB@HzyDBv{nkk_s(SmtMDlC&hCR;N)qS>VKH_8pVUiq#W zE?HoreK5%x_YQyYeJ@teS-^^LySC5i#2EU@Ez)`mEFRC)_xb_$4C;@9!anK0KIdf~ z;Au%%jyRBuG_9;|-(l`F`dYb9biFf{b*7K3xusk%TJ6Ho^NHeK`j`aoFC_>; zsG4F^bW>7n@n6bf3fsUSD8Iv>Lkx_{Dz!>G-KZr_4hGi=(5{nKwv92EC$`{PxoK}Y z+o~;{rl1s^oD8|yiHvVAA^-&h52%FYymjw_eG4%>BYZ8}nU@x*9f>^oQ z?oYG{*6uCx7JxeY_q-~Z>Rtdzn6d8cA9af=Tsh`55;O6G1qFYV3YoZmi`B0R0D;z~ zYPD*_1T7vqDn?17i0mF_tsc;dQt0fQUn3PyY9Re|H52Ot?JjW%OdWUBb*#&i-QwK$xEr zykrfrC@Ky)-4rFv!P4(M_?7i+&IbtB;BZ*f0YHC+E`*1ZIG@^33+|H%39j-*!Mf&k z0l9V;Y-GCZ5$(@EVujSHkf9%bd=1e7s1$m}5x63|^-Pz>*qtK=K76D71RO1`ADk2M z!ga66=GLBOHhkw>7lCZr4Sl8Xa~lh{Z}Fn0B4(I09j5DwCKM8f0e53jBAM%gMTzN* z7z-J*mj4&#H_8TE)FI8v5dAlS`&Mml0XTJ9Q^vvB)<*{fqDHNmyUTCFpHkXu9`z@|%f#IfykG z^r)?y5{BQd_Q%i|5?H|z^MadV<_(sPe8ojE&%Qdben4ZZAzY(@l}p5*YCw|a0vUxw zbn_$V=tva!M8xq8&2rPHp>5?HPuVyI4z*i!4AP1F)Ynf18VkrEsE}9#aT@h!$CW?( z;j#r1MrX%Mfu6tP5wnNej$)6*KOLMa#pfjYDfMv8@*sZ@w(Uf=Nhr@yo_m7;UmR79 zUX5i)EbzX_3Vrf={bcDCy2QJg&E;N{v9px3z>fGkor)y>+8rvcPB_y~xa4LITqwR~ z?%6+}s6Ch54ubQi3yI-x{ycl{gXD3GSiB13y;Yu%+hR#0+Q+X5k;KQdZ(Rrks z93*rP!Y$GpI=cZ($|uEHvpUB_3Lg;8zJB|RSU!h5QwRw`9%kR<&{;K{|`!R=P%o6?uQzzO*X(Hd( zHg)}l>dcg)hu{J_gR2tXYGmrq%bTqy**G7>Ul`Qts5YE0GBbZ>@?>oX+Dea7fsxGp zOC(v|{@T6KIkQz7;>7|0#zi}peKesY9E4+GQ2IS=xrNk;*SYL1w?+03$Jzju^Y`B$ zRa0znoJUg@{4TQ?L;yc~L^1zFXO_x*pyM|c(LAi3^QU_qSYZ1~d(6KX?*jT5JsS~@ zveM2s*<6#VWe<#gV5+35Xpoy2gim8$GOVb%X{g8KlrS9NHWBYcN-{=WqU1ff*c?v- zbZf$`vVqI#iXT=5G6AbVollBdej*zChSW#)lPAy z$UQzD?TTtNUoEA~r1vwjNMAiV@V3{Q6-azkzHYG(_s*hJD4kB9n6UnT&{fJsFA)ZY z{uS^X2@fK$C9kZO%zjrcY}a`&*G_GYP#&}OW0N8M34G8fD7NvT53Sr8-cEwG*MZ@g zyQ7rW0>r^KBRQ!$K(KpR#lUc&VA!!_jbr0rhBX=RE`C+R+Mp?L79FA%!&X`N~J z1glt$_ky~$6w7Zr zuFsxf4OUivS^BDD5OrO1J#SL>eYCRY-f;)I#`c@Vdv+h z3w6949Cy&6ij7q5#+HACea!XDx*=p1pKecd!9sXlWQx~S2PVcABDw{%ZmZ5d(Y^Tg zCeRs33e_#qkn|4Sjy`?y9cFIu?Kc!tK<2p~Xx{@)eHntpa3g_HsxTl{3=FFck0QyH z=&%$anJDm4U~=M0wS!0iwUY%LGQ&Y|5%@Vrw(5usjS)BS>)@!lCYRM}d=By;N+O9j zWj7yR57D|12r>uI^hR8+_+H0YN$&_x$;CNKWca8@F}RN&20y5QbmIQ_F7GAF_tz1Z zO8qml=p9BY08Zr+8@28Vd|S;14xkVbKOKlnRn?}Q5?O!a)v^6wpw|;38?R>{k1+zj ziSt(*QCzezLUq}Ctu~*vgb?2Hcao2eGxFhrW0nm}k|UY-jbMOr^GoRCDMWUmgC!lQ z{tx5-UuBGP;QO>!4V_pxw zA(suZ3*< z9FS$Yk2X&={-%uBAT10@rrnroP)x^byz5Q>rH`B|iUllsOA*xNV@$KuvJ~LSQ8GKxcx`QLL+<{##5?pg%+1y(g0CT5;w#yRfPi zqGrg?T`dmF2-Y<4W5elhfKv##DfGqU9%|~CpD^Emh*qMGNg3vTy1xomGNjprtzWRZkvW>S?cRx6H19*$7ht5rOMOcZBo6J zzd=ha?CE@2ray*~g5L;D9C7~(Xt9PfIy%T0jgy3li?tbo!To4*DlOt#kOtRwko!5+qP{~Y&)sgcExrotQafm z+TT9tKIr`e<~Y3Pdp*~HEZImeYH&@Eg#-v1!Vq8U!mv%MI(P-S4%iPmeh0D$HOdn& z32z;574w-@qD><%%;?DvqVqg|WFWn7 z6-5ZS9+`50xU`pM|2&uKH7m_cOAGV*u#u|F!60|6B6}RC`I-3EFUZ`&PRrL13pDY727TO6rz<0qDcGxL27fiwl%OL_AAWIufXip_Su#+QIk z#Wm4GDkvked~O;aJ+Yp=CzXSda`qol!=cq#?q4BcM@tANlIFv)@&2K(Y)%T!%w!5w z6Aexh-~Ezep=%b`&U_dZkX5+Rj*!J+6@=U!DBsK_CV#T^V>D9s$n?SY7$nhsIuUR^ zY6emK?{i!&@&-$2{rPaW4I0xVTyWdiBpfkL@vL=RXhU3k@j*W!2H@74O0*P^t0Jp2fkwrQr}QdAp$Bq_i( zl%96aVg%#dPyCX@*p0P`VdRnd<7zg#5hU3JOiB@_5es9>;a9+zi|_p3u~j-WgVYz?g}&Q9F%+73WE z0&Z|}ro+})y;pD|6CIY{K+0^PnV zO|qT(cwZOXZP0_*Ks$;4O^p0_clk{KnI@I|#KRGtPgv){kVcn0u5~)f&pmapxJyVQ z+|qc<1}jP)jR(^aERctHex{CVf@w$zTb#h=BJ^Y=x$ExHVaG*lAF-H7q-MFg2iZ@R z5FPbg|CmO3XOMHL6c#4?zc8P;13ct5G#q^1z4ts4nQ0!b2!=jf`@7>gs?lZ&af-^c z->pbhWGP0o{@(a6GUQR8aL}Y*B>1hBEKj|grrq}+-T&Gutt}m0pab0Qw_;jMwXxp( z&}`R>XJEhZIfn;xou%mHV5ej8SY3WqFkqHS&93ke6v&Z_d4; zlT>11bv9E^*w=dvEtJ^m;^*B9^LQ!dpx7l;JWnW-z=iHvKKG!?`za|jk(9oeq0LZLx zigdHaY*9E@jbprW^aJuY{jq@qyupy_TO;-S|RK^Yt?n+r$!l0}H+yi0a zGnh7-Gf`Yw^#KHwdV-ePHgANoGD@F^j7|~7gj+1JPt#bm$uk4&uG)3<;cZ%}8rZ$D zpu2hOqMJGgWsgLM!Z?&?Ts9&}BOjZPB(p39WF=pQOuRUq03C6A)%>Z_YEn3v5N78| z=D}!^a_=DPg_OCeh^>FM-SGqz8DqmaMkSvw>CEeaCn+qrZmVdc#G%Cg@S**fFc4$G-- z2V`P!{P+V;2V+3El33ic@bZM3r?pGIdr2HB?oTebF`_}FMk{MUFl65e1PkLE72RFB zV zlX3t>-&!(b4xI8B&Hl^ic&NHybtV@dU+%uc;tXd4N@RwNA;bCkdQTq@suUEw5n=j1 z9Oiwk->=H9g@%hxP`1;k^Qbf0YU&n+bZ}MSoToxQ>}|iCv;&F|fasxCfWNoLztx^a7Eeb0ylAY7mUxAGMo|0tgrK#(><W)^a{?iE77f~i>bA%umgNc~^~G~IS6ap9Da<#gC4s_GyV04t=I>0mOj z{dyItG>?eZ!jFlT;q#7YJ7jreFWaX1M9${Dn@B$-mut?D_Df;65RY2McKlzIXCrr# z=KN0g)e>drRti(n4I{?_($w_lsV|SB=q6It+~hPc5p;GfY#o%5HWAM!XJStE z7}^sR2u~g5CB>q>evqhP&Hb9>d5;*52P29v=U9CpfEsz$d7nN8!MHR1d^3vX2R4^-bMgW`rQ39rj%k>65vR;4aZV#+zseb;T zNhL(Z0I9F|GOqtKYxGVFe{$^I`QiHVNnIA-&tO~e#c&`-qFVP713O^v8CD@w!c3dP%b0>>);1>Pj%Zm-+?5m3aUF$77PS;1l zl534>$}SeCk10ZO(zBawikk6DLJ2=C^WgUDawQz^5F$SnG>&bgjMxY?ZLg$Q3%ocK z8b5VYjxEcUeeCVMN6o&2Z$ubVo$D~2s}EjF!k}zh2oxx|U$M3^nH#5yQ}gV%LbVK~ zZFX0ia(1Fralqj=h7m8s1T7TgXSqIZ#w_hMdBp4?(vd|W1g@#Yup|v`lKcnfTZ>n` zp_tLUXf@1WFVO^U0jn1T}NtV$TI|qcMmx8Ykg5zm_xxq(t5ouQ^9CpwA={M~sOqu@%BL}tS z0l##0lUddSw4=b!K_ z=+@mYFt4J=nlZ*pM>K5|4PGz&oPmRien4W6ISQRUFIuV8{J_J^3O)i?_4Zk}`eyuq zxJ($ZA;~@p5v7Q}>t|8;-54RM%#(a%B4TjvGz-lz4>oPjV7l2=Hk@G$%TcC4Mcg_sT$9_VD6G*YT;p3oEK;Fo zYvtFis-PEzM3& zf3DX2Qy)$` zVfRM}BvK0@<8MX)b#&j1G+cqtJLy)JLT!aX#+sh0HwHu}GT%g_6Rh#~f>X#^xzPSw z?I}BY!oyHyet>!1vD1ht+B_Y$ZAkYtc-h0ERP$Ndc1>vjdyC^y2nr-AeWcDdwUfW^ zZzm_=-j8ybpSxT=BS&JIZp$q;O#7*y_+$&fKAewodn zOFM6jnTP{nkH*ZabaD8~^!OpOlc*Wx-<{Fws^m?h(I-BPeJ=&)9f}IsqD)+t@)7V6uyuYN5ZyYYTJnLmtFnGE+;KUAwUiiqHZv*E|tZLngCqcxX598qSs(y9QNpE~D=X8u$m(?y9ZA-jkSFoPZFlIV z25!evv$j)eUz9v)vOJ(Zv2@l@H<4M0;<6m*rM}Q2g_^^IT7Fp)gZ{TwhI2B*;H8}~ z59O7BmMwSl87}1g58s#M1$^RV@SR2KzZM)E+ufsASZN9esu4v!SrJWvcKQ{u0z^Jd zQ|J~h+-KP7ZWJ2HBPt&j4{LZl?8cAG3$?7VfO04ih|GH`36j&#aDQqQR2J49og zRy~Ds(`yH{;Hr;qUKVBrY9XNEG!ss(CpZq3TfuxV=e?r*Q`?VpW!S z+Cu~yb$SCMwa>eL$t+F7VPDaa-#Kdgtq|-f25|^1XkxJ`qBD z7}k(8y0FZ9O&dQVa9INOTCN>|y!0*INkx8#hukmhSZr<-Mw-@)Eo90DVD@!{9F5} z)^7FL;!`t5OC?dr9MmLYYW2%sE90t~*i4~`#36sdBOjk6@*~J^;fj1A2oIA!DhYDy zlQ`)55v@bcloxQYAulg&WDr695i?u>RKe+WnK|R_Q=%OhXxe;W@tMRSAhau|naSCm z#C#K?lsLrHV6Th~a`Ds?sQ!3%cjrG4ZdBxfV`{GmG_ara2mBiu!AgjH&sT%F^d}}x znS5xz%=Ue02r-||#%%aBlYtv|nFI8;A%R91(0I{^`&nUys53xt2D(ZA_|_feBj0GO z5Q`kWm@mW=kT^!f+}D8ZQ7y>R1W;NP-%(e_LRoD|0IJ>!LF*|LJl^@d=>u_Sq`Bv0 z+Nduk2^n+<3Aw`cVxI1!Y&(4l;X5rmy{cdXWKDF*71A$G|9&2uVjL)Ga6Sl6V5epl z?OOi{Ua}zMIBG@d_ z$iuxcay}_Z*npHA)9?3mF|pglBt}k#V3!1{N;hx}{vJH;ys>%lG)26e!7a`c=L#|~ zUK#G?a5*ZlSUcRxwuW1+3{bv{73R}~2h9a5`xASmv|K=jI~fukp=Byz6?dM+=+A~v zNn*?#-HbV~Z@K%)Dsmw#-vp3jMB>8lC!}xis*@EVj1c+@Pketrqv749^r9Gsz?RB? zEVLo6r14qIz5f#}tcjnSF=~TO`N+8#W!vnz1jWybD^?OkCIvb3%U7~?cf7Lnixvdj zHk;z~H`2?W+P+UCB1Zb6!AyNgCAF-n_MnPoc@o75a_eLAqi@|kg zH5wz$6CNMW`cug5JiXSby9kG9qvn9hAakk4dgZ(xki{sD*SB=_s${+tFkwf4Aql@C%mKCKY@#oyAEozV=N8)p{~&^;NUbO4zq=|-H>5~( z?Ie2|#1gDRx#)KQ=UxBr9t8JK92CaX%G%1*%G|*c*Z{o|_tba&lSDb7>?I@IMA)!H zw_@02)5xr9e32YATWBHZB7>ataaBlJ4JmCsr$bQFR9W)M)e}lCzbP7(*On@LCO?8h zG;Ui@zHJ_zUci~42{0Ojy_11a<`qP z{d0H@-Bk>D`7hc?-GLt>X%B&#Ld>(7BE3-=3qe zB13+Umj!7>YInbY)V;Hw^0xa{yYkx>rjb42gVU2l)c{=(PTjMKZQ&Y63u8hFxhs+0 zr#^8;vix}iz8poS5^>P{<5^OU$v=%3Gj7l&T<2ox%wY$?cyl5J+DVV_&YK_UEc}MQ z_m7OvMOjX8<^oFB1~)H`%4gcc&>*%@EX*Wd2+0KP=fEqAshP*fqx=@SaR0Jhr);zx z&c7TGMZX$jUo#}bo?+MGLnz|Y(7x7Q(_8*xX@Q~qH4Z6G2WeOzPNE|?Nk=QH>fJtw zp9fNllI!X2D&qDq4SyR+a0elvM>f8xicarlKI>(P$BPscuu%-`Ur!X#;gzSQ7iJK7 zKqM8v)WxGyaXDHl(uX0ww$1O?Jw7VHKRQ8SJUZJiQsubY(TH2Vyd9bG?+Gn4TU(o5S24)bTDm3Qw82}a>TUk=U8n0x)fA8p!eL7M> zg{an+376G?QiNQ@Iu}5m{Y`d6u*l>(NiFuQR;FJ@zHqIt{PbPuTKl%v4~(@U zumH{l5*}ljDV@&S!HV`OQoGlkpT7-#ValUl(1J%x$+q3+A%D8*C6pz){~!xKTgsML zm-5X8WmM7#TQw+$$?D65*1Lw^d9drjzS^6fwl80J-k|NYVeFo}K_+!?V{NCBUW1N| z)SGzJo~7#&-~uprM%FDxqXsYitFW@p1UsWI9ec`bfT%4p4ua;N)H9xGS&S!}l~2 zDma-iQY@xVC$Q5yvc$LUiYkLS2G7#Cl0-fMYzc(@C1waz{x z1=IK(y#lK|A$Or1tf$DU%eA8*HH_}cY?Q`?jcF+e$jP;XE0auny=hf9;42UVB~Y48 zrIeBJCxKS~oRr@pW3}33=}o-!az=nIF@7k}>JdQQD!4zob|mLD`@r&?$u!SL`UBb~ ztFG=Q#{kf^PyJD;U_W~vmyT>cw#6u6k%J2DzUy)M%^;&-jr_k*Uz@I`h)7t&4Bs1K z=eIxeq@|vlJ}-f|h$Ka93RLPgz{q4DD1+a@4MV$3sc20LaIolHm~AP_3y%&Ey}?E~ z_>b;?4fHm~_U5k1K7QOk9L5_nL-KsA)r18vZ>Rh@clIcj?VhI3*+h}BQ}SSud0A-H zidcB;n%Zr=pAbtP$TyInkzU@3S_w(P@`N(Uu^C3%UyKLy)ORZTxY@A*SvUb_4QLLs;5JxOfj%zxpA#+$pab(oFLy+Rn?i3Zy)5&YBh=NWBmim z^GuMj5rA(C2ycTw^U81`aMXl96L}aUGFeHg-w^*ikb;FyuB#CqH^M zvwz6|vjI#4v<rl&_uHRXJL~_FE>f1>IVGp8af8iY(oNj+ z7W`qZRtK)=V6Ifa5%2D z%L5OYRa!}_6{4Az3eSG5H?Y)=61D`-ksnkIBz!Kbg2DiicnE7Z=Vs%%F27Gpr1}2s zr*28y)RhdoP%L?Cf1(7*u3pNF%uT=4sS)+BF1#GxBoMZ5#(o1@=u9(W`mvK<`@8C= z7^<5*Dj}mvD}ARDjxBzd?*xGot9HhV?A|#x3A7lJ9Qlis733bH3Ydj-UjgC$*tuB= zv;S3+-Yza+EQ|yj6GnA=iMnk`S0ZFa1~p^yYP5NL7>-}a z!(~jaQO^E;Qk+o}X12%pPwY+fjQa$T(V$BZiV}K9?&$_qok?fq?1dbB)*dT2c$I%C z6w=5>6vGgCYy*1WUGOKyUN*b|cl|dU=WBaEk}D()n;Ij_+HYWK+6n`t%&|r;XNo@y zb#>NwAp%PaN}3JY$)dHw3GV{a?B8g*-{@akZ9iAtTEM8(B%!Cg$3<4iZ=hYE?zNix zVKEReeX45QPo5a=mXG65rth`G3bXP7&&T7TSYSL%T;B9$?QjGDFOA?%LJ?30#(^U2Y*mD8M5;e)$H-9qCCLau>@PzkO zjUJO6vb*ArqeZ~%kF4w*as@3{PAIx?=omr*YG(u15_6!pz>5o)^P?7z)OrpQje%$K z0DTccm9Z$fBmyjv2quw3n9KCtvcBmsv8|MGXhc{cMlSY}c%B#ITBuhjMpoK4yIv0_ zk^kyT{0G^#IDb`p(D|=_kkpB8H;%s0gh45EctTrDe_gz|P$mZxiEDxroYE6*t;n6Y?FhmaLzP@-Yd|-% z=6E<09zg+bRtM?pw+h_;|H8aCxR9X_V{q|VZCU>SEtjD!-zB_G#nJ08QDWSO{bj)x z!B1Y~CNQ#?)QdWH6Kq6{o3ilZ2Ph1ITZiCP41oK8bpLy!_cV5JHFq>2u!ZuOO>jDp zREn26YULUfhBt-zW{&ow9?y23Pv4L&82}+d3kwCGR3g zuA9%HX?+DgOEo<8FLIu(n)~aCw}MVeNLWZ6Hzq7vx-(J2v?5u&$~@~AP~nnghhoMOaFxXi&YJt2^F{f*T_b2 zgbodXF}@|-HKYIna*t^ebA(0(g7ptWul*z309aIsRnhhn(MfTn7Ovi8h3s zx`x&;-Ej807r5b}oCqCmhT51hGZG_aeCnmb7dG<51UqSr&Qn*}Ru~DKXglc5QyzzI z%txN=jshTf^p*!0w5hgG4v8cx%G0eD$57^JXpMtGD)Z}ALk9k}9YqhcgLO&F# zB{6M@SvSsK1GHU|xRb<%<-(%Nj(iV$wh#V)-un|DJ^1$~4ECGv%dadm_OjnXAo#S`zh)Mx>rG5Da z(97>L;3ia;BV$^OK*w!_E`o!u41~5=h2L>*RLC^KipMtt+f}z#m=W3+dp}o?eyx`3 zJEFh0+kh4+=<0+aXv%ZQ3n0HHEv_tbS^qheoPo_)BI+Cpq|}nPg*$$ifbT9*Of|?b z4Wr@ZLDVI>M_Yx2^!UmLC(^WUKC;q=Q0Y3Vvv1(R+Fmi*R*rJg`e=ilCHWJ1Z2f}K zv|Htzp4ahlqBMza+|s4lR5X(1vd)Ebzs%(kTe<_SvHp0!>LNTv07Z-rN67G>d zyD)%paWaR#$JuI6v3i0Z^QTm*!CTsQLQceOuGVWh?KG6ZMo%OvG?2UMO7?_w!75vS zXa)BrYATu=m`b`;N+%6TZRK1f3_>u^KS*=j#?}STk{sOy3|=xWvN;s7L;lUgux);V z+IXX4112_aLs9ewuP-&#^l*Bp|LYplAgPbOek@mT(eTs?bk*V)c?!pq6ela$u#fhH z01$c)IN*%!iJ24WWw}`R^Bglr7MJKE4=MG;rLDC1(h=17m}1x7f0I8avV@L&QjOjls}1 zEh`bDk8IM-%Z+PdRLSLUR@1)r#-GkbjAyF}Q8260mj2B4(dYwDd6;a&#XmDpmKej+ zkQ5Ma(o=L*lHHSEE+Y5k>`WzrVpc2mG!eas2_+rVolW-lm6%*feQJC!0g~XRhD}te zRWT*5q*_WwJH%K336=pX)j7}mReU%&{`@?fo1r>Rg*H1iIt8HZas0QSfU|^;Y#Y&0 z2fRg7(iV9-B7P^7vq%QXieth-zo$K(P^6mBn9k-R%d|4F+biWEZrEaV-4e$CmBj!5 zC8e58-q>r%tY)esJQ=i%gv$u1#ke;fiKIgLaZ1_r703SkxthgtVNL!;*CMU({Jfa0 zA!yuOn!&ywyf!L+(trK`0lm4ko3VrC7~@}VyI-!#^^pdB`o42SW8dEMyzD$gzv&=y zNTwW7y0DEZb%|0A_a$h=l;9|;f(i&IAA?3)zGXt`aW z>q)SZs)(su_|9iNi5gI8J3*nX`=Oa{H(GCsaq-biv2 z?3O3?3jI<=XHoemPA`;4P03 zzNR#T6_WuUNGE`|8M$*^t&tsT!h>6%u%&{3VytdB^Q$-%AU7AzO?Z^asf@hr%KDw$ zPU-SMGM#}6BlgPmE2^P{2w@D7+>Ebu7p$wtfI$~`SykqC-xRiXmHo66DONg-#9A$6 z+yUAE+cbLiMqB72in?{ukqO=g6;xtohRC{?pzc#aje=MsI_%@3v{>G#*bPw*59;dXaZ?TL8{zo6J0FpXB6P|#3!HEL32rUtc6J1fP@LLbmey5{`n>| zWNMBpmBI;1JccS5j0sBbhOmuLT<=`M$WWju3W0bV zU=9z$!sTptoRB~oeL?C?LkJscqV$7e#=9L){Z4F;3px03o|;*P@KC><68ogACrSq> z7Ho>dtIM`B2f|*#B4?qJuTLjH-U(+Ep>;ef`V=Y8ma z>7(>x4|4{c@34Xw1mXeWln7fG0f>Hc`NqxzkxCwnLYRQg`$7T%bv6U4z&{j<19msH z*gnyyCsw6_cX1LUr-ghltf7Isv~Xg)qe(x#67j+e+Y53|9?g8i zQq2(j1vmaIm!uVFVK>{>4Rqr7sd(~`g`4!N0RkSpm-j3y?<$v!Ix?(uA){@o?R^p3 zR+{}CELQC& zdM;F15h-1VPj!O%)ho~mYX8>Fp?CeXz{gyyaJFY^OKUXqo5uZT>*+kb z$-lM6bEzRf0XMk|;o$|=pF_%+@SYU5Z|m`h^Yy~qH6rQPIS);fsmY3jgFNzv)L zj!JhLcJQCgJKmt?WZ8=c0!cNwYMK#9>d6XUM6ZFq27wdSsh&SvIAN=uZT_SCUvH(k zhq1#OeBQr$vgYj)Q==;Oou9m(o^P>p7ghx9p?DF<6p!EzugX}wqgOIi{93f0e@SDF zi83EGTU$(-Cr!?jh+T*iWczPUNqc2RKq|~+F7`l#dKRXE+&*@{;IbIrt0D34(kkGw z2}~FoLjN*``K0htpoJ~0Cb`VhfZ^u8AN4Uz2xdqhXC26E;;h5+89*Szy?$&!@(aI-b$IM^6{w;;KYYbtP7 zFhTmN^e>+0Z=ka=;r7_XBE*aP^rRC$oggN#opwx%5v8lxy6-${d#ei${s|V%dMyu9 ztCi@wezbxIgS;fIrzwC^txLFo^```l5LhVcO%<&Z1H(>hb&7(!wl-?KJDV2Vim~cN zqPu1iGjL*bs#F%(c^kMey|l{)@Kb2`c{V5x@jDFDxj%Vvevf74k?vtiTbz~8LM0TN z%bE0w(3x`K-?abI3Slj4pZ83E%a+-k*eeJh`Kt-dbscad6#8^HSd3;rIwj@LO=JK3 z1g(R16ASI~KenSTuq-8~16loJ{Ndg%JV^Fop+E+}Q6WgNMnLh>ZZ&JrxL{&#^bqAN z2gvWQyEAV5;f5}xiM14Gx;i-Uh=%7s0VLuzn$?hq3%!6u&MNeeIGkUF%92M2kTXBvRCB)!RUabDeRB*Q4bC-UK5&FFar_3!=N86e4qK{D%usXzt0erR#WSs(Ot9(vv<8)nx;`7?40N7 z--Cs=ake-d3sk_;9>2HOM356hUJABe?y-sZK64j z5#!5=# zFcxLo%lfQh%L*-PoMT)khdS;2sEn~ZEcIbHVteyJnd0-hnlfz{mBWK$cyVXwJ*7@- zFe5oXEh7ayA}~6T2D-L|Y}FO2UY!-`Z$OL%Z9{uk1z5hW-WO z#&?A`G->K!SwJ|<;DVzPe$Y0SfM=cA>aMhUlHlJMQSmYm;0-LxHi!jX94WnWo|Bh^ z`7ip7SS%DW<<1+rl3mh{v9s*8#ie`1?3pm{QWnwetHzJ>kI`k!^j;jSm4>}KaN&&K zg8K8SuIklnWo(6hslEw#%yZ3ahNR+iI0S)mb&kTkOQ0&cRPej z>FSSWjI6W^{ukwGYxe0E3P;1bl(7OD`@JbyM@QlrG$i~PTL~l!VU|^KhwbWw5 z$D2A)F&rPK(J%dBt6FpwKd-9k=8ydTqx;{xjfb(diIuTOx{te*_Umsb6}MF3zIN2N ztRK?y#((u3UBl{eas8F>v{QL-dKG&)+{^NOz(2dU-|FzobcCucE9s4zLaXB7+@&rB z+B$)~E2Z<^UrO-J1x6vR&YtVs6~ybyowp^##}+B}RGzJ(`0j&mR%du8i!Q;0LE$+V zNmLzl}0*FNeAW%A&9+48L?+L6;}4&g#ea$;=B?6^gfo#^`XQw_Mt#Qy4q@NqcFI z*SI`%2Q541Bfh*2W7bW}kzu{1$5_Qc)BZa8nDw{c^y9_z)vxoxiEWar*bCIzNdmz3 zm_=QPzK-4&J101ykiYoB zumx~g#!k(MlcVqjB3^28HkDL3LrKESbCn zAi2Uu>*`=dF|}2}gf*83yVQ6I;uIYQD3O=esiK3G7UGsPJYJnp=ln8q5If=Z{vBvq zQ|#-4ul#`osm)pR)5H5{9!EG~q8Ja=R)iEbQL(oOw4GvEW3AmmNXVco7z=ZT7vr9{30!*u`!=Bj zmcxr+pJws@B^UbFcQ|Q*=dR;%O<3eapTb0qZjSySe z$=QFS9e;fdo)k~-82!qOYA9TF|D*-YpvVOlkL-eo7a?w)=r-LZjfYSxoUga!xkk2i zrBHYPzuIQf?iB~9G2I;y1w3v?`96`VR^oFKbIe%>3wH3p3PFOkXJ3licJ@Wju7BTW zn$&$~?-fgYO~@^jk$TOO9-1T_;;`obL3M2DJ>baJul23xe(wP_li?%)>$*iDjqFDp zpraMOZf17NHm--PB6Kt#2mRg%Y=or(ihX6GhBpbhe}g4%tZ1*OEIZf~jeBL*5$IH| zazen)_EYQ;(QFV ztI%re3gdCe_7Pa1|;Dv)`%Y%bj_o%Q`S|r5f zG>f`HOO2??kh};}c4>J}zuj(*`<1+;IEFA(9SBG+tOzy&lDwQ+NT)tHZrEa5qAnO6 zTa@5tBG%Yz0g$<_o*oL0(hodQ@Y}MV2((e`nmT84``$+P>up+^6xI!EB zegR6;vSw`kP^z&y6R)a@giZ!vi8Ee>Oy2Y^|(z1R%l^u7rGm9$H zBXC0eNB6&jQpR>B<}PlN?z`zPXxlxsL_W)d4%oGRJ{gFA7b;}C2HMEuZJ&vc22-mW z`}1nfQ+0Jtw;-?sO|Vnr21h~Cw*BV;@&_1R&wGcQUlOEi$+}hx$cY|SX|aEqRil>& z>d0H7ycVLlOxb;sgqo7@j}I!gJnf(UcF1ZQ{>+P}q;YUd6

d1CNgVaCe%%s2R3{$2wsVPo)kWN1RSl4M3u*tzXf`jE&t zg4>KXUUD5JvJ@_dT?{xpvJV?QWUa)Z7=4pt>5L-7r*eP3(~4a)B1vnFRd0f}Ivv&Xgo9dbZ|Y-?A^LUM(CbGR^B@w_49vZMJg6nbRJR+B zw=aITC0l}3_}Q2xi4IN5tJ!V0k5A<_>-(rxtyiQD;psuup8VP9wHLgK12Cc0s9IfV zBib{^KQLl@>WdfRoYdd5b%HV-f1{mLQ-#L)Tpyw{9lObpn7Z-3rIv+l^<1xPlsysc z-ba4n$0Mh$+VUO2RdcpOfeL?0&@umg-=Q&QZw$35)9Gk!b}~iXHHZ$f#H$CyF*D@2 zI@I^sCHSfkf|*pBo7XaTTQP)s6$J0*?ke$D_M zJw-^>l5ZOf8sjInSjddW3e-8r&wVd=Q zirVnmb&(+l;SXSz06=*i2dzV;Ek#<*%UZNlp0=tJ2Zj(-9^BC#PkJ?3e8Faa_TokUrf6PpR<|=eZ%33f)SJR&TmTDwt z@QhZ8TiOt+6|UjDN(y)!Duvq1?mxNC-}p!l@;(AX;tqvp&MpaBE;7^Si*L<-lKnV7 zwN~{7sU7?J?2u-h?u@bE%Hs#VG1!r#r6nX-CO)l=1cA#9iu%*RsWcM1NO~WMx3*rq z)U-y-%W_gOxksp4TJytuLEK}kv$@fB-e47)2rqwIHi0dps}Cnlz(gheY2nsXLOKVJ zaSnxA{V*xWM|IsPft6%d=!-HKq0TjtS5}Y;G+S{d#CSnXmv8JyY0#{CB97KGVdt<= zj-utIXe-F1hSTndXJsf3F~(w{8l&Y+MDzzqgmrsqZT>ySa8N6z(_d^CGJ7pWC31xY zRKv;S`>TvYOj9ZU5w(B1q2r9bUv@`G{=D%8wUWpPvk*n!+i82hq_ON6fxK`OQ0;Py zUC5!)aO37LXypD87Y=YmeO4IlI$-T!vbds{nLx;Z*nawyz3 z24Y2ZOpnv6ErDMxv+L0o^qJ3_9^S<1GdO%hS*?x_)%=p2#Uunt8B(&y|AV3&Q#Us2 zEDLx81*^!xC@ZXohiiKbVz!pCOB@|AQs)SbJ8b{~M;E*3xA37rR&-9x=l-k50g+N0 z@`@>3VY|bRGfJ|y)iYM1>a&lFU^0kp8>dhkGTA)2KkiF)nn~7g<}h0xPC6~k5XlJz zQ|vzlth*jvfj!lK&&8w{=j<9Jsgz`J53`7&CFV|sr~X5esvs+V1w+m+-Ag%cU$a5| zbI)-`AYVee6RVLiR7wpUEd;5TW0i6d{=f zC0aHSW>1Fn92%rN=j{V5_Huxl20l6w$d-Z3r!d0lNJA`avhv<$maYRfiNfb{mHV@w zx@M9N<7XQ0p9JQG4R6$i;_T+5a5b2F%CREW*b&x(A7HfI#Gy$09WhgxsLHgcxoO8o z&L*Ec;sJRlfM?SS4fol9hK%Zu&K>C~p%PGR*0>D+ccU`olL?`>wv|bNwYEw&5)~Y> zP9``0LdRo|!|xshEnc_46;|QvPiMIpsOm=u9A7wqyeMf|v4wosSQbk*?DKpy{2tt} zF|s91oOi7OG^R~0fa@eG6S({6tNEhF|Jzr7N<0%ZuG{oY6;~$=g5{;BWJ2&@7tRp! z4;B7j$2V-9->+NUFTf`JoPr)N;$?rjZKsXDiO-O9Vh2yeldD3j=9T(7_HoJq{I)7| z7;fo9MGu3Z`ZsaqXK44qKk-i=L&|?~mK@l;m)gXf&=@Yn3gIGYmiDgmEuzJ6%4_4C zrmQO94o7VRkc4&wXnwCV9O=MVK+t664UEfxI&catZFZw1iN-805H&Dor1kG0pFANz;lj`1QM zcpWH$v#0%X_(gWTJ7Zwud5@pv<$d7a3FD?Q{{U%oCk+}#lUXj43Js-%G%)a30J3>p zidaR!G!n_BR;$MGfrv12Fbg3ovW(V`yf>0{AO0VVNz{;8Px<9Zf>-)^FZO$cL5buT zg##AQGmKGMf#l6ymDn{7by>E&C?dmyfs!!LK)hJ!yu19agH;vRKPxhzqb5>V8~?ah z^0~5_?L~0t^*Zy#eA!tLiO`9avi&x8uYbcAhr8eS*Ln|5b99+u=574LpUqvv*q|)o z&^EKwO;k#en$``v?C*zmk>g@1sItO@^j(HAhc2Fq@jk0OU=54y`N4$;s%#kGGn#AA zQ^AiK0Xc=mlNcGCr<>A3?;JY940T}Dx)mOZRHd|Ua(BO0EVu}j$ zyAuBf!3(B}7K1QFF>8wHJp^roydyd zY=1VUjer>}P)1~Q9zC7@+cqhuo8ReT?rNvpGU_b|^&4)0P_rbXNlhwbVF5&}R}{P= z{V%6aPT-uT8!qf8e6U#Ps|gEB1?>6_F6<|jEvG^=S_E46PA5wLPTr21w8b24L9#YG zS6N3}@`{}LI9M(cmHqg?H?jXY)&qkYnc8Us0?Nov${G>uv)}QCHcY3Yb+rjQ<+@P~ zf2&o_&OqNNuI@TB76&$yY@vqaX*II{l&mSST|~5k?XlS;T+?`eFXrh^*2mU*y+Q{o z+;{lTol#2TZ5ZVqufPb9G?Ux36KVN$Sa4-V6m)+a{t9{uovW}4UJaBYIwtXDFGnkl z*Y*(sc`%5z30|Do)u=I@WeE;5&3#kL8|6S2o+6by8aA$xp*TD38_C%}Vw(x254?yN zq;T(-tzFx;v?oy%g5Y6XBFt1mDH^1pWi@UJf5_ISo1O>6X$&IG|Ii`CWD!%AtBBSh z-#_0;^cerhnbG@Fgtlp1pgs_3;sK}XF|$xSSH9p7QSCx{x*xEW6h^d3Emkj76v1JQ zd_qv(`r1H%4RbtO3&y7n0c#Nm!M2zTW@Akcv%PcL?oi*qpgPeOwT#TgT|qA)%{DG( zWckT?!qvqrQyzsL$l(^+p#z-C2Y&1Am?)>`ssBSveIr|?Bd)}ESf6|i##7^g3Ff_vDz`NH2K(o!Fu z75ttu1fTZTJxJn3HgNU%*8?WR5vtLb%>-+8@XCJTmrip8A6N#KHHiX)D<+hhtskGr z->3!C-4CRdK=!sXv%>Wn+23i=I+0SLGD7c-ggfHrOs|C(4U6hUKgo>HxYpF{Z#E@sjIG={m9DAQUq)*N(EoCCo zyt08tJ8_29*T)F*R`E7FW~YymIg`VO*i$+|=wIv*uiBZ-=jb)buuvv=HiUk)GJb@EZBkS}|im%sY<82JouUQ^>ge@SU z%1K!o4yKu^zb7)+3DE%xOY-=M00u&`wMCWpM|MUcv}yC6{q!oOiGVCZ9mI)R-kqkK&^33GwCfsk(Q@oCQhY9^mh$@DL3%qxW0T=HU#U(70aRqTdrIZ9p2~77aDxHzZU4 zD1LO6>h;P#^Li-XVDdr=z9Wmm%sqTrwI&f-09!tNBrh=!;~y;~bMW0JfiIzm&LJ_mroi7u$Jj#%x&ihPKUt@#`aLN|KdUx# zPPHJE89r;DGWEMfc3S)|A}>7-X)!ISuTeo7!4hxXVp1-~<0bJdXcp@%Y_EH$&n*7p zMShV-rsn)EV}ALJKrzIf#ML#}dnwbsYk@30xdHNzmlJH9LH;-Mq@ff4kk{UJuZyd{ z%RXo-(UkcS6As;z@N%9zZ>aSFgJrD64SrP$IZnj6V~I_n%0L%F(H&_qUJ0rvE7tA^ z0U@W$hQzr!2Gq1ynnLmn$+bh-SE-cDo z>&vZJ>T8=JcI2iI;ctXQ$XHi5O+&~nIO`@22_~Sro=g49Zux^v>Anp!75g#j8gO3R z)18<$6a=!}Y)~YR=sOaLp%@}%3$sR71SMD67f=^?OpHFr^d$6{Q8UcFe{jIZd80>; zvz^){g6XN86|zs0#l%L+toOx{En&KZWsk~c{DpMhDKnzl#tFSpBif1!vm0QQ(gB#< zffABGv4)HsNW1<;k`QCT_p4<6|@o-uYMJc*B}olhq3z3EGiKvreTa$YYx23FFKxK|O^$wR{c zA2g#n-EQ7_++BLU%PwOg%j9RhU3YBe2eplOfe34wToqpxCfa|lJH!-8QCT5MQ0$iH zeuH|wHdp?*>x~Pl*XV`2!6W*3>l^5&b@T<8vD_DbRmH#ilf-+y*|pR10i_2m1tN~% z)zT1slr%}6uElW|umG9b3AqRv!WDVyGNu)tT~Fzc2?W^XW+v~qc$ARJtU&$Ne!1cY zQ;3d9DKqv6OLDklqtCy^SuCxN_oB(oD!~E;#W@s3-#OtRICZ0^)Y5-2@4kWa^KvNI z6<3uTl=uLf1#T1YBlr>I=IAnk%?mNcO?Qm+$u&{7EZQj>!zCfe{{GA|>D6~u)dVrW zudy~2FPn#Cye+h0QCWUvm@vSNbWMBjW}6(|JZ5;nh{B#uQ#%X*rPv<04~yqWWp%6o z{Y=r9^-K5#U)m)U5%vR8V9Mu^ERLnAYow}o&z9#?p_tWLF~WeB>^vb&Hf)$?LlBSB z4|I@PLtZ>P?X&p5j9!;B!_JVE{q;WIQ6S9=iq{zij};q_7VzyuHNlT#7$PV{`xAHG zV6BDPCyZfyjKh1gYg6K=K%vG$@R0^6#s81)ev5QQW%o@7Ib&&^WETOCRkO?sm#61=pL7EIPZ=fI5;tn1{;MlPB<$lITquhzDGv zjVg}ZVw#TIRO;e0^dr(tQW_1S3z=idCG`aTi+PrV9=mONgeyPj9*)wXm}!IURreU>odh=0JI#{_;n#3R+l(G;kf zP4FgVJ`tv{!2~K`8F0z|SI&zF*VdQRp5G2j*Hl|@93h|{4nEWPb3n?Af4T!m!zMPx z@AiNp{Bzky4*A9ST!Mq9%twQ5Db}nYeyIq0MGPC0T?K-sq6SP)W|UKY>1KZXJ{r^; zpfVPbO)k}TTX1PQ9mO+CHMT*5ap4jEm0-6EEeed2(Smb~BG%2^N1*z{mECHa&0l3s z&e)| zmjyS4QGgKX1B(<0W%N;kUzuc5fwtmL@I6Dm1>fyj+0nJ6Mt6(h2xkg} zLW2+zSm)ODSt)Y)(h@S*4mZ?|?wN;OEizf0!=5KXPXA;PRHd2Wv})T;>4|Ac|AxDH z_m55Af#n+admOPA>@tRXyCo5j=U` zy1H|Qdp-*{q@5%6c(O?F7xo_1b*A6vlTEmyRVisdJ1n+}^BkiKRs120cMKm0=Rq0E zSvH%&9BUs(jB~g^$-)Sx(Uo78-*U*nYumH#>1WhDb@G1*Sobx?Q4J`xlG&~v3A8o# zV8@RWIgzWCh3sUJk*iqy;||FUY1fTc9O%%ZyT``Hcj~Zm+P|UTh|o1ReM6Mr<-UH8 z=i`K8xb3Wbp5qAdAS5Ce#=*!nRvbSMxr$CZ2bYS(sOjm8GhrOJeYLSz?O+94#E-w> zWF6G-E00G5EPhy$7UUJ@ zd0DV~;3qO3MbYK3$E$%v#(h)zTMGJQr-cVLl&G`A4hHcE0w=vQOdYjdxMsDFD&7GT zWO_%6eZAoldYl~EckK=!s~FehFMk>eG~jT18LDCOvVs85sZUYc-g@da+JK+7YUSIq zZJ5kkwwfz~$A~gDyY7%MArs>*MVKQLYK&T21oihm0o8l24s*E}zia(Zwu1s`E9z>m zXHX%>d*TN!L;pgl$X3bSdIm^`>wDSMj`!ud7h3QUEc6cJS2e6uJo>~O2TE;8*53w0 zQT{jNieH?waN}S6@71I_th%xW2erfp4a`Ul%_I>C>R+c6PEjOKp=2ztVgJkOul_bL z){C(S@Eu|))NVOIoW9dh`d5-Je@Z!Xjxd!l#7bc0ic2;q-??7kK^cz;6s(Gu+Plj_ znTz~cnrENg`;YE_Be5=?Hl|KHKTOb31knz=^|-9ow^sbKfJ?69Cm+agL4=*Z2j%py z9hz);NLr<*+LYlTzr}fG_Y2laZq?R?4HCnr0)r?ro!M@g%^M=MU$AGuD2eHw2jDt~ zSTjVSPuV!C1e7QfS6Q!+1C(PD&_b$(MQ!noJPHSTI0?yMBT(rgK@-sp#g+LPHCd0D zcp3pwy^8F70(o$~msvr&g;R4M^jxqEzDXUM1y3;{O=|p7Xm{3fuB+a(+J`Km&!KpB z4UrJ)Z-4Jo>DJ~wgAw>R2%;Ax9mWes84Q@!*+Q{>6Pw9d&_$Q^fRyanR`OCC9=J?Y%Bz=~v3YjTM?@QilbH{#f?gVH;Hl7#m+^Kn1gid(Y(`822`#}y;Ma8z}a?4>_B5RTX(ypJyQhO5#4it>o=1rH3|w81V4r1B zr>=>;gg^@janRti-vWj?P}1`dYX=+DToB~YpvOGJ_&fUTl)(s42Yb%tlcdhuBIoK%8cbh5e4&Uyj8he0pha zYc_}r9PG|s8{>mZda*U$U;g1fv5IN+d0dWuI)#=OzQG+a+JU z3t&PXwK*VW6Rlx26Ddd*h>H7t3~#{-WwWBn<=_4uYAuUF=XD_}J4k9pS!%qg4E9b$ z{zO(rHe4UuG6zOf=ab3%__&f``4RsSI?>en=D#IuF-?=VoV@=WF_h{M8< zKsm8$F+-TV_LzXQN};C*wi`a7pCvKXQ(R2uimU-g8Ib#jCe!#AwUmQLk%J9R3T8k% z*grUprYGI{*o46@b#!OXI)Lv=yA=+8YN0!Fh@P~-r_SgTo6+-7U$TcVLD`KHPzIt0 z#m6o;w9Lj_3o@R1PolI!uf{1=3p`iNR<^ zPMV|1-)oZZMS8=nDKz}kJ-0qLxyqav7Rhim_;XH(SB^@XD%V;Sc^pr!->=bjO!WCT~VHsX9kl+dDXiQk!6`emQV7$KN! zAlmS18>K?4;fsfc*x){E%GEW!e-_YjAE32nkf9kQGG_BT^t3Tp#Tp&ZTaJi*Vy6rk zdO!y8^cDn*vGiL|l>Q~mBI)5q5vF4u!WMEIs8(_ZA0N6HiZx0S^bImdKxbeMPgY}K zkJfmoWYI}jv5Yo_Jv|1X;d(WO6=k-3exqTcyQfYg_L986=Tx3549 z)Ih1yV|;3(i)ioYDGay*9kf}d0KX={SV4QMQJr?_^?`Tg+BA z+T2T4fkHC}=ZvCFDPZ#*!C+HPTGCZ&68*`3#1-igP z9mA%kDPh8#fZB5X*x^6?xNIlV{6Wn5_^SLbt31XkUCe)JPc9#Fzg*{>DK=4C^Jqbk zRmHS`bq)JULpC$mpegh0f~+LV2<{>rEwuPOd>#pO+5kN@vozPbvtcM{#=+4L9-_cX zB%^Z5PAu}Pakf3$>~!pXK$uz6i@r#Z>Xpsu0XMPd$8PNX-zg@dyqh?D>pZCTJoZxY zFNZum;6;n?<3M^VZZ3Q6$dp1n6aNo%h3G?9s!bLcjIxkCu)pL)s*DU6jL@3YMeUhoKi?MIVgnJbN>K+1K&sb) z&?XOVGLF-rpnXpKQI*OjmXs+Lt_m|oiks9_yaLq-ph#(LS%Xz?0HZ*lB;W(9PxJcZ?w^7sA>_X6FcUiVF#EzZaTRNX z`TH?PXwVk<7w^X3=$*2g3Aiap zKYKC&{!VNsR-)DE(<_)CcI4ePz+nyBbVeV4QhqDPSGBU3l;flV^V(v{kd;G!S zsSm`-V@dgi#vY}DM9XKhvEuXnopAq80G|oPL@_UpM`spW7^2MX9X$tby_@Y^;X{tW6+1)(j9V>a&vocZRNA% z_J7&@u{s_{shxk%#bRf&_1YjWDr|$t2XmS_%~d!w1V20CS(ajkfG5vjyR6&Qeb~xL zz*Km4l^?E^VP8~!{Jg>He{}!5Sm|zRX=Q0jfP-na%9|KjzY*#yM{^C=@w*4l*{No& zUP*D#1o92Z(vNrZD1-f`U={lTM9naF1awR7FWwu;huzUfUmPd_&fqda3j|U2i>C#P zLKoo=f6Mn)7iw*o_1PP_D^?LGNA9)q!?0v+gfo8thOX^Pj(OD%hpaIG{bz7IruUXm zwD9JVQh{wFrVBi0X_vMs#=`b6Jf4!AUC*EM6CIsmaOnspee0_lYv0qx0Jz9_Z2_i6 zgW6|}Nl`}!s`nZ^y+`{poks{+Y#_ZWi6bXmw$Z>hdR!N8=@B?kinwu| zIaj($;Vi1dT;!AA;UgJ2R+YGIc@PH8B1)d}>xG>HYl{ zW7I`IK9-I_ZH+t_{@WI7rui6?aklo=i6CNbS-@v86nsvDWhMX`^NVBu6K+ZoQBHUS z!8ktnhw6{hpSbK4rXna(of!)lYc@}M6ZSE??O%`Abk4hl1DD@9d6y$O5MLX6Uw#(E z5D~Vpr%y)duItf^ysi+etW+-qsA_@9ixuuh?A18TC(mP zR{iN3CP-_69Q#KZe=(SH{k88}p9BZM+KQkoTix)&57Bnovg#TTBur zytwlT&deWX4EPY*=I7+r!%CVaPXl924lVYg#7IM~e< zIT2I`C)dsZSQt8*xf>0%Jm>@Ddo&z5IhCriszPfDJyxvgS!mJ&N2q9R^pLjQ%~WS5 z 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 )PKJjD!vYI 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≪5}CcPw(Ut2W~FA6ETDA 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 xs<{S6uD_KS+~-NbmXBx`o2~Ss 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

JWEVy036>r6@1f~ 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

RK3Ap^tGmFN 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 diff --git a/test/helpers/types.ts b/test/helpers/types.ts deleted file mode 100644 index d25c6c7..0000000 --- a/test/helpers/types.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * Configuration options for the Circuit Processor. - */ -export interface CircuitProcessorConfig { - /** - * The path to the directory within the project root where the processor will search for circuits. - * If the directory does not exist, an error will be thrown when there is an attempt to generate circuit types (or artifacts). - * If the directory is empty, a relevant message will be displayed. - */ - defaultFolder: string; - - /** - * The path to the directory where the generated circuit ASTs will be stored. - */ - astOutputDir: string; - - /** - * An array of patterns specifying the paths to directories containing circuits or individual circuit files to be skipped - * when generating the circuit artifacts. - * - * Must be valid regular expressions! - */ - skip: string[]; - - /** - * An array of patterns specifying paths to directories containing circuits or to individual circuit files. The Circuit Processor - * will only search for circuits in these specified locations. - * - * Must be valid regular expressions! - * - * The `skip` option has higher priority than the `only` option. - */ - only: string[]; - - /** - * A flag indicating whether the errors should immediately stop the processing of circuits or not. - * If set to `true`, the processor will stop processing circuits when an error is encountered. - * If set to `false`, the processor will log the error and continue processing the remaining circuits. - */ - strict: boolean; - - /** - * A flag indicating whether the processor should clean up the previously generated circuit ASTs before processing the circuits. - * If set to `true`, the processor will delete all previously generated circuit ASTs before processing the circuits. - * If set to `false`, the processor will keep the previously generated circuit ASTs. - */ - clean: boolean; - - /** - * A flag indicating whether the CircomASTGenerator should suppress circom errors or not. - */ - quiet: boolean; -}