diff --git a/zkrsa/.gitattributes b/zkrsa/.gitattributes new file mode 100644 index 000000000..4e7b23b6e --- /dev/null +++ b/zkrsa/.gitattributes @@ -0,0 +1,3 @@ +*.vk_proof filter=lfs diff=lfs merge=lfs -text +*.vk_verifier filter=lfs diff=lfs merge=lfs -text +circom-rsa-verify/** linguist-vendored \ No newline at end of file diff --git a/zkrsa/.gitignore b/zkrsa/.gitignore new file mode 100644 index 000000000..5fea67e5d --- /dev/null +++ b/zkrsa/.gitignore @@ -0,0 +1,14 @@ +node_modules +*example* +.DS_Store +circuit*.json +adhaar.pdf +scripts/extract.ts +*.pem +.vercel +bin +inputs +vkeys +witness +proofs +publicSignals \ No newline at end of file diff --git a/zkrsa/.husky/pre-commit b/zkrsa/.husky/pre-commit new file mode 100755 index 000000000..7401d3958 --- /dev/null +++ b/zkrsa/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +cd frontend && yarn test && yarn pretty-quick --staged \ No newline at end of file diff --git a/zkrsa/README.md b/zkrsa/README.md new file mode 100644 index 000000000..838826932 --- /dev/null +++ b/zkrsa/README.md @@ -0,0 +1,48 @@ +### zkRSA + +[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier) + +This repository's goal is to perform zero knowledge (zk) proofs generation and verification of RSA signatures. All from within a web browser, with local computing resources. + +The `circom-rsa-verify` folder contains all necessary circuits and tests for generating zk proofs of valid RSA signatures. It has been cloned from [here](https://github.com/zkp-application/circom-rsa-verify). You should check it out! + +The `frontend` folder contains the UI for generating or verifying proofs of valid RSA signatures using circom. + +### Generating RSA-SHA256 signatures from the CLI + +To generate signatures from the CLI - note that your message does not need to be quoted and can be of arbitrary length -, you can clone this repo and run: + +```sh +$ yarn install +$ yarn sign this is a message to sign +``` + +It will log a new signature, generated out of an randomly generated RSA keypair - uses `node:crypto` -. You can copy those values and use them directly within the [zkRSA UI](https://zkrsa.vercel.app/) for generating a new proof. + +### Verifying proofs + +On the zkRSA UI, you can generate and verify proofs for valid RSA signatures. The verify tab accepts a JSON with the following format: + +```js +{ + "proof": proof, + "publicSignals": publicSignals +} +``` + +This is the output format when downloading a proof from the "generate" tab. You can also pre-format your own proof to verify it from the UI. + +### Running a frontend locally + +To run the UI locally you can clone the repo and run: + +```sh +$ cd frontend && yarn install +$ yarn dev +``` + +There are a few other commands within `frontend/package.json` file, for testing or building the project. + +### Links + +- [Grant proposal V2](https://hackmd.io/DoZPolTRRN-WNYheT7MauA) diff --git a/zkrsa/circom-rsa-verify/.gitmodules b/zkrsa/circom-rsa-verify/.gitmodules new file mode 100644 index 000000000..62d01e8d1 --- /dev/null +++ b/zkrsa/circom-rsa-verify/.gitmodules @@ -0,0 +1,6 @@ +[submodule "circomlib"] + path = circomlib + url = https://github.com/iden3/circomlib.git +[submodule "circom-bigint"] + path = circom-bigint + url = https://github.com/jacksoom/circom-bigint.git diff --git a/zkrsa/circom-rsa-verify/LICENSE b/zkrsa/circom-rsa-verify/LICENSE new file mode 100644 index 000000000..05fec1317 --- /dev/null +++ b/zkrsa/circom-rsa-verify/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 zkp-application + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/zkrsa/circom-rsa-verify/README.md b/zkrsa/circom-rsa-verify/README.md new file mode 100644 index 000000000..10ce63b71 --- /dev/null +++ b/zkrsa/circom-rsa-verify/README.md @@ -0,0 +1,25 @@ +# circom-rsa-verify +This repository contains an implementation of a Zero Knowledge Proof for RSA signature verify for the circom language. +Currently supported pkcs1v15 + sha256 and exponent is 65537 +# Getting started +Running circuits test cases +```sh +git submodule update --init --recursive; npm install; npm test +``` + +## Circuits Benchmark +RSA verify: pkcs1v15/sha256/2048 bits key +* Env: Mac mini (M1, 2020). 8 cores. 8 threads +* Memory consumption: 1.7G +* Time consumption: 150s +## The circom compiler + +This repository uses a modified version of the circom compiler found at +[alex-ozdemir/circom](https://github.com/alex-ozdemir/circom). +It includes a few extra features not found in the original: + + * Clearer error printouts + * More comprehensive/informative treatment of `log` statements + * A new type `int` which enables bigints to be handled during witness + computations. + * `compute` blocks diff --git a/zkrsa/circom-rsa-verify/circom-bigint/.gitignore b/zkrsa/circom-rsa-verify/circom-bigint/.gitignore new file mode 100644 index 000000000..3c3629e64 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/.gitignore @@ -0,0 +1 @@ +node_modules diff --git a/zkrsa/circom-rsa-verify/circom-bigint/.gitmodules b/zkrsa/circom-rsa-verify/circom-bigint/.gitmodules new file mode 100644 index 000000000..db395a376 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/.gitmodules @@ -0,0 +1,3 @@ +[submodule "circomlib"] + path = circomlib + url = https://github.com/iden3/circomlib diff --git a/zkrsa/circom-rsa-verify/circom-bigint/README.md b/zkrsa/circom-rsa-verify/circom-bigint/README.md new file mode 100644 index 000000000..0f08c16e6 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/README.md @@ -0,0 +1,32 @@ +# circom-bigint + +This repository contains an implementation of arbitrary-precision natural +numbers for the [`circom`](https://github.com/iden3/circom) language. + +## Getting Started + +First you'll need a copy of `circomlib` within this repository. You can get it +by running + + git submodule update --init --recursive + +Then you'll need to install a local copy of the `circom` compiler and the +testing frameworks + + npm install + +Then you can run the tests + + npm test + +## The circom compiler + +This repository uses a modified version of the circom compiler found at +[alex-ozdemir/circom](https://github.com/alex-ozdemir/circom). +It includes a few extra features not found in the original: + + * Clearer error printouts + * More comprehensive/informative treatment of `log` statements + * A new type `int` which enables bigints to be handled during witness + computations. + * `compute` blocks diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/.eslintrc.js b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/.eslintrc.js new file mode 100644 index 000000000..2f45ad9f5 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/.eslintrc.js @@ -0,0 +1,33 @@ +module.exports = { + "plugins": [ + "mocha" + ], + "env": { + "es6": true, + "node": true, + "mocha": true + }, + "parserOptions": { + "ecmaVersion": 2017 + }, + "extends": "eslint:recommended", + "rules": { + "indent": [ + "error", + 4 + ], + "linebreak-style": [ + "error", + "unix" + ], + "quotes": [ + "error", + "double" + ], + "semi": [ + "error", + "always" + ], + "mocha/no-exclusive-tests": "error" + } +}; diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/.gitignore b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/.gitignore new file mode 100644 index 000000000..50d8b989b --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/.gitignore @@ -0,0 +1,65 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Typescript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + +# next.js build output +.next + +tmp + +.DS_Store \ No newline at end of file diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/README.md b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/README.md new file mode 100644 index 000000000..2eb00daad --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/README.md @@ -0,0 +1,4 @@ +# cirpedersen + +Pedersen Hash and Exponentiation circuits using Baby Jub Curve in circom language + diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/calcpedersenbases/calcpedersenbases.js b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/calcpedersenbases/calcpedersenbases.js new file mode 100644 index 000000000..0008a9d8b --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/calcpedersenbases/calcpedersenbases.js @@ -0,0 +1,83 @@ +const bn128 = require("snarkjs").bn128; +const bigInt = require("snarkjs").bigInt; +const createBlakeHash = require("blake-hash"); +const babyJub = require("../src/babyjub"); + +function getPoint(S) { + const F = bn128.Fr; + const h = createBlakeHash("blake256").update(S).digest(); + + if (h.length != 32) { + throw new Error("Invalid length") + } + + let sign = false; + if (h[31] & 0x80) { + h[31] = h[31] & 0x7F; + sign = true; + } + + let y = bigInt(0); + for (let i=0; i<32; i++) { + y = y.shl(8); + y = y.add(bigInt(h[i])); + } + + const a = bigInt("168700"); + const d = bigInt("168696"); + + const y2 = F.square(y); + + let x = F.sqrt(F.div( + F.sub(F.one, y2), + F.sub(a, F.mul(d, y2)))); + + if (x == null) return null; + + if (sign) x = F.neg(x); + + const p = [bn128.Fr.affine(x), bn128.Fr.affine(y)]; + + const p8 = babyJub.mulPointEscalar(p, 8); + + return p8; +} + + +function generatePoint(S) { + let p= null; + let idx = 0; + while (p==null) { + let sidx = "" + idx; + while (sidx.length<16) sidx = "0"+sidx; + p = getPoint(S+"_"+sidx); + idx++; + } + if (!babyJub.inCurve(p)){ + throw new Error("Point not in curve"); + } + return p; +} + + + + + +const g = [ + bigInt("5299619240641551281634865583518297030282874472190772894086521144482721001553"), + bigInt("16950150798460657717958625567821834550301663161624707787222815936182638968203")]; + +// Sanity check +if (!babyJub.inCurve(g)) { + throw new Error("Generator not In curve -> Some thing goes wrong..."); +} + +for (let i=0; i<25; i++) { + let S = "" +i; + while (S.length<16) S = "0"+S; + const P = generatePoint("Iden3_PedersenGenerator_"+S); + console.log(`[${P[0].toString()}, ${P[1].toString()}]`); +} + + + diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/README.md b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/README.md new file mode 100644 index 000000000..6c9e76aaa --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/README.md @@ -0,0 +1,14 @@ +* compconstant - Returns 1 if `in` (expanded to binary array) > `ct` +* aliascheck - check if `in` (expanded to binary array) oveflowed its 254 bits (<= -1) +* babyjub - twisted Edwards curve 168700.x^2 + y^2 = 1 + 168696.x^2.y^2 + * BabyAdd - (`xout`,`yout`) = (`x1`,`y1`) + (`x2`,`y2`) + * BabyDbl - (`xout`,`yout`) = 2*(`x`,`y`) + * BabyCheck - check that (`x`,`y`) is on the curve +* binsub - binary subtraction +* gates - logical gates +* mimc - SNARK-friendly hash Minimal Multiplicative Complexity. + * https://eprint.iacr.org/2016/492.pdf + * zcash/zcash#2233 +* smt - Sparse Merkle Tree + * https://ethresear.ch/t/optimizing-sparse-merkle-trees/3751 +* montgomery https://en.wikipedia.org/wiki/Montgomery_curve \ No newline at end of file diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/aliascheck.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/aliascheck.circom new file mode 100644 index 000000000..c4dfad576 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/aliascheck.circom @@ -0,0 +1,32 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +include "compconstant.circom"; + + +template AliasCheck() { + + signal input in[254]; + + component compConstant = CompConstant(-1); + + for (var i=0; i<254; i++) in[i] ==> compConstant.in[i]; + + compConstant.out === 0; +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/babyjub.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/babyjub.circom new file mode 100644 index 000000000..73cb84cf5 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/babyjub.circom @@ -0,0 +1,106 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +include "bitify.circom"; +include "escalarmulfix.circom"; + +template BabyAdd() { + signal input x1; + signal input y1; + signal input x2; + signal input y2; + signal output xout; + signal output yout; + + signal beta; + signal gamma; + signal delta; + signal tau; + + var a = 168700; + var d = 168696; + + beta <== x1*y2; + gamma <== y1*x2; + delta <== (-a*x1+y1)*(x2 + y2); + tau <== beta * gamma; + + xout <-- (beta + gamma) / (1+ d*tau); + (1+ d*tau) * xout === (beta + gamma); + + yout <-- (delta + a*beta - gamma) / (1-d*tau); + (1-d*tau)*yout === (delta + a*beta - gamma); +} + +template BabyDbl() { + signal input x; + signal input y; + signal output xout; + signal output yout; + + component adder = BabyAdd(); + adder.x1 <== x; + adder.y1 <== y; + adder.x2 <== x; + adder.y2 <== y; + + adder.xout ==> xout; + adder.yout ==> yout; +} + + +template BabyCheck() { + signal input x; + signal input y; + + signal x2; + signal y2; + + var a = 168700; + var d = 168696; + + x2 <== x*x; + y2 <== y*y; + + a*x2 + y2 === 1 + d*x2*y2; +} + +// Extracts the public key from private key +template BabyPbk() { + signal private input in; + signal output Ax; + signal output Ay; + + var BASE8 = [ + 5299619240641551281634865583518297030282874472190772894086521144482721001553, + 16950150798460657717958625567821834550301663161624707787222815936182638968203 + ]; + + component pvkBits = Num2Bits(253); + pvkBits.in <== in; + + component mulFix = EscalarMulFix(253, BASE8); + + var i; + for (i=0; i<253; i++) { + mulFix.e[i] <== pvkBits.out[i]; + } + Ax <== mulFix.out[0]; + Ay <== mulFix.out[1]; +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/binsub.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/binsub.circom new file mode 100644 index 000000000..ec52d833e --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/binsub.circom @@ -0,0 +1,71 @@ + /* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +/* +This component creates a binary substraction. + + +Main Constraint: + (in[0][0] * 2^0 + in[0][1] * 2^1 + ..... + in[0][n-1] * 2^(n-1)) + + + 2^n + - (in[1][0] * 2^0 + in[1][1] * 2^1 + ..... + in[1][n-1] * 2^(n-1)) + === + out[0] * 2^0 + out[1] * 2^1 + + out[n-1] *2^(n-1) + aux + + + out[0] * (out[0] - 1) === 0 + out[1] * (out[0] - 1) === 0 + . + . + . + out[n-1] * (out[n-1] - 1) === 0 + aux * (aux-1) == 0 + +*/ + +template BinSub(n) { + signal input in[2][n]; + signal output out[n]; + + signal aux; + + var lin = 2**n; + var lout = 0; + + for (var i=0; i> i) & 1; + + // Ensure out is binary + out[i] * (out[i] - 1) === 0; + + lout = lout + out[i]*(2**i); + } + + aux <-- (lin >> n) & 1; + aux*(aux-1) === 0; + lout = lout + aux*(2**n); + + // Ensure the sum; + lin === lout; +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/binsum.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/binsum.circom new file mode 100644 index 000000000..3783e2607 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/binsum.circom @@ -0,0 +1,93 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +/* + +Binary Sum +========== + +This component creates a binary sum componet of ops operands and n bits each operand. + +e is Number of carries: Depends on the number of operands in the input. + +Main Constraint: + in[0][0] * 2^0 + in[0][1] * 2^1 + ..... + in[0][n-1] * 2^(n-1) + + + in[1][0] * 2^0 + in[1][1] * 2^1 + ..... + in[1][n-1] * 2^(n-1) + + + .. + + in[ops-1][0] * 2^0 + in[ops-1][1] * 2^1 + ..... + in[ops-1][n-1] * 2^(n-1) + + === + out[0] * 2^0 + out[1] * 2^1 + + out[n+e-1] *2(n+e-1) + +To waranty binary outputs: + + out[0] * (out[0] - 1) === 0 + out[1] * (out[0] - 1) === 0 + . + . + . + out[n+e-1] * (out[n+e-1] - 1) == 0 + + */ + + +/* + This function calculates the number of extra bits in the output to do the full sum. + */ + +function nbits(a) { + var n = 1; + var r = 0; + while (n-1> k) & 1; + + // Ensure out is binary + out[k] * (out[k] - 1) === 0; + + lout += out[k] * 2**k; + } + + // Ensure the sum; + + lin === lout; +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/bitify.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/bitify.circom new file mode 100644 index 000000000..2050e139f --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/bitify.circom @@ -0,0 +1,101 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +include "comparators.circom"; +include "aliascheck.circom"; + + +template Num2Bits(n) { + signal input in; + signal output out[n]; + var lc1=0; + + for (var i = 0; i> i) & 1; + out[i] * (out[i] -1 ) === 0; + lc1 += out[i] * 2**i; + } + + lc1 === in; +} + +template Num2Bits_strict() { + signal input in; + signal output out[254]; + + component aliasCheck = AliasCheck(); + component n2b = Num2Bits(254); + in ==> n2b.in; + + for (var i=0; i<254; i++) { + n2b.out[i] ==> out[i]; + n2b.out[i] ==> aliasCheck.in[i]; + } +} + +template Bits2Num(n) { + signal input in[n]; + signal output out; + var lc1=0; + + for (var i = 0; i out; +} + +template Bits2Num_strict() { + signal input in[n]; + signal output out; + + component aliasCheck = AliasCheck(); + component b2n = Bits2Num(254); + + for (var i=0; i<254; i++) { + in[i] ==> b2n.in[i]; + in[i] ==> aliasCheck.in[i]; + } + + b2n.out ==> out; +} + +template Num2BitsNeg(n) { + signal input in; + signal output out[n]; + var lc1=0; + + component isZero; + + isZero = IsZero(); + + var neg = n == 0 ? 0 : 2**n - in; + + for (var i = 0; i> i) & 1; + out[i] * (out[i] -1 ) === 0; + lc1 += out[i] * 2**i; + } + + in ==> isZero.in; + + + + lc1 + isZero.out * 2**n === 2**n - in; +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/comparators.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/comparators.circom new file mode 100644 index 000000000..3eaa3d8d7 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/comparators.circom @@ -0,0 +1,139 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +include "bitify.circom"; +include "binsum.circom"; + +template IsZero() { + signal input in; + signal output out; + + signal inv; + + inv <-- in!=0 ? 1/in : 0; + + out <== -in*inv +1; + in*out === 0; +} + + +template IsEqual() { + signal input in[2]; + signal output out; + + component isz = IsZero(); + + in[1] - in[0] ==> isz.in; + + isz.out ==> out; +} + +template ForceEqualIfEnabled() { + signal input enabled; + signal input in[2]; + + component isz = IsZero(); + + in[1] - in[0] ==> isz.in; + + (1 - isz.out)*enabled === 0; +} + +/* +// N is the number of bits the input have. +// The MSF is the sign bit. +template LessThan(n) { + signal input in[2]; + signal output out; + + component num2Bits0; + component num2Bits1; + + component adder; + + adder = BinSum(n, 2); + + num2Bits0 = Num2Bits(n); + num2Bits1 = Num2BitsNeg(n); + + in[0] ==> num2Bits0.in; + in[1] ==> num2Bits1.in; + + var i; + for (i=0;i adder.in[0][i]; + num2Bits1.out[i] ==> adder.in[1][i]; + } + + adder.out[n-1] ==> out; +} +*/ + +template LessThan(n) { + signal input in[2]; + signal output out; + + component n2b = Num2Bits(n*2+1); + + n2b.in <== in[0]+ (1< out; +} + +// N is the number of bits the input have. +// The MSF is the sign bit. +template GreaterThan(n) { + signal input in[2]; + signal output out; + + component lt = LessThan(n); + + lt.in[0] <== in[1]; + lt.in[1] <== in[0]; + lt.out ==> out; +} + +// N is the number of bits the input have. +// The MSF is the sign bit. +template GreaterEqThan(n) { + signal input in[2]; + signal output out; + + component lt = LessThan(n); + + lt.in[0] <== in[1]; + lt.in[1] <== in[0]+1; + lt.out ==> out; +} + diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/compconstant.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/compconstant.circom new file mode 100644 index 000000000..96a6f1b86 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/compconstant.circom @@ -0,0 +1,74 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +include "bitify.circom"; + +// Returns 1 if in (in binary) > ct + +template CompConstant(ct) { + signal input in[254]; + signal output out; + + signal parts[127]; + signal sout; + + var clsb; + var cmsb; + var slsb; + var smsb; + + var sum=0; + + var b = (1 << 128) -1; + var a = 1; + var e = 1; + var i; + + for (i=0;i<127; i++) { + clsb = (ct >> (i*2)) & 1; + cmsb = (ct >> (i*2+1)) & 1; + slsb = in[i*2]; + smsb = in[i*2+1]; + + + if ((cmsb==0)&(clsb==0)) { + parts[i] <== -b*smsb*slsb + b*smsb + b*slsb; + } else if ((cmsb==0)&(clsb==1)) { + parts[i] <== a*smsb*slsb - a*slsb + b*smsb - a*smsb + a; + } else if ((cmsb==1)&(clsb==0)) { + parts[i] <== b*smsb*slsb - a*smsb + a; + } else { + parts[i] <== -a*smsb*slsb + a; + } + + sum = sum + parts[i]; + + b = b -e; + a = a +e; + e = e*2; + } + + sout <== sum; + + component num2bits = Num2Bits(135); + + num2bits.in <== sout; + + out <== num2bits.out[127]; +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/eddsa.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/eddsa.circom new file mode 100644 index 000000000..10267744c --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/eddsa.circom @@ -0,0 +1,138 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +include "compconstant.circom"; +include "pointbits.circom"; +include "pedersen.circom"; +include "escalarmulany.circom"; +include "escalarmulfix.circom"; + +template EdDSAVerifier(n) { + signal input msg[n]; + + signal input A[256]; + signal input R8[256]; + signal input S[256]; + + signal Ax; + signal Ay; + + signal R8x; + signal R8y; + + var i; + +// Ensure S compConstant.in[i]; + } + compConstant.out === 0; + S[254] === 0; + S[255] === 0; + +// Convert A to Field elements (And verify A) + + component bits2pointA = Bits2Point_Strict(); + + for (i=0; i<256; i++) { + bits2pointA.in[i] <== A[i]; + } + Ax <== bits2pointA.out[0]; + Ay <== bits2pointA.out[1]; + +// Convert R8 to Field elements (And verify R8) + + component bits2pointR8 = Bits2Point_Strict(); + + for (i=0; i<256; i++) { + bits2pointR8.in[i] <== R8[i]; + } + R8x <== bits2pointR8.out[0]; + R8y <== bits2pointR8.out[1]; + +// Calculate the h = H(R,A, msg) + + component hash = Pedersen(512+n); + + for (i=0; i<256; i++) { + hash.in[i] <== R8[i]; + hash.in[256+i] <== A[i]; + } + for (i=0; i. +*/ + +include "compconstant.circom"; +include "pointbits.circom"; +include "mimc.circom"; +include "bitify.circom"; +include "escalarmulany.circom"; +include "escalarmulfix.circom"; + +template EdDSAMiMCVerifier() { + signal input enabled; + signal input Ax; + signal input Ay; + + signal input S; + signal input R8x; + signal input R8y; + + signal input M; + + var i; + +// Ensure S compConstant.in[i]; + } + compConstant.in[253] <== 0; + compConstant.out === 0; + +// Calculate the h = H(R,A, msg) + + component hash = MultiMiMC7(5, 91); + hash.in[0] <== R8x; + hash.in[1] <== R8y; + hash.in[2] <== Ax; + hash.in[3] <== Ay; + hash.in[4] <== M; + hash.k <== 0; + + component h2bits = Num2Bits_strict(); + h2bits.in <== hash.out; + +// Calculate second part of the right side: right2 = h*8*A + + // Multiply by 8 by adding it 3 times. This also ensure that the result is in + // the subgroup. + component dbl1 = BabyDbl(); + dbl1.x <== Ax; + dbl1.y <== Ay; + component dbl2 = BabyDbl(); + dbl2.x <== dbl1.xout; + dbl2.y <== dbl1.yout; + component dbl3 = BabyDbl(); + dbl3.x <== dbl2.xout; + dbl3.y <== dbl2.yout; + + // We check that A is not zero. + component isZero = IsZero(); + isZero.in <== dbl3.x; + isZero.out === 0; + + component mulAny = EscalarMulAny(254); + for (i=0; i<254; i++) { + mulAny.e[i] <== h2bits.out[i]; + } + mulAny.p[0] <== dbl3.xout; + mulAny.p[1] <== dbl3.yout; + + +// Compute the right side: right = R8 + right2 + + component addRight = BabyAdd(); + addRight.x1 <== R8x; + addRight.y1 <== R8y; + addRight.x2 <== mulAny.out[0]; + addRight.y2 <== mulAny.out[1]; + +// Calculate left side of equation left = S*B8 + + var BASE8 = [ + 5299619240641551281634865583518297030282874472190772894086521144482721001553, + 16950150798460657717958625567821834550301663161624707787222815936182638968203 + ]; + component mulFix = EscalarMulFix(253, BASE8); + for (i=0; i<253; i++) { + mulFix.e[i] <== snum2bits.out[i]; + } + +// Do the comparation left == right if enabled; + + component eqCheckX = ForceEqualIfEnabled(); + eqCheckX.enabled <== enabled; + eqCheckX.in[0] <== mulFix.out[0]; + eqCheckX.in[1] <== addRight.xout; + + component eqCheckY = ForceEqualIfEnabled(); + eqCheckY.enabled <== enabled; + eqCheckY.in[0] <== mulFix.out[1]; + eqCheckY.in[1] <== addRight.yout; +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/eddsamimcsponge.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/eddsamimcsponge.circom new file mode 100644 index 000000000..af38d575e --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/eddsamimcsponge.circom @@ -0,0 +1,123 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +include "compconstant.circom"; +include "pointbits.circom"; +include "mimcsponge.circom"; +include "bitify.circom"; +include "escalarmulany.circom"; +include "escalarmulfix.circom"; + +template EdDSAMiMCSpongeVerifier() { + signal input enabled; + signal input Ax; + signal input Ay; + + signal input S; + signal input R8x; + signal input R8y; + + signal input M; + + var i; + +// Ensure S compConstant.in[i]; + } + compConstant.in[253] <== 0; + compConstant.out === 0; + +// Calculate the h = H(R,A, msg) + + component hash = MiMCSponge(5, 220, 1); + hash.ins[0] <== R8x; + hash.ins[1] <== R8y; + hash.ins[2] <== Ax; + hash.ins[3] <== Ay; + hash.ins[4] <== M; + hash.k <== 0; + + component h2bits = Num2Bits_strict(); + h2bits.in <== hash.outs[0]; + +// Calculate second part of the right side: right2 = h*8*A + + // Multiply by 8 by adding it 3 times. This also ensure that the result is in + // the subgroup. + component dbl1 = BabyDbl(); + dbl1.x <== Ax; + dbl1.y <== Ay; + component dbl2 = BabyDbl(); + dbl2.x <== dbl1.xout; + dbl2.y <== dbl1.yout; + component dbl3 = BabyDbl(); + dbl3.x <== dbl2.xout; + dbl3.y <== dbl2.yout; + + // We check that A is not zero. + component isZero = IsZero(); + isZero.in <== dbl3.x; + isZero.out === 0; + + component mulAny = EscalarMulAny(254); + for (i=0; i<254; i++) { + mulAny.e[i] <== h2bits.out[i]; + } + mulAny.p[0] <== dbl3.xout; + mulAny.p[1] <== dbl3.yout; + + +// Compute the right side: right = R8 + right2 + + component addRight = BabyAdd(); + addRight.x1 <== R8x; + addRight.y1 <== R8y; + addRight.x2 <== mulAny.out[0]; + addRight.y2 <== mulAny.out[1]; + +// Calculate left side of equation left = S*B8 + + var BASE8 = [ + 5299619240641551281634865583518297030282874472190772894086521144482721001553, + 16950150798460657717958625567821834550301663161624707787222815936182638968203 + ]; + component mulFix = EscalarMulFix(253, BASE8); + for (i=0; i<253; i++) { + mulFix.e[i] <== snum2bits.out[i]; + } + +// Do the comparation left == right if enabled; + + component eqCheckX = ForceEqualIfEnabled(); + eqCheckX.enabled <== enabled; + eqCheckX.in[0] <== mulFix.out[0]; + eqCheckX.in[1] <== addRight.xout; + + component eqCheckY = ForceEqualIfEnabled(); + eqCheckY.enabled <== enabled; + eqCheckY.in[0] <== mulFix.out[1]; + eqCheckY.in[1] <== addRight.yout; +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/eddsaposeidon.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/eddsaposeidon.circom new file mode 100644 index 000000000..66747478b --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/eddsaposeidon.circom @@ -0,0 +1,122 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +include "compconstant.circom"; +include "poseidon.circom"; +include "bitify.circom"; +include "escalarmulany.circom"; +include "escalarmulfix.circom"; + +template EdDSAPoseidonVerifier() { + signal input enabled; + signal input Ax; + signal input Ay; + + signal input S; + signal input R8x; + signal input R8y; + + signal input M; + + var i; + +// Ensure S compConstant.in[i]; + } + compConstant.in[253] <== 0; + compConstant.out === 0; + +// Calculate the h = H(R,A, msg) + + component hash = Poseidon(5, 6, 8, 57); + + hash.inputs[0] <== R8x; + hash.inputs[1] <== R8y; + hash.inputs[2] <== Ax; + hash.inputs[3] <== Ay; + hash.inputs[4] <== M; + + component h2bits = Num2Bits_strict(); + h2bits.in <== hash.out; + +// Calculate second part of the right side: right2 = h*8*A + + // Multiply by 8 by adding it 3 times. This also ensure that the result is in + // the subgroup. + component dbl1 = BabyDbl(); + dbl1.x <== Ax; + dbl1.y <== Ay; + component dbl2 = BabyDbl(); + dbl2.x <== dbl1.xout; + dbl2.y <== dbl1.yout; + component dbl3 = BabyDbl(); + dbl3.x <== dbl2.xout; + dbl3.y <== dbl2.yout; + + // We check that A is not zero. + component isZero = IsZero(); + isZero.in <== dbl3.x; + isZero.out === 0; + + component mulAny = EscalarMulAny(254); + for (i=0; i<254; i++) { + mulAny.e[i] <== h2bits.out[i]; + } + mulAny.p[0] <== dbl3.xout; + mulAny.p[1] <== dbl3.yout; + + +// Compute the right side: right = R8 + right2 + + component addRight = BabyAdd(); + addRight.x1 <== R8x; + addRight.y1 <== R8y; + addRight.x2 <== mulAny.out[0]; + addRight.y2 <== mulAny.out[1]; + +// Calculate left side of equation left = S*B8 + + var BASE8 = [ + 5299619240641551281634865583518297030282874472190772894086521144482721001553, + 16950150798460657717958625567821834550301663161624707787222815936182638968203 + ]; + component mulFix = EscalarMulFix(253, BASE8); + for (i=0; i<253; i++) { + mulFix.e[i] <== snum2bits.out[i]; + } + +// Do the comparation left == right if enabled; + + component eqCheckX = ForceEqualIfEnabled(); + eqCheckX.enabled <== enabled; + eqCheckX.in[0] <== mulFix.out[0]; + eqCheckX.in[1] <== addRight.xout; + + component eqCheckY = ForceEqualIfEnabled(); + eqCheckY.enabled <== enabled; + eqCheckY.in[0] <== mulFix.out[1]; + eqCheckY.in[1] <== addRight.yout; +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/escalarmul.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/escalarmul.circom new file mode 100644 index 000000000..34b0ff2e1 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/escalarmul.circom @@ -0,0 +1,165 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +/* + + ┏━━━━━━━━━━━┓ + ┃ ┃ + ┃ ┃ + (inx, iny) ══════════════════════════════════════════▶┃ EC Point ┃ + ┃ ╠═▶ (outx, outy) + ╔══▶┃ Adder ┃ + ║ ┃ ┃ + ║ ┃ ┃ + ║ ┃ ┃ + ┏━━━━━━━━━━━┓ ┏━━━━━━━━━━━━┓ ║ ┗━━━━━━━━━━━┛ + ┃ ┃ ┃ ┃ ║ + ┃ ┃ ┃ ┃ ║ + ┃ ╠═══(p0x,p0y)═══▶┃ ┃ ║ + ┃ ╠═══(p1x,p1y)═══▶┃ ┃ ║ + ┃ ╠═══(p2x,p2y)═══▶┃ ┃ ║ + ┃ ╠═══(p3x,p3y)═══▶┃ ┃ ║ + ┃ ╠═══(p4x,p4y)═══▶┃ ┃ ║ + ┃ ╠═══(p5x,p5y)═══▶┃ ┃ ║ + ┃ ╠═══(p6x,p6y)═══▶┃ ┃ ║ + ┃ Constant ╠═══(p7x,p7y)═══▶┃ ┃ ║ + ┃ Points ┃ ┃ Mux4 ╠══╝ + ┃ ╠═══(p8x,p8y)═══▶┃ ┃ + ┃ ╠═══(p9x,p9y)═══▶┃ ┃ + ┃ ╠══(p10x,p10y)══▶┃ ┃ + ┃ ╠══(p11x,p11y)══▶┃ ┃ + ┃ ╠══(p12x,p12y)══▶┃ ┃ + ┃ ╠══(p13x,p13y)══▶┃ ┃ + ┃ ╠══(p14x,p14y)══▶┃ ┃ + ┃ ╠══(p15x,p15y)══▶┃ ┃ + ┃ ┃ ┃ ┃ + ┃ ┃ ┃ ┃ + ┗━━━━━━━━━━━┛ ┗━━━━━━━━━━━━┛ + ▲ ▲ ▲ ▲ + │ │ │ │ + s0 ─────────────────────────────────┘ │ │ │ + s1 ────────────────────────────────────┘ │ │ + s2 ───────────────────────────────────────┘ │ + s3 ──────────────────────────────────────────┘ + + + */ + +include "mux4.circom"; +include "escalarmulw4table.circom"; +include "babyjub.circom"; + +template EscalarMulWindow(base, k) { + + signal input in[2]; + signal input sel[4]; + signal output out[2]; + + component table; + component mux; + component adder; + + var i; + + table = EscalarMulW4Table(base, k); + mux = MultiMux4(2); + adder = BabyAdd(); + + for (i=0; i<4; i++) { + sel[i] ==> mux.s[i]; + } + + for (i=0; i<16; i++) { + table.out[i][0] ==> mux.c[0][i]; + table.out[i][1] ==> mux.c[1][i]; + } + + in[0] ==> adder.x1; + in[1] ==> adder.y1; + + mux.out[0] ==> adder.x2; + mux.out[1] ==> adder.y2; + + adder.xout ==> out[0]; + adder.yout ==> out[1]; +} + +/* + + + ┏━━━━━━━━━┓ ┏━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ + inp ════▶┃Window(0)┃═════▶┃Window(1)┃════════ . . . . ═════════▶┃ Window(nBlocks-1) ┃═════▶ out + ┃ ┃ ┃ ┃ ┃ ┃ + ┗━━━━━━━━━┛ ┗━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━━━━━┛ + ▲ ▲ ▲ ▲ ▲ ▲ ▲ ▲ ▲ ▲ ▲ ▲ + in[0]─────────┘ │ │ │ │ │ │ │ │ │ │ │ + in[1]───────────┘ │ │ │ │ │ │ │ │ │ │ + in[2]─────────────┘ │ │ │ │ │ │ │ 0 0 + in[3]───────────────┘ │ │ │ │ │ │ + in[4]──────────────────────────┘ │ │ │ │ │ + in[5]────────────────────────────┘ │ │ │ │ + in[6]──────────────────────────────┘ │ │ │ + in[7]────────────────────────────────┘ │ │ + . │ │ + . │ │ + in[n-2]─────────────────────────────────────────────────────────────────────┘ │ + in[n-1]───────────────────────────────────────────────────────────────────────┘ + + */ + +template EscalarMul(n, base) { + signal input in[n]; + signal input inp[2]; // Point input to be added + signal output out[2]; + + var nBlocks = ((n-1)>>2)+1; + var i; + var j; + + component windows[nBlocks]; + + // Construct the windows + for (i=0; i= n) { + windows[i].sel[j] <== 0; + } else { + windows[i].sel[j] <== in[i*4+j]; + } + } + } + + // Start with generator + windows[0].in[0] <== inp[0]; + windows[0].in[1] <== inp[1]; + + for(i=0; i windows[i+1].in[0]; + windows[i].out[1] ==> windows[i+1].in[1]; + } + + windows[nBlocks-1].out[0] ==> out[0]; + windows[nBlocks-1].out[1] ==> out[1]; +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/escalarmulany.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/escalarmulany.circom new file mode 100644 index 000000000..50c0c7ea4 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/escalarmulany.circom @@ -0,0 +1,192 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +include "montgomery.circom"; +include "babyjub.circom"; + +template Multiplexor2() { + signal input sel; + signal input in[2][2]; + signal output out[2]; + + out[0] <== (in[1][0] - in[0][0])*sel + in[0][0]; + out[1] <== (in[1][1] - in[0][1])*sel + in[0][1]; +} + +template BitElementMulAny() { + signal input sel; + signal input dblIn[2]; + signal input addIn[2]; + signal output dblOut[2]; + signal output addOut[2]; + + component doubler = MontgomeryDouble(); + component adder = MontgomeryAdd(); + component selector = Multiplexor2(); + + + sel ==> selector.sel; + + dblIn[0] ==> doubler.in[0]; + dblIn[1] ==> doubler.in[1]; + doubler.out[0] ==> adder.in1[0]; + doubler.out[1] ==> adder.in1[1]; + addIn[0] ==> adder.in2[0]; + addIn[1] ==> adder.in2[1]; + addIn[0] ==> selector.in[0][0]; + addIn[1] ==> selector.in[0][1]; + adder.out[0] ==> selector.in[1][0]; + adder.out[1] ==> selector.in[1][1]; + + doubler.out[0] ==> dblOut[0]; + doubler.out[1] ==> dblOut[1]; + selector.out[0] ==> addOut[0]; + selector.out[1] ==> addOut[1]; +} + +// p is montgomery point +// n must be <= 248 +// returns out in twisted edwards +// Double is in montgomery to be linked; + +template SegmentMulAny(n) { + signal input e[n]; + signal input p[2]; + signal output out[2]; + signal output dbl[2]; + + component bits[n-1]; + + component e2m = Edwards2Montgomery(); + + p[0] ==> e2m.in[0]; + p[1] ==> e2m.in[1]; + + var i; + + bits[0] = BitElementMulAny(); + e2m.out[0] ==> bits[0].dblIn[0] + e2m.out[1] ==> bits[0].dblIn[1] + e2m.out[0] ==> bits[0].addIn[0] + e2m.out[1] ==> bits[0].addIn[1] + e[1] ==> bits[0].sel; + + for (i=1; i bits[i].dblIn[0] + bits[i-1].dblOut[1] ==> bits[i].dblIn[1] + bits[i-1].addOut[0] ==> bits[i].addIn[0] + bits[i-1].addOut[1] ==> bits[i].addIn[1] + e[i+1] ==> bits[i].sel; + } + + bits[n-2].dblOut[0] ==> dbl[0]; + bits[n-2].dblOut[1] ==> dbl[1]; + + component m2e = Montgomery2Edwards(); + + bits[n-2].addOut[0] ==> m2e.in[0]; + bits[n-2].addOut[1] ==> m2e.in[1]; + + component eadder = BabyAdd(); + + m2e.out[0] ==> eadder.x1; + m2e.out[1] ==> eadder.y1; + -p[0] ==> eadder.x2; + p[1] ==> eadder.y2; + + component lastSel = Multiplexor2(); + + e[0] ==> lastSel.sel; + eadder.xout ==> lastSel.in[0][0]; + eadder.yout ==> lastSel.in[0][1]; + m2e.out[0] ==> lastSel.in[1][0]; + m2e.out[1] ==> lastSel.in[1][1]; + + lastSel.out[0] ==> out[0]; + lastSel.out[1] ==> out[1]; +} + +// This function assumes that p is in the subgroup and it is different to 0 + +template EscalarMulAny(n) { + signal input e[n]; // Input in binary format + signal input p[2]; // Point (Twisted format) + signal output out[2]; // Point (Twisted format) + + var nsegments = (n-1)\148 +1; + var nlastsegment = n - (nsegments-1)*148; + + component segments[nsegments]; + component doublers[nsegments-1]; + component m2e[nsegments-1]; + component adders[nsegments-1]; + + var s; + var i; + var nseg; + + for (s=0; s segments[s].e[i]; + } + + if (s==0) { + p[0] ==> segments[s].p[0]; + p[1] ==> segments[s].p[1]; + } else { + doublers[s-1] = MontgomeryDouble(); + m2e[s-1] = Montgomery2Edwards(); + adders[s-1] = BabyAdd(); + + segments[s-1].dbl[0] ==> doublers[s-1].in[0]; + segments[s-1].dbl[1] ==> doublers[s-1].in[1]; + + doublers[s-1].out[0] ==> m2e[s-1].in[0]; + doublers[s-1].out[1] ==> m2e[s-1].in[1]; + + m2e[s-1].out[0] ==> segments[s].p[0]; + m2e[s-1].out[1] ==> segments[s].p[1]; + + if (s==1) { + segments[s-1].out[0] ==> adders[s-1].x1; + segments[s-1].out[1] ==> adders[s-1].y1; + } else { + adders[s-2].xout ==> adders[s-1].x1; + adders[s-2].yout ==> adders[s-1].y1; + } + segments[s].out[0] ==> adders[s-1].x2; + segments[s].out[1] ==> adders[s-1].y2; + } + } + + if (nsegments == 1) { + segments[0].out[0] ==> out[0]; + segments[0].out[1] ==> out[1]; + } else { + adders[nsegments-2].xout ==> out[0]; + adders[nsegments-2].yout ==> out[1]; + } +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/escalarmulfix.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/escalarmulfix.circom new file mode 100644 index 000000000..e8262c0f5 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/escalarmulfix.circom @@ -0,0 +1,298 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +include "mux3.circom"; +include "montgomery.circom"; +include "babyjub.circom"; + +/* + Window of 3 elements, it calculates + out = base + base*in[0] + 2*base*in[1] + 4*base*in[2] + out4 = 4*base + + The result should be compensated. + */ + +/* + + The scalar is s = a0 + a1*2^3 + a2*2^6 + ...... + a81*2^243 + First We calculate Q = B + 2^3*B + 2^6*B + ......... + 2^246*B + + Then we calculate S1 = 2*2^246*B + (1 + a0)*B + (2^3 + a1)*B + .....+ (2^243 + a81)*B + + And Finaly we compute the result: RES = SQ - Q + + As you can see the input of the adders cannot be equal nor zero, except for the last + substraction that it's done in montgomery. + + A good way to see it is that the accumulator input of the adder >= 2^247*B and the other input + is the output of the windows that it's going to be <= 2^246*B + */ +template WindowMulFix() { + signal input in[3]; + signal input base[2]; + signal output out[2]; + signal output out8[2]; // Returns 8*Base (To be linked) + + component mux = MultiMux3(2); + + mux.s[0] <== in[0]; + mux.s[1] <== in[1]; + mux.s[2] <== in[2]; + + component dbl2 = MontgomeryDouble(); + component adr3 = MontgomeryAdd(); + component adr4 = MontgomeryAdd(); + component adr5 = MontgomeryAdd(); + component adr6 = MontgomeryAdd(); + component adr7 = MontgomeryAdd(); + component adr8 = MontgomeryAdd(); + +// in[0] -> 1*BASE + + mux.c[0][0] <== base[0]; + mux.c[1][0] <== base[1]; + +// in[1] -> 2*BASE + dbl2.in[0] <== base[0]; + dbl2.in[1] <== base[1]; + mux.c[0][1] <== dbl2.out[0]; + mux.c[1][1] <== dbl2.out[1]; + +// in[2] -> 3*BASE + adr3.in1[0] <== base[0]; + adr3.in1[1] <== base[1]; + adr3.in2[0] <== dbl2.out[0]; + adr3.in2[1] <== dbl2.out[1]; + mux.c[0][2] <== adr3.out[0]; + mux.c[1][2] <== adr3.out[1]; + +// in[3] -> 4*BASE + adr4.in1[0] <== base[0]; + adr4.in1[1] <== base[1]; + adr4.in2[0] <== adr3.out[0]; + adr4.in2[1] <== adr3.out[1]; + mux.c[0][3] <== adr4.out[0]; + mux.c[1][3] <== adr4.out[1]; + +// in[4] -> 5*BASE + adr5.in1[0] <== base[0]; + adr5.in1[1] <== base[1]; + adr5.in2[0] <== adr4.out[0]; + adr5.in2[1] <== adr4.out[1]; + mux.c[0][4] <== adr5.out[0]; + mux.c[1][4] <== adr5.out[1]; + +// in[5] -> 6*BASE + adr6.in1[0] <== base[0]; + adr6.in1[1] <== base[1]; + adr6.in2[0] <== adr5.out[0]; + adr6.in2[1] <== adr5.out[1]; + mux.c[0][5] <== adr6.out[0]; + mux.c[1][5] <== adr6.out[1]; + +// in[6] -> 7*BASE + adr7.in1[0] <== base[0]; + adr7.in1[1] <== base[1]; + adr7.in2[0] <== adr6.out[0]; + adr7.in2[1] <== adr6.out[1]; + mux.c[0][6] <== adr7.out[0]; + mux.c[1][6] <== adr7.out[1]; + +// in[7] -> 8*BASE + adr8.in1[0] <== base[0]; + adr8.in1[1] <== base[1]; + adr8.in2[0] <== adr7.out[0]; + adr8.in2[1] <== adr7.out[1]; + mux.c[0][7] <== adr8.out[0]; + mux.c[1][7] <== adr8.out[1]; + + out8[0] <== adr8.out[0]; + out8[1] <== adr8.out[1]; + + out[0] <== mux.out[0]; + out[1] <== mux.out[1]; +} + + +/* + This component does a multiplication of a escalar times a fix base + Signals: + e: The scalar in bits + base: the base point in edwards format + out: The result + dbl: Point in Edwards to be linked to the next segment. + */ + +template SegmentMulFix(nWindows) { + signal input e[nWindows*3]; + signal input base[2]; + signal output out[2]; + signal output dbl[2]; + + var i; + var j; + + // Convert the base to montgomery + + component e2m = Edwards2Montgomery(); + e2m.in[0] <== base[0]; + e2m.in[1] <== base[1]; + + component windows[nWindows]; + component adders[nWindows]; + component cadders[nWindows]; + + // In the last step we add an extra doubler so that numbers do not match. + component dblLast = MontgomeryDouble(); + + for (i=0; i out[0]; + cAdd.yout ==> out[1]; + + windows[nWindows-1].out8[0] ==> dbl[0]; + windows[nWindows-1].out8[1] ==> dbl[1]; +} + + +/* +This component multiplies a escalar times a fixed point BASE (twisted edwards format) + Signals + e: The escalar in binary format + out: The output point in twisted edwards + */ +template EscalarMulFix(n, BASE) { + signal input e[n]; // Input in binary format + signal output out[2]; // Point (Twisted format) + + var nsegments = (n-1)\246 +1; // 249 probably would work. But I'm not sure and for security I keep 246 + var nlastsegment = n - (nsegments-1)*249; + + component segments[nsegments]; + + component m2e[nsegments-1]; + component adders[nsegments-1]; + + var s; + var i; + var nseg; + var nWindows + + for (s=0; s m2e[s-1].in[0]; + segments[s-1].dbl[1] ==> m2e[s-1].in[1]; + + m2e[s-1].out[0] ==> segments[s].base[0]; + m2e[s-1].out[1] ==> segments[s].base[1]; + + if (s==1) { + segments[s-1].out[0] ==> adders[s-1].x1; + segments[s-1].out[1] ==> adders[s-1].y1; + } else { + adders[s-2].xout ==> adders[s-1].x1; + adders[s-2].yout ==> adders[s-1].y1; + } + segments[s].out[0] ==> adders[s-1].x2; + segments[s].out[1] ==> adders[s-1].y2; + } + } + + if (nsegments == 1) { + segments[0].out[0] ==> out[0]; + segments[0].out[1] ==> out[1]; + } else { + adders[nsegments-2].xout ==> out[0]; + adders[nsegments-2].yout ==> out[1]; + } +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/escalarmulw4table.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/escalarmulw4table.circom new file mode 100644 index 000000000..727197ae5 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/escalarmulw4table.circom @@ -0,0 +1,49 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +function pointAdd(x1,y1,x2,y2) { + var a = 168700; + var d = 168696; + + var res[2]; + res[0] = (x1*y2 + y1*x2) / (1 + d*x1*x2*y1*y2); + res[1] = (y1*y2 - a*x1*x2) / (1 - d*x1*x2*y1*y2); + return res; +} + +template EscalarMulW4Table(base, k) { + signal output out[16][2]; + + var i; + var p[2]; + + var dbl = base; + + for (i=0; i. +*/ + +template XOR() { + signal input a; + signal input b; + signal output out; + + out <== a + b - 2*a*b; +} + +template AND() { + signal input a; + signal input b; + signal output out; + + out <== a*b; +} + +template OR() { + signal input a; + signal input b; + signal output out; + + out <== a + b - a*b; +} + +template NOT() { + signal input in; + signal output out; + + out <== 1 + in - 2*in; +} + +template NAND() { + signal input a; + signal input b; + signal output out; + + out <== 1 - a*b; +} + +template NOR() { + signal input a; + signal input b; + signal output out; + + out <== a*b + 1 - a - b; +} + +template MultiAND(n) { + signal input in[n]; + signal output out; + if (n==1) { + out <== in[0]; + } else if (n==2) { + component and1 = AND(); + and1.a <== in[0]; + and1.b <== in[1]; + out <== and1.out; + } else { + component and2 = AND(); + component ands[2]; + var n1 = n\2; + var n2 = n-n\2; + ands[0] = MultiAND(n1); + ands[1] = MultiAND(n2); + for (var i=0; i. +*/ + +template MiMC7(nrounds) { + signal input x_in; + signal input k; + signal output out; + + var c = [ + 0, + 20888961410941983456478427210666206549300505294776164667214940546594746570981, + 15265126113435022738560151911929040668591755459209400716467504685752745317193, + 8334177627492981984476504167502758309043212251641796197711684499645635709656, + 1374324219480165500871639364801692115397519265181803854177629327624133579404, + 11442588683664344394633565859260176446561886575962616332903193988751292992472, + 2558901189096558760448896669327086721003508630712968559048179091037845349145, + 11189978595292752354820141775598510151189959177917284797737745690127318076389, + 3262966573163560839685415914157855077211340576201936620532175028036746741754, + 17029914891543225301403832095880481731551830725367286980611178737703889171730, + 4614037031668406927330683909387957156531244689520944789503628527855167665518, + 19647356996769918391113967168615123299113119185942498194367262335168397100658, + 5040699236106090655289931820723926657076483236860546282406111821875672148900, + 2632385916954580941368956176626336146806721642583847728103570779270161510514, + 17691411851977575435597871505860208507285462834710151833948561098560743654671, + 11482807709115676646560379017491661435505951727793345550942389701970904563183, + 8360838254132998143349158726141014535383109403565779450210746881879715734773, + 12663821244032248511491386323242575231591777785787269938928497649288048289525, + 3067001377342968891237590775929219083706800062321980129409398033259904188058, + 8536471869378957766675292398190944925664113548202769136103887479787957959589, + 19825444354178182240559170937204690272111734703605805530888940813160705385792, + 16703465144013840124940690347975638755097486902749048533167980887413919317592, + 13061236261277650370863439564453267964462486225679643020432589226741411380501, + 10864774797625152707517901967943775867717907803542223029967000416969007792571, + 10035653564014594269791753415727486340557376923045841607746250017541686319774, + 3446968588058668564420958894889124905706353937375068998436129414772610003289, + 4653317306466493184743870159523234588955994456998076243468148492375236846006, + 8486711143589723036499933521576871883500223198263343024003617825616410932026, + 250710584458582618659378487568129931785810765264752039738223488321597070280, + 2104159799604932521291371026105311735948154964200596636974609406977292675173, + 16313562605837709339799839901240652934758303521543693857533755376563489378839, + 6032365105133504724925793806318578936233045029919447519826248813478479197288, + 14025118133847866722315446277964222215118620050302054655768867040006542798474, + 7400123822125662712777833064081316757896757785777291653271747396958201309118, + 1744432620323851751204287974553233986555641872755053103823939564833813704825, + 8316378125659383262515151597439205374263247719876250938893842106722210729522, + 6739722627047123650704294650168547689199576889424317598327664349670094847386, + 21211457866117465531949733809706514799713333930924902519246949506964470524162, + 13718112532745211817410303291774369209520657938741992779396229864894885156527, + 5264534817993325015357427094323255342713527811596856940387954546330728068658, + 18884137497114307927425084003812022333609937761793387700010402412840002189451, + 5148596049900083984813839872929010525572543381981952060869301611018636120248, + 19799686398774806587970184652860783461860993790013219899147141137827718662674, + 19240878651604412704364448729659032944342952609050243268894572835672205984837, + 10546185249390392695582524554167530669949955276893453512788278945742408153192, + 5507959600969845538113649209272736011390582494851145043668969080335346810411, + 18177751737739153338153217698774510185696788019377850245260475034576050820091, + 19603444733183990109492724100282114612026332366576932662794133334264283907557, + 10548274686824425401349248282213580046351514091431715597441736281987273193140, + 1823201861560942974198127384034483127920205835821334101215923769688644479957, + 11867589662193422187545516240823411225342068709600734253659804646934346124945, + 18718569356736340558616379408444812528964066420519677106145092918482774343613, + 10530777752259630125564678480897857853807637120039176813174150229243735996839, + 20486583726592018813337145844457018474256372770211860618687961310422228379031, + 12690713110714036569415168795200156516217175005650145422920562694422306200486, + 17386427286863519095301372413760745749282643730629659997153085139065756667205, + 2216432659854733047132347621569505613620980842043977268828076165669557467682, + 6309765381643925252238633914530877025934201680691496500372265330505506717193, + 20806323192073945401862788605803131761175139076694468214027227878952047793390, + 4037040458505567977365391535756875199663510397600316887746139396052445718861, + 19948974083684238245321361840704327952464170097132407924861169241740046562673, + 845322671528508199439318170916419179535949348988022948153107378280175750024, + 16222384601744433420585982239113457177459602187868460608565289920306145389382, + 10232118865851112229330353999139005145127746617219324244541194256766741433339, + 6699067738555349409504843460654299019000594109597429103342076743347235369120, + 6220784880752427143725783746407285094967584864656399181815603544365010379208, + 6129250029437675212264306655559561251995722990149771051304736001195288083309, + 10773245783118750721454994239248013870822765715268323522295722350908043393604, + 4490242021765793917495398271905043433053432245571325177153467194570741607167, + 19596995117319480189066041930051006586888908165330319666010398892494684778526, + 837850695495734270707668553360118467905109360511302468085569220634750561083, + 11803922811376367215191737026157445294481406304781326649717082177394185903907, + 10201298324909697255105265958780781450978049256931478989759448189112393506592, + 13564695482314888817576351063608519127702411536552857463682060761575100923924, + 9262808208636973454201420823766139682381973240743541030659775288508921362724, + 173271062536305557219323722062711383294158572562695717740068656098441040230, + 18120430890549410286417591505529104700901943324772175772035648111937818237369, + 20484495168135072493552514219686101965206843697794133766912991150184337935627, + 19155651295705203459475805213866664350848604323501251939850063308319753686505, + 11971299749478202793661982361798418342615500543489781306376058267926437157297, + 18285310723116790056148596536349375622245669010373674803854111592441823052978, + 7069216248902547653615508023941692395371990416048967468982099270925308100727, + 6465151453746412132599596984628739550147379072443683076388208843341824127379, + 16143532858389170960690347742477978826830511669766530042104134302796355145785, + 19362583304414853660976404410208489566967618125972377176980367224623492419647, + 1702213613534733786921602839210290505213503664731919006932367875629005980493, + 10781825404476535814285389902565833897646945212027592373510689209734812292327, + 4212716923652881254737947578600828255798948993302968210248673545442808456151, + 7594017890037021425366623750593200398174488805473151513558919864633711506220, + 18979889247746272055963929241596362599320706910852082477600815822482192194401, + 13602139229813231349386885113156901793661719180900395818909719758150455500533 + ]; + + var t; + signal t2[nrounds]; + signal t4[nrounds]; + signal t6[nrounds]; + signal t7[nrounds-1]; + + for (var i=0; i nRounds should be 220 +template MiMCSponge(nInputs, nRounds, nOutputs) { + signal input ins[nInputs]; + signal input k; + signal output outs[nOutputs]; + + // S = R||C + component S[nInputs + nOutputs - 1]; + + for (var i = 0; i < nInputs; i++) { + S[i] = MiMCFeistel(nRounds); + S[i].k <== k; + if (i == 0) { + S[i].xL_in <== ins[0]; + S[i].xR_in <== 0; + } else { + S[i].xL_in <== S[i-1].xL_out + ins[i]; + S[i].xR_in <== S[i-1].xR_out; + } + } + + outs[0] = S[nInputs - 1].xL_out; + + for (var i = 0; i < nOutputs - 1; i++) { + S[nInputs + i] = MiMCFeistel(nRounds); + S[nInputs + i].k <== k; + S[nInputs + i].xL_in <== S[nInputs + i - 1].xL_out; + S[nInputs + i].xR_in <== S[nInputs + i - 1].xR_out; + outs[i + 1] <== S[nInputs + i].xL_out; + } +} + +template MiMCFeistel(nrounds) { + signal input xL_in; + signal input xR_in; + signal input k; + signal output xL_out; + signal output xR_out; + + var c = [ + 0, + 7120861356467848435263064379192047478074060781135320967663101236819528304084, + 5024705281721889198577876690145313457398658950011302225525409148828000436681, + 17980351014018068290387269214713820287804403312720763401943303895585469787384, + 19886576439381707240399940949310933992335779767309383709787331470398675714258, + 1213715278223786725806155661738676903520350859678319590331207960381534602599, + 18162138253399958831050545255414688239130588254891200470934232514682584734511, + 7667462281466170157858259197976388676420847047604921256361474169980037581876, + 7207551498477838452286210989212982851118089401128156132319807392460388436957, + 9864183311657946807255900203841777810810224615118629957816193727554621093838, + 4798196928559910300796064665904583125427459076060519468052008159779219347957, + 17387238494588145257484818061490088963673275521250153686214197573695921400950, + 10005334761930299057035055370088813230849810566234116771751925093634136574742, + 11897542014760736209670863723231849628230383119798486487899539017466261308762, + 16771780563523793011283273687253985566177232886900511371656074413362142152543, + 749264854018824809464168489785113337925400687349357088413132714480582918506, + 3683645737503705042628598550438395339383572464204988015434959428676652575331, + 7556750851783822914673316211129907782679509728346361368978891584375551186255, + 20391289379084797414557439284689954098721219201171527383291525676334308303023, + 18146517657445423462330854383025300323335289319277199154920964274562014376193, + 8080173465267536232534446836148661251987053305394647905212781979099916615292, + 10796443006899450245502071131975731672911747129805343722228413358507805531141, + 5404287610364961067658660283245291234008692303120470305032076412056764726509, + 4623894483395123520243967718315330178025957095502546813929290333264120223168, + 16845753148201777192406958674202574751725237939980634861948953189320362207797, + 4622170486584704769521001011395820886029808520586507873417553166762370293671, + 16688277490485052681847773549197928630624828392248424077804829676011512392564, + 11878652861183667748838188993669912629573713271883125458838494308957689090959, + 2436445725746972287496138382764643208791713986676129260589667864467010129482, + 1888098689545151571063267806606510032698677328923740058080630641742325067877, + 148924106504065664829055598316821983869409581623245780505601526786791681102, + 18875020877782404439294079398043479420415331640996249745272087358069018086569, + 15189693413320228845990326214136820307649565437237093707846682797649429515840, + 19669450123472657781282985229369348220906547335081730205028099210442632534079, + 5521922218264623411380547905210139511350706092570900075727555783240701821773, + 4144769320246558352780591737261172907511489963810975650573703217887429086546, + 10097732913112662248360143041019433907849917041759137293018029019134392559350, + 1720059427972723034107765345743336447947522473310069975142483982753181038321, + 6302388219880227251325608388535181451187131054211388356563634768253301290116, + 6745410632962119604799318394592010194450845483518862700079921360015766217097, + 10858157235265583624235850660462324469799552996870780238992046963007491306222, + 20241898894740093733047052816576694435372877719072347814065227797906130857593, + 10165780782761211520836029617746977303303335603838343292431760011576528327409, + 2832093654883670345969792724123161241696170611611744759675180839473215203706, + 153011722355526826233082383360057587249818749719433916258246100068258954737, + 20196970640587451358539129330170636295243141659030208529338914906436009086943, + 3180973917010545328313139835982464870638521890385603025657430208141494469656, + 17198004293191777441573635123110935015228014028618868252989374962722329283022, + 7642160509228669138628515458941659189680509753651629476399516332224325757132, + 19346204940546791021518535594447257347218878114049998691060016493806845179755, + 11501810868606870391127866188394535330696206817602260610801897042898616817272, + 3113973447392053821824427670386252797811804954746053461397972968381571297505, + 6545064306297957002139416752334741502722251869537551068239642131448768236585, + 5203908808704813498389265425172875593837960384349653691918590736979872578408, + 2246692432011290582160062129070762007374502637007107318105405626910313810224, + 11760570435432189127645691249600821064883781677693087773459065574359292849137, + 5543749482491340532547407723464609328207990784853381797689466144924198391839, + 8837549193990558762776520822018694066937602576881497343584903902880277769302, + 12855514863299373699594410385788943772765811961581749194183533625311486462501, + 5363660674689121676875069134269386492382220935599781121306637800261912519729, + 13162342403579303950549728848130828093497701266240457479693991108217307949435, + 916941639326869583414469202910306428966657806899788970948781207501251816730, + 15618589556584434434009868216186115416835494805174158488636000580759692174228, + 8959562060028569701043973060670353733575345393653685776974948916988033453971, + 16390754464333401712265575949874369157699293840516802426621216808905079127650, + 168282396747788514908709091757591226095443902501365500003618183905496160435, + 8327443473179334761744301768309008451162322941906921742120510244986704677004, + 17213012626801210615058753489149961717422101711567228037597150941152495100640, + 10394369641533736715250242399198097296122982486516256408681925424076248952280, + 17784386835392322654196171115293700800825771210400152504776806618892170162248, + 16533189939837087893364000390641148516479148564190420358849587959161226782982, + 18725396114211370207078434315900726338547621160475533496863298091023511945076, + 7132325028834551397904855671244375895110341505383911719294705267624034122405, + 148317947440800089795933930720822493695520852448386394775371401743494965187, + 19001050671757720352890779127693793630251266879994702723636759889378387053056, + 18824274411769830274877839365728651108434404855803844568234862945613766611460, + 12771414330193951156383998390424063470766226667986423961689712557338777174205, + 11332046574800279729678603488745295198038913503395629790213378101166488244657, + 9607550223176946388146938069307456967842408600269548190739947540821716354749, + 8756385288462344550200229174435953103162307705310807828651304665320046782583, + 176061952957067086877570020242717222844908281373122372938833890096257042779, + 12200212977482648306758992405065921724409841940671166017620928947866825250857, + 10868453624107875516866146499877130701929063632959660262366632833504750028858, + 2016095394399807253596787752134573207202567875457560571095586743878953450738, + 21815578223768330433802113452339488275704145896544481092014911825656390567514, + 4923772847693564777744725640710197015181591950368494148029046443433103381621, + 1813584943682214789802230765734821149202472893379265320098816901270224589984, + 10810123816265612772922113403831964815724109728287572256602010709288980656498, + 1153669123397255702524721206511185557982017410156956216465120456256288427021, + 5007518659266430200134478928344522649876467369278722765097865662497773767152, + 2511432546938591792036639990606464315121646668029252285288323664350666551637, + 32883284540320451295484135704808083452381176816565850047310272290579727564, + 10484856914279112612610993418405543310546746652738541161791501150994088679557, + 2026733759645519472558796412979210009170379159866522399881566309631434814953, + 14731806221235869882801331463708736361296174006732553130708107037190460654379, + 14740327483193277147065845135561988641238516852487657117813536909482068950652, + 18787428285295558781869865751953016580493190547148386433580291216673009884554, + 3804047064713122820157099453648459188816376755739202017447862327783289895072, + 16709604795697901641948603019242067672006293290826991671766611326262532802914, + 11061717085931490100602849654034280576915102867237101935487893025907907250695, + 2821730726367472966906149684046356272806484545281639696873240305052362149654, + 17467794879902895769410571945152708684493991588672014763135370927880883292655, + 1571520786233540988201616650622796363168031165456869481368085474420849243232, + 10041051776251223165849354194892664881051125330236567356945669006147134614302, + 3981753758468103976812813304477670033098707002886030847251581853700311567551, + 4365864398105436789177703571412645548020537580493599380018290523813331678900, + 2391801327305361293476178683853802679507598622000359948432171562543560193350, + 214219368547551689972421167733597094823289857206402800635962137077096090722, + 18192064100315141084242006659317257023098826945893371479835220462302399655674, + 15487549757142039139328911515400805508248576685795694919457041092150651939253, + 10142447197759703415402259672441315777933858467700579946665223821199077641122, + 11246573086260753259993971254725613211193686683988426513880826148090811891866, + 6574066859860991369704567902211886840188702386542112593710271426704432301235, + 11311085442652291634822798307831431035776248927202286895207125867542470350078, + 20977948360215259915441258687649465618185769343138135384346964466965010873779, + 792781492853909872425531014397300057232399608769451037135936617996830018501, + 5027602491523497423798779154966735896562099398367163998686335127580757861872, + 14595204575654316237672764823862241845410365278802914304953002937313300553572, + 13973538843621261113924259058427434053808430378163734641175100160836376897004, + 16395063164993626722686882727042150241125309409717445381854913964674649318585, + 8465768840047024550750516678171433288207841931251654898809033371655109266663, + 21345603324471810861925019445720576814602636473739003852898308205213912255830, + 21171984405852590343970239018692870799717057961108910523876770029017785940991, + 10761027113757988230637066281488532903174559953630210849190212601991063767647, + 6678298831065390834922566306988418588227382406175769592902974103663687992230, + 4993662582188632374202316265508850988596880036291765531885657575099537176757, + 18364168158495573675698600238443218434246806358811328083953887470513967121206, + 3506345610354615013737144848471391553141006285964325596214723571988011984829, + 248732676202643792226973868626360612151424823368345645514532870586234380100, + 10090204501612803176317709245679152331057882187411777688746797044706063410969, + 21297149835078365363970699581821844234354988617890041296044775371855432973500, + 16729368143229828574342820060716366330476985824952922184463387490091156065099, + 4467191506765339364971058668792642195242197133011672559453028147641428433293, + 8677548159358013363291014307402600830078662555833653517843708051504582990832, + 1022951765127126818581466247360193856197472064872288389992480993218645055345, + 1888195070251580606973417065636430294417895423429240431595054184472931224452, + 4221265384902749246920810956363310125115516771964522748896154428740238579824, + 2825393571154632139467378429077438870179957021959813965940638905853993971879, + 19171031072692942278056619599721228021635671304612437350119663236604712493093, + 10780807212297131186617505517708903709488273075252405602261683478333331220733, + 18230936781133176044598070768084230333433368654744509969087239465125979720995, + 16901065971871379877929280081392692752968612240624985552337779093292740763381, + 146494141603558321291767829522948454429758543710648402457451799015963102253, + 2492729278659146790410698334997955258248120870028541691998279257260289595548, + 2204224910006646535594933495262085193210692406133533679934843341237521233504, + 16062117410185840274616925297332331018523844434907012275592638570193234893570, + 5894928453677122829055071981254202951712129328678534592916926069506935491729, + 4947482739415078212217504789923078546034438919537985740403824517728200332286, + 16143265650645676880461646123844627780378251900510645261875867423498913438066, + 397690828254561723549349897112473766901585444153303054845160673059519614409, + 11272653598912269895509621181205395118899451234151664604248382803490621227687, + 15566927854306879444693061574322104423426072650522411176731130806720753591030, + 14222898219492484180162096141564251903058269177856173968147960855133048449557, + 16690275395485630428127725067513114066329712673106153451801968992299636791385, + 3667030990325966886479548860429670833692690972701471494757671819017808678584, + 21280039024501430842616328642522421302481259067470872421086939673482530783142, + 15895485136902450169492923978042129726601461603404514670348703312850236146328, + 7733050956302327984762132317027414325566202380840692458138724610131603812560, + 438123800976401478772659663183448617575635636575786782566035096946820525816, + 814913922521637742587885320797606426167962526342166512693085292151314976633, + 12368712287081330853637674140264759478736012797026621876924395982504369598764, + 2494806857395134874309386694756263421445039103814920780777601708371037591569, + 16101132301514338989512946061786320637179843435886825102406248183507106312877, + 6252650284989960032925831409804233477770646333900692286731621844532438095656, + 9277135875276787021836189566799935097400042171346561246305113339462708861695, + 10493603554686607050979497281838644324893776154179810893893660722522945589063, + 8673089750662709235894359384294076697329948991010184356091130382437645649279, + 9558393272910366944245875920138649617479779893610128634419086981339060613250, + 19012287860122586147374214541764572282814469237161122489573881644994964647218, + 9783723818270121678386992630754842961728702994964214799008457449989291229500, + 15550788416669474113213749561488122552422887538676036667630838378023479382689, + 15016165746156232864069722572047169071786333815661109750860165034341572904221, + 6506225705710197163670556961299945987488979904603689017479840649664564978574, + 10796631184889302076168355684722130903785890709107732067446714470783437829037, + 19871836214837460419845806980869387567383718044439891735114283113359312279540, + 20871081766843466343749609089986071784031203517506781251203251608363835140622, + 5100105771517691442278432864090229416166996183792075307747582375962855820797, + 8777887112076272395250620301071581171386440850451972412060638225741125310886, + 5300440870136391278944213332144327695659161151625757537632832724102670898756, + 1205448543652932944633962232545707633928124666868453915721030884663332604536, + 5542499997310181530432302492142574333860449305424174466698068685590909336771, + 11028094245762332275225364962905938096659249161369092798505554939952525894293, + 19187314764836593118404597958543112407224947638377479622725713735224279297009, + 17047263688548829001253658727764731047114098556534482052135734487985276987385, + 19914849528178967155534624144358541535306360577227460456855821557421213606310, + 2929658084700714257515872921366736697080475676508114973627124569375444665664, + 15092262360719700162343163278648422751610766427236295023221516498310468956361, + 21578580340755653236050830649990190843552802306886938815497471545814130084980, + 1258781501221760320019859066036073675029057285507345332959539295621677296991, + 3819598418157732134449049289585680301176983019643974929528867686268702720163, + 8653175945487997845203439345797943132543211416447757110963967501177317426221, + 6614652990340435611114076169697104582524566019034036680161902142028967568142, + 19212515502973904821995111796203064175854996071497099383090983975618035391558, + 18664315914479294273286016871365663486061896605232511201418576829062292269769, + 11498264615058604317482574216318586415670903094838791165247179252175768794889, + 10814026414212439999107945133852431304483604215416531759535467355316227331774, + 17566185590731088197064706533119299946752127014428399631467913813769853431107, + 14016139747289624978792446847000951708158212463304817001882956166752906714332, + 8242601581342441750402731523736202888792436665415852106196418942315563860366, + 9244680976345080074252591214216060854998619670381671198295645618515047080988, + 12216779172735125538689875667307129262237123728082657485828359100719208190116, + 10702811721859145441471328511968332847175733707711670171718794132331147396634, + 6479667912792222539919362076122453947926362746906450079329453150607427372979, + 15117544653571553820496948522381772148324367479772362833334593000535648316185, + 6842203153996907264167856337497139692895299874139131328642472698663046726780, + 12732823292801537626009139514048596316076834307941224506504666470961250728055, + 6936272626871035740815028148058841877090860312517423346335878088297448888663, + 17297554111853491139852678417579991271009602631577069694853813331124433680030, + 16641596134749940573104316021365063031319260205559553673368334842484345864859, + 7400481189785154329569470986896455371037813715804007747228648863919991399081, + 2273205422216987330510475127669563545720586464429614439716564154166712854048, + 15162538063742142685306302282127534305212832649282186184583465569986719234456, + 5628039096440332922248578319648483863204530861778160259559031331287721255522, + 16085392195894691829567913404182676871326863890140775376809129785155092531260, + 14227467863135365427954093998621993651369686288941275436795622973781503444257, + 18224457394066545825553407391290108485121649197258948320896164404518684305122, + 274945154732293792784580363548970818611304339008964723447672490026510689427, + 11050822248291117548220126630860474473945266276626263036056336623671308219529, + 2119542016932434047340813757208803962484943912710204325088879681995922344971, + 0 + ]; + + var t; + signal t2[nrounds]; + signal t4[nrounds]; + signal xL[nrounds-1]; + signal xR[nrounds-1]; + + for (var i=0; i. +*/ + +/* + Source: https://en.wikipedia.org/wiki/Montgomery_curve + + 1 + y 1 + y + [u, v] = [ ------- , ---------- ] + 1 - y (1 - y)x + + */ + +template Edwards2Montgomery() { + signal input in[2]; + signal output out[2]; + + out[0] <-- (1 + in[1]) / (1 - in[1]); + out[1] <-- out[0] / in[0]; + + + out[0] * (1-in[1]) === (1 + in[1]); + out[1] * in[0] === out[0]; +} + +/* + + u u - 1 + [x, y] = [ ---, ------- ] + v u + 1 + + */ +template Montgomery2Edwards() { + signal input in[2]; + signal output out[2]; + + out[0] <-- in[0] / in[1]; + out[1] <-- (in[0] - 1) / (in[0] + 1); + + out[0] * in[1] === in[0]; + out[1] * (in[0] + 1) === in[0] - 1; +} + + +/* + x2 - x1 + lamda = --------- + y2 - y1 + + x3 + A + x1 + x2 + x3 = B * lamda^2 - A - x1 -x2 => lamda^2 = ------------------ + B + + y3 = (2*x1 + x2 + A)*lamda - B*lamda^3 - y1 => + + + => y3 = lamda * ( 2*x1 + x2 + A - x3 - A - x1 - x2) - y1 => + + => y3 = lamda * ( x1 - x3 ) - y1 + +---------- + + y2 - y1 + lamda = --------- + x2 - x1 + + x3 = B * lamda^2 - A - x1 -x2 + + y3 = lamda * ( x1 - x3 ) - y1 + + */ + +template MontgomeryAdd() { + signal input in1[2]; + signal input in2[2]; + signal output out[2]; + + var a = 168700; + var d = 168696; + + var A = (2 * (a + d)) / (a - d); + var B = 4 / (a - d); + + signal lamda; + + lamda <-- (in2[1] - in1[1]) / (in2[0] - in1[0]); + lamda * (in2[0] - in1[0]) === (in2[1] - in1[1]); + + out[0] <== B*lamda*lamda - A - in1[0] -in2[0]; + out[1] <== lamda * (in1[0] - out[0]) - in1[1]; +} + +/* + + x1_2 = x1*x1 + + 3*x1_2 + 2*A*x1 + 1 + lamda = --------------------- + 2*B*y1 + + x3 = B * lamda^2 - A - x1 -x1 + + y3 = lamda * ( x1 - x3 ) - y1 + + */ +template MontgomeryDouble() { + signal input in[2]; + signal output out[2]; + + var a = 168700; + var d = 168696; + + var A = (2 * (a + d)) / (a - d); + var B = 4 / (a - d); + + signal lamda; + signal x1_2; + + x1_2 <== in[0] * in[0]; + + lamda <-- (3*x1_2 + 2*A*in[0] + 1 ) / (2*B*in[1]); + lamda * (2*B*in[1]) === (3*x1_2 + 2*A*in[0] + 1 ); + + out[0] <== B*lamda*lamda - A - 2*in[0]; + out[1] <== lamda * (in[0] - out[0]) - in[1]; +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/multiplexer.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/multiplexer.circom new file mode 100644 index 000000000..091bd2be0 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/multiplexer.circom @@ -0,0 +1,113 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +// --> Assignation without constraint +// <-- Assignation without constraint +// === Constraint +// <== Assignation with constraint +// ==> Assignation with constraint +// All variables are members of the field F[p] +// https://github.com/zcash-hackworks/sapling-crypto +// https://github.com/ebfull/bellman + +/* +function log2(a) { + if (a==0) { + return 0; + } + let n = 1; + let r = 1; + while (n success; + success * (success -1) === 0; +} + + +template Multiplexer(wIn, nIn) { + signal input inp[nIn][wIn]; + signal input sel; + signal output out[wIn]; + component dec = Decoder(nIn); + component ep[wIn]; + + for (var k=0; k dec.inp; + for (var j=0; j ep[j].in1[k]; + dec.out[k] ==> ep[j].in2[k]; + } + ep[j].out ==> out[j]; + } + dec.success === 1; +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/mux1.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/mux1.circom new file mode 100644 index 000000000..3473c6cff --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/mux1.circom @@ -0,0 +1,47 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +template MultiMux1(n) { + signal input c[n][2]; // Constants + signal input s; // Selector + signal output out[n]; + + for (var i=0; i mux.s; + + mux.out[0] ==> out; +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/mux2.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/mux2.circom new file mode 100644 index 000000000..1e71cf7e0 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/mux2.circom @@ -0,0 +1,62 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +template MultiMux2(n) { + signal input c[n][4]; // Constants + signal input s[2]; // Selector + signal output out[n]; + + signal a10[n]; + signal a1[n]; + signal a0[n]; + signal a[n]; + + signal s10; + s10 <== s[1] * s[0]; + + for (var i=0; i mux.s[i]; + } + + mux.out[0] ==> out; +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/mux3.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/mux3.circom new file mode 100644 index 000000000..277ead2ef --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/mux3.circom @@ -0,0 +1,74 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +template MultiMux3(n) { + signal input c[n][8]; // Constants + signal input s[3]; // Selector + signal output out[n]; + + signal a210[n]; + signal a21[n]; + signal a20[n]; + signal a2[n]; + + signal a10[n]; + signal a1[n]; + signal a0[n]; + signal a[n]; + + // 4 constrains for the intermediary variables + signal s10; + s10 <== s[1] * s[0]; + + for (var i=0; i mux.s[i]; + } + + mux.out[0] ==> out; +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/mux4.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/mux4.circom new file mode 100644 index 000000000..c30bb94f5 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/mux4.circom @@ -0,0 +1,118 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +template MultiMux4(n) { + signal input c[n][16]; // Constants + signal input s[4]; // Selector + signal output out[n]; + + signal a3210[n]; + signal a321[n]; + signal a320[n]; + signal a310[n]; + signal a32[n]; + signal a31[n]; + signal a30[n]; + signal a3[n]; + + signal a210[n]; + signal a21[n]; + signal a20[n]; + signal a10[n]; + signal a2[n]; + signal a1[n]; + signal a0[n]; + signal a[n]; + + // 4 constrains for the intermediary variables + signal s10; + s10 <== s[1] * s[0]; + signal s20; + s20 <== s[2] * s[0]; + signal s21; + s21 <== s[2] * s[1]; + signal s210; + s210 <== s21 * s[0]; + + + for (var i=0; i mux.s[i]; + } + + mux.out[0] ==> out; +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/pedersen.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/pedersen.circom new file mode 100644 index 000000000..d5e5726ce --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/pedersen.circom @@ -0,0 +1,255 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +include "montgomery.circom"; +include "mux3.circom"; +include "babyjub.circom"; + +template Window4() { + signal input in[4]; + signal input base[2]; + signal output out[2]; + signal output out8[2]; // Returns 8*Base (To be linked) + + component mux = MultiMux3(2); + + mux.s[0] <== in[0]; + mux.s[1] <== in[1]; + mux.s[2] <== in[2]; + + component dbl2 = MontgomeryDouble(); + component adr3 = MontgomeryAdd(); + component adr4 = MontgomeryAdd(); + component adr5 = MontgomeryAdd(); + component adr6 = MontgomeryAdd(); + component adr7 = MontgomeryAdd(); + component adr8 = MontgomeryAdd(); + +// in[0] -> 1*BASE + + mux.c[0][0] <== base[0]; + mux.c[1][0] <== base[1]; + +// in[1] -> 2*BASE + dbl2.in[0] <== base[0]; + dbl2.in[1] <== base[1]; + mux.c[0][1] <== dbl2.out[0]; + mux.c[1][1] <== dbl2.out[1]; + +// in[2] -> 3*BASE + adr3.in1[0] <== base[0]; + adr3.in1[1] <== base[1]; + adr3.in2[0] <== dbl2.out[0]; + adr3.in2[1] <== dbl2.out[1]; + mux.c[0][2] <== adr3.out[0]; + mux.c[1][2] <== adr3.out[1]; + +// in[3] -> 4*BASE + adr4.in1[0] <== base[0]; + adr4.in1[1] <== base[1]; + adr4.in2[0] <== adr3.out[0]; + adr4.in2[1] <== adr3.out[1]; + mux.c[0][3] <== adr4.out[0]; + mux.c[1][3] <== adr4.out[1]; + +// in[4] -> 5*BASE + adr5.in1[0] <== base[0]; + adr5.in1[1] <== base[1]; + adr5.in2[0] <== adr4.out[0]; + adr5.in2[1] <== adr4.out[1]; + mux.c[0][4] <== adr5.out[0]; + mux.c[1][4] <== adr5.out[1]; + +// in[5] -> 6*BASE + adr6.in1[0] <== base[0]; + adr6.in1[1] <== base[1]; + adr6.in2[0] <== adr5.out[0]; + adr6.in2[1] <== adr5.out[1]; + mux.c[0][5] <== adr6.out[0]; + mux.c[1][5] <== adr6.out[1]; + +// in[6] -> 7*BASE + adr7.in1[0] <== base[0]; + adr7.in1[1] <== base[1]; + adr7.in2[0] <== adr6.out[0]; + adr7.in2[1] <== adr6.out[1]; + mux.c[0][6] <== adr7.out[0]; + mux.c[1][6] <== adr7.out[1]; + +// in[7] -> 8*BASE + adr8.in1[0] <== base[0]; + adr8.in1[1] <== base[1]; + adr8.in2[0] <== adr7.out[0]; + adr8.in2[1] <== adr7.out[1]; + mux.c[0][7] <== adr8.out[0]; + mux.c[1][7] <== adr8.out[1]; + + out8[0] <== adr8.out[0]; + out8[1] <== adr8.out[1]; + + out[0] <== mux.out[0]; + out[1] <== - mux.out[1]*2*in[3] + mux.out[1]; // Negate y if in[3] is one +} + + +template Segment(nWindows) { + signal input in[nWindows*4]; + signal input base[2]; + signal output out[2]; + + var i; + var j; + + // Convert the base to montgomery + + component e2m = Edwards2Montgomery(); + e2m.in[0] <== base[0]; + e2m.in[1] <== base[1]; + + component windows[nWindows]; + component doublers1[nWindows-1]; + component doublers2[nWindows-1]; + component adders[nWindows-1]; + for (i=0; i 1) { + m2e.in[0] <== adders[nWindows-2].out[0]; + m2e.in[1] <== adders[nWindows-2].out[1]; + } else { + m2e.in[0] <== windows[0].out[0]; + m2e.in[1] <== windows[0].out[1]; + } + + out[0] <== m2e.out[0]; + out[1] <== m2e.out[1]; +} + +template Pedersen(n) { + signal input in[n]; + signal output out[2]; + + var BASE = [ + [10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317], + [2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094], + [5802099305472655231388284418920769829666717045250560929368476121199858275951,5980429700218124965372158798884772646841287887664001482443826541541529227896], + [7107336197374528537877327281242680114152313102022415488494307685842428166594,2857869773864086953506483169737724679646433914307247183624878062391496185654], + [20265828622013100949498132415626198973119240347465898028410217039057588424236,1160461593266035632937973507065134938065359936056410650153315956301179689506], + [1487999857809287756929114517587739322941449154962237464737694709326309567994,14017256862867289575056460215526364897734808720610101650676790868051368668003], + [14618644331049802168996997831720384953259095788558646464435263343433563860015,13115243279999696210147231297848654998887864576952244320558158620692603342236], + [6814338563135591367010655964669793483652536871717891893032616415581401894627,13660303521961041205824633772157003587453809761793065294055279768121314853695], + [3571615583211663069428808372184817973703476260057504149923239576077102575715,11981351099832644138306422070127357074117642951423551606012551622164230222506], + [18597552580465440374022635246985743886550544261632147935254624835147509493269,6753322320275422086923032033899357299485124665258735666995435957890214041481] + ] + + var nSegments = ((n-1)\200)+1; + + component segments[nSegments]; + + var i; + var j; + var nBits; + var nWindows; + for (i=0; i1) { + packPoint.in[0] <== adders[nSegments-2].xout; + packPoint.in[1] <== adders[nSegments-2].yout; + } else { + packPoint.in[0] <== segments[0].out[0]; + packPoint.in[1] <== segments[0].out[1]; + } + + out[0] <== packPoint.out[0]; + out[1] <== packPoint.out[1]; +*/ + + if (nSegments>1) { + out[0] <== adders[nSegments-2].xout; + out[1] <== adders[nSegments-2].yout; + } else { + out[0] <== segments[0].out[0]; + out[1] <== segments[0].out[1]; + } +} + diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/pedersen_old.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/pedersen_old.circom new file mode 100644 index 000000000..35d23a570 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/pedersen_old.circom @@ -0,0 +1,66 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +include "escalarmul.circom"; + +template Pedersen(n) { + signal input in[n]; + signal output out[2]; + + var nexps = ((n-1) \ 250) + 1; + var nlastbits = n - (nexps-1)*250; + + component escalarMuls[nexps]; + + var PBASE = [ + [10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317], + [2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094], + [5802099305472655231388284418920769829666717045250560929368476121199858275951,5980429700218124965372158798884772646841287887664001482443826541541529227896], + [7107336197374528537877327281242680114152313102022415488494307685842428166594,2857869773864086953506483169737724679646433914307247183624878062391496185654], + [20265828622013100949498132415626198973119240347465898028410217039057588424236,1160461593266035632937973507065134938065359936056410650153315956301179689506], + [1487999857809287756929114517587739322941449154962237464737694709326309567994,14017256862867289575056460215526364897734808720610101650676790868051368668003], + [14618644331049802168996997831720384953259095788558646464435263343433563860015,13115243279999696210147231297848654998887864576952244320558158620692603342236], + [6814338563135591367010655964669793483652536871717891893032616415581401894627,13660303521961041205824633772157003587453809761793065294055279768121314853695], + [3571615583211663069428808372184817973703476260057504149923239576077102575715,11981351099832644138306422070127357074117642951423551606012551622164230222506], + [18597552580465440374022635246985743886550544261632147935254624835147509493269,6753322320275422086923032033899357299485124665258735666995435957890214041481] + ]; + + var i; + var j; + var nexpbits; + for (i=0; i out[0]; + escalarMuls[nexps-1].out[1] ==> out[1]; +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/pointbits.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/pointbits.circom new file mode 100644 index 000000000..ec4d2e7fe --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/pointbits.circom @@ -0,0 +1,163 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +include "bitify.circom"; +include "aliascheck.circom"; +include "compconstant.circom"; +include "babyjub.circom"; + + +function sqrt(n) { + + if (n == 0) { + return 0; + } + + // Test that have solution + var res = n ** ((-1) >> 1); +// if (res!=1) assert(false, "SQRT does not exists"); + if (res!=1) return 0; + + var m = 28; + var c = 19103219067921713944291392827692070036145651957329286315305642004821462161904; + var t = n ** 81540058820840996586704275553141814055101440848469862132140264610111; + var r = n ** ((81540058820840996586704275553141814055101440848469862132140264610111+1)>>1); + var sq; + var i; + var b; + var j; + + while ((r != 0)&&(t != 1)) { + sq = t*t; + i = 1; + while (sq!=1) { + i++; + sq = sq*sq; + } + + // b = c ^ m-i-1 + b = c; + for (j=0; j< m-i-1; j ++) b = b*b; + + m = i; + c = b*b; + t = t*c; + r = r*b; + } + + if (r > ((-1) >> 1)) { + r = -r; + } + + return r; +} + + +template Bits2Point() { + signal input in[256]; + signal output out[2]; +} + +template Bits2Point_Strict() { + signal input in[256]; + signal output out[2]; + + var i; + + // Check aliasing + component aliasCheckY = AliasCheck(); + for (i=0; i<254; i++) { + aliasCheckY.in[i] <== in[i]; + } + in[254] === 0; + + component b2nY = Bits2Num(254); + for (i=0; i<254; i++) { + b2nY.in[i] <== in[i]; + } + + out[1] <== b2nY.out; + + var a = 168700; + var d = 168696; + + var y2 = out[1] * out[1]; + + var x = sqrt( (1-y2)/(a - d*y2) ); + + if (in[255] == 1) x = -x; + + out[0] <-- x; + + component babyCheck = BabyCheck(); + babyCheck.x <== out[0]; + babyCheck.y <== out[1]; + + component n2bX = Num2Bits(254); + n2bX.in <== out[0]; + component aliasCheckX = AliasCheck(); + for (i=0; i<254; i++) { + aliasCheckX.in[i] <== n2bX.out[i]; + } + + component signCalc = CompConstant(10944121435919637611123202872628637544274182200208017171849102093287904247808); + for (i=0; i<254; i++) { + signCalc.in[i] <== n2bX.out[i]; + } + + signCalc.out === in[255]; +} + + +template Point2Bits() { + signal input in[2]; + signal output out[256]; + + +} + +template Point2Bits_Strict() { + signal input in[2]; + signal output out[256]; + + var i; + + component n2bX = Num2Bits(254); + n2bX.in <== in[0]; + component n2bY = Num2Bits(254); + n2bY.in <== in[1]; + + component aliasCheckX = AliasCheck(); + component aliasCheckY = AliasCheck(); + for (i=0; i<254; i++) { + aliasCheckX.in[i] <== n2bX.out[i]; + aliasCheckY.in[i] <== n2bY.out[i]; + } + + component signCalc = CompConstant(10944121435919637611123202872628637544274182200208017171849102093287904247808); + for (i=0; i<254; i++) { + signCalc.in[i] <== n2bX.out[i]; + } + + for (i=0; i<254; i++) { + out[i] <== n2bY.out[i]; + } + out[254] <== 0; + out[255] <== signCalc.out; +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/poseidon.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/poseidon.circom new file mode 100644 index 000000000..dad680630 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/poseidon.circom @@ -0,0 +1,203 @@ + +template Sigma() { + signal input in; + signal output out; + + signal in2; + signal in4; + + in2 <== in*in; + in4 <== in2*in2; + + out <== in4*in; +} + +template Ark(t, C) { + signal input in[t]; + signal output out[t]; + for (var i=0; i= (nRoundsP + nRoundsF/2))) { + k= i. +*/ + +/* Ch + +000 0 +001 1 +010 0 +011 1 +100 0 +101 0 +110 1 +111 1 + +out = a&b ^ (!a)&c => + +out = a*(b-c) + c + +*/ + +template Ch(n) { + signal input a[n]; + signal input b[n]; + signal input c[n]; + signal output out[n]; + + for (var k=0; k. +*/ + +template H(x) { + signal output out[32]; + var c = [0x6a09e667, + 0xbb67ae85, + 0x3c6ef372, + 0xa54ff53a, + 0x510e527f, + 0x9b05688c, + 0x1f83d9ab, + 0x5be0cd19]; + + for (var i=0; i<32; i++) { + out[i] <== (c[x] >> i) & 1; + } +} + +template K(x) { + signal output out[32]; + var c = [ + 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, + 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, + 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, + 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, + 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, + 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, + 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, + 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 + ]; + + for (var i=0; i<32; i++) { + out[i] <== (c[x] >> i) & 1; + } +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/sha256/main.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/sha256/main.circom new file mode 100644 index 000000000..fbf243485 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/sha256/main.circom @@ -0,0 +1,34 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +include "sha256_2.jaz"; + +template Main() { + signal private input a; + signal private input b; + signal output out; + + component sha256_2 = SHA256_2(); + + sha256_2.a <== a; + sha256_2.b <== a; + out <== sha256_2.out; +} + +component main = Main(); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/sha256/maj.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/sha256/maj.circom new file mode 100644 index 000000000..ee5368743 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/sha256/maj.circom @@ -0,0 +1,44 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +/* Maj function for sha256 + +out = a&b ^ a&c ^ b&c => + +out = a*b + a*c + b*c - 2*a*b*c => + +out = a*( b + c - 2*b*c ) + b*c => + +mid = b*c +out = a*( b + c - 2*mid ) + mid + +*/ + +template Maj(n) { + signal input a[n]; + signal input b[n]; + signal input c[n]; + signal output out[n]; + signal mid[n]; + + for (var k=0; k. +*/ + +template RotR(n, r) { + signal input in[n]; + signal output out[n]; + + for (var i=0; i. +*/ + +include "sha256compression.circom"; +include "../bitify.circom" + +template Sha256_2() { + signal input a; + signal input b; + signal output out; + + component bits2num = Bits2Num(216); + component num2bits[2]; + + num2bits[0] = Num2Bits(216); + num2bits[1] = Num2Bits(216); + + num2bits[0].in <== a; + num2bits[1].in <== b; + + component sha256compression = Sha256compression() ; + + var i; + + for (i=0; i<216; i++) { + sha256compression.inp[i] <== num2bits[0].out[215-i]; + sha256compression.inp[i+216] <== num2bits[1].out[215-i]; + } + + sha256compression.inp[432] <== 1; + + for (i=433; i<503; i++) { + sha256compression.inp[i] <== 0; + } + + sha256compression.inp[503] <== 1; + sha256compression.inp[504] <== 1; + sha256compression.inp[505] <== 0; + sha256compression.inp[506] <== 1; + sha256compression.inp[507] <== 1; + sha256compression.inp[508] <== 0; + sha256compression.inp[509] <== 0; + sha256compression.inp[510] <== 0; + sha256compression.inp[511] <== 0; + + for (i=0; i<216; i++) { + bits2num.in[i] <== sha256compression.out[255-i]; + } + + out <== bits2num.out; +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/sha256/sha256compression.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/sha256/sha256compression.circom new file mode 100644 index 000000000..66e041b71 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/sha256/sha256compression.circom @@ -0,0 +1,164 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +include "constants.circom"; +include "t1.circom"; +include "t2.circom"; +include "../binsum.circom"; +include "sigmaplus.circom"; + +template Sha256compression() { + signal input inp[512]; + signal output out[256]; + signal a[65][32]; + signal b[65][32]; + signal c[65][32]; + signal d[65][32]; + signal e[65][32]; + signal f[65][32]; + signal g[65][32]; + signal h[65][32]; + signal w[64][32]; + + var i; + + component sigmaPlus[48]; + for (i=0; i<48; i++) sigmaPlus[i] = SigmaPlus(); + + component ct_k[64]; + for (i=0; i<64; i++) ct_k[i] = K(i); + + component ha0 = H(0); + component hb0 = H(1); + component hc0 = H(2); + component hd0 = H(3); + component he0 = H(4); + component hf0 = H(5); + component hg0 = H(6); + component hh0 = H(7); + + component t1[64]; + for (i=0; i<64; i++) t1[i] = T1(); + + component t2[64]; + for (i=0; i<64; i++) t2[i] = T2(); + + component suma[64]; + for (i=0; i<64; i++) suma[i] = BinSum(32, 2); + + component sume[64]; + for (i=0; i<64; i++) sume[i] = BinSum(32, 2); + + component fsum[8]; + for (i=0; i<8; i++) fsum[i] = BinSum(32, 2); + + var k; + var t; + + for (t=0; t<64; t++) { + if (t<16) { + for (k=0; k<32; k++) { + w[t][k] <== inp[t*32+31-k]; + } + } else { + for (k=0; k<32; k++) { + sigmaPlus[t-16].in2[k] <== w[t-2][k]; + sigmaPlus[t-16].in7[k] <== w[t-7][k]; + sigmaPlus[t-16].in15[k] <== w[t-15][k]; + sigmaPlus[t-16].in16[k] <== w[t-16][k]; + w[t][k] <== sigmaPlus[t-16].out[k]; + } + } + } + + for (k=0; k<32; k++ ) { + a[0][k] <== ha0.out[k] + b[0][k] <== hb0.out[k] + c[0][k] <== hc0.out[k] + d[0][k] <== hd0.out[k] + e[0][k] <== he0.out[k] + f[0][k] <== hf0.out[k] + g[0][k] <== hg0.out[k] + h[0][k] <== hh0.out[k] + } + + for (t = 0; t<64; t++) { + for (k=0; k<32; k++) { + t1[t].h[k] <== h[t][k]; + t1[t].e[k] <== e[t][k]; + t1[t].f[k] <== f[t][k]; + t1[t].g[k] <== g[t][k]; + t1[t].k[k] <== ct_k[t].out[k]; + t1[t].w[k] <== w[t][k]; + + t2[t].a[k] <== a[t][k]; + t2[t].b[k] <== b[t][k]; + t2[t].c[k] <== c[t][k]; + } + + for (k=0; k<32; k++) { + sume[t].in[0][k] <== d[t][k]; + sume[t].in[1][k] <== t1[t].out[k]; + + suma[t].in[0][k] <== t1[t].out[k]; + suma[t].in[1][k] <== t2[t].out[k]; + } + + for (k=0; k<32; k++) { + h[t+1][k] <== g[t][k]; + g[t+1][k] <== f[t][k]; + f[t+1][k] <== e[t][k]; + e[t+1][k] <== sume[t].out[k]; + d[t+1][k] <== c[t][k]; + c[t+1][k] <== b[t][k]; + b[t+1][k] <== a[t][k]; + a[t+1][k] <== suma[t].out[k]; + } + } + + for (k=0; k<32; k++) { + fsum[0].in[0][k] <== ha0.out[k]; + fsum[0].in[1][k] <== a[64][k]; + fsum[1].in[0][k] <== hb0.out[k]; + fsum[1].in[1][k] <== b[64][k]; + fsum[2].in[0][k] <== hc0.out[k]; + fsum[2].in[1][k] <== c[64][k]; + fsum[3].in[0][k] <== hd0.out[k]; + fsum[3].in[1][k] <== d[64][k]; + fsum[4].in[0][k] <== he0.out[k]; + fsum[4].in[1][k] <== e[64][k]; + fsum[5].in[0][k] <== hf0.out[k]; + fsum[5].in[1][k] <== f[64][k]; + fsum[6].in[0][k] <== hg0.out[k]; + fsum[6].in[1][k] <== g[64][k]; + fsum[7].in[0][k] <== hh0.out[k]; + fsum[7].in[1][k] <== h[64][k]; + } + + for (k=0; k<32; k++) { + out[31-k] <== fsum[0].out[k]; + out[32+31-k] <== fsum[1].out[k]; + out[64+31-k] <== fsum[2].out[k]; + out[96+31-k] <== fsum[3].out[k]; + out[128+31-k] <== fsum[4].out[k]; + out[160+31-k] <== fsum[5].out[k]; + out[192+31-k] <== fsum[6].out[k]; + out[224+31-k] <== fsum[7].out[k]; + } +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/sha256/shift.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/sha256/shift.circom new file mode 100644 index 000000000..bdff3fde2 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/sha256/shift.circom @@ -0,0 +1,32 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +template ShR(n, r) { + signal input in[n]; + signal output out[n]; + + for (var i=0; i= n) { + out[i] <== 0; + } else { + out[i] <== in[ i+r ]; + } + } +} + diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/sha256/sigma.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/sha256/sigma.circom new file mode 100644 index 000000000..3baa6465c --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/sha256/sigma.circom @@ -0,0 +1,68 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +include "xor3.circom"; +include "rotate.circom"; +include "shift.circom"; + +template SmallSigma(ra, rb, rc) { + signal input in[32]; + signal output out[32]; + + component xor3 = Xor3(32); + + component rota = RotR(32, ra); + component rotb = RotR(32, rb); + component shrc = ShR(32, rc); + + for (var k=0; k<32; k++) { + rota.in[k] <== in[k]; + rotb.in[k] <== in[k]; + shrc.in[k] <== in[k]; + + xor3.a[k] <== rota.out[k]; + xor3.b[k] <== rotb.out[k]; + xor3.c[k] <== shrc.out[k]; + + out[k] <== xor3.out[k]; + } +} + +template BigSigma(ra, rb, rc) { + signal input in[32]; + signal output out[32]; + + component xor3 = Xor3(32); + + component rota = RotR(32, ra); + component rotb = RotR(32, rb); + component rotc = RotR(32, rc); + + for (var k=0; k<32; k++) { + rota.in[k] <== in[k]; + rotb.in[k] <== in[k]; + rotc.in[k] <== in[k]; + + xor3.a[k] <== rota.out[k]; + xor3.b[k] <== rotb.out[k]; + xor3.c[k] <== rotc.out[k]; + + out[k] <== xor3.out[k]; + } +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/sha256/sigmaplus.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/sha256/sigmaplus.circom new file mode 100644 index 000000000..ec5a45766 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/sha256/sigmaplus.circom @@ -0,0 +1,45 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +include "../binsum.circom" +include "sigma.circom" + +template SigmaPlus() { + signal input in2[32]; + signal input in7[32]; + signal input in15[32]; + signal input in16[32]; + signal output out[32]; + + component sum = BinSum(32, 4); + component sigma1 = SmallSigma(17,19,10); + component sigma0 = SmallSigma(7, 18, 3); + + for (var k=0; k<32; k++) { + sigma1.in[k] <== in2[k]; + sigma0.in[k] <== in15[k]; + + sum.in[0][k] <== sigma1.out[k]; + sum.in[1][k] <== in7[k]; + sum.in[2][k] <== sigma0.out[k]; + sum.in[3][k] <== in16[k]; + + out[k] <== sum.out[k]; + } +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/sha256/t1.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/sha256/t1.circom new file mode 100644 index 000000000..28caed61c --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/sha256/t1.circom @@ -0,0 +1,52 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +include "../binsum.circom"; +include "sigma.circom"; +include "ch.circom"; + +template T1() { + signal input h[32]; + signal input e[32]; + signal input f[32]; + signal input g[32]; + signal input k[32]; + signal input w[32]; + signal output out[32]; + + component sum = BinSum(32, 5); + component ch = Ch(32); + + component bigsigma1 = BigSigma(6, 11, 25); + + for (var ki=0; ki<32; ki++) { + bigsigma1.in[ki] <== e[ki]; + ch.a[ki] <== e[ki]; + ch.b[ki] <== f[ki]; + ch.c[ki] <== g[ki] + + sum.in[0][ki] <== h[ki]; + sum.in[1][ki] <== bigsigma1.out[ki]; + sum.in[2][ki] <== ch.out[ki]; + sum.in[3][ki] <== k[ki]; + sum.in[4][ki] <== w[ki]; + + out[ki] <== sum.out[ki]; + } +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/sha256/t2.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/sha256/t2.circom new file mode 100644 index 000000000..54de837e7 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/sha256/t2.circom @@ -0,0 +1,47 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +include "../binsum.circom"; +include "sigma.circom"; +include "maj.circom" + +template T2() { + signal input a[32]; + signal input b[32]; + signal input c[32]; + signal output out[32]; + + component sum = BinSum(32, 2); + + component bigsigma0 = BigSigma(2, 13, 22); + component maj = Maj(32); + + for (var k=0; k<32; k++) { + + bigsigma0.in[k] <== a[k]; + maj.a[k] <== a[k]; + maj.b[k] <== b[k]; + maj.c[k] <== c[k]; + + sum.in[0][k] <== bigsigma0.out[k]; + sum.in[1][k] <== maj.out[k]; + + out[k] <== sum.out[k]; + } +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/sha256/xor3.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/sha256/xor3.circom new file mode 100644 index 000000000..9bbe76ce8 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/sha256/xor3.circom @@ -0,0 +1,44 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +/* Xor3 function for sha256 + +out = a ^ b ^ c => + +out = a+b+c - 2*a*b - 2*a*c - 2*b*c + 4*a*b*c => + +out = a*( 1 - 2*b - 2*c + 4*b*c ) + b + c - 2*b*c => + +mid = b*c +out = a*( 1 - 2*b -2*c + 4*mid ) + b + c - 2 * mid + +*/ + +template Xor3(n) { + signal input a[n]; + signal input b[n]; + signal input c[n]; + signal output out[n]; + signal mid[n]; + + for (var k=0; k. +*/ + +include "compconstant.circom"; + +template Sign() { + signal input in[254]; + signal output sign; + + component comp = CompConstant(10944121435919637611123202872628637544274182200208017171849102093287904247808); + + var i; + + for (i=0; i<254; i++) { + comp.in[i] <== in[i]; + } + + sign <== comp.out; +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/smt/smthash_mimc.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/smt/smthash_mimc.circom new file mode 100644 index 000000000..bad5290a1 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/smt/smthash_mimc.circom @@ -0,0 +1,57 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +include "../mimc.circom"; + + +/* + Hash1 = H(1 | key | value) + */ + +template SMTHash1() { + signal input key; + signal input value; + signal output out; + + component h = MultiMiMC7(2, 91); // Constant + h.in[0] <== key; + h.in[1] <== value; + h.k <== 1; + + out <== h.out; +} + +/* + This component is used to create the 2 nodes. + + Hash2 = H(Hl | Hr) + */ + +template SMTHash2() { + signal input L; + signal input R; + signal output out; + + component h = MultiMiMC7(2, 91); // Constant + h.in[0] <== L; + h.in[1] <== R; + h.k <== 0; + + out <== h.out; +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/smt/smthash_poseidon.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/smt/smthash_poseidon.circom new file mode 100644 index 000000000..5a9feb781 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/smt/smthash_poseidon.circom @@ -0,0 +1,56 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +include "../poseidon.circom"; + + +/* + Hash1 = H(1 | key | value) + */ + +template SMTHash1() { + signal input key; + signal input value; + signal output out; + + component h = Poseidon(3, 6, 8, 57); // Constant + h.inputs[0] <== key; + h.inputs[1] <== value; + h.inputs[2] <== 1; + + out <== h.out; +} + +/* + This component is used to create the 2 nodes. + + Hash2 = H(Hl | Hr) + */ + +template SMTHash2() { + signal input L; + signal input R; + signal output out; + + component h = Poseidon(2, 6, 8, 57); // Constant + h.inputs[0] <== L; + h.inputs[1] <== R; + + out <== h.out; +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/smt/smtlevins.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/smt/smtlevins.circom new file mode 100644 index 000000000..dfcac1c3c --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/smt/smtlevins.circom @@ -0,0 +1,100 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +/* + +This component finds the level where the oldInsert is done. +The rules are: + +levIns[i] == 1 if its level and all the child levels have a sibling of 0 and +the parent level has a sibling != 0. Considere that the root level always has +a parent with a sibling != 0. + + + ┌──────────────┐ + │ │ + │ │───▶ levIns[0] <== (1-done[i]) + │ │ + └──────────────┘ + ▲ + │ + │ + done[0] + + + + done[i-1] <== levIns[i] + done[i] + ▲ + │ + │ + ┌───────────┐ ┌──────────────┐ + │ │ │ │ + sibling[i-1]───▶│IsZero[i-1]│─▶│ │───▶ levIns[i] <== (1-done[i])*(1-isZero[i-1].out) + │ │ │ │ + └───────────┘ └──────────────┘ + ▲ + │ + │ + done[i] + + + + done[n-2] <== levIns[n-1] + ▲ + │ + │ + ┌───────────┐ ┌──────────────┐ + │ │ │ │ + sibling[n-2]───▶│IsZero[n-2]│─▶│ │────▶ levIns[n-1] <== (1-isZero[n-2].out) + │ │ │ │ + └───────────┘ └──────────────┘ + + ┌───────────┐ + │ │ + sibling[n-1]───▶│IsZero[n-1]│────▶ === 0 + │ │ + └───────────┘ + + */ + +template SMTLevIns(nLevels) { + signal input enabled; + signal input siblings[nLevels]; + signal output levIns[nLevels]; + signal done[nLevels-1]; // Indicates if the insLevel has aready been detected. + + component isZero[nLevels]; + + for (var i=0; i0; i--) { + levIns[i] <== (1-done[i])*(1-isZero[i-1].out) + done[i-1] <== levIns[i] + done[i]; + } + + levIns[0] <== (1-done[0]); +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/smt/smtprocessor.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/smt/smtprocessor.circom new file mode 100644 index 000000000..d4e6fb4e3 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/smt/smtprocessor.circom @@ -0,0 +1,258 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +/*************************************************************************************************** + +SMTProcessor: Sparse Merkle Tree processor is a component to verify an insert/update/delete elements +into the Sparse Merkle tree. + + +Insert to an empty leaf +======================= + + STATE OLD STATE NEW STATE + ===== ========= ========= + + oldRoot newRoot + ▲ ▲ + │ │ + ┌───────┐ ┏━━━┻━━━┓ ┌───────┐ ┏━━━┻━━━┓ + top │Sibling├────▶┃ Hash ┃◀─┐ │Sibling├────▶┃ Hash ┃◀─┐ + └───────┘ ┗━━━━━━━┛ │ └───────┘ ┗━━━━━━━┛ │ + │ │ + │ │ + ┏━━━┻━━━┓ ┌───────┐ ┏━━━┻━━━┓ ┌───────┐ + top ┌─────▶┃ Hash ┃◀──┤Sibling│ ┌─────▶┃ Hash ┃◀──┤Sibling│ + │ ┗━━━━━━━┛ └───────┘ │ ┗━━━━━━━┛ └───────┘ + │ │ + │ │ + ┌───────┐ ┏━━━┻━━━┓ ┌───────┐ ┏━━━┻━━━┓ + top │Sibling├──▶┃ Hash ┃◀─────┐ │Sibling├──▶┃ Hash ┃◀─────┐ + └───────┘ ┗━━━━━━━┛ │ └───────┘ ┗━━━━━━━┛ │ + │ │ + │ │ + ┌────┴────┐ ┌────┴────┐ + old0 │ 0 │ │New1Leaf │ + └─────────┘ └─────────┘ + + + ┏━━━━━━━┓ ┏━━━━━━━┓ + na ┃ Hash ┃ ┃ Hash ┃ + ┗━━━━━━━┛ ┗━━━━━━━┛ + + + ┏━━━━━━━┓ ┏━━━━━━━┓ + na ┃ Hash ┃ ┃ Hash ┃ + ┗━━━━━━━┛ ┗━━━━━━━┛ + + + +Insert to a used leaf. +===================== + + STATE OLD STATE NEW STATE + ===== ========= ========= + + + oldRoot newRoot + ▲ ▲ + │ │ + ┌───────┐ ┏━━━┻━━━┓ ┌───────┐ ┏━━━┻━━━┓ + top │Sibling├────▶┃ Hash ┃◀─┐ │Sibling├────▶┃ Hash ┃◀─┐ + └───────┘ ┗━━━━━━━┛ │ └───────┘ ┗━━━━━━━┛ │ + │ │ + │ │ + ┏━━━┻━━━┓ ┌───────┐ ┏━━━┻━━━┓ ┌───────┐ + top ┌─────▶┃ Hash ┃◀──┤Sibling│ ┌─────▶┃ Hash ┃◀──┤Sibling│ + │ ┗━━━━━━━┛ └───────┘ │ ┗━━━━━━━┛ └───────┘ + │ │ + │ │ + ┌───────┐ ┏━━━┻━━━┓ ┌───────┐ ┏━━━┻━━━┓ + top │Sibling├──▶┃ Hash ┃◀─────┐ │Sibling├──▶┃ Hash ┃◀─────┐ + └───────┘ ┗━━━━━━━┛ │ └───────┘ ┗━━━━━━━┛ │ + │ │ + │ │ + ┌────┴────┐ ┏━━━┻━━━┓ ┌───────┐ + bot │Old1Leaf │ ┌─────▶┃ Hash ┃◀──┼─ 0 │ + └─────────┘ │ ┗━━━━━━━┛ └───────┘ + │ + │ + ┏━━━━━━━┓ ┌───────┐ ┏━━━┻━━━┓ + bot ┃ Hash ┃ │ 0 ─┼──▶┃ Hash ┃◀─────┐ + ┗━━━━━━━┛ └───────┘ ┗━━━━━━━┛ │ + │ + │ + ┏━━━━━━━┓ ┏━━━┻━━━┓ ┌───────┐ + bot ┃ Hash ┃ ┌─────▶┃ Hash ┃◀──│ 0 │ + ┗━━━━━━━┛ │ ┗━━━━━━━┛ └───────┘ + │ + │ + ┏━━━━━━━┓ ┌─────────┐ ┏━━━┻━━━┓ ┌─────────┐ + new1 ┃ Hash ┃ │Old1Leaf ├──▶┃ Hash ┃◀──│New1Leaf │ + ┗━━━━━━━┛ └─────────┘ ┗━━━━━━━┛ └─────────┘ + + + ┏━━━━━━━┓ ┏━━━━━━━┓ + na ┃ Hash ┃ ┃ Hash ┃ + ┗━━━━━━━┛ ┗━━━━━━━┛ + + + ┏━━━━━━━┓ ┏━━━━━━━┓ + na ┃ Hash ┃ ┃ Hash ┃ + ┗━━━━━━━┛ ┗━━━━━━━┛ + + +Fnction +fnc[0] fnc[1] +0 0 NOP +0 1 UPDATE +1 0 INSERT +1 1 DELETE + + +***************************************************************************************************/ + +include "../gates.circom"; +include "../bitify.circom"; +include "../comparators.circom"; +include "../switcher.circom"; +include "smtlevins.circom"; +include "smtprocessorlevel.circom"; +include "smtprocessorsm.circom"; +include "smthash_poseidon.circom"; + +template SMTProcessor(nLevels) { + signal input oldRoot; + signal output newRoot; + signal input siblings[nLevels]; + signal input oldKey; + signal input oldValue; + signal input isOld0; + signal input newKey; + signal input newValue; + signal input fnc[2]; + + signal enabled; + + enabled <== fnc[0] + fnc[1] - fnc[0]*fnc[1] + + component hash1Old = SMTHash1(); + hash1Old.key <== oldKey; + hash1Old.value <== oldValue; + + component hash1New = SMTHash1(); + hash1New.key <== newKey; + hash1New.value <== newValue; + + component n2bOld = Num2Bits_strict(); + component n2bNew = Num2Bits_strict(); + + n2bOld.in <== oldKey; + n2bNew.in <== newKey; + + component smtLevIns = SMTLevIns(nLevels); + for (var i=0; i. +*/ + +/****** + +SMTProcessorLevel + +This circuit has 2 hash + +Outputs according to the state. + +State oldRoot newRoot +===== ======= ======= +top H'(oldChild, sibling) H'(newChild, sibling) +old0 0 new1leaf +bot old1leaf H'(newChild, 0) +new1 old1leaf H'(new1leaf, old1leaf) +na 0 0 + +upd old1leaf new1leaf + +H' is the Hash function with the inputs shifted acordingly. + +*****/ + + +template SMTProcessorLevel() { + signal input st_top; + signal input st_old0; + signal input st_bot; + signal input st_new1; + signal input st_na; + signal input st_upd; + + signal output oldRoot; + signal output newRoot; + signal input sibling; + signal input old1leaf; + signal input new1leaf; + signal input newlrbit; + signal input oldChild; + signal input newChild; + + signal aux[4]; + + component oldProofHash = SMTHash2(); + component newProofHash = SMTHash2(); + + component oldSwitcher = Switcher(); + component newSwitcher = Switcher(); + + // Old side + + oldSwitcher.L <== oldChild; + oldSwitcher.R <== sibling; + + oldSwitcher.sel <== newlrbit; + oldProofHash.L <== oldSwitcher.outL; + oldProofHash.R <== oldSwitcher.outR; + + aux[0] <== old1leaf * (st_bot + st_new1 + st_upd); + oldRoot <== aux[0] + oldProofHash.out * st_top; + + // New side + + aux[1] <== newChild * ( st_top + st_bot); + newSwitcher.L <== aux[1] + new1leaf*st_new1; + + aux[2] <== sibling*st_top; + newSwitcher.R <== aux[2] + old1leaf*st_new1; + + newSwitcher.sel <== newlrbit; + newProofHash.L <== newSwitcher.outL; + newProofHash.R <== newSwitcher.outR; + + aux[3] <== newProofHash.out * (st_top + st_bot + st_new1); + newRoot <== aux[3] + new1leaf * (st_old0 + st_upd); +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/smt/smtprocessorsm.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/smt/smtprocessorsm.circom new file mode 100644 index 000000000..fac95b0d3 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/smt/smtprocessorsm.circom @@ -0,0 +1,164 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +/*************************************************************************************************** +Each level on a SMTProcessor has a state. + +The state of the level depends on the state of te botom level and on `xor` and +`is0` signals. + +`isOldLev` 1 when is the level where oldLeaf is. + +`xor` signal is 0 if the index bit at the current level is the same in the old +and the new index, and 1 if it is different. + +`is0` signal, is 1 if we are inserting/deleting in an empty leaf and 0 if we +are inserting/deleting in a leaf that contains an element. + +The states are: + +top: While the index bits of the old and new insex in the top level is the same, whe are in the top state. +old0: When the we reach insert level, we go to old0 state +if `is0`=1. +btn: Once in insert level and `is0` =0 we go to btn or new1 level if xor=1 +new1: This level is reached when xor=1. Here is where we insert/delete the hash of the +old and the new trees with just one element. +na: Not appliable. After processing it, we go to the na level. + + +Fnction +fnc[0] fnc[1] +0 0 NOP +0 1 UPDATE +1 0 INSERT +1 1 DELETE + + + ########### + # # + ┌────────────────────────────▶# upd #─────────────────────┐ + │ ## ## │ + │ ######### │ + levIns=1 │ │ + fnc[0]=0 │ │ any + │ │ + │ │ + │ │ + │ ########### │ + │ levIns=1 # # │ + levIns=0 │ is0=1 ┌────────────▶# old0 #────────┐ │ any + ┌─────┐ │ fnc[0]=1│ ## ## │ │ ┌──────┐ + │ │ │ │ ######### │ any │ │ │ + │ ▼ │ │ │ ▼ ▼ │ + │ ########### │ │ ########### │ + │ # # ────────────┘ └────────▶# #│ + └──# top # # na # + ## ## ───────────────────┐ levIns=1 ┌──▶## ## + ######### │ is0=0 │ ######### + │ │ fnc[0]=1 │ + │ │ xor=1 ########### │ any + │ └──────────────────▶# # │ + │ # new1 #──┘ + │ ## ## + └────────────────────────────────┐ ######### + levIns=1 │ ▲ + is0=0 │ ┌─────┘ + fnc[0]=1 │ ###########│ xor=1 + xor=0 │ # # + ▼# btn # + ## ## + #########◀───────┐ + │ │ + │ │ + └────────────┘ + xor=0 + +***************************************************************************************************/ + +template SMTProcessorSM() { + signal input xor; + signal input is0; + signal input levIns; + signal input fnc[2]; + + signal input prev_top; + signal input prev_old0; + signal input prev_bot; + signal input prev_new1; + signal input prev_na; + signal input prev_upd; + + signal output st_top; + signal output st_old0; + signal output st_bot; + signal output st_new1; + signal output st_na; + signal output st_upd; + + signal aux1; + signal aux2; + + aux1 <== prev_top * levIns; + aux2 <== aux1*fnc[0]; // prev_top * levIns * fnc[0] + + // st_top = prev_top*(1-levIns) + // = + prev_top + // - prev_top * levIns = aux1 + + st_top <== prev_top - aux1; + + // st_old0 = prev_top * levIns * is0 * fnc[0] + // = + prev_top * levIns * is0 * fnc[0] = aux2 * is0 + + st_old0 <== aux2 * is0; // prev_top * levIns * is0 * fnc[0] + + // st_new1 = prev_top * levIns * (1-is0)*fnc[0] * xor + prev_bot*xor = + // = + prev_top * levIns * fnc[0] * xor = aux2 * xor + // - prev_top * levIns * is0 * fnc[0] * xor = st_old0 * xor + // + prev_bot * xor = prev_bot * xor + + st_new1 <== (aux2 - st_old0 + prev_bot)*xor; + + + // st_bot = prev_top * levIns * (1-is0)*fnc[0] * (1-xor) + prev_bot*(1-xor); + // = + prev_top * levIns * fnc[0] + // - prev_top * levIns * is0 * fnc[0] + // - prev_top * levIns * fnc[0] * xor + // + prev_top * levIns * is0 * fnc[0] * xor + // + prev_bot + // - prev_bot * xor + + st_bot <== (1-xor) * (aux2 - st_old0 + prev_bot) + + + // st_upd = prev_top * (1-fnc[0]) *levIns; + // = + prev_top * levIns + // - prev_top * levIns * fnc[0] + + st_upd <== aux1 - aux2 + + // st_na = prev_new1 + prev_old0 + prev_na + prev_upd; + // = + prev_new1 + // + prev_old0 + // + prev_na + // + prev_upd + + st_na <== prev_new1 + prev_old0 + prev_na + prev_upd; + +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/smt/smtverifier.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/smt/smtverifier.circom new file mode 100644 index 000000000..fbfba25ce --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/smt/smtverifier.circom @@ -0,0 +1,135 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +/* + +SMTVerifier is a component to verify inclusion/exclusion of an element in the tree + + +fnc: 0 -> VERIFY INCLUSION + 1 -> VERIFY NOT INCLUSION + + */ + + +include "../gates.circom"; +include "../bitify.circom"; +include "../comparators.circom"; +include "../switcher.circom"; +include "smtlevins.circom"; +include "smtverifierlevel.circom"; +include "smtverifiersm.circom"; +include "smthash_poseidon.circom"; + +template SMTVerifier(nLevels) { + signal input enabled; + signal input root; + signal input siblings[nLevels]; + signal input oldKey; + signal input oldValue; + signal input isOld0; + signal input key; + signal input value; + signal input fnc; + + component hash1Old = SMTHash1(); + hash1Old.key <== oldKey; + hash1Old.value <== oldValue; + + component hash1New = SMTHash1(); + hash1New.key <== key; + hash1New.value <== value; + + component n2bOld = Num2Bits_strict(); + component n2bNew = Num2Bits_strict(); + + n2bOld.in <== oldKey; + n2bNew.in <== key; + + component smtLevIns = SMTLevIns(nLevels); + for (var i=0; i. +*/ + +/****** + +SMTVerifierLevel + +This circuit has 1 hash + +Outputs according to the state. + +State root +===== ======= +top H'(child, sibling) +i0 0 +iold old1leaf +inew new1leaf +na 0 + +H' is the Hash function with the inputs shifted acordingly. + +*****/ + + +template SMTVerifierLevel() { + signal input st_top; + signal input st_i0; + signal input st_iold; + signal input st_inew; + signal input st_na; + + signal output root; + signal input sibling; + signal input old1leaf; + signal input new1leaf; + signal input lrbit; + signal input child; + + signal aux[2]; + + component proofHash = SMTHash2(); + component switcher = Switcher(); + + switcher.L <== child; + switcher.R <== sibling; + + switcher.sel <== lrbit; + proofHash.L <== switcher.outL; + proofHash.R <== switcher.outR; + + aux[0] <== proofHash.out * st_top; + aux[1] <== old1leaf*st_iold; + + root <== aux[0] + aux[1] + new1leaf*st_inew; +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/smt/smtverifiersm.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/smt/smtverifiersm.circom new file mode 100644 index 000000000..f51965304 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/smt/smtverifiersm.circom @@ -0,0 +1,105 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +/* +Each level in the SMTVerifier has a state. + +This is the state machine. + +The signals are + +levIns: 1 if we are in the level where the insertion should happen +xor: 1 if the bitKey of the old and new keys are different in this level +is0: Input that indicates that the oldKey is 0 +fnc: 0 -> VERIFY INCLUSION + 1 -> VERIFY NOT INCLUSION + +err state is not a state itself. It's a lack of state. + +The end of the last level will have to be `na` + + levIns=0 any + ┌────┐ ┌────┐ + │ │ │ │ + │ ▼ levIns=1 ▼ │ + │ ########### is0=1 ########### ########### │ + │ # # fnc=1 # # any # # │ + └──# top # ─────────────────────▶# i0 #───────────────▶# na #──┘ + ## ## ──────────┐ ## ## ┌───────▶## ## + ########─────────────┐│ ######### │┌────────▶######### + ││ levIns=1 ││ + ││ is0=0 ########### ││ + ││ fnc=1 # # any│ + │└──────────▶ # iold #────────┘│ + │ ## ## │ + │ ######### │ + │ │ + │ levIns=1 ########### │ + │ fnc=0 # # any + └────────────▶# inew #─────────┘ + ## ## + ######### + + */ + + +template SMTVerifierSM() { + signal input is0; + signal input levIns; + signal input fnc; + + signal input prev_top; + signal input prev_i0; + signal input prev_iold; + signal input prev_inew; + signal input prev_na; + + signal output st_top; + signal output st_i0; + signal output st_iold; + signal output st_inew; + signal output st_na; + + signal prev_top_lev_ins; + signal prev_top_lev_ins_fnc; + + prev_top_lev_ins <== prev_top * levIns; + prev_top_lev_ins_fnc <== prev_top_lev_ins*fnc; // prev_top * levIns * fnc + + // st_top = prev_top * (1-levIns) + // = + prev_top + // - prev_top * levIns + st_top <== prev_top - prev_top_lev_ins; + + // st_inew = prev_top * levIns * (1-fnc) + // = + prev_top * levIns + // - prev_top * levIns * fnc + st_inew <== prev_top_lev_ins - prev_top_lev_ins_fnc; + + // st_iold = prev_top * levIns * (1-is0)*fnc + // = + prev_top * levIns * fnc + // - prev_top * levIns * fnc * is0 + st_iold <== prev_top_lev_ins_fnc * (1 - is0); + + // st_i0 = prev_top * levIns * is0 + // = + prev_top * levIns * is0 + st_i0 <== prev_top_lev_ins * is0; + + st_na <== prev_na + prev_inew + prev_iold + prev_i0; +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/switcher.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/switcher.circom new file mode 100644 index 000000000..4d8b1147d --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/circuits/switcher.circom @@ -0,0 +1,40 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +/* + Assume sel is binary. + + If sel == 0 then outL = L and outR=R + If sel == 1 then outL = R and outR=L + + */ + +template Switcher() { + signal input sel; + signal input L; + signal input R; + signal output outL; + signal output outR; + + signal aux; + + aux <== (R-L)*sel; // We create aux in order to have only one multiplication + outL <== aux + L; + outR <== -aux + R; +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/doc/root_transfer.monopic b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/doc/root_transfer.monopic new file mode 100644 index 000000000..032c0ba52 Binary files /dev/null and b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/doc/root_transfer.monopic differ diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/doc/smt_diagram_0.monopic b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/doc/smt_diagram_0.monopic new file mode 100644 index 000000000..c8e5b9b5a Binary files /dev/null and b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/doc/smt_diagram_0.monopic differ diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/doc/smt_diagram_1.monopic b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/doc/smt_diagram_1.monopic new file mode 100644 index 000000000..2f645f2a4 Binary files /dev/null and b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/doc/smt_diagram_1.monopic differ diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/doc/smt_hash.monopic b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/doc/smt_hash.monopic new file mode 100644 index 000000000..afb506a6b Binary files /dev/null and b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/doc/smt_hash.monopic differ diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/doc/smt_levins.monopic b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/doc/smt_levins.monopic new file mode 100644 index 000000000..2c306a8b6 Binary files /dev/null and b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/doc/smt_levins.monopic differ diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/doc/smt_sm.monopic b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/doc/smt_sm.monopic new file mode 100644 index 000000000..f3ee28878 Binary files /dev/null and b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/doc/smt_sm.monopic differ diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/doc/smt_verifier_sm.monopic b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/doc/smt_verifier_sm.monopic new file mode 100644 index 000000000..60551cb2a Binary files /dev/null and b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/doc/smt_verifier_sm.monopic differ diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/doc/voting.monopic b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/doc/voting.monopic new file mode 100644 index 000000000..0e1710db0 Binary files /dev/null and b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/doc/voting.monopic differ diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/doc/window.monopic b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/doc/window.monopic new file mode 100644 index 000000000..309dfb166 Binary files /dev/null and b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/doc/window.monopic differ diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/doc/window_chain.monopic b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/doc/window_chain.monopic new file mode 100644 index 000000000..47c18bd96 Binary files /dev/null and b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/doc/window_chain.monopic differ diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/index.js b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/index.js new file mode 100644 index 000000000..66861b6b0 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/index.js @@ -0,0 +1,6 @@ +exports.smt = require("./src/smt"); +exports.eddsa = require("./src/eddsa"); +exports.mimc7 = require("./src/mimc7"); +exports.mimcsponge = require("./src/mimcsponge"); +exports.babyJub = require("./src/babyjub"); +exports.pedersenHash = require("./src/pedersenHash"); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/package-lock.json b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/package-lock.json new file mode 100644 index 000000000..ecce7b066 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/package-lock.json @@ -0,0 +1,5730 @@ +{ + "name": "circomlib", + "version": "0.0.12", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/highlight": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", + "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/runtime": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.5.1.tgz", + "integrity": "sha512-g+hmPKs16iewFSmW57NkH9xpPkuYD1RV3UE2BCkXx9j+nhhRb9hsiSxPmEa67j35IecTQdn4iyMtHMbt5VoREg==", + "requires": { + "regenerator-runtime": "^0.13.2" + } + }, + "@types/bn.js": { + "version": "4.11.5", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.5.tgz", + "integrity": "sha512-AEAZcIZga0JgVMHNtl1CprA/hXX7/wPt79AgR4XqaDt7jyj3QWYw6LPoOiznPtugDmlubUnAahMs2PFxGcQrng==", + "requires": { + "@types/node": "*" + } + }, + "@types/node": { + "version": "10.14.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.12.tgz", + "integrity": "sha512-QcAKpaO6nhHLlxWBvpc4WeLrTvPqlHOvaj0s5GriKkA1zq+bsFBPpfYCvQhLqLgYlIko8A9YrPdaMHCo5mBcpg==" + }, + "acorn": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.2.0.tgz", + "integrity": "sha512-8oe72N3WPMjA+2zVG71Ia0nXZ8DpQH+QyyHO+p06jT8eg8FGG3FbcUIi8KziHlAfheJQZeoqbvq1mQSQHXKYLw==" + }, + "acorn-jsx": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", + "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==" + }, + "aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0=" + }, + "ajv": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.1.tgz", + "integrity": "sha512-w1YQaVGNC6t2UCPjEawK/vo/dG8OOrVtUmhBT1uJJYxbl5kU2Tj3v6LGqBcsysN1yhuCStJCCA3GqdvKY8sqXQ==", + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "requires": { + "ansi-wrap": "^0.1.0" + } + }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" + }, + "ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=" + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "append-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", + "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", + "requires": { + "buffer-equal": "^1.0.0" + } + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=" + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "arr-filter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", + "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", + "requires": { + "make-iterator": "^1.0.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + }, + "arr-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", + "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", + "requires": { + "make-iterator": "^1.0.0" + } + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + }, + "array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=" + }, + "array-initial": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", + "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", + "requires": { + "array-slice": "^1.0.0", + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" + } + } + }, + "array-last": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", + "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", + "requires": { + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" + } + } + }, + "array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==" + }, + "array-sort": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", + "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", + "requires": { + "default-compare": "^1.0.0", + "get-value": "^2.0.6", + "kind-of": "^5.0.2" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==" + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==" + }, + "async-done": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", + "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.2", + "process-nextick-args": "^2.0.0", + "stream-exhaust": "^1.0.1" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" + }, + "async-settle": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", + "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", + "requires": { + "async-done": "^1.2.2" + } + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + }, + "bach": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", + "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", + "requires": { + "arr-filter": "^1.1.1", + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "array-each": "^1.0.0", + "array-initial": "^1.0.0", + "array-last": "^1.1.1", + "async-done": "^1.2.2", + "async-settle": "^1.0.0", + "now-and-later": "^2.0.0" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "big-integer": { + "version": "1.6.44", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.44.tgz", + "integrity": "sha512-7MzElZPTyJ2fNvBkPxtFQ2fWIkVmuzw41+BZHSzpEq3ymB2MfeKp1+yXl/tS75xCx+WnyV+yb0kp+K1C3UNwmQ==" + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bip66": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/bip66/-/bip66-1.1.5.tgz", + "integrity": "sha1-AfqHSHhcpwlV1QESF9GzE5lpyiI=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "blake-hash": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/blake-hash/-/blake-hash-1.1.0.tgz", + "integrity": "sha512-rNbOFPT7DC/0XnLBJ0noWuzcV+9kHwEKzRGljHMDLQzYv6WZT1vjV3UkWQuNFzyr5tIL7zSsw7A834pgTl75xQ==", + "requires": { + "bindings": "^1.2.1", + "inherits": "^2.0.3", + "nan": "^2.2.1" + } + }, + "blake2b": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/blake2b/-/blake2b-2.1.3.tgz", + "integrity": "sha512-pkDss4xFVbMb4270aCyGD3qLv92314Et+FsKzilCLxDz5DuZ2/1g3w4nmBbu6nKApPspnjG7JcwTjGZnduB1yg==", + "requires": { + "blake2b-wasm": "^1.1.0", + "nanoassert": "^1.0.0" + } + }, + "blake2b-wasm": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/blake2b-wasm/-/blake2b-wasm-1.1.7.tgz", + "integrity": "sha512-oFIHvXhlz/DUgF0kq5B1CqxIDjIJwh9iDeUUGQUcvgiGz7Wdw03McEO7CfLBy7QKGdsydcMCgO9jFNBAFCtFcA==", + "requires": { + "nanoassert": "^1.0.0" + } + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=" + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "buffer-to-arraybuffer": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz", + "integrity": "sha1-YGSkD6dutDxyOrqe+PbhIW0QURo=" + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "chai": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", + "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "pathval": "^1.1.0", + "type-detect": "^4.0.5" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=" + }, + "chokidar": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.6.tgz", + "integrity": "sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==", + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + } + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "circom": { + "version": "0.0.28", + "resolved": "https://registry.npmjs.org/circom/-/circom-0.0.28.tgz", + "integrity": "sha512-cYivdFVPUAVsGFgx3/W3BQe50fwiu+w8Mq9rWA/UYLWwjAgY0Ctk+obpxGL5v9ZHJpO6pvmczLnOXmV/KqiB5g==", + "dev": true, + "requires": { + "big-integer": "^1.6.32", + "optimist": "^0.6.1", + "yargs": "^12.0.2" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" + }, + "clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=" + }, + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=" + }, + "cloneable-readable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", + "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", + "requires": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "collection-map": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", + "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", + "requires": { + "arr-map": "^2.0.2", + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" + }, + "commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "convert-source-map": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "requires": { + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "cookiejar": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", + "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==" + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + }, + "copy-props": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.4.tgz", + "integrity": "sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A==", + "requires": { + "each-props": "^1.3.0", + "is-plain-object": "^2.0.1" + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "requires": { + "type-detect": "^4.0.0" + } + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + }, + "default-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", + "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", + "requires": { + "kind-of": "^5.0.2" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "default-resolution": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", + "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=" + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=" + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-walk": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", + "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=" + }, + "drbg.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/drbg.js/-/drbg.js-1.0.1.tgz", + "integrity": "sha1-Pja2xCs3BDgjzbwzLVjzHiRFSAs=", + "requires": { + "browserify-aes": "^1.0.6", + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4" + } + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "each-props": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", + "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "requires": { + "is-plain-object": "^2.0.1", + "object.defaults": "^1.1.0" + } + }, + "elliptic": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.0.tgz", + "integrity": "sha512-eFOJTMyCYb7xtE/caJ6JJu+bhi67WCYNbkGSknu20pmM8Ke/bqOfdnZWxyoGN26JgfxTbXrsCkEw4KheCT/KGg==", + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "requires": { + "once": "^1.4.0" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", + "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", + "requires": { + "es-to-primitive": "^1.2.0", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-keys": "^1.0.12" + } + }, + "es-to-primitive": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", + "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es5-ext": { + "version": "0.10.50", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.50.tgz", + "integrity": "sha512-KMzZTPBkeQV/JcSQhI5/z6d9VWJ3EnQ194USTUwIYZ2ZbpN8+SGXQKt1h68EX44+qt+Fzr8DO17vnxrw7c3agw==", + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.1", + "next-tick": "^1.0.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "requires": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "eslint": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", + "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.9.1", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^4.0.3", + "eslint-utils": "^1.3.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^5.0.1", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.7.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^6.2.2", + "js-yaml": "^3.13.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.11", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^5.5.1", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0" + } + }, + "eslint-plugin-mocha": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-5.3.0.tgz", + "integrity": "sha512-3uwlJVLijjEmBeNyH60nzqgA1gacUWLUmcKV8PIGNvj1kwP/CTgAWQHn2ayyJVwziX+KETkr9opNwT1qD/RZ5A==", + "dev": true, + "requires": { + "ramda": "^0.26.1" + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.3.1.tgz", + "integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==" + }, + "eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==" + }, + "espree": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", + "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", + "requires": { + "acorn": "^6.0.7", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "esquery": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", + "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "requires": { + "estraverse": "^4.0.0" + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + }, + "eth-ens-namehash": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz", + "integrity": "sha1-IprEbsqG1S4MmR58sq74P/D2i88=", + "requires": { + "idna-uts46-hx": "^2.3.1", + "js-sha3": "^0.5.7" + } + }, + "eth-lib": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", + "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", + "requires": { + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "xhr-request-promise": "^0.1.2" + } + }, + "ethereum-common": { + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.0.18.tgz", + "integrity": "sha1-L9w1dvIykDNYl26znaeDIT/5Uj8=" + }, + "ethereumjs-tx": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz", + "integrity": "sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA==", + "requires": { + "ethereum-common": "^0.0.18", + "ethereumjs-util": "^5.0.0" + } + }, + "ethereumjs-util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz", + "integrity": "sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA==", + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "ethjs-util": "^0.1.3", + "keccak": "^1.0.2", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1", + "secp256k1": "^3.0.1" + } + }, + "ethers": { + "version": "4.0.32", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.32.tgz", + "integrity": "sha512-r0k2tBNF6MYEsvwmINeP3VPppD/7eAZyiOk/ifDDawXGCKqr3iEQkPq6OZSDVD+4Jie38WPteS9thXzpn2+A5Q==", + "requires": { + "@types/node": "^10.3.2", + "aes-js": "3.0.0", + "bn.js": "^4.4.0", + "elliptic": "6.3.3", + "hash.js": "1.1.3", + "js-sha3": "0.5.7", + "scrypt-js": "2.0.4", + "setimmediate": "1.0.4", + "uuid": "2.0.1", + "xmlhttprequest": "1.8.0" + }, + "dependencies": { + "elliptic": { + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz", + "integrity": "sha1-VILZZG1UvLif19mU/J4ulWiHbj8=", + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "inherits": "^2.0.1" + } + }, + "hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.0" + } + } + } + }, + "ethjs-unit": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", + "integrity": "sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk=", + "requires": { + "bn.js": "4.11.6", + "number-to-bn": "1.7.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" + } + } + }, + "ethjs-util": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", + "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", + "requires": { + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" + } + }, + "eventemitter3": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", + "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==" + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", + "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "fancy-log": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", + "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", + "requires": { + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "parse-node-version": "^1.0.0", + "time-stamp": "^1.0.0" + } + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "requires": { + "flat-cache": "^2.0.1" + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "fined": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "requires": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + } + }, + "flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==" + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "flatted": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", + "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==" + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "requires": { + "is-callable": "^1.1.3" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "requires": { + "for-in": "^1.0.1" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "requires": { + "map-cache": "^0.2.2" + } + }, + "fs-mkdirp-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", + "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", + "requires": { + "graceful-fs": "^4.1.11", + "through2": "^2.0.3" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "optional": true, + "requires": { + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "debug": { + "version": "4.1.1", + "bundled": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "optional": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.1", + "bundled": true, + "optional": true + }, + "needle": { + "version": "2.3.0", + "bundled": true, + "optional": true, + "requires": { + "debug": "^4.1.0", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.12.0", + "bundled": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.6", + "bundled": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.1", + "bundled": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "optional": true + }, + "semver": { + "version": "5.7.0", + "bundled": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "optional": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + }, + "ganache-cli": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/ganache-cli/-/ganache-cli-6.4.4.tgz", + "integrity": "sha512-JWygbyZuM2GQl2ZvU7tBkjpgJaKE/XEtB99ech17XTouuqLU5rBcyO3sMb/L83wAtzr0gBnTgenIBl+OeREpJw==", + "dev": true, + "requires": { + "bn.js": "4.11.8", + "source-map-support": "0.5.9", + "yargs": "11.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "bundled": true, + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "bundled": true, + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "bundled": true, + "dev": true + }, + "cliui": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "cross-spawn": { + "version": "5.1.0", + "bundled": true, + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "decamelize": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, + "execa": { + "version": "0.7.0", + "bundled": true, + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "get-caller-file": { + "version": "1.0.3", + "bundled": true, + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "invert-kv": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "isexe": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "lcid": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lru-cache": { + "version": "4.1.4", + "bundled": true, + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^3.0.2" + } + }, + "mem": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, + "npm-run-path": { + "version": "2.0.2", + "bundled": true, + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "os-locale": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, + "p-finally": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "bundled": true, + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "path-key": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "require-directory": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true + }, + "source-map": { + "version": "0.6.1", + "bundled": true, + "dev": true + }, + "source-map-support": { + "version": "0.5.9", + "bundled": true, + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "which": { + "version": "1.3.1", + "bundled": true, + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "y18n": { + "version": "3.2.1", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true, + "dev": true + }, + "yargs": { + "version": "11.1.0", + "bundled": true, + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" + } + }, + "yargs-parser": { + "version": "9.0.2", + "bundled": true, + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=" + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + }, + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", + "requires": { + "extend": "^3.0.0", + "glob": "^7.1.1", + "glob-parent": "^3.1.0", + "is-negated-glob": "^1.0.0", + "ordered-read-streams": "^1.0.0", + "pumpify": "^1.3.5", + "readable-stream": "^2.1.5", + "remove-trailing-separator": "^1.0.1", + "to-absolute-glob": "^2.0.0", + "unique-stream": "^2.0.2" + } + }, + "glob-watcher": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.3.tgz", + "integrity": "sha512-8tWsULNEPHKQ2MR4zXuzSmqbdyV5PtwwCaWSGQ1WwHsJ07ilNeN1JB8ntxhckbnpSHaf9dXFUHzIWvm1I13dsg==", + "requires": { + "anymatch": "^2.0.0", + "async-done": "^1.2.0", + "chokidar": "^2.0.0", + "is-negated-glob": "^1.0.0", + "just-debounce": "^1.0.0", + "object.defaults": "^1.1.0" + } + }, + "global": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", + "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", + "requires": { + "min-document": "^2.19.0", + "process": "~0.5.1" + } + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + }, + "glogg": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", + "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", + "requires": { + "sparkles": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz", + "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==" + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true + }, + "gulp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", + "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", + "requires": { + "glob-watcher": "^5.0.3", + "gulp-cli": "^2.2.0", + "undertaker": "^1.2.1", + "vinyl-fs": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "gulp-cli": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.2.0.tgz", + "integrity": "sha512-rGs3bVYHdyJpLqR0TUBnlcZ1O5O++Zs4bA0ajm+zr3WFCfiSLjGwoCBqFs18wzN+ZxahT9DkOK5nDf26iDsWjA==", + "requires": { + "ansi-colors": "^1.0.1", + "archy": "^1.0.0", + "array-sort": "^1.0.0", + "color-support": "^1.1.3", + "concat-stream": "^1.6.0", + "copy-props": "^2.0.1", + "fancy-log": "^1.3.2", + "gulplog": "^1.0.0", + "interpret": "^1.1.0", + "isobject": "^3.0.1", + "liftoff": "^3.1.0", + "matchdep": "^2.0.0", + "mute-stdout": "^1.0.0", + "pretty-hrtime": "^1.0.0", + "replace-homedir": "^1.0.0", + "semver-greatest-satisfied-range": "^1.1.0", + "v8flags": "^3.0.1", + "yargs": "^7.1.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "requires": { + "invert-kv": "^1.0.0" + } + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "requires": { + "lcid": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.0" + } + }, + "yargs-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "requires": { + "camelcase": "^3.0.0" + } + } + } + }, + "gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "requires": { + "glogg": "^1.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==" + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "idna-uts46-hx": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz", + "integrity": "sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA==", + "requires": { + "punycode": "2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", + "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=" + } + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" + }, + "import-fresh": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz", + "integrity": "sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + }, + "inquirer": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.4.1.tgz", + "integrity": "sha512-/Jw+qPZx4EDYsaT6uz7F4GJRNFMRdKNeUZw3ZnKV8lyuUgz/YWRCSUAJMZSVhSq4Ec0R2oYnyi6b3d4JXcL5Nw==", + "requires": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.11", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "interpret": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==" + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "is-function": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.1.tgz", + "integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU=" + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-hex-prefixed": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha1-fY035q135dEnFIkTxXPggtd39VQ=" + }, + "is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=" + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "requires": { + "has": "^1.0.1" + } + }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "requires": { + "is-unc-path": "^1.0.0" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-symbol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "requires": { + "has-symbols": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "requires": { + "unc-path-regex": "^0.1.2" + } + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + }, + "is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=" + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "js-sha3": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", + "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" + }, + "just-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz", + "integrity": "sha1-h/zPrv/AtozRnVX2cilD+SnqNeo=" + }, + "keccak": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-1.4.0.tgz", + "integrity": "sha512-eZVaCpblK5formjPjeTBik7TAg+pqnDrMHIffSvi9Lh7PQgM1+hSzakUeZFCk9DVVG0dacZJuaz2ntwlzZUIBw==", + "requires": { + "bindings": "^1.2.1", + "inherits": "^2.0.3", + "nan": "^2.2.1", + "safe-buffer": "^5.1.0" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + }, + "last-run": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", + "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", + "requires": { + "default-resolution": "^2.0.0", + "es6-weak-map": "^2.0.1" + } + }, + "lazystream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "requires": { + "readable-stream": "^2.0.5" + } + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "requires": { + "invert-kv": "^2.0.0" + } + }, + "lead": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", + "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", + "requires": { + "flush-write-stream": "^1.0.2" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "liftoff": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", + "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", + "requires": { + "extend": "^3.0.0", + "findup-sync": "^3.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + }, + "make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "requires": { + "kind-of": "^6.0.2" + } + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "requires": { + "object-visit": "^1.0.0" + } + }, + "matchdep": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", + "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", + "requires": { + "findup-sync": "^2.0.0", + "micromatch": "^3.0.4", + "resolve": "^1.4.0", + "stack-trace": "0.0.10" + }, + "dependencies": { + "findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + }, + "dependencies": { + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + } + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + }, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "requires": { + "dom-walk": "^0.1.0" + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + }, + "mocha": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", + "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", + "dev": true, + "requires": { + "browser-stdout": "1.3.1", + "commander": "2.15.1", + "debug": "3.1.0", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.5", + "he": "1.1.1", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "supports-color": "5.4.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "mute-stdout": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", + "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==" + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" + }, + "nanoassert": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/nanoassert/-/nanoassert-1.1.0.tgz", + "integrity": "sha1-TzFS4JVA/eKMdvRLGbvNHVpCR40=" + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "now-and-later": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", + "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", + "requires": { + "once": "^1.3.2" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "^2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "number-to-bn": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", + "integrity": "sha1-uzYjWS9+X54AMLGXe9QaDFP+HqA=", + "requires": { + "bn.js": "4.11.6", + "strip-hex-prefix": "1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" + } + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "requires": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "requires": { + "isobject": "^3.0.1" + } + }, + "object.reduce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", + "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + } + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" + } + }, + "ordered-read-streams": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", + "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", + "requires": { + "readable-stream": "^2.0.1" + } + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==" + }, + "p-limit": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "requires": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + } + }, + "parse-headers": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.2.tgz", + "integrity": "sha512-/LypJhzFmyBIDYP9aDVgeyEb5sQfbfY5mnDq4hVhlQ69js87wXfmEI5V3xI6vvXasqebp0oCytYFLxsBVfCzSg==", + "requires": { + "for-each": "^0.3.3", + "string.prototype.trim": "^1.1.2" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "^1.2.0" + } + }, + "parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==" + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "requires": { + "path-root-regex": "^0.1.0" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=" + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pathval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", + "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=" + }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "^2.0.0" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=" + }, + "process": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", + "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "requires": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", + "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==" + }, + "ramda": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.26.1.tgz", + "integrity": "sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "^2.0.0" + } + } + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "requires": { + "resolve": "^1.1.6" + } + }, + "regenerator-runtime": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz", + "integrity": "sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==" + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==" + }, + "remove-bom-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", + "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "requires": { + "is-buffer": "^1.1.5", + "is-utf8": "^0.2.1" + } + }, + "remove-bom-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", + "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", + "requires": { + "remove-bom-buffer": "^3.0.0", + "safe-buffer": "^5.1.0", + "through2": "^2.0.3" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=" + }, + "replace-homedir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", + "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", + "requires": { + "homedir-polyfill": "^1.0.1", + "is-absolute": "^1.0.0", + "remove-trailing-separator": "^1.1.0" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" + }, + "resolve": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", + "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + }, + "resolve-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", + "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", + "requires": { + "value-or-function": "^3.0.0" + } + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rlp": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.3.tgz", + "integrity": "sha512-l6YVrI7+d2vpW6D6rS05x2Xrmq8oW7v3pieZOJKBEdjuTF4Kz/iwk55Zyh1Zaz+KOB2kC8+2jZlp2u9L4tTzCQ==", + "requires": { + "bn.js": "^4.11.1", + "safe-buffer": "^5.1.1" + } + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "requires": { + "is-promise": "^2.1.0" + } + }, + "rxjs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz", + "integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==", + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "scrypt": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/scrypt/-/scrypt-6.0.3.tgz", + "integrity": "sha1-BOAUpWgrU/pQwtXM4WfXGcBthw0=", + "optional": true, + "requires": { + "nan": "^2.0.8" + } + }, + "scrypt-js": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.4.tgz", + "integrity": "sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw==" + }, + "scrypt.js": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/scrypt.js/-/scrypt.js-0.3.0.tgz", + "integrity": "sha512-42LTc1nyFsyv/o0gcHtDztrn+aqpkaCNt5Qh7ATBZfhEZU7IC/0oT/qbBH+uRNoAPvs2fwiOId68FDEoSRA8/A==", + "requires": { + "scrypt": "^6.0.2", + "scryptsy": "^1.2.1" + } + }, + "scryptsy": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/scryptsy/-/scryptsy-1.2.1.tgz", + "integrity": "sha1-oyJfpLJST4AnAHYeKFW987LZIWM=", + "requires": { + "pbkdf2": "^3.0.3" + } + }, + "secp256k1": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.7.1.tgz", + "integrity": "sha512-1cf8sbnRreXrQFdH6qsg2H71Xw91fCCS9Yp021GnUNJzWJS/py96fS4lHbnTnouLp08Xj6jBoBB6V78Tdbdu5g==", + "requires": { + "bindings": "^1.5.0", + "bip66": "^1.1.5", + "bn.js": "^4.11.8", + "create-hash": "^1.2.0", + "drbg.js": "^1.0.1", + "elliptic": "^6.4.1", + "nan": "^2.14.0", + "safe-buffer": "^5.1.2" + } + }, + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" + }, + "semver-greatest-satisfied-range": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", + "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", + "requires": { + "sver-compat": "^1.5.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.4.tgz", + "integrity": "sha1-IOgd5iLUoCWIzgyNqJc8vPHTE48=" + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "simple-concat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz", + "integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=" + }, + "simple-get": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.1.tgz", + "integrity": "sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw==", + "requires": { + "decompress-response": "^3.3.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "snarkjs": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/snarkjs/-/snarkjs-0.1.11.tgz", + "integrity": "sha512-NoMNn03Uwbt18V340ZlHSZscyfIu8F6fMOL7LT9Xr1zQY/nmzScM8442ATyJfzSI5bDTAz1QQGbCerP2BCKljA==", + "requires": { + "big-integer": "^1.6.35", + "chai": "^4.1.2", + "escape-string-regexp": "^1.0.5", + "eslint": "^5.3.0", + "yargs": "^12.0.2" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + }, + "sparkles": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", + "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==" + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==" + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz", + "integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==" + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "stream-exhaust": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", + "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==" + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=" + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "string.prototype.trim": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz", + "integrity": "sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=", + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.5.0", + "function-bind": "^1.0.2" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "strip-hex-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", + "integrity": "sha1-DF8VX+8RUTczd96du1iNoFUA428=", + "requires": { + "is-hex-prefixed": "1.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "sver-compat": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", + "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", + "requires": { + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" + } + }, + "table": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.1.tgz", + "integrity": "sha512-E6CK1/pZe2N75rGZQotFOdmzWQ1AILtgYbMAbAjvms0S1l5IDB47zG3nCnFGB/w+7nB3vKofbLXCH7HPBo864w==", + "requires": { + "ajv": "^6.9.1", + "lodash": "^4.17.11", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "through2-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", + "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "requires": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + }, + "time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=" + }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", + "requires": { + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" + } + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "to-through": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", + "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", + "requires": { + "through2": "^2.0.3" + } + }, + "tslib": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" + }, + "type": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/type/-/type-1.0.1.tgz", + "integrity": "sha512-MAM5dBMJCJNKs9E7JXo4CXRAansRfG0nlJxW7Wf6GZzSOvH31zClSaHdIMWLehe/EGMBkqeC55rrkaOr5Oo7Nw==" + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=" + }, + "undertaker": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.2.1.tgz", + "integrity": "sha512-71WxIzDkgYk9ZS+spIB8iZXchFhAdEo2YU8xYqBYJ39DIUIqziK78ftm26eecoIY49X0J2MLhG4hr18Yp6/CMA==", + "requires": { + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "bach": "^1.0.0", + "collection-map": "^1.0.0", + "es6-weak-map": "^2.0.1", + "last-run": "^1.1.0", + "object.defaults": "^1.0.0", + "object.reduce": "^1.0.0", + "undertaker-registry": "^1.0.0" + } + }, + "undertaker-registry": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", + "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=" + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "unique-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", + "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", + "requires": { + "json-stable-stringify-without-jsonify": "^1.0.1", + "through2-filter": "^3.0.0" + } + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + } + } + }, + "upath": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", + "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==" + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + }, + "url-parse": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.4.tgz", + "integrity": "sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg==", + "requires": { + "querystringify": "^2.0.0", + "requires-port": "^1.0.0" + } + }, + "url-set-query": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-set-query/-/url-set-query-1.0.0.tgz", + "integrity": "sha1-AW6M/Xwg7gXK/neV6JK9BwL6ozk=" + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" + }, + "utf8": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-2.1.1.tgz", + "integrity": "sha1-LgHbAvfY0JRPdxBPFgnrDDBM92g=" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "uuid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz", + "integrity": "sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w=" + }, + "v8flags": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.3.tgz", + "integrity": "sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w==", + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "value-or-function": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", + "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=" + }, + "vinyl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", + "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", + "requires": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + } + }, + "vinyl-fs": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", + "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "requires": { + "fs-mkdirp-stream": "^1.0.0", + "glob-stream": "^6.1.0", + "graceful-fs": "^4.0.0", + "is-valid-glob": "^1.0.0", + "lazystream": "^1.0.0", + "lead": "^1.0.0", + "object.assign": "^4.0.4", + "pumpify": "^1.3.5", + "readable-stream": "^2.3.3", + "remove-bom-buffer": "^3.0.0", + "remove-bom-stream": "^1.2.0", + "resolve-options": "^1.1.0", + "through2": "^2.0.0", + "to-through": "^2.0.0", + "value-or-function": "^3.0.0", + "vinyl": "^2.0.0", + "vinyl-sourcemap": "^1.1.0" + } + }, + "vinyl-sourcemap": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", + "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", + "requires": { + "append-buffer": "^1.0.2", + "convert-source-map": "^1.5.0", + "graceful-fs": "^4.1.6", + "normalize-path": "^2.1.1", + "now-and-later": "^2.0.0", + "remove-bom-buffer": "^3.0.0", + "vinyl": "^2.0.0" + } + }, + "web3": { + "version": "1.0.0-beta.55", + "resolved": "https://registry.npmjs.org/web3/-/web3-1.0.0-beta.55.tgz", + "integrity": "sha512-yJpwy4IUA3T/F9hWzYQVn0GbJCrAaZ0KTIO3iuqkhaYH0Y09KV7k4GzFi4hN7hT4cFTj4yIKaeVCwQ5kzvi2Vg==", + "requires": { + "@babel/runtime": "^7.3.1", + "@types/node": "^10.12.18", + "web3-core": "1.0.0-beta.55", + "web3-eth": "1.0.0-beta.55", + "web3-eth-personal": "1.0.0-beta.55", + "web3-net": "1.0.0-beta.55", + "web3-providers": "1.0.0-beta.55", + "web3-shh": "1.0.0-beta.55", + "web3-utils": "1.0.0-beta.55" + } + }, + "web3-core": { + "version": "1.0.0-beta.55", + "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.0.0-beta.55.tgz", + "integrity": "sha512-AMMp7TLEtE7u8IJAu/THrRhBTZyZzeo7Y6GiWYNwb5+KStC9hIGLr9cI1KX9R6ZioTOLRHrqT7awDhnJ1ku2mg==", + "requires": { + "@babel/runtime": "^7.3.1", + "@types/bn.js": "^4.11.4", + "@types/node": "^10.12.18", + "lodash": "^4.17.11", + "web3-core-method": "1.0.0-beta.55", + "web3-providers": "1.0.0-beta.55", + "web3-utils": "1.0.0-beta.55" + } + }, + "web3-core-helpers": { + "version": "1.0.0-beta.55", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.0.0-beta.55.tgz", + "integrity": "sha512-suj9Xy/lIqajaYLJTEjr2rlFgu6hGYwChHmf8+qNrC2luZA6kirTamtB9VThWMxbywx7p0bqQFjW6zXogAgWhg==", + "requires": { + "@babel/runtime": "^7.3.1", + "lodash": "^4.17.11", + "web3-core": "1.0.0-beta.55", + "web3-eth-iban": "1.0.0-beta.55", + "web3-utils": "1.0.0-beta.55" + } + }, + "web3-core-method": { + "version": "1.0.0-beta.55", + "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.0.0-beta.55.tgz", + "integrity": "sha512-w1cW/s2ji9qGELHk2uMJCn1ooay0JJLVoPD1nvmsW6OTRWcVjxa62nJrFQhe6P5lEb83Xk9oHgmCxZoVUHibOw==", + "requires": { + "@babel/runtime": "^7.3.1", + "eventemitter3": "3.1.0", + "lodash": "^4.17.11", + "rxjs": "^6.4.0", + "web3-core": "1.0.0-beta.55", + "web3-core-helpers": "1.0.0-beta.55", + "web3-core-subscriptions": "1.0.0-beta.55", + "web3-utils": "1.0.0-beta.55" + } + }, + "web3-core-subscriptions": { + "version": "1.0.0-beta.55", + "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.0.0-beta.55.tgz", + "integrity": "sha512-pb3oQbUzK7IoyXwag8TYInQddg0rr7BHxKc+Pbs/92hVNQ5ps4iGMVJKezdrjlQ1IJEEUiDIglXl4LZ1hIuMkw==", + "requires": { + "@babel/runtime": "^7.3.1", + "eventemitter3": "^3.1.0", + "lodash": "^4.17.11" + } + }, + "web3-eth": { + "version": "1.0.0-beta.55", + "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.0.0-beta.55.tgz", + "integrity": "sha512-F3zJ9I1gOgQdNGfi2Dy2lmj6OqCMJoRN01XHhQZagq0HY1JYMfObtfMi5E3L+qsegsSddHbqp4YY57tKx6uxpA==", + "requires": { + "@babel/runtime": "^7.3.1", + "ethereumjs-tx": "^1.3.7", + "rxjs": "^6.4.0", + "web3-core": "1.0.0-beta.55", + "web3-core-helpers": "1.0.0-beta.55", + "web3-core-method": "1.0.0-beta.55", + "web3-core-subscriptions": "1.0.0-beta.55", + "web3-eth-abi": "1.0.0-beta.55", + "web3-eth-accounts": "1.0.0-beta.55", + "web3-eth-contract": "1.0.0-beta.55", + "web3-eth-ens": "1.0.0-beta.55", + "web3-eth-iban": "1.0.0-beta.55", + "web3-eth-personal": "1.0.0-beta.55", + "web3-net": "1.0.0-beta.55", + "web3-providers": "1.0.0-beta.55", + "web3-utils": "1.0.0-beta.55" + } + }, + "web3-eth-abi": { + "version": "1.0.0-beta.55", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.0.0-beta.55.tgz", + "integrity": "sha512-3h1xnm/vYmKUXTOYAOP0OsB5uijQV76pNNRGKOB6Dq6GR1pbcbD3WrB/4I643YA8l91t5FRzFzUiA3S77R2iqw==", + "requires": { + "@babel/runtime": "^7.3.1", + "ethers": "^4.0.27", + "lodash": "^4.17.11", + "web3-utils": "1.0.0-beta.55" + } + }, + "web3-eth-accounts": { + "version": "1.0.0-beta.55", + "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.0.0-beta.55.tgz", + "integrity": "sha512-VfzvwpSDHXqRVelIxsBVhgbV9BkFvhJ/q+bKhnVUUXV0JAhMK/7uC92TsqKk4EBYuqpHyZ1jjqrL4n03fMU7zw==", + "requires": { + "@babel/runtime": "^7.3.1", + "browserify-cipher": "^1.0.1", + "eth-lib": "0.2.8", + "lodash": "^4.17.11", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "scrypt.js": "0.3.0", + "uuid": "3.3.2", + "web3-core": "1.0.0-beta.55", + "web3-core-helpers": "1.0.0-beta.55", + "web3-core-method": "1.0.0-beta.55", + "web3-providers": "1.0.0-beta.55", + "web3-utils": "1.0.0-beta.55" + }, + "dependencies": { + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + } + } + }, + "web3-eth-contract": { + "version": "1.0.0-beta.55", + "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.0.0-beta.55.tgz", + "integrity": "sha512-v6oB1wfH039/A5sTb4ZTKX++fcBTHEkuQGpq50ATIDoxP/UTz2+6S+iL+3sCJTsByPw2/Bni/HM7NmLkXqzg/Q==", + "requires": { + "@babel/runtime": "^7.3.1", + "@types/bn.js": "^4.11.4", + "lodash": "^4.17.11", + "web3-core": "1.0.0-beta.55", + "web3-core-helpers": "1.0.0-beta.55", + "web3-core-method": "1.0.0-beta.55", + "web3-core-subscriptions": "1.0.0-beta.55", + "web3-eth-abi": "1.0.0-beta.55", + "web3-eth-accounts": "1.0.0-beta.55", + "web3-providers": "1.0.0-beta.55", + "web3-utils": "1.0.0-beta.55" + } + }, + "web3-eth-ens": { + "version": "1.0.0-beta.55", + "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.0.0-beta.55.tgz", + "integrity": "sha512-jEL17coO0FJXb7KYq4+7DhVXj0Rh+wHfZ86jOvFUvJsRaUHfqK2TlMatuhD2mbrmxpBYb6oMPnXVnNK9bnD5Rg==", + "requires": { + "@babel/runtime": "^7.3.1", + "eth-ens-namehash": "2.0.8", + "lodash": "^4.17.11", + "web3-core": "1.0.0-beta.55", + "web3-core-helpers": "1.0.0-beta.55", + "web3-core-method": "1.0.0-beta.55", + "web3-eth-abi": "1.0.0-beta.55", + "web3-eth-accounts": "1.0.0-beta.55", + "web3-eth-contract": "1.0.0-beta.55", + "web3-net": "1.0.0-beta.55", + "web3-providers": "1.0.0-beta.55", + "web3-utils": "1.0.0-beta.55" + } + }, + "web3-eth-iban": { + "version": "1.0.0-beta.55", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.0.0-beta.55.tgz", + "integrity": "sha512-a2Fxsb5Mssa+jiXgjUdIzJipE0175IcQXJbZLpKft2+zeSJWNTbaa3PQD2vPPpIM4W789q06N+f9Zc0Fyls+1g==", + "requires": { + "@babel/runtime": "^7.3.1", + "bn.js": "4.11.8", + "web3-utils": "1.0.0-beta.55" + } + }, + "web3-eth-personal": { + "version": "1.0.0-beta.55", + "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.0.0-beta.55.tgz", + "integrity": "sha512-H0mahLQx6Oj7lpgTamKAswr3rHChRUZijeWAar2Hj7BABQlLRKwx8n09nYhxggvvLYQNQS90JjvQue7rAo2LQQ==", + "requires": { + "@babel/runtime": "^7.3.1", + "web3-core": "1.0.0-beta.55", + "web3-core-helpers": "1.0.0-beta.55", + "web3-core-method": "1.0.0-beta.55", + "web3-eth-accounts": "1.0.0-beta.55", + "web3-net": "1.0.0-beta.55", + "web3-providers": "1.0.0-beta.55", + "web3-utils": "1.0.0-beta.55" + } + }, + "web3-net": { + "version": "1.0.0-beta.55", + "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.0.0-beta.55.tgz", + "integrity": "sha512-do2WY8+/GArJSWX7k/zZ7nBnV9Y3n6LhPYkwT3LeFqDzD515bKwlomaNC8hOaTc6UQyXIoPprYTK2FevL7jrZw==", + "requires": { + "@babel/runtime": "^7.3.1", + "lodash": "^4.17.11", + "web3-core": "1.0.0-beta.55", + "web3-core-helpers": "1.0.0-beta.55", + "web3-core-method": "1.0.0-beta.55", + "web3-providers": "1.0.0-beta.55", + "web3-utils": "1.0.0-beta.55" + } + }, + "web3-providers": { + "version": "1.0.0-beta.55", + "resolved": "https://registry.npmjs.org/web3-providers/-/web3-providers-1.0.0-beta.55.tgz", + "integrity": "sha512-MNifc7W+iF6rykpbDR1MuX152jshWdZXHAU9Dk0Ja2/23elhIs4nCWs7wOX9FHrKgdrQbscPoq0uy+0aGzyWVQ==", + "requires": { + "@babel/runtime": "^7.3.1", + "@types/node": "^10.12.18", + "eventemitter3": "3.1.0", + "lodash": "^4.17.11", + "url-parse": "1.4.4", + "web3-core": "1.0.0-beta.55", + "web3-core-helpers": "1.0.0-beta.55", + "web3-core-method": "1.0.0-beta.55", + "web3-utils": "1.0.0-beta.55", + "websocket": "^1.0.28", + "xhr2-cookies": "1.1.0" + } + }, + "web3-shh": { + "version": "1.0.0-beta.55", + "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.0.0-beta.55.tgz", + "integrity": "sha512-lGP2HQ/1ThNnfoU8677aL48KsTx4Ht+2KQIn39dGpxVZqysQmovQIltbymVnAr4h8wofwcEz46iNHGa+PAyNzA==", + "requires": { + "@babel/runtime": "^7.3.1", + "web3-core": "1.0.0-beta.55", + "web3-core-helpers": "1.0.0-beta.55", + "web3-core-method": "1.0.0-beta.55", + "web3-core-subscriptions": "1.0.0-beta.55", + "web3-net": "1.0.0-beta.55", + "web3-providers": "1.0.0-beta.55", + "web3-utils": "1.0.0-beta.55" + } + }, + "web3-utils": { + "version": "1.0.0-beta.55", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.0.0-beta.55.tgz", + "integrity": "sha512-ASWqUi8gtWK02Tp8ZtcoAbHenMpQXNvHrakgzvqTNNZn26wgpv+Q4mdPi0KOR6ZgHFL8R/9b5BBoUTglS1WPpg==", + "requires": { + "@babel/runtime": "^7.3.1", + "@types/bn.js": "^4.11.4", + "@types/node": "^10.12.18", + "bn.js": "4.11.8", + "eth-lib": "0.2.8", + "ethjs-unit": "^0.1.6", + "lodash": "^4.17.11", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "2.1.1" + } + }, + "websocket": { + "version": "1.0.29", + "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.29.tgz", + "integrity": "sha512-WhU8jKXC8sTh6ocLSqpZRlOKMNYGwUvjA5+XcIgIk/G3JCaDfkZUr0zA19sVSxJ0TEvm0i5IBzr54RZC4vzW7g==", + "requires": { + "debug": "^2.2.0", + "gulp": "^4.0.2", + "nan": "^2.11.0", + "typedarray-to-buffer": "^3.1.5", + "yaeti": "^0.0.6" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "requires": { + "mkdirp": "^0.5.1" + } + }, + "xhr": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.5.0.tgz", + "integrity": "sha512-4nlO/14t3BNUZRXIXfXe+3N6w3s1KoxcJUUURctd64BLRe67E4gRwp4PjywtDY72fXpZ1y6Ch0VZQRY/gMPzzQ==", + "requires": { + "global": "~4.3.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "xhr-request": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xhr-request/-/xhr-request-1.1.0.tgz", + "integrity": "sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA==", + "requires": { + "buffer-to-arraybuffer": "^0.0.5", + "object-assign": "^4.1.1", + "query-string": "^5.0.1", + "simple-get": "^2.7.0", + "timed-out": "^4.0.1", + "url-set-query": "^1.0.0", + "xhr": "^2.0.4" + } + }, + "xhr-request-promise": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/xhr-request-promise/-/xhr-request-promise-0.1.2.tgz", + "integrity": "sha1-NDxE0e53JrhkgGloLQ+EDIO0Jh0=", + "requires": { + "xhr-request": "^1.0.1" + } + }, + "xhr2-cookies": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz", + "integrity": "sha1-fXdEnQmZGX8VXLc7I99yUF7YnUg=", + "requires": { + "cookiejar": "^2.1.1" + } + }, + "xmlhttprequest": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", + "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=" + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + }, + "yaeti": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", + "integrity": "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc=" + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/package.json b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/package.json new file mode 100644 index 000000000..456a3412d --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/package.json @@ -0,0 +1,39 @@ +{ + "name": "circomlib", + "version": "0.0.12", + "description": "Basic circuits library for Circom", + "main": "index.js", + "directories": { + "test": "test" + }, + "scripts": { + "test": "mocha --max-old-space-size=4000" + }, + "keywords": [ + "pedersen", + "hash", + "ethereum", + "circuit", + "circom", + "zksnark" + ], + "repository": { + "type": "git", + "url": "https://github.com/iden3/circomlib.git" + }, + "author": "0Kims", + "license": "GPL-3.0", + "dependencies": { + "blake-hash": "^1.1.0", + "blake2b": "^2.1.3", + "snarkjs": "0.1.11", + "typedarray-to-buffer": "^3.1.5", + "web3": "^1.0.0-beta.55" + }, + "devDependencies": { + "circom": "0.0.28", + "eslint-plugin-mocha": "^5.2.0", + "ganache-cli": "^6.4.4", + "mocha": "^5.2.0" + } +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/src/babyjub.js b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/src/babyjub.js new file mode 100644 index 000000000..b3630fd0b --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/src/babyjub.js @@ -0,0 +1,109 @@ +const bn128 = require("snarkjs").bn128; +const bigInt = require("snarkjs").bigInt; + +exports.addPoint = addPoint; +exports.mulPointEscalar = mulPointEscalar; +exports.inCurve = inCurve; +exports.inSubgroup = inSubgroup; +exports.packPoint = packPoint; +exports.unpackPoint = unpackPoint; +exports.Generator = [ + bigInt("995203441582195749578291179787384436505546430278305826713579947235728471134"), + bigInt("5472060717959818805561601436314318772137091100104008585924551046643952123905") +]; +exports.Base8 = [ + bigInt("5299619240641551281634865583518297030282874472190772894086521144482721001553"), + bigInt("16950150798460657717958625567821834550301663161624707787222815936182638968203") +]; +exports.order = bigInt("21888242871839275222246405745257275088614511777268538073601725287587578984328"); +exports.subOrder = exports.order.shr(3); +exports.p = bn128.r; +exports.A = bigInt("168700"); +exports.D = bigInt("168696"); + + +function addPoint(a,b) { + const q = bn128.r; + + const res = []; + + /* does the equivalent of: + res[0] = bigInt((a[0]*b[1] + b[0]*a[1]) * bigInt(bigInt("1") + d*a[0]*b[0]*a[1]*b[1]).inverse(q)).affine(q); + res[1] = bigInt((a[1]*b[1] - cta*a[0]*b[0]) * bigInt(bigInt("1") - d*a[0]*b[0]*a[1]*b[1]).inverse(q)).affine(q); + */ + res[0] = bigInt((bigInt(a[0]).mul(b[1]).add(bigInt(b[0]).mul(a[1]))).mul(bigInt(bigInt("1").add(exports.D.mul(a[0]).mul(b[0]).mul(a[1]).mul(b[1]))).inverse(q))).affine(q); + res[1] = bigInt((bigInt(a[1]).mul(b[1]).sub(exports.A.mul(a[0]).mul(b[0]))).mul(bigInt(bigInt("1").sub(exports.D.mul(a[0]).mul(b[0]).mul(a[1]).mul(b[1]))).inverse(q))).affine(q); + + return res; +} + +function mulPointEscalar(base, e) { + let res = [bigInt("0"),bigInt("1")]; + let rem = bigInt(e); + let exp = base; + + while (! rem.isZero()) { + if (rem.isOdd()) { + res = addPoint(res, exp); + } + exp = addPoint(exp, exp); + rem = rem.shr(1); + } + + return res; +} + +function inSubgroup(P) { + if (!inCurve(P)) return false; + const res= mulPointEscalar(P, exports.subOrder); + return (res[0].equals(bigInt(0))) && (res[1].equals(bigInt(1))); +} + +function inCurve(P) { + const F = bn128.Fr; + + const x2 = F.square(P[0]); + const y2 = F.square(P[1]); + + if (!F.equals( + F.add(F.mul(exports.A, x2), y2), + F.add(F.one, F.mul(F.mul(x2, y2), exports.D)))) return false; + + return true; +} + +function packPoint(P) { + const buff = bigInt.leInt2Buff(P[1], 32); + if (P[0].greater(exports.p.shr(1))) { + buff[31] = buff[31] | 0x80; + } + return buff; +} + +function unpackPoint(_buff) { + const F = bn128.Fr; + + const buff = Buffer.from(_buff); + let sign = false; + const P = new Array(2); + if (buff[31] & 0x80) { + sign = true; + buff[31] = buff[31] & 0x7F; + } + P[1] = bigInt.leBuff2int(buff); + if (P[1].greaterOrEquals(exports.p)) return null; + + const y2 = F.square(P[1]); + + let x = F.sqrt(F.div( + F.sub(F.one, y2), + F.sub(exports.A, F.mul(exports.D, y2)))); + + if (x == null) return null; + + if (sign) x = F.neg(x); + + P[0] = F.affine(x); + + return P; +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/src/eddsa.js b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/src/eddsa.js new file mode 100644 index 000000000..beae967bd --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/src/eddsa.js @@ -0,0 +1,223 @@ +const createBlakeHash = require("blake-hash"); +const bigInt = require("snarkjs").bigInt; +const babyJub = require("./babyjub"); +const pedersenHash = require("./pedersenHash").hash; +const mimc7 = require("./mimc7"); +const poseidon = require("./poseidon.js"); +const mimcsponge = require("./mimcsponge"); + +exports.prv2pub= prv2pub; +exports.sign = sign; +exports.signMiMC = signMiMC; +exports.signPoseidon = signPoseidon; +exports.signMiMCSponge = signMiMCSponge; +exports.verify = verify; +exports.verifyMiMC = verifyMiMC; +exports.verifyPoseidon = verifyPoseidon; +exports.verifyMiMCSponge = verifyMiMCSponge; +exports.packSignature = packSignature; +exports.unpackSignature = unpackSignature; +exports.pruneBuffer = pruneBuffer; + + +function pruneBuffer(_buff) { + const buff = Buffer.from(_buff); + buff[0] = buff[0] & 0xF8; + buff[31] = buff[31] & 0x7F; + buff[31] = buff[31] | 0x40; + return buff; +} + +function prv2pub(prv) { + const sBuff = pruneBuffer(createBlakeHash("blake512").update(prv).digest().slice(0,32)); + let s = bigInt.leBuff2int(sBuff); + const A = babyJub.mulPointEscalar(babyJub.Base8, s.shr(3)); + return A; +} + +function sign(prv, msg) { + const h1 = createBlakeHash("blake512").update(prv).digest(); + const sBuff = pruneBuffer(h1.slice(0,32)); + const s = bigInt.leBuff2int(sBuff); + const A = babyJub.mulPointEscalar(babyJub.Base8, s.shr(3)); + + const rBuff = createBlakeHash("blake512").update(Buffer.concat([h1.slice(32,64), msg])).digest(); + let r = bigInt.leBuff2int(rBuff); + r = r.mod(babyJub.subOrder); + const R8 = babyJub.mulPointEscalar(babyJub.Base8, r); + const R8p = babyJub.packPoint(R8); + const Ap = babyJub.packPoint(A); + const hmBuff = pedersenHash(Buffer.concat([R8p, Ap, msg])); + const hm = bigInt.leBuff2int(hmBuff); + const S = r.add(hm.mul(s)).mod(babyJub.subOrder); + return { + R8: R8, + S: S + }; +} + +function signMiMC(prv, msg) { + const h1 = createBlakeHash("blake512").update(prv).digest(); + const sBuff = pruneBuffer(h1.slice(0,32)); + const s = bigInt.leBuff2int(sBuff); + const A = babyJub.mulPointEscalar(babyJub.Base8, s.shr(3)); + + const msgBuff = bigInt.leInt2Buff(msg, 32); + const rBuff = createBlakeHash("blake512").update(Buffer.concat([h1.slice(32,64), msgBuff])).digest(); + let r = bigInt.leBuff2int(rBuff); + r = r.mod(babyJub.subOrder); + const R8 = babyJub.mulPointEscalar(babyJub.Base8, r); + const hm = mimc7.multiHash([R8[0], R8[1], A[0], A[1], msg]); + const S = r.add(hm.mul(s)).mod(babyJub.subOrder); + return { + R8: R8, + S: S + }; +} + +function signMiMCSponge(prv, msg) { + const h1 = createBlakeHash("blake512").update(prv).digest(); + const sBuff = pruneBuffer(h1.slice(0,32)); + const s = bigInt.leBuff2int(sBuff); + const A = babyJub.mulPointEscalar(babyJub.Base8, s.shr(3)); + + const msgBuff = bigInt.leInt2Buff(msg, 32); + const rBuff = createBlakeHash("blake512").update(Buffer.concat([h1.slice(32,64), msgBuff])).digest(); + let r = bigInt.leBuff2int(rBuff); + r = r.mod(babyJub.subOrder); + const R8 = babyJub.mulPointEscalar(babyJub.Base8, r); + const hm = mimcsponge.multiHash([R8[0], R8[1], A[0], A[1], msg]); + const S = r.add(hm.mul(s)).mod(babyJub.subOrder); + return { + R8: R8, + S: S + }; +} + +function signPoseidon(prv, msg) { + const h1 = createBlakeHash("blake512").update(prv).digest(); + const sBuff = pruneBuffer(h1.slice(0,32)); + const s = bigInt.leBuff2int(sBuff); + const A = babyJub.mulPointEscalar(babyJub.Base8, s.shr(3)); + + const msgBuff = bigInt.leInt2Buff(msg, 32); + const rBuff = createBlakeHash("blake512").update(Buffer.concat([h1.slice(32,64), msgBuff])).digest(); + let r = bigInt.leBuff2int(rBuff); + r = r.mod(babyJub.subOrder); + const R8 = babyJub.mulPointEscalar(babyJub.Base8, r); + const hash = poseidon.createHash(6, 8, 57); + const hm = hash([R8[0], R8[1], A[0], A[1], msg]); + const S = r.add(hm.mul(s)).mod(babyJub.subOrder); + return { + R8: R8, + S: S + }; +} + +function verify(msg, sig, A) { + // Check parameters + if (typeof sig != "object") return false; + if (!Array.isArray(sig.R8)) return false; + if (sig.R8.length!= 2) return false; + if (!babyJub.inCurve(sig.R8)) return false; + if (!Array.isArray(A)) return false; + if (A.length!= 2) return false; + if (!babyJub.inCurve(A)) return false; + if (sig.S>= babyJub.subOrder) return false; + + const R8p = babyJub.packPoint(sig.R8); + const Ap = babyJub.packPoint(A); + const hmBuff = pedersenHash(Buffer.concat([R8p, Ap, msg])); + const hm = bigInt.leBuff2int(hmBuff); + + const Pleft = babyJub.mulPointEscalar(babyJub.Base8, sig.S); + let Pright = babyJub.mulPointEscalar(A, hm.mul(bigInt("8"))); + Pright = babyJub.addPoint(sig.R8, Pright); + + if (!Pleft[0].equals(Pright[0])) return false; + if (!Pleft[1].equals(Pright[1])) return false; + return true; +} + +function verifyMiMC(msg, sig, A) { + // Check parameters + if (typeof sig != "object") return false; + if (!Array.isArray(sig.R8)) return false; + if (sig.R8.length!= 2) return false; + if (!babyJub.inCurve(sig.R8)) return false; + if (!Array.isArray(A)) return false; + if (A.length!= 2) return false; + if (!babyJub.inCurve(A)) return false; + if (sig.S>= babyJub.subOrder) return false; + + const hm = mimc7.multiHash([sig.R8[0], sig.R8[1], A[0], A[1], msg]); + + const Pleft = babyJub.mulPointEscalar(babyJub.Base8, sig.S); + let Pright = babyJub.mulPointEscalar(A, hm.mul(bigInt("8"))); + Pright = babyJub.addPoint(sig.R8, Pright); + + if (!Pleft[0].equals(Pright[0])) return false; + if (!Pleft[1].equals(Pright[1])) return false; + return true; +} + + +function verifyPoseidon(msg, sig, A) { + // Check parameters + if (typeof sig != "object") return false; + if (!Array.isArray(sig.R8)) return false; + if (sig.R8.length!= 2) return false; + if (!babyJub.inCurve(sig.R8)) return false; + if (!Array.isArray(A)) return false; + if (A.length!= 2) return false; + if (!babyJub.inCurve(A)) return false; + if (sig.S>= babyJub.subOrder) return false; + + const hash = poseidon.createHash(6, 8, 57); + const hm = hash([sig.R8[0], sig.R8[1], A[0], A[1], msg]); + + const Pleft = babyJub.mulPointEscalar(babyJub.Base8, sig.S); + let Pright = babyJub.mulPointEscalar(A, hm.mul(bigInt("8"))); + Pright = babyJub.addPoint(sig.R8, Pright); + + if (!Pleft[0].equals(Pright[0])) return false; + if (!Pleft[1].equals(Pright[1])) return false; + return true; +} + +function verifyMiMCSponge(msg, sig, A) { + // Check parameters + if (typeof sig != "object") return false; + if (!Array.isArray(sig.R8)) return false; + if (sig.R8.length!= 2) return false; + if (!babyJub.inCurve(sig.R8)) return false; + if (!Array.isArray(A)) return false; + if (A.length!= 2) return false; + if (!babyJub.inCurve(A)) return false; + if (sig.S>= babyJub.subOrder) return false; + + const hm = mimcsponge.multiHash([sig.R8[0], sig.R8[1], A[0], A[1], msg]); + + const Pleft = babyJub.mulPointEscalar(babyJub.Base8, sig.S); + let Pright = babyJub.mulPointEscalar(A, hm.mul(bigInt("8"))); + Pright = babyJub.addPoint(sig.R8, Pright); + + if (!Pleft[0].equals(Pright[0])) return false; + if (!Pleft[1].equals(Pright[1])) return false; + return true; +} + +function packSignature(sig) { + const R8p = babyJub.packPoint(sig.R8); + const Sp = bigInt.leInt2Buff(sig.S, 32); + return Buffer.concat([R8p, Sp]); +} + +function unpackSignature(sigBuff) { + return { + R8: babyJub.unpackPoint(sigBuff.slice(0,32)), + S: bigInt.leBuff2int(sigBuff.slice(32,64)) + }; +} + + diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/src/evmasm.js b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/src/evmasm.js new file mode 100644 index 000000000..8bf223f2f --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/src/evmasm.js @@ -0,0 +1,197 @@ +// Copyright (c) 2018 Jordi Baylina +// License: LGPL-3.0+ +// + + +const Web3Utils = require("web3-utils"); + +class Contract { + constructor() { + this.code = []; + this.labels = {}; + this.pendingLabels = {}; + } + + createTxData() { + let C; + + // Check all labels are defined + const pendingLabels = Object.keys(this.pendingLabels); + if (pendingLabels.length>0) { + throw new Error("Lables not defined: "+ pendingLabels.join(", ")); + } + + let setLoaderLength = 0; + let genLoadedLength = -1; + + while (genLoadedLength!=setLoaderLength) { + setLoaderLength = genLoadedLength; + C = new module.exports(); + C.codesize(); + C.push(setLoaderLength); + C.push(0); + C.codecopy(); + + C.push(this.code.length); + C.push(0); + C.return(); + genLoadedLength = C.code.length; + } + + return Web3Utils.bytesToHex(C.code.concat(this.code)); + } + + stop() { this.code.push(0x00); } + add() { this.code.push(0x01); } + mul() { this.code.push(0x02); } + sub() { this.code.push(0x03); } + div() { this.code.push(0x04); } + sdiv() { this.code.push(0x05); } + mod() { this.code.push(0x06); } + smod() { this.code.push(0x07); } + addmod() { this.code.push(0x08); } + mulmod() { this.code.push(0x09); } + exp() { this.code.push(0x0a); } + signextend() { this.code.push(0x0b); } + + lt() { this.code.push(0x10); } + gt() { this.code.push(0x11); } + slt() { this.code.push(0x12); } + sgt() { this.code.push(0x13); } + eq() { this.code.push(0x14); } + iszero() { this.code.push(0x15); } + and() { this.code.push(0x16); } + or() { this.code.push(0x17); } + shor() { this.code.push(0x18); } + not() { this.code.push(0x19); } + byte() { this.code.push(0x1a); } + + keccak() { this.code.push(0x20); } + sha3() { this.code.push(0x20); } // alias + + address() { this.code.push(0x30); } + balance() { this.code.push(0x31); } + origin() { this.code.push(0x32); } + caller() { this.code.push(0x33); } + callvalue() { this.code.push(0x34); } + calldataload() { this.code.push(0x35); } + calldatasize() { this.code.push(0x36); } + calldatacopy() { this.code.push(0x37); } + codesize() { this.code.push(0x38); } + codecopy() { this.code.push(0x39); } + gasprice() { this.code.push(0x3a); } + extcodesize() { this.code.push(0x3b); } + extcodecopy() { this.code.push(0x3c); } + returndatasize() { this.code.push(0x3d); } + returndatacopy() { this.code.push(0x3e); } + + blockhash() { this.code.push(0x40); } + coinbase() { this.code.push(0x41); } + timestamp() { this.code.push(0x42); } + number() { this.code.push(0x43); } + difficulty() { this.code.push(0x44); } + gaslimit() { this.code.push(0x45); } + + pop() { this.code.push(0x50); } + mload() { this.code.push(0x51); } + mstore() { this.code.push(0x52); } + mstore8() { this.code.push(0x53); } + sload() { this.code.push(0x54); } + sstore() { this.code.push(0x55); } + + _pushLabel(label) { + if (typeof this.labels[label] != "undefined") { + this.push(this.labels[label]); + } else { + this.pendingLabels[label] = this.pendingLabels[label] || []; + this.pendingLabels[label].push(this.code.length); + this.push("0x000000"); + } + } + + _fillLabel(label) { + if (!this.pendingLabels[label]) return; + + let dst = this.labels[label]; + + const dst3 = [dst >> 16, (dst >> 8) & 0xFF, dst & 0xFF]; + + this.pendingLabels[label].forEach((p) => { + for (let i=0; i<3; i++) { + this.code[p+i+1] = dst3[i]; + } + }); + + delete this.pendingLabels[label]; + } + + + jmp(label) { + if (typeof label !== "undefined") { + this._pushLabel(label); + } + this.code.push(0x56); + } + + jmpi(label) { + if (typeof label !== "undefined") { + this._pushLabel(label); + } + this.code.push(0x57); + } + + pc() { this.code.push(0x58); } + msize() { this.code.push(0x59); } + gas() { this.code.push(0x5a); } + label(name) { + if (typeof this.labels[name] != "undefined") { + throw new Error("Label already defined"); + } + this.labels[name] = this.code.length; + this.code.push(0x5b); + + this._fillLabel(name); + } + + push(data) { + const d = Web3Utils.hexToBytes(Web3Utils.toHex(data)); + if (d.length == 0 || d.length > 32) { + throw new Error("Assertion failed"); + } + this.code = this.code.concat([0x5F + d.length], d); + } + + dup(n) { + if (n < 0 || n >= 16) { + throw new Error("Assertion failed"); + } + this.code.push(0x80 + n); + } + + swap(n) { + if (n < 1 || n > 16) { + throw new Error("Assertion failed"); + } + this.code.push(0x8f + n); + } + + log0() { this.code.push(0xa0); } + log1() { this.code.push(0xa1); } + log2() { this.code.push(0xa2); } + log3() { this.code.push(0xa3); } + log4() { this.code.push(0xa4); } + + create() { this.code.push(0xf0); } + call() { this.code.push(0xf1); } + callcode() { this.code.push(0xf2); } + return() { this.code.push(0xf3); } + delegatecall() { this.code.push(0xf4); } + + staticcall() { this.code.push(0xfa); } + revert() { this.code.push(0xfd); } + invalid() { this.code.push(0xfe); } + selfdestruct() { this.code.push(0xff); } +} + +module.exports = Contract; + diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/src/g2_gencontract.js b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/src/g2_gencontract.js new file mode 100644 index 000000000..9a9d995d8 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/src/g2_gencontract.js @@ -0,0 +1,583 @@ +// Copyright (c) 2018 Jordi Baylina +// License: LGPL-3.0+ +// + +const Contract = require("./evmasm"); +const G2 = require("snarkjs").bn128.G2; +const bigInt = require("snarkjs").bigInt; + + +function toHex256(a) { + let S = a.toString(16); + while (S.length < 64) S="0"+S; + return "0x" + S; +} + +function createCode(P, w) { + + const C = new Contract(); + + const NPOINTS = 1 << (w-1); + + const VAR_POS = C.allocMem(32); + const VAR_POINTS = C.allocMem( (NPOINTS)*4*32); + const savedP = C.allocMem(32); + const savedZ3 = C.allocMem(32); + + // Check selector + C.push("0x0100000000000000000000000000000000000000000000000000000000"); + C.push(0); + C.calldataload(); + C.div(); + C.push("b65c7c74"); // mulexp(uint256) + C.eq(); + C.jmpi("start"); + C.invalid(); + + C.label("start"); + + storeVals(); + + C.push( Math.floor(255/w)*w ); // pos := 255 + C.push(VAR_POS); + C.mstore(); + + C.push("21888242871839275222246405745257275088696311157297823662689037894645226208583"); + C.push(0); + C.push(0); + C.push(0); + C.push(0); + C.push(0); + C.push(0); + + C.label("begin_loop"); // ACC_X ACC_Y ACC_Z q + + C.internalCall("double"); + + // g = (e>>pos)&MASK + C.push(4); + C.calldataload(); // e ACC_X ACC_Y ACC_Z q + + C.push(VAR_POS); + C.mload(); // pos e ACC_X ACC_Y ACC_Z q + C.shr(); + + C.push(NPOINTS-1); + C.and(); // g ACC_X ACC_Y ACC_Z q + + C.internalCall("add"); // acc_x acc_y acc_z + + C.push(VAR_POS); + C.mload(); // pos acc_x acc_y acc_z + C.dup(0); // pos pos acc_x acc_y acc_z + C.push(0); // 0 pos pos acc_x acc_y acc_z + C.eq(); // eq pos acc_x acc_y acc_z + C.jmpi("after_loop"); // pos acc_x acc_y acc_z + C.push(w); // 5 pos acc_x acc_y acc_z + C.sub(); // pos acc_x acc_y acc_z + C.push(VAR_POS); + C.mstore(); // acc_x acc_y acc_z + C.jmp("begin_loop"); + C.label("after_loop"); // pos acc_x acc_y acc_z + C.pop(); // acc_x acc_y acc_z + + C.internalCall("affine"); // acc_x acc_y + + C.push(0); + C.mstore(); + C.push(20); + C.mstore(); + C.push(40); + C.mstore(); + C.push(60); + C.mstore(); + + C.push("0x80"); + C.push("0x00"); + C.return(); + + + double(); + addPoint(); + affine(); + + return C.createTxData(); + + function add(a,b,q) { + C.dup(q); + C.dup(a+1 + 1); + C.dup(b+1 + 2); + C.addmod(); + C.dup(q + 1); + C.dup(a + 2); + C.dup(b + 3); + C.addmod(); + } + + function sub(a,b,q) { + C.dup(q); // q + C.dup(a+1 + 1); // ai q + C.dub(q + 2); // q ai q + C.dup(b+1 + 3); // bi q ai q + C.sub(); // -bi ai q + C.addmod(); // ci + C.dup(q + 1); // q ci + C.dup(a + 2); // ar q ci + C.dup(q + 3); // q ar q ci + C.dup(b + 4); // br q ar q ci + C.sub(); // -br ar q ci + C.addmod(); // cr ci + } + + function mul(a, b, q) { + C.dup(q); // q + C.dup(q + 1); // q q + C.dup(a + 2); // ar q q + C.dup(b+1 + 3); // bi ar q q + C.mulmod(); // ci1 q + C.dup(q + 2); // q ci1 q + C.dup(a+1 + 3); // ai q ci1 q + C.dup(b + 4); // ar ai q ci1 q + C.mulmod(); // ci2 ci1 q + C.addmod(); // ci + C.dup(q + 1); // q ci + C.dup(q + 2); // q q ci + C.dup(q + 3); // q q q ci + C.dup(a+1 + 4); // ai q q ci + C.dup(b+1 + 5); // bi ai q q ci + C.mulmod(); // cr2 q q ci + C.sub(); // -cr2 q ci + C.dup(q + 3); // q -cr2 q ci + C.dup(a + 4); // ar q -cr2 q ci + C.dup(b + 5); // br ar q -cr2 q ci + C.mulmod(); // cr1 -cr2 q ci + C.addmod(); // cr ci + } + + function square(a, q) { + C.dup(q); // q + C.dup(q + 1); // q q + C.dup(a + 2); // ar q q + C.dup(a+1 + 3); // ai ar q q + C.mulmod(); // arai q + C.dup(0); // arai arai q + C.addmod(); // ci + C.dup(q + 1); // q ci + C.dup(q + 2); // q q ci + C.dup(q + 3); // q q q ci + C.dup(a+1 + 4); // ai q q ci + C.dup(a+1 + 5); // ai ai q q ci + C.mulmod(); // cr2 q q ci + C.sub(); // -cr2 q ci + C.dup(q + 3); // q -cr2 q ci + C.dup(a + 4); // ar q -cr2 q ci + C.dup(a + 5); // br ar q -cr2 q ci + C.mulmod(); // cr1 -cr2 q ci + C.addmod(); // cr ci + } + + function add1(a, q) { + C.dup(a+1); // im + C.dup(1 + q); // q + C.dup(2 + a); // re q im + C.push(1); // 1 re q im + C.addmod(); + } + + function cmp(a, b) { + C.dup(a); + C.dup(b); + C.eq(); + C.dup(a+1); + C.dup(a+1); + C.and(); + } + + function rm(a) { + if (a>0) C.swap(a); + C.pop(); + if (a>0) C.swap(a); + C.pop(); + } + + function double() { + C.label("double"); // xR, xI, yR, yI, zR zI, q + + C.dup(4); + C.iszero(); + C.dup(6); + C.iszero(); + C.and(); + C.jumpi("enddouble"); // X Y Z q + + + // Z3 = 2*Y*Z // Remove Z + mul(2, 4, 6); // yz X Y Z q + rm(6); // X Y yz q + + add(4, 4, 6); // 2yz X Y yz q + rm(6); // X Y Z3 q + + // A = X^2 + square(0,6); // A X Y Z3 q + + // B = Y^2 // Remove Y + square(4,8); // B A X Y Z3 q + rm(6); // A X B Z3 q + + // C = B^2 + square(4,8); // C A X B Z3 q + + // D = (X+B)^2-A-C // Remove X, Remove B + add(4,6, 10); // X+B C A X B Z3 q + rm(6); // C A X+B B Z3 q + rm(6); // A X+B C Z3 q + square(2,8); // (X+B)^2 A X+B C Z3 q + rm(4); // A (X+B)^2 C Z3 q + sub(2, 0, 8); // (X+B)^2-A A (X+B)^2 C Z3 q + rm(4); // A (X+B)^2-A C Z3 q + sub(2, 4, 8); // (X+B)^2-A-C A (X+B)^2-A C Z3 q + rm(4); // A D C Z3 q + + // D = D+D + add(2,2, 8); // D+D A D C Z3 q + rm(4); // A D C Z3 q + + // E=A+A+A + add(0, 0, 8); // 2A A D C Z3 q + add(0, 2, 10); // 3A 2A A D C Z3 q + rm(4); // 2A 3A D C Z3 q + rm(0); // E D C Z3 q + + // F=E^2 + square(0, 8); // F E D C Z3 q + + // X3= F - 2*D // Remove F + add(4, 4, 10); // 2D F E D C Z3 q + sub(2, 0, 12); // F-2D 2D F E D C Z3 q + rm(4); // 2D X3 E D C Z3 q + rm(0); // X3 E D C Z3 q + + // Y3 = E * (D - X3) - 8 * C // Remove D C E + + sub(4, 0, 10); // D-X3 X3 E D C Z3 q + rm(6); // X3 E D-X3 C Z3 q + mul(2, 4, 10); // E*(D-X3) X3 E D-X3 C Z3 q + rm(6); // X3 E E*(D-X3) C Z3 q + rm(2); // X3 E*(D-X3) C Z3 q + add(4, 4, 8); // 2C X3 E*(D-X3) C Z3 q + rm(6); // X3 E*(D-X3) 2C Z3 q + add(4, 4, 8); // 4C X3 E*(D-X3) 2C Z3 q + rm(6); // X3 E*(D-X3) 4C Z3 q + add(4, 4, 8); // 8C X3 E*(D-X3) 4C Z3 q + rm(6); // X3 E*(D-X3) 8C Z3 q + sub(2, 4, 8); // E*(D-X3)-8C X3 E*(D-X3) 8C Z3 q + rm(6); // X3 E*(D-X3) Y3 Z3 q + rm(2); // X3 Y3 Z3 q + + C.label("enddouble"); + C.returnCall(); + } + + function addPoint() { // p, xR, xI, yR, yI, zR zI, q + + + C.dup(0); // p p X2 Y2 Z2 q + + C.push(savedP); + C.mstore(); + + C.iszero(); // X2 Y2 Z2 q + C.jumpi("endpadd"); + + + C.dup(4); + C.iszero(); + C.dup(6); + C.iszero(); + C.and(); + C.jumpi("returnP"); // X2 Y2 Z2 q + + + + // lastZ3 = (Z2+1)^2 - Z2^2 + add1(4, 6); // Z2+1 X2 Y2 Z2 q + square(0, 8); // (Z2+1)^2 Z2+1 X2 Y2 Z2 q + rm(2); // (Z2+1)^2 X2 Y2 Z2 q + square(6, 8); // Z2^2 (Z2+1)^2 X2 Y2 Z2 q + + + sub(2, 0, 10); // (Z2+1)^2-Z2^2 Z2^2 (Z2+1)^2 X2 Y2 Z2 q + + saveZ3(); // Z2^2 (Z2+1)^2 X2 Y2 Z2 q + rm(2); // Z2^2 X2 Y2 Z2 q + + // U2 = X2 + // S2 = Y2 // Z2^2 U2 S2 Z2 q + + + // U1 = X1 * Z2^2 + loadX(); // X1 Z2^2 U2 S2 Z2 q + mul(0, 2, 10); // X1*Z2^2 X1 Z2^2 U2 S2 Z2 q + rm(2); // X1*Z2^2 Z2^2 U2 S2 Z2 q + + + mul(2, 8, 10); // Z2^3 U1 Z2^2 U2 S2 Z2 q + rm(4); // U1 Z2^3 U2 S2 Z2 q + rm(8); // Z2^3 U2 S2 U1 q + + // S1 = Y1 * Z1^3 + loadY(); // Y1 Z2^3 U2 S2 U1 q + mul(0, 2, 10); // S1 Y1 Z2^3 U2 S2 U1 q + rm(4); // Y1 S1 U2 S2 U1 q + rm(0); // S1 U2 S2 U1 q + + cmp(0, 4); // c1 S1 U2 S2 U1 q + cmp(3, 7); // c2 c1 S1 U2 S2 U1 q + C.and(); // c2&c1 S1 U2 S2 U1 q + C.jumpi("double1"); // S1 U2 S2 U1 q + + + // Returns the double + + // H = U2-U1 // Remove U2 + C.sub(4, 8, 10); // H S1 U2 S2 U1 q + rm(4); // S1 H S2 U1 q + + // // r = 2 * (S2-S1) // Remove S2 + C.sub(4, 4, 8); // S1-S2 S1 H S2 U1 q + rm(6); // S1 H S1-S2 U1 q + C.add(4, 4, 8); // 2*(S1-S2) S1 H S1-S2 U1 q + rm(6); // S1 H r U1 q + + // I = (2 * H)^2 + C.add(2, 2, 8); // 2*H S1 H r U1 q + C.square(0, 10); // (2*H)^2 2*H S1 H r U1 q + rm(2); // I S1 H r U1 q + + // V = U1 * I + mul(8, 0, 10); // V I S1 H r U1 q + rm(10); // I S1 H r V q + + // J = H * I // Remove I + mul(4, 0, 10); // J I S1 H r V q + rm(2); // J S1 H r V q + + // X3 = r^2 - J - 2 * V + + // S1J2 = (S1*J)*2 // Remove S1 + mul(2, 0, 10); // S1*J J S1 H r V q + rm(4); // J S1*J H r V q + add(2,2, 10); // (S1*J)*2 J S1*J H r V q + rm(4); // J S1J2 H r V q + + // X3 = r^2 - J - 2 * V + square(6, 10); // r^2 J S1J2 H r V q + sub(0, 2, 12); // r^2-J r^2 J S1J2 H r V q + rm(2); // r^2-J J S1J2 H r V q + rm(2); // r^2-J S1J2 H r V q + add(8, 8, 10); // 2*V r^2-J S1J2 H r V q + sub(2, 0, 12); // r^2-J-2*V 2*V r^2-J S1J2 H r V q + rm(4); // 2*V X3 S1J2 H r V q + rm(0); // X3 S1J2 H r V q + + // Y3 = r * (V-X3)-S1J2 + + sub(8, 0, 10); // V-X3 X3 S1J2 H r V q + rm(10); // X3 S1J2 H r V-X3 q + mul(6, 8, 10); // r*(V-X3) X3 S1J2 H r V-X3 q + rm(8); // X3 S1J2 H r*(V-X3) V-X3 q + rm(8); // S1J2 H r*(V-X3) X3 q + sub(4, 0, 8); // Y3 S1J2 H r*(V-X3) X3 q + rm(6); // S1J2 H Y3 X3 q + rm(0); // H Y3 X3 q + + // Z3 = lastZ * H + loadZ3(); // lastZ3 H Y3 X3 q + mul(0, 2, 8); // Z3 lastZ3 H Y3 X3 q + rm(4); // lastZ3 Z3 Y3 X3 q + rm(0); // Z3 Y3 X3 q + + C.swap(1); + C.swap(5); + C.swap(1); + C.swap(4); // X3 Y3 Z3 q + + // returns the point in memory + C.label("returnP"); // X Y Z q + rm(0); + rm(0); + rm(0); + C.push(0); + C.push(1); + loadX(); + loadY(); + C.jump("endpadd"); + + C.label("double1"); // S1 U2 S2 U1 q + rm(0); + rm(0); + rm(0); + rm(0); + C.push(0); + C.push(1); + loadX(); + loadY(); + C.jump("double"); + + C.label("endpadd"); + C.returnCall(); + + function loadX() { + C.push(savedP); + C.mload(); // p + C.push(32); + C.mul(); // P*32 + C.push(VAR_POINTS+32); + C.add(); // P*32+32 + C.dup(); // P*32+32 P*32+32 + C.mload(); // im P*32+32 + C.swap(1); // P*32+32 im + C.push(0x20); // 32 P*32+32 im + C.sub(); // P*32 im + C.mload(); // re im + } + + function loadY() { + C.push(savedP); + C.mload(); // p + C.push(32); + C.mul(); // P*32 + C.push(VAR_POINTS+32*3); + C.add(); // P*32+32 + C.dup(); // P*32+32 P*32+32 + C.mload(); // im P*32+32 + C.swap(1); // P*32+32 im + C.push(0x20); // 32 P*32+32 im + C.sub(); // P*32 im + C.mload(); // re im + } + + function loadZ3() { + C.push(savedZ3+32); + C.mload(); // p + C.push(savedZ3); + C.mload(); + } + + function saveZ3() { + C.push(savedZ3); + C.mstore(); + C.push(savedZ3+32); + C.mstore(); + } + } + + function affine() { // X Y Z q + // If Z2=0 return 0 + C.label("affine"); + C.dup(4); + C.dup(5 + 1); + C.or(); + C.jumpi("notZero"); // X Y Z q + rm(0); + rm(0); + C.push(0); + C.push(0); + + C.jmp("endAffine"); + C.label("notZero"); + + inverse2(4,6); // Z_inv X Y Z q + square(2, 8); // Z2_inv Z_inv X Y Z q + mul(0, 2, 10); // Z3_inv Z2_inv Z_inv X Y Z q + rm(4); // Z2_inv Z3_inv X Y Z q + C.push(1); + C.push(0); // 1 Z2_inv Z3_inv X Y Z q + rm(10); // Z2_inv Z3_inv X Y 1 q + mul(2, 6, 10); // YI Z2_inv Z3_inv X Y 1 q + rm(8); // Z2_inv Z3_inv X YI 1 q + mul(0, 4, 10); // XI Z2_inv Z3_inv X YI 1 q + rm(6); // Z2_inv Z3_inv XI YI 1 q + rm(0); // Z3_inv XI YI 1 q + rm(0); // XI YI 1 q + C.label("endAffine"); + C.returnCall(); + } + + function inverse2(a, q) { + C.dup(q); // q + C.dup(q + 1); // q q + C.push(2); // 2 q q + C.sub(); // q-2 q + C.dup(q + 2); // q q-2 q + C.dup(q + 3); // q q q-2 q + C.dup(a + 4); // ar q q q-2 q + C.dup(a + 5); // ar ar q q q-2 q + C.mulmod(); // t0 q q-2 q + + C.dup(q + 4); // q t0 q q-2 q + C.dup(a+1 + 5); // ai q t0 q q-2 q + C.dup(a+1 + 6); // ai ai q t0 q q-2 q + C.mulmod(); // t1 t0 q q-2 q + + C.addmod(); // t2 q-2 q + C.expmod(); // t3 + + C.dup(q + 1); // q t3 + C.dup(q + 2); // q q t3 + C.dup(q + 3); // q q q t3 + C.dup(1); // t3 q q q t3 + C.sub(); // -t3 q q t3 + C.dup(a+1 + 3); // ai -t3 q q t3 + C.mulmod(); // ii q t3 + C.swap(2); // t3 q ii + C.dup(a + 3); // ar t3 q ii + C.mulmod(); // ir ii + } + + function storeVals() { + C.push(VAR_POINTS); // p + for (let i=0; i { + if (typeof seed === "undefined") seed = SEED; + const c = Web3Utils.keccak256(seed+"_iv"); + const cn = bigInt(Web3Utils.toBN(c).toString()); + const iv = cn.mod(F.q); + return iv; +}; + +exports.getConstants = (seed, nRounds) => { + if (typeof seed === "undefined") seed = SEED; + if (typeof nRounds === "undefined") nRounds = NROUNDS; + const cts = new Array(nRounds); + let c = Web3Utils.keccak256(SEED); + for (let i=1; i{ + const x_in = bigInt(_x_in); + const k = bigInt(_k); + let r; + for (let i=0; i { + let r; + if (typeof(key) === "undefined") { + r = F.zero; + } else { + r = key; + } + for (let i=0; i { + if (typeof seed === "undefined") seed = SEED; + const c = Web3Utils.keccak256(seed+"_iv"); + const cn = bigInt(Web3Utils.toBN(c).toString()); + const iv = cn.mod(F.q); + return iv; +}; + +exports.getConstants = (seed, nRounds) => { + if (typeof seed === "undefined") seed = SEED; + if (typeof nRounds === "undefined") nRounds = NROUNDS; + const cts = new Array(nRounds); + let c = Web3Utils.keccak256(SEED); + for (let i=1; i{ + let xL = bigInt(_xL_in); + let xR = bigInt(_xR_in); + const k = bigInt(_k); + for (let i=0; i { + if (typeof(numOutputs) === "undefined") { + numOutputs = 1; + } + if (typeof(key) === "undefined") { + key = F.zero; + } + + let R = F.zero; + let C = F.zero; + + for (let i=0; i F.affine(x)); + } +}; diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/src/mimcsponge_gencontract.js b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/src/mimcsponge_gencontract.js new file mode 100644 index 000000000..eb7d27b6d --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/src/mimcsponge_gencontract.js @@ -0,0 +1,128 @@ +// Copyright (c) 2018 Jordi Baylina +// License: LGPL-3.0+ +// + +const Web3Utils = require("web3-utils"); + +const Contract = require("./evmasm"); + +function createCode(seed, n) { + + let ci = Web3Utils.keccak256(seed); + + const C = new Contract(); + + C.push(0x64); + C.push("0x00"); + C.push("0x00"); + C.calldatacopy(); + C.push("0x0100000000000000000000000000000000000000000000000000000000"); + C.push("0x00"); + C.mload(); + C.div(); + C.push("0x3f1a1187"); // MiMCSponge(uint256,uint256,uint256) + C.eq(); + C.jmpi("start"); + C.invalid(); + + C.label("start"); + C.push("0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001"); // q + C.push("0x44"); + C.mload(); // k q + C.push("0x04"); + C.mload(); // xL k q + C.dup(2); // q xL k q + C.push("0x24"); + C.mload(); // xR q xL k q + C.dup(1); // q xR q xL k q + C.dup(0); // q q xR q xL k q + C.dup(4); // xL q q xR q xL k q + C.dup(6); // k xL q q xR q xL k q + C.addmod(); // t=k+xL q xR q xL k q + C.dup(1); // q t q xR q xL k q + C.dup(0); // q q t q xR q xL k q + C.dup(2); // t q q t q xR q xL k q + C.dup(0); // t t q q t q xR q xL k q + C.mulmod(); // b=t^2 q t q xR q xL k q + C.dup(0); // b b q t q xR q xL k q + C.mulmod(); // c=t^4 t q xR q xL k q + C.mulmod(); // d=t^5 xR q xL k q + C.addmod(); // e=t^5+xR xL k q (for next round: xL xR k q) + + for (let i=0; i { + if (typeof seed === "undefined") seed = SEED; + if (typeof nRounds === "undefined") nRounds = NROUNDSF + NROUNDSP; + if (typeof t === "undefined") t = T; + let nonce = "0000"; + let cmatrix = getPseudoRandom(seed+"_matrix_"+nonce, t*2); + while (!allDifferent(cmatrix)) { + nonce = (Number(nonce)+1)+""; + while(nonce.length<4) nonce = "0"+nonce; + cmatrix = getPseudoRandom(seed+"_matrix_"+nonce, t*2); + } + + const M = new Array(t); + for (let i=0; i { + if (typeof seed === "undefined") seed = SEED; + if (typeof nRounds === "undefined") nRounds = NROUNDSF + NROUNDSP; + if (typeof t === "undefined") t = T; + const cts = getPseudoRandom(seed+"_constants", nRounds); + return cts; +}; + +function ark(state, c) { + for (let j=0; j { + + if (typeof seed === "undefined") seed = SEED; + if (typeof nRoundsF === "undefined") nRoundsF = NROUNDSF; + if (typeof nRoundsP === "undefined") nRoundsP = NROUNDSP; + if (typeof t === "undefined") t = T; + + assert(nRoundsF % 2 == 0); + const C = exports.getConstants(t, seed, nRoundsF + nRoundsP); + const M = exports.getMatrix(t, seed, nRoundsF + nRoundsP); + return function(inputs) { + let state = []; + assert(inputs.length < t); + assert(inputs.length > 0); + for (let i=0; i= nRoundsF/2 + nRoundsP)) { + for (let j=0; j=nRoundsP+nRoundsF/2)) { + for (let j=0; j=0; level--) { + let oldNode, newNode; + const sibling = resFind.siblings[level]; + if (keyBits[level]) { + oldNode = [sibling, rtOld]; + newNode = [sibling, rtNew]; + } else { + oldNode = [rtOld, sibling]; + newNode = [rtNew, sibling]; + } + rtOld = hash0(oldNode[0], oldNode[1]); + rtNew = hash0(newNode[0], newNode[1]); + dels.push(rtOld); + ins.push([rtNew, newNode]); + } + + res.newRoot = rtNew; + + await this.db.multiIns(ins); + await this.db.setRoot(rtNew); + this.root = rtNew; + await this.db.multiDel(dels); + + return res; + } + + async delete(_key) { + const key = bigInt(_key); + + const resFind = await this.find(key); + if (!resFind.found) throw new Error("Key does not exists"); + + const res = { + siblings: [], + delKey: key, + delValue: resFind.foundValue + }; + + const dels = []; + const ins = []; + let rtOld = hash1(key, resFind.foundValue); + let rtNew; + dels.push(rtOld); + + let mixed; + if (resFind.siblings.length > 0) { + const record = await this.db.get(resFind.siblings[resFind.siblings.length - 1]); + if ((record.length == 3)&&(record[0].equals(bigInt.one))) { + mixed = false; + res.oldKey = record[1]; + res.oldValue = record[2]; + res.isOld0 = false; + rtNew = resFind.siblings[resFind.siblings.length - 1]; + } else if (record.length == 2) { + mixed = true; + res.oldKey = key; + res.oldValue = bigInt(0); + res.isOld0 = true; + rtNew = bigInt.zero; + } else { + throw new Error("Invalid node. Database corrupted"); + } + } else { + rtNew = bigInt.zero; + res.oldKey = key; + res.oldValue = bigInt(0); + res.isOld0 = true; + } + + const keyBits = this._splitBits(key); + + for (let level = resFind.siblings.length-1; level >=0; level--) { + let newSibling = resFind.siblings[level]; + if ((level == resFind.siblings.length-1)&&(!res.isOld0)) { + newSibling = bigInt.zero; + } + const oldSibling = resFind.siblings[level]; + if (keyBits[level]) { + rtOld = hash0(oldSibling, rtOld); + } else { + rtOld = hash0(rtOld, oldSibling); + } + dels.push(rtOld); + if (!newSibling.isZero()) { + mixed = true; + } + + if (mixed) { + res.siblings.unshift(resFind.siblings[level]); + let newNode; + if (keyBits[level]) { + newNode = [newSibling, rtNew]; + } else { + newNode = [rtNew, newSibling]; + } + rtNew = hash0(newNode[0], newNode[1]); + ins.push([rtNew, newNode]); + } + } + + await this.db.multiIns(ins); + await this.db.setRoot(rtNew); + this.root = rtNew; + await this.db.multiDel(dels); + + res.newRoot = rtNew; + res.oldRoot = rtOld; + + return res; + } + + async insert(_key, _value) { + const key = bigInt(_key); + const value = bigInt(_value); + let addedOne = false; + const res = {}; + res.oldRoot = this.root; + const newKeyBits = this._splitBits(key); + + let rtOld; + + const resFind = await this.find(key); + + if (resFind.found) throw new Error("Key already exists"); + + res.siblings = resFind.siblings; + let mixed; + + if (!resFind.isOld0) { + const oldKeyits = this._splitBits(resFind.notFoundKey); + for (let i= res.siblings.length; oldKeyits[i] == newKeyBits[i]; i++) { + res.siblings.push(bigInt.zero); + } + rtOld = hash1(resFind.notFoundKey, resFind.notFoundValue); + res.siblings.push(rtOld); + addedOne = true; + mixed = false; + } else if (res.siblings.length >0) { + mixed = true; + rtOld = bigInt.zero; + } + + const inserts = []; + const dels = []; + + let rt = hash1(key, value); + inserts.push([rt,[1, key, value]] ); + + for (let i=res.siblings.length-1; i>=0; i--) { + if ((i0) && (res.siblings[res.siblings.length-1].isZero())) { + res.siblings.pop(); + } + res.oldKey = resFind.notFoundKey; + res.oldValue = resFind.notFoundValue; + res.newRoot = rt; + res.isOld0 = resFind.isOld0; + + + await this.db.multiIns(inserts); + await this.db.setRoot(rt); + this.root = rt; + await this.db.multiDel(dels); + + return res; + } + + async find(key) { + const keyBits = this._splitBits(key); + return await this._find(key, keyBits, this.root, 0); + } + + async _find(key, keyBits, root, level) { + if (typeof root === "undefined") root = this.root; + + let res; + if (root.isZero()) { + res = { + found: false, + siblings: [], + notFoundKey: key, + notFoundValue: bigInt.zero, + isOld0: true + }; + return res; + } + + const record = await this.db.get(root); + + if ((record.length==3)&&(record[0].equals(bigInt.one))) { + if (record[1].equals(key)) { + res = { + found: true, + siblings: [], + foundValue: record[2], + isOld0: false + }; + } else { + res = { + found: false, + siblings: [], + notFoundKey: record[1], + notFoundValue: record[2], + isOld0: false + }; + } + } else { + if (keyBits[level] == 0) { + res = await this._find(key, keyBits, record[0], level+1); + res.siblings.unshift(record[1]); + } else { + res = await this._find(key, keyBits, record[1], level+1); + res.siblings.unshift(record[0]); + } + } + return res; + } +} + +async function loadFromFile(fileName) { + +} + +async function newMemEmptyTrie() { + const db = new SMTMemDB(); + const rt = await db.getRoot(); + const smt = new SMT(db, rt); + return smt; +} + +module.exports.loadFromFile = loadFromFile; +module.exports.newMemEmptyTrie = newMemEmptyTrie; diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/src/smt_hashes_mimc.js b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/src/smt_hashes_mimc.js new file mode 100644 index 000000000..99887dbce --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/src/smt_hashes_mimc.js @@ -0,0 +1,10 @@ +const mimc7 = require("./mimc7"); +const bigInt = require("snarkjs").bigInt; + +exports.hash0 = function (left, right) { + return mimc7.multiHash(left, right); +}; + +exports.hash1 = function(key, value) { + return mimc7.multiHash([key, value], bigInt.one); +}; diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/src/smt_hashes_poseidon.js b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/src/smt_hashes_poseidon.js new file mode 100644 index 000000000..8ad8770f2 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/src/smt_hashes_poseidon.js @@ -0,0 +1,12 @@ +const Poseidon = require("./poseidon"); +const bigInt = require("snarkjs").bigInt; + +const hash = Poseidon.createHash(6, 8, 57); + +exports.hash0 = function (left, right) { + return hash([left, right]); +}; + +exports.hash1 = function(key, value) { + return hash([key, value, bigInt.one]); +}; diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/src/smt_memdb.js b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/src/smt_memdb.js new file mode 100644 index 000000000..d73e88d36 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/src/smt_memdb.js @@ -0,0 +1,50 @@ +const bigInt = require("snarkjs").bigInt; + +class SMTMemDb { + constructor() { + this.nodes = {}; + this.root = bigInt(0); + } + + async getRoot() { + return this.root; + } + + _key2str(k) { + // const keyS = bigInt(key).leInt2Buff(32).toString("hex"); + const keyS = bigInt(k).toString(); + return keyS; + } + + _normalize(n) { + for (let i=0; i 1 +main.out[0], main.escalarMul.out[0], main.escalarMul.adders[0].xout --> 19350443861820459828550079620468391553230822763075753174420182016202827340018 +main.out[1], main.escalarMul.out[1], main.escalarMul.adders[0].yout --> 10228140023480607988095794290432947636170858165927501368681088162032029753395 +main.e, main.n2b.in --> 2351960337287830298912035165133676222414898052661454064215017316447594616519 +main.n2b.out[0], main.escalarMul.e[0], main.escalarMul.segments[0].e[0], main.escalarMul.segments[0].windows[0].in[0], main.escalarMul.segments[0].windows[0].mux.s[0] --> 1 +main.n2b.out[1], main.escalarMul.e[1], main.escalarMul.segments[0].e[1], main.escalarMul.segments[0].windows[0].in[1], main.escalarMul.segments[0].windows[0].mux.s[1] --> 1 +main.n2b.out[2], main.escalarMul.e[2], main.escalarMul.segments[0].e[2], main.escalarMul.segments[0].windows[0].in[2], main.escalarMul.segments[0].windows[0].mux.s[2] --> 1 +main.n2b.out[3], main.escalarMul.e[3], main.escalarMul.segments[0].e[3], main.escalarMul.segments[0].windows[1].in[0], main.escalarMul.segments[0].windows[1].mux.s[0] --> 0 +main.n2b.out[4], main.escalarMul.e[4], main.escalarMul.segments[0].e[4], main.escalarMul.segments[0].windows[1].in[1], main.escalarMul.segments[0].windows[1].mux.s[1] --> 0 +main.n2b.out[5], main.escalarMul.e[5], main.escalarMul.segments[0].e[5], main.escalarMul.segments[0].windows[1].in[2], main.escalarMul.segments[0].windows[1].mux.s[2] --> 0 +main.n2b.out[6], main.escalarMul.e[6], main.escalarMul.segments[0].e[6], main.escalarMul.segments[0].windows[2].in[0], main.escalarMul.segments[0].windows[2].mux.s[0] --> 1 +main.n2b.out[7], main.escalarMul.e[7], main.escalarMul.segments[0].e[7], main.escalarMul.segments[0].windows[2].in[1], main.escalarMul.segments[0].windows[2].mux.s[1] --> 1 +main.n2b.out[8], main.escalarMul.e[8], main.escalarMul.segments[0].e[8], main.escalarMul.segments[0].windows[2].in[2], main.escalarMul.segments[0].windows[2].mux.s[2] --> 0 +main.n2b.out[9], main.escalarMul.e[9], main.escalarMul.segments[0].e[9], main.escalarMul.segments[0].windows[3].in[0], main.escalarMul.segments[0].windows[3].mux.s[0] --> 1 +main.n2b.out[10], main.escalarMul.e[10], main.escalarMul.segments[0].e[10], main.escalarMul.segments[0].windows[3].in[1], main.escalarMul.segments[0].windows[3].mux.s[1] --> 1 +main.n2b.out[11], main.escalarMul.e[11], main.escalarMul.segments[0].e[11], main.escalarMul.segments[0].windows[3].in[2], main.escalarMul.segments[0].windows[3].mux.s[2] --> 0 +main.n2b.out[12], main.escalarMul.e[12], main.escalarMul.segments[0].e[12], main.escalarMul.segments[0].windows[4].in[0], main.escalarMul.segments[0].windows[4].mux.s[0] --> 1 +main.n2b.out[13], main.escalarMul.e[13], main.escalarMul.segments[0].e[13], main.escalarMul.segments[0].windows[4].in[1], main.escalarMul.segments[0].windows[4].mux.s[1] --> 0 +main.n2b.out[14], main.escalarMul.e[14], main.escalarMul.segments[0].e[14], main.escalarMul.segments[0].windows[4].in[2], main.escalarMul.segments[0].windows[4].mux.s[2] --> 0 +main.n2b.out[15], main.escalarMul.e[15], main.escalarMul.segments[0].e[15], main.escalarMul.segments[0].windows[5].in[0], main.escalarMul.segments[0].windows[5].mux.s[0] --> 0 +main.n2b.out[16], main.escalarMul.e[16], main.escalarMul.segments[0].e[16], main.escalarMul.segments[0].windows[5].in[1], main.escalarMul.segments[0].windows[5].mux.s[1] --> 0 +main.n2b.out[17], main.escalarMul.e[17], main.escalarMul.segments[0].e[17], main.escalarMul.segments[0].windows[5].in[2], main.escalarMul.segments[0].windows[5].mux.s[2] --> 1 +main.n2b.out[18], main.escalarMul.e[18], main.escalarMul.segments[0].e[18], main.escalarMul.segments[0].windows[6].in[0], main.escalarMul.segments[0].windows[6].mux.s[0] --> 0 +main.n2b.out[19], main.escalarMul.e[19], main.escalarMul.segments[0].e[19], main.escalarMul.segments[0].windows[6].in[1], main.escalarMul.segments[0].windows[6].mux.s[1] --> 0 +main.n2b.out[20], main.escalarMul.e[20], main.escalarMul.segments[0].e[20], main.escalarMul.segments[0].windows[6].in[2], main.escalarMul.segments[0].windows[6].mux.s[2] --> 0 +main.n2b.out[21], main.escalarMul.e[21], main.escalarMul.segments[0].e[21], main.escalarMul.segments[0].windows[7].in[0], main.escalarMul.segments[0].windows[7].mux.s[0] --> 1 +main.n2b.out[22], main.escalarMul.e[22], main.escalarMul.segments[0].e[22], main.escalarMul.segments[0].windows[7].in[1], main.escalarMul.segments[0].windows[7].mux.s[1] --> 0 +main.n2b.out[23], main.escalarMul.e[23], main.escalarMul.segments[0].e[23], main.escalarMul.segments[0].windows[7].in[2], main.escalarMul.segments[0].windows[7].mux.s[2] --> 1 +main.n2b.out[24], main.escalarMul.e[24], main.escalarMul.segments[0].e[24], main.escalarMul.segments[0].windows[8].in[0], main.escalarMul.segments[0].windows[8].mux.s[0] --> 0 +main.n2b.out[25], main.escalarMul.e[25], main.escalarMul.segments[0].e[25], main.escalarMul.segments[0].windows[8].in[1], main.escalarMul.segments[0].windows[8].mux.s[1] --> 1 +main.n2b.out[26], main.escalarMul.e[26], main.escalarMul.segments[0].e[26], main.escalarMul.segments[0].windows[8].in[2], main.escalarMul.segments[0].windows[8].mux.s[2] --> 1 +main.n2b.out[27], main.escalarMul.e[27], main.escalarMul.segments[0].e[27], main.escalarMul.segments[0].windows[9].in[0], main.escalarMul.segments[0].windows[9].mux.s[0] --> 1 +main.n2b.out[28], main.escalarMul.e[28], main.escalarMul.segments[0].e[28], main.escalarMul.segments[0].windows[9].in[1], main.escalarMul.segments[0].windows[9].mux.s[1] --> 0 +main.n2b.out[29], main.escalarMul.e[29], main.escalarMul.segments[0].e[29], main.escalarMul.segments[0].windows[9].in[2], main.escalarMul.segments[0].windows[9].mux.s[2] --> 1 +main.n2b.out[30], main.escalarMul.e[30], main.escalarMul.segments[0].e[30], main.escalarMul.segments[0].windows[10].in[0], main.escalarMul.segments[0].windows[10].mux.s[0] --> 1 +main.n2b.out[31], main.escalarMul.e[31], main.escalarMul.segments[0].e[31], main.escalarMul.segments[0].windows[10].in[1], main.escalarMul.segments[0].windows[10].mux.s[1] --> 0 +main.n2b.out[32], main.escalarMul.e[32], main.escalarMul.segments[0].e[32], main.escalarMul.segments[0].windows[10].in[2], main.escalarMul.segments[0].windows[10].mux.s[2] --> 0 +main.n2b.out[33], main.escalarMul.e[33], main.escalarMul.segments[0].e[33], main.escalarMul.segments[0].windows[11].in[0], main.escalarMul.segments[0].windows[11].mux.s[0] --> 0 +main.n2b.out[34], main.escalarMul.e[34], main.escalarMul.segments[0].e[34], main.escalarMul.segments[0].windows[11].in[1], main.escalarMul.segments[0].windows[11].mux.s[1] --> 0 +main.n2b.out[35], main.escalarMul.e[35], main.escalarMul.segments[0].e[35], main.escalarMul.segments[0].windows[11].in[2], main.escalarMul.segments[0].windows[11].mux.s[2] --> 1 +main.n2b.out[36], main.escalarMul.e[36], main.escalarMul.segments[0].e[36], main.escalarMul.segments[0].windows[12].in[0], main.escalarMul.segments[0].windows[12].mux.s[0] --> 0 +main.n2b.out[37], main.escalarMul.e[37], main.escalarMul.segments[0].e[37], main.escalarMul.segments[0].windows[12].in[1], main.escalarMul.segments[0].windows[12].mux.s[1] --> 0 +main.n2b.out[38], main.escalarMul.e[38], main.escalarMul.segments[0].e[38], main.escalarMul.segments[0].windows[12].in[2], main.escalarMul.segments[0].windows[12].mux.s[2] --> 1 +main.n2b.out[39], main.escalarMul.e[39], main.escalarMul.segments[0].e[39], main.escalarMul.segments[0].windows[13].in[0], main.escalarMul.segments[0].windows[13].mux.s[0] --> 1 +main.n2b.out[40], main.escalarMul.e[40], main.escalarMul.segments[0].e[40], main.escalarMul.segments[0].windows[13].in[1], main.escalarMul.segments[0].windows[13].mux.s[1] --> 1 +main.n2b.out[41], main.escalarMul.e[41], main.escalarMul.segments[0].e[41], main.escalarMul.segments[0].windows[13].in[2], main.escalarMul.segments[0].windows[13].mux.s[2] --> 0 +main.n2b.out[42], main.escalarMul.e[42], main.escalarMul.segments[0].e[42], main.escalarMul.segments[0].windows[14].in[0], main.escalarMul.segments[0].windows[14].mux.s[0] --> 1 +main.n2b.out[43], main.escalarMul.e[43], main.escalarMul.segments[0].e[43], main.escalarMul.segments[0].windows[14].in[1], main.escalarMul.segments[0].windows[14].mux.s[1] --> 1 +main.n2b.out[44], main.escalarMul.e[44], main.escalarMul.segments[0].e[44], main.escalarMul.segments[0].windows[14].in[2], main.escalarMul.segments[0].windows[14].mux.s[2] --> 0 +main.n2b.out[45], main.escalarMul.e[45], main.escalarMul.segments[0].e[45], main.escalarMul.segments[0].windows[15].in[0], main.escalarMul.segments[0].windows[15].mux.s[0] --> 0 +main.n2b.out[46], main.escalarMul.e[46], main.escalarMul.segments[0].e[46], main.escalarMul.segments[0].windows[15].in[1], main.escalarMul.segments[0].windows[15].mux.s[1] --> 0 +main.n2b.out[47], main.escalarMul.e[47], main.escalarMul.segments[0].e[47], main.escalarMul.segments[0].windows[15].in[2], main.escalarMul.segments[0].windows[15].mux.s[2] --> 0 +main.n2b.out[48], main.escalarMul.e[48], main.escalarMul.segments[0].e[48], main.escalarMul.segments[0].windows[16].in[0], main.escalarMul.segments[0].windows[16].mux.s[0] --> 1 +main.n2b.out[49], main.escalarMul.e[49], main.escalarMul.segments[0].e[49], main.escalarMul.segments[0].windows[16].in[1], main.escalarMul.segments[0].windows[16].mux.s[1] --> 1 +main.n2b.out[50], main.escalarMul.e[50], main.escalarMul.segments[0].e[50], main.escalarMul.segments[0].windows[16].in[2], main.escalarMul.segments[0].windows[16].mux.s[2] --> 0 +main.n2b.out[51], main.escalarMul.e[51], main.escalarMul.segments[0].e[51], main.escalarMul.segments[0].windows[17].in[0], main.escalarMul.segments[0].windows[17].mux.s[0] --> 0 +main.n2b.out[52], main.escalarMul.e[52], main.escalarMul.segments[0].e[52], main.escalarMul.segments[0].windows[17].in[1], main.escalarMul.segments[0].windows[17].mux.s[1] --> 0 +main.n2b.out[53], main.escalarMul.e[53], main.escalarMul.segments[0].e[53], main.escalarMul.segments[0].windows[17].in[2], main.escalarMul.segments[0].windows[17].mux.s[2] --> 1 +main.n2b.out[54], main.escalarMul.e[54], main.escalarMul.segments[0].e[54], main.escalarMul.segments[0].windows[18].in[0], main.escalarMul.segments[0].windows[18].mux.s[0] --> 0 +main.n2b.out[55], main.escalarMul.e[55], main.escalarMul.segments[0].e[55], main.escalarMul.segments[0].windows[18].in[1], main.escalarMul.segments[0].windows[18].mux.s[1] --> 1 +main.n2b.out[56], main.escalarMul.e[56], main.escalarMul.segments[0].e[56], main.escalarMul.segments[0].windows[18].in[2], main.escalarMul.segments[0].windows[18].mux.s[2] --> 0 +main.n2b.out[57], main.escalarMul.e[57], main.escalarMul.segments[0].e[57], main.escalarMul.segments[0].windows[19].in[0], main.escalarMul.segments[0].windows[19].mux.s[0] --> 0 +main.n2b.out[58], main.escalarMul.e[58], main.escalarMul.segments[0].e[58], main.escalarMul.segments[0].windows[19].in[1], main.escalarMul.segments[0].windows[19].mux.s[1] --> 1 +main.n2b.out[59], main.escalarMul.e[59], main.escalarMul.segments[0].e[59], main.escalarMul.segments[0].windows[19].in[2], main.escalarMul.segments[0].windows[19].mux.s[2] --> 0 +main.n2b.out[60], main.escalarMul.e[60], main.escalarMul.segments[0].e[60], main.escalarMul.segments[0].windows[20].in[0], main.escalarMul.segments[0].windows[20].mux.s[0] --> 0 +main.n2b.out[61], main.escalarMul.e[61], main.escalarMul.segments[0].e[61], main.escalarMul.segments[0].windows[20].in[1], main.escalarMul.segments[0].windows[20].mux.s[1] --> 1 +main.n2b.out[62], main.escalarMul.e[62], main.escalarMul.segments[0].e[62], main.escalarMul.segments[0].windows[20].in[2], main.escalarMul.segments[0].windows[20].mux.s[2] --> 0 +main.n2b.out[63], main.escalarMul.e[63], main.escalarMul.segments[0].e[63], main.escalarMul.segments[0].windows[21].in[0], main.escalarMul.segments[0].windows[21].mux.s[0] --> 0 +main.n2b.out[64], main.escalarMul.e[64], main.escalarMul.segments[0].e[64], main.escalarMul.segments[0].windows[21].in[1], main.escalarMul.segments[0].windows[21].mux.s[1] --> 1 +main.n2b.out[65], main.escalarMul.e[65], main.escalarMul.segments[0].e[65], main.escalarMul.segments[0].windows[21].in[2], main.escalarMul.segments[0].windows[21].mux.s[2] --> 1 +main.n2b.out[66], main.escalarMul.e[66], main.escalarMul.segments[0].e[66], main.escalarMul.segments[0].windows[22].in[0], main.escalarMul.segments[0].windows[22].mux.s[0] --> 1 +main.n2b.out[67], main.escalarMul.e[67], main.escalarMul.segments[0].e[67], main.escalarMul.segments[0].windows[22].in[1], main.escalarMul.segments[0].windows[22].mux.s[1] --> 0 +main.n2b.out[68], main.escalarMul.e[68], main.escalarMul.segments[0].e[68], main.escalarMul.segments[0].windows[22].in[2], main.escalarMul.segments[0].windows[22].mux.s[2] --> 0 +main.n2b.out[69], main.escalarMul.e[69], main.escalarMul.segments[0].e[69], main.escalarMul.segments[0].windows[23].in[0], main.escalarMul.segments[0].windows[23].mux.s[0] --> 0 +main.n2b.out[70], main.escalarMul.e[70], main.escalarMul.segments[0].e[70], main.escalarMul.segments[0].windows[23].in[1], main.escalarMul.segments[0].windows[23].mux.s[1] --> 0 +main.n2b.out[71], main.escalarMul.e[71], main.escalarMul.segments[0].e[71], main.escalarMul.segments[0].windows[23].in[2], main.escalarMul.segments[0].windows[23].mux.s[2] --> 0 +main.n2b.out[72], main.escalarMul.e[72], main.escalarMul.segments[0].e[72], main.escalarMul.segments[0].windows[24].in[0], main.escalarMul.segments[0].windows[24].mux.s[0] --> 0 +main.n2b.out[73], main.escalarMul.e[73], main.escalarMul.segments[0].e[73], main.escalarMul.segments[0].windows[24].in[1], main.escalarMul.segments[0].windows[24].mux.s[1] --> 1 +main.n2b.out[74], main.escalarMul.e[74], main.escalarMul.segments[0].e[74], main.escalarMul.segments[0].windows[24].in[2], main.escalarMul.segments[0].windows[24].mux.s[2] --> 0 +main.n2b.out[75], main.escalarMul.e[75], main.escalarMul.segments[0].e[75], main.escalarMul.segments[0].windows[25].in[0], main.escalarMul.segments[0].windows[25].mux.s[0] --> 0 +main.n2b.out[76], main.escalarMul.e[76], main.escalarMul.segments[0].e[76], main.escalarMul.segments[0].windows[25].in[1], main.escalarMul.segments[0].windows[25].mux.s[1] --> 0 +main.n2b.out[77], main.escalarMul.e[77], main.escalarMul.segments[0].e[77], main.escalarMul.segments[0].windows[25].in[2], main.escalarMul.segments[0].windows[25].mux.s[2] --> 0 +main.n2b.out[78], main.escalarMul.e[78], main.escalarMul.segments[0].e[78], main.escalarMul.segments[0].windows[26].in[0], main.escalarMul.segments[0].windows[26].mux.s[0] --> 0 +main.n2b.out[79], main.escalarMul.e[79], main.escalarMul.segments[0].e[79], main.escalarMul.segments[0].windows[26].in[1], main.escalarMul.segments[0].windows[26].mux.s[1] --> 1 +main.n2b.out[80], main.escalarMul.e[80], main.escalarMul.segments[0].e[80], main.escalarMul.segments[0].windows[26].in[2], main.escalarMul.segments[0].windows[26].mux.s[2] --> 1 +main.n2b.out[81], main.escalarMul.e[81], main.escalarMul.segments[0].e[81], main.escalarMul.segments[0].windows[27].in[0], main.escalarMul.segments[0].windows[27].mux.s[0] --> 1 +main.n2b.out[82], main.escalarMul.e[82], main.escalarMul.segments[0].e[82], main.escalarMul.segments[0].windows[27].in[1], main.escalarMul.segments[0].windows[27].mux.s[1] --> 1 +main.n2b.out[83], main.escalarMul.e[83], main.escalarMul.segments[0].e[83], main.escalarMul.segments[0].windows[27].in[2], main.escalarMul.segments[0].windows[27].mux.s[2] --> 0 +main.n2b.out[84], main.escalarMul.e[84], main.escalarMul.segments[0].e[84], main.escalarMul.segments[0].windows[28].in[0], main.escalarMul.segments[0].windows[28].mux.s[0] --> 0 +main.n2b.out[85], main.escalarMul.e[85], main.escalarMul.segments[0].e[85], main.escalarMul.segments[0].windows[28].in[1], main.escalarMul.segments[0].windows[28].mux.s[1] --> 1 +main.n2b.out[86], main.escalarMul.e[86], main.escalarMul.segments[0].e[86], main.escalarMul.segments[0].windows[28].in[2], main.escalarMul.segments[0].windows[28].mux.s[2] --> 0 +main.n2b.out[87], main.escalarMul.e[87], main.escalarMul.segments[0].e[87], main.escalarMul.segments[0].windows[29].in[0], main.escalarMul.segments[0].windows[29].mux.s[0] --> 1 +main.n2b.out[88], main.escalarMul.e[88], main.escalarMul.segments[0].e[88], main.escalarMul.segments[0].windows[29].in[1], main.escalarMul.segments[0].windows[29].mux.s[1] --> 0 +main.n2b.out[89], main.escalarMul.e[89], main.escalarMul.segments[0].e[89], main.escalarMul.segments[0].windows[29].in[2], main.escalarMul.segments[0].windows[29].mux.s[2] --> 0 +main.n2b.out[90], main.escalarMul.e[90], main.escalarMul.segments[0].e[90], main.escalarMul.segments[0].windows[30].in[0], main.escalarMul.segments[0].windows[30].mux.s[0] --> 0 +main.n2b.out[91], main.escalarMul.e[91], main.escalarMul.segments[0].e[91], main.escalarMul.segments[0].windows[30].in[1], main.escalarMul.segments[0].windows[30].mux.s[1] --> 0 +main.n2b.out[92], main.escalarMul.e[92], main.escalarMul.segments[0].e[92], main.escalarMul.segments[0].windows[30].in[2], main.escalarMul.segments[0].windows[30].mux.s[2] --> 0 +main.n2b.out[93], main.escalarMul.e[93], main.escalarMul.segments[0].e[93], main.escalarMul.segments[0].windows[31].in[0], main.escalarMul.segments[0].windows[31].mux.s[0] --> 0 +main.n2b.out[94], main.escalarMul.e[94], main.escalarMul.segments[0].e[94], main.escalarMul.segments[0].windows[31].in[1], main.escalarMul.segments[0].windows[31].mux.s[1] --> 0 +main.n2b.out[95], main.escalarMul.e[95], main.escalarMul.segments[0].e[95], main.escalarMul.segments[0].windows[31].in[2], main.escalarMul.segments[0].windows[31].mux.s[2] --> 1 +main.n2b.out[96], main.escalarMul.e[96], main.escalarMul.segments[0].e[96], main.escalarMul.segments[0].windows[32].in[0], main.escalarMul.segments[0].windows[32].mux.s[0] --> 0 +main.n2b.out[97], main.escalarMul.e[97], main.escalarMul.segments[0].e[97], main.escalarMul.segments[0].windows[32].in[1], main.escalarMul.segments[0].windows[32].mux.s[1] --> 0 +main.n2b.out[98], main.escalarMul.e[98], main.escalarMul.segments[0].e[98], main.escalarMul.segments[0].windows[32].in[2], main.escalarMul.segments[0].windows[32].mux.s[2] --> 1 +main.n2b.out[99], main.escalarMul.e[99], main.escalarMul.segments[0].e[99], main.escalarMul.segments[0].windows[33].in[0], main.escalarMul.segments[0].windows[33].mux.s[0] --> 0 +main.n2b.out[100], main.escalarMul.e[100], main.escalarMul.segments[0].e[100], main.escalarMul.segments[0].windows[33].in[1], main.escalarMul.segments[0].windows[33].mux.s[1] --> 1 +main.n2b.out[101], main.escalarMul.e[101], main.escalarMul.segments[0].e[101], main.escalarMul.segments[0].windows[33].in[2], main.escalarMul.segments[0].windows[33].mux.s[2] --> 1 +main.n2b.out[102], main.escalarMul.e[102], main.escalarMul.segments[0].e[102], main.escalarMul.segments[0].windows[34].in[0], main.escalarMul.segments[0].windows[34].mux.s[0] --> 0 +main.n2b.out[103], main.escalarMul.e[103], main.escalarMul.segments[0].e[103], main.escalarMul.segments[0].windows[34].in[1], main.escalarMul.segments[0].windows[34].mux.s[1] --> 1 +main.n2b.out[104], main.escalarMul.e[104], main.escalarMul.segments[0].e[104], main.escalarMul.segments[0].windows[34].in[2], main.escalarMul.segments[0].windows[34].mux.s[2] --> 1 +main.n2b.out[105], main.escalarMul.e[105], main.escalarMul.segments[0].e[105], main.escalarMul.segments[0].windows[35].in[0], main.escalarMul.segments[0].windows[35].mux.s[0] --> 1 +main.n2b.out[106], main.escalarMul.e[106], main.escalarMul.segments[0].e[106], main.escalarMul.segments[0].windows[35].in[1], main.escalarMul.segments[0].windows[35].mux.s[1] --> 0 +main.n2b.out[107], main.escalarMul.e[107], main.escalarMul.segments[0].e[107], main.escalarMul.segments[0].windows[35].in[2], main.escalarMul.segments[0].windows[35].mux.s[2] --> 0 +main.n2b.out[108], main.escalarMul.e[108], main.escalarMul.segments[0].e[108], main.escalarMul.segments[0].windows[36].in[0], main.escalarMul.segments[0].windows[36].mux.s[0] --> 0 +main.n2b.out[109], main.escalarMul.e[109], main.escalarMul.segments[0].e[109], main.escalarMul.segments[0].windows[36].in[1], main.escalarMul.segments[0].windows[36].mux.s[1] --> 1 +main.n2b.out[110], main.escalarMul.e[110], main.escalarMul.segments[0].e[110], main.escalarMul.segments[0].windows[36].in[2], main.escalarMul.segments[0].windows[36].mux.s[2] --> 0 +main.n2b.out[111], main.escalarMul.e[111], main.escalarMul.segments[0].e[111], main.escalarMul.segments[0].windows[37].in[0], main.escalarMul.segments[0].windows[37].mux.s[0] --> 0 +main.n2b.out[112], main.escalarMul.e[112], main.escalarMul.segments[0].e[112], main.escalarMul.segments[0].windows[37].in[1], main.escalarMul.segments[0].windows[37].mux.s[1] --> 1 +main.n2b.out[113], main.escalarMul.e[113], main.escalarMul.segments[0].e[113], main.escalarMul.segments[0].windows[37].in[2], main.escalarMul.segments[0].windows[37].mux.s[2] --> 1 +main.n2b.out[114], main.escalarMul.e[114], main.escalarMul.segments[0].e[114], main.escalarMul.segments[0].windows[38].in[0], main.escalarMul.segments[0].windows[38].mux.s[0] --> 0 +main.n2b.out[115], main.escalarMul.e[115], main.escalarMul.segments[0].e[115], main.escalarMul.segments[0].windows[38].in[1], main.escalarMul.segments[0].windows[38].mux.s[1] --> 0 +main.n2b.out[116], main.escalarMul.e[116], main.escalarMul.segments[0].e[116], main.escalarMul.segments[0].windows[38].in[2], main.escalarMul.segments[0].windows[38].mux.s[2] --> 1 +main.n2b.out[117], main.escalarMul.e[117], main.escalarMul.segments[0].e[117], main.escalarMul.segments[0].windows[39].in[0], main.escalarMul.segments[0].windows[39].mux.s[0] --> 1 +main.n2b.out[118], main.escalarMul.e[118], main.escalarMul.segments[0].e[118], main.escalarMul.segments[0].windows[39].in[1], main.escalarMul.segments[0].windows[39].mux.s[1] --> 0 +main.n2b.out[119], main.escalarMul.e[119], main.escalarMul.segments[0].e[119], main.escalarMul.segments[0].windows[39].in[2], main.escalarMul.segments[0].windows[39].mux.s[2] --> 1 +main.n2b.out[120], main.escalarMul.e[120], main.escalarMul.segments[0].e[120], main.escalarMul.segments[0].windows[40].in[0], main.escalarMul.segments[0].windows[40].mux.s[0] --> 1 +main.n2b.out[121], main.escalarMul.e[121], main.escalarMul.segments[0].e[121], main.escalarMul.segments[0].windows[40].in[1], main.escalarMul.segments[0].windows[40].mux.s[1] --> 1 +main.n2b.out[122], main.escalarMul.e[122], main.escalarMul.segments[0].e[122], main.escalarMul.segments[0].windows[40].in[2], main.escalarMul.segments[0].windows[40].mux.s[2] --> 1 +main.n2b.out[123], main.escalarMul.e[123], main.escalarMul.segments[0].e[123], main.escalarMul.segments[0].windows[41].in[0], main.escalarMul.segments[0].windows[41].mux.s[0] --> 0 +main.n2b.out[124], main.escalarMul.e[124], main.escalarMul.segments[0].e[124], main.escalarMul.segments[0].windows[41].in[1], main.escalarMul.segments[0].windows[41].mux.s[1] --> 1 +main.n2b.out[125], main.escalarMul.e[125], main.escalarMul.segments[0].e[125], main.escalarMul.segments[0].windows[41].in[2], main.escalarMul.segments[0].windows[41].mux.s[2] --> 1 +main.n2b.out[126], main.escalarMul.e[126], main.escalarMul.segments[0].e[126], main.escalarMul.segments[0].windows[42].in[0], main.escalarMul.segments[0].windows[42].mux.s[0] --> 1 +main.n2b.out[127], main.escalarMul.e[127], main.escalarMul.segments[0].e[127], main.escalarMul.segments[0].windows[42].in[1], main.escalarMul.segments[0].windows[42].mux.s[1] --> 0 +main.n2b.out[128], main.escalarMul.e[128], main.escalarMul.segments[0].e[128], main.escalarMul.segments[0].windows[42].in[2], main.escalarMul.segments[0].windows[42].mux.s[2] --> 0 +main.n2b.out[129], main.escalarMul.e[129], main.escalarMul.segments[0].e[129], main.escalarMul.segments[0].windows[43].in[0], main.escalarMul.segments[0].windows[43].mux.s[0] --> 1 +main.n2b.out[130], main.escalarMul.e[130], main.escalarMul.segments[0].e[130], main.escalarMul.segments[0].windows[43].in[1], main.escalarMul.segments[0].windows[43].mux.s[1] --> 1 +main.n2b.out[131], main.escalarMul.e[131], main.escalarMul.segments[0].e[131], main.escalarMul.segments[0].windows[43].in[2], main.escalarMul.segments[0].windows[43].mux.s[2] --> 1 +main.n2b.out[132], main.escalarMul.e[132], main.escalarMul.segments[0].e[132], main.escalarMul.segments[0].windows[44].in[0], main.escalarMul.segments[0].windows[44].mux.s[0] --> 1 +main.n2b.out[133], main.escalarMul.e[133], main.escalarMul.segments[0].e[133], main.escalarMul.segments[0].windows[44].in[1], main.escalarMul.segments[0].windows[44].mux.s[1] --> 1 +main.n2b.out[134], main.escalarMul.e[134], main.escalarMul.segments[0].e[134], main.escalarMul.segments[0].windows[44].in[2], main.escalarMul.segments[0].windows[44].mux.s[2] --> 0 +main.n2b.out[135], main.escalarMul.e[135], main.escalarMul.segments[0].e[135], main.escalarMul.segments[0].windows[45].in[0], main.escalarMul.segments[0].windows[45].mux.s[0] --> 1 +main.n2b.out[136], main.escalarMul.e[136], main.escalarMul.segments[0].e[136], main.escalarMul.segments[0].windows[45].in[1], main.escalarMul.segments[0].windows[45].mux.s[1] --> 0 +main.n2b.out[137], main.escalarMul.e[137], main.escalarMul.segments[0].e[137], main.escalarMul.segments[0].windows[45].in[2], main.escalarMul.segments[0].windows[45].mux.s[2] --> 1 +main.n2b.out[138], main.escalarMul.e[138], main.escalarMul.segments[0].e[138], main.escalarMul.segments[0].windows[46].in[0], main.escalarMul.segments[0].windows[46].mux.s[0] --> 1 +main.n2b.out[139], main.escalarMul.e[139], main.escalarMul.segments[0].e[139], main.escalarMul.segments[0].windows[46].in[1], main.escalarMul.segments[0].windows[46].mux.s[1] --> 0 +main.n2b.out[140], main.escalarMul.e[140], main.escalarMul.segments[0].e[140], main.escalarMul.segments[0].windows[46].in[2], main.escalarMul.segments[0].windows[46].mux.s[2] --> 1 +main.n2b.out[141], main.escalarMul.e[141], main.escalarMul.segments[0].e[141], main.escalarMul.segments[0].windows[47].in[0], main.escalarMul.segments[0].windows[47].mux.s[0] --> 1 +main.n2b.out[142], main.escalarMul.e[142], main.escalarMul.segments[0].e[142], main.escalarMul.segments[0].windows[47].in[1], main.escalarMul.segments[0].windows[47].mux.s[1] --> 1 +main.n2b.out[143], main.escalarMul.e[143], main.escalarMul.segments[0].e[143], main.escalarMul.segments[0].windows[47].in[2], main.escalarMul.segments[0].windows[47].mux.s[2] --> 1 +main.n2b.out[144], main.escalarMul.e[144], main.escalarMul.segments[0].e[144], main.escalarMul.segments[0].windows[48].in[0], main.escalarMul.segments[0].windows[48].mux.s[0] --> 1 +main.n2b.out[145], main.escalarMul.e[145], main.escalarMul.segments[0].e[145], main.escalarMul.segments[0].windows[48].in[1], main.escalarMul.segments[0].windows[48].mux.s[1] --> 0 +main.n2b.out[146], main.escalarMul.e[146], main.escalarMul.segments[0].e[146], main.escalarMul.segments[0].windows[48].in[2], main.escalarMul.segments[0].windows[48].mux.s[2] --> 1 +main.n2b.out[147], main.escalarMul.e[147], main.escalarMul.segments[0].e[147], main.escalarMul.segments[0].windows[49].in[0], main.escalarMul.segments[0].windows[49].mux.s[0] --> 1 +main.n2b.out[148], main.escalarMul.e[148], main.escalarMul.segments[0].e[148], main.escalarMul.segments[0].windows[49].in[1], main.escalarMul.segments[0].windows[49].mux.s[1] --> 1 +main.n2b.out[149], main.escalarMul.e[149], main.escalarMul.segments[0].e[149], main.escalarMul.segments[0].windows[49].in[2], main.escalarMul.segments[0].windows[49].mux.s[2] --> 0 +main.n2b.out[150], main.escalarMul.e[150], main.escalarMul.segments[0].e[150], main.escalarMul.segments[0].windows[50].in[0], main.escalarMul.segments[0].windows[50].mux.s[0] --> 1 +main.n2b.out[151], main.escalarMul.e[151], main.escalarMul.segments[0].e[151], main.escalarMul.segments[0].windows[50].in[1], main.escalarMul.segments[0].windows[50].mux.s[1] --> 0 +main.n2b.out[152], main.escalarMul.e[152], main.escalarMul.segments[0].e[152], main.escalarMul.segments[0].windows[50].in[2], main.escalarMul.segments[0].windows[50].mux.s[2] --> 0 +main.n2b.out[153], main.escalarMul.e[153], main.escalarMul.segments[0].e[153], main.escalarMul.segments[0].windows[51].in[0], main.escalarMul.segments[0].windows[51].mux.s[0] --> 1 +main.n2b.out[154], main.escalarMul.e[154], main.escalarMul.segments[0].e[154], main.escalarMul.segments[0].windows[51].in[1], main.escalarMul.segments[0].windows[51].mux.s[1] --> 0 +main.n2b.out[155], main.escalarMul.e[155], main.escalarMul.segments[0].e[155], main.escalarMul.segments[0].windows[51].in[2], main.escalarMul.segments[0].windows[51].mux.s[2] --> 1 +main.n2b.out[156], main.escalarMul.e[156], main.escalarMul.segments[0].e[156], main.escalarMul.segments[0].windows[52].in[0], main.escalarMul.segments[0].windows[52].mux.s[0] --> 0 +main.n2b.out[157], main.escalarMul.e[157], main.escalarMul.segments[0].e[157], main.escalarMul.segments[0].windows[52].in[1], main.escalarMul.segments[0].windows[52].mux.s[1] --> 1 +main.n2b.out[158], main.escalarMul.e[158], main.escalarMul.segments[0].e[158], main.escalarMul.segments[0].windows[52].in[2], main.escalarMul.segments[0].windows[52].mux.s[2] --> 0 +main.n2b.out[159], main.escalarMul.e[159], main.escalarMul.segments[0].e[159], main.escalarMul.segments[0].windows[53].in[0], main.escalarMul.segments[0].windows[53].mux.s[0] --> 0 +main.n2b.out[160], main.escalarMul.e[160], main.escalarMul.segments[0].e[160], main.escalarMul.segments[0].windows[53].in[1], main.escalarMul.segments[0].windows[53].mux.s[1] --> 1 +main.n2b.out[161], main.escalarMul.e[161], main.escalarMul.segments[0].e[161], main.escalarMul.segments[0].windows[53].in[2], main.escalarMul.segments[0].windows[53].mux.s[2] --> 0 +main.n2b.out[162], main.escalarMul.e[162], main.escalarMul.segments[0].e[162], main.escalarMul.segments[0].windows[54].in[0], main.escalarMul.segments[0].windows[54].mux.s[0] --> 1 +main.n2b.out[163], main.escalarMul.e[163], main.escalarMul.segments[0].e[163], main.escalarMul.segments[0].windows[54].in[1], main.escalarMul.segments[0].windows[54].mux.s[1] --> 0 +main.n2b.out[164], main.escalarMul.e[164], main.escalarMul.segments[0].e[164], main.escalarMul.segments[0].windows[54].in[2], main.escalarMul.segments[0].windows[54].mux.s[2] --> 1 +main.n2b.out[165], main.escalarMul.e[165], main.escalarMul.segments[0].e[165], main.escalarMul.segments[0].windows[55].in[0], main.escalarMul.segments[0].windows[55].mux.s[0] --> 0 +main.n2b.out[166], main.escalarMul.e[166], main.escalarMul.segments[0].e[166], main.escalarMul.segments[0].windows[55].in[1], main.escalarMul.segments[0].windows[55].mux.s[1] --> 0 +main.n2b.out[167], main.escalarMul.e[167], main.escalarMul.segments[0].e[167], main.escalarMul.segments[0].windows[55].in[2], main.escalarMul.segments[0].windows[55].mux.s[2] --> 1 +main.n2b.out[168], main.escalarMul.e[168], main.escalarMul.segments[0].e[168], main.escalarMul.segments[0].windows[56].in[0], main.escalarMul.segments[0].windows[56].mux.s[0] --> 0 +main.n2b.out[169], main.escalarMul.e[169], main.escalarMul.segments[0].e[169], main.escalarMul.segments[0].windows[56].in[1], main.escalarMul.segments[0].windows[56].mux.s[1] --> 0 +main.n2b.out[170], main.escalarMul.e[170], main.escalarMul.segments[0].e[170], main.escalarMul.segments[0].windows[56].in[2], main.escalarMul.segments[0].windows[56].mux.s[2] --> 1 +main.n2b.out[171], main.escalarMul.e[171], main.escalarMul.segments[0].e[171], main.escalarMul.segments[0].windows[57].in[0], main.escalarMul.segments[0].windows[57].mux.s[0] --> 0 +main.n2b.out[172], main.escalarMul.e[172], main.escalarMul.segments[0].e[172], main.escalarMul.segments[0].windows[57].in[1], main.escalarMul.segments[0].windows[57].mux.s[1] --> 1 +main.n2b.out[173], main.escalarMul.e[173], main.escalarMul.segments[0].e[173], main.escalarMul.segments[0].windows[57].in[2], main.escalarMul.segments[0].windows[57].mux.s[2] --> 0 +main.n2b.out[174], main.escalarMul.e[174], main.escalarMul.segments[0].e[174], main.escalarMul.segments[0].windows[58].in[0], main.escalarMul.segments[0].windows[58].mux.s[0] --> 0 +main.n2b.out[175], main.escalarMul.e[175], main.escalarMul.segments[0].e[175], main.escalarMul.segments[0].windows[58].in[1], main.escalarMul.segments[0].windows[58].mux.s[1] --> 1 +main.n2b.out[176], main.escalarMul.e[176], main.escalarMul.segments[0].e[176], main.escalarMul.segments[0].windows[58].in[2], main.escalarMul.segments[0].windows[58].mux.s[2] --> 0 +main.n2b.out[177], main.escalarMul.e[177], main.escalarMul.segments[0].e[177], main.escalarMul.segments[0].windows[59].in[0], main.escalarMul.segments[0].windows[59].mux.s[0] --> 0 +main.n2b.out[178], main.escalarMul.e[178], main.escalarMul.segments[0].e[178], main.escalarMul.segments[0].windows[59].in[1], main.escalarMul.segments[0].windows[59].mux.s[1] --> 0 +main.n2b.out[179], main.escalarMul.e[179], main.escalarMul.segments[0].e[179], main.escalarMul.segments[0].windows[59].in[2], main.escalarMul.segments[0].windows[59].mux.s[2] --> 0 +main.n2b.out[180], main.escalarMul.e[180], main.escalarMul.segments[0].e[180], main.escalarMul.segments[0].windows[60].in[0], main.escalarMul.segments[0].windows[60].mux.s[0] --> 0 +main.n2b.out[181], main.escalarMul.e[181], main.escalarMul.segments[0].e[181], main.escalarMul.segments[0].windows[60].in[1], main.escalarMul.segments[0].windows[60].mux.s[1] --> 1 +main.n2b.out[182], main.escalarMul.e[182], main.escalarMul.segments[0].e[182], main.escalarMul.segments[0].windows[60].in[2], main.escalarMul.segments[0].windows[60].mux.s[2] --> 1 +main.n2b.out[183], main.escalarMul.e[183], main.escalarMul.segments[0].e[183], main.escalarMul.segments[0].windows[61].in[0], main.escalarMul.segments[0].windows[61].mux.s[0] --> 0 +main.n2b.out[184], main.escalarMul.e[184], main.escalarMul.segments[0].e[184], main.escalarMul.segments[0].windows[61].in[1], main.escalarMul.segments[0].windows[61].mux.s[1] --> 0 +main.n2b.out[185], main.escalarMul.e[185], main.escalarMul.segments[0].e[185], main.escalarMul.segments[0].windows[61].in[2], main.escalarMul.segments[0].windows[61].mux.s[2] --> 1 +main.n2b.out[186], main.escalarMul.e[186], main.escalarMul.segments[0].e[186], main.escalarMul.segments[0].windows[62].in[0], main.escalarMul.segments[0].windows[62].mux.s[0] --> 0 +main.n2b.out[187], main.escalarMul.e[187], main.escalarMul.segments[0].e[187], main.escalarMul.segments[0].windows[62].in[1], main.escalarMul.segments[0].windows[62].mux.s[1] --> 0 +main.n2b.out[188], main.escalarMul.e[188], main.escalarMul.segments[0].e[188], main.escalarMul.segments[0].windows[62].in[2], main.escalarMul.segments[0].windows[62].mux.s[2] --> 0 +main.n2b.out[189], main.escalarMul.e[189], main.escalarMul.segments[0].e[189], main.escalarMul.segments[0].windows[63].in[0], main.escalarMul.segments[0].windows[63].mux.s[0] --> 0 +main.n2b.out[190], main.escalarMul.e[190], main.escalarMul.segments[0].e[190], main.escalarMul.segments[0].windows[63].in[1], main.escalarMul.segments[0].windows[63].mux.s[1] --> 0 +main.n2b.out[191], main.escalarMul.e[191], main.escalarMul.segments[0].e[191], main.escalarMul.segments[0].windows[63].in[2], main.escalarMul.segments[0].windows[63].mux.s[2] --> 0 +main.n2b.out[192], main.escalarMul.e[192], main.escalarMul.segments[0].e[192], main.escalarMul.segments[0].windows[64].in[0], main.escalarMul.segments[0].windows[64].mux.s[0] --> 1 +main.n2b.out[193], main.escalarMul.e[193], main.escalarMul.segments[0].e[193], main.escalarMul.segments[0].windows[64].in[1], main.escalarMul.segments[0].windows[64].mux.s[1] --> 1 +main.n2b.out[194], main.escalarMul.e[194], main.escalarMul.segments[0].e[194], main.escalarMul.segments[0].windows[64].in[2], main.escalarMul.segments[0].windows[64].mux.s[2] --> 1 +main.n2b.out[195], main.escalarMul.e[195], main.escalarMul.segments[0].e[195], main.escalarMul.segments[0].windows[65].in[0], main.escalarMul.segments[0].windows[65].mux.s[0] --> 1 +main.n2b.out[196], main.escalarMul.e[196], main.escalarMul.segments[0].e[196], main.escalarMul.segments[0].windows[65].in[1], main.escalarMul.segments[0].windows[65].mux.s[1] --> 0 +main.n2b.out[197], main.escalarMul.e[197], main.escalarMul.segments[0].e[197], main.escalarMul.segments[0].windows[65].in[2], main.escalarMul.segments[0].windows[65].mux.s[2] --> 1 +main.n2b.out[198], main.escalarMul.e[198], main.escalarMul.segments[0].e[198], main.escalarMul.segments[0].windows[66].in[0], main.escalarMul.segments[0].windows[66].mux.s[0] --> 0 +main.n2b.out[199], main.escalarMul.e[199], main.escalarMul.segments[0].e[199], main.escalarMul.segments[0].windows[66].in[1], main.escalarMul.segments[0].windows[66].mux.s[1] --> 0 +main.n2b.out[200], main.escalarMul.e[200], main.escalarMul.segments[0].e[200], main.escalarMul.segments[0].windows[66].in[2], main.escalarMul.segments[0].windows[66].mux.s[2] --> 1 +main.n2b.out[201], main.escalarMul.e[201], main.escalarMul.segments[0].e[201], main.escalarMul.segments[0].windows[67].in[0], main.escalarMul.segments[0].windows[67].mux.s[0] --> 0 +main.n2b.out[202], main.escalarMul.e[202], main.escalarMul.segments[0].e[202], main.escalarMul.segments[0].windows[67].in[1], main.escalarMul.segments[0].windows[67].mux.s[1] --> 0 +main.n2b.out[203], main.escalarMul.e[203], main.escalarMul.segments[0].e[203], main.escalarMul.segments[0].windows[67].in[2], main.escalarMul.segments[0].windows[67].mux.s[2] --> 0 +main.n2b.out[204], main.escalarMul.e[204], main.escalarMul.segments[0].e[204], main.escalarMul.segments[0].windows[68].in[0], main.escalarMul.segments[0].windows[68].mux.s[0] --> 0 +main.n2b.out[205], main.escalarMul.e[205], main.escalarMul.segments[0].e[205], main.escalarMul.segments[0].windows[68].in[1], main.escalarMul.segments[0].windows[68].mux.s[1] --> 0 +main.n2b.out[206], main.escalarMul.e[206], main.escalarMul.segments[0].e[206], main.escalarMul.segments[0].windows[68].in[2], main.escalarMul.segments[0].windows[68].mux.s[2] --> 0 +main.n2b.out[207], main.escalarMul.e[207], main.escalarMul.segments[0].e[207], main.escalarMul.segments[0].windows[69].in[0], main.escalarMul.segments[0].windows[69].mux.s[0] --> 1 +main.n2b.out[208], main.escalarMul.e[208], main.escalarMul.segments[0].e[208], main.escalarMul.segments[0].windows[69].in[1], main.escalarMul.segments[0].windows[69].mux.s[1] --> 0 +main.n2b.out[209], main.escalarMul.e[209], main.escalarMul.segments[0].e[209], main.escalarMul.segments[0].windows[69].in[2], main.escalarMul.segments[0].windows[69].mux.s[2] --> 1 +main.n2b.out[210], main.escalarMul.e[210], main.escalarMul.segments[0].e[210], main.escalarMul.segments[0].windows[70].in[0], main.escalarMul.segments[0].windows[70].mux.s[0] --> 1 +main.n2b.out[211], main.escalarMul.e[211], main.escalarMul.segments[0].e[211], main.escalarMul.segments[0].windows[70].in[1], main.escalarMul.segments[0].windows[70].mux.s[1] --> 1 +main.n2b.out[212], main.escalarMul.e[212], main.escalarMul.segments[0].e[212], main.escalarMul.segments[0].windows[70].in[2], main.escalarMul.segments[0].windows[70].mux.s[2] --> 0 +main.n2b.out[213], main.escalarMul.e[213], main.escalarMul.segments[0].e[213], main.escalarMul.segments[0].windows[71].in[0], main.escalarMul.segments[0].windows[71].mux.s[0] --> 0 +main.n2b.out[214], main.escalarMul.e[214], main.escalarMul.segments[0].e[214], main.escalarMul.segments[0].windows[71].in[1], main.escalarMul.segments[0].windows[71].mux.s[1] --> 0 +main.n2b.out[215], main.escalarMul.e[215], main.escalarMul.segments[0].e[215], main.escalarMul.segments[0].windows[71].in[2], main.escalarMul.segments[0].windows[71].mux.s[2] --> 0 +main.n2b.out[216], main.escalarMul.e[216], main.escalarMul.segments[0].e[216], main.escalarMul.segments[0].windows[72].in[0], main.escalarMul.segments[0].windows[72].mux.s[0] --> 0 +main.n2b.out[217], main.escalarMul.e[217], main.escalarMul.segments[0].e[217], main.escalarMul.segments[0].windows[72].in[1], main.escalarMul.segments[0].windows[72].mux.s[1] --> 1 +main.n2b.out[218], main.escalarMul.e[218], main.escalarMul.segments[0].e[218], main.escalarMul.segments[0].windows[72].in[2], main.escalarMul.segments[0].windows[72].mux.s[2] --> 1 +main.n2b.out[219], main.escalarMul.e[219], main.escalarMul.segments[0].e[219], main.escalarMul.segments[0].windows[73].in[0], main.escalarMul.segments[0].windows[73].mux.s[0] --> 1 +main.n2b.out[220], main.escalarMul.e[220], main.escalarMul.segments[0].e[220], main.escalarMul.segments[0].windows[73].in[1], main.escalarMul.segments[0].windows[73].mux.s[1] --> 1 +main.n2b.out[221], main.escalarMul.e[221], main.escalarMul.segments[0].e[221], main.escalarMul.segments[0].windows[73].in[2], main.escalarMul.segments[0].windows[73].mux.s[2] --> 1 +main.n2b.out[222], main.escalarMul.e[222], main.escalarMul.segments[0].e[222], main.escalarMul.segments[0].windows[74].in[0], main.escalarMul.segments[0].windows[74].mux.s[0] --> 1 +main.n2b.out[223], main.escalarMul.e[223], main.escalarMul.segments[0].e[223], main.escalarMul.segments[0].windows[74].in[1], main.escalarMul.segments[0].windows[74].mux.s[1] --> 0 +main.n2b.out[224], main.escalarMul.e[224], main.escalarMul.segments[0].e[224], main.escalarMul.segments[0].windows[74].in[2], main.escalarMul.segments[0].windows[74].mux.s[2] --> 1 +main.n2b.out[225], main.escalarMul.e[225], main.escalarMul.segments[0].e[225], main.escalarMul.segments[0].windows[75].in[0], main.escalarMul.segments[0].windows[75].mux.s[0] --> 0 +main.n2b.out[226], main.escalarMul.e[226], main.escalarMul.segments[0].e[226], main.escalarMul.segments[0].windows[75].in[1], main.escalarMul.segments[0].windows[75].mux.s[1] --> 0 +main.n2b.out[227], main.escalarMul.e[227], main.escalarMul.segments[0].e[227], main.escalarMul.segments[0].windows[75].in[2], main.escalarMul.segments[0].windows[75].mux.s[2] --> 0 +main.n2b.out[228], main.escalarMul.e[228], main.escalarMul.segments[0].e[228], main.escalarMul.segments[0].windows[76].in[0], main.escalarMul.segments[0].windows[76].mux.s[0] --> 1 +main.n2b.out[229], main.escalarMul.e[229], main.escalarMul.segments[0].e[229], main.escalarMul.segments[0].windows[76].in[1], main.escalarMul.segments[0].windows[76].mux.s[1] --> 0 +main.n2b.out[230], main.escalarMul.e[230], main.escalarMul.segments[0].e[230], main.escalarMul.segments[0].windows[76].in[2], main.escalarMul.segments[0].windows[76].mux.s[2] --> 0 +main.n2b.out[231], main.escalarMul.e[231], main.escalarMul.segments[0].e[231], main.escalarMul.segments[0].windows[77].in[0], main.escalarMul.segments[0].windows[77].mux.s[0] --> 1 +main.n2b.out[232], main.escalarMul.e[232], main.escalarMul.segments[0].e[232], main.escalarMul.segments[0].windows[77].in[1], main.escalarMul.segments[0].windows[77].mux.s[1] --> 1 +main.n2b.out[233], main.escalarMul.e[233], main.escalarMul.segments[0].e[233], main.escalarMul.segments[0].windows[77].in[2], main.escalarMul.segments[0].windows[77].mux.s[2] --> 0 +main.n2b.out[234], main.escalarMul.e[234], main.escalarMul.segments[0].e[234], main.escalarMul.segments[0].windows[78].in[0], main.escalarMul.segments[0].windows[78].mux.s[0] --> 0 +main.n2b.out[235], main.escalarMul.e[235], main.escalarMul.segments[0].e[235], main.escalarMul.segments[0].windows[78].in[1], main.escalarMul.segments[0].windows[78].mux.s[1] --> 1 +main.n2b.out[236], main.escalarMul.e[236], main.escalarMul.segments[0].e[236], main.escalarMul.segments[0].windows[78].in[2], main.escalarMul.segments[0].windows[78].mux.s[2] --> 0 +main.n2b.out[237], main.escalarMul.e[237], main.escalarMul.segments[0].e[237], main.escalarMul.segments[0].windows[79].in[0], main.escalarMul.segments[0].windows[79].mux.s[0] --> 1 +main.n2b.out[238], main.escalarMul.e[238], main.escalarMul.segments[0].e[238], main.escalarMul.segments[0].windows[79].in[1], main.escalarMul.segments[0].windows[79].mux.s[1] --> 0 +main.n2b.out[239], main.escalarMul.e[239], main.escalarMul.segments[0].e[239], main.escalarMul.segments[0].windows[79].in[2], main.escalarMul.segments[0].windows[79].mux.s[2] --> 0 +main.n2b.out[240], main.escalarMul.e[240], main.escalarMul.segments[0].e[240], main.escalarMul.segments[0].windows[80].in[0], main.escalarMul.segments[0].windows[80].mux.s[0] --> 1 +main.n2b.out[241], main.escalarMul.e[241], main.escalarMul.segments[0].e[241], main.escalarMul.segments[0].windows[80].in[1], main.escalarMul.segments[0].windows[80].mux.s[1] --> 1 +main.n2b.out[242], main.escalarMul.e[242], main.escalarMul.segments[0].e[242], main.escalarMul.segments[0].windows[80].in[2], main.escalarMul.segments[0].windows[80].mux.s[2] --> 0 +main.n2b.out[243], main.escalarMul.e[243], main.escalarMul.segments[0].e[243], main.escalarMul.segments[0].windows[81].in[0], main.escalarMul.segments[0].windows[81].mux.s[0] --> 0 +main.n2b.out[244], main.escalarMul.e[244], main.escalarMul.segments[0].e[244], main.escalarMul.segments[0].windows[81].in[1], main.escalarMul.segments[0].windows[81].mux.s[1] --> 1 +main.n2b.out[245], main.escalarMul.e[245], main.escalarMul.segments[0].e[245], main.escalarMul.segments[0].windows[81].in[2], main.escalarMul.segments[0].windows[81].mux.s[2] --> 1 +main.n2b.out[246], main.escalarMul.e[246], main.escalarMul.segments[0].e[246], main.escalarMul.segments[0].windows[82].in[0], main.escalarMul.segments[0].windows[82].mux.s[0] --> 0 +main.n2b.out[247], main.escalarMul.e[247], main.escalarMul.segments[0].e[247], main.escalarMul.segments[0].windows[82].in[1], main.escalarMul.segments[0].windows[82].mux.s[1] --> 0 +main.n2b.out[248], main.escalarMul.e[248], main.escalarMul.segments[0].e[248], main.escalarMul.segments[0].windows[82].in[2], main.escalarMul.segments[0].windows[82].mux.s[2] --> 1 +main.n2b.out[249], main.escalarMul.e[249], main.escalarMul.segments[1].e[0], main.escalarMul.segments[1].windows[0].in[0], main.escalarMul.segments[1].windows[0].mux.s[0] --> 0 +main.n2b.out[250], main.escalarMul.e[250], main.escalarMul.segments[1].e[1], main.escalarMul.segments[1].windows[0].in[1], main.escalarMul.segments[1].windows[0].mux.s[1] --> 1 +main.n2b.out[251], main.escalarMul.e[251], main.escalarMul.segments[1].e[2], main.escalarMul.segments[1].windows[0].in[2], main.escalarMul.segments[1].windows[0].mux.s[2] --> 0 +main.n2b.out[252], main.escalarMul.e[252], main.escalarMul.segments[1].e[3], main.escalarMul.segments[1].windows[1].in[0], main.escalarMul.segments[1].windows[1].mux.s[0] --> 0 +main.escalarMul.segments[0].out[0], main.escalarMul.segments[0].cAdd.xout, main.escalarMul.adders[0].x1 --> 17599941411044321102470654957164444093408416242707396173693022403608700669359 +main.escalarMul.segments[0].out[1], main.escalarMul.segments[0].cAdd.yout, main.escalarMul.adders[0].y1 --> 18268797171943978030825583824040519624984399929993866282131480067093154344077 +main.escalarMul.segments[0].dbl[0], main.escalarMul.segments[0].windows[82].out8[0], main.escalarMul.segments[0].windows[82].mux.c[0][7], main.escalarMul.segments[0].windows[82].adr8.out[0], main.escalarMul.m2e[0].in[0] --> 501247408557278418775652570322833939900259590416381855341239762907646262564 +main.escalarMul.segments[0].dbl[1], main.escalarMul.segments[0].windows[82].out8[1], main.escalarMul.segments[0].windows[82].mux.c[1][7], main.escalarMul.segments[0].windows[82].adr8.out[1], main.escalarMul.m2e[0].in[1] --> 12444317994817516431470070036784049199308823013605433429380799220519715901218 +main.escalarMul.segments[0].e2m.out[0], main.escalarMul.segments[0].windows[0].base[0], main.escalarMul.segments[0].windows[0].mux.c[0][0], main.escalarMul.segments[0].windows[0].mux.a[0], main.escalarMul.segments[0].windows[0].dbl2.in[0], main.escalarMul.segments[0].windows[0].adr3.in1[0], main.escalarMul.segments[0].windows[0].adr4.in1[0], main.escalarMul.segments[0].windows[0].adr5.in1[0], main.escalarMul.segments[0].windows[0].adr6.in1[0], main.escalarMul.segments[0].windows[0].adr7.in1[0], main.escalarMul.segments[0].windows[0].adr8.in1[0], main.escalarMul.segments[0].cadders[0].in1[0] --> 49 +main.escalarMul.segments[0].e2m.out[1], main.escalarMul.segments[0].windows[0].base[1], main.escalarMul.segments[0].windows[0].mux.c[1][0], main.escalarMul.segments[0].windows[0].mux.a[1], main.escalarMul.segments[0].windows[0].dbl2.in[1], main.escalarMul.segments[0].windows[0].adr3.in1[1], main.escalarMul.segments[0].windows[0].adr4.in1[1], main.escalarMul.segments[0].windows[0].adr5.in1[1], main.escalarMul.segments[0].windows[0].adr6.in1[1], main.escalarMul.segments[0].windows[0].adr7.in1[1], main.escalarMul.segments[0].windows[0].adr8.in1[1], main.escalarMul.segments[0].cadders[0].in1[1] --> 9299363453318200705862291866206362851451858058193867120470786816605550302462 +main.escalarMul.segments[0].windows[0].out[0], main.escalarMul.segments[0].windows[0].mux.out[0], main.escalarMul.segments[0].adders[0].in1[0] --> 20362743932050971297570772668378244552617303936952202629186945600444066617704 +main.escalarMul.segments[0].windows[0].out[1], main.escalarMul.segments[0].windows[0].mux.out[1], main.escalarMul.segments[0].adders[0].in1[1] --> 17607012595805819799103265969342024902528946448890482994254679582103455633482 +main.escalarMul.segments[0].windows[0].out8[0], main.escalarMul.segments[0].windows[0].mux.c[0][7], main.escalarMul.segments[0].windows[0].adr8.out[0], main.escalarMul.segments[0].windows[1].base[0], main.escalarMul.segments[0].windows[1].mux.c[0][0], main.escalarMul.segments[0].windows[1].mux.a[0], main.escalarMul.segments[0].windows[1].dbl2.in[0], main.escalarMul.segments[0].windows[1].adr3.in1[0], main.escalarMul.segments[0].windows[1].adr4.in1[0], main.escalarMul.segments[0].windows[1].adr5.in1[0], main.escalarMul.segments[0].windows[1].adr6.in1[0], main.escalarMul.segments[0].windows[1].adr7.in1[0], main.escalarMul.segments[0].windows[1].adr8.in1[0], main.escalarMul.segments[0].cadders[0].in2[0] --> 20362743932050971297570772668378244552617303936952202629186945600444066617704 +main.escalarMul.segments[0].windows[0].out8[1], main.escalarMul.segments[0].windows[0].mux.c[1][7], main.escalarMul.segments[0].windows[0].adr8.out[1], main.escalarMul.segments[0].windows[1].base[1], main.escalarMul.segments[0].windows[1].mux.c[1][0], main.escalarMul.segments[0].windows[1].mux.a[1], main.escalarMul.segments[0].windows[1].dbl2.in[1], main.escalarMul.segments[0].windows[1].adr3.in1[1], main.escalarMul.segments[0].windows[1].adr4.in1[1], main.escalarMul.segments[0].windows[1].adr5.in1[1], main.escalarMul.segments[0].windows[1].adr6.in1[1], main.escalarMul.segments[0].windows[1].adr7.in1[1], main.escalarMul.segments[0].windows[1].adr8.in1[1], main.escalarMul.segments[0].cadders[0].in2[1] --> 17607012595805819799103265969342024902528946448890482994254679582103455633482 +main.escalarMul.segments[0].windows[0].mux.c[0][1], main.escalarMul.segments[0].windows[0].dbl2.out[0], main.escalarMul.segments[0].windows[0].adr3.in2[0] --> 17704551760139153941388081146172986416331096390708833557414189129827137920040 +main.escalarMul.segments[0].windows[0].mux.c[0][2], main.escalarMul.segments[0].windows[0].adr3.out[0], main.escalarMul.segments[0].windows[0].adr4.in2[0] --> 5111297778197390981489770092355156129943101543103148549608672791116630121446 +main.escalarMul.segments[0].windows[0].mux.c[0][3], main.escalarMul.segments[0].windows[0].adr4.out[0], main.escalarMul.segments[0].windows[0].adr5.in2[0] --> 20601928577435372014798423317772702983895286969625449153157087284945762552750 +main.escalarMul.segments[0].windows[0].mux.c[0][4], main.escalarMul.segments[0].windows[0].adr5.out[0], main.escalarMul.segments[0].windows[0].adr6.in2[0] --> 15741868042966074247226785000551103885540373320001705043066544074651129426315 +main.escalarMul.segments[0].windows[0].mux.c[0][5], main.escalarMul.segments[0].windows[0].adr6.out[0], main.escalarMul.segments[0].windows[0].adr7.in2[0] --> 2719336848300931926104461276070164326095446885541144629060121540944525392419 +main.escalarMul.segments[0].windows[0].mux.c[0][6], main.escalarMul.segments[0].windows[0].adr7.out[0], main.escalarMul.segments[0].windows[0].adr8.in2[0] --> 21529934488910505512670602979386981903653123538884758020767001560855008836694 +main.escalarMul.segments[0].windows[0].mux.c[1][1], main.escalarMul.segments[0].windows[0].dbl2.out[1], main.escalarMul.segments[0].windows[0].adr3.in2[1] --> 19837936308529163810088384215103010829016792670699003072161048920194708827102 +main.escalarMul.segments[0].windows[0].mux.c[1][2], main.escalarMul.segments[0].windows[0].adr3.out[1], main.escalarMul.segments[0].windows[0].adr4.in2[1] --> 14908257785968803875933720896847789358945323589041574452312136085484839573761 +main.escalarMul.segments[0].windows[0].mux.c[1][3], main.escalarMul.segments[0].windows[0].adr4.out[1], main.escalarMul.segments[0].windows[0].adr5.in2[1] --> 16575867345057007001440188381807944501508530544362623935405146835537327502538 +main.escalarMul.segments[0].windows[0].mux.c[1][4], main.escalarMul.segments[0].windows[0].adr5.out[1], main.escalarMul.segments[0].windows[0].adr6.in2[1] --> 18263152607666389650471715388690010189875540298308595994304959285855027066267 +main.escalarMul.segments[0].windows[0].mux.c[1][5], main.escalarMul.segments[0].windows[0].adr6.out[1], main.escalarMul.segments[0].windows[0].adr7.in2[1] --> 267413596749182292498218648047718582092114826172517821701705398589202926622 +main.escalarMul.segments[0].windows[0].mux.c[1][6], main.escalarMul.segments[0].windows[0].adr7.out[1], main.escalarMul.segments[0].windows[0].adr8.in2[1] --> 1842001101821856503784671152309992734029262678010246926451680061703807320759 +main.escalarMul.segments[0].windows[0].mux.a210[0] --> 14069261598706781014101921334227641770788017796714537976292141209293667303593 +main.escalarMul.segments[0].windows[0].mux.a210[1] --> 20743470929184655409765310676353541522736472499784366365305300574626334552614 +main.escalarMul.segments[0].windows[0].mux.a21[0] --> 676768667747040283954047886480721888169648675779904428091784695087249288982 +main.escalarMul.segments[0].windows[0].mux.a21[1] --> 21746439905183414127734338223493106213756985649686012287701779880121107974427 +main.escalarMul.segments[0].windows[0].mux.a20[0] --> 13049402788874254181982406619860624201320705975662674715975796709617875037347 +main.escalarMul.segments[0].windows[0].mux.a20[1] --> 15242173877550379982293222400975610591748368716190854563102892382296634326949 +main.escalarMul.segments[0].windows[0].mux.a2[0] --> 15741868042966074247226785000551103885540373320001705043066544074651129426266 +main.escalarMul.segments[0].windows[0].mux.a2[1] --> 8963789154348188944609423522483647338423682240114728873834172469249476763805 +main.escalarMul.segments[0].windows[0].mux.a10[0] --> 19674321910938102314166977824501835526169453436229501389832429550577803006930 +main.escalarMul.segments[0].windows[0].mux.a10[1] --> 13017279575716515243526780881320782253546636743231947875100952833039137899754 +main.escalarMul.segments[0].windows[0].mux.a1[0] --> 5111297778197390981489770092355156129943101543103148549608672791116630121397 +main.escalarMul.segments[0].windows[0].mux.a1[1] --> 5608894332650603170071429030641426507493465530847707331841349268879289271299 +main.escalarMul.segments[0].windows[0].mux.a0[0] --> 17704551760139153941388081146172986416331096390708833557414189129827137919991 +main.escalarMul.segments[0].windows[0].mux.a0[1] --> 10538572855210963104226092348896647977564934612505135951690262103589158524640 +main.escalarMul.segments[0].windows[0].mux.s10 --> 1 +main.escalarMul.segments[0].windows[0].dbl2.lamda --> 3153934940261643520555707470286587085622992103620387969552997557090627927894 +main.escalarMul.segments[0].windows[0].dbl2.x1_2 --> 2401 +main.escalarMul.segments[0].windows[0].adr3.lamda --> 9504555759950696233817422368186330851309990215750902697742256599420960751832 +main.escalarMul.segments[0].windows[0].adr4.lamda --> 2256665262677035669484498286164252842895862859031699727956553975584316932507 +main.escalarMul.segments[0].windows[0].adr5.lamda --> 15536628316131831358692556860451523330332729633496701915903095588655263949434 +main.escalarMul.segments[0].windows[0].adr6.lamda --> 10688668427866900672424358083018296905918009208300176169575029353820467670548 +main.escalarMul.segments[0].windows[0].adr7.lamda --> 7009874687378619946511775822794599639898317290860148467903275367035364382573 +main.escalarMul.segments[0].windows[0].adr8.lamda --> 11025095375014950792327525937623692904133494199908708561169479640024003023774 +main.escalarMul.segments[0].windows[1].out[0], main.escalarMul.segments[0].windows[1].mux.out[0], main.escalarMul.segments[0].adders[0].in2[0] --> 20362743932050971297570772668378244552617303936952202629186945600444066617704 +main.escalarMul.segments[0].windows[1].out[1], main.escalarMul.segments[0].windows[1].mux.out[1], main.escalarMul.segments[0].adders[0].in2[1] --> 17607012595805819799103265969342024902528946448890482994254679582103455633482 +main.escalarMul.segments[0].windows[1].out8[0], main.escalarMul.segments[0].windows[1].mux.c[0][7], main.escalarMul.segments[0].windows[1].adr8.out[0], main.escalarMul.segments[0].windows[2].base[0], main.escalarMul.segments[0].windows[2].mux.c[0][0], main.escalarMul.segments[0].windows[2].mux.a[0], main.escalarMul.segments[0].windows[2].dbl2.in[0], main.escalarMul.segments[0].windows[2].adr3.in1[0], main.escalarMul.segments[0].windows[2].adr4.in1[0], main.escalarMul.segments[0].windows[2].adr5.in1[0], main.escalarMul.segments[0].windows[2].adr6.in1[0], main.escalarMul.segments[0].windows[2].adr7.in1[0], main.escalarMul.segments[0].windows[2].adr8.in1[0], main.escalarMul.segments[0].cadders[1].in2[0] --> 635345286539104787944382344286872870332849266635563644035994351536820785667 +main.escalarMul.segments[0].windows[1].out8[1], main.escalarMul.segments[0].windows[1].mux.c[1][7], main.escalarMul.segments[0].windows[1].adr8.out[1], main.escalarMul.segments[0].windows[2].base[1], main.escalarMul.segments[0].windows[2].mux.c[1][0], main.escalarMul.segments[0].windows[2].mux.a[1], main.escalarMul.segments[0].windows[2].dbl2.in[1], main.escalarMul.segments[0].windows[2].adr3.in1[1], main.escalarMul.segments[0].windows[2].adr4.in1[1], main.escalarMul.segments[0].windows[2].adr5.in1[1], main.escalarMul.segments[0].windows[2].adr6.in1[1], main.escalarMul.segments[0].windows[2].adr7.in1[1], main.escalarMul.segments[0].windows[2].adr8.in1[1], main.escalarMul.segments[0].cadders[1].in2[1] --> 12286268456081698535128782992253919629297957575865541919772146846866009858779 +main.escalarMul.segments[0].windows[1].mux.c[0][1], main.escalarMul.segments[0].windows[1].dbl2.out[0], main.escalarMul.segments[0].windows[1].adr3.in2[0] --> 1769446102580906841462668100785762131960998984523208668329935080701114109510 +main.escalarMul.segments[0].windows[1].mux.c[0][2], main.escalarMul.segments[0].windows[1].adr3.out[0], main.escalarMul.segments[0].windows[1].adr4.in2[0] --> 10737546009686032261299920828983648614598550942646237524187566405007016151515 +main.escalarMul.segments[0].windows[1].mux.c[0][3], main.escalarMul.segments[0].windows[1].adr4.out[0], main.escalarMul.segments[0].windows[1].adr5.in2[0] --> 8758396126022772986911488555925447082969397392927355533681465821490631410971 +main.escalarMul.segments[0].windows[1].mux.c[0][4], main.escalarMul.segments[0].windows[1].adr5.out[0], main.escalarMul.segments[0].windows[1].adr6.in2[0] --> 20302069575568044516375252521345876014161552912122641376877936679787071133042 +main.escalarMul.segments[0].windows[1].mux.c[0][5], main.escalarMul.segments[0].windows[1].adr6.out[0], main.escalarMul.segments[0].windows[1].adr7.in2[0] --> 20495133336449924363805548456279755672168601397807034034297667838903604822802 +main.escalarMul.segments[0].windows[1].mux.c[0][6], main.escalarMul.segments[0].windows[1].adr7.out[0], main.escalarMul.segments[0].windows[1].adr8.in2[0] --> 17879837872530400247647307107818737071591868259999860059065499950342724621953 +main.escalarMul.segments[0].windows[1].mux.c[1][1], main.escalarMul.segments[0].windows[1].dbl2.out[1], main.escalarMul.segments[0].windows[1].adr3.in2[1] --> 5674068351098575328797842147570680614673185088458758805257966185008660656172 +main.escalarMul.segments[0].windows[1].mux.c[1][2], main.escalarMul.segments[0].windows[1].adr3.out[1], main.escalarMul.segments[0].windows[1].adr4.in2[1] --> 6218642370450189423755521991995912101079542549623086770955143673780190574916 +main.escalarMul.segments[0].windows[1].mux.c[1][3], main.escalarMul.segments[0].windows[1].adr4.out[1], main.escalarMul.segments[0].windows[1].adr5.in2[1] --> 10896114757369615968353937355425753589776310337314842666765144820098828915946 +main.escalarMul.segments[0].windows[1].mux.c[1][4], main.escalarMul.segments[0].windows[1].adr5.out[1], main.escalarMul.segments[0].windows[1].adr6.in2[1] --> 7379835176824700906648487279288339692673687476592652422541860343335428697716 +main.escalarMul.segments[0].windows[1].mux.c[1][5], main.escalarMul.segments[0].windows[1].adr6.out[1], main.escalarMul.segments[0].windows[1].adr7.in2[1] --> 2194618982891138900831315363861868532217642384265483331203123471572744088082 +main.escalarMul.segments[0].windows[1].mux.c[1][6], main.escalarMul.segments[0].windows[1].adr7.out[1], main.escalarMul.segments[0].windows[1].adr8.in2[1] --> 7235901158571932441687541584067972854739466678867147694268316554236983170543 +main.escalarMul.segments[0].windows[1].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[1].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[1].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[1].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[1].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[1].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[1].mux.a2[0] --> 21827568515356348441050885598224906550092613375586473091389195265918813010955 +main.escalarMul.segments[0].windows[1].mux.a2[1] --> 11661065452858156329791627055203589878693105428118203771985384947807781559851 +main.escalarMul.segments[0].windows[1].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[1].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[1].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[1].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[1].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[1].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[1].mux.s10 --> 0 +main.escalarMul.segments[0].windows[1].dbl2.lamda --> 5284740528182950905390647478230451194950996383568757029528682447429894740872 +main.escalarMul.segments[0].windows[1].dbl2.x1_2 --> 6947393599000680197331933029720707745405182357552889941459643377714892236348 +main.escalarMul.segments[0].windows[1].adr3.lamda --> 17086805487417983363931632584539639128725102592765093620575274356440139674194 +main.escalarMul.segments[0].windows[1].adr4.lamda --> 7916624855934613854657032599076900721568307719006292286225546568663495010795 +main.escalarMul.segments[0].windows[1].adr5.lamda --> 12663735629900064120125020674907416134395108650315847100079238473794488430357 +main.escalarMul.segments[0].windows[1].adr6.lamda --> 17330284745146009506844326219391706562838692980973399669286185400812401070260 +main.escalarMul.segments[0].windows[1].adr7.lamda --> 19998667160424130630250119357001892170519821837992627675102470726530460862411 +main.escalarMul.segments[0].windows[1].adr8.lamda --> 8936464513982711649852619380162750211267382321773791464153824147379615440082 +main.escalarMul.segments[0].adders[0].out[0], main.escalarMul.segments[0].adders[1].in1[0] --> 3050997879576607849351266153758061071862120926927663429022517172263483587128 +main.escalarMul.segments[0].adders[0].out[1], main.escalarMul.segments[0].adders[1].in1[1] --> 4281230276033455423143139775915250186019417951525551349443524604472352862135 +main.escalarMul.segments[0].adders[0].lamda --> 0 +main.escalarMul.segments[0].cadders[0].out[0], main.escalarMul.segments[0].cadders[1].in1[0] --> 3807628823953251932252172299304321583501113857756708363827719265790982773221 +main.escalarMul.segments[0].cadders[0].out[1], main.escalarMul.segments[0].cadders[1].in1[1] --> 6496467119902813199374930017185167039093707308116116629153463264728124965057 +main.escalarMul.segments[0].cadders[0].lamda --> 11800195525649303211368108034009456060347179264874424404201955573674886310051 +main.escalarMul.segments[0].windows[2].out[0], main.escalarMul.segments[0].windows[2].mux.out[0], main.escalarMul.segments[0].adders[1].in2[0] --> 650227414529182111940134965749924499036722018314953634749237590271374488307 +main.escalarMul.segments[0].windows[2].out[1], main.escalarMul.segments[0].windows[2].mux.out[1], main.escalarMul.segments[0].adders[1].in2[1] --> 21257192903449159746135757232459754744694163239162581853761652114937167487113 +main.escalarMul.segments[0].windows[2].out8[0], main.escalarMul.segments[0].windows[2].mux.c[0][7], main.escalarMul.segments[0].windows[2].adr8.out[0], main.escalarMul.segments[0].windows[3].base[0], main.escalarMul.segments[0].windows[3].mux.c[0][0], main.escalarMul.segments[0].windows[3].mux.a[0], main.escalarMul.segments[0].windows[3].dbl2.in[0], main.escalarMul.segments[0].windows[3].adr3.in1[0], main.escalarMul.segments[0].windows[3].adr4.in1[0], main.escalarMul.segments[0].windows[3].adr5.in1[0], main.escalarMul.segments[0].windows[3].adr6.in1[0], main.escalarMul.segments[0].windows[3].adr7.in1[0], main.escalarMul.segments[0].windows[3].adr8.in1[0], main.escalarMul.segments[0].cadders[2].in2[0] --> 15319323881495123266903246704483428854612417932107770385727079844314132904101 +main.escalarMul.segments[0].windows[2].out8[1], main.escalarMul.segments[0].windows[2].mux.c[1][7], main.escalarMul.segments[0].windows[2].adr8.out[1], main.escalarMul.segments[0].windows[3].base[1], main.escalarMul.segments[0].windows[3].mux.c[1][0], main.escalarMul.segments[0].windows[3].mux.a[1], main.escalarMul.segments[0].windows[3].dbl2.in[1], main.escalarMul.segments[0].windows[3].adr3.in1[1], main.escalarMul.segments[0].windows[3].adr4.in1[1], main.escalarMul.segments[0].windows[3].adr5.in1[1], main.escalarMul.segments[0].windows[3].adr6.in1[1], main.escalarMul.segments[0].windows[3].adr7.in1[1], main.escalarMul.segments[0].windows[3].adr8.in1[1], main.escalarMul.segments[0].cadders[2].in2[1] --> 2898256606778163693579886535586838318969738005704413175079217508412932707169 +main.escalarMul.segments[0].windows[2].mux.c[0][1], main.escalarMul.segments[0].windows[2].dbl2.out[0], main.escalarMul.segments[0].windows[2].adr3.in2[0] --> 16960767881730234894494408378351959347099589845160858766130239100120335150673 +main.escalarMul.segments[0].windows[2].mux.c[0][2], main.escalarMul.segments[0].windows[2].adr3.out[0], main.escalarMul.segments[0].windows[2].adr4.in2[0] --> 21688307521279922061103822612253230576548422891740455268232273879046023956375 +main.escalarMul.segments[0].windows[2].mux.c[0][3], main.escalarMul.segments[0].windows[2].adr4.out[0], main.escalarMul.segments[0].windows[2].adr5.in2[0] --> 650227414529182111940134965749924499036722018314953634749237590271374488307 +main.escalarMul.segments[0].windows[2].mux.c[0][4], main.escalarMul.segments[0].windows[2].adr5.out[0], main.escalarMul.segments[0].windows[2].adr6.in2[0] --> 15443288466930537442361169626814441294793392777729606675617884537802735861972 +main.escalarMul.segments[0].windows[2].mux.c[0][5], main.escalarMul.segments[0].windows[2].adr6.out[0], main.escalarMul.segments[0].windows[2].adr7.in2[0] --> 7847865629154763474008225414594113284296239152433622196223376919217039170784 +main.escalarMul.segments[0].windows[2].mux.c[0][6], main.escalarMul.segments[0].windows[2].adr7.out[0], main.escalarMul.segments[0].windows[2].adr8.in2[0] --> 15155879087331589653740049541951443788166014715017218293279353934826699209713 +main.escalarMul.segments[0].windows[2].mux.c[1][1], main.escalarMul.segments[0].windows[2].dbl2.out[1], main.escalarMul.segments[0].windows[2].adr3.in2[1] --> 127425348955928041016363253587626585138749878947760894327948123358431103696 +main.escalarMul.segments[0].windows[2].mux.c[1][2], main.escalarMul.segments[0].windows[2].adr3.out[1], main.escalarMul.segments[0].windows[2].adr4.in2[1] --> 19906688112001190275466285965393205753214638808486283558352660556754381568460 +main.escalarMul.segments[0].windows[2].mux.c[1][3], main.escalarMul.segments[0].windows[2].adr4.out[1], main.escalarMul.segments[0].windows[2].adr5.in2[1] --> 21257192903449159746135757232459754744694163239162581853761652114937167487113 +main.escalarMul.segments[0].windows[2].mux.c[1][4], main.escalarMul.segments[0].windows[2].adr5.out[1], main.escalarMul.segments[0].windows[2].adr6.in2[1] --> 8471755072301240246236356510189028140404763967068413704364948638538238843106 +main.escalarMul.segments[0].windows[2].mux.c[1][5], main.escalarMul.segments[0].windows[2].adr6.out[1], main.escalarMul.segments[0].windows[2].adr7.in2[1] --> 20640035331142754046849729613683099901476209939475287423729391391800110919694 +main.escalarMul.segments[0].windows[2].mux.c[1][6], main.escalarMul.segments[0].windows[2].adr7.out[1], main.escalarMul.segments[0].windows[2].adr8.in2[1] --> 16322778617704291950351372398423457927791352921400475050583635556050321444147 +main.escalarMul.segments[0].windows[2].mux.a210[0] --> 1345884590202627192737043564806155454125269493505264640023106192279677227416 +main.escalarMul.segments[0].windows[2].mux.a210[1] --> 4674335575337168422326061518451016771564935785135053771674357290561991503932 +main.escalarMul.segments[0].windows[2].mux.a21[0] --> 547871257499510160465845392427919875705412712598754337163394056090568672650 +main.escalarMul.segments[0].windows[2].mux.a21[1] --> 230603889483559963777512915095143663469907721711319707638173207623710891360 +main.escalarMul.segments[0].windows[2].mux.a20[0] --> 19855640310711646369589841244229135689832834597010789085907656005982405935040 +main.escalarMul.segments[0].windows[2].mux.a20[1] --> 2438880494128009072479387096903089716682289268908620401110437290193642336054 +main.escalarMul.segments[0].windows[2].mux.a2[0] --> 14807943180391432654416787282527568424460543511094043031581890186265915076305 +main.escalarMul.segments[0].windows[2].mux.a2[1] --> 18073729488058816933353979263192383599655170791618906128291005978248037479944 +main.escalarMul.segments[0].windows[2].mux.a10[0] --> 6412983041736680388779097809946157622818287348881271931819127335793453158160 +main.escalarMul.segments[0].windows[2].mux.a10[1] --> 13509347898573739964781891005732842035638732127594079320853190281690364673736 +main.escalarMul.segments[0].windows[2].mux.a1[0] --> 21052962234740817273159440267966357706215573625104891624196279527509203170708 +main.escalarMul.segments[0].windows[2].mux.a1[1] --> 7620419655919491740337502973139286123916681232620741638580513709888371709681 +main.escalarMul.segments[0].windows[2].mux.a0[0] --> 16325422595191130106550026034065086476766740578525295122094244748583514365006 +main.escalarMul.segments[0].windows[2].mux.a0[1] --> 9729399764713504728133986006590982044389156703498253318254005463068229740534 +main.escalarMul.segments[0].windows[2].mux.s10 --> 1 +main.escalarMul.segments[0].windows[2].dbl2.lamda --> 2392746504259277487436113689584629870127433699949259467658975658285793083556 +main.escalarMul.segments[0].windows[2].dbl2.x1_2 --> 256393283004783256879293131137340984813865207795695109575096514165663323076 +main.escalarMul.segments[0].windows[2].adr3.lamda --> 3203688628835957314551733531742130579203616993304344965873893075296860467699 +main.escalarMul.segments[0].windows[2].adr4.lamda --> 19428088812643957934733371952057671436472742821533889911140236094518208427972 +main.escalarMul.segments[0].windows[2].adr5.lamda --> 21275767263022454603451611696955829239961046492578542715728121665687261790924 +main.escalarMul.segments[0].windows[2].adr6.lamda --> 5526766622848956389264499900059257461391829441547307143801920720885945643 +main.escalarMul.segments[0].windows[2].adr7.lamda --> 3719508471332731728529855300774510671922624696455093748639613162026051306260 +main.escalarMul.segments[0].windows[2].adr8.lamda --> 7762921577644960726548222477340987208234194607167490640389119579544612613783 +main.escalarMul.segments[0].adders[1].out[0], main.escalarMul.segments[0].adders[2].in1[0] --> 16160770573720746955967243750837717055619485437778202232599001390267075253861 +main.escalarMul.segments[0].adders[1].out[1], main.escalarMul.segments[0].adders[2].in1[1] --> 788259457190750075909626074366292713963675972589401528056667032708097256563 +main.escalarMul.segments[0].adders[1].lamda --> 8561451929872916170725228297060239713536129833352880836408605051023266454713 +main.escalarMul.segments[0].cadders[1].out[0], main.escalarMul.segments[0].cadders[2].in1[0] --> 18457481688004682912115688421687421847694675855775281651062161133078186211062 +main.escalarMul.segments[0].cadders[1].out[1], main.escalarMul.segments[0].cadders[2].in1[1] --> 470949404140432614756195659963220764756523366974826803812622920907598102239 +main.escalarMul.segments[0].cadders[1].lamda --> 4457569987549812067804483415798325600738190406760696202748313981286319689631 +main.escalarMul.segments[0].windows[3].out[0], main.escalarMul.segments[0].windows[3].mux.out[0], main.escalarMul.segments[0].adders[2].in2[0] --> 21171120059093347501205216826615784546883407301689723247144446553313306171476 +main.escalarMul.segments[0].windows[3].out[1], main.escalarMul.segments[0].windows[3].mux.out[1], main.escalarMul.segments[0].adders[2].in2[1] --> 1773682901200264765817615507956706981784152074714837833175465193835785126687 +main.escalarMul.segments[0].windows[3].out8[0], main.escalarMul.segments[0].windows[3].mux.c[0][7], main.escalarMul.segments[0].windows[3].adr8.out[0], main.escalarMul.segments[0].windows[4].base[0], main.escalarMul.segments[0].windows[4].mux.c[0][0], main.escalarMul.segments[0].windows[4].mux.a[0], main.escalarMul.segments[0].windows[4].dbl2.in[0], main.escalarMul.segments[0].windows[4].adr3.in1[0], main.escalarMul.segments[0].windows[4].adr4.in1[0], main.escalarMul.segments[0].windows[4].adr5.in1[0], main.escalarMul.segments[0].windows[4].adr6.in1[0], main.escalarMul.segments[0].windows[4].adr7.in1[0], main.escalarMul.segments[0].windows[4].adr8.in1[0], main.escalarMul.segments[0].cadders[3].in2[0] --> 11038593967672805562861197320691814832845750447705473281592198402518724496430 +main.escalarMul.segments[0].windows[3].out8[1], main.escalarMul.segments[0].windows[3].mux.c[1][7], main.escalarMul.segments[0].windows[3].adr8.out[1], main.escalarMul.segments[0].windows[4].base[1], main.escalarMul.segments[0].windows[4].mux.c[1][0], main.escalarMul.segments[0].windows[4].mux.a[1], main.escalarMul.segments[0].windows[4].dbl2.in[1], main.escalarMul.segments[0].windows[4].adr3.in1[1], main.escalarMul.segments[0].windows[4].adr4.in1[1], main.escalarMul.segments[0].windows[4].adr5.in1[1], main.escalarMul.segments[0].windows[4].adr6.in1[1], main.escalarMul.segments[0].windows[4].adr7.in1[1], main.escalarMul.segments[0].windows[4].adr8.in1[1], main.escalarMul.segments[0].cadders[3].in2[1] --> 13870396088766622221705699745877271972711622835028634655158210343381086878329 +main.escalarMul.segments[0].windows[3].mux.c[0][1], main.escalarMul.segments[0].windows[3].dbl2.out[0], main.escalarMul.segments[0].windows[3].adr3.in2[0] --> 16658959482948021604692134815872869932704190816171836494855213288732476438990 +main.escalarMul.segments[0].windows[3].mux.c[0][2], main.escalarMul.segments[0].windows[3].adr3.out[0], main.escalarMul.segments[0].windows[3].adr4.in2[0] --> 12169952885746496548759642423486600871542270574536306920607867388375888050922 +main.escalarMul.segments[0].windows[3].mux.c[0][3], main.escalarMul.segments[0].windows[3].adr4.out[0], main.escalarMul.segments[0].windows[3].adr5.in2[0] --> 21171120059093347501205216826615784546883407301689723247144446553313306171476 +main.escalarMul.segments[0].windows[3].mux.c[0][4], main.escalarMul.segments[0].windows[3].adr5.out[0], main.escalarMul.segments[0].windows[3].adr6.in2[0] --> 7497269303592712688103251160614290195140328376483397047005332207642534509933 +main.escalarMul.segments[0].windows[3].mux.c[0][5], main.escalarMul.segments[0].windows[3].adr6.out[0], main.escalarMul.segments[0].windows[3].adr7.in2[0] --> 7831601011036603216105380845927166217533561688844399993502487783847063707032 +main.escalarMul.segments[0].windows[3].mux.c[0][6], main.escalarMul.segments[0].windows[3].adr7.out[0], main.escalarMul.segments[0].windows[3].adr8.in2[0] --> 5297069280114215941466018531315294735164480818427143436591846832886001818941 +main.escalarMul.segments[0].windows[3].mux.c[1][1], main.escalarMul.segments[0].windows[3].dbl2.out[1], main.escalarMul.segments[0].windows[3].adr3.in2[1] --> 12069334315299359519310824867320458833288024421338899205648192580364788233633 +main.escalarMul.segments[0].windows[3].mux.c[1][2], main.escalarMul.segments[0].windows[3].adr3.out[1], main.escalarMul.segments[0].windows[3].adr4.in2[1] --> 13683829105757717564602673701541397750142690407145040530659595025782671870994 +main.escalarMul.segments[0].windows[3].mux.c[1][3], main.escalarMul.segments[0].windows[3].adr4.out[1], main.escalarMul.segments[0].windows[3].adr5.in2[1] --> 1773682901200264765817615507956706981784152074714837833175465193835785126687 +main.escalarMul.segments[0].windows[3].mux.c[1][4], main.escalarMul.segments[0].windows[3].adr5.out[1], main.escalarMul.segments[0].windows[3].adr6.in2[1] --> 2506812559525985474964805530346827920063905742158707093133345884019347416452 +main.escalarMul.segments[0].windows[3].mux.c[1][5], main.escalarMul.segments[0].windows[3].adr6.out[1], main.escalarMul.segments[0].windows[3].adr7.in2[1] --> 15701239025866919076691531251800638649037065976481299260653570781852280375989 +main.escalarMul.segments[0].windows[3].mux.c[1][6], main.escalarMul.segments[0].windows[3].adr7.out[1], main.escalarMul.segments[0].windows[3].adr8.in2[1] --> 16176724882270979635618787223444095134029270502146587282425037389176267322600 +main.escalarMul.segments[0].windows[3].mux.a210[0] --> 19633904280060021700982768557581176566587036874244011024792954459484927390342 +main.escalarMul.segments[0].windows[3].mux.a210[1] --> 5580468653233357608876183326297677392386016846624143933266052960270628866963 +main.escalarMul.segments[0].windows[3].mux.a21[0] --> 949170972270129971506371651697832523094299799515209854705727081181712162187 +main.escalarMul.segments[0].windows[3].mux.a21[1] --> 2884339823765440289631194527142707782792412358547252833711313987787180742323 +main.escalarMul.segments[0].windows[3].mux.a20[0] --> 20882938977830267412459647319180710032849824828712971181067226318361994157827 +main.escalarMul.segments[0].windows[3].mux.a20[1] --> 4023348757819737775995787389720190214654873818688106136951249825881077433073 +main.escalarMul.segments[0].windows[3].mux.a2[0] --> 14066188293936864643446410201388136429076274844791661004976456549904210101449 +main.escalarMul.segments[0].windows[3].mux.a2[1] --> 21496798824587097003631324740017264689642532136870328261752332562182223204900 +main.escalarMul.segments[0].windows[3].mux.a10[0] --> 7661531571893952614656686291739742597249363843089350217408445720519074585665 +main.escalarMul.segments[0].windows[3].mux.a10[1] --> 807018958760626597730409219938963805871539652351345615645099282677066224846 +main.escalarMul.segments[0].windows[3].mux.a1[0] --> 18738871876090648504102801464260447105478217042844570878578991730637563642438 +main.escalarMul.segments[0].windows[3].mux.a1[1] --> 10785572498979553871022787165954559431172952401440627355580377517369739163825 +main.escalarMul.segments[0].windows[3].mux.a0[0] --> 1339635601452898337788888111389441078091772884064066109128133444418343534889 +main.escalarMul.segments[0].windows[3].mux.a0[1] --> 9171077708521195825730938331733620514318286415634486030568975071951855526464 +main.escalarMul.segments[0].windows[3].mux.s10 --> 1 +main.escalarMul.segments[0].windows[3].dbl2.lamda --> 3042840549810126278165410225659407456625510649079633004142740625436171656896 +main.escalarMul.segments[0].windows[3].dbl2.x1_2 --> 3584068602032412199912223761848461913391956270804008791756125280784935428918 +main.escalarMul.segments[0].windows[3].adr3.lamda --> 17342328254099522793000994259512038361473719984258830140549204179139473500532 +main.escalarMul.segments[0].windows[3].adr4.lamda --> 20148504510845725722343459201875236943827995171341920427070608352757334501099 +main.escalarMul.segments[0].windows[3].adr5.lamda --> 9522041917422229438346127675403505098917982192219817369788181401102946996335 +main.escalarMul.segments[0].windows[3].adr6.lamda --> 4705471801894432618654381981341918521086847443182077868462031064469948859401 +main.escalarMul.segments[0].windows[3].adr7.lamda --> 20110802470658322195634455990945701777956552107416780608369606288748963181687 +main.escalarMul.segments[0].windows[3].adr8.lamda --> 3022783346683428308203797279243776392246793745746964985534538252869257326878 +main.escalarMul.segments[0].adders[2].out[0], main.escalarMul.segments[0].adders[3].in1[0] --> 20373959748143059380046419895052696208912717633146275671284490625317158529666 +main.escalarMul.segments[0].adders[2].out[1], main.escalarMul.segments[0].adders[3].in1[1] --> 11223574582611405572421687441200058237175579272075821722896317593825906848797 +main.escalarMul.segments[0].adders[2].lamda --> 14707198052646587713680768173725443079447662197370612805290665140324433059610 +main.escalarMul.segments[0].cadders[2].out[0], main.escalarMul.segments[0].cadders[3].in1[0] --> 2616155761104768063495616700361492067072992624137050096300467821286359222166 +main.escalarMul.segments[0].cadders[2].out[1], main.escalarMul.segments[0].cadders[3].in1[1] --> 19668036185048636057990230703634060861874563033452131058483650925593618048448 +main.escalarMul.segments[0].cadders[2].lamda --> 17668230741306327897060441797358076581540454808825150364709091195463617813771 +main.escalarMul.segments[0].windows[4].out[0], main.escalarMul.segments[0].windows[4].mux.out[0], main.escalarMul.segments[0].adders[3].in2[0] --> 19721121710311977519885668201945667460736088896087646718466749616561713417610 +main.escalarMul.segments[0].windows[4].out[1], main.escalarMul.segments[0].windows[4].mux.out[1], main.escalarMul.segments[0].adders[3].in2[1] --> 3413772764889162021436261269710747345242920374136598583479885217678247939096 +main.escalarMul.segments[0].windows[4].out8[0], main.escalarMul.segments[0].windows[4].mux.c[0][7], main.escalarMul.segments[0].windows[4].adr8.out[0], main.escalarMul.segments[0].windows[5].base[0], main.escalarMul.segments[0].windows[5].mux.c[0][0], main.escalarMul.segments[0].windows[5].mux.a[0], main.escalarMul.segments[0].windows[5].dbl2.in[0], main.escalarMul.segments[0].windows[5].adr3.in1[0], main.escalarMul.segments[0].windows[5].adr4.in1[0], main.escalarMul.segments[0].windows[5].adr5.in1[0], main.escalarMul.segments[0].windows[5].adr6.in1[0], main.escalarMul.segments[0].windows[5].adr7.in1[0], main.escalarMul.segments[0].windows[5].adr8.in1[0], main.escalarMul.segments[0].cadders[4].in2[0] --> 5484326841734443959383515997913353690895499487603719098531690084252517838939 +main.escalarMul.segments[0].windows[4].out8[1], main.escalarMul.segments[0].windows[4].mux.c[1][7], main.escalarMul.segments[0].windows[4].adr8.out[1], main.escalarMul.segments[0].windows[5].base[1], main.escalarMul.segments[0].windows[5].mux.c[1][0], main.escalarMul.segments[0].windows[5].mux.a[1], main.escalarMul.segments[0].windows[5].dbl2.in[1], main.escalarMul.segments[0].windows[5].adr3.in1[1], main.escalarMul.segments[0].windows[5].adr4.in1[1], main.escalarMul.segments[0].windows[5].adr5.in1[1], main.escalarMul.segments[0].windows[5].adr6.in1[1], main.escalarMul.segments[0].windows[5].adr7.in1[1], main.escalarMul.segments[0].windows[5].adr8.in1[1], main.escalarMul.segments[0].cadders[4].in2[1] --> 15609275906920046450222566051450122497449180538701208881289372607429118279703 +main.escalarMul.segments[0].windows[4].mux.c[0][1], main.escalarMul.segments[0].windows[4].dbl2.out[0], main.escalarMul.segments[0].windows[4].adr3.in2[0] --> 19721121710311977519885668201945667460736088896087646718466749616561713417610 +main.escalarMul.segments[0].windows[4].mux.c[0][2], main.escalarMul.segments[0].windows[4].adr3.out[0], main.escalarMul.segments[0].windows[4].adr4.in2[0] --> 18130903139229158766658941167872994283022343365393823615883548217096737787434 +main.escalarMul.segments[0].windows[4].mux.c[0][3], main.escalarMul.segments[0].windows[4].adr4.out[0], main.escalarMul.segments[0].windows[4].adr5.in2[0] --> 4271658177737985846153796301102892363284351455899699463272095410754494924589 +main.escalarMul.segments[0].windows[4].mux.c[0][4], main.escalarMul.segments[0].windows[4].adr5.out[0], main.escalarMul.segments[0].windows[4].adr6.in2[0] --> 4760026404505764872173612569908280932317392827669361348880669753901988928614 +main.escalarMul.segments[0].windows[4].mux.c[0][5], main.escalarMul.segments[0].windows[4].adr6.out[0], main.escalarMul.segments[0].windows[4].adr7.in2[0] --> 17880153360018219049182207568502314794393269058685364026742854652071237182511 +main.escalarMul.segments[0].windows[4].mux.c[0][6], main.escalarMul.segments[0].windows[4].adr7.out[0], main.escalarMul.segments[0].windows[4].adr8.in2[0] --> 15277200313642641268458813521392321728160029807887581027578012197278445231439 +main.escalarMul.segments[0].windows[4].mux.c[1][1], main.escalarMul.segments[0].windows[4].dbl2.out[1], main.escalarMul.segments[0].windows[4].adr3.in2[1] --> 3413772764889162021436261269710747345242920374136598583479885217678247939096 +main.escalarMul.segments[0].windows[4].mux.c[1][2], main.escalarMul.segments[0].windows[4].adr3.out[1], main.escalarMul.segments[0].windows[4].adr4.in2[1] --> 15162138220157868628336714438156633857201586472211589129577547542558294930493 +main.escalarMul.segments[0].windows[4].mux.c[1][3], main.escalarMul.segments[0].windows[4].adr4.out[1], main.escalarMul.segments[0].windows[4].adr5.in2[1] --> 18755738518452404872380958400145540771739092198188002761503696672935184721074 +main.escalarMul.segments[0].windows[4].mux.c[1][4], main.escalarMul.segments[0].windows[4].adr5.out[1], main.escalarMul.segments[0].windows[4].adr6.in2[1] --> 20535805266511566176569726092919374835859481748352370861743347582925630064395 +main.escalarMul.segments[0].windows[4].mux.c[1][5], main.escalarMul.segments[0].windows[4].adr6.out[1], main.escalarMul.segments[0].windows[4].adr7.in2[1] --> 17273197745308075685060651937584013811526808287469240636942603780306809225262 +main.escalarMul.segments[0].windows[4].mux.c[1][6], main.escalarMul.segments[0].windows[4].adr7.out[1], main.escalarMul.segments[0].windows[4].adr8.in2[1] --> 19719609636456306227341534019935008431064985155469717316344947984534298016056 +main.escalarMul.segments[0].windows[4].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[4].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[4].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[4].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[4].mux.a20[0] --> 4437599212873282219984124117340181234185537782633829240987633684126259332717 +main.escalarMul.segments[0].windows[4].mux.a20[1] --> 7194015802673969708760364320831163603136029000008905846877581323084018100100 +main.escalarMul.segments[0].windows[4].mux.a2[0] --> 15609675308672234531558820994473741188020006780379922410986675537959072927801 +main.escalarMul.segments[0].windows[4].mux.a2[1] --> 6665409177744943954864026347042102863147858913323736206585137239544543186066 +main.escalarMul.segments[0].windows[4].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[4].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[4].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[4].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[4].mux.a0[0] --> 8682527742639171957024470881253852627890338448382173436874551214042988921180 +main.escalarMul.segments[0].windows[4].mux.a0[1] --> 11431619547961815021976967269090750461079661939523998272019879060872969556384 +main.escalarMul.segments[0].windows[4].mux.s10 --> 0 +main.escalarMul.segments[0].windows[4].dbl2.lamda --> 3745958197199831177875025557676482312011256677389220879424850960544375817938 +main.escalarMul.segments[0].windows[4].dbl2.x1_2 --> 19499009104575355819624721958352371276594290364804976097554190224424145935249 +main.escalarMul.segments[0].windows[4].adr3.lamda --> 4303938312336535331754996077157867951711338946614282806062661146837608114341 +main.escalarMul.segments[0].windows[4].adr4.lamda --> 19691660558670838746440014553381597602218961111342002964282371730169918988192 +main.escalarMul.segments[0].windows[4].adr5.lamda --> 8648594145761942948290280519387003877151119471591236777578452367497754867501 +main.escalarMul.segments[0].windows[4].adr6.lamda --> 7487295267773713914759831182429969086368482595276946675852279443450594772966 +main.escalarMul.segments[0].windows[4].adr7.lamda --> 12568946588462082043887462949801010153196621320312873579107646392321276233287 +main.escalarMul.segments[0].windows[4].adr8.lamda --> 648320371389607244741527048839917010498768718049397382057182604308320104155 +main.escalarMul.segments[0].adders[3].out[0], main.escalarMul.segments[0].adders[4].in1[0] --> 12748861554173080631473232884296175196081949416314537975661916973812458004602 +main.escalarMul.segments[0].adders[3].out[1], main.escalarMul.segments[0].adders[4].in1[1] --> 7748822095230642697256058444647759177572069463343447036196052414804975905274 +main.escalarMul.segments[0].adders[3].lamda --> 14845810920067373041175150749122987460111300402005956818704283603234632201347 +main.escalarMul.segments[0].cadders[3].out[0], main.escalarMul.segments[0].cadders[4].in1[0] --> 784033995830690628889514540083748118741511622198293594196143371369889578898 +main.escalarMul.segments[0].cadders[3].out[1], main.escalarMul.segments[0].cadders[4].in1[1] --> 13874804090002745232801944971824092522534068249276553853128552076486547421089 +main.escalarMul.segments[0].cadders[3].lamda --> 13219213807025747793621960552383435683510834791714888999979778070533395570156 +main.escalarMul.segments[0].windows[5].out[0], main.escalarMul.segments[0].windows[5].mux.out[0], main.escalarMul.segments[0].adders[4].in2[0] --> 10289825240049117415605899967108914447415011599688154785197620999028320665614 +main.escalarMul.segments[0].windows[5].out[1], main.escalarMul.segments[0].windows[5].mux.out[1], main.escalarMul.segments[0].adders[4].in2[1] --> 15307177635895100771875746514058268194948239227660652960752046557586780506094 +main.escalarMul.segments[0].windows[5].out8[0], main.escalarMul.segments[0].windows[5].mux.c[0][7], main.escalarMul.segments[0].windows[5].adr8.out[0], main.escalarMul.segments[0].windows[6].base[0], main.escalarMul.segments[0].windows[6].mux.c[0][0], main.escalarMul.segments[0].windows[6].mux.a[0], main.escalarMul.segments[0].windows[6].dbl2.in[0], main.escalarMul.segments[0].windows[6].adr3.in1[0], main.escalarMul.segments[0].windows[6].adr4.in1[0], main.escalarMul.segments[0].windows[6].adr5.in1[0], main.escalarMul.segments[0].windows[6].adr6.in1[0], main.escalarMul.segments[0].windows[6].adr7.in1[0], main.escalarMul.segments[0].windows[6].adr8.in1[0], main.escalarMul.segments[0].cadders[5].in2[0] --> 370130961661333071757937009203561526473631876177096225002721387207617859008 +main.escalarMul.segments[0].windows[5].out8[1], main.escalarMul.segments[0].windows[5].mux.c[1][7], main.escalarMul.segments[0].windows[5].adr8.out[1], main.escalarMul.segments[0].windows[6].base[1], main.escalarMul.segments[0].windows[6].mux.c[1][0], main.escalarMul.segments[0].windows[6].mux.a[1], main.escalarMul.segments[0].windows[6].dbl2.in[1], main.escalarMul.segments[0].windows[6].adr3.in1[1], main.escalarMul.segments[0].windows[6].adr4.in1[1], main.escalarMul.segments[0].windows[6].adr5.in1[1], main.escalarMul.segments[0].windows[6].adr6.in1[1], main.escalarMul.segments[0].windows[6].adr7.in1[1], main.escalarMul.segments[0].windows[6].adr8.in1[1], main.escalarMul.segments[0].cadders[5].in2[1] --> 561598995534078505252821686954725604854198105302742988558873425330326290023 +main.escalarMul.segments[0].windows[5].mux.c[0][1], main.escalarMul.segments[0].windows[5].dbl2.out[0], main.escalarMul.segments[0].windows[5].adr3.in2[0] --> 18260342925115729804948158620742736982177102332147290158388584929183233685168 +main.escalarMul.segments[0].windows[5].mux.c[0][2], main.escalarMul.segments[0].windows[5].adr3.out[0], main.escalarMul.segments[0].windows[5].adr4.in2[0] --> 17237764782529176186729831378219451006933407452104329216302523079431548904721 +main.escalarMul.segments[0].windows[5].mux.c[0][3], main.escalarMul.segments[0].windows[5].adr4.out[0], main.escalarMul.segments[0].windows[5].adr5.in2[0] --> 9443956502751841470198420262109781640038360960539391139226320104653397000053 +main.escalarMul.segments[0].windows[5].mux.c[0][4], main.escalarMul.segments[0].windows[5].adr5.out[0], main.escalarMul.segments[0].windows[5].adr6.in2[0] --> 10289825240049117415605899967108914447415011599688154785197620999028320665614 +main.escalarMul.segments[0].windows[5].mux.c[0][5], main.escalarMul.segments[0].windows[5].adr6.out[0], main.escalarMul.segments[0].windows[5].adr7.in2[0] --> 17861154256889100857670117876491611970371042625993700214562350187370399194109 +main.escalarMul.segments[0].windows[5].mux.c[0][6], main.escalarMul.segments[0].windows[5].adr7.out[0], main.escalarMul.segments[0].windows[5].adr8.in2[0] --> 10140255933088374766550768867608475831602204075956950083799542344002090913294 +main.escalarMul.segments[0].windows[5].mux.c[1][1], main.escalarMul.segments[0].windows[5].dbl2.out[1], main.escalarMul.segments[0].windows[5].adr3.in2[1] --> 10634503544238877539154572672740574976125008702010471410096952134869947235648 +main.escalarMul.segments[0].windows[5].mux.c[1][2], main.escalarMul.segments[0].windows[5].adr3.out[1], main.escalarMul.segments[0].windows[5].adr4.in2[1] --> 13672209348080420488421467868328174951600817870629284850622981905533049703329 +main.escalarMul.segments[0].windows[5].mux.c[1][3], main.escalarMul.segments[0].windows[5].adr4.out[1], main.escalarMul.segments[0].windows[5].adr5.in2[1] --> 20707133034261079722440403033391033108555389932911022278357595494125089150944 +main.escalarMul.segments[0].windows[5].mux.c[1][4], main.escalarMul.segments[0].windows[5].adr5.out[1], main.escalarMul.segments[0].windows[5].adr6.in2[1] --> 15307177635895100771875746514058268194948239227660652960752046557586780506094 +main.escalarMul.segments[0].windows[5].mux.c[1][5], main.escalarMul.segments[0].windows[5].adr6.out[1], main.escalarMul.segments[0].windows[5].adr7.in2[1] --> 21170219730329992680954219966489449843084649793389119629215954630687172134559 +main.escalarMul.segments[0].windows[5].mux.c[1][6], main.escalarMul.segments[0].windows[5].adr7.out[1], main.escalarMul.segments[0].windows[5].adr8.in2[1] --> 3642875459990607605998742180987348652391820368158869924312533347897623143369 +main.escalarMul.segments[0].windows[5].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[5].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[5].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[5].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[5].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[5].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[5].mux.a2[0] --> 4805498398314673456222383969195560756519512112084435686665930914775802826675 +main.escalarMul.segments[0].windows[5].mux.a2[1] --> 21586144600814329543899586207865420786047423089375478423160878136733470722008 +main.escalarMul.segments[0].windows[5].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[5].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[5].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[5].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[5].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[5].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[5].mux.s10 --> 0 +main.escalarMul.segments[0].windows[5].dbl2.lamda --> 7796049967931290714196465045037007865333166506660832896536874756139363961608 +main.escalarMul.segments[0].windows[5].dbl2.x1_2 --> 16493815412129182461821189276770736895791161069746130416509139306002826915493 +main.escalarMul.segments[0].windows[5].adr3.lamda --> 7216054461372079450944669784416977909082692192681152529694503961752982639541 +main.escalarMul.segments[0].windows[5].adr4.lamda --> 7209531343206152229312254526969861345641407090283791245657780156882096107626 +main.escalarMul.segments[0].windows[5].adr5.lamda --> 21005462281563409214241891330241433261784162420223216043912456916941949530406 +main.escalarMul.segments[0].windows[5].adr6.lamda --> 6833909167024810142642919182650183742695774332384130115772610674729479097857 +main.escalarMul.segments[0].windows[5].adr7.lamda --> 4860461996548791379569116195652473336239125523613476005060248279589156033413 +main.escalarMul.segments[0].windows[5].adr8.lamda --> 2177650649200974448179983042716905416093928040537434208169726512157336928731 +main.escalarMul.segments[0].adders[4].out[0], main.escalarMul.segments[0].adders[5].in1[0] --> 2310729837647641068442293059198044085119279776329561868798410318258731277020 +main.escalarMul.segments[0].adders[4].out[1], main.escalarMul.segments[0].adders[5].in1[1] --> 7118696513502166913972762480144600056270048764891657169897606044787787644961 +main.escalarMul.segments[0].adders[4].lamda --> 13698175013073138777901711002242672002686393704592941875417117433226091104424 +main.escalarMul.segments[0].cadders[4].out[0], main.escalarMul.segments[0].cadders[5].in1[0] --> 4016200588553262970460988153875526632411950424803748018033500234508788497329 +main.escalarMul.segments[0].cadders[4].out[1], main.escalarMul.segments[0].cadders[5].in1[1] --> 21346597336107962793977715714828890132982377527885926450972900833352544451645 +main.escalarMul.segments[0].cadders[4].lamda --> 3152226222895643472318898791289133160139667481073038399089230087580608655168 +main.escalarMul.segments[0].windows[6].out[0], main.escalarMul.segments[0].windows[6].mux.out[0], main.escalarMul.segments[0].adders[5].in2[0] --> 370130961661333071757937009203561526473631876177096225002721387207617859008 +main.escalarMul.segments[0].windows[6].out[1], main.escalarMul.segments[0].windows[6].mux.out[1], main.escalarMul.segments[0].adders[5].in2[1] --> 561598995534078505252821686954725604854198105302742988558873425330326290023 +main.escalarMul.segments[0].windows[6].out8[0], main.escalarMul.segments[0].windows[6].mux.c[0][7], main.escalarMul.segments[0].windows[6].adr8.out[0], main.escalarMul.segments[0].windows[7].base[0], main.escalarMul.segments[0].windows[7].mux.c[0][0], main.escalarMul.segments[0].windows[7].mux.a[0], main.escalarMul.segments[0].windows[7].dbl2.in[0], main.escalarMul.segments[0].windows[7].adr3.in1[0], main.escalarMul.segments[0].windows[7].adr4.in1[0], main.escalarMul.segments[0].windows[7].adr5.in1[0], main.escalarMul.segments[0].windows[7].adr6.in1[0], main.escalarMul.segments[0].windows[7].adr7.in1[0], main.escalarMul.segments[0].windows[7].adr8.in1[0], main.escalarMul.segments[0].cadders[6].in2[0] --> 9060004846946458620091457827736586245641627296387384272572578610497325592472 +main.escalarMul.segments[0].windows[6].out8[1], main.escalarMul.segments[0].windows[6].mux.c[1][7], main.escalarMul.segments[0].windows[6].adr8.out[1], main.escalarMul.segments[0].windows[7].base[1], main.escalarMul.segments[0].windows[7].mux.c[1][0], main.escalarMul.segments[0].windows[7].mux.a[1], main.escalarMul.segments[0].windows[7].dbl2.in[1], main.escalarMul.segments[0].windows[7].adr3.in1[1], main.escalarMul.segments[0].windows[7].adr4.in1[1], main.escalarMul.segments[0].windows[7].adr5.in1[1], main.escalarMul.segments[0].windows[7].adr6.in1[1], main.escalarMul.segments[0].windows[7].adr7.in1[1], main.escalarMul.segments[0].windows[7].adr8.in1[1], main.escalarMul.segments[0].cadders[6].in2[1] --> 8380414369008291737308066555763863223999449983566567112730769161152802811074 +main.escalarMul.segments[0].windows[6].mux.c[0][1], main.escalarMul.segments[0].windows[6].dbl2.out[0], main.escalarMul.segments[0].windows[6].adr3.in2[0] --> 9614352847845319654363617226171149065262703681476629928782673854739857887665 +main.escalarMul.segments[0].windows[6].mux.c[0][2], main.escalarMul.segments[0].windows[6].adr3.out[0], main.escalarMul.segments[0].windows[6].adr4.in2[0] --> 7265814122816545441340895421149140474602709567080784342426552509070586473709 +main.escalarMul.segments[0].windows[6].mux.c[0][3], main.escalarMul.segments[0].windows[6].adr4.out[0], main.escalarMul.segments[0].windows[6].adr5.in2[0] --> 17385531048539796062462254545666792508279418692794228415862190803751146751204 +main.escalarMul.segments[0].windows[6].mux.c[0][4], main.escalarMul.segments[0].windows[6].adr5.out[0], main.escalarMul.segments[0].windows[6].adr6.in2[0] --> 5718735360310121146058368327885466157408316267615753518504955927265751230370 +main.escalarMul.segments[0].windows[6].mux.c[0][5], main.escalarMul.segments[0].windows[6].adr6.out[0], main.escalarMul.segments[0].windows[6].adr7.in2[0] --> 10456883947187942161744614123799395531894711065599640865005342185471065390451 +main.escalarMul.segments[0].windows[6].mux.c[0][6], main.escalarMul.segments[0].windows[6].adr7.out[0], main.escalarMul.segments[0].windows[6].adr8.in2[0] --> 18345437253504010522955804900344686367328747404867598601955310713526857913976 +main.escalarMul.segments[0].windows[6].mux.c[1][1], main.escalarMul.segments[0].windows[6].dbl2.out[1], main.escalarMul.segments[0].windows[6].adr3.in2[1] --> 13211053825761116124157830750765249994981883341772004538077075406224594878256 +main.escalarMul.segments[0].windows[6].mux.c[1][2], main.escalarMul.segments[0].windows[6].adr3.out[1], main.escalarMul.segments[0].windows[6].adr4.in2[1] --> 19788421289228116121149869067139366687513501703311121441577848285068371900674 +main.escalarMul.segments[0].windows[6].mux.c[1][3], main.escalarMul.segments[0].windows[6].adr4.out[1], main.escalarMul.segments[0].windows[6].adr5.in2[1] --> 11287212004066601955308980800770064047900866610357709277972710893017916558683 +main.escalarMul.segments[0].windows[6].mux.c[1][4], main.escalarMul.segments[0].windows[6].adr5.out[1], main.escalarMul.segments[0].windows[6].adr6.in2[1] --> 13737671638698218879207036009957459843764984997635722875470108027052076597570 +main.escalarMul.segments[0].windows[6].mux.c[1][5], main.escalarMul.segments[0].windows[6].adr6.out[1], main.escalarMul.segments[0].windows[6].adr7.in2[1] --> 4670965991323468761759384245784625855015565834443592873616416277836534528893 +main.escalarMul.segments[0].windows[6].mux.c[1][6], main.escalarMul.segments[0].windows[6].adr7.out[1], main.escalarMul.segments[0].windows[6].adr8.in2[1] --> 21378331019589421323596306577629760113026475782959570122135407146400047360869 +main.escalarMul.segments[0].windows[6].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[6].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[6].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[6].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[6].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[6].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[6].mux.a2[0] --> 5348604398648788074300431318681904630934684391438657293502234540058133371362 +main.escalarMul.segments[0].windows[6].mux.a2[1] --> 13176072643164140373954214323002734238910786892332979886911234601721750307547 +main.escalarMul.segments[0].windows[6].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[6].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[6].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[6].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[6].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[6].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[6].mux.s10 --> 0 +main.escalarMul.segments[0].windows[6].dbl2.lamda --> 5835180504501286055897408074613274342125532616892881180647295644329731671752 +main.escalarMul.segments[0].windows[6].dbl2.x1_2 --> 4676196088990808167127946397824831441051298895592333313517097918476433454455 +main.escalarMul.segments[0].windows[6].adr3.lamda --> 1800358916193466184880795297101048279491624458757489615792990088702987994607 +main.escalarMul.segments[0].windows[6].adr4.lamda --> 6849037865553951078448609637521309713592532229117171268218398598094764219790 +main.escalarMul.segments[0].windows[6].adr5.lamda --> 16755514046688424791578150629704409856025169944019466087254280778028337033320 +main.escalarMul.segments[0].windows[6].adr6.lamda --> 14806636358515309179144313019480331580206580153486254258057620488611247045229 +main.escalarMul.segments[0].windows[6].adr7.lamda --> 5524731439812614303720467124172383535776646386062470376341535434478771995291 +main.escalarMul.segments[0].windows[6].adr8.lamda --> 9655933253118620339263665166093492143732558311033886374022562708986994850963 +main.escalarMul.segments[0].adders[5].out[0], main.escalarMul.segments[0].adders[6].in1[0] --> 11066391264800088544137300373553794897617460598573947824993304050863063899758 +main.escalarMul.segments[0].adders[5].out[1], main.escalarMul.segments[0].adders[6].in1[1] --> 7499786491595045760330342989598541209326342267859549225055474244451600123544 +main.escalarMul.segments[0].adders[5].lamda --> 18098447454268226118474181635192684069508510506770862799659665925982589246002 +main.escalarMul.segments[0].cadders[5].out[0], main.escalarMul.segments[0].cadders[6].in1[0] --> 17905474197696744246986018658461719764751085688451651552987282143847411622154 +main.escalarMul.segments[0].cadders[5].out[1], main.escalarMul.segments[0].cadders[6].in1[1] --> 14997087531575827303185177611107639250980505993133810298981447205983958780890 +main.escalarMul.segments[0].cadders[5].lamda --> 11487924418348074342301455542610978853876741889306012718475038309875724906886 +main.escalarMul.segments[0].windows[7].out[0], main.escalarMul.segments[0].windows[7].mux.out[0], main.escalarMul.segments[0].adders[6].in2[0] --> 13011793945771111429902188677152400882168867561611219623941749150201607128926 +main.escalarMul.segments[0].windows[7].out[1], main.escalarMul.segments[0].windows[7].mux.out[1], main.escalarMul.segments[0].adders[6].in2[1] --> 15455506252966536434689337540773960153629653283086091108950372333791976633465 +main.escalarMul.segments[0].windows[7].out8[0], main.escalarMul.segments[0].windows[7].mux.c[0][7], main.escalarMul.segments[0].windows[7].adr8.out[0], main.escalarMul.segments[0].windows[8].base[0], main.escalarMul.segments[0].windows[8].mux.c[0][0], main.escalarMul.segments[0].windows[8].mux.a[0], main.escalarMul.segments[0].windows[8].dbl2.in[0], main.escalarMul.segments[0].windows[8].adr3.in1[0], main.escalarMul.segments[0].windows[8].adr4.in1[0], main.escalarMul.segments[0].windows[8].adr5.in1[0], main.escalarMul.segments[0].windows[8].adr6.in1[0], main.escalarMul.segments[0].windows[8].adr7.in1[0], main.escalarMul.segments[0].windows[8].adr8.in1[0], main.escalarMul.segments[0].cadders[7].in2[0] --> 8076123625518994596925567063959973169571465165085519128714173557980674064639 +main.escalarMul.segments[0].windows[7].out8[1], main.escalarMul.segments[0].windows[7].mux.c[1][7], main.escalarMul.segments[0].windows[7].adr8.out[1], main.escalarMul.segments[0].windows[8].base[1], main.escalarMul.segments[0].windows[8].mux.c[1][0], main.escalarMul.segments[0].windows[8].mux.a[1], main.escalarMul.segments[0].windows[8].dbl2.in[1], main.escalarMul.segments[0].windows[8].adr3.in1[1], main.escalarMul.segments[0].windows[8].adr4.in1[1], main.escalarMul.segments[0].windows[8].adr5.in1[1], main.escalarMul.segments[0].windows[8].adr6.in1[1], main.escalarMul.segments[0].windows[8].adr7.in1[1], main.escalarMul.segments[0].windows[8].adr8.in1[1], main.escalarMul.segments[0].cadders[7].in2[1] --> 16838692183342266712991313011081491318367938615334193586591024375802713934244 +main.escalarMul.segments[0].windows[7].mux.c[0][1], main.escalarMul.segments[0].windows[7].dbl2.out[0], main.escalarMul.segments[0].windows[7].adr3.in2[0] --> 20718973667391090188123157092288407072139736780297697987269744278946288656292 +main.escalarMul.segments[0].windows[7].mux.c[0][2], main.escalarMul.segments[0].windows[7].adr3.out[0], main.escalarMul.segments[0].windows[7].adr4.in2[0] --> 20051052283717679977475363552004069358515488398257545668220822077432684061570 +main.escalarMul.segments[0].windows[7].mux.c[0][3], main.escalarMul.segments[0].windows[7].adr4.out[0], main.escalarMul.segments[0].windows[7].adr5.in2[0] --> 20781586283142043868498749301083750662828276722397011689139722683877382797349 +main.escalarMul.segments[0].windows[7].mux.c[0][4], main.escalarMul.segments[0].windows[7].adr5.out[0], main.escalarMul.segments[0].windows[7].adr6.in2[0] --> 6772896441865001760800884137074801834380390106156834779382066270254115750420 +main.escalarMul.segments[0].windows[7].mux.c[0][5], main.escalarMul.segments[0].windows[7].adr6.out[0], main.escalarMul.segments[0].windows[7].adr7.in2[0] --> 13011793945771111429902188677152400882168867561611219623941749150201607128926 +main.escalarMul.segments[0].windows[7].mux.c[0][6], main.escalarMul.segments[0].windows[7].adr7.out[0], main.escalarMul.segments[0].windows[7].adr8.in2[0] --> 1611833369923877889662683233131034152336963315642859351439809937857183352485 +main.escalarMul.segments[0].windows[7].mux.c[1][1], main.escalarMul.segments[0].windows[7].dbl2.out[1], main.escalarMul.segments[0].windows[7].adr3.in2[1] --> 233450745784557990477066352694647574742815573569186681200259099603637166411 +main.escalarMul.segments[0].windows[7].mux.c[1][2], main.escalarMul.segments[0].windows[7].adr3.out[1], main.escalarMul.segments[0].windows[7].adr4.in2[1] --> 9868028471905565181430933340053314075116180726857159947583021712002964560040 +main.escalarMul.segments[0].windows[7].mux.c[1][3], main.escalarMul.segments[0].windows[7].adr4.out[1], main.escalarMul.segments[0].windows[7].adr5.in2[1] --> 10687579391226678518685376433483688005423517295965300254946332144768087745000 +main.escalarMul.segments[0].windows[7].mux.c[1][4], main.escalarMul.segments[0].windows[7].adr5.out[1], main.escalarMul.segments[0].windows[7].adr6.in2[1] --> 9442539289706633159010021174276979633029779423066069911808357697915666368644 +main.escalarMul.segments[0].windows[7].mux.c[1][5], main.escalarMul.segments[0].windows[7].adr6.out[1], main.escalarMul.segments[0].windows[7].adr7.in2[1] --> 15455506252966536434689337540773960153629653283086091108950372333791976633465 +main.escalarMul.segments[0].windows[7].mux.c[1][6], main.escalarMul.segments[0].windows[7].adr7.out[1], main.escalarMul.segments[0].windows[7].adr8.in2[1] --> 16808938181869489575510988176250250549682753893220247837549993914732831060325 +main.escalarMul.segments[0].windows[7].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[7].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[7].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[7].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[7].mux.a20[0] --> 16468171555300753323316011020783053309838732371960105473560721398074336810303 +main.escalarMul.segments[0].windows[7].mux.a20[1] --> 14159930586483637022510316569566196169856508270017401628672524697425475909484 +main.escalarMul.segments[0].windows[7].mux.a2[0] --> 19601134466757818362955832054595490677287127210185484850507691846332598653565 +main.escalarMul.segments[0].windows[7].mux.a2[1] --> 1062124920698341421701954618513116409030329439499502799077588536762863557570 +main.escalarMul.segments[0].windows[7].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[7].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[7].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[7].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[7].mux.a0[0] --> 11658968820444631568031699264551820826498109483910313714697165668448963063820 +main.escalarMul.segments[0].windows[7].mux.a0[1] --> 13741279248615541475415405542188059439291729990418653912167694125026642850954 +main.escalarMul.segments[0].windows[7].mux.s10 --> 0 +main.escalarMul.segments[0].windows[7].dbl2.lamda --> 16652413767668933568875039827261650769812229272561943713440586430740526474136 +main.escalarMul.segments[0].windows[7].dbl2.x1_2 --> 4870485507860603807082636928107733680573303532182486392606229499443009367624 +main.escalarMul.segments[0].windows[7].adr3.lamda --> 16342230309691865734389448001273706437464209736291862775677272744044132777794 +main.escalarMul.segments[0].windows[7].adr4.lamda --> 20708890152758680624714597535606799033084250626402880675942756515791076024858 +main.escalarMul.segments[0].windows[7].adr5.lamda --> 3353055536431629067328780422213065552527020600877730258786704768688470010163 +main.escalarMul.segments[0].windows[7].adr6.lamda --> 21320402675037423173699314549008559408443063754976924107868276566695420455716 +main.escalarMul.segments[0].windows[7].adr7.lamda --> 14854621288067844040779061268649894915385910987201647850155658787944872726112 +main.escalarMul.segments[0].windows[7].adr8.lamda --> 8402996269565286083596171601748350657187847382920636905923375371741970656879 +main.escalarMul.segments[0].adders[6].out[0], main.escalarMul.segments[0].adders[7].in1[0] --> 10329988653106348748670920296942614061081061606837613315245573285665064533927 +main.escalarMul.segments[0].adders[6].out[1], main.escalarMul.segments[0].adders[7].in1[1] --> 10221210618942174500686819880137199842990313786001935302279276956957671939255 +main.escalarMul.segments[0].adders[6].lamda --> 20298642695081887210896370976279967642684278788668539797121079687856664797251 +main.escalarMul.segments[0].cadders[6].out[0], main.escalarMul.segments[0].cadders[7].in1[0] --> 1348000210378387430899321455907709720992355239441669671746805249155502151389 +main.escalarMul.segments[0].cadders[6].out[1], main.escalarMul.segments[0].cadders[7].in1[1] --> 806002112308659741763319851553010311303025280021452246971659052835873894405 +main.escalarMul.segments[0].cadders[6].lamda --> 20754423754528844043661985707848973862468219171031969306675042990746020474109 +main.escalarMul.segments[0].windows[8].out[0], main.escalarMul.segments[0].windows[8].mux.out[0], main.escalarMul.segments[0].adders[7].in2[0] --> 14418829006849200436660723821544335627563632882550906792531667995519115357919 +main.escalarMul.segments[0].windows[8].out[1], main.escalarMul.segments[0].windows[8].mux.out[1], main.escalarMul.segments[0].adders[7].in2[1] --> 19080812364095329940448413496388128882942495117998205191151428662614086798123 +main.escalarMul.segments[0].windows[8].out8[0], main.escalarMul.segments[0].windows[8].mux.c[0][7], main.escalarMul.segments[0].windows[8].adr8.out[0], main.escalarMul.segments[0].windows[9].base[0], main.escalarMul.segments[0].windows[9].mux.c[0][0], main.escalarMul.segments[0].windows[9].mux.a[0], main.escalarMul.segments[0].windows[9].dbl2.in[0], main.escalarMul.segments[0].windows[9].adr3.in1[0], main.escalarMul.segments[0].windows[9].adr4.in1[0], main.escalarMul.segments[0].windows[9].adr5.in1[0], main.escalarMul.segments[0].windows[9].adr6.in1[0], main.escalarMul.segments[0].windows[9].adr7.in1[0], main.escalarMul.segments[0].windows[9].adr8.in1[0], main.escalarMul.segments[0].cadders[8].in2[0] --> 9615611563020690315120937015200331892175671617886277619130721762820576173407 +main.escalarMul.segments[0].windows[8].out8[1], main.escalarMul.segments[0].windows[8].mux.c[1][7], main.escalarMul.segments[0].windows[8].adr8.out[1], main.escalarMul.segments[0].windows[9].base[1], main.escalarMul.segments[0].windows[9].mux.c[1][0], main.escalarMul.segments[0].windows[9].mux.a[1], main.escalarMul.segments[0].windows[9].dbl2.in[1], main.escalarMul.segments[0].windows[9].adr3.in1[1], main.escalarMul.segments[0].windows[9].adr4.in1[1], main.escalarMul.segments[0].windows[9].adr5.in1[1], main.escalarMul.segments[0].windows[9].adr6.in1[1], main.escalarMul.segments[0].windows[9].adr7.in1[1], main.escalarMul.segments[0].windows[9].adr8.in1[1], main.escalarMul.segments[0].cadders[8].in2[1] --> 9971132064469083338883032470976714550388156526574557923400955368395903435927 +main.escalarMul.segments[0].windows[8].mux.c[0][1], main.escalarMul.segments[0].windows[8].dbl2.out[0], main.escalarMul.segments[0].windows[8].adr3.in2[0] --> 7730080162255221714698714325753544942240249268037429937836128628069246416426 +main.escalarMul.segments[0].windows[8].mux.c[0][2], main.escalarMul.segments[0].windows[8].adr3.out[0], main.escalarMul.segments[0].windows[8].adr4.in2[0] --> 7177020462961410302876764611691853943615079731690181316727474205734001809812 +main.escalarMul.segments[0].windows[8].mux.c[0][3], main.escalarMul.segments[0].windows[8].adr4.out[0], main.escalarMul.segments[0].windows[8].adr5.in2[0] --> 19793381592542528884402543279929804177520155254663472015098262185648341400415 +main.escalarMul.segments[0].windows[8].mux.c[0][4], main.escalarMul.segments[0].windows[8].adr5.out[0], main.escalarMul.segments[0].windows[8].adr6.in2[0] --> 4534682427997363965952617284254954473290338469503817829685911673637744547895 +main.escalarMul.segments[0].windows[8].mux.c[0][5], main.escalarMul.segments[0].windows[8].adr6.out[0], main.escalarMul.segments[0].windows[8].adr7.in2[0] --> 10977539815326018770986678012459331660817360684969250409747617437927589573150 +main.escalarMul.segments[0].windows[8].mux.c[0][6], main.escalarMul.segments[0].windows[8].adr7.out[0], main.escalarMul.segments[0].windows[8].adr8.in2[0] --> 14418829006849200436660723821544335627563632882550906792531667995519115357919 +main.escalarMul.segments[0].windows[8].mux.c[1][1], main.escalarMul.segments[0].windows[8].dbl2.out[1], main.escalarMul.segments[0].windows[8].adr3.in2[1] --> 6542781991669795825266924314347524688970678657874826846247727515374050800932 +main.escalarMul.segments[0].windows[8].mux.c[1][2], main.escalarMul.segments[0].windows[8].adr3.out[1], main.escalarMul.segments[0].windows[8].adr4.in2[1] --> 9073205619664892825875385017215136867886584374336577429580114928505509515292 +main.escalarMul.segments[0].windows[8].mux.c[1][3], main.escalarMul.segments[0].windows[8].adr4.out[1], main.escalarMul.segments[0].windows[8].adr5.in2[1] --> 18036691037095607387614196394267580753593746337060363135618779949844603692348 +main.escalarMul.segments[0].windows[8].mux.c[1][4], main.escalarMul.segments[0].windows[8].adr5.out[1], main.escalarMul.segments[0].windows[8].adr6.in2[1] --> 9387006165107848554037500013669052711600463034957167914445586271240618306740 +main.escalarMul.segments[0].windows[8].mux.c[1][5], main.escalarMul.segments[0].windows[8].adr6.out[1], main.escalarMul.segments[0].windows[8].adr7.in2[1] --> 16078617857975563201142248779861886944790255197247275499446161429623077209677 +main.escalarMul.segments[0].windows[8].mux.c[1][6], main.escalarMul.segments[0].windows[8].adr7.out[1], main.escalarMul.segments[0].windows[8].adr8.in2[1] --> 19080812364095329940448413496388128882942495117998205191151428662614086798123 +main.escalarMul.segments[0].windows[8].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[8].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[8].mux.a21[0] --> 10783249741409420764756908989557500380229679846442426774832455674128043064851 +main.escalarMul.segments[0].windows[8].mux.a21[1] --> 17459292762664855273526841476585430621823386324038653433716751838670672910335 +main.escalarMul.segments[0].windows[8].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[8].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[8].mux.a2[0] --> 18346801674317644591273455965552256392267237704834333044669942302232878978873 +main.escalarMul.segments[0].windows[8].mux.a2[1] --> 14436556853604857063292592747844836481780888820039008671552766082013712868113 +main.escalarMul.segments[0].windows[8].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[8].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[8].mux.a1[0] --> 20989139709281690928197603292989155862591978967020696531711504834329136240790 +main.escalarMul.segments[0].windows[8].mux.a1[1] --> 14122756308161901335130477751390920638067010159418418186687294739278604076665 +main.escalarMul.segments[0].windows[8].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[8].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[8].mux.s10 --> 0 +main.escalarMul.segments[0].windows[8].dbl2.lamda --> 10286748889268444977777841840538716205330056424753176545240659993566218675263 +main.escalarMul.segments[0].windows[8].dbl2.x1_2 --> 228563611559689235937779621623295415147228939924478880289778718956181816949 +main.escalarMul.segments[0].windows[8].adr3.lamda --> 12928974629881509507299346520292838392125508878543935604085624995915008158919 +main.escalarMul.segments[0].windows[8].adr4.lamda --> 1926787642202918700438546333906418223471334227111671593701235416120247788269 +main.escalarMul.segments[0].windows[8].adr5.lamda --> 3521045143493667217332941340279757090835610723007436472356411800281872297793 +main.escalarMul.segments[0].windows[8].adr6.lamda --> 18343881810969895723246346890799396513218096414808647874955416986351370527737 +main.escalarMul.segments[0].windows[8].adr7.lamda --> 18953936611874164155725548905871866841462117378038434085246516170688829533762 +main.escalarMul.segments[0].windows[8].adr8.lamda --> 12028322926556641825162216060550977568927091194278304586112357987390636858879 +main.escalarMul.segments[0].adders[7].out[0], main.escalarMul.segments[0].adders[8].in1[0] --> 1405363137739742442240398756152595251440741833858691976307946690721336528760 +main.escalarMul.segments[0].adders[7].out[1], main.escalarMul.segments[0].adders[8].in1[1] --> 802053368776145808378980192728324030531194480719754212231811200981856831325 +main.escalarMul.segments[0].adders[7].lamda --> 7171573791869018481624422258961230950400603797342443657917405168912529376460 +main.escalarMul.segments[0].cadders[7].out[0], main.escalarMul.segments[0].cadders[8].in1[0] --> 17370159055784381326625435287553084268247692572862129812052050153643437909869 +main.escalarMul.segments[0].cadders[7].out[1], main.escalarMul.segments[0].cadders[8].in1[1] --> 75923766668702910826327654449565023092784378524606208480070742769896873589 +main.escalarMul.segments[0].cadders[7].lamda --> 17973906379783289020596491729461285892776551751005076024383372118029848317254 +main.escalarMul.segments[0].windows[9].out[0], main.escalarMul.segments[0].windows[9].mux.out[0], main.escalarMul.segments[0].adders[8].in2[0] --> 19939677693361466211074703971166508585840594104056714540670179867702730253915 +main.escalarMul.segments[0].windows[9].out[1], main.escalarMul.segments[0].windows[9].mux.out[1], main.escalarMul.segments[0].adders[8].in2[1] --> 7276396619133291188670296718833586950979333364599345422796165570143630820245 +main.escalarMul.segments[0].windows[9].out8[0], main.escalarMul.segments[0].windows[9].mux.c[0][7], main.escalarMul.segments[0].windows[9].adr8.out[0], main.escalarMul.segments[0].windows[10].base[0], main.escalarMul.segments[0].windows[10].mux.c[0][0], main.escalarMul.segments[0].windows[10].mux.a[0], main.escalarMul.segments[0].windows[10].dbl2.in[0], main.escalarMul.segments[0].windows[10].adr3.in1[0], main.escalarMul.segments[0].windows[10].adr4.in1[0], main.escalarMul.segments[0].windows[10].adr5.in1[0], main.escalarMul.segments[0].windows[10].adr6.in1[0], main.escalarMul.segments[0].windows[10].adr7.in1[0], main.escalarMul.segments[0].windows[10].adr8.in1[0], main.escalarMul.segments[0].cadders[9].in2[0] --> 6700480953993456461838530438446656123209601472663025182534828800022074102789 +main.escalarMul.segments[0].windows[9].out8[1], main.escalarMul.segments[0].windows[9].mux.c[1][7], main.escalarMul.segments[0].windows[9].adr8.out[1], main.escalarMul.segments[0].windows[10].base[1], main.escalarMul.segments[0].windows[10].mux.c[1][0], main.escalarMul.segments[0].windows[10].mux.a[1], main.escalarMul.segments[0].windows[10].dbl2.in[1], main.escalarMul.segments[0].windows[10].adr3.in1[1], main.escalarMul.segments[0].windows[10].adr4.in1[1], main.escalarMul.segments[0].windows[10].adr5.in1[1], main.escalarMul.segments[0].windows[10].adr6.in1[1], main.escalarMul.segments[0].windows[10].adr7.in1[1], main.escalarMul.segments[0].windows[10].adr8.in1[1], main.escalarMul.segments[0].cadders[9].in2[1] --> 12191233482841477380946928599548263259120423582365682184422753208268219406927 +main.escalarMul.segments[0].windows[9].mux.c[0][1], main.escalarMul.segments[0].windows[9].dbl2.out[0], main.escalarMul.segments[0].windows[9].adr3.in2[0] --> 19703282241852182282128947347840241392667430327379461489612167288028636136911 +main.escalarMul.segments[0].windows[9].mux.c[0][2], main.escalarMul.segments[0].windows[9].adr3.out[0], main.escalarMul.segments[0].windows[9].adr4.in2[0] --> 2315467469957416860299035996068882587750745633952563472485961862656931517418 +main.escalarMul.segments[0].windows[9].mux.c[0][3], main.escalarMul.segments[0].windows[9].adr4.out[0], main.escalarMul.segments[0].windows[9].adr5.in2[0] --> 12411748496063060712834054141434555452543458597452820594523995854752097128898 +main.escalarMul.segments[0].windows[9].mux.c[0][4], main.escalarMul.segments[0].windows[9].adr5.out[0], main.escalarMul.segments[0].windows[9].adr6.in2[0] --> 9602220687135984356840448122215478742703327429442020686070127927705116607034 +main.escalarMul.segments[0].windows[9].mux.c[0][5], main.escalarMul.segments[0].windows[9].adr6.out[0], main.escalarMul.segments[0].windows[9].adr7.in2[0] --> 19939677693361466211074703971166508585840594104056714540670179867702730253915 +main.escalarMul.segments[0].windows[9].mux.c[0][6], main.escalarMul.segments[0].windows[9].adr7.out[0], main.escalarMul.segments[0].windows[9].adr8.in2[0] --> 4292549323248692642373282444187061385850093443928022489465714749015928083111 +main.escalarMul.segments[0].windows[9].mux.c[1][1], main.escalarMul.segments[0].windows[9].dbl2.out[1], main.escalarMul.segments[0].windows[9].adr3.in2[1] --> 10199704627409822952121430659576829729855170316007499229826051340547768718310 +main.escalarMul.segments[0].windows[9].mux.c[1][2], main.escalarMul.segments[0].windows[9].adr3.out[1], main.escalarMul.segments[0].windows[9].adr4.in2[1] --> 474667447035468648074157850139011020401263386017359764692911874404296902988 +main.escalarMul.segments[0].windows[9].mux.c[1][3], main.escalarMul.segments[0].windows[9].adr4.out[1], main.escalarMul.segments[0].windows[9].adr5.in2[1] --> 9496404021795942432768482897981391763467703444924161901681583959753308336946 +main.escalarMul.segments[0].windows[9].mux.c[1][4], main.escalarMul.segments[0].windows[9].adr5.out[1], main.escalarMul.segments[0].windows[9].adr6.in2[1] --> 16631269649880113172393254593910351097950732210365795211490130658415322041369 +main.escalarMul.segments[0].windows[9].mux.c[1][5], main.escalarMul.segments[0].windows[9].adr6.out[1], main.escalarMul.segments[0].windows[9].adr7.in2[1] --> 7276396619133291188670296718833586950979333364599345422796165570143630820245 +main.escalarMul.segments[0].windows[9].mux.c[1][6], main.escalarMul.segments[0].windows[9].adr7.out[1], main.escalarMul.segments[0].windows[9].adr8.in2[1] --> 17631172899200342582919673891518085574097662984749415478896551957450709674077 +main.escalarMul.segments[0].windows[9].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[9].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[9].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[9].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[9].mux.a20[0] --> 249786327393989887226245516311120342645507965121509984118606414789553683377 +main.escalarMul.segments[0].windows[9].mux.a20[1] --> 12304797278151713625285049681580395762109951765216643248579143126152251992110 +main.escalarMul.segments[0].windows[9].mux.a2[0] --> 21874851995954569263965916852272421939076020211971777410637610351460348929244 +main.escalarMul.segments[0].windows[9].mux.a2[1] --> 6660137585411029833510222122933636547562575683791237288089175290019418605442 +main.escalarMul.segments[0].windows[9].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[9].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[9].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[9].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[9].mux.a0[0] --> 10087670678831491967008010332639909500491758709493183870481445525208059963504 +main.escalarMul.segments[0].windows[9].mux.a0[1] --> 228572562940739613238398188600115179467013789432941306425095972151865282383 +main.escalarMul.segments[0].windows[9].mux.s10 --> 0 +main.escalarMul.segments[0].windows[9].dbl2.lamda --> 18160552281549429697512342651897160410637110102527603271961361271941074424025 +main.escalarMul.segments[0].windows[9].dbl2.x1_2 --> 20368508920383843552344074396618059885409267316871044808644658350285507193608 +main.escalarMul.segments[0].windows[9].adr3.lamda --> 10486088825849270885880497828074385576159777492276017754398567479865683054943 +main.escalarMul.segments[0].windows[9].adr4.lamda --> 7134951709904790561589824535275950219515547045301499651302927483718691297966 +main.escalarMul.segments[0].windows[9].adr5.lamda --> 20452463688581811752021314746205412817617722232039826511651609229999444195845 +main.escalarMul.segments[0].windows[9].adr6.lamda --> 10698939123173884642367625648070646304256363781751482978213133326055626494056 +main.escalarMul.segments[0].windows[9].adr7.lamda --> 3039762574148646354002637353555973314981030595023331569601702459634265437693 +main.escalarMul.segments[0].windows[9].adr8.lamda --> 4523156628050676365055438423738532182697860755683030259927281842657655767036 +main.escalarMul.segments[0].adders[8].out[0], main.escalarMul.segments[0].adders[9].in1[0] --> 15725702428444093303025394526099422166408624295290473259487504594836402379280 +main.escalarMul.segments[0].adders[8].out[1], main.escalarMul.segments[0].adders[9].in1[1] --> 14356274358278649814680002907324058267277422627390171893799685494191972001362 +main.escalarMul.segments[0].adders[8].lamda --> 18063094287248541119260721680397830699221698364667106085040490282445505915265 +main.escalarMul.segments[0].cadders[8].out[0], main.escalarMul.segments[0].cadders[9].in1[0] --> 11559844642868334431030724463542226974054480379789940787827345955781624393049 +main.escalarMul.segments[0].cadders[8].out[1], main.escalarMul.segments[0].cadders[9].in1[1] --> 21296148708888775311435555784603366262712413805487416448823001246178694802507 +main.escalarMul.segments[0].cadders[8].lamda --> 384065838387724922254343251349655118836710570149560279813634820020109001621 +main.escalarMul.segments[0].windows[10].out[0], main.escalarMul.segments[0].windows[10].mux.out[0], main.escalarMul.segments[0].adders[9].in2[0] --> 6562211770455475960622100710112788191437190613091739149947354503713494854642 +main.escalarMul.segments[0].windows[10].out[1], main.escalarMul.segments[0].windows[10].mux.out[1], main.escalarMul.segments[0].adders[9].in2[1] --> 16430332040761776658783447334199573640147125635923001791397278505514553571594 +main.escalarMul.segments[0].windows[10].out8[0], main.escalarMul.segments[0].windows[10].mux.c[0][7], main.escalarMul.segments[0].windows[10].adr8.out[0], main.escalarMul.segments[0].windows[11].base[0], main.escalarMul.segments[0].windows[11].mux.c[0][0], main.escalarMul.segments[0].windows[11].mux.a[0], main.escalarMul.segments[0].windows[11].dbl2.in[0], main.escalarMul.segments[0].windows[11].adr3.in1[0], main.escalarMul.segments[0].windows[11].adr4.in1[0], main.escalarMul.segments[0].windows[11].adr5.in1[0], main.escalarMul.segments[0].windows[11].adr6.in1[0], main.escalarMul.segments[0].windows[11].adr7.in1[0], main.escalarMul.segments[0].windows[11].adr8.in1[0], main.escalarMul.segments[0].cadders[10].in2[0] --> 4985944743620593094671779589781085107256358368420498139079956032303707924023 +main.escalarMul.segments[0].windows[10].out8[1], main.escalarMul.segments[0].windows[10].mux.c[1][7], main.escalarMul.segments[0].windows[10].adr8.out[1], main.escalarMul.segments[0].windows[11].base[1], main.escalarMul.segments[0].windows[11].mux.c[1][0], main.escalarMul.segments[0].windows[11].mux.a[1], main.escalarMul.segments[0].windows[11].dbl2.in[1], main.escalarMul.segments[0].windows[11].adr3.in1[1], main.escalarMul.segments[0].windows[11].adr4.in1[1], main.escalarMul.segments[0].windows[11].adr5.in1[1], main.escalarMul.segments[0].windows[11].adr6.in1[1], main.escalarMul.segments[0].windows[11].adr7.in1[1], main.escalarMul.segments[0].windows[11].adr8.in1[1], main.escalarMul.segments[0].cadders[10].in2[1] --> 13537526173722611188615694722781856871015821291477692605289747797907204948106 +main.escalarMul.segments[0].windows[10].mux.c[0][1], main.escalarMul.segments[0].windows[10].dbl2.out[0], main.escalarMul.segments[0].windows[10].adr3.in2[0] --> 6562211770455475960622100710112788191437190613091739149947354503713494854642 +main.escalarMul.segments[0].windows[10].mux.c[0][2], main.escalarMul.segments[0].windows[10].adr3.out[0], main.escalarMul.segments[0].windows[10].adr4.in2[0] --> 14210991785688367024332733467105527075562247444408893930717647605648918468785 +main.escalarMul.segments[0].windows[10].mux.c[0][3], main.escalarMul.segments[0].windows[10].adr4.out[0], main.escalarMul.segments[0].windows[10].adr5.in2[0] --> 19856779784181761707039529216075573819578930356712779521332170137091366645657 +main.escalarMul.segments[0].windows[10].mux.c[0][4], main.escalarMul.segments[0].windows[10].adr5.out[0], main.escalarMul.segments[0].windows[10].adr6.in2[0] --> 16486551187812184105260143598394457585653912556256891447490573855610566607204 +main.escalarMul.segments[0].windows[10].mux.c[0][5], main.escalarMul.segments[0].windows[10].adr6.out[0], main.escalarMul.segments[0].windows[10].adr7.in2[0] --> 14224452570176977099450568145453039251953311121439198785100423442451895831630 +main.escalarMul.segments[0].windows[10].mux.c[0][6], main.escalarMul.segments[0].windows[10].adr7.out[0], main.escalarMul.segments[0].windows[10].adr8.in2[0] --> 18004433574199237503714479038191978817503546051476461546775212555900672163095 +main.escalarMul.segments[0].windows[10].mux.c[1][1], main.escalarMul.segments[0].windows[10].dbl2.out[1], main.escalarMul.segments[0].windows[10].adr3.in2[1] --> 16430332040761776658783447334199573640147125635923001791397278505514553571594 +main.escalarMul.segments[0].windows[10].mux.c[1][2], main.escalarMul.segments[0].windows[10].adr3.out[1], main.escalarMul.segments[0].windows[10].adr4.in2[1] --> 2814428502581408925282108883998816820396314064904910581268625182421702643162 +main.escalarMul.segments[0].windows[10].mux.c[1][3], main.escalarMul.segments[0].windows[10].adr4.out[1], main.escalarMul.segments[0].windows[10].adr5.in2[1] --> 11638531843143154704279491336496664529611600169925928460050401280161908187873 +main.escalarMul.segments[0].windows[10].mux.c[1][4], main.escalarMul.segments[0].windows[10].adr5.out[1], main.escalarMul.segments[0].windows[10].adr6.in2[1] --> 17922476561468535991231802360280506255006565797307018699002439398447792335413 +main.escalarMul.segments[0].windows[10].mux.c[1][5], main.escalarMul.segments[0].windows[10].adr6.out[1], main.escalarMul.segments[0].windows[10].adr7.in2[1] --> 12388815820882049474209144875117535666083799100457142579389314221317132763042 +main.escalarMul.segments[0].windows[10].mux.c[1][6], main.escalarMul.segments[0].windows[10].adr7.out[1], main.escalarMul.segments[0].windows[10].adr8.in2[1] --> 8293904205496489357286585369596215565798224994087574510518811378674603570002 +main.escalarMul.segments[0].windows[10].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[10].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[10].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[10].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[10].mux.a20[0] --> 19764413437742048717653260020649724686620173825169627713895528069725716968190 +main.escalarMul.segments[0].windows[10].mux.a20[1] --> 12115483573332489427387229525442994118598895650008838617110553712198814758579 +main.escalarMul.segments[0].windows[10].mux.a2[0] --> 9786070233818727643421613159947801462444311083593866264955745055588492504415 +main.escalarMul.segments[0].windows[10].mux.a2[1] --> 5731243078627058610284873760732242995886142214941336514579686190179572928486 +main.escalarMul.segments[0].windows[10].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[10].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[10].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[10].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[10].mux.a0[0] --> 21749973688301294721029976016923407156775953540844748311110729890267229247470 +main.escalarMul.segments[0].windows[10].mux.a0[1] --> 4239098557920299277836518734651310381026702053557319606974525297246334164667 +main.escalarMul.segments[0].windows[10].mux.s10 --> 0 +main.escalarMul.segments[0].windows[10].dbl2.lamda --> 15337552614755557719372974842529199160816789569923038951864114100897161377783 +main.escalarMul.segments[0].windows[10].dbl2.x1_2 --> 12713275574074380143639008534194374449975830703240024515369315384621372650315 +main.escalarMul.segments[0].windows[10].adr3.lamda --> 14732372566995159230637108194449915011628348063770035823831381591676010624215 +main.escalarMul.segments[0].windows[10].adr4.lamda --> 17970137767754635797913482565568998536295855480748956990481462370737820270908 +main.escalarMul.segments[0].windows[10].adr5.lamda --> 19398873936560771934650542159577321612151048680133467969094398051223938781153 +main.escalarMul.segments[0].windows[10].adr6.lamda --> 8897944710425779076168901389076251156441827375634116459823966839413595371944 +main.escalarMul.segments[0].windows[10].adr7.lamda --> 5073392587611083281104222964356939784598610489928595248923101932441153922261 +main.escalarMul.segments[0].windows[10].adr8.lamda --> 5772368330712417565046780836200094492748336195561429067570481215828402310701 +main.escalarMul.segments[0].adders[9].out[0], main.escalarMul.segments[0].adders[10].in1[0] --> 17060911370770009425893304756391528590805587265569971319122151340172894442605 +main.escalarMul.segments[0].adders[9].out[1], main.escalarMul.segments[0].adders[10].in1[1] --> 9634922563870428156754814650763267844728557418565630347134039204693249990172 +main.escalarMul.segments[0].adders[9].lamda --> 14032971344674525595336030188817296549512047814411351006899173559513664999614 +main.escalarMul.segments[0].cadders[9].out[0], main.escalarMul.segments[0].cadders[10].in1[0] --> 14668834125269795038244282098557027489090951911392383542430468864635375801821 +main.escalarMul.segments[0].cadders[9].out[1], main.escalarMul.segments[0].cadders[10].in1[1] --> 4237435100557017321524616602416093059984620103082416431947697799418791829883 +main.escalarMul.segments[0].cadders[9].lamda --> 9609184704474950632305393886008935977153947935610671229922882439535373505058 +main.escalarMul.segments[0].windows[11].out[0], main.escalarMul.segments[0].windows[11].mux.out[0], main.escalarMul.segments[0].adders[10].in2[0] --> 4907492807297847151899521217427106523344307615797866738621871912645042470700 +main.escalarMul.segments[0].windows[11].out[1], main.escalarMul.segments[0].windows[11].mux.out[1], main.escalarMul.segments[0].adders[10].in2[1] --> 19271251304564643864225207569302457946324072885431992788076656420025965273320 +main.escalarMul.segments[0].windows[11].out8[0], main.escalarMul.segments[0].windows[11].mux.c[0][7], main.escalarMul.segments[0].windows[11].adr8.out[0], main.escalarMul.segments[0].windows[12].base[0], main.escalarMul.segments[0].windows[12].mux.c[0][0], main.escalarMul.segments[0].windows[12].mux.a[0], main.escalarMul.segments[0].windows[12].dbl2.in[0], main.escalarMul.segments[0].windows[12].adr3.in1[0], main.escalarMul.segments[0].windows[12].adr4.in1[0], main.escalarMul.segments[0].windows[12].adr5.in1[0], main.escalarMul.segments[0].windows[12].adr6.in1[0], main.escalarMul.segments[0].windows[12].adr7.in1[0], main.escalarMul.segments[0].windows[12].adr8.in1[0], main.escalarMul.segments[0].cadders[11].in2[0] --> 15439356122216789372389214796089397662774771513366948052188934498445547004101 +main.escalarMul.segments[0].windows[11].out8[1], main.escalarMul.segments[0].windows[11].mux.c[1][7], main.escalarMul.segments[0].windows[11].adr8.out[1], main.escalarMul.segments[0].windows[12].base[1], main.escalarMul.segments[0].windows[12].mux.c[1][0], main.escalarMul.segments[0].windows[12].mux.a[1], main.escalarMul.segments[0].windows[12].dbl2.in[1], main.escalarMul.segments[0].windows[12].adr3.in1[1], main.escalarMul.segments[0].windows[12].adr4.in1[1], main.escalarMul.segments[0].windows[12].adr5.in1[1], main.escalarMul.segments[0].windows[12].adr6.in1[1], main.escalarMul.segments[0].windows[12].adr7.in1[1], main.escalarMul.segments[0].windows[12].adr8.in1[1], main.escalarMul.segments[0].cadders[11].in2[1] --> 19821728888208703893955617725078862483334988902424911580419546883143607875881 +main.escalarMul.segments[0].windows[11].mux.c[0][1], main.escalarMul.segments[0].windows[11].dbl2.out[0], main.escalarMul.segments[0].windows[11].adr3.in2[0] --> 21172211478233078640634825523050698051835098658123096782457819229541123298301 +main.escalarMul.segments[0].windows[11].mux.c[0][2], main.escalarMul.segments[0].windows[11].adr3.out[0], main.escalarMul.segments[0].windows[11].adr4.in2[0] --> 6194794471494048728855465313824491580540593171950855269493127548104276165788 +main.escalarMul.segments[0].windows[11].mux.c[0][3], main.escalarMul.segments[0].windows[11].adr4.out[0], main.escalarMul.segments[0].windows[11].adr5.in2[0] --> 15691206857787654658663213786102143481198151205009246318522301829051120822801 +main.escalarMul.segments[0].windows[11].mux.c[0][4], main.escalarMul.segments[0].windows[11].adr5.out[0], main.escalarMul.segments[0].windows[11].adr6.in2[0] --> 4907492807297847151899521217427106523344307615797866738621871912645042470700 +main.escalarMul.segments[0].windows[11].mux.c[0][5], main.escalarMul.segments[0].windows[11].adr6.out[0], main.escalarMul.segments[0].windows[11].adr7.in2[0] --> 11707017566564455324764555040383306017725261281960523090279880197276432708046 +main.escalarMul.segments[0].windows[11].mux.c[0][6], main.escalarMul.segments[0].windows[11].adr7.out[0], main.escalarMul.segments[0].windows[11].adr8.in2[0] --> 14113712926137039207579372366085637647607596799754355337372446836366165489369 +main.escalarMul.segments[0].windows[11].mux.c[1][1], main.escalarMul.segments[0].windows[11].dbl2.out[1], main.escalarMul.segments[0].windows[11].adr3.in2[1] --> 1420204797755292801052314430503097220352359129346899434736109779938873449500 +main.escalarMul.segments[0].windows[11].mux.c[1][2], main.escalarMul.segments[0].windows[11].adr3.out[1], main.escalarMul.segments[0].windows[11].adr4.in2[1] --> 2991488622808796549042268626508172355121867959759563569920001259156240117842 +main.escalarMul.segments[0].windows[11].mux.c[1][3], main.escalarMul.segments[0].windows[11].adr4.out[1], main.escalarMul.segments[0].windows[11].adr5.in2[1] --> 15444562287623246716375299636775059859224376114557977896728933332154811127710 +main.escalarMul.segments[0].windows[11].mux.c[1][4], main.escalarMul.segments[0].windows[11].adr5.out[1], main.escalarMul.segments[0].windows[11].adr6.in2[1] --> 19271251304564643864225207569302457946324072885431992788076656420025965273320 +main.escalarMul.segments[0].windows[11].mux.c[1][5], main.escalarMul.segments[0].windows[11].adr6.out[1], main.escalarMul.segments[0].windows[11].adr7.in2[1] --> 11757812333814817598064512262877163543032529035343807148778394859014748073017 +main.escalarMul.segments[0].windows[11].mux.c[1][6], main.escalarMul.segments[0].windows[11].adr7.out[1], main.escalarMul.segments[0].windows[11].adr8.in2[1] --> 6607068203537024443313154558163812309829309397555710540925899647536196334591 +main.escalarMul.segments[0].windows[11].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[11].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[11].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[11].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[11].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[11].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[11].mux.a2[0] --> 21809790935516529279474147372903296504636313647793402943240120066917143042294 +main.escalarMul.segments[0].windows[11].mux.a2[1] --> 5733725130842032675609512846520601075308251593954300182786908622118760325214 +main.escalarMul.segments[0].windows[11].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[11].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[11].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[11].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[11].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[11].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[11].mux.s10 --> 0 +main.escalarMul.segments[0].windows[11].dbl2.lamda --> 2761426835179984007698700034148151555444924930504136739234313198122928226156 +main.escalarMul.segments[0].windows[11].dbl2.x1_2 --> 10688727255638989841126720036172392925710673029437893826205858360618272593885 +main.escalarMul.segments[0].windows[11].adr3.lamda --> 14744084483424231076435635016104468245398353811010252212191777767924844252001 +main.escalarMul.segments[0].windows[11].adr4.lamda --> 21306735820931468229349460318118695080505868815233025071703467949555511798514 +main.escalarMul.segments[0].windows[11].adr5.lamda --> 11477640305738073571205783186415662978284421509602265181911770024158964247292 +main.escalarMul.segments[0].windows[11].adr6.lamda --> 998196020801493666421701816547355217868577131062470149277764601620453094765 +main.escalarMul.segments[0].windows[11].adr7.lamda --> 314474731088134171053114407361689093260939222236749325387917806690396309856 +main.escalarMul.segments[0].windows[11].adr8.lamda --> 3050346306900582155509914794113358330301713409690282627683967153186732943349 +main.escalarMul.segments[0].adders[10].out[0], main.escalarMul.segments[0].adders[11].in1[0] --> 2774818896451303444312786004911264844712860601102199615418420025627817406153 +main.escalarMul.segments[0].adders[10].out[1], main.escalarMul.segments[0].adders[11].in1[1] --> 18762543866355009683019134517851135323726430017955352688373339938374655034763 +main.escalarMul.segments[0].adders[10].lamda --> 13550569694290902336335455957094520396055695443231449317164058906525926381699 +main.escalarMul.segments[0].cadders[10].out[0], main.escalarMul.segments[0].cadders[11].in1[0] --> 3436195595261968052372483760781983144351297558116617391590435053371797432107 +main.escalarMul.segments[0].cadders[10].out[1], main.escalarMul.segments[0].cadders[11].in1[1] --> 78272076655124880756389268465039308179225904499963792661989239351968371426 +main.escalarMul.segments[0].cadders[10].lamda --> 13700349774515386929843015452943205054772791934557534671218265094892336737185 +main.escalarMul.segments[0].windows[12].out[0], main.escalarMul.segments[0].windows[12].mux.out[0], main.escalarMul.segments[0].adders[11].in2[0] --> 8722782600437679227635242886371872277162774644103358122132786565893258801352 +main.escalarMul.segments[0].windows[12].out[1], main.escalarMul.segments[0].windows[12].mux.out[1], main.escalarMul.segments[0].adders[11].in2[1] --> 11746650525961808367163100212212819086512994117668221778783909368314334879606 +main.escalarMul.segments[0].windows[12].out8[0], main.escalarMul.segments[0].windows[12].mux.c[0][7], main.escalarMul.segments[0].windows[12].adr8.out[0], main.escalarMul.segments[0].windows[13].base[0], main.escalarMul.segments[0].windows[13].mux.c[0][0], main.escalarMul.segments[0].windows[13].mux.a[0], main.escalarMul.segments[0].windows[13].dbl2.in[0], main.escalarMul.segments[0].windows[13].adr3.in1[0], main.escalarMul.segments[0].windows[13].adr4.in1[0], main.escalarMul.segments[0].windows[13].adr5.in1[0], main.escalarMul.segments[0].windows[13].adr6.in1[0], main.escalarMul.segments[0].windows[13].adr7.in1[0], main.escalarMul.segments[0].windows[13].adr8.in1[0], main.escalarMul.segments[0].cadders[12].in2[0] --> 5422410433310250606257593736517971836355779055340511126679174431994496598064 +main.escalarMul.segments[0].windows[12].out8[1], main.escalarMul.segments[0].windows[12].mux.c[1][7], main.escalarMul.segments[0].windows[12].adr8.out[1], main.escalarMul.segments[0].windows[13].base[1], main.escalarMul.segments[0].windows[13].mux.c[1][0], main.escalarMul.segments[0].windows[13].mux.a[1], main.escalarMul.segments[0].windows[13].dbl2.in[1], main.escalarMul.segments[0].windows[13].adr3.in1[1], main.escalarMul.segments[0].windows[13].adr4.in1[1], main.escalarMul.segments[0].windows[13].adr5.in1[1], main.escalarMul.segments[0].windows[13].adr6.in1[1], main.escalarMul.segments[0].windows[13].adr7.in1[1], main.escalarMul.segments[0].windows[13].adr8.in1[1], main.escalarMul.segments[0].cadders[12].in2[1] --> 3686741245940830092910873589867779433524429678024777303591839397400309803279 +main.escalarMul.segments[0].windows[12].mux.c[0][1], main.escalarMul.segments[0].windows[12].dbl2.out[0], main.escalarMul.segments[0].windows[12].adr3.in2[0] --> 9685682635017706243948188531646659596826366056241068634649359596074406693954 +main.escalarMul.segments[0].windows[12].mux.c[0][2], main.escalarMul.segments[0].windows[12].adr3.out[0], main.escalarMul.segments[0].windows[12].adr4.in2[0] --> 16229405606573497301112381591695389473602826430804299913963149505451634253438 +main.escalarMul.segments[0].windows[12].mux.c[0][3], main.escalarMul.segments[0].windows[12].adr4.out[0], main.escalarMul.segments[0].windows[12].adr5.in2[0] --> 15711608555102231497085845465649393252633042953588196790270356511891932504649 +main.escalarMul.segments[0].windows[12].mux.c[0][4], main.escalarMul.segments[0].windows[12].adr5.out[0], main.escalarMul.segments[0].windows[12].adr6.in2[0] --> 8722782600437679227635242886371872277162774644103358122132786565893258801352 +main.escalarMul.segments[0].windows[12].mux.c[0][5], main.escalarMul.segments[0].windows[12].adr6.out[0], main.escalarMul.segments[0].windows[12].adr7.in2[0] --> 539073263016212661810258586331712755514482315221038864065710931149744267508 +main.escalarMul.segments[0].windows[12].mux.c[0][6], main.escalarMul.segments[0].windows[12].adr7.out[0], main.escalarMul.segments[0].windows[12].adr8.in2[0] --> 21130515456678371724316946385166949290009377745427215896509177983268038818190 +main.escalarMul.segments[0].windows[12].mux.c[1][1], main.escalarMul.segments[0].windows[12].dbl2.out[1], main.escalarMul.segments[0].windows[12].adr3.in2[1] --> 21853961234505065461888281866157931996906043615331114054113991047029663954529 +main.escalarMul.segments[0].windows[12].mux.c[1][2], main.escalarMul.segments[0].windows[12].adr3.out[1], main.escalarMul.segments[0].windows[12].adr4.in2[1] --> 21866272779677173048534328392277510086663402633042747237254697898616827061775 +main.escalarMul.segments[0].windows[12].mux.c[1][3], main.escalarMul.segments[0].windows[12].adr4.out[1], main.escalarMul.segments[0].windows[12].adr5.in2[1] --> 1700173189378854865393215736932794330774134698117376656121365640941973263607 +main.escalarMul.segments[0].windows[12].mux.c[1][4], main.escalarMul.segments[0].windows[12].adr5.out[1], main.escalarMul.segments[0].windows[12].adr6.in2[1] --> 11746650525961808367163100212212819086512994117668221778783909368314334879606 +main.escalarMul.segments[0].windows[12].mux.c[1][5], main.escalarMul.segments[0].windows[12].adr6.out[1], main.escalarMul.segments[0].windows[12].adr7.in2[1] --> 20248168178388798406199711975635708119077253679578838546506057559951059451324 +main.escalarMul.segments[0].windows[12].mux.c[1][6], main.escalarMul.segments[0].windows[12].adr7.out[1], main.escalarMul.segments[0].windows[12].adr8.in2[1] --> 10303406777532180053446429232623623696548688604826851876914574561507613558923 +main.escalarMul.segments[0].windows[12].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[12].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[12].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[12].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[12].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[12].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[12].mux.a2[0] --> 15171669350060165077492433835539749702936367531152444413642056254023520292868 +main.escalarMul.segments[0].windows[12].mux.a2[1] --> 13813164509592379695453888232391231691726369615659344542062566671746535499342 +main.escalarMul.segments[0].windows[12].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[12].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[12].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[12].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[12].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[12].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[12].mux.s10 --> 0 +main.escalarMul.segments[0].windows[12].dbl2.lamda --> 18598880043699100373543470627276308625121145090583032619130945436136989095485 +main.escalarMul.segments[0].windows[12].dbl2.x1_2 --> 15587521782839120868140446999569480132056459491996993328194657069421690334794 +main.escalarMul.segments[0].windows[12].adr3.lamda --> 16546892914442820002927578541491844013569418094786320622940112088190122723292 +main.escalarMul.segments[0].windows[12].adr4.lamda --> 14930344356898327405153911131119702296662997790816638887674196446844075149410 +main.escalarMul.segments[0].windows[12].adr5.lamda --> 140519497648269144935208759577889786321593255128101940528843969748372148736 +main.escalarMul.segments[0].windows[12].adr6.lamda --> 19638200803278065549455062745451939956101945185648582762401490985898974214663 +main.escalarMul.segments[0].windows[12].adr7.lamda --> 11503577214470423168906609989156572414752429044499707871395997335813744544755 +main.escalarMul.segments[0].windows[12].adr8.lamda --> 6340339954856518895511063854726574902630446187823753022395099088546478860729 +main.escalarMul.segments[0].adders[11].out[0], main.escalarMul.segments[0].adders[12].in1[0] --> 26930253953248819937769575095411218624277024632034567370884597711846043657 +main.escalarMul.segments[0].adders[11].out[1], main.escalarMul.segments[0].adders[12].in1[1] --> 9389468757126280595895076367262850358714495018826328259607980824105171516000 +main.escalarMul.segments[0].adders[11].lamda --> 8675397864498565125642660126019212679889165853685181227763164126289238328550 +main.escalarMul.segments[0].cadders[11].out[0], main.escalarMul.segments[0].cadders[12].in1[0] --> 18794029424909228505839778247889436688548827430851247560887947556880469902887 +main.escalarMul.segments[0].cadders[11].out[1], main.escalarMul.segments[0].cadders[12].in1[1] --> 18074598323622617542305118097729008162347711085061216531558149366132522156893 +main.escalarMul.segments[0].cadders[11].lamda --> 859178214816360800484633518448016667100301686592182391831362831654883486384 +main.escalarMul.segments[0].windows[13].out[0], main.escalarMul.segments[0].windows[13].mux.out[0], main.escalarMul.segments[0].adders[12].in2[0] --> 21064763415998399628128553103375363449008365447870581508393596474847762574425 +main.escalarMul.segments[0].windows[13].out[1], main.escalarMul.segments[0].windows[13].mux.out[1], main.escalarMul.segments[0].adders[12].in2[1] --> 8348839591856983973924448561215574028483794217817217878652688647056812842620 +main.escalarMul.segments[0].windows[13].out8[0], main.escalarMul.segments[0].windows[13].mux.c[0][7], main.escalarMul.segments[0].windows[13].adr8.out[0], main.escalarMul.segments[0].windows[14].base[0], main.escalarMul.segments[0].windows[14].mux.c[0][0], main.escalarMul.segments[0].windows[14].mux.a[0], main.escalarMul.segments[0].windows[14].dbl2.in[0], main.escalarMul.segments[0].windows[14].adr3.in1[0], main.escalarMul.segments[0].windows[14].adr4.in1[0], main.escalarMul.segments[0].windows[14].adr5.in1[0], main.escalarMul.segments[0].windows[14].adr6.in1[0], main.escalarMul.segments[0].windows[14].adr7.in1[0], main.escalarMul.segments[0].windows[14].adr8.in1[0], main.escalarMul.segments[0].cadders[13].in2[0] --> 17387480516950327318738476671486820277239405778412007315537859479084486609390 +main.escalarMul.segments[0].windows[13].out8[1], main.escalarMul.segments[0].windows[13].mux.c[1][7], main.escalarMul.segments[0].windows[13].adr8.out[1], main.escalarMul.segments[0].windows[14].base[1], main.escalarMul.segments[0].windows[14].mux.c[1][0], main.escalarMul.segments[0].windows[14].mux.a[1], main.escalarMul.segments[0].windows[14].dbl2.in[1], main.escalarMul.segments[0].windows[14].adr3.in1[1], main.escalarMul.segments[0].windows[14].adr4.in1[1], main.escalarMul.segments[0].windows[14].adr5.in1[1], main.escalarMul.segments[0].windows[14].adr6.in1[1], main.escalarMul.segments[0].windows[14].adr7.in1[1], main.escalarMul.segments[0].windows[14].adr8.in1[1], main.escalarMul.segments[0].cadders[13].in2[1] --> 18452492550354817091925833975659460543266837881799386151690844074541256770559 +main.escalarMul.segments[0].windows[13].mux.c[0][1], main.escalarMul.segments[0].windows[13].dbl2.out[0], main.escalarMul.segments[0].windows[13].adr3.in2[0] --> 14000830983793990388120094654826446780324920247198896836097233509128289687768 +main.escalarMul.segments[0].windows[13].mux.c[0][2], main.escalarMul.segments[0].windows[13].adr3.out[0], main.escalarMul.segments[0].windows[13].adr4.in2[0] --> 2932387348040285004047729987097258060731443156265801582472993826896936491424 +main.escalarMul.segments[0].windows[13].mux.c[0][3], main.escalarMul.segments[0].windows[13].adr4.out[0], main.escalarMul.segments[0].windows[13].adr5.in2[0] --> 21064763415998399628128553103375363449008365447870581508393596474847762574425 +main.escalarMul.segments[0].windows[13].mux.c[0][4], main.escalarMul.segments[0].windows[13].adr5.out[0], main.escalarMul.segments[0].windows[13].adr6.in2[0] --> 18197433041202581871129832444304189293391224672822412261551642844341716276920 +main.escalarMul.segments[0].windows[13].mux.c[0][5], main.escalarMul.segments[0].windows[13].adr6.out[0], main.escalarMul.segments[0].windows[13].adr7.in2[0] --> 10986844243153261485639047966436121609515264881285463426088253447984427873867 +main.escalarMul.segments[0].windows[13].mux.c[0][6], main.escalarMul.segments[0].windows[13].adr7.out[0], main.escalarMul.segments[0].windows[13].adr8.in2[0] --> 424917288576524069641161014062971128589527851367225291843530328116145667511 +main.escalarMul.segments[0].windows[13].mux.c[1][1], main.escalarMul.segments[0].windows[13].dbl2.out[1], main.escalarMul.segments[0].windows[13].adr3.in2[1] --> 14774374821601769794226496892206395534546079465163126623113760378369723944412 +main.escalarMul.segments[0].windows[13].mux.c[1][2], main.escalarMul.segments[0].windows[13].adr3.out[1], main.escalarMul.segments[0].windows[13].adr4.in2[1] --> 2851788294458331037451437621393892966035903573739135149640346938651241671868 +main.escalarMul.segments[0].windows[13].mux.c[1][3], main.escalarMul.segments[0].windows[13].adr4.out[1], main.escalarMul.segments[0].windows[13].adr5.in2[1] --> 8348839591856983973924448561215574028483794217817217878652688647056812842620 +main.escalarMul.segments[0].windows[13].mux.c[1][4], main.escalarMul.segments[0].windows[13].adr5.out[1], main.escalarMul.segments[0].windows[13].adr6.in2[1] --> 12701737857244208711204101652146744101178979373885536276960254269660690516741 +main.escalarMul.segments[0].windows[13].mux.c[1][5], main.escalarMul.segments[0].windows[13].adr6.out[1], main.escalarMul.segments[0].windows[13].adr7.in2[1] --> 4782066508252327930154964572552359589465076246558256424503235408150862849480 +main.escalarMul.segments[0].windows[13].mux.c[1][6], main.escalarMul.segments[0].windows[13].adr7.out[1], main.escalarMul.segments[0].windows[13].adr8.in2[1] --> 18835471463742867531507865165353798051635800209595588887618614029983251545743 +main.escalarMul.segments[0].windows[13].mux.a210[0] --> 14619196508948748792369777937322286388218056618835336642655174976508596351635 +main.escalarMul.segments[0].windows[13].mux.a210[1] --> 13127274713866117106309718252416982041918699942591343707038828178631675862458 +main.escalarMul.segments[0].windows[13].mux.a21[0] --> 6605750204483183022967598064436770699371003478035556918196272275447797992848 +main.escalarMul.segments[0].windows[13].mux.a21[1] --> 6968686557981157875763199481680940417945346939995694764609852219071629160413 +main.escalarMul.segments[0].windows[13].mux.a20[0] --> 6099233523306215054893120349080732460703263417020699798816755713084727002860 +main.escalarMul.segments[0].windows[13].mux.a20[1] --> 2880937947186454739881645363324274475812811485950405171719264344096566687223 +main.escalarMul.segments[0].windows[13].mux.a2[0] --> 12775022607892331264872238707786217457035445617481901134872468412347219678856 +main.escalarMul.segments[0].windows[13].mux.a2[1] --> 9014996611303378618293228062278964667654549695860758973368414872260380713462 +main.escalarMul.segments[0].windows[13].mux.a10[0] --> 9553955517474374842218322197969630444307781099746394216502543570817032993297 +main.escalarMul.segments[0].windows[13].mux.a10[1] --> 16297660593576988457403793382740340049974605257355767753188624914011965525236 +main.escalarMul.segments[0].windows[13].mux.a1[0] --> 19398219786569309620036541995836561312924028501341324799492023581478248388977 +main.escalarMul.segments[0].windows[13].mux.a1[1] --> 21053289920356776166786969776783388621059838296130392189746711727826740364206 +main.escalarMul.segments[0].windows[13].mux.a0[0] --> 8578420550483739781862500918308474943969141191858385709418059077133793089704 +main.escalarMul.segments[0].windows[13].mux.a0[1] --> 11087633575660939701315623302338616101021649787138349319521920980969414141133 +main.escalarMul.segments[0].windows[13].mux.s10 --> 1 +main.escalarMul.segments[0].windows[13].dbl2.lamda --> 5421703684525919404496938555972938936207255693154941083442636777998233562865 +main.escalarMul.segments[0].windows[13].dbl2.x1_2 --> 4754089396843613394845650955181186257612867455663581826436975205681060694440 +main.escalarMul.segments[0].windows[13].adr3.lamda --> 9363279970658743451639011273577213853187161167918817920417508942314384602039 +main.escalarMul.segments[0].windows[13].adr4.lamda --> 17658128560113720103697050180729851226957714999240139949097439339084246744482 +main.escalarMul.segments[0].windows[13].adr5.lamda --> 6035816205041337865322499796443035150653392782129597266523813126260552101285 +main.escalarMul.segments[0].windows[13].adr6.lamda --> 7321226717323401713278854694444218097402655789684930675382298823243174391888 +main.escalarMul.segments[0].windows[13].adr7.lamda --> 15369403667878848651190064922636480885607346084961171645192524922647046729323 +main.escalarMul.segments[0].windows[13].adr8.lamda --> 17461086753514179441744240032479517586238303291813329250084436730210607047933 +main.escalarMul.segments[0].adders[12].out[0], main.escalarMul.segments[0].adders[13].in1[0] --> 4242192908578711179660917837188844921596144766556032161624945759425879802096 +main.escalarMul.segments[0].adders[12].out[1], main.escalarMul.segments[0].adders[13].in1[1] --> 8112470109212790601729988609365793923289946918347841051009885779713170115575 +main.escalarMul.segments[0].adders[12].lamda --> 15760657502036247361679825075880684398118326386245726210429174757702136966108 +main.escalarMul.segments[0].cadders[12].out[0], main.escalarMul.segments[0].cadders[13].in1[0] --> 20581788305763203862496240335819369974814591687961002095149754416085085377099 +main.escalarMul.segments[0].cadders[12].out[1], main.escalarMul.segments[0].cadders[13].in1[1] --> 5559582475108580319304731840189214067550897192179690838897739716967628910985 +main.escalarMul.segments[0].cadders[12].lamda --> 7954444843433377650169101989926188623914826335406463582345861876734762979963 +main.escalarMul.segments[0].windows[14].out[0], main.escalarMul.segments[0].windows[14].mux.out[0], main.escalarMul.segments[0].adders[13].in2[0] --> 18728434044879563269110140925603942513094644299748720478228221135202964067545 +main.escalarMul.segments[0].windows[14].out[1], main.escalarMul.segments[0].windows[14].mux.out[1], main.escalarMul.segments[0].adders[13].in2[1] --> 1844435121814124452130141201556884320551638427629898309984686119093950946731 +main.escalarMul.segments[0].windows[14].out8[0], main.escalarMul.segments[0].windows[14].mux.c[0][7], main.escalarMul.segments[0].windows[14].adr8.out[0], main.escalarMul.segments[0].windows[15].base[0], main.escalarMul.segments[0].windows[15].mux.c[0][0], main.escalarMul.segments[0].windows[15].mux.a[0], main.escalarMul.segments[0].windows[15].dbl2.in[0], main.escalarMul.segments[0].windows[15].adr3.in1[0], main.escalarMul.segments[0].windows[15].adr4.in1[0], main.escalarMul.segments[0].windows[15].adr5.in1[0], main.escalarMul.segments[0].windows[15].adr6.in1[0], main.escalarMul.segments[0].windows[15].adr7.in1[0], main.escalarMul.segments[0].windows[15].adr8.in1[0], main.escalarMul.segments[0].cadders[14].in2[0] --> 8378046619462557249494813619392967980170756071603448832288357983590137494577 +main.escalarMul.segments[0].windows[14].out8[1], main.escalarMul.segments[0].windows[14].mux.c[1][7], main.escalarMul.segments[0].windows[14].adr8.out[1], main.escalarMul.segments[0].windows[15].base[1], main.escalarMul.segments[0].windows[15].mux.c[1][0], main.escalarMul.segments[0].windows[15].mux.a[1], main.escalarMul.segments[0].windows[15].dbl2.in[1], main.escalarMul.segments[0].windows[15].adr3.in1[1], main.escalarMul.segments[0].windows[15].adr4.in1[1], main.escalarMul.segments[0].windows[15].adr5.in1[1], main.escalarMul.segments[0].windows[15].adr6.in1[1], main.escalarMul.segments[0].windows[15].adr7.in1[1], main.escalarMul.segments[0].windows[15].adr8.in1[1], main.escalarMul.segments[0].cadders[14].in2[1] --> 17758581056725768999977894176898363908033734122501621855877813051914184902702 +main.escalarMul.segments[0].windows[14].mux.c[0][1], main.escalarMul.segments[0].windows[14].dbl2.out[0], main.escalarMul.segments[0].windows[14].adr3.in2[0] --> 21714443647408790361237553194098449744516629053747312392834485164696275000676 +main.escalarMul.segments[0].windows[14].mux.c[0][2], main.escalarMul.segments[0].windows[14].adr3.out[0], main.escalarMul.segments[0].windows[14].adr4.in2[0] --> 20670534609156575675572295467608476287004098834876965411219943063064348590086 +main.escalarMul.segments[0].windows[14].mux.c[0][3], main.escalarMul.segments[0].windows[14].adr4.out[0], main.escalarMul.segments[0].windows[14].adr5.in2[0] --> 18728434044879563269110140925603942513094644299748720478228221135202964067545 +main.escalarMul.segments[0].windows[14].mux.c[0][4], main.escalarMul.segments[0].windows[14].adr5.out[0], main.escalarMul.segments[0].windows[14].adr6.in2[0] --> 7091007249655906448448256013557313214671532556381820139430639866683429392480 +main.escalarMul.segments[0].windows[14].mux.c[0][5], main.escalarMul.segments[0].windows[14].adr6.out[0], main.escalarMul.segments[0].windows[14].adr7.in2[0] --> 1335590793680980200700819377443749747188331410247716250665078324069051187352 +main.escalarMul.segments[0].windows[14].mux.c[0][6], main.escalarMul.segments[0].windows[14].adr7.out[0], main.escalarMul.segments[0].windows[14].adr8.in2[0] --> 7176924348974886094314700243290301155742175982614548587592953549747493816796 +main.escalarMul.segments[0].windows[14].mux.c[1][1], main.escalarMul.segments[0].windows[14].dbl2.out[1], main.escalarMul.segments[0].windows[14].adr3.in2[1] --> 1149698100816122288369933277992881640972727521600407985925579828353981779609 +main.escalarMul.segments[0].windows[14].mux.c[1][2], main.escalarMul.segments[0].windows[14].adr3.out[1], main.escalarMul.segments[0].windows[14].adr4.in2[1] --> 13785419136112887398325414477939648301917825689775833813056123508465583880237 +main.escalarMul.segments[0].windows[14].mux.c[1][3], main.escalarMul.segments[0].windows[14].adr4.out[1], main.escalarMul.segments[0].windows[14].adr5.in2[1] --> 1844435121814124452130141201556884320551638427629898309984686119093950946731 +main.escalarMul.segments[0].windows[14].mux.c[1][4], main.escalarMul.segments[0].windows[14].adr5.out[1], main.escalarMul.segments[0].windows[14].adr6.in2[1] --> 13942914065657477597681415711645169911913058829030606889466209681387657473229 +main.escalarMul.segments[0].windows[14].mux.c[1][5], main.escalarMul.segments[0].windows[14].adr6.out[1], main.escalarMul.segments[0].windows[14].adr7.in2[1] --> 20433730952130905701464294823519820403884239100950574811684899057312119635052 +main.escalarMul.segments[0].windows[14].mux.c[1][6], main.escalarMul.segments[0].windows[14].adr7.out[1], main.escalarMul.segments[0].windows[14].adr8.in2[1] --> 7318480415962946491404880371171103201653800137937862357392881861270204555790 +main.escalarMul.segments[0].windows[14].mux.a210[0] --> 13225602421198072851888781076832393533098459045586554143749313589930194796736 +main.escalarMul.segments[0].windows[14].mux.a210[1] --> 20475716190888737769675913017826070382029195015006783257270619144479684623262 +main.escalarMul.segments[0].windows[14].mux.a21[0] --> 18691105878952006511279031178868607019854314770183804696178434285660010939237 +main.escalarMul.segments[0].windows[14].mux.a21[1] --> 19930882636386673809570289902503020619638117901346842150259596932534028468500 +main.escalarMul.segments[0].windows[14].mux.a20[0] --> 11805863285405885931999892586532082153787939978946625377636016958349641899203 +main.escalarMul.segments[0].windows[14].mux.a20[1] --> 1905368464172847685092374064283954305716926231702911744285749435535928657156 +main.escalarMul.segments[0].windows[14].mux.a2[0] --> 11591769604544854351956185087327768025980491178385847167590984574174751278707 +main.escalarMul.segments[0].windows[14].mux.a2[1] --> 17378664387141935728001987481242984457194585347647255081473569793422209198287 +main.escalarMul.segments[0].windows[14].mux.a10[0] --> 15619179177103799773285174680641111847361686589952484333409856573102635581790 +main.escalarMul.segments[0].windows[14].mux.a10[1] --> 5361810435239931857360627421283814920927923098053042662693826856815642057444 +main.escalarMul.segments[0].windows[14].mux.a1[0] --> 3283054092206248356833818796121656009764693056464958095682083583979861980696 +main.escalarMul.segments[0].windows[14].mux.a1[1] --> 17221169457597345528645986247537462847199352208392482005063483620500135605295 +main.escalarMul.segments[0].windows[14].mux.a0[0] --> 4326963130458463042499076522611629467277223275335305077296625685611788391286 +main.escalarMul.segments[0].windows[14].mux.a0[1] --> 4585448422300580418690505047590696186254254040217056177932939940388533504667 +main.escalarMul.segments[0].windows[14].mux.s10 --> 1 +main.escalarMul.segments[0].windows[14].dbl2.lamda --> 4450189522905864884226495545526390796038601890349823571933089054038628562036 +main.escalarMul.segments[0].windows[14].dbl2.x1_2 --> 10910598248582390597323971545082501132947349173695388965019705810063946225657 +main.escalarMul.segments[0].windows[14].adr3.lamda --> 17748090025280012931626584541257539647324421005209905538622106044302835340714 +main.escalarMul.segments[0].windows[14].adr4.lamda --> 2533485605314218298593947924257199825190954666610303315804131007217480180858 +main.escalarMul.segments[0].windows[14].adr5.lamda --> 18737011778677465200937042192234406412084383511641910453443283801315333646861 +main.escalarMul.segments[0].windows[14].adr6.lamda --> 7490695127827192415950741908448358056323884978496274309407632994868583306108 +main.escalarMul.segments[0].windows[14].adr7.lamda --> 18583031231146963561779911994906620826767799880049282357563022377184758592540 +main.escalarMul.segments[0].windows[14].adr8.lamda --> 21837498754601592207504705804533010557095531351428974459447473492065107178418 +main.escalarMul.segments[0].adders[13].out[0], main.escalarMul.segments[0].adders[14].in1[0] --> 15968341888045984563316563183540002473228667098706087938838952641705458021912 +main.escalarMul.segments[0].adders[13].out[1], main.escalarMul.segments[0].adders[14].in1[1] --> 17254643163551046917978147746117504866020010531613776368087711193513514664634 +main.escalarMul.segments[0].adders[13].lamda --> 5509905976128874564752418480802174477941757705691231657346564286356834374792 +main.escalarMul.segments[0].cadders[13].out[0], main.escalarMul.segments[0].cadders[14].in1[0] --> 19193602799900994184240795344484554034322829972793499751982568832800931156343 +main.escalarMul.segments[0].cadders[13].out[1], main.escalarMul.segments[0].cadders[14].in1[1] --> 9857902069402698265587639322636204008231500092390459776923165183237000165890 +main.escalarMul.segments[0].cadders[13].lamda --> 7831844637572714722114237648108866275885241515021047168930364096906731535916 +main.escalarMul.segments[0].windows[15].out[0], main.escalarMul.segments[0].windows[15].mux.out[0], main.escalarMul.segments[0].adders[14].in2[0] --> 8378046619462557249494813619392967980170756071603448832288357983590137494577 +main.escalarMul.segments[0].windows[15].out[1], main.escalarMul.segments[0].windows[15].mux.out[1], main.escalarMul.segments[0].adders[14].in2[1] --> 17758581056725768999977894176898363908033734122501621855877813051914184902702 +main.escalarMul.segments[0].windows[15].out8[0], main.escalarMul.segments[0].windows[15].mux.c[0][7], main.escalarMul.segments[0].windows[15].adr8.out[0], main.escalarMul.segments[0].windows[16].base[0], main.escalarMul.segments[0].windows[16].mux.c[0][0], main.escalarMul.segments[0].windows[16].mux.a[0], main.escalarMul.segments[0].windows[16].dbl2.in[0], main.escalarMul.segments[0].windows[16].adr3.in1[0], main.escalarMul.segments[0].windows[16].adr4.in1[0], main.escalarMul.segments[0].windows[16].adr5.in1[0], main.escalarMul.segments[0].windows[16].adr6.in1[0], main.escalarMul.segments[0].windows[16].adr7.in1[0], main.escalarMul.segments[0].windows[16].adr8.in1[0], main.escalarMul.segments[0].cadders[15].in2[0] --> 12778054681105689832982429417035928892511788857147433814746740371167336924874 +main.escalarMul.segments[0].windows[15].out8[1], main.escalarMul.segments[0].windows[15].mux.c[1][7], main.escalarMul.segments[0].windows[15].adr8.out[1], main.escalarMul.segments[0].windows[16].base[1], main.escalarMul.segments[0].windows[16].mux.c[1][0], main.escalarMul.segments[0].windows[16].mux.a[1], main.escalarMul.segments[0].windows[16].dbl2.in[1], main.escalarMul.segments[0].windows[16].adr3.in1[1], main.escalarMul.segments[0].windows[16].adr4.in1[1], main.escalarMul.segments[0].windows[16].adr5.in1[1], main.escalarMul.segments[0].windows[16].adr6.in1[1], main.escalarMul.segments[0].windows[16].adr7.in1[1], main.escalarMul.segments[0].windows[16].adr8.in1[1], main.escalarMul.segments[0].cadders[15].in2[1] --> 5080537052107661323404154511162309646736478784303788243715497969836225666107 +main.escalarMul.segments[0].windows[15].mux.c[0][1], main.escalarMul.segments[0].windows[15].dbl2.out[0], main.escalarMul.segments[0].windows[15].adr3.in2[0] --> 16074750931051706031250362037996277730439495643657395503406156570072169163181 +main.escalarMul.segments[0].windows[15].mux.c[0][2], main.escalarMul.segments[0].windows[15].adr3.out[0], main.escalarMul.segments[0].windows[15].adr4.in2[0] --> 2750918473198042601274024061729364420287764733838805277269745026497575076134 +main.escalarMul.segments[0].windows[15].mux.c[0][3], main.escalarMul.segments[0].windows[15].adr4.out[0], main.escalarMul.segments[0].windows[15].adr5.in2[0] --> 6256715379257268243635806832301877140851605755524020868418841659950548470953 +main.escalarMul.segments[0].windows[15].mux.c[0][4], main.escalarMul.segments[0].windows[15].adr5.out[0], main.escalarMul.segments[0].windows[15].adr6.in2[0] --> 3183045989670101537953717459825294668604615921905881155281316734212356847517 +main.escalarMul.segments[0].windows[15].mux.c[0][5], main.escalarMul.segments[0].windows[15].adr6.out[0], main.escalarMul.segments[0].windows[15].adr7.in2[0] --> 12763478879608756307277314544900052431290789811344272591755762670090502538559 +main.escalarMul.segments[0].windows[15].mux.c[0][6], main.escalarMul.segments[0].windows[15].adr7.out[0], main.escalarMul.segments[0].windows[15].adr8.in2[0] --> 13178945626529854537641245630108798864154966510501629931294767853654047001388 +main.escalarMul.segments[0].windows[15].mux.c[1][1], main.escalarMul.segments[0].windows[15].dbl2.out[1], main.escalarMul.segments[0].windows[15].adr3.in2[1] --> 9616620103313523750444509477592963710562866564581875332717829497426817428793 +main.escalarMul.segments[0].windows[15].mux.c[1][2], main.escalarMul.segments[0].windows[15].adr3.out[1], main.escalarMul.segments[0].windows[15].adr4.in2[1] --> 1499279839895167803317482799759375049913409084794103157922398559048317680952 +main.escalarMul.segments[0].windows[15].mux.c[1][3], main.escalarMul.segments[0].windows[15].adr4.out[1], main.escalarMul.segments[0].windows[15].adr5.in2[1] --> 4211525256788329401428407969235569520906670032107594475712371592340786386202 +main.escalarMul.segments[0].windows[15].mux.c[1][4], main.escalarMul.segments[0].windows[15].adr5.out[1], main.escalarMul.segments[0].windows[15].adr6.in2[1] --> 3100415315248273022466065683109730618075031525525349684494584197344867108417 +main.escalarMul.segments[0].windows[15].mux.c[1][5], main.escalarMul.segments[0].windows[15].adr6.out[1], main.escalarMul.segments[0].windows[15].adr7.in2[1] --> 17335736495051324009475285116540409463818263704132871854670198562741612508223 +main.escalarMul.segments[0].windows[15].mux.c[1][6], main.escalarMul.segments[0].windows[15].adr7.out[1], main.escalarMul.segments[0].windows[15].adr8.in2[1] --> 17333783350655174669816883796887394363074722683955999078704279441252993052161 +main.escalarMul.segments[0].windows[15].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[15].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[15].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[15].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[15].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[15].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[15].mux.a2[0] --> 16693242242046819510705309585689601776982224250718466666691162937198027848557 +main.escalarMul.segments[0].windows[15].mux.a2[1] --> 7230077130361779244734577251468641798589661803439762172314975332006490701332 +main.escalarMul.segments[0].windows[15].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[15].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[15].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[15].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[15].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[15].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[15].mux.s10 --> 0 +main.escalarMul.segments[0].windows[15].dbl2.lamda --> 20529015226949674277015070433517724145091236264794147310523278424703375765443 +main.escalarMul.segments[0].windows[15].dbl2.x1_2 --> 6720207493589711083907301702457239751832883887449058159848273473337666177305 +main.escalarMul.segments[0].windows[15].adr3.lamda --> 21246529559613175041007675544413832064232974278851572800400171038553669012630 +main.escalarMul.segments[0].windows[15].adr4.lamda --> 11983168713733142476341242950553272758721708526149490213944203880611073872945 +main.escalarMul.segments[0].windows[15].adr5.lamda --> 18177623628541928857437266282034556834897868991224363467762883512841372680112 +main.escalarMul.segments[0].windows[15].adr6.lamda --> 9469701339066679976514105282065398816952892188976266234405755683295432170316 +main.escalarMul.segments[0].windows[15].adr7.lamda --> 13956502833550965480820245369096566259006898721932690070677446358092877688525 +main.escalarMul.segments[0].windows[15].adr8.lamda --> 6832575715017914032155403126142726514016552401868682790721538197368937376420 +main.escalarMul.segments[0].adders[14].out[0], main.escalarMul.segments[0].adders[15].in1[0] --> 12198261020745505453666635893672846903325918015731008970690788504546360549839 +main.escalarMul.segments[0].adders[14].out[1], main.escalarMul.segments[0].adders[15].in1[1] --> 13076329138142433053667398014069259767694838333967605185300327292027571123009 +main.escalarMul.segments[0].adders[14].lamda --> 2567652163430268076330005141637293726054239322824959149587204871845300347645 +main.escalarMul.segments[0].cadders[14].out[0], main.escalarMul.segments[0].cadders[15].in1[0] --> 2528364725274706263022787794745293350403760005746810643528079482623654368053 +main.escalarMul.segments[0].cadders[14].out[1], main.escalarMul.segments[0].cadders[15].in1[1] --> 9501500919155537228744029946060316712813973433053040786576346890797813224686 +main.escalarMul.segments[0].cadders[14].lamda --> 1586854590734881362160080891880053585035235247364882945857600891232047823323 +main.escalarMul.segments[0].windows[16].out[0], main.escalarMul.segments[0].windows[16].mux.out[0], main.escalarMul.segments[0].adders[15].in2[0] --> 11892577893774458276129026686569785596851344666726011461440032646307488245642 +main.escalarMul.segments[0].windows[16].out[1], main.escalarMul.segments[0].windows[16].mux.out[1], main.escalarMul.segments[0].adders[15].in2[1] --> 18734777341982440424717646496303903237205965678278790271819646130458367676237 +main.escalarMul.segments[0].windows[16].out8[0], main.escalarMul.segments[0].windows[16].mux.c[0][7], main.escalarMul.segments[0].windows[16].adr8.out[0], main.escalarMul.segments[0].windows[17].base[0], main.escalarMul.segments[0].windows[17].mux.c[0][0], main.escalarMul.segments[0].windows[17].mux.a[0], main.escalarMul.segments[0].windows[17].dbl2.in[0], main.escalarMul.segments[0].windows[17].adr3.in1[0], main.escalarMul.segments[0].windows[17].adr4.in1[0], main.escalarMul.segments[0].windows[17].adr5.in1[0], main.escalarMul.segments[0].windows[17].adr6.in1[0], main.escalarMul.segments[0].windows[17].adr7.in1[0], main.escalarMul.segments[0].windows[17].adr8.in1[0], main.escalarMul.segments[0].cadders[16].in2[0] --> 404068806668405629700217396135566740189839907013405696325904972051214105909 +main.escalarMul.segments[0].windows[16].out8[1], main.escalarMul.segments[0].windows[16].mux.c[1][7], main.escalarMul.segments[0].windows[16].adr8.out[1], main.escalarMul.segments[0].windows[17].base[1], main.escalarMul.segments[0].windows[17].mux.c[1][0], main.escalarMul.segments[0].windows[17].mux.a[1], main.escalarMul.segments[0].windows[17].dbl2.in[1], main.escalarMul.segments[0].windows[17].adr3.in1[1], main.escalarMul.segments[0].windows[17].adr4.in1[1], main.escalarMul.segments[0].windows[17].adr5.in1[1], main.escalarMul.segments[0].windows[17].adr6.in1[1], main.escalarMul.segments[0].windows[17].adr7.in1[1], main.escalarMul.segments[0].windows[17].adr8.in1[1], main.escalarMul.segments[0].cadders[16].in2[1] --> 13577502298094297538102870750772840996962253301974212510693757492907197848921 +main.escalarMul.segments[0].windows[16].mux.c[0][1], main.escalarMul.segments[0].windows[16].dbl2.out[0], main.escalarMul.segments[0].windows[16].adr3.in2[0] --> 3008223803056034906940584574666484279996586963366949165755611142110999966779 +main.escalarMul.segments[0].windows[16].mux.c[0][2], main.escalarMul.segments[0].windows[16].adr3.out[0], main.escalarMul.segments[0].windows[16].adr4.in2[0] --> 4376768166335407043366824096482228546437309296469699549609487372420712317509 +main.escalarMul.segments[0].windows[16].mux.c[0][3], main.escalarMul.segments[0].windows[16].adr4.out[0], main.escalarMul.segments[0].windows[16].adr5.in2[0] --> 11892577893774458276129026686569785596851344666726011461440032646307488245642 +main.escalarMul.segments[0].windows[16].mux.c[0][4], main.escalarMul.segments[0].windows[16].adr5.out[0], main.escalarMul.segments[0].windows[16].adr6.in2[0] --> 20003099081374582983898568777327031934187152350713023719808406784345408834530 +main.escalarMul.segments[0].windows[16].mux.c[0][5], main.escalarMul.segments[0].windows[16].adr6.out[0], main.escalarMul.segments[0].windows[16].adr7.in2[0] --> 4028469459878037293861074405730892414875820023270260535454978066688757105177 +main.escalarMul.segments[0].windows[16].mux.c[0][6], main.escalarMul.segments[0].windows[16].adr7.out[0], main.escalarMul.segments[0].windows[16].adr8.in2[0] --> 19125540025055569481052909272335437402332783996917108896457798692857833132944 +main.escalarMul.segments[0].windows[16].mux.c[1][1], main.escalarMul.segments[0].windows[16].dbl2.out[1], main.escalarMul.segments[0].windows[16].adr3.in2[1] --> 19419810887528682674610133231908844821524656509576344186472559386949674887750 +main.escalarMul.segments[0].windows[16].mux.c[1][2], main.escalarMul.segments[0].windows[16].adr3.out[1], main.escalarMul.segments[0].windows[16].adr4.in2[1] --> 7660785754093868328769683944539316882757041790223212502555128511853975238732 +main.escalarMul.segments[0].windows[16].mux.c[1][3], main.escalarMul.segments[0].windows[16].adr4.out[1], main.escalarMul.segments[0].windows[16].adr5.in2[1] --> 18734777341982440424717646496303903237205965678278790271819646130458367676237 +main.escalarMul.segments[0].windows[16].mux.c[1][4], main.escalarMul.segments[0].windows[16].adr5.out[1], main.escalarMul.segments[0].windows[16].adr6.in2[1] --> 10411844351240061469747568514274687450087227606770386546884503083911359392077 +main.escalarMul.segments[0].windows[16].mux.c[1][5], main.escalarMul.segments[0].windows[16].adr6.out[1], main.escalarMul.segments[0].windows[16].adr7.in2[1] --> 8578639030382116870020700733111908503728908869162378241518601585288808607142 +main.escalarMul.segments[0].windows[16].mux.c[1][6], main.escalarMul.segments[0].windows[16].adr7.out[1], main.escalarMul.segments[0].windows[16].adr8.in2[1] --> 19531590439376829565718470643380318145508377944195451371014882906158573565568 +main.escalarMul.segments[0].windows[16].mux.a210[0] --> 1855760669459950902127160808196542282787515373918297767098064680482728311707 +main.escalarMul.segments[0].windows[16].mux.a210[1] --> 21032642298947137049615689802794525706699812333019781962235524070456040348043 +main.escalarMul.segments[0].windows[16].mux.a21[0] --> 7523727458451269286769945815562105814220111206881819441786644907259048905779 +main.escalarMul.segments[0].windows[16].mux.a21[1] --> 6539497386150561090605372695728623459400587331505640565290749280229464600866 +main.escalarMul.segments[0].windows[16].mux.a20[0] --> 15683444128392384458250756216030580181752233966753755808335904697975493724359 +main.escalarMul.segments[0].windows[16].mux.a20[1] --> 5715763715560309271313559243347960967401867937535470095575241270839808489039 +main.escalarMul.segments[0].windows[16].mux.a2[0] --> 7225044400268893150916139360291103041675363493565589905061666413178071909656 +main.escalarMul.segments[0].windows[16].mux.a2[1] --> 5331307299132400146343414003112377803350748822466598303169005114075133725970 +main.escalarMul.segments[0].windows[16].mux.a10[0] --> 17285640605488706158804047432457001662929237264036796560821674502943112886228 +main.escalarMul.segments[0].windows[16].mux.a10[1] --> 18622960624306825966988389576275326268209110563199056170205660388066751711479 +main.escalarMul.segments[0].windows[16].mux.a1[0] --> 13486956357068992432630800424703574742473884839738300078560951187829183888252 +main.escalarMul.segments[0].windows[16].mux.a1[1] --> 2580248701986207005365529433377007236020563005919424258839630542017749572625 +main.escalarMul.segments[0].windows[16].mux.a0[0] --> 12118411993789620296204560902887830476033162506635549694707074957519471537522 +main.escalarMul.segments[0].windows[16].mux.a0[1] --> 14339273835421021351205978720746535174788177725272555942757061417113449221643 +main.escalarMul.segments[0].windows[16].mux.s10 --> 1 +main.escalarMul.segments[0].windows[16].dbl2.lamda --> 13900741964578456854591601365173159955657093996420992910280483425705460838728 +main.escalarMul.segments[0].windows[16].dbl2.x1_2 --> 20055278613264839816450659634134762889168000079028807264006789632879542694646 +main.escalarMul.segments[0].windows[16].adr3.lamda --> 13920614349012038426897344582432802495753090223285374742788661231258579169860 +main.escalarMul.segments[0].windows[16].adr4.lamda --> 12339939186907469465857953090528042444006941743280645678483088865282625165344 +main.escalarMul.segments[0].windows[16].adr5.lamda --> 12905306831945147646707558029405069277123433466664523120177059041328169315379 +main.escalarMul.segments[0].windows[16].adr6.lamda --> 2627047629484353094764703512210920474952931885729601961510693412670629575470 +main.escalarMul.segments[0].windows[16].adr7.lamda --> 21584246906038610334987827309399567418092009307907333453891438807696677035689 +main.escalarMul.segments[0].windows[16].adr8.lamda --> 10134042157214567137345625729602831757501096211529118967780498571817749560433 +main.escalarMul.segments[0].adders[15].out[0], main.escalarMul.segments[0].adders[16].in1[0] --> 9981928060888734452893207808632856824490704618429241380741286539028009623411 +main.escalarMul.segments[0].adders[15].out[1], main.escalarMul.segments[0].adders[16].in1[1] --> 6419308280674073284742167687218697419804779081751349690997753510559026224960 +main.escalarMul.segments[0].adders[15].lamda --> 16758043300663374233243267871112599836037882104950745435854074373215893369275 +main.escalarMul.segments[0].cadders[15].out[0], main.escalarMul.segments[0].cadders[16].in1[0] --> 10940129044182795599799846103299969638953203823621361163113081198080648800335 +main.escalarMul.segments[0].cadders[15].out[1], main.escalarMul.segments[0].cadders[16].in1[1] --> 6021992295248987253257284435031455354915802884020225956595977071993449092025 +main.escalarMul.segments[0].cadders[15].lamda --> 4394804968052088251083067956690373385939751266177169180883039493834243168319 +main.escalarMul.segments[0].windows[17].out[0], main.escalarMul.segments[0].windows[17].mux.out[0], main.escalarMul.segments[0].adders[16].in2[0] --> 21301470612553179789742055317818738919914862047803224646725751891947773341314 +main.escalarMul.segments[0].windows[17].out[1], main.escalarMul.segments[0].windows[17].mux.out[1], main.escalarMul.segments[0].adders[16].in2[1] --> 10703154172518931342934773157790946613920985703800407400705467388386867178812 +main.escalarMul.segments[0].windows[17].out8[0], main.escalarMul.segments[0].windows[17].mux.c[0][7], main.escalarMul.segments[0].windows[17].adr8.out[0], main.escalarMul.segments[0].windows[18].base[0], main.escalarMul.segments[0].windows[18].mux.c[0][0], main.escalarMul.segments[0].windows[18].mux.a[0], main.escalarMul.segments[0].windows[18].dbl2.in[0], main.escalarMul.segments[0].windows[18].adr3.in1[0], main.escalarMul.segments[0].windows[18].adr4.in1[0], main.escalarMul.segments[0].windows[18].adr5.in1[0], main.escalarMul.segments[0].windows[18].adr6.in1[0], main.escalarMul.segments[0].windows[18].adr7.in1[0], main.escalarMul.segments[0].windows[18].adr8.in1[0], main.escalarMul.segments[0].cadders[17].in2[0] --> 13737519275308988031081049593201183753837155286684500504523130678684692567900 +main.escalarMul.segments[0].windows[17].out8[1], main.escalarMul.segments[0].windows[17].mux.c[1][7], main.escalarMul.segments[0].windows[17].adr8.out[1], main.escalarMul.segments[0].windows[18].base[1], main.escalarMul.segments[0].windows[18].mux.c[1][0], main.escalarMul.segments[0].windows[18].mux.a[1], main.escalarMul.segments[0].windows[18].dbl2.in[1], main.escalarMul.segments[0].windows[18].adr3.in1[1], main.escalarMul.segments[0].windows[18].adr4.in1[1], main.escalarMul.segments[0].windows[18].adr5.in1[1], main.escalarMul.segments[0].windows[18].adr6.in1[1], main.escalarMul.segments[0].windows[18].adr7.in1[1], main.escalarMul.segments[0].windows[18].adr8.in1[1], main.escalarMul.segments[0].cadders[17].in2[1] --> 4235729067109510651827149348782916824288292216821390134061807033857223383751 +main.escalarMul.segments[0].windows[17].mux.c[0][1], main.escalarMul.segments[0].windows[17].dbl2.out[0], main.escalarMul.segments[0].windows[17].adr3.in2[0] --> 9884439542311217759859761862312961576120724045329026574345379074503253695879 +main.escalarMul.segments[0].windows[17].mux.c[0][2], main.escalarMul.segments[0].windows[17].adr3.out[0], main.escalarMul.segments[0].windows[17].adr4.in2[0] --> 5403567664682199399918290296476247995116057332662461032339367791221242509896 +main.escalarMul.segments[0].windows[17].mux.c[0][3], main.escalarMul.segments[0].windows[17].adr4.out[0], main.escalarMul.segments[0].windows[17].adr5.in2[0] --> 2006665699037655690482438709312178241767252530839831532911009633144448367987 +main.escalarMul.segments[0].windows[17].mux.c[0][4], main.escalarMul.segments[0].windows[17].adr5.out[0], main.escalarMul.segments[0].windows[17].adr6.in2[0] --> 21301470612553179789742055317818738919914862047803224646725751891947773341314 +main.escalarMul.segments[0].windows[17].mux.c[0][5], main.escalarMul.segments[0].windows[17].adr6.out[0], main.escalarMul.segments[0].windows[17].adr7.in2[0] --> 11526166493122322255300387576777341735333238646836228287323311358725709935001 +main.escalarMul.segments[0].windows[17].mux.c[0][6], main.escalarMul.segments[0].windows[17].adr7.out[0], main.escalarMul.segments[0].windows[17].adr8.in2[0] --> 8283138012996397889591768193863355111671624559430157715472478963684926813136 +main.escalarMul.segments[0].windows[17].mux.c[1][1], main.escalarMul.segments[0].windows[17].dbl2.out[1], main.escalarMul.segments[0].windows[17].adr3.in2[1] --> 20239481122830939509929643670528255320480777511339698096501510730680383850170 +main.escalarMul.segments[0].windows[17].mux.c[1][2], main.escalarMul.segments[0].windows[17].adr3.out[1], main.escalarMul.segments[0].windows[17].adr4.in2[1] --> 18833012915778643814301611801707388161461258433352580330108074868717252621685 +main.escalarMul.segments[0].windows[17].mux.c[1][3], main.escalarMul.segments[0].windows[17].adr4.out[1], main.escalarMul.segments[0].windows[17].adr5.in2[1] --> 9732657588297131892792788790143504176053941460444302287147649424285107641742 +main.escalarMul.segments[0].windows[17].mux.c[1][4], main.escalarMul.segments[0].windows[17].adr5.out[1], main.escalarMul.segments[0].windows[17].adr6.in2[1] --> 10703154172518931342934773157790946613920985703800407400705467388386867178812 +main.escalarMul.segments[0].windows[17].mux.c[1][5], main.escalarMul.segments[0].windows[17].adr6.out[1], main.escalarMul.segments[0].windows[17].adr7.in2[1] --> 8766629290114181306941669586434500352462138454489009301322747935549639608215 +main.escalarMul.segments[0].windows[17].mux.c[1][6], main.escalarMul.segments[0].windows[17].adr7.out[1], main.escalarMul.segments[0].windows[17].adr8.in2[1] --> 15764956615027242562233992365800223459804772978665128310967481492023625690058 +main.escalarMul.segments[0].windows[17].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[17].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[17].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[17].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[17].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[17].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[17].mux.a2[0] --> 20897401805884774160041837921683172179725022140789818950399846919896559235405 +main.escalarMul.segments[0].windows[17].mux.a2[1] --> 19013894746263909027078308152275380705507096802242229233709914082055477825508 +main.escalarMul.segments[0].windows[17].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[17].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[17].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[17].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[17].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[17].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[17].mux.s10 --> 0 +main.escalarMul.segments[0].windows[17].dbl2.lamda --> 16702122739134275913817378295092002906337321105586486148830651000335413668331 +main.escalarMul.segments[0].windows[17].dbl2.x1_2 --> 1761916876163417296210847931885136068364281946426179230634727970760179209168 +main.escalarMul.segments[0].windows[17].adr3.lamda --> 16860266385486887802299328710360401312070537895675028469130095196486946200944 +main.escalarMul.segments[0].windows[17].adr4.lamda --> 17317139906282028081474226209893080154810036908549337990923820316140777602215 +main.escalarMul.segments[0].windows[17].adr5.lamda --> 4976711432313006362325102472067357604141606021532214410765638055699973002375 +main.escalarMul.segments[0].windows[17].adr6.lamda --> 1564080429731321866610518922635120562293135807332056405566458457005752898217 +main.escalarMul.segments[0].windows[17].adr7.lamda --> 8010007516710947851735613477079464867302753418070314502430907983680608681728 +main.escalarMul.segments[0].windows[17].adr8.lamda --> 14694701342437687972198203052000864018101730128538867521824574285535348031610 +main.escalarMul.segments[0].adders[16].out[0], main.escalarMul.segments[0].adders[17].in1[0] --> 9289459809408120246144702964698692274669746157165660745031647316167345121178 +main.escalarMul.segments[0].adders[16].out[1], main.escalarMul.segments[0].adders[17].in1[1] --> 18628205205869728780747721633590193927158442389004634453007972619719404242106 +main.escalarMul.segments[0].adders[16].lamda --> 3229780377105121258245400977589516221707264837105869408676562651535886828921 +main.escalarMul.segments[0].cadders[16].out[0], main.escalarMul.segments[0].cadders[17].in1[0] --> 21791587740350912014010735959175955599647096377644999886656468919170005006552 +main.escalarMul.segments[0].cadders[16].out[1], main.escalarMul.segments[0].cadders[17].in1[1] --> 6344795274213037684306407021876825780282315680320911880221474954305727965824 +main.escalarMul.segments[0].cadders[16].lamda --> 4961812061412908619935034205490494921107764624625093351918775229489458606177 +main.escalarMul.segments[0].windows[18].out[0], main.escalarMul.segments[0].windows[18].mux.out[0], main.escalarMul.segments[0].adders[17].in2[0] --> 12865724558657057528190311985204017901317613923410973828809252068501757515230 +main.escalarMul.segments[0].windows[18].out[1], main.escalarMul.segments[0].windows[18].mux.out[1], main.escalarMul.segments[0].adders[17].in2[1] --> 4941855247910021544246922617289504967062683160091903911763381237655441200555 +main.escalarMul.segments[0].windows[18].out8[0], main.escalarMul.segments[0].windows[18].mux.c[0][7], main.escalarMul.segments[0].windows[18].adr8.out[0], main.escalarMul.segments[0].windows[19].base[0], main.escalarMul.segments[0].windows[19].mux.c[0][0], main.escalarMul.segments[0].windows[19].mux.a[0], main.escalarMul.segments[0].windows[19].dbl2.in[0], main.escalarMul.segments[0].windows[19].adr3.in1[0], main.escalarMul.segments[0].windows[19].adr4.in1[0], main.escalarMul.segments[0].windows[19].adr5.in1[0], main.escalarMul.segments[0].windows[19].adr6.in1[0], main.escalarMul.segments[0].windows[19].adr7.in1[0], main.escalarMul.segments[0].windows[19].adr8.in1[0], main.escalarMul.segments[0].cadders[18].in2[0] --> 1633539991880954971865048298387870316130945483254013329453611081475136634976 +main.escalarMul.segments[0].windows[18].out8[1], main.escalarMul.segments[0].windows[18].mux.c[1][7], main.escalarMul.segments[0].windows[18].adr8.out[1], main.escalarMul.segments[0].windows[19].base[1], main.escalarMul.segments[0].windows[19].mux.c[1][0], main.escalarMul.segments[0].windows[19].mux.a[1], main.escalarMul.segments[0].windows[19].dbl2.in[1], main.escalarMul.segments[0].windows[19].adr3.in1[1], main.escalarMul.segments[0].windows[19].adr4.in1[1], main.escalarMul.segments[0].windows[19].adr5.in1[1], main.escalarMul.segments[0].windows[19].adr6.in1[1], main.escalarMul.segments[0].windows[19].adr7.in1[1], main.escalarMul.segments[0].windows[19].adr8.in1[1], main.escalarMul.segments[0].cadders[18].in2[1] --> 20755477509235723397956960275649669397095057526438948965525124021961706228702 +main.escalarMul.segments[0].windows[18].mux.c[0][1], main.escalarMul.segments[0].windows[18].dbl2.out[0], main.escalarMul.segments[0].windows[18].adr3.in2[0] --> 9825990949138966123091382314573094819284714638343479172298079339128355052051 +main.escalarMul.segments[0].windows[18].mux.c[0][2], main.escalarMul.segments[0].windows[18].adr3.out[0], main.escalarMul.segments[0].windows[18].adr4.in2[0] --> 12865724558657057528190311985204017901317613923410973828809252068501757515230 +main.escalarMul.segments[0].windows[18].mux.c[0][3], main.escalarMul.segments[0].windows[18].adr4.out[0], main.escalarMul.segments[0].windows[18].adr5.in2[0] --> 18936872889427911400071799259326463354837490514664963536027255104485479811180 +main.escalarMul.segments[0].windows[18].mux.c[0][4], main.escalarMul.segments[0].windows[18].adr5.out[0], main.escalarMul.segments[0].windows[18].adr6.in2[0] --> 19167111221050198052640177957533664226058501409545020474105438975017829573566 +main.escalarMul.segments[0].windows[18].mux.c[0][5], main.escalarMul.segments[0].windows[18].adr6.out[0], main.escalarMul.segments[0].windows[18].adr7.in2[0] --> 12215904809978495247399710555992551337626231846951483742412329659855831473397 +main.escalarMul.segments[0].windows[18].mux.c[0][6], main.escalarMul.segments[0].windows[18].adr7.out[0], main.escalarMul.segments[0].windows[18].adr8.in2[0] --> 20428210159902181428506587790196182384942381705494086033751489969622708822741 +main.escalarMul.segments[0].windows[18].mux.c[1][1], main.escalarMul.segments[0].windows[18].dbl2.out[1], main.escalarMul.segments[0].windows[18].adr3.in2[1] --> 7164676033738186958512397346787329273217085066184760555388071843916148425516 +main.escalarMul.segments[0].windows[18].mux.c[1][2], main.escalarMul.segments[0].windows[18].adr3.out[1], main.escalarMul.segments[0].windows[18].adr4.in2[1] --> 4941855247910021544246922617289504967062683160091903911763381237655441200555 +main.escalarMul.segments[0].windows[18].mux.c[1][3], main.escalarMul.segments[0].windows[18].adr4.out[1], main.escalarMul.segments[0].windows[18].adr5.in2[1] --> 7307938267722458556723853860028332680677913231779977048375947364332489932777 +main.escalarMul.segments[0].windows[18].mux.c[1][4], main.escalarMul.segments[0].windows[18].adr5.out[1], main.escalarMul.segments[0].windows[18].adr6.in2[1] --> 21291435582717101271161282363006269325546231573898269508024129387772330568022 +main.escalarMul.segments[0].windows[18].mux.c[1][5], main.escalarMul.segments[0].windows[18].adr6.out[1], main.escalarMul.segments[0].windows[18].adr7.in2[1] --> 15989529791869983623107282012870350134536581466737435959768895600716382064312 +main.escalarMul.segments[0].windows[18].mux.c[1][6], main.escalarMul.segments[0].windows[18].adr7.out[1], main.escalarMul.segments[0].windows[18].adr8.in2[1] --> 7863058727815382508801223021232744632762539017232225083547746628650829535289 +main.escalarMul.segments[0].windows[18].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[18].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[18].mux.a21[0] --> 2132893655503913878757147440659684011403421659222592235359929604787814301845 +main.escalarMul.segments[0].windows[18].mux.a21[1] --> 7753739836137045567466573134977162252990280900479476141520247223656089646080 +main.escalarMul.segments[0].windows[18].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[18].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[18].mux.a2[0] --> 5429591945741210021559128364332480472221346122860519969582308296333137005666 +main.escalarMul.segments[0].windows[18].mux.a2[1] --> 17055706515607590619334133014223352501257939357076879373962322353915107184271 +main.escalarMul.segments[0].windows[18].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[18].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[18].mux.a1[0] --> 21016448155187344719355668137260109236028823037142507667984325576392873442947 +main.escalarMul.segments[0].windows[18].mux.a1[1] --> 706126180800510892419773268506588142774390943270513777701574203798217816804 +main.escalarMul.segments[0].windows[18].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[18].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[18].mux.s10 --> 0 +main.escalarMul.segments[0].windows[18].dbl2.lamda --> 3668686940561145116706147206408046197090032213964802125620247647987501459908 +main.escalarMul.segments[0].windows[18].dbl2.x1_2 --> 2610555679684213127588936648613362692571397486721774252642127704064466586820 +main.escalarMul.segments[0].windows[18].adr3.lamda --> 12008008391253208521809755507285816654743813899468375181904432437308484113276 +main.escalarMul.segments[0].windows[18].adr4.lamda --> 636694343813167548944044826753196639617318649689595415363996726640997762857 +main.escalarMul.segments[0].windows[18].adr5.lamda --> 15259643721633666954787553182045416512030340255879660033127562080094982705457 +main.escalarMul.segments[0].windows[18].adr6.lamda --> 3176506383350196304344147588036015096940031400239570611430038711293192301065 +main.escalarMul.segments[0].windows[18].adr7.lamda --> 760487274832861902639361275818912962639210826195791312041991660732949624461 +main.escalarMul.segments[0].windows[18].adr8.lamda --> 18332808161049788401422099444658747747036588960398478649753326048110504470074 +main.escalarMul.segments[0].adders[17].out[0], main.escalarMul.segments[0].adders[18].in1[0] --> 9942645037839093002647842058292799919053637880548450759665624027137139684536 +main.escalarMul.segments[0].adders[17].out[1], main.escalarMul.segments[0].adders[18].in1[1] --> 16318152171442345608738453447178125444993550184405176798305167542089465609859 +main.escalarMul.segments[0].adders[17].lamda --> 11760242883501232308250850448460416247683978283197662867420886876372552704966 +main.escalarMul.segments[0].cadders[17].out[0], main.escalarMul.segments[0].cadders[18].in1[0] --> 7852125002839872458294115340621981452557195689876063247155986192608578725924 +main.escalarMul.segments[0].cadders[17].out[1], main.escalarMul.segments[0].cadders[18].in1[1] --> 7190518914452794337886233651044188387362865951592655927855731430430148095306 +main.escalarMul.segments[0].cadders[17].lamda --> 12181358015330430014245608321037789921704763886162881096528471035082967977205 +main.escalarMul.segments[0].windows[19].out[0], main.escalarMul.segments[0].windows[19].mux.out[0], main.escalarMul.segments[0].adders[18].in2[0] --> 10993798143889071059925501497559053568576704944521734067867539131523089214233 +main.escalarMul.segments[0].windows[19].out[1], main.escalarMul.segments[0].windows[19].mux.out[1], main.escalarMul.segments[0].adders[18].in2[1] --> 21224237736708595956929310077729864148267864348905904831668326926467525270654 +main.escalarMul.segments[0].windows[19].out8[0], main.escalarMul.segments[0].windows[19].mux.c[0][7], main.escalarMul.segments[0].windows[19].adr8.out[0], main.escalarMul.segments[0].windows[20].base[0], main.escalarMul.segments[0].windows[20].mux.c[0][0], main.escalarMul.segments[0].windows[20].mux.a[0], main.escalarMul.segments[0].windows[20].dbl2.in[0], main.escalarMul.segments[0].windows[20].adr3.in1[0], main.escalarMul.segments[0].windows[20].adr4.in1[0], main.escalarMul.segments[0].windows[20].adr5.in1[0], main.escalarMul.segments[0].windows[20].adr6.in1[0], main.escalarMul.segments[0].windows[20].adr7.in1[0], main.escalarMul.segments[0].windows[20].adr8.in1[0], main.escalarMul.segments[0].cadders[19].in2[0] --> 15564404771261581328315832218018252967944230091602459148388851540940186993128 +main.escalarMul.segments[0].windows[19].out8[1], main.escalarMul.segments[0].windows[19].mux.c[1][7], main.escalarMul.segments[0].windows[19].adr8.out[1], main.escalarMul.segments[0].windows[20].base[1], main.escalarMul.segments[0].windows[20].mux.c[1][0], main.escalarMul.segments[0].windows[20].mux.a[1], main.escalarMul.segments[0].windows[20].dbl2.in[1], main.escalarMul.segments[0].windows[20].adr3.in1[1], main.escalarMul.segments[0].windows[20].adr4.in1[1], main.escalarMul.segments[0].windows[20].adr5.in1[1], main.escalarMul.segments[0].windows[20].adr6.in1[1], main.escalarMul.segments[0].windows[20].adr7.in1[1], main.escalarMul.segments[0].windows[20].adr8.in1[1], main.escalarMul.segments[0].cadders[19].in2[1] --> 19430149095743773767951969713389162463536594006096215851271986433788135105692 +main.escalarMul.segments[0].windows[19].mux.c[0][1], main.escalarMul.segments[0].windows[19].dbl2.out[0], main.escalarMul.segments[0].windows[19].adr3.in2[0] --> 14472926919053473094144226704602316403009507542871992603754716395085480515677 +main.escalarMul.segments[0].windows[19].mux.c[0][2], main.escalarMul.segments[0].windows[19].adr3.out[0], main.escalarMul.segments[0].windows[19].adr4.in2[0] --> 10993798143889071059925501497559053568576704944521734067867539131523089214233 +main.escalarMul.segments[0].windows[19].mux.c[0][3], main.escalarMul.segments[0].windows[19].adr4.out[0], main.escalarMul.segments[0].windows[19].adr5.in2[0] --> 9085234171239918421873484756025449991959949498654480608458553428077600316656 +main.escalarMul.segments[0].windows[19].mux.c[0][4], main.escalarMul.segments[0].windows[19].adr5.out[0], main.escalarMul.segments[0].windows[19].adr6.in2[0] --> 11053390530257845313855629653779937051217853774234802800263444593166027698735 +main.escalarMul.segments[0].windows[19].mux.c[0][5], main.escalarMul.segments[0].windows[19].adr6.out[0], main.escalarMul.segments[0].windows[19].adr7.in2[0] --> 10850774347019761661457031774597363988542056089219329527554318587005961251948 +main.escalarMul.segments[0].windows[19].mux.c[0][6], main.escalarMul.segments[0].windows[19].adr7.out[0], main.escalarMul.segments[0].windows[19].adr8.in2[0] --> 7071568705681686837204008724919889661787508342684347448049708872755440039905 +main.escalarMul.segments[0].windows[19].mux.c[1][1], main.escalarMul.segments[0].windows[19].dbl2.out[1], main.escalarMul.segments[0].windows[19].adr3.in2[1] --> 953677100490866474310296852143672831217327923799037366361170866602039576155 +main.escalarMul.segments[0].windows[19].mux.c[1][2], main.escalarMul.segments[0].windows[19].adr3.out[1], main.escalarMul.segments[0].windows[19].adr4.in2[1] --> 21224237736708595956929310077729864148267864348905904831668326926467525270654 +main.escalarMul.segments[0].windows[19].mux.c[1][3], main.escalarMul.segments[0].windows[19].adr4.out[1], main.escalarMul.segments[0].windows[19].adr5.in2[1] --> 10016768577602782028338537384982710571323822955031683417027805623165148541080 +main.escalarMul.segments[0].windows[19].mux.c[1][4], main.escalarMul.segments[0].windows[19].adr5.out[1], main.escalarMul.segments[0].windows[19].adr6.in2[1] --> 15836133259667055410176381184391190387239858771365415505128224644490670034125 +main.escalarMul.segments[0].windows[19].mux.c[1][5], main.escalarMul.segments[0].windows[19].adr6.out[1], main.escalarMul.segments[0].windows[19].adr7.in2[1] --> 6885010511179015459637505022161737576324702851135579495418742868156290618742 +main.escalarMul.segments[0].windows[19].mux.c[1][6], main.escalarMul.segments[0].windows[19].adr7.out[1], main.escalarMul.segments[0].windows[19].adr8.in2[1] --> 3304955317649889281024663377092141639659083099288742625320378689227182477136 +main.escalarMul.segments[0].windows[19].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[19].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[19].mux.a21[0] --> 8546162895255000657534331617226044446672259507597858253070540416117268257530 +main.escalarMul.segments[0].windows[19].mux.a21[1] --> 8888304702349236534122338135878031589794781905872405597747155326806501896676 +main.escalarMul.segments[0].windows[19].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[19].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[19].mux.a2[0] --> 9419850538376890341990581355392066735086908290980789470809833511690891063759 +main.escalarMul.segments[0].windows[19].mux.a2[1] --> 16968898622270607234465826653998796078693165645342500883301304809104772301040 +main.escalarMul.segments[0].windows[19].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[19].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[19].mux.a1[0] --> 9360258152008116088060453199171183252445759461267720738413928050047952579257 +main.escalarMul.segments[0].windows[19].mux.a1[1] --> 468760227472872558972349802080194751172806822466955866143202904505819041952 +main.escalarMul.segments[0].windows[19].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[19].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[19].mux.s10 --> 0 +main.escalarMul.segments[0].windows[19].dbl2.lamda --> 17305850168881969128799676799747265102798200216657869372058590829081977824847 +main.escalarMul.segments[0].windows[19].dbl2.x1_2 --> 15883155575960966960440367747884623053124876292582445141842360891929434764550 +main.escalarMul.segments[0].windows[19].adr3.lamda --> 14262626076254463502791303360847680921372106830327575794639801616486471923361 +main.escalarMul.segments[0].windows[19].adr4.lamda --> 18910041208354476075867860171389466298823454063406266107897183066438292319946 +main.escalarMul.segments[0].windows[19].adr5.lamda --> 21316405530301104809386544157473782880816638124855013782094911377702506833893 +main.escalarMul.segments[0].windows[19].adr6.lamda --> 21073841648545726042611488720270041225257050110729324915219523420500379414282 +main.escalarMul.segments[0].windows[19].adr7.lamda --> 3960920061046121075813605793195484759694938723996222064466587647406896751373 +main.escalarMul.segments[0].windows[19].adr8.lamda --> 3688246078202177434615531461953213045628186156819016481835758091911145348086 +main.escalarMul.segments[0].adders[18].out[0], main.escalarMul.segments[0].adders[19].in1[0] --> 7700442154872951355111319950392214885157000164602490127806941170288244012336 +main.escalarMul.segments[0].adders[18].out[1], main.escalarMul.segments[0].adders[19].in1[1] --> 1521574306141220942657418105350974904820109157000448019160295903529338084579 +main.escalarMul.segments[0].adders[18].lamda --> 6176401736183618443784379496622217458397608839604163555035593950264491854004 +main.escalarMul.segments[0].cadders[18].out[0], main.escalarMul.segments[0].cadders[19].in1[0] --> 11713227885240212647783394710621770040291298093619984197409419380719755090532 +main.escalarMul.segments[0].cadders[18].out[1], main.escalarMul.segments[0].cadders[19].in1[1] --> 16497841113703426391714993239691924859711887914277043380298685272324612149986 +main.escalarMul.segments[0].cadders[18].lamda --> 15513655601695133846986434584615879216855321057229277832368062491394972341902 +main.escalarMul.segments[0].windows[20].out[0], main.escalarMul.segments[0].windows[20].mux.out[0], main.escalarMul.segments[0].adders[19].in2[0] --> 21573679998308934732244793049275959729739602121858193175431878715521735205965 +main.escalarMul.segments[0].windows[20].out[1], main.escalarMul.segments[0].windows[20].mux.out[1], main.escalarMul.segments[0].adders[19].in2[1] --> 18863208439946344724516484369555568562638186955822252510174446080912433436 +main.escalarMul.segments[0].windows[20].out8[0], main.escalarMul.segments[0].windows[20].mux.c[0][7], main.escalarMul.segments[0].windows[20].adr8.out[0], main.escalarMul.segments[0].windows[21].base[0], main.escalarMul.segments[0].windows[21].mux.c[0][0], main.escalarMul.segments[0].windows[21].mux.a[0], main.escalarMul.segments[0].windows[21].dbl2.in[0], main.escalarMul.segments[0].windows[21].adr3.in1[0], main.escalarMul.segments[0].windows[21].adr4.in1[0], main.escalarMul.segments[0].windows[21].adr5.in1[0], main.escalarMul.segments[0].windows[21].adr6.in1[0], main.escalarMul.segments[0].windows[21].adr7.in1[0], main.escalarMul.segments[0].windows[21].adr8.in1[0], main.escalarMul.segments[0].cadders[20].in2[0] --> 1521971223607226241571926961147547283152810217602835316154814557808552839120 +main.escalarMul.segments[0].windows[20].out8[1], main.escalarMul.segments[0].windows[20].mux.c[1][7], main.escalarMul.segments[0].windows[20].adr8.out[1], main.escalarMul.segments[0].windows[21].base[1], main.escalarMul.segments[0].windows[21].mux.c[1][0], main.escalarMul.segments[0].windows[21].mux.a[1], main.escalarMul.segments[0].windows[21].dbl2.in[1], main.escalarMul.segments[0].windows[21].adr3.in1[1], main.escalarMul.segments[0].windows[21].adr4.in1[1], main.escalarMul.segments[0].windows[21].adr5.in1[1], main.escalarMul.segments[0].windows[21].adr6.in1[1], main.escalarMul.segments[0].windows[21].adr7.in1[1], main.escalarMul.segments[0].windows[21].adr8.in1[1], main.escalarMul.segments[0].cadders[20].in2[1] --> 12595534080946081473796421837858155460072820429416996618995446450384779727215 +main.escalarMul.segments[0].windows[20].mux.c[0][1], main.escalarMul.segments[0].windows[20].dbl2.out[0], main.escalarMul.segments[0].windows[20].adr3.in2[0] --> 1118456644982582070996805457099008135982278910597263643651474797342367238977 +main.escalarMul.segments[0].windows[20].mux.c[0][2], main.escalarMul.segments[0].windows[20].adr3.out[0], main.escalarMul.segments[0].windows[20].adr4.in2[0] --> 21573679998308934732244793049275959729739602121858193175431878715521735205965 +main.escalarMul.segments[0].windows[20].mux.c[0][3], main.escalarMul.segments[0].windows[20].adr4.out[0], main.escalarMul.segments[0].windows[20].adr5.in2[0] --> 1457896494661618369498754321666324844861396097463112492904261613704766501440 +main.escalarMul.segments[0].windows[20].mux.c[0][4], main.escalarMul.segments[0].windows[20].adr5.out[0], main.escalarMul.segments[0].windows[20].adr6.in2[0] --> 16875679235241003867012080318943399094504541912632511728695958064601595672197 +main.escalarMul.segments[0].windows[20].mux.c[0][5], main.escalarMul.segments[0].windows[20].adr6.out[0], main.escalarMul.segments[0].windows[20].adr7.in2[0] --> 13316340381173763550959647072036438336196913544158192776830308823023244838918 +main.escalarMul.segments[0].windows[20].mux.c[0][6], main.escalarMul.segments[0].windows[20].adr7.out[0], main.escalarMul.segments[0].windows[20].adr8.in2[0] --> 17695918826076283594850758861068690841675866977040971829883888088101232032498 +main.escalarMul.segments[0].windows[20].mux.c[1][1], main.escalarMul.segments[0].windows[20].dbl2.out[1], main.escalarMul.segments[0].windows[20].adr3.in2[1] --> 8906841552575143009227462794878195969643157575426419562112135591363032618111 +main.escalarMul.segments[0].windows[20].mux.c[1][2], main.escalarMul.segments[0].windows[20].adr3.out[1], main.escalarMul.segments[0].windows[20].adr4.in2[1] --> 18863208439946344724516484369555568562638186955822252510174446080912433436 +main.escalarMul.segments[0].windows[20].mux.c[1][3], main.escalarMul.segments[0].windows[20].adr4.out[1], main.escalarMul.segments[0].windows[20].adr5.in2[1] --> 9458878584328612824405381352876777896938115203369031199798777420879735126101 +main.escalarMul.segments[0].windows[20].mux.c[1][4], main.escalarMul.segments[0].windows[20].adr5.out[1], main.escalarMul.segments[0].windows[20].adr6.in2[1] --> 18638753587715756959374348924609769610955002119104146945808268910670161310564 +main.escalarMul.segments[0].windows[20].mux.c[1][5], main.escalarMul.segments[0].windows[20].adr6.out[1], main.escalarMul.segments[0].windows[20].adr7.in2[1] --> 9153392496365593018456777696280702112775081162423406395478927803647550428449 +main.escalarMul.segments[0].windows[20].mux.c[1][6], main.escalarMul.segments[0].windows[20].adr7.out[1], main.escalarMul.segments[0].windows[20].adr8.in2[1] --> 19279705539857650743010511027751782715934309917718609988225932955740152134918 +main.escalarMul.segments[0].windows[20].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[20].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[20].mux.a21[0] --> 16699207235627201546156123456124860073924317434568760417843107035493896643081 +main.escalarMul.segments[0].windows[20].mux.a21[1] --> 20052237839445721206863615332161619999953263617754856641179476032777213496610 +main.escalarMul.segments[0].windows[20].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[20].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[20].mux.a2[0] --> 1311274463979422538696248100925146126560311821030052580307106523661408679069 +main.escalarMul.segments[0].windows[20].mux.a2[1] --> 21096847363811258413668784956477882235966772513423965438234486663457834700489 +main.escalarMul.segments[0].windows[20].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[20].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[20].mux.a1[0] --> 6009275227047353403928960831257706761795372030255734027043027174581548212837 +main.escalarMul.segments[0].windows[20].mux.a1[1] --> 2476956984535447799018952516237668193574408581275640744936392198868585823361 +main.escalarMul.segments[0].windows[20].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[20].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[20].mux.s10 --> 0 +main.escalarMul.segments[0].windows[20].dbl2.lamda --> 55671402982474165673501561845280705926606276771626812289357388525546762316 +main.escalarMul.segments[0].windows[20].dbl2.x1_2 --> 13741953119863768028604426482046228019832173685871047776905250620810283918890 +main.escalarMul.segments[0].windows[20].adr3.lamda --> 6177463835055581600044602966859844854421910338698176529622269598790995005612 +main.escalarMul.segments[0].windows[20].adr4.lamda --> 14284668997596023472382041911911787172469648904578910860483686678877259056051 +main.escalarMul.segments[0].windows[20].adr5.lamda --> 4012352925270051262535480649617610876819586852066149897545697778615978897395 +main.escalarMul.segments[0].windows[20].adr6.lamda --> 5270080536038367649876805886483737319554044643330248692692502601947263940358 +main.escalarMul.segments[0].windows[20].adr7.lamda --> 5924210628886373117156321998545834218333851430813145270482778230523678082432 +main.escalarMul.segments[0].windows[20].adr8.lamda --> 18839792898979427937581659882110719832597972827267155574455101933729393748382 +main.escalarMul.segments[0].adders[19].out[0], main.escalarMul.segments[0].adders[20].in1[0] --> 3705456528372343897806518852687748116145873063535652722667012398189545554591 +main.escalarMul.segments[0].adders[19].out[1], main.escalarMul.segments[0].adders[20].in1[1] --> 2954063204322194863641550319906215794100724393987966202063456663711363667153 +main.escalarMul.segments[0].adders[19].lamda --> 14847782486514808203968022907007568788868849552521777889427358732266735342219 +main.escalarMul.segments[0].cadders[19].out[0], main.escalarMul.segments[0].cadders[20].in1[0] --> 12729776792908655250610135903739080627288255679165461327952115426347432318824 +main.escalarMul.segments[0].cadders[19].out[1], main.escalarMul.segments[0].cadders[20].in1[1] --> 5525705298861295780131303824881730978011952884525524281441008184459640583086 +main.escalarMul.segments[0].cadders[19].lamda --> 14792808305219018854526358612274540574601322898394828497542275706020933250361 +main.escalarMul.segments[0].windows[21].out[0], main.escalarMul.segments[0].windows[21].mux.out[0], main.escalarMul.segments[0].adders[20].in2[0] --> 10747283458597382722950858765209416320260187791792925781415243748634742221127 +main.escalarMul.segments[0].windows[21].out[1], main.escalarMul.segments[0].windows[21].mux.out[1], main.escalarMul.segments[0].adders[20].in2[1] --> 1226721279220949177887053421246363959661411605454570647930930798734172435105 +main.escalarMul.segments[0].windows[21].out8[0], main.escalarMul.segments[0].windows[21].mux.c[0][7], main.escalarMul.segments[0].windows[21].adr8.out[0], main.escalarMul.segments[0].windows[22].base[0], main.escalarMul.segments[0].windows[22].mux.c[0][0], main.escalarMul.segments[0].windows[22].mux.a[0], main.escalarMul.segments[0].windows[22].dbl2.in[0], main.escalarMul.segments[0].windows[22].adr3.in1[0], main.escalarMul.segments[0].windows[22].adr4.in1[0], main.escalarMul.segments[0].windows[22].adr5.in1[0], main.escalarMul.segments[0].windows[22].adr6.in1[0], main.escalarMul.segments[0].windows[22].adr7.in1[0], main.escalarMul.segments[0].windows[22].adr8.in1[0], main.escalarMul.segments[0].cadders[21].in2[0] --> 5198963890076566671678370501081155207004936579112625241309255737916877665778 +main.escalarMul.segments[0].windows[21].out8[1], main.escalarMul.segments[0].windows[21].mux.c[1][7], main.escalarMul.segments[0].windows[21].adr8.out[1], main.escalarMul.segments[0].windows[22].base[1], main.escalarMul.segments[0].windows[22].mux.c[1][0], main.escalarMul.segments[0].windows[22].mux.a[1], main.escalarMul.segments[0].windows[22].dbl2.in[1], main.escalarMul.segments[0].windows[22].adr3.in1[1], main.escalarMul.segments[0].windows[22].adr4.in1[1], main.escalarMul.segments[0].windows[22].adr5.in1[1], main.escalarMul.segments[0].windows[22].adr6.in1[1], main.escalarMul.segments[0].windows[22].adr7.in1[1], main.escalarMul.segments[0].windows[22].adr8.in1[1], main.escalarMul.segments[0].cadders[21].in2[1] --> 18970640638442378661699099097206044430662823893652954462091195238616787659520 +main.escalarMul.segments[0].windows[21].mux.c[0][1], main.escalarMul.segments[0].windows[21].dbl2.out[0], main.escalarMul.segments[0].windows[21].adr3.in2[0] --> 1870679730832337496015734017503098782192728239754998588729624879415874587171 +main.escalarMul.segments[0].windows[21].mux.c[0][2], main.escalarMul.segments[0].windows[21].adr3.out[0], main.escalarMul.segments[0].windows[21].adr4.in2[0] --> 8307549609242723878375380618272224903047890335421117111637177105323983839608 +main.escalarMul.segments[0].windows[21].mux.c[0][3], main.escalarMul.segments[0].windows[21].adr4.out[0], main.escalarMul.segments[0].windows[21].adr5.in2[0] --> 21033705009060346780552718905300178948652857395506134411396588677695195217432 +main.escalarMul.segments[0].windows[21].mux.c[0][4], main.escalarMul.segments[0].windows[21].adr5.out[0], main.escalarMul.segments[0].windows[21].adr6.in2[0] --> 7795340520913160528297358382122754124643943692017424144707962437782121617120 +main.escalarMul.segments[0].windows[21].mux.c[0][5], main.escalarMul.segments[0].windows[21].adr6.out[0], main.escalarMul.segments[0].windows[21].adr7.in2[0] --> 5783725890531949568217018341872022040371237107481548043929836743904577034597 +main.escalarMul.segments[0].windows[21].mux.c[0][6], main.escalarMul.segments[0].windows[21].adr7.out[0], main.escalarMul.segments[0].windows[21].adr8.in2[0] --> 10747283458597382722950858765209416320260187791792925781415243748634742221127 +main.escalarMul.segments[0].windows[21].mux.c[1][1], main.escalarMul.segments[0].windows[21].dbl2.out[1], main.escalarMul.segments[0].windows[21].adr3.in2[1] --> 6936907920828889601834734430799470770663690965291238486116050063204858127827 +main.escalarMul.segments[0].windows[21].mux.c[1][2], main.escalarMul.segments[0].windows[21].adr3.out[1], main.escalarMul.segments[0].windows[21].adr4.in2[1] --> 7458368029169746539440714250986680979291933170354759686836163812094579018644 +main.escalarMul.segments[0].windows[21].mux.c[1][3], main.escalarMul.segments[0].windows[21].adr4.out[1], main.escalarMul.segments[0].windows[21].adr5.in2[1] --> 7530451654840936359739239741988160392310711687049155916188356491778030067977 +main.escalarMul.segments[0].windows[21].mux.c[1][4], main.escalarMul.segments[0].windows[21].adr5.out[1], main.escalarMul.segments[0].windows[21].adr6.in2[1] --> 12501411152524512989715770562963120378243597761884172564661651560970873858159 +main.escalarMul.segments[0].windows[21].mux.c[1][5], main.escalarMul.segments[0].windows[21].adr6.out[1], main.escalarMul.segments[0].windows[21].adr7.in2[1] --> 4743493046708288191142273712920718892850616467769183333023382298420319327017 +main.escalarMul.segments[0].windows[21].mux.c[1][6], main.escalarMul.segments[0].windows[21].adr7.out[1], main.escalarMul.segments[0].windows[21].adr8.in2[1] --> 1226721279220949177887053421246363959661411605454570647930930798734172435105 +main.escalarMul.segments[0].windows[21].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[21].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[21].mux.a21[0] --> 18054607423887999780096452471219259664269528382373254184923122949912998099136 +main.escalarMul.segments[0].windows[21].mux.a21[1] --> 15750719050312046344773396190411993150747065503048669359126766062629307781134 +main.escalarMul.segments[0].windows[21].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[21].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[21].mux.a2[0] --> 6273369297305934286725431420975206841491133474414588828553147879973568778000 +main.escalarMul.segments[0].windows[21].mux.a2[1] --> 21794119943417706738165754470362240006719141732883210289364409297161902626561 +main.escalarMul.segments[0].windows[21].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[21].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[21].mux.a1[0] --> 6785578385635497636803453657124677619895080117818281795482362547515431000488 +main.escalarMul.segments[0].windows[21].mux.a1[1] --> 16751076820062940287890698158385800607767477141353797411538921548285607787046 +main.escalarMul.segments[0].windows[21].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[21].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[21].mux.s10 --> 0 +main.escalarMul.segments[0].windows[21].dbl2.lamda --> 10277567348132503307226996462459270892626895282930649323601537029854169961037 +main.escalarMul.segments[0].windows[21].dbl2.x1_2 --> 15030021292786391604459801998299543770001140867061002377937018383329864357194 +main.escalarMul.segments[0].windows[21].adr3.lamda --> 5807061166057015008783974469296028583520967319787514442816726187914306190634 +main.escalarMul.segments[0].windows[21].adr4.lamda --> 10951800828374093875083687513092465693889467167881120481309687809289162294620 +main.escalarMul.segments[0].windows[21].adr5.lamda --> 18988999912895118311925876204368853642310715807548222072731798540131170879321 +main.escalarMul.segments[0].windows[21].adr6.lamda --> 6811935522791817037625927844949209408819172355821576959445575543888376111145 +main.escalarMul.segments[0].windows[21].adr7.lamda --> 10293586800072215991343118776412354198020198249110014312502697798132293642121 +main.escalarMul.segments[0].windows[21].adr8.lamda --> 6307440488194445056948595905393209666774731916953318744298622406196230694526 +main.escalarMul.segments[0].adders[20].out[0], main.escalarMul.segments[0].adders[21].in1[0] --> 7016987037689649861933031756761090496274284624428949473835960877046374473569 +main.escalarMul.segments[0].adders[20].out[1], main.escalarMul.segments[0].adders[21].in1[1] --> 21401175650033215810226349174434784567785876435356275840558715852123493661069 +main.escalarMul.segments[0].adders[20].lamda --> 16923027807283663441866292333851480891439888636634803998822443188056648861524 +main.escalarMul.segments[0].cadders[20].out[0], main.escalarMul.segments[0].cadders[21].in1[0] --> 3457659180521699845764259750406647197519603483823888283731239782129181365905 +main.escalarMul.segments[0].cadders[20].out[1], main.escalarMul.segments[0].cadders[21].in1[1] --> 4073198177153726947852287628425092602198362586441662823178392330822099406382 +main.escalarMul.segments[0].cadders[20].lamda --> 18783924356770356287153629214735210288040474750656812591630428218410121500978 +main.escalarMul.segments[0].windows[22].out[0], main.escalarMul.segments[0].windows[22].mux.out[0], main.escalarMul.segments[0].adders[21].in2[0] --> 19537334484278888450299345273439988000265449181153218823244177721122081175860 +main.escalarMul.segments[0].windows[22].out[1], main.escalarMul.segments[0].windows[22].mux.out[1], main.escalarMul.segments[0].adders[21].in2[1] --> 3605117415245012345807379311845834397828701524513511993423059546753526744995 +main.escalarMul.segments[0].windows[22].out8[0], main.escalarMul.segments[0].windows[22].mux.c[0][7], main.escalarMul.segments[0].windows[22].adr8.out[0], main.escalarMul.segments[0].windows[23].base[0], main.escalarMul.segments[0].windows[23].mux.c[0][0], main.escalarMul.segments[0].windows[23].mux.a[0], main.escalarMul.segments[0].windows[23].dbl2.in[0], main.escalarMul.segments[0].windows[23].adr3.in1[0], main.escalarMul.segments[0].windows[23].adr4.in1[0], main.escalarMul.segments[0].windows[23].adr5.in1[0], main.escalarMul.segments[0].windows[23].adr6.in1[0], main.escalarMul.segments[0].windows[23].adr7.in1[0], main.escalarMul.segments[0].windows[23].adr8.in1[0], main.escalarMul.segments[0].cadders[22].in2[0] --> 14922564252305282901477334210063098896727449464606840438703159705323035370640 +main.escalarMul.segments[0].windows[22].out8[1], main.escalarMul.segments[0].windows[22].mux.c[1][7], main.escalarMul.segments[0].windows[22].adr8.out[1], main.escalarMul.segments[0].windows[23].base[1], main.escalarMul.segments[0].windows[23].mux.c[1][0], main.escalarMul.segments[0].windows[23].mux.a[1], main.escalarMul.segments[0].windows[23].dbl2.in[1], main.escalarMul.segments[0].windows[23].adr3.in1[1], main.escalarMul.segments[0].windows[23].adr4.in1[1], main.escalarMul.segments[0].windows[23].adr5.in1[1], main.escalarMul.segments[0].windows[23].adr6.in1[1], main.escalarMul.segments[0].windows[23].adr7.in1[1], main.escalarMul.segments[0].windows[23].adr8.in1[1], main.escalarMul.segments[0].cadders[22].in2[1] --> 4976458994134477491067371369438176634193487718082467902776366122354102760453 +main.escalarMul.segments[0].windows[22].mux.c[0][1], main.escalarMul.segments[0].windows[22].dbl2.out[0], main.escalarMul.segments[0].windows[22].adr3.in2[0] --> 19537334484278888450299345273439988000265449181153218823244177721122081175860 +main.escalarMul.segments[0].windows[22].mux.c[0][2], main.escalarMul.segments[0].windows[22].adr3.out[0], main.escalarMul.segments[0].windows[22].adr4.in2[0] --> 3906033533407251910612651276791711713385815198862069643653242817839157465298 +main.escalarMul.segments[0].windows[22].mux.c[0][3], main.escalarMul.segments[0].windows[22].adr4.out[0], main.escalarMul.segments[0].windows[22].adr5.in2[0] --> 1937928481247557441892651545172708186096162562127405912008286299411074461641 +main.escalarMul.segments[0].windows[22].mux.c[0][4], main.escalarMul.segments[0].windows[22].adr5.out[0], main.escalarMul.segments[0].windows[22].adr6.in2[0] --> 21623894538074180556528084262315243007073953896562258851522033943186358529156 +main.escalarMul.segments[0].windows[22].mux.c[0][5], main.escalarMul.segments[0].windows[22].adr6.out[0], main.escalarMul.segments[0].windows[22].adr7.in2[0] --> 20636628217698720020358899935133185328206364229805592848338244404261107732455 +main.escalarMul.segments[0].windows[22].mux.c[0][6], main.escalarMul.segments[0].windows[22].adr7.out[0], main.escalarMul.segments[0].windows[22].adr8.in2[0] --> 10506383365596981766040533768477888499241425351882535175405432979679849311276 +main.escalarMul.segments[0].windows[22].mux.c[1][1], main.escalarMul.segments[0].windows[22].dbl2.out[1], main.escalarMul.segments[0].windows[22].adr3.in2[1] --> 3605117415245012345807379311845834397828701524513511993423059546753526744995 +main.escalarMul.segments[0].windows[22].mux.c[1][2], main.escalarMul.segments[0].windows[22].adr3.out[1], main.escalarMul.segments[0].windows[22].adr4.in2[1] --> 16253988697856231503046968681459230075155285093188485854782141582176791513698 +main.escalarMul.segments[0].windows[22].mux.c[1][3], main.escalarMul.segments[0].windows[22].adr4.out[1], main.escalarMul.segments[0].windows[22].adr5.in2[1] --> 19304902234309747212465199551695058799370481951840525178135416118169169892841 +main.escalarMul.segments[0].windows[22].mux.c[1][4], main.escalarMul.segments[0].windows[22].adr5.out[1], main.escalarMul.segments[0].windows[22].adr6.in2[1] --> 11794984044233624033783942368678800302359226215935900190410319177249124467435 +main.escalarMul.segments[0].windows[22].mux.c[1][5], main.escalarMul.segments[0].windows[22].adr6.out[1], main.escalarMul.segments[0].windows[22].adr7.in2[1] --> 4688513966882345266271758578202736891361648280820253836271375251483567956585 +main.escalarMul.segments[0].windows[22].mux.c[1][6], main.escalarMul.segments[0].windows[22].adr7.out[1], main.escalarMul.segments[0].windows[22].adr8.in2[1] --> 20465244951649703530109173923046985397159393191456090680373660603133864374102 +main.escalarMul.segments[0].windows[22].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[22].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[22].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[22].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[22].mux.a20[0] --> 6562605957261492907456246645716384616420262131618774758579492664445354188834 +main.escalarMul.segments[0].windows[22].mux.a20[1] --> 8259053145846087548379535994884146621836544434023796114529191766097704403675 +main.escalarMul.segments[0].windows[22].mux.a2[0] --> 16424930647997613884849713761234087800069017317449633610212778205269480863378 +main.escalarMul.segments[0].windows[22].mux.a2[1] --> 14712586277630520594331249016730030960244766722698980072017328125208145303532 +main.escalarMul.segments[0].windows[22].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[22].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[22].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[22].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[22].mux.a0[0] --> 14338370594202321778620974772358832793260512602040593581934921983205203510082 +main.escalarMul.segments[0].windows[22].mux.a0[1] --> 6522719648641908906354685959897065055714242031276591875030068494712547581092 +main.escalarMul.segments[0].windows[22].mux.s10 --> 0 +main.escalarMul.segments[0].windows[22].dbl2.lamda --> 747089098131400218270303797160699646835501656123982221610687871542274459447 +main.escalarMul.segments[0].windows[22].dbl2.x1_2 --> 21277670586782263782689715345867995830509874048871528436478912281285302460334 +main.escalarMul.segments[0].windows[22].adr3.lamda --> 4840495159739617455673823124372251763083292476300396763139445547011089307588 +main.escalarMul.segments[0].windows[22].adr4.lamda --> 16716633971320158444110442574405720157513760498754475182325002842383038625777 +main.escalarMul.segments[0].windows[22].adr5.lamda --> 593040882298999116454794111866837949007647671736722603456858251803516307896 +main.escalarMul.segments[0].windows[22].adr6.lamda --> 18016684846473026520819711999309207607996638662767927122865068366303000026521 +main.escalarMul.segments[0].windows[22].adr7.lamda --> 7533922941699618280158637235332206109539672349831305586337575719113011972785 +main.escalarMul.segments[0].windows[22].adr8.lamda --> 15889275910348122521012884393150934527217357713697409330703252108365509761054 +main.escalarMul.segments[0].adders[21].out[0], main.escalarMul.segments[0].adders[22].in1[0] --> 16520683269613143898076650255585966396839205982513033777711206407816470395094 +main.escalarMul.segments[0].adders[21].out[1], main.escalarMul.segments[0].adders[22].in1[1] --> 3164142694476990596666845247743400601742979718089918728901084001504317463368 +main.escalarMul.segments[0].adders[21].lamda --> 21438785874957763850792726795979973887544262055845854895870444361857221767679 +main.escalarMul.segments[0].cadders[21].out[0], main.escalarMul.segments[0].cadders[22].in1[0] --> 3635415978129412393351872367962672877860719720764178448408053683248553699620 +main.escalarMul.segments[0].cadders[21].out[1], main.escalarMul.segments[0].cadders[22].in1[1] --> 6801529553742339300917064561622871165170422212114656705687088495058153275711 +main.escalarMul.segments[0].cadders[21].lamda --> 9576770201858593607276925463992475027016599088907099959433885035001449254287 +main.escalarMul.segments[0].windows[23].out[0], main.escalarMul.segments[0].windows[23].mux.out[0], main.escalarMul.segments[0].adders[22].in2[0] --> 14922564252305282901477334210063098896727449464606840438703159705323035370640 +main.escalarMul.segments[0].windows[23].out[1], main.escalarMul.segments[0].windows[23].mux.out[1], main.escalarMul.segments[0].adders[22].in2[1] --> 4976458994134477491067371369438176634193487718082467902776366122354102760453 +main.escalarMul.segments[0].windows[23].out8[0], main.escalarMul.segments[0].windows[23].mux.c[0][7], main.escalarMul.segments[0].windows[23].adr8.out[0], main.escalarMul.segments[0].windows[24].base[0], main.escalarMul.segments[0].windows[24].mux.c[0][0], main.escalarMul.segments[0].windows[24].mux.a[0], main.escalarMul.segments[0].windows[24].dbl2.in[0], main.escalarMul.segments[0].windows[24].adr3.in1[0], main.escalarMul.segments[0].windows[24].adr4.in1[0], main.escalarMul.segments[0].windows[24].adr5.in1[0], main.escalarMul.segments[0].windows[24].adr6.in1[0], main.escalarMul.segments[0].windows[24].adr7.in1[0], main.escalarMul.segments[0].windows[24].adr8.in1[0], main.escalarMul.segments[0].cadders[23].in2[0] --> 21500284833242871345540423250074823620846538570423953561782681318102548232985 +main.escalarMul.segments[0].windows[23].out8[1], main.escalarMul.segments[0].windows[23].mux.c[1][7], main.escalarMul.segments[0].windows[23].adr8.out[1], main.escalarMul.segments[0].windows[24].base[1], main.escalarMul.segments[0].windows[24].mux.c[1][0], main.escalarMul.segments[0].windows[24].mux.a[1], main.escalarMul.segments[0].windows[24].dbl2.in[1], main.escalarMul.segments[0].windows[24].adr3.in1[1], main.escalarMul.segments[0].windows[24].adr4.in1[1], main.escalarMul.segments[0].windows[24].adr5.in1[1], main.escalarMul.segments[0].windows[24].adr6.in1[1], main.escalarMul.segments[0].windows[24].adr7.in1[1], main.escalarMul.segments[0].windows[24].adr8.in1[1], main.escalarMul.segments[0].cadders[23].in2[1] --> 16890269433683283253953096191719181711421511185887799439689835634028126090082 +main.escalarMul.segments[0].windows[23].mux.c[0][1], main.escalarMul.segments[0].windows[23].dbl2.out[0], main.escalarMul.segments[0].windows[23].adr3.in2[0] --> 531027979957096745770777189685971951916009872998221788448567611069630951070 +main.escalarMul.segments[0].windows[23].mux.c[0][2], main.escalarMul.segments[0].windows[23].adr3.out[0], main.escalarMul.segments[0].windows[23].adr4.in2[0] --> 5695541725525996002923357953776483386995463796850855695523809126455518909259 +main.escalarMul.segments[0].windows[23].mux.c[0][3], main.escalarMul.segments[0].windows[23].adr4.out[0], main.escalarMul.segments[0].windows[23].adr5.in2[0] --> 9577801685488115522401160311136898118102888974223593205392691639931996391218 +main.escalarMul.segments[0].windows[23].mux.c[0][4], main.escalarMul.segments[0].windows[23].adr5.out[0], main.escalarMul.segments[0].windows[23].adr6.in2[0] --> 13983619974428210903842534682218770346174759411191733606510394574605672315721 +main.escalarMul.segments[0].windows[23].mux.c[0][5], main.escalarMul.segments[0].windows[23].adr6.out[0], main.escalarMul.segments[0].windows[23].adr7.in2[0] --> 16376614642367212043493373239191847204185481231990137099783919967949602538035 +main.escalarMul.segments[0].windows[23].mux.c[0][6], main.escalarMul.segments[0].windows[23].adr7.out[0], main.escalarMul.segments[0].windows[23].adr8.in2[0] --> 15880089330277847265132908212477217309143148731757564785252999716676448191983 +main.escalarMul.segments[0].windows[23].mux.c[1][1], main.escalarMul.segments[0].windows[23].dbl2.out[1], main.escalarMul.segments[0].windows[23].adr3.in2[1] --> 17452604958599836248350315626536739383826252412319522096019406760048012808845 +main.escalarMul.segments[0].windows[23].mux.c[1][2], main.escalarMul.segments[0].windows[23].adr3.out[1], main.escalarMul.segments[0].windows[23].adr4.in2[1] --> 3927455242801432086708286191517675722830747693579209383018446402985171922355 +main.escalarMul.segments[0].windows[23].mux.c[1][3], main.escalarMul.segments[0].windows[23].adr4.out[1], main.escalarMul.segments[0].windows[23].adr5.in2[1] --> 13973177380913227135518796775649496845597589575749115248794048399877701749799 +main.escalarMul.segments[0].windows[23].mux.c[1][4], main.escalarMul.segments[0].windows[23].adr5.out[1], main.escalarMul.segments[0].windows[23].adr6.in2[1] --> 17312653523360885735806203575791989822497415570557834397298207709338864599214 +main.escalarMul.segments[0].windows[23].mux.c[1][5], main.escalarMul.segments[0].windows[23].adr6.out[1], main.escalarMul.segments[0].windows[23].adr7.in2[1] --> 7040255944657930619924520121006242918326565702815069248448794740814569244319 +main.escalarMul.segments[0].windows[23].mux.c[1][6], main.escalarMul.segments[0].windows[23].adr7.out[1], main.escalarMul.segments[0].windows[23].adr8.in2[1] --> 8501878692124797795431280811614468292996334282143454963260208948998486087331 +main.escalarMul.segments[0].windows[23].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[23].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[23].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[23].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[23].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[23].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[23].mux.a2[0] --> 20949298593962203224611606217412946537995674347000927511505439055858445440698 +main.escalarMul.segments[0].windows[23].mux.a2[1] --> 12336194529226408244738832206353813188303927852475366494521841586984761838761 +main.escalarMul.segments[0].windows[23].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[23].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[23].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[23].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[23].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[23].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[23].mux.s10 --> 0 +main.escalarMul.segments[0].windows[23].dbl2.lamda --> 6731117940290737524577736442551142011897846291140660433951374910167508655896 +main.escalarMul.segments[0].windows[23].dbl2.x1_2 --> 21279571759124102239637975818126603310446621335831786353776129202808573111745 +main.escalarMul.segments[0].windows[23].adr3.lamda --> 16014595299297149212661203561902735623284418382933030251644434241373272712695 +main.escalarMul.segments[0].windows[23].adr4.lamda --> 6124131270351523504609523060622922283480152643467514311759251175334910766777 +main.escalarMul.segments[0].windows[23].adr5.lamda --> 12854941577024634093896936417618782354838733485473318334954741883213392252896 +main.escalarMul.segments[0].windows[23].adr6.lamda --> 14771138186411475563094266001076788105132338708655924419571600102938530242114 +main.escalarMul.segments[0].windows[23].adr7.lamda --> 9369879933631713589794491487060468587595957542170626667155930325970589938354 +main.escalarMul.segments[0].windows[23].adr8.lamda --> 18669012258989492389291035601891561989670878663908192282224902449403253893337 +main.escalarMul.segments[0].adders[22].out[0], main.escalarMul.segments[0].adders[23].in1[0] --> 2730189233193319833592603865715933903746281986314598335858830310468243983557 +main.escalarMul.segments[0].adders[22].out[1], main.escalarMul.segments[0].adders[23].in1[1] --> 20690673348725936792833270553749782899835386772267007571383224210453733958750 +main.escalarMul.segments[0].adders[22].lamda --> 237569355671528216703454871425863976521168605817874780146594999652175401211 +main.escalarMul.segments[0].cadders[22].out[0], main.escalarMul.segments[0].cadders[23].in1[0] --> 655988120826916881320907515317639290604688390797253303064018095301704637587 +main.escalarMul.segments[0].cadders[22].out[1], main.escalarMul.segments[0].cadders[23].in1[1] --> 9872389291235380276474149947388965562317036928611895876783213429108242670380 +main.escalarMul.segments[0].cadders[22].lamda --> 14201083117213883673179965614460731258643557028981336631223905822379413799582 +main.escalarMul.segments[0].windows[24].out[0], main.escalarMul.segments[0].windows[24].mux.out[0], main.escalarMul.segments[0].adders[23].in2[0] --> 21372311674337839240823766229999515811991034290772299918814489206970146404142 +main.escalarMul.segments[0].windows[24].out[1], main.escalarMul.segments[0].windows[24].mux.out[1], main.escalarMul.segments[0].adders[23].in2[1] --> 9735412971249077372921261985317385528954334119762699076964427554782703148136 +main.escalarMul.segments[0].windows[24].out8[0], main.escalarMul.segments[0].windows[24].mux.c[0][7], main.escalarMul.segments[0].windows[24].adr8.out[0], main.escalarMul.segments[0].windows[25].base[0], main.escalarMul.segments[0].windows[25].mux.c[0][0], main.escalarMul.segments[0].windows[25].mux.a[0], main.escalarMul.segments[0].windows[25].dbl2.in[0], main.escalarMul.segments[0].windows[25].adr3.in1[0], main.escalarMul.segments[0].windows[25].adr4.in1[0], main.escalarMul.segments[0].windows[25].adr5.in1[0], main.escalarMul.segments[0].windows[25].adr6.in1[0], main.escalarMul.segments[0].windows[25].adr7.in1[0], main.escalarMul.segments[0].windows[25].adr8.in1[0], main.escalarMul.segments[0].cadders[24].in2[0] --> 112231072927325112961425461301956854665072070182648753354599522490185583660 +main.escalarMul.segments[0].windows[24].out8[1], main.escalarMul.segments[0].windows[24].mux.c[1][7], main.escalarMul.segments[0].windows[24].adr8.out[1], main.escalarMul.segments[0].windows[25].base[1], main.escalarMul.segments[0].windows[25].mux.c[1][0], main.escalarMul.segments[0].windows[25].mux.a[1], main.escalarMul.segments[0].windows[25].dbl2.in[1], main.escalarMul.segments[0].windows[25].adr3.in1[1], main.escalarMul.segments[0].windows[25].adr4.in1[1], main.escalarMul.segments[0].windows[25].adr5.in1[1], main.escalarMul.segments[0].windows[25].adr6.in1[1], main.escalarMul.segments[0].windows[25].adr7.in1[1], main.escalarMul.segments[0].windows[25].adr8.in1[1], main.escalarMul.segments[0].cadders[24].in2[1] --> 840109680219896972034532699629591012082684794004907772981052090615976027878 +main.escalarMul.segments[0].windows[24].mux.c[0][1], main.escalarMul.segments[0].windows[24].dbl2.out[0], main.escalarMul.segments[0].windows[24].adr3.in2[0] --> 12507262956308713080162600561750805661316051042712370199502268468007878448118 +main.escalarMul.segments[0].windows[24].mux.c[0][2], main.escalarMul.segments[0].windows[24].adr3.out[0], main.escalarMul.segments[0].windows[24].adr4.in2[0] --> 21372311674337839240823766229999515811991034290772299918814489206970146404142 +main.escalarMul.segments[0].windows[24].mux.c[0][3], main.escalarMul.segments[0].windows[24].adr4.out[0], main.escalarMul.segments[0].windows[24].adr5.in2[0] --> 47567482087777350880331164395605093890193522796922722962032356995157117055 +main.escalarMul.segments[0].windows[24].mux.c[0][4], main.escalarMul.segments[0].windows[24].adr5.out[0], main.escalarMul.segments[0].windows[24].adr6.in2[0] --> 12367869342438701055435679243237145251348784704405005951410838913490116399677 +main.escalarMul.segments[0].windows[24].mux.c[0][5], main.escalarMul.segments[0].windows[24].adr6.out[0], main.escalarMul.segments[0].windows[24].adr7.in2[0] --> 18245883448960486252329249984334163545050221607793455169768235067718305554606 +main.escalarMul.segments[0].windows[24].mux.c[0][6], main.escalarMul.segments[0].windows[24].adr7.out[0], main.escalarMul.segments[0].windows[24].adr8.in2[0] --> 13145173413565269779961407146652169910669854904516591204847517917644138096016 +main.escalarMul.segments[0].windows[24].mux.c[1][1], main.escalarMul.segments[0].windows[24].dbl2.out[1], main.escalarMul.segments[0].windows[24].adr3.in2[1] --> 1939693706596140423665989110018230673132457072878206506280299519860129336128 +main.escalarMul.segments[0].windows[24].mux.c[1][2], main.escalarMul.segments[0].windows[24].adr3.out[1], main.escalarMul.segments[0].windows[24].adr4.in2[1] --> 9735412971249077372921261985317385528954334119762699076964427554782703148136 +main.escalarMul.segments[0].windows[24].mux.c[1][3], main.escalarMul.segments[0].windows[24].adr4.out[1], main.escalarMul.segments[0].windows[24].adr5.in2[1] --> 16967662626452033496775471285011819397839983780654032526670070277636152156170 +main.escalarMul.segments[0].windows[24].mux.c[1][4], main.escalarMul.segments[0].windows[24].adr5.out[1], main.escalarMul.segments[0].windows[24].adr6.in2[1] --> 9767497801279871658676887781815701286282299891756055841265447333781319668 +main.escalarMul.segments[0].windows[24].mux.c[1][5], main.escalarMul.segments[0].windows[24].adr6.out[1], main.escalarMul.segments[0].windows[24].adr7.in2[1] --> 11053288013371005242426439125147308880086455953340257719155281824824424894403 +main.escalarMul.segments[0].windows[24].mux.c[1][6], main.escalarMul.segments[0].windows[24].adr7.out[1], main.escalarMul.segments[0].windows[24].adr8.in2[1] --> 13975885439283317157128801425709821915841735162661065813438091578909069625880 +main.escalarMul.segments[0].windows[24].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[24].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[24].mux.a21[0] --> 905277230031600829242384923490332468176574479763238896404871115286423525182 +main.escalarMul.segments[0].windows[24].mux.a21[1] --> 21120974403916243166501958744329802397022629928894410120322234210820711248158 +main.escalarMul.segments[0].windows[24].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[24].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[24].mux.a2[0] --> 12755827381035104932141661738419596719050610534397086733326361781963376662309 +main.escalarMul.segments[0].windows[24].mux.a2[1] --> 5007740935957271839951986441319909078413135514419990959849633999881463725203 +main.escalarMul.segments[0].windows[24].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[24].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[24].mux.a1[0] --> 21760269712934243117529748725181967279692860120764380700730012075443406666774 +main.escalarMul.segments[0].windows[24].mux.a1[1] --> 14733386409405069341214571538855478906081187334290933980972796107330385553671 +main.escalarMul.segments[0].windows[24].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[24].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[24].mux.s10 --> 0 +main.escalarMul.segments[0].windows[24].dbl2.lamda --> 3799962878716945960320918317379351042149669106195576734038648695044697635895 +main.escalarMul.segments[0].windows[24].dbl2.x1_2 --> 17855280378442577180837104750220835381239640070841736257180883725866233937052 +main.escalarMul.segments[0].windows[24].adr3.lamda --> 15356308219240375818311704600822018221876403114400520998786187205554480305579 +main.escalarMul.segments[0].windows[24].adr4.lamda --> 5703086498380753697956784145292248448316542198017251404415475788016138290330 +main.escalarMul.segments[0].windows[24].adr5.lamda --> 10648546419704767337798346321319487086439296273976412905219193915129259955701 +main.escalarMul.segments[0].windows[24].adr6.lamda --> 15210167715637966409623275704242358806305475527223046557982323135229470452036 +main.escalarMul.segments[0].windows[24].adr7.lamda --> 3171663931489857162861472965968846440119587957572406863547115024352493002242 +main.escalarMul.segments[0].windows[24].adr8.lamda --> 3848411683799029082470167242999847628270241931886429653553514858967113629479 +main.escalarMul.segments[0].adders[23].out[0], main.escalarMul.segments[0].adders[24].in1[0] --> 17960674130401703148013057752934037546241714914062205860578451342893326909702 +main.escalarMul.segments[0].adders[23].out[1], main.escalarMul.segments[0].adders[24].in1[1] --> 17817158254893134065732155887296788784926589830344435748798055792271993292097 +main.escalarMul.segments[0].adders[23].lamda --> 3620244204302964181457756736457957262035074566236986883500426392672319600634 +main.escalarMul.segments[0].cadders[23].out[0], main.escalarMul.segments[0].cadders[24].in1[0] --> 7220955879681306993144261753639604117979494953168404463206444392775401417803 +main.escalarMul.segments[0].cadders[23].out[1], main.escalarMul.segments[0].cadders[24].in1[1] --> 4831350168154405044066351069636568044719442556316763985242957398590085436914 +main.escalarMul.segments[0].cadders[23].lamda --> 13897356606121014619416068409834699535104913294828811962965974692176933082989 +main.escalarMul.segments[0].windows[25].out[0], main.escalarMul.segments[0].windows[25].mux.out[0], main.escalarMul.segments[0].adders[24].in2[0] --> 112231072927325112961425461301956854665072070182648753354599522490185583660 +main.escalarMul.segments[0].windows[25].out[1], main.escalarMul.segments[0].windows[25].mux.out[1], main.escalarMul.segments[0].adders[24].in2[1] --> 840109680219896972034532699629591012082684794004907772981052090615976027878 +main.escalarMul.segments[0].windows[25].out8[0], main.escalarMul.segments[0].windows[25].mux.c[0][7], main.escalarMul.segments[0].windows[25].adr8.out[0], main.escalarMul.segments[0].windows[26].base[0], main.escalarMul.segments[0].windows[26].mux.c[0][0], main.escalarMul.segments[0].windows[26].mux.a[0], main.escalarMul.segments[0].windows[26].dbl2.in[0], main.escalarMul.segments[0].windows[26].adr3.in1[0], main.escalarMul.segments[0].windows[26].adr4.in1[0], main.escalarMul.segments[0].windows[26].adr5.in1[0], main.escalarMul.segments[0].windows[26].adr6.in1[0], main.escalarMul.segments[0].windows[26].adr7.in1[0], main.escalarMul.segments[0].windows[26].adr8.in1[0], main.escalarMul.segments[0].cadders[25].in2[0] --> 1326089014617025687903765868002180503911096014171106135924149163089560195939 +main.escalarMul.segments[0].windows[25].out8[1], main.escalarMul.segments[0].windows[25].mux.c[1][7], main.escalarMul.segments[0].windows[25].adr8.out[1], main.escalarMul.segments[0].windows[26].base[1], main.escalarMul.segments[0].windows[26].mux.c[1][0], main.escalarMul.segments[0].windows[26].mux.a[1], main.escalarMul.segments[0].windows[26].dbl2.in[1], main.escalarMul.segments[0].windows[26].adr3.in1[1], main.escalarMul.segments[0].windows[26].adr4.in1[1], main.escalarMul.segments[0].windows[26].adr5.in1[1], main.escalarMul.segments[0].windows[26].adr6.in1[1], main.escalarMul.segments[0].windows[26].adr7.in1[1], main.escalarMul.segments[0].windows[26].adr8.in1[1], main.escalarMul.segments[0].cadders[25].in2[1] --> 15821314134817153937082507691838500891089594319806460340766109740065316526304 +main.escalarMul.segments[0].windows[25].mux.c[0][1], main.escalarMul.segments[0].windows[25].dbl2.out[0], main.escalarMul.segments[0].windows[25].adr3.in2[0] --> 18338716109594992377407519296716490160848602077979889246183225662594915910418 +main.escalarMul.segments[0].windows[25].mux.c[0][2], main.escalarMul.segments[0].windows[25].adr3.out[0], main.escalarMul.segments[0].windows[25].adr4.in2[0] --> 10710194841238585995584313667905513457549011400069095647837417779070190654487 +main.escalarMul.segments[0].windows[25].mux.c[0][3], main.escalarMul.segments[0].windows[25].adr4.out[0], main.escalarMul.segments[0].windows[25].adr5.in2[0] --> 18638160633272976396032399638732130044655727932012179841308146163397195134159 +main.escalarMul.segments[0].windows[25].mux.c[0][4], main.escalarMul.segments[0].windows[25].adr5.out[0], main.escalarMul.segments[0].windows[25].adr6.in2[0] --> 15357939858086576057219685181554566062691873448254749196487831491135787607668 +main.escalarMul.segments[0].windows[25].mux.c[0][5], main.escalarMul.segments[0].windows[25].adr6.out[0], main.escalarMul.segments[0].windows[25].adr7.in2[0] --> 19312269155341457196087957172159254176104398226239882395002339478577799725833 +main.escalarMul.segments[0].windows[25].mux.c[0][6], main.escalarMul.segments[0].windows[25].adr7.out[0], main.escalarMul.segments[0].windows[25].adr8.in2[0] --> 2934118249696593268734902157815448117928446109081103617712208958017349388570 +main.escalarMul.segments[0].windows[25].mux.c[1][1], main.escalarMul.segments[0].windows[25].dbl2.out[1], main.escalarMul.segments[0].windows[25].adr3.in2[1] --> 12318238775830473706151299625942086280995420301115352474198241509940610616676 +main.escalarMul.segments[0].windows[25].mux.c[1][2], main.escalarMul.segments[0].windows[25].adr3.out[1], main.escalarMul.segments[0].windows[25].adr4.in2[1] --> 6008248866491928301704683162641385113970967489025456866334363748664579466744 +main.escalarMul.segments[0].windows[25].mux.c[1][3], main.escalarMul.segments[0].windows[25].adr4.out[1], main.escalarMul.segments[0].windows[25].adr5.in2[1] --> 4625195055142284735036575537007766761653787017707985359026405061971612826961 +main.escalarMul.segments[0].windows[25].mux.c[1][4], main.escalarMul.segments[0].windows[25].adr5.out[1], main.escalarMul.segments[0].windows[25].adr6.in2[1] --> 15635722249872299254505708867370601782994438665443591464245870573502419323641 +main.escalarMul.segments[0].windows[25].mux.c[1][5], main.escalarMul.segments[0].windows[25].adr6.out[1], main.escalarMul.segments[0].windows[25].adr7.in2[1] --> 2100086485219303081354976282703673825064015295087303681515325607030192592954 +main.escalarMul.segments[0].windows[25].mux.c[1][6], main.escalarMul.segments[0].windows[25].adr7.out[1], main.escalarMul.segments[0].windows[25].adr8.in2[1] --> 11453247732538320983750039823538162608983714090591729494015218979342283761342 +main.escalarMul.segments[0].windows[25].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[25].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[25].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[25].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[25].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[25].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[25].mux.a2[0] --> 15245708785159250944258259720252609208026801378072100443133231968645602024008 +main.escalarMul.segments[0].windows[25].mux.a2[1] --> 14795612569652402282471176167741010770911753871438683691264818482886443295763 +main.escalarMul.segments[0].windows[25].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[25].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[25].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[25].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[25].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[25].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[25].mux.s10 --> 0 +main.escalarMul.segments[0].windows[25].dbl2.lamda --> 6983133615849334749286341981031735364879537038354873795627624575706264852346 +main.escalarMul.segments[0].windows[25].dbl2.x1_2 --> 21503417084148160948260060444397602808719642611912115213211143088930214219845 +main.escalarMul.segments[0].windows[25].adr3.lamda --> 17247972245740273130536365567592086278154562324192714619558107626478520455874 +main.escalarMul.segments[0].windows[25].adr4.lamda --> 8064275088715513045846906514597670412711787319780509012982604507256920344842 +main.escalarMul.segments[0].windows[25].adr5.lamda --> 19915645042043416332376228572937048158754809642729985615977684484335182199387 +main.escalarMul.segments[0].windows[25].adr6.lamda --> 21866487741127030889720622509164616635355175152904190355057605510982829919698 +main.escalarMul.segments[0].windows[25].adr7.lamda --> 15598941972026569460108740085718858466623943158465347358959225839940202385954 +main.escalarMul.segments[0].windows[25].adr8.lamda --> 10339894727090062169336701478122352530163273644284794058158015861527538954532 +main.escalarMul.segments[0].adders[24].out[0], main.escalarMul.segments[0].adders[25].in1[0] --> 879535805040276770295095905913446577322096906068157792393304339930107026602 +main.escalarMul.segments[0].adders[24].out[1], main.escalarMul.segments[0].adders[25].in1[1] --> 6464439996627641348340942888407360078120099837875063891802445486505505103728 +main.escalarMul.segments[0].adders[24].lamda --> 9635845096850669716744403316751655286195835757592819238502304015349383616529 +main.escalarMul.segments[0].cadders[24].out[0], main.escalarMul.segments[0].cadders[25].in1[0] --> 4839367529416704597715028423693070643649972419531114959452029879260356906415 +main.escalarMul.segments[0].cadders[24].out[1], main.escalarMul.segments[0].cadders[25].in1[1] --> 20136579244914221420582134142410296829129849798143282396388353457668231543574 +main.escalarMul.segments[0].cadders[24].lamda --> 297153564294272090576056281959564447490930331827072219463092227770509219131 +main.escalarMul.segments[0].windows[26].out[0], main.escalarMul.segments[0].windows[26].mux.out[0], main.escalarMul.segments[0].adders[25].in2[0] --> 10730656612954946508295535275067424215390951213326774769626016455568464032495 +main.escalarMul.segments[0].windows[26].out[1], main.escalarMul.segments[0].windows[26].mux.out[1], main.escalarMul.segments[0].adders[25].in2[1] --> 13975586582265883753006486326527810530849615403331268716769399255755153276337 +main.escalarMul.segments[0].windows[26].out8[0], main.escalarMul.segments[0].windows[26].mux.c[0][7], main.escalarMul.segments[0].windows[26].adr8.out[0], main.escalarMul.segments[0].windows[27].base[0], main.escalarMul.segments[0].windows[27].mux.c[0][0], main.escalarMul.segments[0].windows[27].mux.a[0], main.escalarMul.segments[0].windows[27].dbl2.in[0], main.escalarMul.segments[0].windows[27].adr3.in1[0], main.escalarMul.segments[0].windows[27].adr4.in1[0], main.escalarMul.segments[0].windows[27].adr5.in1[0], main.escalarMul.segments[0].windows[27].adr6.in1[0], main.escalarMul.segments[0].windows[27].adr7.in1[0], main.escalarMul.segments[0].windows[27].adr8.in1[0], main.escalarMul.segments[0].cadders[26].in2[0] --> 3740461707321028224685470881913321302721347938418201210106504131494142138745 +main.escalarMul.segments[0].windows[26].out8[1], main.escalarMul.segments[0].windows[26].mux.c[1][7], main.escalarMul.segments[0].windows[26].adr8.out[1], main.escalarMul.segments[0].windows[27].base[1], main.escalarMul.segments[0].windows[27].mux.c[1][0], main.escalarMul.segments[0].windows[27].mux.a[1], main.escalarMul.segments[0].windows[27].dbl2.in[1], main.escalarMul.segments[0].windows[27].adr3.in1[1], main.escalarMul.segments[0].windows[27].adr4.in1[1], main.escalarMul.segments[0].windows[27].adr5.in1[1], main.escalarMul.segments[0].windows[27].adr6.in1[1], main.escalarMul.segments[0].windows[27].adr7.in1[1], main.escalarMul.segments[0].windows[27].adr8.in1[1], main.escalarMul.segments[0].cadders[26].in2[1] --> 820977323756149371308793882296560002329091815044000467076504094964052485668 +main.escalarMul.segments[0].windows[26].mux.c[0][1], main.escalarMul.segments[0].windows[26].dbl2.out[0], main.escalarMul.segments[0].windows[26].adr3.in2[0] --> 14819928015713707596903219692473871437184242404258917120300439129147119701001 +main.escalarMul.segments[0].windows[26].mux.c[0][2], main.escalarMul.segments[0].windows[26].adr3.out[0], main.escalarMul.segments[0].windows[26].adr4.in2[0] --> 21465308794603705637023212381384297543210906444463450473816181773339932465286 +main.escalarMul.segments[0].windows[26].mux.c[0][3], main.escalarMul.segments[0].windows[26].adr4.out[0], main.escalarMul.segments[0].windows[26].adr5.in2[0] --> 2060325682473958325094888787920696435267177652146126404475875767071678013267 +main.escalarMul.segments[0].windows[26].mux.c[0][4], main.escalarMul.segments[0].windows[26].adr5.out[0], main.escalarMul.segments[0].windows[26].adr6.in2[0] --> 965761751760332915287378504589714211844351994734204453547132379372325510067 +main.escalarMul.segments[0].windows[26].mux.c[0][5], main.escalarMul.segments[0].windows[26].adr6.out[0], main.escalarMul.segments[0].windows[26].adr7.in2[0] --> 734841867652454237850089903334913409891375211161035384116721177264222287310 +main.escalarMul.segments[0].windows[26].mux.c[0][6], main.escalarMul.segments[0].windows[26].adr7.out[0], main.escalarMul.segments[0].windows[26].adr8.in2[0] --> 10730656612954946508295535275067424215390951213326774769626016455568464032495 +main.escalarMul.segments[0].windows[26].mux.c[1][1], main.escalarMul.segments[0].windows[26].dbl2.out[1], main.escalarMul.segments[0].windows[26].adr3.in2[1] --> 12490939052713955999872324409808265611469530630256455570155083493342279419122 +main.escalarMul.segments[0].windows[26].mux.c[1][2], main.escalarMul.segments[0].windows[26].adr3.out[1], main.escalarMul.segments[0].windows[26].adr4.in2[1] --> 2148709627876548803174827747165249754059036348004442649706475675322175637178 +main.escalarMul.segments[0].windows[26].mux.c[1][3], main.escalarMul.segments[0].windows[26].adr4.out[1], main.escalarMul.segments[0].windows[26].adr5.in2[1] --> 12918304173248727368840386667547578260944389684643768226941919784465125280231 +main.escalarMul.segments[0].windows[26].mux.c[1][4], main.escalarMul.segments[0].windows[26].adr5.out[1], main.escalarMul.segments[0].windows[26].adr6.in2[1] --> 19792287256511064387284567494412696449980765630771570147517920373824990804196 +main.escalarMul.segments[0].windows[26].mux.c[1][5], main.escalarMul.segments[0].windows[26].adr6.out[1], main.escalarMul.segments[0].windows[26].adr7.in2[1] --> 591569801713399237396656941144935279885964712437198222152751868452213633103 +main.escalarMul.segments[0].windows[26].mux.c[1][6], main.escalarMul.segments[0].windows[26].adr7.out[1], main.escalarMul.segments[0].windows[26].adr8.in2[1] --> 13975586582265883753006486326527810530849615403331268716769399255755153276337 +main.escalarMul.segments[0].windows[26].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[26].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[26].mux.a21[0] --> 11513917953047208866135116002352868052795153188716260321885055652521574748698 +main.escalarMul.segments[0].windows[26].mux.a21[1] --> 7855903832695424499629598776788365217899407744361716260311112946673303361267 +main.escalarMul.segments[0].windows[26].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[26].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[26].mux.a2[0] --> 21527915608982582449630018381844808796481620380979132661321187402858573809745 +main.escalarMul.segments[0].windows[26].mux.a2[1] --> 3970973121693910450202059802574195558891171310965109806751810633759674277892 +main.escalarMul.segments[0].windows[26].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[26].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[26].mux.a1[0] --> 20139219779986679949119446513382117039299810430292344337892032610250372269347 +main.escalarMul.segments[0].windows[26].mux.a1[1] --> 8215638364898670088338725800584023951517806428614016652638570121832667606491 +main.escalarMul.segments[0].windows[26].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[26].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[26].mux.s10 --> 0 +main.escalarMul.segments[0].windows[26].dbl2.lamda --> 3795571432987916056043434092564759057977247416002007587681936023671092379290 +main.escalarMul.segments[0].windows[26].dbl2.x1_2 --> 1435942676240169315659607230434319901941842429483046097149524073861037060724 +main.escalarMul.segments[0].windows[26].adr3.lamda --> 1323320567432737822739458807419185747508745539323372149601948655120560533799 +main.escalarMul.segments[0].windows[26].adr4.lamda --> 3040683505344396978714084666018286009942991410235255011496990847530063826344 +main.escalarMul.segments[0].windows[26].adr5.lamda --> 374432650098480296844437669269901657616061041123317482296980061134104614792 +main.escalarMul.segments[0].windows[26].adr6.lamda --> 41316032538582672281686412957240011851735480568842250274865140616799595428 +main.escalarMul.segments[0].windows[26].adr7.lamda --> 6800197411080662013997051222198577212360848968574409749506305216031024693999 +main.escalarMul.segments[0].windows[26].adr8.lamda --> 6645563598945736196358919123132285207342921716227073300402070585752052133840 +main.escalarMul.segments[0].adders[25].out[0], main.escalarMul.segments[0].adders[26].in1[0] --> 3334430965894039635857961070547694313844156340627153691784219727835261985877 +main.escalarMul.segments[0].adders[25].out[1], main.escalarMul.segments[0].adders[26].in1[1] --> 7353207261456945374321708660138323808511231039811249178052351907644782676283 +main.escalarMul.segments[0].adders[25].lamda --> 12460902964246433440928012342436075813324142479480713268472857454277597813713 +main.escalarMul.segments[0].cadders[25].out[0], main.escalarMul.segments[0].cadders[26].in1[0] --> 4866410639272267783651444988333423045269665504123155382212531972180503944965 +main.escalarMul.segments[0].cadders[25].out[1], main.escalarMul.segments[0].cadders[26].in1[1] --> 7443242475598244691931929178534915129964460239980456001656414624926466682874 +main.escalarMul.segments[0].cadders[25].lamda --> 562159567780369568241593052151491522259306564155288670732966625893587198372 +main.escalarMul.segments[0].windows[27].out[0], main.escalarMul.segments[0].windows[27].mux.out[0], main.escalarMul.segments[0].adders[26].in2[0] --> 18212119715182966544822893837297898913229276862307252732281514126515921733434 +main.escalarMul.segments[0].windows[27].out[1], main.escalarMul.segments[0].windows[27].mux.out[1], main.escalarMul.segments[0].adders[26].in2[1] --> 19094622874005077571497296006338467011050316197065185775126121781699754618895 +main.escalarMul.segments[0].windows[27].out8[0], main.escalarMul.segments[0].windows[27].mux.c[0][7], main.escalarMul.segments[0].windows[27].adr8.out[0], main.escalarMul.segments[0].windows[28].base[0], main.escalarMul.segments[0].windows[28].mux.c[0][0], main.escalarMul.segments[0].windows[28].mux.a[0], main.escalarMul.segments[0].windows[28].dbl2.in[0], main.escalarMul.segments[0].windows[28].adr3.in1[0], main.escalarMul.segments[0].windows[28].adr4.in1[0], main.escalarMul.segments[0].windows[28].adr5.in1[0], main.escalarMul.segments[0].windows[28].adr6.in1[0], main.escalarMul.segments[0].windows[28].adr7.in1[0], main.escalarMul.segments[0].windows[28].adr8.in1[0], main.escalarMul.segments[0].cadders[27].in2[0] --> 12720683521863167521514244358435818103786960469262475231764492053862939856340 +main.escalarMul.segments[0].windows[27].out8[1], main.escalarMul.segments[0].windows[27].mux.c[1][7], main.escalarMul.segments[0].windows[27].adr8.out[1], main.escalarMul.segments[0].windows[28].base[1], main.escalarMul.segments[0].windows[28].mux.c[1][0], main.escalarMul.segments[0].windows[28].mux.a[1], main.escalarMul.segments[0].windows[28].dbl2.in[1], main.escalarMul.segments[0].windows[28].adr3.in1[1], main.escalarMul.segments[0].windows[28].adr4.in1[1], main.escalarMul.segments[0].windows[28].adr5.in1[1], main.escalarMul.segments[0].windows[28].adr6.in1[1], main.escalarMul.segments[0].windows[28].adr7.in1[1], main.escalarMul.segments[0].windows[28].adr8.in1[1], main.escalarMul.segments[0].cadders[27].in2[1] --> 4755652759981239193421988331076017933411377442323598147959151013341617742135 +main.escalarMul.segments[0].windows[27].mux.c[0][1], main.escalarMul.segments[0].windows[27].dbl2.out[0], main.escalarMul.segments[0].windows[27].adr3.in2[0] --> 13434925584879464610677697792096889565377611541170910182630031362713661838021 +main.escalarMul.segments[0].windows[27].mux.c[0][2], main.escalarMul.segments[0].windows[27].adr3.out[0], main.escalarMul.segments[0].windows[27].adr4.in2[0] --> 14544146621796241995157632411639076960381800260860177237510645409417831216450 +main.escalarMul.segments[0].windows[27].mux.c[0][3], main.escalarMul.segments[0].windows[27].adr4.out[0], main.escalarMul.segments[0].windows[27].adr5.in2[0] --> 18212119715182966544822893837297898913229276862307252732281514126515921733434 +main.escalarMul.segments[0].windows[27].mux.c[0][4], main.escalarMul.segments[0].windows[27].adr5.out[0], main.escalarMul.segments[0].windows[27].adr6.in2[0] --> 16386750325610794037932195682461045471559243046028046912065000758422652548518 +main.escalarMul.segments[0].windows[27].mux.c[0][5], main.escalarMul.segments[0].windows[27].adr6.out[0], main.escalarMul.segments[0].windows[27].adr7.in2[0] --> 9007801334514069322734108386517022826857721826523544932218382652004960547973 +main.escalarMul.segments[0].windows[27].mux.c[0][6], main.escalarMul.segments[0].windows[27].adr7.out[0], main.escalarMul.segments[0].windows[27].adr8.in2[0] --> 18338107822716613705549842283333147411764939586531721205213262935014286205309 +main.escalarMul.segments[0].windows[27].mux.c[1][1], main.escalarMul.segments[0].windows[27].dbl2.out[1], main.escalarMul.segments[0].windows[27].adr3.in2[1] --> 7468043869123427030405077187690170897226659767883361002107841494932873520856 +main.escalarMul.segments[0].windows[27].mux.c[1][2], main.escalarMul.segments[0].windows[27].adr3.out[1], main.escalarMul.segments[0].windows[27].adr4.in2[1] --> 14178216530157382199375588620736186188239612498195253664991237117676952220609 +main.escalarMul.segments[0].windows[27].mux.c[1][3], main.escalarMul.segments[0].windows[27].adr4.out[1], main.escalarMul.segments[0].windows[27].adr5.in2[1] --> 19094622874005077571497296006338467011050316197065185775126121781699754618895 +main.escalarMul.segments[0].windows[27].mux.c[1][4], main.escalarMul.segments[0].windows[27].adr5.out[1], main.escalarMul.segments[0].windows[27].adr6.in2[1] --> 17914373514770816092490517707487316599516110662415089078511161082944096218548 +main.escalarMul.segments[0].windows[27].mux.c[1][5], main.escalarMul.segments[0].windows[27].adr6.out[1], main.escalarMul.segments[0].windows[27].adr7.in2[1] --> 20932472800385298545465996328990268908626723794574566510335133401881924711130 +main.escalarMul.segments[0].windows[27].mux.c[1][6], main.escalarMul.segments[0].windows[27].adr7.out[1], main.escalarMul.segments[0].windows[27].adr8.in2[1] --> 21413916664081373242098997123194070886203010319282678224514469083993866721088 +main.escalarMul.segments[0].windows[27].mux.a210[0] --> 7788015474414990367489454855571439646532329103540889484150505739387774833868 +main.escalarMul.segments[0].windows[27].mux.a210[1] --> 3942539883644241007568494251427599898732982645266905260215366532931749660984 +main.escalarMul.segments[0].windows[27].mux.a21[0] --> 13035915454469881119391890816403621371093608618477732609442325085243753074703 +main.escalarMul.segments[0].windows[27].mux.a21[1] --> 12030546814748599543788090422524403189324743374132370291786779164912679263216 +main.escalarMul.segments[0].windows[27].mux.a20[0] --> 4814830003184114121056091539129684181190579578158823391328058848938596795796 +main.escalarMul.segments[0].windows[27].mux.a20[1] --> 18259275612086480016125601061366616502761409579736151240490839105544815953011 +main.escalarMul.segments[0].windows[27].mux.a2[0] --> 12646288618289765813246724800547724168837895107609845701958496626928510409773 +main.escalarMul.segments[0].windows[27].mux.a2[1] --> 17093396191014666721181723825190756597187018847371088611434656987980043732880 +main.escalarMul.segments[0].windows[27].mux.a10[0] --> 15861752087667563385919440260732528778739577399110400865945545672454379313325 +main.escalarMul.segments[0].windows[27].mux.a10[1] --> 20157582670319692935271829825465945016461500146446605918801751450629789858715 +main.escalarMul.segments[0].windows[27].mux.a1[0] --> 10803684914475213770472161529725755657660452322441976027404141277923689077705 +main.escalarMul.segments[0].windows[27].mux.a1[1] --> 13357239206401232828066794738439626185910520683151253197914733022712899734941 +main.escalarMul.segments[0].windows[27].mux.a0[0] --> 9694463877558436385992226910183568262656263602752708972523527231219519699276 +main.escalarMul.segments[0].windows[27].mux.a0[1] --> 6647066545367277659096283305393610894897567952839360535031337399968821035188 +main.escalarMul.segments[0].windows[27].mux.s10 --> 1 +main.escalarMul.segments[0].windows[27].dbl2.lamda --> 578542413425521176790740188868339102374036394142693901450450906651170837420 +main.escalarMul.segments[0].windows[27].dbl2.x1_2 --> 7964408088975825757690719891288304630625540210807011406265222508757463369656 +main.escalarMul.segments[0].windows[27].adr3.lamda --> 9823170187640172283624253556248493466823825592292015034081707009184734708238 +main.escalarMul.segments[0].windows[27].adr4.lamda --> 14869865102089294437829983480137885312837546806954012470979569707180490060420 +main.escalarMul.segments[0].windows[27].adr5.lamda --> 9180522380652373324730362884881119856162905318352786706112511603951479680409 +main.escalarMul.segments[0].windows[27].adr6.lamda --> 18543445251650898129847751271171064903650054415691615492927382585334140869276 +main.escalarMul.segments[0].windows[27].adr7.lamda --> 5303556572288014476719776860847932085344922648581998495567087959942540267922 +main.escalarMul.segments[0].windows[27].adr8.lamda --> 19959443097063746636282210277669385101722146747085046790538472474640522572066 +main.escalarMul.segments[0].adders[26].out[0], main.escalarMul.segments[0].adders[27].in1[0] --> 11362005675407428256561228626721653283524697371181139373748051330419668651406 +main.escalarMul.segments[0].adders[26].out[1], main.escalarMul.segments[0].adders[27].in1[1] --> 13648322146350451799337650882359844079530435349241091422686672901076371536025 +main.escalarMul.segments[0].adders[26].lamda --> 18500368876620467836911094613561295403669091424145683114559037556286947364343 +main.escalarMul.segments[0].cadders[26].out[0], main.escalarMul.segments[0].cadders[27].in1[0] --> 5378761491904350274059874513470121488691206537892587404591641196026850043031 +main.escalarMul.segments[0].cadders[26].out[1], main.escalarMul.segments[0].cadders[27].in1[1] --> 14951786225820406750837326341642835626089574997991308051078835260478685791467 +main.escalarMul.segments[0].cadders[26].lamda --> 6973064742212584598136058526835718766590444010765239135819159761688229366838 +main.escalarMul.segments[0].windows[28].out[0], main.escalarMul.segments[0].windows[28].mux.out[0], main.escalarMul.segments[0].adders[27].in2[0] --> 7094049495747498080462635098523291526887346371346831897704804486079120470100 +main.escalarMul.segments[0].windows[28].out[1], main.escalarMul.segments[0].windows[28].mux.out[1], main.escalarMul.segments[0].adders[27].in2[1] --> 3921022240008894810128296729436112596747007035263769595744015797078920594687 +main.escalarMul.segments[0].windows[28].out8[0], main.escalarMul.segments[0].windows[28].mux.c[0][7], main.escalarMul.segments[0].windows[28].adr8.out[0], main.escalarMul.segments[0].windows[29].base[0], main.escalarMul.segments[0].windows[29].mux.c[0][0], main.escalarMul.segments[0].windows[29].mux.a[0], main.escalarMul.segments[0].windows[29].dbl2.in[0], main.escalarMul.segments[0].windows[29].adr3.in1[0], main.escalarMul.segments[0].windows[29].adr4.in1[0], main.escalarMul.segments[0].windows[29].adr5.in1[0], main.escalarMul.segments[0].windows[29].adr6.in1[0], main.escalarMul.segments[0].windows[29].adr7.in1[0], main.escalarMul.segments[0].windows[29].adr8.in1[0], main.escalarMul.segments[0].cadders[28].in2[0] --> 2946792991887913201423582413385398763644241940926630530778119987179822570718 +main.escalarMul.segments[0].windows[28].out8[1], main.escalarMul.segments[0].windows[28].mux.c[1][7], main.escalarMul.segments[0].windows[28].adr8.out[1], main.escalarMul.segments[0].windows[29].base[1], main.escalarMul.segments[0].windows[29].mux.c[1][0], main.escalarMul.segments[0].windows[29].mux.a[1], main.escalarMul.segments[0].windows[29].dbl2.in[1], main.escalarMul.segments[0].windows[29].adr3.in1[1], main.escalarMul.segments[0].windows[29].adr4.in1[1], main.escalarMul.segments[0].windows[29].adr5.in1[1], main.escalarMul.segments[0].windows[29].adr6.in1[1], main.escalarMul.segments[0].windows[29].adr7.in1[1], main.escalarMul.segments[0].windows[29].adr8.in1[1], main.escalarMul.segments[0].cadders[28].in2[1] --> 16721583550962700362038397594227202155212198389394890501551883744025299894249 +main.escalarMul.segments[0].windows[28].mux.c[0][1], main.escalarMul.segments[0].windows[28].dbl2.out[0], main.escalarMul.segments[0].windows[28].adr3.in2[0] --> 7247991430135003155470325929905718105111265358258169757494985537093845330613 +main.escalarMul.segments[0].windows[28].mux.c[0][2], main.escalarMul.segments[0].windows[28].adr3.out[0], main.escalarMul.segments[0].windows[28].adr4.in2[0] --> 7094049495747498080462635098523291526887346371346831897704804486079120470100 +main.escalarMul.segments[0].windows[28].mux.c[0][3], main.escalarMul.segments[0].windows[28].adr4.out[0], main.escalarMul.segments[0].windows[28].adr5.in2[0] --> 20745360878336688912009551388743584746588086661111653792072596359877198033366 +main.escalarMul.segments[0].windows[28].mux.c[0][4], main.escalarMul.segments[0].windows[28].adr5.out[0], main.escalarMul.segments[0].windows[28].adr6.in2[0] --> 14788324395536474070562956515980606748735263054665096691017727979400054658951 +main.escalarMul.segments[0].windows[28].mux.c[0][5], main.escalarMul.segments[0].windows[28].adr6.out[0], main.escalarMul.segments[0].windows[28].adr7.in2[0] --> 5057234953498538232552071538364603925599532718009987497753578392743491426215 +main.escalarMul.segments[0].windows[28].mux.c[0][6], main.escalarMul.segments[0].windows[28].adr7.out[0], main.escalarMul.segments[0].windows[28].adr8.in2[0] --> 14930225423259255080632515529884808969564496220454870330770339339520903023212 +main.escalarMul.segments[0].windows[28].mux.c[1][1], main.escalarMul.segments[0].windows[28].dbl2.out[1], main.escalarMul.segments[0].windows[28].adr3.in2[1] --> 18990556455594289241559524548609527429290073614681129500131180429086671160817 +main.escalarMul.segments[0].windows[28].mux.c[1][2], main.escalarMul.segments[0].windows[28].adr3.out[1], main.escalarMul.segments[0].windows[28].adr4.in2[1] --> 3921022240008894810128296729436112596747007035263769595744015797078920594687 +main.escalarMul.segments[0].windows[28].mux.c[1][3], main.escalarMul.segments[0].windows[28].adr4.out[1], main.escalarMul.segments[0].windows[28].adr5.in2[1] --> 5214930533851175029088873825972478279628100167700335368892603381182522577112 +main.escalarMul.segments[0].windows[28].mux.c[1][4], main.escalarMul.segments[0].windows[28].adr5.out[1], main.escalarMul.segments[0].windows[28].adr6.in2[1] --> 15472796708420791520620027197054560791836480240151319266664447182076152698720 +main.escalarMul.segments[0].windows[28].mux.c[1][5], main.escalarMul.segments[0].windows[28].adr6.out[1], main.escalarMul.segments[0].windows[28].adr7.in2[1] --> 21318317172157361568215133251655035430846686083811971341443277277938583471310 +main.escalarMul.segments[0].windows[28].mux.c[1][6], main.escalarMul.segments[0].windows[28].adr7.out[1], main.escalarMul.segments[0].windows[28].adr8.in2[1] --> 9903296738979314428714193959662267570141511285177008339144145222868863521992 +main.escalarMul.segments[0].windows[28].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[28].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[28].mux.a21[0] --> 5768535053838450451121168273816728797728847263705416973812298927904667750501 +main.escalarMul.segments[0].windows[28].mux.a21[1] --> 17153373422370142513634264109504887203517765852501551968393037443631216466337 +main.escalarMul.segments[0].windows[28].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[28].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[28].mux.a2[0] --> 2067640873673306549048712157544788644948302585402621459253235925537114802611 +main.escalarMul.segments[0].windows[28].mux.a2[1] --> 10717143948439552327198038865978542858425102797827721118705296168734534956585 +main.escalarMul.segments[0].windows[28].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[28].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[28].mux.a1[0] --> 16261608845723605781194796485344748511648750302500391009638516618791989109377 +main.escalarMul.segments[0].windows[28].mux.a1[1] --> 21053612351866930838952714143617369751883993993356205791483068970313111348169 +main.escalarMul.segments[0].windows[28].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[28].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[28].mux.s10 --> 0 +main.escalarMul.segments[0].windows[28].dbl2.lamda --> 4700170738286382757782328982040747465964140402051751422688533833135634336832 +main.escalarMul.segments[0].windows[28].dbl2.x1_2 --> 18113894642979179905451816916571659925887314718721439988704263413028386641163 +main.escalarMul.segments[0].windows[28].adr3.lamda --> 9953517800395130822630070092357097756304512727276245751634263840463945685039 +main.escalarMul.segments[0].windows[28].adr4.lamda --> 4123909652372351586981710728868476103848815188791225856619850806836995499300 +main.escalarMul.segments[0].windows[28].adr5.lamda --> 10405459091423635008315811072039448365153107659793614863690133120457082830055 +main.escalarMul.segments[0].windows[28].adr6.lamda --> 12651384811090173087158601827012924968865176776352067692353897939362713512171 +main.escalarMul.segments[0].windows[28].adr7.lamda --> 7407242059472241858053452883986474865483832290342764767778126885935768939397 +main.escalarMul.segments[0].windows[28].adr8.lamda --> 3118890157479592333664918669024649350363099929872842740767561145684187842688 +main.escalarMul.segments[0].adders[27].out[0], main.escalarMul.segments[0].adders[28].in1[0] --> 6068923214783200204509401280425890159215813543414007697843918546241834603501 +main.escalarMul.segments[0].adders[27].out[1], main.escalarMul.segments[0].adders[28].in1[1] --> 12646063343060576019216029540368568551401684312561931804066545974485826134875 +main.escalarMul.segments[0].adders[27].lamda --> 929364015376732147675124965923218380823181353983428383989934824843411502193 +main.escalarMul.segments[0].cadders[27].out[0], main.escalarMul.segments[0].cadders[28].in1[0] --> 14979947367093397766376760363430279614713712171301008256592947661442777726621 +main.escalarMul.segments[0].cadders[27].out[1], main.escalarMul.segments[0].cadders[28].in1[1] --> 14243486299525877983819366318994221687441430801287668733089846780751366756209 +main.escalarMul.segments[0].cadders[27].lamda --> 5427759798866914195165239492067630748910817950325039773311777257078689228221 +main.escalarMul.segments[0].windows[29].out[0], main.escalarMul.segments[0].windows[29].mux.out[0], main.escalarMul.segments[0].adders[28].in2[0] --> 1604428587771899569051365943616994757303828274175956767560289693743918132296 +main.escalarMul.segments[0].windows[29].out[1], main.escalarMul.segments[0].windows[29].mux.out[1], main.escalarMul.segments[0].adders[28].in2[1] --> 6181646277319872511712453019768181358993115754700480312102779425161899880965 +main.escalarMul.segments[0].windows[29].out8[0], main.escalarMul.segments[0].windows[29].mux.c[0][7], main.escalarMul.segments[0].windows[29].adr8.out[0], main.escalarMul.segments[0].windows[30].base[0], main.escalarMul.segments[0].windows[30].mux.c[0][0], main.escalarMul.segments[0].windows[30].mux.a[0], main.escalarMul.segments[0].windows[30].dbl2.in[0], main.escalarMul.segments[0].windows[30].adr3.in1[0], main.escalarMul.segments[0].windows[30].adr4.in1[0], main.escalarMul.segments[0].windows[30].adr5.in1[0], main.escalarMul.segments[0].windows[30].adr6.in1[0], main.escalarMul.segments[0].windows[30].adr7.in1[0], main.escalarMul.segments[0].windows[30].adr8.in1[0], main.escalarMul.segments[0].cadders[29].in2[0] --> 336654694575398241177470800431633132071374186572081123148037155341943836401 +main.escalarMul.segments[0].windows[29].out8[1], main.escalarMul.segments[0].windows[29].mux.c[1][7], main.escalarMul.segments[0].windows[29].adr8.out[1], main.escalarMul.segments[0].windows[30].base[1], main.escalarMul.segments[0].windows[30].mux.c[1][0], main.escalarMul.segments[0].windows[30].mux.a[1], main.escalarMul.segments[0].windows[30].dbl2.in[1], main.escalarMul.segments[0].windows[30].adr3.in1[1], main.escalarMul.segments[0].windows[30].adr4.in1[1], main.escalarMul.segments[0].windows[30].adr5.in1[1], main.escalarMul.segments[0].windows[30].adr6.in1[1], main.escalarMul.segments[0].windows[30].adr7.in1[1], main.escalarMul.segments[0].windows[30].adr8.in1[1], main.escalarMul.segments[0].cadders[29].in2[1] --> 11521879721823441062311090671715798458192427511249142266459624966514045137141 +main.escalarMul.segments[0].windows[29].mux.c[0][1], main.escalarMul.segments[0].windows[29].dbl2.out[0], main.escalarMul.segments[0].windows[29].adr3.in2[0] --> 1604428587771899569051365943616994757303828274175956767560289693743918132296 +main.escalarMul.segments[0].windows[29].mux.c[0][2], main.escalarMul.segments[0].windows[29].adr3.out[0], main.escalarMul.segments[0].windows[29].adr4.in2[0] --> 19207987375382923171698896729385131940933412326349968621797829087560535079293 +main.escalarMul.segments[0].windows[29].mux.c[0][3], main.escalarMul.segments[0].windows[29].adr4.out[0], main.escalarMul.segments[0].windows[29].adr5.in2[0] --> 5558287614760266380422853137759903067650410889866252629700377068937054133806 +main.escalarMul.segments[0].windows[29].mux.c[0][4], main.escalarMul.segments[0].windows[29].adr5.out[0], main.escalarMul.segments[0].windows[29].adr6.in2[0] --> 16758628226716502820542018868897231065812585642040808977926676023084769000712 +main.escalarMul.segments[0].windows[29].mux.c[0][5], main.escalarMul.segments[0].windows[29].adr6.out[0], main.escalarMul.segments[0].windows[29].adr7.in2[0] --> 17743800089660512540261113560251982299959765206019072503379616966903951902062 +main.escalarMul.segments[0].windows[29].mux.c[0][6], main.escalarMul.segments[0].windows[29].adr7.out[0], main.escalarMul.segments[0].windows[29].adr8.in2[0] --> 2494526441607151152161266562112648209078972183215304623094069251576283621496 +main.escalarMul.segments[0].windows[29].mux.c[1][1], main.escalarMul.segments[0].windows[29].dbl2.out[1], main.escalarMul.segments[0].windows[29].adr3.in2[1] --> 6181646277319872511712453019768181358993115754700480312102779425161899880965 +main.escalarMul.segments[0].windows[29].mux.c[1][2], main.escalarMul.segments[0].windows[29].adr3.out[1], main.escalarMul.segments[0].windows[29].adr4.in2[1] --> 17568305946815012759056839518271415854214174848275900857690735378328489485599 +main.escalarMul.segments[0].windows[29].mux.c[1][3], main.escalarMul.segments[0].windows[29].adr4.out[1], main.escalarMul.segments[0].windows[29].adr5.in2[1] --> 3195783457074294943396667896996543981056781466805845195757131100524450405253 +main.escalarMul.segments[0].windows[29].mux.c[1][4], main.escalarMul.segments[0].windows[29].adr5.out[1], main.escalarMul.segments[0].windows[29].adr6.in2[1] --> 20697070154757522991715228141926109666738552478883518377167948225951187205615 +main.escalarMul.segments[0].windows[29].mux.c[1][5], main.escalarMul.segments[0].windows[29].adr6.out[1], main.escalarMul.segments[0].windows[29].adr7.in2[1] --> 2592407438122827888901564107519335015020344772113910927754837107456357248270 +main.escalarMul.segments[0].windows[29].mux.c[1][6], main.escalarMul.segments[0].windows[29].adr7.out[1], main.escalarMul.segments[0].windows[29].adr8.in2[1] --> 15918097054987265364894937852135267752934176588489732864504278654483131075540 +main.escalarMul.segments[0].windows[29].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[29].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[29].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[29].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[29].mux.a20[0] --> 2327536267060023352091311161123155240487593230728937288670771237255087339772 +main.escalarMul.segments[0].windows[29].mux.a20[1] --> 14323517428847407969758686285309521233049239328340837083734197386944378551556 +main.escalarMul.segments[0].windows[29].mux.a2[0] --> 13811835234828589619118436455511832302168343701114178447148556035904946429994 +main.escalarMul.segments[0].windows[29].mux.a2[1] --> 3975486603794822629676830547698907511526354089488627875616064481925887311366 +main.escalarMul.segments[0].windows[29].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[29].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[29].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[29].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[29].mux.a0[0] --> 20545878467723261589874189275488871082207950733665360580480373893139904057195 +main.escalarMul.segments[0].windows[29].mux.a0[1] --> 11348305598196447371920461170798254292329281765721624154249099867712408482333 +main.escalarMul.segments[0].windows[29].mux.s10 --> 0 +main.escalarMul.segments[0].windows[29].dbl2.lamda --> 13896119978704384754816689575842023269453445146235675661283385969041394564225 +main.escalarMul.segments[0].windows[29].dbl2.x1_2 --> 20432685959175248304587497522988729374801721898423861989231108702688964216980 +main.escalarMul.segments[0].windows[29].adr3.lamda --> 2069304184719924340140487865755453322361737336319274891754389560272470756672 +main.escalarMul.segments[0].windows[29].adr4.lamda --> 18996724978476140599598188108453700495332002769419402872182249108484642009148 +main.escalarMul.segments[0].windows[29].adr5.lamda --> 9674046079707635195362479385707202932037070208316146831926065870066893138364 +main.escalarMul.segments[0].windows[29].adr6.lamda --> 3560633578981177711218846106135391150290729372087297265470694846494312507544 +main.escalarMul.segments[0].windows[29].adr7.lamda --> 20097402993837066684399088802155274794665834316266174939727743936484409438677 +main.escalarMul.segments[0].windows[29].adr8.lamda --> 3701794459468616387992601256261398741140568811829367684833708312646506675190 +main.escalarMul.segments[0].adders[28].out[0], main.escalarMul.segments[0].adders[29].in1[0] --> 18595627870634040634751703027114420203780311829079896455432254726619510749333 +main.escalarMul.segments[0].adders[28].out[1], main.escalarMul.segments[0].adders[29].in1[1] --> 9874710652115102522538255351611890589307667590843463751934734200651799024544 +main.escalarMul.segments[0].adders[28].lamda --> 14296313183120875961471074142643938053312337836119478536050647398136139556300 +main.escalarMul.segments[0].cadders[28].out[0], main.escalarMul.segments[0].cadders[29].in1[0] --> 5783060330174079072465059513060355109345665924860053413415090962475578591929 +main.escalarMul.segments[0].cadders[28].out[1], main.escalarMul.segments[0].cadders[29].in1[1] --> 21018574290420399419417574952163859231365809149042111601958040364479623336971 +main.escalarMul.segments[0].cadders[28].lamda --> 13787220690219309975634171695762253667248448076044655271902051099583997089332 +main.escalarMul.segments[0].windows[30].out[0], main.escalarMul.segments[0].windows[30].mux.out[0], main.escalarMul.segments[0].adders[29].in2[0] --> 336654694575398241177470800431633132071374186572081123148037155341943836401 +main.escalarMul.segments[0].windows[30].out[1], main.escalarMul.segments[0].windows[30].mux.out[1], main.escalarMul.segments[0].adders[29].in2[1] --> 11521879721823441062311090671715798458192427511249142266459624966514045137141 +main.escalarMul.segments[0].windows[30].out8[0], main.escalarMul.segments[0].windows[30].mux.c[0][7], main.escalarMul.segments[0].windows[30].adr8.out[0], main.escalarMul.segments[0].windows[31].base[0], main.escalarMul.segments[0].windows[31].mux.c[0][0], main.escalarMul.segments[0].windows[31].mux.a[0], main.escalarMul.segments[0].windows[31].dbl2.in[0], main.escalarMul.segments[0].windows[31].adr3.in1[0], main.escalarMul.segments[0].windows[31].adr4.in1[0], main.escalarMul.segments[0].windows[31].adr5.in1[0], main.escalarMul.segments[0].windows[31].adr6.in1[0], main.escalarMul.segments[0].windows[31].adr7.in1[0], main.escalarMul.segments[0].windows[31].adr8.in1[0], main.escalarMul.segments[0].cadders[30].in2[0] --> 21670674842828804045629470966113520668198425955845801795721548183714054050733 +main.escalarMul.segments[0].windows[30].out8[1], main.escalarMul.segments[0].windows[30].mux.c[1][7], main.escalarMul.segments[0].windows[30].adr8.out[1], main.escalarMul.segments[0].windows[31].base[1], main.escalarMul.segments[0].windows[31].mux.c[1][0], main.escalarMul.segments[0].windows[31].mux.a[1], main.escalarMul.segments[0].windows[31].dbl2.in[1], main.escalarMul.segments[0].windows[31].adr3.in1[1], main.escalarMul.segments[0].windows[31].adr4.in1[1], main.escalarMul.segments[0].windows[31].adr5.in1[1], main.escalarMul.segments[0].windows[31].adr6.in1[1], main.escalarMul.segments[0].windows[31].adr7.in1[1], main.escalarMul.segments[0].windows[31].adr8.in1[1], main.escalarMul.segments[0].cadders[30].in2[1] --> 3854330956093833166759017102350664270679747072102583376731351447409806213531 +main.escalarMul.segments[0].windows[30].mux.c[0][1], main.escalarMul.segments[0].windows[30].dbl2.out[0], main.escalarMul.segments[0].windows[30].adr3.in2[0] --> 1310182029292126504772783732448140132505319498125054818484346202698066984531 +main.escalarMul.segments[0].windows[30].mux.c[0][2], main.escalarMul.segments[0].windows[30].adr3.out[0], main.escalarMul.segments[0].windows[30].adr4.in2[0] --> 6520728575649001593091645248595944205276067281097758083093971151527827758094 +main.escalarMul.segments[0].windows[30].mux.c[0][3], main.escalarMul.segments[0].windows[30].adr4.out[0], main.escalarMul.segments[0].windows[30].adr5.in2[0] --> 3678515806487464360463281451506506332381954743083437819316896348046366169606 +main.escalarMul.segments[0].windows[30].mux.c[0][4], main.escalarMul.segments[0].windows[30].adr5.out[0], main.escalarMul.segments[0].windows[30].adr6.in2[0] --> 21695530850583012211426578894674128363230036248530963206479757817253008084251 +main.escalarMul.segments[0].windows[30].mux.c[0][5], main.escalarMul.segments[0].windows[30].adr6.out[0], main.escalarMul.segments[0].windows[30].adr7.in2[0] --> 18810690461741308673192943049064192451412306149833851209308772453317328336536 +main.escalarMul.segments[0].windows[30].mux.c[0][6], main.escalarMul.segments[0].windows[30].adr7.out[0], main.escalarMul.segments[0].windows[30].adr8.in2[0] --> 17128687211019310251392595789545964701233238608186901491019864775118557118886 +main.escalarMul.segments[0].windows[30].mux.c[1][1], main.escalarMul.segments[0].windows[30].dbl2.out[1], main.escalarMul.segments[0].windows[30].adr3.in2[1] --> 13477595477846436180745098523320262026721192958231782339549496999942878100421 +main.escalarMul.segments[0].windows[30].mux.c[1][2], main.escalarMul.segments[0].windows[30].adr3.out[1], main.escalarMul.segments[0].windows[30].adr4.in2[1] --> 7056588529075705882963936991656210094973480500998783448725347177148234763478 +main.escalarMul.segments[0].windows[30].mux.c[1][3], main.escalarMul.segments[0].windows[30].adr4.out[1], main.escalarMul.segments[0].windows[30].adr5.in2[1] --> 618051070699926058538759387129299255280138741679851304263003025077780689749 +main.escalarMul.segments[0].windows[30].mux.c[1][4], main.escalarMul.segments[0].windows[30].adr5.out[1], main.escalarMul.segments[0].windows[30].adr6.in2[1] --> 11821102498199105613198715228769578576594276204997563550785609090958609273056 +main.escalarMul.segments[0].windows[30].mux.c[1][5], main.escalarMul.segments[0].windows[30].adr6.out[1], main.escalarMul.segments[0].windows[30].adr7.in2[1] --> 11489527629500758696493041490011465782012614983881114881755471813899050209387 +main.escalarMul.segments[0].windows[30].mux.c[1][6], main.escalarMul.segments[0].windows[30].adr7.out[1], main.escalarMul.segments[0].windows[30].adr8.in2[1] --> 12171766700084782822651079012032274246836940795479635344272673117119724716787 +main.escalarMul.segments[0].windows[30].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[30].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[30].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[30].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[30].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[30].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[30].mux.a2[0] --> 21358876156007613970249108094242495231158662061958882083331720661911064247850 +main.escalarMul.segments[0].windows[30].mux.a2[1] --> 299222776375664550887624557053780118401848693748421284325984124444564135915 +main.escalarMul.segments[0].windows[30].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[30].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[30].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[30].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[30].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[30].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[30].mux.s10 --> 0 +main.escalarMul.segments[0].windows[30].dbl2.lamda --> 5491222971427627093918738816413150873893757716456889977317813478942506368394 +main.escalarMul.segments[0].windows[30].dbl2.x1_2 --> 3993907830982251650124384482461058001607532975600189533378647962750617476683 +main.escalarMul.segments[0].windows[30].adr3.lamda --> 3586570162096276632983118951832483127169286239928155421574492725820413298607 +main.escalarMul.segments[0].windows[30].adr4.lamda --> 8804365412077335830359559530862585275883147340564326159712523885765799987482 +main.escalarMul.segments[0].windows[30].adr5.lamda --> 5184539510752086839143607041811029321168018815085030843123869271134199097388 +main.escalarMul.segments[0].windows[30].adr6.lamda --> 3481854147027941250460018314686042043927600088557130748340621012481240827089 +main.escalarMul.segments[0].windows[30].adr7.lamda --> 3756283719003091555019215978090602549482533796988167369381473397324976156973 +main.escalarMul.segments[0].windows[30].adr8.lamda --> 4078054971787073619126844979961136947109585220464885747364981342044771506363 +main.escalarMul.segments[0].adders[29].out[0], main.escalarMul.segments[0].adders[30].in1[0] --> 695940092110549880806751896636576894204987036555970261507874165017045305752 +main.escalarMul.segments[0].adders[29].out[1], main.escalarMul.segments[0].adders[30].in1[1] --> 3487348534262869365248600499891005982007158815476417240175788895944649909389 +main.escalarMul.segments[0].adders[29].lamda --> 7678464254313827343578193015269240450745495939986129104458243100758832346577 +main.escalarMul.segments[0].cadders[29].out[0], main.escalarMul.segments[0].cadders[30].in1[0] --> 5509667918734156989187320209242712769284640745404868404243078094973167118688 +main.escalarMul.segments[0].cadders[29].out[1], main.escalarMul.segments[0].cadders[30].in1[1] --> 14782471703760557383625145825151384919160152697441536788976894807220333300840 +main.escalarMul.segments[0].cadders[29].lamda --> 20765301692711466886555462046189481712488442990064930231097137915596102153947 +main.escalarMul.segments[0].windows[31].out[0], main.escalarMul.segments[0].windows[31].mux.out[0], main.escalarMul.segments[0].adders[30].in2[0] --> 11193069484640740989639963999933247887986922995298852722735693138705364490552 +main.escalarMul.segments[0].windows[31].out[1], main.escalarMul.segments[0].windows[31].mux.out[1], main.escalarMul.segments[0].adders[30].in2[1] --> 16716830132372497340220374814606324260477685914462574876021803845627398060569 +main.escalarMul.segments[0].windows[31].out8[0], main.escalarMul.segments[0].windows[31].mux.c[0][7], main.escalarMul.segments[0].windows[31].adr8.out[0], main.escalarMul.segments[0].windows[32].base[0], main.escalarMul.segments[0].windows[32].mux.c[0][0], main.escalarMul.segments[0].windows[32].mux.a[0], main.escalarMul.segments[0].windows[32].dbl2.in[0], main.escalarMul.segments[0].windows[32].adr3.in1[0], main.escalarMul.segments[0].windows[32].adr4.in1[0], main.escalarMul.segments[0].windows[32].adr5.in1[0], main.escalarMul.segments[0].windows[32].adr6.in1[0], main.escalarMul.segments[0].windows[32].adr7.in1[0], main.escalarMul.segments[0].windows[32].adr8.in1[0], main.escalarMul.segments[0].cadders[31].in2[0] --> 6055099985528263896862260511186912819756391508453522777463456730047209427451 +main.escalarMul.segments[0].windows[31].out8[1], main.escalarMul.segments[0].windows[31].mux.c[1][7], main.escalarMul.segments[0].windows[31].adr8.out[1], main.escalarMul.segments[0].windows[32].base[1], main.escalarMul.segments[0].windows[32].mux.c[1][0], main.escalarMul.segments[0].windows[32].mux.a[1], main.escalarMul.segments[0].windows[32].dbl2.in[1], main.escalarMul.segments[0].windows[32].adr3.in1[1], main.escalarMul.segments[0].windows[32].adr4.in1[1], main.escalarMul.segments[0].windows[32].adr5.in1[1], main.escalarMul.segments[0].windows[32].adr6.in1[1], main.escalarMul.segments[0].windows[32].adr7.in1[1], main.escalarMul.segments[0].windows[32].adr8.in1[1], main.escalarMul.segments[0].cadders[31].in2[1] --> 2382883347721230097286084316278522442539856435324760686242591476738913576456 +main.escalarMul.segments[0].windows[31].mux.c[0][1], main.escalarMul.segments[0].windows[31].dbl2.out[0], main.escalarMul.segments[0].windows[31].adr3.in2[0] --> 8822641292315065267229792271552640510864382703662536640909272577920504603318 +main.escalarMul.segments[0].windows[31].mux.c[0][2], main.escalarMul.segments[0].windows[31].adr3.out[0], main.escalarMul.segments[0].windows[31].adr4.in2[0] --> 21292186822197293289389406685530661815953126721825920362174007683641511588866 +main.escalarMul.segments[0].windows[31].mux.c[0][3], main.escalarMul.segments[0].windows[31].adr4.out[0], main.escalarMul.segments[0].windows[31].adr5.in2[0] --> 10374295576745557243374019998479075267451816950373122763221222516207858123676 +main.escalarMul.segments[0].windows[31].mux.c[0][4], main.escalarMul.segments[0].windows[31].adr5.out[0], main.escalarMul.segments[0].windows[31].adr6.in2[0] --> 11193069484640740989639963999933247887986922995298852722735693138705364490552 +main.escalarMul.segments[0].windows[31].mux.c[0][5], main.escalarMul.segments[0].windows[31].adr6.out[0], main.escalarMul.segments[0].windows[31].adr7.in2[0] --> 13020317383457805451477660361280892120400280505198748056940027141102428950729 +main.escalarMul.segments[0].windows[31].mux.c[0][6], main.escalarMul.segments[0].windows[31].adr7.out[0], main.escalarMul.segments[0].windows[31].adr8.in2[0] --> 21117294322519067596662199239653486467956338868510130584153848748340449350939 +main.escalarMul.segments[0].windows[31].mux.c[1][1], main.escalarMul.segments[0].windows[31].dbl2.out[1], main.escalarMul.segments[0].windows[31].adr3.in2[1] --> 5475946968059892148563234930987929376596589526084064718191913488766264294354 +main.escalarMul.segments[0].windows[31].mux.c[1][2], main.escalarMul.segments[0].windows[31].adr3.out[1], main.escalarMul.segments[0].windows[31].adr4.in2[1] --> 12386944486142047803056848245012401531758644704455491537356913694739460102431 +main.escalarMul.segments[0].windows[31].mux.c[1][3], main.escalarMul.segments[0].windows[31].adr4.out[1], main.escalarMul.segments[0].windows[31].adr5.in2[1] --> 5631430063669397201286078825297190126986292361003849619160201204528505484322 +main.escalarMul.segments[0].windows[31].mux.c[1][4], main.escalarMul.segments[0].windows[31].adr5.out[1], main.escalarMul.segments[0].windows[31].adr6.in2[1] --> 16716830132372497340220374814606324260477685914462574876021803845627398060569 +main.escalarMul.segments[0].windows[31].mux.c[1][5], main.escalarMul.segments[0].windows[31].adr6.out[1], main.escalarMul.segments[0].windows[31].adr7.in2[1] --> 4241673693883602601770914325739421829820483562590532026217184432188216797864 +main.escalarMul.segments[0].windows[31].mux.c[1][6], main.escalarMul.segments[0].windows[31].adr7.out[1], main.escalarMul.segments[0].windows[31].adr8.in2[1] --> 20125059504681692105507256723288215575708770057010094143521166516796352744161 +main.escalarMul.segments[0].windows[31].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[31].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[31].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[31].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[31].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[31].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[31].mux.a2[0] --> 11410637513651212166256898779077002308336861439869085270712349141567118935436 +main.escalarMul.segments[0].windows[31].mux.a2[1] --> 12862499176278664173461357712255659989797938842359991499290452398217591847038 +main.escalarMul.segments[0].windows[31].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[31].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[31].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[31].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[31].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[31].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[31].mux.s10 --> 0 +main.escalarMul.segments[0].windows[31].dbl2.lamda --> 13826844088635904388034332705226202489595024550709605269848344268868692974820 +main.escalarMul.segments[0].windows[31].dbl2.x1_2 --> 19827027949311363760068790328589250806699606732525077859820059480737624842919 +main.escalarMul.segments[0].windows[31].adr3.lamda --> 17771992695544840571152352727206676001921302628434526346083774833832783734536 +main.escalarMul.segments[0].windows[31].adr4.lamda --> 13795644882298881276756987879126864148413522156346669113244110719825182079783 +main.escalarMul.segments[0].windows[31].adr5.lamda --> 6903721391385907865314627690968633262569661798922644977894821666221157656197 +main.escalarMul.segments[0].windows[31].adr6.lamda --> 11548156266216043575821800340377638945050836593466227241743521743635657334854 +main.escalarMul.segments[0].windows[31].adr7.lamda --> 1560805647697761522062728896647558392686402157610482501486094658009994150110 +main.escalarMul.segments[0].windows[31].adr8.lamda --> 19853151599448273990764772832774590354609061348822750667677767072104051301509 +main.escalarMul.segments[0].adders[30].out[0], main.escalarMul.segments[0].adders[31].in1[0] --> 16844160872350448613225603850815663888378869435175518556016940854275279597362 +main.escalarMul.segments[0].adders[30].out[1], main.escalarMul.segments[0].adders[31].in1[1] --> 16119645207283622557238540475291576017768265209495894956151742053747541032911 +main.escalarMul.segments[0].adders[30].lamda --> 5873823443935478112454117647054471242334434615991557414335149292777157609106 +main.escalarMul.segments[0].cadders[30].out[0], main.escalarMul.segments[0].cadders[31].in1[0] --> 9121697016732385259340372050537799809603132008011067051630446351251297694241 +main.escalarMul.segments[0].cadders[30].out[1], main.escalarMul.segments[0].cadders[31].in1[1] --> 4789240542810859294990012188959796135571783182929820411736683841647677050055 +main.escalarMul.segments[0].cadders[30].lamda --> 19817069824416061011349600623778695808648779467586085024298590545858112456875 +main.escalarMul.segments[0].windows[32].out[0], main.escalarMul.segments[0].windows[32].mux.out[0], main.escalarMul.segments[0].adders[31].in2[0] --> 20148536250906154797778662621157318411740340148862480655173838397499588953647 +main.escalarMul.segments[0].windows[32].out[1], main.escalarMul.segments[0].windows[32].mux.out[1], main.escalarMul.segments[0].adders[31].in2[1] --> 3346063778583920338304422204726096663515259287564343921097369425679689475348 +main.escalarMul.segments[0].windows[32].out8[0], main.escalarMul.segments[0].windows[32].mux.c[0][7], main.escalarMul.segments[0].windows[32].adr8.out[0], main.escalarMul.segments[0].windows[33].base[0], main.escalarMul.segments[0].windows[33].mux.c[0][0], main.escalarMul.segments[0].windows[33].mux.a[0], main.escalarMul.segments[0].windows[33].dbl2.in[0], main.escalarMul.segments[0].windows[33].adr3.in1[0], main.escalarMul.segments[0].windows[33].adr4.in1[0], main.escalarMul.segments[0].windows[33].adr5.in1[0], main.escalarMul.segments[0].windows[33].adr6.in1[0], main.escalarMul.segments[0].windows[33].adr7.in1[0], main.escalarMul.segments[0].windows[33].adr8.in1[0], main.escalarMul.segments[0].cadders[32].in2[0] --> 18831099021083468293384079030501697141197125031498517035228397988585864734564 +main.escalarMul.segments[0].windows[32].out8[1], main.escalarMul.segments[0].windows[32].mux.c[1][7], main.escalarMul.segments[0].windows[32].adr8.out[1], main.escalarMul.segments[0].windows[33].base[1], main.escalarMul.segments[0].windows[33].mux.c[1][0], main.escalarMul.segments[0].windows[33].mux.a[1], main.escalarMul.segments[0].windows[33].dbl2.in[1], main.escalarMul.segments[0].windows[33].adr3.in1[1], main.escalarMul.segments[0].windows[33].adr4.in1[1], main.escalarMul.segments[0].windows[33].adr5.in1[1], main.escalarMul.segments[0].windows[33].adr6.in1[1], main.escalarMul.segments[0].windows[33].adr7.in1[1], main.escalarMul.segments[0].windows[33].adr8.in1[1], main.escalarMul.segments[0].cadders[32].in2[1] --> 16767826408042260939823080859422617022349702074946328019398141152213983794797 +main.escalarMul.segments[0].windows[32].mux.c[0][1], main.escalarMul.segments[0].windows[32].dbl2.out[0], main.escalarMul.segments[0].windows[32].adr3.in2[0] --> 13245755800061339388478565016946501479713250715990967561881098401466626237781 +main.escalarMul.segments[0].windows[32].mux.c[0][2], main.escalarMul.segments[0].windows[32].adr3.out[0], main.escalarMul.segments[0].windows[32].adr4.in2[0] --> 6559761928637136236221265638297357342090786978056354801950042105156617158167 +main.escalarMul.segments[0].windows[32].mux.c[0][3], main.escalarMul.segments[0].windows[32].adr4.out[0], main.escalarMul.segments[0].windows[32].adr5.in2[0] --> 14141424214604024975656325306267106584595091061330000266823316604099816097725 +main.escalarMul.segments[0].windows[32].mux.c[0][4], main.escalarMul.segments[0].windows[32].adr5.out[0], main.escalarMul.segments[0].windows[32].adr6.in2[0] --> 20148536250906154797778662621157318411740340148862480655173838397499588953647 +main.escalarMul.segments[0].windows[32].mux.c[0][5], main.escalarMul.segments[0].windows[32].adr6.out[0], main.escalarMul.segments[0].windows[32].adr7.in2[0] --> 8605849989059437613643639596478846973326039171832299381923538803698694765561 +main.escalarMul.segments[0].windows[32].mux.c[0][6], main.escalarMul.segments[0].windows[32].adr7.out[0], main.escalarMul.segments[0].windows[32].adr8.in2[0] --> 21468152268717562624585564716715646072103943546524587566445381984415960152002 +main.escalarMul.segments[0].windows[32].mux.c[1][1], main.escalarMul.segments[0].windows[32].dbl2.out[1], main.escalarMul.segments[0].windows[32].adr3.in2[1] --> 11160405776633230435889175827584757053431944165576124038386861652699908797211 +main.escalarMul.segments[0].windows[32].mux.c[1][2], main.escalarMul.segments[0].windows[32].adr3.out[1], main.escalarMul.segments[0].windows[32].adr4.in2[1] --> 2747430917213611098961143030738083530310254335452650686863031260649211697128 +main.escalarMul.segments[0].windows[32].mux.c[1][3], main.escalarMul.segments[0].windows[32].adr4.out[1], main.escalarMul.segments[0].windows[32].adr5.in2[1] --> 14761299789503738182666104145147496115248520408522778589168425330195496384340 +main.escalarMul.segments[0].windows[32].mux.c[1][4], main.escalarMul.segments[0].windows[32].adr5.out[1], main.escalarMul.segments[0].windows[32].adr6.in2[1] --> 3346063778583920338304422204726096663515259287564343921097369425679689475348 +main.escalarMul.segments[0].windows[32].mux.c[1][5], main.escalarMul.segments[0].windows[32].adr6.out[1], main.escalarMul.segments[0].windows[32].adr7.in2[1] --> 4248168652098223203221054519555069720343210520489533544604043429212474359967 +main.escalarMul.segments[0].windows[32].mux.c[1][6], main.escalarMul.segments[0].windows[32].adr7.out[1], main.escalarMul.segments[0].windows[32].adr8.in2[1] --> 10998605736579697342453339954644698649517521469617595552775576008959489456067 +main.escalarMul.segments[0].windows[32].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[32].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[32].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[32].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[32].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[32].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[32].mux.a2[0] --> 14093436265377890900916402109970405591983948640408957877710381667452379526196 +main.escalarMul.segments[0].windows[32].mux.a2[1] --> 963180430862690241018337888447574220975402852239583234854777948940775898892 +main.escalarMul.segments[0].windows[32].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[32].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[32].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[32].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[32].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[32].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[32].mux.s10 --> 0 +main.escalarMul.segments[0].windows[32].dbl2.lamda --> 7617828982488728703360268351079734499285365519779449066261535651252169465209 +main.escalarMul.segments[0].windows[32].dbl2.x1_2 --> 5896668911389106010200775588386843482016466786643560949576635080129052257473 +main.escalarMul.segments[0].windows[32].adr3.lamda --> 13986042617251847116507606658851593410749598677773596776166251818723470149895 +main.escalarMul.segments[0].windows[32].adr4.lamda --> 12623862895340496587315741361667437349413545661802609105432811068097084540069 +main.escalarMul.segments[0].windows[32].adr5.lamda --> 10401702375083564480695065022765759185571185101965057094711148367382330810248 +main.escalarMul.segments[0].windows[32].adr6.lamda --> 18529776167261148309606807208974805502909487818134629934169685947391514383218 +main.escalarMul.segments[0].windows[32].adr7.lamda --> 11936268604858869012245993947785842654201296753181208668817260723156444105576 +main.escalarMul.segments[0].windows[32].adr8.lamda --> 11905600380366393419606757955028946311396806050145488913778832172457205416390 +main.escalarMul.segments[0].adders[31].out[0], main.escalarMul.segments[0].adders[32].in1[0] --> 15332388379133417416080610356763256136541928371531575299440225833254657720259 +main.escalarMul.segments[0].adders[31].out[1], main.escalarMul.segments[0].adders[32].in1[1] --> 4863168442508871269312629929531289036893015418977576092252184638078213641228 +main.escalarMul.segments[0].adders[31].lamda --> 9975567674317875031522293868051819879621673620295414121133724575086602396979 +main.escalarMul.segments[0].cadders[31].out[0], main.escalarMul.segments[0].cadders[32].in1[0] --> 2935382940340263131500405173680575411585656940534859563842816820429673769126 +main.escalarMul.segments[0].cadders[31].out[1], main.escalarMul.segments[0].cadders[32].in1[1] --> 21208601828361560266008868569403934644697816078092073475275053073652770971297 +main.escalarMul.segments[0].cadders[31].lamda --> 6949333717444692621774973270834093154911160049913227555186863297891095440091 +main.escalarMul.segments[0].windows[33].out[0], main.escalarMul.segments[0].windows[33].mux.out[0], main.escalarMul.segments[0].adders[32].in2[0] --> 21442450312549154788983423030294493529290956546047414933632993427265961763257 +main.escalarMul.segments[0].windows[33].out[1], main.escalarMul.segments[0].windows[33].mux.out[1], main.escalarMul.segments[0].adders[32].in2[1] --> 12140297190513164901784629823715413481431652626433801605103789690043294274916 +main.escalarMul.segments[0].windows[33].out8[0], main.escalarMul.segments[0].windows[33].mux.c[0][7], main.escalarMul.segments[0].windows[33].adr8.out[0], main.escalarMul.segments[0].windows[34].base[0], main.escalarMul.segments[0].windows[34].mux.c[0][0], main.escalarMul.segments[0].windows[34].mux.a[0], main.escalarMul.segments[0].windows[34].dbl2.in[0], main.escalarMul.segments[0].windows[34].adr3.in1[0], main.escalarMul.segments[0].windows[34].adr4.in1[0], main.escalarMul.segments[0].windows[34].adr5.in1[0], main.escalarMul.segments[0].windows[34].adr6.in1[0], main.escalarMul.segments[0].windows[34].adr7.in1[0], main.escalarMul.segments[0].windows[34].adr8.in1[0], main.escalarMul.segments[0].cadders[33].in2[0] --> 2664928649517245516624806860044832968235499746527301909882327878741844679654 +main.escalarMul.segments[0].windows[33].out8[1], main.escalarMul.segments[0].windows[33].mux.c[1][7], main.escalarMul.segments[0].windows[33].adr8.out[1], main.escalarMul.segments[0].windows[34].base[1], main.escalarMul.segments[0].windows[34].mux.c[1][0], main.escalarMul.segments[0].windows[34].mux.a[1], main.escalarMul.segments[0].windows[34].dbl2.in[1], main.escalarMul.segments[0].windows[34].adr3.in1[1], main.escalarMul.segments[0].windows[34].adr4.in1[1], main.escalarMul.segments[0].windows[34].adr5.in1[1], main.escalarMul.segments[0].windows[34].adr6.in1[1], main.escalarMul.segments[0].windows[34].adr7.in1[1], main.escalarMul.segments[0].windows[34].adr8.in1[1], main.escalarMul.segments[0].cadders[33].in2[1] --> 15955704112527040651555197205512523632532911493772873258482983792868906523387 +main.escalarMul.segments[0].windows[33].mux.c[0][1], main.escalarMul.segments[0].windows[33].dbl2.out[0], main.escalarMul.segments[0].windows[33].adr3.in2[0] --> 18617692502161089299191588404151138597760300729051221594492808823684620584168 +main.escalarMul.segments[0].windows[33].mux.c[0][2], main.escalarMul.segments[0].windows[33].adr3.out[0], main.escalarMul.segments[0].windows[33].adr4.in2[0] --> 13919296973409709853324733976713644752028605222782313186308189459023209164249 +main.escalarMul.segments[0].windows[33].mux.c[0][3], main.escalarMul.segments[0].windows[33].adr4.out[0], main.escalarMul.segments[0].windows[33].adr5.in2[0] --> 6882611907164959651339429881678870031233655382814660403917363775213355110557 +main.escalarMul.segments[0].windows[33].mux.c[0][4], main.escalarMul.segments[0].windows[33].adr5.out[0], main.escalarMul.segments[0].windows[33].adr6.in2[0] --> 14383813260720184743526671748200530204572844075024880858101152628760108668623 +main.escalarMul.segments[0].windows[33].mux.c[0][5], main.escalarMul.segments[0].windows[33].adr6.out[0], main.escalarMul.segments[0].windows[33].adr7.in2[0] --> 13925503148260236438971824079667107762868700191986681159237710429228644859340 +main.escalarMul.segments[0].windows[33].mux.c[0][6], main.escalarMul.segments[0].windows[33].adr7.out[0], main.escalarMul.segments[0].windows[33].adr8.in2[0] --> 21442450312549154788983423030294493529290956546047414933632993427265961763257 +main.escalarMul.segments[0].windows[33].mux.c[1][1], main.escalarMul.segments[0].windows[33].dbl2.out[1], main.escalarMul.segments[0].windows[33].adr3.in2[1] --> 4971519185357588520582256888311813499100854425705131038466531493768200643486 +main.escalarMul.segments[0].windows[33].mux.c[1][2], main.escalarMul.segments[0].windows[33].adr3.out[1], main.escalarMul.segments[0].windows[33].adr4.in2[1] --> 10834454052290733858707022393389964177447437794133707673004418799359283163011 +main.escalarMul.segments[0].windows[33].mux.c[1][3], main.escalarMul.segments[0].windows[33].adr4.out[1], main.escalarMul.segments[0].windows[33].adr5.in2[1] --> 10415874022735568580756141622104261635602418641356268567716087350127588472562 +main.escalarMul.segments[0].windows[33].mux.c[1][4], main.escalarMul.segments[0].windows[33].adr5.out[1], main.escalarMul.segments[0].windows[33].adr6.in2[1] --> 12443102369403468053517526180443506540854104419560037394590045038348606919152 +main.escalarMul.segments[0].windows[33].mux.c[1][5], main.escalarMul.segments[0].windows[33].adr6.out[1], main.escalarMul.segments[0].windows[33].adr7.in2[1] --> 4509584224337805280523877218842921620393755709558547477770398929037700162746 +main.escalarMul.segments[0].windows[33].mux.c[1][6], main.escalarMul.segments[0].windows[33].adr7.out[1], main.escalarMul.segments[0].windows[33].adr8.in2[1] --> 12140297190513164901784629823715413481431652626433801605103789690043294274916 +main.escalarMul.segments[0].windows[33].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[33].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[33].mux.a21[0] --> 11970439099502728485516096335882015713886632279738737924452049328068508664949 +main.escalarMul.segments[0].windows[33].mux.a21[1] --> 5630567176861223929383162109304559785479812487686384556907467004549387987550 +main.escalarMul.segments[0].windows[33].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[33].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[33].mux.a2[0] --> 17440957111475991672388998462956108151924083443942398166570958826750052429676 +main.escalarMul.segments[0].windows[33].mux.a2[1] --> 17563518833200482335940851066278164607052766745029743718890108072710431619972 +main.escalarMul.segments[0].windows[33].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[33].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[33].mux.a1[0] --> 16976440824165516782187060691469222699379844591699830494777995657013152925302 +main.escalarMul.segments[0].windows[33].mux.a1[1] --> 15954870516087748141130347279224622243646100119603413997304481833721107863831 +main.escalarMul.segments[0].windows[33].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[33].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[33].mux.s10 --> 0 +main.escalarMul.segments[0].windows[33].dbl2.lamda --> 18016900657405337213048951552688175604040364740956169772328049155831770447961 +main.escalarMul.segments[0].windows[33].dbl2.x1_2 --> 15859561633754628537285651057501591103476209723339142166706753760060497077405 +main.escalarMul.segments[0].windows[33].adr3.lamda --> 5313053999956113610374901867518191900055492024313087713287146512636479957948 +main.escalarMul.segments[0].windows[33].adr4.lamda --> 21608549642526468862901354154544310948104984683422028521037063427252523844484 +main.escalarMul.segments[0].windows[33].adr5.lamda --> 20989220334434396833106055540804540268442932471703552820562022823948601228972 +main.escalarMul.segments[0].windows[33].adr6.lamda --> 21212029878702372028179732349966514036556121036712388315955484433581490493301 +main.escalarMul.segments[0].windows[33].adr7.lamda --> 2327812670207798259680453251024611731554992046230464807822120290445001423820 +main.escalarMul.segments[0].windows[33].adr8.lamda --> 9015069805362085062214934126586835366860557715767262072716849952709433654197 +main.escalarMul.segments[0].adders[32].out[0], main.escalarMul.segments[0].adders[33].in1[0] --> 5450380109433245015505691778992961739771246750084096096342613516611632546647 +main.escalarMul.segments[0].adders[32].out[1], main.escalarMul.segments[0].adders[33].in1[1] --> 15649637890466778691152667223892607736697679007864839852282854542152223953936 +main.escalarMul.segments[0].adders[32].lamda --> 1893344878316201788501451878214288380815801491753636970651315231024476874592 +main.escalarMul.segments[0].cadders[32].out[0], main.escalarMul.segments[0].cadders[33].in1[0] --> 20182698814833023392203800582183072781739847394729295336479107719884526805866 +main.escalarMul.segments[0].cadders[32].out[1], main.escalarMul.segments[0].cadders[33].in1[1] --> 1086732751900314994356800733233382157619242827740669914870422136647832958976 +main.escalarMul.segments[0].cadders[32].lamda --> 2758819235692058124661773287787858932307474892592720187077211660259995017753 +main.escalarMul.segments[0].windows[34].out[0], main.escalarMul.segments[0].windows[34].mux.out[0], main.escalarMul.segments[0].adders[33].in2[0] --> 7047883901122087418712224281105477468709209030322332857290971442857103105884 +main.escalarMul.segments[0].windows[34].out[1], main.escalarMul.segments[0].windows[34].mux.out[1], main.escalarMul.segments[0].adders[33].in2[1] --> 6533418022468067171922142589596837857943598158232067000791041087735047618852 +main.escalarMul.segments[0].windows[34].out8[0], main.escalarMul.segments[0].windows[34].mux.c[0][7], main.escalarMul.segments[0].windows[34].adr8.out[0], main.escalarMul.segments[0].windows[35].base[0], main.escalarMul.segments[0].windows[35].mux.c[0][0], main.escalarMul.segments[0].windows[35].mux.a[0], main.escalarMul.segments[0].windows[35].dbl2.in[0], main.escalarMul.segments[0].windows[35].adr3.in1[0], main.escalarMul.segments[0].windows[35].adr4.in1[0], main.escalarMul.segments[0].windows[35].adr5.in1[0], main.escalarMul.segments[0].windows[35].adr6.in1[0], main.escalarMul.segments[0].windows[35].adr7.in1[0], main.escalarMul.segments[0].windows[35].adr8.in1[0], main.escalarMul.segments[0].cadders[34].in2[0] --> 14392503588501914576472961056959772888413220810278219009892434787048511877121 +main.escalarMul.segments[0].windows[34].out8[1], main.escalarMul.segments[0].windows[34].mux.c[1][7], main.escalarMul.segments[0].windows[34].adr8.out[1], main.escalarMul.segments[0].windows[35].base[1], main.escalarMul.segments[0].windows[35].mux.c[1][0], main.escalarMul.segments[0].windows[35].mux.a[1], main.escalarMul.segments[0].windows[35].dbl2.in[1], main.escalarMul.segments[0].windows[35].adr3.in1[1], main.escalarMul.segments[0].windows[35].adr4.in1[1], main.escalarMul.segments[0].windows[35].adr5.in1[1], main.escalarMul.segments[0].windows[35].adr6.in1[1], main.escalarMul.segments[0].windows[35].adr7.in1[1], main.escalarMul.segments[0].windows[35].adr8.in1[1], main.escalarMul.segments[0].cadders[34].in2[1] --> 3821707555443528227153167559762453793854572366131118698191053549546360889322 +main.escalarMul.segments[0].windows[34].mux.c[0][1], main.escalarMul.segments[0].windows[34].dbl2.out[0], main.escalarMul.segments[0].windows[34].adr3.in2[0] --> 14329045230558096906685657715441891618586102516670032932935335710851405968105 +main.escalarMul.segments[0].windows[34].mux.c[0][2], main.escalarMul.segments[0].windows[34].adr3.out[0], main.escalarMul.segments[0].windows[34].adr4.in2[0] --> 3947758836065843897381106258826113507813943156819023975859971402877759693276 +main.escalarMul.segments[0].windows[34].mux.c[0][3], main.escalarMul.segments[0].windows[34].adr4.out[0], main.escalarMul.segments[0].windows[34].adr5.in2[0] --> 20881172215099412046568732201701162850631499767436356164881524851655442593456 +main.escalarMul.segments[0].windows[34].mux.c[0][4], main.escalarMul.segments[0].windows[34].adr5.out[0], main.escalarMul.segments[0].windows[34].adr6.in2[0] --> 7872079484822610104990188428791829960830125671961186466862830956415430988552 +main.escalarMul.segments[0].windows[34].mux.c[0][5], main.escalarMul.segments[0].windows[34].adr6.out[0], main.escalarMul.segments[0].windows[34].adr7.in2[0] --> 3070481907243074520558330548958642501490658623384116296659525878821275145600 +main.escalarMul.segments[0].windows[34].mux.c[0][6], main.escalarMul.segments[0].windows[34].adr7.out[0], main.escalarMul.segments[0].windows[34].adr8.in2[0] --> 7047883901122087418712224281105477468709209030322332857290971442857103105884 +main.escalarMul.segments[0].windows[34].mux.c[1][1], main.escalarMul.segments[0].windows[34].dbl2.out[1], main.escalarMul.segments[0].windows[34].adr3.in2[1] --> 13281851619695274420083414369477183808153879444913876669471875489608074116932 +main.escalarMul.segments[0].windows[34].mux.c[1][2], main.escalarMul.segments[0].windows[34].adr3.out[1], main.escalarMul.segments[0].windows[34].adr4.in2[1] --> 18742241003326773725121500364921804495315168936546601051903228089125989460162 +main.escalarMul.segments[0].windows[34].mux.c[1][3], main.escalarMul.segments[0].windows[34].adr4.out[1], main.escalarMul.segments[0].windows[34].adr5.in2[1] --> 8419584426672017916989586495911226240873671102045955842309750380776775639811 +main.escalarMul.segments[0].windows[34].mux.c[1][4], main.escalarMul.segments[0].windows[34].adr5.out[1], main.escalarMul.segments[0].windows[34].adr6.in2[1] --> 19105565368592012272598690596510616661086920476338295294386354627899903614411 +main.escalarMul.segments[0].windows[34].mux.c[1][5], main.escalarMul.segments[0].windows[34].adr6.out[1], main.escalarMul.segments[0].windows[34].adr7.in2[1] --> 898846980336316239590356382487925045083722239605802415363673145518651544092 +main.escalarMul.segments[0].windows[34].mux.c[1][6], main.escalarMul.segments[0].windows[34].adr7.out[1], main.escalarMul.segments[0].windows[34].adr8.in2[1] --> 6533418022468067171922142589596837857943598158232067000791041087735047618852 +main.escalarMul.segments[0].windows[34].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[34].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[34].mux.a21[0] --> 19781217101590154155212142198789642056849004348485458668148701148881565599327 +main.escalarMul.segments[0].windows[34].mux.a21[1] --> 6529558634915597048003554578934215422622784639536078256682646350153869563283 +main.escalarMul.segments[0].windows[34].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[34].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[34].mux.a2[0] --> 5207150835305364588365381568746996992594625925433884556980503077673586308898 +main.escalarMul.segments[0].windows[34].mux.a2[1] --> 3149861256064971621043493390998093028554008982565422035903370835030997091024 +main.escalarMul.segments[0].windows[34].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[34].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[34].mux.a1[0] --> 1282830186548598380756299398781280539578443410291722065977643524135915013622 +main.escalarMul.segments[0].windows[34].mux.a1[1] --> 2786536890799733073566303159409280862782257442773727793420244296257082936775 +main.escalarMul.segments[0].windows[34].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[34].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[34].mux.s10 --> 0 +main.escalarMul.segments[0].windows[34].dbl2.lamda --> 9577094762476753897101096090927684486315002706138130370869504787186472849551 +main.escalarMul.segments[0].windows[34].dbl2.x1_2 --> 20606643926749389112955895806667979713786105491934130405963947646451102652800 +main.escalarMul.segments[0].windows[34].adr3.lamda --> 4778371670472483695356840073609592755504585477965357878085482823995632533732 +main.escalarMul.segments[0].windows[34].adr4.lamda --> 6419614431168168084835404484681901100155876655105551411732030437141706663274 +main.escalarMul.segments[0].windows[34].adr5.lamda --> 8609190415049583181367607586043228612889271490089634372587974315515310088258 +main.escalarMul.segments[0].windows[34].adr6.lamda --> 6485762513234314899965660875259908018317788336710184758441864190872711046737 +main.escalarMul.segments[0].windows[34].adr7.lamda --> 15686979133379576200108953155683134557604759162175379540467576672788048582778 +main.escalarMul.segments[0].windows[34].adr8.lamda --> 9801760436770875689795382774381353645720686176038125792148412653565648706177 +main.escalarMul.segments[0].adders[33].out[0], main.escalarMul.segments[0].adders[34].in1[0] --> 19206439095097252467585170839112877576625128694366291611727329159497671555652 +main.escalarMul.segments[0].adders[33].out[1], main.escalarMul.segments[0].adders[34].in1[1] --> 13157912825672044763213693250645958090682311223244091959804371949834610464361 +main.escalarMul.segments[0].adders[33].lamda --> 1619142640374274894229264344961738474878374421126389495787978192111878327497 +main.escalarMul.segments[0].cadders[33].out[0], main.escalarMul.segments[0].cadders[34].in1[0] --> 2754531900020732733507294581322461928168154229490838026630413736155330126995 +main.escalarMul.segments[0].cadders[33].out[1], main.escalarMul.segments[0].cadders[34].in1[1] --> 9961190362287474333146874793746985072749292644528530462199027437125261618105 +main.escalarMul.segments[0].cadders[33].lamda --> 16838957256375215281895656317590792400630135715173422472586922482454426156727 +main.escalarMul.segments[0].windows[35].out[0], main.escalarMul.segments[0].windows[35].mux.out[0], main.escalarMul.segments[0].adders[34].in2[0] --> 8523916770529891725819303585802114699455876206250968176527905289420175814105 +main.escalarMul.segments[0].windows[35].out[1], main.escalarMul.segments[0].windows[35].mux.out[1], main.escalarMul.segments[0].adders[34].in2[1] --> 12818525300516011698288557146242069367931615000505295675567546361870145214137 +main.escalarMul.segments[0].windows[35].out8[0], main.escalarMul.segments[0].windows[35].mux.c[0][7], main.escalarMul.segments[0].windows[35].adr8.out[0], main.escalarMul.segments[0].windows[36].base[0], main.escalarMul.segments[0].windows[36].mux.c[0][0], main.escalarMul.segments[0].windows[36].mux.a[0], main.escalarMul.segments[0].windows[36].dbl2.in[0], main.escalarMul.segments[0].windows[36].adr3.in1[0], main.escalarMul.segments[0].windows[36].adr4.in1[0], main.escalarMul.segments[0].windows[36].adr5.in1[0], main.escalarMul.segments[0].windows[36].adr6.in1[0], main.escalarMul.segments[0].windows[36].adr7.in1[0], main.escalarMul.segments[0].windows[36].adr8.in1[0], main.escalarMul.segments[0].cadders[35].in2[0] --> 12429859245587283220785823511633104305273793955677449061712752801391316724037 +main.escalarMul.segments[0].windows[35].out8[1], main.escalarMul.segments[0].windows[35].mux.c[1][7], main.escalarMul.segments[0].windows[35].adr8.out[1], main.escalarMul.segments[0].windows[36].base[1], main.escalarMul.segments[0].windows[36].mux.c[1][0], main.escalarMul.segments[0].windows[36].mux.a[1], main.escalarMul.segments[0].windows[36].dbl2.in[1], main.escalarMul.segments[0].windows[36].adr3.in1[1], main.escalarMul.segments[0].windows[36].adr4.in1[1], main.escalarMul.segments[0].windows[36].adr5.in1[1], main.escalarMul.segments[0].windows[36].adr6.in1[1], main.escalarMul.segments[0].windows[36].adr7.in1[1], main.escalarMul.segments[0].windows[36].adr8.in1[1], main.escalarMul.segments[0].cadders[35].in2[1] --> 18296430009863682685046428341579722959348703056604018784838067726622547579226 +main.escalarMul.segments[0].windows[35].mux.c[0][1], main.escalarMul.segments[0].windows[35].dbl2.out[0], main.escalarMul.segments[0].windows[35].adr3.in2[0] --> 8523916770529891725819303585802114699455876206250968176527905289420175814105 +main.escalarMul.segments[0].windows[35].mux.c[0][2], main.escalarMul.segments[0].windows[35].adr3.out[0], main.escalarMul.segments[0].windows[35].adr4.in2[0] --> 14097390015936565139568946219068367251402451407681964697290063990860058842521 +main.escalarMul.segments[0].windows[35].mux.c[0][3], main.escalarMul.segments[0].windows[35].adr4.out[0], main.escalarMul.segments[0].windows[35].adr5.in2[0] --> 17969211791390172601417715667741392382586602851153761610977436989099271207357 +main.escalarMul.segments[0].windows[35].mux.c[0][4], main.escalarMul.segments[0].windows[35].adr5.out[0], main.escalarMul.segments[0].windows[35].adr6.in2[0] --> 5658798488851283417921550419401823587629427943482883503455444335958817723581 +main.escalarMul.segments[0].windows[35].mux.c[0][5], main.escalarMul.segments[0].windows[35].adr6.out[0], main.escalarMul.segments[0].windows[35].adr7.in2[0] --> 14739147109772698426710284245070184277237994496965472272389727571110665386433 +main.escalarMul.segments[0].windows[35].mux.c[0][6], main.escalarMul.segments[0].windows[35].adr7.out[0], main.escalarMul.segments[0].windows[35].adr8.in2[0] --> 12034027247962441718811833395993573755522794264530378209276081208526431512146 +main.escalarMul.segments[0].windows[35].mux.c[1][1], main.escalarMul.segments[0].windows[35].dbl2.out[1], main.escalarMul.segments[0].windows[35].adr3.in2[1] --> 12818525300516011698288557146242069367931615000505295675567546361870145214137 +main.escalarMul.segments[0].windows[35].mux.c[1][2], main.escalarMul.segments[0].windows[35].adr3.out[1], main.escalarMul.segments[0].windows[35].adr4.in2[1] --> 8590597082169851525991701188030903558205777287800567562611022814763361790243 +main.escalarMul.segments[0].windows[35].mux.c[1][3], main.escalarMul.segments[0].windows[35].adr4.out[1], main.escalarMul.segments[0].windows[35].adr5.in2[1] --> 6430814933967909275805905208657510332309393198029931187630948444355939640659 +main.escalarMul.segments[0].windows[35].mux.c[1][4], main.escalarMul.segments[0].windows[35].adr5.out[1], main.escalarMul.segments[0].windows[35].adr6.in2[1] --> 12135689415136919319344225985737475968712115153787470329819308695713967526133 +main.escalarMul.segments[0].windows[35].mux.c[1][5], main.escalarMul.segments[0].windows[35].adr6.out[1], main.escalarMul.segments[0].windows[35].adr7.in2[1] --> 12251717921349360087483330324635463357855274842322725999764960334116457035260 +main.escalarMul.segments[0].windows[35].mux.c[1][6], main.escalarMul.segments[0].windows[35].adr7.out[1], main.escalarMul.segments[0].windows[35].adr8.in2[1] --> 6792547203016643081116203547928172218273375279939681175128343997758704384885 +main.escalarMul.segments[0].windows[35].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[35].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[35].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[35].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[35].mux.a20[0] --> 14948935438893437859442391296826018878565911157509839602298812732780183725868 +main.escalarMul.segments[0].windows[35].mux.a20[1] --> 13007453632979232519250120497675646903614481454577113036267363012654513679929 +main.escalarMul.segments[0].windows[35].mux.a2[0] --> 13154537772188644063694995107699325787764571533620698837261213735486114342077 +main.escalarMul.segments[0].windows[35].mux.a2[1] --> 8313981859693391092191058425975022174857542787656351631628255146167606636811 +main.escalarMul.segments[0].windows[35].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[35].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[35].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[35].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[35].mux.a0[0] --> 16019656053867252371592748274099616899591019796388783510333674688947472432601 +main.escalarMul.segments[0].windows[35].mux.a0[1] --> 8996817745072483471135389586479615574077042634374176977376492812323784324815 +main.escalarMul.segments[0].windows[35].mux.s10 --> 0 +main.escalarMul.segments[0].windows[35].dbl2.lamda --> 1560351960017427748624169086970467615851556990517956906196693797410205901083 +main.escalarMul.segments[0].windows[35].dbl2.x1_2 --> 17250081611944394357741571926563084476250188134490391029662134255938887197714 +main.escalarMul.segments[0].windows[35].adr3.lamda --> 5657009947098628935844574074774878078482540362589168105606986020742588609979 +main.escalarMul.segments[0].windows[35].adr4.lamda --> 11545214632304726000198157189932266120569454198133947407020961922744211083639 +main.escalarMul.segments[0].windows[35].adr5.lamda --> 9069112224602758367874671569380030802978288832895085308633061322149441972674 +main.escalarMul.segments[0].windows[35].adr6.lamda --> 11210571626078227637548812879433291276434695669246290806492895029232798651419 +main.escalarMul.segments[0].windows[35].adr7.lamda --> 11480353908697031049181920434458355285703608154347896837497257364450676068283 +main.escalarMul.segments[0].windows[35].adr8.lamda --> 17895322732842401833999305406041458721902602068072128566775042135882469265207 +main.escalarMul.segments[0].adders[34].out[0], main.escalarMul.segments[0].adders[35].in1[0] --> 4175830945274250762622225719981553565948341474340985705391058770551044251273 +main.escalarMul.segments[0].adders[34].out[1], main.escalarMul.segments[0].adders[35].in1[1] --> 10629629842623653790242233728709289950323402271360479834560954503349177933003 +main.escalarMul.segments[0].adders[34].lamda --> 5048982613002214509580479977055037830338257122432758903686951187418479904589 +main.escalarMul.segments[0].cadders[34].out[0], main.escalarMul.segments[0].cadders[35].in1[0] --> 8025162633890002280181251626218229706289703495604156882201106669494322256573 +main.escalarMul.segments[0].cadders[34].out[1], main.escalarMul.segments[0].cadders[35].in1[1] --> 4603688300027751689563509764670293253772120326261556996874720954121021588048 +main.escalarMul.segments[0].cadders[34].lamda --> 20372117849560733664647813010333729273176923045874900469046385026276206824608 +main.escalarMul.segments[0].windows[36].out[0], main.escalarMul.segments[0].windows[36].mux.out[0], main.escalarMul.segments[0].adders[35].in2[0] --> 10839265362388567932074572002024092540661199499093967735597190151939810914293 +main.escalarMul.segments[0].windows[36].out[1], main.escalarMul.segments[0].windows[36].mux.out[1], main.escalarMul.segments[0].adders[35].in2[1] --> 2162626933802617514992023136693792907656363827456640556813775785560137668058 +main.escalarMul.segments[0].windows[36].out8[0], main.escalarMul.segments[0].windows[36].mux.c[0][7], main.escalarMul.segments[0].windows[36].adr8.out[0], main.escalarMul.segments[0].windows[37].base[0], main.escalarMul.segments[0].windows[37].mux.c[0][0], main.escalarMul.segments[0].windows[37].mux.a[0], main.escalarMul.segments[0].windows[37].dbl2.in[0], main.escalarMul.segments[0].windows[37].adr3.in1[0], main.escalarMul.segments[0].windows[37].adr4.in1[0], main.escalarMul.segments[0].windows[37].adr5.in1[0], main.escalarMul.segments[0].windows[37].adr6.in1[0], main.escalarMul.segments[0].windows[37].adr7.in1[0], main.escalarMul.segments[0].windows[37].adr8.in1[0], main.escalarMul.segments[0].cadders[36].in2[0] --> 19348516129613793549178772997549407970405522736997265844125113349294476566163 +main.escalarMul.segments[0].windows[36].out8[1], main.escalarMul.segments[0].windows[36].mux.c[1][7], main.escalarMul.segments[0].windows[36].adr8.out[1], main.escalarMul.segments[0].windows[37].base[1], main.escalarMul.segments[0].windows[37].mux.c[1][0], main.escalarMul.segments[0].windows[37].mux.a[1], main.escalarMul.segments[0].windows[37].dbl2.in[1], main.escalarMul.segments[0].windows[37].adr3.in1[1], main.escalarMul.segments[0].windows[37].adr4.in1[1], main.escalarMul.segments[0].windows[37].adr5.in1[1], main.escalarMul.segments[0].windows[37].adr6.in1[1], main.escalarMul.segments[0].windows[37].adr7.in1[1], main.escalarMul.segments[0].windows[37].adr8.in1[1], main.escalarMul.segments[0].cadders[36].in2[1] --> 8311398933811532319967531252146300332738746060809887702289835743797670940617 +main.escalarMul.segments[0].windows[36].mux.c[0][1], main.escalarMul.segments[0].windows[36].dbl2.out[0], main.escalarMul.segments[0].windows[36].adr3.in2[0] --> 4664197842476510638102744375105744817679352479610724202208552314798513758822 +main.escalarMul.segments[0].windows[36].mux.c[0][2], main.escalarMul.segments[0].windows[36].adr3.out[0], main.escalarMul.segments[0].windows[36].adr4.in2[0] --> 10839265362388567932074572002024092540661199499093967735597190151939810914293 +main.escalarMul.segments[0].windows[36].mux.c[0][3], main.escalarMul.segments[0].windows[36].adr4.out[0], main.escalarMul.segments[0].windows[36].adr5.in2[0] --> 15589813885741514554555814585851748850585239834310209879005298848118085321211 +main.escalarMul.segments[0].windows[36].mux.c[0][4], main.escalarMul.segments[0].windows[36].adr5.out[0], main.escalarMul.segments[0].windows[36].adr6.in2[0] --> 6359152321715588784707655164064649706901396199990348268860191154474000035705 +main.escalarMul.segments[0].windows[36].mux.c[0][5], main.escalarMul.segments[0].windows[36].adr6.out[0], main.escalarMul.segments[0].windows[36].adr7.in2[0] --> 6191849092695493398664270032323253338890260253167200839434481636290906261448 +main.escalarMul.segments[0].windows[36].mux.c[0][6], main.escalarMul.segments[0].windows[36].adr7.out[0], main.escalarMul.segments[0].windows[36].adr8.in2[0] --> 13857562400983697897822243929453553260951617747048296095135469670894665014394 +main.escalarMul.segments[0].windows[36].mux.c[1][1], main.escalarMul.segments[0].windows[36].dbl2.out[1], main.escalarMul.segments[0].windows[36].adr3.in2[1] --> 9753226644959337250028210280088524703122852072214486239474141733865725951783 +main.escalarMul.segments[0].windows[36].mux.c[1][2], main.escalarMul.segments[0].windows[36].adr3.out[1], main.escalarMul.segments[0].windows[36].adr4.in2[1] --> 2162626933802617514992023136693792907656363827456640556813775785560137668058 +main.escalarMul.segments[0].windows[36].mux.c[1][3], main.escalarMul.segments[0].windows[36].adr4.out[1], main.escalarMul.segments[0].windows[36].adr5.in2[1] --> 11094523590475943664962351710010361171028761763980909402724081104787722836206 +main.escalarMul.segments[0].windows[36].mux.c[1][4], main.escalarMul.segments[0].windows[36].adr5.out[1], main.escalarMul.segments[0].windows[36].adr6.in2[1] --> 14244668728157706196440137573244216659371705467374140530916298845039115234208 +main.escalarMul.segments[0].windows[36].mux.c[1][5], main.escalarMul.segments[0].windows[36].adr6.out[1], main.escalarMul.segments[0].windows[36].adr7.in2[1] --> 6444389414050566732129684648211207218014658155044574405117873448114277026111 +main.escalarMul.segments[0].windows[36].mux.c[1][6], main.escalarMul.segments[0].windows[36].adr7.out[1], main.escalarMul.segments[0].windows[36].adr8.in2[1] --> 14615622307674459639089354093448489258729835280322623319096333171989966875621 +main.escalarMul.segments[0].windows[36].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[36].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[36].mux.a21[0] --> 9089003962466824401825840274997915318662816003641429152390841165872170788433 +main.escalarMul.segments[0].windows[36].mux.a21[1] --> 16504756655577818612703621725090202651050469042095861016204326268013261552581 +main.escalarMul.segments[0].windows[36].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[36].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[36].mux.a2[0] --> 15817535947967580786168237397688820490175966644728933550845642539658491807285 +main.escalarMul.segments[0].windows[36].mux.a2[1] --> 17836481590133298733640114976921768788571366811186156089776435304992376150599 +main.escalarMul.segments[0].windows[36].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[36].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[36].mux.a1[0] --> 20297648988640559933535154235648263323935769943832553017582641537124302685873 +main.escalarMul.segments[0].windows[36].mux.a1[1] --> 5754439795778210052192000540371345036856025171268656115673912245513398584449 +main.escalarMul.segments[0].windows[36].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[36].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[36].mux.s10 --> 0 +main.escalarMul.segments[0].windows[36].dbl2.lamda --> 320873275064279854724257995818643134211093057254984346478774365161653165428 +main.escalarMul.segments[0].windows[36].dbl2.x1_2 --> 2088402880404904467025598281668670642217442102695474440074250272308864419750 +main.escalarMul.segments[0].windows[36].adr3.lamda --> 3568556068289498896661636903589092030097269306512616403171764186301242719726 +main.escalarMul.segments[0].windows[36].adr4.lamda --> 12914828828325383489667326159605774901954004641464815460755822996858535184841 +main.escalarMul.segments[0].windows[36].adr5.lamda --> 9563327824228069989670173191195130012467520726892594818572879040353070561281 +main.escalarMul.segments[0].windows[36].adr6.lamda --> 8007800935418858298127761569346208914549040710060154294850252053573395015014 +main.escalarMul.segments[0].windows[36].adr7.lamda --> 13489511872152633409626718227237685526305529123400378652023731796319607286661 +main.escalarMul.segments[0].windows[36].adr8.lamda --> 8833100410388352372227331392176918018758909815723651015077699638103064677863 +main.escalarMul.segments[0].adders[35].out[0], main.escalarMul.segments[0].adders[36].in1[0] --> 19381367452214660889160027542203579872241692613658844222008099353999203355336 +main.escalarMul.segments[0].adders[35].out[1], main.escalarMul.segments[0].adders[36].in1[1] --> 1621593886202063718556907814539003599786640941217173765115772164656615578683 +main.escalarMul.segments[0].adders[35].lamda --> 17024152482809887310963427289452334439759329264570327421172731732493877691263 +main.escalarMul.segments[0].cadders[35].out[0], main.escalarMul.segments[0].cadders[36].in1[0] --> 17817745049861985055763067404561701170964485682282442480565737572143237759630 +main.escalarMul.segments[0].cadders[35].out[1], main.escalarMul.segments[0].cadders[36].in1[1] --> 2833098781010347887404953030091412404417536693588694123228776884269273914072 +main.escalarMul.segments[0].cadders[35].lamda --> 17159336969830116823869244719929693813616956407282898962907407745499962852713 +main.escalarMul.segments[0].windows[37].out[0], main.escalarMul.segments[0].windows[37].mux.out[0], main.escalarMul.segments[0].adders[36].in2[0] --> 2009877835810758981446184154331240324647033360518013681737157900824639826799 +main.escalarMul.segments[0].windows[37].out[1], main.escalarMul.segments[0].windows[37].mux.out[1], main.escalarMul.segments[0].adders[36].in2[1] --> 1464317344746349772187267607951562737423143402045551758516163493499974923608 +main.escalarMul.segments[0].windows[37].out8[0], main.escalarMul.segments[0].windows[37].mux.c[0][7], main.escalarMul.segments[0].windows[37].adr8.out[0], main.escalarMul.segments[0].windows[38].base[0], main.escalarMul.segments[0].windows[38].mux.c[0][0], main.escalarMul.segments[0].windows[38].mux.a[0], main.escalarMul.segments[0].windows[38].dbl2.in[0], main.escalarMul.segments[0].windows[38].adr3.in1[0], main.escalarMul.segments[0].windows[38].adr4.in1[0], main.escalarMul.segments[0].windows[38].adr5.in1[0], main.escalarMul.segments[0].windows[38].adr6.in1[0], main.escalarMul.segments[0].windows[38].adr7.in1[0], main.escalarMul.segments[0].windows[38].adr8.in1[0], main.escalarMul.segments[0].cadders[37].in2[0] --> 10164493499076434430008681404332122524771543253530035171366796927539069100280 +main.escalarMul.segments[0].windows[37].out8[1], main.escalarMul.segments[0].windows[37].mux.c[1][7], main.escalarMul.segments[0].windows[37].adr8.out[1], main.escalarMul.segments[0].windows[38].base[1], main.escalarMul.segments[0].windows[38].mux.c[1][0], main.escalarMul.segments[0].windows[38].mux.a[1], main.escalarMul.segments[0].windows[38].dbl2.in[1], main.escalarMul.segments[0].windows[38].adr3.in1[1], main.escalarMul.segments[0].windows[38].adr4.in1[1], main.escalarMul.segments[0].windows[38].adr5.in1[1], main.escalarMul.segments[0].windows[38].adr6.in1[1], main.escalarMul.segments[0].windows[38].adr7.in1[1], main.escalarMul.segments[0].windows[38].adr8.in1[1], main.escalarMul.segments[0].cadders[37].in2[1] --> 19047311660003855915128641020394279730635325638918468490781674460881938761476 +main.escalarMul.segments[0].windows[37].mux.c[0][1], main.escalarMul.segments[0].windows[37].dbl2.out[0], main.escalarMul.segments[0].windows[37].adr3.in2[0] --> 16500089895535535576053012102183584639598989944451836806445631967353678671489 +main.escalarMul.segments[0].windows[37].mux.c[0][2], main.escalarMul.segments[0].windows[37].adr3.out[0], main.escalarMul.segments[0].windows[37].adr4.in2[0] --> 16566964470561944089558158459431459148236710170150359127528596223896660173161 +main.escalarMul.segments[0].windows[37].mux.c[0][3], main.escalarMul.segments[0].windows[37].adr4.out[0], main.escalarMul.segments[0].windows[37].adr5.in2[0] --> 383799020807389488741759560078425914763792302030206407156764561517133806338 +main.escalarMul.segments[0].windows[37].mux.c[0][4], main.escalarMul.segments[0].windows[37].adr5.out[0], main.escalarMul.segments[0].windows[37].adr6.in2[0] --> 1681926314318447741223066267745568503759694198724546471265656200067640538003 +main.escalarMul.segments[0].windows[37].mux.c[0][5], main.escalarMul.segments[0].windows[37].adr6.out[0], main.escalarMul.segments[0].windows[37].adr7.in2[0] --> 19648499687539920459180739983761934351916629685424480710456235210379815019334 +main.escalarMul.segments[0].windows[37].mux.c[0][6], main.escalarMul.segments[0].windows[37].adr7.out[0], main.escalarMul.segments[0].windows[37].adr8.in2[0] --> 2009877835810758981446184154331240324647033360518013681737157900824639826799 +main.escalarMul.segments[0].windows[37].mux.c[1][1], main.escalarMul.segments[0].windows[37].dbl2.out[1], main.escalarMul.segments[0].windows[37].adr3.in2[1] --> 15460852530211727464298641058901725684802143325005354767975547101785350175874 +main.escalarMul.segments[0].windows[37].mux.c[1][2], main.escalarMul.segments[0].windows[37].adr3.out[1], main.escalarMul.segments[0].windows[37].adr4.in2[1] --> 10619590656903571672546677147334945657525303106064705307196157472206913738035 +main.escalarMul.segments[0].windows[37].mux.c[1][3], main.escalarMul.segments[0].windows[37].adr4.out[1], main.escalarMul.segments[0].windows[37].adr5.in2[1] --> 21000862318850134952240189922524779848738245600690150388540962308157792428537 +main.escalarMul.segments[0].windows[37].mux.c[1][4], main.escalarMul.segments[0].windows[37].adr5.out[1], main.escalarMul.segments[0].windows[37].adr6.in2[1] --> 18407187337050370092009727283368047001552491536522346222241598220807468079370 +main.escalarMul.segments[0].windows[37].mux.c[1][5], main.escalarMul.segments[0].windows[37].adr6.out[1], main.escalarMul.segments[0].windows[37].adr7.in2[1] --> 19373921830132539961858153117232185504879304422633356476400393312159821892555 +main.escalarMul.segments[0].windows[37].mux.c[1][6], main.escalarMul.segments[0].windows[37].adr7.out[1], main.escalarMul.segments[0].windows[37].adr8.in2[1] --> 1464317344746349772187267607951562737423143402045551758516163493499974923608 +main.escalarMul.segments[0].windows[37].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[37].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[37].mux.a21[0] --> 3109503180544160699843732424703620643056151728640373927068018826154815681798 +main.escalarMul.segments[0].windows[37].mux.a21[1] --> 2637181156443215549844800174652145499632459220684422275066447730859072542437 +main.escalarMul.segments[0].windows[37].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[37].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[37].mux.a2[0] --> 4221653056543929414290699015453435621902535862143314970838747037348972467457 +main.escalarMul.segments[0].windows[37].mux.a2[1] --> 10095788403238837772042196031221746668813745475712458519951762477009797138753 +main.escalarMul.segments[0].windows[37].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[37].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[37].mux.a1[0] --> 19106691212787425762625791207139326266379551833569127627101687061177992102615 +main.escalarMul.segments[0].windows[37].mux.a1[1] --> 2308191723092039352579145895188645324786557045254817604906321728409242797418 +main.escalarMul.segments[0].windows[37].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[37].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[37].mux.s10 --> 0 +main.escalarMul.segments[0].windows[37].dbl2.lamda --> 10073915559018769678023875888949776806542966553830449815828855756229918328994 +main.escalarMul.segments[0].windows[37].dbl2.x1_2 --> 2582636705924532461801137823448562887948180359526076813112686147428612377714 +main.escalarMul.segments[0].windows[37].adr3.lamda --> 927706790073438387595652853384303735977247696918439650993298276732886082689 +main.escalarMul.segments[0].windows[37].adr4.lamda --> 10294224442203931446700394675735811124772146413498874499050842178585389961776 +main.escalarMul.segments[0].windows[37].adr5.lamda --> 20662151986298959149826599202028622033875550146264823539544433230770463337798 +main.escalarMul.segments[0].windows[37].adr6.lamda --> 11978718085417681114901234574540919358142169243083921593767407929167749710834 +main.escalarMul.segments[0].windows[37].adr7.lamda --> 15085404212115158548270831879641543753857525649035443416229213931359494732842 +main.escalarMul.segments[0].windows[37].adr8.lamda --> 19876705001844036708047575756585438692126805498322583801821364238476623393034 +main.escalarMul.segments[0].adders[36].out[0], main.escalarMul.segments[0].adders[37].in1[0] --> 6145244334096349678439253361751772510789073008737089502161004655888371788615 +main.escalarMul.segments[0].adders[36].out[1], main.escalarMul.segments[0].adders[37].in1[1] --> 12634256963395394340680047276123891012838924528329583661104523491011810889846 +main.escalarMul.segments[0].adders[36].lamda --> 20322534391278643775688791203875132069529394082704132892170135324099600094859 +main.escalarMul.segments[0].cadders[36].out[0], main.escalarMul.segments[0].cadders[37].in1[0] --> 20504837878499070007106301025014213987996225672147248436029009070341709279219 +main.escalarMul.segments[0].cadders[36].out[1], main.escalarMul.segments[0].cadders[37].in1[1] --> 12010028785334868935505187896834067679601455630884478839571121303274341099288 +main.escalarMul.segments[0].cadders[36].lamda --> 15811269903527015114528283308598660165936183409331637949082010248212430994177 +main.escalarMul.segments[0].windows[38].out[0], main.escalarMul.segments[0].windows[38].mux.out[0], main.escalarMul.segments[0].adders[37].in2[0] --> 9824399162058134729576735829197083632686753962726446671476924444588086668847 +main.escalarMul.segments[0].windows[38].out[1], main.escalarMul.segments[0].windows[38].mux.out[1], main.escalarMul.segments[0].adders[37].in2[1] --> 11888054381308720192596604963831772249784812697599325616586090799679431828662 +main.escalarMul.segments[0].windows[38].out8[0], main.escalarMul.segments[0].windows[38].mux.c[0][7], main.escalarMul.segments[0].windows[38].adr8.out[0], main.escalarMul.segments[0].windows[39].base[0], main.escalarMul.segments[0].windows[39].mux.c[0][0], main.escalarMul.segments[0].windows[39].mux.a[0], main.escalarMul.segments[0].windows[39].dbl2.in[0], main.escalarMul.segments[0].windows[39].adr3.in1[0], main.escalarMul.segments[0].windows[39].adr4.in1[0], main.escalarMul.segments[0].windows[39].adr5.in1[0], main.escalarMul.segments[0].windows[39].adr6.in1[0], main.escalarMul.segments[0].windows[39].adr7.in1[0], main.escalarMul.segments[0].windows[39].adr8.in1[0], main.escalarMul.segments[0].cadders[38].in2[0] --> 195626775076397178200550467080029907023488840087504503366438626341408102785 +main.escalarMul.segments[0].windows[38].out8[1], main.escalarMul.segments[0].windows[38].mux.c[1][7], main.escalarMul.segments[0].windows[38].adr8.out[1], main.escalarMul.segments[0].windows[39].base[1], main.escalarMul.segments[0].windows[39].mux.c[1][0], main.escalarMul.segments[0].windows[39].mux.a[1], main.escalarMul.segments[0].windows[39].dbl2.in[1], main.escalarMul.segments[0].windows[39].adr3.in1[1], main.escalarMul.segments[0].windows[39].adr4.in1[1], main.escalarMul.segments[0].windows[39].adr5.in1[1], main.escalarMul.segments[0].windows[39].adr6.in1[1], main.escalarMul.segments[0].windows[39].adr7.in1[1], main.escalarMul.segments[0].windows[39].adr8.in1[1], main.escalarMul.segments[0].cadders[38].in2[1] --> 1207555659819699489971240645299997580899412219459720667438124346208188552376 +main.escalarMul.segments[0].windows[38].mux.c[0][1], main.escalarMul.segments[0].windows[38].dbl2.out[0], main.escalarMul.segments[0].windows[38].adr3.in2[0] --> 6426923815831582232713511934900596036504357138295046432925573117673039726499 +main.escalarMul.segments[0].windows[38].mux.c[0][2], main.escalarMul.segments[0].windows[38].adr3.out[0], main.escalarMul.segments[0].windows[38].adr4.in2[0] --> 14309686964847394941583547171142767618527168658448347308579039220819982838754 +main.escalarMul.segments[0].windows[38].mux.c[0][3], main.escalarMul.segments[0].windows[38].adr4.out[0], main.escalarMul.segments[0].windows[38].adr5.in2[0] --> 4004655487654021338073427872197002543716863769588380970905284410735781132930 +main.escalarMul.segments[0].windows[38].mux.c[0][4], main.escalarMul.segments[0].windows[38].adr5.out[0], main.escalarMul.segments[0].windows[38].adr6.in2[0] --> 9824399162058134729576735829197083632686753962726446671476924444588086668847 +main.escalarMul.segments[0].windows[38].mux.c[0][5], main.escalarMul.segments[0].windows[38].adr6.out[0], main.escalarMul.segments[0].windows[38].adr7.in2[0] --> 19859355709421104812773882096872207135759906814422436612381929207865038084692 +main.escalarMul.segments[0].windows[38].mux.c[0][6], main.escalarMul.segments[0].windows[38].adr7.out[0], main.escalarMul.segments[0].windows[38].adr8.in2[0] --> 14494865939380315925161467445932685965966821664436571351757602088411959336323 +main.escalarMul.segments[0].windows[38].mux.c[1][1], main.escalarMul.segments[0].windows[38].dbl2.out[1], main.escalarMul.segments[0].windows[38].adr3.in2[1] --> 7079385803755547995992934156289415022881056095933878812265767779167063527274 +main.escalarMul.segments[0].windows[38].mux.c[1][2], main.escalarMul.segments[0].windows[38].adr3.out[1], main.escalarMul.segments[0].windows[38].adr4.in2[1] --> 17227002971393715385525015624797202370359176729129734559331901482233825793248 +main.escalarMul.segments[0].windows[38].mux.c[1][3], main.escalarMul.segments[0].windows[38].adr4.out[1], main.escalarMul.segments[0].windows[38].adr5.in2[1] --> 2939695583947837453802495983908225030732450103024450754464003323436066442713 +main.escalarMul.segments[0].windows[38].mux.c[1][4], main.escalarMul.segments[0].windows[38].adr5.out[1], main.escalarMul.segments[0].windows[38].adr6.in2[1] --> 11888054381308720192596604963831772249784812697599325616586090799679431828662 +main.escalarMul.segments[0].windows[38].mux.c[1][5], main.escalarMul.segments[0].windows[38].adr6.out[1], main.escalarMul.segments[0].windows[38].adr7.in2[1] --> 8461163193033065183083211749865823501278800224733844543017294840756697101170 +main.escalarMul.segments[0].windows[38].mux.c[1][6], main.escalarMul.segments[0].windows[38].adr7.out[1], main.escalarMul.segments[0].windows[38].adr8.in2[1] --> 14943247016632631386795141245087398567348624233452514991403040431146568980171 +main.escalarMul.segments[0].windows[38].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[38].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[38].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[38].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[38].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[38].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[38].mux.a2[0] --> 21548148534820975521814460170122236196463575109612445843808331703624826064184 +main.escalarMul.segments[0].windows[38].mux.a2[1] --> 14728985593144139499714369688694767607697851459096891469502620525373301562803 +main.escalarMul.segments[0].windows[38].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[38].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[38].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[38].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[38].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[38].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[38].mux.s10 --> 0 +main.escalarMul.segments[0].windows[38].dbl2.lamda --> 17670880341335116535209193542940028316159829607833457510626158200960479880074 +main.escalarMul.segments[0].windows[38].dbl2.x1_2 --> 2437000156136528378574768471087731400381851329960951417576599760226704552825 +main.escalarMul.segments[0].windows[38].adr3.lamda --> 12273808816502247390775459945680256113746483327032416419359697646445733476262 +main.escalarMul.segments[0].windows[38].adr4.lamda --> 3150799488812682960126109507897835377695287253713562612028212727438132872160 +main.escalarMul.segments[0].windows[38].adr5.lamda --> 17592214661799035790581479799002681198075825309516904632858939880796142848323 +main.escalarMul.segments[0].windows[38].adr6.lamda --> 13281051353026369033455927018284905926657693675997989216238513624895897979511 +main.escalarMul.segments[0].windows[38].adr7.lamda --> 11951493314514171734503188616004532844375829117318514315564227650180308197951 +main.escalarMul.segments[0].windows[38].adr8.lamda --> 3370645724032942513881344396267731525297170340718333722784201570114060271474 +main.escalarMul.segments[0].adders[37].out[0], main.escalarMul.segments[0].adders[38].in1[0] --> 19564053312237399883980916899048305755439817964875188572128533811172651017234 +main.escalarMul.segments[0].adders[37].out[1], main.escalarMul.segments[0].adders[38].in1[1] --> 6055945237122615433391655425138645344554839602864392639969438229775348908979 +main.escalarMul.segments[0].adders[37].lamda --> 2128631848617901270598210823653442991960261662280283934715640744056707957099 +main.escalarMul.segments[0].cadders[37].out[0], main.escalarMul.segments[0].cadders[38].in1[0] --> 3278456190869914269557949637270533134086275929233249608172877551580846988633 +main.escalarMul.segments[0].cadders[37].out[1], main.escalarMul.segments[0].cadders[38].in1[1] --> 17064857404375587814827739181475146926696621005340515056096119958442043964083 +main.escalarMul.segments[0].cadders[37].lamda --> 3494887542068925315231288782590531181325305819314369204553203140771915983909 +main.escalarMul.segments[0].windows[39].out[0], main.escalarMul.segments[0].windows[39].mux.out[0], main.escalarMul.segments[0].adders[38].in2[0] --> 13461878241383013407615979437161473294980840203441748970580816622963868452312 +main.escalarMul.segments[0].windows[39].out[1], main.escalarMul.segments[0].windows[39].mux.out[1], main.escalarMul.segments[0].adders[38].in2[1] --> 20916477442500481004218965874397609608499184508221990358790261524476962315444 +main.escalarMul.segments[0].windows[39].out8[0], main.escalarMul.segments[0].windows[39].mux.c[0][7], main.escalarMul.segments[0].windows[39].adr8.out[0], main.escalarMul.segments[0].windows[40].base[0], main.escalarMul.segments[0].windows[40].mux.c[0][0], main.escalarMul.segments[0].windows[40].mux.a[0], main.escalarMul.segments[0].windows[40].dbl2.in[0], main.escalarMul.segments[0].windows[40].adr3.in1[0], main.escalarMul.segments[0].windows[40].adr4.in1[0], main.escalarMul.segments[0].windows[40].adr5.in1[0], main.escalarMul.segments[0].windows[40].adr6.in1[0], main.escalarMul.segments[0].windows[40].adr7.in1[0], main.escalarMul.segments[0].windows[40].adr8.in1[0], main.escalarMul.segments[0].cadders[39].in2[0] --> 3787173482490397990709448483645396570748873532062789127941705782518905057782 +main.escalarMul.segments[0].windows[39].out8[1], main.escalarMul.segments[0].windows[39].mux.c[1][7], main.escalarMul.segments[0].windows[39].adr8.out[1], main.escalarMul.segments[0].windows[40].base[1], main.escalarMul.segments[0].windows[40].mux.c[1][0], main.escalarMul.segments[0].windows[40].mux.a[1], main.escalarMul.segments[0].windows[40].dbl2.in[1], main.escalarMul.segments[0].windows[40].adr3.in1[1], main.escalarMul.segments[0].windows[40].adr4.in1[1], main.escalarMul.segments[0].windows[40].adr5.in1[1], main.escalarMul.segments[0].windows[40].adr6.in1[1], main.escalarMul.segments[0].windows[40].adr7.in1[1], main.escalarMul.segments[0].windows[40].adr8.in1[1], main.escalarMul.segments[0].cadders[39].in2[1] --> 14331742859381626934399721213573649227122458014027726611639784148558522089033 +main.escalarMul.segments[0].windows[39].mux.c[0][1], main.escalarMul.segments[0].windows[39].dbl2.out[0], main.escalarMul.segments[0].windows[39].adr3.in2[0] --> 21728111579666099690679158316671170990299135197901089736722260641000937815231 +main.escalarMul.segments[0].windows[39].mux.c[0][2], main.escalarMul.segments[0].windows[39].adr3.out[0], main.escalarMul.segments[0].windows[39].adr4.in2[0] --> 9846749483773010375410907790457042521303558204064408851449182292282040871563 +main.escalarMul.segments[0].windows[39].mux.c[0][3], main.escalarMul.segments[0].windows[39].adr4.out[0], main.escalarMul.segments[0].windows[39].adr5.in2[0] --> 18590127520666590106095561503865254020537045895127758990113712873931627613477 +main.escalarMul.segments[0].windows[39].mux.c[0][4], main.escalarMul.segments[0].windows[39].adr5.out[0], main.escalarMul.segments[0].windows[39].adr6.in2[0] --> 17439784322018055118489677797267906893489557434324951770798835447850793237554 +main.escalarMul.segments[0].windows[39].mux.c[0][5], main.escalarMul.segments[0].windows[39].adr6.out[0], main.escalarMul.segments[0].windows[39].adr7.in2[0] --> 13461878241383013407615979437161473294980840203441748970580816622963868452312 +main.escalarMul.segments[0].windows[39].mux.c[0][6], main.escalarMul.segments[0].windows[39].adr7.out[0], main.escalarMul.segments[0].windows[39].adr8.in2[0] --> 14533151805554240233375485358133268368053791777375515389435687860448889949699 +main.escalarMul.segments[0].windows[39].mux.c[1][1], main.escalarMul.segments[0].windows[39].dbl2.out[1], main.escalarMul.segments[0].windows[39].adr3.in2[1] --> 15675434576343532298414859367362181308487782737137347381659722955405163767350 +main.escalarMul.segments[0].windows[39].mux.c[1][2], main.escalarMul.segments[0].windows[39].adr3.out[1], main.escalarMul.segments[0].windows[39].adr4.in2[1] --> 4674788554001778743039368483940587108176399844921125705062275377482349645099 +main.escalarMul.segments[0].windows[39].mux.c[1][3], main.escalarMul.segments[0].windows[39].adr4.out[1], main.escalarMul.segments[0].windows[39].adr5.in2[1] --> 5715070605265070067993892388990917738514377577654832210456173368044578017391 +main.escalarMul.segments[0].windows[39].mux.c[1][4], main.escalarMul.segments[0].windows[39].adr5.out[1], main.escalarMul.segments[0].windows[39].adr6.in2[1] --> 13448474804472168857698612463557600254818500485190855835912939802782593114003 +main.escalarMul.segments[0].windows[39].mux.c[1][5], main.escalarMul.segments[0].windows[39].adr6.out[1], main.escalarMul.segments[0].windows[39].adr7.in2[1] --> 20916477442500481004218965874397609608499184508221990358790261524476962315444 +main.escalarMul.segments[0].windows[39].mux.c[1][6], main.escalarMul.segments[0].windows[39].adr7.out[1], main.escalarMul.segments[0].windows[39].adr8.in2[1] --> 19535709114022698518982701897620635657931139620058296216042149822818340068627 +main.escalarMul.segments[0].windows[39].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[39].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[39].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[39].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[39].mux.a20[0] --> 18266094858453806221140505280816975495312365212135280653822567533605162493546 +main.escalarMul.segments[0].windows[39].mux.a20[1] --> 14888366593343754560323140434035100714640677905769542152353927299073202482084 +main.escalarMul.segments[0].windows[39].mux.a2[0] --> 17244157546941657940289127330187876986466068594237447267432396821509385134769 +main.escalarMul.segments[0].windows[39].mux.a2[1] --> 12240919144652469367727371818257602673919088265731135168474815456574404561627 +main.escalarMul.segments[0].windows[39].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[39].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[39].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[39].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[39].mux.a0[0] --> 21532484804589702512478607849591141083275646357813585233355822014659529712446 +main.escalarMul.segments[0].windows[39].mux.a0[1] --> 14467878916523832808443618722062183727588370517677626714221598609196975214974 +main.escalarMul.segments[0].windows[39].mux.s10 --> 0 +main.escalarMul.segments[0].windows[39].dbl2.lamda --> 6419601067937019604033375660939584238808358356324193009089121946477545665966 +main.escalarMul.segments[0].windows[39].dbl2.x1_2 --> 4164807813248508434061417880359309070784315523805959065278051646104124549335 +main.escalarMul.segments[0].windows[39].adr3.lamda --> 1789049187490588679522815903422215752810764688136246684632465300066935116287 +main.escalarMul.segments[0].windows[39].adr4.lamda --> 10600812888280755524195784310523086880635578993387190354075223656400329337530 +main.escalarMul.segments[0].windows[39].adr5.lamda --> 10707718252419562772852750785142923161445270215414400178256383626851160757813 +main.escalarMul.segments[0].windows[39].adr6.lamda --> 12963879882426094924355934917137333492885765955586396616612399594522127049793 +main.escalarMul.segments[0].windows[39].adr7.lamda --> 2631769398137319811694037714600045473363336219616604875969320867159039292069 +main.escalarMul.segments[0].windows[39].adr8.lamda --> 13887151208118978239440814546620081875146385312407948880133267480123290881273 +main.escalarMul.segments[0].adders[38].out[0], main.escalarMul.segments[0].adders[39].in1[0] --> 19548938718940797582169249467727563800448143567544234435774370743553638513813 +main.escalarMul.segments[0].adders[38].out[1], main.escalarMul.segments[0].adders[39].in1[1] --> 4137868834663455916946393677203769610594151353528974613950186330869003873850 +main.escalarMul.segments[0].adders[38].lamda --> 3253589549929184264418059978877913562758772533596386300834100516492040623477 +main.escalarMul.segments[0].cadders[38].out[0], main.escalarMul.segments[0].cadders[39].in1[0] --> 9421098329300892888209452241610396100472964867592445418207109560304395216238 +main.escalarMul.segments[0].cadders[38].out[1], main.escalarMul.segments[0].cadders[39].in1[1] --> 14124660383208515838698164774446991095287667121606663297749577851420023421871 +main.escalarMul.segments[0].cadders[38].lamda --> 19883341612022927577833985514504026593853472477251377387976820560355888987341 +main.escalarMul.segments[0].windows[40].out[0], main.escalarMul.segments[0].windows[40].mux.out[0], main.escalarMul.segments[0].adders[39].in2[0] --> 14526612568629421705845565434617706183078851741743249969725910847515592853617 +main.escalarMul.segments[0].windows[40].out[1], main.escalarMul.segments[0].windows[40].mux.out[1], main.escalarMul.segments[0].adders[39].in2[1] --> 16386717344755758888685249214901514089477544785766650187648490577951764140907 +main.escalarMul.segments[0].windows[40].out8[0], main.escalarMul.segments[0].windows[40].mux.c[0][7], main.escalarMul.segments[0].windows[40].adr8.out[0], main.escalarMul.segments[0].windows[41].base[0], main.escalarMul.segments[0].windows[41].mux.c[0][0], main.escalarMul.segments[0].windows[41].mux.a[0], main.escalarMul.segments[0].windows[41].dbl2.in[0], main.escalarMul.segments[0].windows[41].adr3.in1[0], main.escalarMul.segments[0].windows[41].adr4.in1[0], main.escalarMul.segments[0].windows[41].adr5.in1[0], main.escalarMul.segments[0].windows[41].adr6.in1[0], main.escalarMul.segments[0].windows[41].adr7.in1[0], main.escalarMul.segments[0].windows[41].adr8.in1[0], main.escalarMul.segments[0].cadders[40].in2[0] --> 14526612568629421705845565434617706183078851741743249969725910847515592853617 +main.escalarMul.segments[0].windows[40].out8[1], main.escalarMul.segments[0].windows[40].mux.c[1][7], main.escalarMul.segments[0].windows[40].adr8.out[1], main.escalarMul.segments[0].windows[41].base[1], main.escalarMul.segments[0].windows[41].mux.c[1][0], main.escalarMul.segments[0].windows[41].mux.a[1], main.escalarMul.segments[0].windows[41].dbl2.in[1], main.escalarMul.segments[0].windows[41].adr3.in1[1], main.escalarMul.segments[0].windows[41].adr4.in1[1], main.escalarMul.segments[0].windows[41].adr5.in1[1], main.escalarMul.segments[0].windows[41].adr6.in1[1], main.escalarMul.segments[0].windows[41].adr7.in1[1], main.escalarMul.segments[0].windows[41].adr8.in1[1], main.escalarMul.segments[0].cadders[40].in2[1] --> 16386717344755758888685249214901514089477544785766650187648490577951764140907 +main.escalarMul.segments[0].windows[40].mux.c[0][1], main.escalarMul.segments[0].windows[40].dbl2.out[0], main.escalarMul.segments[0].windows[40].adr3.in2[0] --> 1787858651193213011291071875199551049910129557038902016680890268095767489085 +main.escalarMul.segments[0].windows[40].mux.c[0][2], main.escalarMul.segments[0].windows[40].adr3.out[0], main.escalarMul.segments[0].windows[40].adr4.in2[0] --> 13610891763149409887128505325883869485567366334088139664967297000826389368330 +main.escalarMul.segments[0].windows[40].mux.c[0][3], main.escalarMul.segments[0].windows[40].adr4.out[0], main.escalarMul.segments[0].windows[40].adr5.in2[0] --> 6352333517056156408411201574203201654467630194322889680451197859126790695687 +main.escalarMul.segments[0].windows[40].mux.c[0][4], main.escalarMul.segments[0].windows[40].adr5.out[0], main.escalarMul.segments[0].windows[40].adr6.in2[0] --> 21291031011962190179245849536961204311061636008055103016428974708034780209887 +main.escalarMul.segments[0].windows[40].mux.c[0][5], main.escalarMul.segments[0].windows[40].adr6.out[0], main.escalarMul.segments[0].windows[40].adr7.in2[0] --> 8736013303955064525073790092385138367246990163990232207629241303366646027856 +main.escalarMul.segments[0].windows[40].mux.c[0][6], main.escalarMul.segments[0].windows[40].adr7.out[0], main.escalarMul.segments[0].windows[40].adr8.in2[0] --> 19551320412557127118405737782081058911897594524794349583521571262952654613167 +main.escalarMul.segments[0].windows[40].mux.c[1][1], main.escalarMul.segments[0].windows[40].dbl2.out[1], main.escalarMul.segments[0].windows[40].adr3.in2[1] --> 4424745006070898300856527725567037976346909372608181202788658970485137162827 +main.escalarMul.segments[0].windows[40].mux.c[1][2], main.escalarMul.segments[0].windows[40].adr3.out[1], main.escalarMul.segments[0].windows[40].adr4.in2[1] --> 3262912522957558452527320248807242410476091305496039813474652732100755590612 +main.escalarMul.segments[0].windows[40].mux.c[1][3], main.escalarMul.segments[0].windows[40].adr4.out[1], main.escalarMul.segments[0].windows[40].adr5.in2[1] --> 12331900964736867435412847195560722216877324297131101204928445321357079954673 +main.escalarMul.segments[0].windows[40].mux.c[1][4], main.escalarMul.segments[0].windows[40].adr5.out[1], main.escalarMul.segments[0].windows[40].adr6.in2[1] --> 10282192209479957507499080407980797290341478456082350222351411815314586997744 +main.escalarMul.segments[0].windows[40].mux.c[1][5], main.escalarMul.segments[0].windows[40].adr6.out[1], main.escalarMul.segments[0].windows[40].adr7.in2[1] --> 2590284492830108489416278502505459161276640148054697538683159401906622579260 +main.escalarMul.segments[0].windows[40].mux.c[1][6], main.escalarMul.segments[0].windows[40].adr7.out[1], main.escalarMul.segments[0].windows[40].adr8.in2[1] --> 4236788461526079115565640131241776419398213541298943702361289861807333137017 +main.escalarMul.segments[0].windows[40].mux.a210[0] --> 12789553278875488740910814240347535525256895225755134068259356616507533526427 +main.escalarMul.segments[0].windows[40].mux.a210[1] --> 865850304789491174773690554374984741967387919440752368650535362222686132107 +main.escalarMul.segments[0].windows[40].mux.a21[0] --> 10324813991775200264987237148138656774565830115129930373765209523186198588349 +main.escalarMul.segments[0].windows[40].mux.a21[1] --> 5023426588470190089938960688027385945703101793748280278175009462950512637694 +main.escalarMul.segments[0].windows[40].mux.a20[0] --> 11332539995129334547492722909127054665572462531375050646159286296330811882283 +main.escalarMul.segments[0].windows[40].mux.a20[1] --> 2215090136660879615460391582531273121710710333391892725182872764665420507722 +main.escalarMul.segments[0].windows[40].mux.a2[0] --> 17503857529471792188536401053315807740312762475992313888487268925515875152105 +main.escalarMul.segments[0].windows[40].mux.a2[1] --> 17838692221937605795345764939664423151767384842470657954409831853331873404328 +main.escalarMul.segments[0].windows[40].mux.a10[0] --> 16628999457043206722947478602022452778287372235674671470442920559299347391671 +main.escalarMul.segments[0].windows[40].mux.a10[1] --> 18975986295090037616428720434760091057176781633054606800304917767329709290267 +main.escalarMul.segments[0].windows[40].mux.a1[0] --> 9823718280659011896419056842238472914818492802025350537025591218307484310548 +main.escalarMul.segments[0].windows[40].mux.a1[1] --> 10819412535415206740374004780490868271901997691884347545533072770118041997196 +main.escalarMul.segments[0].windows[40].mux.a0[0] --> 19888928040542090242828029136811429567709620425392147232437388672152670926920 +main.escalarMul.segments[0].windows[40].mux.a0[1] --> 11981245018528546588703212257250663837772815758996488934847079008502423569411 +main.escalarMul.segments[0].windows[40].mux.s10 --> 1 +main.escalarMul.segments[0].windows[40].dbl2.lamda --> 3367478718733465551629252529560222237960293798859931387553902384048629255897 +main.escalarMul.segments[0].windows[40].dbl2.x1_2 --> 4187479588643558291605581465450012532797213986246209042328611232500595193742 +main.escalarMul.segments[0].windows[40].adr3.lamda --> 6739977860585222255929464602509065348364766347079688027284446311332780933928 +main.escalarMul.segments[0].windows[40].adr4.lamda --> 20343160007040333044881665032884206935888485176542721478263309925869095800910 +main.escalarMul.segments[0].windows[40].adr5.lamda --> 9801647187825881129569769485333735343307936310002538074133407424924378739816 +main.escalarMul.segments[0].windows[40].adr6.lamda --> 19648199661638628009163966263850865122285960748728638119819662127070707235915 +main.escalarMul.segments[0].windows[40].adr7.lamda --> 21877808740323373448015203015139845723428259684232065620008943702986475731119 +main.escalarMul.segments[0].windows[40].adr8.lamda --> 15720682939861049411046969182672812263054255405117458173832630715995950526712 +main.escalarMul.segments[0].adders[39].out[0], main.escalarMul.segments[0].adders[40].in1[0] --> 20393805520243529518584571491873348277433193776387580484330625814430378226363 +main.escalarMul.segments[0].adders[39].out[1], main.escalarMul.segments[0].adders[40].in1[1] --> 2534990301844261914689551740950551477293957337500803428266441749583992048221 +main.escalarMul.segments[0].adders[39].lamda --> 8403201683475473631036584236308542046090868901837502285809271568837598256070 +main.escalarMul.segments[0].cadders[39].out[0], main.escalarMul.segments[0].cadders[40].in1[0] --> 16595594511016958847832153035173734856177850256718980295726805477707846449831 +main.escalarMul.segments[0].cadders[39].out[1], main.escalarMul.segments[0].cadders[40].in1[1] --> 8724227274964769335848832522037919453258254455405123680461680972828397257217 +main.escalarMul.segments[0].cadders[39].lamda --> 19852431511240536426783710000337558962755210668975672205143346954612195352483 +main.escalarMul.segments[0].windows[41].out[0], main.escalarMul.segments[0].windows[41].mux.out[0], main.escalarMul.segments[0].adders[40].in2[0] --> 20374762592422257681076229652084098823148192347347864050863139057053689746555 +main.escalarMul.segments[0].windows[41].out[1], main.escalarMul.segments[0].windows[41].mux.out[1], main.escalarMul.segments[0].adders[40].in2[1] --> 19896085853727515864871559372046748919523868238214524176553900953406280327211 +main.escalarMul.segments[0].windows[41].out8[0], main.escalarMul.segments[0].windows[41].mux.c[0][7], main.escalarMul.segments[0].windows[41].adr8.out[0], main.escalarMul.segments[0].windows[42].base[0], main.escalarMul.segments[0].windows[42].mux.c[0][0], main.escalarMul.segments[0].windows[42].mux.a[0], main.escalarMul.segments[0].windows[42].dbl2.in[0], main.escalarMul.segments[0].windows[42].adr3.in1[0], main.escalarMul.segments[0].windows[42].adr4.in1[0], main.escalarMul.segments[0].windows[42].adr5.in1[0], main.escalarMul.segments[0].windows[42].adr6.in1[0], main.escalarMul.segments[0].windows[42].adr7.in1[0], main.escalarMul.segments[0].windows[42].adr8.in1[0], main.escalarMul.segments[0].cadders[41].in2[0] --> 6541952547580393612254961146972336677017909964619529395956993415522953258240 +main.escalarMul.segments[0].windows[41].out8[1], main.escalarMul.segments[0].windows[41].mux.c[1][7], main.escalarMul.segments[0].windows[41].adr8.out[1], main.escalarMul.segments[0].windows[42].base[1], main.escalarMul.segments[0].windows[42].mux.c[1][0], main.escalarMul.segments[0].windows[42].mux.a[1], main.escalarMul.segments[0].windows[42].dbl2.in[1], main.escalarMul.segments[0].windows[42].adr3.in1[1], main.escalarMul.segments[0].windows[42].adr4.in1[1], main.escalarMul.segments[0].windows[42].adr5.in1[1], main.escalarMul.segments[0].windows[42].adr6.in1[1], main.escalarMul.segments[0].windows[42].adr7.in1[1], main.escalarMul.segments[0].windows[42].adr8.in1[1], main.escalarMul.segments[0].cadders[41].in2[1] --> 12859701065150062730894755386123550313426524915500570228397511495304067527794 +main.escalarMul.segments[0].windows[41].mux.c[0][1], main.escalarMul.segments[0].windows[41].dbl2.out[0], main.escalarMul.segments[0].windows[41].adr3.in2[0] --> 1281237980176839994208775828204907548430600497592842948215699922558766952162 +main.escalarMul.segments[0].windows[41].mux.c[0][2], main.escalarMul.segments[0].windows[41].adr3.out[0], main.escalarMul.segments[0].windows[41].adr4.in2[0] --> 5769490320653318924728162315535181508977263203311623638234255290734385486325 +main.escalarMul.segments[0].windows[41].mux.c[0][3], main.escalarMul.segments[0].windows[41].adr4.out[0], main.escalarMul.segments[0].windows[41].adr5.in2[0] --> 13998366487076723541226150068149927401078872416433998072426488638718784218502 +main.escalarMul.segments[0].windows[41].mux.c[0][4], main.escalarMul.segments[0].windows[41].adr5.out[0], main.escalarMul.segments[0].windows[41].adr6.in2[0] --> 7733279223464416126825459769741684492890907704544834650249080603757724955971 +main.escalarMul.segments[0].windows[41].mux.c[0][5], main.escalarMul.segments[0].windows[41].adr6.out[0], main.escalarMul.segments[0].windows[41].adr7.in2[0] --> 16462539925840379212398941140698819331755258008619319522959688589442700894879 +main.escalarMul.segments[0].windows[41].mux.c[0][6], main.escalarMul.segments[0].windows[41].adr7.out[0], main.escalarMul.segments[0].windows[41].adr8.in2[0] --> 20374762592422257681076229652084098823148192347347864050863139057053689746555 +main.escalarMul.segments[0].windows[41].mux.c[1][1], main.escalarMul.segments[0].windows[41].dbl2.out[1], main.escalarMul.segments[0].windows[41].adr3.in2[1] --> 19800833074636875619010073153315815617893636316042775338931809940816393058002 +main.escalarMul.segments[0].windows[41].mux.c[1][2], main.escalarMul.segments[0].windows[41].adr3.out[1], main.escalarMul.segments[0].windows[41].adr4.in2[1] --> 14316981712917355392454987391636502889115688012679627516170180396163622493537 +main.escalarMul.segments[0].windows[41].mux.c[1][3], main.escalarMul.segments[0].windows[41].adr4.out[1], main.escalarMul.segments[0].windows[41].adr5.in2[1] --> 13944321426116626666413158292754576235431795976044828969502890221685163932310 +main.escalarMul.segments[0].windows[41].mux.c[1][4], main.escalarMul.segments[0].windows[41].adr5.out[1], main.escalarMul.segments[0].windows[41].adr6.in2[1] --> 10411284363609817309396376096103433430770767056702314807077361312584069625840 +main.escalarMul.segments[0].windows[41].mux.c[1][5], main.escalarMul.segments[0].windows[41].adr6.out[1], main.escalarMul.segments[0].windows[41].adr7.in2[1] --> 351657730893465317362582078836538618248334551532681577199253394254438244571 +main.escalarMul.segments[0].windows[41].mux.c[1][6], main.escalarMul.segments[0].windows[41].adr7.out[1], main.escalarMul.segments[0].windows[41].adr8.in2[1] --> 19896085853727515864871559372046748919523868238214524176553900953406280327211 +main.escalarMul.segments[0].windows[41].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[41].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[41].mux.a21[0] --> 21398605616933944335368173001424939004358873181234655732105714010077172157876 +main.escalarMul.segments[0].windows[41].mux.a21[1] --> 11554537121956102051705445099208326689114957954599232040954849822610352348741 +main.escalarMul.segments[0].windows[41].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[41].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[41].mux.a2[0] --> 15094909526674269643226300080381253398360420363217619024221373942817940597971 +main.escalarMul.segments[0].windows[41].mux.a2[1] --> 15912809890693333642957532626459194429841586671351698963127074921208113980550 +main.escalarMul.segments[0].windows[41].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[41].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[41].mux.a1[0] --> 13131120623863172441129002626174750414446775861984408012206548629794601128325 +main.escalarMul.segments[0].windows[41].mux.a1[1] --> 19818507240000871726016143921992263888186507627329011672219894004787666848247 +main.escalarMul.segments[0].windows[41].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[41].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[41].mux.s10 --> 0 +main.escalarMul.segments[0].windows[41].dbl2.lamda --> 20409100708629415747657857468757836553657290061646272074688590603562684820032 +main.escalarMul.segments[0].windows[41].dbl2.x1_2 --> 4367008991751174875611291468987788705492374444680067190663833259113353939330 +main.escalarMul.segments[0].windows[41].adr3.lamda --> 6206974884593561089489177036212611931433494696166711562962245471958846234949 +main.escalarMul.segments[0].windows[41].adr4.lamda --> 12998036017702764181499803009193094036470939800155820634055912080808393900634 +main.escalarMul.segments[0].windows[41].adr5.lamda --> 18301995318408440263177177293019355780083545396512780178087104107422900862345 +main.escalarMul.segments[0].windows[41].adr6.lamda --> 2380691733777764913457553831629305788523290107575061164177479399988240669954 +main.escalarMul.segments[0].windows[41].adr7.lamda --> 9024723381224055487575587494589857094943910822522711028302441223157740676338 +main.escalarMul.segments[0].windows[41].adr8.lamda --> 9463039086183922530955550964503621637890489421437335425235925211126257332966 +main.escalarMul.segments[0].adders[40].out[0], main.escalarMul.segments[0].adders[41].in1[0] --> 2741445264957969643454206954901964445176148183782199062103286587812503381075 +main.escalarMul.segments[0].adders[40].out[1], main.escalarMul.segments[0].adders[41].in1[1] --> 10929585505373150969185171470430695518304237845147787819326592183879218567312 +main.escalarMul.segments[0].adders[40].lamda --> 13459396694030363940670861508976636779467364575480868203627433487051195871653 +main.escalarMul.segments[0].cadders[40].out[0], main.escalarMul.segments[0].cadders[41].in1[0] --> 15706905772032991099340418400846719185046782579133468802239024594307113697276 +main.escalarMul.segments[0].cadders[40].out[1], main.escalarMul.segments[0].cadders[41].in1[1] --> 21360466816000504661211651607960762766164677529860785190403048074368892559970 +main.escalarMul.segments[0].cadders[40].lamda --> 7206208404651790285689911232705061828308845760500004500461689894505284606266 +main.escalarMul.segments[0].windows[42].out[0], main.escalarMul.segments[0].windows[42].mux.out[0], main.escalarMul.segments[0].adders[41].in2[0] --> 1043883655654195890296120292624433692638061591073330389948041892012283055221 +main.escalarMul.segments[0].windows[42].out[1], main.escalarMul.segments[0].windows[42].mux.out[1], main.escalarMul.segments[0].adders[41].in2[1] --> 1230158738748295577444805055262801608525954663978287719937549840616822022024 +main.escalarMul.segments[0].windows[42].out8[0], main.escalarMul.segments[0].windows[42].mux.c[0][7], main.escalarMul.segments[0].windows[42].adr8.out[0], main.escalarMul.segments[0].windows[43].base[0], main.escalarMul.segments[0].windows[43].mux.c[0][0], main.escalarMul.segments[0].windows[43].mux.a[0], main.escalarMul.segments[0].windows[43].dbl2.in[0], main.escalarMul.segments[0].windows[43].adr3.in1[0], main.escalarMul.segments[0].windows[43].adr4.in1[0], main.escalarMul.segments[0].windows[43].adr5.in1[0], main.escalarMul.segments[0].windows[43].adr6.in1[0], main.escalarMul.segments[0].windows[43].adr7.in1[0], main.escalarMul.segments[0].windows[43].adr8.in1[0], main.escalarMul.segments[0].cadders[42].in2[0] --> 2307354466914972855075837953384409150046308245462837001099694448822231801487 +main.escalarMul.segments[0].windows[42].out8[1], main.escalarMul.segments[0].windows[42].mux.c[1][7], main.escalarMul.segments[0].windows[42].adr8.out[1], main.escalarMul.segments[0].windows[43].base[1], main.escalarMul.segments[0].windows[43].mux.c[1][0], main.escalarMul.segments[0].windows[43].mux.a[1], main.escalarMul.segments[0].windows[43].dbl2.in[1], main.escalarMul.segments[0].windows[43].adr3.in1[1], main.escalarMul.segments[0].windows[43].adr4.in1[1], main.escalarMul.segments[0].windows[43].adr5.in1[1], main.escalarMul.segments[0].windows[43].adr6.in1[1], main.escalarMul.segments[0].windows[43].adr7.in1[1], main.escalarMul.segments[0].windows[43].adr8.in1[1], main.escalarMul.segments[0].cadders[42].in2[1] --> 14967087163044015116657398679560121437772779945616688671779713091221374558357 +main.escalarMul.segments[0].windows[42].mux.c[0][1], main.escalarMul.segments[0].windows[42].dbl2.out[0], main.escalarMul.segments[0].windows[42].adr3.in2[0] --> 1043883655654195890296120292624433692638061591073330389948041892012283055221 +main.escalarMul.segments[0].windows[42].mux.c[0][2], main.escalarMul.segments[0].windows[42].adr3.out[0], main.escalarMul.segments[0].windows[42].adr4.in2[0] --> 850770937666429021522936258691866666871269202446005635801635780008810311121 +main.escalarMul.segments[0].windows[42].mux.c[0][3], main.escalarMul.segments[0].windows[42].adr4.out[0], main.escalarMul.segments[0].windows[42].adr5.in2[0] --> 17042783215581002582564179206863117219199498736945354115227662601490854866251 +main.escalarMul.segments[0].windows[42].mux.c[0][4], main.escalarMul.segments[0].windows[42].adr5.out[0], main.escalarMul.segments[0].windows[42].adr6.in2[0] --> 12636602157726741654288046287762949874414917147086929131773039505840438190894 +main.escalarMul.segments[0].windows[42].mux.c[0][5], main.escalarMul.segments[0].windows[42].adr6.out[0], main.escalarMul.segments[0].windows[42].adr7.in2[0] --> 17195562685318320905843224984608105915545702427125688290315182601354195952120 +main.escalarMul.segments[0].windows[42].mux.c[0][6], main.escalarMul.segments[0].windows[42].adr7.out[0], main.escalarMul.segments[0].windows[42].adr8.in2[0] --> 3873930912184516176711792795055468803647302206968662219314186162034099558840 +main.escalarMul.segments[0].windows[42].mux.c[1][1], main.escalarMul.segments[0].windows[42].dbl2.out[1], main.escalarMul.segments[0].windows[42].adr3.in2[1] --> 1230158738748295577444805055262801608525954663978287719937549840616822022024 +main.escalarMul.segments[0].windows[42].mux.c[1][2], main.escalarMul.segments[0].windows[42].adr3.out[1], main.escalarMul.segments[0].windows[42].adr4.in2[1] --> 12913094163143088275875679486708210399195399684677108862544591730227346068477 +main.escalarMul.segments[0].windows[42].mux.c[1][3], main.escalarMul.segments[0].windows[42].adr4.out[1], main.escalarMul.segments[0].windows[42].adr5.in2[1] --> 15029585213311413963720377505554860907317963200545952435820876612300820446429 +main.escalarMul.segments[0].windows[42].mux.c[1][4], main.escalarMul.segments[0].windows[42].adr5.out[1], main.escalarMul.segments[0].windows[42].adr6.in2[1] --> 3817765764682495957086077763864224841537579539227360461996569269186061336360 +main.escalarMul.segments[0].windows[42].mux.c[1][5], main.escalarMul.segments[0].windows[42].adr6.out[1], main.escalarMul.segments[0].windows[42].adr7.in2[1] --> 18341238749364691642151258210195716096688797751827174959821880615494405422733 +main.escalarMul.segments[0].windows[42].mux.c[1][6], main.escalarMul.segments[0].windows[42].adr7.out[1], main.escalarMul.segments[0].windows[42].adr8.in2[1] --> 7828636616859499024284734111405442008635152508783412767512966273863266373156 +main.escalarMul.segments[0].windows[42].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[42].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[42].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[42].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[42].mux.a20[0] --> 10057029419517776973514019551193059025510633653584958164551094619024427964245 +main.escalarMul.segments[0].windows[42].mux.a20[1] --> 4264772439244687616268725031934964871503424063706062662587068814419781096526 +main.escalarMul.segments[0].windows[42].mux.a2[0] --> 6094649610146348042033085140790613197397007182467399735816046090317484932654 +main.escalarMul.segments[0].windows[42].mux.a2[1] --> 12846307571371708448437728122997949616659419024142824577297261960457802304183 +main.escalarMul.segments[0].windows[42].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[42].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[42].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[42].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[42].mux.a0[0] --> 16390173979913077500287564890909372104168516026869835337689252663065138292598 +main.escalarMul.segments[0].windows[42].mux.a0[1] --> 10258700545437508068796455414396526383647794148893751835238242531888562989847 +main.escalarMul.segments[0].windows[42].mux.s10 --> 0 +main.escalarMul.segments[0].windows[42].dbl2.lamda --> 14786893915114019380865362565492258933146786119407663248190048944344016097638 +main.escalarMul.segments[0].windows[42].dbl2.x1_2 --> 8647313757303460744571922107187274496428909946786919375908652618107124586790 +main.escalarMul.segments[0].windows[42].adr3.lamda --> 2853182199581890374739204705395079768671832656272984563151458997666296132619 +main.escalarMul.segments[0].windows[42].adr4.lamda --> 16603679279808068420579445942157470711091622971366351222412003798566431477215 +main.escalarMul.segments[0].windows[42].adr5.lamda --> 14522961128706337878828891670030323361605329508279375934200963077125660131608 +main.escalarMul.segments[0].windows[42].adr6.lamda --> 15578931771889543446796260077171834422299020695647380471140916558854658824734 +main.escalarMul.segments[0].windows[42].adr7.lamda --> 18181777034108667432677834733286675042151690033153679448105464714671984514530 +main.escalarMul.segments[0].windows[42].adr8.lamda --> 8630949340494966669078176431487095917560303167275825597608935821484325191901 +main.escalarMul.segments[0].adders[41].out[0], main.escalarMul.segments[0].adders[42].in1[0] --> 1056106685988481398825990694401506269400680984911590706020344982741140999051 +main.escalarMul.segments[0].adders[41].out[1], main.escalarMul.segments[0].adders[42].in1[1] --> 6316430588412749500194592938897087695822677985555944248604196871185441351131 +main.escalarMul.segments[0].adders[41].lamda --> 10515312482727126891449972206014596448472033624492651790125810870237436439373 +main.escalarMul.segments[0].cadders[41].out[0], main.escalarMul.segments[0].cadders[42].in1[0] --> 15466757852849779712798112094868081659884307622822412234591149017905673760343 +main.escalarMul.segments[0].cadders[41].out[1], main.escalarMul.segments[0].cadders[42].in1[1] --> 16885133772012183660876965040657674664334281847982326178225748904791778076581 +main.escalarMul.segments[0].cadders[41].lamda --> 15227405930178848301918240241757663500851505879421715394040559405784443838677 +main.escalarMul.segments[0].windows[43].out[0], main.escalarMul.segments[0].windows[43].mux.out[0], main.escalarMul.segments[0].adders[42].in2[0] --> 21387539048078421785219079662974285300129785911184091544134068743310112541414 +main.escalarMul.segments[0].windows[43].out[1], main.escalarMul.segments[0].windows[43].mux.out[1], main.escalarMul.segments[0].adders[42].in2[1] --> 5134487758337981392530869892741028773419060396914725501804792970765209710225 +main.escalarMul.segments[0].windows[43].out8[0], main.escalarMul.segments[0].windows[43].mux.c[0][7], main.escalarMul.segments[0].windows[43].adr8.out[0], main.escalarMul.segments[0].windows[44].base[0], main.escalarMul.segments[0].windows[44].mux.c[0][0], main.escalarMul.segments[0].windows[44].mux.a[0], main.escalarMul.segments[0].windows[44].dbl2.in[0], main.escalarMul.segments[0].windows[44].adr3.in1[0], main.escalarMul.segments[0].windows[44].adr4.in1[0], main.escalarMul.segments[0].windows[44].adr5.in1[0], main.escalarMul.segments[0].windows[44].adr6.in1[0], main.escalarMul.segments[0].windows[44].adr7.in1[0], main.escalarMul.segments[0].windows[44].adr8.in1[0], main.escalarMul.segments[0].cadders[43].in2[0] --> 21387539048078421785219079662974285300129785911184091544134068743310112541414 +main.escalarMul.segments[0].windows[43].out8[1], main.escalarMul.segments[0].windows[43].mux.c[1][7], main.escalarMul.segments[0].windows[43].adr8.out[1], main.escalarMul.segments[0].windows[44].base[1], main.escalarMul.segments[0].windows[44].mux.c[1][0], main.escalarMul.segments[0].windows[44].mux.a[1], main.escalarMul.segments[0].windows[44].dbl2.in[1], main.escalarMul.segments[0].windows[44].adr3.in1[1], main.escalarMul.segments[0].windows[44].adr4.in1[1], main.escalarMul.segments[0].windows[44].adr5.in1[1], main.escalarMul.segments[0].windows[44].adr6.in1[1], main.escalarMul.segments[0].windows[44].adr7.in1[1], main.escalarMul.segments[0].windows[44].adr8.in1[1], main.escalarMul.segments[0].cadders[43].in2[1] --> 5134487758337981392530869892741028773419060396914725501804792970765209710225 +main.escalarMul.segments[0].windows[43].mux.c[0][1], main.escalarMul.segments[0].windows[43].dbl2.out[0], main.escalarMul.segments[0].windows[43].adr3.in2[0] --> 17779767832247880521667032340331102569100695825409044087329988262097427743135 +main.escalarMul.segments[0].windows[43].mux.c[0][2], main.escalarMul.segments[0].windows[43].adr3.out[0], main.escalarMul.segments[0].windows[43].adr4.in2[0] --> 11340002417977939889649719593156566010664448615431073241348969952483246020491 +main.escalarMul.segments[0].windows[43].mux.c[0][3], main.escalarMul.segments[0].windows[43].adr4.out[0], main.escalarMul.segments[0].windows[43].adr5.in2[0] --> 11558920946675075795053212093385776836005570649602191605665927284442874611283 +main.escalarMul.segments[0].windows[43].mux.c[0][4], main.escalarMul.segments[0].windows[43].adr5.out[0], main.escalarMul.segments[0].windows[43].adr6.in2[0] --> 15291326409098612236944121680186939726710243969745309274005855889122178092194 +main.escalarMul.segments[0].windows[43].mux.c[0][5], main.escalarMul.segments[0].windows[43].adr6.out[0], main.escalarMul.segments[0].windows[43].adr7.in2[0] --> 4320656478085286590584904848297090225150966536850254786465372500320544369269 +main.escalarMul.segments[0].windows[43].mux.c[0][6], main.escalarMul.segments[0].windows[43].adr7.out[0], main.escalarMul.segments[0].windows[43].adr8.in2[0] --> 19091689514333308533339350268108285458478699420175739709284618069886400152627 +main.escalarMul.segments[0].windows[43].mux.c[1][1], main.escalarMul.segments[0].windows[43].dbl2.out[1], main.escalarMul.segments[0].windows[43].adr3.in2[1] --> 8434205495409729885685321559070983174698364881544362106305570155926507265038 +main.escalarMul.segments[0].windows[43].mux.c[1][2], main.escalarMul.segments[0].windows[43].adr3.out[1], main.escalarMul.segments[0].windows[43].adr4.in2[1] --> 7090998681921020844539486963604060485844663142011453092616455682109101643894 +main.escalarMul.segments[0].windows[43].mux.c[1][3], main.escalarMul.segments[0].windows[43].adr4.out[1], main.escalarMul.segments[0].windows[43].adr5.in2[1] --> 18785947775366491289008891131637397326200900222622851489380489628673145494947 +main.escalarMul.segments[0].windows[43].mux.c[1][4], main.escalarMul.segments[0].windows[43].adr5.out[1], main.escalarMul.segments[0].windows[43].adr6.in2[1] --> 16544647951449776929355402926422580607341364329686660616280731898878536460331 +main.escalarMul.segments[0].windows[43].mux.c[1][5], main.escalarMul.segments[0].windows[43].adr6.out[1], main.escalarMul.segments[0].windows[43].adr7.in2[1] --> 16797960911386495167055738112493166111113207162281366921262797006706613436758 +main.escalarMul.segments[0].windows[43].mux.c[1][6], main.escalarMul.segments[0].windows[43].adr7.out[1], main.escalarMul.segments[0].windows[43].adr8.in2[1] --> 14339862414847769005387304812539875009522077363878662358293742017684589888125 +main.escalarMul.segments[0].windows[43].mux.a210[0] --> 6631771429554935437180242368216056848375265069262460700605066356965104966951 +main.escalarMul.segments[0].windows[43].mux.a210[1] --> 16089967366152288918494560096122643333791216856589700563687217336545248692535 +main.escalarMul.segments[0].windows[43].mux.a21[0] --> 16655958026011004484067752693406463959698679480878228538727690863679016337046 +main.escalarMul.segments[0].windows[43].mux.a21[1] --> 5671302944520986348149813602073355354108829837797237321176267527918326342257 +main.escalarMul.segments[0].windows[43].mux.a20[0] --> 17333402447332317131542400271678007256483063787990807113625631171074787326661 +main.escalarMul.segments[0].windows[43].mux.a20[1] --> 6786194627571003468672412306559723766846257896667032870456208043122944269746 +main.escalarMul.segments[0].windows[43].mux.a2[0] --> 12983971942183639381868283726802530576663935724282472272906161440299946290707 +main.escalarMul.segments[0].windows[43].mux.a2[1] --> 1577560788405761812698004246862459169568584384069971944501018807657161901974 +main.escalarMul.segments[0].windows[43].mux.a10[0] --> 6634748035203503461058703858539792494835098854640945621784867705260241144761 +main.escalarMul.segments[0].windows[43].mux.a10[1] --> 18227830761079755675441481288522475103430652144683724962238176881858911144372 +main.escalarMul.segments[0].windows[43].mux.a1[0] --> 9032647951062967034573881639772156860618140369968236240249275503661014219004 +main.escalarMul.segments[0].windows[43].mux.a1[1] --> 14012154390716280950128494029301214136620247596810798764534946777463535581154 +main.escalarMul.segments[0].windows[43].mux.a0[0] --> 15472413365332907666591194386946693419054387579946207086230293813275195941648 +main.escalarMul.segments[0].windows[43].mux.a0[1] --> 15355361204204989991274328624768136825473949336343707778224061251280941202298 +main.escalarMul.segments[0].windows[43].mux.s10 --> 1 +main.escalarMul.segments[0].windows[43].dbl2.lamda --> 7645293871077295055290274563762946444474778687217818564588139701810026325363 +main.escalarMul.segments[0].windows[43].dbl2.x1_2 --> 10874673462468995437241624580282955495743278068300654521170812069316530538619 +main.escalarMul.segments[0].windows[43].adr3.lamda --> 21044031508177028017714518370867958108155679463866189132949960707501775050522 +main.escalarMul.segments[0].windows[43].adr4.lamda --> 20579828857040065942767975050819820610094038937077482150323726702557977027453 +main.escalarMul.segments[0].windows[43].adr5.lamda --> 17491808387480553100538108098853707814413768324289006282260764099257189696541 +main.escalarMul.segments[0].windows[43].adr6.lamda --> 20986901091484662000870645286012076369238019166407206936094645468761402747750 +main.escalarMul.segments[0].windows[43].adr7.lamda --> 9198524770050908600076261467644614394503164376419358871361440872237840002068 +main.escalarMul.segments[0].windows[43].adr8.lamda --> 19172981440502369135786987772145891926741287011003604804734064318979343684896 +main.escalarMul.segments[0].adders[42].out[0], main.escalarMul.segments[0].adders[43].in1[0] --> 12677195739660038182970204336957134941609079957288953926925559033739857657386 +main.escalarMul.segments[0].adders[42].out[1], main.escalarMul.segments[0].adders[43].in1[1] --> 19920245522959685980895705772890036662374652132077024659763588585865239748681 +main.escalarMul.segments[0].adders[42].lamda --> 39079808408882446780734644209050672886680575489385208879551199033947337451 +main.escalarMul.segments[0].cadders[42].out[0], main.escalarMul.segments[0].cadders[43].in1[0] --> 1653748586750393614350185037240122601382921716995068160092710106047213161327 +main.escalarMul.segments[0].cadders[42].out[1], main.escalarMul.segments[0].cadders[43].in1[1] --> 13633244324539471865113209129720591469197496290151110738582560514111957580773 +main.escalarMul.segments[0].cadders[42].lamda --> 9100482659429931793040570148305107170277719546921541079893986079879263322790 +main.escalarMul.segments[0].windows[44].out[0], main.escalarMul.segments[0].windows[44].mux.out[0], main.escalarMul.segments[0].adders[43].in2[0] --> 19936909740409672380180114896608960369921100560279114010849388256652148880729 +main.escalarMul.segments[0].windows[44].out[1], main.escalarMul.segments[0].windows[44].mux.out[1], main.escalarMul.segments[0].adders[43].in2[1] --> 12089055595589734275181362742422932836852607166421185712775016923570458099993 +main.escalarMul.segments[0].windows[44].out8[0], main.escalarMul.segments[0].windows[44].mux.c[0][7], main.escalarMul.segments[0].windows[44].adr8.out[0], main.escalarMul.segments[0].windows[45].base[0], main.escalarMul.segments[0].windows[45].mux.c[0][0], main.escalarMul.segments[0].windows[45].mux.a[0], main.escalarMul.segments[0].windows[45].dbl2.in[0], main.escalarMul.segments[0].windows[45].adr3.in1[0], main.escalarMul.segments[0].windows[45].adr4.in1[0], main.escalarMul.segments[0].windows[45].adr5.in1[0], main.escalarMul.segments[0].windows[45].adr6.in1[0], main.escalarMul.segments[0].windows[45].adr7.in1[0], main.escalarMul.segments[0].windows[45].adr8.in1[0], main.escalarMul.segments[0].cadders[44].in2[0] --> 13425382282303529940575829004820154253525578123714245775853854572999944212597 +main.escalarMul.segments[0].windows[44].out8[1], main.escalarMul.segments[0].windows[44].mux.c[1][7], main.escalarMul.segments[0].windows[44].adr8.out[1], main.escalarMul.segments[0].windows[45].base[1], main.escalarMul.segments[0].windows[45].mux.c[1][0], main.escalarMul.segments[0].windows[45].mux.a[1], main.escalarMul.segments[0].windows[45].dbl2.in[1], main.escalarMul.segments[0].windows[45].adr3.in1[1], main.escalarMul.segments[0].windows[45].adr4.in1[1], main.escalarMul.segments[0].windows[45].adr5.in1[1], main.escalarMul.segments[0].windows[45].adr6.in1[1], main.escalarMul.segments[0].windows[45].adr7.in1[1], main.escalarMul.segments[0].windows[45].adr8.in1[1], main.escalarMul.segments[0].cadders[44].in2[1] --> 6947409244544812652578756819472685845246851851552297580034258139702986616227 +main.escalarMul.segments[0].windows[44].mux.c[0][1], main.escalarMul.segments[0].windows[44].dbl2.out[0], main.escalarMul.segments[0].windows[44].adr3.in2[0] --> 1080921451555307110523244209314280613670315893492782037641897599184363013404 +main.escalarMul.segments[0].windows[44].mux.c[0][2], main.escalarMul.segments[0].windows[44].adr3.out[0], main.escalarMul.segments[0].windows[44].adr4.in2[0] --> 4520009196869389379773860928321255117196194220388662823680371833888409740148 +main.escalarMul.segments[0].windows[44].mux.c[0][3], main.escalarMul.segments[0].windows[44].adr4.out[0], main.escalarMul.segments[0].windows[44].adr5.in2[0] --> 19936909740409672380180114896608960369921100560279114010849388256652148880729 +main.escalarMul.segments[0].windows[44].mux.c[0][4], main.escalarMul.segments[0].windows[44].adr5.out[0], main.escalarMul.segments[0].windows[44].adr6.in2[0] --> 9903736707022723868242577881371260659253377632022185620940131287280567694877 +main.escalarMul.segments[0].windows[44].mux.c[0][5], main.escalarMul.segments[0].windows[44].adr6.out[0], main.escalarMul.segments[0].windows[44].adr7.in2[0] --> 15138830100005465348303629705128403089679016195735038785876997995742480064489 +main.escalarMul.segments[0].windows[44].mux.c[0][6], main.escalarMul.segments[0].windows[44].adr7.out[0], main.escalarMul.segments[0].windows[44].adr8.in2[0] --> 14666239360867381349397312220240193843263401484356567234790518445491228803266 +main.escalarMul.segments[0].windows[44].mux.c[1][1], main.escalarMul.segments[0].windows[44].dbl2.out[1], main.escalarMul.segments[0].windows[44].adr3.in2[1] --> 14611425125343733928503331132351742009840630027332541067318277151928635090159 +main.escalarMul.segments[0].windows[44].mux.c[1][2], main.escalarMul.segments[0].windows[44].adr3.out[1], main.escalarMul.segments[0].windows[44].adr4.in2[1] --> 3049061369843174421404639155570782209079686873185081394211577417106071415240 +main.escalarMul.segments[0].windows[44].mux.c[1][3], main.escalarMul.segments[0].windows[44].adr4.out[1], main.escalarMul.segments[0].windows[44].adr5.in2[1] --> 12089055595589734275181362742422932836852607166421185712775016923570458099993 +main.escalarMul.segments[0].windows[44].mux.c[1][4], main.escalarMul.segments[0].windows[44].adr5.out[1], main.escalarMul.segments[0].windows[44].adr6.in2[1] --> 16406472576259603749489115355915864785021712966844800660550526465238382974251 +main.escalarMul.segments[0].windows[44].mux.c[1][5], main.escalarMul.segments[0].windows[44].adr6.out[1], main.escalarMul.segments[0].windows[44].adr7.in2[1] --> 14986537405455947697555331872681315699118508938417200944995655469781730480591 +main.escalarMul.segments[0].windows[44].mux.c[1][6], main.escalarMul.segments[0].windows[44].adr7.out[1], main.escalarMul.segments[0].windows[44].adr8.in2[1] --> 7559099997591788705939352597876350326712679633878402501666884543931848513516 +main.escalarMul.segments[0].windows[44].mux.a210[0] --> 1577017132068559880508187029389658217748890518895133369861690225308931362362 +main.escalarMul.segments[0].windows[44].mux.a210[1] --> 1245187559015872680768925357589447213086025583283206040872289265926829291552 +main.escalarMul.segments[0].windows[44].mux.a21[0] --> 21630032505053689886599953073521963366943615543129810334304084067632363909655 +main.escalarMul.segments[0].windows[44].mux.a21[1] --> 15126296681666267149822873724388007194578704591179280292407777818928412329867 +main.escalarMul.segments[0].windows[44].mux.a20[0] --> 3653468117666580932510481532159872028336744180988128327730833666011853402005 +main.escalarMul.segments[0].windows[44].mux.a20[1] --> 10991370334029866634340161022412012766223590741570619062629849009955730622023 +main.escalarMul.segments[0].windows[44].mux.a2[0] --> 10404440530783577305269903963654250447671956121254128420504266730546263649080 +main.escalarMul.segments[0].windows[44].mux.a2[1] --> 11271984817921622356958245463174836011602652569930075158745733494473173264026 +main.escalarMul.segments[0].windows[44].mux.a10[0] --> 13835275268224122452855683676690434850636011957165726349962983380313680172974 +main.escalarMul.segments[0].windows[44].mux.a10[1] --> 21451299730580082540050668092498712479899715063234323096748159511876769800436 +main.escalarMul.segments[0].windows[44].mux.a1[0] --> 5020713020630242816801187010604244905614772709620605623244507277154105694351 +main.escalarMul.segments[0].windows[44].mux.a1[1] --> 19802816483344468251120175008087028524208990876686390236104988632916670200632 +main.escalarMul.segments[0].windows[44].mux.a0[0] --> 1581625275316160547550570291597270402088894382724724837206033042450058967607 +main.escalarMul.segments[0].windows[44].mux.a0[1] --> 9476937367005752535972461239610713236421569630417815565513484181163425379934 +main.escalarMul.segments[0].windows[44].mux.s10 --> 1 +main.escalarMul.segments[0].windows[44].dbl2.lamda --> 18641854128275235685543349903059453660126652182000027745380656554245703598674 +main.escalarMul.segments[0].windows[44].dbl2.x1_2 --> 7426738546094510874518608616886751733956811800968512543278601071942826847394 +main.escalarMul.segments[0].windows[44].adr3.lamda --> 19827995646375463223948434367017722845485033239946683661719400077657421941365 +main.escalarMul.segments[0].windows[44].adr4.lamda --> 12578869028744346221289781542003278100351797082902942567698122665351147605431 +main.escalarMul.segments[0].windows[44].adr5.lamda --> 1061401047580862238337785196859464911607806120792252065172313210061229688987 +main.escalarMul.segments[0].windows[44].adr6.lamda --> 11647504048884936673592746026047556546254280431947636138804682502316897507606 +main.escalarMul.segments[0].windows[44].adr7.lamda --> 14508743150580275312645141493734945605024334624138576079389891098121198366328 +main.escalarMul.segments[0].windows[44].adr8.lamda --> 17717979543069044038632258545120621969391539868078129385652272999663894472726 +main.escalarMul.segments[0].adders[43].out[0], main.escalarMul.segments[0].adders[44].in1[0] --> 4691555148116537461807585804759868024355935409884626131146751252583220658888 +main.escalarMul.segments[0].adders[43].out[1], main.escalarMul.segments[0].adders[44].in1[1] --> 10900304904110514319086077370525607428916909731188919240339128095876552217520 +main.escalarMul.segments[0].adders[43].lamda --> 18862053636689311406992930641747857968383136248509395503443834426336769544040 +main.escalarMul.segments[0].cadders[43].out[0], main.escalarMul.segments[0].cadders[44].in1[0] --> 5957018600411361458978224903026144173511177484698757564119780460001841517379 +main.escalarMul.segments[0].cadders[43].out[1], main.escalarMul.segments[0].cadders[44].in1[1] --> 13401762953272956399353559027102236841966633559581716782971862285967272326071 +main.escalarMul.segments[0].cadders[43].lamda --> 21539683248214415174616209531355497671122336855789851907015935176575954649685 +main.escalarMul.segments[0].windows[45].out[0], main.escalarMul.segments[0].windows[45].mux.out[0], main.escalarMul.segments[0].adders[44].in2[0] --> 20549104877182311802152138638254046806045057523184259644358514708833573220695 +main.escalarMul.segments[0].windows[45].out[1], main.escalarMul.segments[0].windows[45].mux.out[1], main.escalarMul.segments[0].adders[44].in2[1] --> 10315368927668227482533924453251512668034175513149532223308842158483074753892 +main.escalarMul.segments[0].windows[45].out8[0], main.escalarMul.segments[0].windows[45].mux.c[0][7], main.escalarMul.segments[0].windows[45].adr8.out[0], main.escalarMul.segments[0].windows[46].base[0], main.escalarMul.segments[0].windows[46].mux.c[0][0], main.escalarMul.segments[0].windows[46].mux.a[0], main.escalarMul.segments[0].windows[46].dbl2.in[0], main.escalarMul.segments[0].windows[46].adr3.in1[0], main.escalarMul.segments[0].windows[46].adr4.in1[0], main.escalarMul.segments[0].windows[46].adr5.in1[0], main.escalarMul.segments[0].windows[46].adr6.in1[0], main.escalarMul.segments[0].windows[46].adr7.in1[0], main.escalarMul.segments[0].windows[46].adr8.in1[0], main.escalarMul.segments[0].cadders[45].in2[0] --> 14137371674604874891845239253386754292208306625429113177929021522901954809099 +main.escalarMul.segments[0].windows[45].out8[1], main.escalarMul.segments[0].windows[45].mux.c[1][7], main.escalarMul.segments[0].windows[45].adr8.out[1], main.escalarMul.segments[0].windows[46].base[1], main.escalarMul.segments[0].windows[46].mux.c[1][0], main.escalarMul.segments[0].windows[46].mux.a[1], main.escalarMul.segments[0].windows[46].dbl2.in[1], main.escalarMul.segments[0].windows[46].adr3.in1[1], main.escalarMul.segments[0].windows[46].adr4.in1[1], main.escalarMul.segments[0].windows[46].adr5.in1[1], main.escalarMul.segments[0].windows[46].adr6.in1[1], main.escalarMul.segments[0].windows[46].adr7.in1[1], main.escalarMul.segments[0].windows[46].adr8.in1[1], main.escalarMul.segments[0].cadders[45].in2[1] --> 19415928189639879987119739271941091142576110374711205502147245035636745198718 +main.escalarMul.segments[0].windows[45].mux.c[0][1], main.escalarMul.segments[0].windows[45].dbl2.out[0], main.escalarMul.segments[0].windows[45].adr3.in2[0] --> 1155975287443681534779324990849058737029339430623347877861898453024985595778 +main.escalarMul.segments[0].windows[45].mux.c[0][2], main.escalarMul.segments[0].windows[45].adr3.out[0], main.escalarMul.segments[0].windows[45].adr4.in2[0] --> 9003736879431200329357579284983529477465372842418879030245453063337063489399 +main.escalarMul.segments[0].windows[45].mux.c[0][3], main.escalarMul.segments[0].windows[45].adr4.out[0], main.escalarMul.segments[0].windows[45].adr5.in2[0] --> 8809595422811291106661607454548426981321640942224885089848030518204218309571 +main.escalarMul.segments[0].windows[45].mux.c[0][4], main.escalarMul.segments[0].windows[45].adr5.out[0], main.escalarMul.segments[0].windows[45].adr6.in2[0] --> 5320591145346831445262688603776331795220953666181337548975397199811986304968 +main.escalarMul.segments[0].windows[45].mux.c[0][5], main.escalarMul.segments[0].windows[45].adr6.out[0], main.escalarMul.segments[0].windows[45].adr7.in2[0] --> 20549104877182311802152138638254046806045057523184259644358514708833573220695 +main.escalarMul.segments[0].windows[45].mux.c[0][6], main.escalarMul.segments[0].windows[45].adr7.out[0], main.escalarMul.segments[0].windows[45].adr8.in2[0] --> 1391074569076218904733826928687965598439759057612082576218044940567519423212 +main.escalarMul.segments[0].windows[45].mux.c[1][1], main.escalarMul.segments[0].windows[45].dbl2.out[1], main.escalarMul.segments[0].windows[45].adr3.in2[1] --> 12273314587126285573992655468335648012792508790905903243645098164374261239776 +main.escalarMul.segments[0].windows[45].mux.c[1][2], main.escalarMul.segments[0].windows[45].adr3.out[1], main.escalarMul.segments[0].windows[45].adr4.in2[1] --> 4786956374528895049917393825010850023942558521256375795758614916380645004897 +main.escalarMul.segments[0].windows[45].mux.c[1][3], main.escalarMul.segments[0].windows[45].adr4.out[1], main.escalarMul.segments[0].windows[45].adr5.in2[1] --> 15360210023117187894910630646278215676707791482436337628138159402031523443608 +main.escalarMul.segments[0].windows[45].mux.c[1][4], main.escalarMul.segments[0].windows[45].adr5.out[1], main.escalarMul.segments[0].windows[45].adr6.in2[1] --> 9440500664495581418753132309578323482285735723647068808055860267723235657828 +main.escalarMul.segments[0].windows[45].mux.c[1][5], main.escalarMul.segments[0].windows[45].adr6.out[1], main.escalarMul.segments[0].windows[45].adr7.in2[1] --> 10315368927668227482533924453251512668034175513149532223308842158483074753892 +main.escalarMul.segments[0].windows[45].mux.c[1][6], main.escalarMul.segments[0].windows[45].adr7.out[1], main.escalarMul.segments[0].windows[45].adr8.in2[1] --> 10668547079522584355735260711593998108971775868215324256696862763865426949516 +main.escalarMul.segments[0].windows[45].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[45].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[45].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[45].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[45].mux.a20[0] --> 5609677854856053540439548303191535438771978149677785649676869442420737036929 +main.escalarMul.segments[0].windows[45].mux.a20[1] --> 17437205792430448364613299240067502106751147250564892095340346052664372968132 +main.escalarMul.segments[0].windows[45].mux.a2[0] --> 13783451734882576726933265344213452630243739942883126116819746813387850587988 +main.escalarMul.segments[0].windows[45].mux.a2[1] --> 2493091419950768766174375490105637637038883872094771228021602128020249041601 +main.escalarMul.segments[0].windows[45].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[45].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[45].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[45].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[45].mux.a0[0] --> 9618835876979426816449901731286179572052125707325136445706248066600849878798 +main.escalarMul.segments[0].windows[45].mux.a0[1] --> 5325905342581472921413898648862962167545656939353605663610840024671274623549 +main.escalarMul.segments[0].windows[45].mux.s10 --> 0 +main.escalarMul.segments[0].windows[45].dbl2.lamda --> 12956289892323215380564310703885945236197418974002591169559550184163004097189 +main.escalarMul.segments[0].windows[45].dbl2.x1_2 --> 20534793411612266823850500219089603785950315463751482721806832489939131041114 +main.escalarMul.segments[0].windows[45].adr3.lamda --> 5404724699571732832528898240498488403280600143739648035520627761819916139282 +main.escalarMul.segments[0].windows[45].adr4.lamda --> 15511747145414314533602384070447590327056371813400357425901358918780729485409 +main.escalarMul.segments[0].windows[45].adr5.lamda --> 4912524792390627081740730236429065821368514062778596951013811150726489404640 +main.escalarMul.segments[0].windows[45].adr6.lamda --> 338967787027858270979520669251205450666715608966250596913793562485838607227 +main.escalarMul.segments[0].windows[45].adr7.lamda --> 9485207261597326944813875181821093902329615834796413490937821360881330979918 +main.escalarMul.segments[0].windows[45].adr8.lamda --> 2056756616496683787884957708878744058991567109356248119483275151400100359253 +main.escalarMul.segments[0].adders[44].out[0], main.escalarMul.segments[0].adders[45].in1[0] --> 9603355366382273941828988141552284441396736821228257703279318896837519242774 +main.escalarMul.segments[0].adders[44].out[1], main.escalarMul.segments[0].adders[45].in1[1] --> 6292075710119462255233233695709914572856024407114765795616142832449699781185 +main.escalarMul.segments[0].adders[44].lamda --> 16133387629102533278885205346184583436896954331534101713136201396146465074524 +main.escalarMul.segments[0].cadders[44].out[0], main.escalarMul.segments[0].cadders[45].in1[0] --> 3446966125233270890582062568930718772504788588305502137636737786096453114924 +main.escalarMul.segments[0].cadders[44].out[1], main.escalarMul.segments[0].cadders[45].in1[1] --> 16892374044151486846049313551157431321533301495666703305066845551453897542499 +main.escalarMul.segments[0].cadders[44].lamda --> 17191455708735001996321167197120132494776845912147820382843431139878215096036 +main.escalarMul.segments[0].windows[46].out[0], main.escalarMul.segments[0].windows[46].mux.out[0], main.escalarMul.segments[0].adders[45].in2[0] --> 3320950119690937953671580775020324587413772574200035904662009060128363200036 +main.escalarMul.segments[0].windows[46].out[1], main.escalarMul.segments[0].windows[46].mux.out[1], main.escalarMul.segments[0].adders[45].in2[1] --> 5268840480217455206747338083949146432159565267623902522511638453588718119193 +main.escalarMul.segments[0].windows[46].out8[0], main.escalarMul.segments[0].windows[46].mux.c[0][7], main.escalarMul.segments[0].windows[46].adr8.out[0], main.escalarMul.segments[0].windows[47].base[0], main.escalarMul.segments[0].windows[47].mux.c[0][0], main.escalarMul.segments[0].windows[47].mux.a[0], main.escalarMul.segments[0].windows[47].dbl2.in[0], main.escalarMul.segments[0].windows[47].adr3.in1[0], main.escalarMul.segments[0].windows[47].adr4.in1[0], main.escalarMul.segments[0].windows[47].adr5.in1[0], main.escalarMul.segments[0].windows[47].adr6.in1[0], main.escalarMul.segments[0].windows[47].adr7.in1[0], main.escalarMul.segments[0].windows[47].adr8.in1[0], main.escalarMul.segments[0].cadders[46].in2[0] --> 18424001412618602595103410323024935207244562479259055190616412741591048638680 +main.escalarMul.segments[0].windows[46].out8[1], main.escalarMul.segments[0].windows[46].mux.c[1][7], main.escalarMul.segments[0].windows[46].adr8.out[1], main.escalarMul.segments[0].windows[47].base[1], main.escalarMul.segments[0].windows[47].mux.c[1][0], main.escalarMul.segments[0].windows[47].mux.a[1], main.escalarMul.segments[0].windows[47].dbl2.in[1], main.escalarMul.segments[0].windows[47].adr3.in1[1], main.escalarMul.segments[0].windows[47].adr4.in1[1], main.escalarMul.segments[0].windows[47].adr5.in1[1], main.escalarMul.segments[0].windows[47].adr6.in1[1], main.escalarMul.segments[0].windows[47].adr7.in1[1], main.escalarMul.segments[0].windows[47].adr8.in1[1], main.escalarMul.segments[0].cadders[46].in2[1] --> 19138232322255642595695760404326479696548255012006875020949336142246618045884 +main.escalarMul.segments[0].windows[46].mux.c[0][1], main.escalarMul.segments[0].windows[46].dbl2.out[0], main.escalarMul.segments[0].windows[46].adr3.in2[0] --> 18925849821228000014362302164227522036406799428365251406141458545452957030632 +main.escalarMul.segments[0].windows[46].mux.c[0][2], main.escalarMul.segments[0].windows[46].adr3.out[0], main.escalarMul.segments[0].windows[46].adr4.in2[0] --> 2197220135795148052712418174509254085120995105364174418242234239138025374940 +main.escalarMul.segments[0].windows[46].mux.c[0][3], main.escalarMul.segments[0].windows[46].adr4.out[0], main.escalarMul.segments[0].windows[46].adr5.in2[0] --> 20508785221421858876660910721608321216253764892944636205332930574303564875892 +main.escalarMul.segments[0].windows[46].mux.c[0][4], main.escalarMul.segments[0].windows[46].adr5.out[0], main.escalarMul.segments[0].windows[46].adr6.in2[0] --> 21284986850944954447477856079566342506853858779914604713549348712315182514469 +main.escalarMul.segments[0].windows[46].mux.c[0][5], main.escalarMul.segments[0].windows[46].adr6.out[0], main.escalarMul.segments[0].windows[46].adr7.in2[0] --> 3320950119690937953671580775020324587413772574200035904662009060128363200036 +main.escalarMul.segments[0].windows[46].mux.c[0][6], main.escalarMul.segments[0].windows[46].adr7.out[0], main.escalarMul.segments[0].windows[46].adr8.in2[0] --> 13850752148330983883591491146811715240095717911870497045745832084019678275307 +main.escalarMul.segments[0].windows[46].mux.c[1][1], main.escalarMul.segments[0].windows[46].dbl2.out[1], main.escalarMul.segments[0].windows[46].adr3.in2[1] --> 884225382248623887250067422876958396444938928362555191678360680929210689431 +main.escalarMul.segments[0].windows[46].mux.c[1][2], main.escalarMul.segments[0].windows[46].adr3.out[1], main.escalarMul.segments[0].windows[46].adr4.in2[1] --> 18760889270548653773536622971127094455665780816829883160566049624890448065123 +main.escalarMul.segments[0].windows[46].mux.c[1][3], main.escalarMul.segments[0].windows[46].adr4.out[1], main.escalarMul.segments[0].windows[46].adr5.in2[1] --> 12513235110062854754477208205909193956331631191025043270745392637717238889602 +main.escalarMul.segments[0].windows[46].mux.c[1][4], main.escalarMul.segments[0].windows[46].adr5.out[1], main.escalarMul.segments[0].windows[46].adr6.in2[1] --> 3488429269580516378742162900426021635271193028351303376820651881312754185418 +main.escalarMul.segments[0].windows[46].mux.c[1][5], main.escalarMul.segments[0].windows[46].adr6.out[1], main.escalarMul.segments[0].windows[46].adr7.in2[1] --> 5268840480217455206747338083949146432159565267623902522511638453588718119193 +main.escalarMul.segments[0].windows[46].mux.c[1][6], main.escalarMul.segments[0].windows[46].adr7.out[1], main.escalarMul.segments[0].windows[46].adr8.in2[1] --> 20967105811258311670701393838809350657425467612545396343116572367464008333524 +main.escalarMul.segments[0].windows[46].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[46].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[46].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[46].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[46].mux.a20[0] --> 21023970865801408828169473275127764513458149792181361650296631698413795455268 +main.escalarMul.segments[0].windows[46].mux.a20[1] --> 20312114018028194927874847032587257543019543685621249456159870926983498443062 +main.escalarMul.segments[0].windows[46].mux.a2[0] --> 7147615176340079555632616826179588214645552154485491535620327189413227705370 +main.escalarMul.segments[0].windows[46].mux.a2[1] --> 5960743951779911613868829373742205581243447054056132218371611032251817482317 +main.escalarMul.segments[0].windows[46].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[46].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[46].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[46].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[46].mux.a0[0] --> 4788478146623125122517062910840767744198492802936138228212437022551002221533 +main.escalarMul.segments[0].windows[46].mux.a0[1] --> 3356540064448019122376733896193142342417192954067384033229319831868273986330 +main.escalarMul.segments[0].windows[46].mux.s10 --> 0 +main.escalarMul.segments[0].windows[46].dbl2.lamda --> 15535020978234027023039660876814591632001588344703379537785283035620744648304 +main.escalarMul.segments[0].windows[46].dbl2.x1_2 --> 6903387339419479826490092159279849785154770930213540487350752352754155206625 +main.escalarMul.segments[0].windows[46].adr3.lamda --> 3995798988534180634795267496361587562181415558021534210784929635619985334085 +main.escalarMul.segments[0].windows[46].adr4.lamda --> 4574690337814958715020448445629190253454452418605883779808985333040625908484 +main.escalarMul.segments[0].windows[46].adr5.lamda --> 3842148153624200467720786341189663427211964487266079298735151609246977109777 +main.escalarMul.segments[0].windows[46].adr6.lamda --> 4469158766395742867823147071902696174992145498670187284025290587904310457236 +main.escalarMul.segments[0].windows[46].adr7.lamda --> 14636206384101985560301951956694320055171117682541200059890716503074011288357 +main.escalarMul.segments[0].windows[46].adr8.lamda --> 14702317281859833609636748375079369262117194072680601167892630836753853296137 +main.escalarMul.segments[0].adders[45].out[0], main.escalarMul.segments[0].adders[46].in1[0] --> 3421517221808655381457248316635625016503265554182068078433714212195548579769 +main.escalarMul.segments[0].adders[45].out[1], main.escalarMul.segments[0].adders[46].in1[1] --> 7840396793621675156380148959588207104136222947369283572819742646379993066944 +main.escalarMul.segments[0].adders[45].lamda --> 4758613309681500156457097674490760390207401769826094923326610738916890041158 +main.escalarMul.segments[0].cadders[45].out[0], main.escalarMul.segments[0].cadders[46].in1[0] --> 16797682764539412654642301807265215380190116702037137458196917571285277267831 +main.escalarMul.segments[0].cadders[45].out[1], main.escalarMul.segments[0].cadders[46].in1[1] --> 8916299074604958347959081667701316167115243812594229239488702682689916233080 +main.escalarMul.segments[0].cadders[45].lamda --> 16248432198178897782421654511605546859669189615293337138152619700311777489970 +main.escalarMul.segments[0].windows[47].out[0], main.escalarMul.segments[0].windows[47].mux.out[0], main.escalarMul.segments[0].adders[46].in2[0] --> 6681001508747809441180748903370828128636759281546929630248950189094437876932 +main.escalarMul.segments[0].windows[47].out[1], main.escalarMul.segments[0].windows[47].mux.out[1], main.escalarMul.segments[0].adders[46].in2[1] --> 12771037901947955927250430013037385975511451186789830631150699860142189457658 +main.escalarMul.segments[0].windows[47].out8[0], main.escalarMul.segments[0].windows[47].mux.c[0][7], main.escalarMul.segments[0].windows[47].adr8.out[0], main.escalarMul.segments[0].windows[48].base[0], main.escalarMul.segments[0].windows[48].mux.c[0][0], main.escalarMul.segments[0].windows[48].mux.a[0], main.escalarMul.segments[0].windows[48].dbl2.in[0], main.escalarMul.segments[0].windows[48].adr3.in1[0], main.escalarMul.segments[0].windows[48].adr4.in1[0], main.escalarMul.segments[0].windows[48].adr5.in1[0], main.escalarMul.segments[0].windows[48].adr6.in1[0], main.escalarMul.segments[0].windows[48].adr7.in1[0], main.escalarMul.segments[0].windows[48].adr8.in1[0], main.escalarMul.segments[0].cadders[47].in2[0] --> 6681001508747809441180748903370828128636759281546929630248950189094437876932 +main.escalarMul.segments[0].windows[47].out8[1], main.escalarMul.segments[0].windows[47].mux.c[1][7], main.escalarMul.segments[0].windows[47].adr8.out[1], main.escalarMul.segments[0].windows[48].base[1], main.escalarMul.segments[0].windows[48].mux.c[1][0], main.escalarMul.segments[0].windows[48].mux.a[1], main.escalarMul.segments[0].windows[48].dbl2.in[1], main.escalarMul.segments[0].windows[48].adr3.in1[1], main.escalarMul.segments[0].windows[48].adr4.in1[1], main.escalarMul.segments[0].windows[48].adr5.in1[1], main.escalarMul.segments[0].windows[48].adr6.in1[1], main.escalarMul.segments[0].windows[48].adr7.in1[1], main.escalarMul.segments[0].windows[48].adr8.in1[1], main.escalarMul.segments[0].cadders[47].in2[1] --> 12771037901947955927250430013037385975511451186789830631150699860142189457658 +main.escalarMul.segments[0].windows[47].mux.c[0][1], main.escalarMul.segments[0].windows[47].dbl2.out[0], main.escalarMul.segments[0].windows[47].adr3.in2[0] --> 9114451881542581206184638216082299539122029073581934516758677720277760772916 +main.escalarMul.segments[0].windows[47].mux.c[0][2], main.escalarMul.segments[0].windows[47].adr3.out[0], main.escalarMul.segments[0].windows[47].adr4.in2[0] --> 12627564648743541329867645971010050715226912982037469552998629450364175170851 +main.escalarMul.segments[0].windows[47].mux.c[0][3], main.escalarMul.segments[0].windows[47].adr4.out[0], main.escalarMul.segments[0].windows[47].adr5.in2[0] --> 17051749182164372362638046686679014326849629695717703725833173135573620282101 +main.escalarMul.segments[0].windows[47].mux.c[0][4], main.escalarMul.segments[0].windows[47].adr5.out[0], main.escalarMul.segments[0].windows[47].adr6.in2[0] --> 12786322097426412726709300110787639616046905836125727646440538559047253803067 +main.escalarMul.segments[0].windows[47].mux.c[0][5], main.escalarMul.segments[0].windows[47].adr6.out[0], main.escalarMul.segments[0].windows[47].adr7.in2[0] --> 17371966233415606822542397447301355705199674046393687291960161561774265119111 +main.escalarMul.segments[0].windows[47].mux.c[0][6], main.escalarMul.segments[0].windows[47].adr7.out[0], main.escalarMul.segments[0].windows[47].adr8.in2[0] --> 16419723895171952386867790238837097724181614839811480533538504497342044849690 +main.escalarMul.segments[0].windows[47].mux.c[1][1], main.escalarMul.segments[0].windows[47].dbl2.out[1], main.escalarMul.segments[0].windows[47].adr3.in2[1] --> 2879980576908873312491800981271070327238200336099074483792465373933912576638 +main.escalarMul.segments[0].windows[47].mux.c[1][2], main.escalarMul.segments[0].windows[47].adr3.out[1], main.escalarMul.segments[0].windows[47].adr4.in2[1] --> 138950673310199588925951263561166434763209551454822949654990293492749210447 +main.escalarMul.segments[0].windows[47].mux.c[1][3], main.escalarMul.segments[0].windows[47].adr4.out[1], main.escalarMul.segments[0].windows[47].adr5.in2[1] --> 18739948553982178542458698439910128574661110815182943654870611990131111591000 +main.escalarMul.segments[0].windows[47].mux.c[1][4], main.escalarMul.segments[0].windows[47].adr5.out[1], main.escalarMul.segments[0].windows[47].adr6.in2[1] --> 4649798450150187994073715802074758364950170715236438833235120363621142881019 +main.escalarMul.segments[0].windows[47].mux.c[1][5], main.escalarMul.segments[0].windows[47].adr6.out[1], main.escalarMul.segments[0].windows[47].adr7.in2[1] --> 7928399023344853079858820483851585211226306227729394064949881532752040947418 +main.escalarMul.segments[0].windows[47].mux.c[1][6], main.escalarMul.segments[0].windows[47].adr7.out[1], main.escalarMul.segments[0].windows[47].adr8.in2[1] --> 19234467991913046429956184965085612087208999380881827904235473709122834379239 +main.escalarMul.segments[0].windows[47].mux.a210[0] --> 15718385156768360981283499995922965212653854912942203291894952355654265725418 +main.escalarMul.segments[0].windows[47].mux.a210[1] --> 21063448326339321841511651002542400798463453555027229283922585076664814649072 +main.escalarMul.segments[0].windows[47].mux.a21[0] --> 9429838561620600925394254480064342600152358500907338524715749229521664514452 +main.escalarMul.segments[0].windows[47].mux.a21[1] --> 11695708318869026220405872558518891895495509725781406798596495007679751838040 +main.escalarMul.segments[0].windows[47].mux.a20[0] --> 13895193667065215484751869443456351757275301615945080319377358024040299181808 +main.escalarMul.segments[0].windows[47].mux.a20[1] --> 19536852318541434368989064104832236215586190188400755768871631937443603535645 +main.escalarMul.segments[0].windows[47].mux.a2[0] --> 16250563556647085353852295533019979497350707757282706799522330004032013660004 +main.escalarMul.segments[0].windows[47].mux.a2[1] --> 7399808999733820620624361143005553756950280103645598155983988407950333330752 +main.escalarMul.segments[0].windows[47].mux.a10[0] --> 13733734064496852421689172822611599279745250119357354846692278706522732977014 +main.escalarMul.segments[0].windows[47].mux.a10[1] --> 12971006754179473014490300854147096420659591539219886898674288278375259354182 +main.escalarMul.segments[0].windows[47].mux.a1[0] --> 16091806107964213957010641393242390596530714903194448706080420895348935027788 +main.escalarMul.segments[0].windows[47].mux.a1[1] --> 2888961222893832215476596604491961826763318939863982272403858337821939660180 +main.escalarMul.segments[0].windows[47].mux.a0[0] --> 12578693340763253833327633638314639420425830994738913669840469165262520629853 +main.escalarMul.segments[0].windows[47].mux.a0[1] --> 5629991126492505939042446322201865719238309724508233806541333418263103026371 +main.escalarMul.segments[0].windows[47].mux.s10 --> 1 +main.escalarMul.segments[0].windows[47].dbl2.lamda --> 4629599748008668409499970986740544311773400627642849651172615250734394315097 +main.escalarMul.segments[0].windows[47].dbl2.x1_2 --> 12301997589586647936145380112365129150279242541435297142488748085535670507352 +main.escalarMul.segments[0].windows[47].adr3.lamda --> 19891293247006663215967531134653500943590100453907240106354405565255916874109 +main.escalarMul.segments[0].windows[47].adr4.lamda --> 18847981675721079364442376326155905230034939371925556204121734300520302860311 +main.escalarMul.segments[0].windows[47].adr5.lamda --> 5781785137115693227891092064850100746112633821383483799224824298523325484921 +main.escalarMul.segments[0].windows[47].adr6.lamda --> 12579475202061154197470434122214769731266147859431389264186703721417897606515 +main.escalarMul.segments[0].windows[47].adr7.lamda --> 3762406478553248122524340273709566382584892289090365498592074657184309072633 +main.escalarMul.segments[0].windows[47].adr8.lamda --> 12030076360058471239851371829002986221863804519806053422725956198217139869760 +main.escalarMul.segments[0].adders[46].out[0], main.escalarMul.segments[0].adders[47].in1[0] --> 15537246679938589356048982317972458923021943901152917580505973584704035066615 +main.escalarMul.segments[0].adders[46].out[1], main.escalarMul.segments[0].adders[47].in1[1] --> 16262084877194202856078032229492548029485204896018858835184142842507571511808 +main.escalarMul.segments[0].adders[46].lamda --> 21499904643090350120299834421074575669829743610260438617586305991816261246197 +main.escalarMul.segments[0].cadders[46].out[0], main.escalarMul.segments[0].cadders[47].in1[0] --> 9273508515941639887270442384287771764620379383083202360624615086265180793242 +main.escalarMul.segments[0].cadders[46].out[1], main.escalarMul.segments[0].cadders[47].in1[1] --> 15598202733465038357268935212732125247703920814223870693349309807339198911475 +main.escalarMul.segments[0].cadders[46].lamda --> 9382962408231798587023245638545522495659455128514208383461661511650101364658 +main.escalarMul.segments[0].windows[48].out[0], main.escalarMul.segments[0].windows[48].mux.out[0], main.escalarMul.segments[0].adders[47].in2[0] --> 19818817642760993188181760142770970147506726379520519531918187988623669670831 +main.escalarMul.segments[0].windows[48].out[1], main.escalarMul.segments[0].windows[48].mux.out[1], main.escalarMul.segments[0].adders[47].in2[1] --> 4085834977316260575797736121893019389682156457240894469398122740752775390989 +main.escalarMul.segments[0].windows[48].out8[0], main.escalarMul.segments[0].windows[48].mux.c[0][7], main.escalarMul.segments[0].windows[48].adr8.out[0], main.escalarMul.segments[0].windows[49].base[0], main.escalarMul.segments[0].windows[49].mux.c[0][0], main.escalarMul.segments[0].windows[49].mux.a[0], main.escalarMul.segments[0].windows[49].dbl2.in[0], main.escalarMul.segments[0].windows[49].adr3.in1[0], main.escalarMul.segments[0].windows[49].adr4.in1[0], main.escalarMul.segments[0].windows[49].adr5.in1[0], main.escalarMul.segments[0].windows[49].adr6.in1[0], main.escalarMul.segments[0].windows[49].adr7.in1[0], main.escalarMul.segments[0].windows[49].adr8.in1[0], main.escalarMul.segments[0].cadders[48].in2[0] --> 7708653692189710153435230729457863940194338767866771654975375273222541069808 +main.escalarMul.segments[0].windows[48].out8[1], main.escalarMul.segments[0].windows[48].mux.c[1][7], main.escalarMul.segments[0].windows[48].adr8.out[1], main.escalarMul.segments[0].windows[49].base[1], main.escalarMul.segments[0].windows[49].mux.c[1][0], main.escalarMul.segments[0].windows[49].mux.a[1], main.escalarMul.segments[0].windows[49].dbl2.in[1], main.escalarMul.segments[0].windows[49].adr3.in1[1], main.escalarMul.segments[0].windows[49].adr4.in1[1], main.escalarMul.segments[0].windows[49].adr5.in1[1], main.escalarMul.segments[0].windows[49].adr6.in1[1], main.escalarMul.segments[0].windows[49].adr7.in1[1], main.escalarMul.segments[0].windows[49].adr8.in1[1], main.escalarMul.segments[0].cadders[48].in2[1] --> 10437669900940153066731814983808727135921759855093989724643434606736161512877 +main.escalarMul.segments[0].windows[48].mux.c[0][1], main.escalarMul.segments[0].windows[48].dbl2.out[0], main.escalarMul.segments[0].windows[48].adr3.in2[0] --> 17721524545830494662911041204405633102210334990265650155017970915017394020804 +main.escalarMul.segments[0].windows[48].mux.c[0][2], main.escalarMul.segments[0].windows[48].adr3.out[0], main.escalarMul.segments[0].windows[48].adr4.in2[0] --> 2277481950555084117580793348422762268828919990309763230246997893588661738666 +main.escalarMul.segments[0].windows[48].mux.c[0][3], main.escalarMul.segments[0].windows[48].adr4.out[0], main.escalarMul.segments[0].windows[48].adr5.in2[0] --> 2577905018100366401214884763588965683760964590599150739773073760519460523118 +main.escalarMul.segments[0].windows[48].mux.c[0][4], main.escalarMul.segments[0].windows[48].adr5.out[0], main.escalarMul.segments[0].windows[48].adr6.in2[0] --> 3923690313484336582662260050499354679637243043056285451203550808735404695248 +main.escalarMul.segments[0].windows[48].mux.c[0][5], main.escalarMul.segments[0].windows[48].adr6.out[0], main.escalarMul.segments[0].windows[48].adr7.in2[0] --> 19818817642760993188181760142770970147506726379520519531918187988623669670831 +main.escalarMul.segments[0].windows[48].mux.c[0][6], main.escalarMul.segments[0].windows[48].adr7.out[0], main.escalarMul.segments[0].windows[48].adr8.in2[0] --> 7288027472833431816662659356721162549518302470799911151706909111955296300467 +main.escalarMul.segments[0].windows[48].mux.c[1][1], main.escalarMul.segments[0].windows[48].dbl2.out[1], main.escalarMul.segments[0].windows[48].adr3.in2[1] --> 7006831674606683686835720407479740934831839473822650597278900065279913560460 +main.escalarMul.segments[0].windows[48].mux.c[1][2], main.escalarMul.segments[0].windows[48].adr3.out[1], main.escalarMul.segments[0].windows[48].adr4.in2[1] --> 7983550346099492899226830066263800178389841597113816767665189200060768351827 +main.escalarMul.segments[0].windows[48].mux.c[1][3], main.escalarMul.segments[0].windows[48].adr4.out[1], main.escalarMul.segments[0].windows[48].adr5.in2[1] --> 11806384777805352572536957504662279237339500179047621565173044890404822165523 +main.escalarMul.segments[0].windows[48].mux.c[1][4], main.escalarMul.segments[0].windows[48].adr5.out[1], main.escalarMul.segments[0].windows[48].adr6.in2[1] --> 7310106938472552431672145535583659380938097731893420374307345263550560159212 +main.escalarMul.segments[0].windows[48].mux.c[1][5], main.escalarMul.segments[0].windows[48].adr6.out[1], main.escalarMul.segments[0].windows[48].adr7.in2[1] --> 4085834977316260575797736121893019389682156457240894469398122740752775390989 +main.escalarMul.segments[0].windows[48].mux.c[1][6], main.escalarMul.segments[0].windows[48].adr7.out[1], main.escalarMul.segments[0].windows[48].adr8.in2[1] --> 9687406839713541452336888808260159082311231908899935877929948549631839160178 +main.escalarMul.segments[0].windows[48].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[48].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[48].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[48].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[48].mux.a20[0] --> 4854604292193971383789207791236810494295907627745513555945616453965308831711 +main.escalarMul.segments[0].windows[48].mux.a20[1] --> 2539934266184980384540300191867005049423670438314654128962577272064491128975 +main.escalarMul.segments[0].windows[48].mux.a2[0] --> 19130931676575802363727916892385801639548848161925390164652804806216775313933 +main.escalarMul.segments[0].windows[48].mux.a2[1] --> 16427311908363871726668121267803548493975010945519624086854849589984179197171 +main.escalarMul.segments[0].windows[48].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[48].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[48].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[48].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[48].mux.a0[0] --> 11040523037082685221730292301034804973573575708718720524769020725922956143872 +main.escalarMul.segments[0].windows[48].mux.a0[1] --> 16124036644498002981831696139699630047868752687448854309826404391713532598419 +main.escalarMul.segments[0].windows[48].mux.s10 --> 0 +main.escalarMul.segments[0].windows[48].dbl2.lamda --> 7005103732079485130688435500311703960945001148361744349657188581217891825084 +main.escalarMul.segments[0].windows[48].dbl2.x1_2 --> 5830331016652665437759671612004812745973370067626055771523339458045260857924 +main.escalarMul.segments[0].windows[48].adr3.lamda --> 20826697516647851841235556630870863935030531285005187847786327900673932863572 +main.escalarMul.segments[0].windows[48].adr4.lamda --> 12987621802530672603157254879281251012144092507514216394765035647987915052347 +main.escalarMul.segments[0].windows[48].adr5.lamda --> 6069333566586929310851130779882388519625233840919458783384212863022167495404 +main.escalarMul.segments[0].windows[48].adr6.lamda --> 1875374880251236027235450572150539242085178123404256010188359956247751701284 +main.escalarMul.segments[0].windows[48].adr7.lamda --> 3772461470305068469632086843936378361141447066232580574231647061068703586049 +main.escalarMul.segments[0].windows[48].adr8.lamda --> 16418443188114120030374675687419629571466834727157304029956167039530486936099 +main.escalarMul.segments[0].adders[47].out[0], main.escalarMul.segments[0].adders[48].in1[0] --> 13291952109379170119531729330961586858293630123558955758493416662844143559453 +main.escalarMul.segments[0].adders[47].out[1], main.escalarMul.segments[0].adders[48].in1[1] --> 13017463579922954696821525256372156708145703007344424234423798732953906773084 +main.escalarMul.segments[0].adders[47].lamda --> 3807048716962674173138607249261669865817002445253612722439423806571826463178 +main.escalarMul.segments[0].cadders[47].out[0], main.escalarMul.segments[0].cadders[48].in1[0] --> 18153159828616848156612371269079465916656778672430267537297902698113185104075 +main.escalarMul.segments[0].cadders[47].out[1], main.escalarMul.segments[0].cadders[48].in1[1] --> 17294126579148812978675204467173776621364039405361172315130898031331982979711 +main.escalarMul.segments[0].cadders[47].lamda --> 4686548747362423797553559122382678967159363228888993351936438258027058567522 +main.escalarMul.segments[0].windows[49].out[0], main.escalarMul.segments[0].windows[49].mux.out[0], main.escalarMul.segments[0].adders[48].in2[0] --> 6620442910674665260122933430853284065286549507395418908895333308903427622751 +main.escalarMul.segments[0].windows[49].out[1], main.escalarMul.segments[0].windows[49].mux.out[1], main.escalarMul.segments[0].adders[48].in2[1] --> 13388627780406654774132315149566523429494193816454527518410028137632089640016 +main.escalarMul.segments[0].windows[49].out8[0], main.escalarMul.segments[0].windows[49].mux.c[0][7], main.escalarMul.segments[0].windows[49].adr8.out[0], main.escalarMul.segments[0].windows[50].base[0], main.escalarMul.segments[0].windows[50].mux.c[0][0], main.escalarMul.segments[0].windows[50].mux.a[0], main.escalarMul.segments[0].windows[50].dbl2.in[0], main.escalarMul.segments[0].windows[50].adr3.in1[0], main.escalarMul.segments[0].windows[50].adr4.in1[0], main.escalarMul.segments[0].windows[50].adr5.in1[0], main.escalarMul.segments[0].windows[50].adr6.in1[0], main.escalarMul.segments[0].windows[50].adr7.in1[0], main.escalarMul.segments[0].windows[50].adr8.in1[0], main.escalarMul.segments[0].cadders[49].in2[0] --> 12602179948246749577347535485582900594079450191718322476205104015871791138697 +main.escalarMul.segments[0].windows[49].out8[1], main.escalarMul.segments[0].windows[49].mux.c[1][7], main.escalarMul.segments[0].windows[49].adr8.out[1], main.escalarMul.segments[0].windows[50].base[1], main.escalarMul.segments[0].windows[50].mux.c[1][0], main.escalarMul.segments[0].windows[50].mux.a[1], main.escalarMul.segments[0].windows[50].dbl2.in[1], main.escalarMul.segments[0].windows[50].adr3.in1[1], main.escalarMul.segments[0].windows[50].adr4.in1[1], main.escalarMul.segments[0].windows[50].adr5.in1[1], main.escalarMul.segments[0].windows[50].adr6.in1[1], main.escalarMul.segments[0].windows[50].adr7.in1[1], main.escalarMul.segments[0].windows[50].adr8.in1[1], main.escalarMul.segments[0].cadders[49].in2[1] --> 17392950534159992163040175061276245806647632041550512251446967296305475519879 +main.escalarMul.segments[0].windows[49].mux.c[0][1], main.escalarMul.segments[0].windows[49].dbl2.out[0], main.escalarMul.segments[0].windows[49].adr3.in2[0] --> 8537974449048102548529772060776114518664559633240039460167204867051618788866 +main.escalarMul.segments[0].windows[49].mux.c[0][2], main.escalarMul.segments[0].windows[49].adr3.out[0], main.escalarMul.segments[0].windows[49].adr4.in2[0] --> 11345822060018272661201727973573878091643907485632662244028895275939329903478 +main.escalarMul.segments[0].windows[49].mux.c[0][3], main.escalarMul.segments[0].windows[49].adr4.out[0], main.escalarMul.segments[0].windows[49].adr5.in2[0] --> 6620442910674665260122933430853284065286549507395418908895333308903427622751 +main.escalarMul.segments[0].windows[49].mux.c[0][4], main.escalarMul.segments[0].windows[49].adr5.out[0], main.escalarMul.segments[0].windows[49].adr6.in2[0] --> 15907660155823714770845375935128990931617770363948751230425807833101681989540 +main.escalarMul.segments[0].windows[49].mux.c[0][5], main.escalarMul.segments[0].windows[49].adr6.out[0], main.escalarMul.segments[0].windows[49].adr7.in2[0] --> 18690679916145375254832518665632282053327685893617719560973135020945588792887 +main.escalarMul.segments[0].windows[49].mux.c[0][6], main.escalarMul.segments[0].windows[49].adr7.out[0], main.escalarMul.segments[0].windows[49].adr8.in2[0] --> 14287013824194224694235817634417441328997753733564910781389532026610841673551 +main.escalarMul.segments[0].windows[49].mux.c[1][1], main.escalarMul.segments[0].windows[49].dbl2.out[1], main.escalarMul.segments[0].windows[49].adr3.in2[1] --> 13219727728684489593453692064822834548713136844270073452103146132328053664514 +main.escalarMul.segments[0].windows[49].mux.c[1][2], main.escalarMul.segments[0].windows[49].adr3.out[1], main.escalarMul.segments[0].windows[49].adr4.in2[1] --> 4886148388226593067466994243816551901233113546833103581610708740527777714547 +main.escalarMul.segments[0].windows[49].mux.c[1][3], main.escalarMul.segments[0].windows[49].adr4.out[1], main.escalarMul.segments[0].windows[49].adr5.in2[1] --> 13388627780406654774132315149566523429494193816454527518410028137632089640016 +main.escalarMul.segments[0].windows[49].mux.c[1][4], main.escalarMul.segments[0].windows[49].adr5.out[1], main.escalarMul.segments[0].windows[49].adr6.in2[1] --> 14532103382464118610398281116902210772853293987752431564001361635039960946189 +main.escalarMul.segments[0].windows[49].mux.c[1][5], main.escalarMul.segments[0].windows[49].adr6.out[1], main.escalarMul.segments[0].windows[49].adr7.in2[1] --> 9691288846168332683479084284332235562263670401417607204977659589830490275860 +main.escalarMul.segments[0].windows[49].mux.c[1][6], main.escalarMul.segments[0].windows[49].adr7.out[1], main.escalarMul.segments[0].windows[49].adr8.in2[1] --> 15763061209960897581625871063451507231509882493810072633542881343150478308194 +main.escalarMul.segments[0].windows[49].mux.a210[0] --> 1086846269932864195297910994701012748199359772094954504593636362282022661584 +main.escalarMul.segments[0].windows[49].mux.a210[1] --> 750282296059155328390057005658849670257669853629923767588180126852048108182 +main.escalarMul.segments[0].windows[49].mux.a21[0] --> 16630428172381222637870350200429711334478779052266303305608408377368179345958 +main.escalarMul.segments[0].windows[49].mux.a21[1] --> 6782479340210338970492410686541471693345234814318527212574245574318901160335 +main.escalarMul.segments[0].windows[49].mux.a20[0] --> 1953699003463268088892601399185040543239694664295700525355497594014829084289 +main.escalarMul.segments[0].windows[49].mux.a20[1] --> 14265370507799152768605331831673192465167363824905126257214790615774445673651 +main.escalarMul.segments[0].windows[49].mux.a2[0] --> 8199006463634004617410145205671126991423431596081979575450432559879140919732 +main.escalarMul.segments[0].windows[49].mux.a2[1] --> 4094433481523965543666466133093483636931534132658441839357927028303799433312 +main.escalarMul.segments[0].windows[49].mux.a10[0] --> 16333542965637275426073069871218430483720785556805523203372812625710828495832 +main.escalarMul.segments[0].windows[49].mux.a10[1] --> 5720421564435725179943443824735864115469703280445340209339607871512419773832 +main.escalarMul.segments[0].windows[49].mux.a1[0] --> 3637168367828562507766497244116014151449568717765890589053520002716788833670 +main.escalarMul.segments[0].windows[49].mux.a1[1] --> 16336721359125715222981585005265099853859718092155148200665478320367424697287 +main.escalarMul.segments[0].windows[49].mux.a0[0] --> 829320756858392395094541331318250578470220865373267805191829593829077719058 +main.escalarMul.segments[0].windows[49].mux.a0[1] --> 2782057827744336526721877081014107412791376989176083727459711525591892151637 +main.escalarMul.segments[0].windows[49].mux.s10 --> 1 +main.escalarMul.segments[0].windows[49].dbl2.lamda --> 14763859083867625658101910204537367847704381436364655183143079298002919723690 +main.escalarMul.segments[0].windows[49].dbl2.x1_2 --> 14764791738896727231384178859026558875584746963817054861980781671104357637620 +main.escalarMul.segments[0].windows[49].adr3.lamda --> 20874139680143272613017606128005919922594675269016724015072908775453665885631 +main.escalarMul.segments[0].windows[49].adr4.lamda --> 21290174566719120031672183211090856459441637368901949236446946160168673781717 +main.escalarMul.segments[0].windows[49].adr5.lamda --> 14678509606964029220955657512518336441819913943361866637059099854112797105858 +main.escalarMul.segments[0].windows[49].adr6.lamda --> 18910089159000115722149142554184984448184916771984205871457439549258047983546 +main.escalarMul.segments[0].windows[49].adr7.lamda --> 2172903220914128739238549120098592343006742117910784394529885443185493947627 +main.escalarMul.segments[0].windows[49].adr8.lamda --> 13609676353285699038233999339279169956750065520954398023272406369674205037543 +main.escalarMul.segments[0].adders[48].out[0], main.escalarMul.segments[0].adders[49].in1[0] --> 9473589567873010335993972409688865382565966183237195359503867608118462893551 +main.escalarMul.segments[0].adders[48].out[1], main.escalarMul.segments[0].adders[49].in1[1] --> 12534308199899673469036236842598406053776298256248905565119470122582819009003 +main.escalarMul.segments[0].adders[48].lamda --> 17034059871865874224082286928373613685692120605747711615559485559381328975514 +main.escalarMul.segments[0].cadders[48].out[0], main.escalarMul.segments[0].cadders[49].in1[0] --> 12728998837933631554112046187602395822267404712844707575718972312882212765849 +main.escalarMul.segments[0].cadders[48].out[1], main.escalarMul.segments[0].cadders[49].in1[1] --> 4433519703683511453573204800721868180148980989943351837949017172329230219497 +main.escalarMul.segments[0].cadders[48].lamda --> 21134783095303874391305412913542207591803124709395052791622645544909001569303 +main.escalarMul.segments[0].windows[50].out[0], main.escalarMul.segments[0].windows[50].mux.out[0], main.escalarMul.segments[0].adders[49].in2[0] --> 10231982431420794898221801383230919023662672672638282860401454222222455196285 +main.escalarMul.segments[0].windows[50].out[1], main.escalarMul.segments[0].windows[50].mux.out[1], main.escalarMul.segments[0].adders[49].in2[1] --> 17628588085493811160695809502597607465027475143822991443335420043918775608993 +main.escalarMul.segments[0].windows[50].out8[0], main.escalarMul.segments[0].windows[50].mux.c[0][7], main.escalarMul.segments[0].windows[50].adr8.out[0], main.escalarMul.segments[0].windows[51].base[0], main.escalarMul.segments[0].windows[51].mux.c[0][0], main.escalarMul.segments[0].windows[51].mux.a[0], main.escalarMul.segments[0].windows[51].dbl2.in[0], main.escalarMul.segments[0].windows[51].adr3.in1[0], main.escalarMul.segments[0].windows[51].adr4.in1[0], main.escalarMul.segments[0].windows[51].adr5.in1[0], main.escalarMul.segments[0].windows[51].adr6.in1[0], main.escalarMul.segments[0].windows[51].adr7.in1[0], main.escalarMul.segments[0].windows[51].adr8.in1[0], main.escalarMul.segments[0].cadders[50].in2[0] --> 8650578053283630682775538426505955666387498106325162086442584786035627788553 +main.escalarMul.segments[0].windows[50].out8[1], main.escalarMul.segments[0].windows[50].mux.c[1][7], main.escalarMul.segments[0].windows[50].adr8.out[1], main.escalarMul.segments[0].windows[51].base[1], main.escalarMul.segments[0].windows[51].mux.c[1][0], main.escalarMul.segments[0].windows[51].mux.a[1], main.escalarMul.segments[0].windows[51].dbl2.in[1], main.escalarMul.segments[0].windows[51].adr3.in1[1], main.escalarMul.segments[0].windows[51].adr4.in1[1], main.escalarMul.segments[0].windows[51].adr5.in1[1], main.escalarMul.segments[0].windows[51].adr6.in1[1], main.escalarMul.segments[0].windows[51].adr7.in1[1], main.escalarMul.segments[0].windows[51].adr8.in1[1], main.escalarMul.segments[0].cadders[50].in2[1] --> 10120412535563554570517928206930079201616217961814666747588509597682818716432 +main.escalarMul.segments[0].windows[50].mux.c[0][1], main.escalarMul.segments[0].windows[50].dbl2.out[0], main.escalarMul.segments[0].windows[50].adr3.in2[0] --> 10231982431420794898221801383230919023662672672638282860401454222222455196285 +main.escalarMul.segments[0].windows[50].mux.c[0][2], main.escalarMul.segments[0].windows[50].adr3.out[0], main.escalarMul.segments[0].windows[50].adr4.in2[0] --> 13845504027181165493741273296979360113914352103478324613314639473622123986113 +main.escalarMul.segments[0].windows[50].mux.c[0][3], main.escalarMul.segments[0].windows[50].adr4.out[0], main.escalarMul.segments[0].windows[50].adr5.in2[0] --> 8481089906968563062677579364888693422400836308161153619142217416424770380060 +main.escalarMul.segments[0].windows[50].mux.c[0][4], main.escalarMul.segments[0].windows[50].adr5.out[0], main.escalarMul.segments[0].windows[50].adr6.in2[0] --> 133056179035433736087795311422905974124970775579789174099774842951031597501 +main.escalarMul.segments[0].windows[50].mux.c[0][5], main.escalarMul.segments[0].windows[50].adr6.out[0], main.escalarMul.segments[0].windows[50].adr7.in2[0] --> 10989685755485165008671946898373590282454102165418390232372472191755483972102 +main.escalarMul.segments[0].windows[50].mux.c[0][6], main.escalarMul.segments[0].windows[50].adr7.out[0], main.escalarMul.segments[0].windows[50].adr8.in2[0] --> 2804944431537621168385115512010596008463831051368860217943406393729785353225 +main.escalarMul.segments[0].windows[50].mux.c[1][1], main.escalarMul.segments[0].windows[50].dbl2.out[1], main.escalarMul.segments[0].windows[50].adr3.in2[1] --> 17628588085493811160695809502597607465027475143822991443335420043918775608993 +main.escalarMul.segments[0].windows[50].mux.c[1][2], main.escalarMul.segments[0].windows[50].adr3.out[1], main.escalarMul.segments[0].windows[50].adr4.in2[1] --> 7486983383539914229191888064949557748151022431527403542358894692997077419227 +main.escalarMul.segments[0].windows[50].mux.c[1][3], main.escalarMul.segments[0].windows[50].adr4.out[1], main.escalarMul.segments[0].windows[50].adr5.in2[1] --> 15960219412581639119610117407278761030271701236139900952274854927349030443097 +main.escalarMul.segments[0].windows[50].mux.c[1][4], main.escalarMul.segments[0].windows[50].adr5.out[1], main.escalarMul.segments[0].windows[50].adr6.in2[1] --> 18540294386645507580548496716804757265756705643571621295757723534826647855662 +main.escalarMul.segments[0].windows[50].mux.c[1][5], main.escalarMul.segments[0].windows[50].adr6.out[1], main.escalarMul.segments[0].windows[50].adr7.in2[1] --> 17018514836470345542427231951037297019058552084594395047929995072337922306052 +main.escalarMul.segments[0].windows[50].mux.c[1][6], main.escalarMul.segments[0].windows[50].adr7.out[1], main.escalarMul.segments[0].windows[50].adr8.in2[1] --> 11197261130062570787911496129174139030433759530756327476428780873138419962411 +main.escalarMul.segments[0].windows[50].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[50].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[50].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[50].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[50].mux.a20[0] --> 13226827093275685951709885689302665878745908908918640674076347142453788317013 +main.escalarMul.segments[0].windows[50].mux.a20[1] --> 20130825770330294186469506538168453183470367739166328903982022976473782856893 +main.escalarMul.segments[0].windows[50].mux.a2[0] --> 9419119102627959380986665571097280468593884984277501041592875013655048954421 +main.escalarMul.segments[0].windows[50].mux.a2[1] --> 1147343852485515417508321655528511459109073602021109044310756238521172335783 +main.escalarMul.segments[0].windows[50].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[50].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[50].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[50].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[50].mux.a0[0] --> 19518045355013320543120671642905293518131586881335994727894554392926472553205 +main.escalarMul.segments[0].windows[50].mux.a0[1] --> 235637551333818997655634441321361658379843102272479191888452747613300089114 +main.escalarMul.segments[0].windows[50].mux.s10 --> 0 +main.escalarMul.segments[0].windows[50].dbl2.lamda --> 11486333955508007007732792452376854657118437123881905879385900606707090293636 +main.escalarMul.segments[0].windows[50].dbl2.x1_2 --> 7154095514730360890184139296636202482937574277346882624001523711825409662336 +main.escalarMul.segments[0].windows[50].adr3.lamda --> 9901106646606030317351175456345771885150845313148096753887076668303872057687 +main.escalarMul.segments[0].windows[50].adr4.lamda --> 18312472721159899028771121512380148211178006704601977043778527914759277783311 +main.escalarMul.segments[0].windows[50].adr5.lamda --> 13506287830316557685516705033451919542621214176080238335472019689488508871351 +main.escalarMul.segments[0].windows[50].adr6.lamda --> 9346858436081856908561981892754863569400097549117045194207987155702561242290 +main.escalarMul.segments[0].windows[50].adr7.lamda --> 16206766042377991787408773843720390382561276040942194458927896306059029312378 +main.escalarMul.segments[0].windows[50].adr8.lamda --> 2825139126355641265516552647942151076994619559884312836922055625231369832426 +main.escalarMul.segments[0].adders[49].out[0], main.escalarMul.segments[0].adders[50].in1[0] --> 11140059144709239158529511185517135303767925017973541754044308305226851845610 +main.escalarMul.segments[0].adders[49].out[1], main.escalarMul.segments[0].adders[50].in1[1] --> 14176696163422636450107683660115850020117185740236034981555914217464580542938 +main.escalarMul.segments[0].adders[49].lamda --> 11637971543354555582572027324299257161052782916455418141670931412509874043068 +main.escalarMul.segments[0].cadders[49].out[0], main.escalarMul.segments[0].cadders[50].in1[0] --> 9946783230802890244818401261191863071246482327389772485601372647620557766933 +main.escalarMul.segments[0].cadders[49].out[1], main.escalarMul.segments[0].cadders[50].in1[1] --> 14828319201026372218798089806700397395437983112121537275730341511383682339810 +main.escalarMul.segments[0].cadders[49].lamda --> 5877745064678146210447404793403033582689478958574961402368047210247844227524 +main.escalarMul.segments[0].windows[51].out[0], main.escalarMul.segments[0].windows[51].mux.out[0], main.escalarMul.segments[0].adders[50].in2[0] --> 720046314644425616627367442504071198147952802340723417004017648436498151666 +main.escalarMul.segments[0].windows[51].out[1], main.escalarMul.segments[0].windows[51].mux.out[1], main.escalarMul.segments[0].adders[50].in2[1] --> 14858957345680579568026723714715641477180474485693709302376405631984490304875 +main.escalarMul.segments[0].windows[51].out8[0], main.escalarMul.segments[0].windows[51].mux.c[0][7], main.escalarMul.segments[0].windows[51].adr8.out[0], main.escalarMul.segments[0].windows[52].base[0], main.escalarMul.segments[0].windows[52].mux.c[0][0], main.escalarMul.segments[0].windows[52].mux.a[0], main.escalarMul.segments[0].windows[52].dbl2.in[0], main.escalarMul.segments[0].windows[52].adr3.in1[0], main.escalarMul.segments[0].windows[52].adr4.in1[0], main.escalarMul.segments[0].windows[52].adr5.in1[0], main.escalarMul.segments[0].windows[52].adr6.in1[0], main.escalarMul.segments[0].windows[52].adr7.in1[0], main.escalarMul.segments[0].windows[52].adr8.in1[0], main.escalarMul.segments[0].cadders[51].in2[0] --> 17070233460817894350207893438265627214667694687601657081948787335147221387666 +main.escalarMul.segments[0].windows[51].out8[1], main.escalarMul.segments[0].windows[51].mux.c[1][7], main.escalarMul.segments[0].windows[51].adr8.out[1], main.escalarMul.segments[0].windows[52].base[1], main.escalarMul.segments[0].windows[52].mux.c[1][0], main.escalarMul.segments[0].windows[52].mux.a[1], main.escalarMul.segments[0].windows[52].dbl2.in[1], main.escalarMul.segments[0].windows[52].adr3.in1[1], main.escalarMul.segments[0].windows[52].adr4.in1[1], main.escalarMul.segments[0].windows[52].adr5.in1[1], main.escalarMul.segments[0].windows[52].adr6.in1[1], main.escalarMul.segments[0].windows[52].adr7.in1[1], main.escalarMul.segments[0].windows[52].adr8.in1[1], main.escalarMul.segments[0].cadders[51].in2[1] --> 18285358270448133799783021565486730928661919649664715778118258835425282573200 +main.escalarMul.segments[0].windows[51].mux.c[0][1], main.escalarMul.segments[0].windows[51].dbl2.out[0], main.escalarMul.segments[0].windows[51].adr3.in2[0] --> 6844867760188872016231157515536234933597994420187379120300735315976759695157 +main.escalarMul.segments[0].windows[51].mux.c[0][2], main.escalarMul.segments[0].windows[51].adr3.out[0], main.escalarMul.segments[0].windows[51].adr4.in2[0] --> 19138151421439155079198128541994808906147841214998890269239617639384888370363 +main.escalarMul.segments[0].windows[51].mux.c[0][3], main.escalarMul.segments[0].windows[51].adr4.out[0], main.escalarMul.segments[0].windows[51].adr5.in2[0] --> 15327308314777061109546451210082980471882528455484316853283739429481024752584 +main.escalarMul.segments[0].windows[51].mux.c[0][4], main.escalarMul.segments[0].windows[51].adr5.out[0], main.escalarMul.segments[0].windows[51].adr6.in2[0] --> 20821738123758546902016942509047322096903573916196892434833115109027919714660 +main.escalarMul.segments[0].windows[51].mux.c[0][5], main.escalarMul.segments[0].windows[51].adr6.out[0], main.escalarMul.segments[0].windows[51].adr7.in2[0] --> 720046314644425616627367442504071198147952802340723417004017648436498151666 +main.escalarMul.segments[0].windows[51].mux.c[0][6], main.escalarMul.segments[0].windows[51].adr7.out[0], main.escalarMul.segments[0].windows[51].adr8.in2[0] --> 11588676087801522293337631951639805982437655342721515095897605012509901401480 +main.escalarMul.segments[0].windows[51].mux.c[1][1], main.escalarMul.segments[0].windows[51].dbl2.out[1], main.escalarMul.segments[0].windows[51].adr3.in2[1] --> 10884807074228247109639163767797634956424477167725853952645041721434752872325 +main.escalarMul.segments[0].windows[51].mux.c[1][2], main.escalarMul.segments[0].windows[51].adr3.out[1], main.escalarMul.segments[0].windows[51].adr4.in2[1] --> 5663841992000704015430289770563893707176902681417975745720064966087971206221 +main.escalarMul.segments[0].windows[51].mux.c[1][3], main.escalarMul.segments[0].windows[51].adr4.out[1], main.escalarMul.segments[0].windows[51].adr5.in2[1] --> 2094317604775307061736189590719942930077740964446814447759892032830914885003 +main.escalarMul.segments[0].windows[51].mux.c[1][4], main.escalarMul.segments[0].windows[51].adr5.out[1], main.escalarMul.segments[0].windows[51].adr6.in2[1] --> 7160687801468651962429118945833088822522124846900066142678043382474330134282 +main.escalarMul.segments[0].windows[51].mux.c[1][5], main.escalarMul.segments[0].windows[51].adr6.out[1], main.escalarMul.segments[0].windows[51].adr7.in2[1] --> 14858957345680579568026723714715641477180474485693709302376405631984490304875 +main.escalarMul.segments[0].windows[51].mux.c[1][6], main.escalarMul.segments[0].windows[51].adr7.out[1], main.escalarMul.segments[0].windows[51].adr8.in2[1] --> 17451553429296002913372481072305059519797568457975331579875368470571781848077 +main.escalarMul.segments[0].windows[51].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[51].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[51].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[51].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[51].mux.a20[0] --> 3592261355819912603401211589683744922582246972697648292010956196043255026019 +main.escalarMul.segments[0].windows[51].mux.a20[1] --> 6933875005547235066476369208014996899850090432882455954641830125758226014700 +main.escalarMul.segments[0].windows[51].mux.a2[0] --> 12171160070474916219241404082541366430516075809871730348390530322992291926107 +main.escalarMul.segments[0].windows[51].mux.a2[1] --> 18928518137744372614157596484160284709454271285501433738787737971367319913467 +main.escalarMul.segments[0].windows[51].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[51].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[51].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[51].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[51].mux.a0[0] --> 20082532578744516555702024834287554355758860714278251377556354716516940402221 +main.escalarMul.segments[0].windows[51].mux.a0[1] --> 764394538664692539121235560867555754808259205911187205056532123751934155893 +main.escalarMul.segments[0].windows[51].mux.s10 --> 0 +main.escalarMul.segments[0].windows[51].dbl2.lamda --> 18037928303604470136328487004235229966330968229637295227394794690460792311219 +main.escalarMul.segments[0].windows[51].dbl2.x1_2 --> 18010010741644291240417139728064232295529968787097804804083898519588211608535 +main.escalarMul.segments[0].windows[51].adr3.lamda --> 15696126000797949480341828568899678003979816761304830643655797844781854290052 +main.escalarMul.segments[0].windows[51].adr4.lamda --> 8013227945725187034350537127481551943943546434614528591512649896129682305886 +main.escalarMul.segments[0].windows[51].adr5.lamda --> 10463352760495391185375326922365260069353489737791125414793695682430283643534 +main.escalarMul.segments[0].windows[51].adr6.lamda --> 9289058515379780258911960026708865663160282792522205864656474842534950381006 +main.escalarMul.segments[0].windows[51].adr7.lamda --> 10194885545983991078303069438868710957499841143671948345305142750147547333753 +main.escalarMul.segments[0].windows[51].adr8.lamda --> 2984195104458305382530997026195702416823970182264257317380342498288057601458 +main.escalarMul.segments[0].adders[50].out[0], main.escalarMul.segments[0].adders[51].in1[0] --> 2115916355609406702511958724311087763326943826710340173620543652216438037534 +main.escalarMul.segments[0].adders[50].out[1], main.escalarMul.segments[0].adders[51].in1[1] --> 2932039846431045515267857390564343599016806715816324844201796115286930759812 +main.escalarMul.segments[0].adders[50].lamda --> 19403180926789772642638758115190224090427248886149694729138821126979532856412 +main.escalarMul.segments[0].cadders[50].out[0], main.escalarMul.segments[0].cadders[51].in1[0] --> 14575992591703915426022253193055055476114839422639745385758580854834135020360 +main.escalarMul.segments[0].cadders[50].out[1], main.escalarMul.segments[0].cadders[51].in1[1] --> 11040672576826443055495188990280268444188232336370722523993286703345881104422 +main.escalarMul.segments[0].cadders[50].lamda --> 2813244829017189652394037454505321115956413444638144343241309120908769857153 +main.escalarMul.segments[0].windows[52].out[0], main.escalarMul.segments[0].windows[52].mux.out[0], main.escalarMul.segments[0].adders[51].in2[0] --> 19124420661434656860860132351857622366643236681472341277332694856443461332878 +main.escalarMul.segments[0].windows[52].out[1], main.escalarMul.segments[0].windows[52].mux.out[1], main.escalarMul.segments[0].adders[51].in2[1] --> 6087908416622573791869895586328221525215581820907726533229321886657980989677 +main.escalarMul.segments[0].windows[52].out8[0], main.escalarMul.segments[0].windows[52].mux.c[0][7], main.escalarMul.segments[0].windows[52].adr8.out[0], main.escalarMul.segments[0].windows[53].base[0], main.escalarMul.segments[0].windows[53].mux.c[0][0], main.escalarMul.segments[0].windows[53].mux.a[0], main.escalarMul.segments[0].windows[53].dbl2.in[0], main.escalarMul.segments[0].windows[53].adr3.in1[0], main.escalarMul.segments[0].windows[53].adr4.in1[0], main.escalarMul.segments[0].windows[53].adr5.in1[0], main.escalarMul.segments[0].windows[53].adr6.in1[0], main.escalarMul.segments[0].windows[53].adr7.in1[0], main.escalarMul.segments[0].windows[53].adr8.in1[0], main.escalarMul.segments[0].cadders[52].in2[0] --> 17345815486342302889834974463218956158089718666064649892413325301462651479559 +main.escalarMul.segments[0].windows[52].out8[1], main.escalarMul.segments[0].windows[52].mux.c[1][7], main.escalarMul.segments[0].windows[52].adr8.out[1], main.escalarMul.segments[0].windows[53].base[1], main.escalarMul.segments[0].windows[53].mux.c[1][0], main.escalarMul.segments[0].windows[53].mux.a[1], main.escalarMul.segments[0].windows[53].dbl2.in[1], main.escalarMul.segments[0].windows[53].adr3.in1[1], main.escalarMul.segments[0].windows[53].adr4.in1[1], main.escalarMul.segments[0].windows[53].adr5.in1[1], main.escalarMul.segments[0].windows[53].adr6.in1[1], main.escalarMul.segments[0].windows[53].adr7.in1[1], main.escalarMul.segments[0].windows[53].adr8.in1[1], main.escalarMul.segments[0].cadders[52].in2[1] --> 9280317095376613432613491922083532418362938147146891831089931543302031928979 +main.escalarMul.segments[0].windows[52].mux.c[0][1], main.escalarMul.segments[0].windows[52].dbl2.out[0], main.escalarMul.segments[0].windows[52].adr3.in2[0] --> 17786442194773326741387884935574328375287310317336354042013152089168241940024 +main.escalarMul.segments[0].windows[52].mux.c[0][2], main.escalarMul.segments[0].windows[52].adr3.out[0], main.escalarMul.segments[0].windows[52].adr4.in2[0] --> 19124420661434656860860132351857622366643236681472341277332694856443461332878 +main.escalarMul.segments[0].windows[52].mux.c[0][3], main.escalarMul.segments[0].windows[52].adr4.out[0], main.escalarMul.segments[0].windows[52].adr5.in2[0] --> 19641705155780394216487220158319392908843844235499507892201818986910178871353 +main.escalarMul.segments[0].windows[52].mux.c[0][4], main.escalarMul.segments[0].windows[52].adr5.out[0], main.escalarMul.segments[0].windows[52].adr6.in2[0] --> 15322912418897019440504215033832486706692974821550220916246098798390314472437 +main.escalarMul.segments[0].windows[52].mux.c[0][5], main.escalarMul.segments[0].windows[52].adr6.out[0], main.escalarMul.segments[0].windows[52].adr7.in2[0] --> 3978945111584015890508207086439559135213517237694944627789861906224486939774 +main.escalarMul.segments[0].windows[52].mux.c[0][6], main.escalarMul.segments[0].windows[52].adr7.out[0], main.escalarMul.segments[0].windows[52].adr8.in2[0] --> 16211890392423113898218544865770589579037486204354777188326319509425429904675 +main.escalarMul.segments[0].windows[52].mux.c[1][1], main.escalarMul.segments[0].windows[52].dbl2.out[1], main.escalarMul.segments[0].windows[52].adr3.in2[1] --> 15100685518350417284312315101456155409982745386447883281334836039032267413222 +main.escalarMul.segments[0].windows[52].mux.c[1][2], main.escalarMul.segments[0].windows[52].adr3.out[1], main.escalarMul.segments[0].windows[52].adr4.in2[1] --> 6087908416622573791869895586328221525215581820907726533229321886657980989677 +main.escalarMul.segments[0].windows[52].mux.c[1][3], main.escalarMul.segments[0].windows[52].adr4.out[1], main.escalarMul.segments[0].windows[52].adr5.in2[1] --> 1747162267118135334094624623008048622602634852416541122549357895731629055130 +main.escalarMul.segments[0].windows[52].mux.c[1][4], main.escalarMul.segments[0].windows[52].adr5.out[1], main.escalarMul.segments[0].windows[52].adr6.in2[1] --> 7774541727843279849118197773062743819368606493548257606827408845723485519669 +main.escalarMul.segments[0].windows[52].mux.c[1][5], main.escalarMul.segments[0].windows[52].adr6.out[1], main.escalarMul.segments[0].windows[52].adr7.in2[1] --> 14815766546815316618865241798640591969628954318223283397292590703418023275226 +main.escalarMul.segments[0].windows[52].mux.c[1][6], main.escalarMul.segments[0].windows[52].adr7.out[1], main.escalarMul.segments[0].windows[52].adr8.in2[1] --> 19330322624574270785682112844230841524556049633489641762625048535542573193212 +main.escalarMul.segments[0].windows[52].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[52].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[52].mux.a21[0] --> 20723033644748607169308496663603382808917333789349906420394517376314683982643 +main.escalarMul.segments[0].windows[52].mux.a21[1] --> 1864987878717275722230635305069332020085416568282339056988372452010580761449 +main.escalarMul.segments[0].windows[52].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[52].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[52].mux.a2[0] --> 20140921829918400312542727340824134580573644534364598177995515649818901580388 +main.escalarMul.segments[0].windows[52].mux.a2[1] --> 11377426329234421271581581952833287979255051244299576172407354196874011442086 +main.escalarMul.segments[0].windows[52].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[52].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[52].mux.a1[0] --> 2054187200616762510652238913591995151975541993870684195383907521296239945212 +main.escalarMul.segments[0].windows[52].mux.a1[1] --> 9690793018013715214333279766098765685102026571659045098809267237808506912094 +main.escalarMul.segments[0].windows[52].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[52].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[52].mux.s10 --> 0 +main.escalarMul.segments[0].windows[52].dbl2.lamda --> 13830561141201407359329233141598578509959194318006148541955316109462958489459 +main.escalarMul.segments[0].windows[52].dbl2.x1_2 --> 18019483565778482797910709815312726902907903540505991232847311206086558857551 +main.escalarMul.segments[0].windows[52].adr3.lamda --> 8931757354255932497590471951229025004622813307491733039514863318123214523050 +main.escalarMul.segments[0].windows[52].adr4.lamda --> 20379675947518724767122881256160763431631792970890214064584087125279480701423 +main.escalarMul.segments[0].windows[52].adr5.lamda --> 11610210690221986730430486676124217653504590536312566996821437285300551489183 +main.escalarMul.segments[0].windows[52].adr6.lamda --> 19177170588279484082518197399209831096081693079292286666732708603954662707766 +main.escalarMul.segments[0].windows[52].adr7.lamda --> 7228991442123470518815775256518294464885362429717719377717535459508636224062 +main.escalarMul.segments[0].windows[52].adr8.lamda --> 19956339122237674239623874575050272146586389998214264921090193922251223416417 +main.escalarMul.segments[0].adders[51].out[0], main.escalarMul.segments[0].adders[52].in1[0] --> 4797070652736527640727975753157509760270572084284361693864781304009347747142 +main.escalarMul.segments[0].adders[51].out[1], main.escalarMul.segments[0].adders[52].in1[1] --> 5318471931038455851193196993562971034029647323538922345084330462718044736889 +main.escalarMul.segments[0].adders[51].lamda --> 18929786106804620056444200983546709735279471977009204838023496511752131568877 +main.escalarMul.segments[0].cadders[51].out[0], main.escalarMul.segments[0].cadders[52].in1[0] --> 8524365668160151068829308976082950305675504767408715881529137206513264524098 +main.escalarMul.segments[0].cadders[51].out[1], main.escalarMul.segments[0].cadders[52].in1[1] --> 10862462428977084780053253012859734387990750037793361419791697817567725432628 +main.escalarMul.segments[0].cadders[51].lamda --> 16597568242899079079356206300300248856493383767741768068885895796227899847517 +main.escalarMul.segments[0].windows[53].out[0], main.escalarMul.segments[0].windows[53].mux.out[0], main.escalarMul.segments[0].adders[52].in2[0] --> 3813576290130029746100472980926148507657618331761368233286683766617036330130 +main.escalarMul.segments[0].windows[53].out[1], main.escalarMul.segments[0].windows[53].mux.out[1], main.escalarMul.segments[0].adders[52].in2[1] --> 19459697221635554867423090670181276407588815804355084874446252044818052826881 +main.escalarMul.segments[0].windows[53].out8[0], main.escalarMul.segments[0].windows[53].mux.c[0][7], main.escalarMul.segments[0].windows[53].adr8.out[0], main.escalarMul.segments[0].windows[54].base[0], main.escalarMul.segments[0].windows[54].mux.c[0][0], main.escalarMul.segments[0].windows[54].mux.a[0], main.escalarMul.segments[0].windows[54].dbl2.in[0], main.escalarMul.segments[0].windows[54].adr3.in1[0], main.escalarMul.segments[0].windows[54].adr4.in1[0], main.escalarMul.segments[0].windows[54].adr5.in1[0], main.escalarMul.segments[0].windows[54].adr6.in1[0], main.escalarMul.segments[0].windows[54].adr7.in1[0], main.escalarMul.segments[0].windows[54].adr8.in1[0], main.escalarMul.segments[0].cadders[53].in2[0] --> 9988396013418823053952914601429470111092690666705888326699183893137856386604 +main.escalarMul.segments[0].windows[53].out8[1], main.escalarMul.segments[0].windows[53].mux.c[1][7], main.escalarMul.segments[0].windows[53].adr8.out[1], main.escalarMul.segments[0].windows[54].base[1], main.escalarMul.segments[0].windows[54].mux.c[1][0], main.escalarMul.segments[0].windows[54].mux.a[1], main.escalarMul.segments[0].windows[54].dbl2.in[1], main.escalarMul.segments[0].windows[54].adr3.in1[1], main.escalarMul.segments[0].windows[54].adr4.in1[1], main.escalarMul.segments[0].windows[54].adr5.in1[1], main.escalarMul.segments[0].windows[54].adr6.in1[1], main.escalarMul.segments[0].windows[54].adr7.in1[1], main.escalarMul.segments[0].windows[54].adr8.in1[1], main.escalarMul.segments[0].cadders[53].in2[1] --> 5109268028665510257838923791042402461151023674957368682056790112275332056471 +main.escalarMul.segments[0].windows[53].mux.c[0][1], main.escalarMul.segments[0].windows[53].dbl2.out[0], main.escalarMul.segments[0].windows[53].adr3.in2[0] --> 14801982276190067380930312140153476447895737733949662985590241189404117495001 +main.escalarMul.segments[0].windows[53].mux.c[0][2], main.escalarMul.segments[0].windows[53].adr3.out[0], main.escalarMul.segments[0].windows[53].adr4.in2[0] --> 3813576290130029746100472980926148507657618331761368233286683766617036330130 +main.escalarMul.segments[0].windows[53].mux.c[0][3], main.escalarMul.segments[0].windows[53].adr4.out[0], main.escalarMul.segments[0].windows[53].adr5.in2[0] --> 18784282621634472523632353645525167183991142010647219101473652805466512311708 +main.escalarMul.segments[0].windows[53].mux.c[0][4], main.escalarMul.segments[0].windows[53].adr5.out[0], main.escalarMul.segments[0].windows[53].adr6.in2[0] --> 15433404847358793092146907547817520790400554661383657261590589613293392962926 +main.escalarMul.segments[0].windows[53].mux.c[0][5], main.escalarMul.segments[0].windows[53].adr6.out[0], main.escalarMul.segments[0].windows[53].adr7.in2[0] --> 8260439779520464211828734164438597320032176083659121793849965053995071288083 +main.escalarMul.segments[0].windows[53].mux.c[0][6], main.escalarMul.segments[0].windows[53].adr7.out[0], main.escalarMul.segments[0].windows[53].adr8.in2[0] --> 3707111544991975588921901854423501947346865576409161414304396473044626870018 +main.escalarMul.segments[0].windows[53].mux.c[1][1], main.escalarMul.segments[0].windows[53].dbl2.out[1], main.escalarMul.segments[0].windows[53].adr3.in2[1] --> 17747545218872433481099549280871022866172977111416836146710047119937368413606 +main.escalarMul.segments[0].windows[53].mux.c[1][2], main.escalarMul.segments[0].windows[53].adr3.out[1], main.escalarMul.segments[0].windows[53].adr4.in2[1] --> 19459697221635554867423090670181276407588815804355084874446252044818052826881 +main.escalarMul.segments[0].windows[53].mux.c[1][3], main.escalarMul.segments[0].windows[53].adr4.out[1], main.escalarMul.segments[0].windows[53].adr5.in2[1] --> 15828937804255869061274665082411666979575758024661746012803301869567381066070 +main.escalarMul.segments[0].windows[53].mux.c[1][4], main.escalarMul.segments[0].windows[53].adr5.out[1], main.escalarMul.segments[0].windows[53].adr6.in2[1] --> 10095477559255160127424741125333874668420878583129520677455287846019424601877 +main.escalarMul.segments[0].windows[53].mux.c[1][5], main.escalarMul.segments[0].windows[53].adr6.out[1], main.escalarMul.segments[0].windows[53].adr7.in2[1] --> 18129439928697829372963491353756841351949693360253834273862773753013522415367 +main.escalarMul.segments[0].windows[53].mux.c[1][6], main.escalarMul.segments[0].windows[53].adr7.out[1], main.escalarMul.segments[0].windows[53].adr8.in2[1] --> 8481705013852783941053189410976898161669349427942052017225390503660665754436 +main.escalarMul.segments[0].windows[53].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[53].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[53].mux.a21[0] --> 1805945893845455640509495788898788807378411249328785811840448394596849056521 +main.escalarMul.segments[0].windows[53].mux.a21[1] --> 10095090200177957601065255282802554592570957588020372640111986342701028750274 +main.escalarMul.segments[0].windows[53].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[53].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[53].mux.a2[0] --> 19975832232855765424558338829855839720859200395735041712875468498406549978984 +main.escalarMul.segments[0].windows[53].mux.a2[1] --> 815160463878546694811249203250342250057940435982628846365356302717392672898 +main.escalarMul.segments[0].windows[53].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[53].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[53].mux.a1[0] --> 8356003675627002078511904262964467438116264066112752684571562651730193346188 +main.escalarMul.segments[0].windows[53].mux.a1[1] --> 10179380126258941434809598748097743989225877657208193043356320501516020897902 +main.escalarMul.segments[0].windows[53].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[53].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[53].mux.s10 --> 0 +main.escalarMul.segments[0].windows[53].dbl2.lamda --> 4841104017367166996649524588338604201912967392773546722240389382022449265186 +main.escalarMul.segments[0].windows[53].dbl2.x1_2 --> 10806447419800800417446988011277258065480843460311371470289234346716996798039 +main.escalarMul.segments[0].windows[53].adr3.lamda --> 19359030837476106563075511294333009798720063504152800539061443566830650573142 +main.escalarMul.segments[0].windows[53].adr4.lamda --> 12803910042857324266743311707868282951406910415808847053957221099222761100832 +main.escalarMul.segments[0].windows[53].adr5.lamda --> 3840620939847889026795113347165309712549307103415371044302254626252173097937 +main.escalarMul.segments[0].windows[53].adr6.lamda --> 1795095757701890062959732132173365839241618626386693012557844507581525252593 +main.escalarMul.segments[0].windows[53].adr7.lamda --> 19924639617382815490535759940349431142402342921733047058320210654064727996645 +main.escalarMul.segments[0].windows[53].adr8.lamda --> 3384226520233257234300706412102298934788007220253338770579663306240796908645 +main.escalarMul.segments[0].adders[52].out[0], main.escalarMul.segments[0].adders[53].in1[0] --> 12299671679374899777290623368988780458094744998831201258218720891960682156856 +main.escalarMul.segments[0].adders[52].out[1], main.escalarMul.segments[0].adders[53].in1[1] --> 9202718443744336959543563713312651401548967957183970530014849534530434361068 +main.escalarMul.segments[0].adders[52].lamda --> 20330235136484505285332598780407473248124211294737441537389263431092099344084 +main.escalarMul.segments[0].cadders[52].out[0], main.escalarMul.segments[0].cadders[53].in1[0] --> 11947219654371360143389406380590107729849286977555815256019145343376308340621 +main.escalarMul.segments[0].cadders[52].out[1], main.escalarMul.segments[0].cadders[53].in1[1] --> 4669499793401735096286573400909471717642996477766436956299584752848823318435 +main.escalarMul.segments[0].cadders[52].lamda --> 11332737123128339338696751039171850899171540893531369671953473593990439230135 +main.escalarMul.segments[0].windows[54].out[0], main.escalarMul.segments[0].windows[54].mux.out[0], main.escalarMul.segments[0].adders[53].in2[0] --> 5054704149570643890078820995557571375155799638723452602192420459072180861169 +main.escalarMul.segments[0].windows[54].out[1], main.escalarMul.segments[0].windows[54].mux.out[1], main.escalarMul.segments[0].adders[53].in2[1] --> 9281847890671009456216754009118999943936976444207022347142623614368325519748 +main.escalarMul.segments[0].windows[54].out8[0], main.escalarMul.segments[0].windows[54].mux.c[0][7], main.escalarMul.segments[0].windows[54].adr8.out[0], main.escalarMul.segments[0].windows[55].base[0], main.escalarMul.segments[0].windows[55].mux.c[0][0], main.escalarMul.segments[0].windows[55].mux.a[0], main.escalarMul.segments[0].windows[55].dbl2.in[0], main.escalarMul.segments[0].windows[55].adr3.in1[0], main.escalarMul.segments[0].windows[55].adr4.in1[0], main.escalarMul.segments[0].windows[55].adr5.in1[0], main.escalarMul.segments[0].windows[55].adr6.in1[0], main.escalarMul.segments[0].windows[55].adr7.in1[0], main.escalarMul.segments[0].windows[55].adr8.in1[0], main.escalarMul.segments[0].cadders[54].in2[0] --> 17419990744706089273264913232773009154255525723519923862365550393114349713460 +main.escalarMul.segments[0].windows[54].out8[1], main.escalarMul.segments[0].windows[54].mux.c[1][7], main.escalarMul.segments[0].windows[54].adr8.out[1], main.escalarMul.segments[0].windows[55].base[1], main.escalarMul.segments[0].windows[55].mux.c[1][0], main.escalarMul.segments[0].windows[55].mux.a[1], main.escalarMul.segments[0].windows[55].dbl2.in[1], main.escalarMul.segments[0].windows[55].adr3.in1[1], main.escalarMul.segments[0].windows[55].adr4.in1[1], main.escalarMul.segments[0].windows[55].adr5.in1[1], main.escalarMul.segments[0].windows[55].adr6.in1[1], main.escalarMul.segments[0].windows[55].adr7.in1[1], main.escalarMul.segments[0].windows[55].adr8.in1[1], main.escalarMul.segments[0].cadders[54].in2[1] --> 21179020837716796970910373444886407709627157628510783583488939732348584683982 +main.escalarMul.segments[0].windows[54].mux.c[0][1], main.escalarMul.segments[0].windows[54].dbl2.out[0], main.escalarMul.segments[0].windows[54].adr3.in2[0] --> 7175576510862177546581518943558888986966697040948824354453907429283056953348 +main.escalarMul.segments[0].windows[54].mux.c[0][2], main.escalarMul.segments[0].windows[54].adr3.out[0], main.escalarMul.segments[0].windows[54].adr4.in2[0] --> 19831108594774499995176443370128411581403585906114367862176445002999984639894 +main.escalarMul.segments[0].windows[54].mux.c[0][3], main.escalarMul.segments[0].windows[54].adr4.out[0], main.escalarMul.segments[0].windows[54].adr5.in2[0] --> 8996692445985828451846406390590498980594191426334096729777940743070169430809 +main.escalarMul.segments[0].windows[54].mux.c[0][4], main.escalarMul.segments[0].windows[54].adr5.out[0], main.escalarMul.segments[0].windows[54].adr6.in2[0] --> 3488197802948323071668416140761894466999113464466990298754533466310429055452 +main.escalarMul.segments[0].windows[54].mux.c[0][5], main.escalarMul.segments[0].windows[54].adr6.out[0], main.escalarMul.segments[0].windows[54].adr7.in2[0] --> 5054704149570643890078820995557571375155799638723452602192420459072180861169 +main.escalarMul.segments[0].windows[54].mux.c[0][6], main.escalarMul.segments[0].windows[54].adr7.out[0], main.escalarMul.segments[0].windows[54].adr8.in2[0] --> 3368104568323383011649744097969919629446625389558259312182749669103449424347 +main.escalarMul.segments[0].windows[54].mux.c[1][1], main.escalarMul.segments[0].windows[54].dbl2.out[1], main.escalarMul.segments[0].windows[54].adr3.in2[1] --> 20109131132185898129856280581796998870562157780729405210178668275489412355810 +main.escalarMul.segments[0].windows[54].mux.c[1][2], main.escalarMul.segments[0].windows[54].adr3.out[1], main.escalarMul.segments[0].windows[54].adr4.in2[1] --> 20303742934729048025411993314778125040766200188610178500109239972393363866253 +main.escalarMul.segments[0].windows[54].mux.c[1][3], main.escalarMul.segments[0].windows[54].adr4.out[1], main.escalarMul.segments[0].windows[54].adr5.in2[1] --> 3528550180493738259259733622290507205607847860032876027674549787456214354912 +main.escalarMul.segments[0].windows[54].mux.c[1][4], main.escalarMul.segments[0].windows[54].adr5.out[1], main.escalarMul.segments[0].windows[54].adr6.in2[1] --> 11001990621234550355438651823382147712315981904386238610076328551449905038327 +main.escalarMul.segments[0].windows[54].mux.c[1][5], main.escalarMul.segments[0].windows[54].adr6.out[1], main.escalarMul.segments[0].windows[54].adr7.in2[1] --> 9281847890671009456216754009118999943936976444207022347142623614368325519748 +main.escalarMul.segments[0].windows[54].mux.c[1][6], main.escalarMul.segments[0].windows[54].adr7.out[1], main.escalarMul.segments[0].windows[54].adr8.in2[1] --> 10971012466769980406029189048640446949720269431672827896521271324914386750550 +main.escalarMul.segments[0].windows[54].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[54].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[54].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[54].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[54].mux.a20[0] --> 4379325849178966325781800512666258032282679800013526275683163456616551238973 +main.escalarMul.segments[0].windows[54].mux.a20[1] --> 5168237037755346451007151140239530910758224834464781552642621086280148677699 +main.escalarMul.segments[0].windows[54].mux.a2[0] --> 15388044661368775239961907284589699444454787198177136315753553759748381164465 +main.escalarMul.segments[0].windows[54].mux.a2[1] --> 5892722592569040097599728032339745251164958229428869928019538439174572981856 +main.escalarMul.segments[0].windows[54].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[54].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[54].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[54].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[54].mux.a0[0] --> 19075423369282629714875010087386693964422370774658970371452927722721009062361 +main.escalarMul.segments[0].windows[54].mux.a0[1] --> 14999863103520387872017356790754596409411134105772036528121878163214080299339 +main.escalarMul.segments[0].windows[54].mux.s10 --> 0 +main.escalarMul.segments[0].windows[54].dbl2.lamda --> 19196721296137712457662766351993689407477922407490729046204028989223984000507 +main.escalarMul.segments[0].windows[54].dbl2.x1_2 --> 6855603379784193198054617871084089209189478002198402698503553737580940946207 +main.escalarMul.segments[0].windows[54].adr3.lamda --> 19774951047430482281673430177842688270912847300597936918487265203710481508218 +main.escalarMul.segments[0].windows[54].adr4.lamda --> 10377406061796501886521913021563055612310474181487559600487857936782592991893 +main.escalarMul.segments[0].windows[54].adr5.lamda --> 7903056873186163235200717401199928629597691245507348487423125965604871364790 +main.escalarMul.segments[0].windows[54].adr6.lamda --> 14086488465519932099844226921754608667610420946228834783922472165628373566670 +main.escalarMul.segments[0].windows[54].adr7.lamda --> 14345582098085896288531191799441050223777201588656904608271399631098576393425 +main.escalarMul.segments[0].windows[54].adr8.lamda --> 18729312574923554599880824364739136695852524861657331586817704079815563011336 +main.escalarMul.segments[0].adders[53].out[0], main.escalarMul.segments[0].adders[54].in1[0] --> 5266130946190658875671660170854343192793602585051878271089892690082795720907 +main.escalarMul.segments[0].adders[53].out[1], main.escalarMul.segments[0].adders[54].in1[1] --> 169457972753725495662180799347075309840568582061054233092193419403593214620 +main.escalarMul.segments[0].adders[53].lamda --> 15853639538510385830650057986849386753623990867821010668990405055577651577987 +main.escalarMul.segments[0].cadders[53].out[0], main.escalarMul.segments[0].cadders[54].in1[0] --> 6199372979624205852926740482813094619497450447915997722476919604305330006382 +main.escalarMul.segments[0].cadders[53].out[1], main.escalarMul.segments[0].cadders[54].in1[1] --> 12573093842985672706545559645229886608435569853379792082396630494948001793245 +main.escalarMul.segments[0].cadders[53].lamda --> 15527829131112841967609946660976116798626400955714366092832498067819989505565 +main.escalarMul.segments[0].windows[55].out[0], main.escalarMul.segments[0].windows[55].mux.out[0], main.escalarMul.segments[0].adders[54].in2[0] --> 18475601672614124892792431913194915219623212934504563812368565129538194689372 +main.escalarMul.segments[0].windows[55].out[1], main.escalarMul.segments[0].windows[55].mux.out[1], main.escalarMul.segments[0].adders[54].in2[1] --> 8957645859444545062747503061818672788032634937514176446032640111043587821390 +main.escalarMul.segments[0].windows[55].out8[0], main.escalarMul.segments[0].windows[55].mux.c[0][7], main.escalarMul.segments[0].windows[55].adr8.out[0], main.escalarMul.segments[0].windows[56].base[0], main.escalarMul.segments[0].windows[56].mux.c[0][0], main.escalarMul.segments[0].windows[56].mux.a[0], main.escalarMul.segments[0].windows[56].dbl2.in[0], main.escalarMul.segments[0].windows[56].adr3.in1[0], main.escalarMul.segments[0].windows[56].adr4.in1[0], main.escalarMul.segments[0].windows[56].adr5.in1[0], main.escalarMul.segments[0].windows[56].adr6.in1[0], main.escalarMul.segments[0].windows[56].adr7.in1[0], main.escalarMul.segments[0].windows[56].adr8.in1[0], main.escalarMul.segments[0].cadders[55].in2[0] --> 6962357797699103553069993169297245078390798853026893969336373698197161645830 +main.escalarMul.segments[0].windows[55].out8[1], main.escalarMul.segments[0].windows[55].mux.c[1][7], main.escalarMul.segments[0].windows[55].adr8.out[1], main.escalarMul.segments[0].windows[56].base[1], main.escalarMul.segments[0].windows[56].mux.c[1][0], main.escalarMul.segments[0].windows[56].mux.a[1], main.escalarMul.segments[0].windows[56].dbl2.in[1], main.escalarMul.segments[0].windows[56].adr3.in1[1], main.escalarMul.segments[0].windows[56].adr4.in1[1], main.escalarMul.segments[0].windows[56].adr5.in1[1], main.escalarMul.segments[0].windows[56].adr6.in1[1], main.escalarMul.segments[0].windows[56].adr7.in1[1], main.escalarMul.segments[0].windows[56].adr8.in1[1], main.escalarMul.segments[0].cadders[55].in2[1] --> 10962916578042505221357668751391595177143637279475002547638944203876024032843 +main.escalarMul.segments[0].windows[55].mux.c[0][1], main.escalarMul.segments[0].windows[55].dbl2.out[0], main.escalarMul.segments[0].windows[55].adr3.in2[0] --> 3638974230659613162864582609963938709532357509553411043441675902310670519561 +main.escalarMul.segments[0].windows[55].mux.c[0][2], main.escalarMul.segments[0].windows[55].adr3.out[0], main.escalarMul.segments[0].windows[55].adr4.in2[0] --> 13463395239028271678480744605855146362172928304782467381807046490728061714721 +main.escalarMul.segments[0].windows[55].mux.c[0][3], main.escalarMul.segments[0].windows[55].adr4.out[0], main.escalarMul.segments[0].windows[55].adr5.in2[0] --> 493189871222466507710142235809314001304771974691508654298941206329863407035 +main.escalarMul.segments[0].windows[55].mux.c[0][4], main.escalarMul.segments[0].windows[55].adr5.out[0], main.escalarMul.segments[0].windows[55].adr6.in2[0] --> 18475601672614124892792431913194915219623212934504563812368565129538194689372 +main.escalarMul.segments[0].windows[55].mux.c[0][5], main.escalarMul.segments[0].windows[55].adr6.out[0], main.escalarMul.segments[0].windows[55].adr7.in2[0] --> 8708019748041246651720823879105961820533406375400595784344596920404359493308 +main.escalarMul.segments[0].windows[55].mux.c[0][6], main.escalarMul.segments[0].windows[55].adr7.out[0], main.escalarMul.segments[0].windows[55].adr8.in2[0] --> 15503774661746452577106406195799165148154263317960296988635710403147972438193 +main.escalarMul.segments[0].windows[55].mux.c[1][1], main.escalarMul.segments[0].windows[55].dbl2.out[1], main.escalarMul.segments[0].windows[55].adr3.in2[1] --> 19130291968080664859813182238304034863946399584779825339745291614646438058394 +main.escalarMul.segments[0].windows[55].mux.c[1][2], main.escalarMul.segments[0].windows[55].adr3.out[1], main.escalarMul.segments[0].windows[55].adr4.in2[1] --> 20403975367504996033692780252368642745324240298683551679828736267885111204320 +main.escalarMul.segments[0].windows[55].mux.c[1][3], main.escalarMul.segments[0].windows[55].adr4.out[1], main.escalarMul.segments[0].windows[55].adr5.in2[1] --> 20409206930715797856187402631505737822882719635582866988272737540939779700425 +main.escalarMul.segments[0].windows[55].mux.c[1][4], main.escalarMul.segments[0].windows[55].adr5.out[1], main.escalarMul.segments[0].windows[55].adr6.in2[1] --> 8957645859444545062747503061818672788032634937514176446032640111043587821390 +main.escalarMul.segments[0].windows[55].mux.c[1][5], main.escalarMul.segments[0].windows[55].adr6.out[1], main.escalarMul.segments[0].windows[55].adr7.in2[1] --> 15241024892392505937115198236635028572953992509613292647027931929020412204638 +main.escalarMul.segments[0].windows[55].mux.c[1][6], main.escalarMul.segments[0].windows[55].adr7.out[1], main.escalarMul.segments[0].windows[55].adr8.in2[1] --> 9795540061637832444943167671596421011650297809237024945665273556025925759079 +main.escalarMul.segments[0].windows[55].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[55].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[55].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[55].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[55].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[55].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[55].mux.a2[0] --> 1055610927908035619527518680421906065367687210984639950003014736423844975912 +main.escalarMul.segments[0].windows[55].mux.a2[1] --> 9666867893567023314083535362189540166953841709419427206241904565270811633025 +main.escalarMul.segments[0].windows[55].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[55].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[55].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[55].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[55].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[55].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[55].mux.s10 --> 0 +main.escalarMul.segments[0].windows[55].dbl2.lamda --> 9126529237315941378550865539577604002502457400181454191786088219546622410352 +main.escalarMul.segments[0].windows[55].dbl2.x1_2 --> 8464777956637074395512528142212399954123620082158361607065342995379024129440 +main.escalarMul.segments[0].windows[55].adr3.lamda --> 3427728170718914582438591529736270018852938490138255826941337096782222880475 +main.escalarMul.segments[0].windows[55].adr4.lamda --> 8153863584252891157502443461099521255421649362076631801963918170184051858666 +main.escalarMul.segments[0].windows[55].adr5.lamda --> 21309274533735804274570184772799119704943058629444917670292188757566948645357 +main.escalarMul.segments[0].windows[55].adr6.lamda --> 20393277242661892023461941976065784680455963162946239243626264666751316246152 +main.escalarMul.segments[0].windows[55].adr7.lamda --> 11244251354151629850802975163833395820077553924817097229774554872109467142404 +main.escalarMul.segments[0].windows[55].adr8.lamda --> 1994583136317643122646371098539632140264711844392243385818967835906775643661 +main.escalarMul.segments[0].adders[54].out[0], main.escalarMul.segments[0].adders[55].in1[0] --> 6963013774568346442339188813222620220888025354818371283790252690585252726933 +main.escalarMul.segments[0].adders[54].out[1], main.escalarMul.segments[0].adders[55].in1[1] --> 17718564460755544913632390090472844854249153804787046853512542980537911101036 +main.escalarMul.segments[0].adders[54].lamda --> 20331072142183582218750908716453564597457255528264633395297775908697961704261 +main.escalarMul.segments[0].cadders[54].out[0], main.escalarMul.segments[0].cadders[55].in1[0] --> 11429234399959310112269325621730724340522385247677794379569095837802421843054 +main.escalarMul.segments[0].cadders[54].out[1], main.escalarMul.segments[0].cadders[55].in1[1] --> 17485591339853706399634650702026734629963051542596846455746716125982802263010 +main.escalarMul.segments[0].cadders[54].lamda --> 16355871234835973614634295533926393080571907402962349629347009261171804199669 +main.escalarMul.segments[0].windows[56].out[0], main.escalarMul.segments[0].windows[56].mux.out[0], main.escalarMul.segments[0].adders[55].in2[0] --> 3120756903296575740951400052036756325988958656417948002663791655564368662903 +main.escalarMul.segments[0].windows[56].out[1], main.escalarMul.segments[0].windows[56].mux.out[1], main.escalarMul.segments[0].adders[55].in2[1] --> 8956078698091464822263765120868135881364748798752441139559667679739912768966 +main.escalarMul.segments[0].windows[56].out8[0], main.escalarMul.segments[0].windows[56].mux.c[0][7], main.escalarMul.segments[0].windows[56].adr8.out[0], main.escalarMul.segments[0].windows[57].base[0], main.escalarMul.segments[0].windows[57].mux.c[0][0], main.escalarMul.segments[0].windows[57].mux.a[0], main.escalarMul.segments[0].windows[57].dbl2.in[0], main.escalarMul.segments[0].windows[57].adr3.in1[0], main.escalarMul.segments[0].windows[57].adr4.in1[0], main.escalarMul.segments[0].windows[57].adr5.in1[0], main.escalarMul.segments[0].windows[57].adr6.in1[0], main.escalarMul.segments[0].windows[57].adr7.in1[0], main.escalarMul.segments[0].windows[57].adr8.in1[0], main.escalarMul.segments[0].cadders[56].in2[0] --> 18357395285279601495871518289109721037686538765833763594834089824471545416288 +main.escalarMul.segments[0].windows[56].out8[1], main.escalarMul.segments[0].windows[56].mux.c[1][7], main.escalarMul.segments[0].windows[56].adr8.out[1], main.escalarMul.segments[0].windows[57].base[1], main.escalarMul.segments[0].windows[57].mux.c[1][0], main.escalarMul.segments[0].windows[57].mux.a[1], main.escalarMul.segments[0].windows[57].dbl2.in[1], main.escalarMul.segments[0].windows[57].adr3.in1[1], main.escalarMul.segments[0].windows[57].adr4.in1[1], main.escalarMul.segments[0].windows[57].adr5.in1[1], main.escalarMul.segments[0].windows[57].adr6.in1[1], main.escalarMul.segments[0].windows[57].adr7.in1[1], main.escalarMul.segments[0].windows[57].adr8.in1[1], main.escalarMul.segments[0].cadders[56].in2[1] --> 6918865491745060683091473265344873337299122922231037747280883388966440580664 +main.escalarMul.segments[0].windows[56].mux.c[0][1], main.escalarMul.segments[0].windows[56].dbl2.out[0], main.escalarMul.segments[0].windows[56].adr3.in2[0] --> 9866488137255333118041223374817728285658685748274165818580663673078230927402 +main.escalarMul.segments[0].windows[56].mux.c[0][2], main.escalarMul.segments[0].windows[56].adr3.out[0], main.escalarMul.segments[0].windows[56].adr4.in2[0] --> 6272019406023195769478200239342287453826413685966446721044289969632943257408 +main.escalarMul.segments[0].windows[56].mux.c[0][3], main.escalarMul.segments[0].windows[56].adr4.out[0], main.escalarMul.segments[0].windows[56].adr5.in2[0] --> 5750358692866407956359178136726192975790096251252302856257351571418475350554 +main.escalarMul.segments[0].windows[56].mux.c[0][4], main.escalarMul.segments[0].windows[56].adr5.out[0], main.escalarMul.segments[0].windows[56].adr6.in2[0] --> 3120756903296575740951400052036756325988958656417948002663791655564368662903 +main.escalarMul.segments[0].windows[56].mux.c[0][5], main.escalarMul.segments[0].windows[56].adr6.out[0], main.escalarMul.segments[0].windows[56].adr7.in2[0] --> 2819780414419628774519086233907316354214146727413588176132282153987138719294 +main.escalarMul.segments[0].windows[56].mux.c[0][6], main.escalarMul.segments[0].windows[56].adr7.out[0], main.escalarMul.segments[0].windows[56].adr8.in2[0] --> 16720533199197228434233479457856515614095295616605416759117847137028282368603 +main.escalarMul.segments[0].windows[56].mux.c[1][1], main.escalarMul.segments[0].windows[56].dbl2.out[1], main.escalarMul.segments[0].windows[56].adr3.in2[1] --> 8913592049242775120127359933833751161695914308108645335812456003928786872905 +main.escalarMul.segments[0].windows[56].mux.c[1][2], main.escalarMul.segments[0].windows[56].adr3.out[1], main.escalarMul.segments[0].windows[56].adr4.in2[1] --> 10866087240781731139909972311030258248838264453186052422867051148468308121277 +main.escalarMul.segments[0].windows[56].mux.c[1][3], main.escalarMul.segments[0].windows[56].adr4.out[1], main.escalarMul.segments[0].windows[56].adr5.in2[1] --> 18896410641118256155851991029374050084272648836105235153462288248645740921487 +main.escalarMul.segments[0].windows[56].mux.c[1][4], main.escalarMul.segments[0].windows[56].adr5.out[1], main.escalarMul.segments[0].windows[56].adr6.in2[1] --> 8956078698091464822263765120868135881364748798752441139559667679739912768966 +main.escalarMul.segments[0].windows[56].mux.c[1][5], main.escalarMul.segments[0].windows[56].adr6.out[1], main.escalarMul.segments[0].windows[56].adr7.in2[1] --> 13229848404764374692438825276874750782110045130444873611334896212479869490213 +main.escalarMul.segments[0].windows[56].mux.c[1][6], main.escalarMul.segments[0].windows[56].adr7.out[1], main.escalarMul.segments[0].windows[56].adr8.in2[1] --> 18117106963867829962986877356595356738937583361263403673567448048937390579209 +main.escalarMul.segments[0].windows[56].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[56].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[56].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[56].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[56].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[56].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[56].mux.a2[0] --> 18046641977436747410127812627996786336146524203807088377025622143943015512690 +main.escalarMul.segments[0].windows[56].mux.a2[1] --> 19881404991888234823152502114733815792769475919693472935618927662439697231740 +main.escalarMul.segments[0].windows[56].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[56].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[56].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[56].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[56].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[56].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[56].mux.s10 --> 0 +main.escalarMul.segments[0].windows[56].dbl2.lamda --> 15246509712341024937501909210188828695707159440339579424888549816771943235189 +main.escalarMul.segments[0].windows[56].dbl2.x1_2 --> 2153121725162002359415304243031328995234892589724453270974839464633041952650 +main.escalarMul.segments[0].windows[56].adr3.lamda --> 10681608192130536974989634213090865496764657756889693860348012585507773176826 +main.escalarMul.segments[0].windows[56].adr4.lamda --> 3028601349836826050240231488182579248335084053236451718954904915981720275339 +main.escalarMul.segments[0].windows[56].adr5.lamda --> 871432005519447285574710923888757398582970138402329774022400721067771584665 +main.escalarMul.segments[0].windows[56].adr6.lamda --> 4156127127717869791892334778141263087836650097617800143838667704052254234848 +main.escalarMul.segments[0].windows[56].adr7.lamda --> 1295235889476190601682707336396974503044340765139667297158003694721671846948 +main.escalarMul.segments[0].windows[56].adr8.lamda --> 13447316390959102158332655482453000299327162877379905261479721461933749984857 +main.escalarMul.segments[0].adders[55].out[0], main.escalarMul.segments[0].adders[56].in1[0] --> 7877237601314402979914053703878658782484645321553098297526583410663092180720 +main.escalarMul.segments[0].adders[55].out[1], main.escalarMul.segments[0].adders[56].in1[1] --> 13659224451558605767961828158743312279361115042881629255721228928564634173584 +main.escalarMul.segments[0].adders[55].lamda --> 4643672822457405027165697841698022918244995845492840863649575411419630825315 +main.escalarMul.segments[0].cadders[55].out[0], main.escalarMul.segments[0].cadders[56].in1[0] --> 3152353122944611992851257636736371052852362899379883176117984641767369172052 +main.escalarMul.segments[0].cadders[55].out[1], main.escalarMul.segments[0].cadders[56].in1[1] --> 1333551058955275044335037081867158847453930539026878102162411997038028691968 +main.escalarMul.segments[0].cadders[55].lamda --> 9301100276179804880879951047441927054825901323488249912479677449740005004352 +main.escalarMul.segments[0].windows[57].out[0], main.escalarMul.segments[0].windows[57].mux.out[0], main.escalarMul.segments[0].adders[56].in2[0] --> 9891535382419761331884312536315250583048867448472727954627984026359318790835 +main.escalarMul.segments[0].windows[57].out[1], main.escalarMul.segments[0].windows[57].mux.out[1], main.escalarMul.segments[0].adders[56].in2[1] --> 21011281252558700597988670259409761010243542547105504927131293847297049805779 +main.escalarMul.segments[0].windows[57].out8[0], main.escalarMul.segments[0].windows[57].mux.c[0][7], main.escalarMul.segments[0].windows[57].adr8.out[0], main.escalarMul.segments[0].windows[58].base[0], main.escalarMul.segments[0].windows[58].mux.c[0][0], main.escalarMul.segments[0].windows[58].mux.a[0], main.escalarMul.segments[0].windows[58].dbl2.in[0], main.escalarMul.segments[0].windows[58].adr3.in1[0], main.escalarMul.segments[0].windows[58].adr4.in1[0], main.escalarMul.segments[0].windows[58].adr5.in1[0], main.escalarMul.segments[0].windows[58].adr6.in1[0], main.escalarMul.segments[0].windows[58].adr7.in1[0], main.escalarMul.segments[0].windows[58].adr8.in1[0], main.escalarMul.segments[0].cadders[57].in2[0] --> 6585041866608830077684550299364548992160421914696454333497301142249283567684 +main.escalarMul.segments[0].windows[57].out8[1], main.escalarMul.segments[0].windows[57].mux.c[1][7], main.escalarMul.segments[0].windows[57].adr8.out[1], main.escalarMul.segments[0].windows[58].base[1], main.escalarMul.segments[0].windows[58].mux.c[1][0], main.escalarMul.segments[0].windows[58].mux.a[1], main.escalarMul.segments[0].windows[58].dbl2.in[1], main.escalarMul.segments[0].windows[58].adr3.in1[1], main.escalarMul.segments[0].windows[58].adr4.in1[1], main.escalarMul.segments[0].windows[58].adr5.in1[1], main.escalarMul.segments[0].windows[58].adr6.in1[1], main.escalarMul.segments[0].windows[58].adr7.in1[1], main.escalarMul.segments[0].windows[58].adr8.in1[1], main.escalarMul.segments[0].cadders[57].in2[1] --> 5772995659872429254916770115959452581510939629810818777763938055114417412412 +main.escalarMul.segments[0].windows[57].mux.c[0][1], main.escalarMul.segments[0].windows[57].dbl2.out[0], main.escalarMul.segments[0].windows[57].adr3.in2[0] --> 15650780076400805703225847619350172237611186114360053623926754368102665461923 +main.escalarMul.segments[0].windows[57].mux.c[0][2], main.escalarMul.segments[0].windows[57].adr3.out[0], main.escalarMul.segments[0].windows[57].adr4.in2[0] --> 9891535382419761331884312536315250583048867448472727954627984026359318790835 +main.escalarMul.segments[0].windows[57].mux.c[0][3], main.escalarMul.segments[0].windows[57].adr4.out[0], main.escalarMul.segments[0].windows[57].adr5.in2[0] --> 13044872888998048725537217354912039097442753317227671158966688205120325148433 +main.escalarMul.segments[0].windows[57].mux.c[0][4], main.escalarMul.segments[0].windows[57].adr5.out[0], main.escalarMul.segments[0].windows[57].adr6.in2[0] --> 21000253901211751332669486673960273187588449021360637103896192058709963579299 +main.escalarMul.segments[0].windows[57].mux.c[0][5], main.escalarMul.segments[0].windows[57].adr6.out[0], main.escalarMul.segments[0].windows[57].adr7.in2[0] --> 8108355397846613179917244439074434891660480740755527980140742556149493859433 +main.escalarMul.segments[0].windows[57].mux.c[0][6], main.escalarMul.segments[0].windows[57].adr7.out[0], main.escalarMul.segments[0].windows[57].adr8.in2[0] --> 19781467353958167249173207868781595132690951026907598371514264705532795867673 +main.escalarMul.segments[0].windows[57].mux.c[1][1], main.escalarMul.segments[0].windows[57].dbl2.out[1], main.escalarMul.segments[0].windows[57].adr3.in2[1] --> 9964247807988473477844155391590969250066102647450926925053345158121818902780 +main.escalarMul.segments[0].windows[57].mux.c[1][2], main.escalarMul.segments[0].windows[57].adr3.out[1], main.escalarMul.segments[0].windows[57].adr4.in2[1] --> 21011281252558700597988670259409761010243542547105504927131293847297049805779 +main.escalarMul.segments[0].windows[57].mux.c[1][3], main.escalarMul.segments[0].windows[57].adr4.out[1], main.escalarMul.segments[0].windows[57].adr5.in2[1] --> 3759427481299004795958225681491411171083609549726188661391413953706023671613 +main.escalarMul.segments[0].windows[57].mux.c[1][4], main.escalarMul.segments[0].windows[57].adr5.out[1], main.escalarMul.segments[0].windows[57].adr6.in2[1] --> 2314580878707467363401023833708805634359180248943741153246605972616742756145 +main.escalarMul.segments[0].windows[57].mux.c[1][5], main.escalarMul.segments[0].windows[57].adr6.out[1], main.escalarMul.segments[0].windows[57].adr7.in2[1] --> 8437562903826648223457619026244933893381387982371327197881605333273934100328 +main.escalarMul.segments[0].windows[57].mux.c[1][6], main.escalarMul.segments[0].windows[57].adr7.out[1], main.escalarMul.segments[0].windows[57].adr8.in2[1] --> 21490878877502407998418333702528469289316308566806734092937383068777173671372 +main.escalarMul.segments[0].windows[57].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[57].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[57].mux.a21[0] --> 7247073355606256080490926947615792399740173322907996907824178444935058913827 +main.escalarMul.segments[0].windows[57].mux.a21[1] --> 5083882237981300720120112874754775982012708692988525759840366637829821690112 +main.escalarMul.segments[0].windows[57].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[57].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[57].mux.a2[0] --> 2642858615932149836797968384850552149901910255526873509062102234238418163011 +main.escalarMul.segments[0].windows[57].mux.a2[1] --> 17283958258801681902555956313621207385608421727128737749663926770226110671098 +main.escalarMul.segments[0].windows[57].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[57].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[57].mux.a1[0] --> 13422382968979435058259199992462804633910693083054998703492098388463581870164 +main.escalarMul.segments[0].windows[57].mux.a1[1] --> 14092415760813639914897196994064887672944419624874467179850410458330609225115 +main.escalarMul.segments[0].windows[57].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[57].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[57].mux.s10 --> 0 +main.escalarMul.segments[0].windows[57].dbl2.lamda --> 2646579367343116581951908395018875844358051952490278264875236552998353900896 +main.escalarMul.segments[0].windows[57].dbl2.x1_2 --> 18421829014100853023278335648767041467842247889416482751748611700188237451956 +main.escalarMul.segments[0].windows[57].adr3.lamda --> 20870354187091716804078934894721988418916926768009039678928931165389478901084 +main.escalarMul.segments[0].windows[57].adr4.lamda --> 3642216552758500407441164760558809688034524698970145208738830987867139791504 +main.escalarMul.segments[0].windows[57].adr5.lamda --> 17218392875767025569263538764867685124474380102747376783011095060529415033410 +main.escalarMul.segments[0].windows[57].adr6.lamda --> 16934729943076028726781786596404907712664033039977651761495707711527780010662 +main.escalarMul.segments[0].windows[57].adr7.lamda --> 4727997302430827679826852280391767801230508784976950458221710316913586468607 +main.escalarMul.segments[0].windows[57].adr8.lamda --> 2058426403934908439663582472618552769635106971851008396651655734923551564763 +main.escalarMul.segments[0].adders[56].out[0], main.escalarMul.segments[0].adders[57].in1[0] --> 6916610688559783617115076047691144331496567017341375856068764668534456158437 +main.escalarMul.segments[0].adders[56].out[1], main.escalarMul.segments[0].adders[57].in1[1] --> 9483948194836687994033763638171210793090575295349814779095353885007911947194 +main.escalarMul.segments[0].adders[56].lamda --> 7117640678513261723737547447003905489442684071985029493707577275653386681453 +main.escalarMul.segments[0].cadders[56].out[0], main.escalarMul.segments[0].cadders[57].in1[0] --> 14829978879186724855583846083246563954445402237768805621921151489199573565824 +main.escalarMul.segments[0].cadders[56].out[1], main.escalarMul.segments[0].cadders[57].in1[1] --> 15709785915569130010310005131031179538857870715578428375441232644245218189252 +main.escalarMul.segments[0].cadders[56].lamda --> 21505937818841586719693249737507233624224365293712068656324730877262758516791 +main.escalarMul.segments[0].windows[58].out[0], main.escalarMul.segments[0].windows[58].mux.out[0], main.escalarMul.segments[0].adders[57].in2[0] --> 14993242400935716441143417859082315903822050591417148894538790551041471094282 +main.escalarMul.segments[0].windows[58].out[1], main.escalarMul.segments[0].windows[58].mux.out[1], main.escalarMul.segments[0].adders[57].in2[1] --> 7517994957636895429616499929930398285257925740548781276456897860185997801195 +main.escalarMul.segments[0].windows[58].out8[0], main.escalarMul.segments[0].windows[58].mux.c[0][7], main.escalarMul.segments[0].windows[58].adr8.out[0], main.escalarMul.segments[0].windows[59].base[0], main.escalarMul.segments[0].windows[59].mux.c[0][0], main.escalarMul.segments[0].windows[59].mux.a[0], main.escalarMul.segments[0].windows[59].dbl2.in[0], main.escalarMul.segments[0].windows[59].adr3.in1[0], main.escalarMul.segments[0].windows[59].adr4.in1[0], main.escalarMul.segments[0].windows[59].adr5.in1[0], main.escalarMul.segments[0].windows[59].adr6.in1[0], main.escalarMul.segments[0].windows[59].adr7.in1[0], main.escalarMul.segments[0].windows[59].adr8.in1[0], main.escalarMul.segments[0].cadders[58].in2[0] --> 10313928531041599919580780086497612770814699699959764885304049983270236207946 +main.escalarMul.segments[0].windows[58].out8[1], main.escalarMul.segments[0].windows[58].mux.c[1][7], main.escalarMul.segments[0].windows[58].adr8.out[1], main.escalarMul.segments[0].windows[59].base[1], main.escalarMul.segments[0].windows[59].mux.c[1][0], main.escalarMul.segments[0].windows[59].mux.a[1], main.escalarMul.segments[0].windows[59].dbl2.in[1], main.escalarMul.segments[0].windows[59].adr3.in1[1], main.escalarMul.segments[0].windows[59].adr4.in1[1], main.escalarMul.segments[0].windows[59].adr5.in1[1], main.escalarMul.segments[0].windows[59].adr6.in1[1], main.escalarMul.segments[0].windows[59].adr7.in1[1], main.escalarMul.segments[0].windows[59].adr8.in1[1], main.escalarMul.segments[0].cadders[58].in2[1] --> 17171624692736409442738937338431666077788085190681890782841055767497170199737 +main.escalarMul.segments[0].windows[58].mux.c[0][1], main.escalarMul.segments[0].windows[58].dbl2.out[0], main.escalarMul.segments[0].windows[58].adr3.in2[0] --> 16640145258284298981233917132114745313667206002526900104797934449298677021966 +main.escalarMul.segments[0].windows[58].mux.c[0][2], main.escalarMul.segments[0].windows[58].adr3.out[0], main.escalarMul.segments[0].windows[58].adr4.in2[0] --> 14993242400935716441143417859082315903822050591417148894538790551041471094282 +main.escalarMul.segments[0].windows[58].mux.c[0][3], main.escalarMul.segments[0].windows[58].adr4.out[0], main.escalarMul.segments[0].windows[58].adr5.in2[0] --> 21060539196543320202790908287515882401033639978805120847906424852703880873125 +main.escalarMul.segments[0].windows[58].mux.c[0][4], main.escalarMul.segments[0].windows[58].adr5.out[0], main.escalarMul.segments[0].windows[58].adr6.in2[0] --> 17790969558192309426824410349751849469744741931461045304427754317098057650483 +main.escalarMul.segments[0].windows[58].mux.c[0][5], main.escalarMul.segments[0].windows[58].adr6.out[0], main.escalarMul.segments[0].windows[58].adr7.in2[0] --> 1585654397086013950020354294978389035809725545078474359256504646585458441008 +main.escalarMul.segments[0].windows[58].mux.c[0][6], main.escalarMul.segments[0].windows[58].adr7.out[0], main.escalarMul.segments[0].windows[58].adr8.in2[0] --> 15591210442696638557617425637729621209106207402706656814966640293304556173634 +main.escalarMul.segments[0].windows[58].mux.c[1][1], main.escalarMul.segments[0].windows[58].dbl2.out[1], main.escalarMul.segments[0].windows[58].adr3.in2[1] --> 21797109310340252092033689136418484415167354816094720956717539734643301036824 +main.escalarMul.segments[0].windows[58].mux.c[1][2], main.escalarMul.segments[0].windows[58].adr3.out[1], main.escalarMul.segments[0].windows[58].adr4.in2[1] --> 7517994957636895429616499929930398285257925740548781276456897860185997801195 +main.escalarMul.segments[0].windows[58].mux.c[1][3], main.escalarMul.segments[0].windows[58].adr4.out[1], main.escalarMul.segments[0].windows[58].adr5.in2[1] --> 4756256538131926398554590882171538790066372623397398541589062673956172083011 +main.escalarMul.segments[0].windows[58].mux.c[1][4], main.escalarMul.segments[0].windows[58].adr5.out[1], main.escalarMul.segments[0].windows[58].adr6.in2[1] --> 1437812985346574245459498289002148329500010462828535386057911136706624603874 +main.escalarMul.segments[0].windows[58].mux.c[1][5], main.escalarMul.segments[0].windows[58].adr6.out[1], main.escalarMul.segments[0].windows[58].adr7.in2[1] --> 49368848415852670636300924690124153130087914194084024330627745144256855788 +main.escalarMul.segments[0].windows[58].mux.c[1][6], main.escalarMul.segments[0].windows[58].adr7.out[1], main.escalarMul.segments[0].windows[58].adr8.in2[1] --> 20008272845918995992181429157987784817452167582664870789519920113095321691392 +main.escalarMul.segments[0].windows[58].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[58].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[58].mux.a21[0] --> 11280283222016717989580553473517279916248201194940951293195600753990119492170 +main.escalarMul.segments[0].windows[58].mux.a21[1] --> 16825460562807955572022201055014690784205171009098372904769049171317116698735 +main.escalarMul.segments[0].windows[58].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[58].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[58].mux.a2[0] --> 11205927691583479349139860050387300477584320016764590970930453174848774082799 +main.escalarMul.segments[0].windows[58].mux.a2[1] --> 17553060197313420212789133918299970836537435233433750951992177268168015687079 +main.escalarMul.segments[0].windows[58].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[58].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[58].mux.a1[0] --> 8408200534326886363458867559717766911661628676720694561041489408792187526598 +main.escalarMul.segments[0].windows[58].mux.a1[1] --> 1744999297764466174699729813970945703746986110737962498692959805071580388783 +main.escalarMul.segments[0].windows[58].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[58].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[58].mux.s10 --> 0 +main.escalarMul.segments[0].windows[58].dbl2.lamda --> 19366721234856347865272953348372996308269006770747748054301715391171456067806 +main.escalarMul.segments[0].windows[58].dbl2.x1_2 --> 9297570191130916690646172384877780916391304282067087742645091382798119799494 +main.escalarMul.segments[0].windows[58].adr3.lamda --> 8876663059134614731029158245318944910205062280458843077715946465553461661443 +main.escalarMul.segments[0].windows[58].adr4.lamda --> 18623634400204280448191457794642582000220328237296594541114781086994636906076 +main.escalarMul.segments[0].windows[58].adr5.lamda --> 3306413535706443752152803986419996867160663808549034263666689126391283099846 +main.escalarMul.segments[0].windows[58].adr6.lamda --> 12065766918824101902692735046388221911766963961830389781664824058740024653471 +main.escalarMul.segments[0].windows[58].adr7.lamda --> 14734376630139847247780878869326442038212952068123427048407080870130788835744 +main.escalarMul.segments[0].windows[58].adr8.lamda --> 8994870096943592718100769758834164697768892662234401175589690382405887628578 +main.escalarMul.segments[0].adders[57].out[0], main.escalarMul.segments[0].adders[58].in1[0] --> 17945254745676572997369045888723224264155985448580292253150642451162673723829 +main.escalarMul.segments[0].adders[57].out[1], main.escalarMul.segments[0].adders[58].in1[1] --> 3487312342917288654225713944148007176028684858093554710503058493390081196683 +main.escalarMul.segments[0].adders[57].lamda --> 11423941206149483158460605508934798254885693089720585034493248578196350857348 +main.escalarMul.segments[0].cadders[57].out[0], main.escalarMul.segments[0].cadders[58].in1[0] --> 12652050154604077635125230482122530420515589593103395681370598728176465345882 +main.escalarMul.segments[0].cadders[57].out[1], main.escalarMul.segments[0].cadders[58].in1[1] --> 3082504402458295320788530753888821041871922689640544283151088132049023439862 +main.escalarMul.segments[0].cadders[57].lamda --> 12105545144589561283884521168925047856355977066672250385611568407484265686926 +main.escalarMul.segments[0].windows[59].out[0], main.escalarMul.segments[0].windows[59].mux.out[0], main.escalarMul.segments[0].adders[58].in2[0] --> 10313928531041599919580780086497612770814699699959764885304049983270236207946 +main.escalarMul.segments[0].windows[59].out[1], main.escalarMul.segments[0].windows[59].mux.out[1], main.escalarMul.segments[0].adders[58].in2[1] --> 17171624692736409442738937338431666077788085190681890782841055767497170199737 +main.escalarMul.segments[0].windows[59].out8[0], main.escalarMul.segments[0].windows[59].mux.c[0][7], main.escalarMul.segments[0].windows[59].adr8.out[0], main.escalarMul.segments[0].windows[60].base[0], main.escalarMul.segments[0].windows[60].mux.c[0][0], main.escalarMul.segments[0].windows[60].mux.a[0], main.escalarMul.segments[0].windows[60].dbl2.in[0], main.escalarMul.segments[0].windows[60].adr3.in1[0], main.escalarMul.segments[0].windows[60].adr4.in1[0], main.escalarMul.segments[0].windows[60].adr5.in1[0], main.escalarMul.segments[0].windows[60].adr6.in1[0], main.escalarMul.segments[0].windows[60].adr7.in1[0], main.escalarMul.segments[0].windows[60].adr8.in1[0], main.escalarMul.segments[0].cadders[59].in2[0] --> 5992244087226941970490489341668089482510701425533366805000882384372646729747 +main.escalarMul.segments[0].windows[59].out8[1], main.escalarMul.segments[0].windows[59].mux.c[1][7], main.escalarMul.segments[0].windows[59].adr8.out[1], main.escalarMul.segments[0].windows[60].base[1], main.escalarMul.segments[0].windows[60].mux.c[1][0], main.escalarMul.segments[0].windows[60].mux.a[1], main.escalarMul.segments[0].windows[60].dbl2.in[1], main.escalarMul.segments[0].windows[60].adr3.in1[1], main.escalarMul.segments[0].windows[60].adr4.in1[1], main.escalarMul.segments[0].windows[60].adr5.in1[1], main.escalarMul.segments[0].windows[60].adr6.in1[1], main.escalarMul.segments[0].windows[60].adr7.in1[1], main.escalarMul.segments[0].windows[60].adr8.in1[1], main.escalarMul.segments[0].cadders[59].in2[1] --> 6703029912137418605828761781957957850202796609131533668762623335302553089182 +main.escalarMul.segments[0].windows[59].mux.c[0][1], main.escalarMul.segments[0].windows[59].dbl2.out[0], main.escalarMul.segments[0].windows[59].adr3.in2[0] --> 16778222960616803854330315750842942524558644451686672002102703226527153743108 +main.escalarMul.segments[0].windows[59].mux.c[0][2], main.escalarMul.segments[0].windows[59].adr3.out[0], main.escalarMul.segments[0].windows[59].adr4.in2[0] --> 2543719619457822141239439783580360322017725324909918807870635014452388022744 +main.escalarMul.segments[0].windows[59].mux.c[0][3], main.escalarMul.segments[0].windows[59].adr4.out[0], main.escalarMul.segments[0].windows[59].adr5.in2[0] --> 15346830830697316047182724831881650814013800170019469198886096580209601835562 +main.escalarMul.segments[0].windows[59].mux.c[0][4], main.escalarMul.segments[0].windows[59].adr5.out[0], main.escalarMul.segments[0].windows[59].adr6.in2[0] --> 5120803507974465770037078604129676358769595079073064012118502127767797622380 +main.escalarMul.segments[0].windows[59].mux.c[0][5], main.escalarMul.segments[0].windows[59].adr6.out[0], main.escalarMul.segments[0].windows[59].adr7.in2[0] --> 16538518892759288942038806437309875381983953336440500461825022049313921716473 +main.escalarMul.segments[0].windows[59].mux.c[0][6], main.escalarMul.segments[0].windows[59].adr7.out[0], main.escalarMul.segments[0].windows[59].adr8.in2[0] --> 3292828220639543118759150531689903673856743015473236123491380753229715391129 +main.escalarMul.segments[0].windows[59].mux.c[1][1], main.escalarMul.segments[0].windows[59].dbl2.out[1], main.escalarMul.segments[0].windows[59].adr3.in2[1] --> 13208464375481566732944785386688659045738039411608883020769362471406613618522 +main.escalarMul.segments[0].windows[59].mux.c[1][2], main.escalarMul.segments[0].windows[59].adr3.out[1], main.escalarMul.segments[0].windows[59].adr4.in2[1] --> 260374155506980844841242995579059127830362592806647799911925956778567084635 +main.escalarMul.segments[0].windows[59].mux.c[1][3], main.escalarMul.segments[0].windows[59].adr4.out[1], main.escalarMul.segments[0].windows[59].adr5.in2[1] --> 11578628006698103261829856900764126772586291978380680988692835417989238626752 +main.escalarMul.segments[0].windows[59].mux.c[1][4], main.escalarMul.segments[0].windows[59].adr5.out[1], main.escalarMul.segments[0].windows[59].adr6.in2[1] --> 6035863225800052188909675858205865847916539461111121257025422099294197323868 +main.escalarMul.segments[0].windows[59].mux.c[1][5], main.escalarMul.segments[0].windows[59].adr6.out[1], main.escalarMul.segments[0].windows[59].adr7.in2[1] --> 8595442297659311919989422854449706610959007240974132996424611796464828166445 +main.escalarMul.segments[0].windows[59].mux.c[1][6], main.escalarMul.segments[0].windows[59].adr7.out[1], main.escalarMul.segments[0].windows[59].adr8.in2[1] --> 13508679274787819695058296966565303583698344683016732965314415230420582618166 +main.escalarMul.segments[0].windows[59].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[59].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[59].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[59].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[59].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[59].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[59].mux.a2[0] --> 16695117848772141072702704262889338676503259779529333470512656331073369910051 +main.escalarMul.segments[0].windows[59].mux.a2[1] --> 10752481404902917968417144265031474858676818670845264817882570518372835619748 +main.escalarMul.segments[0].windows[59].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[59].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[59].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[59].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[59].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[59].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[59].mux.s10 --> 0 +main.escalarMul.segments[0].windows[59].dbl2.lamda --> 9711845841615670903109863658407957139631205739171122351524488004221745075232 +main.escalarMul.segments[0].windows[59].dbl2.x1_2 --> 36783098983493747974698377368093401058497418264012760308852757698494919128 +main.escalarMul.segments[0].windows[59].adr3.lamda --> 1477244159469385426352658383123402128341366469421588883407666951488671351553 +main.escalarMul.segments[0].windows[59].adr4.lamda --> 9432154350203232948020265486744915683836385960998735770622478210165049285979 +main.escalarMul.segments[0].windows[59].adr5.lamda --> 17508720926224814248429914559020412328461083930542443535344490772511064779115 +main.escalarMul.segments[0].windows[59].adr6.lamda --> 4705115653895861284770572681727834325597534167997157821180632996023510771521 +main.escalarMul.segments[0].windows[59].adr7.lamda --> 5972656299570227412006173050218015544749970355000567375094164315258681466661 +main.escalarMul.segments[0].windows[59].adr8.lamda --> 18158299685490433505936836216517907300100049498831918600928906056304823016313 +main.escalarMul.segments[0].adders[58].out[0], main.escalarMul.segments[0].adders[59].in1[0] --> 18436709125211601100498219070048393069140453199947549238026663906690268623031 +main.escalarMul.segments[0].adders[58].out[1], main.escalarMul.segments[0].adders[59].in1[1] --> 16825660528456356801563217718726986804758160922283572237251566830340623728499 +main.escalarMul.segments[0].adders[58].lamda --> 19979571316759376365510578686374138868407076798406282277824744135750888004322 +main.escalarMul.segments[0].cadders[58].out[0], main.escalarMul.segments[0].cadders[59].in1[0] --> 15753698886631483783634174105491432255873738563954342594649218747100366112482 +main.escalarMul.segments[0].cadders[58].out[1], main.escalarMul.segments[0].cadders[59].in1[1] --> 18990266997188352655472206020465127493177341760296445743448901591354314351939 +main.escalarMul.segments[0].cadders[58].lamda --> 6651430931294548663459631766184616997450012811931607925527172449807199229942 +main.escalarMul.segments[0].windows[60].out[0], main.escalarMul.segments[0].windows[60].mux.out[0], main.escalarMul.segments[0].adders[59].in2[0] --> 18734579245169837924348794301319769968750968466696212082370833924381469954518 +main.escalarMul.segments[0].windows[60].out[1], main.escalarMul.segments[0].windows[60].mux.out[1], main.escalarMul.segments[0].adders[59].in2[1] --> 19479777878052892593844723804967520113098070127404568714864056627907009213904 +main.escalarMul.segments[0].windows[60].out8[0], main.escalarMul.segments[0].windows[60].mux.c[0][7], main.escalarMul.segments[0].windows[60].adr8.out[0], main.escalarMul.segments[0].windows[61].base[0], main.escalarMul.segments[0].windows[61].mux.c[0][0], main.escalarMul.segments[0].windows[61].mux.a[0], main.escalarMul.segments[0].windows[61].dbl2.in[0], main.escalarMul.segments[0].windows[61].adr3.in1[0], main.escalarMul.segments[0].windows[61].adr4.in1[0], main.escalarMul.segments[0].windows[61].adr5.in1[0], main.escalarMul.segments[0].windows[61].adr6.in1[0], main.escalarMul.segments[0].windows[61].adr7.in1[0], main.escalarMul.segments[0].windows[61].adr8.in1[0], main.escalarMul.segments[0].cadders[60].in2[0] --> 6795703984376533723424054740169908136577862544485545036440332498857437476918 +main.escalarMul.segments[0].windows[60].out8[1], main.escalarMul.segments[0].windows[60].mux.c[1][7], main.escalarMul.segments[0].windows[60].adr8.out[1], main.escalarMul.segments[0].windows[61].base[1], main.escalarMul.segments[0].windows[61].mux.c[1][0], main.escalarMul.segments[0].windows[61].mux.a[1], main.escalarMul.segments[0].windows[61].dbl2.in[1], main.escalarMul.segments[0].windows[61].adr3.in1[1], main.escalarMul.segments[0].windows[61].adr4.in1[1], main.escalarMul.segments[0].windows[61].adr5.in1[1], main.escalarMul.segments[0].windows[61].adr6.in1[1], main.escalarMul.segments[0].windows[61].adr7.in1[1], main.escalarMul.segments[0].windows[61].adr8.in1[1], main.escalarMul.segments[0].cadders[60].in2[1] --> 9311438131379307042977168226204963880571685810540914338667639381497138476677 +main.escalarMul.segments[0].windows[60].mux.c[0][1], main.escalarMul.segments[0].windows[60].dbl2.out[0], main.escalarMul.segments[0].windows[60].adr3.in2[0] --> 803477306862173770618828315688957424130517793630447021969102512070604471038 +main.escalarMul.segments[0].windows[60].mux.c[0][2], main.escalarMul.segments[0].windows[60].adr3.out[0], main.escalarMul.segments[0].windows[60].adr4.in2[0] --> 20054103441820829698967577116886061818005575620767917629375964816226584097078 +main.escalarMul.segments[0].windows[60].mux.c[0][3], main.escalarMul.segments[0].windows[60].adr4.out[0], main.escalarMul.segments[0].windows[60].adr5.in2[0] --> 7035723278912771295131670828798551295243793881272149335913403807101087932814 +main.escalarMul.segments[0].windows[60].mux.c[0][4], main.escalarMul.segments[0].windows[60].adr5.out[0], main.escalarMul.segments[0].windows[60].adr6.in2[0] --> 2535452584696670059369911410982174772697906630007012713764150581520113895605 +main.escalarMul.segments[0].windows[60].mux.c[0][5], main.escalarMul.segments[0].windows[60].adr6.out[0], main.escalarMul.segments[0].windows[60].adr7.in2[0] --> 832609375496965542087810290078562907209450741071921874225939022069090210201 +main.escalarMul.segments[0].windows[60].mux.c[0][6], main.escalarMul.segments[0].windows[60].adr7.out[0], main.escalarMul.segments[0].windows[60].adr8.in2[0] --> 18734579245169837924348794301319769968750968466696212082370833924381469954518 +main.escalarMul.segments[0].windows[60].mux.c[1][1], main.escalarMul.segments[0].windows[60].dbl2.out[1], main.escalarMul.segments[0].windows[60].adr3.in2[1] --> 4686691714097175980061707941610895375653495004003479499518158548992894194685 +main.escalarMul.segments[0].windows[60].mux.c[1][2], main.escalarMul.segments[0].windows[60].adr3.out[1], main.escalarMul.segments[0].windows[60].adr4.in2[1] --> 20968846313518381303375306874814510329020689648865399798383763794117527003066 +main.escalarMul.segments[0].windows[60].mux.c[1][3], main.escalarMul.segments[0].windows[60].adr4.out[1], main.escalarMul.segments[0].windows[60].adr5.in2[1] --> 17737457867279517428929397495969864897568986666299577327493135509432927155235 +main.escalarMul.segments[0].windows[60].mux.c[1][4], main.escalarMul.segments[0].windows[60].adr5.out[1], main.escalarMul.segments[0].windows[60].adr6.in2[1] --> 19921513021569393593441167408037348831603782662771284698778105155542592042371 +main.escalarMul.segments[0].windows[60].mux.c[1][5], main.escalarMul.segments[0].windows[60].adr6.out[1], main.escalarMul.segments[0].windows[60].adr7.in2[1] --> 2824815241854048083799142635198445881845760747840414117604745437660345381111 +main.escalarMul.segments[0].windows[60].mux.c[1][6], main.escalarMul.segments[0].windows[60].adr7.out[1], main.escalarMul.segments[0].windows[60].adr8.in2[1] --> 19479777878052892593844723804967520113098070127404568714864056627907009213904 +main.escalarMul.segments[0].windows[60].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[60].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[60].mux.a21[0] --> 2137267305879280136501795115119622860558187641454648544231600911007418691582 +main.escalarMul.segments[0].windows[60].mux.a21[1] --> 7180691326941811525103417049330893891224758825315452230163015200125251753266 +main.escalarMul.segments[0].windows[60].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[60].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[60].mux.a2[0] --> 18431451369309003311125827814571360378735569604889680252461472383723275661475 +main.escalarMul.segments[0].windows[60].mux.a2[1] --> 13218483109431974987612405626079390981400986053639751030015481820240038953189 +main.escalarMul.segments[0].windows[60].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[60].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[60].mux.a1[0] --> 14061859354593887728477087775217972335494874195234550824375082431853937367331 +main.escalarMul.segments[0].windows[60].mux.a1[1] --> 14265816401380962697546545092856552478817893039733866129621140458814973913884 +main.escalarMul.segments[0].windows[60].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[60].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[60].mux.s10 --> 0 +main.escalarMul.segments[0].windows[60].dbl2.lamda --> 12037611623862681402317213573106692108124378981699405629679444947608752399915 +main.escalarMul.segments[0].windows[60].dbl2.x1_2 --> 12642664202312799157252130526556028057663901161612296005804212275676922252866 +main.escalarMul.segments[0].windows[60].adr3.lamda --> 19146035019630232923914482995025725487589196277369657035471159023404953591941 +main.escalarMul.segments[0].windows[60].adr4.lamda --> 19082516745723010860327013456766410965494773586442680090125076336670305297448 +main.escalarMul.segments[0].windows[60].adr5.lamda --> 7378849249497923708803961971027188702960981814610304420586846770652059449843 +main.escalarMul.segments[0].windows[60].adr6.lamda --> 9182371464135210914180322315979306745826222795274637475253979599470604820465 +main.escalarMul.segments[0].windows[60].adr7.lamda --> 17123764810310149122615724087832831417324119734793013557594296801553934192504 +main.escalarMul.segments[0].windows[60].adr8.lamda --> 16814093682054784814055224327742094726753919161737289190700247567853716898572 +main.escalarMul.segments[0].adders[59].out[0], main.escalarMul.segments[0].adders[60].in1[0] --> 13324362411719328364119105808455336361808894059028020831046707179811404668634 +main.escalarMul.segments[0].adders[59].out[1], main.escalarMul.segments[0].adders[60].in1[1] --> 11779460393796815813926031967172963634125595521388937941794894522635306222568 +main.escalarMul.segments[0].adders[59].lamda --> 5742265015219691244432937078301158131687286289398185575266443322040429703386 +main.escalarMul.segments[0].cadders[59].out[0], main.escalarMul.segments[0].cadders[60].in1[0] --> 1805894179945113403917311908324059451575075796151951895378147696602328581328 +main.escalarMul.segments[0].cadders[59].out[1], main.escalarMul.segments[0].cadders[60].in1[1] --> 7630719841927730716828151660076680043725681549326562934821705192168855826821 +main.escalarMul.segments[0].cadders[59].lamda --> 19371249250303896512712641256656282548536181839088270962511743260320575265442 +main.escalarMul.segments[0].windows[61].out[0], main.escalarMul.segments[0].windows[61].mux.out[0], main.escalarMul.segments[0].adders[60].in2[0] --> 4272501336072143167923589994438962458802082025003612624649907079493113348341 +main.escalarMul.segments[0].windows[61].out[1], main.escalarMul.segments[0].windows[61].mux.out[1], main.escalarMul.segments[0].adders[60].in2[1] --> 12584573815148725355992023549251186528133668504189227342588014597148039477661 +main.escalarMul.segments[0].windows[61].out8[0], main.escalarMul.segments[0].windows[61].mux.c[0][7], main.escalarMul.segments[0].windows[61].adr8.out[0], main.escalarMul.segments[0].windows[62].base[0], main.escalarMul.segments[0].windows[62].mux.c[0][0], main.escalarMul.segments[0].windows[62].mux.a[0], main.escalarMul.segments[0].windows[62].dbl2.in[0], main.escalarMul.segments[0].windows[62].adr3.in1[0], main.escalarMul.segments[0].windows[62].adr4.in1[0], main.escalarMul.segments[0].windows[62].adr5.in1[0], main.escalarMul.segments[0].windows[62].adr6.in1[0], main.escalarMul.segments[0].windows[62].adr7.in1[0], main.escalarMul.segments[0].windows[62].adr8.in1[0], main.escalarMul.segments[0].cadders[61].in2[0] --> 19404533351691263817328611457435070650571101238222362540550320229613115000855 +main.escalarMul.segments[0].windows[61].out8[1], main.escalarMul.segments[0].windows[61].mux.c[1][7], main.escalarMul.segments[0].windows[61].adr8.out[1], main.escalarMul.segments[0].windows[62].base[1], main.escalarMul.segments[0].windows[62].mux.c[1][0], main.escalarMul.segments[0].windows[62].mux.a[1], main.escalarMul.segments[0].windows[62].dbl2.in[1], main.escalarMul.segments[0].windows[62].adr3.in1[1], main.escalarMul.segments[0].windows[62].adr4.in1[1], main.escalarMul.segments[0].windows[62].adr5.in1[1], main.escalarMul.segments[0].windows[62].adr6.in1[1], main.escalarMul.segments[0].windows[62].adr7.in1[1], main.escalarMul.segments[0].windows[62].adr8.in1[1], main.escalarMul.segments[0].cadders[61].in2[1] --> 21624481935383982479469816130990722573491914943676482054563037368353996193394 +main.escalarMul.segments[0].windows[61].mux.c[0][1], main.escalarMul.segments[0].windows[61].dbl2.out[0], main.escalarMul.segments[0].windows[61].adr3.in2[0] --> 5626164527131231428712389562266929776294608636093789878404830548088525031825 +main.escalarMul.segments[0].windows[61].mux.c[0][2], main.escalarMul.segments[0].windows[61].adr3.out[0], main.escalarMul.segments[0].windows[61].adr4.in2[0] --> 17150087292053546346650955668356998886067699342530173717957532116510725758519 +main.escalarMul.segments[0].windows[61].mux.c[0][3], main.escalarMul.segments[0].windows[61].adr4.out[0], main.escalarMul.segments[0].windows[61].adr5.in2[0] --> 20526208147371841628952837024449105018865136304380845623208983863393217461165 +main.escalarMul.segments[0].windows[61].mux.c[0][4], main.escalarMul.segments[0].windows[61].adr5.out[0], main.escalarMul.segments[0].windows[61].adr6.in2[0] --> 4272501336072143167923589994438962458802082025003612624649907079493113348341 +main.escalarMul.segments[0].windows[61].mux.c[0][5], main.escalarMul.segments[0].windows[61].adr6.out[0], main.escalarMul.segments[0].windows[61].adr7.in2[0] --> 3011326632852937815732709591372868228049353898321931386294046888761507943354 +main.escalarMul.segments[0].windows[61].mux.c[0][6], main.escalarMul.segments[0].windows[61].adr7.out[0], main.escalarMul.segments[0].windows[61].adr8.in2[0] --> 14693170163113887534755989814140159234784388784047817436259275195660594806143 +main.escalarMul.segments[0].windows[61].mux.c[1][1], main.escalarMul.segments[0].windows[61].dbl2.out[1], main.escalarMul.segments[0].windows[61].adr3.in2[1] --> 5756911918154389500461229684579581692138842517624843604143571825381772918689 +main.escalarMul.segments[0].windows[61].mux.c[1][2], main.escalarMul.segments[0].windows[61].adr3.out[1], main.escalarMul.segments[0].windows[61].adr4.in2[1] --> 9390170437176998838056707094668851048389972965853357936178828702813042430994 +main.escalarMul.segments[0].windows[61].mux.c[1][3], main.escalarMul.segments[0].windows[61].adr4.out[1], main.escalarMul.segments[0].windows[61].adr5.in2[1] --> 6585820928955344732265662372206097279564786741427093654783942301385943377671 +main.escalarMul.segments[0].windows[61].mux.c[1][4], main.escalarMul.segments[0].windows[61].adr5.out[1], main.escalarMul.segments[0].windows[61].adr6.in2[1] --> 12584573815148725355992023549251186528133668504189227342588014597148039477661 +main.escalarMul.segments[0].windows[61].mux.c[1][5], main.escalarMul.segments[0].windows[61].adr6.out[1], main.escalarMul.segments[0].windows[61].adr7.in2[1] --> 12773366459014216846981061575579874836072649345075574859016096187882206197289 +main.escalarMul.segments[0].windows[61].mux.c[1][6], main.escalarMul.segments[0].windows[61].adr7.out[1], main.escalarMul.segments[0].windows[61].adr8.in2[1] --> 14457510425115209892800911164952263347867006615932410867382948319175382050445 +main.escalarMul.segments[0].windows[61].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[61].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[61].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[61].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[61].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[61].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[61].mux.a2[0] --> 19365040223534884666745940999526329410772583880934101931907778767211484367040 +main.escalarMul.segments[0].windows[61].mux.a2[1] --> 3273135683769418313014855323046222647561982693648313003920375215650901000984 +main.escalarMul.segments[0].windows[61].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[61].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[61].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[61].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[61].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[61].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[61].mux.s10 --> 0 +main.escalarMul.segments[0].windows[61].dbl2.lamda --> 11259944608525618712633795931722040835424630982183943243887062728033250686852 +main.escalarMul.segments[0].windows[61].dbl2.x1_2 --> 9528849630678104960379885016801179566521210998761269527234666136471040909044 +main.escalarMul.segments[0].windows[61].adr3.lamda --> 1977665784512505054309245997073164473076456961491846922208209055367759090907 +main.escalarMul.segments[0].windows[61].adr4.lamda --> 16263848917352827952396595730815814759249203462685489909951003110422140428160 +main.escalarMul.segments[0].windows[61].adr5.lamda --> 3212842432400441155927545675420771375526677930455957292911158696297964908042 +main.escalarMul.segments[0].windows[61].adr6.lamda --> 2887153602850831933773209404442344982610341086697721706193062168174486068865 +main.escalarMul.segments[0].windows[61].adr7.lamda --> 8620754405305955108840524375550289058589985631949252910338692234770742317634 +main.escalarMul.segments[0].windows[61].adr8.lamda --> 20378359831646293436300012115743471988056020813547758780472929467534781186444 +main.escalarMul.segments[0].adders[60].out[0], main.escalarMul.segments[0].adders[61].in1[0] --> 3683892493040643174101867846239379162282698617460036205776773149351737471087 +main.escalarMul.segments[0].adders[60].out[1], main.escalarMul.segments[0].adders[61].in1[1] --> 15286717170325428355196645528633128899454575540947509314520342710302734792786 +main.escalarMul.segments[0].adders[60].lamda --> 7525375721487342469797505907085383237399876778872730305905349984598824784595 +main.escalarMul.segments[0].cadders[60].out[0], main.escalarMul.segments[0].cadders[61].in1[0] --> 13562271645993300428788361237258466753452707477893628826745325261623672687722 +main.escalarMul.segments[0].cadders[60].out[1], main.escalarMul.segments[0].cadders[61].in1[1] --> 18439559100348863116104915421348955932109754793341813596071780421700864981948 +main.escalarMul.segments[0].cadders[60].lamda --> 2378382171348888881879223615996712757860281047439384297961475384022334318303 +main.escalarMul.segments[0].windows[62].out[0], main.escalarMul.segments[0].windows[62].mux.out[0], main.escalarMul.segments[0].adders[61].in2[0] --> 19404533351691263817328611457435070650571101238222362540550320229613115000855 +main.escalarMul.segments[0].windows[62].out[1], main.escalarMul.segments[0].windows[62].mux.out[1], main.escalarMul.segments[0].adders[61].in2[1] --> 21624481935383982479469816130990722573491914943676482054563037368353996193394 +main.escalarMul.segments[0].windows[62].out8[0], main.escalarMul.segments[0].windows[62].mux.c[0][7], main.escalarMul.segments[0].windows[62].adr8.out[0], main.escalarMul.segments[0].windows[63].base[0], main.escalarMul.segments[0].windows[63].mux.c[0][0], main.escalarMul.segments[0].windows[63].mux.a[0], main.escalarMul.segments[0].windows[63].dbl2.in[0], main.escalarMul.segments[0].windows[63].adr3.in1[0], main.escalarMul.segments[0].windows[63].adr4.in1[0], main.escalarMul.segments[0].windows[63].adr5.in1[0], main.escalarMul.segments[0].windows[63].adr6.in1[0], main.escalarMul.segments[0].windows[63].adr7.in1[0], main.escalarMul.segments[0].windows[63].adr8.in1[0], main.escalarMul.segments[0].cadders[62].in2[0] --> 18992835946914359796663466920999703569998155437115013439712941357561973832805 +main.escalarMul.segments[0].windows[62].out8[1], main.escalarMul.segments[0].windows[62].mux.c[1][7], main.escalarMul.segments[0].windows[62].adr8.out[1], main.escalarMul.segments[0].windows[63].base[1], main.escalarMul.segments[0].windows[63].mux.c[1][0], main.escalarMul.segments[0].windows[63].mux.a[1], main.escalarMul.segments[0].windows[63].dbl2.in[1], main.escalarMul.segments[0].windows[63].adr3.in1[1], main.escalarMul.segments[0].windows[63].adr4.in1[1], main.escalarMul.segments[0].windows[63].adr5.in1[1], main.escalarMul.segments[0].windows[63].adr6.in1[1], main.escalarMul.segments[0].windows[63].adr7.in1[1], main.escalarMul.segments[0].windows[63].adr8.in1[1], main.escalarMul.segments[0].cadders[62].in2[1] --> 12933093695702794977753532902784941677972126704074355588101955540615106245712 +main.escalarMul.segments[0].windows[62].mux.c[0][1], main.escalarMul.segments[0].windows[62].dbl2.out[0], main.escalarMul.segments[0].windows[62].adr3.in2[0] --> 12729611638615566079341177427757085932222832133833334179348705913606995766557 +main.escalarMul.segments[0].windows[62].mux.c[0][2], main.escalarMul.segments[0].windows[62].adr3.out[0], main.escalarMul.segments[0].windows[62].adr4.in2[0] --> 1744772835246218988176089694173971875389995089533811553354002100709455867335 +main.escalarMul.segments[0].windows[62].mux.c[0][3], main.escalarMul.segments[0].windows[62].adr4.out[0], main.escalarMul.segments[0].windows[62].adr5.in2[0] --> 7211070426530706066326053962237969177826618983553471109246853154749700636486 +main.escalarMul.segments[0].windows[62].mux.c[0][4], main.escalarMul.segments[0].windows[62].adr5.out[0], main.escalarMul.segments[0].windows[62].adr6.in2[0] --> 20444441060741180508488650823137017553967662957363608518054256425810429063136 +main.escalarMul.segments[0].windows[62].mux.c[0][5], main.escalarMul.segments[0].windows[62].adr6.out[0], main.escalarMul.segments[0].windows[62].adr7.in2[0] --> 6218890523029698546160769451735066422262786538953393954555080959723406864197 +main.escalarMul.segments[0].windows[62].mux.c[0][6], main.escalarMul.segments[0].windows[62].adr7.out[0], main.escalarMul.segments[0].windows[62].adr8.in2[0] --> 21154467285374596247835833880836066693434819557490677251406793473402481525677 +main.escalarMul.segments[0].windows[62].mux.c[1][1], main.escalarMul.segments[0].windows[62].dbl2.out[1], main.escalarMul.segments[0].windows[62].adr3.in2[1] --> 18725179623251505844785504640665187693243990040630651762961290316032822308149 +main.escalarMul.segments[0].windows[62].mux.c[1][2], main.escalarMul.segments[0].windows[62].adr3.out[1], main.escalarMul.segments[0].windows[62].adr4.in2[1] --> 7321637423807943025656758453897819260666635507420782775068608419445785383667 +main.escalarMul.segments[0].windows[62].mux.c[1][3], main.escalarMul.segments[0].windows[62].adr4.out[1], main.escalarMul.segments[0].windows[62].adr5.in2[1] --> 15414880416678384670101523506745073958359711015184824735767772383304639310876 +main.escalarMul.segments[0].windows[62].mux.c[1][4], main.escalarMul.segments[0].windows[62].adr5.out[1], main.escalarMul.segments[0].windows[62].adr6.in2[1] --> 12434058620115741741037377524261299544443847786843454734145961760606696724223 +main.escalarMul.segments[0].windows[62].mux.c[1][5], main.escalarMul.segments[0].windows[62].adr6.out[1], main.escalarMul.segments[0].windows[62].adr7.in2[1] --> 11325973958686207208784990991245005890518759896866908005988739506778871665714 +main.escalarMul.segments[0].windows[62].mux.c[1][6], main.escalarMul.segments[0].windows[62].adr7.out[1], main.escalarMul.segments[0].windows[62].adr8.in2[1] --> 17197076762255173971470839742763926467609068596140550726964870397718730489100 +main.escalarMul.segments[0].windows[62].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[62].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[62].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[62].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[62].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[62].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[62].mux.a2[0] --> 1039907709049916691160039365701946903396561719141245977503936196197314062281 +main.escalarMul.segments[0].windows[62].mux.a2[1] --> 12697819556571034483813967138527852059500297243583007023281128578828509026446 +main.escalarMul.segments[0].windows[62].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[62].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[62].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[62].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[62].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[62].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[62].mux.s10 --> 0 +main.escalarMul.segments[0].windows[62].dbl2.lamda --> 16843887361098732136312543199407934299127765931338277342217270827177399026610 +main.escalarMul.segments[0].windows[62].dbl2.x1_2 --> 37506870109594929666774806592158938544563463755081984060228817795722213639 +main.escalarMul.segments[0].windows[62].adr3.lamda --> 20813295903672209347483451614372152596429229669444155273209871660550545610766 +main.escalarMul.segments[0].windows[62].adr4.lamda --> 18278312213289498954408102616014131759478416355707351779372351937545814192616 +main.escalarMul.segments[0].windows[62].adr5.lamda --> 4135231125681527365802527695862462394323248911604651115895325692286027802024 +main.escalarMul.segments[0].windows[62].adr6.lamda --> 2190847063094084913474820432222300209972007355990838408440445303379651921859 +main.escalarMul.segments[0].windows[62].adr7.lamda --> 19304965496528178638478517014426164194656117828535917841703033659864237904449 +main.escalarMul.segments[0].windows[62].adr8.lamda --> 3770883781193734936065093044016034143387816157856159080270544083209750273979 +main.escalarMul.segments[0].adders[61].out[0], main.escalarMul.segments[0].adders[62].in1[0] --> 5846702256607226509539051267647041405928119590159544299094765183667495440891 +main.escalarMul.segments[0].adders[61].out[1], main.escalarMul.segments[0].adders[62].in1[1] --> 18090757137080787749141817954244212495264320852637079267937014598214730558465 +main.escalarMul.segments[0].adders[61].lamda --> 14744525882091216260025811047958196505061114654769431563782525021962440796803 +main.escalarMul.segments[0].cadders[61].out[0], main.escalarMul.segments[0].cadders[62].in1[0] --> 6645397977689929518335580654433114958352711957939946376297847542404845294851 +main.escalarMul.segments[0].cadders[61].out[1], main.escalarMul.segments[0].cadders[62].in1[1] --> 2772055220636352010605026403385915601422139812964932002270826754577524046318 +main.escalarMul.segments[0].cadders[61].lamda --> 1176762266504874939684490182202365758735774673613248552592288862862789643320 +main.escalarMul.segments[0].windows[63].out[0], main.escalarMul.segments[0].windows[63].mux.out[0], main.escalarMul.segments[0].adders[62].in2[0] --> 18992835946914359796663466920999703569998155437115013439712941357561973832805 +main.escalarMul.segments[0].windows[63].out[1], main.escalarMul.segments[0].windows[63].mux.out[1], main.escalarMul.segments[0].adders[62].in2[1] --> 12933093695702794977753532902784941677972126704074355588101955540615106245712 +main.escalarMul.segments[0].windows[63].out8[0], main.escalarMul.segments[0].windows[63].mux.c[0][7], main.escalarMul.segments[0].windows[63].adr8.out[0], main.escalarMul.segments[0].windows[64].base[0], main.escalarMul.segments[0].windows[64].mux.c[0][0], main.escalarMul.segments[0].windows[64].mux.a[0], main.escalarMul.segments[0].windows[64].dbl2.in[0], main.escalarMul.segments[0].windows[64].adr3.in1[0], main.escalarMul.segments[0].windows[64].adr4.in1[0], main.escalarMul.segments[0].windows[64].adr5.in1[0], main.escalarMul.segments[0].windows[64].adr6.in1[0], main.escalarMul.segments[0].windows[64].adr7.in1[0], main.escalarMul.segments[0].windows[64].adr8.in1[0], main.escalarMul.segments[0].cadders[63].in2[0] --> 19095748133807712975919141063954950255153521365929462414486479051086503255593 +main.escalarMul.segments[0].windows[63].out8[1], main.escalarMul.segments[0].windows[63].mux.c[1][7], main.escalarMul.segments[0].windows[63].adr8.out[1], main.escalarMul.segments[0].windows[64].base[1], main.escalarMul.segments[0].windows[64].mux.c[1][0], main.escalarMul.segments[0].windows[64].mux.a[1], main.escalarMul.segments[0].windows[64].dbl2.in[1], main.escalarMul.segments[0].windows[64].adr3.in1[1], main.escalarMul.segments[0].windows[64].adr4.in1[1], main.escalarMul.segments[0].windows[64].adr5.in1[1], main.escalarMul.segments[0].windows[64].adr6.in1[1], main.escalarMul.segments[0].windows[64].adr7.in1[1], main.escalarMul.segments[0].windows[64].adr8.in1[1], main.escalarMul.segments[0].cadders[63].in2[1] --> 12282452453517772815635508545529992664843189154979485861694697130811721248948 +main.escalarMul.segments[0].windows[63].mux.c[0][1], main.escalarMul.segments[0].windows[63].dbl2.out[0], main.escalarMul.segments[0].windows[63].adr3.in2[0] --> 18791839543233001455182438911126544945725465574478768852220090522902073949073 +main.escalarMul.segments[0].windows[63].mux.c[0][2], main.escalarMul.segments[0].windows[63].adr3.out[0], main.escalarMul.segments[0].windows[63].adr4.in2[0] --> 19565381699633966704467281315390719271061476924695553005427966568043778880861 +main.escalarMul.segments[0].windows[63].mux.c[0][3], main.escalarMul.segments[0].windows[63].adr4.out[0], main.escalarMul.segments[0].windows[63].adr5.in2[0] --> 1510700816093604300754951019408422041784631374128848788068868531817781304356 +main.escalarMul.segments[0].windows[63].mux.c[0][4], main.escalarMul.segments[0].windows[63].adr5.out[0], main.escalarMul.segments[0].windows[63].adr6.in2[0] --> 7439499954198255323365719526130323330344484675107316373736971623888129360860 +main.escalarMul.segments[0].windows[63].mux.c[0][5], main.escalarMul.segments[0].windows[63].adr6.out[0], main.escalarMul.segments[0].windows[63].adr7.in2[0] --> 8111718818399317626676632702335336835901858887260847749758978458619904894162 +main.escalarMul.segments[0].windows[63].mux.c[0][6], main.escalarMul.segments[0].windows[63].adr7.out[0], main.escalarMul.segments[0].windows[63].adr8.in2[0] --> 20184038737816548848923445460081514728744332037933323611731981034844973053957 +main.escalarMul.segments[0].windows[63].mux.c[1][1], main.escalarMul.segments[0].windows[63].dbl2.out[1], main.escalarMul.segments[0].windows[63].adr3.in2[1] --> 19948284351547018156185925064748883489506079133283404261317393688781917794008 +main.escalarMul.segments[0].windows[63].mux.c[1][2], main.escalarMul.segments[0].windows[63].adr3.out[1], main.escalarMul.segments[0].windows[63].adr4.in2[1] --> 13059868025384327661183026006204397631288692082626298284006746153805580192173 +main.escalarMul.segments[0].windows[63].mux.c[1][3], main.escalarMul.segments[0].windows[63].adr4.out[1], main.escalarMul.segments[0].windows[63].adr5.in2[1] --> 10459716590803708179042884390114643962940307191962211710951941538239970006571 +main.escalarMul.segments[0].windows[63].mux.c[1][4], main.escalarMul.segments[0].windows[63].adr5.out[1], main.escalarMul.segments[0].windows[63].adr6.in2[1] --> 5258874222243729181823616227931922065941000030918869944316454851573768349023 +main.escalarMul.segments[0].windows[63].mux.c[1][5], main.escalarMul.segments[0].windows[63].adr6.out[1], main.escalarMul.segments[0].windows[63].adr7.in2[1] --> 11447882147580941811644685168103356991949597359824872798102730176254761028812 +main.escalarMul.segments[0].windows[63].mux.c[1][6], main.escalarMul.segments[0].windows[63].adr7.out[1], main.escalarMul.segments[0].windows[63].adr8.in2[1] --> 6837199847226162934821697829513210414666327592817072847604141131006402338151 +main.escalarMul.segments[0].windows[63].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[63].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[63].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[63].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[63].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[63].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[63].mux.a2[0] --> 10334906879123170748948658350387894848894693638408337277722234452901964023672 +main.escalarMul.segments[0].windows[63].mux.a2[1] --> 14214023398380209426316489070404255476517237727260548699912703497534470598928 +main.escalarMul.segments[0].windows[63].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[63].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[63].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[63].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[63].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[63].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[63].mux.s10 --> 0 +main.escalarMul.segments[0].windows[63].dbl2.lamda --> 13438505197804206415386973235951269439035367255692579379406907083334607544118 +main.escalarMul.segments[0].windows[63].dbl2.x1_2 --> 3782886460498362066591690455682401325969855395154463037200369901678715112908 +main.escalarMul.segments[0].windows[63].adr3.lamda --> 6546684597138650259333155330864252074999000813132447393834983693649998452825 +main.escalarMul.segments[0].windows[63].adr4.lamda --> 3011489730392350086226375697465353769799801466683032022970921961827728557966 +main.escalarMul.segments[0].windows[63].adr5.lamda --> 1877501890187141860625310952729476567106348334223149894059045840747324343790 +main.escalarMul.segments[0].windows[63].adr6.lamda --> 7856620550838518992185497840795243828055968723879037369910274384078186572277 +main.escalarMul.segments[0].windows[63].adr7.lamda --> 9172505432751452312178627618213454400012576160434496878607514124337348754558 +main.escalarMul.segments[0].windows[63].adr8.lamda --> 18110271289319880354039464107504277111949059824610445265391371325981041427012 +main.escalarMul.segments[0].adders[62].out[0], main.escalarMul.segments[0].adders[63].in1[0] --> 16749555681013627335103798900368510390360404838461865257442874573336813636919 +main.escalarMul.segments[0].adders[62].out[1], main.escalarMul.segments[0].adders[63].in1[1] --> 19018671580822727431694189466212878368518310342290999554213100584961418911030 +main.escalarMul.segments[0].adders[62].lamda --> 8470582560543129928195431129773878553273620252703218086015397907159459478786 +main.escalarMul.segments[0].cadders[62].out[0], main.escalarMul.segments[0].cadders[63].in1[0] --> 11520678050085237331480307483113354880147466804394930629587141081704880539325 +main.escalarMul.segments[0].cadders[62].out[1], main.escalarMul.segments[0].cadders[63].in1[1] --> 19332111643867752325016446187127467314358357086987817289533173669333370966197 +main.escalarMul.segments[0].cadders[62].lamda --> 2419873422387796428038419807250790963850477927442157560828442657639469188433 +main.escalarMul.segments[0].windows[64].out[0], main.escalarMul.segments[0].windows[64].mux.out[0], main.escalarMul.segments[0].adders[63].in2[0] --> 3954620118579589723518593257536417581847800779009237361396038923165283472933 +main.escalarMul.segments[0].windows[64].out[1], main.escalarMul.segments[0].windows[64].mux.out[1], main.escalarMul.segments[0].adders[63].in2[1] --> 6822992941884663352420139415536602649477434152563577089654607144095902990724 +main.escalarMul.segments[0].windows[64].out8[0], main.escalarMul.segments[0].windows[64].mux.c[0][7], main.escalarMul.segments[0].windows[64].adr8.out[0], main.escalarMul.segments[0].windows[65].base[0], main.escalarMul.segments[0].windows[65].mux.c[0][0], main.escalarMul.segments[0].windows[65].mux.a[0], main.escalarMul.segments[0].windows[65].dbl2.in[0], main.escalarMul.segments[0].windows[65].adr3.in1[0], main.escalarMul.segments[0].windows[65].adr4.in1[0], main.escalarMul.segments[0].windows[65].adr5.in1[0], main.escalarMul.segments[0].windows[65].adr6.in1[0], main.escalarMul.segments[0].windows[65].adr7.in1[0], main.escalarMul.segments[0].windows[65].adr8.in1[0], main.escalarMul.segments[0].cadders[64].in2[0] --> 3954620118579589723518593257536417581847800779009237361396038923165283472933 +main.escalarMul.segments[0].windows[64].out8[1], main.escalarMul.segments[0].windows[64].mux.c[1][7], main.escalarMul.segments[0].windows[64].adr8.out[1], main.escalarMul.segments[0].windows[65].base[1], main.escalarMul.segments[0].windows[65].mux.c[1][0], main.escalarMul.segments[0].windows[65].mux.a[1], main.escalarMul.segments[0].windows[65].dbl2.in[1], main.escalarMul.segments[0].windows[65].adr3.in1[1], main.escalarMul.segments[0].windows[65].adr4.in1[1], main.escalarMul.segments[0].windows[65].adr5.in1[1], main.escalarMul.segments[0].windows[65].adr6.in1[1], main.escalarMul.segments[0].windows[65].adr7.in1[1], main.escalarMul.segments[0].windows[65].adr8.in1[1], main.escalarMul.segments[0].cadders[64].in2[1] --> 6822992941884663352420139415536602649477434152563577089654607144095902990724 +main.escalarMul.segments[0].windows[64].mux.c[0][1], main.escalarMul.segments[0].windows[64].dbl2.out[0], main.escalarMul.segments[0].windows[64].adr3.in2[0] --> 18180895413302463308957471968317042526007155857302319512476680122050142156501 +main.escalarMul.segments[0].windows[64].mux.c[0][2], main.escalarMul.segments[0].windows[64].adr3.out[0], main.escalarMul.segments[0].windows[64].adr4.in2[0] --> 4461133640998122873373470198717097553634808269068696231464389511889317494030 +main.escalarMul.segments[0].windows[64].mux.c[0][3], main.escalarMul.segments[0].windows[64].adr4.out[0], main.escalarMul.segments[0].windows[64].adr5.in2[0] --> 287585674244380460678092423961145962114807869777702296361361253543369381536 +main.escalarMul.segments[0].windows[64].mux.c[0][4], main.escalarMul.segments[0].windows[64].adr5.out[0], main.escalarMul.segments[0].windows[64].adr6.in2[0] --> 21135939038313413163358948686597308663336176625231143943889115494098563135119 +main.escalarMul.segments[0].windows[64].mux.c[0][5], main.escalarMul.segments[0].windows[64].adr6.out[0], main.escalarMul.segments[0].windows[64].adr7.in2[0] --> 3507423347733739054283669227734840730673355868864321101814213721284412300387 +main.escalarMul.segments[0].windows[64].mux.c[0][6], main.escalarMul.segments[0].windows[64].adr7.out[0], main.escalarMul.segments[0].windows[64].adr8.in2[0] --> 15969604148551310733173196904808206285976911420267726663224370919658352770970 +main.escalarMul.segments[0].windows[64].mux.c[1][1], main.escalarMul.segments[0].windows[64].dbl2.out[1], main.escalarMul.segments[0].windows[64].adr3.in2[1] --> 1314713328065488548722140464623872179296516158010538041664182604676047766081 +main.escalarMul.segments[0].windows[64].mux.c[1][2], main.escalarMul.segments[0].windows[64].adr3.out[1], main.escalarMul.segments[0].windows[64].adr4.in2[1] --> 2512239201971738287883212807761950789188778611117624294144369284560714821677 +main.escalarMul.segments[0].windows[64].mux.c[1][3], main.escalarMul.segments[0].windows[64].adr4.out[1], main.escalarMul.segments[0].windows[64].adr5.in2[1] --> 167030664686329643178865383188502437658560388371297245538137847013781767702 +main.escalarMul.segments[0].windows[64].mux.c[1][4], main.escalarMul.segments[0].windows[64].adr5.out[1], main.escalarMul.segments[0].windows[64].adr6.in2[1] --> 486866568587840802923895151736847958758372745879714068715509747175593522060 +main.escalarMul.segments[0].windows[64].mux.c[1][5], main.escalarMul.segments[0].windows[64].adr6.out[1], main.escalarMul.segments[0].windows[64].adr7.in2[1] --> 20305973577671161477450035426668403029274259353168525213623377767099755932332 +main.escalarMul.segments[0].windows[64].mux.c[1][6], main.escalarMul.segments[0].windows[64].adr7.out[1], main.escalarMul.segments[0].windows[64].adr8.in2[1] --> 13860103704962346385863361290657367094428708196882449452997764842058273633618 +main.escalarMul.segments[0].windows[64].mux.a210[0] --> 8872226906856445845154384490708723090907345005772184573339799105630668550097 +main.escalarMul.segments[0].windows[64].mux.a210[1] --> 8297737383350671114314428684129558527613113375001764407721099566676343509176 +main.escalarMul.segments[0].windows[64].mux.a21[0] --> 9468279603047487672359919083448750324159447891897348902357344964756975397414 +main.escalarMul.segments[0].windows[64].mux.a21[1] --> 1255207516081264888445356131431285922776381594448562608134378754557878043212 +main.escalarMul.segments[0].windows[64].mux.a20[0] --> 5174579901764850780132795382032714885031909152676354403633101342798018759977 +main.escalarMul.segments[0].windows[64].mux.a20[1] --> 8898603262696329719193102610580400467514195203841724621240178359484027397522 +main.escalarMul.segments[0].windows[64].mux.a2[0] --> 2040190904505700187439807622642358408182655259301681529402636443012059879526 +main.escalarMul.segments[0].windows[64].mux.a2[1] --> 10092656986909343209534792351464130382463547991316262550719016802939680768729 +main.escalarMul.segments[0].windows[64].mux.a10[0] --> 18629547625590782476512697066139231226174729509752183310604974857266221482215 +main.escalarMul.segments[0].windows[64].mux.a10[1] --> 8622530588166875622209020656332672134016454774222620771424283088588740428892 +main.escalarMul.segments[0].windows[64].mux.a1[0] --> 7253628379029685119700734880019422387029651303555268160676114647378622734054 +main.escalarMul.segments[0].windows[64].mux.a1[1] --> 12118029620293240694494110007489233212893953856554172776147876340324802068346 +main.escalarMul.segments[0].windows[64].mux.a0[0] --> 20973390151334025555284736649619367359401998891788891441688405257539447396525 +main.escalarMul.segments[0].windows[64].mux.a0[1] --> 10920503746386990955333037664351154603001691403447086523667689660440135012750 +main.escalarMul.segments[0].windows[64].mux.s10 --> 1 +main.escalarMul.segments[0].windows[64].dbl2.lamda --> 18422539591966474425361453896627388394332113959473072513491279891244586813144 +main.escalarMul.segments[0].windows[64].dbl2.x1_2 --> 6174571006743934545094029129176751416385564741776987868115069341640829757999 +main.escalarMul.segments[0].windows[64].adr3.lamda --> 10818917056789270386601721766580691311113869053940264409005662292689444735707 +main.escalarMul.segments[0].windows[64].adr4.lamda --> 7860708643082781824318499019116582846088502174799308634771515229479228615470 +main.escalarMul.segments[0].windows[64].adr5.lamda --> 10216900450184322945384014740717087814466050087257235657764947302931660698375 +main.escalarMul.segments[0].windows[64].adr6.lamda --> 10667501278350350546071470251958037258304563946858798992215507442117751342213 +main.escalarMul.segments[0].windows[64].adr7.lamda --> 3399873982087691052298888329238586507583737840393874290253781020063355812088 +main.escalarMul.segments[0].windows[64].adr8.lamda --> 14040414271697478468701330632362298250021768278973708328640903877533619201666 +main.escalarMul.segments[0].adders[63].out[0], main.escalarMul.segments[0].adders[64].in1[0] --> 18996317449833278471505111428880949011525344437628160963779717871479232400061 +main.escalarMul.segments[0].adders[63].out[1], main.escalarMul.segments[0].adders[64].in1[1] --> 12464106456033398271333145059181010935851348146648330237253347573596294828795 +main.escalarMul.segments[0].adders[63].lamda --> 3996306118340748127093510945069534426515066996551204461659847579351839721916 +main.escalarMul.segments[0].cadders[63].out[0], main.escalarMul.segments[0].cadders[64].in1[0] --> 474223301354861523879019962773482085711419467096538815676934911399681431447 +main.escalarMul.segments[0].cadders[63].out[1], main.escalarMul.segments[0].cadders[64].in1[1] --> 17973505320183377590115017508933731775311231147724503994455347737614411232852 +main.escalarMul.segments[0].cadders[63].lamda --> 8717106369205134758225844542183133518707248146330758037473860811769381654427 +main.escalarMul.segments[0].windows[65].out[0], main.escalarMul.segments[0].windows[65].mux.out[0], main.escalarMul.segments[0].adders[64].in2[0] --> 14123632524853843509900303753047311509552929944260128959389605666252233275457 +main.escalarMul.segments[0].windows[65].out[1], main.escalarMul.segments[0].windows[65].mux.out[1], main.escalarMul.segments[0].adders[64].in2[1] --> 8828140275080148868576533314565090775986515419831959240938502192097725924481 +main.escalarMul.segments[0].windows[65].out8[0], main.escalarMul.segments[0].windows[65].mux.c[0][7], main.escalarMul.segments[0].windows[65].adr8.out[0], main.escalarMul.segments[0].windows[66].base[0], main.escalarMul.segments[0].windows[66].mux.c[0][0], main.escalarMul.segments[0].windows[66].mux.a[0], main.escalarMul.segments[0].windows[66].dbl2.in[0], main.escalarMul.segments[0].windows[66].adr3.in1[0], main.escalarMul.segments[0].windows[66].adr4.in1[0], main.escalarMul.segments[0].windows[66].adr5.in1[0], main.escalarMul.segments[0].windows[66].adr6.in1[0], main.escalarMul.segments[0].windows[66].adr7.in1[0], main.escalarMul.segments[0].windows[66].adr8.in1[0], main.escalarMul.segments[0].cadders[65].in2[0] --> 13775867079293429750686218619783456593142193417788967695370557992328668347637 +main.escalarMul.segments[0].windows[65].out8[1], main.escalarMul.segments[0].windows[65].mux.c[1][7], main.escalarMul.segments[0].windows[65].adr8.out[1], main.escalarMul.segments[0].windows[66].base[1], main.escalarMul.segments[0].windows[66].mux.c[1][0], main.escalarMul.segments[0].windows[66].mux.a[1], main.escalarMul.segments[0].windows[66].dbl2.in[1], main.escalarMul.segments[0].windows[66].adr3.in1[1], main.escalarMul.segments[0].windows[66].adr4.in1[1], main.escalarMul.segments[0].windows[66].adr5.in1[1], main.escalarMul.segments[0].windows[66].adr6.in1[1], main.escalarMul.segments[0].windows[66].adr7.in1[1], main.escalarMul.segments[0].windows[66].adr8.in1[1], main.escalarMul.segments[0].cadders[65].in2[1] --> 19342464075591835439802003930576837920864312172092800476986385467612926168336 +main.escalarMul.segments[0].windows[65].mux.c[0][1], main.escalarMul.segments[0].windows[65].dbl2.out[0], main.escalarMul.segments[0].windows[65].adr3.in2[0] --> 5045127537339694394862143792240765913863332946068622908599282554592974538233 +main.escalarMul.segments[0].windows[65].mux.c[0][2], main.escalarMul.segments[0].windows[65].adr3.out[0], main.escalarMul.segments[0].windows[65].adr4.in2[0] --> 3051473561264484837120937008103466336182480977283271736784869990317687892073 +main.escalarMul.segments[0].windows[65].mux.c[0][3], main.escalarMul.segments[0].windows[65].adr4.out[0], main.escalarMul.segments[0].windows[65].adr5.in2[0] --> 4801155788974276265347147689540085606421509279455312201607880987120148073116 +main.escalarMul.segments[0].windows[65].mux.c[0][4], main.escalarMul.segments[0].windows[65].adr5.out[0], main.escalarMul.segments[0].windows[65].adr6.in2[0] --> 8158488152963615510383353033839781921863805679123905741083208179104552882844 +main.escalarMul.segments[0].windows[65].mux.c[0][5], main.escalarMul.segments[0].windows[65].adr6.out[0], main.escalarMul.segments[0].windows[65].adr7.in2[0] --> 14123632524853843509900303753047311509552929944260128959389605666252233275457 +main.escalarMul.segments[0].windows[65].mux.c[0][6], main.escalarMul.segments[0].windows[65].adr7.out[0], main.escalarMul.segments[0].windows[65].adr8.in2[0] --> 5077694463337293339259051068037917732568559675507221330134535681511403938525 +main.escalarMul.segments[0].windows[65].mux.c[1][1], main.escalarMul.segments[0].windows[65].dbl2.out[1], main.escalarMul.segments[0].windows[65].adr3.in2[1] --> 7608642935921428257972665278952625397770696470549402121778426150651909828219 +main.escalarMul.segments[0].windows[65].mux.c[1][2], main.escalarMul.segments[0].windows[65].adr3.out[1], main.escalarMul.segments[0].windows[65].adr4.in2[1] --> 19891455366946607973062786305661750118743911989648246664817464932030163271479 +main.escalarMul.segments[0].windows[65].mux.c[1][3], main.escalarMul.segments[0].windows[65].adr4.out[1], main.escalarMul.segments[0].windows[65].adr5.in2[1] --> 18054418206268596755157168867323114572031159395948285989180039075837645241663 +main.escalarMul.segments[0].windows[65].mux.c[1][4], main.escalarMul.segments[0].windows[65].adr5.out[1], main.escalarMul.segments[0].windows[65].adr6.in2[1] --> 801957141177196283397079978499341358223791777196826157027020748556179553546 +main.escalarMul.segments[0].windows[65].mux.c[1][5], main.escalarMul.segments[0].windows[65].adr6.out[1], main.escalarMul.segments[0].windows[65].adr7.in2[1] --> 8828140275080148868576533314565090775986515419831959240938502192097725924481 +main.escalarMul.segments[0].windows[65].mux.c[1][6], main.escalarMul.segments[0].windows[65].adr7.out[1], main.escalarMul.segments[0].windows[65].adr8.in2[1] --> 1786885155037792862062849248369666011309994480979375551392458969572419754375 +main.escalarMul.segments[0].windows[65].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[65].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[65].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[65].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[65].mux.a20[0] --> 4874636953130123328173400184503181255673592098076837671103153855719989327313 +main.escalarMul.segments[0].windows[65].mux.a20[1] --> 7240533139866187679626927472649726669469461324649308051787662436985539533440 +main.escalarMul.segments[0].windows[65].mux.a2[0] --> 4203868034384025786864759776303364340016004900114668379687169255939269409911 +main.escalarMul.segments[0].windows[65].mux.a2[1] --> 15867207071131808153223346308220013797294722025049283411070617791036085058439 +main.escalarMul.segments[0].windows[65].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[65].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[65].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[65].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[65].mux.a0[0] --> 1090507418760104671343550534704348332015532167059385547203243631427691065300 +main.escalarMul.segments[0].windows[65].mux.a0[1] --> 785649994036764905552525863416022748293262317985825032123819006556006837495 +main.escalarMul.segments[0].windows[65].mux.s10 --> 0 +main.escalarMul.segments[0].windows[65].dbl2.lamda --> 15035422913991057934251121242391785915828890603482960133990459841857393267972 +main.escalarMul.segments[0].windows[65].dbl2.x1_2 --> 11466180119481155544493764993617647415532832086033614225836501979470574675411 +main.escalarMul.segments[0].windows[65].adr3.lamda --> 10472910671676796388821927973208389349060066433031391159092972685965014543301 +main.escalarMul.segments[0].windows[65].adr4.lamda --> 11946461001760886221656286427970854477242465201749664278501256587119452079329 +main.escalarMul.segments[0].windows[65].adr5.lamda --> 1023646403805940491140994981092289052421118038568632409404172539517037975390 +main.escalarMul.segments[0].windows[65].adr6.lamda --> 10162853013729181234009278303145067450176101469770240573328167489086578735056 +main.escalarMul.segments[0].windows[65].adr7.lamda --> 12263838326435197140665258172642096779585095557698928788024563076425800185296 +main.escalarMul.segments[0].windows[65].adr8.lamda --> 14651761572897213266090119261370030491155414445265570013611972325133302017719 +main.escalarMul.segments[0].adders[64].out[0], main.escalarMul.segments[0].adders[65].in1[0] --> 20586089707414577332635152544156795313889770598483905193659226865162729641329 +main.escalarMul.segments[0].adders[64].out[1], main.escalarMul.segments[0].adders[65].in1[1] --> 20321505407851889466453068492046793542284403842572803178265605376588316301952 +main.escalarMul.segments[0].adders[64].lamda --> 1194346976163857701193210325046915450539208593760293948208594560208779957705 +main.escalarMul.segments[0].cadders[64].out[0], main.escalarMul.segments[0].cadders[65].in1[0] --> 21682291012974106286308005490095332607752632976596836994521451532040748828010 +main.escalarMul.segments[0].cadders[64].out[1], main.escalarMul.segments[0].cadders[65].in1[1] --> 17095177868039484266901160996792922746855212200163976405676144976412012795289 +main.escalarMul.segments[0].cadders[64].lamda --> 11064913545725330926244770844231240834596741670650386645722303846296602196489 +main.escalarMul.segments[0].windows[66].out[0], main.escalarMul.segments[0].windows[66].mux.out[0], main.escalarMul.segments[0].adders[65].in2[0] --> 11721726072681174302912774655553319182974946703096729635017745438511675280538 +main.escalarMul.segments[0].windows[66].out[1], main.escalarMul.segments[0].windows[66].mux.out[1], main.escalarMul.segments[0].adders[65].in2[1] --> 7388747310121578394556260137477228063827322525312998198787926635490104186466 +main.escalarMul.segments[0].windows[66].out8[0], main.escalarMul.segments[0].windows[66].mux.c[0][7], main.escalarMul.segments[0].windows[66].adr8.out[0], main.escalarMul.segments[0].windows[67].base[0], main.escalarMul.segments[0].windows[67].mux.c[0][0], main.escalarMul.segments[0].windows[67].mux.a[0], main.escalarMul.segments[0].windows[67].dbl2.in[0], main.escalarMul.segments[0].windows[67].adr3.in1[0], main.escalarMul.segments[0].windows[67].adr4.in1[0], main.escalarMul.segments[0].windows[67].adr5.in1[0], main.escalarMul.segments[0].windows[67].adr6.in1[0], main.escalarMul.segments[0].windows[67].adr7.in1[0], main.escalarMul.segments[0].windows[67].adr8.in1[0], main.escalarMul.segments[0].cadders[66].in2[0] --> 18926834529424137233441815985843342282135014484539482195790838449656431902597 +main.escalarMul.segments[0].windows[66].out8[1], main.escalarMul.segments[0].windows[66].mux.c[1][7], main.escalarMul.segments[0].windows[66].adr8.out[1], main.escalarMul.segments[0].windows[67].base[1], main.escalarMul.segments[0].windows[67].mux.c[1][0], main.escalarMul.segments[0].windows[67].mux.a[1], main.escalarMul.segments[0].windows[67].dbl2.in[1], main.escalarMul.segments[0].windows[67].adr3.in1[1], main.escalarMul.segments[0].windows[67].adr4.in1[1], main.escalarMul.segments[0].windows[67].adr5.in1[1], main.escalarMul.segments[0].windows[67].adr6.in1[1], main.escalarMul.segments[0].windows[67].adr7.in1[1], main.escalarMul.segments[0].windows[67].adr8.in1[1], main.escalarMul.segments[0].cadders[66].in2[1] --> 15393465155014582122200751858928519769943996836767559517654097519567845432313 +main.escalarMul.segments[0].windows[66].mux.c[0][1], main.escalarMul.segments[0].windows[66].dbl2.out[0], main.escalarMul.segments[0].windows[66].adr3.in2[0] --> 18030892311343166503333209820108716237559172739865375983069610304023166006262 +main.escalarMul.segments[0].windows[66].mux.c[0][2], main.escalarMul.segments[0].windows[66].adr3.out[0], main.escalarMul.segments[0].windows[66].adr4.in2[0] --> 9157708602597823816359578658027002563113929659740142787338581617518578573827 +main.escalarMul.segments[0].windows[66].mux.c[0][3], main.escalarMul.segments[0].windows[66].adr4.out[0], main.escalarMul.segments[0].windows[66].adr5.in2[0] --> 4216970515817782541052121508763506277746406261531390780521301750856524271839 +main.escalarMul.segments[0].windows[66].mux.c[0][4], main.escalarMul.segments[0].windows[66].adr5.out[0], main.escalarMul.segments[0].windows[66].adr6.in2[0] --> 11721726072681174302912774655553319182974946703096729635017745438511675280538 +main.escalarMul.segments[0].windows[66].mux.c[0][5], main.escalarMul.segments[0].windows[66].adr6.out[0], main.escalarMul.segments[0].windows[66].adr7.in2[0] --> 15677888504733080209399928944956366993056619557434362827220322210682128937891 +main.escalarMul.segments[0].windows[66].mux.c[0][6], main.escalarMul.segments[0].windows[66].adr7.out[0], main.escalarMul.segments[0].windows[66].adr8.in2[0] --> 3700726445981258817304915056499885134429790814700659928490532134159807853072 +main.escalarMul.segments[0].windows[66].mux.c[1][1], main.escalarMul.segments[0].windows[66].dbl2.out[1], main.escalarMul.segments[0].windows[66].adr3.in2[1] --> 13345321430464998558103302257897225235345152666551434412041903057893266027363 +main.escalarMul.segments[0].windows[66].mux.c[1][2], main.escalarMul.segments[0].windows[66].adr3.out[1], main.escalarMul.segments[0].windows[66].adr4.in2[1] --> 12180937505069746605624029991383309336369971072131493639249623716671957658058 +main.escalarMul.segments[0].windows[66].mux.c[1][3], main.escalarMul.segments[0].windows[66].adr4.out[1], main.escalarMul.segments[0].windows[66].adr5.in2[1] --> 14398573727581289666525754958870705501344337338242857660761515240721902788375 +main.escalarMul.segments[0].windows[66].mux.c[1][4], main.escalarMul.segments[0].windows[66].adr5.out[1], main.escalarMul.segments[0].windows[66].adr6.in2[1] --> 7388747310121578394556260137477228063827322525312998198787926635490104186466 +main.escalarMul.segments[0].windows[66].mux.c[1][5], main.escalarMul.segments[0].windows[66].adr6.out[1], main.escalarMul.segments[0].windows[66].adr7.in2[1] --> 5111245246644086212272877227179331704352652662929268493538160340266217397884 +main.escalarMul.segments[0].windows[66].mux.c[1][6], main.escalarMul.segments[0].windows[66].adr7.out[1], main.escalarMul.segments[0].windows[66].adr8.in2[1] --> 20440375071756018695987113193336965881147563874415682571741415648600079675166 +main.escalarMul.segments[0].windows[66].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[66].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[66].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[66].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[66].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[66].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[66].mux.a2[0] --> 19834101865227019774472961781027137678381117685723796283345391632758815428518 +main.escalarMul.segments[0].windows[66].mux.a2[1] --> 9934526106369018177000661952157665231511374753636232065499745354452986513747 +main.escalarMul.segments[0].windows[66].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[66].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[66].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[66].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[66].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[66].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[66].mux.s10 --> 0 +main.escalarMul.segments[0].windows[66].dbl2.lamda --> 15197132792882979692412481147292241639291082633336636165123789178913531109547 +main.escalarMul.segments[0].windows[66].dbl2.x1_2 --> 20944510221069412639471818352631580391209332814741486307344634017654569906636 +main.escalarMul.segments[0].windows[66].adr3.lamda --> 3992148383297489818209688389332489479127525727874877853400523623171189087943 +main.escalarMul.segments[0].windows[66].adr4.lamda --> 7046341186982651454422613184579713213225271545313337257836377177280843529216 +main.escalarMul.segments[0].windows[66].adr5.lamda --> 41967057901735276166746520859926446031346872096684381777711899714044401664 +main.escalarMul.segments[0].windows[66].adr6.lamda --> 1021749537044933595298744341973062341943055687095220927236783933872055615024 +main.escalarMul.segments[0].windows[66].adr7.lamda --> 12344220360575655050637263711891954153554806672550685610895668407247844793938 +main.escalarMul.segments[0].windows[66].adr8.lamda --> 7249390182406443826731561851542256857392287932578946502681324662712778095041 +main.escalarMul.segments[0].adders[65].out[0], main.escalarMul.segments[0].adders[66].in1[0] --> 12024885996480008293468986703479667997868516739485843105335208809438190759410 +main.escalarMul.segments[0].adders[65].out[1], main.escalarMul.segments[0].adders[66].in1[1] --> 4863408600806454149380427866501158905794925473607747417062974731076347962620 +main.escalarMul.segments[0].adders[65].lamda --> 12776767704345270023273137487312512411088654259744707171437187467020935263461 +main.escalarMul.segments[0].cadders[65].out[0], main.escalarMul.segments[0].cadders[66].in1[0] --> 18342370791044036587268182906766032891243686294618059082153994222776266075631 +main.escalarMul.segments[0].cadders[65].out[1], main.escalarMul.segments[0].cadders[66].in1[1] --> 21155341073783818523496147663137686490633058227940744873003854928481914078592 +main.escalarMul.segments[0].cadders[65].lamda --> 4337202494704017275503659496768278015456651556118599252863059129153876631041 +main.escalarMul.segments[0].windows[67].out[0], main.escalarMul.segments[0].windows[67].mux.out[0], main.escalarMul.segments[0].adders[66].in2[0] --> 18926834529424137233441815985843342282135014484539482195790838449656431902597 +main.escalarMul.segments[0].windows[67].out[1], main.escalarMul.segments[0].windows[67].mux.out[1], main.escalarMul.segments[0].adders[66].in2[1] --> 15393465155014582122200751858928519769943996836767559517654097519567845432313 +main.escalarMul.segments[0].windows[67].out8[0], main.escalarMul.segments[0].windows[67].mux.c[0][7], main.escalarMul.segments[0].windows[67].adr8.out[0], main.escalarMul.segments[0].windows[68].base[0], main.escalarMul.segments[0].windows[68].mux.c[0][0], main.escalarMul.segments[0].windows[68].mux.a[0], main.escalarMul.segments[0].windows[68].dbl2.in[0], main.escalarMul.segments[0].windows[68].adr3.in1[0], main.escalarMul.segments[0].windows[68].adr4.in1[0], main.escalarMul.segments[0].windows[68].adr5.in1[0], main.escalarMul.segments[0].windows[68].adr6.in1[0], main.escalarMul.segments[0].windows[68].adr7.in1[0], main.escalarMul.segments[0].windows[68].adr8.in1[0], main.escalarMul.segments[0].cadders[67].in2[0] --> 1254186238965647127094704693942536788888390719699748450512546732233288526071 +main.escalarMul.segments[0].windows[67].out8[1], main.escalarMul.segments[0].windows[67].mux.c[1][7], main.escalarMul.segments[0].windows[67].adr8.out[1], main.escalarMul.segments[0].windows[68].base[1], main.escalarMul.segments[0].windows[68].mux.c[1][0], main.escalarMul.segments[0].windows[68].mux.a[1], main.escalarMul.segments[0].windows[68].dbl2.in[1], main.escalarMul.segments[0].windows[68].adr3.in1[1], main.escalarMul.segments[0].windows[68].adr4.in1[1], main.escalarMul.segments[0].windows[68].adr5.in1[1], main.escalarMul.segments[0].windows[68].adr6.in1[1], main.escalarMul.segments[0].windows[68].adr7.in1[1], main.escalarMul.segments[0].windows[68].adr8.in1[1], main.escalarMul.segments[0].cadders[67].in2[1] --> 18999376742316652223967436050278472049866879978411652237577887948554977590478 +main.escalarMul.segments[0].windows[67].mux.c[0][1], main.escalarMul.segments[0].windows[67].dbl2.out[0], main.escalarMul.segments[0].windows[67].adr3.in2[0] --> 19932830843027455830860907477337469561111771868848459651657981500786348386298 +main.escalarMul.segments[0].windows[67].mux.c[0][2], main.escalarMul.segments[0].windows[67].adr3.out[0], main.escalarMul.segments[0].windows[67].adr4.in2[0] --> 1905139606894606265669427304380764714821686361977024067953987309579251403150 +main.escalarMul.segments[0].windows[67].mux.c[0][3], main.escalarMul.segments[0].windows[67].adr4.out[0], main.escalarMul.segments[0].windows[67].adr5.in2[0] --> 15509230595727221081774750736533022156534041733775455330213297709912629187451 +main.escalarMul.segments[0].windows[67].mux.c[0][4], main.escalarMul.segments[0].windows[67].adr5.out[0], main.escalarMul.segments[0].windows[67].adr6.in2[0] --> 3657451279624906917903371949774101671874196929157368022955111678571962366497 +main.escalarMul.segments[0].windows[67].mux.c[0][5], main.escalarMul.segments[0].windows[67].adr6.out[0], main.escalarMul.segments[0].windows[67].adr7.in2[0] --> 20843154482823931878411155856008914957716272403504057358644893399769410843594 +main.escalarMul.segments[0].windows[67].mux.c[0][6], main.escalarMul.segments[0].windows[67].adr7.out[0], main.escalarMul.segments[0].windows[67].adr8.in2[0] --> 6695670038168627860069505474861998178934417088999028520869233763132830922745 +main.escalarMul.segments[0].windows[67].mux.c[1][1], main.escalarMul.segments[0].windows[67].dbl2.out[1], main.escalarMul.segments[0].windows[67].adr3.in2[1] --> 15416684375161618588869218131912973072345533347689709090173839019595584388001 +main.escalarMul.segments[0].windows[67].mux.c[1][2], main.escalarMul.segments[0].windows[67].adr3.out[1], main.escalarMul.segments[0].windows[67].adr4.in2[1] --> 14549913954183723266627762034005514366770772601237666249205873440099131765683 +main.escalarMul.segments[0].windows[67].mux.c[1][3], main.escalarMul.segments[0].windows[67].adr4.out[1], main.escalarMul.segments[0].windows[67].adr5.in2[1] --> 10401541012515442007061881245483162780266958704059112217084998512896880385272 +main.escalarMul.segments[0].windows[67].mux.c[1][4], main.escalarMul.segments[0].windows[67].adr5.out[1], main.escalarMul.segments[0].windows[67].adr6.in2[1] --> 19268650176087516033656738394814371445473685004142880562096927380762202373945 +main.escalarMul.segments[0].windows[67].mux.c[1][5], main.escalarMul.segments[0].windows[67].adr6.out[1], main.escalarMul.segments[0].windows[67].adr7.in2[1] --> 1174479958511168510394362053338989980352357477483285997973314386950795729017 +main.escalarMul.segments[0].windows[67].mux.c[1][6], main.escalarMul.segments[0].windows[67].adr7.out[1], main.escalarMul.segments[0].windows[67].adr8.in2[1] --> 16267068015849177363257601993643576690156093929901001430051158309526740515779 +main.escalarMul.segments[0].windows[67].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[67].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[67].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[67].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[67].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[67].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[67].mux.a2[0] --> 6618859622040044906707961709188034478287546845033920170862477415491338959517 +main.escalarMul.segments[0].windows[67].mux.a2[1] --> 3875185021072933911455986535885851675529688167375321044442829861194356941632 +main.escalarMul.segments[0].windows[67].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[67].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[67].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[67].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[67].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[67].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[67].mux.s10 --> 0 +main.escalarMul.segments[0].windows[67].dbl2.lamda --> 7231127247264806202277052805133645745913710888431524332448335070092820272865 +main.escalarMul.segments[0].windows[67].dbl2.x1_2 --> 18780638081650244967756777525485442148981642289822750344176437521099073498855 +main.escalarMul.segments[0].windows[67].adr3.lamda --> 8040037840946951740713626053191202255599696720350325292649562166060303676043 +main.escalarMul.segments[0].windows[67].adr4.lamda --> 8088575395894410540385492651276998887488524626777860106200955656974956077955 +main.escalarMul.segments[0].windows[67].adr5.lamda --> 17954798201407668683493374179296347031367852260974351928942515340299200937278 +main.escalarMul.segments[0].windows[67].adr6.lamda --> 274393405700626161931910880202081008313120257949838021306126985641999542481 +main.escalarMul.segments[0].windows[67].adr7.lamda --> 17047890558845286771019845256270773399578049421022281350860265091941269349550 +main.escalarMul.segments[0].windows[67].adr8.lamda --> 18139095304825758822935160794642752590233333700094849772628966879002069729044 +main.escalarMul.segments[0].adders[66].out[0], main.escalarMul.segments[0].adders[67].in1[0] --> 21314193107147776762970244142499813738661984789303247442785094434286812663571 +main.escalarMul.segments[0].adders[66].out[1], main.escalarMul.segments[0].adders[67].in1[1] --> 13491867417240944931002836207457404580997609684179736952272898686583351767438 +main.escalarMul.segments[0].adders[66].lamda --> 18312196096289388213785051361074390997704931806203008437275630061688461828619 +main.escalarMul.segments[0].cadders[66].out[0], main.escalarMul.segments[0].cadders[67].in1[0] --> 7824708255093692047736475956465823262132005914732866514804307292472290557971 +main.escalarMul.segments[0].cadders[66].out[1], main.escalarMul.segments[0].cadders[67].in1[1] --> 3434218413199102334091374528828400969217107129427716036144353189020015995388 +main.escalarMul.segments[0].cadders[66].lamda --> 16699654540776830477584989725687184229052190027388119809411613857630903426543 +main.escalarMul.segments[0].windows[68].out[0], main.escalarMul.segments[0].windows[68].mux.out[0], main.escalarMul.segments[0].adders[67].in2[0] --> 1254186238965647127094704693942536788888390719699748450512546732233288526071 +main.escalarMul.segments[0].windows[68].out[1], main.escalarMul.segments[0].windows[68].mux.out[1], main.escalarMul.segments[0].adders[67].in2[1] --> 18999376742316652223967436050278472049866879978411652237577887948554977590478 +main.escalarMul.segments[0].windows[68].out8[0], main.escalarMul.segments[0].windows[68].mux.c[0][7], main.escalarMul.segments[0].windows[68].adr8.out[0], main.escalarMul.segments[0].windows[69].base[0], main.escalarMul.segments[0].windows[69].mux.c[0][0], main.escalarMul.segments[0].windows[69].mux.a[0], main.escalarMul.segments[0].windows[69].dbl2.in[0], main.escalarMul.segments[0].windows[69].adr3.in1[0], main.escalarMul.segments[0].windows[69].adr4.in1[0], main.escalarMul.segments[0].windows[69].adr5.in1[0], main.escalarMul.segments[0].windows[69].adr6.in1[0], main.escalarMul.segments[0].windows[69].adr7.in1[0], main.escalarMul.segments[0].windows[69].adr8.in1[0], main.escalarMul.segments[0].cadders[68].in2[0] --> 14810753390519858961634431137082042379271467324185261096374961579337647719322 +main.escalarMul.segments[0].windows[68].out8[1], main.escalarMul.segments[0].windows[68].mux.c[1][7], main.escalarMul.segments[0].windows[68].adr8.out[1], main.escalarMul.segments[0].windows[69].base[1], main.escalarMul.segments[0].windows[69].mux.c[1][0], main.escalarMul.segments[0].windows[69].mux.a[1], main.escalarMul.segments[0].windows[69].dbl2.in[1], main.escalarMul.segments[0].windows[69].adr3.in1[1], main.escalarMul.segments[0].windows[69].adr4.in1[1], main.escalarMul.segments[0].windows[69].adr5.in1[1], main.escalarMul.segments[0].windows[69].adr6.in1[1], main.escalarMul.segments[0].windows[69].adr7.in1[1], main.escalarMul.segments[0].windows[69].adr8.in1[1], main.escalarMul.segments[0].cadders[68].in2[1] --> 8821407638584554179574040776405126167042680577538741089821822500140232815110 +main.escalarMul.segments[0].windows[68].mux.c[0][1], main.escalarMul.segments[0].windows[68].dbl2.out[0], main.escalarMul.segments[0].windows[68].adr3.in2[0] --> 20965075911209618424231703524467958675025435544816346849435156297529745176140 +main.escalarMul.segments[0].windows[68].mux.c[0][2], main.escalarMul.segments[0].windows[68].adr3.out[0], main.escalarMul.segments[0].windows[68].adr4.in2[0] --> 19614247735520483017930597482907328203744654063790355804630075461412980922596 +main.escalarMul.segments[0].windows[68].mux.c[0][3], main.escalarMul.segments[0].windows[68].adr4.out[0], main.escalarMul.segments[0].windows[68].adr5.in2[0] --> 2312128145303932596859904312289464022042380206148266218684979878160449997307 +main.escalarMul.segments[0].windows[68].mux.c[0][4], main.escalarMul.segments[0].windows[68].adr5.out[0], main.escalarMul.segments[0].windows[68].adr6.in2[0] --> 16966050627372529780728031131611475904241599272612218622874391850769528867352 +main.escalarMul.segments[0].windows[68].mux.c[0][5], main.escalarMul.segments[0].windows[68].adr6.out[0], main.escalarMul.segments[0].windows[68].adr7.in2[0] --> 2088624574287908498187405660667700099036233898975691618365559166411778459551 +main.escalarMul.segments[0].windows[68].mux.c[0][6], main.escalarMul.segments[0].windows[68].adr7.out[0], main.escalarMul.segments[0].windows[68].adr8.in2[0] --> 8746489163297163763604371732752782358066413103006002865045311508687072259418 +main.escalarMul.segments[0].windows[68].mux.c[1][1], main.escalarMul.segments[0].windows[68].dbl2.out[1], main.escalarMul.segments[0].windows[68].adr3.in2[1] --> 12467604328833312191309970772568578246575342921005759266042615659140848616141 +main.escalarMul.segments[0].windows[68].mux.c[1][2], main.escalarMul.segments[0].windows[68].adr3.out[1], main.escalarMul.segments[0].windows[68].adr4.in2[1] --> 17519864663755379348313852668213165646241391526859013343441744986357828147938 +main.escalarMul.segments[0].windows[68].mux.c[1][3], main.escalarMul.segments[0].windows[68].adr4.out[1], main.escalarMul.segments[0].windows[68].adr5.in2[1] --> 745296656453157104505115425143161513877291201057241684120188926677753515919 +main.escalarMul.segments[0].windows[68].mux.c[1][4], main.escalarMul.segments[0].windows[68].adr5.out[1], main.escalarMul.segments[0].windows[68].adr6.in2[1] --> 3901880193744307895008284017739305725166086565332728680339573902519937686078 +main.escalarMul.segments[0].windows[68].mux.c[1][5], main.escalarMul.segments[0].windows[68].adr6.out[1], main.escalarMul.segments[0].windows[68].adr7.in2[1] --> 21114318821734655264778529136934049444066773121115177734230816484698759032138 +main.escalarMul.segments[0].windows[68].mux.c[1][6], main.escalarMul.segments[0].windows[68].adr7.out[1], main.escalarMul.segments[0].windows[68].adr8.in2[1] --> 5591262257408066790363518913331139261392987073463210258249585351749404651753 +main.escalarMul.segments[0].windows[68].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[68].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[68].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[68].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[68].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[68].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[68].mux.a2[0] --> 15711864388406882653633326437668939115353208552912470172361845118536240341281 +main.escalarMul.segments[0].windows[68].mux.a2[1] --> 6790746323266930893287253712718108763847570987337110786459890140540768591217 +main.escalarMul.segments[0].windows[68].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[68].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[68].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[68].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[68].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[68].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[68].mux.s10 --> 0 +main.escalarMul.segments[0].windows[68].dbl2.lamda --> 11129468383670404577097606346990978136077497341764744535215161403946063524937 +main.escalarMul.segments[0].windows[68].dbl2.x1_2 --> 500847803070603094119517653715119310558691076390695156298173668113397355405 +main.escalarMul.segments[0].windows[68].adr3.lamda --> 15177475369868815814383500742760768379366912583444153127974309961647997419833 +main.escalarMul.segments[0].windows[68].adr4.lamda --> 18497802722634926598204052115405887096620064366322523067065740102765745958038 +main.escalarMul.segments[0].windows[68].adr5.lamda --> 294438588327603869439887332995077437294128647879507373934544708064196807957 +main.escalarMul.segments[0].windows[68].adr6.lamda --> 15350266689361926160612023118313389174302097956916333687033789850762406111941 +main.escalarMul.segments[0].windows[68].adr7.lamda --> 9177398413688551782243505101821996956662288975569477625946268493460604705847 +main.escalarMul.segments[0].windows[68].adr8.lamda --> 4378186708030530767016003477935572411759860584895857243209519486651519025143 +main.escalarMul.segments[0].adders[67].out[0], main.escalarMul.segments[0].adders[68].in1[0] --> 19528401402240137627746055918474906107261619815509268913491610991710428373978 +main.escalarMul.segments[0].adders[67].out[1], main.escalarMul.segments[0].adders[68].in1[1] --> 9213180627724546128856464763379923144102944414063867928525376349388514495841 +main.escalarMul.segments[0].adders[67].lamda --> 4634940512952512064647902830034714236710893785005424048128916759502825543212 +main.escalarMul.segments[0].cadders[67].out[0], main.escalarMul.segments[0].cadders[68].in1[0] --> 12843445173553546761841339732114557132286827587963234216897851612055913007933 +main.escalarMul.segments[0].cadders[67].out[1], main.escalarMul.segments[0].cadders[68].in1[1] --> 7118474342894423699801386099715274297942365780581851978658220535909844456077 +main.escalarMul.segments[0].cadders[67].lamda --> 15234020916126628147472980070251155709299189534095364159372891156191306890443 +main.escalarMul.segments[0].windows[69].out[0], main.escalarMul.segments[0].windows[69].mux.out[0], main.escalarMul.segments[0].adders[68].in2[0] --> 10080019508907383117013768326709661928629135827744755532115739977320713134722 +main.escalarMul.segments[0].windows[69].out[1], main.escalarMul.segments[0].windows[69].mux.out[1], main.escalarMul.segments[0].adders[68].in2[1] --> 15696620369257471584616746456964312971133631046222631686406024241209655095155 +main.escalarMul.segments[0].windows[69].out8[0], main.escalarMul.segments[0].windows[69].mux.c[0][7], main.escalarMul.segments[0].windows[69].adr8.out[0], main.escalarMul.segments[0].windows[70].base[0], main.escalarMul.segments[0].windows[70].mux.c[0][0], main.escalarMul.segments[0].windows[70].mux.a[0], main.escalarMul.segments[0].windows[70].dbl2.in[0], main.escalarMul.segments[0].windows[70].adr3.in1[0], main.escalarMul.segments[0].windows[70].adr4.in1[0], main.escalarMul.segments[0].windows[70].adr5.in1[0], main.escalarMul.segments[0].windows[70].adr6.in1[0], main.escalarMul.segments[0].windows[70].adr7.in1[0], main.escalarMul.segments[0].windows[70].adr8.in1[0], main.escalarMul.segments[0].cadders[69].in2[0] --> 16637171830349339358679491979786675998486210637934760370386774158684019416920 +main.escalarMul.segments[0].windows[69].out8[1], main.escalarMul.segments[0].windows[69].mux.c[1][7], main.escalarMul.segments[0].windows[69].adr8.out[1], main.escalarMul.segments[0].windows[70].base[1], main.escalarMul.segments[0].windows[70].mux.c[1][0], main.escalarMul.segments[0].windows[70].mux.a[1], main.escalarMul.segments[0].windows[70].dbl2.in[1], main.escalarMul.segments[0].windows[70].adr3.in1[1], main.escalarMul.segments[0].windows[70].adr4.in1[1], main.escalarMul.segments[0].windows[70].adr5.in1[1], main.escalarMul.segments[0].windows[70].adr6.in1[1], main.escalarMul.segments[0].windows[70].adr7.in1[1], main.escalarMul.segments[0].windows[70].adr8.in1[1], main.escalarMul.segments[0].cadders[69].in2[1] --> 5841530333177467894595772993693463312037665747170645132572250930793701864064 +main.escalarMul.segments[0].windows[69].mux.c[0][1], main.escalarMul.segments[0].windows[69].dbl2.out[0], main.escalarMul.segments[0].windows[69].adr3.in2[0] --> 8671643168451775866619490886688056003657240402371561338604935807991842624788 +main.escalarMul.segments[0].windows[69].mux.c[0][2], main.escalarMul.segments[0].windows[69].adr3.out[0], main.escalarMul.segments[0].windows[69].adr4.in2[0] --> 5420427462962988150213817535159900643256952377975025625876684439089728295594 +main.escalarMul.segments[0].windows[69].mux.c[0][3], main.escalarMul.segments[0].windows[69].adr4.out[0], main.escalarMul.segments[0].windows[69].adr5.in2[0] --> 1565647570052098475680179472699366012057852164219002944358258298901225550550 +main.escalarMul.segments[0].windows[69].mux.c[0][4], main.escalarMul.segments[0].windows[69].adr5.out[0], main.escalarMul.segments[0].windows[69].adr6.in2[0] --> 900243930854303943932996444246211544795536432601574794665674753644252484150 +main.escalarMul.segments[0].windows[69].mux.c[0][5], main.escalarMul.segments[0].windows[69].adr6.out[0], main.escalarMul.segments[0].windows[69].adr7.in2[0] --> 10080019508907383117013768326709661928629135827744755532115739977320713134722 +main.escalarMul.segments[0].windows[69].mux.c[0][6], main.escalarMul.segments[0].windows[69].adr7.out[0], main.escalarMul.segments[0].windows[69].adr8.in2[0] --> 965713861330625756400238700037264856911334951828621239089847830349087682979 +main.escalarMul.segments[0].windows[69].mux.c[1][1], main.escalarMul.segments[0].windows[69].dbl2.out[1], main.escalarMul.segments[0].windows[69].adr3.in2[1] --> 6332371156558623058216616971424283728426758726573268497366761686948138777836 +main.escalarMul.segments[0].windows[69].mux.c[1][2], main.escalarMul.segments[0].windows[69].adr3.out[1], main.escalarMul.segments[0].windows[69].adr4.in2[1] --> 13013869603186593904148348082958137470908443367342310043258128919660860832068 +main.escalarMul.segments[0].windows[69].mux.c[1][3], main.escalarMul.segments[0].windows[69].adr4.out[1], main.escalarMul.segments[0].windows[69].adr5.in2[1] --> 14732391338342879794768008433432722428143853163726997084887814138679645065267 +main.escalarMul.segments[0].windows[69].mux.c[1][4], main.escalarMul.segments[0].windows[69].adr5.out[1], main.escalarMul.segments[0].windows[69].adr6.in2[1] --> 18061991391581693787900570448699053382843105793480985165857934810899689837181 +main.escalarMul.segments[0].windows[69].mux.c[1][5], main.escalarMul.segments[0].windows[69].adr6.out[1], main.escalarMul.segments[0].windows[69].adr7.in2[1] --> 15696620369257471584616746456964312971133631046222631686406024241209655095155 +main.escalarMul.segments[0].windows[69].mux.c[1][6], main.escalarMul.segments[0].windows[69].adr7.out[1], main.escalarMul.segments[0].windows[69].adr8.in2[1] --> 9888699566334949104174950256407358914455673230259576087155238420785484677016 +main.escalarMul.segments[0].windows[69].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[69].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[69].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[69].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[69].mux.a20[0] --> 15318885800121162268095712132857436759447826316956880495220090995022265745106 +main.escalarMul.segments[0].windows[69].mux.a20[1] --> 123665459701708918073599813246102026906447103707119113003150243502059295248 +main.escalarMul.segments[0].windows[69].mux.a2[0] --> 7977733412173720204544971052421444254072433508832348041988917360882413260445 +main.escalarMul.segments[0].windows[69].mux.a2[1] --> 9240583752997139608326529672293927215800425215942244076036112310759457022071 +main.escalarMul.segments[0].windows[69].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[69].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[69].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[69].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[69].mux.a0[0] --> 15749132649771192127231465494863288712934137478602334585928178415230003401083 +main.escalarMul.segments[0].windows[69].mux.a0[1] --> 19399206389813344100888981940276432649932442549450561751243143373383714458343 +main.escalarMul.segments[0].windows[69].mux.s10 --> 0 +main.escalarMul.segments[0].windows[69].dbl2.lamda --> 449005306469567528558054264458922993502337783903206845728055732791120927719 +main.escalarMul.segments[0].windows[69].dbl2.x1_2 --> 15152147520764883315132784989303738517520185713567859756524646029126341791851 +main.escalarMul.segments[0].windows[69].adr3.lamda --> 15328856378907284613992156425288475173517869235946665854227832059061697524053 +main.escalarMul.segments[0].windows[69].adr4.lamda --> 8017161980500930087313514507046977880842069187910879301799837329185262435342 +main.escalarMul.segments[0].windows[69].adr5.lamda --> 3356131515519518658147734459894645908110478964305240125916660003131451346039 +main.escalarMul.segments[0].windows[69].adr6.lamda --> 7749663130743366054231158093297360526969064806135422794838895029241621554190 +main.escalarMul.segments[0].windows[69].adr7.lamda --> 2387543227380241557771138580989173222196429030247038086024488747743745328110 +main.escalarMul.segments[0].windows[69].adr8.lamda --> 6704365186735837219879773042245179958660402759083013608699097787699810153049 +main.escalarMul.segments[0].adders[68].out[0], main.escalarMul.segments[0].adders[69].in1[0] --> 5998594869330464376843494926437128950031583263361837089219567682610568931411 +main.escalarMul.segments[0].adders[68].out[1], main.escalarMul.segments[0].adders[69].in1[1] --> 10139298765585466015942366893663840661953458943837646910933368732244601927853 +main.escalarMul.segments[0].adders[68].lamda --> 12788364475224966965086160497413508733976377559982815977722198658258275134152 +main.escalarMul.segments[0].cadders[68].out[0], main.escalarMul.segments[0].cadders[69].in1[0] --> 8975892448603288071573500852592103249985812055022326959902788380591040425119 +main.escalarMul.segments[0].cadders[68].out[1], main.escalarMul.segments[0].cadders[69].in1[1] --> 18111089517943586708657583664712229659109759318757074475569122498552852018357 +main.escalarMul.segments[0].cadders[68].lamda --> 4790434022700150669478936931662791539723463141251633512646065471947791119297 +main.escalarMul.segments[0].windows[70].out[0], main.escalarMul.segments[0].windows[70].mux.out[0], main.escalarMul.segments[0].adders[69].in2[0] --> 21758721638250395551079505880044332235444657529326784002354789749936635311695 +main.escalarMul.segments[0].windows[70].out[1], main.escalarMul.segments[0].windows[70].mux.out[1], main.escalarMul.segments[0].adders[69].in2[1] --> 1232653643684205436371519497568268264686630149668882979666672173991748173940 +main.escalarMul.segments[0].windows[70].out8[0], main.escalarMul.segments[0].windows[70].mux.c[0][7], main.escalarMul.segments[0].windows[70].adr8.out[0], main.escalarMul.segments[0].windows[71].base[0], main.escalarMul.segments[0].windows[71].mux.c[0][0], main.escalarMul.segments[0].windows[71].mux.a[0], main.escalarMul.segments[0].windows[71].dbl2.in[0], main.escalarMul.segments[0].windows[71].adr3.in1[0], main.escalarMul.segments[0].windows[71].adr4.in1[0], main.escalarMul.segments[0].windows[71].adr5.in1[0], main.escalarMul.segments[0].windows[71].adr6.in1[0], main.escalarMul.segments[0].windows[71].adr7.in1[0], main.escalarMul.segments[0].windows[71].adr8.in1[0], main.escalarMul.segments[0].cadders[70].in2[0] --> 19971589260780506024737898888323060448789679251096308432726141729527752437283 +main.escalarMul.segments[0].windows[70].out8[1], main.escalarMul.segments[0].windows[70].mux.c[1][7], main.escalarMul.segments[0].windows[70].adr8.out[1], main.escalarMul.segments[0].windows[71].base[1], main.escalarMul.segments[0].windows[71].mux.c[1][0], main.escalarMul.segments[0].windows[71].mux.a[1], main.escalarMul.segments[0].windows[71].dbl2.in[1], main.escalarMul.segments[0].windows[71].adr3.in1[1], main.escalarMul.segments[0].windows[71].adr4.in1[1], main.escalarMul.segments[0].windows[71].adr5.in1[1], main.escalarMul.segments[0].windows[71].adr6.in1[1], main.escalarMul.segments[0].windows[71].adr7.in1[1], main.escalarMul.segments[0].windows[71].adr8.in1[1], main.escalarMul.segments[0].cadders[70].in2[1] --> 3392742951095704402125449965978643595671563265976156593125802960741045228032 +main.escalarMul.segments[0].windows[70].mux.c[0][1], main.escalarMul.segments[0].windows[70].dbl2.out[0], main.escalarMul.segments[0].windows[70].adr3.in2[0] --> 401059095184266536660798638674490109453397968620458744565599540030453779108 +main.escalarMul.segments[0].windows[70].mux.c[0][2], main.escalarMul.segments[0].windows[70].adr3.out[0], main.escalarMul.segments[0].windows[70].adr4.in2[0] --> 5016595589660627132879628286281011867672088117162914980264495483055689397859 +main.escalarMul.segments[0].windows[70].mux.c[0][3], main.escalarMul.segments[0].windows[70].adr4.out[0], main.escalarMul.segments[0].windows[70].adr5.in2[0] --> 21758721638250395551079505880044332235444657529326784002354789749936635311695 +main.escalarMul.segments[0].windows[70].mux.c[0][4], main.escalarMul.segments[0].windows[70].adr5.out[0], main.escalarMul.segments[0].windows[70].adr6.in2[0] --> 18608437789973072633735291306202496040729572133127433693246663915447440910263 +main.escalarMul.segments[0].windows[70].mux.c[0][5], main.escalarMul.segments[0].windows[70].adr6.out[0], main.escalarMul.segments[0].windows[70].adr7.in2[0] --> 15461046861871884196072972303581149177553402944013714965241687730475731812656 +main.escalarMul.segments[0].windows[70].mux.c[0][6], main.escalarMul.segments[0].windows[70].adr7.out[0], main.escalarMul.segments[0].windows[70].adr8.in2[0] --> 574000168935720592201409032573921214149168921511271179700042993218103034870 +main.escalarMul.segments[0].windows[70].mux.c[1][1], main.escalarMul.segments[0].windows[70].dbl2.out[1], main.escalarMul.segments[0].windows[70].adr3.in2[1] --> 8700561939305228446650236013327943602635750165562410967117292001740313995018 +main.escalarMul.segments[0].windows[70].mux.c[1][2], main.escalarMul.segments[0].windows[70].adr3.out[1], main.escalarMul.segments[0].windows[70].adr4.in2[1] --> 5138624910212599353337572434087475248778586554997111866765889833063278116456 +main.escalarMul.segments[0].windows[70].mux.c[1][3], main.escalarMul.segments[0].windows[70].adr4.out[1], main.escalarMul.segments[0].windows[70].adr5.in2[1] --> 1232653643684205436371519497568268264686630149668882979666672173991748173940 +main.escalarMul.segments[0].windows[70].mux.c[1][4], main.escalarMul.segments[0].windows[70].adr5.out[1], main.escalarMul.segments[0].windows[70].adr6.in2[1] --> 6783308228568778111260540878284692888219013099000909933312091218856165543347 +main.escalarMul.segments[0].windows[70].mux.c[1][5], main.escalarMul.segments[0].windows[70].adr6.out[1], main.escalarMul.segments[0].windows[70].adr7.in2[1] --> 17904843501522086754931962730098250174192990490342837934263832662117046018688 +main.escalarMul.segments[0].windows[70].mux.c[1][6], main.escalarMul.segments[0].windows[70].adr7.out[1], main.escalarMul.segments[0].windows[70].adr8.in2[1] --> 2070921128668932750181838882427043204482699082895548359762418584013554370397 +main.escalarMul.segments[0].windows[70].mux.a210[0] --> 11454984108030407852226643668752254929559661837636619676817810222322655443989 +main.escalarMul.segments[0].windows[70].mux.a210[1] --> 18853532293968892699539110933149005468453292015874709297754105850060560951381 +main.escalarMul.segments[0].windows[70].mux.a21[0] --> 15474381491490635406512387165134364392782083709571717220273861939974800639285 +main.escalarMul.segments[0].windows[70].mux.a21[1] --> 17878761194904298402425904309005613468071129576484206035954892649463621070275 +main.escalarMul.segments[0].windows[70].mux.a20[0] --> 13088721807063884384356374338490839025856643480200582897816198433681856540205 +main.escalarMul.segments[0].windows[70].mux.a20[1] --> 8262503666825548091616958832179076995375892972950162166406700372314268344387 +main.escalarMul.segments[0].windows[70].mux.a2[0] --> 1971265959623733275055799326415820042243361495192673322859889756763421493343 +main.escalarMul.segments[0].windows[70].mux.a2[1] --> 941777895391310216664767884591229576181347351830264800739840288062463679283 +main.escalarMul.segments[0].windows[70].mux.a10[0] --> 11089995911915566017972165189618231168257017681062136304213264698958703056031 +main.escalarMul.segments[0].windows[70].mux.a10[1] --> 15123239999183120753225889789103587813858323576696039622053945456557666422147 +main.escalarMul.segments[0].windows[70].mux.a1[0] --> 10267666631150562996446542051751610957734241879644188953575925510947478476556 +main.escalarMul.segments[0].windows[70].mux.a1[1] --> 21185337448874406680988205185651287025289285208242501077891843088845384748009 +main.escalarMul.segments[0].windows[70].mux.a0[0] --> 5652130136674202400227712404145089199515551731101732717877029567922242857805 +main.escalarMul.segments[0].windows[70].mux.a0[1] --> 2859031606127760552054463019634480290598084418391765834545041070946612130954 +main.escalarMul.segments[0].windows[70].mux.s10 --> 1 +main.escalarMul.segments[0].windows[70].dbl2.lamda --> 1208650129185510338504297017528967062741753285860256851526668597600958597268 +main.escalarMul.segments[0].windows[70].dbl2.x1_2 --> 132109544932312829249222463004126032837197204038864303686805962553807867842 +main.escalarMul.segments[0].windows[70].adr3.lamda --> 21732747817736760313954524569418150590400005758622150463363446885422921567284 +main.escalarMul.segments[0].windows[70].adr4.lamda --> 14324299276722264570067911778997753377542083121590604173030440048879112722672 +main.escalarMul.segments[0].windows[70].adr5.lamda --> 16420268389007246291859411338300971956656912058078126702018511944576753231965 +main.escalarMul.segments[0].windows[70].adr6.lamda --> 652927245010054030554017639074619060937019710669322757717521670553588063463 +main.escalarMul.segments[0].windows[70].adr7.lamda --> 14015115301905205991747197711978640948642979727097947294615726914915730026406 +main.escalarMul.segments[0].windows[70].adr8.lamda --> 14563413455745747071438757216400977155676271319908087838300292439396862073605 +main.escalarMul.segments[0].adders[69].out[0], main.escalarMul.segments[0].adders[70].in1[0] --> 8012905315184288231741871743345944995192313597734829904584298624445500754571 +main.escalarMul.segments[0].adders[69].out[1], main.escalarMul.segments[0].adders[70].in1[1] --> 2953672207483634837821766051076725670154986326491727325480577517314216179507 +main.escalarMul.segments[0].adders[69].lamda --> 14634038171308201620616278213687942525857728238945929638757162136150450220816 +main.escalarMul.segments[0].cadders[69].out[0], main.escalarMul.segments[0].cadders[70].in1[0] --> 21843684359321589912352566754610116703345984318163944794628833986030291625999 +main.escalarMul.segments[0].cadders[69].out[1], main.escalarMul.segments[0].cadders[70].in1[1] --> 17565916732718541587700642351868069233299976061278323646227426810316929704022 +main.escalarMul.segments[0].cadders[69].lamda --> 7226903112518615519737080346087828150124346781395091383070459998469684585548 +main.escalarMul.segments[0].windows[71].out[0], main.escalarMul.segments[0].windows[71].mux.out[0], main.escalarMul.segments[0].adders[70].in2[0] --> 19971589260780506024737898888323060448789679251096308432726141729527752437283 +main.escalarMul.segments[0].windows[71].out[1], main.escalarMul.segments[0].windows[71].mux.out[1], main.escalarMul.segments[0].adders[70].in2[1] --> 3392742951095704402125449965978643595671563265976156593125802960741045228032 +main.escalarMul.segments[0].windows[71].out8[0], main.escalarMul.segments[0].windows[71].mux.c[0][7], main.escalarMul.segments[0].windows[71].adr8.out[0], main.escalarMul.segments[0].windows[72].base[0], main.escalarMul.segments[0].windows[72].mux.c[0][0], main.escalarMul.segments[0].windows[72].mux.a[0], main.escalarMul.segments[0].windows[72].dbl2.in[0], main.escalarMul.segments[0].windows[72].adr3.in1[0], main.escalarMul.segments[0].windows[72].adr4.in1[0], main.escalarMul.segments[0].windows[72].adr5.in1[0], main.escalarMul.segments[0].windows[72].adr6.in1[0], main.escalarMul.segments[0].windows[72].adr7.in1[0], main.escalarMul.segments[0].windows[72].adr8.in1[0], main.escalarMul.segments[0].cadders[71].in2[0] --> 1027636859865629222150769210380658074881158248912366239118410784639808583511 +main.escalarMul.segments[0].windows[71].out8[1], main.escalarMul.segments[0].windows[71].mux.c[1][7], main.escalarMul.segments[0].windows[71].adr8.out[1], main.escalarMul.segments[0].windows[72].base[1], main.escalarMul.segments[0].windows[72].mux.c[1][0], main.escalarMul.segments[0].windows[72].mux.a[1], main.escalarMul.segments[0].windows[72].dbl2.in[1], main.escalarMul.segments[0].windows[72].adr3.in1[1], main.escalarMul.segments[0].windows[72].adr4.in1[1], main.escalarMul.segments[0].windows[72].adr5.in1[1], main.escalarMul.segments[0].windows[72].adr6.in1[1], main.escalarMul.segments[0].windows[72].adr7.in1[1], main.escalarMul.segments[0].windows[72].adr8.in1[1], main.escalarMul.segments[0].cadders[71].in2[1] --> 3578187241558796396169078277509406618147131117075995212913909890519135010511 +main.escalarMul.segments[0].windows[71].mux.c[0][1], main.escalarMul.segments[0].windows[71].dbl2.out[0], main.escalarMul.segments[0].windows[71].adr3.in2[0] --> 13466454645262825924127784909631588637443059760697627117170313148993265270780 +main.escalarMul.segments[0].windows[71].mux.c[0][2], main.escalarMul.segments[0].windows[71].adr3.out[0], main.escalarMul.segments[0].windows[71].adr4.in2[0] --> 14110980128757960791009258808264314750772281307088379393272763119850954185253 +main.escalarMul.segments[0].windows[71].mux.c[0][3], main.escalarMul.segments[0].windows[71].adr4.out[0], main.escalarMul.segments[0].windows[71].adr5.in2[0] --> 21824584872895117670122852790361184263905436578721831674468012072667602854153 +main.escalarMul.segments[0].windows[71].mux.c[0][4], main.escalarMul.segments[0].windows[71].adr5.out[0], main.escalarMul.segments[0].windows[71].adr6.in2[0] --> 2725503997736224442514470203404179203280363983605958169449233030837590318131 +main.escalarMul.segments[0].windows[71].mux.c[0][5], main.escalarMul.segments[0].windows[71].adr6.out[0], main.escalarMul.segments[0].windows[71].adr7.in2[0] --> 19787038375834956066812311731869162061556031348799142151784681259947643867764 +main.escalarMul.segments[0].windows[71].mux.c[0][6], main.escalarMul.segments[0].windows[71].adr7.out[0], main.escalarMul.segments[0].windows[71].adr8.in2[0] --> 2655672234360433583660136402151449115823595275969068211917605991381962106497 +main.escalarMul.segments[0].windows[71].mux.c[1][1], main.escalarMul.segments[0].windows[71].dbl2.out[1], main.escalarMul.segments[0].windows[71].adr3.in2[1] --> 13621880667059446975369191495580737071467239575845005227838306899506199375569 +main.escalarMul.segments[0].windows[71].mux.c[1][2], main.escalarMul.segments[0].windows[71].adr3.out[1], main.escalarMul.segments[0].windows[71].adr4.in2[1] --> 3059087164703462441562014442651768768645398239526850021767165515865398956849 +main.escalarMul.segments[0].windows[71].mux.c[1][3], main.escalarMul.segments[0].windows[71].adr4.out[1], main.escalarMul.segments[0].windows[71].adr5.in2[1] --> 21531400314360593835035208323901494602195246726478165743508297813320156176091 +main.escalarMul.segments[0].windows[71].mux.c[1][4], main.escalarMul.segments[0].windows[71].adr5.out[1], main.escalarMul.segments[0].windows[71].adr6.in2[1] --> 2956010572532035075479807907095514668730366295820996905527185251164637041848 +main.escalarMul.segments[0].windows[71].mux.c[1][5], main.escalarMul.segments[0].windows[71].adr6.out[1], main.escalarMul.segments[0].windows[71].adr7.in2[1] --> 262794144472937820612550684637282370856054416632735135085446864788792556726 +main.escalarMul.segments[0].windows[71].mux.c[1][6], main.escalarMul.segments[0].windows[71].adr7.out[1], main.escalarMul.segments[0].windows[71].adr8.in2[1] --> 16362108622618480722853593996023434007836546059362803957028574159868932996899 +main.escalarMul.segments[0].windows[71].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[71].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[71].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[71].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[71].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[71].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[71].mux.a2[0] --> 4642157608794993640022977060338393843039049132925684080421295487885646376465 +main.escalarMul.segments[0].windows[71].mux.a2[1] --> 21451510493275605895600763686374146161607167430260874656099586476999400309433 +main.escalarMul.segments[0].windows[71].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[71].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[71].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[71].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[71].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[71].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[71].mux.s10 --> 0 +main.escalarMul.segments[0].windows[71].dbl2.lamda --> 2340043767590565989407791639948632381236002169595998000021517190608789306281 +main.escalarMul.segments[0].windows[71].dbl2.x1_2 --> 4539453471903846393875247754113788282417780580694372883082592389223492490196 +main.escalarMul.segments[0].windows[71].adr3.lamda --> 18566484371609012059290826199976744661778473924202893993839545367000860119071 +main.escalarMul.segments[0].windows[71].adr4.lamda --> 5493778089223472476577247497128990543248607293504443853654033623786364576125 +main.escalarMul.segments[0].windows[71].adr5.lamda --> 4463992285838139851132627959887658289867799411258006995351045169389279923144 +main.escalarMul.segments[0].windows[71].adr6.lamda --> 9082991459625091717465114678268502575846469448702390987754398334935514888308 +main.escalarMul.segments[0].windows[71].adr7.lamda --> 17919248506092402277230480622611055870623792325496874870314036927666243474303 +main.escalarMul.segments[0].windows[71].adr8.lamda --> 11672457216234150987843976452768440415709446164063110585957747748238037089882 +main.escalarMul.segments[0].adders[70].out[0], main.escalarMul.segments[0].adders[71].in1[0] --> 9306163844676892908412351090790696950747798831503036134792410267240641200377 +main.escalarMul.segments[0].adders[70].out[1], main.escalarMul.segments[0].adders[71].in1[1] --> 1498833180023781744324988831654076583687283756558486393637262069546599492558 +main.escalarMul.segments[0].adders[70].lamda --> 16778072193600461878545525237708697972918343813466085707410576186336758858067 +main.escalarMul.segments[0].cadders[70].out[0], main.escalarMul.segments[0].cadders[71].in1[0] --> 18891767895719324261157456202137731220532306603808779394618044062418779956013 +main.escalarMul.segments[0].cadders[70].out[1], main.escalarMul.segments[0].cadders[71].in1[1] --> 526327029647454934001642958544686306423852798688354741673855346706526029913 +main.escalarMul.segments[0].cadders[70].lamda --> 10022600494950856471356943933137578908133886163014626574822356050197515617124 +main.escalarMul.segments[0].windows[72].out[0], main.escalarMul.segments[0].windows[72].mux.out[0], main.escalarMul.segments[0].adders[71].in2[0] --> 10686711458440435438216799772219854295768239557048729589543230450858103652585 +main.escalarMul.segments[0].windows[72].out[1], main.escalarMul.segments[0].windows[72].mux.out[1], main.escalarMul.segments[0].adders[71].in2[1] --> 8984391098289042544025663276927894127155116019644853199174120445704417390433 +main.escalarMul.segments[0].windows[72].out8[0], main.escalarMul.segments[0].windows[72].mux.c[0][7], main.escalarMul.segments[0].windows[72].adr8.out[0], main.escalarMul.segments[0].windows[73].base[0], main.escalarMul.segments[0].windows[73].mux.c[0][0], main.escalarMul.segments[0].windows[73].mux.a[0], main.escalarMul.segments[0].windows[73].dbl2.in[0], main.escalarMul.segments[0].windows[73].adr3.in1[0], main.escalarMul.segments[0].windows[73].adr4.in1[0], main.escalarMul.segments[0].windows[73].adr5.in1[0], main.escalarMul.segments[0].windows[73].adr6.in1[0], main.escalarMul.segments[0].windows[73].adr7.in1[0], main.escalarMul.segments[0].windows[73].adr8.in1[0], main.escalarMul.segments[0].cadders[72].in2[0] --> 1233822810435792557533444307899374117591876329740329150892005355631761321395 +main.escalarMul.segments[0].windows[72].out8[1], main.escalarMul.segments[0].windows[72].mux.c[1][7], main.escalarMul.segments[0].windows[72].adr8.out[1], main.escalarMul.segments[0].windows[73].base[1], main.escalarMul.segments[0].windows[73].mux.c[1][0], main.escalarMul.segments[0].windows[73].mux.a[1], main.escalarMul.segments[0].windows[73].dbl2.in[1], main.escalarMul.segments[0].windows[73].adr3.in1[1], main.escalarMul.segments[0].windows[73].adr4.in1[1], main.escalarMul.segments[0].windows[73].adr5.in1[1], main.escalarMul.segments[0].windows[73].adr6.in1[1], main.escalarMul.segments[0].windows[73].adr7.in1[1], main.escalarMul.segments[0].windows[73].adr8.in1[1], main.escalarMul.segments[0].cadders[72].in2[1] --> 15747043505953737291943882487615277067526927777031482313191790539267689525471 +main.escalarMul.segments[0].windows[72].mux.c[0][1], main.escalarMul.segments[0].windows[72].dbl2.out[0], main.escalarMul.segments[0].windows[72].adr3.in2[0] --> 13976244512635305879249474474790748931268535609658618496759159933691632161642 +main.escalarMul.segments[0].windows[72].mux.c[0][2], main.escalarMul.segments[0].windows[72].adr3.out[0], main.escalarMul.segments[0].windows[72].adr4.in2[0] --> 12592422722044992788473087689554663515402491503094186103040124962356070030249 +main.escalarMul.segments[0].windows[72].mux.c[0][3], main.escalarMul.segments[0].windows[72].adr4.out[0], main.escalarMul.segments[0].windows[72].adr5.in2[0] --> 13032649762132737134102568069401614073184472539099774324713806233266376947204 +main.escalarMul.segments[0].windows[72].mux.c[0][4], main.escalarMul.segments[0].windows[72].adr5.out[0], main.escalarMul.segments[0].windows[72].adr6.in2[0] --> 2125144472253421359192279655659267098919102673275615321053919027088301977378 +main.escalarMul.segments[0].windows[72].mux.c[0][5], main.escalarMul.segments[0].windows[72].adr6.out[0], main.escalarMul.segments[0].windows[72].adr7.in2[0] --> 3811079457075828945697030330673790603435640329228295723589660572440347594883 +main.escalarMul.segments[0].windows[72].mux.c[0][6], main.escalarMul.segments[0].windows[72].adr7.out[0], main.escalarMul.segments[0].windows[72].adr8.in2[0] --> 10686711458440435438216799772219854295768239557048729589543230450858103652585 +main.escalarMul.segments[0].windows[72].mux.c[1][1], main.escalarMul.segments[0].windows[72].dbl2.out[1], main.escalarMul.segments[0].windows[72].adr3.in2[1] --> 21193235894490960201714860987564114807320368031529482968596889149182414654920 +main.escalarMul.segments[0].windows[72].mux.c[1][2], main.escalarMul.segments[0].windows[72].adr3.out[1], main.escalarMul.segments[0].windows[72].adr4.in2[1] --> 17848888697232807136645751081862000008177494793876359864042017914542732864716 +main.escalarMul.segments[0].windows[72].mux.c[1][3], main.escalarMul.segments[0].windows[72].adr4.out[1], main.escalarMul.segments[0].windows[72].adr5.in2[1] --> 17486110451124455313951980890258306396033363121395752678672892862426008701301 +main.escalarMul.segments[0].windows[72].mux.c[1][4], main.escalarMul.segments[0].windows[72].adr5.out[1], main.escalarMul.segments[0].windows[72].adr6.in2[1] --> 7188425424309670849845653085970620254542892523437507631005758563400312757273 +main.escalarMul.segments[0].windows[72].mux.c[1][5], main.escalarMul.segments[0].windows[72].adr6.out[1], main.escalarMul.segments[0].windows[72].adr7.in2[1] --> 8550914119457405800146117459399388871454547723366924239915381286994707967955 +main.escalarMul.segments[0].windows[72].mux.c[1][6], main.escalarMul.segments[0].windows[72].adr7.out[1], main.escalarMul.segments[0].windows[72].adr8.in2[1] --> 8984391098289042544025663276927894127155116019644853199174120445704417390433 +main.escalarMul.segments[0].windows[72].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[72].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[72].mux.a21[0] --> 18885023995846925734948607382643856844876168030007328748265801432629348724086 +main.escalarMul.segments[0].windows[72].mux.a21[1] --> 9413507090144636175949743131861955571130224219823015260738458044856315274572 +main.escalarMul.segments[0].windows[72].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[72].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[72].mux.a2[0] --> 1097507612387792137041510445278609024037944424363249081935508242448493393867 +main.escalarMul.segments[0].windows[72].mux.a2[1] --> 3610238182750874453676574808461213636395761406361512418091848672881177746762 +main.escalarMul.segments[0].windows[72].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[72].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[72].mux.a1[0] --> 11564785862179363566322318479174005440521333254181819863921714177716261446738 +main.escalarMul.segments[0].windows[72].mux.a1[1] --> 14270701455674010740476672804352593390030363676800364651128108024023597854205 +main.escalarMul.segments[0].windows[72].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[72].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[72].mux.s10 --> 0 +main.escalarMul.segments[0].windows[72].dbl2.lamda --> 12850378279664411318567236036255239228688637425540381173276637721844938785837 +main.escalarMul.segments[0].windows[72].dbl2.x1_2 --> 15801154287360915998538395322814893501624048046414150346215650616236651307202 +main.escalarMul.segments[0].windows[72].adr3.lamda --> 1391794893940301102381652082147647709192064342458927516701193200531619800376 +main.escalarMul.segments[0].windows[72].adr4.lamda --> 20318303769772746048840184402481742150304515482131418333216562766124339341717 +main.escalarMul.segments[0].windows[72].adr5.lamda --> 14018179021597602074522805634783028703620005158631710871813205622926997252903 +main.escalarMul.segments[0].windows[72].adr6.lamda --> 2263460327051292342537156824367408662369820747858886304013985315824450479059 +main.escalarMul.segments[0].windows[72].adr7.lamda --> 6250736738453323358799729848852589784157577985273707057980332936547940718022 +main.escalarMul.segments[0].windows[72].adr8.lamda --> 13246935972751835427513119045843323021013822758748834374648426595489916678612 +main.escalarMul.segments[0].adders[71].out[0], main.escalarMul.segments[0].adders[72].in1[0] --> 421381049564416745489080663825542119331711297185195706843320738790192237608 +main.escalarMul.segments[0].adders[71].out[1], main.escalarMul.segments[0].adders[72].in1[1] --> 13447020195349963975578123494836577872403965361670621255869851801211935473262 +main.escalarMul.segments[0].adders[71].lamda --> 12326196690481382400343307051582018857944237435090536506101517377487154736954 +main.escalarMul.segments[0].cadders[71].out[0], main.escalarMul.segments[0].cadders[72].in1[0] --> 5260626843692539990655671585509030139593566677582275560436555723688448729317 +main.escalarMul.segments[0].cadders[71].out[1], main.escalarMul.segments[0].cadders[72].in1[1] --> 17078861948798332375961972850509908236425389252847022234773157223602955198856 +main.escalarMul.segments[0].cadders[71].lamda --> 5750202516481068187302661507744056384099812398520842169544890437046989365048 +main.escalarMul.segments[0].windows[73].out[0], main.escalarMul.segments[0].windows[73].mux.out[0], main.escalarMul.segments[0].adders[72].in2[0] --> 15921487865153044982130202637901771449095045813343616662304188399260651042241 +main.escalarMul.segments[0].windows[73].out[1], main.escalarMul.segments[0].windows[73].mux.out[1], main.escalarMul.segments[0].adders[72].in2[1] --> 7242825954238225512139522683575556338631925592831910740475989310786803753260 +main.escalarMul.segments[0].windows[73].out8[0], main.escalarMul.segments[0].windows[73].mux.c[0][7], main.escalarMul.segments[0].windows[73].adr8.out[0], main.escalarMul.segments[0].windows[74].base[0], main.escalarMul.segments[0].windows[74].mux.c[0][0], main.escalarMul.segments[0].windows[74].mux.a[0], main.escalarMul.segments[0].windows[74].dbl2.in[0], main.escalarMul.segments[0].windows[74].adr3.in1[0], main.escalarMul.segments[0].windows[74].adr4.in1[0], main.escalarMul.segments[0].windows[74].adr5.in1[0], main.escalarMul.segments[0].windows[74].adr6.in1[0], main.escalarMul.segments[0].windows[74].adr7.in1[0], main.escalarMul.segments[0].windows[74].adr8.in1[0], main.escalarMul.segments[0].cadders[73].in2[0] --> 15921487865153044982130202637901771449095045813343616662304188399260651042241 +main.escalarMul.segments[0].windows[73].out8[1], main.escalarMul.segments[0].windows[73].mux.c[1][7], main.escalarMul.segments[0].windows[73].adr8.out[1], main.escalarMul.segments[0].windows[74].base[1], main.escalarMul.segments[0].windows[74].mux.c[1][0], main.escalarMul.segments[0].windows[74].mux.a[1], main.escalarMul.segments[0].windows[74].dbl2.in[1], main.escalarMul.segments[0].windows[74].adr3.in1[1], main.escalarMul.segments[0].windows[74].adr4.in1[1], main.escalarMul.segments[0].windows[74].adr5.in1[1], main.escalarMul.segments[0].windows[74].adr6.in1[1], main.escalarMul.segments[0].windows[74].adr7.in1[1], main.escalarMul.segments[0].windows[74].adr8.in1[1], main.escalarMul.segments[0].cadders[73].in2[1] --> 7242825954238225512139522683575556338631925592831910740475989310786803753260 +main.escalarMul.segments[0].windows[73].mux.c[0][1], main.escalarMul.segments[0].windows[73].dbl2.out[0], main.escalarMul.segments[0].windows[73].adr3.in2[0] --> 12592255069016563679652070013426181043774944302034072075141361413296575291599 +main.escalarMul.segments[0].windows[73].mux.c[0][2], main.escalarMul.segments[0].windows[73].adr3.out[0], main.escalarMul.segments[0].windows[73].adr4.in2[0] --> 7582331362818897876300381794901531278372013499894780532351602744014791573494 +main.escalarMul.segments[0].windows[73].mux.c[0][3], main.escalarMul.segments[0].windows[73].adr4.out[0], main.escalarMul.segments[0].windows[73].adr5.in2[0] --> 17642745098739646399374653807088614217928047606948748521299731729345922720171 +main.escalarMul.segments[0].windows[73].mux.c[0][4], main.escalarMul.segments[0].windows[73].adr5.out[0], main.escalarMul.segments[0].windows[73].adr6.in2[0] --> 18967121940153591644815477972328876388648294718098456938104960453709046445185 +main.escalarMul.segments[0].windows[73].mux.c[0][5], main.escalarMul.segments[0].windows[73].adr6.out[0], main.escalarMul.segments[0].windows[73].adr7.in2[0] --> 4701779042439791632153688517020823696744058335340786288808666446671246539984 +main.escalarMul.segments[0].windows[73].mux.c[0][6], main.escalarMul.segments[0].windows[73].adr7.out[0], main.escalarMul.segments[0].windows[73].adr8.in2[0] --> 19928350822658633475820967393683240107058204420213119002524286516991061211209 +main.escalarMul.segments[0].windows[73].mux.c[1][1], main.escalarMul.segments[0].windows[73].dbl2.out[1], main.escalarMul.segments[0].windows[73].adr3.in2[1] --> 5981074546781745739343399383627900288551085044361290574327771108858585917623 +main.escalarMul.segments[0].windows[73].mux.c[1][2], main.escalarMul.segments[0].windows[73].adr3.out[1], main.escalarMul.segments[0].windows[73].adr4.in2[1] --> 12014436580201360697077000352280285572058154921129549674376792398838345062251 +main.escalarMul.segments[0].windows[73].mux.c[1][3], main.escalarMul.segments[0].windows[73].adr4.out[1], main.escalarMul.segments[0].windows[73].adr5.in2[1] --> 8457412125891221183593692532351602427751838260391873931572488978079961273893 +main.escalarMul.segments[0].windows[73].mux.c[1][4], main.escalarMul.segments[0].windows[73].adr5.out[1], main.escalarMul.segments[0].windows[73].adr6.in2[1] --> 4503792438917028766762949959952403597579001686989884520949411198093588751705 +main.escalarMul.segments[0].windows[73].mux.c[1][5], main.escalarMul.segments[0].windows[73].adr6.out[1], main.escalarMul.segments[0].windows[73].adr7.in2[1] --> 19968972756166508768129145781559745198832843559194622133052825597404842804159 +main.escalarMul.segments[0].windows[73].mux.c[1][6], main.escalarMul.segments[0].windows[73].adr7.out[1], main.escalarMul.segments[0].windows[73].adr8.in2[1] --> 16464028191465452788528321330822530201154397115335913101641326758669571868916 +main.escalarMul.segments[0].windows[73].mux.a210[0] --> 11556498462868234118015378392866308020568111641127943244377422961641072559760 +main.escalarMul.segments[0].windows[73].mux.a210[1] --> 12881158684339991127620641737601541078650889334190812718067940516306875003634 +main.escalarMul.segments[0].windows[73].mux.a21[0] --> 16500963201961211734484957679609481646178136932376245026657932861474793009542 +main.escalarMul.segments[0].windows[73].mux.a21[1] --> 15692842678300800616632253506205118099044168284247961219506913701005327580431 +main.escalarMul.segments[0].windows[73].mux.a20[0] --> 18152710587383979309712396329679690559009424445780655113850758308449003115829 +main.escalarMul.segments[0].windows[73].mux.a20[1] --> 3342906404582196331720273180337443291681320204458895007269229643144549164685 +main.escalarMul.segments[0].windows[73].mux.a2[0] --> 17733299129717799087282033664429502271056418388358127787212955098077285123790 +main.escalarMul.segments[0].windows[73].mux.a2[1] --> 10644991804802566697065473217594401618600438310374436551455824845401707721851 +main.escalarMul.segments[0].windows[73].mux.a10[0] --> 20590224349179252623202052051917551101921330535176259408396977114242125672090 +main.escalarMul.segments[0].windows[73].mux.a10[1] --> 6208944504861852039117175284058693634669526071932515996059716009650719819490 +main.escalarMul.segments[0].windows[73].mux.a1[0] --> 6348508552383105318766937487002157160780137170154451381459597388383030252099 +main.escalarMul.segments[0].windows[73].mux.a1[1] --> 18155635946086898627379523609922283593079591544514101704883206046146464032397 +main.escalarMul.segments[0].windows[73].mux.a0[0] --> 11358432258580771122118625705526806926183067972293742924249356057664813970204 +main.escalarMul.segments[0].windows[73].mux.a0[1] --> 12122273912667283669645922641269898309572521667745842604834184756166704887769 +main.escalarMul.segments[0].windows[73].mux.s10 --> 1 +main.escalarMul.segments[0].windows[73].dbl2.lamda --> 10744348025773709809277961837084234481217170867641883472824993129085850213097 +main.escalarMul.segments[0].windows[73].dbl2.x1_2 --> 13640324856101845723005456655884787000116383597052541142063734335129050985170 +main.escalarMul.segments[0].windows[73].adr3.lamda --> 14037766731821778443783238573535577329688652844865827375310891139729908700511 +main.escalarMul.segments[0].windows[73].adr4.lamda --> 13369204692661621189688167264133264652154202343898717371274604451326667202835 +main.escalarMul.segments[0].windows[73].adr5.lamda --> 9339433625812389548380933252819857252072554617248705763127296823844177706893 +main.escalarMul.segments[0].windows[73].adr6.lamda --> 7834293338892846430924861760813198148976214655455757163578480190454189477366 +main.escalarMul.segments[0].windows[73].adr7.lamda --> 785872069394593346467999059594956168052181448889589976837600783980189974190 +main.escalarMul.segments[0].windows[73].adr8.lamda --> 4462528076719201720853436603231926098515620840217733292990518975012730807866 +main.escalarMul.segments[0].adders[72].out[0], main.escalarMul.segments[0].adders[73].in1[0] --> 1922234704308814416531716922291406796930084752755357632505353897072221576700 +main.escalarMul.segments[0].adders[72].out[1], main.escalarMul.segments[0].adders[73].in1[1] --> 17284529193218285068528291821671635772867837075858737704708254715644914043343 +main.escalarMul.segments[0].adders[72].lamda --> 12413855629924753352171654089043372900953937407356121840654541032219639526663 +main.escalarMul.segments[0].cadders[72].out[0], main.escalarMul.segments[0].cadders[73].in1[0] --> 3900097837514606277624440918591411968501720585356128653818548434862880963779 +main.escalarMul.segments[0].cadders[72].out[1], main.escalarMul.segments[0].cadders[73].in1[1] --> 8879960897924587431971631570870957238224409369008153584722197528169287970831 +main.escalarMul.segments[0].cadders[72].lamda --> 7800568575860255583332950902724757402378606589109970780909868431194492369797 +main.escalarMul.segments[0].windows[74].out[0], main.escalarMul.segments[0].windows[74].mux.out[0], main.escalarMul.segments[0].adders[73].in2[0] --> 4025266780433586881345639503661801211015956168651443667680696523070498745204 +main.escalarMul.segments[0].windows[74].out[1], main.escalarMul.segments[0].windows[74].mux.out[1], main.escalarMul.segments[0].adders[73].in2[1] --> 13566423190453340155313215290208306223793960823588209351408511248087423516923 +main.escalarMul.segments[0].windows[74].out8[0], main.escalarMul.segments[0].windows[74].mux.c[0][7], main.escalarMul.segments[0].windows[74].adr8.out[0], main.escalarMul.segments[0].windows[75].base[0], main.escalarMul.segments[0].windows[75].mux.c[0][0], main.escalarMul.segments[0].windows[75].mux.a[0], main.escalarMul.segments[0].windows[75].dbl2.in[0], main.escalarMul.segments[0].windows[75].adr3.in1[0], main.escalarMul.segments[0].windows[75].adr4.in1[0], main.escalarMul.segments[0].windows[75].adr5.in1[0], main.escalarMul.segments[0].windows[75].adr6.in1[0], main.escalarMul.segments[0].windows[75].adr7.in1[0], main.escalarMul.segments[0].windows[75].adr8.in1[0], main.escalarMul.segments[0].cadders[74].in2[0] --> 11308069425292217675537157598085129442610242346820424296948074365636707670143 +main.escalarMul.segments[0].windows[74].out8[1], main.escalarMul.segments[0].windows[74].mux.c[1][7], main.escalarMul.segments[0].windows[74].adr8.out[1], main.escalarMul.segments[0].windows[75].base[1], main.escalarMul.segments[0].windows[75].mux.c[1][0], main.escalarMul.segments[0].windows[75].mux.a[1], main.escalarMul.segments[0].windows[75].dbl2.in[1], main.escalarMul.segments[0].windows[75].adr3.in1[1], main.escalarMul.segments[0].windows[75].adr4.in1[1], main.escalarMul.segments[0].windows[75].adr5.in1[1], main.escalarMul.segments[0].windows[75].adr6.in1[1], main.escalarMul.segments[0].windows[75].adr7.in1[1], main.escalarMul.segments[0].windows[75].adr8.in1[1], main.escalarMul.segments[0].cadders[74].in2[1] --> 8975526283364736577844499904696723365718253935871888141960380682851928707954 +main.escalarMul.segments[0].windows[74].mux.c[0][1], main.escalarMul.segments[0].windows[74].dbl2.out[0], main.escalarMul.segments[0].windows[74].adr3.in2[0] --> 19127470016544669804540046838596891906667664239081181784399238660504648034569 +main.escalarMul.segments[0].windows[74].mux.c[0][2], main.escalarMul.segments[0].windows[74].adr3.out[0], main.escalarMul.segments[0].windows[74].adr4.in2[0] --> 5986517751139440616286954462018250641477501858675202786323375593353489029119 +main.escalarMul.segments[0].windows[74].mux.c[0][3], main.escalarMul.segments[0].windows[74].adr4.out[0], main.escalarMul.segments[0].windows[74].adr5.in2[0] --> 16689073326226404334483047010052398794114456683775138976995039036015239522100 +main.escalarMul.segments[0].windows[74].mux.c[0][4], main.escalarMul.segments[0].windows[74].adr5.out[0], main.escalarMul.segments[0].windows[74].adr6.in2[0] --> 2810063691078285834328970866450727615973117945753369235507404248518451456879 +main.escalarMul.segments[0].windows[74].mux.c[0][5], main.escalarMul.segments[0].windows[74].adr6.out[0], main.escalarMul.segments[0].windows[74].adr7.in2[0] --> 4025266780433586881345639503661801211015956168651443667680696523070498745204 +main.escalarMul.segments[0].windows[74].mux.c[0][6], main.escalarMul.segments[0].windows[74].adr7.out[0], main.escalarMul.segments[0].windows[74].adr8.in2[0] --> 21301895000093108531572662406669974178752038479547262532668039527303116080391 +main.escalarMul.segments[0].windows[74].mux.c[1][1], main.escalarMul.segments[0].windows[74].dbl2.out[1], main.escalarMul.segments[0].windows[74].adr3.in2[1] --> 15015613229128053466442232902035041451254451671636814568820513599217296167955 +main.escalarMul.segments[0].windows[74].mux.c[1][2], main.escalarMul.segments[0].windows[74].adr3.out[1], main.escalarMul.segments[0].windows[74].adr4.in2[1] --> 4910815470894195934935599570836299115727394587002276520825700731754271268414 +main.escalarMul.segments[0].windows[74].mux.c[1][3], main.escalarMul.segments[0].windows[74].adr4.out[1], main.escalarMul.segments[0].windows[74].adr5.in2[1] --> 15008433413572180390131558507028362468224476604736509724210997139145153580033 +main.escalarMul.segments[0].windows[74].mux.c[1][4], main.escalarMul.segments[0].windows[74].adr5.out[1], main.escalarMul.segments[0].windows[74].adr6.in2[1] --> 13930976998906538706304720552768628196586867250038709256372050172281979780256 +main.escalarMul.segments[0].windows[74].mux.c[1][5], main.escalarMul.segments[0].windows[74].adr6.out[1], main.escalarMul.segments[0].windows[74].adr7.in2[1] --> 13566423190453340155313215290208306223793960823588209351408511248087423516923 +main.escalarMul.segments[0].windows[74].mux.c[1][6], main.escalarMul.segments[0].windows[74].adr7.out[1], main.escalarMul.segments[0].windows[74].adr8.in2[1] --> 3721672120546066458686550100381533237854348047929577539814732359810327127564 +main.escalarMul.segments[0].windows[74].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[74].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[74].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[74].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[74].mux.a20[0] --> 19897463809802951446853230181773228226018584197576543653776446199883858791614 +main.escalarMul.segments[0].windows[74].mux.a20[1] --> 13750901788496248716952190264237468003132931895160630610390140973950759817589 +main.escalarMul.segments[0].windows[74].mux.a2[0] --> 8776818697764516074445173973806231255426436532825786916901420035833608910255 +main.escalarMul.segments[0].windows[74].mux.a2[1] --> 6688151044668313194165197869193071857954941657206798515896060861495176026996 +main.escalarMul.segments[0].windows[74].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[74].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[74].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[74].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[74].mux.a0[0] --> 3205982151391624822409844200695120457572618425737565122095050261243996992328 +main.escalarMul.segments[0].windows[74].mux.a0[1] --> 7772787274889827954302710218459485112622526078804903828344524288430492414695 +main.escalarMul.segments[0].windows[74].mux.s10 --> 0 +main.escalarMul.segments[0].windows[74].dbl2.lamda --> 4986441769052055950775571084411477374753504526781649755732060409995440931468 +main.escalarMul.segments[0].windows[74].dbl2.x1_2 --> 16781473233542087450638521265747997788933273013449568042818838911307951368610 +main.escalarMul.segments[0].windows[74].adr3.lamda --> 13930176590355874636796555212374426858367167489021258268527959086374839860731 +main.escalarMul.segments[0].windows[74].adr4.lamda --> 17128748148009740143167592015854520701218174523951054880707873154115118712314 +main.escalarMul.segments[0].windows[74].adr5.lamda --> 314161534592004060554032478762178875747383827962784263747070247077276953019 +main.escalarMul.segments[0].windows[74].adr6.lamda --> 5140677215837500480073039289869629803746774961210498997015761860028532396994 +main.escalarMul.segments[0].windows[74].adr7.lamda --> 17352503689442220466731516491286678035128262999773168105331289316493026293095 +main.escalarMul.segments[0].windows[74].adr8.lamda --> 4095570414558562082558284950895543059781603044767245201262954628806214812276 +main.escalarMul.segments[0].adders[73].out[0], main.escalarMul.segments[0].adders[74].in1[0] --> 18054444894674387837565947713520141911484563039319821997153884166652440604272 +main.escalarMul.segments[0].adders[73].out[1], main.escalarMul.segments[0].adders[74].in1[1] --> 15817724187145914772843275376241660989240153401916706806584589293337407057999 +main.escalarMul.segments[0].adders[73].lamda --> 555148324036337246131956701542317530926424172673574564273343448537776099202 +main.escalarMul.segments[0].cadders[73].out[0], main.escalarMul.segments[0].cadders[74].in1[0] --> 13548214842800333375562518243268517397939875308333102734675221734275827682206 +main.escalarMul.segments[0].cadders[73].out[1], main.escalarMul.segments[0].cadders[74].in1[1] --> 13717602554282412941288129870713428115688426460732951124414738867073894454274 +main.escalarMul.segments[0].cadders[73].lamda --> 18942647312410926893255401062439619900224353491102967486608959318673343676542 +main.escalarMul.segments[0].windows[75].out[0], main.escalarMul.segments[0].windows[75].mux.out[0], main.escalarMul.segments[0].adders[74].in2[0] --> 11308069425292217675537157598085129442610242346820424296948074365636707670143 +main.escalarMul.segments[0].windows[75].out[1], main.escalarMul.segments[0].windows[75].mux.out[1], main.escalarMul.segments[0].adders[74].in2[1] --> 8975526283364736577844499904696723365718253935871888141960380682851928707954 +main.escalarMul.segments[0].windows[75].out8[0], main.escalarMul.segments[0].windows[75].mux.c[0][7], main.escalarMul.segments[0].windows[75].adr8.out[0], main.escalarMul.segments[0].windows[76].base[0], main.escalarMul.segments[0].windows[76].mux.c[0][0], main.escalarMul.segments[0].windows[76].mux.a[0], main.escalarMul.segments[0].windows[76].dbl2.in[0], main.escalarMul.segments[0].windows[76].adr3.in1[0], main.escalarMul.segments[0].windows[76].adr4.in1[0], main.escalarMul.segments[0].windows[76].adr5.in1[0], main.escalarMul.segments[0].windows[76].adr6.in1[0], main.escalarMul.segments[0].windows[76].adr7.in1[0], main.escalarMul.segments[0].windows[76].adr8.in1[0], main.escalarMul.segments[0].cadders[75].in2[0] --> 6989260090669623102715383990717858355243140829272414935082653809621649332885 +main.escalarMul.segments[0].windows[75].out8[1], main.escalarMul.segments[0].windows[75].mux.c[1][7], main.escalarMul.segments[0].windows[75].adr8.out[1], main.escalarMul.segments[0].windows[76].base[1], main.escalarMul.segments[0].windows[76].mux.c[1][0], main.escalarMul.segments[0].windows[76].mux.a[1], main.escalarMul.segments[0].windows[76].dbl2.in[1], main.escalarMul.segments[0].windows[76].adr3.in1[1], main.escalarMul.segments[0].windows[76].adr4.in1[1], main.escalarMul.segments[0].windows[76].adr5.in1[1], main.escalarMul.segments[0].windows[76].adr6.in1[1], main.escalarMul.segments[0].windows[76].adr7.in1[1], main.escalarMul.segments[0].windows[76].adr8.in1[1], main.escalarMul.segments[0].cadders[75].in2[1] --> 14110880527091723758911831839569416405542272200346052137065769409192218774283 +main.escalarMul.segments[0].windows[75].mux.c[0][1], main.escalarMul.segments[0].windows[75].dbl2.out[0], main.escalarMul.segments[0].windows[75].adr3.in2[0] --> 11834876234518050143442036377593231953321774574937406505780624331157539335441 +main.escalarMul.segments[0].windows[75].mux.c[0][2], main.escalarMul.segments[0].windows[75].adr3.out[0], main.escalarMul.segments[0].windows[75].adr4.in2[0] --> 21200291676136268632209840169429913460380969779968544454648741646173560607676 +main.escalarMul.segments[0].windows[75].mux.c[0][3], main.escalarMul.segments[0].windows[75].adr4.out[0], main.escalarMul.segments[0].windows[75].adr5.in2[0] --> 18461373836663068074186694393085384115929964106463065363532280971789131073592 +main.escalarMul.segments[0].windows[75].mux.c[0][4], main.escalarMul.segments[0].windows[75].adr5.out[0], main.escalarMul.segments[0].windows[75].adr6.in2[0] --> 9240105931395633122878028941637802048490367978692137934134393630214283294690 +main.escalarMul.segments[0].windows[75].mux.c[0][5], main.escalarMul.segments[0].windows[75].adr6.out[0], main.escalarMul.segments[0].windows[75].adr7.in2[0] --> 1232236803924813709853006199789578046800363769849834893165052403236565363841 +main.escalarMul.segments[0].windows[75].mux.c[0][6], main.escalarMul.segments[0].windows[75].adr7.out[0], main.escalarMul.segments[0].windows[75].adr8.in2[0] --> 20936376718013680175660564620599514843865569435234955706195683625977567825595 +main.escalarMul.segments[0].windows[75].mux.c[1][1], main.escalarMul.segments[0].windows[75].dbl2.out[1], main.escalarMul.segments[0].windows[75].adr3.in2[1] --> 18735398767770605636981835183554742790371134306499672527633691948931835637206 +main.escalarMul.segments[0].windows[75].mux.c[1][2], main.escalarMul.segments[0].windows[75].adr3.out[1], main.escalarMul.segments[0].windows[75].adr4.in2[1] --> 4574817766029292482029937392051049369656893219599927901229877945513231545079 +main.escalarMul.segments[0].windows[75].mux.c[1][3], main.escalarMul.segments[0].windows[75].adr4.out[1], main.escalarMul.segments[0].windows[75].adr5.in2[1] --> 11346877741783208866022678963347487706648602693793207301589812242220001764088 +main.escalarMul.segments[0].windows[75].mux.c[1][4], main.escalarMul.segments[0].windows[75].adr5.out[1], main.escalarMul.segments[0].windows[75].adr6.in2[1] --> 21350276278229434428761513324407007172579899050272402860426869093939803641327 +main.escalarMul.segments[0].windows[75].mux.c[1][5], main.escalarMul.segments[0].windows[75].adr6.out[1], main.escalarMul.segments[0].windows[75].adr7.in2[1] --> 14067683434570657909615720304838896385751210928570670545624293643790948828207 +main.escalarMul.segments[0].windows[75].mux.c[1][6], main.escalarMul.segments[0].windows[75].adr7.out[1], main.escalarMul.segments[0].windows[75].adr8.in2[1] --> 18994616682079955697214683650919635409244988547461650572461772050779262415775 +main.escalarMul.segments[0].windows[75].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[75].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[75].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[75].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[75].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[75].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[75].mux.a2[0] --> 19820279377942690669587277088809947694428490032287747980884523451153384120164 +main.escalarMul.segments[0].windows[75].mux.a2[1] --> 12374749994864697850917013419710283806861645114400514718466488411087874933373 +main.escalarMul.segments[0].windows[75].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[75].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[75].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[75].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[75].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[75].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[75].mux.s10 --> 0 +main.escalarMul.segments[0].windows[75].dbl2.lamda --> 11743889359125554173616693213895955683532915481237578365494243862179679572781 +main.escalarMul.segments[0].windows[75].dbl2.x1_2 --> 1134109656485192654750136998103180087313591455092661769977204514914321071260 +main.escalarMul.segments[0].windows[75].adr3.lamda --> 1601740943761369081427460552391967762312159095716834016043711554217194995994 +main.escalarMul.segments[0].windows[75].adr4.lamda --> 8130661407326559098500792939468943561350941468361923915821293711698581991896 +main.escalarMul.segments[0].windows[75].adr5.lamda --> 13657536538179709355959371575661980001993587508872133689009195776477790254194 +main.escalarMul.segments[0].windows[75].adr6.lamda --> 15826908896312419499889143998939965117595092145202662194845817349732943044476 +main.escalarMul.segments[0].windows[75].adr7.lamda --> 2460960867723545921726265396799824757457486111678131705493572850104250450422 +main.escalarMul.segments[0].windows[75].adr8.lamda --> 3819361592988980862243238404827230015357061259538123789738156151549608311282 +main.escalarMul.segments[0].adders[74].out[0], main.escalarMul.segments[0].adders[75].in1[0] --> 16320649601772778576435078150241896563038033139511065347460622480884806235658 +main.escalarMul.segments[0].adders[74].out[1], main.escalarMul.segments[0].adders[75].in1[1] --> 17837634638635522768189932132033592233473150446480307659796584553210072354223 +main.escalarMul.segments[0].adders[74].lamda --> 5526583055179662252825595445053742071001269066699365606142607410908327647296 +main.escalarMul.segments[0].cadders[74].out[0], main.escalarMul.segments[0].cadders[75].in1[0] --> 3172707116809242282835472095123064681926320433209743161966355461162831838132 +main.escalarMul.segments[0].cadders[74].out[1], main.escalarMul.segments[0].cadders[75].in1[1] --> 2596370536218382041673265751635962736775602612782586420865374344117171161643 +main.escalarMul.segments[0].cadders[74].lamda --> 5060730331623294335505674558076968367357466669902434548114055777050243211372 +main.escalarMul.segments[0].windows[76].out[0], main.escalarMul.segments[0].windows[76].mux.out[0], main.escalarMul.segments[0].adders[75].in2[0] --> 4824540668438328976859474248307190235081964572290187997568382218497988189249 +main.escalarMul.segments[0].windows[76].out[1], main.escalarMul.segments[0].windows[76].mux.out[1], main.escalarMul.segments[0].adders[75].in2[1] --> 14459310902699752073639661098171729473460748873107329692236906486195871904745 +main.escalarMul.segments[0].windows[76].out8[0], main.escalarMul.segments[0].windows[76].mux.c[0][7], main.escalarMul.segments[0].windows[76].adr8.out[0], main.escalarMul.segments[0].windows[77].base[0], main.escalarMul.segments[0].windows[77].mux.c[0][0], main.escalarMul.segments[0].windows[77].mux.a[0], main.escalarMul.segments[0].windows[77].dbl2.in[0], main.escalarMul.segments[0].windows[77].adr3.in1[0], main.escalarMul.segments[0].windows[77].adr4.in1[0], main.escalarMul.segments[0].windows[77].adr5.in1[0], main.escalarMul.segments[0].windows[77].adr6.in1[0], main.escalarMul.segments[0].windows[77].adr7.in1[0], main.escalarMul.segments[0].windows[77].adr8.in1[0], main.escalarMul.segments[0].cadders[76].in2[0] --> 3647752585581104001174027337075563243876196397676759907424434515355730922628 +main.escalarMul.segments[0].windows[76].out8[1], main.escalarMul.segments[0].windows[76].mux.c[1][7], main.escalarMul.segments[0].windows[76].adr8.out[1], main.escalarMul.segments[0].windows[77].base[1], main.escalarMul.segments[0].windows[77].mux.c[1][0], main.escalarMul.segments[0].windows[77].mux.a[1], main.escalarMul.segments[0].windows[77].dbl2.in[1], main.escalarMul.segments[0].windows[77].adr3.in1[1], main.escalarMul.segments[0].windows[77].adr4.in1[1], main.escalarMul.segments[0].windows[77].adr5.in1[1], main.escalarMul.segments[0].windows[77].adr6.in1[1], main.escalarMul.segments[0].windows[77].adr7.in1[1], main.escalarMul.segments[0].windows[77].adr8.in1[1], main.escalarMul.segments[0].cadders[76].in2[1] --> 5990226590498030848691686160725188535780553750255479762752477173492629843473 +main.escalarMul.segments[0].windows[76].mux.c[0][1], main.escalarMul.segments[0].windows[76].dbl2.out[0], main.escalarMul.segments[0].windows[76].adr3.in2[0] --> 4824540668438328976859474248307190235081964572290187997568382218497988189249 +main.escalarMul.segments[0].windows[76].mux.c[0][2], main.escalarMul.segments[0].windows[76].adr3.out[0], main.escalarMul.segments[0].windows[76].adr4.in2[0] --> 17051110775543630082423683563712525475721358421543154284006023550328542471430 +main.escalarMul.segments[0].windows[76].mux.c[0][3], main.escalarMul.segments[0].windows[76].adr4.out[0], main.escalarMul.segments[0].windows[76].adr5.in2[0] --> 10028233009075130992196726934916791888051544888240547354526615604418930139661 +main.escalarMul.segments[0].windows[76].mux.c[0][4], main.escalarMul.segments[0].windows[76].adr5.out[0], main.escalarMul.segments[0].windows[76].adr6.in2[0] --> 21295219044613084397232485334550166030983942422051289745248412112596969776588 +main.escalarMul.segments[0].windows[76].mux.c[0][5], main.escalarMul.segments[0].windows[76].adr6.out[0], main.escalarMul.segments[0].windows[76].adr7.in2[0] --> 20787560856184876900348108159085580686391698000214478853677943674944293879947 +main.escalarMul.segments[0].windows[76].mux.c[0][6], main.escalarMul.segments[0].windows[76].adr7.out[0], main.escalarMul.segments[0].windows[76].adr8.in2[0] --> 15704853037876422976580060329049025311330038737586916834404575920804001082538 +main.escalarMul.segments[0].windows[76].mux.c[1][1], main.escalarMul.segments[0].windows[76].dbl2.out[1], main.escalarMul.segments[0].windows[76].adr3.in2[1] --> 14459310902699752073639661098171729473460748873107329692236906486195871904745 +main.escalarMul.segments[0].windows[76].mux.c[1][2], main.escalarMul.segments[0].windows[76].adr3.out[1], main.escalarMul.segments[0].windows[76].adr4.in2[1] --> 1602932518449248995761267478545092809822089456895974665980998042292724483630 +main.escalarMul.segments[0].windows[76].mux.c[1][3], main.escalarMul.segments[0].windows[76].adr4.out[1], main.escalarMul.segments[0].windows[76].adr5.in2[1] --> 8108020355565396467140146588759376711816630519930132170751380622204787464495 +main.escalarMul.segments[0].windows[76].mux.c[1][4], main.escalarMul.segments[0].windows[76].adr5.out[1], main.escalarMul.segments[0].windows[76].adr6.in2[1] --> 2171105880736304940056795473209682472035130053444688999943947333030641147342 +main.escalarMul.segments[0].windows[76].mux.c[1][5], main.escalarMul.segments[0].windows[76].adr6.out[1], main.escalarMul.segments[0].windows[76].adr7.in2[1] --> 6561331792234369135380219282729495048682625133321625356031821435356442109851 +main.escalarMul.segments[0].windows[76].mux.c[1][6], main.escalarMul.segments[0].windows[76].adr7.out[1], main.escalarMul.segments[0].windows[76].adr8.in2[1] --> 9852631900204595185291273138737214097825857697183666401314136436342172185607 +main.escalarMul.segments[0].windows[76].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[76].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[76].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[76].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[76].mux.a20[0] --> 1657061233803086628971532566946082775568931835145416045943803153470985246995 +main.escalarMul.segments[0].windows[76].mux.a20[1] --> 4041795535890035880595594550917499508729018407115658800916737025322147832047 +main.escalarMul.segments[0].windows[76].mux.a2[0] --> 14305958953943461294517101343832307675740801592778874810165758302975320443703 +main.escalarMul.segments[0].windows[76].mux.a2[1] --> 9948468225483856403391369378897541155041222253514671206576382110414230868676 +main.escalarMul.segments[0].windows[76].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[76].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[76].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[76].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[76].mux.a0[0] --> 19723523449607981096390496002846606968387188143433807406183932595452147351981 +main.escalarMul.segments[0].windows[76].mux.a0[1] --> 348430375608028314727829258602313067918476672761277555171137077003653130462 +main.escalarMul.segments[0].windows[76].mux.s10 --> 0 +main.escalarMul.segments[0].windows[76].dbl2.lamda --> 8945177217361554307636139274695777660999805690240328866351268613143707192555 +main.escalarMul.segments[0].windows[76].dbl2.x1_2 --> 2075347624266728428554112055788297688408430230906564491736195746564634402182 +main.escalarMul.segments[0].windows[76].adr3.lamda --> 19953328773987354337667497156015044546705899290274801386605005442694471022013 +main.escalarMul.segments[0].windows[76].adr4.lamda --> 14193095700484937230992726771084693857254227069473527122960072687583298702130 +main.escalarMul.segments[0].windows[76].adr5.lamda --> 17828291017940097686875596202684393313293324919831277575071157409187050279833 +main.escalarMul.segments[0].windows[76].adr6.lamda --> 17599207599247710903599693213247252486739892969414365919055613392345509749156 +main.escalarMul.segments[0].windows[76].adr7.lamda --> 1886093933886469498463561814724523784026293735368318639194224115828589970957 +main.escalarMul.segments[0].windows[76].adr8.lamda --> 7043356020382321430112762227123483573362137095628144647602972672276358041038 +main.escalarMul.segments[0].adders[75].out[0], main.escalarMul.segments[0].adders[76].in1[0] --> 11080722625904675684934161070480381036756376473432070398447226084852352145452 +main.escalarMul.segments[0].adders[75].out[1], main.escalarMul.segments[0].adders[76].in1[1] --> 10068949686980529435420306095284005945453028794340021639206656303829928907874 +main.escalarMul.segments[0].adders[75].lamda --> 15721821764808284631444048213811954408162123561194253229460076797088995307516 +main.escalarMul.segments[0].cadders[75].out[0], main.escalarMul.segments[0].cadders[76].in1[0] --> 1895630791366323562597651419010544427292849977055479190048850555925989770204 +main.escalarMul.segments[0].cadders[75].out[1], main.escalarMul.segments[0].cadders[76].in1[1] --> 13041500603801653927051682435309485276265951039460519074232407153051699099594 +main.escalarMul.segments[0].cadders[75].lamda --> 16520446793106094677087112601526779389582906350635458348063344945696322835505 +main.escalarMul.segments[0].windows[77].out[0], main.escalarMul.segments[0].windows[77].mux.out[0], main.escalarMul.segments[0].adders[76].in2[0] --> 16455379253207197392997530653273023917059379665376390063432656935259189428624 +main.escalarMul.segments[0].windows[77].out[1], main.escalarMul.segments[0].windows[77].mux.out[1], main.escalarMul.segments[0].adders[76].in2[1] --> 13898948395220175547498219681378571203111251760242337391937334081849473181868 +main.escalarMul.segments[0].windows[77].out8[0], main.escalarMul.segments[0].windows[77].mux.c[0][7], main.escalarMul.segments[0].windows[77].adr8.out[0], main.escalarMul.segments[0].windows[78].base[0], main.escalarMul.segments[0].windows[78].mux.c[0][0], main.escalarMul.segments[0].windows[78].mux.a[0], main.escalarMul.segments[0].windows[78].dbl2.in[0], main.escalarMul.segments[0].windows[78].adr3.in1[0], main.escalarMul.segments[0].windows[78].adr4.in1[0], main.escalarMul.segments[0].windows[78].adr5.in1[0], main.escalarMul.segments[0].windows[78].adr6.in1[0], main.escalarMul.segments[0].windows[78].adr7.in1[0], main.escalarMul.segments[0].windows[78].adr8.in1[0], main.escalarMul.segments[0].cadders[77].in2[0] --> 19787145527792308545542436158035348205373832393559192231940948201037219056040 +main.escalarMul.segments[0].windows[77].out8[1], main.escalarMul.segments[0].windows[77].mux.c[1][7], main.escalarMul.segments[0].windows[77].adr8.out[1], main.escalarMul.segments[0].windows[78].base[1], main.escalarMul.segments[0].windows[78].mux.c[1][0], main.escalarMul.segments[0].windows[78].mux.a[1], main.escalarMul.segments[0].windows[78].dbl2.in[1], main.escalarMul.segments[0].windows[78].adr3.in1[1], main.escalarMul.segments[0].windows[78].adr4.in1[1], main.escalarMul.segments[0].windows[78].adr5.in1[1], main.escalarMul.segments[0].windows[78].adr6.in1[1], main.escalarMul.segments[0].windows[78].adr7.in1[1], main.escalarMul.segments[0].windows[78].adr8.in1[1], main.escalarMul.segments[0].cadders[77].in2[1] --> 16576283077263042615259100963264483788144862436781149419846842198287958138834 +main.escalarMul.segments[0].windows[77].mux.c[0][1], main.escalarMul.segments[0].windows[77].dbl2.out[0], main.escalarMul.segments[0].windows[77].adr3.in2[0] --> 7382995096163741799151589571073080198163405401418402131332431521424646715580 +main.escalarMul.segments[0].windows[77].mux.c[0][2], main.escalarMul.segments[0].windows[77].adr3.out[0], main.escalarMul.segments[0].windows[77].adr4.in2[0] --> 5903386613502660857853737064922169520826833367318799908314677084890172107777 +main.escalarMul.segments[0].windows[77].mux.c[0][3], main.escalarMul.segments[0].windows[77].adr4.out[0], main.escalarMul.segments[0].windows[77].adr5.in2[0] --> 16455379253207197392997530653273023917059379665376390063432656935259189428624 +main.escalarMul.segments[0].windows[77].mux.c[0][4], main.escalarMul.segments[0].windows[77].adr5.out[0], main.escalarMul.segments[0].windows[77].adr6.in2[0] --> 3061859117447247701149461303306385562853982824460684062900472977459211414299 +main.escalarMul.segments[0].windows[77].mux.c[0][5], main.escalarMul.segments[0].windows[77].adr6.out[0], main.escalarMul.segments[0].windows[77].adr7.in2[0] --> 14384114881230382273739072343133892295291273856787894999682936700302798334146 +main.escalarMul.segments[0].windows[77].mux.c[0][6], main.escalarMul.segments[0].windows[77].adr7.out[0], main.escalarMul.segments[0].windows[77].adr8.in2[0] --> 14240907634245271446780561588685008233499603903701589849864616122718796167364 +main.escalarMul.segments[0].windows[77].mux.c[1][1], main.escalarMul.segments[0].windows[77].dbl2.out[1], main.escalarMul.segments[0].windows[77].adr3.in2[1] --> 7717129285713007167553115621838391691623325471869030310572819627813755927790 +main.escalarMul.segments[0].windows[77].mux.c[1][2], main.escalarMul.segments[0].windows[77].adr3.out[1], main.escalarMul.segments[0].windows[77].adr4.in2[1] --> 1951004096136268052977726136083527453978508448684610581695860638160491830569 +main.escalarMul.segments[0].windows[77].mux.c[1][3], main.escalarMul.segments[0].windows[77].adr4.out[1], main.escalarMul.segments[0].windows[77].adr5.in2[1] --> 13898948395220175547498219681378571203111251760242337391937334081849473181868 +main.escalarMul.segments[0].windows[77].mux.c[1][4], main.escalarMul.segments[0].windows[77].adr5.out[1], main.escalarMul.segments[0].windows[77].adr6.in2[1] --> 3308223222429185653756926926844185008588905619245135445689041692067471939124 +main.escalarMul.segments[0].windows[77].mux.c[1][5], main.escalarMul.segments[0].windows[77].adr6.out[1], main.escalarMul.segments[0].windows[77].adr7.in2[1] --> 18825233608897264379449524176316539656829690438993036700317888461614094304327 +main.escalarMul.segments[0].windows[77].mux.c[1][6], main.escalarMul.segments[0].windows[77].adr7.out[1], main.escalarMul.segments[0].windows[77].adr8.in2[1] --> 826219736265113022326592288599090865180405844920540651842360796951603091369 +main.escalarMul.segments[0].windows[77].mux.a210[0] --> 9295474872481279011252437920426770886039964563630477857782089697750542936551 +main.escalarMul.segments[0].windows[77].mux.a210[1] --> 11900254222500194913827253086268472769982064582584565594652707828997685910897 +main.escalarMul.segments[0].windows[77].mux.a21[0] --> 8923414488876466888951390557532016393694984109598865786073900575725143567916 +main.escalarMul.segments[0].windows[77].mux.a21[1] --> 1557219008197690164283625386396566938393545527246274387209935640216269165149 +main.escalarMul.segments[0].windows[77].mux.a20[0] --> 7587013253200496774612048805829989778150082028585568712874466716774671126895 +main.escalarMul.segments[0].windows[77].mux.a20[1] --> 13790107691253102406831167788359151492398013098134350706808504315225496280886 +main.escalarMul.segments[0].windows[77].mux.a2[0] --> 21302349403705418922221839711488097407526150827199958499174242648679288987288 +main.escalarMul.segments[0].windows[77].mux.a2[1] --> 19206239503770430027311646511376271561356716269405690026634768705150650591268 +main.escalarMul.segments[0].windows[77].mux.a10[0] --> 6816750129121898737166231354353337441945337294315947931209982844300101527895 +main.escalarMul.segments[0].windows[77].mux.a10[1] --> 10221041603868931175659064084181840593289971589944176262421130989367855266982 +main.escalarMul.segments[0].windows[77].mux.a1[0] --> 2255634027921556856679709727846606276950636969642040000890242569534441185149 +main.escalarMul.segments[0].windows[77].mux.a1[1] --> 17849020377477512426532445720615614006746319098845165162641587651243670482713 +main.escalarMul.segments[0].windows[77].mux.a0[0] --> 3735242510582637797977562233997516954287209003741642223907997006068915792952 +main.escalarMul.segments[0].windows[77].mux.a0[1] --> 1726902695214976318861429461113203155842771721613550547820342454321126084317 +main.escalarMul.segments[0].windows[77].mux.s10 --> 1 +main.escalarMul.segments[0].windows[77].dbl2.lamda --> 3020315945216433282906577064614018361857612502540124103268071576831655733212 +main.escalarMul.segments[0].windows[77].dbl2.x1_2 --> 21207817460733100411359844831834942158642730790784742761871393613494608675088 +main.escalarMul.segments[0].windows[77].adr3.lamda --> 1902384713601614466981234073269808629098135603329312702552609686439016458218 +main.escalarMul.segments[0].windows[77].adr4.lamda --> 6183716262494022661925689846603589957112976311052896920716849125217138908764 +main.escalarMul.segments[0].windows[77].adr5.lamda --> 19799589522943179551040325779756372280020242454134616918173908071007407808341 +main.escalarMul.segments[0].windows[77].adr6.lamda --> 486504166483251156291790917324502710909806302870350939163325291279314548854 +main.escalarMul.segments[0].windows[77].adr7.lamda --> 15434898300671420601039709803777570768892169778535435737033135915597996282332 +main.escalarMul.segments[0].windows[77].adr8.lamda --> 19938469461586846158289008493072992018651773000701479425889381415405319082754 +main.escalarMul.segments[0].adders[76].out[0], main.escalarMul.segments[0].adders[77].in1[0] --> 11224633232338421057407010637769602429143065273295117919370272123193001868396 +main.escalarMul.segments[0].adders[76].out[1], main.escalarMul.segments[0].adders[77].in1[1] --> 14922204652793120765379934229247874909909767003499005658719508342089130997388 +main.escalarMul.segments[0].adders[76].lamda --> 2868557102328299132386291263862678913531572077023455281012508413726440976645 +main.escalarMul.segments[0].cadders[76].out[0], main.escalarMul.segments[0].cadders[77].in1[0] --> 17907588098651650468323849131621974349792422851354209267793470056029151155194 +main.escalarMul.segments[0].cadders[76].out[1], main.escalarMul.segments[0].cadders[77].in1[1] --> 9667001021871700927552116905723226413392428407089719515882542517570479286395 +main.escalarMul.segments[0].cadders[76].lamda --> 3959744525134302262709439378838909143752576263077003932387020487046579820111 +main.escalarMul.segments[0].windows[78].out[0], main.escalarMul.segments[0].windows[78].mux.out[0], main.escalarMul.segments[0].adders[77].in2[0] --> 2080436750905664055222950808808342864617757927376543825941158648836990999559 +main.escalarMul.segments[0].windows[78].out[1], main.escalarMul.segments[0].windows[78].mux.out[1], main.escalarMul.segments[0].adders[77].in2[1] --> 19982638345266898244598353978097933494029079129072778236595665760968483358390 +main.escalarMul.segments[0].windows[78].out8[0], main.escalarMul.segments[0].windows[78].mux.c[0][7], main.escalarMul.segments[0].windows[78].adr8.out[0], main.escalarMul.segments[0].windows[79].base[0], main.escalarMul.segments[0].windows[79].mux.c[0][0], main.escalarMul.segments[0].windows[79].mux.a[0], main.escalarMul.segments[0].windows[79].dbl2.in[0], main.escalarMul.segments[0].windows[79].adr3.in1[0], main.escalarMul.segments[0].windows[79].adr4.in1[0], main.escalarMul.segments[0].windows[79].adr5.in1[0], main.escalarMul.segments[0].windows[79].adr6.in1[0], main.escalarMul.segments[0].windows[79].adr7.in1[0], main.escalarMul.segments[0].windows[79].adr8.in1[0], main.escalarMul.segments[0].cadders[78].in2[0] --> 15209381493730330808127222400102590177888516603049273098288508358086113838205 +main.escalarMul.segments[0].windows[78].out8[1], main.escalarMul.segments[0].windows[78].mux.c[1][7], main.escalarMul.segments[0].windows[78].adr8.out[1], main.escalarMul.segments[0].windows[79].base[1], main.escalarMul.segments[0].windows[79].mux.c[1][0], main.escalarMul.segments[0].windows[79].mux.a[1], main.escalarMul.segments[0].windows[79].dbl2.in[1], main.escalarMul.segments[0].windows[79].adr3.in1[1], main.escalarMul.segments[0].windows[79].adr4.in1[1], main.escalarMul.segments[0].windows[79].adr5.in1[1], main.escalarMul.segments[0].windows[79].adr6.in1[1], main.escalarMul.segments[0].windows[79].adr7.in1[1], main.escalarMul.segments[0].windows[79].adr8.in1[1], main.escalarMul.segments[0].cadders[78].in2[1] --> 7343811717165134142593406075453361462592872743271538753440273357802270276214 +main.escalarMul.segments[0].windows[78].mux.c[0][1], main.escalarMul.segments[0].windows[78].dbl2.out[0], main.escalarMul.segments[0].windows[78].adr3.in2[0] --> 15993796546619820254385210784323639547891015028814024563863619697945980119368 +main.escalarMul.segments[0].windows[78].mux.c[0][2], main.escalarMul.segments[0].windows[78].adr3.out[0], main.escalarMul.segments[0].windows[78].adr4.in2[0] --> 2080436750905664055222950808808342864617757927376543825941158648836990999559 +main.escalarMul.segments[0].windows[78].mux.c[0][3], main.escalarMul.segments[0].windows[78].adr4.out[0], main.escalarMul.segments[0].windows[78].adr5.in2[0] --> 4867383085746891258939384491529481748730406243901774386168538362455191356508 +main.escalarMul.segments[0].windows[78].mux.c[0][4], main.escalarMul.segments[0].windows[78].adr5.out[0], main.escalarMul.segments[0].windows[78].adr6.in2[0] --> 16207558669096337791052745515048821198339654147036816905478690529169958654183 +main.escalarMul.segments[0].windows[78].mux.c[0][5], main.escalarMul.segments[0].windows[78].adr6.out[0], main.escalarMul.segments[0].windows[78].adr7.in2[0] --> 13529780385683518776709842446205198721716207891395364407566710748304710975704 +main.escalarMul.segments[0].windows[78].mux.c[0][6], main.escalarMul.segments[0].windows[78].adr7.out[0], main.escalarMul.segments[0].windows[78].adr8.in2[0] --> 16456335575655700929240274900085635040053372895103413283609915372290580649036 +main.escalarMul.segments[0].windows[78].mux.c[1][1], main.escalarMul.segments[0].windows[78].dbl2.out[1], main.escalarMul.segments[0].windows[78].adr3.in2[1] --> 339829034278111829821608566548071525092459961929156521538823070221685596486 +main.escalarMul.segments[0].windows[78].mux.c[1][2], main.escalarMul.segments[0].windows[78].adr3.out[1], main.escalarMul.segments[0].windows[78].adr4.in2[1] --> 19982638345266898244598353978097933494029079129072778236595665760968483358390 +main.escalarMul.segments[0].windows[78].mux.c[1][3], main.escalarMul.segments[0].windows[78].adr4.out[1], main.escalarMul.segments[0].windows[78].adr5.in2[1] --> 5950169256714726604125960340909192330097899652313658739156171451623953216564 +main.escalarMul.segments[0].windows[78].mux.c[1][4], main.escalarMul.segments[0].windows[78].adr5.out[1], main.escalarMul.segments[0].windows[78].adr6.in2[1] --> 9158474210754170660391780607273625233082803986511996480690915847547119581806 +main.escalarMul.segments[0].windows[78].mux.c[1][5], main.escalarMul.segments[0].windows[78].adr6.out[1], main.escalarMul.segments[0].windows[78].adr7.in2[1] --> 1386974149468701855810719662933621077404928071305204092566633342922644443839 +main.escalarMul.segments[0].windows[78].mux.c[1][6], main.escalarMul.segments[0].windows[78].adr7.out[1], main.escalarMul.segments[0].windows[78].adr8.in2[1] --> 5490143625923015646044029257081691626658174748627577445865463061998781095911 +main.escalarMul.segments[0].windows[78].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[78].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[78].mux.a21[0] --> 17955485683446007628507014734263819182469793214249244784131014395320850051334 +main.escalarMul.segments[0].windows[78].mux.a21[1] --> 14813557019004264578559401380231891776239518470239986492123927838346944790166 +main.escalarMul.segments[0].windows[78].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[78].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[78].mux.a2[0] --> 18308656013143304467756715102270748081514186153893659017235946514708548093760 +main.escalarMul.segments[0].windows[78].mux.a2[1] --> 14470434005330403267379085389266416533486305950146881404542277835834969938589 +main.escalarMul.segments[0].windows[78].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[78].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[78].mux.a1[0] --> 4181534094952630731926920396030269747792289934233385937698414634375580439136 +main.escalarMul.segments[0].windows[78].mux.a1[1] --> 3406355268003855629339253014833449705884216692291628816748823562680525219556 +main.escalarMul.segments[0].windows[78].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[78].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[78].mux.s10 --> 0 +main.escalarMul.segments[0].windows[78].dbl2.lamda --> 2436054716622726241781474008612315672582657666289902954462985537848608170338 +main.escalarMul.segments[0].windows[78].dbl2.x1_2 --> 19593212119777626904131756249883790671128143614505772467191808276241506105165 +main.escalarMul.segments[0].windows[78].adr3.lamda --> 8150831935569810975137666978600051970266407803528192103707907629173477403423 +main.escalarMul.segments[0].windows[78].adr4.lamda --> 8327861058382215695100464465855970522326525398710631804829562849087328681837 +main.escalarMul.segments[0].windows[78].adr5.lamda --> 12069986830397511046775955796779052463045008025652269540466929626729206444082 +main.escalarMul.segments[0].windows[78].adr6.lamda --> 7735971803052262337835258956545808845614376313220837415241958015832151142905 +main.escalarMul.segments[0].windows[78].adr7.lamda --> 2642925759796087439256418853282861987593311930386852947319625994844552713759 +main.escalarMul.segments[0].windows[78].adr8.lamda --> 14689406850854721531642149016181468528961628075911076327895339581905825440046 +main.escalarMul.segments[0].adders[77].out[0], main.escalarMul.segments[0].adders[78].in1[0] --> 21117080190612755223642577888819226090444248111279896789315270518433298547909 +main.escalarMul.segments[0].adders[77].out[1], main.escalarMul.segments[0].adders[78].in1[1] --> 19164134262366479404336484173451128561281748053025050131941659814953566413998 +main.escalarMul.segments[0].adders[77].lamda --> 7140201235395913405551323843832355543129232841761629150296757437702407950421 +main.escalarMul.segments[0].cadders[77].out[0], main.escalarMul.segments[0].cadders[78].in1[0] --> 19583964537430207088910318231454540598019665072322441301761524393582133206831 +main.escalarMul.segments[0].cadders[77].out[1], main.escalarMul.segments[0].cadders[78].in1[1] --> 5225309944559281511868641443133852874753640315410676455597651346757645566162 +main.escalarMul.segments[0].cadders[77].lamda --> 3086523183352618694961649957590309467858366131051454576238914336059378841575 +main.escalarMul.segments[0].windows[79].out[0], main.escalarMul.segments[0].windows[79].mux.out[0], main.escalarMul.segments[0].adders[78].in2[0] --> 16557143217072289179976369797687793617685973431095861755839193448000284136660 +main.escalarMul.segments[0].windows[79].out[1], main.escalarMul.segments[0].windows[79].mux.out[1], main.escalarMul.segments[0].adders[78].in2[1] --> 115586315575890581478556679652953302504356394879946984025846913552734197440 +main.escalarMul.segments[0].windows[79].out8[0], main.escalarMul.segments[0].windows[79].mux.c[0][7], main.escalarMul.segments[0].windows[79].adr8.out[0], main.escalarMul.segments[0].windows[80].base[0], main.escalarMul.segments[0].windows[80].mux.c[0][0], main.escalarMul.segments[0].windows[80].mux.a[0], main.escalarMul.segments[0].windows[80].dbl2.in[0], main.escalarMul.segments[0].windows[80].adr3.in1[0], main.escalarMul.segments[0].windows[80].adr4.in1[0], main.escalarMul.segments[0].windows[80].adr5.in1[0], main.escalarMul.segments[0].windows[80].adr6.in1[0], main.escalarMul.segments[0].windows[80].adr7.in1[0], main.escalarMul.segments[0].windows[80].adr8.in1[0], main.escalarMul.segments[0].cadders[79].in2[0] --> 17211013282749398262101032519784357459700698687112387584581109835293715008468 +main.escalarMul.segments[0].windows[79].out8[1], main.escalarMul.segments[0].windows[79].mux.c[1][7], main.escalarMul.segments[0].windows[79].adr8.out[1], main.escalarMul.segments[0].windows[80].base[1], main.escalarMul.segments[0].windows[80].mux.c[1][0], main.escalarMul.segments[0].windows[80].mux.a[1], main.escalarMul.segments[0].windows[80].dbl2.in[1], main.escalarMul.segments[0].windows[80].adr3.in1[1], main.escalarMul.segments[0].windows[80].adr4.in1[1], main.escalarMul.segments[0].windows[80].adr5.in1[1], main.escalarMul.segments[0].windows[80].adr6.in1[1], main.escalarMul.segments[0].windows[80].adr7.in1[1], main.escalarMul.segments[0].windows[80].adr8.in1[1], main.escalarMul.segments[0].cadders[79].in2[1] --> 13198230311823231253259943928648592785073482955778690309405226040322475323978 +main.escalarMul.segments[0].windows[79].mux.c[0][1], main.escalarMul.segments[0].windows[79].dbl2.out[0], main.escalarMul.segments[0].windows[79].adr3.in2[0] --> 16557143217072289179976369797687793617685973431095861755839193448000284136660 +main.escalarMul.segments[0].windows[79].mux.c[0][2], main.escalarMul.segments[0].windows[79].adr3.out[0], main.escalarMul.segments[0].windows[79].adr4.in2[0] --> 14745212130876646188375952189150158295512941091372698833876364417751514770403 +main.escalarMul.segments[0].windows[79].mux.c[0][3], main.escalarMul.segments[0].windows[79].adr4.out[0], main.escalarMul.segments[0].windows[79].adr5.in2[0] --> 16353499157407946873684014640269793681647025426897658785130299761260084709484 +main.escalarMul.segments[0].windows[79].mux.c[0][4], main.escalarMul.segments[0].windows[79].adr5.out[0], main.escalarMul.segments[0].windows[79].adr6.in2[0] --> 2505900124454841302335332313356580618035965997822116540128817066437150977052 +main.escalarMul.segments[0].windows[79].mux.c[0][5], main.escalarMul.segments[0].windows[79].adr6.out[0], main.escalarMul.segments[0].windows[79].adr7.in2[0] --> 1756276223703106112974899165416746146440325989832683233171135462712336025173 +main.escalarMul.segments[0].windows[79].mux.c[0][6], main.escalarMul.segments[0].windows[79].adr7.out[0], main.escalarMul.segments[0].windows[79].adr8.in2[0] --> 3427710664458768806457811037873811700840665152286582074438850828450953770798 +main.escalarMul.segments[0].windows[79].mux.c[1][1], main.escalarMul.segments[0].windows[79].dbl2.out[1], main.escalarMul.segments[0].windows[79].adr3.in2[1] --> 115586315575890581478556679652953302504356394879946984025846913552734197440 +main.escalarMul.segments[0].windows[79].mux.c[1][2], main.escalarMul.segments[0].windows[79].adr3.out[1], main.escalarMul.segments[0].windows[79].adr4.in2[1] --> 12290117013270945236004874843971203259154595802720440246483451040453798984414 +main.escalarMul.segments[0].windows[79].mux.c[1][3], main.escalarMul.segments[0].windows[79].adr4.out[1], main.escalarMul.segments[0].windows[79].adr5.in2[1] --> 5395237775936551718924923983584094128253251176357837344528797207197553334022 +main.escalarMul.segments[0].windows[79].mux.c[1][4], main.escalarMul.segments[0].windows[79].adr5.out[1], main.escalarMul.segments[0].windows[79].adr6.in2[1] --> 21588312012514208930261252818902616658592652205693820659868394704970362405831 +main.escalarMul.segments[0].windows[79].mux.c[1][5], main.escalarMul.segments[0].windows[79].adr6.out[1], main.escalarMul.segments[0].windows[79].adr7.in2[1] --> 16930116221468676069590480229158710374578504779946620036728457972665531374199 +main.escalarMul.segments[0].windows[79].mux.c[1][6], main.escalarMul.segments[0].windows[79].adr7.out[1], main.escalarMul.segments[0].windows[79].adr8.in2[1] --> 362548749596991071259279099189831723376298386516029412420505648120259428764 +main.escalarMul.segments[0].windows[79].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[79].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[79].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[79].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[79].mux.a20[0] --> 19790857247745581661036825199732237177155267564380012379189837492936823245283 +main.escalarMul.segments[0].windows[79].mux.a20[1] --> 2570029610543710700444076806056501876074368922644391146274489711944705047142 +main.escalarMul.segments[0].windows[79].mux.a2[0] --> 9184761502563785716454515658511265528695813795188877785538512894926845634464 +main.escalarMul.segments[0].windows[79].mux.a2[1] --> 14244500295349074787667846743449255195999779462422281906428121347168092129617 +main.escalarMul.segments[0].windows[79].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[79].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[79].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[79].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[79].mux.a0[0] --> 1347761723341958371849147397585203439797456828046588657550685089914170298455 +main.escalarMul.segments[0].windows[79].mux.a0[1] --> 14660017470250031661131556349456866928459848052024442574283777742326272416843 +main.escalarMul.segments[0].windows[79].mux.s10 --> 0 +main.escalarMul.segments[0].windows[79].dbl2.lamda --> 11788291011460057130348020841890300826863278946177427839736017204521282583898 +main.escalarMul.segments[0].windows[79].dbl2.x1_2 --> 4983576577425221938153469206602148847590138654663388965414673298398336988949 +main.escalarMul.segments[0].windows[79].adr3.lamda --> 1176911033191894037802674492958107043464165725748108740596393161192330931209 +main.escalarMul.segments[0].windows[79].adr4.lamda --> 17615028629306064632400435041456844621695352459354785385957675958140297848117 +main.escalarMul.segments[0].windows[79].adr5.lamda --> 902336337971379858376600642928940188045648714596893624420929187046028876255 +main.escalarMul.segments[0].windows[79].adr6.lamda --> 21454842913070629993603166770583997541814084189752038706328088266670587548914 +main.escalarMul.segments[0].windows[79].adr7.lamda --> 4634063202133152580033628422614956092593251434421779418340888739943820287094 +main.escalarMul.segments[0].windows[79].adr8.lamda --> 10034620000904426705186614855867205814090385413565422725814165387879396308620 +main.escalarMul.segments[0].adders[78].out[0], main.escalarMul.segments[0].adders[79].in1[0] --> 9940239421208495390677493396487239560704569012895130451020434153069689692547 +main.escalarMul.segments[0].adders[78].out[1], main.escalarMul.segments[0].adders[79].in1[1] --> 19589142216947207201620075107919278502608280261859904885118546906843034539830 +main.escalarMul.segments[0].adders[78].lamda --> 5737998064191364267802037801725624707411586795135668960080842427336808529369 +main.escalarMul.segments[0].cadders[78].out[0], main.escalarMul.segments[0].cadders[79].in1[0] --> 12911701499971922655854582685575960357363707754968212388988268017549903649525 +main.escalarMul.segments[0].cadders[78].out[1], main.escalarMul.segments[0].cadders[79].in1[1] --> 9140862154509386939910508291483133599148479659495497594484899360368430699399 +main.escalarMul.segments[0].cadders[78].lamda --> 8490552135533120605717947409074123243536835689189411129213076152765444905888 +main.escalarMul.segments[0].windows[80].out[0], main.escalarMul.segments[0].windows[80].mux.out[0], main.escalarMul.segments[0].adders[79].in2[0] --> 3289002859991951463420271629658171502642364513350857527347009000976192136508 +main.escalarMul.segments[0].windows[80].out[1], main.escalarMul.segments[0].windows[80].mux.out[1], main.escalarMul.segments[0].adders[79].in2[1] --> 21461150297420839017576317717038264114400587097375562559429649074367980078343 +main.escalarMul.segments[0].windows[80].out8[0], main.escalarMul.segments[0].windows[80].mux.c[0][7], main.escalarMul.segments[0].windows[80].adr8.out[0], main.escalarMul.segments[0].windows[81].base[0], main.escalarMul.segments[0].windows[81].mux.c[0][0], main.escalarMul.segments[0].windows[81].mux.a[0], main.escalarMul.segments[0].windows[81].dbl2.in[0], main.escalarMul.segments[0].windows[81].adr3.in1[0], main.escalarMul.segments[0].windows[81].adr4.in1[0], main.escalarMul.segments[0].windows[81].adr5.in1[0], main.escalarMul.segments[0].windows[81].adr6.in1[0], main.escalarMul.segments[0].windows[81].adr7.in1[0], main.escalarMul.segments[0].windows[81].adr8.in1[0], main.escalarMul.segments[0].cadders[80].in2[0] --> 651268724252537961463226268739510854012185891830889067044379221644429406939 +main.escalarMul.segments[0].windows[80].out8[1], main.escalarMul.segments[0].windows[80].mux.c[1][7], main.escalarMul.segments[0].windows[80].adr8.out[1], main.escalarMul.segments[0].windows[81].base[1], main.escalarMul.segments[0].windows[81].mux.c[1][0], main.escalarMul.segments[0].windows[81].mux.a[1], main.escalarMul.segments[0].windows[81].dbl2.in[1], main.escalarMul.segments[0].windows[81].adr3.in1[1], main.escalarMul.segments[0].windows[81].adr4.in1[1], main.escalarMul.segments[0].windows[81].adr5.in1[1], main.escalarMul.segments[0].windows[81].adr6.in1[1], main.escalarMul.segments[0].windows[81].adr7.in1[1], main.escalarMul.segments[0].windows[81].adr8.in1[1], main.escalarMul.segments[0].cadders[80].in2[1] --> 15245902047154343076342972419573827685754470220572199784517988630962488840049 +main.escalarMul.segments[0].windows[80].mux.c[0][1], main.escalarMul.segments[0].windows[80].dbl2.out[0], main.escalarMul.segments[0].windows[80].adr3.in2[0] --> 20915628805929106128027162181498678012940507517721758795534582460174675868183 +main.escalarMul.segments[0].windows[80].mux.c[0][2], main.escalarMul.segments[0].windows[80].adr3.out[0], main.escalarMul.segments[0].windows[80].adr4.in2[0] --> 20896495419069337147386381965162602903912741235866189890363795020414296542579 +main.escalarMul.segments[0].windows[80].mux.c[0][3], main.escalarMul.segments[0].windows[80].adr4.out[0], main.escalarMul.segments[0].windows[80].adr5.in2[0] --> 3289002859991951463420271629658171502642364513350857527347009000976192136508 +main.escalarMul.segments[0].windows[80].mux.c[0][4], main.escalarMul.segments[0].windows[80].adr5.out[0], main.escalarMul.segments[0].windows[80].adr6.in2[0] --> 21518524155937912101734280954648753107517433397598475290299830170984956398062 +main.escalarMul.segments[0].windows[80].mux.c[0][5], main.escalarMul.segments[0].windows[80].adr6.out[0], main.escalarMul.segments[0].windows[80].adr7.in2[0] --> 12999177162405581484071110374541405151662140111853269798774015843137178371956 +main.escalarMul.segments[0].windows[80].mux.c[0][6], main.escalarMul.segments[0].windows[80].adr7.out[0], main.escalarMul.segments[0].windows[80].adr8.in2[0] --> 943291544514918906862587429086597763929048652210924627547403767043708901944 +main.escalarMul.segments[0].windows[80].mux.c[1][1], main.escalarMul.segments[0].windows[80].dbl2.out[1], main.escalarMul.segments[0].windows[80].adr3.in2[1] --> 14494978444724912887846901640412106668750886344696897756470439909998486025266 +main.escalarMul.segments[0].windows[80].mux.c[1][2], main.escalarMul.segments[0].windows[80].adr3.out[1], main.escalarMul.segments[0].windows[80].adr4.in2[1] --> 4443625950665881590104089337061232150473085355288513983545987819028207762155 +main.escalarMul.segments[0].windows[80].mux.c[1][3], main.escalarMul.segments[0].windows[80].adr4.out[1], main.escalarMul.segments[0].windows[80].adr5.in2[1] --> 21461150297420839017576317717038264114400587097375562559429649074367980078343 +main.escalarMul.segments[0].windows[80].mux.c[1][4], main.escalarMul.segments[0].windows[80].adr5.out[1], main.escalarMul.segments[0].windows[80].adr6.in2[1] --> 19237017437132854476548765268699437279939159247546028148518689675514115071528 +main.escalarMul.segments[0].windows[80].mux.c[1][5], main.escalarMul.segments[0].windows[80].adr6.out[1], main.escalarMul.segments[0].windows[80].adr7.in2[1] --> 11304472893077581335634015586515550230757196132920072297610152861696810355720 +main.escalarMul.segments[0].windows[80].mux.c[1][6], main.escalarMul.segments[0].windows[80].adr7.out[1], main.escalarMul.segments[0].windows[80].adr8.in2[1] --> 12147756614962359542990362344129623808124809737973367112680241475683151670246 +main.escalarMul.segments[0].windows[80].mux.a210[0] --> 7651189383687767999909643671721737911900251678073839161294844240191755301270 +main.escalarMul.segments[0].windows[80].mux.a210[1] --> 17198156634233256103628494834671847935109889644471981737626040770008688766328 +main.escalarMul.segments[0].windows[80].mux.a21[0] --> 19515770995935618364335768519574149389296301506690715718861296784089787961005 +main.escalarMul.segments[0].windows[80].mux.a21[1] --> 1665343538986854729597451667017547162786048090917515290020790021463304160541 +main.escalarMul.segments[0].windows[80].mux.a20[0] --> 9664280355127236738657105503435606579453262284061457641218917233847069609796 +main.escalarMul.segments[0].windows[80].mux.a20[1] --> 12658950194882320446744698351309874155688997896871871045724453503082493078521 +main.escalarMul.segments[0].windows[80].mux.a2[0] --> 4307510873188513839633248434864395647816734710486087705718720335691241389594 +main.escalarMul.segments[0].windows[80].mux.a2[1] --> 6038787125309623223288821340050844494865676291767337839113463635191639747550 +main.escalarMul.segments[0].windows[80].mux.a10[0] --> 576134789582181672354165748038523134038178847291330769727945542256743229831 +main.escalarMul.segments[0].windows[80].mux.a10[1] --> 15720776213853275792885270668213518080250098353168841128818447385663761614900 +main.escalarMul.segments[0].windows[80].mux.a1[0] --> 3685482136319938885285349445378245444212042548753802305782685185120581534111 +main.escalarMul.segments[0].windows[80].mux.a1[1] --> 13133638510681925559090551153669914453947966799925858017838965965281540933794 +main.escalarMul.segments[0].windows[80].mux.a0[0] --> 3704615523179707865926129661714320553239808830609371210953472624880960859715 +main.escalarMul.segments[0].windows[80].mux.a0[1] --> 1296748132901681634586957711763513883677403388918207447065213869676010701288 +main.escalarMul.segments[0].windows[80].mux.s10 --> 1 +main.escalarMul.segments[0].windows[80].dbl2.lamda --> 19826728972704239056585815988645240055138792665510966863397872815975173482796 +main.escalarMul.segments[0].windows[80].dbl2.x1_2 --> 12008578905780240126526454410621579734369580140025754256755917222436888632453 +main.escalarMul.segments[0].windows[80].adr3.lamda --> 10369293258078930833025535930270380496378957242585230231773087052359108419802 +main.escalarMul.segments[0].windows[80].adr4.lamda --> 8914014524157027309810030751315887768526156502953242635947342036513464270297 +main.escalarMul.segments[0].windows[80].adr5.lamda --> 1466588152406742481374420732998743330240625775460405406798837442230567070874 +main.escalarMul.segments[0].windows[80].adr6.lamda --> 6420892256459609088308375032550950800276009449997171311932407053828603761636 +main.escalarMul.segments[0].windows[80].adr7.lamda --> 20424345509759551497897292480524859208998223979915101667672588827441077002896 +main.escalarMul.segments[0].windows[80].adr8.lamda --> 5263847286858317579888010531172241860204517411820166533157144271728242879705 +main.escalarMul.segments[0].adders[79].out[0], main.escalarMul.segments[0].adders[80].in1[0] --> 3435193808040291914121014251040650332760133210674900241276530230716501707432 +main.escalarMul.segments[0].adders[79].out[1], main.escalarMul.segments[0].adders[80].in1[1] --> 1809912134933942319493951594300662317499982296687236491302202374723807965047 +main.escalarMul.segments[0].adders[79].lamda --> 16982352583679783489918151471366972285198004536582228950445739468426493130421 +main.escalarMul.segments[0].cadders[79].out[0], main.escalarMul.segments[0].cadders[80].in1[0] --> 19431437836323207910531005004367369385281014161736307437464169842422286984317 +main.escalarMul.segments[0].cadders[79].out[1], main.escalarMul.segments[0].cadders[80].in1[1] --> 276551149304616785557001324963390396142997790280338888713032688961049099786 +main.escalarMul.segments[0].cadders[79].lamda --> 3545762968349301301146903074146595917014487906736190916891208630873194543602 +main.escalarMul.segments[0].windows[81].out[0], main.escalarMul.segments[0].windows[81].mux.out[0], main.escalarMul.segments[0].adders[80].in2[0] --> 1055433550952429211212648094081024751828455347284017808845811369224431495191 +main.escalarMul.segments[0].windows[81].out[1], main.escalarMul.segments[0].windows[81].mux.out[1], main.escalarMul.segments[0].adders[80].in2[1] --> 13363538278021636734181663867926303678184570618759833089790769600176828511464 +main.escalarMul.segments[0].windows[81].out8[0], main.escalarMul.segments[0].windows[81].mux.c[0][7], main.escalarMul.segments[0].windows[81].adr8.out[0], main.escalarMul.segments[0].windows[82].base[0], main.escalarMul.segments[0].windows[82].mux.c[0][0], main.escalarMul.segments[0].windows[82].mux.a[0], main.escalarMul.segments[0].windows[82].dbl2.in[0], main.escalarMul.segments[0].windows[82].adr3.in1[0], main.escalarMul.segments[0].windows[82].adr4.in1[0], main.escalarMul.segments[0].windows[82].adr5.in1[0], main.escalarMul.segments[0].windows[82].adr6.in1[0], main.escalarMul.segments[0].windows[82].adr7.in1[0], main.escalarMul.segments[0].windows[82].adr8.in1[0], main.escalarMul.segments[0].cadders[81].in2[0] --> 9222889125960500799748475646571898604787247683745667298236604743526109459044 +main.escalarMul.segments[0].windows[81].out8[1], main.escalarMul.segments[0].windows[81].mux.c[1][7], main.escalarMul.segments[0].windows[81].adr8.out[1], main.escalarMul.segments[0].windows[82].base[1], main.escalarMul.segments[0].windows[82].mux.c[1][0], main.escalarMul.segments[0].windows[82].mux.a[1], main.escalarMul.segments[0].windows[82].dbl2.in[1], main.escalarMul.segments[0].windows[82].adr3.in1[1], main.escalarMul.segments[0].windows[82].adr4.in1[1], main.escalarMul.segments[0].windows[82].adr5.in1[1], main.escalarMul.segments[0].windows[82].adr6.in1[1], main.escalarMul.segments[0].windows[82].adr7.in1[1], main.escalarMul.segments[0].windows[82].adr8.in1[1], main.escalarMul.segments[0].cadders[81].in2[1] --> 2836086074308457513553131786961970205397171355908883967229107219790200218878 +main.escalarMul.segments[0].windows[81].mux.c[0][1], main.escalarMul.segments[0].windows[81].dbl2.out[0], main.escalarMul.segments[0].windows[81].adr3.in2[0] --> 10075743791339312896900582728059368253801983171623667525377969304470893209635 +main.escalarMul.segments[0].windows[81].mux.c[0][2], main.escalarMul.segments[0].windows[81].adr3.out[0], main.escalarMul.segments[0].windows[81].adr4.in2[0] --> 7869534352939578168134983475851394901318053777179128263153001774445403406740 +main.escalarMul.segments[0].windows[81].mux.c[0][3], main.escalarMul.segments[0].windows[81].adr4.out[0], main.escalarMul.segments[0].windows[81].adr5.in2[0] --> 7890698817449269806198209008364015629411869714032409902744546851484021138867 +main.escalarMul.segments[0].windows[81].mux.c[0][4], main.escalarMul.segments[0].windows[81].adr5.out[0], main.escalarMul.segments[0].windows[81].adr6.in2[0] --> 1601483245726281164154037405522474778984878860378409211926472236456946831035 +main.escalarMul.segments[0].windows[81].mux.c[0][5], main.escalarMul.segments[0].windows[81].adr6.out[0], main.escalarMul.segments[0].windows[81].adr7.in2[0] --> 15207151875650892583362673660847932582714309559368734527275083876396426620985 +main.escalarMul.segments[0].windows[81].mux.c[0][6], main.escalarMul.segments[0].windows[81].adr7.out[0], main.escalarMul.segments[0].windows[81].adr8.in2[0] --> 1055433550952429211212648094081024751828455347284017808845811369224431495191 +main.escalarMul.segments[0].windows[81].mux.c[1][1], main.escalarMul.segments[0].windows[81].dbl2.out[1], main.escalarMul.segments[0].windows[81].adr3.in2[1] --> 9814388794830556535627720636225790293867764721251611096264304456238413928830 +main.escalarMul.segments[0].windows[81].mux.c[1][2], main.escalarMul.segments[0].windows[81].adr3.out[1], main.escalarMul.segments[0].windows[81].adr4.in2[1] --> 2142575961063964898672379907044039423366407284866753376659114107722666055958 +main.escalarMul.segments[0].windows[81].mux.c[1][3], main.escalarMul.segments[0].windows[81].adr4.out[1], main.escalarMul.segments[0].windows[81].adr5.in2[1] --> 15795635296382081706300233897807148518598775582534747189249551718439884104216 +main.escalarMul.segments[0].windows[81].mux.c[1][4], main.escalarMul.segments[0].windows[81].adr5.out[1], main.escalarMul.segments[0].windows[81].adr6.in2[1] --> 16050220840129489591933056997206185072086697410748728688734448997265977743507 +main.escalarMul.segments[0].windows[81].mux.c[1][5], main.escalarMul.segments[0].windows[81].adr6.out[1], main.escalarMul.segments[0].windows[81].adr7.in2[1] --> 19922556804405113866480823864194443118194715463234368886065983139507643563980 +main.escalarMul.segments[0].windows[81].mux.c[1][6], main.escalarMul.segments[0].windows[81].adr7.out[1], main.escalarMul.segments[0].windows[81].adr8.in2[1] --> 13363538278021636734181663867926303678184570618759833089790769600176828511464 +main.escalarMul.segments[0].windows[81].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[81].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[81].mux.a21[0] --> 14123927548378383062633259226703941014086073001973403744508920766542319159972 +main.escalarMul.segments[0].windows[81].mux.a21[1] --> 10416643523982525319919199383249906868485936143716550808915195126150673552048 +main.escalarMul.segments[0].windows[81].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[81].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[81].mux.a2[0] --> 950214521473743202690811136782963924972692968547520144882093014812517424096 +main.escalarMul.segments[0].windows[81].mux.a2[1] --> 804318792975146515590084577632357386332227190176528904216460366303488903458 +main.escalarMul.segments[0].windows[81].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[81].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[81].mux.a1[0] --> 7218265628687040206671757207111884047305867885348239196108622552800973999801 +main.escalarMul.segments[0].windows[81].mux.a1[1] --> 8784916785748897044575813232727486826160301464710587935839329663335985711526 +main.escalarMul.segments[0].windows[81].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[81].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[81].mux.s10 --> 0 +main.escalarMul.segments[0].windows[81].dbl2.lamda --> 16595439400599555880345462117567982783937863724404484015799538661320833114245 +main.escalarMul.segments[0].windows[81].dbl2.x1_2 --> 18496261126614336246514430565499998851101381662532712215269223116144381710791 +main.escalarMul.segments[0].windows[81].adr3.lamda --> 7546763547892820709354992844728000913054702034351506164720227525979781016417 +main.escalarMul.segments[0].windows[81].adr4.lamda --> 4622796089624172052108614313049294246746371332612336084407751697965980738875 +main.escalarMul.segments[0].windows[81].adr5.lamda --> 16562418351710712483217077166884885039087704329707244620669277112195064683203 +main.escalarMul.segments[0].windows[81].adr6.lamda --> 56409021630792024304898538859358655856397119675004369401067944795126701726 +main.escalarMul.segments[0].windows[81].adr7.lamda --> 20016331477716436405485794446892447240861532278498522647332914843891849967535 +main.escalarMul.segments[0].windows[81].adr8.lamda --> 7807634074346992124409001928515996830579754444527543698115386695330524766287 +main.escalarMul.segments[0].adders[80].out[0], main.escalarMul.segments[0].adders[81].in1[0] --> 18244829887007959021149623215407325917384778953347321770021628696488070979915 +main.escalarMul.segments[0].adders[80].out[1], main.escalarMul.segments[0].adders[81].in1[1] --> 3913567514015119556887824389136118529262116768795100187553571767804619532354 +main.escalarMul.segments[0].adders[80].lamda --> 3668960683626115370984874914450287889579992242506491963336772236185711029606 +main.escalarMul.segments[0].cadders[80].out[0], main.escalarMul.segments[0].cadders[81].in1[0] --> 8794484950584498184126138893084921426241292387286299919611584171171331532707 +main.escalarMul.segments[0].cadders[80].out[1], main.escalarMul.segments[0].cadders[81].in1[1] --> 14154277817668521268915415068060109901767465472173045033205174551930857230237 +main.escalarMul.segments[0].cadders[80].lamda --> 4091137422494917970041830236223193097526986984174761692028845943004053957075 +main.escalarMul.segments[0].windows[82].out[0], main.escalarMul.segments[0].windows[82].mux.out[0], main.escalarMul.segments[0].adders[81].in2[0] --> 10112957119200095844102150386971483432116586088241064835136297389430004617523 +main.escalarMul.segments[0].windows[82].out[1], main.escalarMul.segments[0].windows[82].mux.out[1], main.escalarMul.segments[0].adders[81].in2[1] --> 1306002095245891974816569398115446986598284697037639090892858220633683794007 +main.escalarMul.segments[0].windows[82].mux.c[0][1], main.escalarMul.segments[0].windows[82].dbl2.out[0], main.escalarMul.segments[0].windows[82].adr3.in2[0] --> 4572370025004352924635766202553817831341265379445668817821647010335602109029 +main.escalarMul.segments[0].windows[82].mux.c[0][2], main.escalarMul.segments[0].windows[82].adr3.out[0], main.escalarMul.segments[0].windows[82].adr4.in2[0] --> 20010356694388200470102739040467383768760905168808319509268235485381522813374 +main.escalarMul.segments[0].windows[82].mux.c[0][3], main.escalarMul.segments[0].windows[82].adr4.out[0], main.escalarMul.segments[0].windows[82].adr5.in2[0] --> 17000249045275567695665786089113811249096135179310705395069075961336875395074 +main.escalarMul.segments[0].windows[82].mux.c[0][4], main.escalarMul.segments[0].windows[82].adr5.out[0], main.escalarMul.segments[0].windows[82].adr6.in2[0] --> 10112957119200095844102150386971483432116586088241064835136297389430004617523 +main.escalarMul.segments[0].windows[82].mux.c[0][5], main.escalarMul.segments[0].windows[82].adr6.out[0], main.escalarMul.segments[0].windows[82].adr7.in2[0] --> 13414918289102482748462940065652705274218234097003914718852600274845121790146 +main.escalarMul.segments[0].windows[82].mux.c[0][6], main.escalarMul.segments[0].windows[82].adr7.out[0], main.escalarMul.segments[0].windows[82].adr8.in2[0] --> 20379089763405609002159524692263180538591123513236333268615276423280303162874 +main.escalarMul.segments[0].windows[82].mux.c[1][1], main.escalarMul.segments[0].windows[82].dbl2.out[1], main.escalarMul.segments[0].windows[82].adr3.in2[1] --> 8457693727082779735621049094326410029140437514238331520864495060095222938195 +main.escalarMul.segments[0].windows[82].mux.c[1][2], main.escalarMul.segments[0].windows[82].adr3.out[1], main.escalarMul.segments[0].windows[82].adr4.in2[1] --> 1547761599885423956419738449849066375904645878387331032049649673196620044106 +main.escalarMul.segments[0].windows[82].mux.c[1][3], main.escalarMul.segments[0].windows[82].adr4.out[1], main.escalarMul.segments[0].windows[82].adr5.in2[1] --> 2619923696245251435137785749720705108325369325589944485426009291064475023285 +main.escalarMul.segments[0].windows[82].mux.c[1][4], main.escalarMul.segments[0].windows[82].adr5.out[1], main.escalarMul.segments[0].windows[82].adr6.in2[1] --> 1306002095245891974816569398115446986598284697037639090892858220633683794007 +main.escalarMul.segments[0].windows[82].mux.c[1][5], main.escalarMul.segments[0].windows[82].adr6.out[1], main.escalarMul.segments[0].windows[82].adr7.in2[1] --> 9774643987736347605540034020002924760046284283928371426878771644789553039368 +main.escalarMul.segments[0].windows[82].mux.c[1][6], main.escalarMul.segments[0].windows[82].adr7.out[1], main.escalarMul.segments[0].windows[82].adr8.in2[1] --> 9942840588768384335599386781603165387218081907341168326056124261343877409266 +main.escalarMul.segments[0].windows[82].mux.a210[0] --> 0 +main.escalarMul.segments[0].windows[82].mux.a210[1] --> 0 +main.escalarMul.segments[0].windows[82].mux.a21[0] --> 0 +main.escalarMul.segments[0].windows[82].mux.a21[1] --> 0 +main.escalarMul.segments[0].windows[82].mux.a20[0] --> 0 +main.escalarMul.segments[0].windows[82].mux.a20[1] --> 0 +main.escalarMul.segments[0].windows[82].mux.a2[0] --> 890067993239595044353674740399584827329338404495397536899692645903895158479 +main.escalarMul.segments[0].windows[82].mux.a2[1] --> 20358158892776709683509843356410751869749477741544789467361955187419292070746 +main.escalarMul.segments[0].windows[82].mux.a10[0] --> 0 +main.escalarMul.segments[0].windows[82].mux.a10[1] --> 0 +main.escalarMul.segments[0].windows[82].mux.a1[0] --> 0 +main.escalarMul.segments[0].windows[82].mux.a1[1] --> 0 +main.escalarMul.segments[0].windows[82].mux.a0[0] --> 0 +main.escalarMul.segments[0].windows[82].mux.a0[1] --> 0 +main.escalarMul.segments[0].windows[82].mux.s10 --> 0 +main.escalarMul.segments[0].windows[82].dbl2.lamda --> 1943891485746377267252342642812013931163432225094155584330626642386341203686 +main.escalarMul.segments[0].windows[82].dbl2.x1_2 --> 13430872831590098420434225882314816904650240495140494938986645812715614055717 +main.escalarMul.segments[0].windows[82].adr3.lamda --> 18130144456902580369598355671005725039986394445676157438527294021218619072216 +main.escalarMul.segments[0].windows[82].adr4.lamda --> 9687487339701411837714314524096290213721377868479821258584833274177464200738 +main.escalarMul.segments[0].windows[82].adr5.lamda --> 20914734423347283506583436365100100327099218739026823827777507658271999585422 +main.escalarMul.segments[0].windows[82].adr6.lamda --> 11760229257977499775194162661290198027697342089351211732378439575447141209703 +main.escalarMul.segments[0].windows[82].adr7.lamda --> 6383753787924449938441715714545986468368625943941131412233977188316441992609 +main.escalarMul.segments[0].windows[82].adr8.lamda --> 16408744318941191485092634701726909170983506939682767594781662247498700527509 +main.escalarMul.segments[0].adders[81].out[0], main.escalarMul.segments[0].m2e.in[0] --> 11638025061209860951842250900899387852060555006711907402159963573425335470410 +main.escalarMul.segments[0].adders[81].out[1], main.escalarMul.segments[0].m2e.in[1] --> 2288932463505345857084738336873113619182841152961179896866186044633601309747 +main.escalarMul.segments[0].adders[81].lamda --> 3395017000201908446399848942637536021381043823605203884843381589846656176902 +main.escalarMul.segments[0].cadders[81].out[0], main.escalarMul.segments[0].cm2e.in[0] --> 20824844290462682850139869525935659716050897886846091845175936178616408893863 +main.escalarMul.segments[0].cadders[81].out[1], main.escalarMul.segments[0].cm2e.in[1] --> 7484366159248035801508158347133029450486804677261111183016579770712013925969 +main.escalarMul.segments[0].cadders[81].lamda --> 19743275574937323916472348782053213774404837100972187792597929360452674847991 +main.escalarMul.segments[0].m2e.out[0], main.escalarMul.segments[0].cAdd.x1 --> 11819298752840516001360057021049912342155420300830797011703921297662993305853 +main.escalarMul.segments[0].m2e.out[1], main.escalarMul.segments[0].cAdd.y1 --> 10605647084525200899310429907982475461763401549234265411580513878963688144123 +main.escalarMul.segments[0].cm2e.out[0] --> 17678066234330809614523666809600985996792117663379640737059930101599356244329 +main.escalarMul.segments[0].cm2e.out[1], main.escalarMul.segments[0].cAdd.y2 --> 6550953981764255862842319097584290267866108651067810097853882082417678270040 +main.escalarMul.segments[0].cAdd.x2 --> 4210176637508465607722738935656289091756246737036393606638274084976452251288 +main.escalarMul.segments[0].cAdd.beta --> 9484512250764894919480933781929929395041369214170513249359663711146021281816 +main.escalarMul.segments[0].cAdd.gamma --> 17848878762252672187545824403048612156344859330650227613692818302725932154541 +main.escalarMul.segments[0].cAdd.delta --> 15662054879849085414151812133770136337078100655714007045836270452795747547018 +main.escalarMul.segments[0].cAdd.tau --> 2902960602441854265270885609550447269838640441676876951881153680080349083263 +main.escalarMul.segments[1].base[0], main.escalarMul.segments[1].e2m.in[0], main.escalarMul.m2e[0].out[0] --> 18527904215505654006936347916724710560330742320460505100857179227256487283892 +main.escalarMul.segments[1].base[1], main.escalarMul.segments[1].e2m.in[1], main.escalarMul.m2e[0].out[1] --> 15978967396324950967408608366520784443352836631834384047630970696963304311387 +main.escalarMul.segments[1].out[0], main.escalarMul.segments[1].cAdd.xout, main.escalarMul.adders[0].x2 --> 7905729937767995132676996605192252122879570017796370122060447828917561019363 +main.escalarMul.segments[1].out[1], main.escalarMul.segments[1].cAdd.yout, main.escalarMul.adders[0].y2 --> 11732219921699681139254680634087378472233923592206553962791872545817855481214 +main.escalarMul.segments[1].dbl[0], main.escalarMul.segments[1].windows[1].out8[0], main.escalarMul.segments[1].windows[1].mux.c[0][7], main.escalarMul.segments[1].windows[1].adr8.out[0] --> 12378101987267572758239294618745458217385125019756581995356524294806987948004 +main.escalarMul.segments[1].dbl[1], main.escalarMul.segments[1].windows[1].out8[1], main.escalarMul.segments[1].windows[1].mux.c[1][7], main.escalarMul.segments[1].windows[1].adr8.out[1] --> 19082547579608908065449567002323562274276126970301494180935300848621230481581 +main.escalarMul.segments[1].e2m.out[0], main.escalarMul.segments[1].windows[0].base[0], main.escalarMul.segments[1].windows[0].mux.c[0][0], main.escalarMul.segments[1].windows[0].mux.a[0], main.escalarMul.segments[1].windows[0].dbl2.in[0], main.escalarMul.segments[1].windows[0].adr3.in1[0], main.escalarMul.segments[1].windows[0].adr4.in1[0], main.escalarMul.segments[1].windows[0].adr5.in1[0], main.escalarMul.segments[1].windows[0].adr6.in1[0], main.escalarMul.segments[1].windows[0].adr7.in1[0], main.escalarMul.segments[1].windows[0].adr8.in1[0], main.escalarMul.segments[1].cadders[0].in1[0] --> 501247408557278418775652570322833939900259590416381855341239762907646262564 +main.escalarMul.segments[1].e2m.out[1], main.escalarMul.segments[1].windows[0].base[1], main.escalarMul.segments[1].windows[0].mux.c[1][0], main.escalarMul.segments[1].windows[0].mux.a[1], main.escalarMul.segments[1].windows[0].dbl2.in[1], main.escalarMul.segments[1].windows[0].adr3.in1[1], main.escalarMul.segments[1].windows[0].adr4.in1[1], main.escalarMul.segments[1].windows[0].adr5.in1[1], main.escalarMul.segments[1].windows[0].adr6.in1[1], main.escalarMul.segments[1].windows[0].adr7.in1[1], main.escalarMul.segments[1].windows[0].adr8.in1[1], main.escalarMul.segments[1].cadders[0].in1[1] --> 12444317994817516431470070036784049199308823013605433429380799220519715901218 +main.escalarMul.segments[1].windows[0].out[0], main.escalarMul.segments[1].windows[0].mux.out[0], main.escalarMul.segments[1].adders[0].in1[0] --> 3069381755700990452819543101337487577119031119221948183380778601499258660407 +main.escalarMul.segments[1].windows[0].out[1], main.escalarMul.segments[1].windows[0].mux.out[1], main.escalarMul.segments[1].adders[0].in1[1] --> 314707534607477065171955582314020821582807493251141005079074529035974346986 +main.escalarMul.segments[1].windows[0].out8[0], main.escalarMul.segments[1].windows[0].mux.c[0][7], main.escalarMul.segments[1].windows[0].adr8.out[0], main.escalarMul.segments[1].windows[1].base[0], main.escalarMul.segments[1].windows[1].mux.c[0][0], main.escalarMul.segments[1].windows[1].mux.a[0], main.escalarMul.segments[1].windows[1].dbl2.in[0], main.escalarMul.segments[1].windows[1].adr3.in1[0], main.escalarMul.segments[1].windows[1].adr4.in1[0], main.escalarMul.segments[1].windows[1].adr5.in1[0], main.escalarMul.segments[1].windows[1].adr6.in1[0], main.escalarMul.segments[1].windows[1].adr7.in1[0], main.escalarMul.segments[1].windows[1].adr8.in1[0], main.escalarMul.segments[1].cadders[0].in2[0] --> 11356804872856966530913195806283716779258250281493343742395364456916167173117 +main.escalarMul.segments[1].windows[0].out8[1], main.escalarMul.segments[1].windows[0].mux.c[1][7], main.escalarMul.segments[1].windows[0].adr8.out[1], main.escalarMul.segments[1].windows[1].base[1], main.escalarMul.segments[1].windows[1].mux.c[1][0], main.escalarMul.segments[1].windows[1].mux.a[1], main.escalarMul.segments[1].windows[1].dbl2.in[1], main.escalarMul.segments[1].windows[1].adr3.in1[1], main.escalarMul.segments[1].windows[1].adr4.in1[1], main.escalarMul.segments[1].windows[1].adr5.in1[1], main.escalarMul.segments[1].windows[1].adr6.in1[1], main.escalarMul.segments[1].windows[1].adr7.in1[1], main.escalarMul.segments[1].windows[1].adr8.in1[1], main.escalarMul.segments[1].cadders[0].in2[1] --> 484416396494329857660130590328632030508066272163050255026477554678528849826 +main.escalarMul.segments[1].windows[0].mux.c[0][1], main.escalarMul.segments[1].windows[0].dbl2.out[0], main.escalarMul.segments[1].windows[0].adr3.in2[0] --> 11691901856064274542148100094268389804918438652814482719340928211142153121874 +main.escalarMul.segments[1].windows[0].mux.c[0][2], main.escalarMul.segments[1].windows[0].adr3.out[0], main.escalarMul.segments[1].windows[0].adr4.in2[0] --> 3069381755700990452819543101337487577119031119221948183380778601499258660407 +main.escalarMul.segments[1].windows[0].mux.c[0][3], main.escalarMul.segments[1].windows[0].adr4.out[0], main.escalarMul.segments[1].windows[0].adr5.in2[0] --> 20566489274978921045031128435049701349780861386159707566691908897009270667272 +main.escalarMul.segments[1].windows[0].mux.c[0][4], main.escalarMul.segments[1].windows[0].adr5.out[0], main.escalarMul.segments[1].windows[0].adr6.in2[0] --> 12547100447447186922687470757004383083651012113342955109336320503310540788524 +main.escalarMul.segments[1].windows[0].mux.c[0][5], main.escalarMul.segments[1].windows[0].adr6.out[0], main.escalarMul.segments[1].windows[0].adr7.in2[0] --> 21488054194979226137419088497148949786169500297882351326337709218848930232531 +main.escalarMul.segments[1].windows[0].mux.c[0][6], main.escalarMul.segments[1].windows[0].adr7.out[0], main.escalarMul.segments[1].windows[0].adr8.in2[0] --> 19857909757577975902104800696030405666354801110936433752641354843135573321547 +main.escalarMul.segments[1].windows[0].mux.c[1][1], main.escalarMul.segments[1].windows[0].dbl2.out[1], main.escalarMul.segments[1].windows[0].adr3.in2[1] --> 11137914443575265338957170083461086473369690037368146955851703353960943683441 +main.escalarMul.segments[1].windows[0].mux.c[1][2], main.escalarMul.segments[1].windows[0].adr3.out[1], main.escalarMul.segments[1].windows[0].adr4.in2[1] --> 314707534607477065171955582314020821582807493251141005079074529035974346986 +main.escalarMul.segments[1].windows[0].mux.c[1][3], main.escalarMul.segments[1].windows[0].adr4.out[1], main.escalarMul.segments[1].windows[0].adr5.in2[1] --> 15678002390816768758622904074438971705048927778185156049686536827943301641961 +main.escalarMul.segments[1].windows[0].mux.c[1][4], main.escalarMul.segments[1].windows[0].adr5.out[1], main.escalarMul.segments[1].windows[0].adr6.in2[1] --> 3008621554396863814701385232667893656411857880642150448080080948915823938937 +main.escalarMul.segments[1].windows[0].mux.c[1][5], main.escalarMul.segments[1].windows[0].adr6.out[1], main.escalarMul.segments[1].windows[0].adr7.in2[1] --> 8016576906499720130314044104484029494733378751625119538389337613327187448903 +main.escalarMul.segments[1].windows[0].mux.c[1][6], main.escalarMul.segments[1].windows[0].adr7.out[1], main.escalarMul.segments[1].windows[0].adr8.in2[1] --> 14976824537604983404596346941018258395889313004737885704440592748948808533235 +main.escalarMul.segments[1].windows[0].mux.a210[0] --> 0 +main.escalarMul.segments[1].windows[0].mux.a210[1] --> 0 +main.escalarMul.segments[1].windows[0].mux.a21[0] --> 4742674962987076945373439408011368945485017468787912315265495501233420135180 +main.escalarMul.segments[1].windows[0].mux.a21[1] --> 2209570571578883733946670417563118028655106244033993336964032304940917652913 +main.escalarMul.segments[1].windows[0].mux.a20[0] --> 0 +main.escalarMul.segments[1].windows[0].mux.a20[1] --> 0 +main.escalarMul.segments[1].windows[0].mux.a2[0] --> 12045853038889908503911818186681549143750752522926573253995080740402894525960 +main.escalarMul.segments[1].windows[0].mux.a2[1] --> 12452546431418622605477720941141119545651399267452751362397485914971916533336 +main.escalarMul.segments[1].windows[0].mux.a10[0] --> 0 +main.escalarMul.segments[1].windows[0].mux.a10[1] --> 0 +main.escalarMul.segments[1].windows[0].mux.a1[0] --> 2568134347143712034043890531014653637218771528805566328039538838591612397843 +main.escalarMul.segments[1].windows[0].mux.a1[1] --> 9758632411629235855948291290787246710822348880061741919396479495092066941385 +main.escalarMul.segments[1].windows[0].mux.a0[0] --> 0 +main.escalarMul.segments[1].windows[0].mux.a0[1] --> 0 +main.escalarMul.segments[1].windows[0].mux.s10 --> 0 +main.escalarMul.segments[1].windows[0].dbl2.lamda --> 1794595161918424698980213040490085021113279517440272818740547145508215573181 +main.escalarMul.segments[1].windows[0].dbl2.x1_2 --> 158218569609971834230738065009255156914241198782657497869766812458259130139 +main.escalarMul.segments[1].windows[0].adr3.lamda --> 1743127205840836574493121413411138912410365965608493089213854084468071576369 +main.escalarMul.segments[1].windows[0].adr4.lamda --> 16280646194365098152356808169358190280990491977196345840929652221262447027250 +main.escalarMul.segments[1].windows[0].adr5.lamda --> 1856085860697426699150102537616004797111843668471873020784814938338495713115 +main.escalarMul.segments[1].windows[0].adr6.lamda --> 15102215124103096242539272286732553667432982669002696545948566786830937447261 +main.escalarMul.segments[1].windows[0].adr7.lamda --> 11905141568784469456279855253263866351652097530376014925158138924108738360096 +main.escalarMul.segments[1].windows[0].adr8.lamda --> 16945792939581742049647633728290287260539050417210225501609838322437479212036 +main.escalarMul.segments[1].windows[1].out[0], main.escalarMul.segments[1].windows[1].mux.out[0], main.escalarMul.segments[1].adders[0].in2[0] --> 11356804872856966530913195806283716779258250281493343742395364456916167173117 +main.escalarMul.segments[1].windows[1].out[1], main.escalarMul.segments[1].windows[1].mux.out[1], main.escalarMul.segments[1].adders[0].in2[1] --> 484416396494329857660130590328632030508066272163050255026477554678528849826 +main.escalarMul.segments[1].windows[1].mux.c[0][1], main.escalarMul.segments[1].windows[1].dbl2.out[0], main.escalarMul.segments[1].windows[1].adr3.in2[0] --> 21511207241663093913908579750553097275820328273386431255981456233562556956147 +main.escalarMul.segments[1].windows[1].mux.c[0][2], main.escalarMul.segments[1].windows[1].adr3.out[0], main.escalarMul.segments[1].windows[1].adr4.in2[0] --> 13256496966131755616396405086146894184159156737346471931731105380558540282055 +main.escalarMul.segments[1].windows[1].mux.c[0][3], main.escalarMul.segments[1].windows[1].adr4.out[0], main.escalarMul.segments[1].windows[1].adr5.in2[0] --> 2384392386945538184639629923590506506627255519708000479513181648176211769782 +main.escalarMul.segments[1].windows[1].mux.c[0][4], main.escalarMul.segments[1].windows[1].adr5.out[0], main.escalarMul.segments[1].windows[1].adr6.in2[0] --> 10900030292464890408103987321793439772009457403357803084718984668630154973218 +main.escalarMul.segments[1].windows[1].mux.c[0][5], main.escalarMul.segments[1].windows[1].adr6.out[0], main.escalarMul.segments[1].windows[1].adr7.in2[0] --> 17147310990115340071772676364428779272239157377015121912111299177624656258116 +main.escalarMul.segments[1].windows[1].mux.c[0][6], main.escalarMul.segments[1].windows[1].adr7.out[0], main.escalarMul.segments[1].windows[1].adr8.in2[0] --> 4970770120199252047631322461922901358096504820554046161237002547400732507464 +main.escalarMul.segments[1].windows[1].mux.c[1][1], main.escalarMul.segments[1].windows[1].dbl2.out[1], main.escalarMul.segments[1].windows[1].adr3.in2[1] --> 14520258113044322465478317541467741976745544085524388106938051460444276096431 +main.escalarMul.segments[1].windows[1].mux.c[1][2], main.escalarMul.segments[1].windows[1].adr3.out[1], main.escalarMul.segments[1].windows[1].adr4.in2[1] --> 5916736432073759015550228132169813975865640795539055480243454477704943049647 +main.escalarMul.segments[1].windows[1].mux.c[1][3], main.escalarMul.segments[1].windows[1].adr4.out[1], main.escalarMul.segments[1].windows[1].adr5.in2[1] --> 17149095044416708641022963313510666235938570898614980791002990970042932832055 +main.escalarMul.segments[1].windows[1].mux.c[1][4], main.escalarMul.segments[1].windows[1].adr5.out[1], main.escalarMul.segments[1].windows[1].adr6.in2[1] --> 7547383611011176522400908286498777798187017433193771763486376808201580371172 +main.escalarMul.segments[1].windows[1].mux.c[1][5], main.escalarMul.segments[1].windows[1].adr6.out[1], main.escalarMul.segments[1].windows[1].adr7.in2[1] --> 10812053701612851030022849014085511896220922280257947793189076109689720290204 +main.escalarMul.segments[1].windows[1].mux.c[1][6], main.escalarMul.segments[1].windows[1].adr7.out[1], main.escalarMul.segments[1].windows[1].adr8.in2[1] --> 16239741844639818054854486509908404198285143703612327049373757582921245788026 +main.escalarMul.segments[1].windows[1].mux.a210[0] --> 0 +main.escalarMul.segments[1].windows[1].mux.a210[1] --> 0 +main.escalarMul.segments[1].windows[1].mux.a21[0] --> 0 +main.escalarMul.segments[1].windows[1].mux.a21[1] --> 0 +main.escalarMul.segments[1].windows[1].mux.a20[0] --> 0 +main.escalarMul.segments[1].windows[1].mux.a20[1] --> 0 +main.escalarMul.segments[1].windows[1].mux.a2[0] --> 21431468291447199099437197260766998081299571522280493686021824398289796295718 +main.escalarMul.segments[1].windows[1].mux.a2[1] --> 7062967214516846664740777696170145767678951161030721508459899253523051521346 +main.escalarMul.segments[1].windows[1].mux.a10[0] --> 0 +main.escalarMul.segments[1].windows[1].mux.a10[1] --> 0 +main.escalarMul.segments[1].windows[1].mux.a1[0] --> 0 +main.escalarMul.segments[1].windows[1].mux.a1[1] --> 0 +main.escalarMul.segments[1].windows[1].mux.a0[0] --> 0 +main.escalarMul.segments[1].windows[1].mux.a0[1] --> 0 +main.escalarMul.segments[1].windows[1].mux.s10 --> 0 +main.escalarMul.segments[1].windows[1].dbl2.lamda --> 18633147335293441540710591034579933512793015110648477217846628234626352029162 +main.escalarMul.segments[1].windows[1].dbl2.x1_2 --> 4891409066171709148106357956921664141264077099020859297877961037556708295438 +main.escalarMul.segments[1].windows[1].adr3.lamda --> 10065494110901898775547558887341931327049774474117455138975118209137450495840 +main.escalarMul.segments[1].windows[1].adr4.lamda --> 20466634543996967246620518063704649876712160990554229231786892639906015660267 +main.escalarMul.segments[1].windows[1].adr5.lamda --> 2431912804199074267897104534158603855277377962932988580308637562641601336388 +main.escalarMul.segments[1].windows[1].adr6.lamda --> 11291837705703579453701796468047967986958976460691077773653376699969495791860 +main.escalarMul.segments[1].windows[1].adr7.lamda --> 13585586029212359843958233931735840657898342855388532591468549844809504827699 +main.escalarMul.segments[1].windows[1].adr8.lamda --> 1852388355466658220375154565708449533078754626547881375568021527292780333075 +main.escalarMul.segments[1].adders[0].out[0], main.escalarMul.segments[1].m2e.in[0] --> 15545615931428409034486536874610930609608412294893164203826452358796544379906 +main.escalarMul.segments[1].adders[0].out[1], main.escalarMul.segments[1].m2e.in[1] --> 17347174739804335732181264927363999332217464261643755209045040218798018072953 +main.escalarMul.segments[1].adders[0].lamda --> 8105170051596457317598189970099227790403795462785515448995949983997698431836 +main.escalarMul.segments[1].cadders[0].out[0], main.escalarMul.segments[1].cm2e.in[0] --> 14900024686604959091935695649408559589829714080171509563122176131303440812801 +main.escalarMul.segments[1].cadders[0].out[1], main.escalarMul.segments[1].cm2e.in[1] --> 14745161253191394274575898355091918420207223310181815518698402458049178927110 +main.escalarMul.segments[1].cadders[0].lamda --> 14019767369302153339924629447431879576317156386010281475495245568520342336691 +main.escalarMul.segments[1].m2e.out[0], main.escalarMul.segments[1].cAdd.x1 --> 5144859833233929042379000525191065614523646424958711243921194505856685586013 +main.escalarMul.segments[1].m2e.out[1], main.escalarMul.segments[1].cAdd.y1 --> 16222769772696361633705519738225932983379704297599599392358393092191959164158 +main.escalarMul.segments[1].cm2e.out[0] --> 16316233444798756865620286960043886195283051128965649858246278347096611638764 +main.escalarMul.segments[1].cm2e.out[1], main.escalarMul.segments[1].cAdd.y2 --> 3215076338300372211091223961387105146418554636449420898642680989011909075647 +main.escalarMul.segments[1].cAdd.x2 --> 5572009427040518356626118785213388893265313271450384485451925839479196856853 +main.escalarMul.segments[1].cAdd.beta --> 10594898916920998270053423182498554681091605422036965283991554840570943818758 +main.escalarMul.segments[1].cAdd.gamma --> 14138783902269616390679620982401826612970404607554228066673416127034986470337 +main.escalarMul.segments[1].cAdd.delta --> 2266212568893740961527820376806678410439409757616583124239938244114222797173 +main.escalarMul.segments[1].cAdd.tau --> 7966340774529438273013505665628834259127466642556509560777838389447180407604 +main.escalarMul.adders[0].beta --> 18985860236490979799165010479125701678211851890453978352598366981880272711489 +main.escalarMul.adders[0].gamma --> 7952833198025822775126261378362593658167306245734496788664024479739038061092 +main.escalarMul.adders[0].delta --> 21044497682268917168667195987733656524265122782886994964755981166058942799602 +main.escalarMul.adders[0].tau --> 18174178608526280264033496284187710187104359497831134887473807143793573347842 +main.escalarMul.segments[0].base[0], main.escalarMul.segments[0].e2m.in[0] --> 17777552123799933955779906779655732241715742912184938656739573121738514868268 +main.escalarMul.segments[0].base[1], main.escalarMul.segments[0].e2m.in[1] --> 2626589144620713026669568689430873010625803728049924121243784502389097019475 +main.escalarMul.segments[1].e[4], main.escalarMul.segments[1].windows[1].in[1], main.escalarMul.segments[1].windows[1].mux.s[1] --> 0 +main.escalarMul.segments[1].e[5], main.escalarMul.segments[1].windows[1].in[2], main.escalarMul.segments[1].windows[1].mux.s[2] --> 0 +3532263828706420525006707840771439361736640158624083206758954365953197529860 +9795021154937401736623182915394180285188592914502744613336038815603046568132 +19350443861820459828550079620468391553230822763075753174420182016202827340018n +19350443861820459828550079620468391553230822763075753174420182016202827340018n + 1) Should generate scalar mul of a specific constant + ✓ If multiply by order should return 0 (124ms) + + + 3 passing (4s) + 1 failing + + 1) Escalarmul test + Should generate scalar mul of a specific constant: + AssertionError: Unspecified AssertionError + at Context. (test/escalarmulfix.js:75:9) + at processImmediate (internal/timers.js:439:21) + + + diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/aliascheck.js b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/aliascheck.js new file mode 100644 index 000000000..155bdba8e --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/aliascheck.js @@ -0,0 +1,74 @@ +const chai = require("chai"); +const path = require("path"); +const snarkjs = require("snarkjs"); +const compiler = require("circom"); + +const assert = chai.assert; + +const bigInt = snarkjs.bigInt; + +function print(circuit, w, s) { + console.log(s + ": " + w[circuit.getSignalIdx(s)]); +} + +function getBits(v, n) { + const res = []; + for (let i=0; i { + let circuit; + before( async() => { + const cirDef = await compiler(path.join(__dirname, "circuits", "aliascheck_test.circom")); + + circuit = new snarkjs.Circuit(cirDef); + + console.log("NConstrains: " + circuit.nConstraints); + }); + + it("Satisfy the aliastest 0", async () => { + const inp = getBits(bigInt.zero, 254); + circuit.calculateWitness({in: inp}); + }); + + it("Satisfy the aliastest 3", async () => { + const inp = getBits(bigInt(3), 254); + circuit.calculateWitness({in: inp}); + }); + + it("Satisfy the aliastest q-1", async () => { + const inp = getBits(q.sub(bigInt.one), 254); + circuit.calculateWitness({in: inp}); + }); + + it("Nhot not satisfy an input of q", async () => { + const inp = getBits(q, 254); + try { + circuit.calculateWitness({in: inp}); + assert(false); + } catch(err) { + assert.equal(err.message, "Constraint doesn't match: 1 != 0"); + } + }); + + it("Nhot not satisfy all ones", async () => { + + const inp = getBits(bigInt(1).shl(254).sub(bigInt(1)), 254); + try { + circuit.calculateWitness({in: inp}); + assert(false); + } catch(err) { + assert.equal(err.message, "Constraint doesn't match: 1 != 0"); + } + }); + +}); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/babyjub.js b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/babyjub.js new file mode 100644 index 000000000..f47db4961 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/babyjub.js @@ -0,0 +1,125 @@ +const chai = require("chai"); +const path = require("path"); +const snarkjs = require("snarkjs"); +const compiler = require("circom"); + +const createBlakeHash = require("blake-hash"); +const eddsa = require("../src/eddsa.js"); + +const assert = chai.assert; + +const bigInt = require("snarkjs").bigInt; + +describe("Baby Jub test", function () { + let circuitAdd; + let circuitTest; + + this.timeout(100000); + + before( async() => { + const cirDefAdd = await compiler(path.join(__dirname, "circuits", "babyadd_tester.circom")); + circuitAdd = new snarkjs.Circuit(cirDefAdd); + console.log("NConstrains BabyAdd: " + circuitAdd.nConstraints); + + const cirDefTest = await compiler(path.join(__dirname, "circuits", "babycheck_test.circom")); + circuitTest = new snarkjs.Circuit(cirDefTest); + console.log("NConstrains BabyTest: " + circuitTest.nConstraints); + + const cirDefPbk = await compiler(path.join(__dirname, "circuits", "babypbk_test.circom")); + circuitPbk = new snarkjs.Circuit(cirDefPbk); + console.log("NConstrains BabyPbk: " + circuitPbk.nConstraints); + + }); + + it("Should add point (0,1) and (0,1)", async () => { + + const input={ + x1: snarkjs.bigInt(0), + y1: snarkjs.bigInt(1), + x2: snarkjs.bigInt(0), + y2: snarkjs.bigInt(1) + }; + + const w = circuitAdd.calculateWitness(input); + + const xout = w[circuitAdd.getSignalIdx("main.xout")]; + const yout = w[circuitAdd.getSignalIdx("main.yout")]; + + assert(xout.equals(0)); + assert(yout.equals(1)); + }); + + it("Should add 2 same numbers", async () => { + + const input={ + x1: snarkjs.bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + y1: snarkjs.bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), + x2: snarkjs.bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + y2: snarkjs.bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475") + }; + + const w = circuitAdd.calculateWitness(input); + + const xout = w[circuitAdd.getSignalIdx("main.xout")]; + const yout = w[circuitAdd.getSignalIdx("main.yout")]; + + assert(xout.equals(snarkjs.bigInt("6890855772600357754907169075114257697580319025794532037257385534741338397365"))); + assert(yout.equals(snarkjs.bigInt("4338620300185947561074059802482547481416142213883829469920100239455078257889"))); + }); + + it("Should add 2 different numbers", async () => { + + const input={ + x1: snarkjs.bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + y1: snarkjs.bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), + x2: snarkjs.bigInt("16540640123574156134436876038791482806971768689494387082833631921987005038935"), + y2: snarkjs.bigInt("20819045374670962167435360035096875258406992893633759881276124905556507972311") + }; + + const w = circuitAdd.calculateWitness(input); + + const xout = w[circuitAdd.getSignalIdx("main.xout")]; + const yout = w[circuitAdd.getSignalIdx("main.yout")]; + + /* + console.log(xout.toString()); + console.log(yout.toString()); + */ + + assert(xout.equals(snarkjs.bigInt("7916061937171219682591368294088513039687205273691143098332585753343424131937"))); + assert(yout.equals(snarkjs.bigInt("14035240266687799601661095864649209771790948434046947201833777492504781204499"))); + }); + + it("Should check 0 is a valid poiny", async() => { + const w = circuitTest.calculateWitness({x: 0, y:1}); + assert(circuitTest.checkWitness(w)); + }); + + it("Should check 0 is an invalid poiny", async() => { + try { + circuitTest.calculateWitness({x: 1, y: 0}); + assert(false, "Should be a valid point"); + } catch(err) { + assert.equal(err.message, "Constraint doesn't match: 168700 != 1"); + } + }); + + it("Should extract the public key from the private one", async () => { + + const rawpvk = Buffer.from("0001020304050607080900010203040506070809000102030405060708090021", "hex"); + const pvk = eddsa.pruneBuffer(createBlakeHash("blake512").update(rawpvk).digest().slice(0,32)); + const S = bigInt.leBuff2int(pvk).shr(3); + + const A = eddsa.prv2pub(rawpvk); + + const input = { + in : S, + Ax : A[0], + Ay : A[1] + } + + const w = circuitPbk.calculateWitness(input); + assert(circuitPbk.checkWitness(w)); + }); + +}); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/babyjub_js.js b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/babyjub_js.js new file mode 100644 index 000000000..8e1fc33ae --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/babyjub_js.js @@ -0,0 +1,166 @@ +const chai = require("chai"); +const path = require("path"); +const snarkjs = require("snarkjs"); +const compiler = require("circom"); +const babyjub = require("../src/babyjub.js"); + +const assert = chai.assert; + +// const bigInt = require("big-integer"); + + +describe("Baby Jub js test", function () { + + this.timeout(100000); + + it("Should add point (0,1) and (0,1)", () => { + + const p1 = [ + snarkjs.bigInt(0), + snarkjs.bigInt(1)]; + const p2 = [ + snarkjs.bigInt(0), + snarkjs.bigInt(1) + ]; + + const out = babyjub.addPoint(p1, p2) + assert(out[0].equals(0)); + assert(out[1].equals(1)); + }); + + it("Should base be 8*generator", () => { + let res; + res = babyjub.addPoint(babyjub.Generator, babyjub.Generator); + res = babyjub.addPoint(res, res); + res = babyjub.addPoint(res, res); + + assert(res[0].equals(babyjub.Base8[0])); + assert(res[1].equals(babyjub.Base8[1])); + }); + + it("Should add 2 same numbers", () => { + + const p1 = [ + snarkjs.bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + snarkjs.bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), + ]; + const p2 = [ + snarkjs.bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + snarkjs.bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), + ]; + + const out = babyjub.addPoint(p1, p2) + assert(out[0].equals(snarkjs.bigInt("6890855772600357754907169075114257697580319025794532037257385534741338397365"))); + assert(out[1].equals(snarkjs.bigInt("4338620300185947561074059802482547481416142213883829469920100239455078257889"))); + }); + + it("Should add 2 different numbers", () => { + + const p1 = [ + snarkjs.bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + snarkjs.bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), + ]; + const p2 = [ + snarkjs.bigInt("16540640123574156134436876038791482806971768689494387082833631921987005038935"), + snarkjs.bigInt("20819045374670962167435360035096875258406992893633759881276124905556507972311"), + ]; + + const out = babyjub.addPoint(p1, p2) + + assert(out[0].equals(snarkjs.bigInt("7916061937171219682591368294088513039687205273691143098332585753343424131937"))); + assert(out[1].equals(snarkjs.bigInt("14035240266687799601661095864649209771790948434046947201833777492504781204499"))); + }); + + it("should mulPointEscalar 0", () => { + const p = [ + snarkjs.bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + snarkjs.bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), + ]; + + const r = babyjub.mulPointEscalar(p, snarkjs.bigInt("3")); + let r2 = babyjub.addPoint(p, p); + r2 = babyjub.addPoint(r2, p); + assert.equal(r2[0].toString(), r[0].toString()); + assert.equal(r2[1].toString(), r[1].toString()); + assert.equal(r[0].toString(), "19372461775513343691590086534037741906533799473648040012278229434133483800898"); + assert.equal(r[1].toString(), "9458658722007214007257525444427903161243386465067105737478306991484593958249"); + }); + + it("should mulPointEscalar 1", () => { + const p = [ + snarkjs.bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + snarkjs.bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), + ]; + + const r = babyjub.mulPointEscalar(p, snarkjs.bigInt("14035240266687799601661095864649209771790948434046947201833777492504781204499")); + assert.equal(r[0].toString(), "17070357974431721403481313912716834497662307308519659060910483826664480189605"); + assert.equal(r[1].toString(), "4014745322800118607127020275658861516666525056516280575712425373174125159339"); + }); + + it("should mulPointEscalar 2", () => { + const p = [ + snarkjs.bigInt("6890855772600357754907169075114257697580319025794532037257385534741338397365"), + snarkjs.bigInt("4338620300185947561074059802482547481416142213883829469920100239455078257889"), + ]; + + const r = babyjub.mulPointEscalar(p, snarkjs.bigInt("20819045374670962167435360035096875258406992893633759881276124905556507972311")); + assert.equal(r[0].toString(), "13563888653650925984868671744672725781658357821216877865297235725727006259983"); + assert.equal(r[1].toString(), "8442587202676550862664528699803615547505326611544120184665036919364004251662"); + }); + + it("should inCurve 1", () => { + const p = [ + snarkjs.bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + snarkjs.bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), + ]; + assert(babyjub.inCurve(p)); + }); + + it("should inCurve 2", () => { + const p = [ + snarkjs.bigInt("6890855772600357754907169075114257697580319025794532037257385534741338397365"), + snarkjs.bigInt("4338620300185947561074059802482547481416142213883829469920100239455078257889"), + ]; + assert(babyjub.inCurve(p)); + }); + + it("should inSubgroup 1", () => { + const p = [ + snarkjs.bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + snarkjs.bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), + ]; + assert(babyjub.inSubgroup(p)); + }); + + it("should inSubgroup 2", () => { + const p = [ + snarkjs.bigInt("6890855772600357754907169075114257697580319025794532037257385534741338397365"), + snarkjs.bigInt("4338620300185947561074059802482547481416142213883829469920100239455078257889"), + ]; + assert(babyjub.inSubgroup(p)); + }); + + it("should packPoint - unpackPoint 1", () => { + const p = [ + snarkjs.bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + snarkjs.bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), + ]; + const buf = babyjub.packPoint(p); + assert.equal(buf.toString('hex'), '53b81ed5bffe9545b54016234682e7b2f699bd42a5e9eae27ff4051bc698ce85'); + const p2 = babyjub.unpackPoint(buf); + assert.equal(p2[0].toString(), "17777552123799933955779906779655732241715742912184938656739573121738514868268"); + assert.equal(p2[1].toString(), "2626589144620713026669568689430873010625803728049924121243784502389097019475"); + }); + + it("should packPoint - unpackPoint 2", () => { + const p = [ + snarkjs.bigInt("6890855772600357754907169075114257697580319025794532037257385534741338397365"), + snarkjs.bigInt("4338620300185947561074059802482547481416142213883829469920100239455078257889"), + ]; + const buf = babyjub.packPoint(p); + assert.equal(buf.toString('hex'), 'e114eb17eddf794f063a68fecac515e3620e131976108555735c8b0773929709'); + const p2 = babyjub.unpackPoint(buf); + assert.equal(p2[0].toString(), "6890855772600357754907169075114257697580319025794532037257385534741338397365"); + assert.equal(p2[1].toString(), "4338620300185947561074059802482547481416142213883829469920100239455078257889"); + }); +}); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/binsub.js b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/binsub.js new file mode 100644 index 000000000..21e5ad358 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/binsub.js @@ -0,0 +1,56 @@ +const chai = require("chai"); +const path = require("path"); +const snarkjs = require("snarkjs"); +const compiler = require("circom"); + +const assert = chai.assert; + +const bigInt = snarkjs.bigInt; + +function print(circuit, w, s) { + console.log(s + ": " + w[circuit.getSignalIdx(s)]); +} + +function checkSub(_a,_b, circuit) { + let a=bigInt(_a); + let b=bigInt(_b); + if (a.lesser(bigInt.zero)) a = a.add(bigInt.one.shl(16)); + if (b.lesser(bigInt.zero)) b = b.add(bigInt.one.shl(16)); + const w = circuit.calculateWitness({a: a, b: b}); + + let res = a.sub(b); + if (res.lesser(bigInt.zero)) res = res.add(bigInt.one.shl(16)); + assert( w[circuit.getSignalIdx("main.out")].equals(bigInt(res)) ); +} + +describe("BinSub test", () => { + let circuit; + before( async() => { + const cirDef = await compiler(path.join(__dirname, "circuits", "binsub_test.circom")); + + circuit = new snarkjs.Circuit(cirDef); + + console.log("NConstrains BinSub: " + circuit.nConstraints); + }); + + it("Should check variuos ege cases", async () => { + checkSub(0,0, circuit); + checkSub(1,0, circuit); + checkSub(-1,0, circuit); + checkSub(2,1, circuit); + checkSub(2,2, circuit); + checkSub(2,3, circuit); + checkSub(2,-1, circuit); + checkSub(2,-2, circuit); + checkSub(2,-3, circuit); + checkSub(-2,-3, circuit); + checkSub(-2,-2, circuit); + checkSub(-2,-1, circuit); + checkSub(-2,0, circuit); + checkSub(-2,1, circuit); + checkSub(-2,2, circuit); + checkSub(-2,3, circuit); + }); + + +}); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/binsum.js b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/binsum.js new file mode 100644 index 000000000..effcfaf71 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/binsum.js @@ -0,0 +1,35 @@ +const chai = require("chai"); +const path = require("path"); +const snarkjs = require("snarkjs"); +const crypto = require("crypto"); + +const compiler = require("circom"); + +const assert = chai.assert; + +describe("Sum test", () => { + it("Should create a constant circuit", async () => { + + const cirDef = await compiler(path.join(__dirname, "circuits", "constants_test.circom")); + assert.equal(cirDef.nVars, 2); + + const circuit = new snarkjs.Circuit(cirDef); + + const witness = circuit.calculateWitness({ "in": "0xd807aa98" }); + + assert(witness[0].equals(snarkjs.bigInt(1))); + assert(witness[1].equals(snarkjs.bigInt("0xd807aa98"))); + }); + it("Should create a sum circuit", async () => { + + const cirDef = await compiler(path.join(__dirname, "circuits", "sum_test.circom")); + assert.equal(cirDef.nVars, 101); + + const circuit = new snarkjs.Circuit(cirDef); + + const witness = circuit.calculateWitness({ "a": "111", "b": "222" }); + + assert(witness[0].equals(snarkjs.bigInt(1))); + assert(witness[1].equals(snarkjs.bigInt("333"))); + }); +}); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/aliascheck_test.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/aliascheck_test.circom new file mode 100644 index 000000000..dc2252d25 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/aliascheck_test.circom @@ -0,0 +1,3 @@ +include "../../circuits/aliascheck.circom"; + +component main = AliasCheck() diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/babyadd_tester.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/babyadd_tester.circom new file mode 100644 index 000000000..129acfac1 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/babyadd_tester.circom @@ -0,0 +1,3 @@ +include "../../circuits/babyjub.circom"; + +component main = BabyAdd(); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/babycheck_test.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/babycheck_test.circom new file mode 100644 index 000000000..925de65e2 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/babycheck_test.circom @@ -0,0 +1,3 @@ +include "../../circuits/babyjub.circom"; + +component main = BabyCheck(); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/babypbk_test.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/babypbk_test.circom new file mode 100644 index 000000000..2583bb95f --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/babypbk_test.circom @@ -0,0 +1,3 @@ +include "../../circuits/babyjub.circom"; + +component main = BabyPbk(); \ No newline at end of file diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/binsub_test.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/binsub_test.circom new file mode 100644 index 000000000..a63306426 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/binsub_test.circom @@ -0,0 +1,26 @@ +include "../../circuits/bitify.circom" +include "../../circuits/binsub.circom" + +template A() { + signal private input a; + signal input b; + signal output out; + + component n2ba = Num2Bits(16); + component n2bb = Num2Bits(16); + component sub = BinSub(16); + component b2n = Bits2Num(16); + + n2ba.in <== a; + n2bb.in <== b; + + for (var i=0; i<16; i++) { + sub.in[0][i] <== n2ba.out[i]; + sub.in[1][i] <== n2bb.out[i]; + b2n.in[i] <== sub.out[i]; + } + + out <== b2n.out; +} + +component main = A(); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/constants_test.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/constants_test.circom new file mode 100644 index 000000000..61d392d23 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/constants_test.circom @@ -0,0 +1,18 @@ +include "../../circuits/sha256/constants.circom" + +template A() { + signal input in; + component h0; + h0 = K(8); + + var lc = 0; + var e = 1; + for (var i=0; i<32; i++) { + lc = lc + e*h0.out[i]; + e *= 2; + } + + lc === in; +} + +component main = A(); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/eddsa_test.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/eddsa_test.circom new file mode 100644 index 000000000..1ef054ec6 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/eddsa_test.circom @@ -0,0 +1,3 @@ +include "../../circuits/eddsa.circom"; + +component main = EdDSAVerifier(80); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/eddsamimc_test.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/eddsamimc_test.circom new file mode 100644 index 000000000..8ad48e639 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/eddsamimc_test.circom @@ -0,0 +1,3 @@ +include "../../circuits/eddsamimc.circom"; + +component main = EdDSAMiMCVerifier(); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/eddsaposeidon_test.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/eddsaposeidon_test.circom new file mode 100644 index 000000000..98f96c7e3 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/eddsaposeidon_test.circom @@ -0,0 +1,3 @@ +include "../../circuits/eddsaposeidon.circom"; + +component main = EdDSAPoseidonVerifier(); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/edwards2montgomery.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/edwards2montgomery.circom new file mode 100644 index 000000000..960e59410 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/edwards2montgomery.circom @@ -0,0 +1,3 @@ +include "../../circuits/montgomery.circom"; + +component main = Edwards2Montgomery(); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/escalarmul_min_test.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/escalarmul_min_test.circom new file mode 100644 index 000000000..b497348d2 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/escalarmul_min_test.circom @@ -0,0 +1,26 @@ +include "../../circuits/escalarmul.circom"; + + +template Main() { + signal input in[256]; + signal output out[2]; + + var i; + + var base = [5299619240641551281634865583518297030282874472190772894086521144482721001553, + 16950150798460657717958625567821834550301663161624707787222815936182638968203] + + component escalarMul = EscalarMul(256, base); + + escalarMul.inp[0] <== 0; + escalarMul.inp[1] <== 1; + + for (i=0; i<256; i++) { + in[i] ==> escalarMul.in[i]; + } + + escalarMul.out[0] ==> out[0]; + escalarMul.out[1] ==> out[1]; +} + +component main = Main(); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/escalarmul_test.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/escalarmul_test.circom new file mode 100644 index 000000000..62c1db100 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/escalarmul_test.circom @@ -0,0 +1,31 @@ +include "../../circuits/escalarmul.circom"; +include "../../circuits/bitify.circom"; + + +template Main() { + signal input in; + signal output out[2]; + + var base = [5299619240641551281634865583518297030282874472190772894086521144482721001553, + 16950150798460657717958625567821834550301663161624707787222815936182638968203] + + + component n2b = Num2Bits(253); + component escalarMul = EscalarMul(253, base); + + escalarMul.inp[0] <== 0; + escalarMul.inp[1] <== 1; + + var i; + + in ==> n2b.in; + + for (i=0; i<253; i++) { + n2b.out[i] ==> escalarMul.in[i]; + } + + escalarMul.out[0] ==> out[0]; + escalarMul.out[1] ==> out[1]; +} + +component main = Main(); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/escalarmul_test_min.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/escalarmul_test_min.circom new file mode 100644 index 000000000..b497348d2 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/escalarmul_test_min.circom @@ -0,0 +1,26 @@ +include "../../circuits/escalarmul.circom"; + + +template Main() { + signal input in[256]; + signal output out[2]; + + var i; + + var base = [5299619240641551281634865583518297030282874472190772894086521144482721001553, + 16950150798460657717958625567821834550301663161624707787222815936182638968203] + + component escalarMul = EscalarMul(256, base); + + escalarMul.inp[0] <== 0; + escalarMul.inp[1] <== 1; + + for (i=0; i<256; i++) { + in[i] ==> escalarMul.in[i]; + } + + escalarMul.out[0] ==> out[0]; + escalarMul.out[1] ==> out[1]; +} + +component main = Main(); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/escalarmulany_test.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/escalarmulany_test.circom new file mode 100644 index 000000000..c09918d6e --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/escalarmulany_test.circom @@ -0,0 +1,28 @@ +include "../../circuits/escalarmulany.circom"; +include "../../circuits/bitify.circom"; + +template Main() { + signal input e; + signal input p[2]; + signal output out[2]; + + component n2b = Num2Bits(253); + component escalarMulAny = EscalarMulAny(253); + + escalarMulAny.p[0] <== p[0]; + escalarMulAny.p[1] <== p[1]; + + var i; + + e ==> n2b.in; + + for (i=0; i<253; i++) { + n2b.out[i] ==> escalarMulAny.e[i]; + } + + escalarMulAny.out[0] ==> out[0]; + escalarMulAny.out[1] ==> out[1]; +} + +component main = Main(); + diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/escalarmulfix_test.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/escalarmulfix_test.circom new file mode 100644 index 000000000..9a9d77725 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/escalarmulfix_test.circom @@ -0,0 +1,29 @@ +include "../../circuits/escalarmulfix.circom"; +include "../../circuits/bitify.circom"; + + +template Main() { + signal input e; + signal output out[2]; + + var base = [5299619240641551281634865583518297030282874472190772894086521144482721001553, + 16950150798460657717958625567821834550301663161624707787222815936182638968203] + + + component n2b = Num2Bits(253); + component escalarMul = EscalarMulFix(253, base); + + var i; + + e ==> n2b.in; + + for (i=0; i<253; i++) { + n2b.out[i] ==> escalarMul.e[i]; + } + + escalarMul.out[0] ==> out[0]; + escalarMul.out[1] ==> out[1]; +} + +component main = Main(); + diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/escalarmulw4table.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/escalarmulw4table.circom new file mode 100644 index 000000000..85c55076f --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/escalarmulw4table.circom @@ -0,0 +1,6 @@ +include "../../circuits/escalarmulw4table.circom"; + +var base = [5299619240641551281634865583518297030282874472190772894086521144482721001553, + 16950150798460657717958625567821834550301663161624707787222815936182638968203] + +component main = EscalarMulW4Table(base, 0); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/escalarmulw4table_test.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/escalarmulw4table_test.circom new file mode 100644 index 000000000..59508f3d1 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/escalarmulw4table_test.circom @@ -0,0 +1,17 @@ +include "../../circuits/escalarmulw4table.circom"; + + +template Main() { + signal input in; + signal output out[16][2]; + var base = [5299619240641551281634865583518297030282874472190772894086521144482721001553, + 16950150798460657717958625567821834550301663161624707787222815936182638968203]; + + component escalarMul = EscalarMulW4Table(base, 0); + for (var i=0; i<16; i++) { + out[i][0] <== escalarMul.out[i][0]*in; + out[i][1] <== escalarMul.out[i][1]*in; + } +} + +component main = Main(); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/escalarmulw4table_test3.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/escalarmulw4table_test3.circom new file mode 100644 index 000000000..bcfb4ba81 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/escalarmulw4table_test3.circom @@ -0,0 +1,17 @@ +include "../../circuits/escalarmulw4table.circom"; + + +template Main() { + signal input in; + signal output out[16][2]; + var base = [5299619240641551281634865583518297030282874472190772894086521144482721001553, + 16950150798460657717958625567821834550301663161624707787222815936182638968203]; + + component escalarMul = EscalarMulW4Table(base, 3); + for (var i=0; i<16; i++) { + out[i][0] <== escalarMul.out[i][0]*in; + out[i][1] <== escalarMul.out[i][1]*in; + } +} + +component main = Main(); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/greatereqthan.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/greatereqthan.circom new file mode 100644 index 000000000..3428ac27a --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/greatereqthan.circom @@ -0,0 +1,4 @@ + +include "../../circuits/comparators.circom"; + +component main = GreaterEqThan(32); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/greaterthan.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/greaterthan.circom new file mode 100644 index 000000000..b890ba816 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/greaterthan.circom @@ -0,0 +1,4 @@ + +include "../../circuits/comparators.circom"; + +component main = GreaterThan(32); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/isequal.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/isequal.circom new file mode 100644 index 000000000..c14d506fa --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/isequal.circom @@ -0,0 +1,4 @@ + +include "../../circuits/comparators.circom"; + +component main = IsEqual(); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/iszero.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/iszero.circom new file mode 100644 index 000000000..0ca0589fa --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/iszero.circom @@ -0,0 +1,5 @@ + + +include "../../circuits/comparators.circom"; + +component main = IsZero(); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/lesseqthan.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/lesseqthan.circom new file mode 100644 index 000000000..db2eda47a --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/lesseqthan.circom @@ -0,0 +1,4 @@ + +include "../../circuits/comparators.circom"; + +component main = LessEqThan(32); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/lessthan.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/lessthan.circom new file mode 100644 index 000000000..63944f2ea --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/lessthan.circom @@ -0,0 +1,4 @@ + +include "../../circuits/comparators.circom"; + +component main = LessThan(32); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/mimc_sponge_hash_test.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/mimc_sponge_hash_test.circom new file mode 100644 index 000000000..f6be5026e --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/mimc_sponge_hash_test.circom @@ -0,0 +1,3 @@ +include "../../circuits/mimcsponge.circom" + +component main = MiMCSponge(2, 220, 3); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/mimc_sponge_test.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/mimc_sponge_test.circom new file mode 100644 index 000000000..92e9df28d --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/mimc_sponge_test.circom @@ -0,0 +1,3 @@ +include "../../circuits/mimcsponge.circom" + +component main = MiMCFeistel(220); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/mimc_test.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/mimc_test.circom new file mode 100644 index 000000000..26b0b0173 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/mimc_test.circom @@ -0,0 +1,3 @@ +include "../../circuits/mimc.circom" + +component main = MiMC7(91); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/montgomery2edwards.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/montgomery2edwards.circom new file mode 100644 index 000000000..39d05a649 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/montgomery2edwards.circom @@ -0,0 +1,3 @@ +include "../../circuits/montgomery.circom"; + +component main = Montgomery2Edwards(); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/montgomeryadd.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/montgomeryadd.circom new file mode 100644 index 000000000..8caea17d2 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/montgomeryadd.circom @@ -0,0 +1,3 @@ +include "../../circuits/montgomery.circom"; + +component main = MontgomeryAdd(); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/montgomerydouble.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/montgomerydouble.circom new file mode 100644 index 000000000..70a3840e5 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/montgomerydouble.circom @@ -0,0 +1,3 @@ +include "../../circuits/montgomery.circom"; + +component main = MontgomeryDouble(); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/mux1_1.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/mux1_1.circom new file mode 100644 index 000000000..5a3afee39 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/mux1_1.circom @@ -0,0 +1,31 @@ +include "../../circuits/mux1.circom"; +include "../../circuits/bitify.circom"; + + +template Constants() { + var i; + signal output out[2]; + + out[0] <== 37; + out[1] <== 47; +} + +template Main() { + var i; + signal private input selector; + signal output out; + + component mux = Mux1(); + component n2b = Num2Bits(1); + component cst = Constants(); + + selector ==> n2b.in; + n2b.out[0] ==> mux.s; + for (i=0; i<2; i++) { + cst.out[i] ==> mux.c[i]; + } + + mux.out ==> out; +} + +component main = Main(); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/mux2_1.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/mux2_1.circom new file mode 100644 index 000000000..4bb62477d --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/mux2_1.circom @@ -0,0 +1,35 @@ +include "../../circuits/mux2.circom"; +include "../../circuits/bitify.circom"; + + +template Constants() { + var i; + signal output out[4]; + + out[0] <== 37; + out[1] <== 47; + out[2] <== 53; + out[3] <== 71; +} + +template Main() { + var i; + signal private input selector; + signal output out; + + component mux = Mux2(); + component n2b = Num2Bits(2); + component cst = Constants(); + + selector ==> n2b.in; + for (i=0; i<2; i++) { + n2b.out[i] ==> mux.s[i]; + } + for (i=0; i<4; i++) { + cst.out[i] ==> mux.c[i]; + } + + mux.out ==> out; +} + +component main = Main(); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/mux3_1.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/mux3_1.circom new file mode 100644 index 000000000..69f98f25e --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/mux3_1.circom @@ -0,0 +1,39 @@ +include "../../circuits/mux3.circom"; +include "../../circuits/bitify.circom"; + + +template Constants() { + var i; + signal output out[8]; + + out[0] <== 37; + out[1] <== 47; + out[2] <== 53; + out[3] <== 71; + out[4] <== 89; + out[5] <== 107; + out[6] <== 163; + out[7] <== 191; +} + +template Main() { + var i; + signal private input selector; + signal output out; + + component mux = Mux3(); + component n2b = Num2Bits(3); + component cst = Constants(); + + selector ==> n2b.in; + for (i=0; i<3; i++) { + n2b.out[i] ==> mux.s[i]; + } + for (i=0; i<8; i++) { + cst.out[i] ==> mux.c[i]; + } + + mux.out ==> out; +} + +component main = Main(); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/mux4_1.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/mux4_1.circom new file mode 100644 index 000000000..d63e4661b --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/mux4_1.circom @@ -0,0 +1,54 @@ +include "../../circuits/mux4.circom"; +include "../../circuits/bitify.circom"; + + +template Constants() { + var i; + signal output out[16]; + + out[0] <== 123; + out[1] <== 456; + out[2] <== 789; + out[3] <== 012; + out[4] <== 111; + out[5] <== 222; + out[6] <== 333; + out[7] <== 4546; + out[8] <== 134523; + out[9] <== 44356; + out[10] <== 15623; + out[11] <== 4566; + out[12] <== 1223; + out[13] <== 4546; + out[14] <== 4256; + out[15] <== 4456; + +/* + for (i=0;i<16; i++) { + out[i] <== i*2+100; + } +*/ + +} + +template Main() { + var i; + signal private input selector; + signal output out; + + component mux = Mux4(); + component n2b = Num2Bits(4); + component cst = Constants(); + + selector ==> n2b.in; + for (i=0; i<4; i++) { + n2b.out[i] ==> mux.s[i]; + } + for (i=0; i<16; i++) { + cst.out[i] ==> mux.c[i]; + } + + mux.out ==> out; +} + +component main = Main(); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/pedersen2_test.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/pedersen2_test.circom new file mode 100644 index 000000000..e13e35309 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/pedersen2_test.circom @@ -0,0 +1,32 @@ +include "../../circuits/pedersen.circom"; +include "../../circuits/bitify.circom"; + + +template Main() { + signal input in; + signal output out[2]; + + component pedersen = Pedersen(256); + + component n2b; + n2b = Num2Bits(253); + + var i; + + in ==> n2b.in; + + for (i=0; i<253; i++) { + pedersen.in[i] <== n2b.out[i]; + } + + for (i=253; i<256; i++) { + pedersen.in[i] <== 0; + } + + pedersen.out[0] ==> out[0]; + pedersen.out[1] ==> out[1]; +} + +component main = Main(); + + diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/pedersen_test.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/pedersen_test.circom new file mode 100644 index 000000000..accd484d0 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/pedersen_test.circom @@ -0,0 +1,29 @@ +include "../../circuits/pedersen_old.circom"; +include "../../circuits/bitify.circom"; + + +template Main() { + signal input in[2]; + signal output out[2]; + + component pedersen = Pedersen(250*2); + + component n2b[2]; + n2b[0] = Num2Bits(250); + n2b[1] = Num2Bits(250); + + var i; + + in[0] ==> n2b[0].in; + in[1] ==> n2b[1].in; + + for (i=0; i<250; i++) { + n2b[0].out[i] ==> pedersen.in[i]; + n2b[1].out[i] ==> pedersen.in[250+i]; + } + + pedersen.out[0] ==> out[0]; + pedersen.out[1] ==> out[1]; +} + +component main = Main(); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/pointbits_loopback.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/pointbits_loopback.circom new file mode 100644 index 000000000..39dacfbf0 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/pointbits_loopback.circom @@ -0,0 +1,23 @@ +include "../../circuits/pointbits.circom"; + + +template Main() { + signal input in[2]; + + var i + + component p2b = Point2Bits_Strict(); + component b2p = Bits2Point_Strict(); + + p2b.in[0] <== in[0]; + p2b.in[1] <== in[1]; + + for (i=0; i<256; i++) { + b2p.in[i] <== p2b.out[i]; + } + + b2p.out[0] === in[0]; + b2p.out[1] === in[1]; +} + +component main = Main(); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/poseidon_test.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/poseidon_test.circom new file mode 100644 index 000000000..526bef12d --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/poseidon_test.circom @@ -0,0 +1,3 @@ +include "../../circuits/poseidon.circom" + +component main = Poseidon(2, 6, 8, 57); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/sha256_2_test.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/sha256_2_test.circom new file mode 100644 index 000000000..855423b31 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/sha256_2_test.circom @@ -0,0 +1,15 @@ +include "../../circuits/sha256/sha256_2.circom"; + +template Main() { + signal private input a; + signal private input b; + signal output out; + + component sha256_2 = Sha256_2(); + + sha256_2.a <== a; + sha256_2.b <== b; + out <== sha256_2.out; +} + +component main = Main(); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/sign_test.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/sign_test.circom new file mode 100644 index 000000000..e6a6e3b66 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/sign_test.circom @@ -0,0 +1,3 @@ +include "../../circuits/sign.circom"; + +component main = Sign(); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/smtprocessor10_test.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/smtprocessor10_test.circom new file mode 100644 index 000000000..ecf15d069 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/smtprocessor10_test.circom @@ -0,0 +1,3 @@ +include "../../circuits/smt/smtprocessor.circom"; + +component main = SMTProcessor(10); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/smtverifier10_test.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/smtverifier10_test.circom new file mode 100644 index 000000000..31a4dd784 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/smtverifier10_test.circom @@ -0,0 +1,3 @@ +include "../../circuits/smt/smtverifier.circom"; + +component main = SMTVerifier(10); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/sum_test.circom b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/sum_test.circom new file mode 100644 index 000000000..a8b062bec --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/circuits/sum_test.circom @@ -0,0 +1,26 @@ +include "../../circuits/bitify.circom" +include "../../circuits/binsum.circom" + +template A() { + signal private input a; + signal input b; + signal output out; + + component n2ba = Num2Bits(32); + component n2bb = Num2Bits(32); + component sum = BinSum(32,2); + component b2n = Bits2Num(32); + + n2ba.in <== a; + n2bb.in <== b; + + for (var i=0; i<32; i++) { + sum.in[0][i] <== n2ba.out[i]; + sum.in[1][i] <== n2bb.out[i]; + b2n.in[i] <== sum.out[i]; + } + + out <== b2n.out; +} + +component main = A(); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/comparators.js b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/comparators.js new file mode 100644 index 000000000..6b3c0a0e1 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/comparators.js @@ -0,0 +1,193 @@ +const chai = require("chai"); +const path = require("path"); +const snarkjs = require("snarkjs"); +const crypto = require("crypto"); + +const compiler = require("circom"); + +const assert = chai.assert; + +describe("Sum test", () => { + it("Should create a iszero circuit", async() => { + const cirDef = await compiler(path.join(__dirname, "circuits", "iszero.circom")); + + const circuit = new snarkjs.Circuit(cirDef); + + let witness; + witness = circuit.calculateWitness({ "in": 111}); + assert(witness[0].equals(snarkjs.bigInt(1))); + assert(witness[1].equals(snarkjs.bigInt(0))); + + witness = circuit.calculateWitness({ "in": 0 }); + assert(witness[0].equals(snarkjs.bigInt(1))); + assert(witness[1].equals(snarkjs.bigInt(1))); + }); + it("Should create a isequal circuit", async() => { + const cirDef = await compiler(path.join(__dirname, "circuits", "isequal.circom")); + + const circuit = new snarkjs.Circuit(cirDef); + + let witness; + witness = circuit.calculateWitness({ "in[0]": "111", "in[1]": "222" }); + assert(witness[0].equals(snarkjs.bigInt(1))); + assert(witness[1].equals(snarkjs.bigInt(0))); + + witness = circuit.calculateWitness({ "in[0]": "444", "in[1]": "444" }); + assert(witness[0].equals(snarkjs.bigInt(1))); + assert(witness[1].equals(snarkjs.bigInt(1))); + }); + it("Should create a comparison lessthan", async() => { + const cirDef = await compiler(path.join(__dirname, "circuits", "lessthan.circom")); + + const circuit = new snarkjs.Circuit(cirDef); + + let witness; + witness = circuit.calculateWitness({ "in[0]": "333", "in[1]": "444" }); + assert(witness[0].equals(snarkjs.bigInt(1))); + assert(witness[1].equals(snarkjs.bigInt(1))); + + witness = circuit.calculateWitness({ "in[0]": "1", "in[1]": "1" }); + assert(witness[0].equals(snarkjs.bigInt(1))); + assert(witness[1].equals(snarkjs.bigInt(0))); + + witness = circuit.calculateWitness({ "in[0]": "661", "in[1]": "660" }); + assert(witness[0].equals(snarkjs.bigInt(1))); + assert(witness[1].equals(snarkjs.bigInt(0))); + + witness = circuit.calculateWitness({ "in[0]": "0", "in[1]": "1" }); + assert(witness[0].equals(snarkjs.bigInt(1))); + assert(witness[1].equals(snarkjs.bigInt(1))); + + witness = circuit.calculateWitness({ "in[0]": "0", "in[1]": "444" }); + assert(witness[0].equals(snarkjs.bigInt(1))); + assert(witness[1].equals(snarkjs.bigInt(1))); + + witness = circuit.calculateWitness({ "in[0]": "1", "in[1]": "0" }); + assert(witness[0].equals(snarkjs.bigInt(1))); + assert(witness[1].equals(snarkjs.bigInt(0))); + + witness = circuit.calculateWitness({ "in[0]": "555", "in[1]": "0" }); + assert(witness[0].equals(snarkjs.bigInt(1))); + assert(witness[1].equals(snarkjs.bigInt(0))); + + witness = circuit.calculateWitness({ "in[0]": "0", "in[1]": "0" }); + assert(witness[0].equals(snarkjs.bigInt(1))); + assert(witness[1].equals(snarkjs.bigInt(0))); + }); + it("Should create a comparison lesseqthan", async() => { + const cirDef = await compiler(path.join(__dirname, "circuits", "lesseqthan.circom")); + + const circuit = new snarkjs.Circuit(cirDef); + + let witness; + witness = circuit.calculateWitness({ "in[0]": "333", "in[1]": "444" }); + assert(witness[0].equals(snarkjs.bigInt(1))); + assert(witness[1].equals(snarkjs.bigInt(1))); + + witness = circuit.calculateWitness({ "in[0]": "1", "in[1]": "1" }); + assert(witness[0].equals(snarkjs.bigInt(1))); + assert(witness[1].equals(snarkjs.bigInt(1))); + + witness = circuit.calculateWitness({ "in[0]": "661", "in[1]": "660" }); + assert(witness[0].equals(snarkjs.bigInt(1))); + assert(witness[1].equals(snarkjs.bigInt(0))); + + witness = circuit.calculateWitness({ "in[0]": "0", "in[1]": "1" }); + assert(witness[0].equals(snarkjs.bigInt(1))); + assert(witness[1].equals(snarkjs.bigInt(1))); + + witness = circuit.calculateWitness({ "in[0]": "0", "in[1]": "444" }); + assert(witness[0].equals(snarkjs.bigInt(1))); + assert(witness[1].equals(snarkjs.bigInt(1))); + + witness = circuit.calculateWitness({ "in[0]": "1", "in[1]": "0" }); + assert(witness[0].equals(snarkjs.bigInt(1))); + assert(witness[1].equals(snarkjs.bigInt(0))); + + witness = circuit.calculateWitness({ "in[0]": "555", "in[1]": "0" }); + assert(witness[0].equals(snarkjs.bigInt(1))); + assert(witness[1].equals(snarkjs.bigInt(0))); + + witness = circuit.calculateWitness({ "in[0]": "0", "in[1]": "0" }); + assert(witness[0].equals(snarkjs.bigInt(1))); + assert(witness[1].equals(snarkjs.bigInt(1))); + }); + it("Should create a comparison greaterthan", async() => { + const cirDef = await compiler(path.join(__dirname, "circuits", "greaterthan.circom")); + + const circuit = new snarkjs.Circuit(cirDef); + + let witness; + witness = circuit.calculateWitness({ "in[0]": "333", "in[1]": "444" }); + assert(witness[0].equals(snarkjs.bigInt(1))); + assert(witness[1].equals(snarkjs.bigInt(0))); + + witness = circuit.calculateWitness({ "in[0]": "1", "in[1]": "1" }); + assert(witness[0].equals(snarkjs.bigInt(1))); + assert(witness[1].equals(snarkjs.bigInt(0))); + + witness = circuit.calculateWitness({ "in[0]": "661", "in[1]": "660" }); + assert(witness[0].equals(snarkjs.bigInt(1))); + assert(witness[1].equals(snarkjs.bigInt(1))); + + witness = circuit.calculateWitness({ "in[0]": "0", "in[1]": "1" }); + assert(witness[0].equals(snarkjs.bigInt(1))); + assert(witness[1].equals(snarkjs.bigInt(0))); + + witness = circuit.calculateWitness({ "in[0]": "0", "in[1]": "444" }); + assert(witness[0].equals(snarkjs.bigInt(1))); + assert(witness[1].equals(snarkjs.bigInt(0))); + + witness = circuit.calculateWitness({ "in[0]": "1", "in[1]": "0" }); + assert(witness[0].equals(snarkjs.bigInt(1))); + assert(witness[1].equals(snarkjs.bigInt(1))); + + witness = circuit.calculateWitness({ "in[0]": "555", "in[1]": "0" }); + assert(witness[0].equals(snarkjs.bigInt(1))); + assert(witness[1].equals(snarkjs.bigInt(1))); + + witness = circuit.calculateWitness({ "in[0]": "0", "in[1]": "0" }); + assert(witness[0].equals(snarkjs.bigInt(1))); + assert(witness[1].equals(snarkjs.bigInt(0))); + }); + it("Should create a comparison greatereqthan", async() => { + const cirDef = await compiler(path.join(__dirname, "circuits", "greatereqthan.circom")); + + const circuit = new snarkjs.Circuit(cirDef); + + console.log("NConstraints BalancesUpdater: " + circuit.nConstraints); + + let witness; + witness = circuit.calculateWitness({ "in[0]": "333", "in[1]": "444" }); + assert(witness[0].equals(snarkjs.bigInt(1))); + assert(witness[1].equals(snarkjs.bigInt(0))); + + witness = circuit.calculateWitness({ "in[0]": "1", "in[1]": "1" }); + assert(witness[0].equals(snarkjs.bigInt(1))); + assert(witness[1].equals(snarkjs.bigInt(1))); + + witness = circuit.calculateWitness({ "in[0]": "661", "in[1]": "660" }); + assert(witness[0].equals(snarkjs.bigInt(1))); + assert(witness[1].equals(snarkjs.bigInt(1))); + + witness = circuit.calculateWitness({ "in[0]": "0", "in[1]": "1" }); + assert(witness[0].equals(snarkjs.bigInt(1))); + assert(witness[1].equals(snarkjs.bigInt(0))); + + witness = circuit.calculateWitness({ "in[0]": "0", "in[1]": "444" }); + assert(witness[0].equals(snarkjs.bigInt(1))); + assert(witness[1].equals(snarkjs.bigInt(0))); + + witness = circuit.calculateWitness({ "in[0]": "1", "in[1]": "0" }); + assert(witness[0].equals(snarkjs.bigInt(1))); + assert(witness[1].equals(snarkjs.bigInt(1))); + + witness = circuit.calculateWitness({ "in[0]": "555", "in[1]": "0" }); + assert(witness[0].equals(snarkjs.bigInt(1))); + assert(witness[1].equals(snarkjs.bigInt(1))); + + witness = circuit.calculateWitness({ "in[0]": "0", "in[1]": "0" }); + assert(witness[0].equals(snarkjs.bigInt(1))); + assert(witness[1].equals(snarkjs.bigInt(1))); + }); +}); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/eddsa.js b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/eddsa.js new file mode 100644 index 000000000..8292a8992 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/eddsa.js @@ -0,0 +1,74 @@ +const chai = require("chai"); +const path = require("path"); +const snarkjs = require("snarkjs"); +const compiler = require("circom"); +// const crypto = require("crypto"); + +const eddsa = require("../src/eddsa.js"); +const babyJub = require("../src/babyjub.js"); + +const assert = chai.assert; + +const bigInt = snarkjs.bigInt; + +function print(circuit, w, s) { + console.log(s + ": " + w[circuit.getSignalIdx(s)]); +} + +function buffer2bits(buff) { + const res = []; + for (let i=0; i>j)&1) { + res.push(bigInt.one); + } else { + res.push(bigInt.zero); + } + } + } + return res; +} + + +describe("EdDSA test", function () { + let circuit; + + this.timeout(100000); + + before( async () => { + const cirDef = await compiler(path.join(__dirname, "circuits", "eddsa_test.circom")); + + circuit = new snarkjs.Circuit(cirDef); + + console.log("NConstrains EdDSA: " + circuit.nConstraints); + }); + + it("Sign a single 10 bytes from 0 to 9", async () => { + const msg = Buffer.from("00010203040506070809", "hex"); + +// const prvKey = crypto.randomBytes(32); + + const prvKey = Buffer.from("0001020304050607080900010203040506070809000102030405060708090001", "hex"); + + const pubKey = eddsa.prv2pub(prvKey); + + const pPubKey = babyJub.packPoint(pubKey); + + const signature = eddsa.sign(prvKey, msg); + + const pSignature = eddsa.packSignature(signature); + const uSignature = eddsa.unpackSignature(pSignature); + + assert(eddsa.verify(msg, uSignature, pubKey)); + + const msgBits = buffer2bits(msg); + const r8Bits = buffer2bits(pSignature.slice(0, 32)); + const sBits = buffer2bits(pSignature.slice(32, 64)); + const aBits = buffer2bits(pPubKey); + + const w = circuit.calculateWitness({A: aBits, R8: r8Bits, S: sBits, msg: msgBits}); + + assert(circuit.checkWitness(w)); + + }); +}); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/eddsa_js.js b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/eddsa_js.js new file mode 100644 index 000000000..199bb2fae --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/eddsa_js.js @@ -0,0 +1,49 @@ +const chai = require("chai"); +const snarkjs = require("snarkjs"); + +const eddsa = require("../src/eddsa.js"); +const babyJub = require("../src/babyjub.js"); + +const assert = chai.assert; + +const bigInt = snarkjs.bigInt; + +describe("EdDSA js test", function () { + + this.timeout(100000); + + it("Sign a single 10 bytes from 0 to 9", () => { + const msgBuf = Buffer.from("00010203040506070809", "hex"); + const msg = bigInt.leBuff2int(msgBuf); + + // const prvKey = crypto.randomBytes(32); + + const prvKey = Buffer.from("0001020304050607080900010203040506070809000102030405060708090001", "hex"); + + const pubKey = eddsa.prv2pub(prvKey); + + assert.equal(pubKey[0].toString(), + "13277427435165878497778222415993513565335242147425444199013288855685581939618"); + assert.equal(pubKey[1].toString(), + "13622229784656158136036771217484571176836296686641868549125388198837476602820"); + + const pPubKey = babyJub.packPoint(pubKey); + + const signature = eddsa.signMiMC(prvKey, msg); + assert.equal(signature.R8[0].toString(), + "11384336176656855268977457483345535180380036354188103142384839473266348197733"); + assert.equal(signature.R8[1].toString(), + "15383486972088797283337779941324724402501462225528836549661220478783371668959"); + assert.equal(signature.S.toString(), + "2523202440825208709475937830811065542425109372212752003460238913256192595070"); + + const pSignature = eddsa.packSignature(signature); + assert.equal(pSignature.toString("hex"), ""+ + "dfedb4315d3f2eb4de2d3c510d7a987dcab67089c8ace06308827bf5bcbe02a2"+ + "7ed40dab29bf993c928e789d007387998901a24913d44fddb64b1f21fc149405"); + + const uSignature = eddsa.unpackSignature(pSignature); + assert(eddsa.verifyMiMC(msg, uSignature, pubKey)); + + }); +}); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/eddsamimc.js b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/eddsamimc.js new file mode 100644 index 000000000..76f0a4f52 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/eddsamimc.js @@ -0,0 +1,98 @@ +const chai = require("chai"); +const path = require("path"); +const snarkjs = require("snarkjs"); +const compiler = require("circom"); + +const eddsa = require("../src/eddsa.js"); + +const assert = chai.assert; + +const bigInt = snarkjs.bigInt; + +describe("EdDSA MiMC test", function () { + let circuit; + + this.timeout(100000); + + before( async () => { + const cirDef = await compiler(path.join(__dirname, "circuits", "eddsamimc_test.circom")); + + circuit = new snarkjs.Circuit(cirDef); + + console.log("NConstrains EdDSA MiMC: " + circuit.nConstraints); + }); + + it("Sign a single number", async () => { + const msg = bigInt(1234); + + const prvKey = Buffer.from("0001020304050607080900010203040506070809000102030405060708090001", "hex"); + + const pubKey = eddsa.prv2pub(prvKey); + + const signature = eddsa.signMiMC(prvKey, msg); + + assert(eddsa.verifyMiMC(msg, signature, pubKey)); + + const w = circuit.calculateWitness({ + enabled: 1, + Ax: pubKey[0], + Ay: pubKey[1], + R8x: signature.R8[0], + R8y: signature.R8[1], + S: signature.S, + M: msg}); + + assert(circuit.checkWitness(w)); + }); + + it("Detect Invalid signature", async () => { + const msg = bigInt(1234); + + const prvKey = Buffer.from("0001020304050607080900010203040506070809000102030405060708090001", "hex"); + + const pubKey = eddsa.prv2pub(prvKey); + + + const signature = eddsa.signMiMC(prvKey, msg); + + assert(eddsa.verifyMiMC(msg, signature, pubKey)); + try { + const w = circuit.calculateWitness({ + enabled: 1, + Ax: pubKey[0], + Ay: pubKey[1], + R8x: signature.R8[0].add(bigInt(1)), + R8y: signature.R8[1], + S: signature.S, + M: msg}); + assert(false); + } catch(err) { + assert.equal(err.message, "Constraint doesn't match: 1 != 0"); + } + }); + + + it("Test a dissabled circuit with a bad signature", async () => { + const msg = bigInt(1234); + + const prvKey = Buffer.from("0001020304050607080900010203040506070809000102030405060708090001", "hex"); + + const pubKey = eddsa.prv2pub(prvKey); + + + const signature = eddsa.signMiMC(prvKey, msg); + + assert(eddsa.verifyMiMC(msg, signature, pubKey)); + + const w = circuit.calculateWitness({ + enabled: 0, + Ax: pubKey[0], + Ay: pubKey[1], + R8x: signature.R8[0].add(bigInt(1)), + R8y: signature.R8[1], + S: signature.S, + M: msg}); + + assert(circuit.checkWitness(w)); + }); +}); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/eddsaposeidon.js b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/eddsaposeidon.js new file mode 100644 index 000000000..8b0e82ac6 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/eddsaposeidon.js @@ -0,0 +1,98 @@ +const chai = require("chai"); +const path = require("path"); +const snarkjs = require("snarkjs"); +const compiler = require("circom"); + +const eddsa = require("../src/eddsa.js"); + +const assert = chai.assert; + +const bigInt = snarkjs.bigInt; + +describe("EdDSA Poseidon test", function () { + let circuit; + + this.timeout(100000); + + before( async () => { + const cirDef = await compiler(path.join(__dirname, "circuits", "eddsaposeidon_test.circom")); + + circuit = new snarkjs.Circuit(cirDef); + + console.log("NConstrains EdDSA Poseidon: " + circuit.nConstraints); + }); + + it("Sign a single number", async () => { + const msg = bigInt(1234); + + const prvKey = Buffer.from("0001020304050607080900010203040506070809000102030405060708090001", "hex"); + + const pubKey = eddsa.prv2pub(prvKey); + + const signature = eddsa.signPoseidon(prvKey, msg); + + assert(eddsa.verifyPoseidon(msg, signature, pubKey)); + + const w = circuit.calculateWitness({ + enabled: 1, + Ax: pubKey[0], + Ay: pubKey[1], + R8x: signature.R8[0], + R8y: signature.R8[1], + S: signature.S, + M: msg}); + + assert(circuit.checkWitness(w)); + }); + + it("Detect Invalid signature", async () => { + const msg = bigInt(1234); + + const prvKey = Buffer.from("0001020304050607080900010203040506070809000102030405060708090001", "hex"); + + const pubKey = eddsa.prv2pub(prvKey); + + + const signature = eddsa.signPoseidon(prvKey, msg); + + assert(eddsa.verifyPoseidon(msg, signature, pubKey)); + try { + circuit.calculateWitness({ + enabled: 1, + Ax: pubKey[0], + Ay: pubKey[1], + R8x: signature.R8[0].add(bigInt(1)), + R8y: signature.R8[1], + S: signature.S, + M: msg}); + assert(false); + } catch(err) { + assert.equal(err.message, "Constraint doesn't match: 1 != 0"); + } + }); + + + it("Test a dissabled circuit with a bad signature", async () => { + const msg = bigInt(1234); + + const prvKey = Buffer.from("0001020304050607080900010203040506070809000102030405060708090001", "hex"); + + const pubKey = eddsa.prv2pub(prvKey); + + + const signature = eddsa.signPoseidon(prvKey, msg); + + assert(eddsa.verifyPoseidon(msg, signature, pubKey)); + + const w = circuit.calculateWitness({ + enabled: 0, + Ax: pubKey[0], + Ay: pubKey[1], + R8x: signature.R8[0].add(bigInt(1)), + R8y: signature.R8[1], + S: signature.S, + M: msg}); + + assert(circuit.checkWitness(w)); + }); +}); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/escalarmul.js b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/escalarmul.js new file mode 100644 index 000000000..bc9e13bb8 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/escalarmul.js @@ -0,0 +1,168 @@ +const chai = require("chai"); +const path = require("path"); +const snarkjs = require("snarkjs"); +const compiler = require("circom"); + +const assert = chai.assert; + +const bigInt = snarkjs.bigInt; + + +const q=bigInt("21888242871839275222246405745257275088548364400416034343698204186575808495617"); +function addPoint(a,b) { + const cta = bigInt("168700"); + const d = bigInt("168696"); + + const res = []; + res[0] = bigInt((a[0]*b[1] + b[0]*a[1]) * bigInt(bigInt.one + d*a[0]*b[0]*a[1]*b[1]).inverse(q)).affine(q); + res[1] = bigInt((a[1]*b[1] - cta*a[0]*b[0]) * bigInt(bigInt.one - d*a[0]*b[0]*a[1]*b[1]).inverse(q)).affine(q); + return res; +} + +function print(circuit, w, s) { + console.log(s + ": " + w[circuit.getSignalIdx(s)]); +} + +describe("Exponentioation test", () => { + it("Should generate the Exponentiation table in k=0", async () => { + + const cirDef = await compiler(path.join(__dirname, "circuits", "escalarmulw4table_test.circom")); + +// console.log(JSON.stringify(cirDef, null, 1)); + +// assert.equal(cirDef.nVars, 2); + + const circuit = new snarkjs.Circuit(cirDef); + + console.log("NConstrains: " + circuit.nConstraints); + + const w = circuit.calculateWitness({in: 1}); + + let g = [bigInt("5299619240641551281634865583518297030282874472190772894086521144482721001553"), + bigInt("16950150798460657717958625567821834550301663161624707787222815936182638968203")] + + dbl= [bigInt("0"), snarkjs.bigInt("1")]; + + for (let i=0; i<16; i++) { + const xout1 = w[circuit.getSignalIdx(`main.out[${i}][0]`)]; + const yout1 = w[circuit.getSignalIdx(`main.out[${i}][1]`)]; +/* + console.log(xout1.toString()); + console.log(yout1.toString()); + console.log(dbl[0]); + console.log(dbl[1]); +*/ + assert(xout1.equals(dbl[0])); + assert(yout1.equals(dbl[1])); + + dbl = addPoint([xout1, yout1],g); + } + + }); + + it("Should generate the Exponentiation table in k=3", async () => { + + const cirDef = await compiler(path.join(__dirname, "circuits", "escalarmulw4table_test3.circom")); + +// console.log(JSON.stringify(cirDef, null, 1)); + +// assert.equal(cirDef.nVars, 2); + + const circuit = new snarkjs.Circuit(cirDef); + + console.log("NConstrains: " + circuit.nConstraints); + + const w = circuit.calculateWitness({in: 1}); + + let g = [snarkjs.bigInt("5299619240641551281634865583518297030282874472190772894086521144482721001553"), + snarkjs.bigInt("16950150798460657717958625567821834550301663161624707787222815936182638968203")] + + for (let i=0; i<12;i++) { + g = addPoint(g,g); + } + + dbl= [snarkjs.bigInt("0"), snarkjs.bigInt("1")]; + + for (let i=0; i<16; i++) { + const xout1 = w[circuit.getSignalIdx(`main.out[${i}][0]`)]; + const yout1 = w[circuit.getSignalIdx(`main.out[${i}][1]`)]; + +/* + console.log(xout1.toString()); + console.log(yout1.toString()); + console.log(dbl[0]); + console.log(dbl[1]); +*/ + assert(xout1.equals(dbl[0])); + assert(yout1.equals(dbl[1])); + + dbl = addPoint([xout1, yout1],g); + } + + }); + + it("Should exponentiate g^31", async () => { + const cirDef = await compiler(path.join(__dirname, "circuits", "escalarmul_test.circom")); + +// console.log(JSON.stringify(cirDef, null, 1)); + +// assert.equal(cirDef.nVars, 2); + + const circuit = new snarkjs.Circuit(cirDef); + + console.log("NConstrains: " + circuit.nConstraints); + + const w = circuit.calculateWitness({"in": 31}); + + assert(circuit.checkWitness(w)); + + let g = [snarkjs.bigInt("5299619240641551281634865583518297030282874472190772894086521144482721001553"), + snarkjs.bigInt("16950150798460657717958625567821834550301663161624707787222815936182638968203")] + + let c = [0n, 1n]; + + for (let i=0; i<31;i++) { + c = addPoint(c,g); + } + + const xout = w[circuit.getSignalIdx(`main.out[0]`)]; + const yout = w[circuit.getSignalIdx(`main.out[1]`)]; + +/* + console.log(xout.toString()); + console.log(yout.toString()); +*/ + assert(xout.equals(c[0])); + assert(yout.equals(c[1])); + + console.log("-------") + const w2 = circuit.calculateWitness({"in": (1n<<252n)+1n}); + + const xout2 = w2[circuit.getSignalIdx(`main.out[0]`)]; + const yout2 = w2[circuit.getSignalIdx(`main.out[1]`)]; + + c = [g[0], g[1]]; + for (let i=0; i<252;i++) { + c = addPoint(c,c); + } + c = addPoint(c,g); +/* + console.log(xout2.toString()); + console.log(yout2.toString()); + console.log(c[0].toString()); + console.log(c[1].toString()); +*/ + assert(xout2.equals(c[0])); + assert(yout2.equals(c[1])); + + }).timeout(10000000); + + it("Number of constrains for 256 bits", async () => { + const cirDef = await compiler(path.join(__dirname, "circuits", "escalarmul_test_min.circom")); + + const circuit = new snarkjs.Circuit(cirDef); + + console.log("NConstrains: " + circuit.nConstraints); + }).timeout(10000000); + +}); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/escalarmulany.js b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/escalarmulany.js new file mode 100644 index 000000000..2d33827dc --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/escalarmulany.js @@ -0,0 +1,59 @@ +const chai = require("chai"); +const path = require("path"); +const snarkjs = require("snarkjs"); +const compiler = require("circom"); + +const assert = chai.assert; + +const bigInt = snarkjs.bigInt; + + +function print(circuit, w, s) { + console.log(s + ": " + w[circuit.getSignalIdx(s)]); +} + +describe("Escalarmul test", function () { + let circuitEMulAny; + + this.timeout(100000); + + let g = [ + snarkjs.bigInt("5299619240641551281634865583518297030282874472190772894086521144482721001553"), + snarkjs.bigInt("16950150798460657717958625567821834550301663161624707787222815936182638968203") + ]; + + before( async() => { + const cirDefEMulAny = await compiler(path.join(__dirname, "circuits", "escalarmulany_test.circom")); + circuitEMulAny = new snarkjs.Circuit(cirDefEMulAny); + console.log("NConstrains Escalarmul any: " + circuitEMulAny.nConstraints); + }); + + it("Should generate Same escalar mul", async () => { + + const w = circuitEMulAny.calculateWitness({"e": 1, "p": g}); + + assert(circuitEMulAny.checkWitness(w)); + + const xout = w[circuitEMulAny.getSignalIdx("main.out[0]")]; + const yout = w[circuitEMulAny.getSignalIdx("main.out[1]")]; + + assert(xout.equals(g[0])); + assert(yout.equals(g[1])); + }); + + it("If multiply by order should return 0", async () => { + + const r = bigInt("2736030358979909402780800718157159386076813972158567259200215660948447373041"); + const w = circuitEMulAny.calculateWitness({"e": r, "p": g}); + + assert(circuitEMulAny.checkWitness(w)); + + const xout = w[circuitEMulAny.getSignalIdx("main.out[0]")]; + const yout = w[circuitEMulAny.getSignalIdx("main.out[1]")]; + + assert(xout.equals(bigInt.zero)); + assert(yout.equals(bigInt.one)); + }); + +}); + diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/escalarmulfix.js b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/escalarmulfix.js new file mode 100644 index 000000000..77f6c97b3 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/escalarmulfix.js @@ -0,0 +1,112 @@ +const chai = require("chai"); +const path = require("path"); +const snarkjs = require("snarkjs"); +const compiler = require("circom"); +const babyjub = require("../src/babyjub"); + +const assert = chai.assert; + +const bigInt = snarkjs.bigInt; + + +function print(circuit, w, s) { + console.log(s + ": " + w[circuit.getSignalIdx(s)]); +} + +describe("Escalarmul test", function () { + let circuit; + + this.timeout(100000); + + before( async() => { + const cirDef = await compiler(path.join(__dirname, "circuits", "escalarmulfix_test.circom")); + circuit = new snarkjs.Circuit(cirDef); + console.log("NConstrains Escalarmul fix: " + circuit.nConstraints); + }); + + it("Should generate Same escalar mul", async () => { + + const w = circuit.calculateWitness({"e": 0}); + + assert(circuit.checkWitness(w)); + + const xout = w[circuit.getSignalIdx("main.out[0]")]; + const yout = w[circuit.getSignalIdx("main.out[1]")]; + + assert(xout.equals(0)); + assert(yout.equals(1)); + }); + + it("Should generate Same escalar mul", async () => { + + const w = circuit.calculateWitness({"e": 1}); + + assert(circuit.checkWitness(w)); + + const xout = w[circuit.getSignalIdx("main.out[0]")]; + const yout = w[circuit.getSignalIdx("main.out[1]")]; + + assert(xout.equals(babyjub.Base8[0])); + assert(yout.equals(babyjub.Base8[1])); + }); + + it("Should generate scalar mul of a specific constant", async () => { + + const s = bigInt("2351960337287830298912035165133676222414898052661454064215017316447594616519"); + const base8 = [ + bigInt("5299619240641551281634865583518297030282874472190772894086521144482721001553"), + bigInt("16950150798460657717958625567821834550301663161624707787222815936182638968203") + ]; + + const w = circuit.calculateWitness({"e": s}); + + assert(circuit.checkWitness(w)); + + const xout = w[circuit.getSignalIdx("main.out[0]")]; + const yout = w[circuit.getSignalIdx("main.out[1]")]; + + const expectedRes = babyjub.mulPointEscalar(base8, s); + + assert(xout.equals(expectedRes[0])); + assert(yout.equals(expectedRes[1])); + }); + + it("Should generate scalar mul of the firsts 50 elements", async () => { + + const base8 = [ + bigInt("5299619240641551281634865583518297030282874472190772894086521144482721001553"), + bigInt("16950150798460657717958625567821834550301663161624707787222815936182638968203") + ]; + + for (let i=0; i<50; i++) { + const s = bigInt(i); + + const w = circuit.calculateWitness({"e": s}); + + assert(circuit.checkWitness(w)); + + const xout = w[circuit.getSignalIdx("main.out[0]")]; + const yout = w[circuit.getSignalIdx("main.out[1]")]; + + const expectedRes = babyjub.mulPointEscalar(base8, s); + + assert(xout.equals(expectedRes[0])); + assert(yout.equals(expectedRes[1])); + } + }); + + it("If multiply by order should return 0", async () => { + + const w = circuit.calculateWitness({"e": babyjub.subOrder }); + + assert(circuit.checkWitness(w)); + + const xout = w[circuit.getSignalIdx("main.out[0]")]; + const yout = w[circuit.getSignalIdx("main.out[1]")]; + + assert(xout.equals(bigInt.zero)); + assert(yout.equals(bigInt.one)); + }); + +}); + diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/helpers/printsignal.js b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/helpers/printsignal.js new file mode 100644 index 000000000..796274d7a --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/helpers/printsignal.js @@ -0,0 +1,22 @@ + +const snarkjs = require("snarkjs"); + +const bigInt = snarkjs.bigInt; + +module.exports = function hexBits(cir, witness, sig, nBits) { + let v = bigInt(0); + for (let i=nBits-1; i>=0; i--) { + v = v.shiftLeft(1); + const name = sig+"["+i+"]"; + const idx = cir.getSignalIdx(name); + const vbit = bigInt(witness[idx].toString()); + if (vbit.equals(bigInt(1))) { + v = v.add(bigInt(1)); + } else if (vbit.equals(bigInt(0))) { + v; + } else { + console.log("Not Binary: "+name); + } + } + return v.toString(16); +}; diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/helpers/sha256.js b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/helpers/sha256.js new file mode 100644 index 000000000..ec58ee1d1 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/helpers/sha256.js @@ -0,0 +1,178 @@ +/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ +/* SHA-256 (FIPS 180-4) implementation in JavaScript (c) Chris Veness 2002-2017 */ +/* MIT Licence */ +/* www.movable-type.co.uk/scripts/sha256.html */ +/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ + +'use strict'; + + +/** + * SHA-256 hash function reference implementation. + * + * This is an annotated direct implementation of FIPS 180-4, without any optimisations. It is + * intended to aid understanding of the algorithm rather than for production use. + * + * While it could be used where performance is not critical, I would recommend using the ‘Web + * Cryptography API’ (developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest) for the browser, + * or the ‘crypto’ library (nodejs.org/api/crypto.html#crypto_class_hash) in Node.js. + * + * See csrc.nist.gov/groups/ST/toolkit/secure_hashing.html + * csrc.nist.gov/groups/ST/toolkit/examples.html + */ +class Sha256 { + + /** + * Generates SHA-256 hash of string. + * + * @param {string} msg - (Unicode) string to be hashed. + * @param {Object} [options] + * @param {string} [options.msgFormat=string] - Message format: 'string' for JavaScript string + * (gets converted to UTF-8 for hashing); 'hex-bytes' for string of hex bytes ('616263' ≡ 'abc') . + * @param {string} [options.outFormat=hex] - Output format: 'hex' for string of contiguous + * hex bytes; 'hex-w' for grouping hex bytes into groups of (4 byte / 8 character) words. + * @returns {string} Hash of msg as hex character string. + */ + static hash(msg, options) { + const defaults = { msgFormat: 'string', outFormat: 'hex' }; + const opt = Object.assign(defaults, options); + + // note use throughout this routine of 'n >>> 0' to coerce Number 'n' to unsigned 32-bit integer + + switch (opt.msgFormat) { + default: // default is to convert string to UTF-8, as SHA only deals with byte-streams + case 'string': msg = utf8Encode(msg); break; + case 'hex-bytes':msg = hexBytesToString(msg); break; // mostly for running tests + } + + // constants [§4.2.2] + const K = [ + 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, + 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, + 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, + 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, + 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, + 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, + 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, + 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 ]; + + // initial hash value [§5.3.3] + const H = [ + 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19 ]; + + // PREPROCESSING [§6.2.1] + + msg += String.fromCharCode(0x80); // add trailing '1' bit (+ 0's padding) to string [§5.1.1] + + // convert string msg into 512-bit blocks (array of 16 32-bit integers) [§5.2.1] + const l = msg.length/4 + 2; // length (in 32-bit integers) of msg + ‘1’ + appended length + const N = Math.ceil(l/16); // number of 16-integer (512-bit) blocks required to hold 'l' ints + const M = new Array(N); // message M is N×16 array of 32-bit integers + + for (let i=0; i>> 32, but since JS converts + // bitwise-op args to 32 bits, we need to simulate this by arithmetic operators + const lenHi = ((msg.length-1)*8) / Math.pow(2, 32); + const lenLo = ((msg.length-1)*8) >>> 0; + M[N-1][14] = Math.floor(lenHi); + M[N-1][15] = lenLo; + + // HASH COMPUTATION [§6.2.2] + + for (let i=0; i>> 0; + } + + // 2 - initialise working variables a, b, c, d, e, f, g, h with previous hash value + let a = H[0], b = H[1], c = H[2], d = H[3], e = H[4], f = H[5], g = H[6], h = H[7]; + + // 3 - main loop (note '>>> 0' for 'addition modulo 2^32') + for (let t=0; t<64; t++) { + const T1 = h + Sha256.Σ1(e) + Sha256.Ch(e, f, g) + K[t] + W[t]; + const T2 = Sha256.Σ0(a) + Sha256.Maj(a, b, c); + h = g; + g = f; + f = e; + e = (d + T1) >>> 0; + d = c; + c = b; + b = a; + a = (T1 + T2) >>> 0; + } + + // 4 - compute the new intermediate hash value (note '>>> 0' for 'addition modulo 2^32') + H[0] = (H[0]+a) >>> 0; + H[1] = (H[1]+b) >>> 0; + H[2] = (H[2]+c) >>> 0; + H[3] = (H[3]+d) >>> 0; + H[4] = (H[4]+e) >>> 0; + H[5] = (H[5]+f) >>> 0; + H[6] = (H[6]+g) >>> 0; + H[7] = (H[7]+h) >>> 0; + } + + // convert H0..H7 to hex strings (with leading zeros) + for (let h=0; h prev + String.fromCharCode(curr), ''); + } catch (e) { // no TextEncoder available? + return unescape(encodeURIComponent(str)); // monsur.hossa.in/2012/07/20/utf-8-in-javascript.html + } + } + + function hexBytesToString(hexStr) { // convert string of hex numbers to a string of chars (eg '616263' -> 'abc'). + const str = hexStr.replace(' ', ''); // allow space-separated groups + return str=='' ? '' : str.match(/.{2}/g).map(byte => String.fromCharCode(parseInt(byte, 16))).join(''); + } + } + + + + /** + * Rotates right (circular right shift) value x by n positions [§3.2.4]. + * @private + */ + static ROTR(n, x) { + return (x >>> n) | (x << (32-n)); + } + + + /** + * Logical functions [§4.1.2]. + * @private + */ + static Σ0(x) { return Sha256.ROTR(2, x) ^ Sha256.ROTR(13, x) ^ Sha256.ROTR(22, x); } + static Σ1(x) { return Sha256.ROTR(6, x) ^ Sha256.ROTR(11, x) ^ Sha256.ROTR(25, x); } + static σ0(x) { return Sha256.ROTR(7, x) ^ Sha256.ROTR(18, x) ^ (x>>>3); } + static σ1(x) { return Sha256.ROTR(17, x) ^ Sha256.ROTR(19, x) ^ (x>>>10); } + static Ch(x, y, z) { return (x & y) ^ (~x & z); } // 'choice' + static Maj(x, y, z) { return (x & y) ^ (x & z) ^ (y & z); } // 'majority' + +} + + +/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ + +if (typeof module != 'undefined' && module.exports) module.exports = Sha256; // ≡ export default Sha256 + diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/mimccircuit.js b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/mimccircuit.js new file mode 100644 index 000000000..f45db3d84 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/mimccircuit.js @@ -0,0 +1,35 @@ +const chai = require("chai"); +const path = require("path"); +const snarkjs = require("snarkjs"); +const compiler = require("circom"); + +const mimcjs = require("../src/mimc7.js"); + +const assert = chai.assert; + +describe("MiMC Circuit test", function () { + let circuit; + + this.timeout(100000); + + before( async () => { + const cirDef = await compiler(path.join(__dirname, "circuits", "mimc_test.circom")); + + circuit = new snarkjs.Circuit(cirDef); + + console.log("MiMC constraints: " + circuit.nConstraints); + }); + + it("Should check constrain", async () => { + const w = circuit.calculateWitness({x_in: 1, k: 2}); + + const res = w[circuit.getSignalIdx("main.out")]; + + const res2 = mimcjs.hash(1,2,91); + + assert.equal(res.toString(), res2.toString()); + + assert(circuit.checkWitness(w)); + + }); +}); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/mimccontract.js b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/mimccontract.js new file mode 100644 index 000000000..9c135d5bd --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/mimccontract.js @@ -0,0 +1,48 @@ +const ganache = require("ganache-cli"); +const Web3 = require("web3"); +const chai = require("chai"); +const mimcGenContract = require("../src/mimc_gencontract.js"); +const mimcjs = require("../src/mimc7.js"); + + +const assert = chai.assert; +const log = (msg) => { if (process.env.MOCHA_VERBOSE) console.log(msg); }; + +const SEED = "mimc"; + +describe("MiMC Smart contract test", function () { + let testrpc; + let web3; + let mimc; + let accounts; + + this.timeout(100000); + + before(async () => { + web3 = new Web3(ganache.provider(), null, { transactionConfirmationBlocks: 1 }); + accounts = await web3.eth.getAccounts(); + }); + + it("Should deploy the contract", async () => { + const C = new web3.eth.Contract(mimcGenContract.abi); + + mimc = await C.deploy({ + data: mimcGenContract.createCode(SEED, 91), + arguments: [] + }).send({ + gas: 1500000, + gasPrice: '30000000000000', + from: accounts[0] + }).on("error", (error) => { + console.log("ERROR: "+error); + }); + }); + + it("Shold calculate the mimic correctly", async () => { + const res = await mimc.methods.MiMCpe7(1,2).call(); + const res2 = await mimcjs.hash(1,2,91); + + assert.equal(res.toString(), res2.toString()); + }); +}); + diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/mimcspongecircuit.js b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/mimcspongecircuit.js new file mode 100644 index 000000000..b114924c0 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/mimcspongecircuit.js @@ -0,0 +1,58 @@ +const chai = require("chai"); +const path = require("path"); +const snarkjs = require("snarkjs"); +const compiler = require("circom"); + +const mimcjs = require("../src/mimcsponge.js"); + +const assert = chai.assert; + +describe("MiMC Sponge Circuit test", function () { + let circuit; + + this.timeout(100000); + + it("Should check permutation", async () => { + const cirDef = await compiler(path.join(__dirname, "circuits", "mimc_sponge_test.circom")); + + circuit = new snarkjs.Circuit(cirDef); + + console.log("MiMC Feistel constraints: " + circuit.nConstraints); + + const w = circuit.calculateWitness({xL_in: 1, xR_in: 2, k: 3}); + + const xLout = w[circuit.getSignalIdx("main.xL_out")]; + const xRout = w[circuit.getSignalIdx("main.xR_out")]; + + const out2 = mimcjs.hash(1,2,3); + + assert.equal(xLout.toString(), out2.xL.toString()); + assert.equal(xRout.toString(), out2.xR.toString()); + + assert(circuit.checkWitness(w)); + + }); + + it("Should check hash", async () => { + const cirDef = await compiler(path.join(__dirname, "circuits", "mimc_sponge_hash_test.circom")); + + circuit = new snarkjs.Circuit(cirDef); + + console.log("MiMC Sponge constraints: " + circuit.nConstraints); + + const w = circuit.calculateWitness({ins: [1, 2], k: 0}); + + const o1 = w[circuit.getSignalIdx("main.outs[0]")]; + const o2 = w[circuit.getSignalIdx("main.outs[1]")]; + const o3 = w[circuit.getSignalIdx("main.outs[2]")]; + + const out2 = mimcjs.multiHash([1,2], 0, 3); + + assert.equal(o1.toString(), out2[0].toString()); + assert.equal(o2.toString(), out2[1].toString()); + assert.equal(o3.toString(), out2[2].toString()); + + assert(circuit.checkWitness(w)); + + }); +}); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/mimcspongecontract.js b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/mimcspongecontract.js new file mode 100644 index 000000000..a2e7394c5 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/mimcspongecontract.js @@ -0,0 +1,43 @@ +const ganache = require("ganache-cli"); +const Web3 = require("web3"); +const chai = require("chai"); +const mimcGenContract = require("../src/mimcsponge_gencontract.js"); +const mimcjs = require("../src/mimcsponge.js"); + + +const assert = chai.assert; +const log = (msg) => { if (process.env.MOCHA_VERBOSE) console.log(msg); }; + +const SEED = "mimcsponge"; + +describe("MiMC Sponge Smart contract test", () => { + let testrpc; + let web3; + let mimc; + let accounts; + + before(async () => { + web3 = new Web3(ganache.provider(), null, { transactionConfirmationBlocks: 1 }); + accounts = await web3.eth.getAccounts(); + }); + + it("Should deploy the contract", async () => { + const C = new web3.eth.Contract(mimcGenContract.abi); + + mimc = await C.deploy({ + data: mimcGenContract.createCode(SEED, 220) + }).send({ + gas: 3500000, + from: accounts[0] + }); + }); + + it("Shold calculate the mimc correctly", async () => { + const res = await mimc.methods.MiMCSponge(1,2,3).call(); + const res2 = await mimcjs.hash(1,2,3); + + assert.equal(res.xL.toString(), res2.xL.toString()); + assert.equal(res.xR.toString(), res2.xR.toString()); + }); +}); + diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/montgomery.js b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/montgomery.js new file mode 100644 index 000000000..0de3ca0d2 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/montgomery.js @@ -0,0 +1,99 @@ +const chai = require("chai"); +const path = require("path"); +const snarkjs = require("snarkjs"); +const compiler = require("circom"); +const babyJub = require("../src/babyjub.js"); + +const assert = chai.assert; + +const bigInt = snarkjs.bigInt; + +describe("Montgomery test", function () { + let circuitE2M; + let circuitM2E; + let circuitMAdd; + let circuitMDouble; + + let g = [ + snarkjs.bigInt("5299619240641551281634865583518297030282874472190772894086521144482721001553"), + snarkjs.bigInt("16950150798460657717958625567821834550301663161624707787222815936182638968203")]; + + let mg, mg2, g2, g3, mg3; + + this.timeout(100000); + before( async() => { + const cirDefE2M = await compiler(path.join(__dirname, "circuits", "edwards2montgomery.circom")); + circuitE2M = new snarkjs.Circuit(cirDefE2M); + console.log("NConstrains Edwards -> Montgomery: " + circuitE2M.nConstraints); + + const cirDefM2E = await compiler(path.join(__dirname, "circuits", "montgomery2edwards.circom")); + circuitM2E = new snarkjs.Circuit(cirDefM2E); + console.log("NConstrains Montgomery -> Edwards: " + circuitM2E.nConstraints); + + const cirDefMAdd = await compiler(path.join(__dirname, "circuits", "montgomeryadd.circom")); + circuitMAdd = new snarkjs.Circuit(cirDefMAdd); + console.log("NConstrains Montgomery Add: " + circuitMAdd.nConstraints); + + const cirDefMDouble = await compiler(path.join(__dirname, "circuits", "montgomerydouble.circom")); + circuitMDouble = new snarkjs.Circuit(cirDefMDouble); + console.log("NConstrains Montgomery Double: " + circuitMDouble.nConstraints); + }); + it("Convert Edwards to Montgomery and back again", async () => { + let w, xout, yout; + + w = circuitE2M.calculateWitness({ in: g}); + + xout = w[circuitE2M.getSignalIdx("main.out[0]")]; + yout = w[circuitE2M.getSignalIdx("main.out[1]")]; + + mg = [xout, yout]; + + w = circuitM2E.calculateWitness({ in: [xout, yout]}); + + xout = w[circuitM2E.getSignalIdx("main.out[0]")]; + yout = w[circuitM2E.getSignalIdx("main.out[1]")]; + + assert(xout.equals(g[0])); + assert(yout.equals(g[1])); + }); + it("Should double a point", async () => { + let w, xout, yout; + + g2 = babyJub.addPoint(g,g); + + w = circuitMDouble.calculateWitness({ in: mg}); + + xout = w[circuitE2M.getSignalIdx("main.out[0]")]; + yout = w[circuitE2M.getSignalIdx("main.out[1]")]; + + mg2 = [xout, yout]; + + w = circuitM2E.calculateWitness({ in: mg2}); + + xout = w[circuitM2E.getSignalIdx("main.out[0]")]; + yout = w[circuitM2E.getSignalIdx("main.out[1]")]; + + assert(xout.equals(g2[0])); + assert(yout.equals(g2[1])); + }); + it("Should add a point", async () => { + let w, xout, yout; + + g3 = babyJub.addPoint(g,g2); + + w = circuitMAdd.calculateWitness({ in1: mg, in2: mg2}); + + xout = w[circuitMAdd.getSignalIdx("main.out[0]")]; + yout = w[circuitMAdd.getSignalIdx("main.out[1]")]; + + mg3 = [xout, yout]; + + w = circuitM2E.calculateWitness({ in: mg3}); + + xout = w[circuitM2E.getSignalIdx("main.out[0]")]; + yout = w[circuitM2E.getSignalIdx("main.out[1]")]; + + assert(xout.equals(g3[0])); + assert(yout.equals(g3[1])); + }); +}); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/multiplexer.js b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/multiplexer.js new file mode 100644 index 000000000..62af0bbd1 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/multiplexer.js @@ -0,0 +1,127 @@ +const chai = require("chai"); +const path = require("path"); +const snarkjs = require("snarkjs"); +const compiler = require("circom"); + +const assert = chai.assert; + +const bigInt = snarkjs.bigInt; + + +describe("Mux4 test", () => { + it("Should create a constant multiplexer 4", async () => { + + const cirDef = await compiler(path.join(__dirname, "circuits", "mux4_1.circom")); + +// console.log(JSON.stringify(cirDef, null, 1)); + +// assert.equal(cirDef.nVars, 2); + + const circuit = new snarkjs.Circuit(cirDef); + + console.log("NConstrains Mux4: " + circuit.nConstraints); + + const ct16 = [ + bigInt("123"), + bigInt("456"), + bigInt("789"), + bigInt("012"), + bigInt("111"), + bigInt("222"), + bigInt("333"), + bigInt("4546"), + bigInt("134523"), + bigInt("44356"), + bigInt("15623"), + bigInt("4566"), + bigInt("1223"), + bigInt("4546"), + bigInt("4256"), + bigInt("4456") + ]; + + for (let i=0; i<16; i++) { + const w = circuit.calculateWitness({ "selector": i }); + + assert(w[0].equals(bigInt(1))); + + // console.log(i + " -> " + w[circuit.getSignalIdx("main.out")].toString()); + assert(w[circuit.getSignalIdx("main.out")].equals(ct16[i])); + } + }); + + it("Should create a constant multiplexer 3", async () => { + + const cirDef = await compiler(path.join(__dirname, "circuits", "mux3_1.circom")); + + const circuit = new snarkjs.Circuit(cirDef); + + console.log("NConstrains Mux3: " + circuit.nConstraints); + + const ct8 = [ + bigInt("37"), + bigInt("47"), + bigInt("53"), + bigInt("71"), + bigInt("89"), + bigInt("107"), + bigInt("163"), + bigInt("191") + ]; + + for (let i=0; i<8; i++) { + const w = circuit.calculateWitness({ "selector": i }); + + assert(w[0].equals(bigInt(1))); + + // console.log(i + " -> " + w[circuit.getSignalIdx("main.out")].toString()); + assert(w[circuit.getSignalIdx("main.out")].equals(ct8[i])); + } + }); + it("Should create a constant multiplexer 2", async () => { + + const cirDef = await compiler(path.join(__dirname, "circuits", "mux2_1.circom")); + + const circuit = new snarkjs.Circuit(cirDef); + + console.log("NConstrains Mux2: " + circuit.nConstraints); + + const ct8 = [ + bigInt("37"), + bigInt("47"), + bigInt("53"), + bigInt("71"), + ]; + + for (let i=0; i<4; i++) { + const w = circuit.calculateWitness({ "selector": i }); + + assert(w[0].equals(bigInt(1))); + + // console.log(i + " -> " + w[circuit.getSignalIdx("main.out")].toString()); + assert(w[circuit.getSignalIdx("main.out")].equals(ct8[i])); + } + }); + it("Should create a constant multiplexer 1", async () => { + + const cirDef = await compiler(path.join(__dirname, "circuits", "mux1_1.circom")); + + const circuit = new snarkjs.Circuit(cirDef); + + console.log("NConstrains Mux1: " + circuit.nConstraints); + + const ct8 = [ + bigInt("37"), + bigInt("47"), + ]; + + for (let i=0; i<2; i++) { + const w = circuit.calculateWitness({ "selector": i }); + + assert(w[0].equals(bigInt(1))); + + // console.log(i + " -> " + w[circuit.getSignalIdx("main.out")].toString()); + assert(w[circuit.getSignalIdx("main.out")].equals(ct8[i])); + } + }); +}); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/pedersen.js b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/pedersen.js new file mode 100644 index 000000000..d8285201b --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/pedersen.js @@ -0,0 +1,100 @@ +const chai = require("chai"); +const path = require("path"); +const snarkjs = require("snarkjs"); +const compiler = require("circom"); + +const assert = chai.assert; + +const bigInt = snarkjs.bigInt; + +const babyJub = require("../src/babyjub.js"); + +const PBASE = + [ + [bigInt("10457101036533406547632367118273992217979173478358440826365724437999023779287"),bigInt("19824078218392094440610104313265183977899662750282163392862422243483260492317")], + [bigInt("2671756056509184035029146175565761955751135805354291559563293617232983272177"),bigInt("2663205510731142763556352975002641716101654201788071096152948830924149045094")], + [bigInt("5802099305472655231388284418920769829666717045250560929368476121199858275951"),bigInt("5980429700218124965372158798884772646841287887664001482443826541541529227896")], + [bigInt("7107336197374528537877327281242680114152313102022415488494307685842428166594"),bigInt("2857869773864086953506483169737724679646433914307247183624878062391496185654")], + [bigInt("20265828622013100949498132415626198973119240347465898028410217039057588424236"),bigInt("1160461593266035632937973507065134938065359936056410650153315956301179689506")] + ]; + +describe("Double Pedersen test", function() { + let circuit; + this.timeout(100000); + before( async() => { + const cirDef = await compiler(path.join(__dirname, "circuits", "pedersen_test.circom")); + + circuit = new snarkjs.Circuit(cirDef); + + console.log("NConstrains: " + circuit.nConstraints); + }); + it("Should pedersen at zero", async () => { + + let w, xout, yout; + + w = circuit.calculateWitness({ in: ["0", "0"]}); + + xout = w[circuit.getSignalIdx("main.out[0]")]; + yout = w[circuit.getSignalIdx("main.out[1]")]; + + assert(xout.equals("0")); + assert(yout.equals("1")); + }); + it("Should pedersen at one first generator", async () => { + let w, xout, yout; + + w = circuit.calculateWitness({ in: ["1", "0"]}); + + xout = bigInt(w[circuit.getSignalIdx("main.out[0]")]); + yout = bigInt(w[circuit.getSignalIdx("main.out[1]")]); + + assert(xout.equals(PBASE[0][0])); + assert(yout.equals(PBASE[0][1])); + }); + it("Should pedersen at one second generator", async () => { + let w, xout, yout; + + w = circuit.calculateWitness({ in: ["0", "1"]}); + + xout = w[circuit.getSignalIdx("main.out[0]")]; + yout = w[circuit.getSignalIdx("main.out[1]")]; + + assert(xout.equals(PBASE[1][0])); + assert(yout.equals(PBASE[1][1])); + + }); + it("Should pedersen at mixed generators", async () => { + let w, xout, yout; + w = circuit.calculateWitness({ in: ["3", "7"]}); + + xout = w[circuit.getSignalIdx("main.out[0]")]; + yout = w[circuit.getSignalIdx("main.out[1]")]; + + + const r = babyJub.addPoint( + babyJub.mulPointEscalar(PBASE[0], 3), + babyJub.mulPointEscalar(PBASE[1], 7) + ); + + assert(xout.equals(r[0])); + assert(yout.equals(r[1])); + + }); + it("Should pedersen all ones", async () => { + let w, xout, yout; + + const allOnes = bigInt("1").shl(250).sub(bigInt("1")); + w = circuit.calculateWitness({ in: [allOnes, allOnes]}); + + xout = w[circuit.getSignalIdx("main.out[0]")]; + yout = w[circuit.getSignalIdx("main.out[1]")]; + + const r2 = babyJub.addPoint( + babyJub.mulPointEscalar(PBASE[0], allOnes), + babyJub.mulPointEscalar(PBASE[1], allOnes) + ); + + assert(xout.equals(r2[0])); + assert(yout.equals(r2[1])); + }); +}); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/pedersen2.js b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/pedersen2.js new file mode 100644 index 000000000..65252b60f --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/pedersen2.js @@ -0,0 +1,74 @@ +const chai = require("chai"); +const path = require("path"); +const snarkjs = require("snarkjs"); +const compiler = require("circom"); + +const assert = chai.assert; + +const bigInt = snarkjs.bigInt; + +const babyJub = require("../src/babyjub.js"); +const pedersen = require("../src/pedersenHash.js"); + + +describe("Pedersen test", function() { + let circuit; + this.timeout(100000); + before( async() => { + const cirDef = await compiler(path.join(__dirname, "circuits", "pedersen2_test.circom")); + + circuit = new snarkjs.Circuit(cirDef); + + console.log("NConstrains Pedersen2: " + circuit.nConstraints); + }); + it("Should pedersen at zero", async () => { + + let w, xout, yout; + + w = circuit.calculateWitness({ in: 0}); + + xout = w[circuit.getSignalIdx("main.out[0]")]; + yout = w[circuit.getSignalIdx("main.out[1]")]; + + const b = Buffer.alloc(32); + + const h = pedersen.hash(b); + const hP = babyJub.unpackPoint(h); + + /* + console.log(`[${xout.toString()}, ${yout.toString()}]`); + console.log(`[${hP[0].toString()}, ${hP[1].toString()}]`); + */ + + assert(xout.equals(hP[0])); + assert(yout.equals(hP[1])); + }); + it("Should pedersen with 253 ones", async () => { + + let w, xout, yout; + + const n = bigInt.one.shl(253).sub(bigInt.one); + console.log(n.toString(16)); + + w = circuit.calculateWitness({ in: n}); + + xout = w[circuit.getSignalIdx("main.out[0]")]; + yout = w[circuit.getSignalIdx("main.out[1]")]; + + const b = Buffer.alloc(32); + for (let i=0; i<31; i++) b[i] = 0xFF; + b[31] = 0x1F; + + + const h = pedersen.hash(b); + const hP = babyJub.unpackPoint(h); + + /* + console.log(`[${xout.toString()}, ${yout.toString()}]`); + console.log(`[${hP[0].toString()}, ${hP[1].toString()}]`); + */ + + assert(xout.equals(hP[0])); + assert(yout.equals(hP[1])); + }); +}); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/point2bits.js b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/point2bits.js new file mode 100644 index 000000000..51191d56f --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/point2bits.js @@ -0,0 +1,33 @@ +const chai = require("chai"); +const path = require("path"); +const snarkjs = require("snarkjs"); +const compiler = require("circom"); + +const assert = chai.assert; + +const bigInt = snarkjs.bigInt; + +const babyJub = require("../src/babyjub.js"); + + +describe("Point 2 bits test", function() { + let circuit; + this.timeout(100000); + before( async() => { + const cirDef = await compiler(path.join(__dirname, "circuits", "pointbits_loopback.circom")); + + circuit = new snarkjs.Circuit(cirDef); + + console.log("NConstrains Point2Bits loopback: " + circuit.nConstraints); + }); + it("Should do the both convertions for 8Base", async () => { + const w = circuit.calculateWitness({ in: babyJub.Base8}); + + assert(circuit.checkWitness(w)); + }); + it("Should do the both convertions for Zero point", async () => { + const w = circuit.calculateWitness({ in: [0, 1]}); + + assert(circuit.checkWitness(w)); + }); +}); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/poseidoncircuit.js b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/poseidoncircuit.js new file mode 100644 index 000000000..5bb880f10 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/poseidoncircuit.js @@ -0,0 +1,60 @@ +const chai = require("chai"); +const path = require("path"); +const snarkjs = require("snarkjs"); +const compiler = require("circom"); +var blake2b = require('blake2b'); + +const poseidon = require("../src/poseidon.js"); + +const assert = chai.assert; + +describe("Blake2b version test", function() { + it("Should give the expected output for blake2b version", async () => { + var output = new Uint8Array(32); + var input = Buffer.from('poseidon_constants'); + h = blake2b(output.length).update(input).digest('hex') + assert.equal('e57ba154fb2c47811dc1a2369b27e25a44915b4e4ece4eb8ec74850cb78e01b1', h); + }); +}); + +describe("Poseidon Circuit test", function () { + let circuit; + + this.timeout(100000); + + before( async () => { + const cirDef = await compiler(path.join(__dirname, "circuits", "poseidon_test.circom")); + + circuit = new snarkjs.Circuit(cirDef); + + console.log("Poseidon constraints: " + circuit.nConstraints); + }); + + it("Should check constrain of hash([1, 2])", async () => { + const w = circuit.calculateWitness({inputs: [1, 2]}); + + const res = w[circuit.getSignalIdx("main.out")]; + + const hash = poseidon.createHash(6, 8, 57); + + const res2 = hash([1,2]); + assert.equal('12242166908188651009877250812424843524687801523336557272219921456462821518061', res2.toString()); + assert.equal(res.toString(), res2.toString()); + assert(circuit.checkWitness(w)); + }); + + it("Should check constrain of hash([3, 4])", async () => { + const w = circuit.calculateWitness({inputs: [3, 4]}); + + const res = w[circuit.getSignalIdx("main.out")]; + + const hash = poseidon.createHash(6, 8, 57); + + const res2 = hash([3, 4]); + assert.equal('17185195740979599334254027721507328033796809509313949281114643312710535000993', res2.toString()); + + assert.equal(res.toString(), res2.toString()); + + assert(circuit.checkWitness(w)); + }); +}); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/poseidoncontract.js b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/poseidoncontract.js new file mode 100644 index 000000000..4a04d5585 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/poseidoncontract.js @@ -0,0 +1,49 @@ +const ganache = require("ganache-cli"); +const Web3 = require("web3"); +const chai = require("chai"); +const poseidonGenContract = require("../src/poseidon_gencontract.js"); +const Poseidon = require("../src/poseidon.js"); +const bigInt = require("snarkjs").bigInt; + +const assert = chai.assert; +const log = (msg) => { if (process.env.MOCHA_VERBOSE) console.log(msg); }; + +const SEED = "mimc"; + +describe("Poseidon Smart contract test", () => { + let testrpc; + let web3; + let mimc; + let accounts; + + before(async () => { + web3 = new Web3(ganache.provider(), null, { transactionConfirmationBlocks: 1 }); + accounts = await web3.eth.getAccounts(); + }); + + it("Should deploy the contract", async () => { + const C = new web3.eth.Contract(poseidonGenContract.abi); + + mimc = await C.deploy({ + data: poseidonGenContract.createCode() + }).send({ + gas: 2500000, + from: accounts[0] + }); + }); + + it("Shold calculate the mimic correctly", async () => { + + const res = await mimc.methods.poseidon([1,2]).call(); + + // console.log("Cir: " + bigInt(res.toString(16)).toString(16)); + + const hash = Poseidon.createHash(6, 8, 57); + + const res2 = hash([1,2]); + // console.log("Ref: " + bigInt(res2).toString(16)); + + assert.equal(res.toString(), res2.toString()); + }); +}); + diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/sha256.js b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/sha256.js new file mode 100644 index 000000000..0002a8f24 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/sha256.js @@ -0,0 +1,42 @@ +const chai = require("chai"); +const path = require("path"); +const snarkjs = require("snarkjs"); +const crypto = require("crypto"); + +const compiler = require("circom"); + +const assert = chai.assert; + +const sha256 = require("./helpers/sha256"); + +// const printSignal = require("./helpers/printsignal"); + + +describe("SHA256 test", () => { + it("Should calculate a hash", async () => { + const cirDef = await compiler(path.join(__dirname, "circuits", "sha256_2_test.circom")); + const circuit = new snarkjs.Circuit(cirDef); + + console.log("Vars: "+circuit.nVars); + console.log("Constraints: "+circuit.nConstraints); + + const witness = circuit.calculateWitness({ "a": "1", "b": "2" }); + + const b = new Buffer.alloc(54); + b[26] = 1; + b[53] = 2; + + const hash = crypto.createHash("sha256") + .update(b) + .digest("hex"); + const r = "0x" + hash.slice(10); + + const hash2 = sha256.hash(b.toString("hex"), {msgFormat: "hex-bytes"}); + + assert.equal(hash, hash2); + + assert(witness[1].equals(snarkjs.bigInt(r))); + }).timeout(1000000); + + +}); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/sign.js b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/sign.js new file mode 100644 index 000000000..81efe8087 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/sign.js @@ -0,0 +1,88 @@ +const chai = require("chai"); +const path = require("path"); +const snarkjs = require("snarkjs"); +const compiler = require("circom"); + +const assert = chai.assert; + +const bigInt = snarkjs.bigInt; + +function print(circuit, w, s) { + console.log(s + ": " + w[circuit.getSignalIdx(s)]); +} + +function getBits(v, n) { + const res = []; + for (let i=0; i { + let circuit; + before( async() => { + const cirDef = await compiler(path.join(__dirname, "circuits", "sign_test.circom")); + + circuit = new snarkjs.Circuit(cirDef); + + console.log("NConstrains: " + circuit.nConstraints); + }); + + it("Sign of 0", async () => { + const inp = getBits(bigInt.zero, 254); + const w = circuit.calculateWitness({in: inp}); + + assert( w[circuit.getSignalIdx("main.sign")].equals(bigInt(0)) ); + }); + + it("Sign of 3", async () => { + const inp = getBits(bigInt(3), 254); + const w = circuit.calculateWitness({in: inp}); + + assert( w[circuit.getSignalIdx("main.sign")].equals(bigInt(0)) ); + }); + + it("Sign of q/2", async () => { + const inp = getBits(q.shr(bigInt.one), 254); + const w = circuit.calculateWitness({in: inp}); + + assert( w[circuit.getSignalIdx("main.sign")].equals(bigInt(0)) ); + }); + + it("Sign of q/2+1", async () => { + const inp = getBits(q.shr(bigInt.one).add(bigInt.one), 254); + const w = circuit.calculateWitness({in: inp}); + + assert( w[circuit.getSignalIdx("main.sign")].equals(bigInt(1)) ); + }); + + it("Sign of q-1", async () => { + const inp = getBits(q.sub(bigInt.one), 254); + const w = circuit.calculateWitness({in: inp}); + + assert( w[circuit.getSignalIdx("main.sign")].equals(bigInt(1)) ); + }); + + it("Sign of q", async () => { + const inp = getBits(q, 254); + const w = circuit.calculateWitness({in: inp}); + + assert( w[circuit.getSignalIdx("main.sign")].equals(bigInt(1)) ); + }); + + it("Sign of all ones", async () => { + const inp = getBits(bigInt(1).shl(254).sub(bigInt(1)), 254); + const w = circuit.calculateWitness({in: inp}); + + assert( w[circuit.getSignalIdx("main.sign")].equals(bigInt(1)) ); + }); + + +}); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/smtjs.js b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/smtjs.js new file mode 100644 index 000000000..eb360abb1 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/smtjs.js @@ -0,0 +1,182 @@ +const chai = require("chai"); +const snarkjs = require("snarkjs"); + +const smt = require("../src/smt.js"); + +const assert = chai.assert; + +const bigInt = snarkjs.bigInt; + + +function stringifyBigInts(o) { + if ((typeof(o) == "bigint") || (o instanceof bigInt)) { + return o.toString(10); + } else if (Array.isArray(o)) { + return o.map(stringifyBigInts); + } else if (typeof o == "object") { + const res = {}; + for (let k in o) { + res[k] = stringifyBigInts(o[k]); + } + return res; + } else { + return o; + } +} + +describe("SMT Javascript test", function () { + this.timeout(100000); + before( async () => { + }); + + it("Should insert 2 elements and empty them", async () => { + const tree = await smt.newMemEmptyTrie(); + const key1 = bigInt(111); + const value1 = bigInt(222); + const key2 = bigInt(333); + const value2 = bigInt(444); + + await tree.insert(key1,value1); + await tree.insert(key2,value2); + await tree.delete(key2); + await tree.delete(key1); + + assert(tree.root.isZero()); + }); + + it("Should insert 3 elements in dferent order and should be the same", async () => { + const keys = [bigInt(8), bigInt(9), bigInt(32)]; + const values = [bigInt(88), bigInt(99), bigInt(3232)]; + const tree1 = await smt.newMemEmptyTrie(); + const tree2 = await smt.newMemEmptyTrie(); + const tree3 = await smt.newMemEmptyTrie(); + const tree4 = await smt.newMemEmptyTrie(); + const tree5 = await smt.newMemEmptyTrie(); + const tree6 = await smt.newMemEmptyTrie(); + + await tree1.insert(keys[0],values[0]); + await tree1.insert(keys[1],values[1]); + await tree1.insert(keys[2],values[2]); + + await tree2.insert(keys[0],values[0]); + await tree2.insert(keys[2],values[2]); + await tree2.insert(keys[1],values[1]); + + await tree3.insert(keys[1],values[1]); + await tree3.insert(keys[0],values[0]); + await tree3.insert(keys[2],values[2]); + + await tree4.insert(keys[1],values[1]); + await tree4.insert(keys[2],values[2]); + await tree4.insert(keys[0],values[0]); + + await tree5.insert(keys[2],values[2]); + await tree5.insert(keys[0],values[0]); + await tree5.insert(keys[1],values[1]); + + await tree6.insert(keys[2],values[2]); + await tree6.insert(keys[1],values[1]); + await tree6.insert(keys[0],values[0]); + + assert(tree1.root.equals(tree2.root)); + assert(tree2.root.equals(tree3.root)); + assert(tree3.root.equals(tree4.root)); + assert(tree4.root.equals(tree5.root)); + assert(tree5.root.equals(tree6.root)); + + assert.equal(Object.keys(tree1.db.nodes).length, Object.keys(tree2.db.nodes).length); + assert.equal(Object.keys(tree2.db.nodes).length, Object.keys(tree3.db.nodes).length); + assert.equal(Object.keys(tree3.db.nodes).length, Object.keys(tree4.db.nodes).length); + assert.equal(Object.keys(tree4.db.nodes).length, Object.keys(tree5.db.nodes).length); + assert.equal(Object.keys(tree5.db.nodes).length, Object.keys(tree6.db.nodes).length); + + await tree1.delete(keys[0]); + await tree1.delete(keys[1]); + await tree2.delete(keys[1]); + await tree2.delete(keys[0]); + assert(tree1.root.equals(tree2.root)); + + await tree3.delete(keys[0]); + await tree3.delete(keys[2]); + await tree4.delete(keys[2]); + await tree4.delete(keys[0]); + assert(tree3.root.equals(tree4.root)); + + await tree5.delete(keys[1]); + await tree5.delete(keys[2]); + await tree6.delete(keys[2]); + await tree6.delete(keys[1]); + assert(tree5.root.equals(tree6.root)); + + await tree1.delete(keys[2]); + await tree2.delete(keys[2]); + await tree3.delete(keys[1]); + await tree4.delete(keys[1]); + await tree5.delete(keys[0]); + await tree6.delete(keys[0]); + + assert(tree1.root.isZero()); + assert(tree2.root.isZero()); + assert(tree3.root.isZero()); + assert(tree4.root.isZero()); + assert(tree5.root.isZero()); + assert(tree6.root.isZero()); + + assert.equal(Object.keys(tree1.db.nodes).length, 0); + assert.equal(Object.keys(tree2.db.nodes).length, 0); + assert.equal(Object.keys(tree3.db.nodes).length, 0); + assert.equal(Object.keys(tree4.db.nodes).length, 0); + assert.equal(Object.keys(tree5.db.nodes).length, 0); + assert.equal(Object.keys(tree6.db.nodes).length, 0); + }); + + it("Insert and remove 100 numbers randomly", async () => { + function perm(a) { + const arr = a.slice(); + const rArr = []; + for (let i=0; i { + const tree1 = await smt.newMemEmptyTrie(); + const tree2 = await smt.newMemEmptyTrie(); + + await tree1.insert(8,88); + await tree1.insert(9,99,); + await tree1.insert(32,3232); + + await tree2.insert(8,888); + await tree2.insert(9,999); + await tree2.insert(32,323232); + + await tree1.update(8, 888); + await tree1.update(9, 999); + await tree1.update(32, 323232); + + assert(tree1.root.equals(tree2.root)); + }); + +}); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/smtprocessor.js b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/smtprocessor.js new file mode 100644 index 000000000..d28327757 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/smtprocessor.js @@ -0,0 +1,217 @@ +const chai = require("chai"); +const path = require("path"); +const snarkjs = require("snarkjs"); +const compiler = require("circom"); + +const smt = require("../src/smt.js"); + +const assert = chai.assert; + +const bigInt = snarkjs.bigInt; + +function print(circuit, w, s) { + console.log(s + ": " + w[circuit.getSignalIdx(s)]); +} + +async function testInsert(tree, key, value, circuit, log ) { + + const res = await tree.insert(key,value); + let siblings = res.siblings; + while (siblings.length<10) siblings.push(bigInt(0)); + + const w = circuit.calculateWitness({ + fnc: [1,0], + oldRoot: res.oldRoot, + siblings: siblings, + oldKey: res.isOld0 ? 0 : res.oldKey, + oldValue: res.isOld0 ? 0 : res.oldValue, + isOld0: res.isOld0 ? 1 : 0, + newKey: key, + newValue: value + }, log); + + const root1 = w[circuit.getSignalIdx("main.newRoot")]; + assert(circuit.checkWitness(w)); + assert(root1.equals(res.newRoot)); +} + +async function testDelete(tree, key, circuit) { + const res = await tree.delete(key); + let siblings = res.siblings; + while (siblings.length<10) siblings.push(bigInt(0)); + + const w = circuit.calculateWitness({ + fnc: [1,1], + oldRoot: res.oldRoot, + siblings: siblings, + oldKey: res.isOld0 ? 0 : res.oldKey, + oldValue: res.isOld0 ? 0 : res.oldValue, + isOld0: res.isOld0 ? 1 : 0, + newKey: res.delKey, + newValue: res.delValue + }); + + const root1 = w[circuit.getSignalIdx("main.newRoot")]; + + assert(circuit.checkWitness(w)); + assert(root1.equals(res.newRoot)); +} + +async function testUpdate(tree, key, newValue, circuit) { + const res = await tree.update(key, newValue); + let siblings = res.siblings; + while (siblings.length<10) siblings.push(bigInt(0)); + + const w = circuit.calculateWitness({ + fnc: [0,1], + oldRoot: res.oldRoot, + siblings: siblings, + oldKey: res.oldKey, + oldValue: res.oldValue, + isOld0: 0, + newKey: res.newKey, + newValue: res.newValue + }); + + const root1 = w[circuit.getSignalIdx("main.newRoot")]; + + assert(circuit.checkWitness(w)); + assert(root1.equals(res.newRoot)); +} + + +describe("SMT test", function () { + let circuit; + let tree; + + this.timeout(10000000); + + before( async () => { + const cirDef = await compiler(path.join(__dirname, "circuits", "smtprocessor10_test.circom")); + + circuit = new snarkjs.Circuit(cirDef); + + console.log("NConstrains SMTProcessor: " + circuit.nConstraints); + + tree = await smt.newMemEmptyTrie(); + }); + + it("Should verify an insert to an empty tree", async () => { + const key = bigInt(111); + const value = bigInt(222); + + await testInsert(tree, key, value, circuit); + }); + + it("It should add another element", async () => { + const key = bigInt(333); + const value = bigInt(444); + + await testInsert(tree, key, value, circuit); + }); + + + + it("Should remove an element", async () => { + await testDelete(tree, 111, circuit); + await testDelete(tree, 333, circuit); + }); + + it("Should test convination of adding and removing 3 elements", async () => { + const keys = [bigInt(8), bigInt(9), bigInt(32)]; + const values = [bigInt(88), bigInt(99), bigInt(3232)]; + const tree1 = await smt.newMemEmptyTrie(); + const tree2 = await smt.newMemEmptyTrie(); + const tree3 = await smt.newMemEmptyTrie(); + const tree4 = await smt.newMemEmptyTrie(); + const tree5 = await smt.newMemEmptyTrie(); + const tree6 = await smt.newMemEmptyTrie(); + + await testInsert(tree1,keys[0],values[0], circuit); + await testInsert(tree1,keys[1],values[1], circuit); + await testInsert(tree1,keys[2],values[2], circuit); + + await testInsert(tree2,keys[0],values[0], circuit); + await testInsert(tree2,keys[2],values[2], circuit); + await testInsert(tree2,keys[1],values[1], circuit); + + await testInsert(tree3,keys[1],values[1], circuit); + await testInsert(tree3,keys[0],values[0], circuit); + await testInsert(tree3,keys[2],values[2], circuit); + + await testInsert(tree4,keys[1],values[1], circuit); + await testInsert(tree4,keys[2],values[2], circuit); + await testInsert(tree4,keys[0],values[0], circuit); + + await testInsert(tree5,keys[2],values[2], circuit); + await testInsert(tree5,keys[0],values[0], circuit); + await testInsert(tree5,keys[1],values[1], circuit); + + await testInsert(tree6,keys[2],values[2], circuit); + await testInsert(tree6,keys[1],values[1], circuit); + await testInsert(tree6,keys[0],values[0], circuit); + + + await testDelete(tree1, keys[0], circuit); + await testDelete(tree1, keys[1], circuit); + await testDelete(tree2, keys[1], circuit); + await testDelete(tree2, keys[0], circuit); + + await testDelete(tree3, keys[0], circuit); + await testDelete(tree3, keys[2], circuit); + await testDelete(tree4, keys[2], circuit); + await testDelete(tree4, keys[0], circuit); + + + await testDelete(tree5, keys[1], circuit); + await testDelete(tree5, keys[2], circuit); + await testDelete(tree6, keys[2], circuit); + await testDelete(tree6, keys[1], circuit); + + await testDelete(tree1, keys[2], circuit); + await testDelete(tree2, keys[2], circuit); + await testDelete(tree3, keys[1], circuit); + await testDelete(tree4, keys[1], circuit); + await testDelete(tree5, keys[0], circuit); + await testDelete(tree6, keys[0], circuit); + }); + + it("Should match a NOp with random vals", async () => { + let siblings = []; + while (siblings.length<10) siblings.push(bigInt(88)); + const w = circuit.calculateWitness({ + fnc: [0,0], + oldRoot: 11, + siblings: siblings, + oldKey: 33, + oldValue: 44, + isOld0: 55, + newKey: 66, + newValue: 77 + }); + + const root1 = w[circuit.getSignalIdx("main.oldRoot")]; + const root2 = w[circuit.getSignalIdx("main.newRoot")]; + + assert(circuit.checkWitness(w)); + assert(root1.equals(root2)); + + }); + it("Should update an element", async () => { + const tree1 = await smt.newMemEmptyTrie(); + const tree2 = await smt.newMemEmptyTrie(); + + await testInsert(tree1,8,88, circuit); + await testInsert(tree1,9,99, circuit); + await testInsert(tree1,32,3232, circuit); + + await testInsert(tree2,8,888, circuit); + await testInsert(tree2,9,999, circuit); + await testInsert(tree2,32,323232, circuit); + + await testUpdate(tree1, 8, 888, circuit); + await testUpdate(tree1, 9, 999, circuit); + await testUpdate(tree1, 32, 323232, circuit); + }); + +}); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/smtverifier.js b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/smtverifier.js new file mode 100644 index 000000000..49b165c07 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circomlib/test/smtverifier.js @@ -0,0 +1,115 @@ +const chai = require("chai"); +const path = require("path"); +const snarkjs = require("snarkjs"); +const compiler = require("circom"); + +const smt = require("../src/smt.js"); + +const assert = chai.assert; + +const bigInt = snarkjs.bigInt; + +function print(circuit, w, s) { + console.log(s + ": " + w[circuit.getSignalIdx(s)]); +} + +async function testInclusion(tree, key, circuit) { + + const res = await tree.find(key); + + assert(res.found); + let siblings = res.siblings; + while (siblings.length<10) siblings.push(bigInt(0)); + + const w = circuit.calculateWitness({ + enabled: 1, + fnc: 0, + root: tree.root, + siblings: siblings, + oldKey: 0, + oldValue: 0, + isOld0: 0, + key: key, + value: res.foundValue + }); + + assert(circuit.checkWitness(w)); +} + +async function testExclusion(tree, key, circuit) { + const res = await tree.find(key); + + assert(!res.found); + let siblings = res.siblings; + while (siblings.length<10) siblings.push(bigInt(0)); + + const w = circuit.calculateWitness({ + enabled: 1, + fnc: 1, + root: tree.root, + siblings: siblings, + oldKey: res.isOld0 ? 0 : res.notFoundKey, + oldValue: res.isOld0 ? 0 : res.notFoundValue, + isOld0: res.isOld0 ? 1 : 0, + key: key, + value: 0 + }); + + assert(circuit.checkWitness(w)); +} + +describe("SMT test", function () { + let circuit; + let tree; + + this.timeout(100000); + + before( async () => { + const cirDef = await compiler(path.join(__dirname, "circuits", "smtverifier10_test.circom")); + + circuit = new snarkjs.Circuit(cirDef); + + console.log("NConstrains SMTVerifier: " + circuit.nConstraints); + + tree = await smt.newMemEmptyTrie(); + await tree.insert(7,77); + await tree.insert(8,88); + await tree.insert(32,3232); + }); + + it("Check inclussion in a tree of 3", async () => { + await testInclusion(tree, 7, circuit); + await testInclusion(tree, 8, circuit); + await testInclusion(tree, 32, circuit); + }); + + it("Check exclussion in a tree of 3", async () => { + await testExclusion(tree, 0, circuit); + await testExclusion(tree, 6, circuit); + await testExclusion(tree, 9, circuit); + await testExclusion(tree, 33, circuit); + await testExclusion(tree, 31, circuit); + await testExclusion(tree, 16, circuit); + await testExclusion(tree, 64, circuit); + }); + + it("Check not enabled accepts any thing", async () => { + let siblings = []; + for (let i=0; i<10; i++) siblings.push(i); + + const w = circuit.calculateWitness({ + enabled: 0, + fnc: 0, + root: 1, + siblings: siblings, + oldKey: 22, + oldValue: 33, + isOld0: 0, + key: 44, + value: 0 + }); + assert(circuit.checkWitness(w)); + }); + + +}); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circuits/add.circom b/zkrsa/circom-rsa-verify/circom-bigint/circuits/add.circom new file mode 100644 index 000000000..18a51e175 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circuits/add.circom @@ -0,0 +1,59 @@ +include "../circomlib/circuits/bitify.circom" + +template FullAdder(w) { + // An adder which adds 3 w-bit numbers and produces: + // * a w-bit result and + // * a w-bit carry + signal input in0; + signal input in1; + signal input in2; + + signal output sum; + signal output carry; + signal output sumBits[w]; + signal output carryBits[2]; + + signal rawSum; + + rawSum <== in0 + in1 + in2; + + carry <-- rawSum >> w; + sum <-- rawSum % (2 ** w); + rawSum === carry * 2 ** w + sum; + + component sumBitDecomp = Num2Bits(w); + sumBitDecomp.in <== sum; + for (var i = 0; i < w; i++) { + sumBitDecomp.out[i] ==> sumBits[i]; + } + + component carryBitDecomp = Num2Bits(2); + carryBitDecomp.in <== carry; + for (var i = 0; i < 2; i++) { + carryBitDecomp.out[i] ==> carryBits[i]; + } +} + +template RippleCarryAdder(w, nWords) { + // An adder which adds two nWords-word numbers of w-bit words together. + + signal input a[nWords]; + signal input b[nWords]; + + signal output sum[nWords + 1]; + signal carry[nWords + 1]; + + carry[0] <== 0; + + component adder[nWords]; + for (var i = 0; i < nWords; ++i) { + adder[i] = FullAdder(w); + adder[i].in0 <== carry[i]; + adder[i].in1 <== a[i]; + adder[i].in2 <== b[i]; + adder[i].sum ==> sum[i]; + adder[i].carry ==> carry[i + 1]; + } + + sum[nWords] <== carry[nWords]; +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circuits/bigint.circom b/zkrsa/circom-rsa-verify/circom-bigint/circuits/bigint.circom new file mode 100644 index 000000000..950612c36 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circuits/bigint.circom @@ -0,0 +1,5 @@ +include "../circomlib/circuits/bitify.circom"; +include "./add.circom"; +include "./mult.circom"; +include "./pow.circom"; + diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circuits/mimc.circom b/zkrsa/circom-rsa-verify/circom-bigint/circuits/mimc.circom new file mode 100644 index 000000000..d074129e2 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circuits/mimc.circom @@ -0,0 +1,15 @@ +include "../circomlib/circuits/mimc.circom"; + +template MiMC7Compression(nRounds) { + // This is an instantion of the Miyaguchi-Preneel compression mode with the + // MiMC(x^7) block cipher + signal input acc; + signal input data; + + signal output out; + component cipher = MiMC7(nRounds); + cipher.x_in <== data; + cipher.k <== acc; + out <== data + acc + cipher.out; +} + diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circuits/mult.circom b/zkrsa/circom-rsa-verify/circom-bigint/circuits/mult.circom new file mode 100644 index 000000000..2b3e1279e --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circuits/mult.circom @@ -0,0 +1,463 @@ +include "../circomlib/circuits/bitify.circom" + +function log2(x) { + // Given a field element, returns the log2 of it, rounded up. + for (var i = 0; i < x; ++i) { + if (2 ** i >= x) { + return i; + } + } + return x; +} + +template PolynomialMultiplier(d) { + // Implementation of _xjSnark_'s multiplication. + // Polynomials with degree less than d. + // Uses a linear number of constraints ($2n - 1$). + // Based on the linear indepedence of $2n - 1$ equations. + // + // $x$ is `a` + // $y$ is `b` + signal input a[d]; + signal input b[d]; + + // Witness value. + signal output prod[2 * d - 1]; + + component inner = AsymmetricPolynomialMultiplier(d, d); + for (var i = 0; i < d; ++i) { + inner.in0[i] <-- a[i]; + inner.in1[i] <-- b[i]; + } + for (var i = 0; i < 2 * d - 1; ++i) { + inner.out[i] --> prod[i]; + } +} + +template AsymmetricPolynomialMultiplier(d0, d1) { + // Implementation of _xjSnark_'s multiplication. + // Parameters/Inputs: + // * `in0` with degree less than `d0` + // * `in1` with degree less than `d1` + // Uses a linear number of constraints ($d0 + d1 - 1$). + signal input in0[d0]; + signal input in1[d1]; + + // Output has degree less than `d` + var d = d0 + d1 - 1; + + // Witness value. + signal output out[d]; + + // Witness computation. + compute { + var acc; + for (var i = 0; i < d; i++) { + acc = 0; + var start = 0; + if (d1 < i + 1) { + start = i + 1 - d1; + } + for (var j = start; j < d0 && j <= i; j++) { + var k = i - j; + acc += in0[j] * in1[k]; + } + out[i] <-- acc; + } + } + + // Conditions. + var in0Val; + var in1Val; + var outVal; + for (var c = 0; c < d; c++) { + in0Val = 0; + in1Val = 0; + outVal = 0; + for (var i = 0; i < d0; i++) { + in0Val += (c + 1) ** i * in0[i]; + } + for (var i = 0; i < d1; i++) { + in1Val += (c + 1) ** i * in1[i]; + } + for (var i = 0; i < d; i++) { + outVal += (c + 1) ** i * out[i]; + } + in0Val * in1Val === outVal; + } +} + +template Carry(w, n) { + // Given a 2w-bit, n-word number + // produces the (n+1)-word number w-bit chunks. + // Asserts that the number actually fits in (n+1) words. + // + // Uses $(2n+1)(w+1)$ constraints + signal input in[n]; + + signal output out[n+1]; + + component outBitDecomps[n]; + component carryBitDecomps[n]; + + signal carry[n+1]; + + carry[0] <-- 0; + + for (var i = 0; i < n; i++) { + out[i] <-- (in[i] + carry[i]) % (2 ** w); + carry[i + 1] <-- (in[i] + carry[i]) \ (2 ** w); + + // Verify we've split correctly + carry[i + 1] * (2 ** w) + out[i] === carry[i] + in[i]; + + // Verify our parts fit in w bits. + outBitDecomps[i] = Num2Bits(w); + outBitDecomps[i].in <-- out[i]; + carryBitDecomps[i] = Num2Bits(w + 1); + carryBitDecomps[i].in <-- carry[i + 1]; + } + + // The final carry is our final word + out[n] <-- carry[n]; +} + +template EqualWhenCarried(wordMax, outWidth, n) { + // Given two (overflowing) n-chunk integers asserts: + // that they fir properly in n+1 chunks AND + // that they're equal + // Params: + // wordMax: an upper bound on all input words + // outWidth: the desired output width + // n: the number of chunks in the inputs + // Constraints: + // $n$ constraints for carry + output sums + // $(n-1)(ceil(log2(2wordMax)) - w)$ contraints for bit decompositions + // + // $(n - 1)(ceil(log2(wordMax)) - w + 2) + 1$ in total + + // The naive approach is to add the two numbers chunk by chunk and: + // a. Verify that they sum to zero along the way while + // b. Propegating carries + // but this doesn't work because early sums might be negative. + // So instead we choose a special c and verify that a - b + c = c + // where c is chosen to insure that intermediate sums are non-negative. + + signal input a[n]; + signal input b[n]; + + component carryBitDecomps[n - 1]; + signal carry[n + 1]; + signal out[n]; + + var carryBits = log2(2 * wordMax) - outWidth; + var outBase = 2 ** outWidth; + var accumulatedExtra = 0; + + carry[0] <-- 0; + + for (var i = 0; i < n; i++) { + // We add an extra (wordMax) to the carry to ensure that it is positive + out[i] <--(a[i] - b[i] + carry[i] + wordMax) % outBase; + + carry[i + 1] <-- (a[i] - b[i] + carry[i] + wordMax) \ outBase; + + // Verify we've split correctly + carry[i + 1] * outBase + out[i] === carry[i] + a[i] - b[i] + wordMax; + + // Verify that the output is correct + accumulatedExtra += wordMax; + out[i] === accumulatedExtra % outBase; + accumulatedExtra = accumulatedExtra \ outBase; + + // Verify that our carry fits in `carryBits` bits + if (i < n - 1) { + carryBitDecomps[i] = Num2Bits(carryBits); + carryBitDecomps[i].in <-- carry[i + 1]; + } else { + // The final carry should match the extra + carry[i + 1] === accumulatedExtra; + } + } +} + +template Regroup(w, n, g) { + // Given base-w, n-chunk integers, regroups them such that up to g groups go together + var nGroups = (n - 1) \ g + 1; + signal input in[n]; + signal output out[nGroups]; + + for (var i = 0; i < nGroups; ++i) { + var lc = 0; + for (var j = 0; j < g && i * g + j < n; ++j) { + lc += (2 ** (w * j)) * in[i * g + j]; + } + out[i] <-- lc; + } +} + +template EqualWhenCarriedRegroup(wordMax, outWidth, n) { + // Given two (overflowing) n-chunk integers asserts: + // that they fir properly in n+1 chunks AND + // that they're equal + // Params: + // wordMax: an upper bound on all input words + // outWidth: the desired output width + // n: the number of chunks in the inputs + // Constraints: + // $(nGroups - 1)(ceil(log2(groupMax)) - outWidth + 2) + 1$ + // ~ + // $(ceil(n/chunksPerGroup) - 1)(ceil(log2(groupMax)) - w + 2) + 1$ + // $(ceil(n/floor((252 - carryBits) / outWidth)) - 1)(ceil(log2(groupMax)) - w + 2) + 1$ + // $(ceil(n/floor((251 - ceil(log2(wordMax)) + outWidth) / outWidth)) - 1)(ceil(log2(groupMax)) - w + 2) + 1$ + + // The naive approach is to add the two numbers chunk by chunk and: + // a. Verify that they sum to zero along the way while + // b. Propegating carries + // but this doesn't work because early sums might be negative. + // So instead we choose a special c and verify that a - b + c = c + // where c is chosen to insure that intermediate sums are non-negative. + + signal input a[n]; + signal input b[n]; + + var carryBits = log2(2 * wordMax) - outWidth; + var outBase = 2 ** outWidth; + var chunksPerGroup = (252 - carryBits) \ outWidth; + var nGroups = (n - 1) \ chunksPerGroup + 1; + var groupMax = 0; + for (var i = 0; i < chunksPerGroup; ++i) { + groupMax += 2 ** (outWidth * i) * wordMax; + } + + // Group a, b + component aGrouper = Regroup(outWidth, n, chunksPerGroup); + component bGrouper = Regroup(outWidth, n, chunksPerGroup); + + for (var i = 0; i < n; ++i) { + aGrouper.in[i] <-- a[i]; + bGrouper.in[i] <-- b[i]; + } + + // Now, check carries + component equality = EqualWhenCarried(groupMax, outWidth * chunksPerGroup, nGroups); + + + for (var i = 0; i < nGroups; ++i) { + equality.a[i] <-- aGrouper.out[i]; + equality.b[i] <-- bGrouper.out[i]; + } +} + +template LinearMultiplier(w, n) { + // Implementation of _xjSnark_'s multiplication for n-word numbers. + // + // Uses $2n - 1$ constraints for polynomial multiplication. + // Uses $2nw + n + w$ carrying + // For a total of $2nw + 4n + w - 1$ constraints. + + signal input a[n]; + signal input b[n]; + + signal output prod[2 * n]; + + component polyMultiplier = PolynomialMultiplier(n); + component carrier = Carry(w, 2 * n - 1); + + // Put our inputs into the polynomial multiplier + for (var i = 0; i < n; i++) { + polyMultiplier.a[i] <-- a[i]; + polyMultiplier.b[i] <-- b[i]; + } + + // Put the polynomial product into the carrier + for (var i = 0; i < 2 * n - 1; i++) { + carrier.in[i] <-- polyMultiplier.prod[i]; + } + + // Take the carrier output as our own + for (var i = 0; i < 2 * n; i++) { + prod[i] <-- carrier.out[i]; + } +} + +template LinearMultiplierWithAdd(w, n) { + // Implementation of _xjSnark_'s multiplication for n-word numbers. + // + // a * b + c == prod + // + // Uses $2n - 1$ constraints for polynomial multiplication. + // Uses $2n(w + 1)$ for bit decomposition of the result. + // Uses $2n - 1$ constraints for bit decomposition. + // For a total of $2nw + 4n + w - 1$ constraints. + + signal input a[n]; + signal input b[n]; + signal input c[n]; + + signal output prod[2 * n]; + + component polyMultiplier = PolynomialMultiplier(n); + component carrier = Carry(w, 2 * n - 1); + + // Put our inputs into the polynomial multiplier + for (var i = 0; i < n; i++) { + polyMultiplier.a[i] <-- a[i]; + polyMultiplier.b[i] <-- b[i]; + } + + // Put the polynomial product into the carrier + for (var i = 0; i < 2 * n - 1; i++) { + if (i < n) { + carrier.in[i] <-- polyMultiplier.prod[i] + c[i]; + } else { + carrier.in[i] <-- polyMultiplier.prod[i]; + } + } + + // Take the carrier output as our own + for (var i = 0; i < 2 * n; i++) { + prod[i] <-- carrier.out[i]; + } +} + +template MultiplierReducer(w, n) { + // Computes prod and verifies that `prod = a * b (mod modulus) + // Constraints: + // $2(2n - 1)$ for two polynomial multipliers + // $(2n - 2)(w + 2 + ceil(log2(2n - 1))) + 1$ for the carried equality + // $2(nw)$ for the product and modulus decompositions + // Total: + // 2n(2w + ceil(log2(n)) + 5) - 2w - 7 + signal input a[n]; + signal input b[n]; + signal input modulus[n]; + + signal output prod[n]; + + component inner = AsymmetricMultiplierReducer(w, n, n); + for (var i = 0; i < n; ++i) { + inner.in0[i] <-- a[i]; + inner.in1[i] <-- b[i]; + inner.modulus[i] <-- modulus[i]; + } + for (var i = 0; i < n; ++i) { + inner.prod[i] --> prod[i]; + } +} + +template AsymmetricMultiplierReducer(w, n1, n2) { + // Computes prod and verifies that `out = in0 * in1 (mod `modulus`) + // Constraints: + // $2(2n - 1)$ for two polynomial multipliers + // $(2n - 2)(w + 2 + ceil(log2(2n - 1))) + 1$ for the carried equality + // $2(nw)$ for the product and modulus decompositions + // Total: + // (n1 + n2)(2w + ceil(log2(min(n1, n2))) + 5) - 2w - 7 + signal input in0[n1]; + signal input in1[n2]; + signal input modulus[n1]; + + signal quotient[n2]; + + signal output prod[n1]; + + compute { + int in0Val = int(0); + int in1Val = int(0); + int modVal = int(0); + for (int i = int(0); i < int(n1); i++) { + in0Val += int(in0[i]) << (int(w) * i); + modVal += int(modulus[i]) << (int(w) * i); + } + for (int i = int(0); i < int(n2); i++) { + in1Val += int(in1[i]) << (int(w) * i); + } + int fullProdAcc = in0Val * in1Val; + int quotientAcc = fullProdAcc / modVal; + int prodAcc = fullProdAcc % modVal; + + for (int i = int(0); i < int(n2); ++i) { + quotient[i] <-- field(quotientAcc % int(2 ** w)); + quotientAcc = quotientAcc >> int(w); + } + for (int i = int(0); i < int(n1); ++i) { + prod[i] <-- field(prodAcc % int(2 ** w)); + prodAcc = prodAcc >> int(w); + } + + quotientAcc === int(0); + prodAcc === int(0); + } + + // Verify that the remainder and quotient are w-bits, n-chunks. + component prodDecomp[n1]; + for (var i = 0; i < n1; i++) { + prodDecomp[i] = Num2Bits(w); + prodDecomp[i].in <-- prod[i]; + } + + component quotientDecomp[n2]; + for (var i = 0; i < n2; i++) { + quotientDecomp[i] = Num2Bits(w); + quotientDecomp[i].in <-- quotient[i]; + } + + component left = AsymmetricPolynomialMultiplier(n1, n2); + component right = AsymmetricPolynomialMultiplier(n1, n2); + for (var i = 0; i < n1; ++i) { + left.in0[i] <-- in0[i]; + right.in0[i] <-- modulus[i]; + } + for (var i = 0; i < n2; ++i) { + right.in1[i] <-- quotient[i]; + left.in1[i] <-- in1[i]; + } + + var minN = n1; + if (n2 < n1) { + minN = n2; + } + var n = n1 + n2; + var maxWord = minN * (2 ** w - 1) * (2 ** w - 1) + (2 ** w - 1); + component carry = EqualWhenCarriedRegroup(maxWord, w, n - 1); + for (var i = 0; i < n - 1; ++i) { + if (i < n1) { + carry.a[i] <-- left.out[i]; + carry.b[i] <-- right.out[i] + prod[i]; + } else { + carry.a[i] <-- left.out[i]; + carry.b[i] <-- right.out[i]; + } + } +} + +template MultiProduct(w, modulusChunks, inputChunks, nInputs) { + // Verifies the product of `nInputs` `inputChunks`-chunk nubmers, modulo a + // `modulusChunks`-chunk modulus. + + signal input in[nInputs][inputChunks]; + signal input modulus[modulusChunks]; + + signal output out[modulusChunks]; + + component multiplier[nInputs]; + + for (var i = 0; i < nInputs; ++i) { + multiplier[i] = AsymmetricMultiplierReducer(w, modulusChunks, inputChunks); + for (var j = 0; j < inputChunks; ++j) { + multiplier[i].in1[j] <-- in[i][j]; + } + for (var j = 0; j < modulusChunks; ++j) { + multiplier[i].modulus[j] <-- modulus[j]; + if (i == 0) { + multiplier[i].in0[j] <-- (j == 0 ? 1 : 0); + } else { + multiplier[i].in0[j] <-- multiplier[i - 1].prod[j]; + } + } + } + for (var j = 0; j < modulusChunks; ++j) { + out[j] <-- multiplier[nInputs - 1].prod[j]; + } +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circuits/pow.circom b/zkrsa/circom-rsa-verify/circom-bigint/circuits/pow.circom new file mode 100644 index 000000000..4ba6ab564 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circuits/pow.circom @@ -0,0 +1,72 @@ +include "../circomlib/circuits/bitify.circom" + +template PowerMod(w, nb, ne) { + // Constraints: + // <= 2 * w * ne * (w + 2) * (4nb - 1) + signal input base[nb]; + signal input exp[ne]; + + signal input modulus[nb]; + signal output out[nb]; + + component powerBinExp = PowerModBin(w, nb, ne * w); + + component expDecomp[ne]; + for (var i = 0; i < nb; ++i) { + powerBinExp.base[i] <== base[i]; + powerBinExp.modulus[i] <== modulus[i]; + } + for (var i = 0; i < ne; ++i) { + expDecomp[i] = Num2Bits(w); + expDecomp[i].in <== exp[i]; + for (var j = 0; j < w; ++j) { + powerBinExp.binaryExp[i * w + j] <== expDecomp[i].out[j]; + } + } + for (var i = 0; i < nb; ++i) { + out[i] <== powerBinExp.out[i]; + } +} + +template PowerModBin(w, nb, bitsExp) { + // + // Constraints: + // 2 * bitsExp * 2(2nw + 4n - w - 1) for two multipliers per exp bit + // bitsExp * 1 for one ternary per exp bit + // <= 4 * bitsExp * (2nw + 4n - w) total + signal input base[nb]; + signal input binaryExp[bitsExp]; + + signal input modulus[nb]; + signal output out[nb]; + if (bitsExp == 0) { + out[0] <== 1; + for (var i = 1; i < nb; ++i) { + out[i] <== 0; + } + } else { + component recursive = PowerModBin(w, nb, bitsExp - 1); + component square = MultiplierReducer(w, nb); + component mult = MultiplierReducer(w, nb); + for (var i = 0; i < nb; ++i) { + square.modulus[i] <== modulus[i]; + square.a[i] <== base[i]; + square.b[i] <== base[i]; + } + for (var i = 0; i < nb; ++i) { + recursive.base[i] <== square.prod[i]; + recursive.modulus[i] <== modulus[i]; + } + for (var i = 0; i < bitsExp - 1; ++i) { + recursive.binaryExp[i] <== binaryExp[i + 1]; + } + for (var i = 0; i < nb; ++i) { + mult.modulus[i] <== modulus[i]; + mult.a[i] <== base[i]; + mult.b[i] <== recursive.out[i]; + } + for (var i = 0; i < nb; ++i) { + out[i] <== recursive.out[i] + binaryExp[0] * (mult.prod[i] - recursive.out[i]); + } + } +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circuits/quad_mult.circom b/zkrsa/circom-rsa-verify/circom-bigint/circuits/quad_mult.circom new file mode 100644 index 000000000..f286b1351 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circuits/quad_mult.circom @@ -0,0 +1,109 @@ +include "../circomlib/circuits/bitify.circom" + +template WordMultiplier(w) { + signal input a; + signal input b; + + signal output carry; + signal output prod; + + signal rawProduct; + + rawProduct <== a * b; + carry <-- rawProduct >> w; + prod <-- rawProduct % (2 ** w); + rawProduct === carry * 2 ** w + prod; + + component prodBitDecomp = Num2Bits(w); + prodBitDecomp.in <== prod; + + component carryBitDecomp = Num2Bits(w); + carryBitDecomp.in <== carry; + +} + +template WordMultiplierWithCarry(w) { + // Requires w > 1 + signal input a; + signal input b; + signal input carryIn1; + signal input carryIn2; + + signal output carryOut; + signal output prod; + + signal rawProduct; + + rawProduct <== a * b + carryIn1 + carryIn2; + carryOut <-- rawProduct >> w; + prod <-- rawProduct % (2 ** w); + rawProduct === carryOut * 2 ** w + prod; + + component prodBitDecomp = Num2Bits(w); + prodBitDecomp.in <== prod; + + component carryBitDecomp = Num2Bits(w); + carryBitDecomp.in <== carryOut; +} + +template NBy1MultiplierAndAdder(w, n) { + // prod = a * b + c + + signal input a[n]; + signal input b; + + signal input c[n]; + + signal output prod[n+1]; + + signal carry[n + 1]; + + carry[0] <== 0; + + component wordMultiplier[n]; + for (var i = 0; i < n; ++i) { + wordMultiplier[i] = WordMultiplierWithCarry(w); + wordMultiplier[i].a <== a[i]; + wordMultiplier[i].b <== b; + wordMultiplier[i].carryIn1 <== carry[i]; + wordMultiplier[i].carryIn2 <== c[i]; + wordMultiplier[i].carryOut ==> carry[i+1]; + wordMultiplier[i].prod ==> prod[i]; + } + + carry[n] ==> prod[n]; +} + +template Multiplier(w, n) { + // An multiplier for two n-word numbers of w-bit words. + + signal input a[n]; + signal input b[n]; + + signal output prod[2 * n]; + + signal lineProds[n][n + 1]; + component lineMultipliers[n]; + + for (var bi = 0; bi < n; bi++) { + lineMultipliers[bi] = NBy1MultiplierAndAdder(w, n); + for (var ai = 0; ai < n; ai++) { + lineMultipliers[bi].a[ai] <== a[ai]; + if (bi > 0) { + lineMultipliers[bi].c[ai] <== lineProds[bi - 1][ai + 1]; + } else { + lineMultipliers[bi].c[ai] <== 0; + } + } + lineMultipliers[bi].b <== b[bi]; + for (var ai = 0; ai < n + 1; ai++) { + lineMultipliers[bi].prod[ai] ==> lineProds[bi][ai]; + } + } + for (var i = 0; i < n; i++) { + prod[i] <== lineProds[i][0]; + } + for (var i = 1; i < n + 1; i++) { + prod[n - 1 + i] <== lineProds[n - 1][i]; + } +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circuits/rabin.circom b/zkrsa/circom-rsa-verify/circom-bigint/circuits/rabin.circom new file mode 100644 index 000000000..5c439b02f --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circuits/rabin.circom @@ -0,0 +1,68 @@ +include "./bigint.circom" + +template RabinVerifier(w, n) { + // w * n is enough bits to store `sig`. + // Constraints: + // $2(2n - 1)$ for the two polynomial multipliers + // $nw$ to check the bits of x + // $(2n - 2)(w + 2 + ceil(log2(2n - 1))) + 1$ for the carried equality + // Net: + // 2n(1.5w + ceil(log2(n)) + 5) - 2w - 7 + + // Checks: sig * sig == x * pk + msg + + signal input sig[n]; + signal input msg[n]; + signal input pk[n]; + + signal x[n]; + + //Compute the x + compute { + int sigAcc = int(0); + int msgAcc = int(0); + int pkAcc = int(0); + for (int i = int(0); i < int(n); i++) { + sigAcc += int(sig[i]) << (int(w) * i); + msgAcc += int(msg[i]) << (int(w) * i); + pkAcc += int(pk[i]) << (int(w) * i); + } + int xAcc = (sigAcc * sigAcc - msgAcc) / pkAcc; + for (int i = int(0); i < int(n); i++) { + x[i] <-- field(xAcc % int(2 ** w)); + xAcc = xAcc \ int(2 ** w); + } + xAcc === int(0); + } + + // Verify the wordness of x lest our multipliers break + component xBits[n]; + for (var i = 0; i < n; i++) { + xBits[i] = Num2Bits(w); + xBits[i].in <== x[i]; + } + + component left = PolynomialMultiplier(n); + component right = PolynomialMultiplier(n); + + for (var i = 0; i < n; i++) { + left.a[i] <== sig[i]; + left.b[i] <== sig[i]; + right.a[i] <== x[i]; + right.b[i] <== pk[i]; + } + + var maxWord = n * (2 ** w - 1) * (2 ** w - 1) + (2 ** w - 1); + component equality = EqualWhenCarried(maxWord, w, 2 * n - 1); + + for (var i = 0; i < 2 * n - 1; i++) { + if (i < n) { + equality.a[i] <== left.prod[i]; + equality.b[i] <== right.prod[i] + msg[i]; + } else { + equality.a[i] <== left.prod[i]; + equality.b[i] <== right.prod[i]; + } + } + +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circuits/rsa_acc.circom b/zkrsa/circom-rsa-verify/circom-bigint/circuits/rsa_acc.circom new file mode 100644 index 000000000..03b80ca3a --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circuits/rsa_acc.circom @@ -0,0 +1,82 @@ +include "./bigint.circom"; + +template RSAggVerifyDelta(w, nN, nL, ct) { + // quotient * challenge + remainder = prod_i(member[i]) + // witness = digestWithout ** quotient + // check: witness ** challenge * digestWithout ** remainder = digestWith + signal input modulus[nN]; + signal input digestWith[nN]; + signal input digestWithout[nN]; + signal input witness[nN]; + + signal input member[ct][nL]; + signal input challenge[nL]; + + // Initialize the (ct-1) exponent multipliers + component expMult[ct - 1]; + for (var j = 0; j < ct - 1; ++j) { + expMult[j] = MultiplierReducer(w, nL); + + // The challenge is their modulus + for (var i = 0; i < nL; ++i) { + expMult[j].modulus[i] <== challenge[i]; + } + } + + // Connect the first member to the first multiplier + for (var i = 0; i < nL; ++i) { + expMult[0].a[i] <== member[0][i]; + } + + // Wire the rest of the multipliers + for (var j = 1; j < ct; ++j) { + + // Wire in the member + for (var i = 0; i < nL; ++i) { + expMult[j - 1].b[i] <== member[j][i]; + } + + // Pass along the output + if (j != ct - 1) { + for (var i = 0; i < nL; ++i) { + expMult[j].b[i] <== expMult[j - 1].prod[i]; + } + } + } + + // Now, expMult[ct - 2].prod contains `remainder` + + component witnessPower = PowerMod(w, nN, nL); + component remainderPower = PowerMod(w, nN, nL); + component prod = MultiplierReducer(w, nN); + + // Compute witness ** challenge + for (var i = 0; i < nN; ++i) { + witnessPower.modulus[i] <== modulus[i]; + witnessPower.base[i] <== witness[i]; + } + for (var i = 0; i < nL; ++i) { + witnessPower.exp[i] <== challenge[i]; + } + + // Compute digestWithout ** remainder + for (var i = 0; i < nN; ++i) { + remainderPower.base[i] <== digestWithout[i]; + remainderPower.modulus[i] <== modulus[i]; + } + for (var i = 0; i < nL; ++i) { + remainderPower.exp[i] <== expMult[ct - 2].prod[i]; + } + + // Compute the product + for (var i = 0; i < nN; ++i) { + prod.modulus[i] <== modulus[i]; + prod.a[i] <== witnessPower.out[i]; + prod.b[i] <== remainderPower.out[i]; + } + + // Verify + for (var i = 0; i < nN; ++i) { + prod.prod[i] === digestWith[i]; + } +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/circuits/rsa_rollup.circom b/zkrsa/circom-rsa-verify/circom-bigint/circuits/rsa_rollup.circom new file mode 100644 index 000000000..a6a73ae15 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/circuits/rsa_rollup.circom @@ -0,0 +1,251 @@ +// NB: This file is a work in progress. + +include "./rsa_acc.circom"; +include "./mult.circom"; +include "./mimc.circom"; +include "../circomlib/circuits/eddsamimc.circom"; +include "../circomlib/circuits/bitify.circom"; + +template TxHash() { + signal input srcX; // Source pk.x + signal input srcY; // Source pk.y + signal input dstX; // Dest pk.x + signal input dstY; // Dest pk.y + signal input amt; // Amount + signal input srcNo; // Tx Number (for this source) + + signal output out; + + component txHash = MultiMiMC7(6,91); + txHash.in[0] <== srcX; + txHash.in[1] <== srcY; + txHash.in[2] <== dstX; + txHash.in[3] <== dstY; + txHash.in[4] <== amt; + txHash.in[5] <== srcNo; + txHash.out ==> out; +} + +template BalanceHash(w) { + signal input pkX; + signal input pkY; + signal input amt; + signal input txNo; + + var outBits = 1024; + var fieldBits = 254; + + var n = outBits \ w; + + signal output out[n]; + + // # Stage 1: Hashing in the field + // We used a hash to digest + // * public key X + // * public key Y + // * amount + // * tx number + // And then we use a compression function to add in 4 different counters, + // for 4 field element outputs + + signal hash[4]; + component hasher; + hasher = MultiMiMC7(4,91); + hasher.in[0] <== pkX; + hasher.in[1] <== pkY; + hasher.in[2] <== amt; + hasher.in[3] <== txNo; + component counterFolder[4]; + component extractor = Extractor(4, n, w); + for (var i = 0; i < 4; ++i) { + counterFolder[i] = MiMC7Compression(91); + counterFolder[i].data <== i; + counterFolder[i].acc <== hasher.out; + extractor.in[i] <== counterFolder[i].out; + } + + for (var i = 0; i < n; ++i) { + out[i] <== extractor.out[i]; + } + +} + +template Extractor(nIn, nOut, w) { + signal input in[nIn]; + signal output out[nOut]; + + // We're going to build a number like this: + // + // + // 1 bbbbbbb bbbbbbb bbbbbbb bbbbbbb 00000 1 + // + // leading one | h4 bits | h3 bits | h2 bits | h1 bits | zeros | trailing one + // + // where h# indicates hash number #. + // + // The leading one gaurantees 1024bit-ness, and the trailing 1 gaurantees oddness + + var fieldBits = 254; + var nBitsIn = fieldBits * nIn; + var nBitsOut = nOut * w; + var nTrailingZeros; + if (nBitsOut > nBitsIn + 2) { + nTrailingZeros = nBitsOut - nBitsIn - 2; + } else { + nTrailingZeros = 0; + } + + var combination[nOut]; + + component inDecomp[nIn]; + for (var i = 0; i < nIn; ++i) { + inDecomp[i] = Num2Bits_strict(); + inDecomp[i].in <== in[i]; + } + + combination[0] += 1; + // For each input block + for (var i = 0; i < nIn; ++i) { + // For each bit in it + for (var j = 0; j < fieldBits; ++j) { + // Bit index into the output number pictured above + var outI = i * fieldBits + j + nTrailingZeros + 1; + if (outI + 1 < nBitsOut) { + combination[outI \ w] += (2 ** (outI % w)) * inDecomp[i].out[j]; + } + } + } + combination[nOut - 1] += (2 ** (w - 1)); + + for (var i = 0; i < nOut; ++i) { + out[i] <== combination[i]; + } +} + +template RsaRollup(nTx) { + var w = 32; + var nN = 2048 \ w; + var nL = 128 \ w; + var nA = 1024 \ w; + + signal input oldDigest[nN]; // Old state + signal input challengePrimer; // Nonce to make `challenge` prime + signal input challenge; // H(all inputs) + + signal input removeExponent[nL]; + signal input insertExponent[nL]; + + // Signed transaction + signal input txSrcX[nTx]; // Source pk.x + signal input txSrcY[nTx]; // Source pk.y + signal input txDstX[nTx]; // Dest pk.x + signal input txDstY[nTx]; // Dest pk.y + signal input txAmt[nTx]; // Amount + signal input txSrcNo[nTx]; // Tx Number (for this source) + + signal private input R8x[nTx]; // Tx signature + signal private input R8y[nTx]; // Tx signature + signal private input S[nTx]; // Tx signature + + // From the provider + signal private input txDstNo[nTx]; // Tx Number (for this dest) + signal private input txSrcBal[nTx]; // Pre-Tx balance (for this source) + signal private input txDstBal[nTx]; // Pre-Tx balance (for this dest) + + // Verify Signatures + component txHash[nTx]; + component sigVerifier[nTx]; + for (var i = 0; i < nTx; ++i) { + txHash[i] = TxHash(); + txHash[i].srcX <== txSrcX[i]; + txHash[i].srcY <== txSrcY[i]; + txHash[i].dstX <== txDstX[i]; + txHash[i].dstY <== txDstY[i]; + txHash[i].amt <== txAmt[i]; + txHash[i].srcNo <== txSrcNo[i]; + sigVerifier[i] = EdDSAMiMCVerifier(); + sigVerifier[i].enabled <== 1; + sigVerifier[i].Ax <== txSrcX[i]; + sigVerifier[i].Ay <== txSrcY[i]; + sigVerifier[i].R8x <== R8x[i]; + sigVerifier[i].R8y <== R8y[i]; + sigVerifier[i].S <== S[i]; + sigVerifier[i].M <== txHash[i].out; + } + + // (enforce small, positive transfer and balance amounts) + component amtBoundsChk[nTx]; + component newSrcBalBoundsChk[nTx]; + component newDstBalBoundsChk[nTx]; + for (var i = 0; i < nTx; ++i) { + // txSrcBal[i] - txAmt[i] >= 0 + amtBoundsChk[i] = Num2Bits(64); + amtBoundsChk[i].in <== txAmt[i]; + newSrcBalBoundsChk[i] = Num2Bits(64); + newSrcBalBoundsChk[i].in <== txSrcBal[i] - txAmt[i]; + newDstBalBoundsChk[i] = Num2Bits(64); + newDstBalBoundsChk[i].in <== txSrcBal[i] + txAmt[i]; + } + + // Building the balance leaves + component srcBalanceBefore[nTx]; + component dstBalanceBefore[nTx]; + component srcBalanceAfter[nTx]; + component dstBalanceAfter[nTx]; + for (var i = 0; i < nTx; ++i) { + srcBalanceBefore[i] = BalanceHash(w); + dstBalanceBefore[i] = BalanceHash(w); + srcBalanceAfter[i] = BalanceHash(w); + dstBalanceAfter[i] = BalanceHash(w); + + srcBalanceBefore[i].pkX <== txSrcX[i]; + srcBalanceBefore[i].pkY <== txSrcY[i]; + srcBalanceBefore[i].txNo <== txSrcNo[i]; + srcBalanceBefore[i].amt <== txSrcBal[i]; + + dstBalanceBefore[i].pkX <== txDstX[i]; + dstBalanceBefore[i].pkY <== txDstY[i]; + dstBalanceBefore[i].txNo <== txDstNo[i]; + dstBalanceBefore[i].amt <== txDstBal[i]; + + srcBalanceAfter[i].pkX <== txSrcX[i]; + srcBalanceAfter[i].pkY <== txSrcY[i]; + srcBalanceAfter[i].txNo <== txSrcNo[i] + 1; + srcBalanceAfter[i].amt <== txSrcBal[i] - txAmt[i]; + + dstBalanceAfter[i].pkX <== txDstX[i]; + dstBalanceAfter[i].pkY <== txDstY[i]; + dstBalanceAfter[i].txNo <== txDstNo[i]; + dstBalanceAfter[i].amt <== txDstBal[i] + txAmt[i]; + } + + component totalHasher = MultiMiMC7(nTx + nN + 1, 91); + for (var i = 0; i < nTx; ++i) { + totalHasher.in[i] <== txHash[i].out; + } + for (var i = 0; i < nN; ++i) { + totalHasher.in[nTx + i] <== oldDigest[i]; + } + totalHasher.in[nTx + nN] <== challengePrimer; + totalHasher.out === challenge; + + component challengeExtractor = Extractor(1, 4, 32); + challengeExtractor.in[0] <== challenge; + + component removeMultiplier = MultiProduct(32, 4, 32, 2 * nTx); + component insertMultiplier = MultiProduct(32, 4, 32, 2 * nTx); + + for (var i = 0; i < 4; ++i) { + removeMultiplier.modulus[i] <== challengeExtractor.out[i]; + insertMultiplier.modulus[i] <== challengeExtractor.out[i]; + } + + for (var i = 0; i < nTx; ++i) { + for (var j = 0; j < 32; ++j) { + removeMultiplier.in[2 * i][j] <== srcBalanceBefore[i].out[j]; + removeMultiplier.in[2 * i + 1][j] <== dstBalanceBefore[i].out[j]; + insertMultiplier.in[2 * i][j] <== srcBalanceAfter[i].out[j]; + insertMultiplier.in[2 * i + 1][j] <== dstBalanceAfter[i].out[j]; + } + } +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/package-lock.json b/zkrsa/circom-rsa-verify/circom-bigint/package-lock.json new file mode 100644 index 000000000..2caff52ac --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/package-lock.json @@ -0,0 +1,1549 @@ +{ + "name": "circom-bigint", + "version": "0.1.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", + "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/highlight": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", + "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "acorn": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.3.0.tgz", + "integrity": "sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==", + "dev": true + }, + "acorn-jsx": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", + "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==", + "dev": true + }, + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-escapes": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.2.1.tgz", + "integrity": "sha512-Cg3ymMAdN10wOk/VYfLV7KCQyv7EDirJ64500sU7n9UlmioEtDuU5Gd+hj73hXSU/ex7tHJSssmyftDdkMLO8Q==", + "dev": true, + "requires": { + "type-fest": "^0.5.2" + } + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "big-integer": { + "version": "1.6.44", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.44.tgz", + "integrity": "sha512-7MzElZPTyJ2fNvBkPxtFQ2fWIkVmuzw41+BZHSzpEq3ymB2MfeKp1+yXl/tS75xCx+WnyV+yb0kp+K1C3UNwmQ==", + "dev": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "chai": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", + "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", + "dev": true, + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "pathval": "^1.1.0", + "type-detect": "^4.0.5" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true + }, + "circom": { + "version": "github:alex-ozdemir/circom#a5215f6143ea7324f03f78804d8fd1cef64bc7d5", + "from": "github:alex-ozdemir/circom#a5215f6", + "dev": true, + "requires": { + "big-integer": "^1.6.32", + "optimist": "^0.6.1", + "yargs": "^12.0.2" + } + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", + "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.9.1", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^4.0.3", + "eslint-utils": "^1.3.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^5.0.1", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.7.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^6.2.2", + "js-yaml": "^3.13.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.11", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^5.5.1", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.0.tgz", + "integrity": "sha512-7ehnzPaP5IIEh1r1tkjuIrxqhNkzUJa9z3R92tLJdZIVdWaczEhr3EbhGtsMrVxi1KeR8qA7Off6SWc5WNQqyQ==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.0.0" + } + }, + "eslint-visitor-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", + "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", + "dev": true + }, + "espree": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", + "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", + "dev": true, + "requires": { + "acorn": "^6.0.7", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", + "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "dev": true, + "requires": { + "estraverse": "^4.0.0" + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "figures": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.0.0.tgz", + "integrity": "sha512-HKri+WoWoUgr83pehn/SIgLOMZ9nAWC6dcGj26RY2R4F50u4+RTUz0RCrUlOV3nKRAICW1UGzyb+kcX2qK1S/g==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "flatted": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", + "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "import-fresh": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz", + "integrity": "sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "inquirer": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.1.tgz", + "integrity": "sha512-uxNHBeQhRXIoHWTSNYUFhQVrHYFThIt6IVo2fFmSe8aBwdR3/w6b58hJpiL/fMukFkvGzjg+hSxFtwvVmKZmXw==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^2.4.2", + "cli-cursor": "^3.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.15", + "mute-stream": "0.0.8", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^4.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.1.0.tgz", + "integrity": "sha512-NrX+1dVVh+6Y9dnQ19pR0pP4FiEIlUvdTGn8pw6CKTNq5sgib2nIhmUNT5TAmhWmvKr3WcxBcP3E8nWezuipuQ==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^5.2.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "keccak": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-2.0.0.tgz", + "integrity": "sha512-rKe/lRr0KGhjoz97cwg+oeT1Rj/Y4cjae6glArioUC8JBF9ROGZctwIaaruM7d7naovME4Q8WcQSO908A8qcyQ==", + "dev": true, + "requires": { + "bindings": "^1.2.1", + "inherits": "^2.0.3", + "nan": "^2.2.1", + "safe-buffer": "^5.1.0" + } + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } + } + }, + "mocha": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", + "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", + "dev": true, + "requires": { + "browser-stdout": "1.3.1", + "commander": "2.15.1", + "debug": "3.1.0", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.5", + "he": "1.1.1", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "supports-color": "5.4.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" + }, + "dependencies": { + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + } + } + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true + }, + "p-limit": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "pathval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", + "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + }, + "dependencies": { + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "requires": { + "is-promise": "^2.1.0" + } + }, + "rxjs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz", + "integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + } + }, + "snarkjs": { + "version": "0.1.16", + "resolved": "https://registry.npmjs.org/snarkjs/-/snarkjs-0.1.16.tgz", + "integrity": "sha512-BMWWNlPe5YtDHVjR3Yl7YuEQ44BtkuPUNtoCJaSQFKaoXOubhwVWGTYpdA2eQUaHg7eFivCSnEj2NI4u5C68ug==", + "dev": true, + "requires": { + "big-integer": "^1.6.43", + "chai": "^4.2.0", + "escape-string-regexp": "^1.0.5", + "eslint": "^5.16.0", + "keccak": "^2.0.0", + "yargs": "^12.0.5" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "table": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.5.tgz", + "integrity": "sha512-oGa2Hl7CQjfoaogtrOHEJroOcYILTx7BZWLGsJIlzoWmB2zmguhNfPJZsWPKYek/MgCxfco54gEi31d1uN2hFA==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "tslib": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "type-fest": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.5.2.tgz", + "integrity": "sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw==", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/package.json b/zkrsa/circom-rsa-verify/circom-bigint/package.json new file mode 100644 index 000000000..5f1609624 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/package.json @@ -0,0 +1,31 @@ +{ + "name": "circom-bigint", + "version": "0.1.0", + "description": "Implementation of big integers for Circom", + "main": "index.js", + "directories": { + "test": "test" + }, + "scripts": { + "test": "mocha --max-old-space-size=4000 -t 10s" + }, + "keywords": [ + "circuit", + "circom", + "zksnark", + "bigint" + ], + "repository": { + "type": "git", + "url": "https://github.com/iden3/circomlib.git" + }, + "author": "aozdemir", + "license": "GPL-3.0", + "dependencies": {}, + "devDependencies": { + "circom": "alex-ozdemir/circom#a5215f6", + "snarkjs": "^0.1.11", + "mocha": "^5.2.0", + "chai": "^4.1.0" + } +} diff --git a/zkrsa/circom-rsa-verify/circom-bigint/test/add.js b/zkrsa/circom-rsa-verify/circom-bigint/test/add.js new file mode 100644 index 000000000..c83a2fea0 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/test/add.js @@ -0,0 +1,204 @@ +const chai = require("chai"); +const path = require("path"); +const snarkjs = require("snarkjs"); + +const compiler = require("circom"); + + +const assert = chai.assert; +chai.should(); + +describe("FullAdder", () => { + var fullAdder8; + var fullAdder32; + var fullAdder64; + + before(async () => { + fullAdder8 = await compiler(path.join(__dirname, "circuits", "full_adder_8.circom")); + fullAdder32 = await compiler(path.join(__dirname, "circuits", "full_adder_32.circom")); + fullAdder64 = await compiler(path.join(__dirname, "circuits", "full_adder_64.circom")); + }); + + it("should have 13 constraints (8bit)", async () => { + + const circuit = new snarkjs.Circuit(fullAdder8); + + circuit.nConstraints.should.equal(13); + }); + + it("should add small numbers (8bit)", async () => { + + + const circuit = new snarkjs.Circuit(fullAdder8); + + const witness = circuit.calculateWitness({ "in0": "5", "in1": "12", "in2": "1" }); + + assert(witness[0].equals(snarkjs.bigInt(1))); // One + assert(witness[1].equals(snarkjs.bigInt(18))); // Sum + assert(witness[2].equals(snarkjs.bigInt(0))); // Carry + + assert(witness[3].equals(snarkjs.bigInt(0))); // Sum LSB + assert(witness[4].equals(snarkjs.bigInt(1))); + assert(witness[5].equals(snarkjs.bigInt(0))); + assert(witness[6].equals(snarkjs.bigInt(0))); + assert(witness[7].equals(snarkjs.bigInt(1))); + assert(witness[8].equals(snarkjs.bigInt(0))); + assert(witness[9].equals(snarkjs.bigInt(0))); + assert(witness[10].equals(snarkjs.bigInt(0))); + + assert(witness[11].equals(snarkjs.bigInt(0))); // Carry LSB + assert(witness[12].equals(snarkjs.bigInt(0))); + + assert(witness[13].equals(snarkjs.bigInt(5))); // in0 + assert(witness[14].equals(snarkjs.bigInt(12))); // in1 + assert(witness[15].equals(snarkjs.bigInt(1))); // in2 + + assert(witness[16].equals(snarkjs.bigInt(18))); // rawSum + }); + + it("should handle a single carry over (8bit)", async () => { + + + const circuit = new snarkjs.Circuit(fullAdder8); + + const witness = circuit.calculateWitness({ "in0": "255", "in1": "254", "in2": "0" }); + + assert(witness[0].equals(snarkjs.bigInt(1))); // One + assert(witness[1].equals(snarkjs.bigInt(253))); // Sum + assert(witness[2].equals(snarkjs.bigInt(1))); // Carry + + assert(witness[3].equals(snarkjs.bigInt(1))); // Sum LSB + assert(witness[4].equals(snarkjs.bigInt(0))); + assert(witness[5].equals(snarkjs.bigInt(1))); + assert(witness[6].equals(snarkjs.bigInt(1))); + assert(witness[7].equals(snarkjs.bigInt(1))); + assert(witness[8].equals(snarkjs.bigInt(1))); + assert(witness[9].equals(snarkjs.bigInt(1))); + assert(witness[10].equals(snarkjs.bigInt(1))); + + assert(witness[11].equals(snarkjs.bigInt(1))); // Carry LSB + assert(witness[12].equals(snarkjs.bigInt(0))); + }); + + it("should handle a double carry over (8bit)", async () => { + + + const circuit = new snarkjs.Circuit(fullAdder8); + + const witness = circuit.calculateWitness({ "in0": "255", "in1": "254", "in2": "3" }); + + assert(witness[0].equals(snarkjs.bigInt(1))); // One + assert(witness[1].equals(snarkjs.bigInt(0))); // Sum + assert(witness[2].equals(snarkjs.bigInt(2))); // Carry + + assert(witness[3].equals(snarkjs.bigInt(0))); // Sum LSB + assert(witness[4].equals(snarkjs.bigInt(0))); + assert(witness[5].equals(snarkjs.bigInt(0))); + assert(witness[6].equals(snarkjs.bigInt(0))); + assert(witness[7].equals(snarkjs.bigInt(0))); + assert(witness[8].equals(snarkjs.bigInt(0))); + assert(witness[9].equals(snarkjs.bigInt(0))); + assert(witness[10].equals(snarkjs.bigInt(0))); + + assert(witness[11].equals(snarkjs.bigInt(0))); // Carry LSB + assert(witness[12].equals(snarkjs.bigInt(1))); + }); + + it("should handle a single carry (64bit)", async () => { + + + const circuit = new snarkjs.Circuit(fullAdder64); + + const witness = circuit.calculateWitness({ "in0": "18446744073709551615", "in1": "4294967296", "in2": "1" }); + + assert(witness[0].equals(snarkjs.bigInt(1))); // One + assert(witness[1].equals(snarkjs.bigInt("4294967296"))); // Sum + assert(witness[2].equals(snarkjs.bigInt("1"))); // Carry + }); + + it("should handle a single carry (32bit)", async () => { + + + const circuit = new snarkjs.Circuit(fullAdder32); + + const witness = circuit.calculateWitness({ "in0": "4294967295", "in1": "4294967295", "in2": "1" }); + + assert(witness[0].equals(snarkjs.bigInt(1))); // One + assert(witness[1].equals(snarkjs.bigInt("4294967295"))); // Sum + assert(witness[2].equals(snarkjs.bigInt("1"))); // Carry + }); + +}); + +describe("RippleCarryAdder", () => { + var rcAdder42; + + before(async () => { + rcAdder42 = await compiler(path.join(__dirname, "circuits", "rcadder_4bits_2words.circom")); + }); + + it("should be compilable", async () => { + new snarkjs.Circuit(rcAdder42); + }); + + it("should have 13 constraints (4 bits, 2 words)", async () => { + + const circuit = new snarkjs.Circuit(rcAdder42); + + circuit.nConstraints.should.equal(13); + }); + + it("should compute 0 + 0 (4 bits, 2 words)", async () => { + + + const circuit = new snarkjs.Circuit(rcAdder42); + const witness = circuit.calculateWitness({ + "a[0]": "0", + "a[1]": "0", + "b[0]": "0", + "b[1]": "0" + }); + + assert(witness[0].equals(snarkjs.bigInt(1))); // One + assert(witness[1].equals(snarkjs.bigInt(0))); // sum[0] + assert(witness[2].equals(snarkjs.bigInt(0))); // sum[1] + assert(witness[3].equals(snarkjs.bigInt(0))); // sum[2] + + }); + + it("should compute 16 + 0 (4 bits, 2 words)", async () => { + + + const circuit = new snarkjs.Circuit(rcAdder42); + const witness = circuit.calculateWitness({ + "a[0]": "0", + "a[1]": "1", + "b[0]": "0", + "b[1]": "0" + }); + + assert(witness[0].equals(snarkjs.bigInt(1))); // One + assert(witness[1].equals(snarkjs.bigInt(0))); // sum[0] + assert(witness[2].equals(snarkjs.bigInt(1))); // sum[1] + assert(witness[3].equals(snarkjs.bigInt(0))); // sum[2] + + }); + + it("should compute 2,1 + 15,15 (4 bits, 2 words)", async () => { + + const circuit = new snarkjs.Circuit(rcAdder42); + const witness = circuit.calculateWitness({ + "a[0]": "1", + "a[1]": "2", + "b[0]": "15", + "b[1]": "15" + }); + + assert(witness[0].equals(snarkjs.bigInt(1))); // One + assert(witness[1].equals(snarkjs.bigInt(0))); // sum[0] + assert(witness[2].equals(snarkjs.bigInt(2))); // sum[1] + assert(witness[3].equals(snarkjs.bigInt(1))); // sum[2] + + }); +}); + diff --git a/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/asymm_mult_reduce_128_1024_32b.circom b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/asymm_mult_reduce_128_1024_32b.circom new file mode 100644 index 000000000..280bb9dbf --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/asymm_mult_reduce_128_1024_32b.circom @@ -0,0 +1,3 @@ +include "../../circuits/bigint.circom" + +component main = AsymmetricMultiplierReducer(32, 4, 32); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/asymm_poly_2_5.circom b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/asymm_poly_2_5.circom new file mode 100644 index 000000000..e15d32df4 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/asymm_poly_2_5.circom @@ -0,0 +1,3 @@ +include "../../circuits/bigint.circom" + +component main = AsymmetricPolynomialMultiplier(2, 5); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/balance_hash.circom b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/balance_hash.circom new file mode 100644 index 000000000..61529cbd0 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/balance_hash.circom @@ -0,0 +1,5 @@ +include "../../circuits/rsa_rollup.circom" + +component main = BalanceHash(32); + + diff --git a/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/carry_3_4.circom b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/carry_3_4.circom new file mode 100644 index 000000000..f34078bfd --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/carry_3_4.circom @@ -0,0 +1,3 @@ +include "../../circuits/bigint.circom" + +component main = Carry(3,4); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/equal_when_carried_32bit_16word.circom b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/equal_when_carried_32bit_16word.circom new file mode 100644 index 000000000..16119a660 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/equal_when_carried_32bit_16word.circom @@ -0,0 +1,3 @@ +include "../../circuits/bigint.circom" + +component main = EqualWhenCarried(2 ** 64, 32, 16); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/full_adder_32.circom b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/full_adder_32.circom new file mode 100644 index 000000000..2b89d5225 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/full_adder_32.circom @@ -0,0 +1,3 @@ +include "../../circuits/bigint.circom" + +component main = FullAdder(32); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/full_adder_64.circom b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/full_adder_64.circom new file mode 100644 index 000000000..83c5115c7 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/full_adder_64.circom @@ -0,0 +1,3 @@ +include "../../circuits/bigint.circom" + +component main = FullAdder(64); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/full_adder_8.circom b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/full_adder_8.circom new file mode 100644 index 000000000..6cb6d8439 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/full_adder_8.circom @@ -0,0 +1,3 @@ +include "../../circuits/bigint.circom" + +component main = FullAdder(8); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/linmult_4bit_2word.circom b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/linmult_4bit_2word.circom new file mode 100644 index 000000000..5d08c9d3f --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/linmult_4bit_2word.circom @@ -0,0 +1,3 @@ +include "../../circuits/bigint.circom" + +component main = LinearMultiplier(4, 2); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/linmult_64bit_32word.circom b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/linmult_64bit_32word.circom new file mode 100644 index 000000000..49ef11574 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/linmult_64bit_32word.circom @@ -0,0 +1,3 @@ +include "../../circuits/bigint.circom" + +component main = LinearMultiplier(64, 32); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/linmult_64bit_8word.circom b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/linmult_64bit_8word.circom new file mode 100644 index 000000000..09f419b03 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/linmult_64bit_8word.circom @@ -0,0 +1,3 @@ +include "../../circuits/bigint.circom" + +component main = LinearMultiplier(64, 8); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/mult_4bit_2word.circom b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/mult_4bit_2word.circom new file mode 100644 index 000000000..91ab8a3dc --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/mult_4bit_2word.circom @@ -0,0 +1,3 @@ +include "../../circuits/quad_mult.circom" + +component main = Multiplier(4, 2); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/mult_reduce_12.circom b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/mult_reduce_12.circom new file mode 100644 index 000000000..649769120 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/mult_reduce_12.circom @@ -0,0 +1,3 @@ +include "../../circuits/bigint.circom" + +component main = MultiplierReducer(4, 3); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/mult_reduce_2048.circom b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/mult_reduce_2048.circom new file mode 100644 index 000000000..0fdf82457 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/mult_reduce_2048.circom @@ -0,0 +1,3 @@ +include "../../circuits/bigint.circom" + +component main = MultiplierReducer(64, 32); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/mult_reduce_2048_16b.circom b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/mult_reduce_2048_16b.circom new file mode 100644 index 000000000..11becc179 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/mult_reduce_2048_16b.circom @@ -0,0 +1,3 @@ +include "../../circuits/bigint.circom" + +component main = MultiplierReducer(16, 128); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/mult_reduce_2048_32b.circom b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/mult_reduce_2048_32b.circom new file mode 100644 index 000000000..a27ef4437 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/mult_reduce_2048_32b.circom @@ -0,0 +1,3 @@ +include "../../circuits/bigint.circom" + +component main = MultiplierReducer(32, 64); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/mult_reduce_256.circom b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/mult_reduce_256.circom new file mode 100644 index 000000000..7dcb2cc78 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/mult_reduce_256.circom @@ -0,0 +1,3 @@ +include "../../circuits/bigint.circom" + +component main = MultiplierReducer(64, 4); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/multiprod_128_1024_4in_32b.circom b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/multiprod_128_1024_4in_32b.circom new file mode 100644 index 000000000..46023cc2d --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/multiprod_128_1024_4in_32b.circom @@ -0,0 +1,4 @@ +include "../../circuits/bigint.circom" + +component main = MultiProduct(32, 4, 32, 4); + diff --git a/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/n_by_1_mult_4bit_2word.circom b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/n_by_1_mult_4bit_2word.circom new file mode 100644 index 000000000..649b20b4b --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/n_by_1_mult_4bit_2word.circom @@ -0,0 +1,3 @@ +include "../../circuits/quad_mult.circom" + +component main = NBy1MultiplierAndAdder(4, 2); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/polymult_d32.circom b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/polymult_d32.circom new file mode 100644 index 000000000..f37df72f8 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/polymult_d32.circom @@ -0,0 +1,3 @@ +include "../../circuits/bigint.circom" + +component main = PolynomialMultiplier(32); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/polymult_d4.circom b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/polymult_d4.circom new file mode 100644 index 000000000..243ae0a63 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/polymult_d4.circom @@ -0,0 +1,3 @@ +include "../../circuits/bigint.circom" + +component main = PolynomialMultiplier(4); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/power_2048_256.circom b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/power_2048_256.circom new file mode 100644 index 000000000..aa41ee01c --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/power_2048_256.circom @@ -0,0 +1,3 @@ +include "../../circuits/bigint.circom" + +component main = PowerMod(64, 32, 4); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/power_small.circom b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/power_small.circom new file mode 100644 index 000000000..6255be2c1 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/power_small.circom @@ -0,0 +1,3 @@ +include "../../circuits/bigint.circom" + +component main = PowerMod(4, 2, 1); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/quotient_64bit_8word.circom b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/quotient_64bit_8word.circom new file mode 100644 index 000000000..110100996 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/quotient_64bit_8word.circom @@ -0,0 +1,3 @@ +include "../../circuits/bigint.circom" + +component main = Quotient(64, 8); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/rabin_2048.circom b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/rabin_2048.circom new file mode 100644 index 000000000..530c17e36 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/rabin_2048.circom @@ -0,0 +1,3 @@ +include "../../circuits/rabin.circom" + +component main = RabinVerifier(64, 32); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/rcadder_4bits_2words.circom b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/rcadder_4bits_2words.circom new file mode 100644 index 000000000..4ebc77573 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/rcadder_4bits_2words.circom @@ -0,0 +1,3 @@ +include "../../circuits/bigint.circom" + +component main = RippleCarryAdder(4, 2); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/regroup_2_4_2.circom b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/regroup_2_4_2.circom new file mode 100644 index 000000000..873ee127d --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/regroup_2_4_2.circom @@ -0,0 +1,3 @@ +include "../../circuits/bigint.circom" + +component main = Regroup(2, 4, 2); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/rsa_acc_2048_128.circom b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/rsa_acc_2048_128.circom new file mode 100644 index 000000000..9ebc1a301 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/rsa_acc_2048_128.circom @@ -0,0 +1,3 @@ +include "../../circuits/rsa_acc.circom" + +component main = RSAggVerifyDelta(32, 64, 4, 2); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/rsa_acc_small.circom b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/rsa_acc_small.circom new file mode 100644 index 000000000..0b8785f83 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/rsa_acc_small.circom @@ -0,0 +1,3 @@ +include "../../circuits/rsa_acc.circom" + +component main = RSAggVerifyDelta(16, 4, 1, 2); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/rsa_rollup.circom b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/rsa_rollup.circom new file mode 100644 index 000000000..20ddec394 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/rsa_rollup.circom @@ -0,0 +1,4 @@ +include "../../circuits/rsa_rollup.circom" + +component main = RsaRollup(1); + diff --git a/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/word_multiplier_4.circom b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/word_multiplier_4.circom new file mode 100644 index 000000000..298de22b1 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/word_multiplier_4.circom @@ -0,0 +1,3 @@ +include "../../circuits/quad_mult.circom" + +component main = WordMultiplier(4); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/word_multiplier_carry_4.circom b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/word_multiplier_carry_4.circom new file mode 100644 index 000000000..be443791f --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/test/circuits/word_multiplier_carry_4.circom @@ -0,0 +1,3 @@ +include "../../circuits/quad_mult.circom" + +component main = WordMultiplierWithCarry(4); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/test/mult.js b/zkrsa/circom-rsa-verify/circom-bigint/test/mult.js new file mode 100644 index 000000000..94bbebb35 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/test/mult.js @@ -0,0 +1,741 @@ +const chai = require("chai"); +const path = require("path"); +const snarkjs = require("snarkjs"); +const bigInt = require("big-integer"); + +const compiler = require("circom"); + +const { assertWitnessHas, splitToWords, extractExpr } = require("./util.js"); + +const assert = chai.assert; +chai.should(); + +describe("WordMultiplier", () => { + + var cirDef; + + before(async () => { + cirDef = await compiler(path.join(__dirname, "circuits", "word_multiplier_4.circom")); + }); + + it("should be compilable", async () => { + new snarkjs.Circuit(cirDef); + }); + + it("should have 4 + 4 + 1 constraints (4 bits/word)", async () => { + const circuit = new snarkjs.Circuit(cirDef); + circuit.nConstraints.should.equal(4 + 4 + 1); + }); + + it("should compute 15 * 3 = 2,13 (4 bits/word)", async () => { + const circuit = new snarkjs.Circuit(cirDef); + const witness = circuit.calculateWitness({ + "a": "15", + "b": "3", + "prod": "13", + "carry": "2", + }); + assert(witness[circuit.signalName2Idx["main.prod"]].equals(snarkjs.bigInt(13))); + assert(witness[circuit.signalName2Idx["main.carry"]].equals(snarkjs.bigInt(2))); + }); +}); + +describe("WordMultiplierWithCarry", () => { + var cirDef; + + before(async () => { + cirDef = await compiler(path.join(__dirname, "circuits", "word_multiplier_carry_4.circom")); + }); + + it("should be compilable", async () => { + new snarkjs.Circuit(cirDef); + }); + + it("should have 4 + 4 + 1 constraints (4 bits/word)", async () => { + // 2w + 1 + const circuit = new snarkjs.Circuit(cirDef); + circuit.nConstraints.should.equal(4 + 4 + 1); + }); + it("should compute 15 * 3 + 6 = 3,3 (4 bits/word)", async () => { + const circuit = new snarkjs.Circuit(cirDef); + const witness = circuit.calculateWitness({ + "a": "15", + "b": "3", + "carryIn1": 6, + "carryIn2": 0, + }); + assert(witness[circuit.signalName2Idx["main.prod"]].equals(snarkjs.bigInt(3))); + assert(witness[circuit.signalName2Idx["main.carryOut"]].equals(snarkjs.bigInt(3))); + }); + it("should compute 15 * 15 + 15 + 15 = 15,15 (4 bits/word)", async () => { + const circuit = new snarkjs.Circuit(cirDef); + const witness = circuit.calculateWitness({ + "a": "15", + "b": "15", + "carryIn1": 15, + "carryIn2": 15, + }); + assert(witness[circuit.signalName2Idx["main.prod"]].equals(snarkjs.bigInt(15))); + assert(witness[circuit.signalName2Idx["main.carryOut"]].equals(snarkjs.bigInt(15))); + }); +}); + +describe("NBy1Multiplier", () => { + var cirDef; + + before(async () => { + cirDef = await compiler(path.join(__dirname, "circuits", "n_by_1_mult_4bit_2word.circom")); + }); + + it("should be compilable", async () => { + new snarkjs.Circuit(cirDef); + }); + + it("should have 18 constraints", async () => { + // n (2w + 1) + const circuit = new snarkjs.Circuit(cirDef); + circuit.nConstraints.should.equal(18); + }); + + it("should compute 3,3 * 13 = 2,9,7 (4 bits/word, 2 words)", async () => { + const circuit = new snarkjs.Circuit(cirDef); + const witness = circuit.calculateWitness({ + "a[0]": "3", + "a[1]": "3", + "b": "13", + "c[0]" : "0", + "c[1]" : "0", + }); + assert(witness[circuit.signalName2Idx["main.prod[0]"]].equals(snarkjs.bigInt(7))); + assert(witness[circuit.signalName2Idx["main.prod[1]"]].equals(snarkjs.bigInt(9))); + assert(witness[circuit.signalName2Idx["main.prod[2]"]].equals(snarkjs.bigInt(2))); + }); + it("should compute 15,15 * 15 + 15,15 = 15,15,0 (4 bits/word, 2 words)", async () => { + const circuit = new snarkjs.Circuit(cirDef); + const witness = circuit.calculateWitness({ + "a[0]": "15", + "a[1]": "15", + "b": "15", + "c[0]" : "15", + "c[1]" : "15", + }); + assert(witness[circuit.signalName2Idx["main.prod[0]"]].equals(snarkjs.bigInt(0))); + assert(witness[circuit.signalName2Idx["main.prod[1]"]].equals(snarkjs.bigInt(15))); + assert(witness[circuit.signalName2Idx["main.prod[2]"]].equals(snarkjs.bigInt(15))); + }); +}); + +describe("Multiplier", () => { + var cirDef; + + before(async () => { + cirDef = await compiler(path.join(__dirname, "circuits", "mult_4bit_2word.circom")); + }); + + it("should be compilable", async () => { + new snarkjs.Circuit(cirDef); + }); + + it("should have 36 constraints (4 bits/word, 2 words)", async () => { + // n * n * (2w + 1) + const circuit = new snarkjs.Circuit(cirDef); + circuit.nConstraints.should.equal(36); + }); + + it("should compute 1 * 1 = 1 (4 bits/word, 2 words)", async () => { + const circuit = new snarkjs.Circuit(cirDef); + const witness = circuit.calculateWitness({ + "a[0]": "1", + "a[1]": "0", + "b[0]": "1", + "b[1]": "0", + }); + assert(witness[circuit.signalName2Idx["main.prod[0]"]].equals(snarkjs.bigInt(1))); + assert(witness[circuit.signalName2Idx["main.prod[1]"]].equals(snarkjs.bigInt(0))); + assert(witness[circuit.signalName2Idx["main.prod[2]"]].equals(snarkjs.bigInt(0))); + assert(witness[circuit.signalName2Idx["main.prod[3]"]].equals(snarkjs.bigInt(0))); + }); + + it("should compute 1,0 * 1,0 = 1,0,0 (4 bits/word, 2 words)", async () => { + const circuit = new snarkjs.Circuit(cirDef); + const witness = circuit.calculateWitness({ + "a[0]": "0", + "a[1]": "1", + "b[0]": "0", + "b[1]": "1", + }); + assert(witness[circuit.signalName2Idx["main.prod[0]"]].equals(snarkjs.bigInt(0))); + assert(witness[circuit.signalName2Idx["main.prod[1]"]].equals(snarkjs.bigInt(0))); + assert(witness[circuit.signalName2Idx["main.prod[2]"]].equals(snarkjs.bigInt(1))); + assert(witness[circuit.signalName2Idx["main.prod[3]"]].equals(snarkjs.bigInt(0))); + }); + + it("should compute 1,3 * 3,0 = 0,3,9,0 (4 bits/word, 2 words)", async () => { + const circuit = new snarkjs.Circuit(cirDef); + const witness = circuit.calculateWitness({ + "a[0]": "3", + "a[1]": "1", + "b[0]": "0", + "b[1]": "3", + }); + assert(witness[circuit.signalName2Idx["main.prod[0]"]].equals(snarkjs.bigInt(0))); + assert(witness[circuit.signalName2Idx["main.prod[1]"]].equals(snarkjs.bigInt(9))); + assert(witness[circuit.signalName2Idx["main.prod[2]"]].equals(snarkjs.bigInt(3))); + assert(witness[circuit.signalName2Idx["main.prod[3]"]].equals(snarkjs.bigInt(0))); + }); + + it("should compute 3,0 * 1,3 = 0,3,9,0 (4 bits/word, 2 words)", async () => { + const circuit = new snarkjs.Circuit(cirDef); + const witness = circuit.calculateWitness({ + "a[0]": "0", + "a[1]": "3", + "b[0]": "3", + "b[1]": "1", + }); + assert(witness[circuit.signalName2Idx["main.prod[0]"]].equals(snarkjs.bigInt(0))); + assert(witness[circuit.signalName2Idx["main.prod[1]"]].equals(snarkjs.bigInt(9))); + assert(witness[circuit.signalName2Idx["main.prod[2]"]].equals(snarkjs.bigInt(3))); + assert(witness[circuit.signalName2Idx["main.prod[3]"]].equals(snarkjs.bigInt(0))); + }); + + it("should compute 8,7 * 9,3 = 4,13,8,5 (4 bits/word, 2 words)", async () => { + const circuit = new snarkjs.Circuit(cirDef); + const witness = circuit.calculateWitness({ + "a[0]": "7", + "a[1]": "8", + "b[0]": "3", + "b[1]": "9", + }); + assert(witness[circuit.signalName2Idx["main.prod[0]"]].equals(snarkjs.bigInt(5))); + assert(witness[circuit.signalName2Idx["main.prod[1]"]].equals(snarkjs.bigInt(8))); + assert(witness[circuit.signalName2Idx["main.prod[2]"]].equals(snarkjs.bigInt(13))); + assert(witness[circuit.signalName2Idx["main.prod[3]"]].equals(snarkjs.bigInt(4))); + }); + + it("should compute 9,3 * 8,7 = 4,13,8,5 (4 bits/word, 2 words)", async () => { + const circuit = new snarkjs.Circuit(cirDef); + const witness = circuit.calculateWitness({ + "a[0]": "3", + "a[1]": "9", + "b[0]": "7", + "b[1]": "8", + }); + assert(witness[circuit.signalName2Idx["main.prod[0]"]].equals(snarkjs.bigInt(5))); + assert(witness[circuit.signalName2Idx["main.prod[1]"]].equals(snarkjs.bigInt(8))); + assert(witness[circuit.signalName2Idx["main.prod[2]"]].equals(snarkjs.bigInt(13))); + assert(witness[circuit.signalName2Idx["main.prod[3]"]].equals(snarkjs.bigInt(4))); + }); + it("should compute 15,15 * 15,15 = 15,14,0,1 (4 bits/word, 2 words)", async () => { + const circuit = new snarkjs.Circuit(cirDef); + const witness = circuit.calculateWitness({ + "a[0]": "15", + "a[1]": "15", + "b[0]": "15", + "b[1]": "15", + }); + assert(witness[circuit.signalName2Idx["main.prod[0]"]].equals(snarkjs.bigInt(1))); + assert(witness[circuit.signalName2Idx["main.prod[1]"]].equals(snarkjs.bigInt(0))); + assert(witness[circuit.signalName2Idx["main.prod[2]"]].equals(snarkjs.bigInt(14))); + assert(witness[circuit.signalName2Idx["main.prod[3]"]].equals(snarkjs.bigInt(15))); + }); +}); + +describe("PolynomialMultiplier", () => { + var polymult_d4; + var polymult_d32; + + before(async () => { + polymult_d4 = await compiler(path.join(__dirname, "circuits", "polymult_d4.circom")); + polymult_d32 = await compiler(path.join(__dirname, "circuits", "polymult_d32.circom")); + }); + + it("should be compilable", async () => { + new snarkjs.Circuit(polymult_d4); + }); + + it("should have 7 constraints (degree <4)", async () => { + // 2 * d - 1 + const circuit = new snarkjs.Circuit(polymult_d4); + circuit.nConstraints.should.equal(7); + }); + + it("should compute 1 * 1 = 1 (degree <4)", async () => { + const circuit = new snarkjs.Circuit(polymult_d4); + const witness = circuit.calculateWitness({ + "a[0]": "1", + "a[1]": "0", + "a[2]": "0", + "a[3]": "0", + "b[0]": "1", + "b[1]": "0", + "b[2]": "0", + "b[3]": "0", + }); + assert(witness[circuit.signalName2Idx["main.prod[0]"]].equals(snarkjs.bigInt(1))); + assert(witness[circuit.signalName2Idx["main.prod[1]"]].equals(snarkjs.bigInt(0))); + assert(witness[circuit.signalName2Idx["main.prod[2]"]].equals(snarkjs.bigInt(0))); + assert(witness[circuit.signalName2Idx["main.prod[3]"]].equals(snarkjs.bigInt(0))); + assert(witness[circuit.signalName2Idx["main.prod[4]"]].equals(snarkjs.bigInt(0))); + assert(witness[circuit.signalName2Idx["main.prod[5]"]].equals(snarkjs.bigInt(0))); + assert(witness[circuit.signalName2Idx["main.prod[6]"]].equals(snarkjs.bigInt(0))); + }); + + it("should compute 1,0,3 * 3,1 = 3,1,9,3 (degree <4)", async () => { + const circuit = new snarkjs.Circuit(polymult_d4); + const witness = circuit.calculateWitness({ + "a[0]": "3", + "a[1]": "0", + "a[2]": "1", + "a[3]": "0", + "b[0]": "1", + "b[1]": "3", + "b[2]": "0", + "b[3]": "0", + }); + assert(witness[circuit.signalName2Idx["main.prod[0]"]].equals(snarkjs.bigInt(3))); + assert(witness[circuit.signalName2Idx["main.prod[1]"]].equals(snarkjs.bigInt(9))); + assert(witness[circuit.signalName2Idx["main.prod[2]"]].equals(snarkjs.bigInt(1))); + assert(witness[circuit.signalName2Idx["main.prod[3]"]].equals(snarkjs.bigInt(3))); + assert(witness[circuit.signalName2Idx["main.prod[4]"]].equals(snarkjs.bigInt(0))); + assert(witness[circuit.signalName2Idx["main.prod[5]"]].equals(snarkjs.bigInt(0))); + assert(witness[circuit.signalName2Idx["main.prod[6]"]].equals(snarkjs.bigInt(0))); + }); + + it("should compute (3 + 4x + 5x^2 + 6x^3)(9 + 10x + 11x^2 + 12x^3) = 72 x^6 + 126 x^5 + 163 x^4 + 184 x^3 + 118 x^2 + 66 x + 27 (degree <4)", async () => { + const circuit = new snarkjs.Circuit(polymult_d4); + const witness = circuit.calculateWitness({ + "a[0]": "3", + "a[1]": "4", + "a[2]": "5", + "a[3]": "6", + "b[0]": "9", + "b[1]": "10", + "b[2]": "11", + "b[3]": "12", + }); + assert(witness[circuit.signalName2Idx["main.prod[0]"]].equals(snarkjs.bigInt(27))); + assert(witness[circuit.signalName2Idx["main.prod[1]"]].equals(snarkjs.bigInt(66))); + assert(witness[circuit.signalName2Idx["main.prod[2]"]].equals(snarkjs.bigInt(118))); + assert(witness[circuit.signalName2Idx["main.prod[3]"]].equals(snarkjs.bigInt(184))); + assert(witness[circuit.signalName2Idx["main.prod[4]"]].equals(snarkjs.bigInt(163))); + assert(witness[circuit.signalName2Idx["main.prod[5]"]].equals(snarkjs.bigInt(126))); + assert(witness[circuit.signalName2Idx["main.prod[6]"]].equals(snarkjs.bigInt(72))); + }); + + it("should compute a big square (deg <32)", async () => { + const circuit = new snarkjs.Circuit(polymult_d32); + const witness = circuit.calculateWitness({ + "a[0]": "4819187580044832333", + "a[1]": "9183764011217009606", + "a[2]": "11426964127496009747", + "a[3]": "17898263845095661790", + "a[4]": "12102522037140783322", + "a[5]": "4029304176671511763", + "a[6]": "11339410859987005436", + "a[7]": "12120243430436644729", + "a[8]": "2888435820322958146", + "a[9]": "7612614626488966390", + "a[10]": "3872170484348249672", + "a[11]": "9589147526444685354", + "a[12]": "16391157694429928307", + "a[13]": "12256166884204507566", + "a[14]": "4257963982333550934", + "a[15]": "916988490704", + "a[16]": "0", + "a[17]": "0", + "a[18]": "0", + "a[19]": "0", + "a[20]": "0", + "a[21]": "0", + "a[22]": "0", + "a[23]": "0", + "a[24]": "0", + "a[25]": "0", + "a[26]": "0", + "a[27]": "0", + "a[28]": "0", + "a[29]": "0", + "a[30]": "0", + "a[31]": "0", + "b[0]": "4819187580044832333", + "b[1]": "9183764011217009606", + "b[2]": "11426964127496009747", + "b[3]": "17898263845095661790", + "b[4]": "12102522037140783322", + "b[5]": "4029304176671511763", + "b[6]": "11339410859987005436", + "b[7]": "12120243430436644729", + "b[8]": "2888435820322958146", + "b[9]": "7612614626488966390", + "b[10]": "3872170484348249672", + "b[11]": "9589147526444685354", + "b[12]": "16391157694429928307", + "b[13]": "12256166884204507566", + "b[14]": "4257963982333550934", + "b[15]": "916988490704", + "b[16]": "0", + "b[17]": "0", + "b[18]": "0", + "b[19]": "0", + "b[20]": "0", + "b[21]": "0", + "b[22]": "0", + "b[23]": "0", + "b[24]": "0", + "b[25]": "0", + "b[26]": "0", + "b[27]": "0", + "b[28]": "0", + "b[29]": "0", + "b[30]": "0", + "b[31]": "0", + }); + assert(witness[circuit.signalName2Idx["main.prod[0]"]].equals(snarkjs.bigInt( "23224568931658367244754058218082222889"))); + assert(witness[circuit.signalName2Idx["main.prod[1]"]].equals(snarkjs.bigInt( "88516562921839445888640380379840781596"))); + assert(witness[circuit.signalName2Idx["main.prod[2]"]].equals(snarkjs.bigInt( "194478888615417946406783868151393774738"))); + assert(witness[circuit.signalName2Idx["main.prod[3]"]].equals(snarkjs.bigInt( "382395265476432217957523230769986571504"))); + assert(witness[circuit.signalName2Idx["main.prod[4]"]].equals(snarkjs.bigInt( "575971019676008360859069855433378813941"))); + assert(witness[circuit.signalName2Idx["main.prod[5]"]].equals(snarkjs.bigInt( "670174995752918677131397897218932582682"))); + assert(witness[circuit.signalName2Idx["main.prod[6]"]].equals(snarkjs.bigInt( "780239872348808029089572423614905198300"))); + assert(witness[circuit.signalName2Idx["main.prod[7]"]].equals(snarkjs.bigInt( "850410093737715640261630122959874522628"))); + assert(witness[circuit.signalName2Idx["main.prod[8]"]].equals(snarkjs.bigInt( "800314959349304909735238452892956199392"))); + assert(witness[circuit.signalName2Idx["main.prod[9]"]].equals(snarkjs.bigInt( "906862855407309870283714027678210238070"))); + assert(witness[circuit.signalName2Idx["main.prod[10]"]].equals(snarkjs.bigInt( "967727310654811444144097720329196927129"))); + assert(witness[circuit.signalName2Idx["main.prod[11]"]].equals(snarkjs.bigInt( "825671020037461535758117365587238596380"))); + assert(witness[circuit.signalName2Idx["main.prod[12]"]].equals(snarkjs.bigInt( "991281789723902700168027417052185830252"))); + assert(witness[circuit.signalName2Idx["main.prod[13]"]].equals(snarkjs.bigInt( "1259367815833216292413970809061165585320"))); + assert(witness[circuit.signalName2Idx["main.prod[14]"]].equals(snarkjs.bigInt( "1351495628781923848799708082622582598675"))); + assert(witness[circuit.signalName2Idx["main.prod[15]"]].equals(snarkjs.bigInt( "1451028634949220760698564802414695011932"))); + assert(witness[circuit.signalName2Idx["main.prod[16]"]].equals(snarkjs.bigInt( "1290756126635958771067082204577975256756"))); + assert(witness[circuit.signalName2Idx["main.prod[17]"]].equals(snarkjs.bigInt( "936482288980049848345464202850902738826"))); + assert(witness[circuit.signalName2Idx["main.prod[18]"]].equals(snarkjs.bigInt( "886330568585033438612679243731110283692"))); + assert(witness[circuit.signalName2Idx["main.prod[19]"]].equals(snarkjs.bigInt( "823948310509772835433730556487356331346"))); + assert(witness[circuit.signalName2Idx["main.prod[20]"]].equals(snarkjs.bigInt( "649341353489205691855914543942648985328"))); + assert(witness[circuit.signalName2Idx["main.prod[21]"]].equals(snarkjs.bigInt( "497838205323760437611385487609464464168"))); + assert(witness[circuit.signalName2Idx["main.prod[22]"]].equals(snarkjs.bigInt( "430091148520710550273018448938020664564"))); + assert(witness[circuit.signalName2Idx["main.prod[23]"]].equals(snarkjs.bigInt( "474098876922017329965321439330710234148"))); + assert(witness[circuit.signalName2Idx["main.prod[24]"]].equals(snarkjs.bigInt( "536697574159375092388958994084813127393"))); + assert(witness[circuit.signalName2Idx["main.prod[25]"]].equals(snarkjs.bigInt( "483446024935732188792400155524449880972"))); + assert(witness[circuit.signalName2Idx["main.prod[26]"]].equals(snarkjs.bigInt( "289799562463011227421662267162524920264"))); + assert(witness[circuit.signalName2Idx["main.prod[27]"]].equals(snarkjs.bigInt( "104372664369829937912234314161010649544"))); + assert(witness[circuit.signalName2Idx["main.prod[28]"]].equals(snarkjs.bigInt( "18130279752377737976455635841349605284"))); + assert(witness[circuit.signalName2Idx["main.prod[29]"]].equals(snarkjs.bigInt( "7809007931264072381739139035072"))); + assert(witness[circuit.signalName2Idx["main.prod[30]"]].equals(snarkjs.bigInt( "840867892083599894415616"))); + assert(witness[circuit.signalName2Idx["main.prod[31]"]].equals(snarkjs.bigInt( "0"))); + }); +}); + +describe("AsymmetricPolynomialMultiplier", () => { + var asymm_poly_2_5; + + before(async () => { + asymm_poly_2_5 = new snarkjs.Circuit(await compiler(path.join(__dirname, "circuits", "asymm_poly_2_5.circom"))); + }); + + it("should have 6 constraints (degrees 2, 5)", async () => { + // 2 + 5 - 1 + asymm_poly_2_5.nConstraints.should.equal(6); + }); + + it("should compute 1 * 1 = 1 (degrees 2, 5)", async () => { + const input = Object.assign({}, + splitToWords(bigInt("1"), 100, 2, "in0"), + splitToWords(bigInt("1"), 100, 5, "in1"), + ); + const witness = asymm_poly_2_5.calculateWitness(input); + assertWitnessHas(asymm_poly_2_5, witness, "out", bigInt("1"), 100, 6); + }); + + it("should compute 1,1 * 1,1,1 = 1,2,2,1 (degrees 2, 5)", async () => { + const input = { + "in0[0]": "1", + "in0[1]": "1", + "in1[0]": "1", + "in1[1]": "1", + "in1[2]": "1", + "in1[3]": "0", + "in1[4]": "0", + }; + const witness = asymm_poly_2_5.calculateWitness(input); + assert(witness[asymm_poly_2_5.signalName2Idx["main.out[0]"]].equals(snarkjs.bigInt( "1"))); + assert(witness[asymm_poly_2_5.signalName2Idx["main.out[1]"]].equals(snarkjs.bigInt( "2"))); + assert(witness[asymm_poly_2_5.signalName2Idx["main.out[2]"]].equals(snarkjs.bigInt( "2"))); + assert(witness[asymm_poly_2_5.signalName2Idx["main.out[3]"]].equals(snarkjs.bigInt( "1"))); + }); + it("should compute 1,7 * 1,1,1 = 1,8,8,7 (degrees 2, 5)", async () => { + const input = { + "in0[0]": "1", + "in0[1]": "7", + "in1[0]": "1", + "in1[1]": "1", + "in1[2]": "1", + "in1[3]": "0", + "in1[4]": "0", + }; + const witness = asymm_poly_2_5.calculateWitness(input); + assert(witness[asymm_poly_2_5.signalName2Idx["main.out[0]"]].equals(snarkjs.bigInt( "1"))); + assert(witness[asymm_poly_2_5.signalName2Idx["main.out[1]"]].equals(snarkjs.bigInt( "8"))); + assert(witness[asymm_poly_2_5.signalName2Idx["main.out[2]"]].equals(snarkjs.bigInt( "8"))); + assert(witness[asymm_poly_2_5.signalName2Idx["main.out[3]"]].equals(snarkjs.bigInt( "7"))); + }); +}); + +describe("Carry", () => { + var cirDef; + + before(async () => { + cirDef = await compiler(path.join(__dirname, "circuits", "carry_3_4.circom")); + }); + + it("should be compilable", async () => { + new snarkjs.Circuit(cirDef); + }); + + it("should have at most 35 constraints (3 bits, 4 words)", async () => { + // 2nw + 2n + w + // = 24 + 8 + 3 + // = 35 + const circuit = new snarkjs.Circuit(cirDef); + circuit.nConstraints.should.be.at.most(35); + }); + it("should carry 0,0,0,0 into 0,0,0,0,0", async () => { + const circuit = new snarkjs.Circuit(cirDef); + const witness = circuit.calculateWitness({ + "in[0]": "0", + "in[1]": "0", + "in[2]": "0", + "in[3]": "0", + }); + assert(witness[circuit.signalName2Idx["main.out[0]"]].equals(snarkjs.bigInt(0))); + assert(witness[circuit.signalName2Idx["main.out[1]"]].equals(snarkjs.bigInt(0))); + assert(witness[circuit.signalName2Idx["main.out[2]"]].equals(snarkjs.bigInt(0))); + assert(witness[circuit.signalName2Idx["main.out[3]"]].equals(snarkjs.bigInt(0))); + assert(witness[circuit.signalName2Idx["main.out[4]"]].equals(snarkjs.bigInt(0))); + }); + it("should carry 0,0,9,9 into 0,0,1,2,1", async () => { + const circuit = new snarkjs.Circuit(cirDef); + const witness = circuit.calculateWitness({ + "in[0]": "9", + "in[1]": "9", + "in[2]": "0", + "in[3]": "0", + }); + assert(witness[circuit.signalName2Idx["main.out[0]"]].equals(snarkjs.bigInt(1))); + assert(witness[circuit.signalName2Idx["main.out[1]"]].equals(snarkjs.bigInt(2))); + assert(witness[circuit.signalName2Idx["main.out[2]"]].equals(snarkjs.bigInt(1))); + assert(witness[circuit.signalName2Idx["main.out[3]"]].equals(snarkjs.bigInt(0))); + assert(witness[circuit.signalName2Idx["main.out[4]"]].equals(snarkjs.bigInt(0))); + }); + it("should carry 0,0,49,49 into 0,0,6,7,1", async () => { + const circuit = new snarkjs.Circuit(cirDef); + const witness = circuit.calculateWitness({ + "in[0]": "49", + "in[1]": "49", + "in[2]": "0", + "in[3]": "0", + }); + assert(witness[circuit.signalName2Idx["main.out[0]"]].equals(snarkjs.bigInt(1))); + assert(witness[circuit.signalName2Idx["main.out[1]"]].equals(snarkjs.bigInt(7))); + assert(witness[circuit.signalName2Idx["main.out[2]"]].equals(snarkjs.bigInt(6))); + assert(witness[circuit.signalName2Idx["main.out[3]"]].equals(snarkjs.bigInt(0))); + assert(witness[circuit.signalName2Idx["main.out[4]"]].equals(snarkjs.bigInt(0))); + }); + it("should carry 49,49,49,49 into 0,0,6,7,1", async () => { + const circuit = new snarkjs.Circuit(cirDef); + const witness = circuit.calculateWitness({ + "in[0]": "49", + "in[1]": "49", + "in[2]": "49", + "in[3]": "49", + }); + assert(witness[circuit.signalName2Idx["main.out[0]"]].equals(snarkjs.bigInt(1))); + assert(witness[circuit.signalName2Idx["main.out[1]"]].equals(snarkjs.bigInt(7))); + assert(witness[circuit.signalName2Idx["main.out[2]"]].equals(snarkjs.bigInt(7))); + assert(witness[circuit.signalName2Idx["main.out[3]"]].equals(snarkjs.bigInt(7))); + assert(witness[circuit.signalName2Idx["main.out[4]"]].equals(snarkjs.bigInt(6))); + }); +}); + +describe("LinearMultiplier", () => { + + var linmult_4bit_2word; + var linmult_64bit_8word; + var linmult_64bit_32word; + + before(async () => { + linmult_4bit_2word = await compiler(path.join(__dirname, "circuits", "linmult_4bit_2word.circom")); + linmult_64bit_8word = await compiler(path.join(__dirname, "circuits", "linmult_64bit_8word.circom")); + linmult_64bit_32word = await compiler(path.join(__dirname, "circuits", "linmult_64bit_32word.circom")); + }); + + it("should be compilable", async () => { + new snarkjs.Circuit(linmult_4bit_2word); + }); + + it("should have <= 35 constraints (4 bits/word, 2 words)", async () => { + // 2nw + 4n + w - 1 + // = 24 + 8 + 4 - 1 + // = 35 + const circuit = new snarkjs.Circuit(linmult_4bit_2word); + circuit.nConstraints.should.be.at.most(35); + }); + + it("should compute 1 * 1 = 1 (4 bits/word, 2 words)", async () => { + const circuit = new snarkjs.Circuit(linmult_4bit_2word); + const witness = circuit.calculateWitness({ + "a[0]": "1", + "a[1]": "0", + "b[0]": "1", + "b[1]": "0", + }); + assert(witness[circuit.signalName2Idx["main.prod[0]"]].equals(snarkjs.bigInt(1))); + assert(witness[circuit.signalName2Idx["main.prod[1]"]].equals(snarkjs.bigInt(0))); + assert(witness[circuit.signalName2Idx["main.prod[2]"]].equals(snarkjs.bigInt(0))); + assert(witness[circuit.signalName2Idx["main.prod[3]"]].equals(snarkjs.bigInt(0))); + }); + + it("should compute 1,0 * 1,0 = 1,0,0 (4 bits/word, 2 words)", async () => { + const circuit = new snarkjs.Circuit(linmult_4bit_2word); + const witness = circuit.calculateWitness({ + "a[0]": "0", + "a[1]": "1", + "b[0]": "0", + "b[1]": "1", + }); + assert(witness[circuit.signalName2Idx["main.prod[0]"]].equals(snarkjs.bigInt(0))); + assert(witness[circuit.signalName2Idx["main.prod[1]"]].equals(snarkjs.bigInt(0))); + assert(witness[circuit.signalName2Idx["main.prod[2]"]].equals(snarkjs.bigInt(1))); + assert(witness[circuit.signalName2Idx["main.prod[3]"]].equals(snarkjs.bigInt(0))); + }); + + it("should compute 1,3 * 3,0 = 0,3,9,0 (4 bits/word, 2 words)", async () => { + const circuit = new snarkjs.Circuit(linmult_4bit_2word); + const witness = circuit.calculateWitness({ + "a[0]": "3", + "a[1]": "1", + "b[0]": "0", + "b[1]": "3", + }); + assert(witness[circuit.signalName2Idx["main.prod[0]"]].equals(snarkjs.bigInt(0))); + assert(witness[circuit.signalName2Idx["main.prod[1]"]].equals(snarkjs.bigInt(9))); + assert(witness[circuit.signalName2Idx["main.prod[2]"]].equals(snarkjs.bigInt(3))); + assert(witness[circuit.signalName2Idx["main.prod[3]"]].equals(snarkjs.bigInt(0))); + }); + + it("should compute 3,0 * 1,3 = 0,3,9,0 (4 bits/word, 2 words)", async () => { + const circuit = new snarkjs.Circuit(linmult_4bit_2word); + const witness = circuit.calculateWitness({ + "a[0]": "0", + "a[1]": "3", + "b[0]": "3", + "b[1]": "1", + }); + assert(witness[circuit.signalName2Idx["main.prod[0]"]].equals(snarkjs.bigInt(0))); + assert(witness[circuit.signalName2Idx["main.prod[1]"]].equals(snarkjs.bigInt(9))); + assert(witness[circuit.signalName2Idx["main.prod[2]"]].equals(snarkjs.bigInt(3))); + assert(witness[circuit.signalName2Idx["main.prod[3]"]].equals(snarkjs.bigInt(0))); + }); + + it("should compute 8,7 * 9,3 = 4,13,8,5 (4 bits/word, 2 words)", async () => { + const circuit = new snarkjs.Circuit(linmult_4bit_2word); + const witness = circuit.calculateWitness({ + "a[0]": "7", + "a[1]": "8", + "b[0]": "3", + "b[1]": "9", + }); + assert(witness[circuit.signalName2Idx["main.prod[0]"]].equals(snarkjs.bigInt(5))); + assert(witness[circuit.signalName2Idx["main.prod[1]"]].equals(snarkjs.bigInt(8))); + assert(witness[circuit.signalName2Idx["main.prod[2]"]].equals(snarkjs.bigInt(13))); + assert(witness[circuit.signalName2Idx["main.prod[3]"]].equals(snarkjs.bigInt(4))); + }); + + it("should compute 9,3 * 8,7 = 4,13,8,5 (4 bits/word, 2 words)", async () => { + const circuit = new snarkjs.Circuit(linmult_4bit_2word); + const witness = circuit.calculateWitness({ + "a[0]": "3", + "a[1]": "9", + "b[0]": "7", + "b[1]": "8", + }); + assert(witness[circuit.signalName2Idx["main.prod[0]"]].equals(snarkjs.bigInt(5))); + assert(witness[circuit.signalName2Idx["main.prod[1]"]].equals(snarkjs.bigInt(8))); + assert(witness[circuit.signalName2Idx["main.prod[2]"]].equals(snarkjs.bigInt(13))); + assert(witness[circuit.signalName2Idx["main.prod[3]"]].equals(snarkjs.bigInt(4))); + }); + it("should compute 15,15 * 15,15 = 15,14,0,1 (4 bits/word, 2 words)", async () => { + const circuit = new snarkjs.Circuit(linmult_4bit_2word); + const witness = circuit.calculateWitness({ + "a[0]": "15", + "a[1]": "15", + "b[0]": "15", + "b[1]": "15", + }); + assert(witness[circuit.signalName2Idx["main.prod[0]"]].equals(snarkjs.bigInt(1))); + assert(witness[circuit.signalName2Idx["main.prod[1]"]].equals(snarkjs.bigInt(0))); + assert(witness[circuit.signalName2Idx["main.prod[2]"]].equals(snarkjs.bigInt(14))); + assert(witness[circuit.signalName2Idx["main.prod[3]"]].equals(snarkjs.bigInt(15))); + }); + + it("should have <= 2123 constraints (64 bits/word, 8 words)", async () => { + // 2nw + 4n + w - 1 + // = 2048 + 32 + 64 - 1 + // = 2123 + const circuit = new snarkjs.Circuit(linmult_64bit_8word); + circuit.nConstraints.should.be.at.most(2123); + }); + + it("should have <= 8192 constraints (64 bits/word, 32 words)", async () => { + const circuit = new snarkjs.Circuit(linmult_64bit_32word); + circuit.nConstraints.should.be.at.most(9192); + }); +}); + +describe("Regroup", () => { + + var regroup_2_4_2; + var constraints = (w, n, g) => (n / g + 1); + before(async () => { + regroup_2_4_2 = new snarkjs.Circuit(await compiler(path.join(__dirname, "circuits", "regroup_2_4_2.circom"))); + }); + + it(`should have ${constraints(2, 4, 4)} = ${extractExpr(constraints)} constraints`, async () => { + const bound = constraints(2, 4, 4); + regroup_2_4_2.nConstraints.should.be.at.most(bound); + }); + + it("should group 0,0,0,0 -> 0,0 (w = 2)", async () => { + const input = { + "in[0]": "0", + "in[1]": "0", + "in[2]": "0", + "in[3]": "0", + }; + const witness = regroup_2_4_2.calculateWitness(input); + assert(witness[regroup_2_4_2.signalName2Idx["main.out[0]"]].equals(snarkjs.bigInt(0))); + assert(witness[regroup_2_4_2.signalName2Idx["main.out[1]"]].equals(snarkjs.bigInt(0))); + }); + + it("should group 0,0,0,15 -> 0,15 (w=2)", async () => { + const input = { + "in[0]": "15", + "in[1]": "0", + "in[2]": "0", + "in[3]": "0", + }; + const witness = regroup_2_4_2.calculateWitness(input); + assert(witness[regroup_2_4_2.signalName2Idx["main.out[0]"]].equals(snarkjs.bigInt(15))); + assert(witness[regroup_2_4_2.signalName2Idx["main.out[1]"]].equals(snarkjs.bigInt(0))); + }); + it("should group 5,3,7,8 -> 23,36 (w=2)", async () => { + const input = { + "in[0]": "8", + "in[1]": "7", + "in[2]": "3", + "in[3]": "5", + }; + const witness = regroup_2_4_2.calculateWitness(input); + assert(witness[regroup_2_4_2.signalName2Idx["main.out[0]"]].equals(snarkjs.bigInt(36))); + assert(witness[regroup_2_4_2.signalName2Idx["main.out[1]"]].equals(snarkjs.bigInt(23))); + }); +}); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/test/pow.js b/zkrsa/circom-rsa-verify/circom-bigint/test/pow.js new file mode 100644 index 000000000..e4d5a77aa --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/test/pow.js @@ -0,0 +1,107 @@ +const chai = require("chai"); +const path = require("path"); +const snarkjs = require("snarkjs"); +const bigInt = require("big-integer"); + +const compiler = require("circom"); + +const { splitToWords, assertWitnessHas } = require("./util.js"); + +chai.should(); + +describe("PowerMod", () => { + + var powmod_4_2_1; + // Too big + //var powmod_2048_256; + var p8 = bigInt("251"); + //var p2048 = bigInt("25717914355775291586866295420422241213392292814267427031341720309981921951072767057619478999086884670784963011723975180524999172558859807643834182600109599549857252041079024745467013236429735446097174830602748484793758886957236453059760282508362189586726015285519621517120747482897819663394295483868171067416664651473682082556891722243484199977248913646230626498572787720591453558210937216231642704418855170247881788852862175920761682230341882112548762052376035207323453496462109943242185621070874128449533369372088764359230593315593528023908011464769307139423876147833621245404411005076860761330417995015508120377673"); + + before(async () => { + let cirDef = await compiler(path.join(__dirname, "circuits", "power_small.circom")); + powmod_4_2_1 = new snarkjs.Circuit(cirDef); + //let cirDef2 = await compiler(path.join(__dirname, "circuits", "power_2048_256.circom")); + //powmod_2048_256 = new snarkjs.Circuit(cirDef2); + }); + + it("should have at most 320 constraints (4 bits, 2 words in base, 1 in exp)", async () => { + // <= 4 * bitsExp * (2nw + 4n - w) + // <= 4 * 4 * (2 * 8 + 8 - 4) + // <= 16 * 20 + // <= 320 + powmod_4_2_1.nConstraints.should.be.at.most(320); + }); + + it("should compute 1 ** 0 = 1 (mod 251) (4 bits, 2 words in base, 1 in exp)", async () => { + const m = p8; + const b = bigInt(1); + const e = bigInt(0); + const input = Object.assign({}, + splitToWords(b, 4, 2, "base"), + splitToWords(e, 4, 1, "exp"), + splitToWords(m, 4, 2, "modulus"), + ); + const witness = powmod_4_2_1.calculateWitness(input); + const expected = b.modPow(e, m); + assertWitnessHas(powmod_4_2_1, witness, "out", expected, 4, 2); + }); + + [ + { + "b":1, + "e":1, + "m":p8, + }, + { + "b":89, + "e":0, + "m":p8, + }, + { + "b":89, + "e":1, + "m":p8, + }, + { + "b":89, + "e":2, + "m":p8, + }, + { + "b":1, + "e":15, + "m":p8, + }, + { + "b":2, + "e":15, + "m":p8, + }, + { + "b":15, + "e":15, + "m":p8, + }, + { + "b":p8.minus(1), + "e":7, + "m":p8, + }, + { + "b":p8.minus(1), + "e":15, + "m":p8, + }, + ].forEach(({b, e, m}) => { + const expected = bigInt(b).modPow(bigInt(e), bigInt(m)); + it(`should compute ${b} ** ${e} = ${expected} (mod ${m}) (4 bits, 2 words in base, 1 in exp)`, async () => { + const input = Object.assign({}, + splitToWords(b, 4, 2, "base"), + splitToWords(e, 4, 1, "exp"), + splitToWords(m, 4, 2, "modulus"), + ); + const witness = powmod_4_2_1.calculateWitness(input); + assertWitnessHas(powmod_4_2_1, witness, "out", expected, 4, 2); + }); + }); +}); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/test/quotient.js b/zkrsa/circom-rsa-verify/circom-bigint/test/quotient.js new file mode 100644 index 000000000..dcbed2853 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/test/quotient.js @@ -0,0 +1,298 @@ +const chai = require("chai"); +const path = require("path"); +const snarkjs = require("snarkjs"); +const bigInt = require("big-integer"); + +const compiler = require("circom"); + +const { splitToWords, assertWitnessHas, extractExpr } = require("./util.js"); + +chai.should(); + +describe("EqualWhenCarried", () => { + var constraints = (w, n) => ((n - 1) * (w + 2 + Math.ceil(Math.log2(n)))); + var circuit; + before(async () => { + circuit = new snarkjs.Circuit( + await compiler( + path.join(__dirname, "circuits", "equal_when_carried_32bit_16word.circom"))); + }); + + it(`should have ${constraints(32, 16)} = ${extractExpr(constraints)} constraints (2048b)`, async () => { + const bound = constraints(32, 16); + circuit.nConstraints.should.be.at.most(bound); + }); +}); + +describe("MultiplierReducer", () => { + + var constraints = (w, n) => (2 * n * (2*w + Math.ceil(Math.log2(n)) + 5) - 2*w - 7); + var m2048; + var m2048w32; + var m256; + var bit12; + var p = bigInt("28858049957327219110475323466896801383139428311490629626008833393729796965629869137141273938321966943265917767281641074671271164786944319433890041991406093028515386716990782181793093761129067169305130155891242986890110284754334115449064356078790445000930712254780776579648566779318075923514638583031243909381396976164215161751778856434764137856873712640342791431529842040087813072345501283466371742554216242409654188386730117931624242997459892740286011373140180679837723682252801483919461174828068240158469893453995167058545754659032707585919584523426981614564441078850910647537364925639054970775849977074598368946343"); + + before(async () => { + m2048 = new snarkjs.Circuit(await compiler(path.join(__dirname, "circuits", "mult_reduce_2048.circom"))); + m2048w32 = new snarkjs.Circuit(await compiler(path.join(__dirname, "circuits", "mult_reduce_2048_32b.circom"))); + m256 = new snarkjs.Circuit(await compiler(path.join(__dirname, "circuits", "mult_reduce_256.circom"))); + bit12 = new snarkjs.Circuit(await compiler(path.join(__dirname, "circuits", "mult_reduce_12.circom"))); + }); + + it(`should have ${constraints(64, 32)} = ${extractExpr(constraints)} constraints (2048b, 64b words)`, async () => { + const bound = constraints(64, 32); + m2048.nConstraints.should.be.at.most(bound); + }); + it("should have <= 5200 constraints (2048b, 32b words)", async () => { + m2048w32.nConstraints.should.be.at.most(5200); + }); + it(`should have ${constraints(64, 4)} = ${extractExpr(constraints)} constraints (256b)`, async () => { + const bound = constraints(64, 4); + m256.nConstraints.should.be.at.most(bound); + }); + + it("should compute 0 * 0 % p = 0 (2048bits, 64/chunk)", async () => { + const witness = m2048.calculateWitness( + Object.assign({}, + splitToWords(0, 64, 32, "a"), + splitToWords(0, 64, 32, "b"), + splitToWords(p, 64, 32, "modulus"), + ) + ); + assertWitnessHas(m2048, witness, "prod", 0, 64, 32); + }); + + it("should compute p * 1 % p = 0 (2048bits, 64/chunk)", async () => { + const witness = m2048.calculateWitness( + Object.assign({}, + splitToWords(p, 64, 32, "a"), + splitToWords(1, 64, 32, "b"), + splitToWords(p, 64, 32, "modulus"), + ) + ); + assertWitnessHas(m2048, witness, "prod", 0, 64, 32); + }); + + it("should compute (p - 1) * (p - 1) % p = 1 (2048bits, 64/chunk)", async () => { + const input = + Object.assign({}, + splitToWords(p.minus(1), 64, 32, "a"), + splitToWords(p.minus(1), 64, 32, "b"), + splitToWords(p, 64, 32, "modulus"), + ); + const witness = m2048.calculateWitness(input); + assertWitnessHas(m2048, witness, "prod", 1, 64, 32); + }); + + it("should compute (p - 1) * (p - 2) % p = 2 (2048bits, 64/chunk)", async () => { + const input = + Object.assign({}, + splitToWords(p.minus(1), 64, 32, "a"), + splitToWords(p.minus(2), 64, 32, "b"), + splitToWords(p, 64, 32, "modulus"), + ); + const witness = m2048.calculateWitness(input); + assertWitnessHas(m2048, witness, "prod", 2, 64, 32); + }); + + it("should compute (p - 1) * (p - 2) % p = 2 (2048bits, 64/chunk)", async () => { + const input = + Object.assign({}, + splitToWords(p.minus(1), 64, 32, "a"), + splitToWords(p.minus(2), 64, 32, "b"), + splitToWords(p, 64, 32, "modulus"), + ); + const witness = m2048.calculateWitness(input); + assertWitnessHas(m2048, witness, "prod", 2, 64, 32); + }); + + it("should compute 1 * 1 % N = 1 (12 bits, 4/chunk)", async () => { + const N = bigInt(2 ** 11 + 2 ** 6); + const input = + Object.assign({}, + splitToWords(1, 4, 3, "a"), + splitToWords(1, 4, 3, "b"), + splitToWords(N, 4, 3, "modulus"), + ); + const witness = bit12.calculateWitness(input); + assertWitnessHas(bit12, witness, "prod", 1, 4, 3); + }); + + it("should compute (N - 1) * 2 % N = 2 (12 bits, 4/chunk)", async () => { + const N = bigInt(2 ** 12 - 1 - 2 ** 10); + const input = + Object.assign({}, + splitToWords(N - 1, 4, 3, "a"), + splitToWords(2, 4, 3, "b"), + splitToWords(N, 4, 3, "modulus"), + ); + const witness = bit12.calculateWitness(input); + assertWitnessHas(bit12, witness, "prod", N - 2, 4, 3); + }); + it("should compute (N - 1) * (N - 1) % N = 1 (12 bits, 4/chunk)", async () => { + const N = bigInt(2 ** 12 - 1 - 2 ** 10); + const input = + Object.assign({}, + splitToWords(N - 1, 4, 3, "a"), + splitToWords(N - 1, 4, 3, "b"), + splitToWords(N, 4, 3, "modulus"), + ); + const witness = bit12.calculateWitness(input); + assertWitnessHas(bit12, witness, "prod", 1, 4, 3); + }); + it("should compute with high-weight inputs (12 bits, 4/chunk)", async () => { + const N = bigInt(2 ** 12 - 1 - 2 ** 10); + const a = bigInt(2 ** 11 - 1); + const b = bigInt(2 ** 11 - 1); + const input = + Object.assign({}, + splitToWords(a, 4, 3, "a"), + splitToWords(b, 4, 3, "b"), + splitToWords(N, 4, 3, "modulus"), + ); + const witness = bit12.calculateWitness(input); + const output = a.times(b).mod(N); + assertWitnessHas(bit12, witness, "prod", output, 4, 3); + }); + it("should compute with high-value, low-weight inputs (12 bits, 4/chunk)", async () => { + const N = bigInt(2 ** 11 + 2); + const a = bigInt(2 ** 11 + 1); + const b = bigInt(2 ** 11 + 1); + const input = + Object.assign({}, + splitToWords(a, 4, 3, "a"), + splitToWords(b, 4, 3, "b"), + splitToWords(N, 4, 3, "modulus"), + ); + const witness = bit12.calculateWitness(input); + const output = a.times(b).mod(N); + assertWitnessHas(bit12, witness, "prod", output, 4, 3); + }); + it("should compute with high value quotient (12 bits, 4/chunk)", async () => { + const N = bigInt(2 ** 11 + 1); + const a = bigInt(2 ** 11); + const b = bigInt(2 ** 11); + const input = + Object.assign({}, + splitToWords(a, 4, 3, "a"), + splitToWords(b, 4, 3, "b"), + splitToWords(N, 4, 3, "modulus"), + ); + const witness = bit12.calculateWitness(input); + const output = a.times(b).mod(N); + assertWitnessHas(bit12, witness, "prod", output, 4, 3); + }); +}); + +describe("AsymmetricMultiplierReducer", () => { + + var constraints = (w, n1, n2) => ((n1 + n2) * (2*w + Math.ceil(Math.log2(Math.min(n1,n2))) + 5) - 2*w - 7); + var m128x1024; + var p = bigInt("255329303250400393868318758301001690479"); + + before(async () => { + m128x1024 = new snarkjs.Circuit(await compiler(path.join(__dirname, "circuits", "asymm_mult_reduce_128_1024_32b.circom"))); + }); + + it(`should have ${constraints(32, 32, 4)} = ${extractExpr(constraints)} constraints (1024x128)`, async () => { + const bound = constraints(32, 32, 4); + m128x1024.nConstraints.should.be.at.most(bound); + }); + + [ + { + "in0":0, + "in1":0, + "mod":p + }, + { + "in0":1, + "in1":1, + "mod":p + }, + { + "in0":p.minus(1), + "in1":1, + "mod":p + }, + { + "in0":p.minus(1), + "in1":bigInt(2).pow(1024).minus(1), + "mod":p + }, + ].forEach(({in0, in1, mod}) => { + const expected = bigInt(in0).times(bigInt(in1)).mod(bigInt(mod)); + it(`should compute ${in0} * ${in1} = ${expected} (mod ${mod}) (1024x128)`, async () => { + const input = Object.assign({}, + splitToWords(in0, 32, 4, "in0"), + splitToWords(in1, 32, 32, "in1"), + splitToWords(mod, 32, 4, "modulus"), + ); + const witness = m128x1024.calculateWitness(input); + assertWitnessHas(m128x1024, witness, "prod", expected, 32, 4); + }); + }); +}); + +describe("MultiProduct", () => { + + var constraints = (w, n1, n2, c) => (c * (n1 + n2) * (2*w + Math.ceil(Math.log2(Math.min(n1,n2))) + 5) - 2*w - 7); + var m128x1024_4; + var p = bigInt("255329303250400393868318758301001690479"); + + before(async () => { + m128x1024_4 = new snarkjs.Circuit(await compiler(path.join(__dirname, "circuits", "multiprod_128_1024_4in_32b.circom"))); + }); + + it(`should have ${constraints(32, 32, 4, 4)} = ${extractExpr(constraints)} constraints (1024x128)`, async () => { + const bound = constraints(32, 32, 4, 4); + m128x1024_4.nConstraints.should.be.at.most(bound); + }); + + [ + { + "in[0]":0, + "in[1]":0, + "in[2]":0, + "in[3]":0, + "modulus":p + }, + { + "in[0]":1, + "in[1]":1, + "in[2]":1, + "in[3]":1, + "modulus":p + }, + { + "in[0]":1, + "in[1]":2, + "in[2]":3, + "in[3]":4, + "modulus":p + }, + { + "in[0]":p.minus(4), + "in[1]":p.minus(3), + "in[2]":p.minus(2), + "in[3]":p.minus(1), + "modulus":p + }, + ].forEach((inputs) => { + const modulus = bigInt(inputs["modulus"]); + const expected = Object.entries(inputs).filter((pair) => pair[0].includes("in")).map((pair) => bigInt(pair[1])).reduce((a, b) => a.times(b).mod(modulus), bigInt(1)); + const prodStr = Object.entries(inputs).filter((pair) => pair[0].includes("in")).map((pair) => pair[1].toString()).join(" * "); + it(`should compute ${prodStr} = ${expected} (mod ${modulus}) (1024x128)`, async () => { + const input = Object.assign({}, + splitToWords(modulus, 32, 4, "modulus"), + splitToWords(bigInt(inputs["in[0]"]), 32, 32, "in[0]"), + splitToWords(bigInt(inputs["in[1]"]), 32, 32, "in[1]"), + splitToWords(bigInt(inputs["in[2]"]), 32, 32, "in[2]"), + splitToWords(bigInt(inputs["in[3]"]), 32, 32, "in[3]"), + ); + const witness = m128x1024_4.calculateWitness(input); + assertWitnessHas(m128x1024_4, witness, "out", expected, 32, 4); + }); + }); +}); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/test/rabin.js b/zkrsa/circom-rsa-verify/circom-bigint/test/rabin.js new file mode 100644 index 000000000..05b4d1401 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/test/rabin.js @@ -0,0 +1,83 @@ +const chai = require("chai"); +const path = require("path"); +const snarkjs = require("snarkjs"); +const bigInt = require("big-integer"); + +const compiler = require("circom"); + +const { splitToWords, extractExpr } = require("./util.js"); + +chai.should(); + +describe("RabinVerifier2048", () => { + var circuit; + var constraints = (w, n) => (2 * n * (1.5*w + Math.ceil(Math.log2(n)) + 5) - 2*w - 7); + var p = bigInt("159964943931416615577369912019019158766507119279668139689770302515089858651897759755422639322754644946314144496963506091007314204133070017414535137716745802061603555505480122240011754063517628793151777246574164305275840500725001826544822743687229561738601435187059133859724699864240568704332464921206268410503"); + var q = bigInt("168660568160030973654868036651851789140381239095505654315490602844148385243099080183538714953297361726608296166128262432353876749778296569216733359120720108861715866764465627619163550849968245931268140890575790284971106686704922424532091126175189470754194348523245258768389628219297145782623923342002355267303"); + var N = p.times(q); + + before(async () => { + circuit = new snarkjs.Circuit(await compiler(path.join(__dirname, "circuits", "rabin_2048.circom"))); + }); + + it(`should have ${constraints(64, 32)} = ${extractExpr(constraints)} constraints (2048b)`, async () => { + const bound = constraints(64, 32); + circuit.nConstraints.should.be.at.most(bound); + }); + + it("should verify pk = ..., sig = 2**32", async () => { + const sig = bigInt(2 ** 32); + const msg = sig.times(sig).mod(N); + const input = Object.assign({}, + splitToWords(msg, 64, 32, "msg"), + splitToWords(sig, 64, 32, "sig"), + splitToWords(N, 64, 32, "pk"), + ); + circuit.calculateWitness(input); + }); + + it("should verify pk = ..., sig = 15", async () => { + const sig = bigInt(15); + const msg = sig.times(sig).mod(N); + const input = Object.assign({}, + splitToWords(msg, 64, 32, "msg"), + splitToWords(sig, 64, 32, "sig"), + splitToWords(N, 64, 32, "pk"), + ); + circuit.calculateWitness(input); + }); + + it("should verify pk = ..., sig = 10 ** 40", async () => { + const sig = bigInt("10000000000000000000000000000000000000000"); + const msg = sig.times(sig).mod(N); + const input = Object.assign({}, + splitToWords(msg, 64, 32, "msg"), + splitToWords(sig, 64, 32, "sig"), + splitToWords(N, 64, 32, "pk"), + ); + circuit.calculateWitness(input); + }); + + it("should verify pk = ..., sig = 1024b prime", async () => { + const sig = bigInt("157642315533984696102772784427831505226936287362016223825522653136553169246615450857550569552195864365466751054520920894357324049838947634414589061335755156237191576410178243427790597755565691120200590850505284464035038405775597023219065037373958342126476491939291377749536982618664333779148427338663295678463"); + const msg = sig.times(sig).mod(N); + const input = Object.assign({}, + splitToWords(msg, 64, 32, "msg"), + splitToWords(sig, 64, 32, "sig"), + splitToWords(N, 64, 32, "pk"), + ); + circuit.calculateWitness(input); + }); + + it("should verify pk = ..., sig = 2047b prime", async () => { + const sig = bigInt("12530942368888911498182087353638852516147400100673275930863250463555234477837720716273179246984390936381687944889000026790356452466456864386645180950657463551880168178913840117740137589628357900548412963340383653158723336244487247280164898806504660391737939371520748593776528447266796260835130737838638604502418592388748801503763184358140229377671946112049199790338130219779239359148573235944676677030033797473557609411287357869061843679845035395121919341670828752571268193052051307914537583109687261113776436211108984148988960926855106116517593961499195072088559146395182132113625262211187576525171405598734433228063"); + const msg = sig.times(sig).mod(N); + const input = Object.assign({}, + splitToWords(msg, 64, 32, "msg"), + splitToWords(sig, 64, 32, "sig"), + splitToWords(N, 64, 32, "pk"), + ); + circuit.calculateWitness(input); + }); + +}); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/test/rsa_agg.js b/zkrsa/circom-rsa-verify/circom-bigint/test/rsa_agg.js new file mode 100644 index 000000000..a92b471c6 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/test/rsa_agg.js @@ -0,0 +1,59 @@ +const chai = require("chai"); +const path = require("path"); +const snarkjs = require("snarkjs"); +const bigInt = require("big-integer"); + +const compiler = require("circom"); + +const { splitToWords } = require("./util.js"); + +chai.should(); + +describe("RsAggVerifyDelta (64b RSA, 16b λ, 16b/word)", () => { + var rsa16_4_1_2; + var p = bigInt("4154198827"); + var q = bigInt("3311199457"); + var N = p.times(q); + before(async () => { + rsa16_4_1_2 = new snarkjs.Circuit( + await compiler( + path.join(__dirname, "circuits", "rsa_acc_small.circom"))); + }); + + [ + { + digestWithout: bigInt("2"), + mem1: bigInt("3"), + mem2: bigInt("5"), + challenge: bigInt("57991"), + }, + { + digestWithout: bigInt("21741298347192834"), + mem1: bigInt("3"), + mem2: bigInt("5"), + challenge: bigInt("58477"), + }, + { + digestWithout: bigInt("7265955459220505897"), + mem1: bigInt("25121"), + mem2: bigInt("27361"), + challenge: bigInt("55793"), + }, + ].forEach(({digestWithout, mem1, mem2, challenge}) => { + it(`should verify members ${mem1}, ${mem2} on acc ${digestWithout} with challenge ${challenge}`, async () => { + const digestWith = digestWithout.modPow(mem1.times(mem2), N); + const witness = digestWithout.modPow(mem1.times(mem2).divide(challenge), N); + const input = Object.assign({}, + splitToWords(digestWith, 16, 4, "digestWith"), + splitToWords(digestWithout, 16, 4, "digestWithout"), + splitToWords(N, 16, 4, "modulus"), + splitToWords(witness, 16, 4, "witness"), + splitToWords(mem1, 16, 1, "member[0]"), + splitToWords(mem2, 16, 1, "member[1]"), + splitToWords(challenge, 16, 1, "challenge"), + ); + rsa16_4_1_2.calculateWitness(input); + }); + }); + +}); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/test/rsa_rollup.js b/zkrsa/circom-rsa-verify/circom-bigint/test/rsa_rollup.js new file mode 100644 index 000000000..f7cb1beae --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/test/rsa_rollup.js @@ -0,0 +1,24 @@ +const chai = require("chai"); +const path = require("path"); +const snarkjs = require("snarkjs"); +//const bigInt = require("big-integer"); + +const compiler = require("circom"); + +//const { splitToWords, assertWitnessHas, extractExpr } = require("./util.js"); + +chai.should(); + +describe("BalanceHash", () => { + var bhash; + + before(async () => { + bhash = new snarkjs.Circuit( + await compiler( + path.join(__dirname, "circuits", "balance_hash.circom"))); + }); + + it("should have <= 5,000 constraints", async () => { + bhash.nConstraints.should.be.at.most(5000); + }); +}); diff --git a/zkrsa/circom-rsa-verify/circom-bigint/test/util.js b/zkrsa/circom-rsa-verify/circom-bigint/test/util.js new file mode 100644 index 000000000..98843da27 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circom-bigint/test/util.js @@ -0,0 +1,40 @@ +const bigInt = require("big-integer"); +const chai = require("chai"); +const snarkjs = require("snarkjs"); + +const assert = chai.assert; + +function splitToWords(x, w, n, name) { + let t = bigInt(x); + w = bigInt(w); + n = bigInt(n); + const words = {}; + for (let i = 0; i < n; ++i) { + words[`${name}[${i}]`] = `${t.mod(bigInt(2).pow(w))}`; + t = t.divide(bigInt(2).pow(w)); + } + if (!t.isZero()) { + throw `Number ${x} does not fit in ${w * n} bits`; + } + return words; +} + +function assertWitnessHas(circuit, witness, name, x, w, b) { + let words = splitToWords(x, w, b, `main.${name}`); + for (let [signal, value] of Object.entries(words)) { + assert(witness[circuit.signalName2Idx[signal]].equals(snarkjs.bigInt(value)), + `${signal} expected to be ${(snarkjs.bigInt(value))} but was ${witness[circuit.signalName2Idx[signal]]}`); + } +} + +const extractExpr = (f) => { + const src = f.toString(); + const re = /.*=> *\((.*)\)/; + return src.match(re)[1]; +}; + +module.exports = { + extractExpr, + assertWitnessHas, + splitToWords, +}; diff --git a/zkrsa/circom-rsa-verify/circomlib/.eslintrc.js b/zkrsa/circom-rsa-verify/circomlib/.eslintrc.js new file mode 100644 index 000000000..ce75c5cf8 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/.eslintrc.js @@ -0,0 +1,29 @@ +module.exports = { + "env": { + "es6": true, + "node": true, + "mocha": true + }, + "parserOptions": { + "ecmaVersion": 2017 + }, + "extends": "eslint:recommended", + "rules": { + "indent": [ + "error", + 4 + ], + "linebreak-style": [ + "error", + "unix" + ], + "quotes": [ + "error", + "double" + ], + "semi": [ + "error", + "always" + ] + } +}; diff --git a/zkrsa/circom-rsa-verify/circomlib/.gitignore b/zkrsa/circom-rsa-verify/circomlib/.gitignore new file mode 100644 index 000000000..50d8b989b --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/.gitignore @@ -0,0 +1,65 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Typescript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + +# next.js build output +.next + +tmp + +.DS_Store \ No newline at end of file diff --git a/zkrsa/circom-rsa-verify/circomlib/README.md b/zkrsa/circom-rsa-verify/circomlib/README.md new file mode 100644 index 000000000..a56c676d3 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/README.md @@ -0,0 +1,18 @@ +# CircomLib + +## Description + +- This repository contains a library of circuit templates. +- All files are copyrighted under 2018 0KIMS association and part of the free software [circom](https://github.com/iden3/circom) (Zero Knowledge Circuit Compiler). +- You can read more about the circom language in [the circom documentation webpage](https://docs.circom.io/). + +## Organisation + +This respository contains 5 folders: +- `circuits`: it contains the implementation of different cryptographic primitives in circom language. +- `calcpedersenbases`: set of functions in JavaScript used to find a set of points in [Baby Jubjub](https://github.com/barryWhiteHat/baby_jubjub) elliptic curve that serve as basis for the [Pedersen Hash](https://github.com/zcash/zcash/issues/2234). +- `doc`: it contains some circuit schemes in ASCII (must be opened with Monodraw, an ASCII art editor for Mac). +- `src`: it contains similar implementation of circuits in JavaScript. +- `test`: tests. + +A description of the specific circuit templates for the `circuit` folder will be soon updated. diff --git a/zkrsa/circom-rsa-verify/circomlib/calcpedersenbases/calcpedersenbases.js b/zkrsa/circom-rsa-verify/circomlib/calcpedersenbases/calcpedersenbases.js new file mode 100644 index 000000000..0008a9d8b --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/calcpedersenbases/calcpedersenbases.js @@ -0,0 +1,83 @@ +const bn128 = require("snarkjs").bn128; +const bigInt = require("snarkjs").bigInt; +const createBlakeHash = require("blake-hash"); +const babyJub = require("../src/babyjub"); + +function getPoint(S) { + const F = bn128.Fr; + const h = createBlakeHash("blake256").update(S).digest(); + + if (h.length != 32) { + throw new Error("Invalid length") + } + + let sign = false; + if (h[31] & 0x80) { + h[31] = h[31] & 0x7F; + sign = true; + } + + let y = bigInt(0); + for (let i=0; i<32; i++) { + y = y.shl(8); + y = y.add(bigInt(h[i])); + } + + const a = bigInt("168700"); + const d = bigInt("168696"); + + const y2 = F.square(y); + + let x = F.sqrt(F.div( + F.sub(F.one, y2), + F.sub(a, F.mul(d, y2)))); + + if (x == null) return null; + + if (sign) x = F.neg(x); + + const p = [bn128.Fr.affine(x), bn128.Fr.affine(y)]; + + const p8 = babyJub.mulPointEscalar(p, 8); + + return p8; +} + + +function generatePoint(S) { + let p= null; + let idx = 0; + while (p==null) { + let sidx = "" + idx; + while (sidx.length<16) sidx = "0"+sidx; + p = getPoint(S+"_"+sidx); + idx++; + } + if (!babyJub.inCurve(p)){ + throw new Error("Point not in curve"); + } + return p; +} + + + + + +const g = [ + bigInt("5299619240641551281634865583518297030282874472190772894086521144482721001553"), + bigInt("16950150798460657717958625567821834550301663161624707787222815936182638968203")]; + +// Sanity check +if (!babyJub.inCurve(g)) { + throw new Error("Generator not In curve -> Some thing goes wrong..."); +} + +for (let i=0; i<25; i++) { + let S = "" +i; + while (S.length<16) S = "0"+S; + const P = generatePoint("Iden3_PedersenGenerator_"+S); + console.log(`[${P[0].toString()}, ${P[1].toString()}]`); +} + + + diff --git a/zkrsa/circom-rsa-verify/circomlib/circuits/README.md b/zkrsa/circom-rsa-verify/circomlib/circuits/README.md new file mode 100644 index 000000000..40a833e7f --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/circuits/README.md @@ -0,0 +1,830 @@ +# CircomLib/Circuits + +## Description + +- This folder contains circuit templates for standard operations and many cryptographic primitives. +- Below you can find specifications of each function. In the representation of elements, there are three tyes: + - Binary + - String + - Field element (the field is specified in each case. We consider 2 possible fields: Fp and Fr, where p... and r... .) + +## Table of Contents + +[TOC] + +## Jordi + +* compconstant - Returns 1 if `in` (expanded to binary array) > `ct` +* aliascheck - check if `in` (expanded to binary array) oveflowed its 254 bits (<= -1) +* babyjub - twisted Edwards curve 168700.x^2 + y^2 = 1 + 168696.x^2.y^2 + * BabyAdd - (`xout`,`yout`) = (`x1`,`y1`) + (`x2`,`y2`) + * BabyDbl - (`xout`,`yout`) = 2*(`x`,`y`) + * BabyCheck - check that (`x`,`y`) is on the curve +* binsub - binary subtraction +* gates - logical gates +* mimc - SNARK-friendly hash Minimal Multiplicative Complexity. + * https://eprint.iacr.org/2016/492.pdf + * zcash/zcash#2233 +* smt - Sparse Merkle Tree + * https://ethresear.ch/t/optimizing-sparse-merkle-trees/3751 +* montgomery https://en.wikipedia.org/wiki/Montgomery_curve + +## Circuits + +### sha256 + +Folder containing the implementation of sha256 hash circuit. + +### smt + +Folder containing the circuit implementation of Sparse Merkle Trees. + +### aliascheck + +- `AliasCheck()` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +### babyjub + +Arithmetic on [Baby Jubjub elliptic curve](https://github.com/barryWhiteHat/baby_jubjub) in twisted Edwards form. (TODO: Expose here the characteristics of the curve?) + + +- `BabyAdd()` + + - DESCRIPTION + + It adds two points on the Baby Jubjub curve. More specifically, given two points P1 = (`x1`, `y1`) and P2 = (`x2`, `y2`) it returns a point P3 = (`xout`, `yout`) such that + + (`xout`, `yout`) = (`x1`,`y1`) + (`x2`,`y2`) + = ((`x1y2`+`y1x2`)/(1+`dx1x2y1y2`)),(`y1y2`-`ax1x2`)/(1-`dx1x2y1y2`)) + + - SCHEMA + ``` + var a var d + | | + | | + ______v_________v_______ + input x1 ----> | | + input y1 ----> | BabyAdd() | ----> output xout + input x2 ----> | | ----> output yout + input y2 ----> |________________________| + ``` + + - INPUTS + + | Input | Representation | Description | | + | ------------- | ------------- | ------------- | ------------- | + | `x1` | Bigint | Field element of Fp | First coordinate of a point (x1, y1) on E. | + | `y1` | Bigint | Field element of Fp | Second coordinate of a point (x1, y1) on E. | + | `x2` | Bigint | Field element of Fp | First coordinate of a point (x2, y2) on E. | + | `y2` | Bigint | Field element of Fp | Second coordinate of a point (x2, y2) on E. | + + Requirement: at least `x1`!=`x2` or `y1`!=`y2`. + + - OUTPUT + + | Input | Representation | Description | | + | ------------- | ------------- | ------------- | ------------- | + | `xout` | Bigint | Field element of Fp | First coordinate of the addition point (xout, yout) = (x1, y1) + (x2, y2). | + | `yout` | Bigint | Field element of Fp | Second coordinate of the addition point (xout, yout) = (x1, y1) + (x2, y2). | + + - BENCHMARKS (constraints) + + - EXAMPLE + +- `BabyDbl()` + - DESCRIPTION : doubles a point (`xout`,`yout`) = 2*(`x`,`y`). + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `BabyCheck()` + + - DESCRIPTION : checks if a given point is in the curve. + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `BabyPbk()` + + - DESCRIPTION: : given a private key, it returns the associated public key. + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + + +### binsub + +- `BinSub(n)` + + - DESCRIPTION: binary substraction. + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +### binsum + +- `nbits(a)` + + - DESCRIPTION : binary sum. + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `BinSum(n, ops)` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +### bitify + +- `Num2Bits()` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `Num2Bits_strict()` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `Bits2Num()` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `Bits2Num_strict()` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `Num2BitsNeg()` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +### comparators + +- `IsZero() ` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `IsEqual()` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `ForceEqualIfEnabled()` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `LessThan()` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `GreaterThan()` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `GreaterEqThan()` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +### compconstant + +- `CompConstant(ct)` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +### eddsa + +Edwards Digital Signature Algorithm in Baby Jubjbub (link a eddsa) + +- `EdDSAVerifier(n)` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +### eddsamimc + +- `EdDSAMiMCVerifier()` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +### eddsamimcsponge + +- `EdDSAMiMCSpongeVerifier()` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +### eddsaposeidon + +- `EdDSAPoseidonVerifier()` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +### escalarmul + +- `EscalarMulWindow(base, k)` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `EscalarMul(n, base)` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +### escalarmulany + +- `Multiplexor2()` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `BitElementMulAny()` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `SegmentMulAny(n)` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `EscalarMulAny(n)` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +### escalarmulfix + +- `WindowMulFix()` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `SegmentMulFix(nWindows)` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `EscalarMulFix(n, BASE)` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +### escalarmulw4table + +- `pointAdd` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `EscalarMulW4Table` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +### gates + +- `XOR` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `AND` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `OR` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `NOT` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `NAND` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `NOR` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `MultiAND` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +### mimc + +Implementation of MiMC-7 hash in Fp being... (link to description of the hash) + +- `MiMC7(nrounds)` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `MultiMiMC7(nInputs, nRounds)` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +### mimcsponge + +- `MiMCSponge(nInputs, nRounds, nOutputs)` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `MiMCFeistel(nrounds)` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +### montgomery + +- `Edwards2Montgomery()` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `Montgomery2Edwards()` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `MontgomeryAdd()` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `MontgomeryDouble()` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +### multiplexer + +- `log2(a)` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `EscalarProduct(w)` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `Decoder(w)` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `Multiplexer(wIn, nIn)` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +### mux1 + +- `MultiMux1(n)` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `Mux1()` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +### mux2 + +- `MultiMux2(n)` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `Mux2()` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +### mux3 + +- `MultiMux3(n)` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `Mux3()` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +### mux4 + +- `MultiMux4(n)` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `Mux4()` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +### pedersen_old + +Old version of the Pedersen hash (do not use any +more?). + +### pedersen + +- `Window4()` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `Segment(nWindows)` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `Pedersen(n)` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +### pointbits + +- `sqrt(n)` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `Bits2Point()` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `Bits2Point_Strict()` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `Point2Bits` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `Point2Bits_Strict` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +### poseidon + +Implementation of Poseidon hash function (LINK) + +- `Sigma()` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `Ark(t, C, r)` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `Mix(t, M)` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +- `Poseidon(nInputs)` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +### sign + +- `Sign()` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE + +### switcher + +- `Switcher()` + + - DESCRIPTION + - SCHEMA + - INPUT + - OUTPUT + - BENCHMARKS + - EXAMPLE diff --git a/zkrsa/circom-rsa-verify/circomlib/circuits/aliascheck.circom b/zkrsa/circom-rsa-verify/circomlib/circuits/aliascheck.circom new file mode 100644 index 000000000..c4dfad576 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/circuits/aliascheck.circom @@ -0,0 +1,32 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +include "compconstant.circom"; + + +template AliasCheck() { + + signal input in[254]; + + component compConstant = CompConstant(-1); + + for (var i=0; i<254; i++) in[i] ==> compConstant.in[i]; + + compConstant.out === 0; +} diff --git a/zkrsa/circom-rsa-verify/circomlib/circuits/babyjub.circom b/zkrsa/circom-rsa-verify/circomlib/circuits/babyjub.circom new file mode 100644 index 000000000..537b1a0d4 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/circuits/babyjub.circom @@ -0,0 +1,106 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +include "bitify.circom"; +include "escalarmulfix.circom"; + +template BabyAdd() { + signal input x1; + signal input y1; + signal input x2; + signal input y2; + signal output xout; + signal output yout; + + signal beta; + signal gamma; + signal delta; + signal tau; + + var a = 168700; + var d = 168696; + + beta <== x1*y2; + gamma <== y1*x2; + delta <== (-a*x1+y1)*(x2 + y2); + tau <== beta * gamma; + + xout <-- (beta + gamma) / (1+ d*tau); + (1+ d*tau) * xout === (beta + gamma); + + yout <-- (delta + a*beta - gamma) / (1-d*tau); + (1-d*tau)*yout === (delta + a*beta - gamma); +} + +template BabyDbl() { + signal input x; + signal input y; + signal output xout; + signal output yout; + + component adder = BabyAdd(); + adder.x1 <== x; + adder.y1 <== y; + adder.x2 <== x; + adder.y2 <== y; + + adder.xout ==> xout; + adder.yout ==> yout; +} + + +template BabyCheck() { + signal input x; + signal input y; + + signal x2; + signal y2; + + var a = 168700; + var d = 168696; + + x2 <== x*x; + y2 <== y*y; + + a*x2 + y2 === 1 + d*x2*y2; +} + +// Extracts the public key from private key +template BabyPbk() { + signal private input in; + signal output Ax; + signal output Ay; + + var BASE8[2] = [ + 5299619240641551281634865583518297030282874472190772894086521144482721001553, + 16950150798460657717958625567821834550301663161624707787222815936182638968203 + ]; + + component pvkBits = Num2Bits(253); + pvkBits.in <== in; + + component mulFix = EscalarMulFix(253, BASE8); + + var i; + for (i=0; i<253; i++) { + mulFix.e[i] <== pvkBits.out[i]; + } + Ax <== mulFix.out[0]; + Ay <== mulFix.out[1]; +} diff --git a/zkrsa/circom-rsa-verify/circomlib/circuits/binsub.circom b/zkrsa/circom-rsa-verify/circomlib/circuits/binsub.circom new file mode 100644 index 000000000..672144275 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/circuits/binsub.circom @@ -0,0 +1,73 @@ + /* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +/* +This component creates a binary substraction. + + +Main Constraint: + (in[0][0] * 2^0 + in[0][1] * 2^1 + ..... + in[0][n-1] * 2^(n-1)) + + + 2^n + - (in[1][0] * 2^0 + in[1][1] * 2^1 + ..... + in[1][n-1] * 2^(n-1)) + === + out[0] * 2^0 + out[1] * 2^1 + + out[n-1] *2^(n-1) + aux + + + out[0] * (out[0] - 1) === 0 + out[1] * (out[0] - 1) === 0 + . + . + . + out[n-1] * (out[n-1] - 1) === 0 + aux * (aux-1) == 0 + +*/ + +template BinSub(n) { + signal input in[2][n]; + signal output out[n]; + + signal aux; + + var lin = 2**n; + var lout = 0; + + var i; + + for (i=0; i> i) & 1; + + // Ensure out is binary + out[i] * (out[i] - 1) === 0; + + lout = lout + out[i]*(2**i); + } + + aux <-- (lin >> n) & 1; + aux*(aux-1) === 0; + lout = lout + aux*(2**n); + + // Ensure the sum; + lin === lout; +} diff --git a/zkrsa/circom-rsa-verify/circomlib/circuits/binsum.circom b/zkrsa/circom-rsa-verify/circomlib/circuits/binsum.circom new file mode 100644 index 000000000..6fd79adce --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/circuits/binsum.circom @@ -0,0 +1,100 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +/* + +Binary Sum +========== + +This component creates a binary sum componet of ops operands and n bits each operand. + +e is Number of carries: Depends on the number of operands in the input. + +Main Constraint: + in[0][0] * 2^0 + in[0][1] * 2^1 + ..... + in[0][n-1] * 2^(n-1) + + + in[1][0] * 2^0 + in[1][1] * 2^1 + ..... + in[1][n-1] * 2^(n-1) + + + .. + + in[ops-1][0] * 2^0 + in[ops-1][1] * 2^1 + ..... + in[ops-1][n-1] * 2^(n-1) + + === + out[0] * 2^0 + out[1] * 2^1 + + out[n+e-1] *2(n+e-1) + +To waranty binary outputs: + + out[0] * (out[0] - 1) === 0 + out[1] * (out[0] - 1) === 0 + . + . + . + out[n+e-1] * (out[n+e-1] - 1) == 0 + + */ + + +/* + This function calculates the number of extra bits in the output to do the full sum. + */ + +function nbits(a) { + var n = 1; + var r = 0; + while (n-1> k) & 1; + + // Ensure out is binary + out[k] * (out[k] - 1) === 0; + + lout += out[k] * e2; + + e2 = e2+e2; + } + + // Ensure the sum; + + lin === lout; +} diff --git a/zkrsa/circom-rsa-verify/circomlib/circuits/bitify.circom b/zkrsa/circom-rsa-verify/circomlib/circuits/bitify.circom new file mode 100644 index 000000000..b60e0aa4a --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/circuits/bitify.circom @@ -0,0 +1,105 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +include "comparators.circom"; +include "aliascheck.circom"; + + +template Num2Bits(n) { + signal input in; + signal output out[n]; + var lc1=0; + + var e2=1; + for (var i = 0; i> i) & 1; + out[i] * (out[i] -1 ) === 0; + lc1 += out[i] * e2; + e2 = e2+e2; + } + + lc1 === in; +} + +template Num2Bits_strict() { + signal input in; + signal output out[254]; + + component aliasCheck = AliasCheck(); + component n2b = Num2Bits(254); + in ==> n2b.in; + + for (var i=0; i<254; i++) { + n2b.out[i] ==> out[i]; + n2b.out[i] ==> aliasCheck.in[i]; + } +} + +template Bits2Num(n) { + signal input in[n]; + signal output out; + var lc1=0; + + var e2 = 1; + for (var i = 0; i out; +} + +template Bits2Num_strict() { + signal input in[254]; + signal output out; + + component aliasCheck = AliasCheck(); + component b2n = Bits2Num(254); + + for (var i=0; i<254; i++) { + in[i] ==> b2n.in[i]; + in[i] ==> aliasCheck.in[i]; + } + + b2n.out ==> out; +} + +template Num2BitsNeg(n) { + signal input in; + signal output out[n]; + var lc1=0; + + component isZero; + + isZero = IsZero(); + + var neg = n == 0 ? 0 : 2**n - in; + + for (var i = 0; i> i) & 1; + out[i] * (out[i] -1 ) === 0; + lc1 += out[i] * 2**i; + } + + in ==> isZero.in; + + + + lc1 + isZero.out * 2**n === 2**n - in; +} diff --git a/zkrsa/circom-rsa-verify/circomlib/circuits/comparators.circom b/zkrsa/circom-rsa-verify/circomlib/circuits/comparators.circom new file mode 100644 index 000000000..e3de809da --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/circuits/comparators.circom @@ -0,0 +1,140 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +include "bitify.circom"; +include "binsum.circom"; + +template IsZero() { + signal input in; + signal output out; + + signal inv; + + inv <-- in!=0 ? 1/in : 0; + + out <== -in*inv +1; + in*out === 0; +} + + +template IsEqual() { + signal input in[2]; + signal output out; + + component isz = IsZero(); + + in[1] - in[0] ==> isz.in; + + isz.out ==> out; +} + +template ForceEqualIfEnabled() { + signal input enabled; + signal input in[2]; + + component isz = IsZero(); + + in[1] - in[0] ==> isz.in; + + (1 - isz.out)*enabled === 0; +} + +/* +// N is the number of bits the input have. +// The MSF is the sign bit. +template LessThan(n) { + signal input in[2]; + signal output out; + + component num2Bits0; + component num2Bits1; + + component adder; + + adder = BinSum(n, 2); + + num2Bits0 = Num2Bits(n); + num2Bits1 = Num2BitsNeg(n); + + in[0] ==> num2Bits0.in; + in[1] ==> num2Bits1.in; + + var i; + for (i=0;i adder.in[0][i]; + num2Bits1.out[i] ==> adder.in[1][i]; + } + + adder.out[n-1] ==> out; +} +*/ + +template LessThan(n) { + assert(n <= 252); + signal input in[2]; + signal output out; + + component n2b = Num2Bits(n+1); + + n2b.in <== in[0]+ (1< out; +} + +// N is the number of bits the input have. +// The MSF is the sign bit. +template GreaterThan(n) { + signal input in[2]; + signal output out; + + component lt = LessThan(n); + + lt.in[0] <== in[1]; + lt.in[1] <== in[0]; + lt.out ==> out; +} + +// N is the number of bits the input have. +// The MSF is the sign bit. +template GreaterEqThan(n) { + signal input in[2]; + signal output out; + + component lt = LessThan(n); + + lt.in[0] <== in[1]; + lt.in[1] <== in[0]+1; + lt.out ==> out; +} + diff --git a/zkrsa/circom-rsa-verify/circomlib/circuits/compconstant.circom b/zkrsa/circom-rsa-verify/circomlib/circuits/compconstant.circom new file mode 100644 index 000000000..e7fb3f0a6 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/circuits/compconstant.circom @@ -0,0 +1,73 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +include "bitify.circom"; + +// Returns 1 if in (in binary) > ct + +template CompConstant(ct) { + signal input in[254]; + signal output out; + + signal parts[127]; + signal sout; + + var clsb; + var cmsb; + var slsb; + var smsb; + + var sum=0; + + var b = (1 << 128) -1; + var a = 1; + var e = 1; + var i; + + for (i=0;i<127; i++) { + clsb = (ct >> (i*2)) & 1; + cmsb = (ct >> (i*2+1)) & 1; + slsb = in[i*2]; + smsb = in[i*2+1]; + + if ((cmsb==0)&&(clsb==0)) { + parts[i] <== -b*smsb*slsb + b*smsb + b*slsb; + } else if ((cmsb==0)&&(clsb==1)) { + parts[i] <== a*smsb*slsb - a*slsb + b*smsb - a*smsb + a; + } else if ((cmsb==1)&&(clsb==0)) { + parts[i] <== b*smsb*slsb - a*smsb + a; + } else { + parts[i] <== -a*smsb*slsb + a; + } + + sum = sum + parts[i]; + + b = b -e; + a = a +e; + e = e*2; + } + + sout <== sum; + + component num2bits = Num2Bits(135); + + num2bits.in <== sout; + + out <== num2bits.out[127]; +} diff --git a/zkrsa/circom-rsa-verify/circomlib/circuits/eddsa.circom b/zkrsa/circom-rsa-verify/circomlib/circuits/eddsa.circom new file mode 100644 index 000000000..bf126a789 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/circuits/eddsa.circom @@ -0,0 +1,138 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +include "compconstant.circom"; +include "pointbits.circom"; +include "pedersen.circom"; +include "escalarmulany.circom"; +include "escalarmulfix.circom"; + +template EdDSAVerifier(n) { + signal input msg[n]; + + signal input A[256]; + signal input R8[256]; + signal input S[256]; + + signal Ax; + signal Ay; + + signal R8x; + signal R8y; + + var i; + +// Ensure S compConstant.in[i]; + } + compConstant.out === 0; + S[254] === 0; + S[255] === 0; + +// Convert A to Field elements (And verify A) + + component bits2pointA = Bits2Point_Strict(); + + for (i=0; i<256; i++) { + bits2pointA.in[i] <== A[i]; + } + Ax <== bits2pointA.out[0]; + Ay <== bits2pointA.out[1]; + +// Convert R8 to Field elements (And verify R8) + + component bits2pointR8 = Bits2Point_Strict(); + + for (i=0; i<256; i++) { + bits2pointR8.in[i] <== R8[i]; + } + R8x <== bits2pointR8.out[0]; + R8y <== bits2pointR8.out[1]; + +// Calculate the h = H(R,A, msg) + + component hash = Pedersen(512+n); + + for (i=0; i<256; i++) { + hash.in[i] <== R8[i]; + hash.in[256+i] <== A[i]; + } + for (i=0; i. +*/ + +include "compconstant.circom"; +include "pointbits.circom"; +include "mimc.circom"; +include "bitify.circom"; +include "escalarmulany.circom"; +include "escalarmulfix.circom"; + +template EdDSAMiMCVerifier() { + signal input enabled; + signal input Ax; + signal input Ay; + + signal input S; + signal input R8x; + signal input R8y; + + signal input M; + + var i; + +// Ensure S compConstant.in[i]; + } + compConstant.in[253] <== 0; + compConstant.out === 0; + +// Calculate the h = H(R,A, msg) + + component hash = MultiMiMC7(5, 91); + hash.in[0] <== R8x; + hash.in[1] <== R8y; + hash.in[2] <== Ax; + hash.in[3] <== Ay; + hash.in[4] <== M; + hash.k <== 0; + + component h2bits = Num2Bits_strict(); + h2bits.in <== hash.out; + +// Calculate second part of the right side: right2 = h*8*A + + // Multiply by 8 by adding it 3 times. This also ensure that the result is in + // the subgroup. + component dbl1 = BabyDbl(); + dbl1.x <== Ax; + dbl1.y <== Ay; + component dbl2 = BabyDbl(); + dbl2.x <== dbl1.xout; + dbl2.y <== dbl1.yout; + component dbl3 = BabyDbl(); + dbl3.x <== dbl2.xout; + dbl3.y <== dbl2.yout; + + // We check that A is not zero. + component isZero = IsZero(); + isZero.in <== dbl3.x; + isZero.out === 0; + + component mulAny = EscalarMulAny(254); + for (i=0; i<254; i++) { + mulAny.e[i] <== h2bits.out[i]; + } + mulAny.p[0] <== dbl3.xout; + mulAny.p[1] <== dbl3.yout; + + +// Compute the right side: right = R8 + right2 + + component addRight = BabyAdd(); + addRight.x1 <== R8x; + addRight.y1 <== R8y; + addRight.x2 <== mulAny.out[0]; + addRight.y2 <== mulAny.out[1]; + +// Calculate left side of equation left = S*B8 + + var BASE8[2] = [ + 5299619240641551281634865583518297030282874472190772894086521144482721001553, + 16950150798460657717958625567821834550301663161624707787222815936182638968203 + ]; + component mulFix = EscalarMulFix(253, BASE8); + for (i=0; i<253; i++) { + mulFix.e[i] <== snum2bits.out[i]; + } + +// Do the comparation left == right if enabled; + + component eqCheckX = ForceEqualIfEnabled(); + eqCheckX.enabled <== enabled; + eqCheckX.in[0] <== mulFix.out[0]; + eqCheckX.in[1] <== addRight.xout; + + component eqCheckY = ForceEqualIfEnabled(); + eqCheckY.enabled <== enabled; + eqCheckY.in[0] <== mulFix.out[1]; + eqCheckY.in[1] <== addRight.yout; +} diff --git a/zkrsa/circom-rsa-verify/circomlib/circuits/eddsamimcsponge.circom b/zkrsa/circom-rsa-verify/circomlib/circuits/eddsamimcsponge.circom new file mode 100644 index 000000000..8b2577d45 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/circuits/eddsamimcsponge.circom @@ -0,0 +1,123 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +include "compconstant.circom"; +include "pointbits.circom"; +include "mimcsponge.circom"; +include "bitify.circom"; +include "escalarmulany.circom"; +include "escalarmulfix.circom"; + +template EdDSAMiMCSpongeVerifier() { + signal input enabled; + signal input Ax; + signal input Ay; + + signal input S; + signal input R8x; + signal input R8y; + + signal input M; + + var i; + +// Ensure S compConstant.in[i]; + } + compConstant.in[253] <== 0; + compConstant.out === 0; + +// Calculate the h = H(R,A, msg) + + component hash = MiMCSponge(5, 220, 1); + hash.ins[0] <== R8x; + hash.ins[1] <== R8y; + hash.ins[2] <== Ax; + hash.ins[3] <== Ay; + hash.ins[4] <== M; + hash.k <== 0; + + component h2bits = Num2Bits_strict(); + h2bits.in <== hash.outs[0]; + +// Calculate second part of the right side: right2 = h*8*A + + // Multiply by 8 by adding it 3 times. This also ensure that the result is in + // the subgroup. + component dbl1 = BabyDbl(); + dbl1.x <== Ax; + dbl1.y <== Ay; + component dbl2 = BabyDbl(); + dbl2.x <== dbl1.xout; + dbl2.y <== dbl1.yout; + component dbl3 = BabyDbl(); + dbl3.x <== dbl2.xout; + dbl3.y <== dbl2.yout; + + // We check that A is not zero. + component isZero = IsZero(); + isZero.in <== dbl3.x; + isZero.out === 0; + + component mulAny = EscalarMulAny(254); + for (i=0; i<254; i++) { + mulAny.e[i] <== h2bits.out[i]; + } + mulAny.p[0] <== dbl3.xout; + mulAny.p[1] <== dbl3.yout; + + +// Compute the right side: right = R8 + right2 + + component addRight = BabyAdd(); + addRight.x1 <== R8x; + addRight.y1 <== R8y; + addRight.x2 <== mulAny.out[0]; + addRight.y2 <== mulAny.out[1]; + +// Calculate left side of equation left = S*B8 + + var BASE8[2] = [ + 5299619240641551281634865583518297030282874472190772894086521144482721001553, + 16950150798460657717958625567821834550301663161624707787222815936182638968203 + ]; + component mulFix = EscalarMulFix(253, BASE8); + for (i=0; i<253; i++) { + mulFix.e[i] <== snum2bits.out[i]; + } + +// Do the comparation left == right if enabled; + + component eqCheckX = ForceEqualIfEnabled(); + eqCheckX.enabled <== enabled; + eqCheckX.in[0] <== mulFix.out[0]; + eqCheckX.in[1] <== addRight.xout; + + component eqCheckY = ForceEqualIfEnabled(); + eqCheckY.enabled <== enabled; + eqCheckY.in[0] <== mulFix.out[1]; + eqCheckY.in[1] <== addRight.yout; +} diff --git a/zkrsa/circom-rsa-verify/circomlib/circuits/eddsaposeidon.circom b/zkrsa/circom-rsa-verify/circomlib/circuits/eddsaposeidon.circom new file mode 100644 index 000000000..067bc3a8b --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/circuits/eddsaposeidon.circom @@ -0,0 +1,122 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +include "compconstant.circom"; +include "poseidon.circom"; +include "bitify.circom"; +include "escalarmulany.circom"; +include "escalarmulfix.circom"; + +template EdDSAPoseidonVerifier() { + signal input enabled; + signal input Ax; + signal input Ay; + + signal input S; + signal input R8x; + signal input R8y; + + signal input M; + + var i; + +// Ensure S compConstant.in[i]; + } + compConstant.in[253] <== 0; + compConstant.out*enabled === 0; + +// Calculate the h = H(R,A, msg) + + component hash = Poseidon(5); + + hash.inputs[0] <== R8x; + hash.inputs[1] <== R8y; + hash.inputs[2] <== Ax; + hash.inputs[3] <== Ay; + hash.inputs[4] <== M; + + component h2bits = Num2Bits_strict(); + h2bits.in <== hash.out; + +// Calculate second part of the right side: right2 = h*8*A + + // Multiply by 8 by adding it 3 times. This also ensure that the result is in + // the subgroup. + component dbl1 = BabyDbl(); + dbl1.x <== Ax; + dbl1.y <== Ay; + component dbl2 = BabyDbl(); + dbl2.x <== dbl1.xout; + dbl2.y <== dbl1.yout; + component dbl3 = BabyDbl(); + dbl3.x <== dbl2.xout; + dbl3.y <== dbl2.yout; + + // We check that A is not zero. + component isZero = IsZero(); + isZero.in <== dbl3.x; + isZero.out*enabled === 0; + + component mulAny = EscalarMulAny(254); + for (i=0; i<254; i++) { + mulAny.e[i] <== h2bits.out[i]; + } + mulAny.p[0] <== dbl3.xout; + mulAny.p[1] <== dbl3.yout; + + +// Compute the right side: right = R8 + right2 + + component addRight = BabyAdd(); + addRight.x1 <== R8x; + addRight.y1 <== R8y; + addRight.x2 <== mulAny.out[0]; + addRight.y2 <== mulAny.out[1]; + +// Calculate left side of equation left = S*B8 + + var BASE8[2] = [ + 5299619240641551281634865583518297030282874472190772894086521144482721001553, + 16950150798460657717958625567821834550301663161624707787222815936182638968203 + ]; + component mulFix = EscalarMulFix(253, BASE8); + for (i=0; i<253; i++) { + mulFix.e[i] <== snum2bits.out[i]; + } + +// Do the comparation left == right if enabled; + + component eqCheckX = ForceEqualIfEnabled(); + eqCheckX.enabled <== enabled; + eqCheckX.in[0] <== mulFix.out[0]; + eqCheckX.in[1] <== addRight.xout; + + component eqCheckY = ForceEqualIfEnabled(); + eqCheckY.enabled <== enabled; + eqCheckY.in[0] <== mulFix.out[1]; + eqCheckY.in[1] <== addRight.yout; +} diff --git a/zkrsa/circom-rsa-verify/circomlib/circuits/escalarmul.circom b/zkrsa/circom-rsa-verify/circomlib/circuits/escalarmul.circom new file mode 100644 index 000000000..9cd13f7c9 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/circuits/escalarmul.circom @@ -0,0 +1,165 @@ + /* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +/* + + ┏━━━━━━━━━━━┓ + ┃ ┃ + ┃ ┃ + (inx, iny) ══════════════════════════════════════════▶┃ EC Point ┃ + ┃ ╠═▶ (outx, outy) + ╔══▶┃ Adder ┃ + ║ ┃ ┃ + ║ ┃ ┃ + ║ ┃ ┃ + ┏━━━━━━━━━━━┓ ┏━━━━━━━━━━━━┓ ║ ┗━━━━━━━━━━━┛ + ┃ ┃ ┃ ┃ ║ + ┃ ┃ ┃ ┃ ║ + ┃ ╠═══(p0x,p0y)═══▶┃ ┃ ║ + ┃ ╠═══(p1x,p1y)═══▶┃ ┃ ║ + ┃ ╠═══(p2x,p2y)═══▶┃ ┃ ║ + ┃ ╠═══(p3x,p3y)═══▶┃ ┃ ║ + ┃ ╠═══(p4x,p4y)═══▶┃ ┃ ║ + ┃ ╠═══(p5x,p5y)═══▶┃ ┃ ║ + ┃ ╠═══(p6x,p6y)═══▶┃ ┃ ║ + ┃ Constant ╠═══(p7x,p7y)═══▶┃ ┃ ║ + ┃ Points ┃ ┃ Mux4 ╠══╝ + ┃ ╠═══(p8x,p8y)═══▶┃ ┃ + ┃ ╠═══(p9x,p9y)═══▶┃ ┃ + ┃ ╠══(p10x,p10y)══▶┃ ┃ + ┃ ╠══(p11x,p11y)══▶┃ ┃ + ┃ ╠══(p12x,p12y)══▶┃ ┃ + ┃ ╠══(p13x,p13y)══▶┃ ┃ + ┃ ╠══(p14x,p14y)══▶┃ ┃ + ┃ ╠══(p15x,p15y)══▶┃ ┃ + ┃ ┃ ┃ ┃ + ┃ ┃ ┃ ┃ + ┗━━━━━━━━━━━┛ ┗━━━━━━━━━━━━┛ + ▲ ▲ ▲ ▲ + │ │ │ │ + s0 ─────────────────────────────────┘ │ │ │ + s1 ────────────────────────────────────┘ │ │ + s2 ───────────────────────────────────────┘ │ + s3 ──────────────────────────────────────────┘ + + + */ + +include "mux4.circom"; +include "escalarmulw4table.circom"; +include "babyjub.circom"; + +template EscalarMulWindow(base, k) { + + signal input in[2]; + signal input sel[4]; + signal output out[2]; + + var table[16][2]; + component mux; + component adder; + + var i; + + table = EscalarMulW4Table(base, k); + mux = MultiMux4(2); + adder = BabyAdd(); + + for (i=0; i<4; i++) { + sel[i] ==> mux.s[i]; + } + + for (i=0; i<16; i++) { + mux.c[0][i] <== table[i][0]; + mux.c[1][i] <== table[i][1]; + } + + in[0] ==> adder.x1; + in[1] ==> adder.y1; + + mux.out[0] ==> adder.x2; + mux.out[1] ==> adder.y2; + + adder.xout ==> out[0]; + adder.yout ==> out[1]; +} + +/* + + + ┏━━━━━━━━━┓ ┏━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ + inp ════▶┃Window(0)┃═════▶┃Window(1)┃════════ . . . . ═════════▶┃ Window(nBlocks-1) ┃═════▶ out + ┃ ┃ ┃ ┃ ┃ ┃ + ┗━━━━━━━━━┛ ┗━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━━━━━┛ + ▲ ▲ ▲ ▲ ▲ ▲ ▲ ▲ ▲ ▲ ▲ ▲ + in[0]─────────┘ │ │ │ │ │ │ │ │ │ │ │ + in[1]───────────┘ │ │ │ │ │ │ │ │ │ │ + in[2]─────────────┘ │ │ │ │ │ │ │ 0 0 + in[3]───────────────┘ │ │ │ │ │ │ + in[4]──────────────────────────┘ │ │ │ │ │ + in[5]────────────────────────────┘ │ │ │ │ + in[6]──────────────────────────────┘ │ │ │ + in[7]────────────────────────────────┘ │ │ + . │ │ + . │ │ + in[n-2]─────────────────────────────────────────────────────────────────────┘ │ + in[n-1]───────────────────────────────────────────────────────────────────────┘ + + */ + +template EscalarMul(n, base) { + signal input in[n]; + signal input inp[2]; // Point input to be added + signal output out[2]; + + var nBlocks = ((n-1)>>2)+1; + var i; + var j; + + component windows[nBlocks]; + + // Construct the windows + for (i=0; i= n) { + windows[i].sel[j] <== 0; + } else { + windows[i].sel[j] <== in[i*4+j]; + } + } + } + + // Start with generator + windows[0].in[0] <== inp[0]; + windows[0].in[1] <== inp[1]; + + for(i=0; i windows[i+1].in[0]; + windows[i].out[1] ==> windows[i+1].in[1]; + } + + windows[nBlocks-1].out[0] ==> out[0]; + windows[nBlocks-1].out[1] ==> out[1]; +} diff --git a/zkrsa/circom-rsa-verify/circomlib/circuits/escalarmulany.circom b/zkrsa/circom-rsa-verify/circomlib/circuits/escalarmulany.circom new file mode 100644 index 000000000..3f6aec4d6 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/circuits/escalarmulany.circom @@ -0,0 +1,196 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +include "montgomery.circom"; +include "babyjub.circom"; +include "comparators.circom"; + +template Multiplexor2() { + signal input sel; + signal input in[2][2]; + signal output out[2]; + + out[0] <== (in[1][0] - in[0][0])*sel + in[0][0]; + out[1] <== (in[1][1] - in[0][1])*sel + in[0][1]; +} + +template BitElementMulAny() { + signal input sel; + signal input dblIn[2]; + signal input addIn[2]; + signal output dblOut[2]; + signal output addOut[2]; + + component doubler = MontgomeryDouble(); + component adder = MontgomeryAdd(); + component selector = Multiplexor2(); + + + sel ==> selector.sel; + + dblIn[0] ==> doubler.in[0]; + dblIn[1] ==> doubler.in[1]; + doubler.out[0] ==> adder.in1[0]; + doubler.out[1] ==> adder.in1[1]; + addIn[0] ==> adder.in2[0]; + addIn[1] ==> adder.in2[1]; + addIn[0] ==> selector.in[0][0]; + addIn[1] ==> selector.in[0][1]; + adder.out[0] ==> selector.in[1][0]; + adder.out[1] ==> selector.in[1][1]; + + doubler.out[0] ==> dblOut[0]; + doubler.out[1] ==> dblOut[1]; + selector.out[0] ==> addOut[0]; + selector.out[1] ==> addOut[1]; +} + +// p is montgomery point +// n must be <= 248 +// returns out in twisted edwards +// Double is in montgomery to be linked; + +template SegmentMulAny(n) { + signal input e[n]; + signal input p[2]; + signal output out[2]; + signal output dbl[2]; + + component bits[n-1]; + + component e2m = Edwards2Montgomery(); + + p[0] ==> e2m.in[0]; + p[1] ==> e2m.in[1]; + + var i; + + bits[0] = BitElementMulAny(); + e2m.out[0] ==> bits[0].dblIn[0] + e2m.out[1] ==> bits[0].dblIn[1] + e2m.out[0] ==> bits[0].addIn[0] + e2m.out[1] ==> bits[0].addIn[1] + e[1] ==> bits[0].sel; + + for (i=1; i bits[i].dblIn[0] + bits[i-1].dblOut[1] ==> bits[i].dblIn[1] + bits[i-1].addOut[0] ==> bits[i].addIn[0] + bits[i-1].addOut[1] ==> bits[i].addIn[1] + e[i+1] ==> bits[i].sel; + } + + bits[n-2].dblOut[0] ==> dbl[0]; + bits[n-2].dblOut[1] ==> dbl[1]; + + component m2e = Montgomery2Edwards(); + + bits[n-2].addOut[0] ==> m2e.in[0]; + bits[n-2].addOut[1] ==> m2e.in[1]; + + component eadder = BabyAdd(); + + m2e.out[0] ==> eadder.x1; + m2e.out[1] ==> eadder.y1; + -p[0] ==> eadder.x2; + p[1] ==> eadder.y2; + + component lastSel = Multiplexor2(); + + e[0] ==> lastSel.sel; + eadder.xout ==> lastSel.in[0][0]; + eadder.yout ==> lastSel.in[0][1]; + m2e.out[0] ==> lastSel.in[1][0]; + m2e.out[1] ==> lastSel.in[1][1]; + + lastSel.out[0] ==> out[0]; + lastSel.out[1] ==> out[1]; +} + +// This function assumes that p is in the subgroup and it is different to 0 + +template EscalarMulAny(n) { + signal input e[n]; // Input in binary format + signal input p[2]; // Point (Twisted format) + signal output out[2]; // Point (Twisted format) + + var nsegments = (n-1)\148 +1; + var nlastsegment = n - (nsegments-1)*148; + + component segments[nsegments]; + component doublers[nsegments-1]; + component m2e[nsegments-1]; + component adders[nsegments-1]; + component zeropoint = IsZero(); + zeropoint.in <== p[0]; + + var s; + var i; + var nseg; + + for (s=0; s segments[s].e[i]; + } + + if (s==0) { + // force G8 point if input point is zero + segments[s].p[0] <== p[0] + (5299619240641551281634865583518297030282874472190772894086521144482721001553 - p[0])*zeropoint.out; + segments[s].p[1] <== p[1] + (16950150798460657717958625567821834550301663161624707787222815936182638968203 - p[1])*zeropoint.out; + } else { + doublers[s-1] = MontgomeryDouble(); + m2e[s-1] = Montgomery2Edwards(); + adders[s-1] = BabyAdd(); + + segments[s-1].dbl[0] ==> doublers[s-1].in[0]; + segments[s-1].dbl[1] ==> doublers[s-1].in[1]; + + doublers[s-1].out[0] ==> m2e[s-1].in[0]; + doublers[s-1].out[1] ==> m2e[s-1].in[1]; + + m2e[s-1].out[0] ==> segments[s].p[0]; + m2e[s-1].out[1] ==> segments[s].p[1]; + + if (s==1) { + segments[s-1].out[0] ==> adders[s-1].x1; + segments[s-1].out[1] ==> adders[s-1].y1; + } else { + adders[s-2].xout ==> adders[s-1].x1; + adders[s-2].yout ==> adders[s-1].y1; + } + segments[s].out[0] ==> adders[s-1].x2; + segments[s].out[1] ==> adders[s-1].y2; + } + } + + if (nsegments == 1) { + segments[0].out[0]*(1-zeropoint.out) ==> out[0]; + segments[0].out[1]+(1-segments[0].out[1])*zeropoint.out ==> out[1]; + } else { + adders[nsegments-2].xout*(1-zeropoint.out) ==> out[0]; + adders[nsegments-2].yout+(1-adders[nsegments-2].yout)*zeropoint.out ==> out[1]; + } +} diff --git a/zkrsa/circom-rsa-verify/circomlib/circuits/escalarmulfix.circom b/zkrsa/circom-rsa-verify/circomlib/circuits/escalarmulfix.circom new file mode 100644 index 000000000..e2c0998ba --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/circuits/escalarmulfix.circom @@ -0,0 +1,298 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +include "mux3.circom"; +include "montgomery.circom"; +include "babyjub.circom"; + +/* + Window of 3 elements, it calculates + out = base + base*in[0] + 2*base*in[1] + 4*base*in[2] + out4 = 4*base + + The result should be compensated. + */ + +/* + + The scalar is s = a0 + a1*2^3 + a2*2^6 + ...... + a81*2^243 + First We calculate Q = B + 2^3*B + 2^6*B + ......... + 2^246*B + + Then we calculate S1 = 2*2^246*B + (1 + a0)*B + (2^3 + a1)*B + .....+ (2^243 + a81)*B + + And Finaly we compute the result: RES = SQ - Q + + As you can see the input of the adders cannot be equal nor zero, except for the last + substraction that it's done in montgomery. + + A good way to see it is that the accumulator input of the adder >= 2^247*B and the other input + is the output of the windows that it's going to be <= 2^246*B + */ +template WindowMulFix() { + signal input in[3]; + signal input base[2]; + signal output out[2]; + signal output out8[2]; // Returns 8*Base (To be linked) + + component mux = MultiMux3(2); + + mux.s[0] <== in[0]; + mux.s[1] <== in[1]; + mux.s[2] <== in[2]; + + component dbl2 = MontgomeryDouble(); + component adr3 = MontgomeryAdd(); + component adr4 = MontgomeryAdd(); + component adr5 = MontgomeryAdd(); + component adr6 = MontgomeryAdd(); + component adr7 = MontgomeryAdd(); + component adr8 = MontgomeryAdd(); + +// in[0] -> 1*BASE + + mux.c[0][0] <== base[0]; + mux.c[1][0] <== base[1]; + +// in[1] -> 2*BASE + dbl2.in[0] <== base[0]; + dbl2.in[1] <== base[1]; + mux.c[0][1] <== dbl2.out[0]; + mux.c[1][1] <== dbl2.out[1]; + +// in[2] -> 3*BASE + adr3.in1[0] <== base[0]; + adr3.in1[1] <== base[1]; + adr3.in2[0] <== dbl2.out[0]; + adr3.in2[1] <== dbl2.out[1]; + mux.c[0][2] <== adr3.out[0]; + mux.c[1][2] <== adr3.out[1]; + +// in[3] -> 4*BASE + adr4.in1[0] <== base[0]; + adr4.in1[1] <== base[1]; + adr4.in2[0] <== adr3.out[0]; + adr4.in2[1] <== adr3.out[1]; + mux.c[0][3] <== adr4.out[0]; + mux.c[1][3] <== adr4.out[1]; + +// in[4] -> 5*BASE + adr5.in1[0] <== base[0]; + adr5.in1[1] <== base[1]; + adr5.in2[0] <== adr4.out[0]; + adr5.in2[1] <== adr4.out[1]; + mux.c[0][4] <== adr5.out[0]; + mux.c[1][4] <== adr5.out[1]; + +// in[5] -> 6*BASE + adr6.in1[0] <== base[0]; + adr6.in1[1] <== base[1]; + adr6.in2[0] <== adr5.out[0]; + adr6.in2[1] <== adr5.out[1]; + mux.c[0][5] <== adr6.out[0]; + mux.c[1][5] <== adr6.out[1]; + +// in[6] -> 7*BASE + adr7.in1[0] <== base[0]; + adr7.in1[1] <== base[1]; + adr7.in2[0] <== adr6.out[0]; + adr7.in2[1] <== adr6.out[1]; + mux.c[0][6] <== adr7.out[0]; + mux.c[1][6] <== adr7.out[1]; + +// in[7] -> 8*BASE + adr8.in1[0] <== base[0]; + adr8.in1[1] <== base[1]; + adr8.in2[0] <== adr7.out[0]; + adr8.in2[1] <== adr7.out[1]; + mux.c[0][7] <== adr8.out[0]; + mux.c[1][7] <== adr8.out[1]; + + out8[0] <== adr8.out[0]; + out8[1] <== adr8.out[1]; + + out[0] <== mux.out[0]; + out[1] <== mux.out[1]; +} + + +/* + This component does a multiplication of a escalar times a fix base + Signals: + e: The scalar in bits + base: the base point in edwards format + out: The result + dbl: Point in Edwards to be linked to the next segment. + */ + +template SegmentMulFix(nWindows) { + signal input e[nWindows*3]; + signal input base[2]; + signal output out[2]; + signal output dbl[2]; + + var i; + var j; + + // Convert the base to montgomery + + component e2m = Edwards2Montgomery(); + e2m.in[0] <== base[0]; + e2m.in[1] <== base[1]; + + component windows[nWindows]; + component adders[nWindows]; + component cadders[nWindows]; + + // In the last step we add an extra doubler so that numbers do not match. + component dblLast = MontgomeryDouble(); + + for (i=0; i out[0]; + cAdd.yout ==> out[1]; + + windows[nWindows-1].out8[0] ==> dbl[0]; + windows[nWindows-1].out8[1] ==> dbl[1]; +} + + +/* +This component multiplies a escalar times a fixed point BASE (twisted edwards format) + Signals + e: The escalar in binary format + out: The output point in twisted edwards + */ +template EscalarMulFix(n, BASE) { + signal input e[n]; // Input in binary format + signal output out[2]; // Point (Twisted format) + + var nsegments = (n-1)\246 +1; // 249 probably would work. But I'm not sure and for security I keep 246 + var nlastsegment = n - (nsegments-1)*249; + + component segments[nsegments]; + + component m2e[nsegments-1]; + component adders[nsegments-1]; + + var s; + var i; + var nseg; + var nWindows; + + for (s=0; s m2e[s-1].in[0]; + segments[s-1].dbl[1] ==> m2e[s-1].in[1]; + + m2e[s-1].out[0] ==> segments[s].base[0]; + m2e[s-1].out[1] ==> segments[s].base[1]; + + if (s==1) { + segments[s-1].out[0] ==> adders[s-1].x1; + segments[s-1].out[1] ==> adders[s-1].y1; + } else { + adders[s-2].xout ==> adders[s-1].x1; + adders[s-2].yout ==> adders[s-1].y1; + } + segments[s].out[0] ==> adders[s-1].x2; + segments[s].out[1] ==> adders[s-1].y2; + } + } + + if (nsegments == 1) { + segments[0].out[0] ==> out[0]; + segments[0].out[1] ==> out[1]; + } else { + adders[nsegments-2].xout ==> out[0]; + adders[nsegments-2].yout ==> out[1]; + } +} diff --git a/zkrsa/circom-rsa-verify/circomlib/circuits/escalarmulw4table.circom b/zkrsa/circom-rsa-verify/circomlib/circuits/escalarmulw4table.circom new file mode 100644 index 000000000..83498fb5e --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/circuits/escalarmulw4table.circom @@ -0,0 +1,51 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +function pointAdd(x1,y1,x2,y2) { + var a = 168700; + var d = 168696; + + var res[2]; + res[0] = (x1*y2 + y1*x2) / (1 + d*x1*x2*y1*y2); + res[1] = (y1*y2 - a*x1*x2) / (1 - d*x1*x2*y1*y2); + return res; +} + +function EscalarMulW4Table(base, k) { + var out[16][2]; + + var i; + var p[2]; + + var dbl[2] = base; + + for (i=0; i. +*/ + +template XOR() { + signal input a; + signal input b; + signal output out; + + out <== a + b - 2*a*b; +} + +template AND() { + signal input a; + signal input b; + signal output out; + + out <== a*b; +} + +template OR() { + signal input a; + signal input b; + signal output out; + + out <== a + b - a*b; +} + +template NOT() { + signal input in; + signal output out; + + out <== 1 + in - 2*in; +} + +template NAND() { + signal input a; + signal input b; + signal output out; + + out <== 1 - a*b; +} + +template NOR() { + signal input a; + signal input b; + signal output out; + + out <== a*b + 1 - a - b; +} + +template MultiAND(n) { + signal input in[n]; + signal output out; + var i; + if (n==1) { + out <== in[0]; + } else if (n==2) { + component and1 = AND(); + and1.a <== in[0]; + and1.b <== in[1]; + out <== and1.out; + } else { + component and2 = AND(); + component ands[2]; + var n1 = n\2; + var n2 = n-n\2; + ands[0] = MultiAND(n1); + ands[1] = MultiAND(n2); + for (i=0; i. +*/ + +template MiMC7(nrounds) { + signal input x_in; + signal input k; + signal output out; + + var c[91] = [ + 0, + 20888961410941983456478427210666206549300505294776164667214940546594746570981, + 15265126113435022738560151911929040668591755459209400716467504685752745317193, + 8334177627492981984476504167502758309043212251641796197711684499645635709656, + 1374324219480165500871639364801692115397519265181803854177629327624133579404, + 11442588683664344394633565859260176446561886575962616332903193988751292992472, + 2558901189096558760448896669327086721003508630712968559048179091037845349145, + 11189978595292752354820141775598510151189959177917284797737745690127318076389, + 3262966573163560839685415914157855077211340576201936620532175028036746741754, + 17029914891543225301403832095880481731551830725367286980611178737703889171730, + 4614037031668406927330683909387957156531244689520944789503628527855167665518, + 19647356996769918391113967168615123299113119185942498194367262335168397100658, + 5040699236106090655289931820723926657076483236860546282406111821875672148900, + 2632385916954580941368956176626336146806721642583847728103570779270161510514, + 17691411851977575435597871505860208507285462834710151833948561098560743654671, + 11482807709115676646560379017491661435505951727793345550942389701970904563183, + 8360838254132998143349158726141014535383109403565779450210746881879715734773, + 12663821244032248511491386323242575231591777785787269938928497649288048289525, + 3067001377342968891237590775929219083706800062321980129409398033259904188058, + 8536471869378957766675292398190944925664113548202769136103887479787957959589, + 19825444354178182240559170937204690272111734703605805530888940813160705385792, + 16703465144013840124940690347975638755097486902749048533167980887413919317592, + 13061236261277650370863439564453267964462486225679643020432589226741411380501, + 10864774797625152707517901967943775867717907803542223029967000416969007792571, + 10035653564014594269791753415727486340557376923045841607746250017541686319774, + 3446968588058668564420958894889124905706353937375068998436129414772610003289, + 4653317306466493184743870159523234588955994456998076243468148492375236846006, + 8486711143589723036499933521576871883500223198263343024003617825616410932026, + 250710584458582618659378487568129931785810765264752039738223488321597070280, + 2104159799604932521291371026105311735948154964200596636974609406977292675173, + 16313562605837709339799839901240652934758303521543693857533755376563489378839, + 6032365105133504724925793806318578936233045029919447519826248813478479197288, + 14025118133847866722315446277964222215118620050302054655768867040006542798474, + 7400123822125662712777833064081316757896757785777291653271747396958201309118, + 1744432620323851751204287974553233986555641872755053103823939564833813704825, + 8316378125659383262515151597439205374263247719876250938893842106722210729522, + 6739722627047123650704294650168547689199576889424317598327664349670094847386, + 21211457866117465531949733809706514799713333930924902519246949506964470524162, + 13718112532745211817410303291774369209520657938741992779396229864894885156527, + 5264534817993325015357427094323255342713527811596856940387954546330728068658, + 18884137497114307927425084003812022333609937761793387700010402412840002189451, + 5148596049900083984813839872929010525572543381981952060869301611018636120248, + 19799686398774806587970184652860783461860993790013219899147141137827718662674, + 19240878651604412704364448729659032944342952609050243268894572835672205984837, + 10546185249390392695582524554167530669949955276893453512788278945742408153192, + 5507959600969845538113649209272736011390582494851145043668969080335346810411, + 18177751737739153338153217698774510185696788019377850245260475034576050820091, + 19603444733183990109492724100282114612026332366576932662794133334264283907557, + 10548274686824425401349248282213580046351514091431715597441736281987273193140, + 1823201861560942974198127384034483127920205835821334101215923769688644479957, + 11867589662193422187545516240823411225342068709600734253659804646934346124945, + 18718569356736340558616379408444812528964066420519677106145092918482774343613, + 10530777752259630125564678480897857853807637120039176813174150229243735996839, + 20486583726592018813337145844457018474256372770211860618687961310422228379031, + 12690713110714036569415168795200156516217175005650145422920562694422306200486, + 17386427286863519095301372413760745749282643730629659997153085139065756667205, + 2216432659854733047132347621569505613620980842043977268828076165669557467682, + 6309765381643925252238633914530877025934201680691496500372265330505506717193, + 20806323192073945401862788605803131761175139076694468214027227878952047793390, + 4037040458505567977365391535756875199663510397600316887746139396052445718861, + 19948974083684238245321361840704327952464170097132407924861169241740046562673, + 845322671528508199439318170916419179535949348988022948153107378280175750024, + 16222384601744433420585982239113457177459602187868460608565289920306145389382, + 10232118865851112229330353999139005145127746617219324244541194256766741433339, + 6699067738555349409504843460654299019000594109597429103342076743347235369120, + 6220784880752427143725783746407285094967584864656399181815603544365010379208, + 6129250029437675212264306655559561251995722990149771051304736001195288083309, + 10773245783118750721454994239248013870822765715268323522295722350908043393604, + 4490242021765793917495398271905043433053432245571325177153467194570741607167, + 19596995117319480189066041930051006586888908165330319666010398892494684778526, + 837850695495734270707668553360118467905109360511302468085569220634750561083, + 11803922811376367215191737026157445294481406304781326649717082177394185903907, + 10201298324909697255105265958780781450978049256931478989759448189112393506592, + 13564695482314888817576351063608519127702411536552857463682060761575100923924, + 9262808208636973454201420823766139682381973240743541030659775288508921362724, + 173271062536305557219323722062711383294158572562695717740068656098441040230, + 18120430890549410286417591505529104700901943324772175772035648111937818237369, + 20484495168135072493552514219686101965206843697794133766912991150184337935627, + 19155651295705203459475805213866664350848604323501251939850063308319753686505, + 11971299749478202793661982361798418342615500543489781306376058267926437157297, + 18285310723116790056148596536349375622245669010373674803854111592441823052978, + 7069216248902547653615508023941692395371990416048967468982099270925308100727, + 6465151453746412132599596984628739550147379072443683076388208843341824127379, + 16143532858389170960690347742477978826830511669766530042104134302796355145785, + 19362583304414853660976404410208489566967618125972377176980367224623492419647, + 1702213613534733786921602839210290505213503664731919006932367875629005980493, + 10781825404476535814285389902565833897646945212027592373510689209734812292327, + 4212716923652881254737947578600828255798948993302968210248673545442808456151, + 7594017890037021425366623750593200398174488805473151513558919864633711506220, + 18979889247746272055963929241596362599320706910852082477600815822482192194401, + 13602139229813231349386885113156901793661719180900395818909719758150455500533 + ]; + + var t; + signal t2[nrounds]; + signal t4[nrounds]; + signal t6[nrounds]; + signal t7[nrounds-1]; + + for (var i=0; i nRounds should be 220 +template MiMCSponge(nInputs, nRounds, nOutputs) { + signal input ins[nInputs]; + signal input k; + signal output outs[nOutputs]; + + var i; + + // S = R||C + component S[nInputs + nOutputs - 1]; + + for (i = 0; i < nInputs; i++) { + S[i] = MiMCFeistel(nRounds); + S[i].k <== k; + if (i == 0) { + S[i].xL_in <== ins[0]; + S[i].xR_in <== 0; + } else { + S[i].xL_in <== S[i-1].xL_out + ins[i]; + S[i].xR_in <== S[i-1].xR_out; + } + } + + outs[0] <== S[nInputs - 1].xL_out; + + for (i = 0; i < nOutputs - 1; i++) { + S[nInputs + i] = MiMCFeistel(nRounds); + S[nInputs + i].k <== k; + S[nInputs + i].xL_in <== S[nInputs + i - 1].xL_out; + S[nInputs + i].xR_in <== S[nInputs + i - 1].xR_out; + outs[i + 1] <== S[nInputs + i].xL_out; + } +} + +template MiMCFeistel(nrounds) { + signal input xL_in; + signal input xR_in; + signal input k; + signal output xL_out; + signal output xR_out; + + // doesn't contain the first and last round constants, which are always zero + var c_partial[218] = [ + 7120861356467848435263064379192047478074060781135320967663101236819528304084, + 5024705281721889198577876690145313457398658950011302225525409148828000436681, + 17980351014018068290387269214713820287804403312720763401943303895585469787384, + 19886576439381707240399940949310933992335779767309383709787331470398675714258, + 1213715278223786725806155661738676903520350859678319590331207960381534602599, + 18162138253399958831050545255414688239130588254891200470934232514682584734511, + 7667462281466170157858259197976388676420847047604921256361474169980037581876, + 7207551498477838452286210989212982851118089401128156132319807392460388436957, + 9864183311657946807255900203841777810810224615118629957816193727554621093838, + 4798196928559910300796064665904583125427459076060519468052008159779219347957, + 17387238494588145257484818061490088963673275521250153686214197573695921400950, + 10005334761930299057035055370088813230849810566234116771751925093634136574742, + 11897542014760736209670863723231849628230383119798486487899539017466261308762, + 16771780563523793011283273687253985566177232886900511371656074413362142152543, + 749264854018824809464168489785113337925400687349357088413132714480582918506, + 3683645737503705042628598550438395339383572464204988015434959428676652575331, + 7556750851783822914673316211129907782679509728346361368978891584375551186255, + 20391289379084797414557439284689954098721219201171527383291525676334308303023, + 18146517657445423462330854383025300323335289319277199154920964274562014376193, + 8080173465267536232534446836148661251987053305394647905212781979099916615292, + 10796443006899450245502071131975731672911747129805343722228413358507805531141, + 5404287610364961067658660283245291234008692303120470305032076412056764726509, + 4623894483395123520243967718315330178025957095502546813929290333264120223168, + 16845753148201777192406958674202574751725237939980634861948953189320362207797, + 4622170486584704769521001011395820886029808520586507873417553166762370293671, + 16688277490485052681847773549197928630624828392248424077804829676011512392564, + 11878652861183667748838188993669912629573713271883125458838494308957689090959, + 2436445725746972287496138382764643208791713986676129260589667864467010129482, + 1888098689545151571063267806606510032698677328923740058080630641742325067877, + 148924106504065664829055598316821983869409581623245780505601526786791681102, + 18875020877782404439294079398043479420415331640996249745272087358069018086569, + 15189693413320228845990326214136820307649565437237093707846682797649429515840, + 19669450123472657781282985229369348220906547335081730205028099210442632534079, + 5521922218264623411380547905210139511350706092570900075727555783240701821773, + 4144769320246558352780591737261172907511489963810975650573703217887429086546, + 10097732913112662248360143041019433907849917041759137293018029019134392559350, + 1720059427972723034107765345743336447947522473310069975142483982753181038321, + 6302388219880227251325608388535181451187131054211388356563634768253301290116, + 6745410632962119604799318394592010194450845483518862700079921360015766217097, + 10858157235265583624235850660462324469799552996870780238992046963007491306222, + 20241898894740093733047052816576694435372877719072347814065227797906130857593, + 10165780782761211520836029617746977303303335603838343292431760011576528327409, + 2832093654883670345969792724123161241696170611611744759675180839473215203706, + 153011722355526826233082383360057587249818749719433916258246100068258954737, + 20196970640587451358539129330170636295243141659030208529338914906436009086943, + 3180973917010545328313139835982464870638521890385603025657430208141494469656, + 17198004293191777441573635123110935015228014028618868252989374962722329283022, + 7642160509228669138628515458941659189680509753651629476399516332224325757132, + 19346204940546791021518535594447257347218878114049998691060016493806845179755, + 11501810868606870391127866188394535330696206817602260610801897042898616817272, + 3113973447392053821824427670386252797811804954746053461397972968381571297505, + 6545064306297957002139416752334741502722251869537551068239642131448768236585, + 5203908808704813498389265425172875593837960384349653691918590736979872578408, + 2246692432011290582160062129070762007374502637007107318105405626910313810224, + 11760570435432189127645691249600821064883781677693087773459065574359292849137, + 5543749482491340532547407723464609328207990784853381797689466144924198391839, + 8837549193990558762776520822018694066937602576881497343584903902880277769302, + 12855514863299373699594410385788943772765811961581749194183533625311486462501, + 5363660674689121676875069134269386492382220935599781121306637800261912519729, + 13162342403579303950549728848130828093497701266240457479693991108217307949435, + 916941639326869583414469202910306428966657806899788970948781207501251816730, + 15618589556584434434009868216186115416835494805174158488636000580759692174228, + 8959562060028569701043973060670353733575345393653685776974948916988033453971, + 16390754464333401712265575949874369157699293840516802426621216808905079127650, + 168282396747788514908709091757591226095443902501365500003618183905496160435, + 8327443473179334761744301768309008451162322941906921742120510244986704677004, + 17213012626801210615058753489149961717422101711567228037597150941152495100640, + 10394369641533736715250242399198097296122982486516256408681925424076248952280, + 17784386835392322654196171115293700800825771210400152504776806618892170162248, + 16533189939837087893364000390641148516479148564190420358849587959161226782982, + 18725396114211370207078434315900726338547621160475533496863298091023511945076, + 7132325028834551397904855671244375895110341505383911719294705267624034122405, + 148317947440800089795933930720822493695520852448386394775371401743494965187, + 19001050671757720352890779127693793630251266879994702723636759889378387053056, + 18824274411769830274877839365728651108434404855803844568234862945613766611460, + 12771414330193951156383998390424063470766226667986423961689712557338777174205, + 11332046574800279729678603488745295198038913503395629790213378101166488244657, + 9607550223176946388146938069307456967842408600269548190739947540821716354749, + 8756385288462344550200229174435953103162307705310807828651304665320046782583, + 176061952957067086877570020242717222844908281373122372938833890096257042779, + 12200212977482648306758992405065921724409841940671166017620928947866825250857, + 10868453624107875516866146499877130701929063632959660262366632833504750028858, + 2016095394399807253596787752134573207202567875457560571095586743878953450738, + 21815578223768330433802113452339488275704145896544481092014911825656390567514, + 4923772847693564777744725640710197015181591950368494148029046443433103381621, + 1813584943682214789802230765734821149202472893379265320098816901270224589984, + 10810123816265612772922113403831964815724109728287572256602010709288980656498, + 1153669123397255702524721206511185557982017410156956216465120456256288427021, + 5007518659266430200134478928344522649876467369278722765097865662497773767152, + 2511432546938591792036639990606464315121646668029252285288323664350666551637, + 32883284540320451295484135704808083452381176816565850047310272290579727564, + 10484856914279112612610993418405543310546746652738541161791501150994088679557, + 2026733759645519472558796412979210009170379159866522399881566309631434814953, + 14731806221235869882801331463708736361296174006732553130708107037190460654379, + 14740327483193277147065845135561988641238516852487657117813536909482068950652, + 18787428285295558781869865751953016580493190547148386433580291216673009884554, + 3804047064713122820157099453648459188816376755739202017447862327783289895072, + 16709604795697901641948603019242067672006293290826991671766611326262532802914, + 11061717085931490100602849654034280576915102867237101935487893025907907250695, + 2821730726367472966906149684046356272806484545281639696873240305052362149654, + 17467794879902895769410571945152708684493991588672014763135370927880883292655, + 1571520786233540988201616650622796363168031165456869481368085474420849243232, + 10041051776251223165849354194892664881051125330236567356945669006147134614302, + 3981753758468103976812813304477670033098707002886030847251581853700311567551, + 4365864398105436789177703571412645548020537580493599380018290523813331678900, + 2391801327305361293476178683853802679507598622000359948432171562543560193350, + 214219368547551689972421167733597094823289857206402800635962137077096090722, + 18192064100315141084242006659317257023098826945893371479835220462302399655674, + 15487549757142039139328911515400805508248576685795694919457041092150651939253, + 10142447197759703415402259672441315777933858467700579946665223821199077641122, + 11246573086260753259993971254725613211193686683988426513880826148090811891866, + 6574066859860991369704567902211886840188702386542112593710271426704432301235, + 11311085442652291634822798307831431035776248927202286895207125867542470350078, + 20977948360215259915441258687649465618185769343138135384346964466965010873779, + 792781492853909872425531014397300057232399608769451037135936617996830018501, + 5027602491523497423798779154966735896562099398367163998686335127580757861872, + 14595204575654316237672764823862241845410365278802914304953002937313300553572, + 13973538843621261113924259058427434053808430378163734641175100160836376897004, + 16395063164993626722686882727042150241125309409717445381854913964674649318585, + 8465768840047024550750516678171433288207841931251654898809033371655109266663, + 21345603324471810861925019445720576814602636473739003852898308205213912255830, + 21171984405852590343970239018692870799717057961108910523876770029017785940991, + 10761027113757988230637066281488532903174559953630210849190212601991063767647, + 6678298831065390834922566306988418588227382406175769592902974103663687992230, + 4993662582188632374202316265508850988596880036291765531885657575099537176757, + 18364168158495573675698600238443218434246806358811328083953887470513967121206, + 3506345610354615013737144848471391553141006285964325596214723571988011984829, + 248732676202643792226973868626360612151424823368345645514532870586234380100, + 10090204501612803176317709245679152331057882187411777688746797044706063410969, + 21297149835078365363970699581821844234354988617890041296044775371855432973500, + 16729368143229828574342820060716366330476985824952922184463387490091156065099, + 4467191506765339364971058668792642195242197133011672559453028147641428433293, + 8677548159358013363291014307402600830078662555833653517843708051504582990832, + 1022951765127126818581466247360193856197472064872288389992480993218645055345, + 1888195070251580606973417065636430294417895423429240431595054184472931224452, + 4221265384902749246920810956363310125115516771964522748896154428740238579824, + 2825393571154632139467378429077438870179957021959813965940638905853993971879, + 19171031072692942278056619599721228021635671304612437350119663236604712493093, + 10780807212297131186617505517708903709488273075252405602261683478333331220733, + 18230936781133176044598070768084230333433368654744509969087239465125979720995, + 16901065971871379877929280081392692752968612240624985552337779093292740763381, + 146494141603558321291767829522948454429758543710648402457451799015963102253, + 2492729278659146790410698334997955258248120870028541691998279257260289595548, + 2204224910006646535594933495262085193210692406133533679934843341237521233504, + 16062117410185840274616925297332331018523844434907012275592638570193234893570, + 5894928453677122829055071981254202951712129328678534592916926069506935491729, + 4947482739415078212217504789923078546034438919537985740403824517728200332286, + 16143265650645676880461646123844627780378251900510645261875867423498913438066, + 397690828254561723549349897112473766901585444153303054845160673059519614409, + 11272653598912269895509621181205395118899451234151664604248382803490621227687, + 15566927854306879444693061574322104423426072650522411176731130806720753591030, + 14222898219492484180162096141564251903058269177856173968147960855133048449557, + 16690275395485630428127725067513114066329712673106153451801968992299636791385, + 3667030990325966886479548860429670833692690972701471494757671819017808678584, + 21280039024501430842616328642522421302481259067470872421086939673482530783142, + 15895485136902450169492923978042129726601461603404514670348703312850236146328, + 7733050956302327984762132317027414325566202380840692458138724610131603812560, + 438123800976401478772659663183448617575635636575786782566035096946820525816, + 814913922521637742587885320797606426167962526342166512693085292151314976633, + 12368712287081330853637674140264759478736012797026621876924395982504369598764, + 2494806857395134874309386694756263421445039103814920780777601708371037591569, + 16101132301514338989512946061786320637179843435886825102406248183507106312877, + 6252650284989960032925831409804233477770646333900692286731621844532438095656, + 9277135875276787021836189566799935097400042171346561246305113339462708861695, + 10493603554686607050979497281838644324893776154179810893893660722522945589063, + 8673089750662709235894359384294076697329948991010184356091130382437645649279, + 9558393272910366944245875920138649617479779893610128634419086981339060613250, + 19012287860122586147374214541764572282814469237161122489573881644994964647218, + 9783723818270121678386992630754842961728702994964214799008457449989291229500, + 15550788416669474113213749561488122552422887538676036667630838378023479382689, + 15016165746156232864069722572047169071786333815661109750860165034341572904221, + 6506225705710197163670556961299945987488979904603689017479840649664564978574, + 10796631184889302076168355684722130903785890709107732067446714470783437829037, + 19871836214837460419845806980869387567383718044439891735114283113359312279540, + 20871081766843466343749609089986071784031203517506781251203251608363835140622, + 5100105771517691442278432864090229416166996183792075307747582375962855820797, + 8777887112076272395250620301071581171386440850451972412060638225741125310886, + 5300440870136391278944213332144327695659161151625757537632832724102670898756, + 1205448543652932944633962232545707633928124666868453915721030884663332604536, + 5542499997310181530432302492142574333860449305424174466698068685590909336771, + 11028094245762332275225364962905938096659249161369092798505554939952525894293, + 19187314764836593118404597958543112407224947638377479622725713735224279297009, + 17047263688548829001253658727764731047114098556534482052135734487985276987385, + 19914849528178967155534624144358541535306360577227460456855821557421213606310, + 2929658084700714257515872921366736697080475676508114973627124569375444665664, + 15092262360719700162343163278648422751610766427236295023221516498310468956361, + 21578580340755653236050830649990190843552802306886938815497471545814130084980, + 1258781501221760320019859066036073675029057285507345332959539295621677296991, + 3819598418157732134449049289585680301176983019643974929528867686268702720163, + 8653175945487997845203439345797943132543211416447757110963967501177317426221, + 6614652990340435611114076169697104582524566019034036680161902142028967568142, + 19212515502973904821995111796203064175854996071497099383090983975618035391558, + 18664315914479294273286016871365663486061896605232511201418576829062292269769, + 11498264615058604317482574216318586415670903094838791165247179252175768794889, + 10814026414212439999107945133852431304483604215416531759535467355316227331774, + 17566185590731088197064706533119299946752127014428399631467913813769853431107, + 14016139747289624978792446847000951708158212463304817001882956166752906714332, + 8242601581342441750402731523736202888792436665415852106196418942315563860366, + 9244680976345080074252591214216060854998619670381671198295645618515047080988, + 12216779172735125538689875667307129262237123728082657485828359100719208190116, + 10702811721859145441471328511968332847175733707711670171718794132331147396634, + 6479667912792222539919362076122453947926362746906450079329453150607427372979, + 15117544653571553820496948522381772148324367479772362833334593000535648316185, + 6842203153996907264167856337497139692895299874139131328642472698663046726780, + 12732823292801537626009139514048596316076834307941224506504666470961250728055, + 6936272626871035740815028148058841877090860312517423346335878088297448888663, + 17297554111853491139852678417579991271009602631577069694853813331124433680030, + 16641596134749940573104316021365063031319260205559553673368334842484345864859, + 7400481189785154329569470986896455371037813715804007747228648863919991399081, + 2273205422216987330510475127669563545720586464429614439716564154166712854048, + 15162538063742142685306302282127534305212832649282186184583465569986719234456, + 5628039096440332922248578319648483863204530861778160259559031331287721255522, + 16085392195894691829567913404182676871326863890140775376809129785155092531260, + 14227467863135365427954093998621993651369686288941275436795622973781503444257, + 18224457394066545825553407391290108485121649197258948320896164404518684305122, + 274945154732293792784580363548970818611304339008964723447672490026510689427, + 11050822248291117548220126630860474473945266276626263036056336623671308219529, + 2119542016932434047340813757208803962484943912710204325088879681995922344971 + ]; + + var t; + signal t2[nrounds]; + signal t4[nrounds]; + signal xL[nrounds-1]; + signal xR[nrounds-1]; + + var c; + for (var i=0; i. +*/ + +/* + Source: https://en.wikipedia.org/wiki/Montgomery_curve + + 1 + y 1 + y + [u, v] = [ ------- , ---------- ] + 1 - y (1 - y)x + + */ + +template Edwards2Montgomery() { + signal input in[2]; + signal output out[2]; + + out[0] <-- (1 + in[1]) / (1 - in[1]); + out[1] <-- out[0] / in[0]; + + + out[0] * (1-in[1]) === (1 + in[1]); + out[1] * in[0] === out[0]; +} + +/* + + u u - 1 + [x, y] = [ ---, ------- ] + v u + 1 + + */ +template Montgomery2Edwards() { + signal input in[2]; + signal output out[2]; + + out[0] <-- in[0] / in[1]; + out[1] <-- (in[0] - 1) / (in[0] + 1); + + out[0] * in[1] === in[0]; + out[1] * (in[0] + 1) === in[0] - 1; +} + + +/* + x2 - x1 + lamda = --------- + y2 - y1 + + x3 + A + x1 + x2 + x3 = B * lamda^2 - A - x1 -x2 => lamda^2 = ------------------ + B + + y3 = (2*x1 + x2 + A)*lamda - B*lamda^3 - y1 => + + + => y3 = lamda * ( 2*x1 + x2 + A - x3 - A - x1 - x2) - y1 => + + => y3 = lamda * ( x1 - x3 ) - y1 + +---------- + + y2 - y1 + lamda = --------- + x2 - x1 + + x3 = B * lamda^2 - A - x1 -x2 + + y3 = lamda * ( x1 - x3 ) - y1 + + */ + +template MontgomeryAdd() { + signal input in1[2]; + signal input in2[2]; + signal output out[2]; + + var a = 168700; + var d = 168696; + + var A = (2 * (a + d)) / (a - d); + var B = 4 / (a - d); + + signal lamda; + + lamda <-- (in2[1] - in1[1]) / (in2[0] - in1[0]); + lamda * (in2[0] - in1[0]) === (in2[1] - in1[1]); + + out[0] <== B*lamda*lamda - A - in1[0] -in2[0]; + out[1] <== lamda * (in1[0] - out[0]) - in1[1]; +} + +/* + + x1_2 = x1*x1 + + 3*x1_2 + 2*A*x1 + 1 + lamda = --------------------- + 2*B*y1 + + x3 = B * lamda^2 - A - x1 -x1 + + y3 = lamda * ( x1 - x3 ) - y1 + + */ +template MontgomeryDouble() { + signal input in[2]; + signal output out[2]; + + var a = 168700; + var d = 168696; + + var A = (2 * (a + d)) / (a - d); + var B = 4 / (a - d); + + signal lamda; + signal x1_2; + + x1_2 <== in[0] * in[0]; + + lamda <-- (3*x1_2 + 2*A*in[0] + 1 ) / (2*B*in[1]); + lamda * (2*B*in[1]) === (3*x1_2 + 2*A*in[0] + 1 ); + + out[0] <== B*lamda*lamda - A - 2*in[0]; + out[1] <== lamda * (in[0] - out[0]) - in[1]; +} diff --git a/zkrsa/circom-rsa-verify/circomlib/circuits/multiplexer.circom b/zkrsa/circom-rsa-verify/circomlib/circuits/multiplexer.circom new file mode 100644 index 000000000..091bd2be0 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/circuits/multiplexer.circom @@ -0,0 +1,113 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +// --> Assignation without constraint +// <-- Assignation without constraint +// === Constraint +// <== Assignation with constraint +// ==> Assignation with constraint +// All variables are members of the field F[p] +// https://github.com/zcash-hackworks/sapling-crypto +// https://github.com/ebfull/bellman + +/* +function log2(a) { + if (a==0) { + return 0; + } + let n = 1; + let r = 1; + while (n success; + success * (success -1) === 0; +} + + +template Multiplexer(wIn, nIn) { + signal input inp[nIn][wIn]; + signal input sel; + signal output out[wIn]; + component dec = Decoder(nIn); + component ep[wIn]; + + for (var k=0; k dec.inp; + for (var j=0; j ep[j].in1[k]; + dec.out[k] ==> ep[j].in2[k]; + } + ep[j].out ==> out[j]; + } + dec.success === 1; +} diff --git a/zkrsa/circom-rsa-verify/circomlib/circuits/mux1.circom b/zkrsa/circom-rsa-verify/circomlib/circuits/mux1.circom new file mode 100644 index 000000000..3473c6cff --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/circuits/mux1.circom @@ -0,0 +1,47 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +template MultiMux1(n) { + signal input c[n][2]; // Constants + signal input s; // Selector + signal output out[n]; + + for (var i=0; i mux.s; + + mux.out[0] ==> out; +} diff --git a/zkrsa/circom-rsa-verify/circomlib/circuits/mux2.circom b/zkrsa/circom-rsa-verify/circomlib/circuits/mux2.circom new file mode 100644 index 000000000..1e71cf7e0 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/circuits/mux2.circom @@ -0,0 +1,62 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +template MultiMux2(n) { + signal input c[n][4]; // Constants + signal input s[2]; // Selector + signal output out[n]; + + signal a10[n]; + signal a1[n]; + signal a0[n]; + signal a[n]; + + signal s10; + s10 <== s[1] * s[0]; + + for (var i=0; i mux.s[i]; + } + + mux.out[0] ==> out; +} diff --git a/zkrsa/circom-rsa-verify/circomlib/circuits/mux3.circom b/zkrsa/circom-rsa-verify/circomlib/circuits/mux3.circom new file mode 100644 index 000000000..277ead2ef --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/circuits/mux3.circom @@ -0,0 +1,74 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +template MultiMux3(n) { + signal input c[n][8]; // Constants + signal input s[3]; // Selector + signal output out[n]; + + signal a210[n]; + signal a21[n]; + signal a20[n]; + signal a2[n]; + + signal a10[n]; + signal a1[n]; + signal a0[n]; + signal a[n]; + + // 4 constrains for the intermediary variables + signal s10; + s10 <== s[1] * s[0]; + + for (var i=0; i mux.s[i]; + } + + mux.out[0] ==> out; +} diff --git a/zkrsa/circom-rsa-verify/circomlib/circuits/mux4.circom b/zkrsa/circom-rsa-verify/circomlib/circuits/mux4.circom new file mode 100644 index 000000000..c30bb94f5 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/circuits/mux4.circom @@ -0,0 +1,118 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +template MultiMux4(n) { + signal input c[n][16]; // Constants + signal input s[4]; // Selector + signal output out[n]; + + signal a3210[n]; + signal a321[n]; + signal a320[n]; + signal a310[n]; + signal a32[n]; + signal a31[n]; + signal a30[n]; + signal a3[n]; + + signal a210[n]; + signal a21[n]; + signal a20[n]; + signal a10[n]; + signal a2[n]; + signal a1[n]; + signal a0[n]; + signal a[n]; + + // 4 constrains for the intermediary variables + signal s10; + s10 <== s[1] * s[0]; + signal s20; + s20 <== s[2] * s[0]; + signal s21; + s21 <== s[2] * s[1]; + signal s210; + s210 <== s21 * s[0]; + + + for (var i=0; i mux.s[i]; + } + + mux.out[0] ==> out; +} diff --git a/zkrsa/circom-rsa-verify/circomlib/circuits/pedersen.circom b/zkrsa/circom-rsa-verify/circomlib/circuits/pedersen.circom new file mode 100644 index 000000000..4d6f8d11a --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/circuits/pedersen.circom @@ -0,0 +1,256 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +include "montgomery.circom"; +include "mux3.circom"; +include "babyjub.circom"; + +template Window4() { + signal input in[4]; + signal input base[2]; + signal output out[2]; + signal output out8[2]; // Returns 8*Base (To be linked) + + component mux = MultiMux3(2); + + mux.s[0] <== in[0]; + mux.s[1] <== in[1]; + mux.s[2] <== in[2]; + + component dbl2 = MontgomeryDouble(); + component adr3 = MontgomeryAdd(); + component adr4 = MontgomeryAdd(); + component adr5 = MontgomeryAdd(); + component adr6 = MontgomeryAdd(); + component adr7 = MontgomeryAdd(); + component adr8 = MontgomeryAdd(); + +// in[0] -> 1*BASE + + mux.c[0][0] <== base[0]; + mux.c[1][0] <== base[1]; + +// in[1] -> 2*BASE + dbl2.in[0] <== base[0]; + dbl2.in[1] <== base[1]; + mux.c[0][1] <== dbl2.out[0]; + mux.c[1][1] <== dbl2.out[1]; + +// in[2] -> 3*BASE + adr3.in1[0] <== base[0]; + adr3.in1[1] <== base[1]; + adr3.in2[0] <== dbl2.out[0]; + adr3.in2[1] <== dbl2.out[1]; + mux.c[0][2] <== adr3.out[0]; + mux.c[1][2] <== adr3.out[1]; + +// in[3] -> 4*BASE + adr4.in1[0] <== base[0]; + adr4.in1[1] <== base[1]; + adr4.in2[0] <== adr3.out[0]; + adr4.in2[1] <== adr3.out[1]; + mux.c[0][3] <== adr4.out[0]; + mux.c[1][3] <== adr4.out[1]; + +// in[4] -> 5*BASE + adr5.in1[0] <== base[0]; + adr5.in1[1] <== base[1]; + adr5.in2[0] <== adr4.out[0]; + adr5.in2[1] <== adr4.out[1]; + mux.c[0][4] <== adr5.out[0]; + mux.c[1][4] <== adr5.out[1]; + +// in[5] -> 6*BASE + adr6.in1[0] <== base[0]; + adr6.in1[1] <== base[1]; + adr6.in2[0] <== adr5.out[0]; + adr6.in2[1] <== adr5.out[1]; + mux.c[0][5] <== adr6.out[0]; + mux.c[1][5] <== adr6.out[1]; + +// in[6] -> 7*BASE + adr7.in1[0] <== base[0]; + adr7.in1[1] <== base[1]; + adr7.in2[0] <== adr6.out[0]; + adr7.in2[1] <== adr6.out[1]; + mux.c[0][6] <== adr7.out[0]; + mux.c[1][6] <== adr7.out[1]; + +// in[7] -> 8*BASE + adr8.in1[0] <== base[0]; + adr8.in1[1] <== base[1]; + adr8.in2[0] <== adr7.out[0]; + adr8.in2[1] <== adr7.out[1]; + mux.c[0][7] <== adr8.out[0]; + mux.c[1][7] <== adr8.out[1]; + + out8[0] <== adr8.out[0]; + out8[1] <== adr8.out[1]; + + out[0] <== mux.out[0]; + out[1] <== - mux.out[1]*2*in[3] + mux.out[1]; // Negate y if in[3] is one +} + + +template Segment(nWindows) { + signal input in[nWindows*4]; + signal input base[2]; + signal output out[2]; + + var i; + var j; + + // Convert the base to montgomery + + component e2m = Edwards2Montgomery(); + e2m.in[0] <== base[0]; + e2m.in[1] <== base[1]; + + component windows[nWindows]; + component doublers1[nWindows-1]; + component doublers2[nWindows-1]; + component adders[nWindows-1]; + for (i=0; i 1) { + m2e.in[0] <== adders[nWindows-2].out[0]; + m2e.in[1] <== adders[nWindows-2].out[1]; + } else { + m2e.in[0] <== windows[0].out[0]; + m2e.in[1] <== windows[0].out[1]; + } + + out[0] <== m2e.out[0]; + out[1] <== m2e.out[1]; +} + +template Pedersen(n) { + signal input in[n]; + signal output out[2]; + + var BASE[10][2] = [ + [10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317], + [2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094], + [5802099305472655231388284418920769829666717045250560929368476121199858275951,5980429700218124965372158798884772646841287887664001482443826541541529227896], + [7107336197374528537877327281242680114152313102022415488494307685842428166594,2857869773864086953506483169737724679646433914307247183624878062391496185654], + [20265828622013100949498132415626198973119240347465898028410217039057588424236,1160461593266035632937973507065134938065359936056410650153315956301179689506], + [1487999857809287756929114517587739322941449154962237464737694709326309567994,14017256862867289575056460215526364897734808720610101650676790868051368668003], + [14618644331049802168996997831720384953259095788558646464435263343433563860015,13115243279999696210147231297848654998887864576952244320558158620692603342236], + [6814338563135591367010655964669793483652536871717891893032616415581401894627,13660303521961041205824633772157003587453809761793065294055279768121314853695], + [3571615583211663069428808372184817973703476260057504149923239576077102575715,11981351099832644138306422070127357074117642951423551606012551622164230222506], + [18597552580465440374022635246985743886550544261632147935254624835147509493269,6753322320275422086923032033899357299485124665258735666995435957890214041481] + + ]; + + var nSegments = ((n-1)\200)+1; + + component segments[nSegments]; + + var i; + var j; + var nBits; + var nWindows; + for (i=0; i1) { + packPoint.in[0] <== adders[nSegments-2].xout; + packPoint.in[1] <== adders[nSegments-2].yout; + } else { + packPoint.in[0] <== segments[0].out[0]; + packPoint.in[1] <== segments[0].out[1]; + } + + out[0] <== packPoint.out[0]; + out[1] <== packPoint.out[1]; +*/ + + if (nSegments>1) { + out[0] <== adders[nSegments-2].xout; + out[1] <== adders[nSegments-2].yout; + } else { + out[0] <== segments[0].out[0]; + out[1] <== segments[0].out[1]; + } +} + diff --git a/zkrsa/circom-rsa-verify/circomlib/circuits/pedersen_old.circom b/zkrsa/circom-rsa-verify/circomlib/circuits/pedersen_old.circom new file mode 100644 index 000000000..91142860e --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/circuits/pedersen_old.circom @@ -0,0 +1,67 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +include "escalarmul.circom"; + +template Pedersen(n) { + signal input in[n]; + signal output out[2]; + + var nexps = ((n-1) \ 250) + 1; + var nlastbits = n - (nexps-1)*250; + + component escalarMuls[nexps]; + + var PBASE[10][2] = [ + [10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317], + [2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094], + [5802099305472655231388284418920769829666717045250560929368476121199858275951,5980429700218124965372158798884772646841287887664001482443826541541529227896], + [7107336197374528537877327281242680114152313102022415488494307685842428166594,2857869773864086953506483169737724679646433914307247183624878062391496185654], + [20265828622013100949498132415626198973119240347465898028410217039057588424236,1160461593266035632937973507065134938065359936056410650153315956301179689506], + [1487999857809287756929114517587739322941449154962237464737694709326309567994,14017256862867289575056460215526364897734808720610101650676790868051368668003], + [14618644331049802168996997831720384953259095788558646464435263343433563860015,13115243279999696210147231297848654998887864576952244320558158620692603342236], + [6814338563135591367010655964669793483652536871717891893032616415581401894627,13660303521961041205824633772157003587453809761793065294055279768121314853695], + [3571615583211663069428808372184817973703476260057504149923239576077102575715,11981351099832644138306422070127357074117642951423551606012551622164230222506], + [18597552580465440374022635246985743886550544261632147935254624835147509493269,6753322320275422086923032033899357299485124665258735666995435957890214041481] + + ]; + + var i; + var j; + var nexpbits; + for (i=0; i out[0]; + escalarMuls[nexps-1].out[1] ==> out[1]; +} diff --git a/zkrsa/circom-rsa-verify/circomlib/circuits/pointbits.circom b/zkrsa/circom-rsa-verify/circomlib/circuits/pointbits.circom new file mode 100644 index 000000000..9084a8ecf --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/circuits/pointbits.circom @@ -0,0 +1,163 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +include "bitify.circom"; +include "aliascheck.circom"; +include "compconstant.circom"; +include "babyjub.circom"; + + +function sqrt(n) { + + if (n == 0) { + return 0; + } + + // Test that have solution + var res = n ** ((-1) >> 1); +// if (res!=1) assert(false, "SQRT does not exists"); + if (res!=1) return 0; + + var m = 28; + var c = 19103219067921713944291392827692070036145651957329286315305642004821462161904; + var t = n ** 81540058820840996586704275553141814055101440848469862132140264610111; + var r = n ** ((81540058820840996586704275553141814055101440848469862132140264610111+1)>>1); + var sq; + var i; + var b; + var j; + + while ((r != 0)&&(t != 1)) { + sq = t*t; + i = 1; + while (sq!=1) { + i++; + sq = sq*sq; + } + + // b = c ^ m-i-1 + b = c; + for (j=0; j< m-i-1; j ++) b = b*b; + + m = i; + c = b*b; + t = t*c; + r = r*b; + } + + if (r < 0 ) { + r = -r; + } + + return r; +} + + +template Bits2Point() { + signal input in[256]; + signal output out[2]; +} + +template Bits2Point_Strict() { + signal input in[256]; + signal output out[2]; + + var i; + + // Check aliasing + component aliasCheckY = AliasCheck(); + for (i=0; i<254; i++) { + aliasCheckY.in[i] <== in[i]; + } + in[254] === 0; + + component b2nY = Bits2Num(254); + for (i=0; i<254; i++) { + b2nY.in[i] <== in[i]; + } + + out[1] <== b2nY.out; + + var a = 168700; + var d = 168696; + + var y2 = out[1] * out[1]; + + var x = sqrt( (1-y2)/(a - d*y2) ); + + if (in[255] == 1) x = -x; + + out[0] <-- x; + + component babyCheck = BabyCheck(); + babyCheck.x <== out[0]; + babyCheck.y <== out[1]; + + component n2bX = Num2Bits(254); + n2bX.in <== out[0]; + component aliasCheckX = AliasCheck(); + for (i=0; i<254; i++) { + aliasCheckX.in[i] <== n2bX.out[i]; + } + + component signCalc = CompConstant(10944121435919637611123202872628637544274182200208017171849102093287904247808); + for (i=0; i<254; i++) { + signCalc.in[i] <== n2bX.out[i]; + } + + signCalc.out === in[255]; +} + + +template Point2Bits() { + signal input in[2]; + signal output out[256]; + + +} + +template Point2Bits_Strict() { + signal input in[2]; + signal output out[256]; + + var i; + + component n2bX = Num2Bits(254); + n2bX.in <== in[0]; + component n2bY = Num2Bits(254); + n2bY.in <== in[1]; + + component aliasCheckX = AliasCheck(); + component aliasCheckY = AliasCheck(); + for (i=0; i<254; i++) { + aliasCheckX.in[i] <== n2bX.out[i]; + aliasCheckY.in[i] <== n2bY.out[i]; + } + + component signCalc = CompConstant(10944121435919637611123202872628637544274182200208017171849102093287904247808); + for (i=0; i<254; i++) { + signCalc.in[i] <== n2bX.out[i]; + } + + for (i=0; i<254; i++) { + out[i] <== n2bY.out[i]; + } + out[254] <== 0; + out[255] <== signCalc.out; +} diff --git a/zkrsa/circom-rsa-verify/circomlib/circuits/poseidon.circom b/zkrsa/circom-rsa-verify/circomlib/circuits/poseidon.circom new file mode 100644 index 000000000..808cb049c --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/circuits/poseidon.circom @@ -0,0 +1,95 @@ +include "./poseidon_constants.circom"; + +template Sigma() { + signal input in; + signal output out; + + signal in2; + signal in4; + + in2 <== in*in; + in4 <== in2*in2; + + out <== in4*in; +} + +template Ark(t, C, r) { + signal input in[t]; + signal output out[t]; + + for (var i=0; i0) { + ark[i].in[j] <== inputs[j-1]; + } else { + ark[i].in[j] <== 0; + } + } else { + ark[i].in[j] <== mix[i-1].out[j]; + } + } + + if (i < nRoundsF/2 || i >= nRoundsP + nRoundsF/2) { + k = i < nRoundsF/2 ? i : i - nRoundsP; + mix[i] = Mix(t, M); + for (var j=0; j. +*/ + +/* Ch + +000 0 +001 1 +010 0 +011 1 +100 0 +101 0 +110 1 +111 1 + +out = a&b ^ (!a)&c => + +out = a*(b-c) + c + +*/ + +template Ch(n) { + signal input a[n]; + signal input b[n]; + signal input c[n]; + signal output out[n]; + + for (var k=0; k. +*/ + +template H(x) { + signal output out[32]; + var c[8] = [0x6a09e667, + 0xbb67ae85, + 0x3c6ef372, + 0xa54ff53a, + 0x510e527f, + 0x9b05688c, + 0x1f83d9ab, + 0x5be0cd19]; + + for (var i=0; i<32; i++) { + out[i] <== (c[x] >> i) & 1; + } +} + +template K(x) { + signal output out[32]; + var c[64] = [ + 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, + 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, + 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, + 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, + 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, + 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, + 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, + 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 + ]; + + for (var i=0; i<32; i++) { + out[i] <== (c[x] >> i) & 1; + } +} diff --git a/zkrsa/circom-rsa-verify/circomlib/circuits/sha256/main.circom b/zkrsa/circom-rsa-verify/circomlib/circuits/sha256/main.circom new file mode 100644 index 000000000..fbf243485 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/circuits/sha256/main.circom @@ -0,0 +1,34 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +include "sha256_2.jaz"; + +template Main() { + signal private input a; + signal private input b; + signal output out; + + component sha256_2 = SHA256_2(); + + sha256_2.a <== a; + sha256_2.b <== a; + out <== sha256_2.out; +} + +component main = Main(); diff --git a/zkrsa/circom-rsa-verify/circomlib/circuits/sha256/maj.circom b/zkrsa/circom-rsa-verify/circomlib/circuits/sha256/maj.circom new file mode 100644 index 000000000..ee5368743 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/circuits/sha256/maj.circom @@ -0,0 +1,44 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +/* Maj function for sha256 + +out = a&b ^ a&c ^ b&c => + +out = a*b + a*c + b*c - 2*a*b*c => + +out = a*( b + c - 2*b*c ) + b*c => + +mid = b*c +out = a*( b + c - 2*mid ) + mid + +*/ + +template Maj(n) { + signal input a[n]; + signal input b[n]; + signal input c[n]; + signal output out[n]; + signal mid[n]; + + for (var k=0; k. +*/ + +template RotR(n, r) { + signal input in[n]; + signal output out[n]; + + for (var i=0; i> k)&1; + } + + component ha0 = H(0); + component hb0 = H(1); + component hc0 = H(2); + component hd0 = H(3); + component he0 = H(4); + component hf0 = H(5); + component hg0 = H(6); + component hh0 = H(7); + + component sha256compression[nBlocks]; + + for (i=0; i. +*/ + +include "constants.circom"; +include "sha256compression.circom"; +include "../bitify.circom" + +template Sha256_2() { + signal input a; + signal input b; + signal output out; + + var i; + var k; + + component bits2num = Bits2Num(216); + component num2bits[2]; + + num2bits[0] = Num2Bits(216); + num2bits[1] = Num2Bits(216); + + num2bits[0].in <== a; + num2bits[1].in <== b; + + + component sha256compression = Sha256compression() ; + + component ha0 = H(0); + component hb0 = H(1); + component hc0 = H(2); + component hd0 = H(3); + component he0 = H(4); + component hf0 = H(5); + component hg0 = H(6); + component hh0 = H(7); + + for (k=0; k<32; k++ ) { + sha256compression.hin[0*32+k] <== ha0.out[k]; + sha256compression.hin[1*32+k] <== hb0.out[k]; + sha256compression.hin[2*32+k] <== hc0.out[k]; + sha256compression.hin[3*32+k] <== hd0.out[k]; + sha256compression.hin[4*32+k] <== he0.out[k]; + sha256compression.hin[5*32+k] <== hf0.out[k]; + sha256compression.hin[6*32+k] <== hg0.out[k]; + sha256compression.hin[7*32+k] <== hh0.out[k]; + } + + for (i=0; i<216; i++) { + sha256compression.inp[i] <== num2bits[0].out[215-i]; + sha256compression.inp[i+216] <== num2bits[1].out[215-i]; + } + + sha256compression.inp[432] <== 1; + + for (i=433; i<503; i++) { + sha256compression.inp[i] <== 0; + } + + sha256compression.inp[503] <== 1; + sha256compression.inp[504] <== 1; + sha256compression.inp[505] <== 0; + sha256compression.inp[506] <== 1; + sha256compression.inp[507] <== 1; + sha256compression.inp[508] <== 0; + sha256compression.inp[509] <== 0; + sha256compression.inp[510] <== 0; + sha256compression.inp[511] <== 0; + + for (i=0; i<216; i++) { + bits2num.in[i] <== sha256compression.out[255-i]; + } + + out <== bits2num.out; +} diff --git a/zkrsa/circom-rsa-verify/circomlib/circuits/sha256/sha256compression.circom b/zkrsa/circom-rsa-verify/circomlib/circuits/sha256/sha256compression.circom new file mode 100644 index 000000000..afd6bce57 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/circuits/sha256/sha256compression.circom @@ -0,0 +1,165 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +include "constants.circom"; +include "t1.circom"; +include "t2.circom"; +include "../binsum.circom"; +include "sigmaplus.circom"; +include "sha256compression_function.circom"; + + +template Sha256compression() { + signal input hin[256]; + signal input inp[512]; + signal output out[256]; + signal a[65][32]; + signal b[65][32]; + signal c[65][32]; + signal d[65][32]; + signal e[65][32]; + signal f[65][32]; + signal g[65][32]; + signal h[65][32]; + signal w[64][32]; + + + var outCalc[256] = sha256compression(hin, inp); + + var i; + for (i=0; i<256; i++) out[i] <-- outCalc[i]; + + component sigmaPlus[48]; + for (i=0; i<48; i++) sigmaPlus[i] = SigmaPlus(); + + component ct_k[64]; + for (i=0; i<64; i++) ct_k[i] = K(i); + + component t1[64]; + for (i=0; i<64; i++) t1[i] = T1(); + + component t2[64]; + for (i=0; i<64; i++) t2[i] = T2(); + + component suma[64]; + for (i=0; i<64; i++) suma[i] = BinSum(32, 2); + + component sume[64]; + for (i=0; i<64; i++) sume[i] = BinSum(32, 2); + + component fsum[8]; + for (i=0; i<8; i++) fsum[i] = BinSum(32, 2); + + var k; + var t; + + for (t=0; t<64; t++) { + if (t<16) { + for (k=0; k<32; k++) { + w[t][k] <== inp[t*32+31-k]; + } + } else { + for (k=0; k<32; k++) { + sigmaPlus[t-16].in2[k] <== w[t-2][k]; + sigmaPlus[t-16].in7[k] <== w[t-7][k]; + sigmaPlus[t-16].in15[k] <== w[t-15][k]; + sigmaPlus[t-16].in16[k] <== w[t-16][k]; + } + + for (k=0; k<32; k++) { + w[t][k] <== sigmaPlus[t-16].out[k]; + } + } + } + + for (k=0; k<32; k++ ) { + a[0][k] <== hin[k]; + b[0][k] <== hin[32*1 + k]; + c[0][k] <== hin[32*2 + k]; + d[0][k] <== hin[32*3 + k]; + e[0][k] <== hin[32*4 + k]; + f[0][k] <== hin[32*5 + k]; + g[0][k] <== hin[32*6 + k]; + h[0][k] <== hin[32*7 + k]; + } + + for (t = 0; t<64; t++) { + for (k=0; k<32; k++) { + t1[t].h[k] <== h[t][k]; + t1[t].e[k] <== e[t][k]; + t1[t].f[k] <== f[t][k]; + t1[t].g[k] <== g[t][k]; + t1[t].k[k] <== ct_k[t].out[k]; + t1[t].w[k] <== w[t][k]; + + t2[t].a[k] <== a[t][k]; + t2[t].b[k] <== b[t][k]; + t2[t].c[k] <== c[t][k]; + } + + for (k=0; k<32; k++) { + sume[t].in[0][k] <== d[t][k]; + sume[t].in[1][k] <== t1[t].out[k]; + + suma[t].in[0][k] <== t1[t].out[k]; + suma[t].in[1][k] <== t2[t].out[k]; + } + + for (k=0; k<32; k++) { + h[t+1][k] <== g[t][k]; + g[t+1][k] <== f[t][k]; + f[t+1][k] <== e[t][k]; + e[t+1][k] <== sume[t].out[k]; + d[t+1][k] <== c[t][k]; + c[t+1][k] <== b[t][k]; + b[t+1][k] <== a[t][k]; + a[t+1][k] <== suma[t].out[k]; + } + } + + for (k=0; k<32; k++) { + fsum[0].in[0][k] <== hin[32*0+k]; + fsum[0].in[1][k] <== a[64][k]; + fsum[1].in[0][k] <== hin[32*1+k]; + fsum[1].in[1][k] <== b[64][k]; + fsum[2].in[0][k] <== hin[32*2+k]; + fsum[2].in[1][k] <== c[64][k]; + fsum[3].in[0][k] <== hin[32*3+k]; + fsum[3].in[1][k] <== d[64][k]; + fsum[4].in[0][k] <== hin[32*4+k]; + fsum[4].in[1][k] <== e[64][k]; + fsum[5].in[0][k] <== hin[32*5+k]; + fsum[5].in[1][k] <== f[64][k]; + fsum[6].in[0][k] <== hin[32*6+k]; + fsum[6].in[1][k] <== g[64][k]; + fsum[7].in[0][k] <== hin[32*7+k]; + fsum[7].in[1][k] <== h[64][k]; + } + + for (k=0; k<32; k++) { + out[31-k] === fsum[0].out[k]; + out[32+31-k] === fsum[1].out[k]; + out[64+31-k] === fsum[2].out[k]; + out[96+31-k] === fsum[3].out[k]; + out[128+31-k] === fsum[4].out[k]; + out[160+31-k] === fsum[5].out[k]; + out[192+31-k] === fsum[6].out[k]; + out[224+31-k] === fsum[7].out[k]; + } +} diff --git a/zkrsa/circom-rsa-verify/circomlib/circuits/sha256/sha256compression_function.circom b/zkrsa/circom-rsa-verify/circomlib/circuits/sha256/sha256compression_function.circom new file mode 100644 index 000000000..2c1ef2a19 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/circuits/sha256/sha256compression_function.circom @@ -0,0 +1,112 @@ +// signal input hin[256]; +// signal input inp[512]; +// signal output out[256]; + + +function rrot(x, n) { + return ((x >> n) | (x << (32-n))) & 0xFFFFFFFF; +} + +function bsigma0(x) { + return rrot(x,2) ^ rrot(x,13) ^ rrot(x,22); +} + +function bsigma1(x) { + return rrot(x,6) ^ rrot(x,11) ^ rrot(x,25); +} + +function ssigma0(x) { + return rrot(x,7) ^ rrot(x,18) ^ (x >> 3); +} + +function ssigma1(x) { + return rrot(x,17) ^ rrot(x,19) ^ (x >> 10); +} + +function Maj(x, y, z) { + return (x&y) ^ (x&z) ^ (y&z); +} + +function Ch(x, y, z) { + return (x & y) ^ ((0xFFFFFFFF ^x) & z); +} + +function sha256K(i) { + var k[64] = [ + 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, + 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, + 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, + 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, + 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, + 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, + 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, + 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 + ]; + return k[i]; +} + +function sha256compression(hin, inp) { + var H[8]; + var a; + var b; + var c; + var d; + var e; + var f; + var g; + var h; + var out[256]; + for (var i=0; i<8; i++) { + H[i] = 0; + for (var j=0; j<32; j++) { + H[i] += hin[i*32+j] << j; + } + } + a=H[0]; + b=H[1]; + c=H[2]; + d=H[3]; + e=H[4]; + f=H[5]; + g=H[6]; + h=H[7]; + var w[64]; + var T1; + var T2; + for (var i=0; i<64; i++) { + if (i<16) { + w[i]=0; + for (var j=0; j<32; j++) { + w[i] += inp[i*32+31-j]<> j) & 1; + } + } + return out; +} diff --git a/zkrsa/circom-rsa-verify/circomlib/circuits/sha256/shift.circom b/zkrsa/circom-rsa-verify/circomlib/circuits/sha256/shift.circom new file mode 100644 index 000000000..bdff3fde2 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/circuits/sha256/shift.circom @@ -0,0 +1,32 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +template ShR(n, r) { + signal input in[n]; + signal output out[n]; + + for (var i=0; i= n) { + out[i] <== 0; + } else { + out[i] <== in[ i+r ]; + } + } +} + diff --git a/zkrsa/circom-rsa-verify/circomlib/circuits/sha256/sigma.circom b/zkrsa/circom-rsa-verify/circomlib/circuits/sha256/sigma.circom new file mode 100644 index 000000000..0661e532f --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/circuits/sha256/sigma.circom @@ -0,0 +1,76 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +include "xor3.circom"; +include "rotate.circom"; +include "shift.circom"; + +template SmallSigma(ra, rb, rc) { + signal input in[32]; + signal output out[32]; + var k; + + component rota = RotR(32, ra); + component rotb = RotR(32, rb); + component shrc = ShR(32, rc); + + for (k=0; k<32; k++) { + rota.in[k] <== in[k]; + rotb.in[k] <== in[k]; + shrc.in[k] <== in[k]; + } + + component xor3 = Xor3(32); + for (k=0; k<32; k++) { + xor3.a[k] <== rota.out[k]; + xor3.b[k] <== rotb.out[k]; + xor3.c[k] <== shrc.out[k]; + } + + for (k=0; k<32; k++) { + out[k] <== xor3.out[k]; + } +} + +template BigSigma(ra, rb, rc) { + signal input in[32]; + signal output out[32]; + var k; + + component rota = RotR(32, ra); + component rotb = RotR(32, rb); + component rotc = RotR(32, rc); + for (k=0; k<32; k++) { + rota.in[k] <== in[k]; + rotb.in[k] <== in[k]; + rotc.in[k] <== in[k]; + } + + component xor3 = Xor3(32); + + for (k=0; k<32; k++) { + xor3.a[k] <== rota.out[k]; + xor3.b[k] <== rotb.out[k]; + xor3.c[k] <== rotc.out[k]; + } + + for (k=0; k<32; k++) { + out[k] <== xor3.out[k]; + } +} diff --git a/zkrsa/circom-rsa-verify/circomlib/circuits/sha256/sigmaplus.circom b/zkrsa/circom-rsa-verify/circomlib/circuits/sha256/sigmaplus.circom new file mode 100644 index 000000000..49637e407 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/circuits/sha256/sigmaplus.circom @@ -0,0 +1,49 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +include "../binsum.circom" +include "sigma.circom" + +template SigmaPlus() { + signal input in2[32]; + signal input in7[32]; + signal input in15[32]; + signal input in16[32]; + signal output out[32]; + var k; + + component sigma1 = SmallSigma(17,19,10); + component sigma0 = SmallSigma(7, 18, 3); + for (k=0; k<32; k++) { + sigma1.in[k] <== in2[k]; + sigma0.in[k] <== in15[k]; + } + + component sum = BinSum(32, 4); + for (k=0; k<32; k++) { + sum.in[0][k] <== sigma1.out[k]; + sum.in[1][k] <== in7[k]; + sum.in[2][k] <== sigma0.out[k]; + sum.in[3][k] <== in16[k]; + } + + for (k=0; k<32; k++) { + out[k] <== sum.out[k]; + } +} diff --git a/zkrsa/circom-rsa-verify/circomlib/circuits/sha256/t1.circom b/zkrsa/circom-rsa-verify/circomlib/circuits/sha256/t1.circom new file mode 100644 index 000000000..369b46556 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/circuits/sha256/t1.circom @@ -0,0 +1,57 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +include "../binsum.circom"; +include "sigma.circom"; +include "ch.circom"; + +template T1() { + signal input h[32]; + signal input e[32]; + signal input f[32]; + signal input g[32]; + signal input k[32]; + signal input w[32]; + signal output out[32]; + + var ki; + + component ch = Ch(32); + component bigsigma1 = BigSigma(6, 11, 25); + + for (ki=0; ki<32; ki++) { + bigsigma1.in[ki] <== e[ki]; + ch.a[ki] <== e[ki]; + ch.b[ki] <== f[ki]; + ch.c[ki] <== g[ki]; + } + + component sum = BinSum(32, 5); + for (ki=0; ki<32; ki++) { + sum.in[0][ki] <== h[ki]; + sum.in[1][ki] <== bigsigma1.out[ki]; + sum.in[2][ki] <== ch.out[ki]; + sum.in[3][ki] <== k[ki]; + sum.in[4][ki] <== w[ki]; + } + + for (ki=0; ki<32; ki++) { + out[ki] <== sum.out[ki]; + } +} diff --git a/zkrsa/circom-rsa-verify/circomlib/circuits/sha256/t2.circom b/zkrsa/circom-rsa-verify/circomlib/circuits/sha256/t2.circom new file mode 100644 index 000000000..5a55728e3 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/circuits/sha256/t2.circom @@ -0,0 +1,50 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +include "../binsum.circom"; +include "sigma.circom"; +include "maj.circom" + +template T2() { + signal input a[32]; + signal input b[32]; + signal input c[32]; + signal output out[32]; + var k; + + component bigsigma0 = BigSigma(2, 13, 22); + component maj = Maj(32); + for (k=0; k<32; k++) { + bigsigma0.in[k] <== a[k]; + maj.a[k] <== a[k]; + maj.b[k] <== b[k]; + maj.c[k] <== c[k]; + } + + component sum = BinSum(32, 2); + + for (k=0; k<32; k++) { + sum.in[0][k] <== bigsigma0.out[k]; + sum.in[1][k] <== maj.out[k]; + } + + for (k=0; k<32; k++) { + out[k] <== sum.out[k]; + } +} diff --git a/zkrsa/circom-rsa-verify/circomlib/circuits/sha256/xor3.circom b/zkrsa/circom-rsa-verify/circomlib/circuits/sha256/xor3.circom new file mode 100644 index 000000000..9bbe76ce8 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/circuits/sha256/xor3.circom @@ -0,0 +1,44 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +/* Xor3 function for sha256 + +out = a ^ b ^ c => + +out = a+b+c - 2*a*b - 2*a*c - 2*b*c + 4*a*b*c => + +out = a*( 1 - 2*b - 2*c + 4*b*c ) + b + c - 2*b*c => + +mid = b*c +out = a*( 1 - 2*b -2*c + 4*mid ) + b + c - 2 * mid + +*/ + +template Xor3(n) { + signal input a[n]; + signal input b[n]; + signal input c[n]; + signal output out[n]; + signal mid[n]; + + for (var k=0; k. +*/ + +include "compconstant.circom"; + +template Sign() { + signal input in[254]; + signal output sign; + + component comp = CompConstant(10944121435919637611123202872628637544274182200208017171849102093287904247808); + + var i; + + for (i=0; i<254; i++) { + comp.in[i] <== in[i]; + } + + sign <== comp.out; +} diff --git a/zkrsa/circom-rsa-verify/circomlib/circuits/smt/smthash_mimc.circom b/zkrsa/circom-rsa-verify/circomlib/circuits/smt/smthash_mimc.circom new file mode 100644 index 000000000..bad5290a1 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/circuits/smt/smthash_mimc.circom @@ -0,0 +1,57 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +include "../mimc.circom"; + + +/* + Hash1 = H(1 | key | value) + */ + +template SMTHash1() { + signal input key; + signal input value; + signal output out; + + component h = MultiMiMC7(2, 91); // Constant + h.in[0] <== key; + h.in[1] <== value; + h.k <== 1; + + out <== h.out; +} + +/* + This component is used to create the 2 nodes. + + Hash2 = H(Hl | Hr) + */ + +template SMTHash2() { + signal input L; + signal input R; + signal output out; + + component h = MultiMiMC7(2, 91); // Constant + h.in[0] <== L; + h.in[1] <== R; + h.k <== 0; + + out <== h.out; +} diff --git a/zkrsa/circom-rsa-verify/circomlib/circuits/smt/smthash_poseidon.circom b/zkrsa/circom-rsa-verify/circomlib/circuits/smt/smthash_poseidon.circom new file mode 100644 index 000000000..263c92949 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/circuits/smt/smthash_poseidon.circom @@ -0,0 +1,56 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +include "../poseidon.circom"; + + +/* + Hash1 = H(1 | key | value) + */ + +template SMTHash1() { + signal input key; + signal input value; + signal output out; + + component h = Poseidon(3); // Constant + h.inputs[0] <== key; + h.inputs[1] <== value; + h.inputs[2] <== 1; + + out <== h.out; +} + +/* + This component is used to create the 2 nodes. + + Hash2 = H(Hl | Hr) + */ + +template SMTHash2() { + signal input L; + signal input R; + signal output out; + + component h = Poseidon(2); // Constant + h.inputs[0] <== L; + h.inputs[1] <== R; + + out <== h.out; +} diff --git a/zkrsa/circom-rsa-verify/circomlib/circuits/smt/smtlevins.circom b/zkrsa/circom-rsa-verify/circomlib/circuits/smt/smtlevins.circom new file mode 100644 index 000000000..82f05132b --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/circuits/smt/smtlevins.circom @@ -0,0 +1,102 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +/* + +This component finds the level where the oldInsert is done. +The rules are: + +levIns[i] == 1 if its level and all the child levels have a sibling of 0 and +the parent level has a sibling != 0. Considere that the root level always has +a parent with a sibling != 0. + + + ┌──────────────┐ + │ │ + │ │───▶ levIns[0] <== (1-done[i]) + │ │ + └──────────────┘ + ▲ + │ + │ + done[0] + + + + done[i-1] <== levIns[i] + done[i] + ▲ + │ + │ + ┌───────────┐ ┌──────────────┐ + │ │ │ │ + sibling[i-1]───▶│IsZero[i-1]│─▶│ │───▶ levIns[i] <== (1-done[i])*(1-isZero[i-1].out) + │ │ │ │ + └───────────┘ └──────────────┘ + ▲ + │ + │ + done[i] + + + + done[n-2] <== levIns[n-1] + ▲ + │ + │ + ┌───────────┐ ┌──────────────┐ + │ │ │ │ + sibling[n-2]───▶│IsZero[n-2]│─▶│ │────▶ levIns[n-1] <== (1-isZero[n-2].out) + │ │ │ │ + └───────────┘ └──────────────┘ + + ┌───────────┐ + │ │ + sibling[n-1]───▶│IsZero[n-1]│────▶ === 0 + │ │ + └───────────┘ + + */ + +template SMTLevIns(nLevels) { + signal input enabled; + signal input siblings[nLevels]; + signal output levIns[nLevels]; + signal done[nLevels-1]; // Indicates if the insLevel has aready been detected. + + var i; + + component isZero[nLevels]; + + for (i=0; i0; i--) { + levIns[i] <== (1-done[i])*(1-isZero[i-1].out) + done[i-1] <== levIns[i] + done[i]; + } + + levIns[0] <== (1-done[0]); +} diff --git a/zkrsa/circom-rsa-verify/circomlib/circuits/smt/smtprocessor.circom b/zkrsa/circom-rsa-verify/circomlib/circuits/smt/smtprocessor.circom new file mode 100644 index 000000000..61f8bed84 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/circuits/smt/smtprocessor.circom @@ -0,0 +1,260 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +/*************************************************************************************************** + +SMTProcessor: Sparse Merkle Tree processor is a component to verify an insert/update/delete elements +into the Sparse Merkle tree. + + +Insert to an empty leaf +======================= + + STATE OLD STATE NEW STATE + ===== ========= ========= + + oldRoot newRoot + ▲ ▲ + │ │ + ┌───────┐ ┏━━━┻━━━┓ ┌───────┐ ┏━━━┻━━━┓ + top │Sibling├────▶┃ Hash ┃◀─┐ │Sibling├────▶┃ Hash ┃◀─┐ + └───────┘ ┗━━━━━━━┛ │ └───────┘ ┗━━━━━━━┛ │ + │ │ + │ │ + ┏━━━┻━━━┓ ┌───────┐ ┏━━━┻━━━┓ ┌───────┐ + top ┌─────▶┃ Hash ┃◀──┤Sibling│ ┌─────▶┃ Hash ┃◀──┤Sibling│ + │ ┗━━━━━━━┛ └───────┘ │ ┗━━━━━━━┛ └───────┘ + │ │ + │ │ + ┌───────┐ ┏━━━┻━━━┓ ┌───────┐ ┏━━━┻━━━┓ + top │Sibling├──▶┃ Hash ┃◀─────┐ │Sibling├──▶┃ Hash ┃◀─────┐ + └───────┘ ┗━━━━━━━┛ │ └───────┘ ┗━━━━━━━┛ │ + │ │ + │ │ + ┌────┴────┐ ┌────┴────┐ + old0 │ 0 │ │New1Leaf │ + └─────────┘ └─────────┘ + + + ┏━━━━━━━┓ ┏━━━━━━━┓ + na ┃ Hash ┃ ┃ Hash ┃ + ┗━━━━━━━┛ ┗━━━━━━━┛ + + + ┏━━━━━━━┓ ┏━━━━━━━┓ + na ┃ Hash ┃ ┃ Hash ┃ + ┗━━━━━━━┛ ┗━━━━━━━┛ + + + +Insert to a used leaf. +===================== + + STATE OLD STATE NEW STATE + ===== ========= ========= + + + oldRoot newRoot + ▲ ▲ + │ │ + ┌───────┐ ┏━━━┻━━━┓ ┌───────┐ ┏━━━┻━━━┓ + top │Sibling├────▶┃ Hash ┃◀─┐ │Sibling├────▶┃ Hash ┃◀─┐ + └───────┘ ┗━━━━━━━┛ │ └───────┘ ┗━━━━━━━┛ │ + │ │ + │ │ + ┏━━━┻━━━┓ ┌───────┐ ┏━━━┻━━━┓ ┌───────┐ + top ┌─────▶┃ Hash ┃◀──┤Sibling│ ┌─────▶┃ Hash ┃◀──┤Sibling│ + │ ┗━━━━━━━┛ └───────┘ │ ┗━━━━━━━┛ └───────┘ + │ │ + │ │ + ┌───────┐ ┏━━━┻━━━┓ ┌───────┐ ┏━━━┻━━━┓ + top │Sibling├──▶┃ Hash ┃◀─────┐ │Sibling├──▶┃ Hash ┃◀─────┐ + └───────┘ ┗━━━━━━━┛ │ └───────┘ ┗━━━━━━━┛ │ + │ │ + │ │ + ┌────┴────┐ ┏━━━┻━━━┓ ┌───────┐ + bot │Old1Leaf │ ┌─────▶┃ Hash ┃◀──┼─ 0 │ + └─────────┘ │ ┗━━━━━━━┛ └───────┘ + │ + │ + ┏━━━━━━━┓ ┌───────┐ ┏━━━┻━━━┓ + bot ┃ Hash ┃ │ 0 ─┼──▶┃ Hash ┃◀─────┐ + ┗━━━━━━━┛ └───────┘ ┗━━━━━━━┛ │ + │ + │ + ┏━━━━━━━┓ ┏━━━┻━━━┓ ┌───────┐ + bot ┃ Hash ┃ ┌─────▶┃ Hash ┃◀──│ 0 │ + ┗━━━━━━━┛ │ ┗━━━━━━━┛ └───────┘ + │ + │ + ┏━━━━━━━┓ ┌─────────┐ ┏━━━┻━━━┓ ┌─────────┐ + new1 ┃ Hash ┃ │Old1Leaf ├──▶┃ Hash ┃◀──│New1Leaf │ + ┗━━━━━━━┛ └─────────┘ ┗━━━━━━━┛ └─────────┘ + + + ┏━━━━━━━┓ ┏━━━━━━━┓ + na ┃ Hash ┃ ┃ Hash ┃ + ┗━━━━━━━┛ ┗━━━━━━━┛ + + + ┏━━━━━━━┓ ┏━━━━━━━┓ + na ┃ Hash ┃ ┃ Hash ┃ + ┗━━━━━━━┛ ┗━━━━━━━┛ + + +Fnction +fnc[0] fnc[1] +0 0 NOP +0 1 UPDATE +1 0 INSERT +1 1 DELETE + + +***************************************************************************************************/ + +include "../gates.circom"; +include "../bitify.circom"; +include "../comparators.circom"; +include "../switcher.circom"; +include "smtlevins.circom"; +include "smtprocessorlevel.circom"; +include "smtprocessorsm.circom"; +include "smthash_poseidon.circom"; + +template SMTProcessor(nLevels) { + signal input oldRoot; + signal output newRoot; + signal input siblings[nLevels]; + signal input oldKey; + signal input oldValue; + signal input isOld0; + signal input newKey; + signal input newValue; + signal input fnc[2]; + + signal enabled; + + var i; + + enabled <== fnc[0] + fnc[1] - fnc[0]*fnc[1] + + component hash1Old = SMTHash1(); + hash1Old.key <== oldKey; + hash1Old.value <== oldValue; + + component hash1New = SMTHash1(); + hash1New.key <== newKey; + hash1New.value <== newValue; + + component n2bOld = Num2Bits_strict(); + component n2bNew = Num2Bits_strict(); + + n2bOld.in <== oldKey; + n2bNew.in <== newKey; + + component smtLevIns = SMTLevIns(nLevels); + for (i=0; i. +*/ + +/****** + +SMTProcessorLevel + +This circuit has 2 hash + +Outputs according to the state. + +State oldRoot newRoot +===== ======= ======= +top H'(oldChild, sibling) H'(newChild, sibling) +old0 0 new1leaf +bot old1leaf H'(newChild, 0) +new1 old1leaf H'(new1leaf, old1leaf) +na 0 0 + +upd old1leaf new1leaf + +H' is the Hash function with the inputs shifted acordingly. + +*****/ + + +template SMTProcessorLevel() { + signal input st_top; + signal input st_old0; + signal input st_bot; + signal input st_new1; + signal input st_na; + signal input st_upd; + + signal output oldRoot; + signal output newRoot; + signal input sibling; + signal input old1leaf; + signal input new1leaf; + signal input newlrbit; + signal input oldChild; + signal input newChild; + + signal aux[4]; + + component oldProofHash = SMTHash2(); + component newProofHash = SMTHash2(); + + component oldSwitcher = Switcher(); + component newSwitcher = Switcher(); + + // Old side + + oldSwitcher.L <== oldChild; + oldSwitcher.R <== sibling; + + oldSwitcher.sel <== newlrbit; + oldProofHash.L <== oldSwitcher.outL; + oldProofHash.R <== oldSwitcher.outR; + + aux[0] <== old1leaf * (st_bot + st_new1 + st_upd); + oldRoot <== aux[0] + oldProofHash.out * st_top; + + // New side + + aux[1] <== newChild * ( st_top + st_bot); + newSwitcher.L <== aux[1] + new1leaf*st_new1; + + aux[2] <== sibling*st_top; + newSwitcher.R <== aux[2] + old1leaf*st_new1; + + newSwitcher.sel <== newlrbit; + newProofHash.L <== newSwitcher.outL; + newProofHash.R <== newSwitcher.outR; + + aux[3] <== newProofHash.out * (st_top + st_bot + st_new1); + newRoot <== aux[3] + new1leaf * (st_old0 + st_upd); +} diff --git a/zkrsa/circom-rsa-verify/circomlib/circuits/smt/smtprocessorsm.circom b/zkrsa/circom-rsa-verify/circomlib/circuits/smt/smtprocessorsm.circom new file mode 100644 index 000000000..fac95b0d3 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/circuits/smt/smtprocessorsm.circom @@ -0,0 +1,164 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +/*************************************************************************************************** +Each level on a SMTProcessor has a state. + +The state of the level depends on the state of te botom level and on `xor` and +`is0` signals. + +`isOldLev` 1 when is the level where oldLeaf is. + +`xor` signal is 0 if the index bit at the current level is the same in the old +and the new index, and 1 if it is different. + +`is0` signal, is 1 if we are inserting/deleting in an empty leaf and 0 if we +are inserting/deleting in a leaf that contains an element. + +The states are: + +top: While the index bits of the old and new insex in the top level is the same, whe are in the top state. +old0: When the we reach insert level, we go to old0 state +if `is0`=1. +btn: Once in insert level and `is0` =0 we go to btn or new1 level if xor=1 +new1: This level is reached when xor=1. Here is where we insert/delete the hash of the +old and the new trees with just one element. +na: Not appliable. After processing it, we go to the na level. + + +Fnction +fnc[0] fnc[1] +0 0 NOP +0 1 UPDATE +1 0 INSERT +1 1 DELETE + + + ########### + # # + ┌────────────────────────────▶# upd #─────────────────────┐ + │ ## ## │ + │ ######### │ + levIns=1 │ │ + fnc[0]=0 │ │ any + │ │ + │ │ + │ │ + │ ########### │ + │ levIns=1 # # │ + levIns=0 │ is0=1 ┌────────────▶# old0 #────────┐ │ any + ┌─────┐ │ fnc[0]=1│ ## ## │ │ ┌──────┐ + │ │ │ │ ######### │ any │ │ │ + │ ▼ │ │ │ ▼ ▼ │ + │ ########### │ │ ########### │ + │ # # ────────────┘ └────────▶# #│ + └──# top # # na # + ## ## ───────────────────┐ levIns=1 ┌──▶## ## + ######### │ is0=0 │ ######### + │ │ fnc[0]=1 │ + │ │ xor=1 ########### │ any + │ └──────────────────▶# # │ + │ # new1 #──┘ + │ ## ## + └────────────────────────────────┐ ######### + levIns=1 │ ▲ + is0=0 │ ┌─────┘ + fnc[0]=1 │ ###########│ xor=1 + xor=0 │ # # + ▼# btn # + ## ## + #########◀───────┐ + │ │ + │ │ + └────────────┘ + xor=0 + +***************************************************************************************************/ + +template SMTProcessorSM() { + signal input xor; + signal input is0; + signal input levIns; + signal input fnc[2]; + + signal input prev_top; + signal input prev_old0; + signal input prev_bot; + signal input prev_new1; + signal input prev_na; + signal input prev_upd; + + signal output st_top; + signal output st_old0; + signal output st_bot; + signal output st_new1; + signal output st_na; + signal output st_upd; + + signal aux1; + signal aux2; + + aux1 <== prev_top * levIns; + aux2 <== aux1*fnc[0]; // prev_top * levIns * fnc[0] + + // st_top = prev_top*(1-levIns) + // = + prev_top + // - prev_top * levIns = aux1 + + st_top <== prev_top - aux1; + + // st_old0 = prev_top * levIns * is0 * fnc[0] + // = + prev_top * levIns * is0 * fnc[0] = aux2 * is0 + + st_old0 <== aux2 * is0; // prev_top * levIns * is0 * fnc[0] + + // st_new1 = prev_top * levIns * (1-is0)*fnc[0] * xor + prev_bot*xor = + // = + prev_top * levIns * fnc[0] * xor = aux2 * xor + // - prev_top * levIns * is0 * fnc[0] * xor = st_old0 * xor + // + prev_bot * xor = prev_bot * xor + + st_new1 <== (aux2 - st_old0 + prev_bot)*xor; + + + // st_bot = prev_top * levIns * (1-is0)*fnc[0] * (1-xor) + prev_bot*(1-xor); + // = + prev_top * levIns * fnc[0] + // - prev_top * levIns * is0 * fnc[0] + // - prev_top * levIns * fnc[0] * xor + // + prev_top * levIns * is0 * fnc[0] * xor + // + prev_bot + // - prev_bot * xor + + st_bot <== (1-xor) * (aux2 - st_old0 + prev_bot) + + + // st_upd = prev_top * (1-fnc[0]) *levIns; + // = + prev_top * levIns + // - prev_top * levIns * fnc[0] + + st_upd <== aux1 - aux2 + + // st_na = prev_new1 + prev_old0 + prev_na + prev_upd; + // = + prev_new1 + // + prev_old0 + // + prev_na + // + prev_upd + + st_na <== prev_new1 + prev_old0 + prev_na + prev_upd; + +} diff --git a/zkrsa/circom-rsa-verify/circomlib/circuits/smt/smtverifier.circom b/zkrsa/circom-rsa-verify/circomlib/circuits/smt/smtverifier.circom new file mode 100644 index 000000000..23cfc150e --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/circuits/smt/smtverifier.circom @@ -0,0 +1,137 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +/* + +SMTVerifier is a component to verify inclusion/exclusion of an element in the tree + + +fnc: 0 -> VERIFY INCLUSION + 1 -> VERIFY NOT INCLUSION + + */ + + +include "../gates.circom"; +include "../bitify.circom"; +include "../comparators.circom"; +include "../switcher.circom"; +include "smtlevins.circom"; +include "smtverifierlevel.circom"; +include "smtverifiersm.circom"; +include "smthash_poseidon.circom"; + +template SMTVerifier(nLevels) { + signal input enabled; + signal input root; + signal input siblings[nLevels]; + signal input oldKey; + signal input oldValue; + signal input isOld0; + signal input key; + signal input value; + signal input fnc; + + var i; + + component hash1Old = SMTHash1(); + hash1Old.key <== oldKey; + hash1Old.value <== oldValue; + + component hash1New = SMTHash1(); + hash1New.key <== key; + hash1New.value <== value; + + component n2bOld = Num2Bits_strict(); + component n2bNew = Num2Bits_strict(); + + n2bOld.in <== oldKey; + n2bNew.in <== key; + + component smtLevIns = SMTLevIns(nLevels); + for (i=0; i. +*/ + +/****** + +SMTVerifierLevel + +This circuit has 1 hash + +Outputs according to the state. + +State root +===== ======= +top H'(child, sibling) +i0 0 +iold old1leaf +inew new1leaf +na 0 + +H' is the Hash function with the inputs shifted acordingly. + +*****/ + + +template SMTVerifierLevel() { + signal input st_top; + signal input st_i0; + signal input st_iold; + signal input st_inew; + signal input st_na; + + signal output root; + signal input sibling; + signal input old1leaf; + signal input new1leaf; + signal input lrbit; + signal input child; + + signal aux[2]; + + component proofHash = SMTHash2(); + component switcher = Switcher(); + + switcher.L <== child; + switcher.R <== sibling; + + switcher.sel <== lrbit; + proofHash.L <== switcher.outL; + proofHash.R <== switcher.outR; + + aux[0] <== proofHash.out * st_top; + aux[1] <== old1leaf*st_iold; + + root <== aux[0] + aux[1] + new1leaf*st_inew; +} diff --git a/zkrsa/circom-rsa-verify/circomlib/circuits/smt/smtverifiersm.circom b/zkrsa/circom-rsa-verify/circomlib/circuits/smt/smtverifiersm.circom new file mode 100644 index 000000000..f51965304 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/circuits/smt/smtverifiersm.circom @@ -0,0 +1,105 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +/* +Each level in the SMTVerifier has a state. + +This is the state machine. + +The signals are + +levIns: 1 if we are in the level where the insertion should happen +xor: 1 if the bitKey of the old and new keys are different in this level +is0: Input that indicates that the oldKey is 0 +fnc: 0 -> VERIFY INCLUSION + 1 -> VERIFY NOT INCLUSION + +err state is not a state itself. It's a lack of state. + +The end of the last level will have to be `na` + + levIns=0 any + ┌────┐ ┌────┐ + │ │ │ │ + │ ▼ levIns=1 ▼ │ + │ ########### is0=1 ########### ########### │ + │ # # fnc=1 # # any # # │ + └──# top # ─────────────────────▶# i0 #───────────────▶# na #──┘ + ## ## ──────────┐ ## ## ┌───────▶## ## + ########─────────────┐│ ######### │┌────────▶######### + ││ levIns=1 ││ + ││ is0=0 ########### ││ + ││ fnc=1 # # any│ + │└──────────▶ # iold #────────┘│ + │ ## ## │ + │ ######### │ + │ │ + │ levIns=1 ########### │ + │ fnc=0 # # any + └────────────▶# inew #─────────┘ + ## ## + ######### + + */ + + +template SMTVerifierSM() { + signal input is0; + signal input levIns; + signal input fnc; + + signal input prev_top; + signal input prev_i0; + signal input prev_iold; + signal input prev_inew; + signal input prev_na; + + signal output st_top; + signal output st_i0; + signal output st_iold; + signal output st_inew; + signal output st_na; + + signal prev_top_lev_ins; + signal prev_top_lev_ins_fnc; + + prev_top_lev_ins <== prev_top * levIns; + prev_top_lev_ins_fnc <== prev_top_lev_ins*fnc; // prev_top * levIns * fnc + + // st_top = prev_top * (1-levIns) + // = + prev_top + // - prev_top * levIns + st_top <== prev_top - prev_top_lev_ins; + + // st_inew = prev_top * levIns * (1-fnc) + // = + prev_top * levIns + // - prev_top * levIns * fnc + st_inew <== prev_top_lev_ins - prev_top_lev_ins_fnc; + + // st_iold = prev_top * levIns * (1-is0)*fnc + // = + prev_top * levIns * fnc + // - prev_top * levIns * fnc * is0 + st_iold <== prev_top_lev_ins_fnc * (1 - is0); + + // st_i0 = prev_top * levIns * is0 + // = + prev_top * levIns * is0 + st_i0 <== prev_top_lev_ins * is0; + + st_na <== prev_na + prev_inew + prev_iold + prev_i0; +} diff --git a/zkrsa/circom-rsa-verify/circomlib/circuits/switcher.circom b/zkrsa/circom-rsa-verify/circomlib/circuits/switcher.circom new file mode 100644 index 000000000..4d8b1147d --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/circuits/switcher.circom @@ -0,0 +1,40 @@ +/* + Copyright 2018 0KIMS association. + + This file is part of circom (Zero Knowledge Circuit Compiler). + + circom is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + circom is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with circom. If not, see . +*/ + +/* + Assume sel is binary. + + If sel == 0 then outL = L and outR=R + If sel == 1 then outL = R and outR=L + + */ + +template Switcher() { + signal input sel; + signal input L; + signal input R; + signal output outL; + signal output outR; + + signal aux; + + aux <== (R-L)*sel; // We create aux in order to have only one multiplication + outL <== aux + L; + outR <== -aux + R; +} diff --git a/zkrsa/circom-rsa-verify/circomlib/doc/root_transfer.monopic b/zkrsa/circom-rsa-verify/circomlib/doc/root_transfer.monopic new file mode 100644 index 000000000..032c0ba52 Binary files /dev/null and b/zkrsa/circom-rsa-verify/circomlib/doc/root_transfer.monopic differ diff --git a/zkrsa/circom-rsa-verify/circomlib/doc/smt_diagram_0.monopic b/zkrsa/circom-rsa-verify/circomlib/doc/smt_diagram_0.monopic new file mode 100644 index 000000000..c8e5b9b5a Binary files /dev/null and b/zkrsa/circom-rsa-verify/circomlib/doc/smt_diagram_0.monopic differ diff --git a/zkrsa/circom-rsa-verify/circomlib/doc/smt_diagram_1.monopic b/zkrsa/circom-rsa-verify/circomlib/doc/smt_diagram_1.monopic new file mode 100644 index 000000000..2f645f2a4 Binary files /dev/null and b/zkrsa/circom-rsa-verify/circomlib/doc/smt_diagram_1.monopic differ diff --git a/zkrsa/circom-rsa-verify/circomlib/doc/smt_hash.monopic b/zkrsa/circom-rsa-verify/circomlib/doc/smt_hash.monopic new file mode 100644 index 000000000..afb506a6b Binary files /dev/null and b/zkrsa/circom-rsa-verify/circomlib/doc/smt_hash.monopic differ diff --git a/zkrsa/circom-rsa-verify/circomlib/doc/smt_levins.monopic b/zkrsa/circom-rsa-verify/circomlib/doc/smt_levins.monopic new file mode 100644 index 000000000..2c306a8b6 Binary files /dev/null and b/zkrsa/circom-rsa-verify/circomlib/doc/smt_levins.monopic differ diff --git a/zkrsa/circom-rsa-verify/circomlib/doc/smt_sm.monopic b/zkrsa/circom-rsa-verify/circomlib/doc/smt_sm.monopic new file mode 100644 index 000000000..f3ee28878 Binary files /dev/null and b/zkrsa/circom-rsa-verify/circomlib/doc/smt_sm.monopic differ diff --git a/zkrsa/circom-rsa-verify/circomlib/doc/smt_verifier_sm.monopic b/zkrsa/circom-rsa-verify/circomlib/doc/smt_verifier_sm.monopic new file mode 100644 index 000000000..60551cb2a Binary files /dev/null and b/zkrsa/circom-rsa-verify/circomlib/doc/smt_verifier_sm.monopic differ diff --git a/zkrsa/circom-rsa-verify/circomlib/doc/voting.monopic b/zkrsa/circom-rsa-verify/circomlib/doc/voting.monopic new file mode 100644 index 000000000..0e1710db0 Binary files /dev/null and b/zkrsa/circom-rsa-verify/circomlib/doc/voting.monopic differ diff --git a/zkrsa/circom-rsa-verify/circomlib/doc/window.monopic b/zkrsa/circom-rsa-verify/circomlib/doc/window.monopic new file mode 100644 index 000000000..309dfb166 Binary files /dev/null and b/zkrsa/circom-rsa-verify/circomlib/doc/window.monopic differ diff --git a/zkrsa/circom-rsa-verify/circomlib/doc/window_chain.monopic b/zkrsa/circom-rsa-verify/circomlib/doc/window_chain.monopic new file mode 100644 index 000000000..47c18bd96 Binary files /dev/null and b/zkrsa/circom-rsa-verify/circomlib/doc/window_chain.monopic differ diff --git a/zkrsa/circom-rsa-verify/circomlib/index.js b/zkrsa/circom-rsa-verify/circomlib/index.js new file mode 100644 index 000000000..a0293a96e --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/index.js @@ -0,0 +1,12 @@ +exports.smt = require("./src/smt"); +exports.eddsa = require("./src/eddsa"); +exports.mimc7 = require("./src/mimc7"); +exports.mimcsponge = require("./src/mimcsponge"); +exports.babyJub = require("./src/babyjub"); +exports.pedersenHash = require("./src/pedersenHash"); +exports.SMT = require("./src/smt").SMT; +exports.SMTMemDB = require("./src/smt_memdb"); +exports.poseidon = require("./src/poseidon"); + + + diff --git a/zkrsa/circom-rsa-verify/circomlib/package-lock.json b/zkrsa/circom-rsa-verify/circomlib/package-lock.json new file mode 100644 index 000000000..c8a1c55d1 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/package-lock.json @@ -0,0 +1,13778 @@ +{ + "name": "circomlib", + "version": "0.5.3", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "version": "0.5.3", + "license": "GPL-3.0", + "dependencies": { + "blake-hash": "^1.1.0", + "blake2b": "^2.1.3", + "circom": "0.5.33", + "ffjavascript": "0.2.38", + "web3-utils": "^1.3.0" + }, + "devDependencies": { + "chai": "^4.3.4", + "eslint": "^6.8.0", + "ganache-cli": "^6.12.1", + "mocha": "^7.1.1", + "web3": "^1.3.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.12.13" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "node_modules/@babel/highlight": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", + "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "node_modules/@ethersproject/abi": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.0.7.tgz", + "integrity": "sha512-Cqktk+hSIckwP/W8O47Eef60VwmoSC/L3lY0+dIBhQPCNn9E4V7rwmm2aFrNRRDJfFlGuZ1khkQUOc3oBX+niw==", + "dev": true, + "dependencies": { + "@ethersproject/address": "^5.0.4", + "@ethersproject/bignumber": "^5.0.7", + "@ethersproject/bytes": "^5.0.4", + "@ethersproject/constants": "^5.0.4", + "@ethersproject/hash": "^5.0.4", + "@ethersproject/keccak256": "^5.0.3", + "@ethersproject/logger": "^5.0.5", + "@ethersproject/properties": "^5.0.3", + "@ethersproject/strings": "^5.0.4" + } + }, + "node_modules/@ethersproject/abstract-provider": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.0.10.tgz", + "integrity": "sha512-OSReY5iz94iIaPlRvLiJP8YVIvQLx4aUvMMnHWSaA/vTU8QHZmgNlt4OBdYV1+aFY8Xl+VRYiWBHq72ZDKXXCQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.0.13", + "@ethersproject/bytes": "^5.0.9", + "@ethersproject/logger": "^5.0.8", + "@ethersproject/networks": "^5.0.7", + "@ethersproject/properties": "^5.0.7", + "@ethersproject/transactions": "^5.0.9", + "@ethersproject/web": "^5.0.12" + } + }, + "node_modules/@ethersproject/abstract-signer": { + "version": "5.0.14", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.0.14.tgz", + "integrity": "sha512-JztBwVO7o5OHLh2vyjordlS4/1EjRyaECtc8vPdXTF1i4dXN+J0coeRoPN6ZFbBvi/YbaB6br2fvqhst1VQD/g==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-provider": "^5.0.8", + "@ethersproject/bignumber": "^5.0.13", + "@ethersproject/bytes": "^5.0.9", + "@ethersproject/logger": "^5.0.8", + "@ethersproject/properties": "^5.0.7" + } + }, + "node_modules/@ethersproject/address": { + "version": "5.0.11", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.0.11.tgz", + "integrity": "sha512-Et4GBdD8/tsBGjCEOKee9upN29qjL5kbRcmJifb4Penmiuh9GARXL2/xpXvEp5EW+EIW/rfCHFJrkYBgoQFQBw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.0.13", + "@ethersproject/bytes": "^5.0.9", + "@ethersproject/keccak256": "^5.0.7", + "@ethersproject/logger": "^5.0.8", + "@ethersproject/rlp": "^5.0.7" + } + }, + "node_modules/@ethersproject/base64": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.0.9.tgz", + "integrity": "sha512-37RBz5LEZ9SlTNGiWCYFttnIN9J7qVs9Xo2EbqGqDH5LfW9EIji66S+YDMpXVo1zWDax1FkEldAoatxHK2gfgA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.0.9" + } + }, + "node_modules/@ethersproject/bignumber": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.0.15.tgz", + "integrity": "sha512-MTADqnyacvdRwtKh7o9ujwNDSM1SDJjYDMYAzjIgjoi9rh6TY4suMbhCa3i2vh3SUXiXSICyTI8ui+NPdrZ9Lw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.0.9", + "@ethersproject/logger": "^5.0.8", + "bn.js": "^4.4.0" + } + }, + "node_modules/@ethersproject/bytes": { + "version": "5.0.11", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.0.11.tgz", + "integrity": "sha512-D51plLYY5qF05AsoVQwIZVLqlBkaTPVHVP/1WmmBIWyHB0cRW0C9kh0kx5Exo51rB63Hk8PfHxc7SmpoaQFEyg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/logger": "^5.0.8" + } + }, + "node_modules/@ethersproject/constants": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.0.10.tgz", + "integrity": "sha512-OSo8jxkHLDXieCy8bgOFR7lMfgPxEzKvSDdP+WAWHCDM8+orwch0B6wzkTmiQFgryAtIctrBt5glAdJikZ3hGw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.0.13" + } + }, + "node_modules/@ethersproject/hash": { + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.0.12.tgz", + "integrity": "sha512-kn4QN+fhNFbUgX3XZTZUaQixi0oyfIEY+hfW+KtkHu+rq7dV76oAIvaLEEynu1/4npOL38E4X4YI42gGZk+C0Q==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-signer": "^5.0.10", + "@ethersproject/address": "^5.0.9", + "@ethersproject/bignumber": "^5.0.13", + "@ethersproject/bytes": "^5.0.9", + "@ethersproject/keccak256": "^5.0.7", + "@ethersproject/logger": "^5.0.8", + "@ethersproject/properties": "^5.0.7", + "@ethersproject/strings": "^5.0.8" + } + }, + "node_modules/@ethersproject/keccak256": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.0.9.tgz", + "integrity": "sha512-zhdUTj6RGtCJSgU+bDrWF6cGbvW453LoIC1DSNWrTlXzC7WuH4a+EiPrgc7/kNoRxerKuA/cxYlI8GwNtVtDlw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.0.9", + "js-sha3": "0.5.7" + } + }, + "node_modules/@ethersproject/logger": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.0.10.tgz", + "integrity": "sha512-0y2T2NqykDrbPM3Zw9RSbPkDOxwChAL8detXaom76CfYoGxsOnRP/zTX8OUAV+x9LdwzgbWvWmeXrc0M7SuDZw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ] + }, + "node_modules/@ethersproject/networks": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.0.9.tgz", + "integrity": "sha512-L8+VCQwArBLGkxZb/5Ns/OH/OxP38AcaveXIxhUTq+VWpXYjrObG3E7RDQIKkUx1S1IcQl/UWTz5w4DK0UitJg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/logger": "^5.0.8" + } + }, + "node_modules/@ethersproject/properties": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.0.9.tgz", + "integrity": "sha512-ZCjzbHYTw+rF1Pn8FDCEmx3gQttwIHcm/6Xee8g/M3Ga3SfW4tccNMbs5zqnBH0E4RoOPaeNgyg1O68TaF0tlg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/logger": "^5.0.8" + } + }, + "node_modules/@ethersproject/rlp": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.0.9.tgz", + "integrity": "sha512-ns1U7ZMVeruUW6JXc4om+1w3w4ynHN/0fpwmeNTsAjwGKoF8SAUgue6ylKpHKWSti2idx7jDxbn8hNNFHk67CA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.0.9", + "@ethersproject/logger": "^5.0.8" + } + }, + "node_modules/@ethersproject/signing-key": { + "version": "5.0.11", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.0.11.tgz", + "integrity": "sha512-Jfcru/BGwdkXhLxT+8WCZtFy7LL0TPFZw05FAb5asxB/MyVsEfNdNxGDtjVE9zXfmRSPe/EusXYY4K7wcygOyQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.0.9", + "@ethersproject/logger": "^5.0.8", + "@ethersproject/properties": "^5.0.7", + "elliptic": "6.5.4" + } + }, + "node_modules/@ethersproject/strings": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.0.10.tgz", + "integrity": "sha512-KAeoS1tZ9/5ECXiIZA6S6hywbD0so2VmuW+Wfyo5EDXeyZ6Na1nxTPhTnW7voQmjbeYJffCrOc0qLFJeylyg7w==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.0.9", + "@ethersproject/constants": "^5.0.8", + "@ethersproject/logger": "^5.0.8" + } + }, + "node_modules/@ethersproject/transactions": { + "version": "5.0.11", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.0.11.tgz", + "integrity": "sha512-ftsRvR9+gQp7L63F6+XmstvsZ4w8GtWvQB08e/zB+oB86Fnhq8+i/tkgpJplSHC8I/qgiCisva+M3u2GVhDFPA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/address": "^5.0.9", + "@ethersproject/bignumber": "^5.0.13", + "@ethersproject/bytes": "^5.0.9", + "@ethersproject/constants": "^5.0.8", + "@ethersproject/keccak256": "^5.0.7", + "@ethersproject/logger": "^5.0.8", + "@ethersproject/properties": "^5.0.7", + "@ethersproject/rlp": "^5.0.7", + "@ethersproject/signing-key": "^5.0.8" + } + }, + "node_modules/@ethersproject/web": { + "version": "5.0.14", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.0.14.tgz", + "integrity": "sha512-QpTgplslwZ0Sp9oKNLoRuS6TKxnkwfaEk3gr7zd7XLF8XBsYejsrQO/03fNfnMx/TAT/RR6WEw/mbOwpRSeVRA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/base64": "^5.0.7", + "@ethersproject/bytes": "^5.0.9", + "@ethersproject/logger": "^5.0.8", + "@ethersproject/properties": "^5.0.7", + "@ethersproject/strings": "^5.0.8" + } + }, + "node_modules/@iden3/bigarray": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@iden3/bigarray/-/bigarray-0.0.2.tgz", + "integrity": "sha512-Xzdyxqm1bOFF6pdIsiHLLl3HkSLjbhqJHVyqaTxXt3RqXBEnmsUmEW47H7VOi/ak7TdkRpNkxjyK5Zbkm+y52g==" + }, + "node_modules/@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dev": true, + "dependencies": { + "defer-to-connect": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/node": { + "version": "12.20.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.5.tgz", + "integrity": "sha512-5Oy7tYZnu3a4pnJ//d4yVvOImExl4Vtwf0D40iKUlU+XlUsyV9iyFWyCFlwy489b72FMAik/EFwRkNLjjOdSPg==", + "dev": true + }, + "node_modules/@types/pbkdf2": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", + "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/secp256k1": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.1.tgz", + "integrity": "sha512-+ZjSA8ELlOp8SlKi0YLB2tz9d5iPNEmOBd+8Rz21wTMdaXQIa9b6TEnD6l5qKOCypE7FSyPyck12qZJxSDNoog==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-colors": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", + "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "dependencies": { + "type-fest": "^0.11.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-filter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", + "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", + "dev": true + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "node_modules/asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "engines": { + "node": "*" + } + }, + "node_modules/astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" + }, + "node_modules/async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "node_modules/available-typed-arrays": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz", + "integrity": "sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ==", + "dev": true, + "dependencies": { + "array-filter": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "dev": true + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "node_modules/base-x": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz", + "integrity": "sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/big-integer": { + "version": "1.6.48", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", + "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/bignumber.js": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz", + "integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/blake-hash": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/blake-hash/-/blake-hash-1.1.1.tgz", + "integrity": "sha512-V93H+FEJuXXZi1eEsMtbcBFP9oL5Ept7SLw3cbXYlPC3nocm9Fr4m18ZhbhdJrZVS9J/Z0oNE4L3oDZvmorHNA==", + "hasInstallScript": true, + "dependencies": { + "bindings": "^1.2.1", + "inherits": "^2.0.3", + "nan": "^2.2.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/blake2b": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/blake2b/-/blake2b-2.1.3.tgz", + "integrity": "sha512-pkDss4xFVbMb4270aCyGD3qLv92314Et+FsKzilCLxDz5DuZ2/1g3w4nmBbu6nKApPspnjG7JcwTjGZnduB1yg==", + "dependencies": { + "blake2b-wasm": "^1.1.0", + "nanoassert": "^1.0.0" + } + }, + "node_modules/blake2b-wasm": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/blake2b-wasm/-/blake2b-wasm-1.1.7.tgz", + "integrity": "sha512-oFIHvXhlz/DUgF0kq5B1CqxIDjIJwh9iDeUUGQUcvgiGz7Wdw03McEO7CfLBy7QKGdsydcMCgO9jFNBAFCtFcA==", + "dependencies": { + "nanoassert": "^1.0.0" + } + }, + "node_modules/blakejs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.1.0.tgz", + "integrity": "sha1-ad+S75U6qIylGjLfarHFShVfx6U=" + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dev": true, + "dependencies": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "dependencies": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "node_modules/browserify-rsa/node_modules/bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", + "dev": true + }, + "node_modules/browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, + "dependencies": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, + "node_modules/browserify-sign/node_modules/bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", + "dev": true + }, + "node_modules/browserify-sign/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", + "dev": true, + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dev": true, + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-to-arraybuffer": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz", + "integrity": "sha1-YGSkD6dutDxyOrqe+PbhIW0QURo=" + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "node_modules/bufferutil": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.3.tgz", + "integrity": "sha512-yEYTwGndELGvfXsImMBLop58eaGW+YdONi1fNjTINSY98tmMmFijBG6WXgdkfuLNt4imzQNtIE+eBp1PVpMCSw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "node-gyp-build": "^4.2.0" + } + }, + "node_modules/bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dev": true, + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "node_modules/chai": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.4.tgz", + "integrity": "sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==", + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "node_modules/check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", + "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.2.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.1.1" + } + }, + "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 + }, + "node_modules/cids": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/cids/-/cids-0.7.5.tgz", + "integrity": "sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "class-is": "^1.1.0", + "multibase": "~0.6.0", + "multicodec": "^1.0.0", + "multihashes": "~0.4.15" + }, + "engines": { + "node": ">=4.0.0", + "npm": ">=3.0.0" + } + }, + "node_modules/cids/node_modules/multicodec": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-1.0.4.tgz", + "integrity": "sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg==", + "dev": true, + "dependencies": { + "buffer": "^5.6.0", + "varint": "^5.0.0" + } + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/circom": { + "version": "0.5.33", + "resolved": "https://registry.npmjs.org/circom/-/circom-0.5.33.tgz", + "integrity": "sha512-UdL8fr6GckhQ4VoWjIvuYwCHneJe8z/AyJpDxgKLyuaX51ijd4gBP6jlwHDbQJsha2aU2GR9qgDsxd0jfari1Q==", + "dependencies": { + "chai": "^4.2.0", + "circom_runtime": "0.1.8", + "fastfile": "0.0.18", + "ffiasm": "0.1.1", + "ffjavascript": "0.2.22", + "ffwasm": "0.0.7", + "fnv-plus": "^1.3.1", + "r1csfile": "0.0.16", + "tmp-promise": "^2.0.2", + "wasmbuilder": "0.0.10" + }, + "bin": { + "circom": "cli.js" + } + }, + "node_modules/circom_runtime": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/circom_runtime/-/circom_runtime-0.1.8.tgz", + "integrity": "sha512-5ZmzCyidkNPb1zZsJGRXTuWcJ6kW6+gRBtHgf2tFqTh5dUyWVVPH0Zg7AsU2ijPr1AmYZUlme0yORUZK5HrjOA==", + "dependencies": { + "ffjavascript": "0.2.10", + "fnv-plus": "^1.3.1" + }, + "bin": { + "calcwit": "calcwit.js" + } + }, + "node_modules/circom_runtime/node_modules/ffjavascript": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/ffjavascript/-/ffjavascript-0.2.10.tgz", + "integrity": "sha512-GQI6gHYYG5/iD4Kt3VzezzK7fARJzP0zkc82V/+JAdjfeKBXhDSo5rpKFuK3cDcrdW0Fu2emuYNMEAuFqhEQvQ==", + "dependencies": { + "big-integer": "^1.6.48", + "wasmcurves": "0.0.5", + "worker-threads": "^1.0.0" + } + }, + "node_modules/circom/node_modules/ffjavascript": { + "version": "0.2.22", + "resolved": "https://registry.npmjs.org/ffjavascript/-/ffjavascript-0.2.22.tgz", + "integrity": "sha512-EsVqap2Txm17bKW0z/jXCX3M7rQ++nQUAJY8alWDpyhjRj90xjl6GLeVSKZQ8rOFDQ/SFFXcEB8w9X8Boxid+w==", + "dependencies": { + "big-integer": "^1.6.48", + "wasmcurves": "0.0.12", + "worker-threads": "^1.0.0" + } + }, + "node_modules/circom/node_modules/wasmcurves": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/wasmcurves/-/wasmcurves-0.0.12.tgz", + "integrity": "sha512-1Jl9mkatyHSNj80ILjf85SZUNuZQBCkTjJlhzqHnZQXUmIimCIWkugaVaYNjozLs1Gun4h/keZe1MBeBN0sRpg==", + "dependencies": { + "big-integer": "^1.6.42", + "blakejs": "^1.1.0" + } + }, + "node_modules/class-is": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/class-is/-/class-is-1.1.0.tgz", + "integrity": "sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==", + "dev": true + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "node_modules/content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-hash": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/content-hash/-/content-hash-2.5.2.tgz", + "integrity": "sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw==", + "dev": true, + "dependencies": { + "cids": "^0.7.1", + "multicodec": "^0.5.5", + "multihashes": "^0.4.15" + } + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "node_modules/cookiejar": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", + "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==", + "dev": true + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/cross-spawn/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "dependencies": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + }, + "engines": { + "node": "*" + } + }, + "node_modules/d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "dependencies": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "node_modules/defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "dev": true + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "node_modules/diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" + }, + "node_modules/duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "node_modules/ejs": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz", + "integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==", + "dependencies": { + "jake": "^10.6.1" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/es-abstract": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", + "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.2", + "is-string": "^1.0.5", + "object-inspect": "^1.9.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-abstract/node_modules/object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "dev": true, + "dependencies": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "dependencies": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.3", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dev": true, + "dependencies": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eth-ens-namehash": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz", + "integrity": "sha1-IprEbsqG1S4MmR58sq74P/D2i88=", + "dev": true, + "dependencies": { + "idna-uts46-hx": "^2.3.1", + "js-sha3": "^0.5.7" + } + }, + "node_modules/eth-lib": { + "version": "0.1.29", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.1.29.tgz", + "integrity": "sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "nano-json-stream-parser": "^0.1.2", + "servify": "^0.1.12", + "ws": "^3.0.0", + "xhr-request-promise": "^0.1.2" + } + }, + "node_modules/ethereum-bloom-filters": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.9.tgz", + "integrity": "sha512-GiK/RQkAkcVaEdxKVkPcG07PQ5vD7v2MFSHgZmBJSfMzNRHimntdBithsHAT89tAXnIpzVDWt8iaCD1DvkaxGg==", + "dependencies": { + "js-sha3": "^0.8.0" + } + }, + "node_modules/ethereum-bloom-filters/node_modules/js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" + }, + "node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/ethereumjs-common": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz", + "integrity": "sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA==", + "dev": true + }, + "node_modules/ethereumjs-tx": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz", + "integrity": "sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw==", + "dev": true, + "dependencies": { + "ethereumjs-common": "^1.5.0", + "ethereumjs-util": "^6.0.0" + } + }, + "node_modules/ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "dev": true, + "dependencies": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + }, + "node_modules/ethjs-unit": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", + "integrity": "sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk=", + "dependencies": { + "bn.js": "4.11.6", + "number-to-bn": "1.7.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/ethjs-unit/node_modules/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" + }, + "node_modules/ethjs-util": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", + "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", + "dev": true, + "dependencies": { + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", + "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==", + "dev": true + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "dev": true, + "dependencies": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "dev": true, + "dependencies": { + "type": "^2.0.0" + } + }, + "node_modules/ext/node_modules/type": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz", + "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==", + "dev": true + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true, + "engines": [ + "node >=0.6.0" + ] + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "node_modules/fastfile": { + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/fastfile/-/fastfile-0.0.18.tgz", + "integrity": "sha512-q03PTKc+wptis4WmuFOwPNQx2p5myFUrl/dMgRlW9mymc1Egyc14JPHgiGnWK+sJ0+dBl2Vwtfh5GfSQltYOpw==" + }, + "node_modules/ffiasm": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ffiasm/-/ffiasm-0.1.1.tgz", + "integrity": "sha512-irMMHiR9JJ7BVBrAhtliUawxVdPYSdyl81taUYJ4C1mJ0iw2ueThE/qtr0J8B83tsIY8HJvh0lg5F+6ClK4xpA==", + "dependencies": { + "big-integer": "^1.6.48", + "ejs": "^3.0.1", + "yargs": "^15.3.1" + }, + "bin": { + "buildzqfield": "src/buildzqfield.js" + } + }, + "node_modules/ffjavascript": { + "version": "0.2.38", + "resolved": "https://registry.npmjs.org/ffjavascript/-/ffjavascript-0.2.38.tgz", + "integrity": "sha512-b4dobcci6QxxUvNYFCHw2ONhXwtgSHCzqxbH6c7ipWMOzyoG+MPRMZgAqnUREYX8UC6zqA7AiRmiIB76nxt2TQ==", + "dependencies": { + "big-integer": "^1.6.48", + "wasmcurves": "0.0.14", + "web-worker": "^1.0.0" + } + }, + "node_modules/ffjavascript/node_modules/wasmcurves": { + "version": "0.0.14", + "resolved": "https://registry.npmjs.org/wasmcurves/-/wasmcurves-0.0.14.tgz", + "integrity": "sha512-G1iMkxlRaQSdqQ1JrwHcU+awLmwyH6kFKfT8g9obd8MWe+u5oSdFXrODB0zmSI5aGGvJPG+4cAmqCGYv9R+7qg==", + "dependencies": { + "big-integer": "^1.6.42", + "blakejs": "^1.1.0" + } + }, + "node_modules/ffwasm": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ffwasm/-/ffwasm-0.0.7.tgz", + "integrity": "sha512-17cTLzv7HHAKqZbX8MvHxjSrR0yDdn1sh4TVsTbAvO9e6klhFicnyoVXc/sCuViV/M8g65sCmVrAmoPCZp1YkQ==", + "dependencies": { + "big-integer": "^1.6.48", + "wasmbuilder": "0.0.10" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "dependencies": { + "flat-cache": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, + "node_modules/filelist": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz", + "integrity": "sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==", + "dependencies": { + "minimatch": "^3.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/flat": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.1.tgz", + "integrity": "sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==", + "dev": true, + "dependencies": { + "is-buffer": "~2.0.3" + }, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "dependencies": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "node_modules/fnv-plus": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/fnv-plus/-/fnv-plus-1.3.1.tgz", + "integrity": "sha512-Gz1EvfOneuFfk4yG458dJ3TLJ7gV19q3OM/vVvvHf7eT02Hm1DleB4edsia6ahbKgAYxO9gvyQ1ioWZR+a00Yw==" + }, + "node_modules/foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "node_modules/fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dev": true, + "dependencies": { + "minipass": "^2.6.0" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "node_modules/fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "deprecated": "\"Please update to latest v2.3 or v2.2\"", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "node_modules/ganache-cli": { + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/ganache-cli/-/ganache-cli-6.12.2.tgz", + "integrity": "sha512-bnmwnJDBDsOWBUP8E/BExWf85TsdDEFelQSzihSJm9VChVO1SHp94YXLP5BlA4j/OTxp0wR4R1Tje9OHOuAJVw==", + "bundleDependencies": [ + "source-map-support", + "yargs", + "ethereumjs-util" + ], + "dev": true, + "dependencies": { + "ethereumjs-util": "6.2.1", + "source-map-support": "0.5.12", + "yargs": "13.2.4" + }, + "bin": { + "ganache-cli": "cli.js" + } + }, + "node_modules/ganache-cli/node_modules/@types/bn.js": { + "version": "4.11.6", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/ganache-cli/node_modules/@types/node": { + "version": "14.11.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/ganache-cli/node_modules/@types/pbkdf2": { + "version": "3.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/ganache-cli/node_modules/@types/secp256k1": { + "version": "4.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/ganache-cli/node_modules/ansi-regex": { + "version": "4.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ganache-cli/node_modules/ansi-styles": { + "version": "3.2.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ganache-cli/node_modules/base-x": { + "version": "3.0.8", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ganache-cli/node_modules/blakejs": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "CC0-1.0" + }, + "node_modules/ganache-cli/node_modules/bn.js": { + "version": "4.11.9", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/ganache-cli/node_modules/brorand": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/ganache-cli/node_modules/browserify-aes": { + "version": "1.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ganache-cli/node_modules/bs58": { + "version": "4.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/ganache-cli/node_modules/bs58check": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/ganache-cli/node_modules/buffer-from": { + "version": "1.1.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/ganache-cli/node_modules/buffer-xor": { + "version": "1.0.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/ganache-cli/node_modules/camelcase": { + "version": "5.3.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ganache-cli/node_modules/cipher-base": { + "version": "1.0.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ganache-cli/node_modules/cliui": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "node_modules/ganache-cli/node_modules/color-convert": { + "version": "1.9.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/ganache-cli/node_modules/color-name": { + "version": "1.1.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/ganache-cli/node_modules/create-hash": { + "version": "1.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/ganache-cli/node_modules/create-hmac": { + "version": "1.1.7", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/ganache-cli/node_modules/cross-spawn": { + "version": "6.0.5", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/ganache-cli/node_modules/decamelize": { + "version": "1.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-cli/node_modules/elliptic": { + "version": "6.5.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "node_modules/ganache-cli/node_modules/emoji-regex": { + "version": "7.0.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/ganache-cli/node_modules/end-of-stream": { + "version": "1.4.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/ganache-cli/node_modules/ethereum-cryptography": { + "version": "0.1.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/ganache-cli/node_modules/ethereumjs-util": { + "version": "6.2.1", + "dev": true, + "inBundle": true, + "license": "MPL-2.0", + "dependencies": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + }, + "node_modules/ganache-cli/node_modules/ethjs-util": { + "version": "0.1.6", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/ganache-cli/node_modules/evp_bytestokey": { + "version": "1.0.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/ganache-cli/node_modules/execa": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ganache-cli/node_modules/find-up": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ganache-cli/node_modules/get-caller-file": { + "version": "2.0.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/ganache-cli/node_modules/get-stream": { + "version": "4.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ganache-cli/node_modules/hash-base": { + "version": "3.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ganache-cli/node_modules/hash.js": { + "version": "1.1.7", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/ganache-cli/node_modules/hmac-drbg": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/ganache-cli/node_modules/inherits": { + "version": "2.0.4", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/ganache-cli/node_modules/invert-kv": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/ganache-cli/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/ganache-cli/node_modules/is-hex-prefixed": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/ganache-cli/node_modules/is-stream": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-cli/node_modules/isexe": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/ganache-cli/node_modules/keccak": { + "version": "3.0.1", + "dev": true, + "hasInstallScript": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/ganache-cli/node_modules/lcid": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "invert-kv": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ganache-cli/node_modules/locate-path": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ganache-cli/node_modules/map-age-cleaner": { + "version": "0.1.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "p-defer": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ganache-cli/node_modules/md5.js": { + "version": "1.3.5", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/ganache-cli/node_modules/mem": { + "version": "4.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ganache-cli/node_modules/mimic-fn": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ganache-cli/node_modules/minimalistic-assert": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/ganache-cli/node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/ganache-cli/node_modules/nice-try": { + "version": "1.0.5", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/ganache-cli/node_modules/node-addon-api": { + "version": "2.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/ganache-cli/node_modules/node-gyp-build": { + "version": "4.2.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/ganache-cli/node_modules/npm-run-path": { + "version": "2.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ganache-cli/node_modules/once": { + "version": "1.4.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/ganache-cli/node_modules/os-locale": { + "version": "3.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ganache-cli/node_modules/p-defer": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/ganache-cli/node_modules/p-finally": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/ganache-cli/node_modules/p-is-promise": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ganache-cli/node_modules/p-limit": { + "version": "2.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ganache-cli/node_modules/p-locate": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ganache-cli/node_modules/p-try": { + "version": "2.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ganache-cli/node_modules/path-exists": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/ganache-cli/node_modules/path-key": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/ganache-cli/node_modules/pbkdf2": { + "version": "3.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/ganache-cli/node_modules/pump": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/ganache-cli/node_modules/randombytes": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/ganache-cli/node_modules/readable-stream": { + "version": "3.6.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/ganache-cli/node_modules/require-directory": { + "version": "2.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-cli/node_modules/require-main-filename": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/ganache-cli/node_modules/ripemd160": { + "version": "2.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/ganache-cli/node_modules/rlp": { + "version": "2.2.6", + "dev": true, + "inBundle": true, + "license": "MPL-2.0", + "dependencies": { + "bn.js": "^4.11.1" + }, + "bin": { + "rlp": "bin/rlp" + } + }, + "node_modules/ganache-cli/node_modules/safe-buffer": { + "version": "5.2.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/ganache-cli/node_modules/scrypt-js": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/ganache-cli/node_modules/secp256k1": { + "version": "4.0.2", + "dev": true, + "hasInstallScript": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "elliptic": "^6.5.2", + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/ganache-cli/node_modules/semver": { + "version": "5.7.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/ganache-cli/node_modules/set-blocking": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/ganache-cli/node_modules/setimmediate": { + "version": "1.0.5", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/ganache-cli/node_modules/sha.js": { + "version": "2.4.11", + "dev": true, + "inBundle": true, + "license": "(MIT AND BSD-3-Clause)", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/ganache-cli/node_modules/shebang-command": { + "version": "1.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-cli/node_modules/shebang-regex": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-cli/node_modules/signal-exit": { + "version": "3.0.3", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/ganache-cli/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "inBundle": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-cli/node_modules/source-map-support": { + "version": "0.5.12", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/ganache-cli/node_modules/string_decoder": { + "version": "1.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/ganache-cli/node_modules/string-width": { + "version": "3.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ganache-cli/node_modules/strip-ansi": { + "version": "5.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ganache-cli/node_modules/strip-eof": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-cli/node_modules/strip-hex-prefix": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "is-hex-prefixed": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/ganache-cli/node_modules/util-deprecate": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/ganache-cli/node_modules/which": { + "version": "1.3.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/ganache-cli/node_modules/which-module": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/ganache-cli/node_modules/wrap-ansi": { + "version": "5.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ganache-cli/node_modules/wrappy": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/ganache-cli/node_modules/y18n": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/ganache-cli/node_modules/yargs": { + "version": "13.2.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "os-locale": "^3.1.0", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.0" + } + }, + "node_modules/ganache-cli/node_modules/yargs-parser": { + "version": "13.1.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "engines": { + "node": "*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "dependencies": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "node_modules/globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "dependencies": { + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dev": true, + "dependencies": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "dev": true + }, + "node_modules/growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true, + "engines": { + "node": ">=4.x" + } + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "dev": true, + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbol-support-x": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", + "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-to-string-tag-x": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", + "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", + "dev": true, + "dependencies": { + "has-symbol-support-x": "^1.4.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash-base/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, + "node_modules/http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-errors/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "node_modules/http-https": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/http-https/-/http-https-1.0.0.tgz", + "integrity": "sha1-L5CN1fHbQGjAWM1ubUzjkskTOJs=", + "dev": true + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/idna-uts46-hx": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz", + "integrity": "sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA==", + "dev": true, + "dependencies": { + "punycode": "2.1.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/idna-uts46-hx/node_modules/punycode": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", + "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/inquirer/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/inquirer/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/inquirer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/inquirer/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/inquirer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-arguments": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", + "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz", + "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", + "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, + "node_modules/is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "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", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" + }, + "node_modules/is-generator-function": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.8.tgz", + "integrity": "sha512-2Omr/twNtufVZFr1GhxjOMFPAj2sjc/dKaIqBhvo4qciXfJmITGH6ZGd8eZYNHza8t1y0e01AuqRhJwfWp26WQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hex-prefixed": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha1-fY035q135dEnFIkTxXPggtd39VQ=", + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", + "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", + "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-retry-allowed": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", + "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.5.tgz", + "integrity": "sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.2", + "call-bind": "^1.0.2", + "es-abstract": "^1.18.0-next.2", + "foreach": "^2.0.5", + "has-symbols": "^1.0.1" + }, + "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", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "node_modules/isurl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", + "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "dev": true, + "dependencies": { + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/jake": { + "version": "10.8.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz", + "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==", + "dependencies": { + "async": "0.9.x", + "chalk": "^2.4.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/js-sha3": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", + "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "node_modules/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "dev": true + }, + "node_modules/json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "node_modules/keccak": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.1.tgz", + "integrity": "sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.0" + } + }, + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.46.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz", + "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.29", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz", + "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==", + "dev": true, + "dependencies": { + "mime-db": "1.46.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "dependencies": { + "dom-walk": "^0.1.0" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "node_modules/minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dev": true, + "dependencies": { + "minipass": "^2.9.0" + } + }, + "node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mkdirp-promise": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz", + "integrity": "sha1-6bj2jlUsaKnBcTuEiD96HdA5uKE=", + "deprecated": "This package is broken and no longer maintained. 'mkdirp' itself supports promises now, please switch to that.", + "dev": true, + "dependencies": { + "mkdirp": "*" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mocha": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.2.0.tgz", + "integrity": "sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ==", + "dev": true, + "dependencies": { + "ansi-colors": "3.2.3", + "browser-stdout": "1.3.1", + "chokidar": "3.3.0", + "debug": "3.2.6", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "find-up": "3.0.0", + "glob": "7.1.3", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "3.13.1", + "log-symbols": "3.0.0", + "minimatch": "3.0.4", + "mkdirp": "0.5.5", + "ms": "2.1.1", + "node-environment-flags": "1.0.6", + "object.assign": "4.1.0", + "strip-json-comments": "2.0.1", + "supports-color": "6.0.0", + "which": "1.3.1", + "wide-align": "1.1.3", + "yargs": "13.3.2", + "yargs-parser": "13.1.2", + "yargs-unparser": "1.6.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/mocha/node_modules/cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "dependencies": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "node_modules/mocha/node_modules/debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/mocha/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "node_modules/mocha/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/mocha/node_modules/js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/mocha/node_modules/ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "node_modules/mocha/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/mocha/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mocha/node_modules/supports-color": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", + "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/mocha/node_modules/wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/mocha/node_modules/yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "dependencies": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "node_modules/mock-fs": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-4.13.0.tgz", + "integrity": "sha512-DD0vOdofJdoaRNtnWcrXe6RQbpHkPPmtqGq14uRX0F8ZKJ5nv89CVTYl/BZdppDxBDaV0hl75htg3abpEWlPZA==", + "dev": true + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/multibase": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.6.1.tgz", + "integrity": "sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw==", + "dev": true, + "dependencies": { + "base-x": "^3.0.8", + "buffer": "^5.5.0" + } + }, + "node_modules/multicodec": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-0.5.7.tgz", + "integrity": "sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA==", + "deprecated": "stable api reached", + "dev": true, + "dependencies": { + "varint": "^5.0.0" + } + }, + "node_modules/multihashes": { + "version": "0.4.21", + "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.4.21.tgz", + "integrity": "sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "multibase": "^0.7.0", + "varint": "^5.0.0" + } + }, + "node_modules/multihashes/node_modules/multibase": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.7.0.tgz", + "integrity": "sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg==", + "dev": true, + "dependencies": { + "base-x": "^3.0.8", + "buffer": "^5.5.0" + } + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "node_modules/nan": { + "version": "2.14.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", + "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==" + }, + "node_modules/nano-json-stream-parser": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz", + "integrity": "sha1-DMj20OK2IrR5xA1JnEbWS3Vcb18=", + "dev": true + }, + "node_modules/nanoassert": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/nanoassert/-/nanoassert-1.1.0.tgz", + "integrity": "sha1-TzFS4JVA/eKMdvRLGbvNHVpCR40=" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node_modules/node-addon-api": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", + "dev": true + }, + "node_modules/node-environment-flags": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", + "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", + "dev": true, + "dependencies": { + "object.getownpropertydescriptors": "^2.0.3", + "semver": "^5.7.0" + } + }, + "node_modules/node-environment-flags/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/node-gyp-build": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.2.3.tgz", + "integrity": "sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg==", + "dev": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", + "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/number-to-bn": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", + "integrity": "sha1-uzYjWS9+X54AMLGXe9QaDFP+HqA=", + "dependencies": { + "bn.js": "4.11.6", + "strip-hex-prefix": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/number-to-bn/node_modules/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.getownpropertydescriptors": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", + "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/oboe": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/oboe/-/oboe-2.1.5.tgz", + "integrity": "sha1-VVQoTFQ6ImbXo48X4HOCH73jk80=", + "dev": true, + "dependencies": { + "http-https": "^1.0.0" + } + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-timeout": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", + "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", + "dev": true, + "dependencies": { + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, + "dependencies": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/parse-headers": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.3.tgz", + "integrity": "sha512-QhhZ+DCCit2Coi2vmAKbq5RGTRcQUOE2+REgv8vdyu7MnYx2eZztegqtTx99TZ86GTIwqiy3+4nQTWZ2tgmdCA==" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "engines": { + "node": "*" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", + "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", + "dev": true, + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "dev": true, + "dependencies": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "dependencies": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/r1csfile": { + "version": "0.0.16", + "resolved": "https://registry.npmjs.org/r1csfile/-/r1csfile-0.0.16.tgz", + "integrity": "sha512-A2jRVWzGgmXeG2lVAc0H4suJmzt50it5UvBnycJgBCpMXM3tH/M6RguP7nvs6suY/yYnkN6jX6iTScSiDUF3FA==", + "dependencies": { + "@iden3/bigarray": "0.0.2", + "fastfile": "0.0.18", + "ffjavascript": "0.2.22" + } + }, + "node_modules/r1csfile/node_modules/ffjavascript": { + "version": "0.2.22", + "resolved": "https://registry.npmjs.org/ffjavascript/-/ffjavascript-0.2.22.tgz", + "integrity": "sha512-EsVqap2Txm17bKW0z/jXCX3M7rQ++nQUAJY8alWDpyhjRj90xjl6GLeVSKZQ8rOFDQ/SFFXcEB8w9X8Boxid+w==", + "dependencies": { + "big-integer": "^1.6.48", + "wasmcurves": "0.0.12", + "worker-threads": "^1.0.0" + } + }, + "node_modules/r1csfile/node_modules/wasmcurves": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/wasmcurves/-/wasmcurves-0.0.12.tgz", + "integrity": "sha512-1Jl9mkatyHSNj80ILjf85SZUNuZQBCkTjJlhzqHnZQXUmIimCIWkugaVaYNjozLs1Gun4h/keZe1MBeBN0sRpg==", + "dependencies": { + "big-integer": "^1.6.42", + "blakejs": "^1.1.0" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dependencies": { + "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/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dev": true, + "dependencies": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", + "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", + "dev": true, + "dependencies": { + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true, + "engines": { + "node": ">=6.5.0" + } + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dev": true, + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/request/node_modules/qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dev": true, + "dependencies": { + "lowercase-keys": "^1.0.0" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/rlp": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.6.tgz", + "integrity": "sha512-HAfAmL6SDYNWPUOJNrM500x4Thn4PZsEy5pijPh40U9WfNk0z15hUYzO9xVIMAdIHdFtD8CBDHd75Td1g36Mjg==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.1" + }, + "bin": { + "rlp": "bin/rlp" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/rxjs": { + "version": "6.6.6", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.6.tgz", + "integrity": "sha512-/oTwee4N4iWzAMAL9xdGKjkEHmIwupR3oXbQjCKywF1BeFohswF3vZdogbmEF6pZkOsXTzWkrZszrWpQTByYVg==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", + "dev": true + }, + "node_modules/secp256k1": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.2.tgz", + "integrity": "sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "elliptic": "^6.5.2", + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "node_modules/serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/servify": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/servify/-/servify-0.1.12.tgz", + "integrity": "sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw==", + "dev": true, + "dependencies": { + "body-parser": "^1.16.0", + "cors": "^2.8.1", + "express": "^4.14.0", + "request": "^2.79.0", + "xhr": "^2.3.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "node_modules/setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/simple-get": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.1.tgz", + "integrity": "sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw==", + "dependencies": { + "decompress-response": "^3.3.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "node_modules/sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-hex-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", + "integrity": "sha1-DF8VX+8RUTczd96du1iNoFUA428=", + "dependencies": { + "is-hex-prefixed": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/swarm-js": { + "version": "0.1.40", + "resolved": "https://registry.npmjs.org/swarm-js/-/swarm-js-0.1.40.tgz", + "integrity": "sha512-yqiOCEoA4/IShXkY3WKwP5PvZhmoOOD8clsKA7EEcRILMkTEYHCQ21HDCAcVpmIxZq4LyZvWeRJ6quIyHk1caA==", + "dev": true, + "dependencies": { + "bluebird": "^3.5.0", + "buffer": "^5.0.5", + "eth-lib": "^0.1.26", + "fs-extra": "^4.0.2", + "got": "^7.1.0", + "mime-types": "^2.1.16", + "mkdirp-promise": "^5.0.1", + "mock-fs": "^4.1.0", + "setimmediate": "^1.0.5", + "tar": "^4.0.2", + "xhr-request": "^1.0.1" + } + }, + "node_modules/swarm-js/node_modules/get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/swarm-js/node_modules/got": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", + "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", + "dev": true, + "dependencies": { + "decompress-response": "^3.2.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-plain-obj": "^1.1.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "p-cancelable": "^0.3.0", + "p-timeout": "^1.1.1", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "url-parse-lax": "^1.0.0", + "url-to-options": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/swarm-js/node_modules/p-cancelable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", + "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/swarm-js/node_modules/prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/swarm-js/node_modules/url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "dev": true, + "dependencies": { + "prepend-http": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "dependencies": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/table/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "node_modules/table/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/table/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "dev": true, + "dependencies": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + }, + "engines": { + "node": ">=4.5" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "node_modules/timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/tmp-promise": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-2.1.1.tgz", + "integrity": "sha512-Z048AOz/w9b6lCbJUpevIJpRpUztENl8zdv1bmAKVHimfqRFl92ROkmT9rp7TVBnrEw2gtMTol/2Cp2S2kJa4Q==", + "dependencies": { + "tmp": "0.1.0" + } + }, + "node_modules/tmp-promise/node_modules/tmp": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz", + "integrity": "sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==", + "dependencies": { + "rimraf": "^2.6.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "node_modules/type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", + "dev": true + }, + "node_modules/unbox-primitive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.0.tgz", + "integrity": "sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.0", + "has-symbols": "^1.0.0", + "which-boxed-primitive": "^1.0.1" + } + }, + "node_modules/underscore": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz", + "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==" + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dev": true, + "dependencies": { + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/url-set-query": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-set-query/-/url-set-query-1.0.0.tgz", + "integrity": "sha1-AW6M/Xwg7gXK/neV6JK9BwL6ozk=" + }, + "node_modules/url-to-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", + "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/utf-8-validate": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.4.tgz", + "integrity": "sha512-MEF05cPSq3AwJ2C7B7sHAA6i53vONoZbMGX8My5auEVm6W+dJ2Jd/TZPyGJ5CH42V2XtbI5FD28HeHeqlPzZ3Q==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "node-gyp-build": "^4.2.0" + } + }, + "node_modules/utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", + "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==" + }, + "node_modules/util": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.3.tgz", + "integrity": "sha512-I8XkoQwE+fPQEhy9v012V+TSdH2kp9ts29i20TaaDUXsg7x/onePbhFJUExBfv/2ay1ZOp/Vsm3nDlmnFGSAog==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "safe-buffer": "^5.1.2", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "node_modules/varint": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", + "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==", + "dev": true + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/wasmbuilder": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/wasmbuilder/-/wasmbuilder-0.0.10.tgz", + "integrity": "sha512-zQSvZ7d74d9OvN+mCN6ucNne4QS5/cBBYTHldX0Oe+u9gStY21orapvuX1ajisA7RVIpuFhYg+ZgdySsPfeh0A==", + "dependencies": { + "big-integer": "^1.6.48" + } + }, + "node_modules/wasmcurves": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/wasmcurves/-/wasmcurves-0.0.5.tgz", + "integrity": "sha512-BmI4GXLjLawGg2YkvHa8zRsnWec+d1uwoxE+Iov8cqOpDL7GA5XO2pk2yuDbXHMzwIug2exnKot3baRZ86R0pA==", + "dependencies": { + "big-integer": "^1.6.42", + "blakejs": "^1.1.0" + } + }, + "node_modules/web-worker": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.0.0.tgz", + "integrity": "sha512-BzuMqeKVkKKwHV6tJuwePFcxYMxvC97D448mXTgh/CxXAB4sRtoV26gRPN+JDxsXRR7QZyioMV9O6NzQaASf7Q==" + }, + "node_modules/web3": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/web3/-/web3-1.3.4.tgz", + "integrity": "sha512-D6cMb2EtTMLHgdGbkTPGl/Qi7DAfczR+Lp7iFX3bcu/bsD9V8fZW69hA8v5cRPNGzXUwVQebk3bS17WKR4cD2w==", + "dev": true, + "dependencies": { + "web3-bzz": "1.3.4", + "web3-core": "1.3.4", + "web3-eth": "1.3.4", + "web3-eth-personal": "1.3.4", + "web3-net": "1.3.4", + "web3-shh": "1.3.4", + "web3-utils": "1.3.4" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-bzz": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.3.4.tgz", + "integrity": "sha512-DBRVQB8FAgoAtZCpp2GAGPCJjgBgsuwOKEasjV044AAZiONpXcKHbkO6G1SgItIixnrJsRJpoGLGw52Byr6FKw==", + "dev": true, + "dependencies": { + "@types/node": "^12.12.6", + "got": "9.6.0", + "swarm-js": "^0.1.40", + "underscore": "1.9.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-core": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.3.4.tgz", + "integrity": "sha512-7OJu46RpCEfTerl+gPvHXANR2RkLqAfW7l2DAvQ7wN0pnCzl9nEfdgW6tMhr31k3TR2fWucwKzCyyxMGzMHeSA==", + "dev": true, + "dependencies": { + "@types/bn.js": "^4.11.5", + "@types/node": "^12.12.6", + "bignumber.js": "^9.0.0", + "web3-core-helpers": "1.3.4", + "web3-core-method": "1.3.4", + "web3-core-requestmanager": "1.3.4", + "web3-utils": "1.3.4" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-core-helpers": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.3.4.tgz", + "integrity": "sha512-n7BqDalcTa1stncHMmrnFtyTgDhX5Fy+avNaHCf6qcOP2lwTQC8+mdHVBONWRJ6Yddvln+c8oY/TAaB6PzWK0A==", + "dev": true, + "dependencies": { + "underscore": "1.9.1", + "web3-eth-iban": "1.3.4", + "web3-utils": "1.3.4" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-core-method": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.3.4.tgz", + "integrity": "sha512-JxmQrujsAWYRRN77P/RY7XuZDCzxSiiQJrgX/60Lfyf7FF1Y0le4L/UMCi7vUJnuYkbU1Kfl9E0udnqwyPqlvQ==", + "dev": true, + "dependencies": { + "@ethersproject/transactions": "^5.0.0-beta.135", + "underscore": "1.9.1", + "web3-core-helpers": "1.3.4", + "web3-core-promievent": "1.3.4", + "web3-core-subscriptions": "1.3.4", + "web3-utils": "1.3.4" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-core-promievent": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.3.4.tgz", + "integrity": "sha512-V61dZIeBwogg6hhZZUt0qL9hTp1WDhnsdjP++9fhTDr4vy/Gz8T5vibqT2LLg6lQC8i+Py33yOpMeMNjztaUaw==", + "dev": true, + "dependencies": { + "eventemitter3": "4.0.4" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-core-requestmanager": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.3.4.tgz", + "integrity": "sha512-xriouCrhVnVDYQ04TZXdEREZm0OOJzkSEsoN5bu4JYsA6e/HzROeU+RjDpMUxFMzN4wxmFZ+HWbpPndS3QwMag==", + "dev": true, + "dependencies": { + "underscore": "1.9.1", + "util": "^0.12.0", + "web3-core-helpers": "1.3.4", + "web3-providers-http": "1.3.4", + "web3-providers-ipc": "1.3.4", + "web3-providers-ws": "1.3.4" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-core-subscriptions": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.3.4.tgz", + "integrity": "sha512-drVHVDxh54hv7xmjIm44g4IXjfGj022fGw4/meB5R2D8UATFI40F73CdiBlyqk3DysP9njDOLTJFSQvEkLFUOg==", + "dev": true, + "dependencies": { + "eventemitter3": "4.0.4", + "underscore": "1.9.1", + "web3-core-helpers": "1.3.4" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-eth": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.3.4.tgz", + "integrity": "sha512-8OIVMLbvmx+LB5RZ4tDhXuFGWSdNMrCZ4HM0+PywQ08uEcmAcqTMFAn4vdPii+J8gCatZR501r1KdzX3SDLoPw==", + "dev": true, + "dependencies": { + "underscore": "1.9.1", + "web3-core": "1.3.4", + "web3-core-helpers": "1.3.4", + "web3-core-method": "1.3.4", + "web3-core-subscriptions": "1.3.4", + "web3-eth-abi": "1.3.4", + "web3-eth-accounts": "1.3.4", + "web3-eth-contract": "1.3.4", + "web3-eth-ens": "1.3.4", + "web3-eth-iban": "1.3.4", + "web3-eth-personal": "1.3.4", + "web3-net": "1.3.4", + "web3-utils": "1.3.4" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-eth-abi": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.3.4.tgz", + "integrity": "sha512-PVSLXJ2dzdXsC+R24llIIEOS6S1KhG5qwNznJjJvXZFe3sqgdSe47eNvwUamZtCBjcrdR/HQr+L/FTxqJSf80Q==", + "dev": true, + "dependencies": { + "@ethersproject/abi": "5.0.7", + "underscore": "1.9.1", + "web3-utils": "1.3.4" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-eth-accounts": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.3.4.tgz", + "integrity": "sha512-gz9ReSmQEjqbYAjpmAx+UZF4CVMbyS4pfjSYWGAnNNI+Xz0f0u0kCIYXQ1UEaE+YeLcYiE+ZlZdgg6YoatO5nA==", + "dev": true, + "dependencies": { + "crypto-browserify": "3.12.0", + "eth-lib": "0.2.8", + "ethereumjs-common": "^1.3.2", + "ethereumjs-tx": "^2.1.1", + "scrypt-js": "^3.0.1", + "underscore": "1.9.1", + "uuid": "3.3.2", + "web3-core": "1.3.4", + "web3-core-helpers": "1.3.4", + "web3-core-method": "1.3.4", + "web3-utils": "1.3.4" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-eth-accounts/node_modules/eth-lib": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", + "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "xhr-request-promise": "^0.1.2" + } + }, + "node_modules/web3-eth-accounts/node_modules/uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/web3-eth-contract": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.3.4.tgz", + "integrity": "sha512-Fvy8ZxUksQY2ePt+XynFfOiSqxgQtMn4m2NJs6VXRl2Inl17qyRi/nIJJVKTcENLocm+GmZ/mxq2eOE5u02nPg==", + "dev": true, + "dependencies": { + "@types/bn.js": "^4.11.5", + "underscore": "1.9.1", + "web3-core": "1.3.4", + "web3-core-helpers": "1.3.4", + "web3-core-method": "1.3.4", + "web3-core-promievent": "1.3.4", + "web3-core-subscriptions": "1.3.4", + "web3-eth-abi": "1.3.4", + "web3-utils": "1.3.4" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-eth-ens": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.3.4.tgz", + "integrity": "sha512-b0580tQyQwpV2wyacwQiBEfQmjCUln5iPhge3IBIMXaI43BUNtH3lsCL9ERFQeOdweB4o+6rYyNYr6xbRcSytg==", + "dev": true, + "dependencies": { + "content-hash": "^2.5.2", + "eth-ens-namehash": "2.0.8", + "underscore": "1.9.1", + "web3-core": "1.3.4", + "web3-core-helpers": "1.3.4", + "web3-core-promievent": "1.3.4", + "web3-eth-abi": "1.3.4", + "web3-eth-contract": "1.3.4", + "web3-utils": "1.3.4" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-eth-iban": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.3.4.tgz", + "integrity": "sha512-Y7/hLjVvIN/OhaAyZ8L/hxbTqVX6AFTl2RwUXR6EEU9oaLydPcMjAx/Fr8mghUvQS3QJSr+UGubP3W4SkyNiYw==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.9", + "web3-utils": "1.3.4" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-eth-personal": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.3.4.tgz", + "integrity": "sha512-JiTbaktYVk1j+S2EDooXAhw5j/VsdvZfKRmHtXUe/HizPM9ETXmj1+ne4RT6m+950jQ7DJwUF3XU1FKYNtEDwQ==", + "dev": true, + "dependencies": { + "@types/node": "^12.12.6", + "web3-core": "1.3.4", + "web3-core-helpers": "1.3.4", + "web3-core-method": "1.3.4", + "web3-net": "1.3.4", + "web3-utils": "1.3.4" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-net": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.3.4.tgz", + "integrity": "sha512-wVyqgVC3Zt/0uGnBiR3GpnsS8lvOFTDgWZMxAk9C6Guh8aJD9MUc7pbsw5rHrPUVe6S6RUfFJvh/Xq8oMIQgSw==", + "dev": true, + "dependencies": { + "web3-core": "1.3.4", + "web3-core-method": "1.3.4", + "web3-utils": "1.3.4" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-providers-http": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.3.4.tgz", + "integrity": "sha512-aIg/xHXvxpqpFU70sqfp+JC3sGkLfAimRKTUhG4oJZ7U+tTcYTHoxBJj+4A3Id4JAoKiiv0k1/qeyQ8f3rMC3g==", + "dev": true, + "dependencies": { + "web3-core-helpers": "1.3.4", + "xhr2-cookies": "1.1.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-providers-ipc": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.3.4.tgz", + "integrity": "sha512-E0CvXEJElr/TIlG1YfJeO3Le5NI/4JZM+1SsEdiPIfBUAJN18oOoum138EBGKv5+YaLKZUtUuJSXWjIIOR/0Ig==", + "dev": true, + "dependencies": { + "oboe": "2.1.5", + "underscore": "1.9.1", + "web3-core-helpers": "1.3.4" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-providers-ws": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.3.4.tgz", + "integrity": "sha512-WBd9hk2fUAdrbA3kUyUk94ZeILtE6txLeoVVvIKAw2bPegx+RjkLyxC1Du0oceKgQ/qQWod8CCzl1E/GgTP+MQ==", + "dev": true, + "dependencies": { + "eventemitter3": "4.0.4", + "underscore": "1.9.1", + "web3-core-helpers": "1.3.4", + "websocket": "^1.0.32" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-shh": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.3.4.tgz", + "integrity": "sha512-zoeww5mxLh3xKcqbX85irQbtFe5pc5XwrgjvmdMkhkOdZzPASlWOgqzUFtaPykpLwC3yavVx4jG5RqifweXLUA==", + "dev": true, + "dependencies": { + "web3-core": "1.3.4", + "web3-core-method": "1.3.4", + "web3-core-subscriptions": "1.3.4", + "web3-net": "1.3.4" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-utils": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.3.4.tgz", + "integrity": "sha512-/vC2v0MaZNpWooJfpRw63u0Y3ag2gNjAWiLtMSL6QQLmCqCy4SQIndMt/vRyx0uMoeGt1YTwSXEcHjUzOhLg0A==", + "dependencies": { + "bn.js": "^4.11.9", + "eth-lib": "0.2.8", + "ethereum-bloom-filters": "^1.0.6", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "underscore": "1.9.1", + "utf8": "3.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-utils/node_modules/eth-lib": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", + "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", + "dependencies": { + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "xhr-request-promise": "^0.1.2" + } + }, + "node_modules/websocket": { + "version": "1.0.33", + "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.33.tgz", + "integrity": "sha512-XwNqM2rN5eh3G2CUQE3OHZj+0xfdH42+OFK6LdC2yqiC0YU8e5UK0nYre220T0IyyN031V/XOvtHvXozvJYFWA==", + "dev": true, + "dependencies": { + "bufferutil": "^4.0.1", + "debug": "^2.2.0", + "es5-ext": "^0.10.50", + "typedarray-to-buffer": "^3.1.5", + "utf-8-validate": "^5.0.2", + "yaeti": "^0.0.6" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/websocket/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/websocket/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "node_modules/which-typed-array": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.4.tgz", + "integrity": "sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.2", + "call-bind": "^1.0.0", + "es-abstract": "^1.18.0-next.1", + "foreach": "^2.0.5", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.1", + "is-typed-array": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2" + } + }, + "node_modules/wide-align/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/wide-align/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/wide-align/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/wide-align/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/worker-threads": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/worker-threads/-/worker-threads-1.0.0.tgz", + "integrity": "sha512-vK6Hhvph8oLxocEJIlc3YfGAZhm210uGzjZsXSu+JYLAQ/s/w4Tqgl60JrdH58hW8NSGP4m3bp8a92qPXgX05w==" + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "node_modules/write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "dependencies": { + "mkdirp": "^0.5.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dev": true, + "dependencies": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + }, + "node_modules/xhr": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", + "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", + "dependencies": { + "global": "~4.4.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/xhr-request": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xhr-request/-/xhr-request-1.1.0.tgz", + "integrity": "sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA==", + "dependencies": { + "buffer-to-arraybuffer": "^0.0.5", + "object-assign": "^4.1.1", + "query-string": "^5.0.1", + "simple-get": "^2.7.0", + "timed-out": "^4.0.1", + "url-set-query": "^1.0.0", + "xhr": "^2.0.4" + } + }, + "node_modules/xhr-request-promise": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz", + "integrity": "sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg==", + "dependencies": { + "xhr-request": "^1.1.0" + } + }, + "node_modules/xhr2-cookies": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz", + "integrity": "sha1-fXdEnQmZGX8VXLc7I99yUF7YnUg=", + "dev": true, + "dependencies": { + "cookiejar": "^2.1.1" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", + "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==" + }, + "node_modules/yaeti": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", + "integrity": "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc=", + "dev": true, + "engines": { + "node": ">=0.10.32" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "node_modules/yargs-unparser": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", + "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", + "dev": true, + "dependencies": { + "flat": "^4.1.0", + "lodash": "^4.17.15", + "yargs": "^13.3.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs-unparser/node_modules/cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "dependencies": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "node_modules/yargs-unparser/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "node_modules/yargs-unparser/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/yargs-unparser/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs-unparser/node_modules/wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs-unparser/node_modules/yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "dependencies": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "node_modules/yargs/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + } + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.12.13" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", + "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@ethersproject/abi": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.0.7.tgz", + "integrity": "sha512-Cqktk+hSIckwP/W8O47Eef60VwmoSC/L3lY0+dIBhQPCNn9E4V7rwmm2aFrNRRDJfFlGuZ1khkQUOc3oBX+niw==", + "dev": true, + "requires": { + "@ethersproject/address": "^5.0.4", + "@ethersproject/bignumber": "^5.0.7", + "@ethersproject/bytes": "^5.0.4", + "@ethersproject/constants": "^5.0.4", + "@ethersproject/hash": "^5.0.4", + "@ethersproject/keccak256": "^5.0.3", + "@ethersproject/logger": "^5.0.5", + "@ethersproject/properties": "^5.0.3", + "@ethersproject/strings": "^5.0.4" + } + }, + "@ethersproject/abstract-provider": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.0.10.tgz", + "integrity": "sha512-OSReY5iz94iIaPlRvLiJP8YVIvQLx4aUvMMnHWSaA/vTU8QHZmgNlt4OBdYV1+aFY8Xl+VRYiWBHq72ZDKXXCQ==", + "dev": true, + "requires": { + "@ethersproject/bignumber": "^5.0.13", + "@ethersproject/bytes": "^5.0.9", + "@ethersproject/logger": "^5.0.8", + "@ethersproject/networks": "^5.0.7", + "@ethersproject/properties": "^5.0.7", + "@ethersproject/transactions": "^5.0.9", + "@ethersproject/web": "^5.0.12" + } + }, + "@ethersproject/abstract-signer": { + "version": "5.0.14", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.0.14.tgz", + "integrity": "sha512-JztBwVO7o5OHLh2vyjordlS4/1EjRyaECtc8vPdXTF1i4dXN+J0coeRoPN6ZFbBvi/YbaB6br2fvqhst1VQD/g==", + "dev": true, + "requires": { + "@ethersproject/abstract-provider": "^5.0.8", + "@ethersproject/bignumber": "^5.0.13", + "@ethersproject/bytes": "^5.0.9", + "@ethersproject/logger": "^5.0.8", + "@ethersproject/properties": "^5.0.7" + } + }, + "@ethersproject/address": { + "version": "5.0.11", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.0.11.tgz", + "integrity": "sha512-Et4GBdD8/tsBGjCEOKee9upN29qjL5kbRcmJifb4Penmiuh9GARXL2/xpXvEp5EW+EIW/rfCHFJrkYBgoQFQBw==", + "dev": true, + "requires": { + "@ethersproject/bignumber": "^5.0.13", + "@ethersproject/bytes": "^5.0.9", + "@ethersproject/keccak256": "^5.0.7", + "@ethersproject/logger": "^5.0.8", + "@ethersproject/rlp": "^5.0.7" + } + }, + "@ethersproject/base64": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.0.9.tgz", + "integrity": "sha512-37RBz5LEZ9SlTNGiWCYFttnIN9J7qVs9Xo2EbqGqDH5LfW9EIji66S+YDMpXVo1zWDax1FkEldAoatxHK2gfgA==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.0.9" + } + }, + "@ethersproject/bignumber": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.0.15.tgz", + "integrity": "sha512-MTADqnyacvdRwtKh7o9ujwNDSM1SDJjYDMYAzjIgjoi9rh6TY4suMbhCa3i2vh3SUXiXSICyTI8ui+NPdrZ9Lw==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.0.9", + "@ethersproject/logger": "^5.0.8", + "bn.js": "^4.4.0" + } + }, + "@ethersproject/bytes": { + "version": "5.0.11", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.0.11.tgz", + "integrity": "sha512-D51plLYY5qF05AsoVQwIZVLqlBkaTPVHVP/1WmmBIWyHB0cRW0C9kh0kx5Exo51rB63Hk8PfHxc7SmpoaQFEyg==", + "dev": true, + "requires": { + "@ethersproject/logger": "^5.0.8" + } + }, + "@ethersproject/constants": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.0.10.tgz", + "integrity": "sha512-OSo8jxkHLDXieCy8bgOFR7lMfgPxEzKvSDdP+WAWHCDM8+orwch0B6wzkTmiQFgryAtIctrBt5glAdJikZ3hGw==", + "dev": true, + "requires": { + "@ethersproject/bignumber": "^5.0.13" + } + }, + "@ethersproject/hash": { + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.0.12.tgz", + "integrity": "sha512-kn4QN+fhNFbUgX3XZTZUaQixi0oyfIEY+hfW+KtkHu+rq7dV76oAIvaLEEynu1/4npOL38E4X4YI42gGZk+C0Q==", + "dev": true, + "requires": { + "@ethersproject/abstract-signer": "^5.0.10", + "@ethersproject/address": "^5.0.9", + "@ethersproject/bignumber": "^5.0.13", + "@ethersproject/bytes": "^5.0.9", + "@ethersproject/keccak256": "^5.0.7", + "@ethersproject/logger": "^5.0.8", + "@ethersproject/properties": "^5.0.7", + "@ethersproject/strings": "^5.0.8" + } + }, + "@ethersproject/keccak256": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.0.9.tgz", + "integrity": "sha512-zhdUTj6RGtCJSgU+bDrWF6cGbvW453LoIC1DSNWrTlXzC7WuH4a+EiPrgc7/kNoRxerKuA/cxYlI8GwNtVtDlw==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.0.9", + "js-sha3": "0.5.7" + } + }, + "@ethersproject/logger": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.0.10.tgz", + "integrity": "sha512-0y2T2NqykDrbPM3Zw9RSbPkDOxwChAL8detXaom76CfYoGxsOnRP/zTX8OUAV+x9LdwzgbWvWmeXrc0M7SuDZw==", + "dev": true + }, + "@ethersproject/networks": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.0.9.tgz", + "integrity": "sha512-L8+VCQwArBLGkxZb/5Ns/OH/OxP38AcaveXIxhUTq+VWpXYjrObG3E7RDQIKkUx1S1IcQl/UWTz5w4DK0UitJg==", + "dev": true, + "requires": { + "@ethersproject/logger": "^5.0.8" + } + }, + "@ethersproject/properties": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.0.9.tgz", + "integrity": "sha512-ZCjzbHYTw+rF1Pn8FDCEmx3gQttwIHcm/6Xee8g/M3Ga3SfW4tccNMbs5zqnBH0E4RoOPaeNgyg1O68TaF0tlg==", + "dev": true, + "requires": { + "@ethersproject/logger": "^5.0.8" + } + }, + "@ethersproject/rlp": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.0.9.tgz", + "integrity": "sha512-ns1U7ZMVeruUW6JXc4om+1w3w4ynHN/0fpwmeNTsAjwGKoF8SAUgue6ylKpHKWSti2idx7jDxbn8hNNFHk67CA==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.0.9", + "@ethersproject/logger": "^5.0.8" + } + }, + "@ethersproject/signing-key": { + "version": "5.0.11", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.0.11.tgz", + "integrity": "sha512-Jfcru/BGwdkXhLxT+8WCZtFy7LL0TPFZw05FAb5asxB/MyVsEfNdNxGDtjVE9zXfmRSPe/EusXYY4K7wcygOyQ==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.0.9", + "@ethersproject/logger": "^5.0.8", + "@ethersproject/properties": "^5.0.7", + "elliptic": "6.5.4" + } + }, + "@ethersproject/strings": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.0.10.tgz", + "integrity": "sha512-KAeoS1tZ9/5ECXiIZA6S6hywbD0so2VmuW+Wfyo5EDXeyZ6Na1nxTPhTnW7voQmjbeYJffCrOc0qLFJeylyg7w==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.0.9", + "@ethersproject/constants": "^5.0.8", + "@ethersproject/logger": "^5.0.8" + } + }, + "@ethersproject/transactions": { + "version": "5.0.11", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.0.11.tgz", + "integrity": "sha512-ftsRvR9+gQp7L63F6+XmstvsZ4w8GtWvQB08e/zB+oB86Fnhq8+i/tkgpJplSHC8I/qgiCisva+M3u2GVhDFPA==", + "dev": true, + "requires": { + "@ethersproject/address": "^5.0.9", + "@ethersproject/bignumber": "^5.0.13", + "@ethersproject/bytes": "^5.0.9", + "@ethersproject/constants": "^5.0.8", + "@ethersproject/keccak256": "^5.0.7", + "@ethersproject/logger": "^5.0.8", + "@ethersproject/properties": "^5.0.7", + "@ethersproject/rlp": "^5.0.7", + "@ethersproject/signing-key": "^5.0.8" + } + }, + "@ethersproject/web": { + "version": "5.0.14", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.0.14.tgz", + "integrity": "sha512-QpTgplslwZ0Sp9oKNLoRuS6TKxnkwfaEk3gr7zd7XLF8XBsYejsrQO/03fNfnMx/TAT/RR6WEw/mbOwpRSeVRA==", + "dev": true, + "requires": { + "@ethersproject/base64": "^5.0.7", + "@ethersproject/bytes": "^5.0.9", + "@ethersproject/logger": "^5.0.8", + "@ethersproject/properties": "^5.0.7", + "@ethersproject/strings": "^5.0.8" + } + }, + "@iden3/bigarray": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@iden3/bigarray/-/bigarray-0.0.2.tgz", + "integrity": "sha512-Xzdyxqm1bOFF6pdIsiHLLl3HkSLjbhqJHVyqaTxXt3RqXBEnmsUmEW47H7VOi/ak7TdkRpNkxjyK5Zbkm+y52g==" + }, + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "dev": true + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dev": true, + "requires": { + "defer-to-connect": "^1.0.1" + } + }, + "@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/node": { + "version": "12.20.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.5.tgz", + "integrity": "sha512-5Oy7tYZnu3a4pnJ//d4yVvOImExl4Vtwf0D40iKUlU+XlUsyV9iyFWyCFlwy489b72FMAik/EFwRkNLjjOdSPg==", + "dev": true + }, + "@types/pbkdf2": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", + "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/secp256k1": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.1.tgz", + "integrity": "sha512-+ZjSA8ELlOp8SlKi0YLB2tz9d5iPNEmOBd+8Rz21wTMdaXQIa9b6TEnD6l5qKOCypE7FSyPyck12qZJxSDNoog==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true, + "requires": {} + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", + "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "requires": { + "type-fest": "^0.11.0" + }, + "dependencies": { + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true + } + } + }, + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "array-filter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", + "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", + "dev": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==" + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "available-typed-arrays": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz", + "integrity": "sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ==", + "dev": true, + "requires": { + "array-filter": "^1.0.0" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base-x": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz", + "integrity": "sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "big-integer": { + "version": "1.6.48", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", + "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==" + }, + "bignumber.js": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz", + "integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "blake-hash": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/blake-hash/-/blake-hash-1.1.1.tgz", + "integrity": "sha512-V93H+FEJuXXZi1eEsMtbcBFP9oL5Ept7SLw3cbXYlPC3nocm9Fr4m18ZhbhdJrZVS9J/Z0oNE4L3oDZvmorHNA==", + "requires": { + "bindings": "^1.2.1", + "inherits": "^2.0.3", + "nan": "^2.2.1" + } + }, + "blake2b": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/blake2b/-/blake2b-2.1.3.tgz", + "integrity": "sha512-pkDss4xFVbMb4270aCyGD3qLv92314Et+FsKzilCLxDz5DuZ2/1g3w4nmBbu6nKApPspnjG7JcwTjGZnduB1yg==", + "requires": { + "blake2b-wasm": "^1.1.0", + "nanoassert": "^1.0.0" + } + }, + "blake2b-wasm": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/blake2b-wasm/-/blake2b-wasm-1.1.7.tgz", + "integrity": "sha512-oFIHvXhlz/DUgF0kq5B1CqxIDjIJwh9iDeUUGQUcvgiGz7Wdw03McEO7CfLBy7QKGdsydcMCgO9jFNBAFCtFcA==", + "requires": { + "nanoassert": "^1.0.0" + } + }, + "blakejs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.1.0.tgz", + "integrity": "sha1-ad+S75U6qIylGjLfarHFShVfx6U=" + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "requires": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + }, + "dependencies": { + "bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", + "dev": true + } + } + }, + "browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", + "dev": true + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", + "dev": true, + "requires": { + "base-x": "^3.0.2" + } + }, + "bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dev": true, + "requires": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-to-arraybuffer": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz", + "integrity": "sha1-YGSkD6dutDxyOrqe+PbhIW0QURo=" + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "bufferutil": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.3.tgz", + "integrity": "sha512-yEYTwGndELGvfXsImMBLop58eaGW+YdONi1fNjTINSY98tmMmFijBG6WXgdkfuLNt4imzQNtIE+eBp1PVpMCSw==", + "dev": true, + "requires": { + "node-gyp-build": "^4.2.0" + } + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + }, + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dev": true, + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true + } + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chai": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.4.tgz", + "integrity": "sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==", + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=" + }, + "chokidar": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", + "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.2.0" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "cids": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/cids/-/cids-0.7.5.tgz", + "integrity": "sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "class-is": "^1.1.0", + "multibase": "~0.6.0", + "multicodec": "^1.0.0", + "multihashes": "~0.4.15" + }, + "dependencies": { + "multicodec": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-1.0.4.tgz", + "integrity": "sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg==", + "dev": true, + "requires": { + "buffer": "^5.6.0", + "varint": "^5.0.0" + } + } + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "circom": { + "version": "0.5.33", + "resolved": "https://registry.npmjs.org/circom/-/circom-0.5.33.tgz", + "integrity": "sha512-UdL8fr6GckhQ4VoWjIvuYwCHneJe8z/AyJpDxgKLyuaX51ijd4gBP6jlwHDbQJsha2aU2GR9qgDsxd0jfari1Q==", + "requires": { + "chai": "^4.2.0", + "circom_runtime": "0.1.8", + "fastfile": "0.0.18", + "ffiasm": "0.1.1", + "ffjavascript": "0.2.22", + "ffwasm": "0.0.7", + "fnv-plus": "^1.3.1", + "r1csfile": "0.0.16", + "tmp-promise": "^2.0.2", + "wasmbuilder": "0.0.10" + }, + "dependencies": { + "ffjavascript": { + "version": "0.2.22", + "resolved": "https://registry.npmjs.org/ffjavascript/-/ffjavascript-0.2.22.tgz", + "integrity": "sha512-EsVqap2Txm17bKW0z/jXCX3M7rQ++nQUAJY8alWDpyhjRj90xjl6GLeVSKZQ8rOFDQ/SFFXcEB8w9X8Boxid+w==", + "requires": { + "big-integer": "^1.6.48", + "wasmcurves": "0.0.12", + "worker-threads": "^1.0.0" + } + }, + "wasmcurves": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/wasmcurves/-/wasmcurves-0.0.12.tgz", + "integrity": "sha512-1Jl9mkatyHSNj80ILjf85SZUNuZQBCkTjJlhzqHnZQXUmIimCIWkugaVaYNjozLs1Gun4h/keZe1MBeBN0sRpg==", + "requires": { + "big-integer": "^1.6.42", + "blakejs": "^1.1.0" + } + } + } + }, + "circom_runtime": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/circom_runtime/-/circom_runtime-0.1.8.tgz", + "integrity": "sha512-5ZmzCyidkNPb1zZsJGRXTuWcJ6kW6+gRBtHgf2tFqTh5dUyWVVPH0Zg7AsU2ijPr1AmYZUlme0yORUZK5HrjOA==", + "requires": { + "ffjavascript": "0.2.10", + "fnv-plus": "^1.3.1" + }, + "dependencies": { + "ffjavascript": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/ffjavascript/-/ffjavascript-0.2.10.tgz", + "integrity": "sha512-GQI6gHYYG5/iD4Kt3VzezzK7fARJzP0zkc82V/+JAdjfeKBXhDSo5rpKFuK3cDcrdW0Fu2emuYNMEAuFqhEQvQ==", + "requires": { + "big-integer": "^1.6.48", + "wasmcurves": "0.0.5", + "worker-threads": "^1.0.0" + } + } + } + }, + "class-is": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/class-is/-/class-is-1.1.0.tgz", + "integrity": "sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==", + "dev": true + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-hash": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/content-hash/-/content-hash-2.5.2.tgz", + "integrity": "sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw==", + "dev": true, + "requires": { + "cids": "^0.7.1", + "multicodec": "^0.5.5", + "multihashes": "^0.4.15" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "cookiejar": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", + "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "requires": { + "type-detect": "^4.0.0" + } + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "dev": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "ejs": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz", + "integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==", + "requires": { + "jake": "^10.6.1" + } + }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "es-abstract": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", + "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.2", + "is-string": "^1.0.5", + "object-inspect": "^1.9.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.0" + }, + "dependencies": { + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + } + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "dev": true, + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "eslint": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.3", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + }, + "espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "eth-ens-namehash": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz", + "integrity": "sha1-IprEbsqG1S4MmR58sq74P/D2i88=", + "dev": true, + "requires": { + "idna-uts46-hx": "^2.3.1", + "js-sha3": "^0.5.7" + } + }, + "eth-lib": { + "version": "0.1.29", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.1.29.tgz", + "integrity": "sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ==", + "dev": true, + "requires": { + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "nano-json-stream-parser": "^0.1.2", + "servify": "^0.1.12", + "ws": "^3.0.0", + "xhr-request-promise": "^0.1.2" + } + }, + "ethereum-bloom-filters": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.9.tgz", + "integrity": "sha512-GiK/RQkAkcVaEdxKVkPcG07PQ5vD7v2MFSHgZmBJSfMzNRHimntdBithsHAT89tAXnIpzVDWt8iaCD1DvkaxGg==", + "requires": { + "js-sha3": "^0.8.0" + }, + "dependencies": { + "js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" + } + } + }, + "ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "requires": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "ethereumjs-common": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz", + "integrity": "sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA==", + "dev": true + }, + "ethereumjs-tx": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz", + "integrity": "sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw==", + "dev": true, + "requires": { + "ethereumjs-common": "^1.5.0", + "ethereumjs-util": "^6.0.0" + } + }, + "ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "dev": true, + "requires": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + }, + "ethjs-unit": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", + "integrity": "sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk=", + "requires": { + "bn.js": "4.11.6", + "number-to-bn": "1.7.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" + } + } + }, + "ethjs-util": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", + "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", + "dev": true, + "requires": { + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" + } + }, + "eventemitter3": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", + "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "dev": true, + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "dev": true, + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz", + "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fastfile": { + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/fastfile/-/fastfile-0.0.18.tgz", + "integrity": "sha512-q03PTKc+wptis4WmuFOwPNQx2p5myFUrl/dMgRlW9mymc1Egyc14JPHgiGnWK+sJ0+dBl2Vwtfh5GfSQltYOpw==" + }, + "ffiasm": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ffiasm/-/ffiasm-0.1.1.tgz", + "integrity": "sha512-irMMHiR9JJ7BVBrAhtliUawxVdPYSdyl81taUYJ4C1mJ0iw2ueThE/qtr0J8B83tsIY8HJvh0lg5F+6ClK4xpA==", + "requires": { + "big-integer": "^1.6.48", + "ejs": "^3.0.1", + "yargs": "^15.3.1" + } + }, + "ffjavascript": { + "version": "0.2.38", + "resolved": "https://registry.npmjs.org/ffjavascript/-/ffjavascript-0.2.38.tgz", + "integrity": "sha512-b4dobcci6QxxUvNYFCHw2ONhXwtgSHCzqxbH6c7ipWMOzyoG+MPRMZgAqnUREYX8UC6zqA7AiRmiIB76nxt2TQ==", + "requires": { + "big-integer": "^1.6.48", + "wasmcurves": "0.0.14", + "web-worker": "^1.0.0" + }, + "dependencies": { + "wasmcurves": { + "version": "0.0.14", + "resolved": "https://registry.npmjs.org/wasmcurves/-/wasmcurves-0.0.14.tgz", + "integrity": "sha512-G1iMkxlRaQSdqQ1JrwHcU+awLmwyH6kFKfT8g9obd8MWe+u5oSdFXrODB0zmSI5aGGvJPG+4cAmqCGYv9R+7qg==", + "requires": { + "big-integer": "^1.6.42", + "blakejs": "^1.1.0" + } + } + } + }, + "ffwasm": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ffwasm/-/ffwasm-0.0.7.tgz", + "integrity": "sha512-17cTLzv7HHAKqZbX8MvHxjSrR0yDdn1sh4TVsTbAvO9e6klhFicnyoVXc/sCuViV/M8g65sCmVrAmoPCZp1YkQ==", + "requires": { + "big-integer": "^1.6.48", + "wasmbuilder": "0.0.10" + } + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, + "filelist": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz", + "integrity": "sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==", + "requires": { + "minimatch": "^3.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "flat": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.1.tgz", + "integrity": "sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==", + "dev": true, + "requires": { + "is-buffer": "~2.0.3" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "fnv-plus": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/fnv-plus/-/fnv-plus-1.3.1.tgz", + "integrity": "sha512-Gz1EvfOneuFfk4yG458dJ3TLJ7gV19q3OM/vVvvHf7eT02Hm1DleB4edsia6ahbKgAYxO9gvyQ1ioWZR+a00Yw==" + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dev": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "ganache-cli": { + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/ganache-cli/-/ganache-cli-6.12.2.tgz", + "integrity": "sha512-bnmwnJDBDsOWBUP8E/BExWf85TsdDEFelQSzihSJm9VChVO1SHp94YXLP5BlA4j/OTxp0wR4R1Tje9OHOuAJVw==", + "dev": true, + "requires": { + "ethereumjs-util": "6.2.1", + "source-map-support": "0.5.12", + "yargs": "13.2.4" + }, + "dependencies": { + "@types/bn.js": { + "version": "4.11.6", + "bundled": true, + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/node": { + "version": "14.11.2", + "bundled": true, + "dev": true + }, + "@types/pbkdf2": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/secp256k1": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "ansi-regex": { + "version": "4.1.0", + "bundled": true, + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "bundled": true, + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "base-x": { + "version": "3.0.8", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "blakejs": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "bn.js": { + "version": "4.11.9", + "bundled": true, + "dev": true + }, + "brorand": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "bs58": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "requires": { + "base-x": "^3.0.2" + } + }, + "bs58check": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "requires": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "buffer-from": { + "version": "1.1.1", + "bundled": true, + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "bundled": true, + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "bundled": true, + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "bundled": true, + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "cliui": { + "version": "5.0.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "color-convert": { + "version": "1.9.3", + "bundled": true, + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "bundled": true, + "dev": true + }, + "create-hash": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "bundled": true, + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "bundled": true, + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "decamelize": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, + "elliptic": { + "version": "6.5.3", + "bundled": true, + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "emoji-regex": { + "version": "7.0.3", + "bundled": true, + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "bundled": true, + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "ethereum-cryptography": { + "version": "0.1.3", + "bundled": true, + "dev": true, + "requires": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "ethereumjs-util": { + "version": "6.2.1", + "bundled": true, + "dev": true, + "requires": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + }, + "ethjs-util": { + "version": "0.1.6", + "bundled": true, + "dev": true, + "requires": { + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "get-caller-file": { + "version": "2.0.5", + "bundled": true, + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "hash-base": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, + "hash.js": { + "version": "1.1.7", + "bundled": true, + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "inherits": { + "version": "2.0.4", + "bundled": true, + "dev": true + }, + "invert-kv": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "is-hex-prefixed": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "isexe": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "keccak": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + } + }, + "lcid": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "map-age-cleaner": { + "version": "0.1.3", + "bundled": true, + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "md5.js": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mem": { + "version": "4.3.0", + "bundled": true, + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "bundled": true, + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "bundled": true, + "dev": true + }, + "node-addon-api": { + "version": "2.0.2", + "bundled": true, + "dev": true + }, + "node-gyp-build": { + "version": "4.2.3", + "bundled": true, + "dev": true + }, + "npm-run-path": { + "version": "2.0.2", + "bundled": true, + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "os-locale": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "p-defer": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "p-is-promise": { + "version": "2.1.0", + "bundled": true, + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "bundled": true, + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "bundled": true, + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "path-key": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "pbkdf2": { + "version": "3.1.1", + "bundled": true, + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "pump": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "randombytes": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "readable-stream": { + "version": "3.6.0", + "bundled": true, + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "require-directory": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "ripemd160": { + "version": "2.0.2", + "bundled": true, + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rlp": { + "version": "2.2.6", + "bundled": true, + "dev": true, + "requires": { + "bn.js": "^4.11.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "bundled": true, + "dev": true + }, + "scrypt-js": { + "version": "3.0.1", + "bundled": true, + "dev": true + }, + "secp256k1": { + "version": "4.0.2", + "bundled": true, + "dev": true, + "requires": { + "elliptic": "^6.5.2", + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + } + }, + "semver": { + "version": "5.7.1", + "bundled": true, + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "setimmediate": { + "version": "1.0.5", + "bundled": true, + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "bundled": true, + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "signal-exit": { + "version": "3.0.3", + "bundled": true, + "dev": true + }, + "source-map": { + "version": "0.6.1", + "bundled": true, + "dev": true + }, + "source-map-support": { + "version": "0.5.12", + "bundled": true, + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "string_decoder": { + "version": "1.3.0", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "string-width": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "strip-hex-prefix": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-hex-prefixed": "1.0.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "which": { + "version": "1.3.1", + "bundled": true, + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "wrap-ansi": { + "version": "5.1.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "y18n": { + "version": "4.0.0", + "bundled": true, + "dev": true + }, + "yargs": { + "version": "13.2.4", + "bundled": true, + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "os-locale": "^3.1.0", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.0" + } + }, + "yargs-parser": { + "version": "13.1.2", + "bundled": true, + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=" + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "requires": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dev": true, + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "dev": true + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "dev": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-symbol-support-x": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", + "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", + "dev": true + }, + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true + }, + "has-to-string-tag-x": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", + "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", + "dev": true, + "requires": { + "has-symbol-support-x": "^1.4.1" + } + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "http-https": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/http-https/-/http-https-1.0.0.tgz", + "integrity": "sha1-L5CN1fHbQGjAWM1ubUzjkskTOJs=", + "dev": true + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "idna-uts46-hx": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz", + "integrity": "sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA==", + "dev": true, + "requires": { + "punycode": "2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", + "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=", + "dev": true + } + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + }, + "is-arguments": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", + "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } + }, + "is-bigint": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz", + "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-boolean-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", + "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } + }, + "is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true + }, + "is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "dev": true + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" + }, + "is-generator-function": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.8.tgz", + "integrity": "sha512-2Omr/twNtufVZFr1GhxjOMFPAj2sjc/dKaIqBhvo4qciXfJmITGH6ZGd8eZYNHza8t1y0e01AuqRhJwfWp26WQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-hex-prefixed": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha1-fY035q135dEnFIkTxXPggtd39VQ=" + }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-number-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", + "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", + "dev": true + }, + "is-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", + "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==", + "dev": true + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" + } + }, + "is-retry-allowed": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", + "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typed-array": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.5.tgz", + "integrity": "sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.2", + "call-bind": "^1.0.2", + "es-abstract": "^1.18.0-next.2", + "foreach": "^2.0.5", + "has-symbols": "^1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "isurl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", + "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "dev": true, + "requires": { + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" + } + }, + "jake": { + "version": "10.8.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz", + "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==", + "requires": { + "async": "0.9.x", + "chalk": "^2.4.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + } + }, + "js-sha3": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", + "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "keccak": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.1.tgz", + "integrity": "sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA==", + "dev": true, + "requires": { + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + } + }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dev": true, + "requires": { + "json-buffer": "3.0.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2" + } + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "mime-db": { + "version": "1.46.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz", + "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==", + "dev": true + }, + "mime-types": { + "version": "2.1.29", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz", + "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==", + "dev": true, + "requires": { + "mime-db": "1.46.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + }, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "requires": { + "dom-walk": "^0.1.0" + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dev": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "mkdirp-promise": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz", + "integrity": "sha1-6bj2jlUsaKnBcTuEiD96HdA5uKE=", + "dev": true, + "requires": { + "mkdirp": "*" + } + }, + "mocha": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.2.0.tgz", + "integrity": "sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ==", + "dev": true, + "requires": { + "ansi-colors": "3.2.3", + "browser-stdout": "1.3.1", + "chokidar": "3.3.0", + "debug": "3.2.6", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "find-up": "3.0.0", + "glob": "7.1.3", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "3.13.1", + "log-symbols": "3.0.0", + "minimatch": "3.0.4", + "mkdirp": "0.5.5", + "ms": "2.1.1", + "node-environment-flags": "1.0.6", + "object.assign": "4.1.0", + "strip-json-comments": "2.0.1", + "supports-color": "6.0.0", + "which": "1.3.1", + "wide-align": "1.1.3", + "yargs": "13.3.2", + "yargs-parser": "13.1.2", + "yargs-unparser": "1.6.0" + }, + "dependencies": { + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "supports-color": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", + "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + } + } + }, + "mock-fs": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-4.13.0.tgz", + "integrity": "sha512-DD0vOdofJdoaRNtnWcrXe6RQbpHkPPmtqGq14uRX0F8ZKJ5nv89CVTYl/BZdppDxBDaV0hl75htg3abpEWlPZA==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "multibase": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.6.1.tgz", + "integrity": "sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw==", + "dev": true, + "requires": { + "base-x": "^3.0.8", + "buffer": "^5.5.0" + } + }, + "multicodec": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-0.5.7.tgz", + "integrity": "sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA==", + "dev": true, + "requires": { + "varint": "^5.0.0" + } + }, + "multihashes": { + "version": "0.4.21", + "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.4.21.tgz", + "integrity": "sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "multibase": "^0.7.0", + "varint": "^5.0.0" + }, + "dependencies": { + "multibase": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.7.0.tgz", + "integrity": "sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg==", + "dev": true, + "requires": { + "base-x": "^3.0.8", + "buffer": "^5.5.0" + } + } + } + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "nan": { + "version": "2.14.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", + "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==" + }, + "nano-json-stream-parser": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz", + "integrity": "sha1-DMj20OK2IrR5xA1JnEbWS3Vcb18=", + "dev": true + }, + "nanoassert": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/nanoassert/-/nanoassert-1.1.0.tgz", + "integrity": "sha1-TzFS4JVA/eKMdvRLGbvNHVpCR40=" + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-addon-api": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", + "dev": true + }, + "node-environment-flags": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", + "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", + "dev": true, + "requires": { + "object.getownpropertydescriptors": "^2.0.3", + "semver": "^5.7.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "node-gyp-build": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.2.3.tgz", + "integrity": "sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-url": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", + "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==", + "dev": true + }, + "number-to-bn": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", + "integrity": "sha1-uzYjWS9+X54AMLGXe9QaDFP+HqA=", + "requires": { + "bn.js": "4.11.6", + "strip-hex-prefix": "1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" + } + } + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-inspect": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", + "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2" + } + }, + "oboe": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/oboe/-/oboe-2.1.5.tgz", + "integrity": "sha1-VVQoTFQ6ImbXo48X4HOCH73jk80=", + "dev": true, + "requires": { + "http-https": "^1.0.0" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-timeout": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", + "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", + "dev": true, + "requires": { + "p-finally": "^1.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, + "requires": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-headers": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.3.tgz", + "integrity": "sha512-QhhZ+DCCit2Coi2vmAKbq5RGTRcQUOE2+REgv8vdyu7MnYx2eZztegqtTx99TZ86GTIwqiy3+4nQTWZ2tgmdCA==" + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==" + }, + "pbkdf2": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", + "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "dev": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + } + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + }, + "query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "requires": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "r1csfile": { + "version": "0.0.16", + "resolved": "https://registry.npmjs.org/r1csfile/-/r1csfile-0.0.16.tgz", + "integrity": "sha512-A2jRVWzGgmXeG2lVAc0H4suJmzt50it5UvBnycJgBCpMXM3tH/M6RguP7nvs6suY/yYnkN6jX6iTScSiDUF3FA==", + "requires": { + "@iden3/bigarray": "0.0.2", + "fastfile": "0.0.18", + "ffjavascript": "0.2.22" + }, + "dependencies": { + "ffjavascript": { + "version": "0.2.22", + "resolved": "https://registry.npmjs.org/ffjavascript/-/ffjavascript-0.2.22.tgz", + "integrity": "sha512-EsVqap2Txm17bKW0z/jXCX3M7rQ++nQUAJY8alWDpyhjRj90xjl6GLeVSKZQ8rOFDQ/SFFXcEB8w9X8Boxid+w==", + "requires": { + "big-integer": "^1.6.48", + "wasmcurves": "0.0.12", + "worker-threads": "^1.0.0" + } + }, + "wasmcurves": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/wasmcurves/-/wasmcurves-0.0.12.tgz", + "integrity": "sha512-1Jl9mkatyHSNj80ILjf85SZUNuZQBCkTjJlhzqHnZQXUmIimCIWkugaVaYNjozLs1Gun4h/keZe1MBeBN0sRpg==", + "requires": { + "big-integer": "^1.6.42", + "blakejs": "^1.1.0" + } + } + } + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "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, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", + "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", + "dev": true, + "requires": { + "picomatch": "^2.0.4" + } + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dev": true, + "requires": { + "lowercase-keys": "^1.0.0" + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rlp": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.6.tgz", + "integrity": "sha512-HAfAmL6SDYNWPUOJNrM500x4Thn4PZsEy5pijPh40U9WfNk0z15hUYzO9xVIMAdIHdFtD8CBDHd75Td1g36Mjg==", + "dev": true, + "requires": { + "bn.js": "^4.11.1" + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "rxjs": { + "version": "6.6.6", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.6.tgz", + "integrity": "sha512-/oTwee4N4iWzAMAL9xdGKjkEHmIwupR3oXbQjCKywF1BeFohswF3vZdogbmEF6pZkOsXTzWkrZszrWpQTByYVg==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", + "dev": true + }, + "secp256k1": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.2.tgz", + "integrity": "sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg==", + "dev": true, + "requires": { + "elliptic": "^6.5.2", + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "servify": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/servify/-/servify-0.1.12.tgz", + "integrity": "sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw==", + "dev": true, + "requires": { + "body-parser": "^1.16.0", + "cors": "^2.8.1", + "express": "^4.14.0", + "request": "^2.79.0", + "xhr": "^2.3.3" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" + }, + "simple-get": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.1.tgz", + "integrity": "sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw==", + "requires": { + "decompress-response": "^3.3.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + } + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "strip-hex-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", + "integrity": "sha1-DF8VX+8RUTczd96du1iNoFUA428=", + "requires": { + "is-hex-prefixed": "1.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "swarm-js": { + "version": "0.1.40", + "resolved": "https://registry.npmjs.org/swarm-js/-/swarm-js-0.1.40.tgz", + "integrity": "sha512-yqiOCEoA4/IShXkY3WKwP5PvZhmoOOD8clsKA7EEcRILMkTEYHCQ21HDCAcVpmIxZq4LyZvWeRJ6quIyHk1caA==", + "dev": true, + "requires": { + "bluebird": "^3.5.0", + "buffer": "^5.0.5", + "eth-lib": "^0.1.26", + "fs-extra": "^4.0.2", + "got": "^7.1.0", + "mime-types": "^2.1.16", + "mkdirp-promise": "^5.0.1", + "mock-fs": "^4.1.0", + "setimmediate": "^1.0.5", + "tar": "^4.0.2", + "xhr-request": "^1.0.1" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "got": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", + "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", + "dev": true, + "requires": { + "decompress-response": "^3.2.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-plain-obj": "^1.1.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "p-cancelable": "^0.3.0", + "p-timeout": "^1.1.1", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "url-parse-lax": "^1.0.0", + "url-to-options": "^1.0.1" + } + }, + "p-cancelable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", + "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "dev": true, + "requires": { + "prepend-http": "^1.0.1" + } + } + } + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + } + } + }, + "tar": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "dev": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "tmp-promise": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-2.1.1.tgz", + "integrity": "sha512-Z048AOz/w9b6lCbJUpevIJpRpUztENl8zdv1bmAKVHimfqRFl92ROkmT9rp7TVBnrEw2gtMTol/2Cp2S2kJa4Q==", + "requires": { + "tmp": "0.1.0" + }, + "dependencies": { + "tmp": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz", + "integrity": "sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==", + "requires": { + "rimraf": "^2.6.3" + } + } + } + }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", + "dev": true + }, + "unbox-primitive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.0.tgz", + "integrity": "sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.0", + "has-symbols": "^1.0.0", + "which-boxed-primitive": "^1.0.1" + } + }, + "underscore": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz", + "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==" + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dev": true, + "requires": { + "prepend-http": "^2.0.0" + } + }, + "url-set-query": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-set-query/-/url-set-query-1.0.0.tgz", + "integrity": "sha1-AW6M/Xwg7gXK/neV6JK9BwL6ozk=" + }, + "url-to-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", + "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", + "dev": true + }, + "utf-8-validate": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.4.tgz", + "integrity": "sha512-MEF05cPSq3AwJ2C7B7sHAA6i53vONoZbMGX8My5auEVm6W+dJ2Jd/TZPyGJ5CH42V2XtbI5FD28HeHeqlPzZ3Q==", + "dev": true, + "requires": { + "node-gyp-build": "^4.2.0" + } + }, + "utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", + "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==" + }, + "util": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.3.tgz", + "integrity": "sha512-I8XkoQwE+fPQEhy9v012V+TSdH2kp9ts29i20TaaDUXsg7x/onePbhFJUExBfv/2ay1ZOp/Vsm3nDlmnFGSAog==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "safe-buffer": "^5.1.2", + "which-typed-array": "^1.1.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "varint": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", + "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==", + "dev": true + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "wasmbuilder": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/wasmbuilder/-/wasmbuilder-0.0.10.tgz", + "integrity": "sha512-zQSvZ7d74d9OvN+mCN6ucNne4QS5/cBBYTHldX0Oe+u9gStY21orapvuX1ajisA7RVIpuFhYg+ZgdySsPfeh0A==", + "requires": { + "big-integer": "^1.6.48" + } + }, + "wasmcurves": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/wasmcurves/-/wasmcurves-0.0.5.tgz", + "integrity": "sha512-BmI4GXLjLawGg2YkvHa8zRsnWec+d1uwoxE+Iov8cqOpDL7GA5XO2pk2yuDbXHMzwIug2exnKot3baRZ86R0pA==", + "requires": { + "big-integer": "^1.6.42", + "blakejs": "^1.1.0" + } + }, + "web-worker": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.0.0.tgz", + "integrity": "sha512-BzuMqeKVkKKwHV6tJuwePFcxYMxvC97D448mXTgh/CxXAB4sRtoV26gRPN+JDxsXRR7QZyioMV9O6NzQaASf7Q==" + }, + "web3": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/web3/-/web3-1.3.4.tgz", + "integrity": "sha512-D6cMb2EtTMLHgdGbkTPGl/Qi7DAfczR+Lp7iFX3bcu/bsD9V8fZW69hA8v5cRPNGzXUwVQebk3bS17WKR4cD2w==", + "dev": true, + "requires": { + "web3-bzz": "1.3.4", + "web3-core": "1.3.4", + "web3-eth": "1.3.4", + "web3-eth-personal": "1.3.4", + "web3-net": "1.3.4", + "web3-shh": "1.3.4", + "web3-utils": "1.3.4" + } + }, + "web3-bzz": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.3.4.tgz", + "integrity": "sha512-DBRVQB8FAgoAtZCpp2GAGPCJjgBgsuwOKEasjV044AAZiONpXcKHbkO6G1SgItIixnrJsRJpoGLGw52Byr6FKw==", + "dev": true, + "requires": { + "@types/node": "^12.12.6", + "got": "9.6.0", + "swarm-js": "^0.1.40", + "underscore": "1.9.1" + } + }, + "web3-core": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.3.4.tgz", + "integrity": "sha512-7OJu46RpCEfTerl+gPvHXANR2RkLqAfW7l2DAvQ7wN0pnCzl9nEfdgW6tMhr31k3TR2fWucwKzCyyxMGzMHeSA==", + "dev": true, + "requires": { + "@types/bn.js": "^4.11.5", + "@types/node": "^12.12.6", + "bignumber.js": "^9.0.0", + "web3-core-helpers": "1.3.4", + "web3-core-method": "1.3.4", + "web3-core-requestmanager": "1.3.4", + "web3-utils": "1.3.4" + } + }, + "web3-core-helpers": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.3.4.tgz", + "integrity": "sha512-n7BqDalcTa1stncHMmrnFtyTgDhX5Fy+avNaHCf6qcOP2lwTQC8+mdHVBONWRJ6Yddvln+c8oY/TAaB6PzWK0A==", + "dev": true, + "requires": { + "underscore": "1.9.1", + "web3-eth-iban": "1.3.4", + "web3-utils": "1.3.4" + } + }, + "web3-core-method": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.3.4.tgz", + "integrity": "sha512-JxmQrujsAWYRRN77P/RY7XuZDCzxSiiQJrgX/60Lfyf7FF1Y0le4L/UMCi7vUJnuYkbU1Kfl9E0udnqwyPqlvQ==", + "dev": true, + "requires": { + "@ethersproject/transactions": "^5.0.0-beta.135", + "underscore": "1.9.1", + "web3-core-helpers": "1.3.4", + "web3-core-promievent": "1.3.4", + "web3-core-subscriptions": "1.3.4", + "web3-utils": "1.3.4" + } + }, + "web3-core-promievent": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.3.4.tgz", + "integrity": "sha512-V61dZIeBwogg6hhZZUt0qL9hTp1WDhnsdjP++9fhTDr4vy/Gz8T5vibqT2LLg6lQC8i+Py33yOpMeMNjztaUaw==", + "dev": true, + "requires": { + "eventemitter3": "4.0.4" + } + }, + "web3-core-requestmanager": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.3.4.tgz", + "integrity": "sha512-xriouCrhVnVDYQ04TZXdEREZm0OOJzkSEsoN5bu4JYsA6e/HzROeU+RjDpMUxFMzN4wxmFZ+HWbpPndS3QwMag==", + "dev": true, + "requires": { + "underscore": "1.9.1", + "util": "^0.12.0", + "web3-core-helpers": "1.3.4", + "web3-providers-http": "1.3.4", + "web3-providers-ipc": "1.3.4", + "web3-providers-ws": "1.3.4" + } + }, + "web3-core-subscriptions": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.3.4.tgz", + "integrity": "sha512-drVHVDxh54hv7xmjIm44g4IXjfGj022fGw4/meB5R2D8UATFI40F73CdiBlyqk3DysP9njDOLTJFSQvEkLFUOg==", + "dev": true, + "requires": { + "eventemitter3": "4.0.4", + "underscore": "1.9.1", + "web3-core-helpers": "1.3.4" + } + }, + "web3-eth": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.3.4.tgz", + "integrity": "sha512-8OIVMLbvmx+LB5RZ4tDhXuFGWSdNMrCZ4HM0+PywQ08uEcmAcqTMFAn4vdPii+J8gCatZR501r1KdzX3SDLoPw==", + "dev": true, + "requires": { + "underscore": "1.9.1", + "web3-core": "1.3.4", + "web3-core-helpers": "1.3.4", + "web3-core-method": "1.3.4", + "web3-core-subscriptions": "1.3.4", + "web3-eth-abi": "1.3.4", + "web3-eth-accounts": "1.3.4", + "web3-eth-contract": "1.3.4", + "web3-eth-ens": "1.3.4", + "web3-eth-iban": "1.3.4", + "web3-eth-personal": "1.3.4", + "web3-net": "1.3.4", + "web3-utils": "1.3.4" + } + }, + "web3-eth-abi": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.3.4.tgz", + "integrity": "sha512-PVSLXJ2dzdXsC+R24llIIEOS6S1KhG5qwNznJjJvXZFe3sqgdSe47eNvwUamZtCBjcrdR/HQr+L/FTxqJSf80Q==", + "dev": true, + "requires": { + "@ethersproject/abi": "5.0.7", + "underscore": "1.9.1", + "web3-utils": "1.3.4" + } + }, + "web3-eth-accounts": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.3.4.tgz", + "integrity": "sha512-gz9ReSmQEjqbYAjpmAx+UZF4CVMbyS4pfjSYWGAnNNI+Xz0f0u0kCIYXQ1UEaE+YeLcYiE+ZlZdgg6YoatO5nA==", + "dev": true, + "requires": { + "crypto-browserify": "3.12.0", + "eth-lib": "0.2.8", + "ethereumjs-common": "^1.3.2", + "ethereumjs-tx": "^2.1.1", + "scrypt-js": "^3.0.1", + "underscore": "1.9.1", + "uuid": "3.3.2", + "web3-core": "1.3.4", + "web3-core-helpers": "1.3.4", + "web3-core-method": "1.3.4", + "web3-utils": "1.3.4" + }, + "dependencies": { + "eth-lib": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", + "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", + "dev": true, + "requires": { + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "xhr-request-promise": "^0.1.2" + } + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true + } + } + }, + "web3-eth-contract": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.3.4.tgz", + "integrity": "sha512-Fvy8ZxUksQY2ePt+XynFfOiSqxgQtMn4m2NJs6VXRl2Inl17qyRi/nIJJVKTcENLocm+GmZ/mxq2eOE5u02nPg==", + "dev": true, + "requires": { + "@types/bn.js": "^4.11.5", + "underscore": "1.9.1", + "web3-core": "1.3.4", + "web3-core-helpers": "1.3.4", + "web3-core-method": "1.3.4", + "web3-core-promievent": "1.3.4", + "web3-core-subscriptions": "1.3.4", + "web3-eth-abi": "1.3.4", + "web3-utils": "1.3.4" + } + }, + "web3-eth-ens": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.3.4.tgz", + "integrity": "sha512-b0580tQyQwpV2wyacwQiBEfQmjCUln5iPhge3IBIMXaI43BUNtH3lsCL9ERFQeOdweB4o+6rYyNYr6xbRcSytg==", + "dev": true, + "requires": { + "content-hash": "^2.5.2", + "eth-ens-namehash": "2.0.8", + "underscore": "1.9.1", + "web3-core": "1.3.4", + "web3-core-helpers": "1.3.4", + "web3-core-promievent": "1.3.4", + "web3-eth-abi": "1.3.4", + "web3-eth-contract": "1.3.4", + "web3-utils": "1.3.4" + } + }, + "web3-eth-iban": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.3.4.tgz", + "integrity": "sha512-Y7/hLjVvIN/OhaAyZ8L/hxbTqVX6AFTl2RwUXR6EEU9oaLydPcMjAx/Fr8mghUvQS3QJSr+UGubP3W4SkyNiYw==", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "web3-utils": "1.3.4" + } + }, + "web3-eth-personal": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.3.4.tgz", + "integrity": "sha512-JiTbaktYVk1j+S2EDooXAhw5j/VsdvZfKRmHtXUe/HizPM9ETXmj1+ne4RT6m+950jQ7DJwUF3XU1FKYNtEDwQ==", + "dev": true, + "requires": { + "@types/node": "^12.12.6", + "web3-core": "1.3.4", + "web3-core-helpers": "1.3.4", + "web3-core-method": "1.3.4", + "web3-net": "1.3.4", + "web3-utils": "1.3.4" + } + }, + "web3-net": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.3.4.tgz", + "integrity": "sha512-wVyqgVC3Zt/0uGnBiR3GpnsS8lvOFTDgWZMxAk9C6Guh8aJD9MUc7pbsw5rHrPUVe6S6RUfFJvh/Xq8oMIQgSw==", + "dev": true, + "requires": { + "web3-core": "1.3.4", + "web3-core-method": "1.3.4", + "web3-utils": "1.3.4" + } + }, + "web3-providers-http": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.3.4.tgz", + "integrity": "sha512-aIg/xHXvxpqpFU70sqfp+JC3sGkLfAimRKTUhG4oJZ7U+tTcYTHoxBJj+4A3Id4JAoKiiv0k1/qeyQ8f3rMC3g==", + "dev": true, + "requires": { + "web3-core-helpers": "1.3.4", + "xhr2-cookies": "1.1.0" + } + }, + "web3-providers-ipc": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.3.4.tgz", + "integrity": "sha512-E0CvXEJElr/TIlG1YfJeO3Le5NI/4JZM+1SsEdiPIfBUAJN18oOoum138EBGKv5+YaLKZUtUuJSXWjIIOR/0Ig==", + "dev": true, + "requires": { + "oboe": "2.1.5", + "underscore": "1.9.1", + "web3-core-helpers": "1.3.4" + } + }, + "web3-providers-ws": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.3.4.tgz", + "integrity": "sha512-WBd9hk2fUAdrbA3kUyUk94ZeILtE6txLeoVVvIKAw2bPegx+RjkLyxC1Du0oceKgQ/qQWod8CCzl1E/GgTP+MQ==", + "dev": true, + "requires": { + "eventemitter3": "4.0.4", + "underscore": "1.9.1", + "web3-core-helpers": "1.3.4", + "websocket": "^1.0.32" + } + }, + "web3-shh": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.3.4.tgz", + "integrity": "sha512-zoeww5mxLh3xKcqbX85irQbtFe5pc5XwrgjvmdMkhkOdZzPASlWOgqzUFtaPykpLwC3yavVx4jG5RqifweXLUA==", + "dev": true, + "requires": { + "web3-core": "1.3.4", + "web3-core-method": "1.3.4", + "web3-core-subscriptions": "1.3.4", + "web3-net": "1.3.4" + } + }, + "web3-utils": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.3.4.tgz", + "integrity": "sha512-/vC2v0MaZNpWooJfpRw63u0Y3ag2gNjAWiLtMSL6QQLmCqCy4SQIndMt/vRyx0uMoeGt1YTwSXEcHjUzOhLg0A==", + "requires": { + "bn.js": "^4.11.9", + "eth-lib": "0.2.8", + "ethereum-bloom-filters": "^1.0.6", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "underscore": "1.9.1", + "utf8": "3.0.0" + }, + "dependencies": { + "eth-lib": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", + "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", + "requires": { + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "xhr-request-promise": "^0.1.2" + } + } + } + }, + "websocket": { + "version": "1.0.33", + "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.33.tgz", + "integrity": "sha512-XwNqM2rN5eh3G2CUQE3OHZj+0xfdH42+OFK6LdC2yqiC0YU8e5UK0nYre220T0IyyN031V/XOvtHvXozvJYFWA==", + "dev": true, + "requires": { + "bufferutil": "^4.0.1", + "debug": "^2.2.0", + "es5-ext": "^0.10.50", + "typedarray-to-buffer": "^3.1.5", + "utf-8-validate": "^5.0.2", + "yaeti": "^0.0.6" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "which-typed-array": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.4.tgz", + "integrity": "sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.2", + "call-bind": "^1.0.0", + "es-abstract": "^1.18.0-next.1", + "foreach": "^2.0.5", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.1", + "is-typed-array": "^1.1.3" + } + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "worker-threads": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/worker-threads/-/worker-threads-1.0.0.tgz", + "integrity": "sha512-vK6Hhvph8oLxocEJIlc3YfGAZhm210uGzjZsXSu+JYLAQ/s/w4Tqgl60JrdH58hW8NSGP4m3bp8a92qPXgX05w==" + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + }, + "xhr": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", + "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", + "requires": { + "global": "~4.4.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "xhr-request": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xhr-request/-/xhr-request-1.1.0.tgz", + "integrity": "sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA==", + "requires": { + "buffer-to-arraybuffer": "^0.0.5", + "object-assign": "^4.1.1", + "query-string": "^5.0.1", + "simple-get": "^2.7.0", + "timed-out": "^4.0.1", + "url-set-query": "^1.0.0", + "xhr": "^2.0.4" + } + }, + "xhr-request-promise": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz", + "integrity": "sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg==", + "requires": { + "xhr-request": "^1.1.0" + } + }, + "xhr2-cookies": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz", + "integrity": "sha1-fXdEnQmZGX8VXLc7I99yUF7YnUg=", + "dev": true, + "requires": { + "cookiejar": "^2.1.1" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "y18n": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", + "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==" + }, + "yaeti": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", + "integrity": "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc=", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "yargs-unparser": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", + "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", + "dev": true, + "requires": { + "flat": "^4.1.0", + "lodash": "^4.17.15", + "yargs": "^13.3.0" + }, + "dependencies": { + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + } + } + } + } +} diff --git a/zkrsa/circom-rsa-verify/circomlib/package.json b/zkrsa/circom-rsa-verify/circomlib/package.json new file mode 100644 index 000000000..b798f4589 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/package.json @@ -0,0 +1,40 @@ +{ + "name": "circomlib", + "version": "0.5.3", + "description": "Basic circuits library for Circom", + "main": "index.js", + "directories": { + "test": "test" + }, + "scripts": { + "test": "mocha --max-old-space-size=4000" + }, + "keywords": [ + "pedersen", + "hash", + "ethereum", + "circuit", + "circom", + "zksnark" + ], + "repository": { + "type": "git", + "url": "https://github.com/iden3/circomlib.git" + }, + "author": "0Kims", + "license": "GPL-3.0", + "dependencies": { + "blake-hash": "^1.1.0", + "blake2b": "^2.1.3", + "circom": "0.5.33", + "ffjavascript": "0.2.38", + "web3-utils": "^1.3.0" + }, + "devDependencies": { + "chai": "^4.3.4", + "eslint": "^6.8.0", + "ganache-cli": "^6.12.1", + "mocha": "^7.1.1", + "web3": "^1.3.0" + } +} diff --git a/zkrsa/circom-rsa-verify/circomlib/src/babyjub.js b/zkrsa/circom-rsa-verify/circomlib/src/babyjub.js new file mode 100644 index 000000000..6651571b7 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/src/babyjub.js @@ -0,0 +1,128 @@ +const F1Field = require("ffjavascript").F1Field; +const Scalar = require("ffjavascript").Scalar; +const utils = require("ffjavascript").utils; + +exports.addPoint = addPoint; +exports.mulPointEscalar = mulPointEscalar; +exports.inCurve = inCurve; +exports.inSubgroup = inSubgroup; +exports.packPoint = packPoint; +exports.unpackPoint = unpackPoint; + + +exports.p = Scalar.fromString("21888242871839275222246405745257275088548364400416034343698204186575808495617"); +const F = new F1Field(exports.p); +exports.F = F; + +exports.Generator = [ + F.e("995203441582195749578291179787384436505546430278305826713579947235728471134"), + F.e("5472060717959818805561601436314318772137091100104008585924551046643952123905") +]; +exports.Base8 = [ + F.e("5299619240641551281634865583518297030282874472190772894086521144482721001553"), + F.e("16950150798460657717958625567821834550301663161624707787222815936182638968203") +]; +exports.order = Scalar.fromString("21888242871839275222246405745257275088614511777268538073601725287587578984328"); +exports.subOrder = Scalar.shiftRight(exports.order, 3); +exports.A = F.e("168700"); +exports.D = F.e("168696"); + + +function addPoint(a,b) { + + const res = []; + + /* does the equivalent of: + res[0] = bigInt((a[0]*b[1] + b[0]*a[1]) * bigInt(bigInt("1") + d*a[0]*b[0]*a[1]*b[1]).inverse(q)).affine(q); + res[1] = bigInt((a[1]*b[1] - cta*a[0]*b[0]) * bigInt(bigInt("1") - d*a[0]*b[0]*a[1]*b[1]).inverse(q)).affine(q); + */ + + const beta = F.mul(a[0],b[1]); + const gamma = F.mul(a[1],b[0]); + const delta = F.mul( + F.sub(a[1], F.mul(exports.A, a[0])), + F.add(b[0], b[1]) + ); + const tau = F.mul(beta, gamma); + const dtau = F.mul(exports.D, tau); + + res[0] = F.div( + F.add(beta, gamma), + F.add(F.one, dtau) + ); + + res[1] = F.div( + F.add(delta, F.sub(F.mul(exports.A,beta), gamma)), + F.sub(F.one, dtau) + ); + + return res; +} + +function mulPointEscalar(base, e) { + let res = [F.e("0"),F.e("1")]; + let rem = e; + let exp = base; + + while (! Scalar.isZero(rem)) { + if (Scalar.isOdd(rem)) { + res = addPoint(res, exp); + } + exp = addPoint(exp, exp); + rem = Scalar.shiftRight(rem, 1); + } + + return res; +} + +function inSubgroup(P) { + if (!inCurve(P)) return false; + const res= mulPointEscalar(P, exports.subOrder); + return (F.isZero(res[0]) && F.eq(res[1], F.one)); +} + +function inCurve(P) { + + const x2 = F.square(P[0]); + const y2 = F.square(P[1]); + + if (!F.eq( + F.add(F.mul(exports.A, x2), y2), + F.add(F.one, F.mul(F.mul(x2, y2), exports.D)))) return false; + + return true; +} + +function packPoint(P) { + const buff = utils.leInt2Buff(P[1], 32); + if (F.lt(P[0], F.zero)) { + buff[31] = buff[31] | 0x80; + } + return buff; +} + +function unpackPoint(_buff) { + const buff = Buffer.from(_buff); + let sign = false; + const P = new Array(2); + if (buff[31] & 0x80) { + sign = true; + buff[31] = buff[31] & 0x7F; + } + P[1] = utils.leBuff2int(buff); + if (Scalar.gt(P[1], exports.p)) return null; + + const y2 = F.square(P[1]); + + let x = F.sqrt(F.div( + F.sub(F.one, y2), + F.sub(exports.A, F.mul(exports.D, y2)))); + + if (x == null) return null; + + if (sign) x = F.neg(x); + + P[0] = x; + + return P; +} diff --git a/zkrsa/circom-rsa-verify/circomlib/src/eddsa.js b/zkrsa/circom-rsa-verify/circomlib/src/eddsa.js new file mode 100644 index 000000000..3edad47f6 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/src/eddsa.js @@ -0,0 +1,228 @@ +const createBlakeHash = require("blake-hash"); +const Scalar = require("ffjavascript").Scalar; +const F1Field = require("ffjavascript").F1Field; +const babyJub = require("./babyjub"); +const utils = require("ffjavascript").utils; +const pedersenHash = require("./pedersenHash").hash; +const mimc7 = require("./mimc7"); +const poseidon = require("./poseidon.js"); +const mimcsponge = require("./mimcsponge"); + + +exports.prv2pub= prv2pub; +exports.sign = sign; +exports.signMiMC = signMiMC; +exports.signPoseidon = signPoseidon; +exports.signMiMCSponge = signMiMCSponge; +exports.verify = verify; +exports.verifyMiMC = verifyMiMC; +exports.verifyPoseidon = verifyPoseidon; +exports.verifyMiMCSponge = verifyMiMCSponge; +exports.packSignature = packSignature; +exports.unpackSignature = unpackSignature; +exports.pruneBuffer = pruneBuffer; + + +function pruneBuffer(_buff) { + const buff = Buffer.from(_buff); + buff[0] = buff[0] & 0xF8; + buff[31] = buff[31] & 0x7F; + buff[31] = buff[31] | 0x40; + return buff; +} + +function prv2pub(prv) { + const sBuff = pruneBuffer(createBlakeHash("blake512").update(prv).digest().slice(0,32)); + let s = utils.leBuff2int(sBuff); + const A = babyJub.mulPointEscalar(babyJub.Base8, Scalar.shr(s,3)); + return A; +} + +function sign(prv, msg) { + const h1 = createBlakeHash("blake512").update(prv).digest(); + const sBuff = pruneBuffer(h1.slice(0,32)); + const s = utils.leBuff2int(sBuff); + const A = babyJub.mulPointEscalar(babyJub.Base8, Scalar.shr(s, 3)); + + const rBuff = createBlakeHash("blake512").update(Buffer.concat([h1.slice(32,64), msg])).digest(); + let r = utils.leBuff2int(rBuff); + const Fr = new F1Field(babyJub.subOrder); + r = Fr.e(r); + const R8 = babyJub.mulPointEscalar(babyJub.Base8, r); + const R8p = babyJub.packPoint(R8); + const Ap = babyJub.packPoint(A); + const hmBuff = pedersenHash(Buffer.concat([R8p, Ap, msg])); + const hm = utils.leBuff2int(hmBuff); + const S = Fr.add(r , Fr.mul(hm, s)); + return { + R8: R8, + S: S + }; +} + +function signMiMC(prv, msg) { + const h1 = createBlakeHash("blake512").update(prv).digest(); + const sBuff = pruneBuffer(h1.slice(0,32)); + const s = utils.leBuff2int(sBuff); + const A = babyJub.mulPointEscalar(babyJub.Base8, Scalar.shr(s, 3)); + + const msgBuff = utils.leInt2Buff(msg, 32); + const rBuff = createBlakeHash("blake512").update(Buffer.concat([h1.slice(32,64), msgBuff])).digest(); + let r = utils.leBuff2int(rBuff); + const Fr = new F1Field(babyJub.subOrder); + r = Fr.e(r); + const R8 = babyJub.mulPointEscalar(babyJub.Base8, r); + const hm = mimc7.multiHash([R8[0], R8[1], A[0], A[1], msg]); + const S = Fr.add(r , Fr.mul(hm, s)); + return { + R8: R8, + S: S + }; +} + +function signMiMCSponge(prv, msg) { + const h1 = createBlakeHash("blake512").update(prv).digest(); + const sBuff = pruneBuffer(h1.slice(0,32)); + const s = utils.leBuff2int(sBuff); + const A = babyJub.mulPointEscalar(babyJub.Base8, Scalar.shr(s, 3)); + + const msgBuff = utils.leInt2Buff(msg, 32); + const rBuff = createBlakeHash("blake512").update(Buffer.concat([h1.slice(32,64), msgBuff])).digest(); + let r = utils.leBuff2int(rBuff); + const Fr = new F1Field(babyJub.subOrder); + r = Fr.e(r); + const R8 = babyJub.mulPointEscalar(babyJub.Base8, r); + const hm = mimcsponge.multiHash([R8[0], R8[1], A[0], A[1], msg]); + const S = Fr.add(r , Fr.mul(hm, s)); + return { + R8: R8, + S: S + }; +} + +function signPoseidon(prv, msg) { + const h1 = createBlakeHash("blake512").update(prv).digest(); + const sBuff = pruneBuffer(h1.slice(0,32)); + const s = utils.leBuff2int(sBuff); + const A = babyJub.mulPointEscalar(babyJub.Base8, Scalar.shr(s, 3)); + + const msgBuff = utils.leInt2Buff(msg, 32); + const rBuff = createBlakeHash("blake512").update(Buffer.concat([h1.slice(32,64), msgBuff])).digest(); + let r = utils.leBuff2int(rBuff); + const Fr = new F1Field(babyJub.subOrder); + r = Fr.e(r); + const R8 = babyJub.mulPointEscalar(babyJub.Base8, r); + const hm = poseidon([R8[0], R8[1], A[0], A[1], msg]); + const S = Fr.add(r , Fr.mul(hm, s)); + return { + R8: R8, + S: S + }; +} + +function verify(msg, sig, A) { + // Check parameters + if (typeof sig != "object") return false; + if (!Array.isArray(sig.R8)) return false; + if (sig.R8.length!= 2) return false; + if (!babyJub.inCurve(sig.R8)) return false; + if (!Array.isArray(A)) return false; + if (A.length!= 2) return false; + if (!babyJub.inCurve(A)) return false; + if (sig.S>= babyJub.subOrder) return false; + + const R8p = babyJub.packPoint(sig.R8); + const Ap = babyJub.packPoint(A); + const hmBuff = pedersenHash(Buffer.concat([R8p, Ap, msg])); + const hm = utils.leBuff2int(hmBuff); + + const Pleft = babyJub.mulPointEscalar(babyJub.Base8, sig.S); + let Pright = babyJub.mulPointEscalar(A, Scalar.mul(hm,8)); + Pright = babyJub.addPoint(sig.R8, Pright); + + if (!babyJub.F.eq(Pleft[0],Pright[0])) return false; + if (!babyJub.F.eq(Pleft[1],Pright[1])) return false; + return true; +} + +function verifyMiMC(msg, sig, A) { + // Check parameters + if (typeof sig != "object") return false; + if (!Array.isArray(sig.R8)) return false; + if (sig.R8.length!= 2) return false; + if (!babyJub.inCurve(sig.R8)) return false; + if (!Array.isArray(A)) return false; + if (A.length!= 2) return false; + if (!babyJub.inCurve(A)) return false; + if (sig.S>= babyJub.subOrder) return false; + + const hm = mimc7.multiHash([sig.R8[0], sig.R8[1], A[0], A[1], msg]); + + const Pleft = babyJub.mulPointEscalar(babyJub.Base8, sig.S); + let Pright = babyJub.mulPointEscalar(A, Scalar.mul(hm, 8)); + Pright = babyJub.addPoint(sig.R8, Pright); + + if (!babyJub.F.eq(Pleft[0],Pright[0])) return false; + if (!babyJub.F.eq(Pleft[1],Pright[1])) return false; + return true; +} + + +function verifyPoseidon(msg, sig, A) { + // Check parameters + if (typeof sig != "object") return false; + if (!Array.isArray(sig.R8)) return false; + if (sig.R8.length!= 2) return false; + if (!babyJub.inCurve(sig.R8)) return false; + if (!Array.isArray(A)) return false; + if (A.length!= 2) return false; + if (!babyJub.inCurve(A)) return false; + if (sig.S>= babyJub.subOrder) return false; + + const hm = poseidon([sig.R8[0], sig.R8[1], A[0], A[1], msg]); + + const Pleft = babyJub.mulPointEscalar(babyJub.Base8, sig.S); + let Pright = babyJub.mulPointEscalar(A, Scalar.mul(hm, 8)); + Pright = babyJub.addPoint(sig.R8, Pright); + + if (!babyJub.F.eq(Pleft[0],Pright[0])) return false; + if (!babyJub.F.eq(Pleft[1],Pright[1])) return false; + return true; +} + +function verifyMiMCSponge(msg, sig, A) { + // Check parameters + if (typeof sig != "object") return false; + if (!Array.isArray(sig.R8)) return false; + if (sig.R8.length!= 2) return false; + if (!babyJub.inCurve(sig.R8)) return false; + if (!Array.isArray(A)) return false; + if (A.length!= 2) return false; + if (!babyJub.inCurve(A)) return false; + if (sig.S>= babyJub.subOrder) return false; + + const hm = mimcsponge.multiHash([sig.R8[0], sig.R8[1], A[0], A[1], msg]); + + const Pleft = babyJub.mulPointEscalar(babyJub.Base8, sig.S); + let Pright = babyJub.mulPointEscalar(A, hm.times(bigInt("8"))); + Pright = babyJub.addPoint(sig.R8, Pright); + + if (!babyJub.F.eq(Pleft[0],Pright[0])) return false; + if (!babyJub.F.eq(Pleft[1],Pright[1])) return false; + return true; +} + +function packSignature(sig) { + const R8p = babyJub.packPoint(sig.R8); + const Sp = utils.leInt2Buff(sig.S, 32); + return Buffer.concat([R8p, Sp]); +} + +function unpackSignature(sigBuff) { + return { + R8: babyJub.unpackPoint(sigBuff.slice(0,32)), + S: utils.leBuff2int(sigBuff.slice(32,64)) + }; +} + + diff --git a/zkrsa/circom-rsa-verify/circomlib/src/evmasm.js b/zkrsa/circom-rsa-verify/circomlib/src/evmasm.js new file mode 100644 index 000000000..ab7f8302e --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/src/evmasm.js @@ -0,0 +1,208 @@ +// Copyright (c) 2018 Jordi Baylina +// License: LGPL-3.0+ +// + + +const Web3Utils = require("web3-utils"); + +class Contract { + constructor() { + this.code = []; + this.labels = {}; + this.pendingLabels = {}; + } + + createTxData() { + let C; + + // Check all labels are defined + const pendingLabels = Object.keys(this.pendingLabels); + if (pendingLabels.length>0) { + throw new Error("Lables not defined: "+ pendingLabels.join(", ")); + } + + let setLoaderLength = 0; + let genLoadedLength = -1; + + while (genLoadedLength!=setLoaderLength) { + setLoaderLength = genLoadedLength; + C = new module.exports(); + C.codesize(); + C.push(setLoaderLength); + C.push(0); + C.codecopy(); + + C.push(this.code.length); + C.push(0); + C.return(); + genLoadedLength = C.code.length; + } + + return Web3Utils.bytesToHex(C.code.concat(this.code)); + } + + stop() { this.code.push(0x00); } + add() { this.code.push(0x01); } + mul() { this.code.push(0x02); } + sub() { this.code.push(0x03); } + div() { this.code.push(0x04); } + sdiv() { this.code.push(0x05); } + mod() { this.code.push(0x06); } + smod() { this.code.push(0x07); } + addmod() { this.code.push(0x08); } + mulmod() { this.code.push(0x09); } + exp() { this.code.push(0x0a); } + signextend() { this.code.push(0x0b); } + + lt() { this.code.push(0x10); } + gt() { this.code.push(0x11); } + slt() { this.code.push(0x12); } + sgt() { this.code.push(0x13); } + eq() { this.code.push(0x14); } + iszero() { this.code.push(0x15); } + and() { this.code.push(0x16); } + or() { this.code.push(0x17); } + shor() { this.code.push(0x18); } + not() { this.code.push(0x19); } + byte() { this.code.push(0x1a); } + + keccak() { this.code.push(0x20); } + sha3() { this.code.push(0x20); } // alias + + address() { this.code.push(0x30); } + balance() { this.code.push(0x31); } + origin() { this.code.push(0x32); } + caller() { this.code.push(0x33); } + callvalue() { this.code.push(0x34); } + calldataload() { this.code.push(0x35); } + calldatasize() { this.code.push(0x36); } + calldatacopy() { this.code.push(0x37); } + codesize() { this.code.push(0x38); } + codecopy() { this.code.push(0x39); } + gasprice() { this.code.push(0x3a); } + extcodesize() { this.code.push(0x3b); } + extcodecopy() { this.code.push(0x3c); } + returndatasize() { this.code.push(0x3d); } + returndatacopy() { this.code.push(0x3e); } + + blockhash() { this.code.push(0x40); } + coinbase() { this.code.push(0x41); } + timestamp() { this.code.push(0x42); } + number() { this.code.push(0x43); } + difficulty() { this.code.push(0x44); } + gaslimit() { this.code.push(0x45); } + + pop() { this.code.push(0x50); } + mload() { this.code.push(0x51); } + mstore() { this.code.push(0x52); } + mstore8() { this.code.push(0x53); } + sload() { this.code.push(0x54); } + sstore() { this.code.push(0x55); } + + _pushLabel(label) { + if (typeof this.labels[label] != "undefined") { + this.push(this.labels[label]); + } else { + this.pendingLabels[label] = this.pendingLabels[label] || []; + this.pendingLabels[label].push(this.code.length); + this.push("0x000000"); + } + } + + _fillLabel(label) { + if (!this.pendingLabels[label]) return; + + let dst = this.labels[label]; + + const dst3 = [dst >> 16, (dst >> 8) & 0xFF, dst & 0xFF]; + + this.pendingLabels[label].forEach((p) => { + for (let i=0; i<3; i++) { + this.code[p+i+1] = dst3[i]; + } + }); + + delete this.pendingLabels[label]; + } + + + jmp(label) { + if (typeof label !== "undefined") { + this._pushLabel(label); + } + this.code.push(0x56); + } + + jmpi(label) { + if (typeof label !== "undefined") { + this._pushLabel(label); + } + this.code.push(0x57); + } + + pc() { this.code.push(0x58); } + msize() { this.code.push(0x59); } + gas() { this.code.push(0x5a); } + label(name) { + if (typeof this.labels[name] != "undefined") { + throw new Error("Label already defined"); + } + this.labels[name] = this.code.length; + this.code.push(0x5b); + + this._fillLabel(name); + } + + push(data) { + if (typeof data === "number") { + let isNeg; + if (data<0) { + isNeg = true; + data = -data; + } + data = data.toString(16); + if (data.length % 2 == 1) data = "0" + data; + data = "0x" + data; + if (isNeg) data = "-"+data; + } + const d = Web3Utils.hexToBytes(Web3Utils.toHex(data)); + if (d.length == 0 || d.length > 32) { + throw new Error("Assertion failed"); + } + this.code = this.code.concat([0x5F + d.length], d); + } + + dup(n) { + if (n < 0 || n >= 16) { + throw new Error("Assertion failed"); + } + this.code.push(0x80 + n); + } + + swap(n) { + if (n < 1 || n > 16) { + throw new Error("Assertion failed"); + } + this.code.push(0x8f + n); + } + + log0() { this.code.push(0xa0); } + log1() { this.code.push(0xa1); } + log2() { this.code.push(0xa2); } + log3() { this.code.push(0xa3); } + log4() { this.code.push(0xa4); } + + create() { this.code.push(0xf0); } + call() { this.code.push(0xf1); } + callcode() { this.code.push(0xf2); } + return() { this.code.push(0xf3); } + delegatecall() { this.code.push(0xf4); } + + staticcall() { this.code.push(0xfa); } + revert() { this.code.push(0xfd); } + invalid() { this.code.push(0xfe); } + selfdestruct() { this.code.push(0xff); } +} + +module.exports = Contract; + diff --git a/zkrsa/circom-rsa-verify/circomlib/src/g2_gencontract.js b/zkrsa/circom-rsa-verify/circomlib/src/g2_gencontract.js new file mode 100644 index 000000000..9ed16989f --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/src/g2_gencontract.js @@ -0,0 +1,582 @@ +// Copyright (c) 2018 Jordi Baylina +// License: LGPL-3.0+ +// + +const Contract = require("./evmasm"); +const G2 = require("snarkjs").bn128.G2; + + +function toHex256(a) { + let S = a.toString(16); + while (S.length < 64) S="0"+S; + return "0x" + S; +} + +function createCode(P, w) { + + const C = new Contract(); + + const NPOINTS = 1 << (w-1); + + const VAR_POS = C.allocMem(32); + const VAR_POINTS = C.allocMem( (NPOINTS)*4*32); + const savedP = C.allocMem(32); + const savedZ3 = C.allocMem(32); + + // Check selector + C.push("0x0100000000000000000000000000000000000000000000000000000000"); + C.push(0); + C.calldataload(); + C.div(); + C.push("b65c7c74"); // mulexp(uint256) + C.eq(); + C.jmpi("start"); + C.invalid(); + + C.label("start"); + + storeVals(); + + C.push( Math.floor(255/w)*w ); // pos := 255 + C.push(VAR_POS); + C.mstore(); + + C.push("21888242871839275222246405745257275088696311157297823662689037894645226208583"); + C.push(0); + C.push(0); + C.push(0); + C.push(0); + C.push(0); + C.push(0); + + C.label("begin_loop"); // ACC_X ACC_Y ACC_Z q + + C.internalCall("double"); + + // g = (e>>pos)&MASK + C.push(4); + C.calldataload(); // e ACC_X ACC_Y ACC_Z q + + C.push(VAR_POS); + C.mload(); // pos e ACC_X ACC_Y ACC_Z q + C.shr(); + + C.push(NPOINTS-1); + C.and(); // g ACC_X ACC_Y ACC_Z q + + C.internalCall("add"); // acc_x acc_y acc_z + + C.push(VAR_POS); + C.mload(); // pos acc_x acc_y acc_z + C.dup(0); // pos pos acc_x acc_y acc_z + C.push(0); // 0 pos pos acc_x acc_y acc_z + C.eq(); // eq pos acc_x acc_y acc_z + C.jmpi("after_loop"); // pos acc_x acc_y acc_z + C.push(w); // 5 pos acc_x acc_y acc_z + C.sub(); // pos acc_x acc_y acc_z + C.push(VAR_POS); + C.mstore(); // acc_x acc_y acc_z + C.jmp("begin_loop"); + C.label("after_loop"); // pos acc_x acc_y acc_z + C.pop(); // acc_x acc_y acc_z + + C.internalCall("affine"); // acc_x acc_y + + C.push(0); + C.mstore(); + C.push(20); + C.mstore(); + C.push(40); + C.mstore(); + C.push(60); + C.mstore(); + + C.push("0x80"); + C.push("0x00"); + C.return(); + + + double(); + addPoint(); + affine(); + + return C.createTxData(); + + function add(a,b,q) { + C.dup(q); + C.dup(a+1 + 1); + C.dup(b+1 + 2); + C.addmod(); + C.dup(q + 1); + C.dup(a + 2); + C.dup(b + 3); + C.addmod(); + } + + function sub(a,b,q) { + C.dup(q); // q + C.dup(a+1 + 1); // ai q + C.dub(q + 2); // q ai q + C.dup(b+1 + 3); // bi q ai q + C.sub(); // -bi ai q + C.addmod(); // ci + C.dup(q + 1); // q ci + C.dup(a + 2); // ar q ci + C.dup(q + 3); // q ar q ci + C.dup(b + 4); // br q ar q ci + C.sub(); // -br ar q ci + C.addmod(); // cr ci + } + + function mul(a, b, q) { + C.dup(q); // q + C.dup(q + 1); // q q + C.dup(a + 2); // ar q q + C.dup(b+1 + 3); // bi ar q q + C.mulmod(); // ci1 q + C.dup(q + 2); // q ci1 q + C.dup(a+1 + 3); // ai q ci1 q + C.dup(b + 4); // ar ai q ci1 q + C.mulmod(); // ci2 ci1 q + C.addmod(); // ci + C.dup(q + 1); // q ci + C.dup(q + 2); // q q ci + C.dup(q + 3); // q q q ci + C.dup(a+1 + 4); // ai q q ci + C.dup(b+1 + 5); // bi ai q q ci + C.mulmod(); // cr2 q q ci + C.sub(); // -cr2 q ci + C.dup(q + 3); // q -cr2 q ci + C.dup(a + 4); // ar q -cr2 q ci + C.dup(b + 5); // br ar q -cr2 q ci + C.mulmod(); // cr1 -cr2 q ci + C.addmod(); // cr ci + } + + function square(a, q) { + C.dup(q); // q + C.dup(q + 1); // q q + C.dup(a + 2); // ar q q + C.dup(a+1 + 3); // ai ar q q + C.mulmod(); // arai q + C.dup(0); // arai arai q + C.addmod(); // ci + C.dup(q + 1); // q ci + C.dup(q + 2); // q q ci + C.dup(q + 3); // q q q ci + C.dup(a+1 + 4); // ai q q ci + C.dup(a+1 + 5); // ai ai q q ci + C.mulmod(); // cr2 q q ci + C.sub(); // -cr2 q ci + C.dup(q + 3); // q -cr2 q ci + C.dup(a + 4); // ar q -cr2 q ci + C.dup(a + 5); // br ar q -cr2 q ci + C.mulmod(); // cr1 -cr2 q ci + C.addmod(); // cr ci + } + + function add1(a, q) { + C.dup(a+1); // im + C.dup(1 + q); // q + C.dup(2 + a); // re q im + C.push(1); // 1 re q im + C.addmod(); + } + + function cmp(a, b) { + C.dup(a); + C.dup(b); + C.eq(); + C.dup(a+1); + C.dup(a+1); + C.and(); + } + + function rm(a) { + if (a>0) C.swap(a); + C.pop(); + if (a>0) C.swap(a); + C.pop(); + } + + function double() { + C.label("double"); // xR, xI, yR, yI, zR zI, q + + C.dup(4); + C.iszero(); + C.dup(6); + C.iszero(); + C.and(); + C.jumpi("enddouble"); // X Y Z q + + + // Z3 = 2*Y*Z // Remove Z + mul(2, 4, 6); // yz X Y Z q + rm(6); // X Y yz q + + add(4, 4, 6); // 2yz X Y yz q + rm(6); // X Y Z3 q + + // A = X^2 + square(0,6); // A X Y Z3 q + + // B = Y^2 // Remove Y + square(4,8); // B A X Y Z3 q + rm(6); // A X B Z3 q + + // C = B^2 + square(4,8); // C A X B Z3 q + + // D = (X+B)^2-A-C // Remove X, Remove B + add(4,6, 10); // X+B C A X B Z3 q + rm(6); // C A X+B B Z3 q + rm(6); // A X+B C Z3 q + square(2,8); // (X+B)^2 A X+B C Z3 q + rm(4); // A (X+B)^2 C Z3 q + sub(2, 0, 8); // (X+B)^2-A A (X+B)^2 C Z3 q + rm(4); // A (X+B)^2-A C Z3 q + sub(2, 4, 8); // (X+B)^2-A-C A (X+B)^2-A C Z3 q + rm(4); // A D C Z3 q + + // D = D+D + add(2,2, 8); // D+D A D C Z3 q + rm(4); // A D C Z3 q + + // E=A+A+A + add(0, 0, 8); // 2A A D C Z3 q + add(0, 2, 10); // 3A 2A A D C Z3 q + rm(4); // 2A 3A D C Z3 q + rm(0); // E D C Z3 q + + // F=E^2 + square(0, 8); // F E D C Z3 q + + // X3= F - 2*D // Remove F + add(4, 4, 10); // 2D F E D C Z3 q + sub(2, 0, 12); // F-2D 2D F E D C Z3 q + rm(4); // 2D X3 E D C Z3 q + rm(0); // X3 E D C Z3 q + + // Y3 = E * (D - X3) - 8 * C // Remove D C E + + sub(4, 0, 10); // D-X3 X3 E D C Z3 q + rm(6); // X3 E D-X3 C Z3 q + mul(2, 4, 10); // E*(D-X3) X3 E D-X3 C Z3 q + rm(6); // X3 E E*(D-X3) C Z3 q + rm(2); // X3 E*(D-X3) C Z3 q + add(4, 4, 8); // 2C X3 E*(D-X3) C Z3 q + rm(6); // X3 E*(D-X3) 2C Z3 q + add(4, 4, 8); // 4C X3 E*(D-X3) 2C Z3 q + rm(6); // X3 E*(D-X3) 4C Z3 q + add(4, 4, 8); // 8C X3 E*(D-X3) 4C Z3 q + rm(6); // X3 E*(D-X3) 8C Z3 q + sub(2, 4, 8); // E*(D-X3)-8C X3 E*(D-X3) 8C Z3 q + rm(6); // X3 E*(D-X3) Y3 Z3 q + rm(2); // X3 Y3 Z3 q + + C.label("enddouble"); + C.returnCall(); + } + + function addPoint() { // p, xR, xI, yR, yI, zR zI, q + + + C.dup(0); // p p X2 Y2 Z2 q + + C.push(savedP); + C.mstore(); + + C.iszero(); // X2 Y2 Z2 q + C.jumpi("endpadd"); + + + C.dup(4); + C.iszero(); + C.dup(6); + C.iszero(); + C.and(); + C.jumpi("returnP"); // X2 Y2 Z2 q + + + + // lastZ3 = (Z2+1)^2 - Z2^2 + add1(4, 6); // Z2+1 X2 Y2 Z2 q + square(0, 8); // (Z2+1)^2 Z2+1 X2 Y2 Z2 q + rm(2); // (Z2+1)^2 X2 Y2 Z2 q + square(6, 8); // Z2^2 (Z2+1)^2 X2 Y2 Z2 q + + + sub(2, 0, 10); // (Z2+1)^2-Z2^2 Z2^2 (Z2+1)^2 X2 Y2 Z2 q + + saveZ3(); // Z2^2 (Z2+1)^2 X2 Y2 Z2 q + rm(2); // Z2^2 X2 Y2 Z2 q + + // U2 = X2 + // S2 = Y2 // Z2^2 U2 S2 Z2 q + + + // U1 = X1 * Z2^2 + loadX(); // X1 Z2^2 U2 S2 Z2 q + mul(0, 2, 10); // X1*Z2^2 X1 Z2^2 U2 S2 Z2 q + rm(2); // X1*Z2^2 Z2^2 U2 S2 Z2 q + + + mul(2, 8, 10); // Z2^3 U1 Z2^2 U2 S2 Z2 q + rm(4); // U1 Z2^3 U2 S2 Z2 q + rm(8); // Z2^3 U2 S2 U1 q + + // S1 = Y1 * Z1^3 + loadY(); // Y1 Z2^3 U2 S2 U1 q + mul(0, 2, 10); // S1 Y1 Z2^3 U2 S2 U1 q + rm(4); // Y1 S1 U2 S2 U1 q + rm(0); // S1 U2 S2 U1 q + + cmp(0, 4); // c1 S1 U2 S2 U1 q + cmp(3, 7); // c2 c1 S1 U2 S2 U1 q + C.and(); // c2&c1 S1 U2 S2 U1 q + C.jumpi("double1"); // S1 U2 S2 U1 q + + + // Returns the double + + // H = U2-U1 // Remove U2 + C.sub(4, 8, 10); // H S1 U2 S2 U1 q + rm(4); // S1 H S2 U1 q + + // // r = 2 * (S2-S1) // Remove S2 + C.sub(4, 4, 8); // S1-S2 S1 H S2 U1 q + rm(6); // S1 H S1-S2 U1 q + C.add(4, 4, 8); // 2*(S1-S2) S1 H S1-S2 U1 q + rm(6); // S1 H r U1 q + + // I = (2 * H)^2 + C.add(2, 2, 8); // 2*H S1 H r U1 q + C.square(0, 10); // (2*H)^2 2*H S1 H r U1 q + rm(2); // I S1 H r U1 q + + // V = U1 * I + mul(8, 0, 10); // V I S1 H r U1 q + rm(10); // I S1 H r V q + + // J = H * I // Remove I + mul(4, 0, 10); // J I S1 H r V q + rm(2); // J S1 H r V q + + // X3 = r^2 - J - 2 * V + + // S1J2 = (S1*J)*2 // Remove S1 + mul(2, 0, 10); // S1*J J S1 H r V q + rm(4); // J S1*J H r V q + add(2,2, 10); // (S1*J)*2 J S1*J H r V q + rm(4); // J S1J2 H r V q + + // X3 = r^2 - J - 2 * V + square(6, 10); // r^2 J S1J2 H r V q + sub(0, 2, 12); // r^2-J r^2 J S1J2 H r V q + rm(2); // r^2-J J S1J2 H r V q + rm(2); // r^2-J S1J2 H r V q + add(8, 8, 10); // 2*V r^2-J S1J2 H r V q + sub(2, 0, 12); // r^2-J-2*V 2*V r^2-J S1J2 H r V q + rm(4); // 2*V X3 S1J2 H r V q + rm(0); // X3 S1J2 H r V q + + // Y3 = r * (V-X3)-S1J2 + + sub(8, 0, 10); // V-X3 X3 S1J2 H r V q + rm(10); // X3 S1J2 H r V-X3 q + mul(6, 8, 10); // r*(V-X3) X3 S1J2 H r V-X3 q + rm(8); // X3 S1J2 H r*(V-X3) V-X3 q + rm(8); // S1J2 H r*(V-X3) X3 q + sub(4, 0, 8); // Y3 S1J2 H r*(V-X3) X3 q + rm(6); // S1J2 H Y3 X3 q + rm(0); // H Y3 X3 q + + // Z3 = lastZ * H + loadZ3(); // lastZ3 H Y3 X3 q + mul(0, 2, 8); // Z3 lastZ3 H Y3 X3 q + rm(4); // lastZ3 Z3 Y3 X3 q + rm(0); // Z3 Y3 X3 q + + C.swap(1); + C.swap(5); + C.swap(1); + C.swap(4); // X3 Y3 Z3 q + + // returns the point in memory + C.label("returnP"); // X Y Z q + rm(0); + rm(0); + rm(0); + C.push(0); + C.push(1); + loadX(); + loadY(); + C.jump("endpadd"); + + C.label("double1"); // S1 U2 S2 U1 q + rm(0); + rm(0); + rm(0); + rm(0); + C.push(0); + C.push(1); + loadX(); + loadY(); + C.jump("double"); + + C.label("endpadd"); + C.returnCall(); + + function loadX() { + C.push(savedP); + C.mload(); // p + C.push(32); + C.mul(); // P*32 + C.push(VAR_POINTS+32); + C.add(); // P*32+32 + C.dup(); // P*32+32 P*32+32 + C.mload(); // im P*32+32 + C.swap(1); // P*32+32 im + C.push(0x20); // 32 P*32+32 im + C.sub(); // P*32 im + C.mload(); // re im + } + + function loadY() { + C.push(savedP); + C.mload(); // p + C.push(32); + C.mul(); // P*32 + C.push(VAR_POINTS+32*3); + C.add(); // P*32+32 + C.dup(); // P*32+32 P*32+32 + C.mload(); // im P*32+32 + C.swap(1); // P*32+32 im + C.push(0x20); // 32 P*32+32 im + C.sub(); // P*32 im + C.mload(); // re im + } + + function loadZ3() { + C.push(savedZ3+32); + C.mload(); // p + C.push(savedZ3); + C.mload(); + } + + function saveZ3() { + C.push(savedZ3); + C.mstore(); + C.push(savedZ3+32); + C.mstore(); + } + } + + function affine() { // X Y Z q + // If Z2=0 return 0 + C.label("affine"); + C.dup(4); + C.dup(5 + 1); + C.or(); + C.jumpi("notZero"); // X Y Z q + rm(0); + rm(0); + C.push(0); + C.push(0); + + C.jmp("endAffine"); + C.label("notZero"); + + inverse2(4,6); // Z_inv X Y Z q + square(2, 8); // Z2_inv Z_inv X Y Z q + mul(0, 2, 10); // Z3_inv Z2_inv Z_inv X Y Z q + rm(4); // Z2_inv Z3_inv X Y Z q + C.push(1); + C.push(0); // 1 Z2_inv Z3_inv X Y Z q + rm(10); // Z2_inv Z3_inv X Y 1 q + mul(2, 6, 10); // YI Z2_inv Z3_inv X Y 1 q + rm(8); // Z2_inv Z3_inv X YI 1 q + mul(0, 4, 10); // XI Z2_inv Z3_inv X YI 1 q + rm(6); // Z2_inv Z3_inv XI YI 1 q + rm(0); // Z3_inv XI YI 1 q + rm(0); // XI YI 1 q + C.label("endAffine"); + C.returnCall(); + } + + function inverse2(a, q) { + C.dup(q); // q + C.dup(q + 1); // q q + C.push(2); // 2 q q + C.sub(); // q-2 q + C.dup(q + 2); // q q-2 q + C.dup(q + 3); // q q q-2 q + C.dup(a + 4); // ar q q q-2 q + C.dup(a + 5); // ar ar q q q-2 q + C.mulmod(); // t0 q q-2 q + + C.dup(q + 4); // q t0 q q-2 q + C.dup(a+1 + 5); // ai q t0 q q-2 q + C.dup(a+1 + 6); // ai ai q t0 q q-2 q + C.mulmod(); // t1 t0 q q-2 q + + C.addmod(); // t2 q-2 q + C.expmod(); // t3 + + C.dup(q + 1); // q t3 + C.dup(q + 2); // q q t3 + C.dup(q + 3); // q q q t3 + C.dup(1); // t3 q q q t3 + C.sub(); // -t3 q q t3 + C.dup(a+1 + 3); // ai -t3 q q t3 + C.mulmod(); // ii q t3 + C.swap(2); // t3 q ii + C.dup(a + 3); // ar t3 q ii + C.mulmod(); // ir ii + } + + function storeVals() { + C.push(VAR_POINTS); // p + for (let i=0; i { + if (typeof seed === "undefined") seed = SEED; + const c = Web3Utils.keccak256(seed+"_iv"); + const cn = Scalar.FromString(Web3Utils.toBN(c).toString()); + const iv = cn.mod(F.p); + return iv; +}; + +exports.getConstants = (seed, nRounds) => { + if (typeof seed === "undefined") seed = SEED; + if (typeof nRounds === "undefined") nRounds = NROUNDS; + const cts = new Array(nRounds); + let c = Web3Utils.keccak256(SEED); + for (let i=1; i{ + const x_in = F.e(_x_in); + const k = F.e(_k); + let r; + for (let i=0; i { + let r; + if (typeof(key) === "undefined") { + r = F.zero; + } else { + r = key; + } + for (let i=0; i { + if (typeof seed === "undefined") seed = SEED; + const c = Web3Utils.keccak256(seed+"_iv"); + const cn = Scalar.fromString(Web3Utils.toBN(c).toString()); + const iv = cn.mod(F.p); + return iv; +}; + +exports.getConstants = (seed, nRounds) => { + if (typeof seed === "undefined") seed = SEED; + if (typeof nRounds === "undefined") nRounds = NROUNDS; + const cts = new Array(nRounds); + let c = Web3Utils.keccak256(SEED); + for (let i=1; i{ + let xL = F.e(_xL_in); + let xR = F.e(_xR_in); + const k = F.e(_k); + for (let i=0; i { + if (typeof(numOutputs) === "undefined") { + numOutputs = 1; + } + if (typeof(key) === "undefined") { + key = F.zero; + } + + let R = F.zero; + let C = F.zero; + + for (let i=0; i F.normalize(x)); + } +}; diff --git a/zkrsa/circom-rsa-verify/circomlib/src/mimcsponge_gencontract.js b/zkrsa/circom-rsa-verify/circomlib/src/mimcsponge_gencontract.js new file mode 100644 index 000000000..eb7d27b6d --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/src/mimcsponge_gencontract.js @@ -0,0 +1,128 @@ +// Copyright (c) 2018 Jordi Baylina +// License: LGPL-3.0+ +// + +const Web3Utils = require("web3-utils"); + +const Contract = require("./evmasm"); + +function createCode(seed, n) { + + let ci = Web3Utils.keccak256(seed); + + const C = new Contract(); + + C.push(0x64); + C.push("0x00"); + C.push("0x00"); + C.calldatacopy(); + C.push("0x0100000000000000000000000000000000000000000000000000000000"); + C.push("0x00"); + C.mload(); + C.div(); + C.push("0x3f1a1187"); // MiMCSponge(uint256,uint256,uint256) + C.eq(); + C.jmpi("start"); + C.invalid(); + + C.label("start"); + C.push("0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001"); // q + C.push("0x44"); + C.mload(); // k q + C.push("0x04"); + C.mload(); // xL k q + C.dup(2); // q xL k q + C.push("0x24"); + C.mload(); // xR q xL k q + C.dup(1); // q xR q xL k q + C.dup(0); // q q xR q xL k q + C.dup(4); // xL q q xR q xL k q + C.dup(6); // k xL q q xR q xL k q + C.addmod(); // t=k+xL q xR q xL k q + C.dup(1); // q t q xR q xL k q + C.dup(0); // q q t q xR q xL k q + C.dup(2); // t q q t q xR q xL k q + C.dup(0); // t t q q t q xR q xL k q + C.mulmod(); // b=t^2 q t q xR q xL k q + C.dup(0); // b b q t q xR q xL k q + C.mulmod(); // c=t^4 t q xR q xL k q + C.mulmod(); // d=t^5 xR q xL k q + C.addmod(); // e=t^5+xR xL k q (for next round: xL xR k q) + + for (let i=0; i F.mul(a, F.square(F.square(a, a))); + +function poseidon(inputs) { + assert(inputs.length > 0); + assert(inputs.length < N_ROUNDS_P.length - 1); + + const t = inputs.length + 1; + const nRoundsF = N_ROUNDS_F; + const nRoundsP = N_ROUNDS_P[t - 2]; + + let state = [F.zero, ...inputs.map(a => F.e(a))]; + for (let r = 0; r < nRoundsF + nRoundsP; r++) { + state = state.map((a, i) => F.add(a, C[t - 2][r * t + i])); + + if (r < nRoundsF / 2 || r >= nRoundsF / 2 + nRoundsP) { + state = state.map(a => pow5(a)); + } else { + state[0] = pow5(state[0]); + } + + state = state.map((_, i) => + state.reduce((acc, a, j) => F.add(acc, F.mul(M[t - 2][i][j], a)), F.zero) + ); + } + return F.normalize(state[0]); +} + +module.exports = poseidon; diff --git a/zkrsa/circom-rsa-verify/circomlib/src/poseidon_constants.json b/zkrsa/circom-rsa-verify/circomlib/src/poseidon_constants.json new file mode 100644 index 000000000..d15d818dd --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/src/poseidon_constants.json @@ -0,0 +1,206 @@ +{ + "C": [ + ["0x09c46e9ec68e9bd4fe1faaba294cba38a71aa177534cdd1b6c7dc0dbd0abd7a7", "0x0c0356530896eec42a97ed937f3135cfc5142b3ae405b8343c1d83ffa604cb81", "0x1e28a1d935698ad1142e51182bb54cf4a00ea5aabd6268bd317ea977cc154a30", "0x27af2d831a9d2748080965db30e298e40e5757c3e008db964cf9e2b12b91251f", "0x1e6f11ce60fc8f513a6a3cfe16ae175a41291462f214cd0879aaf43545b74e03", "0x2a67384d3bbd5e438541819cb681f0be04462ed14c3613d8f719206268d142d3", "0x0b66fdf356093a611609f8e12fbfecf0b985e381f025188936408f5d5c9f45d0", "0x012ee3ec1e78d470830c61093c2ade370b26c83cc5cebeeddaa6852dbdb09e21", "0x0252ba5f6760bfbdfd88f67f8175e3fd6cd1c431b099b6bb2d108e7b445bb1b9", "0x179474cceca5ff676c6bec3cef54296354391a8935ff71d6ef5aeaad7ca932f1", "0x2c24261379a51bfa9228ff4a503fd4ed9c1f974a264969b37e1a2589bbed2b91", "0x1cc1d7b62692e63eac2f288bd0695b43c2f63f5001fc0fc553e66c0551801b05", "0x255059301aada98bb2ed55f852979e9600784dbf17fbacd05d9eff5fd9c91b56", "0x28437be3ac1cb2e479e1f5c0eccd32b3aea24234970a8193b11c29ce7e59efd9", "0x28216a442f2e1f711ca4fa6b53766eb118548da8fb4f78d4338762c37f5f2043", "0x2c1f47cd17fa5adf1f39f4e7056dd03feee1efce03094581131f2377323482c9", "0x07abad02b7a5ebc48632bcc9356ceb7dd9dafca276638a63646b8566a621afc9", "0x0230264601ffdf29275b33ffaab51dfe9429f90880a69cd137da0c4d15f96c3c", "0x1bc973054e51d905a0f168656497ca40a864414557ee289e717e5d66899aa0a9", "0x2e1c22f964435008206c3157e86341edd249aff5c2d8421f2a6b22288f0a67fc", "0x1224f38df67c5378121c1d5f461bbc509e8ea1598e46c9f7a70452bc2bba86b8", "0x02e4e69d8ba59e519280b4bd9ed0068fd7bfe8cd9dfeda1969d2989186cde20e", "0x1f1eccc34aaba0137f5df81fc04ff3ee4f19ee364e653f076d47e9735d98018e", "0x1672ad3d709a353974266c3039a9a7311424448032cd1819eacb8a4d4284f582", "0x283e3fdc2c6e420c56f44af5192b4ae9cda6961f284d24991d2ed602df8c8fc7", "0x1c2a3d120c550ecfd0db0957170fa013683751f8fdff59d6614fbd69ff394bcc", "0x216f84877aac6172f7897a7323456efe143a9a43773ea6f296cb6b8177653fbd", "0x2c0d272becf2a75764ba7e8e3e28d12bceaa47ea61ca59a411a1f51552f94788", "0x16e34299865c0e28484ee7a74c454e9f170a5480abe0508fcb4a6c3d89546f43", "0x175ceba599e96f5b375a232a6fb9cc71772047765802290f48cd939755488fc5", "0x0c7594440dc48c16fead9e1758b028066aa410bfbc354f54d8c5ffbb44a1ee32", "0x1a3c29bc39f21bb5c466db7d7eb6fd8f760e20013ccf912c92479882d919fd8d", "0x0ccfdd906f3426e5c0986ea049b253400855d349074f5a6695c8eeabcd22e68f", "0x14f6bc81d9f186f62bdb475ce6c9411866a7a8a3fd065b3ce0e699b67dd9e796", "0x0962b82789fb3d129702ca70b2f6c5aacc099810c9c495c888edeb7386b97052", "0x1a880af7074d18b3bf20c79de25127bc13284ab01ef02575afef0c8f6a31a86d", "0x10cba18419a6a332cd5e77f0211c154b20af2924fc20ff3f4c3012bb7ae9311b", "0x057e62a9a8f89b3ebdc76ba63a9eaca8fa27b7319cae3406756a2849f302f10d", "0x287c971de91dc0abd44adf5384b4988cb961303bbf65cff5afa0413b44280cee", "0x21df3388af1687bbb3bca9da0cca908f1e562bc46d4aba4e6f7f7960e306891d", "0x1be5c887d25bce703e25cc974d0934cd789df8f70b498fd83eff8b560e1682b3", "0x268da36f76e568fb68117175cea2cd0dd2cb5d42fda5acea48d59c2706a0d5c1", "0x0e17ab091f6eae50c609beaf5510ececc5d8bb74135ebd05bd06460cc26a5ed6", "0x04d727e728ffa0a67aee535ab074a43091ef62d8cf83d270040f5caa1f62af40", "0x0ddbd7bf9c29341581b549762bc022ed33702ac10f1bfd862b15417d7e39ca6e", "0x2790eb3351621752768162e82989c6c234f5b0d1d3af9b588a29c49c8789654b", "0x1e457c601a63b73e4471950193d8a570395f3d9ab8b2fd0984b764206142f9e9", "0x21ae64301dca9625638d6ab2bbe7135ffa90ecd0c43ff91fc4c686fc46e091b0", "0x0379f63c8ce3468d4da293166f494928854be9e3432e09555858534eed8d350b", "0x002d56420359d0266a744a080809e054ca0e4921a46686ac8c9f58a324c35049", "0x123158e5965b5d9b1d68b3cd32e10bbeda8d62459e21f4090fc2c5af963515a6", "0x0be29fc40847a941661d14bbf6cbe0420fbb2b6f52836d4e60c80eb49cad9ec1", "0x1ac96991dec2bb0557716142015a453c36db9d859cad5f9a233802f24fdf4c1a", "0x1596443f763dbcc25f4964fc61d23b3e5e12c9fa97f18a9251ca3355bcb0627e", "0x12e0bcd3654bdfa76b2861d4ec3aeae0f1857d9f17e715aed6d049eae3ba3212", "0x0fc92b4f1bbea82b9ea73d4af9af2a50ceabac7f37154b1904e6c76c7cf964ba", "0x1f9c0b1610446442d6f2e592a8013f40b14f7c7722236f4f9c7e965233872762", "0x0ebd74244ae72675f8cde06157a782f4050d914da38b4c058d159f643dbbf4d3", "0x2cb7f0ed39e16e9f69a9fafd4ab951c03b0671e97346ee397a839839dccfc6d1", "0x1a9d6e2ecff022cc5605443ee41bab20ce761d0514ce526690c72bca7352d9bf", "0x2a115439607f335a5ea83c3bc44a9331d0c13326a9a7ba3087da182d648ec72f", "0x23f9b6529b5d040d15b8fa7aee3e3410e738b56305cd44f29535c115c5a4c060", "0x05872c16db0f72a2249ac6ba484bb9c3a3ce97c16d58b68b260eb939f0e6e8a7", "0x1300bdee08bb7824ca20fb80118075f40219b6151d55b5c52b624a7cdeddf6a7", "0x19b9b63d2f108e17e63817863a8f6c288d7ad29916d98cb1072e4e7b7d52b376", "0x015bee1357e3c015b5bda237668522f613d1c88726b5ec4224a20128481b4f7f", "0x2953736e94bb6b9f1b9707a4f1615e4efe1e1ce4bab218cbea92c785b128ffd1", "0x0b069353ba091618862f806180c0385f851b98d372b45f544ce7266ed6608dfc", "0x304f74d461ccc13115e4e0bcfb93817e55aeb7eb9306b64e4f588ac97d81f429", "0x15bbf146ce9bca09e8a33f5e77dfe4f5aad2a164a4617a4cb8ee5415cde913fc", "0x0ab4dfe0c2742cde44901031487964ed9b8f4b850405c10ca9ff23859572c8c6", "0x0e32db320a044e3197f45f7649a19675ef5eedfea546dea9251de39f9639779a", "0x0a1756aa1f378ca4b27635a78b6888e66797733a82774896a3078efa516da016", "0x044c4a33b10f693447fd17177f952ef895e61d328f85efa94254d6a2a25d93ef", "0x2ed3611b725b8a70be655b537f66f700fe0879d79a496891d37b07b5466c4b8b", "0x1f9ba4e8bab7ce42c8ecc3d722aa2e0eadfdeb9cfdd347b5d8339ea7120858aa", "0x1b233043052e8c288f7ee907a84e518aa38e82ac4502066db74056f865c5d3da", "0x2431e1cc164bb8d074031ab72bd55b4c902053bfc0f14db0ca2f97b020875954", "0x082f934c91f5aac330cd6953a0a7db45a13e322097583319a791f273965801fd", "0x2b9a0a223e7538b0a34be074315542a3c77245e2ae7cbe999ad6bb930c48997c", "0x0e1cd91edd2cfa2cceb85483b887a9be8164163e75a8a00eb0b589cc70214e7d", "0x2e1eac0f2bfdfd63c951f61477e3698999774f19854d00f588d324601cebe2f9", "0x0cbfa95f37fb74060c76158e769d6d157345784d8efdb33c23d748115b500b83", "0x08f05b3be923ed44d65ad49d8a61e9a676d991e3a77513d9980c232dfa4a4f84", "0x22719e2a070bcd0852bf8e21984d0443e7284925dc0758a325a2dd510c047ef6", "0x041f596a9ee1cb2bc060f7fcc3a1ab4c7bdbf036119982c0f41f62b2f26830c0", "0x233fd35de1be520a87628eb06f6b1d4c021be1c2d0dc464a19fcdd0986b10f89", "0x0524b46d1aa87a5e4325e0a423ebc810d31e078aa1b4707eefcb453c61c9c267", "0x2c34f424c81e5716ce47fcac894b85824227bb954b0f3199cc4486237c515211", "0x0b5f2a4b63387819207effc2b5541fb72dd2025b5457cc97f33010327de4915e", "0x22207856082ccc54c5b72fe439d2cfd6c17435d2f57af6ceaefac41fe05c659f", "0x24d57a8bf5da63fe4e24159b7f8950b5cdfb210194caf79f27854048ce2c8171", "0x0afab181fdd5e0583b371d75bd693f98374ad7097bb01a8573919bb23b79396e", "0x2dba9b108f208772998a52efac7cbd5676c0057194c16c0bf16290d62b1128ee", "0x26349b66edb8b16f56f881c788f53f83cbb83de0bd592b255aff13e6bce420b3", "0x25af7ce0e5e10357685e95f92339753ad81a56d28ecc193b235288a3e6f137db", "0x25b4ce7bd2294390c094d6a55edd68b970eed7aae88b2bff1f7c0187fe35011f", "0x22c543f10f6c89ec387e53f1908a88e5de9cef28ebdf30b18cb9d54c1e02b631", "0x0236f93e7789c4724fc7908a9f191e1e425e906a919d7a34df668e74882f87a9", "0x29350b401166ca010e7d27e37d05da99652bdae114eb01659cb497af980c4b52", "0x0eed787d65820d3f6bd31bbab547f75a65edb75d844ebb89ee1260916652363f", "0x07cc1170f13b46f2036a753f520b3291fdcd0e99bd94297d1906f656f4de6fad", "0x22b939233b1d7205f49bcf613a3d30b1908786d7f9f5d10c2059435689e8acea", "0x01451762a0aab81c8aad1dc8bc33e870740f083a5aa85438add650ace60ae5a6", "0x23506bb5d8727d4461fabf1025d46d1fe32eaa61dec7da57e704fec0892fce89", "0x2e484c44e838aea0bac06ae3f71bdd092a3709531e1efea97f8bd68907355522", "0x0f4bc7d07ebafd64379e78c50bd2e42baf4a594545cedc2545418da26835b54c", "0x1f4d3c8f6583e9e5fa76637862faaee851582388725df460e620996d50d8e74e", "0x093514e0c70711f82660d07be0e4a988fae02abc7b681d9153eb9bcb48fe7389", "0x1adab0c8e2b3bad346699a2b5f3bc03643ee83ece47228f24a58e0a347e153d8", "0x1672b1726057d99dd14709ebb474641a378c1b94b8072bac1a22dbef9e80dad2", "0x1dfd53d4576af2e38f44f53fdcab468cc5d8e2fae0acc4ee30d47b239b479c14", "0x0c6888a10b75b0f3a70a36263a37e17fe6d77d640f6fc3debc7f207753205c60", "0x1addb933a65be77092b34a7e77d12fe8611a61e00ee6848b85091ecca9d1e508", "0x00d7540dcd268a845c10ae18d1de933cf638ff5425f0afff7935628e299d1791", "0x140c0e42687e9ead01b2827a5664ca9c26fedde4acd99db1d316939d20b82c0e", "0x2f0c3a115d4317d191ba89b8d13d1806c20a0f9b24f8c5edc091e2ae56565984", "0x0c4ee778ff7c14553006ed220cf9c81008a0cff670b22b82d8c538a1dc958c61", "0x1704f2766d46f82c3693f00440ccc3609424ed26c0acc66227c3d7485de74c69", "0x2f2d19cc3ea5d78ea7a02c1b51d244abf0769c9f8544e40239b66fe9009c3cfa", "0x1ae03853b75fcaba5053f112e2a8e8dcdd7ee6cb9cfed9c7d6c766a806fc6629", "0x0971aabf795241df51d131d0fa61aa5f3556921b2d6f014e4e41a86ddaf056d5", "0x1408c316e6014e1a91d4cf6b6e0de73eda624f8380df1c875f5c29f7bfe2f646", "0x1667f3fe2edbe850248abe42b543093b6c89f1f773ef285341691f39822ef5bd", "0x13bf7c5d0d2c4376a48b0a03557cdf915b81718409e5c133424c69576500fe37", "0x07620a6dfb0b6cec3016adf3d3533c24024b95347856b79719bc0ba743a62c2c", "0x1574c7ef0c43545f36a8ca08bdbdd8b075d2959e2f322b731675de3e1982b4d0", "0x269e4b5b7a2eb21afd567970a717ceec5bd4184571c254fdc06e03a7ff8378f0"], + ["0x0ee9a592ba9a9518d05986d656f40c2114c4993c11bb29938d21d47304cd8e6e", "0x00f1445235f2148c5986587169fc1bcd887b08d4d00868df5696fff40956e864", "0x08dff3487e8ac99e1f29a058d0fa80b930c728730b7ab36ce879f3890ecf73f5", "0x2f27be690fdaee46c3ce28f7532b13c856c35342c84bda6e20966310fadc01d0", "0x2b2ae1acf68b7b8d2416bebf3d4f6234b763fe04b8043ee48b8327bebca16cf2", "0x0319d062072bef7ecca5eac06f97d4d55952c175ab6b03eae64b44c7dbf11cfa", "0x28813dcaebaeaa828a376df87af4a63bc8b7bf27ad49c6298ef7b387bf28526d", "0x2727673b2ccbc903f181bf38e1c1d40d2033865200c352bc150928adddf9cb78", "0x234ec45ca27727c2e74abd2b2a1494cd6efbd43e340587d6b8fb9e31e65cc632", "0x15b52534031ae18f7f862cb2cf7cf760ab10a8150a337b1ccd99ff6e8797d428", "0x0dc8fad6d9e4b35f5ed9a3d186b79ce38e0e8a8d1b58b132d701d4eecf68d1f6", "0x1bcd95ffc211fbca600f705fad3fb567ea4eb378f62e1fec97805518a47e4d9c", "0x10520b0ab721cadfe9eff81b016fc34dc76da36c2578937817cb978d069de559", "0x1f6d48149b8e7f7d9b257d8ed5fbbaf42932498075fed0ace88a9eb81f5627f6", "0x1d9655f652309014d29e00ef35a2089bfff8dc1c816f0dc9ca34bdb5460c8705", "0x04df5a56ff95bcafb051f7b1cd43a99ba731ff67e47032058fe3d4185697cc7d", "0x0672d995f8fff640151b3d290cedaf148690a10a8c8424a7f6ec282b6e4be828", "0x099952b414884454b21200d7ffafdd5f0c9a9dcc06f2708e9fc1d8209b5c75b9", "0x052cba2255dfd00c7c483143ba8d469448e43586a9b4cd9183fd0e843a6b9fa6", "0x0b8badee690adb8eb0bd74712b7999af82de55707251ad7716077cb93c464ddc", "0x119b1590f13307af5a1ee651020c07c749c15d60683a8050b963d0a8e4b2bdd1", "0x03150b7cd6d5d17b2529d36be0f67b832c4acfc884ef4ee5ce15be0bfb4a8d09", "0x2cc6182c5e14546e3cf1951f173912355374efb83d80898abe69cb317c9ea565", "0x005032551e6378c450cfe129a404b3764218cadedac14e2b92d2cd73111bf0f9", "0x233237e3289baa34bb147e972ebcb9516469c399fcc069fb88f9da2cc28276b5", "0x05c8f4f4ebd4a6e3c980d31674bfbe6323037f21b34ae5a4e80c2d4c24d60280", "0x0a7b1db13042d396ba05d818a319f25252bcf35ef3aeed91ee1f09b2590fc65b", "0x2a73b71f9b210cf5b14296572c9d32dbf156e2b086ff47dc5df542365a404ec0", "0x1ac9b0417abcc9a1935107e9ffc91dc3ec18f2c4dbe7f22976a760bb5c50c460", "0x12c0339ae08374823fabb076707ef479269f3e4d6cb104349015ee046dc93fc0", "0x0b7475b102a165ad7f5b18db4e1e704f52900aa3253baac68246682e56e9a28e", "0x037c2849e191ca3edb1c5e49f6e8b8917c843e379366f2ea32ab3aa88d7f8448", "0x05a6811f8556f014e92674661e217e9bd5206c5c93a07dc145fdb176a716346f", "0x29a795e7d98028946e947b75d54e9f044076e87a7b2883b47b675ef5f38bd66e", "0x20439a0c84b322eb45a3857afc18f5826e8c7382c8a1585c507be199981fd22f", "0x2e0ba8d94d9ecf4a94ec2050c7371ff1bb50f27799a84b6d4a2a6f2a0982c887", "0x143fd115ce08fb27ca38eb7cce822b4517822cd2109048d2e6d0ddcca17d71c8", "0x0c64cbecb1c734b857968dbbdcf813cdf8611659323dbcbfc84323623be9caf1", "0x028a305847c683f646fca925c163ff5ae74f348d62c2b670f1426cef9403da53", "0x2e4ef510ff0b6fda5fa940ab4c4380f26a6bcb64d89427b824d6755b5db9e30c", "0x0081c95bc43384e663d79270c956ce3b8925b4f6d033b078b96384f50579400e", "0x2ed5f0c91cbd9749187e2fade687e05ee2491b349c039a0bba8a9f4023a0bb38", "0x30509991f88da3504bbf374ed5aae2f03448a22c76234c8c990f01f33a735206", "0x1c3f20fd55409a53221b7c4d49a356b9f0a1119fb2067b41a7529094424ec6ad", "0x10b4e7f3ab5df003049514459b6e18eec46bb2213e8e131e170887b47ddcb96c", "0x2a1982979c3ff7f43ddd543d891c2abddd80f804c077d775039aa3502e43adef", "0x1c74ee64f15e1db6feddbead56d6d55dba431ebc396c9af95cad0f1315bd5c91", "0x07533ec850ba7f98eab9303cace01b4b9e4f2e8b82708cfa9c2fe45a0ae146a0", "0x21576b438e500449a151e4eeaf17b154285c68f42d42c1808a11abf3764c0750", "0x2f17c0559b8fe79608ad5ca193d62f10bce8384c815f0906743d6930836d4a9e", "0x2d477e3862d07708a79e8aae946170bc9775a4201318474ae665b0b1b7e2730e", "0x162f5243967064c390e095577984f291afba2266c38f5abcd89be0f5b2747eab", "0x2b4cb233ede9ba48264ecd2c8ae50d1ad7a8596a87f29f8a7777a70092393311", "0x2c8fbcb2dd8573dc1dbaf8f4622854776db2eece6d85c4cf4254e7c35e03b07a", "0x1d6f347725e4816af2ff453f0cd56b199e1b61e9f601e9ade5e88db870949da9", "0x204b0c397f4ebe71ebc2d8b3df5b913df9e6ac02b68d31324cd49af5c4565529", "0x0c4cb9dc3c4fd8174f1149b3c63c3c2f9ecb827cd7dc25534ff8fb75bc79c502", "0x174ad61a1448c899a25416474f4930301e5c49475279e0639a616ddc45bc7b54", "0x1a96177bcf4d8d89f759df4ec2f3cde2eaaa28c177cc0fa13a9816d49a38d2ef", "0x066d04b24331d71cd0ef8054bc60c4ff05202c126a233c1a8242ace360b8a30a", "0x2a4c4fc6ec0b0cf52195782871c6dd3b381cc65f72e02ad527037a62aa1bd804", "0x13ab2d136ccf37d447e9f2e14a7cedc95e727f8446f6d9d7e55afc01219fd649", "0x1121552fca26061619d24d843dc82769c1b04fcec26f55194c2e3e869acc6a9a", "0x00ef653322b13d6c889bc81715c37d77a6cd267d595c4a8909a5546c7c97cff1", "0x0e25483e45a665208b261d8ba74051e6400c776d652595d9845aca35d8a397d3", "0x29f536dcb9dd7682245264659e15d88e395ac3d4dde92d8c46448db979eeba89", "0x2a56ef9f2c53febadfda33575dbdbd885a124e2780bbea170e456baace0fa5be", "0x1c8361c78eb5cf5decfb7a2d17b5c409f2ae2999a46762e8ee416240a8cb9af1", "0x151aff5f38b20a0fc0473089aaf0206b83e8e68a764507bfd3d0ab4be74319c5", "0x04c6187e41ed881dc1b239c88f7f9d43a9f52fc8c8b6cdd1e76e47615b51f100", "0x13b37bd80f4d27fb10d84331f6fb6d534b81c61ed15776449e801b7ddc9c2967", "0x01a5c536273c2d9df578bfbd32c17b7a2ce3664c2a52032c9321ceb1c4e8a8e4", "0x2ab3561834ca73835ad05f5d7acb950b4a9a2c666b9726da832239065b7c3b02", "0x1d4d8ec291e720db200fe6d686c0d613acaf6af4e95d3bf69f7ed516a597b646", "0x041294d2cc484d228f5784fe7919fd2bb925351240a04b711514c9c80b65af1d", "0x154ac98e01708c611c4fa715991f004898f57939d126e392042971dd90e81fc6", "0x0b339d8acca7d4f83eedd84093aef51050b3684c88f8b0b04524563bc6ea4da4", "0x0955e49e6610c94254a4f84cfbab344598f0e71eaff4a7dd81ed95b50839c82e", "0x06746a6156eba54426b9e22206f15abca9a6f41e6f535c6f3525401ea0654626", "0x0f18f5a0ecd1423c496f3820c549c27838e5790e2bd0a196ac917c7ff32077fb", "0x04f6eeca1751f7308ac59eff5beb261e4bb563583ede7bc92a738223d6f76e13", "0x2b56973364c4c4f5c1a3ec4da3cdce038811eb116fb3e45bc1768d26fc0b3758", "0x123769dd49d5b054dcd76b89804b1bcb8e1392b385716a5d83feb65d437f29ef", "0x2147b424fc48c80a88ee52b91169aacea989f6446471150994257b2fb01c63e9", "0x0fdc1f58548b85701a6c5505ea332a29647e6f34ad4243c2ea54ad897cebe54d", "0x12373a8251fea004df68abcf0f7786d4bceff28c5dbbe0c3944f685cc0a0b1f2", "0x21e4f4ea5f35f85bad7ea52ff742c9e8a642756b6af44203dd8a1f35c1a90035", "0x16243916d69d2ca3dfb4722224d4c462b57366492f45e90d8a81934f1bc3b147", "0x1efbe46dd7a578b4f66f9adbc88b4378abc21566e1a0453ca13a4159cac04ac2", "0x07ea5e8537cf5dd08886020e23a7f387d468d5525be66f853b672cc96a88969a", "0x05a8c4f9968b8aa3b7b478a30f9a5b63650f19a75e7ce11ca9fe16c0b76c00bc", "0x20f057712cc21654fbfe59bd345e8dac3f7818c701b9c7882d9d57b72a32e83f", "0x04a12ededa9dfd689672f8c67fee31636dcd8e88d01d49019bd90b33eb33db69", "0x27e88d8c15f37dcee44f1e5425a51decbd136ce5091a6767e49ec9544ccd101a", "0x2feed17b84285ed9b8a5c8c5e95a41f66e096619a7703223176c41ee433de4d1", "0x1ed7cc76edf45c7c404241420f729cf394e5942911312a0d6972b8bd53aff2b8", "0x15742e99b9bfa323157ff8c586f5660eac6783476144cdcadf2874be45466b1a", "0x1aac285387f65e82c895fc6887ddf40577107454c6ec0317284f033f27d0c785", "0x25851c3c845d4790f9ddadbdb6057357832e2e7a49775f71ec75a96554d67c77", "0x15a5821565cc2ec2ce78457db197edf353b7ebba2c5523370ddccc3d9f146a67", "0x2411d57a4813b9980efa7e31a1db5966dcf64f36044277502f15485f28c71727", "0x002e6f8d6520cd4713e335b8c0b6d2e647e9a98e12f4cd2558828b5ef6cb4c9b", "0x2ff7bc8f4380cde997da00b616b0fcd1af8f0e91e2fe1ed7398834609e0315d2", "0x00b9831b948525595ee02724471bcd182e9521f6b7bb68f1e93be4febb0d3cbe", "0x0a2f53768b8ebf6a86913b0e57c04e011ca408648a4743a87d77adbf0c9c3512", "0x00248156142fd0373a479f91ff239e960f599ff7e94be69b7f2a290305e1198d", "0x171d5620b87bfb1328cf8c02ab3f0c9a397196aa6a542c2350eb512a2b2bcda9", "0x170a4f55536f7dc970087c7c10d6fad760c952172dd54dd99d1045e4ec34a808", "0x29aba33f799fe66c2ef3134aea04336ecc37e38c1cd211ba482eca17e2dbfae1", "0x1e9bc179a4fdd758fdd1bb1945088d47e70d114a03f6a0e8b5ba650369e64973", "0x1dd269799b660fad58f7f4892dfb0b5afeaad869a9c4b44f9c9e1c43bdaf8f09", "0x22cdbc8b70117ad1401181d02e15459e7ccd426fe869c7c95d1dd2cb0f24af38", "0x0ef042e454771c533a9f57a55c503fcefd3150f52ed94a7cd5ba93b9c7dacefd", "0x11609e06ad6c8fe2f287f3036037e8851318e8b08a0359a03b304ffca62e8284", "0x1166d9e554616dba9e753eea427c17b7fecd58c076dfe42708b08f5b783aa9af", "0x2de52989431a859593413026354413db177fbf4cd2ac0b56f855a888357ee466", "0x3006eb4ffc7a85819a6da492f3a8ac1df51aee5b17b8e89d74bf01cf5f71e9ad", "0x2af41fbb61ba8a80fdcf6fff9e3f6f422993fe8f0a4639f962344c8225145086", "0x119e684de476155fe5a6b41a8ebc85db8718ab27889e85e781b214bace4827c3", "0x1835b786e2e8925e188bea59ae363537b51248c23828f047cff784b97b3fd800", "0x28201a34c594dfa34d794996c6433a20d152bac2a7905c926c40e285ab32eeb6", "0x083efd7a27d1751094e80fefaf78b000864c82eb571187724a761f88c22cc4e7", "0x0b6f88a3577199526158e61ceea27be811c16df7774dd8519e079564f61fd13b", "0x0ec868e6d15e51d9644f66e1d6471a94589511ca00d29e1014390e6ee4254f5b", "0x2af33e3f866771271ac0c9b3ed2e1142ecd3e74b939cd40d00d937ab84c98591", "0x0b520211f904b5e7d09b5d961c6ace7734568c547dd6858b364ce5e47951f178", "0x0b2d722d0919a1aad8db58f10062a92ea0c56ac4270e822cca228620188a1d40", "0x1f790d4d7f8cf094d980ceb37c2453e957b54a9991ca38bbe0061d1ed6e562d4", "0x0171eb95dfbf7d1eaea97cd385f780150885c16235a2a6a8da92ceb01e504233", "0x0c2d0e3b5fd57549329bf6885da66b9b790b40defd2c8650762305381b168873", "0x1162fb28689c27154e5a8228b4e72b377cbcafa589e283c35d3803054407a18d", "0x2f1459b65dee441b64ad386a91e8310f282c5a92a89e19921623ef8249711bc0", "0x1e6ff3216b688c3d996d74367d5cd4c1bc489d46754eb712c243f70d1b53cfbb", "0x01ca8be73832b8d0681487d27d157802d741a6f36cdc2a0576881f9326478875", "0x1f7735706ffe9fc586f976d5bdf223dc680286080b10cea00b9b5de315f9650e", "0x2522b60f4ea3307640a0c2dce041fba921ac10a3d5f096ef4745ca838285f019", "0x23f0bee001b1029d5255075ddc957f833418cad4f52b6c3f8ce16c235572575b", "0x2bc1ae8b8ddbb81fcaac2d44555ed5685d142633e9df905f66d9401093082d59", "0x0f9406b8296564a37304507b8dba3ed162371273a07b1fc98011fcd6ad72205f", "0x2360a8eb0cc7defa67b72998de90714e17e75b174a52ee4acb126c8cd995f0a8", "0x15871a5cddead976804c803cbaef255eb4815a5e96df8b006dcbbc2767f88948", "0x193a56766998ee9e0a8652dd2f3b1da0362f4f54f72379544f957ccdeefb420f", "0x2a394a43934f86982f9be56ff4fab1703b2e63c8ad334834e4309805e777ae0f", "0x1859954cfeb8695f3e8b635dcb345192892cd11223443ba7b4166e8876c0d142", "0x04e1181763050e58013444dbcb99f1902b11bc25d90bbdca408d3819f4fed32b", "0x0fdb253dee83869d40c335ea64de8c5bb10eb82db08b5e8b1f5e5552bfd05f23", "0x058cbe8a9a5027bdaa4efb623adead6275f08686f1c08984a9d7c5bae9b4f1c0", "0x1382edce9971e186497eadb1aeb1f52b23b4b83bef023ab0d15228b4cceca59a", "0x03464990f045c6ee0819ca51fd11b0be7f61b8eb99f14b77e1e6634601d9e8b5", "0x23f7bfc8720dc296fff33b41f98ff83c6fcab4605db2eb5aaa5bc137aeb70a58", "0x0a59a158e3eec2117e6e94e7f0e9decf18c3ffd5e1531a9219636158bbaf62f2", "0x06ec54c80381c052b58bf23b312ffd3ce2c4eba065420af8f4c23ed0075fd07b", "0x118872dc832e0eb5476b56648e867ec8b09340f7a7bcb1b4962f0ff9ed1f9d01", "0x13d69fa127d834165ad5c7cba7ad59ed52e0b0f0e42d7fea95e1906b520921b1", "0x169a177f63ea681270b1c6877a73d21bde143942fb71dc55fd8a49f19f10c77b", "0x04ef51591c6ead97ef42f287adce40d93abeb032b922f66ffb7e9a5a7450544d", "0x256e175a1dc079390ecd7ca703fb2e3b19ec61805d4f03ced5f45ee6dd0f69ec", "0x30102d28636abd5fe5f2af412ff6004f75cc360d3205dd2da002813d3e2ceeb2", "0x10998e42dfcd3bbf1c0714bc73eb1bf40443a3fa99bef4a31fd31be182fcc792", "0x193edd8e9fcf3d7625fa7d24b598a1d89f3362eaf4d582efecad76f879e36860", "0x18168afd34f2d915d0368ce80b7b3347d1c7a561ce611425f2664d7aa51f0b5d", "0x29383c01ebd3b6ab0c017656ebe658b6a328ec77bc33626e29e2e95b33ea6111", "0x10646d2f2603de39a1f4ae5e7771a64a702db6e86fb76ab600bf573f9010c711", "0x0beb5e07d1b27145f575f1395a55bf132f90c25b40da7b3864d0242dcb1117fb", "0x16d685252078c133dc0d3ecad62b5c8830f95bb2e54b59abdffbf018d96fa336", "0x0a6abd1d833938f33c74154e0404b4b40a555bbbec21ddfafd672dd62047f01a", "0x1a679f5d36eb7b5c8ea12a4c2dedc8feb12dffeec450317270a6f19b34cf1860", "0x0980fb233bd456c23974d50e0ebfde4726a423eada4e8f6ffbc7592e3f1b93d6", "0x161b42232e61b84cbf1810af93a38fc0cece3d5628c9282003ebacb5c312c72b", "0x0ada10a90c7f0520950f7d47a60d5e6a493f09787f1564e5d09203db47de1a0b", "0x1a730d372310ba82320345a29ac4238ed3f07a8a2b4e121bb50ddb9af407f451", "0x2c8120f268ef054f817064c369dda7ea908377feaba5c4dffbda10ef58e8c556", "0x1c7c8824f758753fa57c00789c684217b930e95313bcb73e6e7b8649a4968f70", "0x2cd9ed31f5f8691c8e39e4077a74faa0f400ad8b491eb3f7b47b27fa3fd1cf77", "0x23ff4f9d46813457cf60d92f57618399a5e022ac321ca550854ae23918a22eea", "0x09945a5d147a4f66ceece6405dddd9d0af5a2c5103529407dff1ea58f180426d", "0x188d9c528025d4c2b67660c6b771b90f7c7da6eaa29d3f268a6dd223ec6fc630", "0x3050e37996596b7f81f68311431d8734dba7d926d3633595e0c0d8ddf4f0f47f", "0x15af1169396830a91600ca8102c35c426ceae5461e3f95d89d829518d30afd78", "0x1da6d09885432ea9a06d9f37f873d985dae933e351466b2904284da3320d8acc", "0x2796ea90d269af29f5f8acf33921124e4e4fad3dbe658945e546ee411ddaa9cb", "0x202d7dd1da0f6b4b0325c8b3307742f01e15612ec8e9304a7cb0319e01d32d60", "0x096d6790d05bb759156a952ba263d672a2d7f9c788f4c831a29dace4c0f8be5f", "0x054efa1f65b0fce283808965275d877b438da23ce5b13e1963798cb1447d25a4", "0x1b162f83d917e93edb3308c29802deb9d8aa690113b2e14864ccf6e18e4165f1", "0x21e5241e12564dd6fd9f1cdd2a0de39eedfefc1466cc568ec5ceb745a0506edc", "0x1cfb5662e8cf5ac9226a80ee17b36abecb73ab5f87e161927b4349e10e4bdf08", "0x0f21177e302a771bbae6d8d1ecb373b62c99af346220ac0129c53f666eb24100", "0x1671522374606992affb0dd7f71b12bec4236aede6290546bcef7e1f515c2320", "0x0fa3ec5b9488259c2eb4cf24501bfad9be2ec9e42c5cc8ccd419d2a692cad870", "0x193c0e04e0bd298357cb266c1506080ed36edce85c648cc085e8c57b1ab54bba", "0x102adf8ef74735a27e9128306dcbc3c99f6f7291cd406578ce14ea2adaba68f8", "0x0fe0af7858e49859e2a54d6f1ad945b1316aa24bfbdd23ae40a6d0cb70c3eab1", "0x216f6717bbc7dedb08536a2220843f4e2da5f1daa9ebdefde8a5ea7344798d22", "0x1da55cc900f0d21f4a3e694391918a1b3c23b2ac773c6b3ef88e2e4228325161"], + ["0x19b849f69450b06848da1d39bd5e4a4302bb86744edc26238b0878e269ed23e5", "0x265ddfe127dd51bd7239347b758f0a1320eb2cc7450acc1dad47f80c8dcf34d6", "0x199750ec472f1809e0f66a545e1e51624108ac845015c2aa3dfc36bab497d8aa", "0x157ff3fe65ac7208110f06a5f74302b14d743ea25067f0ffd032f787c7f1cdf8", "0x2e49c43c4569dd9c5fd35ac45fca33f10b15c590692f8beefe18f4896ac94902", "0x0e35fb89981890520d4aef2b6d6506c3cb2f0b6973c24fa82731345ffa2d1f1e", "0x251ad47cb15c4f1105f109ae5e944f1ba9d9e7806d667ffec6fe723002e0b996", "0x13da07dc64d428369873e97160234641f8beb56fdd05e5f3563fa39d9c22df4e", "0x0c009b84e650e6d23dc00c7dccef7483a553939689d350cd46e7b89055fd4738", "0x011f16b1c63a854f01992e3956f42d8b04eb650c6d535eb0203dec74befdca06", "0x0ed69e5e383a688f209d9a561daa79612f3f78d0467ad45485df07093f367549", "0x04dba94a7b0ce9e221acad41472b6bbe3aec507f5eb3d33f463672264c9f789b", "0x0a3f2637d840f3a16eb094271c9d237b6036757d4bb50bf7ce732ff1d4fa28e8", "0x259a666f129eea198f8a1c502fdb38fa39b1f075569564b6e54a485d1182323f", "0x28bf7459c9b2f4c6d8e7d06a4ee3a47f7745d4271038e5157a32fdf7ede0d6a1", "0x0a1ca941f057037526ea200f489be8d4c37c85bbcce6a2aeec91bd6941432447", "0x0c6f8f958be0e93053d7fd4fc54512855535ed1539f051dcb43a26fd926361cf", "0x123106a93cd17578d426e8128ac9d90aa9e8a00708e296e084dd57e69caaf811", "0x26e1ba52ad9285d97dd3ab52f8e840085e8fa83ff1e8f1877b074867cd2dee75", "0x1cb55cad7bd133de18a64c5c47b9c97cbe4d8b7bf9e095864471537e6a4ae2c5", "0x1dcd73e46acd8f8e0e2c7ce04bde7f6d2a53043d5060a41c7143f08e6e9055d0", "0x011003e32f6d9c66f5852f05474a4def0cda294a0eb4e9b9b12b9bb4512e5574", "0x2b1e809ac1d10ab29ad5f20d03a57dfebadfe5903f58bafed7c508dd2287ae8c", "0x2539de1785b735999fb4dac35ee17ed0ef995d05ab2fc5faeaa69ae87bcec0a5", "0x0c246c5a2ef8ee0126497f222b3e0a0ef4e1c3d41c86d46e43982cb11d77951d", "0x192089c4974f68e95408148f7c0632edbb09e6a6ad1a1c2f3f0305f5d03b527b", "0x1eae0ad8ab68b2f06a0ee36eeb0d0c058529097d91096b756d8fdc2fb5a60d85", "0x179190e5d0e22179e46f8282872abc88db6e2fdc0dee99e69768bd98c5d06bfb", "0x29bb9e2c9076732576e9a81c7ac4b83214528f7db00f31bf6cafe794a9b3cd1c", "0x225d394e42207599403efd0c2464a90d52652645882aac35b10e590e6e691e08", "0x064760623c25c8cf753d238055b444532be13557451c087de09efd454b23fd59", "0x10ba3a0e01df92e87f301c4b716d8a394d67f4bf42a75c10922910a78f6b5b87", "0x0e070bf53f8451b24f9c6e96b0c2a801cb511bc0c242eb9d361b77693f21471c", "0x1b94cd61b051b04dd39755ff93821a73ccd6cb11d2491d8aa7f921014de252fb", "0x1d7cb39bafb8c744e148787a2e70230f9d4e917d5713bb050487b5aa7d74070b", "0x2ec93189bd1ab4f69117d0fe980c80ff8785c2961829f701bb74ac1f303b17db", "0x2db366bfdd36d277a692bb825b86275beac404a19ae07a9082ea46bd83517926", "0x062100eb485db06269655cf186a68532985275428450359adc99cec6960711b8", "0x0761d33c66614aaa570e7f1e8244ca1120243f92fa59e4f900c567bf41f5a59b", "0x20fc411a114d13992c2705aa034e3f315d78608a0f7de4ccf7a72e494855ad0d", "0x25b5c004a4bdfcb5add9ec4e9ab219ba102c67e8b3effb5fc3a30f317250bc5a", "0x23b1822d278ed632a494e58f6df6f5ed038b186d8474155ad87e7dff62b37f4b", "0x22734b4c5c3f9493606c4ba9012499bf0f14d13bfcfcccaa16102a29cc2f69e0", "0x26c0c8fe09eb30b7e27a74dc33492347e5bdff409aa3610254413d3fad795ce5", "0x070dd0ccb6bd7bbae88eac03fa1fbb26196be3083a809829bbd626df348ccad9", "0x12b6595bdb329b6fb043ba78bb28c3bec2c0a6de46d8c5ad6067c4ebfd4250da", "0x248d97d7f76283d63bec30e7a5876c11c06fca9b275c671c5e33d95bb7e8d729", "0x1a306d439d463b0816fc6fd64cc939318b45eb759ddde4aa106d15d9bd9baaaa", "0x28a8f8372e3c38daced7c00421cb4621f4f1b54ddc27821b0d62d3d6ec7c56cf", "0x0094975717f9a8a8bb35152f24d43294071ce320c829f388bc852183e1e2ce7e", "0x04d5ee4c3aa78f7d80fde60d716480d3593f74d4f653ae83f4103246db2e8d65", "0x2a6cf5e9aa03d4336349ad6fb8ed2269c7bef54b8822cc76d08495c12efde187", "0x2304d31eaab960ba9274da43e19ddeb7f792180808fd6e43baae48d7efcba3f3", "0x03fd9ac865a4b2a6d5e7009785817249bff08a7e0726fcb4e1c11d39d199f0b0", "0x00b7258ded52bbda2248404d55ee5044798afc3a209193073f7954d4d63b0b64", "0x159f81ada0771799ec38fca2d4bf65ebb13d3a74f3298db36272c5ca65e92d9a", "0x1ef90e67437fbc8550237a75bc28e3bb9000130ea25f0c5471e144cf4264431f", "0x1e65f838515e5ff0196b49aa41a2d2568df739bc176b08ec95a79ed82932e30d", "0x2b1b045def3a166cec6ce768d079ba74b18c844e570e1f826575c1068c94c33f", "0x0832e5753ceb0ff6402543b1109229c165dc2d73bef715e3f1c6e07c168bb173", "0x02f614e9cedfb3dc6b762ae0a37d41bab1b841c2e8b6451bc5a8e3c390b6ad16", "0x0e2427d38bd46a60dd640b8e362cad967370ebb777bedff40f6a0be27e7ed705", "0x0493630b7c670b6deb7c84d414e7ce79049f0ec098c3c7c50768bbe29214a53a", "0x22ead100e8e482674decdab17066c5a26bb1515355d5461a3dc06cc85327cea9", "0x25b3e56e655b42cdaae2626ed2554d48583f1ae35626d04de5084e0b6d2a6f16", "0x1e32752ada8836ef5837a6cde8ff13dbb599c336349e4c584b4fdc0a0cf6f9d0", "0x2fa2a871c15a387cc50f68f6f3c3455b23c00995f05078f672a9864074d412e5", "0x2f569b8a9a4424c9278e1db7311e889f54ccbf10661bab7fcd18e7c7a7d83505", "0x044cb455110a8fdd531ade530234c518a7df93f7332ffd2144165374b246b43d", "0x227808de93906d5d420246157f2e42b191fe8c90adfe118178ddc723a5319025", "0x02fcca2934e046bc623adead873579865d03781ae090ad4a8579d2e7a6800355", "0x0ef915f0ac120b876abccceb344a1d36bad3f3c5ab91a8ddcbec2e060d8befac", "0x1797130f4b7a3e1777eb757bc6f287f6ab0fb85f6be63b09f3b16ef2b1405d38", "0x0a76225dc04170ae3306c85abab59e608c7f497c20156d4d36c668555decc6e5", "0x1fffb9ec1992d66ba1e77a7b93209af6f8fa76d48acb664796174b5326a31a5c", "0x25721c4fc15a3f2853b57c338fa538d85f8fbba6c6b9c6090611889b797b9c5f", "0x0c817fd42d5f7a41215e3d07ba197216adb4c3790705da95eb63b982bfcaf75a", "0x13abe3f5239915d39f7e13c2c24970b6df8cf86ce00a22002bc15866e52b5a96", "0x2106feea546224ea12ef7f39987a46c85c1bc3dc29bdbd7a92cd60acb4d391ce", "0x21ca859468a746b6aaa79474a37dab49f1ca5a28c748bc7157e1b3345bb0f959", "0x05ccd6255c1e6f0c5cf1f0df934194c62911d14d0321662a8f1a48999e34185b", "0x0f0e34a64b70a626e464d846674c4c8816c4fb267fe44fe6ea28678cb09490a4", "0x0558531a4e25470c6157794ca36d0e9647dbfcfe350d64838f5b1a8a2de0d4bf", "0x09d3dca9173ed2faceea125157683d18924cadad3f655a60b72f5864961f1455", "0x0328cbd54e8c0913493f866ed03d218bf23f92d68aaec48617d4c722e5bd4335", "0x2bf07216e2aff0a223a487b1a7094e07e79e7bcc9798c648ee3347dd5329d34b", "0x1daf345a58006b736499c583cb76c316d6f78ed6a6dffc82111e11a63fe412df", "0x176563472456aaa746b694c60e1823611ef39039b2edc7ff391e6f2293d2c404", "0x2ef1e0fad9f08e87a3bb5e47d7e33538ca964d2b7d1083d4fb0225035bd3f8db", "0x226c9b1af95babcf17b2b1f57c7310179c1803dec5ae8f0a1779ed36c817ae2a", "0x14bce3549cc3db7428126b4c3a15ae0ff8148c89f13fb35d35734eb5d4ad0def", "0x2debff156e276bb5742c3373f2635b48b8e923d301f372f8e550cfd4034212c7", "0x2d4083cf5a87f5b6fc2395b22e356b6441afe1b6b29c47add7d0432d1d4760c7", "0x0c225b7bcd04bf9c34b911262fdc9c1b91bf79a10c0184d89c317c53d7161c29", "0x03152169d4f3d06ec33a79bfac91a02c99aa0200db66d5aa7b835265f9c9c8f3", "0x0b61811a9210be78b05974587486d58bddc8f51bfdfebbb87afe8b7aa7d3199c", "0x203e000cad298daaf7eba6a5c5921878b8ae48acf7048f16046d637a533b6f78", "0x1a44bf0937c722d1376672b69f6c9655ba7ee386fda1112c0757143d1bfa9146", "0x0376b4fae08cb03d3500afec1a1f56acb8e0fde75a2106d7002f59c5611d4daa", "0x00780af2ca1cad6465a2171250fdfc32d6fc241d3214177f3d553ef363182185", "0x10774d9ab80c25bdeb808bedfd72a8d9b75dbe18d5221c87e9d857079bdc31d5", "0x10dc6e9c006ea38b04b1e03b4bd9490c0d03f98929ca1d7fb56821fd19d3b6e8", "0x00544b8338791518b2c7645a50392798b21f75bb60e3596170067d00141cac16", "0x222c01175718386f2e2e82eb122789e352e105a3b8fa852613bc534433ee428c", "0x2840d045e9bc22b259cfb8811b1e0f45b77f7bdb7f7e2b46151a1430f608e3c5", "0x062752f86eebe11a009c937e468c335b04554574c2990196508e01fa5860186b", "0x06041bdac48205ac87adb87c20a478a71c9950c12a80bc0a55a8e83eaaf04746", "0x04a533f236c422d1ff900a368949b0022c7a2ae092f308d82b1dcbbf51f5000d", "0x13e31d7a67232fd811d6a955b3d4f25dfe066d1e7dc33df04bde50a2b2d05b2a", "0x011c2683ae91eb4dfbc13d6357e8599a9279d1648ff2c95d2f79905bb13920f1", "0x0b0d219346b8574525b1a270e0b4cba5d56c928e3e2c2bd0a1ecaed015aaf6ae", "0x14abdec8db9c6dc970291ee638690209b65080781ef9fd13d84c7a726b5f1364", "0x1a0b70b4b26fdc28fcd32aa3d266478801eb12202ef47ced988d0376610be106", "0x278543721f96d1307b6943f9804e7fe56401deb2ef99c4d12704882e7278b607", "0x16eb59494a9776cf57866214dbd1473f3f0738a325638d8ba36535e011d58259", "0x2567a658a81ffb444f240088fa5524c69a9e53eeab6b7f8c41c3479dcf8c644a", "0x29aa1d7c151e9ad0a7ab39f1abd9cf77ab78e0215a5715a6b882ade840bb13d8", "0x15c091233e60efe0d4bbfce2b36415006a4f017f9a85388ce206b91f99f2c984", "0x16bd7d22ff858e5e0882c2c999558d77e7673ad5f1915f9feb679a8115f014cf", "0x02db50480a07be0eb2c2e13ed6ef4074c0182d9b668b8e08ffe6769250042025", "0x05e4a220e6a3bc9f7b6806ec9d6cdba186330ef2bf7adb4c13ba866343b73119", "0x1dda05ebc30170bc98cbf2a5ee3b50e8b5f70bc424d39fa4104d37f1cbcf7a42", "0x0184bef721888187f645b6fee3667f3c91da214414d89ba5cd301f22b0de8990", "0x1498a307e68900065f5e8276f62aef1c37414b84494e1577ad1a6d64341b78ec", "0x25f40f82b31dacc4f4939800b9d2c3eacef737b8fab1f864fe33548ad46bd49d", "0x09d317cc670251943f6f5862a30d2ea9e83056ce4907bfbbcb1ff31ce5bb9650", "0x2f77d77786d979b23ba4ce4a4c1b3bd0a41132cd467a86ab29b913b6cf3149d0", "0x0f53dafd535a9f4473dc266b6fccc6841bbd336963f254c152f89e785f729bbf", "0x25c1fd72e223045265c3a099e17526fa0e6976e1c00baf16de96de85deef2fa2", "0x2a902c8980c17faae368d385d52d16be41af95c84eaea3cf893e65d6ce4a8f62", "0x1ce1580a3452ecf302878c8976b82be96676dd114d1dc8d25527405762f83529", "0x24a6073f91addc33a49a1fa306df008801c5ec569609034d2fc50f7f0f4d0056", "0x25e52dbd6124530d9fc27fe306d71d4583e07ca554b5d1577f256c68b0be2b74", "0x23dffae3c423fa7a93468dbccfb029855974be4d0a7b29946796e5b6cd70f15d", "0x06342da370cc0d8c49b77594f6b027c480615d50be36243a99591bc9924ed6f5", "0x2754114281286546b75f09f115fc751b4778303d0405c1b4cc7df0d8e9f63925", "0x15c19e8534c5c1a8862c2bc1d119eddeabf214153833d7bdb59ee197f8187cf5", "0x265fe062766d08fab4c78d0d9ef3cabe366f3be0a821061679b4b3d2d77d5f3e", "0x13ccf689d67a3ec9f22cb7cd0ac3a327d377ac5cd0146f048debfd098d3ec7be", "0x17662f7456789739f81cd3974827a887d92a5e05bdf3fe6b9fbccca4524aaebd", "0x21b29c76329b31c8ef18631e515f7f2f82ca6a5cca70cee4e809fd624be7ad5d", "0x18137478382aadba441eb97fe27901989c06738165215319939eb17b01fa975c", "0x2bc07ea2bfad68e8dc724f5fef2b37c2d34f761935ffd3b739ceec4668f37e88", "0x2ddb2e376f54d64a563840480df993feb4173203c2bd94ad0e602077aef9a03e", "0x277eb50f2baa706106b41cb24c602609e8a20f8d72f613708adb25373596c3f7", "0x0d4de47e1aba34269d0c620904f01a56b33fc4b450c0db50bb7f87734c9a1fe5", "0x0b8442bfe9e4a1b4428673b6bd3eea6f9f445697058f134aae908d0279a29f0c", "0x11fe5b18fbbea1a86e06930cb89f7d4a26e186a65945e96574247fddb720f8f5", "0x224026f6dfaf71e24d25d8f6d9f90021df5b774dcad4d883170e4ad89c33a0d6", "0x0b2ca6a999fe6887e0704dad58d03465a96bc9e37d1091f61bc9f9c62bbeb824", "0x221b63d66f0b45f9d40c54053a28a06b1d0a4ce41d364797a1a7e0c96529f421", "0x30185c48b7b2f1d53d4120801b047d087493bce64d4d24aedce2f4836bb84ad4", "0x23f5d372a3f0e3cba989e223056227d3533356f0faa48f27f8267318632a61f0", "0x2716683b32c755fd1bf8235ea162b1f388e1e0090d06162e8e6dfbe4328f3e3b", "0x0977545836866fa204ca1d853ec0909e3d140770c80ac67dc930c69748d5d4bc", "0x1444e8f592bdbfd8025d91ab4982dd425f51682d31472b05e81c43c0f9434b31", "0x26e04b65e9ca8270beb74a1c5cb8fee8be3ffbfe583f7012a00f874e7718fbe3", "0x22a5c2fa860d11fe34ee47a5cd9f869800f48f4febe29ad6df69816fb1a914d2", "0x174b54d9907d8f5c6afd672a738f42737ec338f3a0964c629f7474dd44c5c8d7", "0x1db1db8aa45283f31168fa66694cf2808d2189b87c8c8143d56c871907b39b87", "0x1530bf0f46527e889030b8c7b7dfde126f65faf8cce0ab66387341d813d1bfd1", "0x0b73f613993229f59f01c1cec8760e9936ead9edc8f2814889330a2f2bade457", "0x29c25a22fe2164604552aaea377f448d587ab977fc8227787bd2dc0f36bcf41e", "0x2b30d53ed1759bfb8503da66c92cf4077abe82795dc272b377df57d77c875526", "0x12f6d703b5702aab7b7b7e69359d53a2756c08c85ede7227cf5f0a2916787cd2", "0x2520e18300afda3f61a40a0b8837293a55ad01071028d4841ffa9ac706364113", "0x1ec9daea860971ecdda8ed4f346fa967ac9bc59278277393c68f09fa03b8b95f", "0x0a99b3e178db2e2e432f5cd5bef8fe4483bf5cbf70ed407c08aae24b830ad725", "0x07cda9e63db6e39f086b89b601c2bbe407ee0abac3c817a1317abad7c5778492", "0x08c9c65a4f955e8952d571b191bb0adb49bd8290963203b35d48aab38f8fc3a3", "0x2737f8ce1d5a67b349590ddbfbd709ed9af54a2a3f2719d33801c9c17bdd9c9e", "0x1049a6c65ff019f0d28770072798e8b7909432bd0c129813a9f179ba627f7d6a", "0x18b4fe968732c462c0ea5a9beb27cecbde8868944fdf64ee60a5122361daeddb", "0x2ff2b6fd22df49d2440b2eaeeefa8c02a6f478cfcf11f1b2a4f7473483885d19", "0x2ec5f2f1928fe932e56c789b8f6bbcb3e8be4057cbd8dbd18a1b352f5cef42ff", "0x265a5eccd8b92975e33ad9f75bf3426d424a4c6a7794ee3f08c1d100378e545e", "0x2405eaa4c0bde1129d6242bb5ada0e68778e656cfcb366bf20517da1dfd4279c", "0x094c97d8c194c42e88018004cbbf2bc5fdb51955d8b2d66b76dd98a2dbf60417", "0x2c30d5f33bb32c5c22b9979a605bf64d508b705221e6a686330c9625c2afe0b8", "0x01a75666f6241f6825d01cc6dcb1622d4886ea583e87299e6aa2fc716fdb6cf5", "0x0a3290e8398113ea4d12ac091e87be7c6d359ab9a66979fcf47bf2e87d382fcb", "0x154ade9ca36e268dfeb38461425bb0d8c31219d8fa0dfc75ecd21bf69aa0cc74", "0x27aa8d3e25380c0b1b172d79c6f22eee99231ef5dc69d8dc13a4b5095d028772", "0x2cf4051e6cab48301a8b2e3bca6099d756bbdf485afa1f549d395bbcbd806461", "0x301e70f729f3c94b1d3f517ddff9f2015131feab8afa5eebb0843d7f84b23e71", "0x298beb64f812d25d8b4d9620347ab02332dc4cef113ae60d17a8d7a4c91f83bc", "0x1b362e72a5f847f84d03fd291c3c471ed1c14a15b221680acf11a3f02e46aa95", "0x0dc8a2146110c0b375432902999223d5aa1ef6e78e1e5ebcbc1d9ba41dc1c737", "0x0a48663b34ce5e1c05dc93092cb69778cb21729a72ddc03a08afa1eb922ff279", "0x0a87391fb1cd8cdf6096b64a82f9e95f0fe46f143b702d74545bb314881098ee", "0x1b5b2946f7c28975f0512ff8e6ca362f8826edd7ea9c29f382ba8a2a0892fd5d", "0x01001cf512ac241d47ebe2239219bc6a173a8bbcb8a5b987b4eac1f533315b6b", "0x2fd977c70f645db4f704fa7d7693da727ac093d3fb5f5febc72beb17d8358a32", "0x23c0039a3fab4ad3c2d7cc688164f39e761d5355c05444d99be763a97793a9c4", "0x19d43ee0c6081c052c9c0df6161eaac1aec356cf435888e79f27f22ff03fa25d", "0x2d9b10c2f2e7ac1afddccffd94a563028bf29b646d020830919f9d5ca1cefe59", "0x2457ca6c2f2aa30ec47e4aff5a66f5ce2799283e166fc81cdae2f2b9f83e4267", "0x0abc392fe85eda855820592445094022811ee8676ed6f0c3044dfb54a7c10b35", "0x19d2cc5ca549d1d40cebcd37f3ea54f31161ac3993acf3101d2c2bc30eac1eb0", "0x0f97ae3033ffa01608aafb26ae13cd393ee0e4ec041ba644a3d3ab546e98c9c8", "0x16dbc78fd28b7fb8260e404cf1d427a7fa15537ea4e168e88a166496e88cfeca", "0x240faf28f11499b916f085f73bc4f22eef8344e576f8ad3d1827820366d5e07b", "0x0a1bb075aa37ff0cfe6c8531e55e1770eaba808c8fdb6dbf46f8cab58d9ef1af", "0x2e47e15ea4a47ff1a6a853aaf3a644ca38d5b085ac1042fdc4a705a7ce089f4d", "0x166e5bf073378348860ca4a9c09d39e1673ab059935f4df35fb14528375772b6", "0x18b42d7ffdd2ea4faf235902f057a2740cacccd027233001ed10f96538f0916f", "0x089cb1b032238f5e4914788e3e3c7ead4fc368020b3ed38221deab1051c37702", "0x242acd3eb3a2f72baf7c7076dd165adf89f9339c7b971921d9e70863451dd8d1", "0x174fbb104a4ee302bf47f2bd82fce896eac9a068283f326474af860457245c3b", "0x17340e71d96f466d61f3058ce092c67d2891fb2bb318613f780c275fe1116c6b", "0x1e8e40ac853b7d42f00f2e383982d024f098b9f8fd455953a2fd380c4df7f6b2", "0x0529898dc0649907e1d4d5e284b8d1075198c55cad66e8a9bf40f92938e2e961", "0x2162754db0baa030bf7de5bb797364dce8c77aa017ee1d7bf65f21c4d4e5df8f", "0x12c7553698c4bf6f3ceb250ae00c58c2a9f9291efbde4c8421bef44741752ec6", "0x292643e3ba2026affcb8c5279313bd51a733c93353e9d9c79cb723136526508e", "0x00ccf13e0cb6f9d81d52951bea990bd5b6c07c5d98e66ff71db6e74d5b87d158", "0x185d1e20e23b0917dd654128cf2f3aaab6723873cb30fc22b0f86c15ab645b4b", "0x14c61c836d55d3df742bdf11c60efa186778e3de0f024c0f13fe53f8d8764e1f", "0x0f356841b3f556fce5dbe4680457691c2919e2af53008184d03ee1195d72449e", "0x1b8fd9ff39714e075df124f887bf40b383143374fd2080ba0c0a6b6e8fa5b3e8", "0x0e86a8c2009c140ca3f873924e2aaa14fc3c8ae04e9df0b3e9103418796f6024", "0x2e6c5e898f5547770e5462ad932fcdd2373fc43820ca2b16b0861421e79155c8", "0x05d797f1ab3647237c14f9d1df032bc9ff9fe1a0ecd377972ce5fd5a0c014604", "0x29a3110463a5aae76c3d152875981d0c1daf2dcd65519ef5ca8929851da8c008", "0x2974da7bc074322273c3a4b91c05354cdc71640a8bbd1f864b732f8163883314", "0x1ed0fb06699ba249b2a30621c05eb12ca29cb91aa082c8bfcce9c522889b47dc", "0x1c793ef0dcc51123654ff26d8d863feeae29e8c572eca912d80c8ae36e40fe9b", "0x1e6aac1c6d3dd3157956257d3d234ef18c91e82589a78169fbb4a8770977dc2f", "0x1a20ada7576234eee6273dd6fa98b25ed037748080a47d948fcda33256fb6bf5", "0x191033d6d85ceaa6fc7a9a23a6fd9996642d772045ece51335d49306728af96c", "0x006e5979da7e7ef53a825aa6fddc3abfc76f200b3740b8b232ef481f5d06297b", "0x0b0d7e69c651910bbef3e68d417e9fa0fbd57f596c8f29831eff8c0174cdb06d", "0x25caf5b0c1b93bc516435ec084e2ecd44ac46dbbb033c5112c4b20a25c9cdf9d", "0x12c1ea892cc31e0d9af8b796d9645872f7f77442d62fd4c8085b2f150f72472a", "0x16af29695157aba9b8bbe3afeb245feee5a929d9f928b9b81de6dadc78c32aae", "0x0136df457c80588dd687fb2f3be18691705b87ec5a4cfdc168d31084256b67dc", "0x1639a28c5b4c81166aea984fba6e71479e07b1efbc74434db95a285060e7b089", "0x03d62fbf82fd1d4313f8e650f587ec06816c28b700bdc50f7e232bd9b5ca9b76", "0x11aeeb527dc8ce44b4d14aaddca3cfe2f77a1e40fc6da97c249830de1edfde54", "0x13f9b9a41274129479c5e6138c6c8ee36a670e6bc68c7a49642b645807bfc824", "0x0e4772fa3d75179dc8484cd26c7c1f635ddeeed7a939440c506cae8b7ebcd15b", "0x1b39a00cbc81e427de4bdec58febe8d8b5971752067a612b39fc46a68c5d4db4", "0x2bedb66e1ad5a1d571e16e2953f48731f66463c2eb54a245444d1c0a3a25707e", "0x2cf0a09a55ca93af8abd068f06a7287fb08b193b608582a27379ce35da915dec", "0x2d1bd78fa90e77aa88830cabfef2f8d27d1a512050ba7db0753c8fb863efb387", "0x065610c6f4f92491f423d3071eb83539f7c0d49c1387062e630d7fd283dc3394", "0x2d933ff19217a5545013b12873452bebcc5f9969033f15ec642fb464bd607368", "0x1aa9d3fe4c644910f76b92b3e13b30d500dae5354e79508c3c49c8aa99e0258b", "0x027ef04869e482b1c748638c59111c6b27095fa773e1aca078cea1f1c8450bdd", "0x2b7d524c5172cbbb15db4e00668a8c449f67a2605d9ec03802e3fa136ad0b8fb", "0x0c7c382443c6aa787c8718d86747c7f74693ae25b1e55df13f7c3c1dd735db0f", "0x00b4567186bc3f7c62a7b56acf4f76207a1f43c2d30d0fe4a627dcdd9bd79078", "0x1e41fc29b825454fe6d61737fe08b47fb07fe739e4c1e61d0337490883db4fd5", "0x12507cd556b7bbcc72ee6dafc616584421e1af872d8c0e89002ae8d3ba0653b6", "0x13d437083553006bcef312e5e6f52a5d97eb36617ef36fe4d77d3e97f71cb5db", "0x163ec73251f85443687222487dda9a65467d90b22f0b38664686077c6a4486d5"], + ["0x0eb544fee2815dda7f53e29ccac98ed7d889bb4ebd47c3864f3c2bd81a6da891", "0x0554d736315b8662f02fdba7dd737fbca197aeb12ea64713ba733f28475128cb", "0x2f83b9df259b2b68bcd748056307c37754907df0c0fb0035f5087c58d5e8c2d4", "0x2ca70e2e8d7f39a12447ac83052451b461f15f8b41a75ef31915208f5aba9683", "0x1cb5f9319be6a45e91b04d7222271c94994196f12ed22c5d4ec719cb83ecfea9", "0x2eb4f99c69f966ebf8a42192de7ff61621c7bb47b93750c2b9ea08d18446c122", "0x224a28e5a35385a7c5198169e405d9ea0fc7da8b93ee13b6d5f7d099e299520e", "0x0f7411b465e600eed8afdd6afca49c3036f33ecbd9a0f97823796b993bbd82f7", "0x0f9d0d5aad2c9555a2be7150392d8d9819b208ae3370f99a0626f9ff5d90e4e3", "0x1e9a96dc8292bb596f52a59538d329229732b25259cf744b6a12d30702d6fba0", "0x08780514ccd90380887d578c45555e593cfe52eab4b945c6c2cd4d528fb3fe3c", "0x272498fced686c7ac8149fa3f73ef8c2ced64717e3556d5a59f119d629ccb5fc", "0x01ef8f9dd7c93aac4b7cb80930bd06eb45bd350aff585f10e3d0ef8a782ef7df", "0x045b9f59b6595e614dc08f222b469b138e886e64bf3c40aa97ea0ae754934d30", "0x0ac1e91c57d9da919fd6f59d2a40ff8ea3e41e24e247a387adf2584295d61c66", "0x028a1621a94054b0c7f9a421353cd89d0fd67061aee99979d12e68f04e62d134", "0x26b41802c071ea4c9632647ed059236e50c19c3fb3c96d09d02aae2a0dcd9dbc", "0x2fb5dda8072bb72cbaac2f63e468215e05c9de06758db6a94af34384aedb462b", "0x2212d3a0f5fccaf244ff3547fd823249ad8ab8ba2a18d383dd05c56ee894d850", "0x1b041ad5b2f0684258e4dfaeea09be56a3276fdb19f44c015cd0c7eed465e2e3", "0x0a01776bb22f4b6b8eccff33e76fded3144fb7e3ac14e846a91e64afb1500eff", "0x2b7b5674aaecc3cbf34d3f275066d549a4f33ae8c15cf827f7936440810ace43", "0x29d299b80cd4489e4cf75779ed54b48c60b042257b78fc004c1b803381a3bdfd", "0x1c46831d9a74529357641c219d721a74a427110032b5e1dd19dde30424be401e", "0x06d7626c953ccb72f37141dc34d578e036296c0657674f80739ae1d883e91269", "0x28ffddc86f18c136c54002748e0c410edc5c440a3022cd960f108c71cda2930c", "0x2e67f7ee5e4aa295f85deed09e400b17be67f1b7ed2ab6adb8ec0619f6fbc5e9", "0x26ce38fa636c90630e97f25114a79a2dca56859ef759e53ce7abf22c24e80f27", "0x2e6e07c3c95bf7c34dd7a01d00a7ffec42cb3d16a1f72721afacb4c4cfd35db1", "0x2aa74f7597f0c9f45f91d7961c3a54fb8890d276612e1246384b1470da24d8cc", "0x287d681a46a2faae2c7c090f668ab45b8a71313c1509183e2ec0ca639b7f73fe", "0x212bd19df812eaaef4a40600528f3d7da5d3106ff565aa3b11e29f3305e73c04", "0x1154f7cf519186bf1aafb14b350eb860f97fd9740926dab93809c28404713504", "0x1dff6385cb31f1c24637810a4bd1b16fbf5152905be36583da747e79661fc207", "0x0e444582d22b4e76c081d34c44c18e424011a34d5476252863ea3c606b551e5c", "0x0323c9e433ba66c4abab6638328f02f1815773e9c2846323ff72d3aab7e4eff8", "0x12746bbd71791059193bba79cdec448f25b8cf002740112db70f2c6876a9c29d", "0x1173b7d112c2a798fd9b9d3751842c75d466c837cf50d73efd049eb4438a2240", "0x13d51c1090a1ad4876d1e555d7fed13da8e5713b25026ebe5fdb4808703243da", "0x00874c1344a4ad51ff8dcb7cbd2d9743cb72743f0394efe7f4a58ebeb956baa1", "0x22df22131aaab85865ce236b07f244fa0eea48d3546e97d6a32a562074fef08f", "0x0bf964d2dbd25b908708b437a445fc3e984524a59101e6c18bf5eb05a919f155", "0x09b18d9b917a55bca302be1f7f181e0e640b9d73a9ab298c69b435b5fc502f32", "0x094f5534444fae36a4bfc1d5bf3dc05bfbbbc70a6365366dd6745a5067289e43", "0x2999bab1a5f25210519fa6622af53a15a3e240c0da5701cb784fddc0dc23f01f", "0x2f6898c07581f6371ca94db73710e88084301bce8a93d13669575a11b03a3d23", "0x07268eaaba08bc19ec16d7e1318a4740565deb1e8e5742f862174b1a6866fccb", "0x186279b003454db01339ff77113bc9eb62603e078e1c6689a6c9582c41a0529f", "0x18a3f736509197d6e4915bdd04d3e5ddb67e2cc5de9a22750768e5524737172c", "0x0a21fa1988cf38d877cc1e2ed24c808c725e2d4bcb2d3a007b5987b87085671d", "0x15b285cbe26c467f1faf5ef6a64625228328c184a2c43bc00b36a135e785fba2", "0x164b7062c4671cf08c08b8c3f9806d560b7775b7c902f5788cd28de3e779f161", "0x0890ba0819ac0a6f86d9865fe7e50ef361c61d3d43b6e65d7a24f651249baa70", "0x2fbea4d65d7ed425a42712e5a721e4eaa627ac5cb0eb878ccc2ee0aed543e922", "0x0492bf383c36fa55540303a3b536f85e7b70a58e854ab9b9103d7f5f379abaaa", "0x05e91fe944e944104e20251c565142d61d6185a9ce85675f6a969d56292dc24e", "0x12fe5c2029e4b33893d463cb041acad0995b9621e6e49c3b7e380a76e36e6c1c", "0x024154adf0255d47958f7723921474131f2629fadc89496906cd01dc6fa0784e", "0x18824a09e6afaf4a36ed2462a86bd0bad798815644f2bbde8813c13457a45550", "0x0c8b482dba0ad51be9f255de0c3dbddddf84a630af68d50bbb06983e3d5d58a5", "0x17325fd0ab635871363e0a1667d3b67c5a4fa67fcd6aaf86441392878fdb05e6", "0x050ae95f6d2f1519122f5af67b690f31e550773fa8d18bf71cc6d0e911fa402e", "0x0f0d139a0e81e943038cb288d62636764bbb6295f07569885771ec84edc50c40", "0x1c0f8697795689cdf70fd2f2c0f93d1a79b39ebc7a1b1c549dbbca7b8e747cd6", "0x2bd0f940ad936b796d2bc2e048bc979e49be23a4b13598f9fe536a16dc1d81e6", "0x27eb1be27c9c4e934778c09a0053337fa06ebb275e096d167ce54d1e96ee62cb", "0x2e4889d830a67e5a8f96bdd3155a7ca3284fbd307d1f71b0f151be62548e2aea", "0x193fe3db0ab47d3c5d2ec5e9c5bd9983c9891f2cadc165db6064bbe6fcc1e305", "0x2bf3086e96c36c7bce415907ad0c40ed6e9661c009679e4e37cb13027c83e525", "0x12f16e2de6d4ad46a98cdb697c6cad5dd5e7e413f741ccf29ff2ea486e59bb28", "0x2a72147d230119f3a0262e3653ddd19f33f3d5d6ec6c4bf0ad919b0343b92d2f", "0x21be0e2c4bfd64e56dc47f957806dc5f0a2d9bcc26412e2977df79acc10ba974", "0x0e2d7e1dc946d70b2749a3b54367b25a71b84fb911aa57ae137fd4b6c21b444a", "0x2667f7fb5a4fa1246170a745d8a4188cc31adb0eae3325dc9f3f07d4b92b3e2e", "0x2ccc6f431fb7400730a783b66064697a1550c12b08dfeb72830e107da78e3405", "0x08888a94fc5a2ca34f0201462420001fae6dbee9e8ca0c242ec50621e38e6e5d", "0x02977b34eeaa3cb6ad40dd42c9b6fdd7a0d2fbe753af88b36acfcd3ccbc53f2a", "0x120ccce13d28b75cfd6fb6c9ea13a648bfcfe0d7e6ff8e9610b5e9f971e16b9a", "0x09fad2269c4a8e93c81e1b9770ea098c92787a4575b2bd73a0bf2af32f86ff3c", "0x026091fd3d4c44d50a4b310e4ac6f0fa0debdb70775eeb8af630cffb60092d6f", "0x29404aa2ba565b77bb7fba9dfb6fc3212543cc56afad6afcb904fd2bca893994", "0x2749475c399aaf39d4e87c2548695b4ef1ffd86590e0827de7201351b7c883f9", "0x098c842322479f7239912b50424685cba2ebe2dc2e4da70ac7557dab65ffa222", "0x18cef581222b647e31238e57fead7d5c758ace14c93c4da40191d0c053b51936", "0x13177839c68a5080d4e746745e43711d3cbc0ca4a108f98d63b2aa681698de60", "0x020ca696f531e43ec088f56f4b74325626cc4df712c0e5f0a907d88e5f0deffd", "0x27230eede9cccfc9fa805a30fc548db693d13708c646841d16e028387c7ac022", "0x01645911c1198b01d64fde34a342a1786497c05969a015439057d2fe75bb281c", "0x2c323fe16481bf496e439c88341ce25f198971e14487056cfdca4a451a5d8643", "0x0fc082dfe70728e8450bd2074c3e22e1b022c124d3bffe8b5af88ae6db5085c8", "0x2052c174800db209d8cdca568dcc25b3be9642116ac4c77efe8a488b423521ee", "0x28e420e10df2fbb5af96d621d55423190be351ce8129065a8dd9fd05b3ece9c0", "0x25698ca5e24a1b799f783c4462a24db655d6ae1bdacd1cb549d6e0bc3ae5069a", "0x160a9981a5c89a57cf8ffbfa57d51049a297b61074422ac134d9b857d6984d35", "0x21c91a39e145c3bc34d9b694b843f3bf8b7cebf59ddbb0a064642b069997f3d4", "0x1ac8d80dcd5ee876d2b09345ef112345d6eaa029d93f03b6d10975461e41734c", "0x0ab3e6ad0ecf8b8e7c1662a4174c52225d822895e2755544b8dbcea5657ce02c", "0x1c675182512620ae27e3b0b917b3a21ca52ef3ef5909b4e1c5b2237cbdab3377", "0x2cdbc998dfd7affd3d948d0c85bad2e2e37a4a3e07a7d75d0c8a9092ac2bed45", "0x23b584a56e2117b0774bf67cc0dee33324337350309dff833e491a133bb63b2e", "0x1e9e2b310f60ba9f8cb73030a3c9d2a10d133bc6ba4ec1152f3d20de1465e9a5", "0x0e01e365ba5b3031abc3e720140ae746c9ab5dab987520c460bcd4f1fa5b22db", "0x040884cdcfc64bfc7b7127340498d5c443382011b61c9a4b1387d85bc1264e68", "0x190b1ee1205eb9500c74a3998f2bea36353f1724d6067ed0a0a17de311ef9668", "0x1647c72aec6c4388d04f52fc23cd9c08c1dfcf65ce61e165fc28d1f832bd3b2c", "0x2430006346a0145f799880cc4c8736269f5494d89fb48b02842e595b71e4541d", "0x177b9a08343917e1365107a3da3ae7f69d853902bb16bacb3221850252b757af", "0x04a420e642b11ae94e58862a68f5e32609cd53d0ae29423439b11d04666df4f8", "0x25d0e0f739fb39fc105a88fab0afd810de2461858e956ccccdfabeddb6a25c8f", "0x04476d91b7eff2fd85905cbf58651edc320cb15610eaed452c4d4ffa0c740a27", "0x1090c0b68b3d7d7b8bc9ca2419eb8dea1c28f6d5e1250cb5e9780fd9ca286fae", "0x25393ce3b9256d50448a725c5c7cd5ad376f2d435855c10ebf2899cb5c6617be", "0x25931c0c7371f4f1fc862f306e6e5830ed824388d6b9342697d144f0fab46630", "0x2396cb501700bbe6c82aad51b0fb79cf8a4d353185d5808203f73f22afbf62f6", "0x26a363483348b58954ea748a7129a7b0a3dc9068c3cca7b5b3f0ce03b8724884", "0x27ca107ca204f2a18d6f1535b92c5478c99b893334215f6ba7a0e5b45fcd6897", "0x26da28fc097ed77ce4662bde326b2cceac15f7301178581d8d2d02b3b2d91056", "0x056ab351691d8bb3703e3055070ac9cc655774c1bb35d57572971ba56ee0cb89", "0x2638b57f23b754aec76d109a2f481aa3c22547a11ffc50152d729af632376a90", "0x304754bb8c57d60732f492c2605184fdc33e46a532bdec80ea7bc5519ede7cef", "0x00d1727f8457ee03514f155b5806cbf748ec6857fc554010752ac93a9b7619ac", "0x00ee1f3c66fbc05c43ba295a303c72fab5bca86805ec9419c588e50947761fa3", "0x0afafadcf5b4dd4a4a76b5a1d82415fd10a19fbcfc59078c61f9297eb675d972", "0x0b2449f39746085e86ce45e8eed108ee65a234835a0a6a5ea8996d124dd04d0a", "0x206b0ce2f1b2c5b7c9f37b0045227095f6c6f071ec3bdda76a7ddf4823dd5dd6", "0x0feba4fb87834c7cb696e67433628cd6caffc3a4ef20fea852c7e1029459409c", "0x254dbfac74c49b0b8926752e084e02513b06f1315e6d70e18173e972336e55d3", "0x0addb1372cee4e164655168c367559e19606c5bd17910aeb37719edfa0ca8762", "0x26b25b7e257f3e97c799024fb019f65c6ca4d8d81b1ae16221a589d68831d759", "0x090995b79acec240413b8d4c658787e5a4657b9ab00bdb5b1960b1059e113ba3", "0x08dbdc2e21ef11f2c57299687843cea3eb0d8e40e99131f42974178d44f73b7b", "0x09e8aba671481197679faf752a0f78e342fe9c491596ab6758f170939785179f", "0x1deb05180e833e45659052a7ebaf816c7efd12a7f9eec94b7bc7c683f1363d5c", "0x19a70ec6bdfc9098a926efbcc04aa9ee248997e8b2c24af335fd6523e5250879", "0x21d773660adafb8a879986f9aab4890566353a3777d8a3f1eb93abe10bbf1f64", "0x09f1890f72e9dc713e20ba637b89d5d397a6b01fcd667347f6f46617841c3901", "0x05af459361eb454d2a300c61e446998d48fa1f897bf219d608c2145c33b111c3", "0x0fa1a1d6829f0345664a66dc75a657335f336f15f340756cfa12fc850cc8b513", "0x02e47a35bcc0c3a0bda0b1c0307ad543f4280fcf87f636f853655cf97a628bb0", "0x14f773e9834c6bdeb8f90e78bf4c24b7203411460112491036621895204d0f12", "0x102d98cf502ed843255cf19d29bc7d8e642abe7cfd639992ffb091962fc8f7cc", "0x043dd5f4aa5a76dd4c47f6c65da7ca2320d4c73ad3294738cba686a7e91373c2", "0x21833819c3337194a6c0d29a48d4f2676f0e7c79743a306f4cfdb2b26bd11efa", "0x0f281925cf5ee649b474a6819d116ca3eb4eca246c311ecadc53262a3cff2b53", "0x0d3e2477a7b10beb44709c7746d6824edf625dd60504d5dc93ce662f15c238d6", "0x2cd7f641bedbf66956ff8a01be9cde35d80f80ab51e73b49acbfc3eff5aefc44", "0x29e95b492bf2f95f4d09380f98b74e389149d24045811d7a86dd861310463cf8", "0x22da66bc62e8f011266efca86a6c810f9ae4c51af6ffeb57f8b3c50df83cc13e", "0x0fe6d30de7a82d163023491794f4aca3220db79e8129df3643072d841925554a", "0x0050e842a1299909123c46eff185c23ad312d03fef1adfecc7e07ecb298fd67f", "0x2130a3a7b3221222be34cc53a42d7733666f9ddf714ed7c5885cbbdb63108c21", "0x2df9ee294edf99e3d8d5883fe0566c24aa66731f34a93280e1d328e67b33c9fa", "0x1bf7d6e489ad8c0cf26eb68cc21ff54158132396dc250aeba4b6fc5fc3372762", "0x0c602fa155be958761eaf739617ab136cf7b807728bf7fe35d4778d311780e54", "0x2e50e2c5b36aa20532407d86b8d22d7d5154080a24972faeb63faf0121ed7f21", "0x17c2510982a7b5825710d6290ec4f782f674995ee8409b42b459123b180332e1", "0x0b0d52f03c8af7276803ecf2465b885b21337b538eabd2f6b2ab255f376b42a8", "0x0f5633df1972b9455953d88a63f80647a9ac77c6c0f85d4561972dd8fab8bd14", "0x0ebf7ad29ca13804e1422e939681155124780ff43e76e929035498130a7f1572", "0x1aff13c81bda47e80b02962173bba343e18f94bee27c8a57661b1103a720ffe2", "0x210449dbf5cf3061da2465be85505862d3f31de1a3b58ff35713be57efac6c07", "0x088230c2794e50c57d75cd6d3c7b9dbe19d1e2f1d3001044b93ad1c3ee629817", "0x1c408c256490b0a1da08dc464138dfc78cce9a9e16c7705617a4d6dbb20e7e3a", "0x074517e081eb4c1f22d1771200fb07658f7c77654d58440490dd6f557e9e3903", "0x02d04e9c21df1dbd88524bdb203691b4cee5530559d6cf0fa05adf61e12fdcbf", "0x2eb7a011b8bce91082e13ebd75de3b58eb9b4650dae9f11aa81db32cf1b67b13", "0x2efda77ed35f4af0299f75d6e8a849b54d2ac6bf95368304e6030c18f0cf17b5", "0x09199dcafd50ce642eddbeda65206d4f61a73d10852b8114c51b2440192ae064", "0x268c5cfc446d399c4dd319db666a75b5cb655d8c1797e9fa76181cb4216e1562", "0x2303a652c949071826b0e9a36c80578697b44e912cce6687012854eda11a18dc", "0x27c53563b12a6ee2c3f041f31dc45922bc5353eb110868d237073f4efb35fbdf", "0x1201a87eaf4ae618f02bd82d0a5109049969b5248cfe90f42c278f22615d2b0e", "0x2c43169439fcd69ead8214997bb069becafcb1ba2c51e5706cb4b43dab2a443d", "0x0683597315359040ea03c45d6984c6894f46cbb36d702e3c4fb9847e6304d944", "0x03545706706eab36afb93b128febd16fb0425e158314197b77795ad3a798d183", "0x1a33c254ec117619d35f1fc051b31728740bed23a6a37870edb393b71a0c0e6b", "0x1ffe6968a4470cd567b0c002281caf996e88f71e759b87e6f338e517f1690c78", "0x0fd66e03ba8808ffecb059c899fd80f4140ddd5d2a5c4483107f4e02e355b393", "0x263ab69f13b966f8197394552906b17e6c8617a7bdd5d74a7be3396b7fe013ab", "0x16a425e47d1110625054d5a165de413e3bd87d5aa3958fdd6eb7e03e39ba4046", "0x2dc510a4719ec10cad752f03c673f0e253cc31d13e39e909fcc5f73af9138d9a", "0x24df8e8d856c5b5e1bd1cad23d07dda3423c5179329b7a82cb4aa709a94576e5", "0x2bcc94ff4fc3c76f3cd5c68915a042e87628249a01b09561bdf24a6cdce5620f", "0x076c1e88dc540c8d8de54e343df7c429d3295f52c38cffe6b48be86852da97df", "0x09b5f209a451ac431c051fb12d9a5e4fe40ee1601120947da990fb8e12cb46e1", "0x205f17b0d8729e2eaa88d6a44135a6ab64e9424f55b0f1ea0683af75eb677c07", "0x281c5c688836f6cf912638c38be046cd091681f0a41761720cdd1edf9f237029", "0x1a053e6878e900f45f4d67448c471cf3009a44e7a02ea50e4afa44f2592621f5", "0x100dc7d426debe3007fb7ceac84e4f5468efcb897e7bbee981742839d59e064c", "0x17022672a016a957bb87e2cfadc8b75fb28905bdb62c82c80b1cb31b411e49c8", "0x1086db7e2760fc8b71053a87ebe151239fb8b547182b170de0c27203f954f4d2", "0x15384fe39d73b63302460ae4c2942fac2b41fb65a185536fb85dd24fd7584064", "0x2ebb599fe9136d424bf4abc5342c6c7447b1a853205fcfb5519e551357709008", "0x1b4b5e87cfb9262cfec3c0f0542e4c5a4cf278292b4ce3eed996fac6f4d37288", "0x2465053ae50b6885801f3f82e302cafbbb4a7581bb4fba60b637febe659e5057", "0x114f32edcdea09cd095c5bb5d38f1b97da9f05e18b3708bf6e0ab9d3d54859ef", "0x2bc70dfeb2baab2f6b387cd77be779ac2e5e5519f3d18123ee28d8c2543c7148", "0x01c9bf7a203ce22b775e3a61ad7e77b6a78348b9f6ec68a412e49bfe32c05415", "0x0514b0fe5909ea887bedb0295fbbcec355cfb575ff6a97cd9f4ad00ccb57ee9b", "0x267c76ec81934cc81a132a8b058910a12092520b12a201af03e3202d7b6c1b7e", "0x29170e3322b3d8d5c78c84babbb470adf1622493ce83e95cfb151cf757bde5d6", "0x019f6a8124b19e33af33e5d3873f9c335c6f09a45486cab536dd596ca41d9519", "0x1904aa4d6908544a8b348e9db1981c27009ed8ea171518ae5405d036242b60e9", "0x26f17873949bc679f7f043956694e422b3cee1de9dd6f6473b932a476455ff1a", "0x1ac668f612b8243c193b33720b8aa54040c476031197131ebdcac9b18bc48f75", "0x0996d961a75c0d07196dae45bf624766ccfbf8555be9796da52f81568ef0663d", "0x030c97e1b8cad1d4fd50d1b4383fbe6674d171f99c63febb5425b395c24fc819", "0x06e3ad6a46900e2d3953370255b68f89b3e523f1fe502642ee226f2d8bd0848f", "0x1d6b3755331cd0216b6880e42f9880f565cb94b0e0455153a329890588cc916e", "0x28e4dcba4b96f12a59b041535e730ac8c35189dc0b85ac033dd38c08bae531f2", "0x08b6086046a835508ccf484f2974b6a6b0712a476260376c7a3b3e4bc4a47a14", "0x162cd2ca7fe3b5f1444bcec97812019bb6fd85fba6a0536a89643e15b9bb3b52", "0x28f1e03baaea9bbc05af5b11937e4f5cb5c9a9c1192063d1998c01c64d483a76", "0x1bdb062778d7c15da395af2734c25faa0127d2aab4aa71366031a0bb6791ce10", "0x2375839502e09890cb2914e829627e0e0fc98870b2324a8b50329ebdd24749cb", "0x1fa8662fbcb61fb3ad7c55668dc9423a332dc87cfb2df456e92d33611ed7bb50", "0x1e4fad2dd6b0a6f1f8707f721716c8a446e2fb2c47a5138f3f7f9736079d7694", "0x211256d16c7269fd6df6f5fcdd1fa788ba3bd050059f53d261b0f5f13731ffe7", "0x2e49084b336eceaa4f8e2a2e6af08318f42060e574dda341f4a1079b12bcc5a5", "0x0ce19f54cdc39f7f3bf35192ac6808211aecea08dfe14cab758d25891fb00bb9", "0x0011c5d56c390e893cc394221261d8748dc60451e4ae4e1c84a8468bab2c14cb", "0x17d79ff06b63ac2a8a9e05ee6af3dbb7ca60e17bfa39b47514a8cd8051579b4c", "0x19a7d3a446cb5393dc74560093592b06b1a8b35cd6416a2ecab00173639015fa", "0x030c00a0933dcdba2a808b2e1b9282f331f04596d8928da7aa6c3c97237037a6", "0x16bcb447ce2d50f3ae25ad080695382e935d2d00184c4acc9370be8aab64139c", "0x12341b46b0150aa25ea4ec8715312997e62124f37cab7b6d39255b7cd66feb1d", "0x0e86d13917f44050b72a97b2bf610c84002fc28e296d1044dc89212db6a49ff4", "0x08e6eb4089d37d66d357e00b53d7f30d1052a181f8f2eb14d059025b110c7262", "0x2ea123856245f6c84738d15dd1481a0c0415ccb351a1e0cee10c48ce97ca7b18", "0x2dca72b2ebcab8c23446e00330b163104195789025413abf664db0f9c84dfa6f", "0x06ff9ed50d327e8463329f585ec924b3f2f6b4235f036fa4c64a26cbd42b6a6b", "0x246a10b7e3e0089947f7c9bda3d54df8e2a60e0cca84ea2ac630a4535afbf730", "0x22a63501c5f04b9018719ed99d700ee52f846a715ae67ad75c96b39d688b6691", "0x2f4c50477f7fd9c671799ac5d2e224cdb9164f58351d8aa140ec07e514fae937", "0x10ffb7aad1f51c7d13b17f4d876d9a1e38f0ba8a4a23d4b50cda32cad851567e", "0x0e9cefddc3c2d3bea4d39722532d5420784027352187e7af1a056935c35803ae", "0x07af84a4d3141e7ac23352e6dc6ea4afa1656f96a33c8978a3e83bdd4ba62b41", "0x2d9e31a10aebc761f8de00d14b1e566d1a39323d6e89b638e940f3ec8a22c3c5", "0x27f19a6532e66b5333db1afd592f66f1d36034b314dad8447656747be27e64c7", "0x0058fa3c8454d63354b2024c3b4a577a180ed99f8f3155cd7e4d617d47d07ffd", "0x041627b6715b780967957c080699343eb0414a205d3a175d708964956816a5d5", "0x006ac49dd9253edc7f632e57b958ccecd98201471cf1f66589888f12b727c52d", "0x0131adffd8bd7254b1d8c3616bbe3386ec0c9c0d6d25a9a4ec46a6bf18301398", "0x1c4a6f52c9fccf7a4138e413ef62a28377977ad7e25e49a3cf030e1cd8f9f5b6", "0x03f2a6be51ec677f946551b3860ea479fee048ae2078aeb7d1f7958d2c2645f6", "0x2da770aad2c2eb09391a0cb78ef3a9648a1372d8543119564d7376396b8ddc62", "0x15278463665f74cddc1802febfab02cec9d45fe866c359c738062afb75d64a03", "0x12fe278aa36544eac9731027090518d434e38ea966a08a6f8d580638ac54c773", "0x149b9c802182558a4c45d119d3f4cc7fd8587604ca4f0d6e21b06ff30b6a23b6", "0x0812e7b4d847bc8517d19319772f3c9855e044fd60dbac9a0adc4959b691dfe4", "0x02ed8d8ddeafe3d9d8df7f28a0bfaa7f555813c7e7503aea2a66973703a0c61b", "0x0ebd073ba0537b514deb6029f921029e55e5e4d9a03d6b6ba1304038662d4db8", "0x15c754d5b14b2c4205c6ba8d2ccd028255b3e792c6afa08b44ee75b62eff9f59", "0x169515c89ac5479db0ed8fa6fa311b391cc1235270f4cbc5c29e7cbc30e8732a", "0x25479fbfb3a68f982388f2621001101608bdc29f6ff037696d9161f5cd9a4fef", "0x14475c4bd520451f3c852cb0311a578ca7f8e6e972182196ce09486e94be6071", "0x045a691066cc66bec9baf2798833a1dfd3a847502aec8d5f5c4e73363d097799", "0x26029c0c267c799fb833ac8a11e3a3f0147a8ca037221b90013b8bcb37eba683", "0x163facb34ff572fbf7c946969c1c260873ce12a6a94a3e45b8101d5b948d1641", "0x2c714e96e1913b351d969320cc69d5ec13e06a6275e58688af8ee00c4240ee28", "0x1c1661e2a7ce74b75aba84665ecd2bf9ddd6268f06debfe2d52b804eff1d5fa6", "0x06a69ae795ee9bfe5e5af3e6619a47d26635b34c2a0889fea8c3c068b7dc2c71", "0x113d58535d892115c5d28b4c19a3609374dbdbadf54195c731416c85d731d46a", "0x2ab89102e2b8d5e638ff97d761da6042e534f1ff47f7917a2ca1a74063b46101", "0x03c11ca79e41fdfe962730c45e699546349031893da2b4fd39804fd6a15ad1b3", "0x27096c672621403888014ddbbbfc9da1f7f67b4d4cfe846c6adf040faaf2669c", "0x2de32ad15497aef4d504d4deeb53b13c66db790ce486130caa9dc2b57ef5be0d", "0x0dc108f2b0a280d2fd5d341310722a2d28c738dddaec9f3d255754448eefd001", "0x1869f3b763fe8164c96858a1bb9efad5bcdc3eebc409be7c7d34ca50365d832f", "0x022ed3a2d9ff31cbf82559fe6a911843b616945e16a568d48c6d33767129682d", "0x2155d6005210169e3944ed1365bd0e7292fca1f27c19c26610c6aec077d026bc", "0x0de1ba7a562a8f7acae93263f5f1b4bbec0c0556c91af3db3ea5928c8caeae85", "0x05dbb4406024beabcfce5bf46ec7da38126f740bce8d637b6351dfa7da902563", "0x05d4149baac413bed4d8dc8ad778d32c00e789e3fcd72dccc97e5427a368fd5e", "0x01cdf8b452d97c2b9be5046e7397e76ff0b6802fa941c7879212e22172c27b2e", "0x1fc6a71867027f56af8085ff81adce33c4d7c5015eced8c71b0a22279d46c07c", "0x1040bef4c642d0345d4d59a5a7a3a42ba9e185b75306d9c3568e0fda96aaafc2", "0x16b79c3a6bf316e0ff2c91b289334a4d2b21e95676431918a8081475ab8fad0d", "0x20dff1bc30f6db6b434b3a1387e3c8c6a34070e52b601fc13cbe1cdcd59f474e", "0x0212ac2ab7a6eaaec254955030a970f8062dd4171a726a8bdfb7fd8512ae060d", "0x2f29377491474442869a109c9215637cb02dc03134f0044213c8119f6996ae09", "0x0984ca6a5f9185d525ec93c33fea603273be9f3866aa284c5837d9f32d814bfa", "0x0d080a6b6b3b60700d299bd6fa81220de491361c8a6bd19ceb0ee9294b24f028", "0x0e65cd99e84b052f6789530638cb0ad821acc85b6400264dce929ed7c85a4544", "0x2e208875bc7ac1224808f72c716cd05ee30e3d20380ff6a655975da12736920b", "0x2989f3ae477c2fd376a0b0ff3d7dfac1ae2e3b894afd29f64a60d1aa8592bad5", "0x11361ce544e941379222d101e6fac0ce918106a463290a3e3a74c3cea7189459", "0x1e8d014b86cb5a7da539e10c173f6a75d122a822b8fb366c34c8bd05a2061438", "0x173f65adec8deee27ba812ad29558e23a0c2324167ef6c91212ee2c28ee98733", "0x01c36daaf9f01f1bafee8bd0c779ac3e5da5df7ad45499d0991bd695310eddd9", "0x1353acb08c05adb4aa9ab1c485bb85fff277d1a3f2fc89944a6f5741f381e562", "0x2e5abd2537207cad1860e71ea1188ee4009d33deb4f93aeb20f1c87a3b064d34", "0x191d5c5edaef42d3d02eedbb7ab8562513deb4eb34913a13421726ba8f69455c", "0x11d7f8d1f269264282a263fea6d7599d82a04c74c127de9dee7939dd2dcd089e", "0x04218fde366829ed90f79ad5e67997973445cb4cd6bc6f951bad085286cac971", "0x0070772f7cf52453048397ca5f47a202027b73b489301c3227b71c730d76d6dd", "0x038a389baef5d9a7c865b065687a1d9b67681a98cd051634c1dc04dbe3d2b861", "0x09a5eefab8b36a80cda446b2b4b59ccd0f39d00966a50beaf19860789015a6e5", "0x01b588848b8b47c8b969c145109b4b583d9ec99edfacb7489d16212c7584cd8c", "0x0b846e4a390e560f6e1af6dfc3341419545e5abfa323d817fed91e30d42954a6", "0x23a6679c7d9adb660d43a02ddb900040eb1513bc394fc4f985cabfe85ce72fe3", "0x2e0374a699197e343e5caa35f1351e9f4c3402fb7c85ecccf72f31d6fe089254", "0x0752cd899e52dc4d7f7a08af4cde3ff64b8cc0b1176bb9ec37d41913a7a27b48", "0x068f8813127299dac349a2b6d57397a50275142b664b802c99e2873dd7ae55a7", "0x2ba70a102355d549677574167434b3f986872d04a295b5b8b374330f2da202b5", "0x2c467af88748abf6a334d1df03b5521309f9099b825dd289b8609e70a0b50828", "0x05c5f20bef1bd82701009a2b448ae881e3a52c2d1a31957296d29e5763e8f497", "0x0dc6385fdc567be5842a381f6006e2c60cd083a2c649d9f23ac8c9fe61b73871", "0x142d3983f3dc7f7e19d49911b8670fa70378d5b84150d25ed255baa8114b369c", "0x29a01efb2f6aa894fd7e6d98c96a0fa0f36f86a7a99aa35c00fa18c1b2df67bf", "0x0525ffee737d605138c4a5066644ec630ab9e8afc64555b7d2a1af04eb613a76", "0x1e807dca81d79581f076677ca0e822767e164f614910264ef177cf4238301dc8", "0x0385fb3f89c74dc993510816472474d34c0223e0f733a52fdba56082dbd8757c", "0x037640dc1afc0143e1a6298e53cae59fcfabd7016fd6ef1af558f337bab0ea01", "0x1341999a1ed86919f12a6c5260829eee5fd56cf031da8050b7e4c0de896074b4", "0x069eb075866b0af356906d4bafb10ad773afd642efdcc5657b244f65bed8ece7", "0x171c0b81e62136e395b38e8e08b3e646d2726101d3afaa02ea1909a619033696", "0x2c81814c9453f51cb6eb55c311753e84cbbdcb39bfe696f95575107502acced8", "0x29d843c0415d35d9e3b33fadcf274b2ab04b39032adca92ce39b8a86a7c3a604", "0x085d6a1070f3513d8436bccdabb78750d8e15ea5947f2cdaa7669cf3fae7728b", "0x11820363ed541daa10a44ba665bf302cdbf1dd4e6706b02c9e2a5cda412fc394", "0x201935a58f5c57fc02b60d61a83785bddfd3150e05f1df5d105840b751a16317", "0x0a8c2820c56971aae27a952abd33a03d46794eedd686cd8ecfed610e87c02e9a", "0x180638ff301a64ca04abd6d0bd7500b6650b65ff33e6be1fd50dbc163a281877", "0x095c716266f1de59044f97114a4158a3f85ca8a937cfbec63e9b321a812dd36b", "0x17c31ea02fbc378320d86ffed6c7ca1583b618c5c1a687818d4087a497d73490", "0x05b86c4bb8ef318b6a7227e4192d149d3c17a9764ccd660de4d50a77f192a91b", "0x265bc95df4a4c4876ff70d7ea2fde2c7ab15f4a6ae0d237cd6ce74ba986c7a7b", "0x24752b47bc6c6bc8d9bbe48f5fef2f6908701739c5f5b4b3d6c886d4715c7929", "0x14814a1e0f492a4ea0d86e527a96482178d624b98da96ee5e583b9324d974efe", "0x10def931073b6479bd60577378f29381997c8e041d3cfb3dc7523bca906f00bd", "0x14f7ae770bf7e95f7f706c0d8ab4ed03fa0b880d28c69d031b4592c98610175f", "0x1aef50a0cee751b59f926af40e8035d19decc9d428ebe4e775c5cc9dce1ce589", "0x041935607172f68eba65ca60068dfe3b086c2a2d57d09602951214b57e73cf5a", "0x26863e9dd24255d1573bd083959b856c0493fbefe83c819837a151d3bf452cb8", "0x2036efb6f9830965eb3d7a068bd087c9f5adf251ba62052c652738e63ff8b3af", "0x0c712a975b74dc9d766b639a029969ca30be4f75a753f854b00fa4f1b4f4ee9b", "0x08014dab3cd1667e27afc99bfac1e6807afdff6456492ca3375731d387539699", "0x198d07192db4fac2a82a4a79839d6a2b97c4dd4d37b4e8f3b53009f79b34e6a4", "0x29eb1de42a3ad381b23b4131426897a32709b29d53bb946dfd15784d1f63e572"], + ["0x1448614598e00f98e7ae7dea45fbd83bd968653ef8390cde2e86b706ad40c651", "0x0ab7b291388e5c9e43c0dc1f591fb83ecdb65022e1b70af43b8a7b40c1dff7c3", "0x2b7cbb217896f52c9a8c088e654af21e84cde754a3cef5b15c4d5466612d6adf", "0x2bc6b0ddbe1d701b6570428bdc1ca1bf0da59ff3bbbb95fc2bc71c0c6e67a65c", "0x123a55a31980384f3d20b2cecbc44ed60c38c11f7d20e9271efab9a905eefd3c", "0x037501cc8c9dc819309a769f4df098e588b01858bc8eb7e279e2883be9fb8c53", "0x1c2116e47e03a86bb11695b0a5f6dab6b9a460b1eb951ab01c259eca3fd47d51", "0x2c18213489032e85a9c8cb8e9a65839bfaed13e57bc0fae49dbdaebf54f56f93", "0x2ee8fed3d4d2c71a0429eafd8e5db1718f29e2227985fdf2ad8703c835b9e031", "0x28c64d8f5ed7aac004c92029d9e9bf91ba9436d1cce94b9316d111c70a0c1714", "0x18a01d9ffb747ae0de3e83c707f8b24f682c84f15abf571b34254a03478665e0", "0x1c21d92bef197e73b234e4777b60db14e642a56cee71515d54e1ac71cde72bd3", "0x0ad404ccbcb1e195897cb60c80981ebb9d66a6677dbbedad8b6455fe62d807b1", "0x0a9b6de833064f93b6adb99af6c005945cb654cb7bd14c8b97af8b60cc1fb387", "0x13129e3f930aed6d47690331ff09dc5160efa58ddce2c3e6180d45bec3aa3a6f", "0x0d7a614c8991508ab1ce4895813bb1c82f18bf7bfc9e280ccca18079839387f1", "0x0532f7ec36e30041b0486986875c913a49bddf2f5af5febe8c31f2f4094ffea5", "0x06bbcb8e8e180201293e712f4950f1b0bbee808c9d64263c84d9d8ae155cb892", "0x0f558a4db1a3ac07f61e2e6bee947f73586bf40f211ceb4f687ca5678a9dcb33", "0x2be140a60b5b5f2f8edd78a818a969b20c643e419bcf0b577c24a0d0e7acfe98", "0x1c49c4b9a9f09f7b9ad5f74ebacc710512b8e867bace27cb0dea06e89b96f631", "0x170c1a732721b12cde7f33e476a39a1aa77a81c06e2eac503847b00d597652db", "0x19c27d0e52f65ca34f4e31a068e49331c6bfc39d9241f9d4c302041615cf27f1", "0x2f1bdc5254f9220c1a731fc5276964dab26b385fa40b6b04bed9960e2543ba08", "0x05b42d2fbccbf4d39d2be9339cabe9d0dc6d921e855cd91154b639d28d4a1cf0", "0x1220040715a41ad59f4f410e0c05a42c5fd32ac52fe9d06f88188d71f61e0935", "0x25f9526526155b83946609f7bb9507dd4925ef871dee916d9144ebb4ece1343c", "0x017bfe4284299ae7740b6d0e204951e314a8a5d0452419147978a95b34742444", "0x2a5d4764021ca71d78a9674cb6708f1588d2ceaf3578c4111cf8b359eef089cf", "0x17f02dab745fbe3c081321fe5cef845e7b8d070b2514d29b2a7b7d89cc0815da", "0x19da62626db7199b65f4adcf57fa4a3dbaa1764a7bd155708ee6f378c89ef013", "0x0f88e295fa2ed81b426c91fa69366a73edf75f39bf18634cd266ec4038829e05", "0x1fe31c5548546c7948fe4ee1bd7412e3280eff7d20cb09aa85f49f2766148017", "0x10fdc1613bdbf67f38bdde561b2f91e4cc48b59f98d643638fdc0afadbfe126e", "0x1f2618c2ebe9574508b9c52f0000e33ebfddad1a03fdd6bca6ef7f0093127bef", "0x129fe7fc3efac6a8ab23dba6d886f394da11f5953cf98e28269a0dba2a745dd3", "0x15afd4cdf1e4f820c1631d4ab85ca4ba3bafcfee72beade9fae60523102448e3", "0x1f2c74ba5c367e370d728e71e15b268851a7bb8b45528cb734956079ac99b012", "0x1130e1872d76f2f9369cf59b95edf9ce19f01fa89c9c36b26e09def6786dad3c", "0x13523d173f7e6badb73b63fc1c9bbdbee242c61bc68656493327533a5c1b1dca", "0x14da40d0af427a65f1841b5adc96538653368f7254cb5667ddadbbad7a574cd4", "0x0091f96400e4297ea85bb186c17b304e82638e57fd631ff6315976e1a5dd8b86", "0x303329bf9031c5515b9a34d49a64bb6a0267bc7b54a0deca5c450277a002cdcb", "0x14ed47e55c1da1c2f05d3c1a1b2e6c18509fc8336ecfe9db737916e283fa821b", "0x1161f10b357775d810ad53bcc4a20d5add2b03251c747deb04ee94c565e58d6b", "0x17a8a50ae72ce707f22bc070eb992851ca914eb94cc68eafbb8a96a714eb8221", "0x1a6c61d795dbaf62f99250b37ec5df88645a1c153791db6312b932dc250e4f62", "0x1f8bd2ab8aa840664c4eee198c4684dc4b05772bb2a0869da6722b15f447a133", "0x1ffcb852a4f0027a9799f131cd74b98ccfb8cbc06349d8fefcc62f10c8fb3e2f", "0x035e742ec52f19b36d489c720f467ffad77cd53bc2db5dddb246b23021f79f18", "0x1dfaaee41bdf94d783aa29fc62b7ec7b55673aa818d305fd42d175a05f2e3d86", "0x2821378477a02e995005a5635088540945bd333f2d1455f038a219b8c4796b3a", "0x1db4a4d0f238a570b1061c6eec81c02f31ffdd4a7c19e763174f238d04897421", "0x14bf7889457b20b7a1367b34a3a538217d693b52426aff40a4bb72893b1784ca", "0x2ced52c2bf296f87e57410c3ec9a9483a796d164f6049127109ff0d3a9c08465", "0x1ddeac5805a7f4ada4d0441ed108e3149d4ce6584f49ae5bdfd46d6766eea334", "0x2e36b4e5e9c97b462304e8e2b5f9dc88e1c9f2161ba040673f911123f042ae70", "0x0c6840d1cb0666dc59e89b1865275d8a164b447c5ed64347caee63502c238d5e", "0x137e2e3e89e71d461f4c9bc3e8f12183262a4d1db55c589b2caeaac01238f58c", "0x250932e7b0adcf2c84ed4bfb60a36b6b82e55aa94751157b1d45794b081c8aad", "0x170a7292f5634c06dd3bf09ab5c9c4ecd4b00d5ce2f35f972b4555391f16b42d", "0x0d68cbbe77289e78d5cbf51d70f1b75ba215df4e7bd0149d10b2c50f2a4f3b81", "0x0caf74563b90525f645a6d2036ecd1306fa1dc680b49d9ce4ed24c9749973178", "0x20a7d1c0a27fcce78ffe372f4c58306b166f9456ed46cdeb255e395b7d30d42a", "0x0623f3226b5470b2789b8a53040e44443385e96b9cfa0be4d35015158a468465", "0x1632308688c25e790f57d68a5350241242a56305347de4a5009ce46b8cdcb91f", "0x2de4793a6f99cd14e3f6642211f4d0b7bcfa361597c544ffcb5a567e9076f47f", "0x1d4d06d19ea1b09cad79086d51bde11725a554fa99559ca2f09f3bb73d728c66", "0x0480e7479a66a7cd9ea61c8b28974389908350abc4aafc18cd75e33dd130c144", "0x30430b03368ebcaa91246960490bcf917d78681463e2e7d744bfb44335dac24d", "0x0b57b37320127d4c50f269124b0dbdcb2b1f1352241a5d12103283e089c0c742", "0x2cf4890650d27240e195f60a4f698eda249b8dd614b23376b50178d2df6d2b8f", "0x1e221c5526898bfd12de86851a0d9703751a2f239008ab5f9b7d3b6911c64184", "0x28e07485ad7d992ed1a58f329ca12adce4ec693ebddbb2952e54d339f2eebda5", "0x2f44d64f84de16dc67bd5ead51efb1dc8381c84520c12854dd5ef3a079acd4e0", "0x050a76bc32ebd1dfe2be330f304edc7ace7167ab7ba1516f4021c62cf0d4fac2", "0x2f58c45e5d659a67d781367241f6c35d8cb46361d97b28947d29421c270594a9", "0x25e8da9ae0e42e840e04b230370e782bdb67534844325ba36fc7e5e160c66a74", "0x2fec734da20fe32003ea04f127f844724f38a368ba10c29544252be796040f7f", "0x288a6778f3a83988a8ed1727f15e93b4cb14f4e3a3bbb91dd6d1facafffd5eef", "0x20dcc6c75fd89259be7f406750b3db679a25a8cd2715d245b9175390ac922c84", "0x17f42ba10942df25cb8a541782a18b6fd31cf965d11178c7b04ac45b4dea5dd3", "0x028eeb85d115a904020e0c6148eec6603e9cedabc664abee764aafd455986ba5", "0x0b1d7cecf3a79b2ad3fa298f6cea7ae95d80c0299ecc918e9f8c9c3d38d59d40", "0x0440339c9764cec79c16efdb834a26261db8e3f12ce1cf722d23c0e11ff4cf07", "0x06ca647c29727c1962a002177da2d504f4b07a5f7eb57c79b88e6b7abbbdad5c", "0x2ea120a864f5c4093dd1a962e8f013c7b8ef778b04d2ba5bfc3cab28619ba9e3", "0x2bb737546c4aee7c0cc2ba87c1157e2a77c479ebfb5dc76adbb39cf8697633fd", "0x0e30da6490625d33e79cd50176f568f9a2c28c2f449a2bd51a25d15686803a93", "0x0df7ca7278a13650b919d85497b2ebb0f71035a7c20430d4131d903ab7f57521", "0x27cc589f5bf585794abace589fb8a74a2f784c0990b80fcaa6944097f870e2d5", "0x2255c36a38c8735de45cedf452afa842332d33042f78e60c43c7455421b325bf", "0x133d9602bd3378d69f681c27b05bdffc98b7d86cca63d73a60caed485784d087", "0x0e1548e942ae9d3e26860699b93727c817a9948616c93ef4accd981b1dc3d78a", "0x0f20f0e55d93689fe09ec312f6af47627482e4bde0a1602a8e2c8d6e84e8a6ae", "0x2e52328483cb5b7ff2eb4e45b12e51b26232c9bc17b7292954c0a9f6bfa51bb9", "0x02b2162d533e059a6eda2abb74712edb3a7860beea95dd8a4abfc957660804f4", "0x19e0927715d1cc6d389429947fb3737dad733974c6b2e13e5b3d432519516c74", "0x0d3a800457d77785636303b8b94f17dcffcb46048872ac9f74ef7f27ee573705", "0x2c974d1952557a1aac5f7bae4996616da619b73f441c4e504dc8fe9cfb559e32", "0x0766bfeeede2ccf3708e1b4ff30714c22c1d434cdbe8f55514babc2dd5d97bef", "0x23dac8ea54082fc131e173ae55e4630cd4ca7c871b2a0a479c1e74e7f191e62c", "0x17d5fb6c2cb37010e3e358ab2d575376870ed33186b8eae49ad3b47e340a8d7f", "0x175dcac76d8a8126139b583ae38853290246e43e783fa6903ec8007f178c0023", "0x0c4fd08fede5d221adb7abf549898c91e5be7e85bf1fd2a611bf182cc2e71655", "0x277934b909e72d3a3475bb1ec766ab7a38ad59b128303fc5002f02a65bdfe729", "0x0e88349998dfe703f1b184524f9c394d6004ccacf9cb952896e8cfdb0b078b68", "0x1f1b2078b60b0fce07824e2a2bc8cae8ee673514b0070a8b45710cc78cbb9942", "0x2eb1559566c536ddbc316f6482d51fa340557657700f5b8a846e812a0ed334d1", "0x1c4dbdc335cf6764355208b4c9d243d34541d623c669dec2c3ba066bbeaf6773", "0x2374a6b2da6f8cab8e5cfe8d805dd3a2dfca1e8b7eba5dc8574021fd1241e3b4", "0x19dd342533ccc603a99738e3fb5a569b94ef71b3e49f90fb874f6161733072f4", "0x217d66db6c7fb3effa508800587d2eb3c6d03d8385132f2fcce7f35f2705cccf", "0x0815fb8591fe01038cd3a3b38b236f9efca77c618d3bfc6c2a7fa89296c7e64f", "0x2bb943b40c2bd456a6c17853b1ca88eb0ff36f5974b2ff9a5f5093e9bf63a16f", "0x11a5153fce659513ee7cb9974ae6cba581e3b4cd14570c5709fec3d8d3fc82e9", "0x1b72bfd07635d8501b2eff8785a2495bae74c7653cf90e6d5c9f144426836df4", "0x14902c0700eec897ae178ba8caf850d793f1d87512bea0ecea39cf6b1fee233d", "0x09c138c6e0a616a49ff90d43a6b043f3b745b78865856dc4c1a45e2fd84cb3f4", "0x05b58a3dce57b281a271d69895052d887458a715783e8317e024a61a35ec10bc", "0x2be8d29525c0cfdd5e6b3125e3bde3bf558e55fbe867f024457a96765474d037", "0x061d72f78f1ba9dc6b4d7f7784225d6a81bdfc1b5ad6c24369f9c0560523d9ad", "0x0bf18aefcacffabdf4112eddadca6145738b4803b36145bb9516db501a0692e9", "0x2e73dd105fa8b2ec931d8cdf29ec679e3a9801a93071a7d5ea30659255f03bc6", "0x0f8440ef667c9ae81337ba5d8c927a5347de7296860b211cad1ecbfb5d3598ef", "0x004d303b2dea627b2731be83f93ac34e7d14d178a13800558ca7396395eb118f", "0x234541ad72040a70da2996a35269230c94699eef313a4d480508008cbc3d37c1", "0x0d123f1e72d26b92bdd8fd73d14286c312ad4c23acb46b2e08c157104409e174", "0x2fb360776f0de79d7098ee7aa4123c05ee6b05a8be460a774f3a048e138545bb", "0x03685c079434e167276c57d3cc79703b7dfdc41c156ea1e8b7f99b6956a55326", "0x260af0e0fffcc9772c1631b179344566b47aaada3681eb9034c6f75c3705c1c7", "0x2862b41374f89b695274b33b773f2554916e2bff9ff672545fc2f49563f62767", "0x02a9912fe170310227189ea1e691d0362f18b38b400b0eff192ca59513eba8d5", "0x08e513ade694a0d8ac1f3ebf1a96440d32c713d5058e1224e070348c281f4a6f", "0x140a4a431e2ee79400ed7465978d84773213c628264ff80f21ac7a6b673d09ab", "0x296af4d019cb5df7d959b29d549c3f071202b4eba8b53dc5ee979ed143377927", "0x01832e284a7f4c81614882b6939fc0f185573bd2023e3e505765470bb812b349", "0x1a84d56a67bfdd3d965abdcd329aa78d4fe93434496f2d103861fd19d66d7260", "0x040cb82847773927d2aefdc07489037a9d1f7631eca75c9fb0dda0cb9dbde143", "0x010dcf084cc29cb7caecf26aa633bce4ed2b019f2887cee7b1a78f89d3fabe2f", "0x07edc22a0911ea214425ef542b776db23b0fe5817810d40c72ca98aabd9afa83", "0x2eea4ab08aec775f2148479ea36fbb96936da58ba48bd1d2d3acd48173aaabe7", "0x1e40c0e8257fe4a61005cdcfad148cf7f47d1b5cfddfaa082738695518245f19", "0x23a27809583bd1ea51f436de5443e108f69d44cdf51dc1f03e21948b4980b876", "0x2e4652b044dbfe40e63b6b232fcd5f3f39abfbd2051ee68adc754080d49250a9", "0x11e7abdb6ecbafc2e7d8cdefe9c7b9c50475eb475db3c2caf7f7d67f485775f2", "0x199d52350cc30e8c73821f802096f0e547a13551b27bf6b899396f63ac5cf8e7", "0x0f575d6ee67cbecd98345624e032a37c859a7cbef30b3fddc949cd0978484101", "0x1c4b6f9a2ae2b418e6265acba9c96b06184d07028e5fb784f3475ae7772ff057", "0x2dcb5cf8896de39f228e157c0c5593f4626fb9bc225206383db20360abf0c925", "0x1340abb9f4e113186bdc26cbdf4bcca50b531a107f863ca544575e3cf870f8e1", "0x2368e692b72787cb8870ea888e714e006f59d2b4460cfb74c48a8cc73b1d1a5b", "0x1fab9add9baa4a4f56f23165775c6f2d922a7632a94f96374b7dc852756f54b6", "0x0c7f7b82300d3c6ce3f8957ba1e4add54c4c015e20d9765d220571c16ab8680f", "0x15d63e86beacd93c6083688e5d9c8f3c6947929f9f1f99ab578a4c3a922eff03", "0x0be843ae5f9b07e52572178af7dae8ed05d36b12c0607862929355ea74023d9e", "0x1332749c523694cb6935e0963a07e81b05967ce1d950c0b731058ec92a7a0c9a", "0x25439408810e074c0bdd4598b9815fee892bb95ca51029ecf009bffa5b9b9682", "0x057e8d19dd999a918da29b0940b383ba9fd15db0b0f64996dff67feb55f9a742", "0x1e014e37e9b117cf3b4870d999f2b55d3534d0a6be98e9e357fa43f01e70a29d", "0x1a4ed24e6e03aebcd6bdb100533dc966597afe15c851b4b863f6e889084c6479", "0x253420007083f1aa863ad4760905c1039ed4111c9f053f27710452f83ce36a90", "0x2276a1441971709affe6d2a99320001ec45ec72155c575ddeecac0e32759ab06", "0x28957dd1218ea799fd3411eb19325853adf7ae8ae1281f753302fe7d31dfa7b0", "0x2fd925726ab794c88bd75796aa3e7f1e6692f2914cf802267ddf01e37902a008", "0x1cf8a5c9c76a84b147c8238d9253cd55b47c0c43d82966c4636a28674705fd9a", "0x0373cbbc306e1bab9e7077368715e6230b4b2e2e4a1db9c674b8c359a41e9108", "0x060283d2fe7f23dff513d9110b3dc62448bc48f531ce0c1eab5920bf23290a40", "0x0dab465d6d910740f33ef6cc0eadc71bf8119bdfd5a3527dc8bbfadfaa40263c", "0x0cba7bcbc8224b2a8e4aba17977230a686cd6421dc0ca5346f3446b62439c4c3", "0x1e4365db0790c9c4f445b0653c466ff21db96c38b4076ba8bd68bcb4dea6911d", "0x1bb2dba2199a9ab3bc86ef5f9de7f6c5ca13d60eab42ced68de98fc643800a8d", "0x0ad3c1870c6d6ef40eebad52123cd1a2913d9d62e80bfbacae812e082021f9ca", "0x01b098c91e7b0cbb5c34588077c0ddf95300ddf614935630c0ce3a2627245308", "0x19fd5c0eac14fae7598bd4ceea3b1e2998b0c168493b6d72ae41b576e55b9c3f", "0x0d4749d79cc163f17110a404a46fe427c6434f3fe67b7e7b4ccfa6ab95bd7e18", "0x1ebbfe8114a41bb809e0b33399241232eb940ad8728c8a516d40ada440dbfdcf", "0x2704e5b6133d9764d6d3f17d49d833223e3937f80eb9faeabbfba9baf4b4c1b8", "0x2165e1c8027305b1ae0e323571635e5d540d13d710c3f9a390b6913f14d035e3", "0x2e3497e4d35fda596c06afa63bc3a0f2e55d4eeba4aceb60e65081ad63aa8b8a", "0x031da4345eecd6db6c0f7b07c7815d7add1fe0546d738f4d79ab5c57aa841edf", "0x089ece54e47aa5c908e43e5f08737c1436967089006acab1c9cd19eac4a20876", "0x2f53c15e2aded33c47f55a070483e6cc7f3821fbf8aa40677d0552ed9d10d847", "0x142aa34f4b2e8ad0df7a21b3e39c00c8b0aa2857094801eaafd72befed077f93", "0x17aea4da4c7bcf0d7588b014eb8b40979dd2725eda4e6ace331982467c7ff2bf", "0x0e970c19d19748d8c465104d8f02200363f9a41786f02f1827742b20dc0d1727", "0x04bcad9e553795642f59baf714a6bdb432fc45a0a0b77f1aba3a9823476df9b9", "0x242c0bfbcdaa76f715dbd4ba825c71fcfed671c1b1901fa484c87f810315d0ce", "0x25db1343c24104071023fb6ed34d9909078311e1efe85af0a11b19114fa9e790", "0x2ffe4d9c420a59e9cdc7c31ab2bf35187ca147cb898a3942deb3677786036a80", "0x125bb03af3e2cf18bbe6f5b590eb3bf8d0d1ba63be696483e98f283bc7cd07a3", "0x0816be42745b7dbb4ceffe5b8e24ea60fd8b719deba50037ac7b75948745c6bc", "0x111160f9acf6ec360d1b6a712313a0dbcbe23e64420055471d2ee4c5dedb35d4", "0x1377978e1b1f6a8925fa8e7b7941bdf8fb59ab9542342419283d8203435c9391", "0x0defc1d8882166ef3ccde53a4f236fba83d384621937cee57e421a513d0d3397", "0x2f8fa5c78c706e3a5d4a03f2a7a3953046d7e94cb88a7ef350e67b5ba0f0debf", "0x1a2a957ec0a723da61c2134bab0bf17beb00e6dcd84690c230dcb9e58da94827", "0x1cdf8710995f5e03412b4a7f699532f9fd01f0ea167a8dfc1ddf37e2805addef", "0x26fd31471828c36ae36c27b748054b0c0c4fe5239b301699e3765eebecc18946", "0x0775d996cc2c4456f303a2c1f9007647e11a921d9fea3f7b926143b99d2fa0be", "0x016fb9337708ca638cdfda91bd0daea6b97224ef7b2062672addd1bd18bb8900", "0x2c392fbe7d3fde42fca4f9478bb439331258255356f184af6f76f119054117d7", "0x187a2a3bf79a69fa3e5089ef9f1fd56fdb47c55eece77aa228aa3de1b486bcb1", "0x0271a863a280a32641ffa33510b2edd278c98630359532f3e506b275fd5d20ce", "0x1557459c9c74c94aa00e5af69a1e3112fb69537ce897ec0c718958d96516f2ab", "0x2a8e26ca8d647d9a6388516ea9dcff89083d539e58168c2a50c6dae30f109f21", "0x21cb752194cf43f3b51942eb0040eba9de2bcfb1c2a3fae97924b710f26832cd", "0x2c26daf996be247acd6dd4acad60d38b5a471e6322188d02c137e7cb484377ec", "0x0240176ee0e7982eebe92a68d3e3a38c26821acc0f5d058cf8c137bca2d26f1b", "0x2636e0973c865c1bd974dd78daaa8d0a84cdaf6be1ad47ecf2a0d18f117318f2", "0x19e84f4f25a799496041661dc5d975b681f6e06744cee89b7be5d9fde1744ac0", "0x0ebf89064a3af247ca1f36f6f3570188e271e0b326c4fb26664e89e1454ca110", "0x25c7e97b475be00e8b559a38c452364f4c9c531fecb8ac698f7fd73ce22e71ec", "0x0444c99e592353e5aecaa302add901c14d8c55270a160afed4429ef5598ad74f", "0x138db8887830565f2693d0e0f02e4e79e144967f0ba53b03519aba764b5c994a", "0x24d40f462114fe9ee02aafcf74b4fca24e1ae365dc75c3b52bb13cbbb2f21edd", "0x21e65d6d8ee43760bca40e730b5df4c4cf3a8a732db148f4b2951b4c61d68e8c", "0x248dd79669ec09dbf0350a15d6c75c6a9bdaacefca14d51300978f13d1ab6d1c", "0x2b8238c1548f9cbe29fd35cf91e7b48f0ebda7e639edf69fe8d5aba7924d5362", "0x2439fd239257f38181c7be3cf513f1bf7235eba94f6b8942a94cbddecf6f62f7", "0x200958235281a61ba2c4be0aa3282a18c74b6d262f5de7c2e33d2bb3e893dfec", "0x0e1eca5df88ee5f60cfa7e1fe5befbb719fad8211fa9b2d02fcc233190c17f12", "0x26b53427f9b3ea2c769d9c660fc60881a169c12732d001b7158ee4b1b842ca24", "0x20f3b3f4acafe9f8af3e06661b3a8f778fa2812522b9d70a67402cff8db2b1b4", "0x211e5d2b39d62520a7a627ece8cacbac9f97506def4ec286928ba6c27d463b17", "0x0bb743ee34802129c556731aed9d302dcd085313ce572f6242d13832e536b4b4", "0x23cb2661b488ee71e4c753ff23ae4bd25d8a44094f66b6532977e22140eba5cb", "0x03a35aa3123911cdb4535baed3359f5f6a5205b9c93ef31d35323a47807b8bc9", "0x27803848a0aed96a93fa943b6635e450217e137f4ade74a62d7917322714b697", "0x0cb37839c2c9a7ff79884cbec75f41e9be5e47c76d61538231bd8162996d6f67", "0x1f0026d0bf1f8e1dd5423cc2fec1fb5cdaa1ecdc4c3cb218dbceef77c00d2f93", "0x02a7d7bb970b8a6ed2ee66fabbba956b6da3b100f5b5fb928eef42f9708273c9", "0x0cfd7f4215e434c8da17ec3258b0bc605ad1ab2e90aa494351e4ee40bbc491fa", "0x180b11b720622a156849dc6f7f6e7f571659be69682230c5ed9ac339700a7cde", "0x04e96a965bce3d3a0a24a4a457c951582c871349ce7eee1aabfe578a94c65011", "0x15931f782b45f7fb656f2cdbd1f7705c353a23fe1d30a5a46a1522ed160df3ad", "0x2e296e57c97a5309acd26febf55ac963a5444c1c5f703ad88a0d7b97b9dd38b1", "0x26157bceb78e846bbb262f9a1e06d4271bde5a5bce8f0419952f97ffd13eaca8", "0x2194eb89847d6b0f1897f675f19c0c56b61b13248eff3ca36e34fb9d1c79ee43", "0x2350bf35477656899151ad7dde96ea7857e15501447008dab6b3d27c8ffa274f", "0x1a486f0ae591cacdaf09c58a49c4d1795405435340819e003f0469d110b7752b", "0x1b56dcf76fb23cc4a834d455a4065e133571402b7df309d59bc3105d42a8c301", "0x1a749d7964af0b7202913ef204c653f2b4bfb65ceab7b685233ab59ce3bb6925", "0x18ae590073f969696af762ffa4e8f0ebbf97f8cc787e37cddd1f321be3beadbb", "0x21c47b275d82dde6460d5e769a99421144b1c5a9da59294ade9cbb317103f249", "0x0473ddbd52e737e527364e8eb63207975c38d5fd6cc32b272102b082cd1518fb", "0x0b12fac95b6d3a881d892657c8424e645ac4e6b00515f902d594574302b26e02", "0x08ae7616a260cf6657f8f73ac284588d2c5f07ff425d837aa7cdcef63e3e2103", "0x039daf6876280b80e873bf2a32fd2834a83c69757badd58a888ef819e926ce28", "0x25e7b1d7470a3c75f13f0b56546c8e09f2d8efeff06ef766f9c783ca869d130d", "0x1e8fd3634c3ff764184d03435f98584b11b5b15aeb9c75262da3f1ea2c2a9e7a", "0x241dcc51ac37808a415dd1e3c281f05aff11789dc0cafdd77a35484e0993f9a4", "0x1ffc3153c56ef9755932cea2be0573749bdafe1c4fa0781a4b8b4078ce9d7547", "0x17630d62d9a3e510c88a4d43c360f92bc0fa00b66031adec29bd9543fd3a17ee", "0x2980400edd1d74e3d69db5458d2ccd5fabdb236ec16a82a4301a0ab59ea4a6e9", "0x3034fb24366123ec6dcafcad35726dbfb16194c036dcd648fa69439bfcd00cd4", "0x1aa7e8f4189ca9dff3db2ab7648be0a2392995ce46041e04680dca8ad7232df0", "0x1fa195f834a69e62372f60eb497da167646eae14153d803b39dc5d11f5d7800b", "0x0f23f1c74d5fbf6195ad5a6aee5e56993c5477e8453f5b93a0d7bafd333036d3", "0x016556fac9348a735ab50aa089c97151b3caaf0a20a34fb9d9370505a1515729", "0x23d92b793648110fc5aeef0633f0c77cacb0dbbca1879b8a6f6e5df445e5f70b", "0x2e4c10ec5e65e2f239bbc43c13031df2686ab40fd79a304b05d611b823f23b73", "0x12418bbfd77b63ad5e16864ad9c32ffbfc5a3dd9b78ec2b79329fe5e0a8d2953", "0x1e4a8aace15abc1d5b76a9e848431d2c06a78f72b6bebb1293e6c58e5185696d", "0x0f3e96107decdbd6872c20ea09acf92cdf17a3ee1d1331488092d96176deb755", "0x012c3780207f395cc21deb0abd951681eea32498ddba6ce897a8f9f0c2357067", "0x13eab1b4e672ba1b1c1bb901769301f1e5659d03ea10c61de2477ff0ac221421", "0x20dc664abb20b7456c06629ce37a1ecb1a27a4e8b24e31b48b9c4635aa30323e", "0x2c6b1e2cfea78e2c36785e76a8cfb1b057e9471f24f5b391175c3decb01e000f", "0x188c926255f5b7af3da96355729c2a8670ab4c2c70400481b2ac903740e0c5ab", "0x2f9913208e09e3d6e9e6fba6384fd076ab89f2662976e3e30e0870bb30eb54f2", "0x2b33803d90889706e714f720b5628d26fb60b545a1f3e9ce49a6ae912b024086", "0x26ccabc10eb04327cb5cc3dde2abb36f097086c97e738c133c9f57077e748b09", "0x1b16ae0d7c54408cb75fd931f246751f2b0c3dc20d79e82a2531b76c22b4d5df", "0x11d0bb461bd8af2844f49f0f840c94ef9518b2511344742d1f5438fe3d415ae4", "0x233031847b476bead0118d3db338e89133ec420d673e504ad647259df655571e", "0x1f84e97895bee438eb3c92dc9b1846c9ad29c164387b06aeb6ed1841ed8c4dca", "0x277f7f9b542f0c2bb5f45bed054f09624536010c3cf9452d2273193327f801d6", "0x1efc9c9069e5068baac13d2e6645641b7d27e80fc23077161535c44682ee57a9", "0x0d6ec477761e2efbac4f14b3bf3d5257a99e64c3f25fe104faf988b20fe5ff44", "0x0e0e7d7c5501999b7d16173b59b7cae1f203bef21aebf00251881439ccf93013", "0x217bef2f4f12c6dcc91c2058a23391cb77de53ca6e44dcdc6ea3d36fea326ea6", "0x05780c88adf01531b50f817e3fe44447d29b35aa8a389c71e8cf1226acef68ba", "0x18733887a6b2b3b4c90d8e4990196e23445e47d7ea5939ebfb89a3ee3d67b4bd", "0x20bace63acfcae0b1c9f2bee24b8e9da85ba597d37b0905720c4f15db231b07a", "0x166ea595375a6786ac527ee9eced73ed6bf550876abcaf3ac92b42c808b00d8f", "0x304262a9eff4040acf43e322d6f52676ae2f853ec2e7a80db00c488cf917c74e", "0x226bac7050166e5f6db78cd0b12d36f305b6e8c9a055114ad7709e6f57245b6b", "0x26b2f539c573829f6aca91baa954505bc5c3eb4e1df1d638582717fbdf2388cc", "0x06a0fbf4cd52e93ba5e4c6c4af65db02ee96297f8ad200f2f1cff252e769b551", "0x2cb9c24112d35341aceac88360fb528924e58b6ecac321b9fb29e6aa3368ff23", "0x20e88a4d607526dd07fe08a3552a44669129eb87fcc0b13aac8fe8afd9301521", "0x1544649a2bd73e3ba72f396df91dd65401dd8faf51de325fbaedb9d536ad94fc", "0x1980077457995712c44da7e17713258e3f8eb354bfd80ed9eaf3ecbaf6960105", "0x25d1d22ff13e7705d3c085f97fc4e4f6914b82ffaa5d2091ec64dac423765ef7", "0x2fec990ef556efe1035a464ff5581e74067445cd54abcaf6b8c0399fe0d24cfc", "0x1bd9563506d9544ef3e4830e13545012c579379c2dcc1330416c4ae49bc4ec61", "0x00affcd17ba6003c56dfa85571fc29737b225a80d480e7dd7edec01f14f23010", "0x23670dbaef966881f07f919a2d883128c7b23cf767a477b2b2e0762bc0dbc18b", "0x1f93a532917394c7e22fd17abeea6389c66fd7ae2dd9f02f860f6d96947f0edd", "0x2de42e9f537b7d61b0213771c0e74f555512be07b6a50934734e2c5beb40be37", "0x25c557f45b99781cd37d3bb22931662a67f78b37782c885b456bb96d55e88404", "0x2074c8b709705c9888538a7f8a3c4aff647731bd16f8e254fa74ea9f2be7662c", "0x2738355956298138949e442171d6a4e4b74ef2065740db7cfc3a0b60fd573acb", "0x13d36ad0a4ebeb81969778649659c65cb7d0c41cc519871fdb71a9ea6a0caa56", "0x08a2c18ba41381348c1acfbf9617716806b462a1691bc2e343b79b8085e376b0", "0x059092fc395aed285807bbf557ad9a1041f59c079822b1088457882fee7b612c", "0x161924151b5a5ad2d8cac119522a991a906f15e8531dc70567f6b28371cc24e3", "0x1c68ca8f7aa17659075405ef6341b8e69a298b9a4d72f3bb854b309e4ba87a1b", "0x27f5d03bca1c8207f7239a4b2cf73ae559a15aa37e7bdddf3aab05eec5ce5592", "0x0ecbff4846962a975d347ea9a8fc465fb46861557622f2c2564a7e639833c169", "0x277c4de2363d8b5b456cfc5a7ff8e46ff2ec8daa59855f5ad64bc0521f3ac567", "0x1b11862c52acd351b7a464793f4fbb57fec99f832b63226f95d175c8d2fc08b2", "0x06a719c584c74ffbdd7218eb565cb4c8bd86c92e3dfb3c73e1527201aa51234e", "0x230e4adeecb799877f7ce9a58c836b99d533584a195c1d77a313abe1c7d126bd", "0x10b109b864809c4767a133cce6cbad6c88628173b8ea51e8cca85830ca7de522", "0x0e21117970dcfbd4b1526b253636f377538d3b4faaeb5a8b24bf6200d14cc591", "0x2667349978401362f6b17939eeb0e64ff55607ebdb35c7071db46bb3e7ba4778", "0x05000fa5fda505e029a13bfe304c267b0d86c72c039babf6d3ff02ee246be02e", "0x264d9e094aed5f41a60242220a34a284089087b2436a9bfce8174cc9be8c2e20", "0x08076f9c4743de6130ff622cf401edd2c92f24bfe114f3c5e724891746315c47", "0x132370abddbb0b1dd57f2a520c25336bd7cede94b95bbf5c2151d6d88e641b64", "0x08ff1116b7a227bfdfd4465a67890882b615c8c4c17f28d8d24958edf602ddcb", "0x2bcb0b0db8b9e3e02b7e9c1c9460fdd9c6cd98562332e648d8a3e0ab94597520", "0x12ea68ce6881becad7f8a6b117b03ab976f7abd597f903b0bf230d20d21a943a", "0x27439c98a76688067a097b19b6fdd7d78d5f88e274e0d8fea5ea6b7406fdda7f", "0x02f40d0ad05f5652e31ef9440ad71ebc8419e393493937f05f00499d02a99e36", "0x2fbf04284327ee4f680f06bd390e309d0d13acc74b9c5b14b63059b8cc7abff5", "0x1be686d53e2a8ad57a828b0651425cfc6978c7027edbf247f6b6723c21df86e7", "0x2683b425e85a508f96852f14b4220fcfe9f7ad8b17bfefc0e348c47ca78bb57f", "0x16dace9b2e8012e31db1c7ebe672d86bbe61a1aa3e1693e0eddfc0de0a9dd951", "0x27a321f8c7d3c9022e962f7fef2e3c848b4539dbb75aa139f30430fe545bcedb", "0x06ccd7210dee1d6b0e22b79e12d19082d8078b788d71007b95e7a774ed86a651", "0x0a41dd42221653752bef350f6d74a917b6cbb1fd76a3a12166f4d0be978e4026", "0x220a02881e4d47ac94d950cdf8386274d1782e27cbd0d845978deec91298f165", "0x0e2155a545fe5f3cbb6397606589eac19cd92639339c6b017298a4ad3408b4b9", "0x0f0f19c6291e51546a267c60cc774e5fb9d088bac530782d891ec1af4b847073", "0x0e925bcd1c6ddb4a3a1c67ec8deefbd40c53c0d33e7aeef1b46795aed5943c9d", "0x2ad000b1748abb812cd6e5411286b9ff3ef0a5bd3d259a36e45ef05b9eb5beeb", "0x0a65aa232d32ed6e8de63d1cdffebc2f3fa616465c27aaf97e8cd3dcff648652", "0x0263d8470ab4b1c61d74d8e896242f4f261dcb167a3a06923893d7cb2c93d6a1", "0x2901d946addc94b040fd58004d9a5f8cd1926540c7a8612cec1c58cb60c2b3a5", "0x1889cfa8209f4952df9022db9dc583b5717a0696da41cee64937d0cd6321e693", "0x236064d71cb6c64c84747ac25fcf8d881502e5f03bff87561b85a116b1f39aca", "0x2ff7a174ffcec29862e04f5dbdc73ebf3661570033576290c0c1f6cd8ced27ae", "0x19e724a1d742cab103455f0040edf745a2696a71084c93e322715450dd4d6f5b", "0x03eed3892b6f0e6c5da1059c5f3793985835aa283500a8129904a94c87f161bf", "0x08e2b8273bfa30c1ac850306d91e468a9e8d05092aee4cbc80c687248463ba30", "0x07adcca76d8337728839a1b6ac3b3ed42afb87d72af98f52f416f2ec58b28cec", "0x171ef37896bae2b1020a0a5839bd51784ce11bb4237d548c171169d32fa19b40", "0x20ffdfcb86f4d005064edbc296918c332d32fbeff1729de5056a26abbc3a35fa", "0x08ecd7a6f1735eed86baa094e608f488f38dbb398fcfed4b994383a0ca8e4647", "0x1c3f5d86e5921fde9890189f1d8c618754288600e6928bc182ac4d5e4c9f0ccb", "0x29c61184ed9d460f337558a1af639aa7e3c0975e4014ed8ebcad4a25d51eabf3", "0x0defd45b28958728228adbb2dbdaef6a5e9b1a64902a734f402b8cefb8ab3b56", "0x0a74ea22d8a09336060610179ac1d82fffa9492df76deed4ea60e0133b0811a8", "0x03a37bf12daf1400d297ac4ac13ba24c17dc262db16c8523deee4e0ccde9a680", "0x11fe1790d5abbf5935ff22318e4f7ffe69966ada2f9136b54f830eacb0a65368", "0x018165842f406375f2346686915afb14bf1fe0564c8858ee3bde0aba3de5f68f", "0x261db25e7cff5a9fb72f276b1f9260b667300fb7d361b50fd5c0e8b6995b05f9", "0x2a3ac3314b2b66e796fbe36df778c5e46972320cc43ec807048826b6704ba7c4", "0x23caa4b80ecfa99e9d3fea2bbc1dbbf369d1bfc8937d03d074061c30fd8cd76b", "0x27db260085e224898df145f23f635f2066d8e4e124e581e8c6261929b1dfe107", "0x274f6c5fd34a784d6b915ef05d424ee6c0babbf369e79ab138b8167b5618ec7f", "0x2c3a29e13a84d26a0911c9289daf1aa4cf5840aada0701d57e23dfc796da6da1", "0x1ea210f2001a334d3e801f4e53270d42da7aaf317a553b4282aa78eaa2282e6d", "0x254dbeb52884b699c1ba7fa0d6e80d610903b18a3e509c36351ccc3b024946e3", "0x059e781d65896ebe0e4ba26dc2f29907f47bcdeda4a2ca2c713d8505ea31fd5d", "0x0b5b1cec63d42d5e615dc269b885a24cef303ec78c972dd17cdbb3e915cc4ffb", "0x2a7c015e9c3b2c57ca8b7d26d39a1bcc85d6ffacb7d9fbd66d2a8f1d64ed0c92", "0x29b736b911d71a79cf63d8a6f786f11bd5abee24161dc567a7c851eae1e43b51", "0x285745a90a7fe3d09af5a808704bc69c6f1701e573912df5cc1e265d596c4141", "0x2d901b8195c3c96c8c36eb99fec0134ec2b8304ae810bd30da554e3080826715", "0x1905d3518355eaba7859b591ed7b8c9c253980f0450dbdf54d7a7782ba058392", "0x23e813026fc0b80064d19b5c5428942fdf7efea80bfa8ec4095272bfdb7b4c9f", "0x23c0a19a252c87e6b1c1c21b1a79800200c3fbff3e3300e7e5568071de9efb81", "0x11c4ae607bae492413bf62cdaa2c2868ed1fec6dc0631b067ca60fab125b9e2a", "0x2cd055ebb7ee4686365dea450f046ff62405fae1b1afc9fb01707cf81da0e3b9", "0x053c9fef2e021fa9a20fada22fdea1505b58a3159bbb47337dbf791b215b1452", "0x0a35bd74e87cbabaabe89ad1319d2c9e863b4c631c21938c9a5395bf97872a9f", "0x1c115056539ce20cd5a04d1a5c43e2b00fbe83b25901be36f5ddc4666fc383fe", "0x242954047e5772fd3bded590ec8beb4c542f2e264c8c3e284cdc473505c51a90", "0x0e2abd315b47c0dc93849c0cdf267e811cbdbdb200a6e7c2b67edf7cb0174214", "0x282b37020c0890d751c3fd76950d8068668e1dfeae621dd552d2de887da2ea75", "0x28933852266b52d9ea6b5bb923d9d94f2e5a5be5c778e75e07942c234b643bd9", "0x099ab6765505ba1198ef140e77b7954d4fbe79a056ce72bace39c048c00da3cf", "0x2af211d8e0ac2d8fda7f849b8f229a225c6186b55762c7a7b2ae2d1dd85c57cb", "0x0cd070f234014a2809ab90c71c1da61e98a96322fedd99b6aaae1ca104f3facf", "0x26793e2abc8d3c30c60626fbaa158f263587d6bd15833d448b116264b930256a", "0x225be36ed0ee85e1f845ada84e5748a56699152113ff61b5056b6d8bde60c19d", "0x02174f49edb02d5154d2beca2dc92b9cc595383da1fde8f09e4b5ee3ea5a065e", "0x0f64891c2c8b020e46c3594cb758f0bddcdbd09bd0308816fb41734a869872c3", "0x192a84ca2f99d36991e2d2b1deff3989d1c156c239e10e9f56140e1854576067", "0x29dfcd7b63f05abf2753a8c341d6b7a60c6243b04c9a1b8b3320bba04a4d4787", "0x1ee27ad6b9b5a867733afc61a2b3e76a52ba3e4bd5e657ade91fc038819dba5b", "0x0ab4773f150c3f8ad3bc9538f43cec395a7e3731ae973fefeb623a09217e64c7", "0x13c352a02f595186202cb0b99fa58c5542ab67f9b6d3a0afd103deeff6d80f41", "0x2a97cf2c10c4bfbfd299f67c52a169f92c05b7dac56a41c4dd4fe87c8246ce14", "0x00becbb47042bd7f8c9f6bb422162d1aed089a28482f7fd16ab06a13285fe702", "0x008e44da21d738691b881757ef37ed29c5bd9f7a4450fcf53290a92cc2ca2176", "0x2b205a8b6d4b7063d931f3bb5d3464053843fe7fbe4b83c17883f86527882a18", "0x2d9e32a7c90556fe108d255ac01e75df338fcd63b2bf84c19280d427298863fc", "0x29a322a84c25bd2ddf6e2e4200228d95abd6349a02266ac1dbba520738ceca97", "0x0678c9bfc6f2df012f4fe55e33bb68ac14ced1df0d02152792089d046d828c43", "0x0faff3a5e7425794fe20a7e0eb615b8b1760394b7f2304286a3ae4009124db23", "0x1f8f5b611af9feb9cea86c084058120553e404103aee213f5a41d1d02541c0d3", "0x160875d8479602f96f40acc2d042ee52c1588b6a29de4284965a6dc6c930ea07", "0x16d87a5183a316a1d70afc951efe2cd667c77328fcfda458cbf5fe3045f46d9e"], + ["0x2197703fceb4cbf07c6dbf46c4ad93e7d14e554db66d09102ff84824743fe4e7", "0x1322f0fffc7e4854bd8b5fc23e7106b51f59bd5061d8b565aca2fd3efe512f79", "0x19e414f80380aa2d222133118c337d82a8c5894c2f88861ee46f448fa9d61359", "0x22241199a4df9cb7d65249d9562cad6c65f16460e79a7939cbfdd6d7b9209d9a", "0x0301061735384dfcecf9a311c22ade327b51c78b211615f41c77f6d85e8a41b6", "0x229e1d86c1f2810f4a2633b7b4b5bb61b7dc5d19ac95fd8d379548ff2b6850ee", "0x0e31dcf9c53209a817eeb292e989727c3f56bff65883afe5fdc28ac3dfbea675", "0x222c7318ebe96306c9d79ac11237263c6b8eb25272eb88407e8c29a358b40f2a", "0x0cb416b42c53a829cf4fc823be8f4fedd12593394cd529053ff4e3604974a2c6", "0x0892729d09594a8d8b1adfbf2e2ed75399dee612842b6db3d2d2c2aaddb6c0aa", "0x18e39e9ae45f14ba97a15bd672711ae124375d9f482a4487a0e334dee2d27c71", "0x2560c9ff672e6ea69dbb33844d0d22870461d18eaf0f8992d4d7ac649edd6610", "0x21bee2b8ed54b726ef17f77366b1dcfbda7ccf1e487f9916e5f963e814c57312", "0x300e1b28dabebdc0d4bdbc19be29a3dee4eda8425dd0c7c6e82fec147cb070ba", "0x2c44a5ff45deea69dd2961d67011af4982b9405f9fe38de4a732d2aeae88cc23", "0x0c8d59fe1b7f55095e6aaad9e3b4e7b1c93d876ba3234dd1ac5ec64108291bfd", "0x06cf82bc5fd115d348a30b0c45378d90cca1660446ba049759fa53103fcd78b5", "0x2f80ed01a2118d02e2145111c3fe6ca70efdf95d8abeaee8829293347dc9061c", "0x0bdfe7f6803e4dee7b026e079075908cb8414e3d651dd12fda67df08dded9e42", "0x06cc48ed882405595b34d39138f50bb5b31a963a0dba66aef17c19ad622e29b1", "0x2a67f3ba6d15949932ac5622cf9e2b493801bf16a50336a4518258bcc6867c95", "0x2572725a67c60718df656934aa78fbeb80c8f395aeb6a20cd833c4b14fef412a", "0x03bb7f6ca43545b11f19721265b416166579cb753330b1879b79685d1df0bfa7", "0x2412815e863f8f3bc28bfcbb957faa5f393300b25133e9221b8eb3156ed5c12b", "0x0dbf64d58df212e4307871966de097a5db09a93e5bc305cebdcd0630f433af45", "0x274c06c01158e047ff4a791e25b7bb3db190529df8f50b6386273f810f15c6ab", "0x23cf40693f52abf0ed3d842f7bc85d1a2111d0abecfc18acd0fe3991ee5fd33d", "0x1daaa926528f3368f4e4cf924166b8bd3ff8daefbcf900e6dcc4ee63c4099698", "0x10103789dc9471ad718657bebb6781e39bd92fd20ee1a32d0de3ea2817a01555", "0x0009bc25065080e6c6e9932e34bfde78d1085f19e9ffc8965a4660a4d9b6d607", "0x1312c727cb5489bb174e1dcb82588edfab31a2999b377dabece466e9dcd6afee", "0x20294a462c7d0c25aeb5374618e5e77316682ae3d726824f15f00f7cb9a7009f", "0x25e0c6be89bbb04bd8391c90cf35588f0e9d73fdb06259f47a05513ad7a23e91", "0x0084a0b87e0b336c9a911069f89d875a38be313efc420d28b9ec287f28810fd3", "0x28a03ee29f612aab268f76241d54d477a1d97f5807ba2e1812f4d350d7c6f7da", "0x0b6794182b723a12e0b35f76bd55a7d106ee6a4035527c4d329a6f33068d7eda", "0x015b9a698465428fc686b79db4959c8495b92b85122f6a6932940836facea86d", "0x1bfe52289f811f5c3619f14866138ae9a1279bb76e8cec9a8936fdc36f59df7b", "0x1cd574fe8d5e4c428b92b23a9717342176e1d309a7e259052c31bdc9af091fa3", "0x212d1bbdfaaf0200735bc5851a156adcbfa4f607f5da122e1f63afaecd38cab7", "0x0b0479e28820e883d903a951f95b13093788e9e1ca64ddf2abb94b13fee9edbc", "0x0110f5257c21c9379d73b76e9ca95c513c77a15cc8ee0ef726d8460d4fbbdaaa", "0x08c52e9401a9764f0c2487dfed34e215c186b6c2838e38eb5a50cca4f0bc6994", "0x2e422b4323cb4c0af46f4b0e5052f75744c538abccc7643f339440dc3aaeeca3", "0x2e12482ba160472d45549ff79cd04aebc4a327c4bb9d78c2573b835b05c55fe6", "0x124fa5f9c5a96d6cce92cfc73ea2446202f09100eed203ae4267aa637a032d36", "0x0bf651f82f83ca1fa037a941d4e2a4b3e08f5e1603f933a1723adf4135796de7", "0x21c674ea7b834741cbad39b21b242ab9a5554c6c9f92e801cb1fe4382b619463", "0x214f91d6c4aef57e83186b57fd9fa48a193e1caf16d7f6dc1559d144a271b341", "0x203e2218389729c26c6f66213f2269c262785ec68c759599c2d8e3f68035055b", "0x1aa934198713ce17658f51293fad44b1c22fc80391405ce76c92b2349b7eb3a2", "0x1014d4e5ddd9c17b3c2b29684476afdbaf7fc56e8b799616a67bbc6678e45351", "0x033c13ed45b4762a47e1d2d45d7fc8fbf9d4e24546e20dc596911fb991710358", "0x09bc1c3274c569e7e5c5d77c51fe69b23b7e435138f4f3217016a2d70ce71d5e", "0x1803171c9dbc0610e38d8308db101d6a99ca90137f6ab8cdab2a91b36b63322a", "0x0ba6071aa98afec3fbdeb46a88e4a5d17bd4454c0e7da8c74b15b084488cfdcf", "0x179e90ab4b08a4ead281a8709057487e077b710879911f215fbd6e8ebf838e97", "0x1cbca88b8ab3f0588ff87deea978d00008adbad808e6510897238ea007f491a4", "0x2f50b20b33692bb0f62777de5e3198377d7923ef2fa8ede08831e10f7e9b9f5a", "0x15ba030e8f1ef6f260566fd6fcfffcd21a1cfc1232f7ec7148ff076d1ba68707", "0x0dbe053da01aa4b7c0fad83a3cc966f0b8281bb4940f97a5516cfb9dcd543a6f", "0x222eca5d754afeca8997f31d6fcb94a5d799afb795e68d4d8b0ce6d839f6dd7e", "0x2abffa43d756ef242db7f584bd62405991112618362f1b29a33ee2131b46a446", "0x03c92524ebe67300d0dd0aac464f0e6ecf962d6ad41bf2685f077bfd788eb3fd", "0x282241758ade4ef8ff3858305288d3b4a52209295d1a4bc89d885b2f5dc3341a", "0x02635cb973d71bb3d2137bd81680dd3bc607fc5487e898c4c2d83c1dc2817687", "0x13c866aa66e8d506079dc24c2df7b1e691994887d35622f4cfcf014bbea223e9", "0x151f0007ccf42a7ef969f1b6f6315992e6594bb5344d2839fee6620b60e2c023", "0x1c1c6a5ebccee8caa4dc7ef18e194274f6e198d2b140ddcc97cb15c92ba1409c", "0x18330c9e67d62f7861a996d7ed69bba904b0dd459f2b254fc7cc53dd28e45a65", "0x26b747740c95bf139cb11bdf02fa63a4bdb29a90f158933a1822cdde5387290d", "0x1475676fb205084246ef9bc7234f312c214f426852dcb2ec7dc3772f579af8b1", "0x1b03ad9080d29b70aaf30bbc3200efffe73ee269dc032d2e32bd190767bc380d", "0x21c175f937c2f82e99735bc7c201284f89577b27a1f84fa24642eceb552f4455", "0x1192e0269a6b66a8c5887527aa4474c2de91cf8c71ebda835df2cdccdd4a4e4b", "0x0f3a12c0ee52f0d34f2b4a0dcd13541b48aeb3d5121d311113bba9792a45a58d", "0x07fb521883bdf78b33689205b45e52269458a061bcb87eeb3b1e183c6d7eb5b7", "0x248d0e8051c1a965640c96c6f010c4931fe648b96f95ef6f5b8e474f64cf3169", "0x2ab553db9ead2c82ce91febe180529eff3521875f7e90a9b8b7a3c4de4877cd6", "0x211ee3bda3c95f1954eef22a0a82c2ede8444e42a72a8200bab6a133846d5b5c", "0x111db3b5184ff7412f79c129904a9cac4ee65a51c2062d66732f54bcdf767be4", "0x1a73843264cf9a3a1bb6fb68ef76037c4fa98337e5c10096c630b449ec4a5f67", "0x1c2e5a2d9332f65128c85358662d6a7c44353add09c27cd07da02f9144da855e", "0x0e2b35fe1021b879de5b67a7458fa6188bbdea39e2bf468a1a24e3625cafff98", "0x2e568594e5dfbfadf272b8d6e8c99bd785c4fa94ce9e87fa8a9a37e32c7a28de", "0x07043c7571cb7dc5205bfda42d693527a4bcb58238ed6a6a248e7917ddaf0c3a", "0x239e18a0c85b845ffd6b85e96343f1a8378f3c691dadfb228da6ff7aa79efe1f", "0x25e247af250c564c00f5ff1cf1f2bc8606600f173cb65ef0780af9f5a1b676c8", "0x031ba3385664544e3e0801f1698b15033a6049b2504e9cdc2c6e3eb2fd12100d", "0x2a33777739e2ab0adfb1ca5687db1e059b20370cbeeccad32da5c3609431ff65", "0x2bfd6f0e9e996ba13749327b9c5cec69903d413b2df29b777d05384b3e7af952", "0x2d453d93fb36fbf8e36747ee92d90cad9e02e692d0748c07fd43eafc2cc5e823", "0x187bd8043f8642cda2b6bad82958d115818880eb80f6b730381d974ac5d5037e", "0x21aca605f92a48ac35708fe5140729fb35c3e48ccec441217713b08649443930", "0x173fd164f5224ac06c2e99f3e2eaa6379df113de30aa485e8bbcc7f0fd2d1e03", "0x071c66a6463c3fd4292bf1e5acb6de611142d73cd1db590e89b61b57d44d69bd", "0x044a40e396855be550d8ccce7b82ee2caaef6675bebe92266c666982ff72bbf8", "0x1176d9f52e12df67f087110a15aaf98d1ded293ffdf99599fedef2e51569e4f6", "0x06e8eb7dd026d257b15c6624bee2f37d5b67b4a671cfcdfee5797e8457b63916", "0x0696aa48c1d5fe84ca5cf59009ab0baaefbb612e32c91d5ef306def38dc5673a", "0x0853c33a9c7a7c3b355c92c75de444365db82d241eef9f3fac417004a3a1accc", "0x3016c0ba34678e0a67f59cf96ce16e908154f5f9802591717e66e95ba25ab77f", "0x0af008601dc9552517f303ff9e22c793a682caa93256f2f09a4f746542603b0e", "0x04cb6d76b5a27a5aae387cb647790318c25fc16f8d7d1855a38765f847f731b0", "0x2ecf70c372d8e5edcad49e58d47875f26933d62614f266e6b4f586177148565f", "0x01f393a6ee74dd6c4d52b0e7820a7132f8c4889742313c06caa6ecc55f3dd413", "0x2e4d4ce3f97bf96ff86b88e969d13e415e14721282769f7cf8c3a73723f094db", "0x306000ef24a7f5a9c652e3a9367578554ea59bf8efa0bd8bc5776460c18c1add", "0x26e58d6287678f3db9c225c1d3b93ae7c43a69024ebf249c8bde40617c2b3d49", "0x09eee09f873d1bf683971df4d7ce56c8f0b8b98ddc05b9612c0a0d317310655a", "0x0f08879dfd4fa0dc11ded556ef01c6f94cc6f4d18553b08bcb1dd604392ec00c", "0x11459f7e9f0e3c727777e34d6d93ec28a25bd867171523bad5be0d5a20029eb7", "0x04e9cbb6f6e8e805a20fbd801a53b723f78c1f5acd227880f7f37f4e5b0528ad", "0x2d2ff32eb7a0c0266dd46bd5939c9a9aae88b3e9af5dad01a7304f9868f7c7c6", "0x23b77eb0f27e950200a590447d645a723d9b405fa2538a5cb76fc5fdae16d839", "0x2cd6d2c5658ec0792daee2067e2f958d6849886318a6c1c27233a469e9998c2f", "0x0ae1daa420bac90780d0c83026bfcc84af83953e26eca839da76861e739855e7", "0x2b495b854553d02a75b68763bda6dd8ef0e81fe32b5cb072d3f580a914967bf0", "0x056fa5d7ce2c32bc5735351d2d48af5d6c9256a4b72e12a35640b53ea959e296", "0x2ecbe1a06b28ec78ea7d22df11cd224a0e1a0ac7a3476c5cc3c4e50da961a87b", "0x143053c1c387f9353bd677e5db6e9975792bffeecf02d6aa0fe8f627579fe6cf", "0x04064b25584499a011ea74ac047a8b37494189bc63342bb1182e234212d42bdb", "0x100f61f6b81542156760a6d29af5dd8644c82deab5b90e6ac66de8b4a069564a", "0x18d331b2e8180b7aa7055c029fa77aff4f02b0e2a2078bff67688ed65b51d6dd", "0x0fcf9b89e19b1a55f9b03255cf80ccb9fb6aafde2b46207d873fac80ccef085c", "0x254f801f3c89c62436ef63df67d912c1f231bb1f76c6c7b497f7708dbcfdc17b", "0x16d8e85e57819a10a61461bcd8d3d3c963c4f95afba3e4d8fd0d6ec882b9d161", "0x29c9565aa702088bd443e4620d84bb2bfb93253a8f0f04e5cf408c92820ada84", "0x294fb68064643d8beb237bd705a557871b5f1408624eda46d47b583a60d29cf9", "0x2c26f3083140c104baf24c3df922317584aa11770451e6a846de7dc795197313", "0x231811279854707dbaa537cb27241e7021a949a1d9671380a7d6944c838904cb", "0x1419365adbb91f1f7d1bb0aa8a4b5d11c7ad0570cc6cf3638be9c5a2a275b495", "0x1674425f2e9fcaa66eb001feca48ddd4b2a29e86d451f00d176ea35b4e02fb84", "0x291f956def59b878028000cef03d7b54dcc2fe1dd5a75dc180d6d5bed898cd30", "0x2f1302894fe6a26b5bc03fbaa69c4d95012394d78de494549c7057b7ef965bcc", "0x0627d6d6d94d0a19a17db45c0796f7db8de13d278a2b24c99ac5d92d0a1a1ce2", "0x2ee297662bafebcb01df8e62bd5f50f03025515b10465d59f3a294f0bfbb2fc5", "0x118029945df773f52fef5429da766b902eeae7d967062fdd879c60a1bfaba75b", "0x306042d262f6268ba789eb4323c2169279752ffec6b8536cc68b53bd4df0e858", "0x0472a13ac7da9ebe1132e05f9ef609135c82a0ebd9278def2b34f8ce709aee4a", "0x2e8f76b27b474180f00c5a6c2d65850bbf96019bf0d76dbb4743a970f42a130f", "0x1e33984165f47c204a33fee31f613544b7d846a7d5ea45280ede4b362c32aaa4", "0x17f22e27252bdcf91a72b59eb276a666ce4fea7adfbacb2ea9fdf28524b7b43d", "0x00547e7c70ee4e3fb4a4d386c8baa55d823a0f02bc963b43039b8847cff6e6c9", "0x08ea4ccbf815be325ccd15494f38f3f97153ab09c54a87a852b2a99480724e25", "0x277cb45f3e632718673ba05d48c712fe7404df9eff5401cebe45d194c67fa8db", "0x0159ec7ea49aadb3a8b0a23c1dba0023807b0d099d3c40b69df866a92dc87b37", "0x0c33489297e244956de579c5c112ab40c7fb2d89866a28418f660a86ee18524e", "0x01bb4fcbae28a2f3399568c6b3849da27d6ddf4fe6adabb591151679ed37d21f", "0x2a23343d24a9cfa3b8f413f52ee1b233ce4c1d5b9bf34b03dbc6d733d52305c9", "0x0707a6d515b3bad03a9b06d6be048defa850134aacd120f38fa93264016b7786", "0x1837db5401dd6ec30ba6b866184da56e8db439ffd04154ec469b62120ce35cb4", "0x244872a0d2766b8547e6b6a5afeabf198e1409a0f0026de36c101793952f6cfb", "0x204fb17927ce873c761196395f7da46f679ca331832a59fddd2ae31e84eba1f5", "0x056f53037d5d8efc7cf6a6feba18d102bf818bbba70b86dd9b763a12072f4c2e", "0x1df4bc5d73239f5ec3b89efad53df9cd8ad8fca543be01f5f40fea2952071bd6", "0x1ffb6ccbba001155d46e167d1fad1c13bf2892ac87cd9c347c734ab5ef658367", "0x08ee36e881496539b0abd647d353e51b63fef91fc944880006f2c26c2ecf2a24", "0x1c3080c254443332a3e6283d5bab6f7fce8aaa68487b9ee4e372cbc6cc172665", "0x2dc6040500e7329f75a3cefa4db49f9b47085b1660f8873b3e81b7b1af82af53", "0x2c8bca9dd293bb67db1f66ff2e82047ae9385ce67d7f33568cd4c216a89994b7", "0x2a157b9786f9224cf63648aaec1b9f61c7a7087ed6eb8ab20c6c5469d401b7df", "0x1e0fb0cdd8a54591c42e7c26b9027b77417e4e6522b472bfe61ff89c39bc40e9", "0x250144d1cea033fd78bd73ee4ea4cfdcd6a42f7c00e2d7ee6794d464207d2b3d", "0x0b6b3fe9a7a525ca60443c4b78a8e830957aae0403116d22983a2e680eedff65", "0x2fdf613e67d176569f4743b4963f8c53e52482fa32e705247eb650bc7bd616e9", "0x048f64b14275fb86fc55b3c0469cd89306752827c3c04463be5bea66fbd7b38c", "0x0f2027b781c2c52490e11ed4b7b494d66cdc16e690b6a4b3c924dc9d6e854832", "0x29652785160b261c1c20c741524a26147cc3191f33b74ebf17d44ce2f88b0f91", "0x1176909e02a5b37bfd47810fcbe73af87fea130470aa44bdf6b058c4d359e179", "0x180f26c6ce2a3a477baf0da58d069769c2bf0156d636f2255e1bc35c01e98993", "0x2afeedcc2cec57285ad22e734fb7fe3dd65f62601c1ca4884a86c7a6a05f083d", "0x0dd21a87ee22626998dbcd73dd751affb49d47a02e995a41bca26399103087d2", "0x1d21baa09d7f50f0159fa8a0b6e0d61446d1c7db5d1566469da6a85aa7224962", "0x2dc59c4c9e275cd8c2506282cc5bb842c014bea4236b1bc27a856351b48af802", "0x2cf62d08541dff0919ba68a697f44f4791c42d1447a41513ab9d5f755eb1f38a", "0x2f5b8853e2cd2e47a9fedeea4047e46083c97acd4b687aebd2264e7a0eb354b1", "0x05865328a9b2fd469170c391c5ba8db5c66eef9938e4da5bae33f2703c470730", "0x29761c9fc3d2c4cc1b126be1dc0470a97b8f2725d327c6d1ca923c2aa8092b1e", "0x1d3fb1f8dc3c77cb515c37bc810d3a5e3b96552d4bbb57fdb01c2aeeb1d9a048", "0x05f2fbeb7cae0a35ee2f3a4d2964d241a0ceeb47b3f7c4c87bb3b052c8705d90", "0x1f445014a0f266082a50257152609cc219062154f4d7c13288746954b97998f8", "0x2d35917cb1d0ca611ee37cfd9078c924fc84bd1a4bfd7db3ce39e05b38f698b1", "0x05a89a4eb40387b8512f2f398b6526efe76716951c500fc8dabc835775335ced", "0x04e26aa3f02601174f46ced15594329e4f4e5bd5d7d53d5df6c8633a94dd01de", "0x204d587d61526c1e047e1dc6b6d403b9eb8730f2e2dfb7bc7350d939bac5b90f", "0x21c8ca213d2f44446ae90a6bdae5843b7c2cb53ed699f36675ea8280a2a420e5", "0x1303bd921f32fa4c4e73af21457c46b6d69e2e6a2c396716217787b46e822ebf", "0x0613823c5b6abeef14387465317e713b45ace79c0e4433d7c4d352097e5c8399", "0x0f27c5305ee978f4f775e213e3ba12a901f51144ce1ea89bb5046930f5ec55d1", "0x2cad11c693c6a627531950a307e07b30ea8a495115f5a5388827792120c7bdb0", "0x16bb256883c44cf37366618e46c6db4e3da97a9d4ae7d5c585959de3272f82b1", "0x29afe50bd78f72cc763695976410324bfd67157a5ccdb7ae45b00032e1d57a51", "0x09329902e59e5243a726ae5ca35408a207148609ab3698139725aefe29aeb167", "0x04b1800e600c90ec4776bc6af1764ccbdc10bf55c3314f42acd0531ad53420fd", "0x298d0110bb90e4c35e293c7a7dacedef7ee9342a591b4330e27276aa13b67ad1", "0x024ea6e68cb1aa6b407e022649aa32d1b7ea4a350e510c07eee43929395e4f82", "0x22ae3a1a81c4550f5fa0116e135d2df2bd9f6835a0f0d03f4dd934e1320a3d8d", "0x1f0f5eee9e9abb2a2f4ae04d6fe09311fe0115c1e199c28e22705e681442ed37", "0x023c86606616f317af022464f350b4bee80c2fca32064bcbf83e8cd35dac06c7", "0x2a89c4e5b074fbe67d04cb03efe18c4bf904bec4759b33dad6b2c86ebfd2b9d5", "0x04b0f48c4f2e05bda4b9cf806075f9c275df2cf60b5fd11470eaa7394a82727e", "0x0edde5a2c01327ad042a686f443417bd8f107c99eb7c02900c931a7bd8cb349e", "0x2cacacc9c9d8b0004d8932080f9378b60675a8bd853aad1dc50672f137212cc1", "0x0816f33508621f2d56371156b0a3f7731030e4b218e44c90a88cecaf07170dec", "0x2ef8e0a455d472b49bffda935c8d3bee1ae9248608e2a52d53f4b76313c97920", "0x17184a8af9199aba605dd1f2dd18ebc02e3055ce408068eccaaf3ea7c0a334af", "0x16395e153937a83660db6f78446cb995836436602777d81f0607130b44881448", "0x0e174088223c38e9440fc77307d6720ac32784c9d2f591e2437eaea9b8f5e2bb", "0x19e70fa937788f7a2127573d56c8197bd0dd096140f39064865c65c31b47d402", "0x0e434c329d5242adbdab24780495ff97230beb344b918f6f8d6bd7d21b03692e", "0x2c88a82eb87c81ba42a211bf2ef3c15875ac157c7f3868fff35af9f55a8c22bc", "0x111dc223e3c9fc7452a9c2de469383915f33adf4cf5b49fd2e01c51d09ccf436", "0x10647353de3197b9cb48f4539b507e45393b000842e8baa1218af097f871baea", "0x0e53d64121c0a851c1b3f07423582034abce698525d0a47724354c07152f703b", "0x2891938acb83ee193754969f4aa5a62a531081dbca4dec226258ea92984b4348", "0x04106f95e4ba3fb74dbe4bc53abc170262ba00c7c63ed8c457c3227532c12ce3", "0x2a73e61b8f1babfbb38b186f401eed0d92c5613ba25dd2ff4d099f7dd3c19fe5", "0x18e16b24642f19193b798b923b8dd25f6e4856d6b21b729aed2281ab154f7c5f", "0x0d5f849b166ab9f6fc1a64467c5557029f359a2d0f194030c4dd875e12ae3485", "0x0e25250c57365a29c63a4f1531b8b0ef523eaa93c1d70acd0aa7cd7844dd0442", "0x0f813d14af0c85bcedfbf480b3d80b9f335853c60188526d80761274074a599a", "0x0d2356a92dbaae8c24a8cebed6428083ef2f469460f166a6e774377e78055435", "0x1fb6dceb495bf90fff56c8aad70b40bf773ea1003cdd092fd77a43961e9d7dc7", "0x2c0a70ced79951a75e23c5a323fd706c2ab87c381cfc3c269081627741c2bbe8", "0x13dc6b3bdb05167dceb4b11037064ac5fd22db5e229e4c6ba55e8382321dc5ee", "0x210fa8b777907ec30bb88dbd7c0e6ca9004eb3425d498025da6c90a47c35025c", "0x0c5cfa957139b45a72fbbf80a410aab5454a982668baf24b0dd3c04e4d599cd9", "0x1f1f3bc4c21d633400fcf8bdb7be59b7f65cedc06bb2fc93a873b6ef12e0f52b", "0x188f0ee95a9dfb03cd5e3fb30827057e933711644ee7bd57490374c0d67532e1", "0x0823877ebf8a842b77e8e0f3b44873e9409727101b186cae2b80d0cfa726ec8c", "0x0fe81603de39ccf148ca6390d6f8bdc9395ca2f3f50878283d98f1f0e61b1aff", "0x2ef61fe192f52a9d7cebf41c134098f2ccae35cabcaa12963566768ff1b83706", "0x0db6d076b2dd1b9f4d56d2f66fab4d7bfc6a38fef7f9ae1d4c2f8c44b1510f51", "0x2a194a4ae8583f28189f9c011d107b82f279e6a0f8ca8bc9cb0aa581831c7d06", "0x0ae539fa9ca67d4af48fb292f9188c9e72f2eeaae2e500b7e7201718c8da8de9", "0x23f66a894b1df4d26a8baa6d05b1ace511faffd4605b36cfd12bb4c6dc2bb4d7", "0x137cef522af2942aee9a4fb8017bf330e64601f466b56d32245669d9fe5ba707", "0x187aafcb87841b2df9d64c1767789a6b221767e4634f0d550063a0bf92788c32", "0x23212e75f4b89992a3647036ee36d74938bb9a9851e13d7b6e52daf66c4cbd25", "0x0f54cbe967770dfa9d068b2fc53abc96489bb7d266212654d326de6b9af16d63", "0x23d83a60b9887ab4359b8569ff3a219bb81367955fde72a62002d3cd51101fcc", "0x2ea676fe7f21fc583ab0b0e189020d42cb22f044607ee15bfac7dd66da5ebe76", "0x16f37f357a0c584821a356ab56a16d41f045029cb515f58ede001f05a807890b", "0x139093b78fc9603a4288ae5811ed1311be916e4c97d35a5cf18e4b7e47d13b03", "0x0aaba5fcad1c047030c8bf246f41610b68d60bad285cc15f55900f52778a11ba", "0x1611827956f3435c1fc67dd3d37954a255eaa0196cddc5d5a6187fa0a2839efb", "0x23db56362f248912421e5f087ad16e0c9e6d2bb59db30a52818e41964b7d8126", "0x2f215e640207a88b02999c98f1af8fa17331d19ea3de1decfe8f2e478224209c", "0x2b2a261917c0fecf2bce19021f8506e378e9d3e1afb451e9d162b3d93eed8612", "0x2f662e4cdfef5f822cb956df75b17b46f17b08f930f54bab4324a0363e23384b", "0x0870eeab2e7bb1e82c426c2ab1d65fda25d426749a538b4ea669eaa31f661a00", "0x169418dffc99f2ef5dc6b1013717c134409349d846457985725b15ac6a152fac", "0x021d3cb240d6400339ad5bc535b4fbb40919ce6b90162e51ec6895a7cabb4375", "0x12e45c46c45b660b6addc149e4216eeb6fb19474c8cce4d78e34c3cc18024afb", "0x0c7c86394b7ad61d8c348d185403dc77152fd310b5d05970375a11b5abd03548", "0x3024e78b217f85d8efeb60008ff70d33c3e84c238d9c21a04121b498a2fbb131", "0x235977101b56071ced3163c1ec7187909a3ed7679bb54ad40811ba318e1afc81", "0x14bf885e66f7c01fd974efdc0bc2d628ed79ad6fc6ba511c5a8ec383e1a73a70", "0x223325ae7e73cf093e1d5891aa92ed43f82610f1283f265f56548b38072f38d3", "0x239a5ae138dce6a019f44560ef7c19d2b8025dadf040559226f54870d318a57e", "0x01dcc35115d9057efaf468d7c8a7d46048e01359c974855bc99738f0b247672e", "0x1359a40012c5332587a4deb5604a436e269c282ba240cca0a6d77b343e76bbf3", "0x0a9ee39712223d4c0c37c26a96f267c85fc8e31acaee0c07354d3798dc5003e7", "0x11812d1ca3671ae688a9877233eeb5ec29868f7cd7c5e13275391a84167e0231", "0x2435cd699bc94985945d878960770f9298d40c0e28b6b5979069e0590952f0b8", "0x2bf020785e4117a1ea5930cd5355303bf9aab2a1ea0d6685391f40eeab2af0a0", "0x2cef6c78577c9e97a76855292ca92e4269ac53e9b7439dffbac2eda5c6758024", "0x09a30e00c9f0f6f260f05f029cdaa7c7afca506a5ce562c877b3b8d543135429", "0x1fd85928f8c8053c9b264a74f121b90bbf9ae8063e0e89670165b9ba66a3e7cd", "0x24482279d9efa57862a6cd4524aa289e6950606df8cdf8fbcaed4b674fdade91", "0x10260a39cfb0d82ad8182a6951f9c780a455fc1de48c417d6ce6b27f36462185", "0x25207827a76052d489bb2698730d5c3fc97192a4420578d2474a37ae7d7e3148", "0x28e36b634ecbdf7b8e4f9e1a347df95d771f15d97f2d5c401edf6a6e375874bd", "0x073f0dea6f83d443ee3ba27c5b7f0064ab7cc0d34babae859f6bf66d46a1e165", "0x14c6618569f748ff65514437adbcfa97f87b9b0d169048e84c553ba9888c451e", "0x0c7675a042ba6cc74fa588a0b26fdc4f2d1f119a0fe6ef111be6a2d45b4bbcad", "0x03dfad7db3f32c6ed8130c43cff604dbe1c29dbff250c684c955f09e495fb34c", "0x20114281fbe35c188164fc6d4144200fc1d9ec433efc677480bd2cdcb35b64e6", "0x29e42f5218b1ea3fad06a48e2292c0fe3df08a2c4a823a3be4b998955da8a21d", "0x13bf4039488d94b1b6a67f256296daeb6c7c80fad2726d6e9be11e17c2352816", "0x1847a4e36b3eace13de58fa4662a9f88c9c17a464e6dbd2083c2938c227ee3fa", "0x0a7a2056c7b79384af9fe3c6826830145f51f6f8ca5d1a344e295ca7663ada27", "0x181278caa15bdfb5940cff2bc3216ff06a45962d4979dfc0d6c94993bb7de86d", "0x0a8a6f4fbba2ee09a36d390fbb1485fb789cf3f9f641dae011520c8f10e57a43", "0x08f6b4c0d7bd5e4c87fbc6874520e3329c067b6841fc833aa37514435e987cea", "0x2206b2c18f3292e7a9a91039683a55d813dd914b0c7d523210424ff0f2817df7", "0x0186cef5c04b3a6c32da26405a16cdd359df57be8e93291acbeba3f487329cfc", "0x075aff67570ea17c7c79c9114c7a10d533c6080b6d15a5bebd1204fdcde772f0", "0x2b06d8389ba9621c3869d2e8b25ac15e2c97389caaf7f97a35700be66c1655a8", "0x04fc6d0a6b67744428161cb5228a94e7c0e95dede804b2b47a18055acd737aeb", "0x25e4a295b4e7a2dc71394d41ec2a8f4b124e58c234448a028a2c3bc6ad25e69b", "0x0094c24ab01c6db594fda907b639a7b3a54301439340e889b6ca9cb6cba067b0", "0x2751821a6e3b2206cd6bc3cd5d98cbae8850745ec6cbbea413e7254d2a514549", "0x145aaecc24e3878db9a8d77149b2419ed5b42df025ecbd1a8e97d8b817904bb9", "0x0d2aa00cc6e5167d845ee1877b7aa059b5e5151c57e4c163da3403f9a95755f2", "0x24233b69861c70c449ebd36e4420ddfc3c242b69ff6e3d4c6090c2bd08a764c2", "0x2c55fe1a75147c9c826f762f836d5645ac4184ba1927dd56a76dc056a9895667", "0x19779b1cb16a9c79654016674978b8b6ee1a78b64579de93ed2d67b9e49f098e", "0x1807721ba60fbae476ff60120c1f47ec0bce692cfc00102ae50bd9376c5a22a1", "0x1c0208f5aba12750802fbdc3bf12eac9e00ada708f167d4b167bd7d4b03d76f1", "0x090b6e28ff541cc38869abe2f5dbfb9fbe888d21021f29d2bddb9127d3c273be", "0x193d6c7e76ad94eb59a20010a799c7bf96a8dda8c90887d65214c8665ecda01b", "0x09ddd5bc0b1f8d4c4f1a7a102c1ba12ec7e7540cda285a564ea7c4753af8a8d1", "0x300a1dd5fda15d1a9cfe2a287801817168721da2f970139549e16811f555be1f", "0x1520908df2eefba075bb41cfe0740e1e5a1ee181ce492016e152706e493cf470", "0x0b3f215d52e85ec3c682698ebcb6228233ae9518f9450f480689e7cf30137846", "0x050996a07af6765c56a8ee2f736650deb4972bfcddb194a0efeb1954daa8a4d7", "0x23a59326daf5f94f3b5192c18ed06cc58cd9608e44138686399dc4f1ee807add", "0x1d220b9add0592866898ce834b1bdc2003976e815c0cf7d3f6b8bf967ad56496", "0x19b49c4da3d9e3a26d36566738658923477c504e76a38a82b1b1247104f681e1", "0x139decc567b06b495bd6f3cf006c05b7e1f25d5b7ac554445c37dd285beaae7a", "0x1a5a7d8bca8d4f07d4cd6e9bcd00c009e3099e99af3080debbb21f90f8e5b425", "0x0621e3811d3dcb9584d0a8be41e431d588c93274c8549e625f98fd15983a809e", "0x02a41c2d2bcf14664a0130a021daa6efd4a3b0c3aded38635bff97e3785ed6bd", "0x21cfb54ba72fc06794947cc3bda33d815355416e2aae19084d84471eedca399d", "0x05115093894089a202a4cf8d0aea329d83cbe0ece741160f9975cf01b7c85dc6", "0x2e40541caca7653212827129559ab422a1c06a6f48c974291470c65fc070dfb6", "0x07eeadd730284f5ab60778900b60300d27970001aa63e46ebb7f9cda1157600e", "0x0cf33e4964d350adf2051f8e2e8448d3324d24d3f4858407f4fd60d3333bd98d", "0x287c60483e2db313f1a2bda92c1e1c28b65ef0b99df4acfb75709edf6a3bfcb9", "0x289440f4b7fdb8b2b22661d0742e9695139c1a1ecef53c3febde0b5f6d9bb4a5", "0x291bda2c37fac962a24555a7abeb36d8e8b9eb25222f97f4817ef2e5b0bc7208", "0x0e105449589412404cda7b82f14d527594ff99d04cea894d6ecc315119f42b73", "0x0e6097f0ad418ac7123ae7eba6cd4522b7ffa8dc8cf60a1f836be23e41ec25e5", "0x22fdb676724017afa8a8069c62d307aa4ff52c1445ad41b94c3e406e33e0def1", "0x0204d594ad7855ad0f6950742b19e60c2c5338817aab7ee7bf631c3aa92160f1", "0x0b6a643dad3f953877110517f7b336518c8fc11d868bc72e76cd76c3b2f7dc1b", "0x04189ea6c2bd4b00fa6349adde17027eb7d76353a10bd07d0942639447cb43d3", "0x23bc8449d898a7524b2dfde263036cac2e14935134f8c3baf7f1e13ea2deec3c", "0x0017efa608d9941bc64d39e0b2593b742576dba257fab323d4c99c7a42107a16", "0x02f061475e9d8888b3877f9308e7758a16f91e3a34a5856f15ad0b9f2f92e2b4", "0x1f257d4d6f3277674a061330d73d6ba135da7cb0cba318686872fe1ef6d52e25", "0x195340f6c1f7b5f6158884bd237715149cea488edbfd80fc9b9cc61c384853ab", "0x273e200179c5c45d860b26a20b2c0853c1008f942459d5cdbed633ede031aa1d", "0x24bd0ecea1e1df97af0f296c0e792d676e2c8e02e808a158bdbe01431c5e4a48", "0x0c6e6f0f7c20811f404599d458af5c6cb41ab671599d6350df38e82104bc6835", "0x1dee1352470235cd8e129b5611fa953706bc08d58f6a3ef3d80370d8d19683a2", "0x1be0cc30343a168fda7c757ac0c7e5e16afddbfb7265878080725a12fa12ad4c", "0x1a449abf644f68a64c217c6a042a231107ca8d9c619208580eb76bbd9215d984", "0x080117dde58f228a459f59d90e64babe2daf476a9a2ca018faa3c5fecaac1789", "0x24ab9a167b61855e0f2c60bff098d5eb7d15166fab51f2b62c809de318d6d176", "0x2b56aca9d595460503363292bccdc80e823201f71b54bda684c93eb0893784f6", "0x057361ec23c87b30080ff1cdf3467d57c95a12afbfc48ab5e1e4de0162a41b5a", "0x1baed177177a25ecbbfaf4f204d9921eade3689ba1378cd9362cc14145089f95", "0x00ccdb6d5f4913d7656889c312975fdbe0e0309a841849fd808d75f593a71481", "0x2c52f5e1ef57de5dde528471cc1f0ee7839929df98ee743d9eff962515561910", "0x0234a4a32f767f2e1ca48dad3a2fdd3ff54b2ca3d53ce13fc9052414ad7f7555", "0x182b4c0c551ab0ce1990b472278f794ba9cc62abcc90a89efdd80776558e3433", "0x001ab2bbdbd043d2d7d1a4eb76db4de71fddf19edf10d7cdb9550e1846e53fd5", "0x206e6cd1e3154c113a762a628e24940907b41e90e7c2d43aa256ea5249978358", "0x27816cab4bec18577bd335bdaf8298798a261bb175137177d46ba95dd03dc8bb", "0x1680b632a04be3eb1ed64ef589440b3f9526b2ad82cf0b8839d3e7b0f585bc8c", "0x196b2cc0e6e07628df8234f58c027c190c75b0342511efea4c3724c4fedd6e75", "0x29ab0b6065ebbefc684608acc6bf3b5fc693770c38bf91b4be38fe6f72647486", "0x224ce814d39c382da2d65eccd9deb48056ede18c5efcb8e25515b727e540a859", "0x195e1cb28f38a9cb57b2c719b504f5fdd1d42559b6a368264fd0fbfefa66559f", "0x0e9e5eb70f4490ba6dbd1c0ee1d6724ccdd58acdf138785ce98ee3848ffb7840", "0x1995c9c8e520014e4412ec653839d781548cf71f46fbeb51919582226cbd5b21", "0x0886095cc376c87fa653000283a6eae11008982f27104afee198fc377f26e324", "0x13761e206b3e89b23de2342bfca860f9b0d9a36d486aa115565f9f52369c124d", "0x22a8c6cfc0e38a500a47515c519ad6a72506ec0d508de25942c10f51f0dfab81", "0x18985e9c7ea6f1a16962e4e27cf1aa4aa3086938b13f8ee9465a5ec7bebdee03", "0x215b523ce3f055c92eb148c00027d1ad406a2abd64081043e0d15492845b31a4", "0x0102f78c7513b093b885726b7df2e70298801b3e4019cdd42239d76448588c31", "0x0bce88602fd3a0f0ab8885891ad44045058f9ace11fdabd24e8dfa1b0a4ae727", "0x0745f760f8d466fc21043e2292e6cbb20b6227517f5200251129c5481f52fa4b", "0x0406de3807445c6d3cbdf7b174c410a998a1530fcca991535a2a262de4e2ee56", "0x26779e7346349068dbba66f784f87e243cc27cab59e887f7ed7a0117887d1acd", "0x25150652a08af8ca574c7c5c77ffd98b17259a1d914a6ea41db75014267949d8", "0x00bb8d13438040f674a79ed42202c5bf6e67de6fc3f6b65ca837ceab795fcc6f", "0x0c1ebf40eeaac3d4a192dd50ee25c0067f66eff6229d045d5a801067639ccf2c", "0x1a39731eb32fdb51dd793754f76103b5cab86947aad12d490d4951932ff20727", "0x2baad3d41b18ae10c463af1662ecb28c6988524edded36943672a0e857b960f8", "0x2e778da1518b6a4fad2e833e41466fb2fe82f4f8df1b5c218cdd3b7e49af67e1", "0x156dc717930d6490167743911e9bf4d4634ae049b53adab281698645f8b16dc6", "0x117f2ef1712692ab9dbdc51db4968b45f5e0104f9e5281329349d908b23e231c", "0x0b281b5d9dd2ca1a92e2d83b5087b6a08d6ab08330f47512aa047b2f88ba68cc", "0x1c2803766dd9096567a3366061764f8c916f2a2dd640b6eec0942ccb75d40767", "0x120174d53ba57d1a141bf40e4c705683668bd55800000aab6f34766b7b6575a2", "0x0c37b25020f8c76ea5536de54c722e47d01795d31b5ed73466e7d8b8ad376d46", "0x0a508f345cc9a8b0c30ba27651ba1c3ad8398025a4000a5c2500228c44fa91b8", "0x12afa49ff4d8b4c6c372f7e065840783cb9497eeacc847a340f61f1823cb2a8d", "0x29fc37eb5ec7cd004809516b7aa3c716f4f7f6e7772f443e0730b01dd5071a55", "0x2048fb9c1fdaced0fdc5159490db2977e57dbcbff7514ad1e52a271bf84dd1a8", "0x00a6c4223aabe583e899bbcd0314a4743181f1d5e03dbc11c8a4d02550fab64f", "0x15f462ab5b21c31557e25d9c22d8dc6a0cca93c8ed68a35655cff745686764d0", "0x27bc1c9af68edf8e3730197124be559f1472e7e3bba0d35e079b2d1b9e4271ef", "0x1a2ec148f900eeae38c0d3d6efda64e146929c71eb82da3139a3a85968ec6ebc", "0x04ff41cb553ca616d0616545922f2030b71b2354bcd1c55d7eabcaea8904c22e", "0x2f2c4e7b18a845fcd6add67009fc237b14a984619260a7b3d38712e03a0849b7", "0x22925c606a1f091c1d5c7122f8e1a8ffea6a140031106826ac53a9c69d84c0ab", "0x10e2a8c7b12bf70266c257573ca2594d8811633f77822d7c232b329c5b4e7279", "0x1712319595ae464992524bf8e488b783fa45b3548cd3f162d586bce31ec7184c", "0x2e9616987d3333388ea5a1cb56b4c161f279ff19454a64ade43daed4dcda5c0b", "0x2c68210d75660df5d9a8392a2805ea1612fc6137cf5b35a68fc1f03acfbfe4ca", "0x053cf3707283df8730b6e1f637d23c67b0b3533061a35bcb0cb0f9bbe4e8adc2", "0x07577491483d03d7769dacc79607b9897081c0095decdce3d227c059ddeddb66", "0x05639b2324c0b0af81c5b256ca6b2d46b95eaf855fc26cedbf90411312de4a12", "0x0ec90944eb8fc36c52f3fd13763714f41cea1ff487ea39d70bd94e9b7f8f16d5", "0x1e96cd3ac345bb2e5bd3e755922f84afaf303d6fb227fc68f703b93665f5ea96", "0x0408425405c66baa7d49858e6d5871e5b42ffebb0df885a824942da1e2e36d58", "0x284d77566b42f3913d41ebb0528b899426e0805aadb9957a534b022b081aa977", "0x0b044e5984887cda337f58c7ca50a78126deb5624f644516239427948d7d06bc", "0x0486972179ee3496795bded1c2fc9674c0c3f71b58150c9c525063a6f2b340d8", "0x25b7568316c4b2fef9b72543b6033b317a7bfe406623e47cb68e5c79296e6bee", "0x0cec9e74c344198703ceff28a4d11275f6c5c15738aa5a54a19269261ec6a8a8", "0x2bcc34a99345174c97a65e8978194486a9957c9d736f0ca39b98130801d1a114", "0x2ddb2ebc0ac98f6498c0f2be2d73e86a786940a1e8c558d8dbed8d6f44b02551", "0x2642b4a208e503e3480718d4d205351f43da183ed284ed7a385ef7cdca80bea8", "0x23fabdb09b481bc764102ae85ccf1e6ff71c7762f8bad04a2de3f7a025cb5087", "0x0ae4ed0ea6adb74b9d327fbcd01dbf37f5f6c467480c8aa5f495124cf70b823e", "0x09034e1a646d6674bef041afa774e3634faf8adcc7c71bc2ed6e03b0b4492016", "0x2817ea20b471a4bf138dec79d84f9f6c0015e0ca147b650683df4b3372b55ef2", "0x2dfb7f81425c2def6bfa4e833e51e912298397de78fd2aa17f6d1dd2f1379ca9", "0x137b5bdb746523c051d680be08daa6b0d54c9ff7099f2bf5ce894c24a8ef1f37", "0x03900ec7adc8e28af7046833dbad3fa1024e382aebe02bcb535243ddca21aa85", "0x2b285b6c23b25c52f2079863c759e6a10c33df8f191551ead53ea508511cb555", "0x1242067be2202d1b2c32b79c464e2d6c977e6fd12d8b35281e84c375864613d8", "0x1e8690f5b0a8729b9536ef2920abe7e6f3eee805237b158d997db63b17525eef", "0x047f5113e1287b5572c82edb369fb0f717a91f261ef9d81764a5b279ad9c13ba", "0x2d8800f21cd6774d5a6aa58ae2cd32593593d173b687122a4d61c44743902105", "0x274ba1521d5bc5c580647f10d1a4c4cadeef088685d1976979bad813756f84b0", "0x17895b7c10d6a475310d34a0737efaedddca8f1eee9d8d56e7fe4934c8b56441", "0x06eed11ae9f70df5ced09b1a6db258978cf5becad2f66d15761bf61e7dc13440", "0x3036b521c631ce5d3599e37f6a5daf928842cefcbcd2c6bf84e2db5ded748f09", "0x1f52d6e9ac28976c5a6fbf168c818478645c90d72e367609d7d7805a6367482d", "0x2a0e60356875d6ace1055932b3dd9ef39c3dd871091e96a323c1596cedb35e6b", "0x02089633a6194f3ed38eeec2c8f54d0c7f434938fdebb9c0e1830dbe5311c38f", "0x178c73d2769765d85383283fdb0d769457cfef0612baa963336bac1240b604c2", "0x2fc20bcaba9e3d96ebcdd710e3b341837d5d0db849e789f28c4be5004afa19a0", "0x151a423bee67fb14d5ad279f425213db7e0f21494982df872354c01f0f4a722c", "0x25d61619e135690c4e10e4afeb4f5578ad0f8e25c20735366895b31eebcdf47e", "0x15dd579bbd075429301d7295d3e685d832bf9f36c51277d09f2c3a664b045cd7", "0x236fa29b81678c8a109fd361c1ca90adf4423c13cf5b8cc1032b7283bcc959b1", "0x2a80cbac9b884e20368691bf1567cb7320537a977da10e53c5baea3446c01d1d", "0x11d4cb8957937b3628a3b3f4d27f276cc0c179b0c22b2c13fffbde85fd912378", "0x1289bf8ec507bf752a07c9b71efc0f800a52fbeb1637c5010fa54eadab402946", "0x26f842b1a99394297d25799f2f03dc9e4903e77d2ddc03ec2fb155466da6f303", "0x15944b9954b6182314e878fa2f9e091dcc40eadc48d37d39bdd5f09905c3a369", "0x0742166dcd8ebd8576a6bfe0f1fed13793928f84442c7465a0012f584426fadf", "0x08603d5a0e937b5353b56b05768fd50bde792e72fd61c06344cbd735707b68ff", "0x0caa1711c66e9301b6f25e21a31683d80bf58d86032d03bfd25b9777edb74a75", "0x2d6506da695d2087dff87b5f636ee676fab00c32ae45c75b3db345f3fe74a311", "0x0d9244b07af9b6eaeff6f84049cb2e01d75dc4cb68533606e976b8b300758c84", "0x243abc3c3382faa5dde3f1c3b432042d3f030ef6a1f5401aa37acd15cb1c8c46", "0x168416e0a6d275d30eda3989242e0723024727d3b0791b06f8e1bfe8efe40198", "0x1bcdeef03693d1ad0ea80c65688654affe634aa14cb11ae3a491681d9c5f8eeb", "0x02f66bfda3d2a1bdedb0ab8bf7eb1c4e551bef58d94fad7f7c231107e5653909", "0x019f6802171ab82a5922f023fdecc097eb8ac1fd0a1ed349afe9a7b94298975a", "0x195a1c738398feed8c760468a0556c232645a1dd862d87c1f508c949ad52c3ae", "0x0a36a3a46e6ec16567dfae1f853f360e6f24924810e838cb24ed1b0fce37f1e3", "0x002123c29ea87f7ea7b35c25f9e8dd3e81bbc3974c3c17c607cd840c09f374ae", "0x02a717499cb6c31f71f0f0352b0f5bfef3005b80e93a520b6e42b3985789e2d3", "0x0fc053584b0a4607a2293e18baa309c52fdc933e9ba90fd327aaa8c8cfc4daa1", "0x1310d1942129737b32e87a86f4573032b1b99ae3c6d71bafef7b494794855541", "0x1bfadae53fc82900f5761c558fee5e1218e6b2a6657e74b540969eeb49e0b8de", "0x28c08a69e5f3641460ff2c60b7579395650c5b6afb392da142d32de8677556ea", "0x223222ee42b6ca997f44d643ed6a3f2b040f47fe8cd922163d9d9d8b2622d909", "0x064dad4752e708ff29bb0842d2c452a71448b43949345690031cb125588876a0", "0x2d5ddc21797043996b22dcabb9a1ba6c82b71e9a1bc5919db8befd35411056a5", "0x26315fcd9b5e1a266ec8e9f6600f5a6e0bcdb22f926d61591e83fa21069c0e0b", "0x0759273a4177fcdeab23da38b478faf2d4f22e82f346aa754b0a1331bc8371ee", "0x09e13300eade70568fa0a840ea9729896ddd84c364d6279d34a0b9d1478fcf2a", "0x13e97ed3c16fad6cb5b7bb954f278f2434b22f8cc054463a145cbe0240d4f8bc", "0x05cd3486dca58f4eb221bc2cbedb8aa3027cde5765971bb1f61c272c5aa51ad0", "0x005ce523f6bc21daf1df468b12fd3e8665e1c1697816a9a671a3b2b6149c7de4", "0x2103066cc5df55e67cd7914028145fb71f089d671c83c5b537abea482b2d8cbb", "0x039f8077bd9b71f91ca0502eaccc1672c539f72329317aaf8173d2edd7636928", "0x2247bc0cc4373705b89672a2205346e6af3a6422e81b4f4885dc3af7cadcc5c5", "0x27bcc768bd31b9d00687a7e53c3ce53c426762706188790ea20b2e819638df80", "0x0d91cef51a76f7a62c51c73a2809732d79ac350159814ea536487368cfdfd708", "0x20a9ecdc649a26388dc68dc02343a0f167bad46d6aa1cd008537f627ba140730", "0x23134149a0d4567c6dfc911d5cb80c1a1016220d39e0c230325dae2941f528bb", "0x2a07507e9f030a42c6f29ccf1c9cc4f3e5a5b0dbf05874d5edadc03fe74b9474", "0x1bdf66bb1d57fd788e54ef29f06f35fdb2729b718ce81152cf3aafc64966110b", "0x275c33d07f9e7338ddf50783bf158d51be619bf77a12020cf5630b78e7e0d0b9", "0x16411554e55fe604a1ff1b3b5b7afb6a2bfd0f32c4070b55bf1ad234e8b28116", "0x073e6ac7e6af227557249ca1a5c55222a36c641bc2851a0dfcfb60831f6759a8", "0x10a6fde88c5f621d748543c76a218f95c202bbc3baca06838f31331b0556e12f", "0x29c5865a26588ca8a88128a072c8434cc97a1bcec23e136f038d29dcf96b0eb6", "0x233e0ef6ad132ed211b1911cdd569576fea8c17ca64e4d5dd516fcca07212c1a", "0x096f9b92b9cf2c7d664408a29860365f5b6adc238d878a476bded3e4d2e0b840", "0x2fc788fe8aad4c28b943bb57cb90edf6d7b1f1e835de1fbf3192e395db785554", "0x1bac0ed609233148503795fc5e114076ef7c9d722bc648dd0338d9689f6e023a", "0x001c35268aa030d6cd148e106e3fc23094e561573d8c72a69fc383643e2adc82", "0x2bb1f8fe5d998d0b8b92837ffb27bfe7a39ce39ff94fc167ddcc95a7202e34b2", "0x1a98576450a43e5e705b9af68cd0c145422da23945630b10b8e821dd61f9a2b2", "0x2714d37ee506efbc2ba9941043fb23f16af966f123d653f38388bcbdd50e6037", "0x175d0480ba14abf0bcb8075a03f4a2a01ff7ed75413917b53e50ea00cc2a4ad0", "0x203de45a037b75ef63761750dce08da2be7709701ec8158c17fc026fd084d541", "0x265aabfc78b70ca985c329080d6329a12560f76b01cc3d431a7283022193abf8", "0x135468dfbeb70e8c2edaffac8658a6c22b2ad1520ac0819c127af2ea5f3a87a8", "0x216a41e24329deda65a8a82001c84ce8286c61758447ff1bfa9d9293b6711fdd", "0x2887ed49797bd6652bed8bb99ae345ad70d1a27cdb21b9460bb6fd0d4fe482e6", "0x03e2bf82690c804bb6ee3c79dabd1892ea53a9811e2424a19fae446b8ae49cad", "0x0e6dce1bbe6e9e465cbe14dcc615611867414676dd8a8ce9946649b1c4e81116"], + ["0x123992df3b9daa65139ec13fbb52f7d348e134333684c1596feb0e8d8c3ad596", "0x2fa46f5dba9909ce9984a01e2af30b550dfec978be92b49119a3959c7f623703", "0x21d8f94d3bd98f0b63a7aacb175b2cca13b2dd8a8cf68fc36d94ae29401b2d2c", "0x1a8c06c61046e0f8dc6a39bc57aea0d07fd7db34e68f73579da89e116af87eb8", "0x298cd7046f58c0cab77523a58a6fdfd1401b89e7ae5eef4994442d167f7ad1d3", "0x0eac737966715df4a20b31ab693eda86a07f3e830fca475a6574d67fc5f19f63", "0x06b9b718bb3b6d45e0cbe6d5d9a2f096a77beb056821750d072262af2a70a33e", "0x0bccdad6e8b1fdfba846a9553fc7905b3f96e435d653eec3972565e1fbbc302a", "0x1b3ff4a6bc8490993abb7a002393cd1c1c007f49240ffc2ae1f1057cfcd8c7ad", "0x017f0c9452d70eecdf5cc8b6b0b205ec2da1de59750d6d1709751831b7e4ce26", "0x0cf1ab805bc47a10349ae77135ea95a4144a6ed0718fdeed42971c160791b269", "0x18dcacac61318af644ab0f2e61ef48c29a8aecfa0282e9fc325b5c0287103ce0", "0x16fbb3bdf4066e2b2f050b89b685d408711685db7e4638dec90ab1cc794350fe", "0x0eefd0b8617a1ecd7711ffd5f6c4cd0496487a1b1146e9f3d53275af18fc6c6f", "0x03c707d1835066fa30e7295a097a6ff463b85b778ca11d9bd2988d41b600aae2", "0x063ad3f6e3f8443e0908af99ce32d2c09606e84aae5e3ad30ed60d7a660738cb", "0x2cf67cc9cd3a5313d992e315010d90cb501f790bbe35a166392a51d90d117353", "0x2a6e7a7bf7c190d4e4f7f258d890dd41780e28f6b71e893716f70140f4406b34", "0x26140420009b6d8c7314723e66925badcf98440da6c2b97b66a52b98cbdf1d41", "0x212c611149d057b2ffefc9938ab1498d3b265392c73480b9cb02276906e445ba", "0x08918ab686c1a160a55db12010b20150f82632dd5933e27cd01129518cd9e952", "0x173ef7767749a3249b004eac7aa7e94dab20d465c65ebf4bab422f743f17d8b0", "0x049d90fb549e0e25790f5a6570755c68c13c97b18d67bb9199dc765355fcb1fe", "0x0d1aa7cfe6ca9e048ac6ce2cda40c6d64afbb8c15a7cd9e0222566f9922a1547", "0x2d82e2ccd8bd63b2ba44bc0f4cb5ec88142a4408acf1dad452a66e8219f667c9", "0x2ab73a842e0bbfe229ea1154bf8aeb48cf2fc289b939471d6b465b7202eb2354", "0x233f36bb205dd59d045310064408c6eaf710173a118f9ed21153c99a6b0783fc", "0x18c14a50595b8df32124bf57f8b8df430449f35986242a2ff79a644f510cef27", "0x186508d6b75c7902ed6a1948f91088c7cddf973d8cfcdb4e5a5b0cac6b5b22d0", "0x10bf42990104c39b27ef0ba451b510cbb001f8ec39a313d259be4309d6429bd2", "0x163e875fd9e04b255971072c0d2e7614ee1f3c7d2b93799aa1570bf73153f3ac", "0x2925a59f82c1472b8120988e3af6cf24c2ebec9a9f0f830bb5c826061c65eb8c", "0x25caf9ff6543dcc34e2d0b8c2af3b36ebef3d4c3fe62e2937ce590a38df2da1b", "0x14cc417fd674083090f4463f66180e4a3f38ca5ba87f4889e510ada924f6b799", "0x182550aed7fb3b7d92ef0b91f4916ac7f7db3b943103ae7ba2e09ec0f4a08517", "0x216305852467475a9f934d3b1132a99642fb79fb6bb91d948f391ac9e1c3f1c8", "0x0423b771f7215716cf97b3a72ccffe156bb9f8097c77a2b6dc67bb5848689b8d", "0x2247cd5af8b5ce0a983aede949f81dc7d3fc5a2cbbeb8d16ad43fa2c3a882537", "0x04990ce49123ed1eca92df7bca2b271d07ba4ae5a30c6a0119f77b51c3643d2f", "0x064e8bb29cc072af727af1b79af50896a6548dec41bac10f0319fbefc1bfef9d", "0x05f9be83351a037f574fd0f54d4e9ae5cadb930ceb51c91b07894f0160f8fa42", "0x202ce17e96cb24e8986cd09351ab9576d5a5167168f9d5f3877c4c5ce03629b6", "0x098a2fb5cb01868cde6424c4211b9549b8f550a7f03e7fcd8b5121516b3f452d", "0x2cbd947e532cda0f8f1b899ffbcdd5e0b6b08451e637fe53f3b4a8ea7832aa27", "0x0e0fa4620cfc943da81b40b6b42f86fe74e55900f800645ba66137b6b7c728a0", "0x2e1ca081c96d5abf2cc40b3797c38b0ae8a8ef5d76e6d03e9bb06741c2184123", "0x271cf3ea7b06b4e743585ae68997c0143542e405c70855787181163e4ac20b45", "0x09dea127972d2109cadb7e96abba7577c0ac0077312b9550f81b7716a92f5eab", "0x1982cc716da20b119525c64a3fe85f5e31baa97c76c82376999637d8ef1c8a07", "0x226600de8bb65b38ecf996e5bb26fd6288c690f16a5eedb730d939311d0c3ff1", "0x020f7b77fbbcad998e7744ca27c0f7c0c2550a3db90fe28944e73d01d24ae6cb", "0x1c2e445cfc98637aaebc2c1ab7b6d790ebac5027071d1057a945bc90437c49c2", "0x244b349502df4a33563b30237ee750e79bde135f0b0896f0d9cde04f1004171e", "0x10860a875d80bd71c6267c1d54b02fb58c890b1cffc35fa707fe6a94941281cd", "0x2eec5addecc4e24650dbbea531a0fef0dc327dc694f229b2526d2f30b2c499c1", "0x188bb7150b6e40624b02ea2821aeb6b52b1e85b5b724bc0ec512f8fa641182ca", "0x05e56007dabde2cc83d498371e99ada953ecd69e135ef0204d2d3b6cc1f49aa1", "0x2553755b36de611ed557768bb5513731474a0a8cdc6dba8f04f3031b07687b16", "0x1cf267dd9bfb6e678a82c7745857a63e2b57066a8626b52c0fd5ff42418aa65d", "0x106b2a40087375ea2988b8e0700fdd71d3716af2bfd0b6b0ca6e24ab4b4c25e1", "0x0b978e4a10dbcdcbc7e90aae2ca19615df674819cb611d93b4cbf5f2ff9a0a16", "0x2ed68ffba6a646e5047666b8ad69f6cb35ad096d6d34fe1ca67e532b5186bbf4", "0x23c632c2fe68d4f0a71b1ee63951c72b7d349797f07053df2ed33520ea3e94cd", "0x27fda5f826ce6a8340d12a584d4b9c84f0a4ea3c9d33eae8d6c0e23a5a9897e3", "0x2d24aa4c0772256e90344d20d46dfbdbb5e9dc132a4fb07faf8eddaa30da7674", "0x048d52c4e3d71485ce6af122ea136e60053e387d77369eedf8d9bbc663fb98f7", "0x0e0c1f005a1759dd161302fdb233cbac5fe151b5c2192255bd757b3ced899f92", "0x230d641c4552e5e55416e360eaa32900751de5ca53e8654af8d422eec627efb2", "0x02ff6fa8364a8cfb19e30be87d4cdeed9f957dd024f8138d535c6380a8b5d38a", "0x1689a04762a5ab1388f6a7257e7c72838513c57da7f546a2017ff128afe16171", "0x288d8c7325204250e8632f42debee8a31a470312ab2fd00afbc7694f95b827cd", "0x23996135af9f3a42a6db33fd55319a7caed8da2e6e338068d78f5408552c83c1", "0x15d052dadce14506fccd2690c333f8ecac382d2b6734726236cf9c7be278bbe4", "0x1494fb65e5993d96c30bf0bce3f56dce68a2de52299b4809cc119e37d8e042e6", "0x0b800ef8749f91b307947c581095ec9283c3b131be5ad5bda4200992fbff053c", "0x0bac1f53d5a7d39811bae7c1a79dc997fdd5f1270f72805fb05f5c52d77c1cb0", "0x179249893fa86ee067b47bbe8335b8942bc921ae0e082c303e32b809d939786e", "0x0985a7c9b42805d910a89e2dc9563e7e3449fd5b401ff4d5eac75dce7fcb420d", "0x2c1905b5f00c927a57a154c474427e31f3caab81981d621fb7fea525ccda9bfe", "0x0b23502ce04c0f4cb30c0bdb6c4f2a4f81c2ef223936f07ef57856f0a9bb4f70", "0x2dc051c1bcf637233ea7c5e086aed7dcdeb51b7a3525820bdd6eb65e578519ba", "0x273d8a4166dc3f53b1ff24c61f1a3b3007a282b526c7239eec81e92f51c741ae", "0x257988be7dc257a0c5dd7078b72f692c755f01ba3c8e57d82d9b969565dbf0fa", "0x213d0fe5a3e7608fa602f5b5ad5b8260654445ebd72492a32ad3991f3a5a6218", "0x07a383e7a221bc76fb14370d4b3eee8de502601a5e4d54b3370c4c502b097a8a", "0x18ce7b3e647ce9a3a90d0ed9aa57eb9a895d596a54958cc9702d8da219623e81", "0x12320ee10efc1f8118d3ea697574eae2dfaf8f29c183abd123392e3c2829900a", "0x093d0e1304c660fddafdb48295928fb6a83114827566cbcde26ef4c87c9fa89e", "0x2931b9295d96e5b97364b37daefda7dcbf3dc9f48ab3364da9dc6a7234d714c6", "0x1f533a1e4b4878c2fc2e9706e541d28481ce43b1627d0ba46596906cf3281624", "0x2517cb724d12ee6ebfa7b4b0d25cf0315466e98d8cac3ffbfb1a1bcdee0cf064", "0x00e43dc983bc8febeaad40130444ab7f9187185624149a7f274492d9bd8389ea", "0x186bc09a7ffc4edd291579876b77c2fd3eed0b1b83f21ddfb899039ceb77f379", "0x05d22a2f48f64658e181b8ae5e72e1a942796af2bfe6ef74ac9abf53ac65eeb4", "0x1f006e8d2463636bca787f765fd6ac723ad2c2e466ae6324f5d39f3eee58f0cd", "0x28913d42bdf680478ffd17374e895fe7799d9d100196f6ccc30dc08f39a479f7", "0x11b557c8d7e97bd99ae5f49e823308bd6e22694225d4029dfdcd836cb7c0ad7b", "0x0744b53926e1a0ef395bb04908b13326ae1866a68983c41de56fb7cc7dcce297", "0x2bfb2f2456a70989b165fb6a3ee6f944d28362935cabe516114980f141422a03", "0x3027047944ec82cef6240d1637070c622c5d28a74302de0efd6d4addd4dc2db2", "0x1ed0b5e4b29aeb0b5b3eb128cf031759cb3bc47cc1286657cdfe88c5c411d4a2", "0x263479ee77e44e8b2ab953e82ef63a7e4aff48f0e730f4782b225cb22777104f", "0x19904c84e55e1af3147cdb7f3a428265e20c1bbccbec2a5c8b950417ca2ee471", "0x2fa8468fea3204ed2a934a1eef7c78580a8da30c5ec5922fac89ab92ad81a3a4", "0x267c0b4b19662cf09b870e05f7441e042e5b962f73dfd78d23384dc7ea71afa5", "0x2f1504675041755409946e8c5f5432d35849ba7bea0d12512547ae684b83ac2d", "0x204199d64982f574327ff3f400705e0a53b25d59ae91ce0b9d31fdbba1ee2b0c", "0x0a087554e5511426780e457757c175cf6187a2efb9568a3d390d3a51c2297ccf", "0x2ef9b88428465f535cb04119f518d1c2052268455f1ab145ccf1693be92416ab", "0x2a96c9f200b477eba78316fc4497e08b2a4384b26c97c7b4ce877cb65ff5634f", "0x043293e61ef1b614850bc015dd316e2c7c54f12d2db746f7c0cdcb0ec551cfc2", "0x1d81e0e280611bf30989c1a74088493504b818b385d04d96ad298dbed9a7bdfb", "0x1ad9cf17b8368d98002ced2cf6ef9385a074c5e3aa0b2e12f4b768cc4804bde3", "0x19b30a27119ff50da2734b127ab83299a4b099694c31acc182ab453fc000ef95", "0x132d81f00bbef2804901c4073fcd9c817a63832c30d653063f67fd86482e1998", "0x292ea3ef2313863a1276b1f0e4973fa784dea78a1ec98f4d593947f6a4e73924", "0x028cfb5e0c41b0c77d987e737a5018787079f2ffa650102f2feb735c7d9bce84", "0x11afd75dc84353e2f9c2f05d1f3ca734eb45546b92396233a3f29f4e8f6791b3", "0x1aaf43ed6da39b453120bd0312f259294ea101b678dff427843c0fc816409ed6", "0x19db09df83387b1e4185cd79400609e79f37e5a4658dbee0785dab5dcce32868", "0x029cb3dcaf2ebb0f5b0b949e84278fed2d11db8c1fcf35e38189afca16c0cbfd", "0x2881df9352d274f0cfeb55df8ffeb1d0d81fcdab794082e2107e1b0426a730a2", "0x0628a0f9594c159206c7627a8f10748a1df2ce582b7604a8e64a7015ebddb65b", "0x22657393eb7ed9f4572c22cd7b9d5134d1fbce295c2a95f1afc6441de60d7fb8", "0x006325f509f0362714c4850daed8744062fcf8098608005e7d08b509bba33624", "0x171d6498b42b39345d56e8661ccc2b576ef449b1f8e5bdc5ac72d9f93dc3dd9a", "0x1be82f3b1cc9d849595d85e3398331186b6e4b4cbdf43ceeedbf04735315a8d2", "0x154711be62f23cd46086b9311b28eeada8d26323f8864de7e36e5543bcd7a38f", "0x19ece5d8c0b6cc07fa0119746e7f36c9c8d496ac1e1d95cd5bb8d769a6745cd8", "0x26d6162d8d9c9c60244cbcc1bb78814265fef97a53a168c62a43b9e6f4cb2d16", "0x28bb85fef9f65884e4a99a63a59a906d586cdd88bba7c51259b1fe6a375fe4af", "0x267ccac1e34271971e474179c5800526ceef2f1a6fddaac1de2299e92d9d8ce0", "0x2e6b4868d15390d8014248eec0c7f10d8ee9eebfa64025f961ece49a9ffad985", "0x17039023ba24e37bc4cde497e95d134ff35dde6fe093ed788e4839d2bcecf840", "0x214455d91fc747c6aa9908ad92d19b2dc75a84651183dcf43b9a256320c33e57", "0x0a07405f036d30ec77ec64b034b9fc5df2cff5877c3c67b7ab23b9f2d8dad2a4", "0x29f6807284b6e435ccc2fc14579baed0a60617e0ee33a358cb316811b3d8864a", "0x246894f6071fc9630f69187cb5ab506c05084114d2efcf231780b5d4b5c4a0c6", "0x04224081b90a67774d15ff98e6134493c01926f7ec25053de56215c145e5da67", "0x0d99cfe7649d1dfd292f11773bfff1ce3645ce4212787ed369c0a06b602bab21", "0x1fc76023333ba4dc0f2a8dbafbba1bff33b753fd77e6b1bdc4c796a031b7815a", "0x2f60e05fa1f7446735a3717a9d73728a5b20166537ffeb65707e5f7503e8acf3", "0x1a2b7508921fa054f58ca4d6eeb133453663c8979d6216ec9ee1240b8c894e80", "0x0a0aca4924bea6979a56e47af0bfa19c1db7d756bb4aade0a58e5bddd7ddcb4d", "0x262a2365cc780f62557c854566fa2c8822e6fdff8eadb90949faa5abd63a7f82", "0x19ad5a882f1dc4971429545dda3db1857b1ca0a246768b3a2b0014ba5a302439", "0x261e3360fb23c08e87b8f588bd59f08cef07bb48a6f1226a64cdc7d4de7e95ca", "0x069cc67cae46ded18fdc725c9cad9dd64e445c990271b0e2d2ccc42fdce0bf59", "0x162e21896c8d1f6c2b7ec16fb7ae7ef8c8ee19216ae189a6ef2d7ebdb1ce62c8", "0x128d42c08444d8956879995a105a336c4248ff9581139122ed9c9d55464ee9b3", "0x12e9391f7f131f13c39725c4414669bcc64c7a41b6764e687cee8e507433e3e9", "0x1de988e46c2c9a1c00d85dfafb1da7509bcb36422aab6052fd1f927df741c170", "0x2002cb8a779f93de8b44d7fb08cff50828e0771d65011f9954b424e67802cf0d", "0x28f6e5af2752c79d01a3c6c7d2930fdfb164989c20f905ccfc0982c29365d631", "0x19ebacb5354f7f272f5c12d6c71b39d89e14aaa4efbf987377337ffa3c026b2b", "0x05dd47c695cc6c95e2acd1bfc0ce335cb304a3c3380a94e8b7c070682ca869a1", "0x246bc3c037a3c9ae2bba7e73578b1a825e1672a7418801cc0743954534d9c0c7", "0x1b7ee255815ba7020f0cf78ceb9860815c0eeba268a72cecf9e3fd1a6870b3ae", "0x1ce04f643bc9513316211fdc0bc23c9a52bdaf4bccd9ca18590c1703a2d120e1", "0x2e3a6532afa95388b41ad59d7c2705445d7ce10c88d73411b7271f52ed4c44cb", "0x1f91121f2cbd1ead2f70f4f74729a25723721a895a87d73394cc9c1809fccfbb", "0x11082403388a99da0de3ed7d3b873f5abcf71f8bea6e358f5b0f17ca5276d926", "0x03962a691eb42cf5ef779bee82508641329ed9eeb7857f1cecc46dc93046e1f6", "0x0a67910e294583739c2b6d18ea5ad74e141bb2a353fcdd93fc3ef83f4fd7863a", "0x1c20f9bd1323709fda124f71e88901235f44c5e48287bf0f43b45443ddcbae5c", "0x111ab56e19274efd47392b70171dfdab0c8cef5b6de579de67f579e86b506fbd", "0x006e6b88e6f0cdf982de483aa04bb9d0fe288ee5863a6892915d125eaed786b4", "0x29bc59d6fba6d692e2a5e85ba50d6fd9bcfccc57e2bcbdddd65881af445fff84", "0x261d13ac441b2f30096c1f7f66a6d973244c2c070211275a37d49b1d70340edd", "0x077f8d9273ffda37ed1ea683f69349715f95986d26163f00d41c9e3c366ccbfc", "0x1678f9fc6c4502c235267f4b841d9543208542355ed7db420a609acb8e8ebdce", "0x1a65b41dc302b906fd144a594bea6d909f72fb707500b270837c9a249590075b", "0x265359bf0ead777264d18dbb4c4664301a23b10579368f40b433710b97f807a9", "0x2e944ce0eb653745a45632c070b931d08ecc4973ea091e5dc67125cc9045e41e", "0x27e3025a2d3e82614a4dd0550f59359f5643b86835926aed2eb0a7aa4f06219a", "0x0d9848e0d3b8bc8d43e5e6954e6f0181986e575054840f238cab4cb5b03fffc2", "0x1ac3aad815d8ec13b035decf67a685496a87b104bf57ef38cda855877fca7c75", "0x0c910186f912eef95fd673ead2281ffd0d5ce9c80cc51f6f931d0c75b9c0a3af", "0x248b63a76a024d5cf2e42a1bf70a954f01b1849dac31fd545a7cd74c5c3a1e54", "0x1a71fba60cd363b0be3ea3604a386cd1df466b5e69f93503858c69f5a868695e", "0x15a2869b6363cd02a472cbcec5c91bfa17242cedeab83084f0eedf28343178b1", "0x2813c10731f7694540eacde857786ab2443fb1891619243b8d4d9a529a733548", "0x2aa96905ef42bc1e8452087fe13dc3d55ce94062936fde48fc29f8698ed5ec50", "0x0f093d369fad0a0d255bfc311c4a58dc98a1900cf359b3e7d9688f6591b8d384", "0x068dbbc530967765cf7c7e69b8bee4ee08d486b420d5339626c8411ca984027d", "0x1dd0cab71570941ee962bd61dad1cb68a8ed8022adff356a67fcab3a6eaf5aee", "0x29a857f084ae7f2b506efd6cfb0672d63ae960cd1979f78d7f55d78259553777", "0x2081f7713f51b3930dfa0a6df8e83611bc8829cd1f8471b7e2e17f480d853c33", "0x2eea374a60ab1a20648cb908e605c6d8599ba601538635c8ccee00cabc85727b", "0x1a1b68bd2951131e6d71952233647e4165bc412da6d99c2197aa397d8d3ee5ba", "0x1defdf14415a78d5e6f287ae6e49ebb11822b8734c9df91c80e08de57b2d4f2b", "0x10040cc4fd20bacca69e26287138be4dac94040cc6224e2bfdc76661106a7249", "0x20ce67f32e823b988011d0c33abb0f725be96fc9ab5b2eb71012f5f80a55ff40", "0x202ecd50c82c9e1c79f0fe136518b22551c058c21b6eece43585bcd28cc4ea87", "0x10fba50c060fceb989d7536c3692f0c3243338210d145d6187926798b747087d", "0x02680936e402765dd6ccfdfe2dea719d3c507a7c551123c0f9dd59a58bf8dcb5", "0x102beb4a5c4c903eaef9ecb0d5794154620d7e9de84364fe0583be79b4de7cfb", "0x08d01db18faecd1a26c285be65414bf18ab012d7efb2675f4ae1d6f5e1370622", "0x112fe5d217f33c2d2d19762d286841366ba782b4bddfa33bda836fa2de419010", "0x064885f457cfafe6ece2944a9a935efdc717affcb4449ceb31a2792d5eea6765", "0x0bbdc371ab6d4296e73ed2078b99fa47d00c44cf51eec0ad4ad0aab9c09cd886", "0x0b9e59b699aa688dd12143e890b6fd0e34800d6b440f5f6b6c426b30ad078887", "0x0a5aa31d4fab8e109b0fdfc55eb14a5c2d9267d7f986b610170ce5543bfb30b7", "0x03239d50b4a0128e39c7673f2f99d88b5903eb1bb7704c6c0cdd4c31408a7a6b", "0x11a6945949a182759b6f1da60eadaf2c730cce66ea046f8f5eb781e7c45f8c9d", "0x0c502ff1bed8a68726803e222b87d59074956d834f2d63817f2a9efed3dc931e", "0x222d9daa384ae2b40e43e274cc07d2dbb9eb6988d03894b6fbf51336634c917e", "0x1df8fe0dda8e51971b917b0ff0f3e05ed4b00c09545351a1177805c50f6bc009", "0x222bb8290405c5b3373f1b199969c6d0f9ba8eb772f2497c55c0f551775b2635", "0x07902bec23d9f91a003a928eaaff9647ac030289dd5eacd8cafdd31b93264d10", "0x2c706f059d6a86ea496c2e4693d1717e4098ff87d05a82d738fd8883a82b9d5e", "0x05ae261694bee2446a1813608edec696f252922d33e94280aa805bfd843786f5", "0x186ee2ca779c5c26a193adf0ff47d9f333b750f99b77655011c64b3e8ccdf93d", "0x1c2ab6e96f68e3b2cce6da3465b19e3e4a437b1f209c55e6ef99a1ac0736bd11", "0x2fd17db7e1827169c32ccfc0ad14d9f97c7507f8ef88dc5d6f04b02203c37e55", "0x241fad7570628418ab9748ced53646c2e100aeebd62a6c73804f080de66d9720", "0x0016b5b53403ee6f47e6100c2778ca970b40af6be277e98b71032f894e6f6a2f", "0x000a095842f718e71645b2e81c90b3f0857c8c935b135b0cb25df1541d38c7ff", "0x303f2ba04eedf1425b5d7cc4be2c5088b9d2ef2bf478b9e9b8ce6ff1668909bd", "0x1494435142c96fc94e8d66d9b643e019163c6ac2e4e162056fa8feee51956667", "0x031cdbb9ad28ec57c4e1ac8ff66c791d04b25a28abcadae83a5573e3f3d4bfea", "0x0c787dff012f136b89ce3516c1cf867928d7107d218d62d51b0b2d8cc9850498", "0x0b20b314907f522e17a9d5da8c10fcf88cb956556cf077457c1e4a9ad5dc0b0d", "0x11d5cadfd04189c6c14a49e8ba6783540adc7ed70bf25afe25df9e2ffd9bc35f", "0x0852309d50f14538c8b7d35658d89ba30e29aab6626531aaa1185ff0cab8a1ff", "0x257395e7c190b3cdce5f934dbea907705008a30593c69293fd7105622602604a", "0x0aae37af5c3a542202935f590b667f979fb414273cc87931610a4b3144aebfb7", "0x1c1654a77feafcd7feeba94c32605f95ded03e13c08a6274c47edb41134e2444", "0x1480cc4cb3b9d9fc97b99e340fec19823dcd2edf198f7095ee5c70a9200995e0", "0x18711057869189126f88536accea4882a34797a9dd96a94cc87b8ea462417655", "0x0e9c4735ee797b9c70833a7a6be7c2cfcb962f070caaa649466fdf9bbe5828cd", "0x2e2e38ccea7ef6c29a922b027d31d9870ac0f9d27de19d70039bbd1f90ff74fc", "0x1d66369e95c2e76030e380d6538a93278f91ea5dd60e5a316b3dced27fc137a3", "0x29ef9102b5e671edc05f87bcceb6d900484e7ee7402a32ccc77fde2e7866a083", "0x2103b04c1735f7511eb775c7334a0bb6d626fb60937ba3761dad73a84478e3dd", "0x0dd1b6ba84a3c29b62923765068cf63c711bc1d6bb28eefe38a0e4861ad13963", "0x1eab4c7faabec58ab9b73b2baaf21e42880b77b0f0dfd30d38e1c955e9dd721b", "0x002e1a3f669dfc929b9cc84d96d489ece114d5be5db8571469f774cf6f6c8022", "0x1214ca424ea151785150d7db57b93cc6bbc8d75d1929938460a7c67f0c791f11", "0x2e174dd4aafff6103164d9165ff8319d9260c86218510a4d910341f0b4e01d38", "0x20b32f4a423617fef146da5f1a2695fcff6497ffaba30decf6ffe62ae952c435", "0x29f4dd468db0873491468b7009dbafc79951f3b83ab64efb8dd2e56cc9b31a8e", "0x2519801de4e58e4164f7f0d86994311c87f279a38afc4cb3c4d26cf41c642af0", "0x2ca123faf875de4eaad80eba73cb2a00f22eaf5b6109ef41a65d2d286f602cc1", "0x0efed651a61fa30b70937bde9d02b9b6a302a1aab706687b2233ae9b20331267", "0x13e21dbbfd7e5526bdc5075e73dee0aef45a0ed2c880b29b7dbd5c9e6439ee3f", "0x2c2486d85aadbc358b1065dd7b14957e8cf5bf7451afcb394659741cf6be5821", "0x2c97a5d5b9751943bc11e04c2d60a56c43d945b96b0982c8a3f5e63b73550d6b", "0x0d3876b0553694380adc086cc9272e1770e2f86b336ff78040419e5edccd8cf5", "0x12365c7cdd616d258f9ae3504b37d44e958c816a0bba374278e8b7ad79ab9679", "0x1b60354d16b01843540b8fc6961ff84a58ebe5e42b46d22aeb618e2db4ade65f", "0x03778fc723ccd03ad8c90c311c141963dea639d2524ad972d8496d129e1c2434", "0x2ee721dde852879e1238cb7a79207147b3d864e6c8a14a327e2e558b9df57662", "0x11020d0581ff8e79c8f5aa4d50be2dc792a038bcb61aec4ccea2ec4df2d0af4c", "0x1e0e921193e35b3c42ded003dcbbed8eae46712e15e63aec715f3f7031cf4f8f", "0x2a6c13d7afd6636c2d4d5d36f42c09ac3286b67703ac4d2c24dcf5a3add9020d", "0x27bddedea7d8d398b4b6e9152e17c2d092217609b109c14574f932bb02c88440", "0x2e13f9cbc356728e6d2b7a5c593aa9ecc9b900bb98901593d021d61eba6555a3", "0x109af33773e416156885bab0513dc199a0045d405d81bd2a151690bdafba3b66", "0x0bf7a121a985d20eebebf624f3837307415ae480954bf49552dd8c5f3e50301a", "0x0f78ba7c3e6d15d11292dd121aad459483271b5fe2ee56a63814d5db19290567", "0x1625df035eaa992f424ddc6dc88c1b700ac5e6d5981e2ad0df9b290a56bd5001", "0x1ac7d1f33bb598fe9581ac73b0aad4e9ace99ead01981fcf2c502a71afd56762", "0x2d37296ef0cd5676d0809608ba340cd7b202e2e1c2546d989417d303ec319337", "0x019caa62c5238e03ecdf75bb2c276be1805be3fe44a957d8aa3bf07cacf1c114", "0x0f32dea104320ce0f00919d90f9c6c76d496882791146c522a8acaceae3e4a48", "0x2ce5d2452c0a5a9fb65a4a6482f34998865be9a29f266f88a8affa850f5ec6e5", "0x135d590de80a0e717da7325c781aa167a25e5c310d92df83120e891cced24a8b", "0x1d3ce96a7cd79e94492e32b8983d62fac736499850722f7fe7dd1589706ab693", "0x0ea3a1e1f5dca3ff7d8671f2fecfb467f6a4e6516c8038a9306b36dc818321b2", "0x1ed08c4f0e16d144059100f05fb463098e3d869f342e0ef8b4a47afe74a83a25", "0x0adf612bc0c24e826135c7de0dba90fbe1bd249f7424f1970b52e8bb24d986ed", "0x240c424a024e59bea3a14fca73d7b63869eb9b68746ad9c356b93fb6eaa3e22b", "0x24dfab7238b05bf08f66fbe599763f63d5c70a181a7e9fe35daf0479e2b1cbd4", "0x160d79a03959c968dafb76ea3e08ffd2ce117d094e820d5e9f7ce1debd3bb08c", "0x1b65216187a1ca1679642d4c40aa05bff725bfa50248aa89d57f570c2fe9345a", "0x243503bad8adaf14a8e565013863c13a77f6f7a0fff571c1275b18f54bd77351", "0x06c2ad47bf4de574cacfba515d18ddaf782a8addfad1c18ee4391163c541a62c", "0x214366673d387148578fef89434bcfc7e0ce4eb08661904026b30ba10f3a1341", "0x1db81d98b4d4d83226ae4131301c8e3622a32e2b7884860e85257f5f7b7e6de4", "0x29d2bdbc19896e8faf0ce15d7c883bcbfaa38861d7c92299a6bef42f7c443f0f", "0x19295f72c5907e8d9f8d8cdecf7d193fa86404cbb7a85522f7fc33857b7a9c88", "0x0bf015760770cbe8e6f69080f3aca18258f2cd092e33d3ed62d8d19d144baca8", "0x06cb21aac0be8dc2528c3974724b38d73a918530976ff118d08764cd42e0b240", "0x1276fe2c751ba49fd5b75cab5b71f64aa0588ede807db1bd583c3d6ae6941356", "0x2a17fd8041ecd762f528d12067a09204f9296ea57374806c39896fe9499b98cf", "0x1904e2bf9c0512c72559e71e3f132f65259058f7d68b9d7d6da1a8f9f5caf674", "0x115b5eb99233a8a2200170733c4743b804c601b5d8d4656a138212d66eb89d38", "0x006b58885f0e09be6ba91176fc8a6172bc16d680f888a3d92f31a3bf213e7ef8", "0x13c6704e90535352934dcdc0483b4bb974d50beb7a5b6be30af0e46fbd7325ce", "0x0fbbcb96ccaf43c773ba1ce70613892543732feccc872975b8eb73e3fb4d54a5", "0x059b4df63dbd2bb66e0b2a826c5cbda96c338fcc38dbf9e9c46041918bdd8bfc", "0x27d859e7868c99d80f99d181e6ef7ea93a694623a89bbe57a6c8e7ee54be21fe", "0x21eaced08f9d0b42c6fa51f59d65f96598e9ca50d6cd1dd49b84fdc0646ed68f", "0x06815b7a3b80971d05fde6d7dc5cd2823363f38d0af5c0ff8abeaa71a323a2a7", "0x06a778d29aabebb5a3cd940b1c33f05551217b6005248e0e716bd5a10d558c6f", "0x14fe9fb1f167c6257ea010088115769e62b60ef3add0f3a22c9fe7a4918e94c7", "0x090305dff314174e27edebe574bd8f0c8fd85843e7d2627db607b2816e357dc1", "0x2ce23dfbeb8e1874b9ba894cb85f068bfb0497555cfd3dfaf3888aa492d20445", "0x1b0fd94dd9cfe774d9146be584ed0b25cb2c7495a708247f5763c2380e5c1cd5", "0x060bb716ba723a4e5f5faa179363a36774619d1e0cd91bf4789a1aadb3e612aa", "0x043b10c508e8681843eddc05e73b95b7f54da5a93b701cba4d6822f9c9dcf436", "0x126734e9502ba9fae4a314b67ade6ce8890e304a430e6c9f4fd60cb8ad69950d", "0x26edd35db97c2ab2ce27b503592859b4317a25a688f9743ef0dd9cc2619db7e7", "0x27b225e4a981af36cea863f591c8bc5aa95a4beb6d5c9abc5e03ba906ed72062", "0x1102728832f751c313ac6610fae58b9cbd511b51d6121b3bfa60f47db12518da", "0x18276cb011bdc6d75eb1c7d5d06cce10c7c9079c8c9920fa389b116620ee4141", "0x2502d7dece8cd7d7a04a1730bfd2868fc64f835dfe143cee18480c7c3fcada76", "0x06b20beaa575dd846254695068484611bbee1ae48285ba2c3d99c14e62581a2c", "0x063ab4a078fcb212275ff5fd06042bdbd17aceae994e2c27a1ba876139f8ec1a", "0x06372d5952bb69a460bf1333ef4ac6b20b07ad4ab4124dd4066a6cf66f406993", "0x0f41d4e3ef55da71cf4037c49d44c0a641f52a5a174f7abec522476e3c623ce0", "0x0f0ee9841b21b9b223c1d1a906993bd66b0ebcb7dafbe2b802bb8165c6011773", "0x01df2eb2fa423f01396e073390104cad8004a6a5f140a2b18ed658068167521a", "0x1ce05bc55407c883a5a41792ef3486ff22e403d38474cfa90f5ed30c8d30198c", "0x037f1fc7934bbd5fdc34388bfbd0f95467254e5df2b5b62caed0500a2594ddad", "0x1bd6a614004398f329b7080ffe69d3dff6de06c819fedea24aed16e4c47164e7", "0x0fc2e5cff7e9efd46fee62aa3b3f22bcc9f1a3bd8917e2e1cf5aa334d29d2a06", "0x274fa4e3d86e7ef8b0fdf1a81acce8f9ed2f2eb4627de75781a813f106a377e7", "0x193af1c5fa057ce682ec728cea90735935a22b5aff46ea2f803a29421aa950d6", "0x0e72c33ed6055471adad61d027c5ac1bf75444fc4e14988b42268f0787e29875", "0x1c75804a4ef1c81c83684d688c4429ab1a7e517dfc602c9a2443c59f32ee9614", "0x08803f69d83e0c3397e09dd47a80cf9f4e423437008cabad2e50110456c8c60d", "0x2d1214ed17bf81162a5dd43a3fdcf195fbf47426044cb22db538478e942b07e6", "0x0c85b24b79ab57504422135fb1cb0c5e1e3a5f0a06103c2486ee6a3eefac7288", "0x2e29f517dd1b30b791bfab03ce747f950202f0eb8267ef3f71ccec40e91d95e6", "0x13281c94a670fe5ab09773af42606740503509efd74c1ed993bc6afaf3d64174", "0x21a211407cef7b0442160acc9dbfce1a1e1d58c9e98f381a7eb48f7bda0f1e05", "0x085ef1e77f929bcffad1a93f920c1d8c8b3632e1e1a1ccd4ecb01602759e087e", "0x2b6f796de3509ea703c8da6276e3ea154b504170c59a8ec4581e9757d74ba759", "0x1fda5074fa5bae5e16fb4f2d18d589a7230b9a1c1e4d08a8069fc8d45b1de3cd", "0x02d22a3c0d324750d3be31219af32a8282c372dfde4861ef86ef15c3155dcf14", "0x0c21f4f4bdae07a79bb3a98cfb351aa629f3239c4d24aef92ea79bfac9c2fa25", "0x1b721ec1c1df81c83acd7a95ace16b3e2ff4297aabb6f58100b5dab06d3dc404", "0x27ec9e9e923edee58189d6c7f303ee3e5249c5aef78758c7f511cf87b953561f", "0x1ecf1060366dea9506fda0d01cba016db9620090a160d5a760a75d12d5d72e78", "0x25d432df312e005c69a06a1f004ec899575034da26392760d17acc80c39506cd", "0x17a0ea51f9a201ba2a0f857c9969a7f6bc6f5d5bc0e4957e1c0dfe4b202e4a24", "0x02d34c47b847d67c9b4dc313bc714ff223ab01127806ff6c922d8763f142024b", "0x020e59e5e5bb0951a660122fc1aefea294e7ccd5f9c79839282ebd9e119f96ca", "0x249c9c850173dba0ffea3568c28416020121c3d9990dfe2e917377467759267b", "0x01e8ec57b7681d631a02d530c9aeef93775869ef093de92014cdf85ee2d459da", "0x00f739dcb9f3ee6e7b5519774b540b2898bb6cba3629bb6c60e423b7eb6b5ffc", "0x0e016f0724fff85d781aeb1548d76c566e5c26aa7996edf504e4167285fda66e", "0x275270828b9ddc964bb8d68a6258543568c844947ed5ed94b3180cb874c68325", "0x00f1ca3fc28aacb8ac21a5b44bbeb0ae64cc339de13e04c74fce820f4f93e48d", "0x216b2f89c90105f570e0911bd1ce20e0664ffe01811cb777f90376719c0e20f3", "0x1a91edf90950cb2689d2c29cb22f8dea61ec41fb061f1b6002f72265694c784e", "0x2da3342eaf39a2b242713484462971afe53df55bed5f5d50d67d9138cd78fe84", "0x29f79c86f5a9c96fcaf2296be36425b72afaad4865cb9090848249158e2ea4b1", "0x0519426a15a599f20d2979302067dbd1454b46539c9499c65f6195b55c760337", "0x0f9c475cd72b7e2e3865e96baef89a149eacd3ab340210a9c5e0de6fc082e89d", "0x15f1d711979dfe13e45eeb9759a89f51db3d27594985890b88c9bf276922173a", "0x1f083ac0549a1ab00d4bc9066f05494148f60c9569e7989941c3f50fd6acf760", "0x1505ee4f79bc8187856d5f3f5a24de97aa082b8d452c63b17ac3a591451b747e", "0x0f20876d712f147e2fb9f7be6a51f346ea28447df529eb41342948fc2d8f096b", "0x1696d12d9ae779c92120ee715f6b8da11ea93af2673715a2df7731db91e360dc", "0x28485f438eec133b0be36b32fae82da57fb4006bd7f5bb15a267e7746b37bad1", "0x2780436f9da12461fbe31d979656e6d1a13386e0e6a5309b050ca819e10ad945", "0x271ea863673332df2bf2471e6c8935b037ea8318ea5b32379583f611e06b3da6", "0x29f1ba4b29c1daecb9839bdc08431bcabe68391ca540f68b484a4f8e96a9dc61", "0x294f4cc728dd423fdaf37377e069aba66f4d3000f1a559bf4c449103306031e3", "0x146b521b1c08c9181213ebdbc2a34fc3efd87ddeb1bfc5e5d17ca951f55abd17", "0x0dae0af973ea0b0fcdd8158ea51b9efdeed5eb664b84ef67eaa255fe4e55f3e2", "0x2604cccc370f0a50f3f726edf1242bcc131dddf2697853276c079ebfb883d8c2", "0x2873b19db1d03896d3d52d6f9361e3fdade5e7b2e6833e4d5ce4661186bbbb9f", "0x0b04d090bcc4cfabfa47f60043859aeb5f33a6de205dfdf0e3d099d4a8394e08", "0x0508a195c0ca583ec10156f205ca1bb6f6917318b8ed6ebb7347b77d72dcf748", "0x09262dfa80aaa0bc61c5891c237a519d3808c53fc05dce3d71f17c0e3f2a5eeb", "0x0ce6d25b1c6c1b89fa005c23619d877f2ab2fde708d30923669a49fe25b3c7dc", "0x2e69685b46c8050268dbc1040e23c739d7216b2c5e76108136d6895ded3ddc44", "0x0278fb3df3fe913657bccceb553138fa7b8ab6e062a5ddeadfdddd5b305ff822", "0x16da892ade35754e57d8f03f3e6f4110a9dc1639d9b6de65e479165ca49f7a4e", "0x159754924e7334854ff803a1782ffc059927a3c26dc43e661e09a1261bd7c94a", "0x2212ca6487b845ba4d16c09e224297d4b1a16e341e6c593d7fabadada3929d7a", "0x2dd088de831852d169aee1d6be69b52c5dee0b73e18fca91cdcef9b90396a047", "0x24ab42ad6749a14fe2f707ec53ac3b0315deecf421b9753032533e28491db30f", "0x2f6466e50ef3c61a0e6493b18d34911406e2e97d3551887af808d67e1ce9ae27", "0x1f5886fb8618c8711ec08de9477571f0eb6e462b8f5e5349f85631f059594480", "0x05ba34953959784a57c0019e916e2ade5d6a523110437cea9c2b94453dcdf2a0", "0x27aee67a3c6ef783cb55915165a5bbfdd86bc06c776f145048bb2401dcf17341", "0x0f57efc05e9f97e7f68c694ba2b3bf216eefbd5c71710a56f460682a6ba5d5ef", "0x1d35eb4a40a41dd77506d872a458ac93d7336dcb72f15b182a6702ca53b94eef", "0x18a33064586d5a702bc4bf64f70b44b5a77918255c2dffbefc537e40bd5951ff", "0x0b0ae5716e42b440b7423bd899319c880a4a674550b7bd036207e006ac7a2d21", "0x1136a0f6c004a2c57d21a00c40dec6f027b140b36d3594c1cdc1b0e8707b62f1", "0x21cec52ac4b2aa7f80f98eb75b4e0280591977d50b677b8ff10b0a3d028532ac", "0x284a636786fa63579b1541746901d48e440cf0c586f1b089cc45e8b830fad22e", "0x1d4a0aba0cac51c3261f7c483d89628d76748b0833cba6bbfcac5243e4bcb4da", "0x0410a065925e90fc70ed1aaa46477a8ac8193a10c48b5d84fb5e9cf2123ae24f", "0x301453b23d055c184a65ad6a6acffd9f520637fe751ff7b769409d512fc92f0f", "0x037827104287d94bbdc06584d36d4d5e2c46c4ea224f4e0dc0c3bb541f053b79", "0x294641ba8a02768c5e3b7f542d281c69dc2c3f2e8032f864295a64b08a93d993", "0x1c12f993f0f1edd809eeefae6932e5b88738b336bbe6f976f5f7a0a178ffeab0", "0x0cb2d948d38fb8e17c60ba6c67608c9ffd912e0a627eee756b8d22af8b9e5e43", "0x26f1ff731268d9bbd26ab33e588acec09fd5a4b70d60b553904f5e2d05e894c5", "0x09aef8a2029f82b76d80ad8a3926cb6e1174d8b8b89c59707c123473120b4c7d", "0x1be80cab12f4bd1737796bc770f17073c6b0046c327bcbf3a36e26406c775c74", "0x2476e7bc637f243d23d762cb3e2cd8430dad89762576cbdd918428a75828836a", "0x196d707ca5a9edcc0e3103aedfc60abdd1c9e577354d930be0d5b6d03617c209", "0x1d262487237e8503908d5375a1a798a9b8c0faccc056eddd8aa87d0a66b07d24", "0x2a21e03d41154bf3191f1a834b9af6b23d40bc01d027c2b4841fb23dc9ff715b", "0x029c647822a1ae565b2bf1249edaeba0cbb3ad730deb6d2e6618fbf9e74daad9", "0x23e1971175b8fbb26c0989dea82d8f4a3f708774c286e4ed2f8dfaedaf3db5e3", "0x1306188b792368ebda1f2e31e846854cbb34f175e01c92457959ee1c6da0ff3d", "0x127d0f7eb9804fc20ab4f8b9409834ae521645fffa86b0c221d9223fa0e9d2b2", "0x2441985bcace35a81b1f81fc6621215df0ba42441e450fc65e3519a0393b1196", "0x2df7d4eb115114544ac4f52fca36d6b33f09f639253e9e3549d5987b0e097136", "0x0f6c5518f92ee2e549d31adbb4e78036ef9aa3c2164c317aca92203e3b99f940", "0x26e2cc9dea47dc6807f87cd87c531b17a7f2f5ea86ac094e5d5a22fc3433dcdc", "0x1c71e33c864b0a8de4d10dc26f76bed55771d1601a0e04d399cb2397064c5cf8", "0x2a2f0b563b4083766c8b6c60872c32eeff2b207a1981c05b1f396178f01207af", "0x0c1af0bc5546250a7fddf1cbd3e7bcdbaf74ebb979535e0b343676dc9f9433ca", "0x018bdf2e7078dc40af1cbe488cb562fd32120499c4c972a6d43b92ce167ddfe5", "0x22b36859a16a8cdc3df10af2820715891f779660a1f9a25ef652019f640bef06", "0x10e697dbbc43c7ae2030f5d49974f8344d5e48ab66d635b41e7b96fbc7c6289e", "0x057deb4fe56390abbbdcd8822cab5da1207a0ad79423920622b0c4a12fef3552", "0x12b27c1639f162f846fb37ae7144f29137682ee7eb1632e791b4628aff4aac23", "0x0b2c7c76d01843a2d14655c23e8091afb6f3559d66c3bbf3d115dc9d70db5af2", "0x0b7d9684c0c8eca0e8c31634c9fb68b2e83abe72a3679b3678a8c9b1a13a4895", "0x13ab0a7fea9b2c828766d2fabf574248d2d7f7b2f8e60e261cef29cd916e9a2b", "0x2de3579d790ac367f66d90557b54668153a5c37d5391e92a6a5615c9d60be979", "0x1ba010b6d63b9538b281be3764e8e6231642c6a6735d89c9808fab7bada21f6e", "0x26ffdea8a8d9894ebbe02a705fb7506e12b1a7f100c5902584e4dcbe1f2119ac", "0x11ff1619a49d6abbb56390e3dbaaf0c1cb01b951a734218b3cbda4e8052ccba2", "0x260c36b80890befae89cbb3478b9f7b5b3f6b11ded47aae2c0d5e0c48d8e5174", "0x05ca88857cb0dd5f380e592aa37f6f94f7f0c3262131cef29948a1a49fd184fb", "0x18b3832a19eb7ee1a9dcf574302ee063ec19046b3b9eb7fb277a48ee8390e485", "0x2535291f03dad1e3c540e7f26201c2e330188fda58be783067698a1739f79369", "0x014f832b38a9f43af26e5ec2fabf6c4250083cf87f0ba86b95053e9182d1373e", "0x2548e6c4767c67691af55162d9ce0e45e89ea08a4232fa0a223fde869bfd3ea4", "0x023ecdaa3f942bd45ba46f528cbc81a51ce1425039f44781a7696f48d29dfbd1", "0x1611bb59a3b28756b840db3189a3a5ea22ec16845472abd68570ac771c8f15ee", "0x0bf7618845013330ff465f12ca95079ab72d0ca9d8a7e633048c11bf2c46c7ad", "0x15c88fa2eba3d087fd29f6de6fd864b875662ffa438144352d684717cdcd3ccd", "0x0d58d12798ab552f96f0d951e97cbeef887d858656b1f6af4010c80091b0c662", "0x0406eecd7bbc21eb04fa1e565745cc65445e4f82f4a241efb8bab06eaf9c7cbc", "0x2fa88eda065714b9ae5e18456130e31bd6f48d02b2415ec61ed209ad8ddc3164", "0x01749863aeab13ca512261103eab93b43fac53df6b04022c7cb7f17638f51c29", "0x01553263a318edf34429d901f3879932b72f5c32ad56e900abf47672f86f9a62", "0x028b7a8be47c2239079a01dd6d0e57ddc03fca9c6a58d3df6f234dfe82f96aca", "0x2c489bef0fac19bb187e5f8a064e67636f34b289c2e8adc76ecbdbb5105fc1c9", "0x1ff548c6690f5227d576668fef6741f999c9914cf4842e793fd5b5194bd0c3dd", "0x03c1b551c84903040faf3d6db934e83dafc5f0efdeb7a8feb27547724727a344", "0x1ee3620e8f0dda8c6f155ce81a9376009bcef2c8d8f6f266e04b7b80ac8cf867", "0x18e45fe7ea171fb11d0c4af5338568990f22147e14421f336fe6e0bcbb8a0014", "0x27393404521a55e0e1a4e58c561180040c18682814882f45aadd131b9f08753d", "0x07ff6857011a24b20d698ad43a5f959acefff729940e346ab18f9d2600f83d05", "0x2981b3a288b4327839542c5796ce2f09af9d022a604ffad61fe0077d76748bfe", "0x00dd5b0b8158e8a73995efd0b9d898d4fd3587011fa586cfe02ce800f3064033", "0x084c05fae73cbd6432e622cf9880f0d28337c6874b87b88ec0b45a55d393623d", "0x1e2ee2fee9b9bf8d3f3722e7028ff3af8e5ec6319fa6d8997dc115e5de2ea8b1", "0x0003418fc5909b62b0296e6eb42aa07a971050939e99ee371f6412e44e0ef577", "0x1c4994a2d41258064376be5cf3c99887aab74803f67c12c64e65aaf7f1ef56b2", "0x0413c2b38733961feda0a68493d3cf44febcd77952b8806ff583e8c40b31032e", "0x01c46ad39455255525b267b8a0533c5c66504f81ae9534bdd091ea98994997f1", "0x232fa2c090ff3ddea83adca0b9cd0e0918c9458b75b0ba3b7d677add820be289", "0x1cd5701c80a10f420eb34f534738c0dccfccb6c87ccf9aece35abab37cf05fba", "0x03b981fe0c71882c6194465537d5e402b816118aae94bf8518eb07a529e4ea54", "0x168a588900100006443658a61ca9d659f0ac451d1e0bfd5a6c6a3aee85723bea", "0x1e51f558bced240c65b7cebcdcbbdb7a9ab06e3580d46f318de84edc795e6f88", "0x1afa5a8c5fce396de56ec97dcf0317a6b7cbc3ee1f8e9a3bccd6d870022b750c", "0x1135efd63e8f8cc9cc0661dd49d36ac8ebf7900d90d66dd5fa816054d4017dca", "0x2914d21c2d2845ce2b14e951f42103599c8755015641db03c54df337103440ad", "0x20c87a2d759749aea9b2f0f8cc01452452e711e39eaf5a8b07100a197127eff6", "0x0db07920dd779c19fc1ea8ec5323d5af0d511b869db67dee0408785ed922905d", "0x0d631f18fadaccbfdd3b3be46772a3bcee276378cd2e46baba90d56468cc50b6", "0x2c500f790d463fb136f2d8d4cade62296e7d7c49bce18395b3014c9fc72d005a", "0x176a9eba97635d1e59b19faa2b3325a5b1a27376a16dec7317aae4afee02bfb4", "0x1202fce1a501b88b455ca44788d55214baeb3b54e37d1cc80f3d6ec0e09d4747", "0x222948377ee9d27fc6406007e1727b566b825decb95096c9aedfa8e6453a5cbc", "0x2ec66fc27d82aab2c98eb50e67a0932210f3c6e12456269d57ea9095f41166eb", "0x2f5c233dbe3571836fdac0915ce6596fc0844fec3d0bf5a9b968ca58c45846a3", "0x13889bb59b9c07953b52f66123c8c1380e6f272426103adcefdef4dbd2865da2", "0x1cf78f25faa52c747312d09fb4e9abb4f1e55a3da349cc8dcc6dca81cf99ac3a", "0x2c0eae2866d65c97077047d0f4c43c28c8d7f36af6a9c6fe07ec89219f1cc735", "0x28b816cd8b8c98163380066d0a50d8b0e06ff1c690b81b918c7ddd08a6b7066a", "0x1d46d91669ce5be6554fc3ecee895d41fdaeee189adee381abfb75ede1488cfa", "0x1841e03b9fc527450e4470aa8f0888d9ec8599db6b0f7222dca26cd43d22bb05", "0x2d2ead7b2078b09085805c2777c90f6c55744b49a73bbef04c899313bafa0f57", "0x01830a8db342676cf7492281b4cfc7b138c55d44daae47b14fc888e5bf745095", "0x074e4ce32bd14b01fe9f6729de2a12f218fe443fb708738a860f1910bdfa4678", "0x1fad4cb140fa4d559cf9525fb24e7f17494d239af679a030e7d1b7c9cffa949d", "0x1e50c6526c7324b97b7f338752bd700ca5bd6c0efcb225260224556d76a28331", "0x02cf0359b8da1abffffd73f90758645793f5d1112fe898e8af0c61e79e673e5b", "0x0a14ae497b49785ae7771f0dfef4bf41857bb2fd1f27d15c3cbc8ce3df9895cd", "0x16bfa02f57735662eac1c1f520b4b3f9c4bd26cd2792177b276068916954cd41", "0x0f6fa95e0117b734579f68dc59736c7f9afd9cdd4a90e13629eeabfd84525e9b", "0x1d59cafe27bdfd78f564894300763436daf93f863c3213c1a849d1c3169ba771", "0x289e39d6a2d4bc817ab104443b89b8a608b13bbb93b3ade772a63bee300bbc3a", "0x0d47edafd6a8d4651c27f6bee48e9756f5d6515af1a3a3512f59e9e3ebdcc331", "0x198d6aa9072a06de13128d7b17157f85994a10c4957262770cc4f59e6c6d332f", "0x174b80e4210f9d81be7bf70e3ab0b21de8065f7222e80cbbd3cf985d6aab0f05", "0x2d78036ba0948752ae78b1138b4b9c4b67f0d78a9c8965e1bbbfa356158532bf", "0x0c1ff404599af823908f32e607564f521b75812c670543e390cb02e3087ce924", "0x0a561b578f4be4c533151da1a529bc98f4940aa5b48f8c012a9c181d811b8f34", "0x2012a6ed245e48cf65030289a1cd01d26d3eb2e439bbc4f16f256adceb40bdec", "0x0824422abb64b758f600c18e6b998c19d82a9ffacb95f9eff9e018d5afb30baf", "0x250a091bc91301bb1393782a7e21eea81c0bc8e68161a3a4e5e4a8a7e30964ad", "0x1a4adbc8530eace4e19696d77a06e1eedeba3dec2e44accd3acfd7fae6d076b3", "0x25a511f7b8595b12278f2b05b4ed6684ee12b1d298fce27ccd6787b5a86e26bb", "0x07df25e8f76f32d99b99dd04d927c1b2fa1903776636e38f7188d8c2b73c3a54", "0x059421ced9bb92262f97e7c7beb8135539dd66bcd6f0bd41bd124a929823f75c", "0x26e1cdacde91e112796df70dd3a479b595b8cfe7c4c95b5956ed477a07813842", "0x298083deae9e0cc40a9b60e494e44e6efe93a8e0fe21181cb1351d97fc0d954b", "0x0f01fc7bf4d2f1ec8cb1af8ff17715316fc44387d515185f49a2443ad2a14ede", "0x186049573b3286b17003f9e5b27b8a36a78b8f32efbf0510d9fcc8fa7e73c5f0", "0x07335829d8e3758cbbfc4cc49b655ec758086676b4d3912da39f2ccdc4a28d14", "0x019d072d6e66aa6e034843cc3d7ca51c47df51f35dbbf4a99d34293fc3d59624", "0x2bea340a223b6665f5be6dde2eb55b40a05aae26d349a6c4af07e3458ab9be5d", "0x1b90f5c0e53409f8b573056438bd9e6395f5256fabb16006c009bcade1eecda7", "0x01932c3f3e1c4481420c603e23f16029d8b97603565f6314184776d865ba2e7e", "0x12e4e9f31be336777527af3ad443884e353552da362921074e023f14580b5e73", "0x25e7a09a55698b0c7323472b2409654ef12f2959a7656c0dcf35ad9a7926f3f1", "0x178c9238fb91fe512f6885e512e2a59b7686a34aed0fde1ddece6b1d08d422d4", "0x2b568832e6262628c31e405305f88402948b515d28861f0dfaef24921e7e352c", "0x146ca0dbfb0fbb98c162eb84b37228cfd7311e0d15d2e48def85f9d207bd175b", "0x0095371673ed3ee55892e373d5ad5c760268c83df7f50d44d29d366e1d7a9373", "0x051c57cc37343989744272869cdc94c0660bfcf6ea1c1c7ae51427fb298c9db4", "0x1c8bd96ca390714a2b0079ec38e25af0fe7a69fce1620f376f770e1325aa65df", "0x1712f67e82f90446550d51c1d2e4ebb1475d6e6043a5c46eda3170839785072a", "0x1c3363715dfea957de9614b6cdea17066c385a8864dad5b43aff09c963573925", "0x2672b8adef74adb0b71c0166de766a39e5e1cae03719aed0fccfb7ff432fe916", "0x10635771a37850c2417c96b7f5fa48a98734ffa59038d8b7136cb5d0c646e1aa", "0x0b16fd5ba97f28f5619f6989cf0d665e908cfe8a1fc24e5326461973d09bf0e7", "0x0027df27e1618278ed22497590175692d262d4aafddfe34bf8db619c37a66068", "0x036ab8de1d7df77301d16cb576a1346fd196d25534b22667f50628769ae136ec", "0x049ab0f37ec5bcc724a3ea321a91951f90cc00afdad5ba3d5081706df5e75e6c", "0x112fe3f664849af9f494ccf3ccf0d4b8f1e4a600c29631d059bc6ec343450c49", "0x232b3e1d4715272d5f18a036c137f0c6fa56878c9aa054cc33064e2a5d30f567", "0x056c91dceace41ab131a1c59ce4a320857224a09657ed82f7141e7619a5db545", "0x144cd983cfa259516382148e290dab14ba9b5d8e6e76b84ddae2ab086e7a7952", "0x1d21aad5c6b407e6eee7d0b55aa92ce0a32a39e918bb32bc8d45c28094a634af", "0x176f60be5a21b98d3469e1339bd5c7a0a8ee84a0d34339bef675d064e6e0a466", "0x0329d048658d0eefed7f3aaa9bc143b0c26636f13262176d650a1a7a2044d34b", "0x0fef28f114d6420d1a288f960fd9dd40bd4a5a02d58081621711ddd2887c757b", "0x08818813ba3e9a9329254e78e00a83b360c905c7202459cfad0ab47658276a81", "0x020a128b7112994e52c4849bba8d1217f13a957bb4d0ba6a0d97cf1914b65b07", "0x0980db3c7d2c8866e9ca0902c3b8e0a078585951ea4acbac245b61cf55a703af", "0x14f2bd6dc317fe19126b583da18e2d7175cfa704c5267b848a2ff9a12bb188c4", "0x11226fe9d81faa6c6a35d3a12230d63245061f2045361e757aa0c5ba7c5b3152", "0x1fc144aa275cad950ee4e3182bb87783dc45906b2e846e2703228e5d5328c1fb", "0x07858a3e15adfc14141090d972cdda3461908dbfd1c91b7e9b991760c1d47749", "0x19284489d7b53ed2549c5fc66331c71b9b31446eb3668c65d85ad094727d45e0", "0x0587702c19b9737857f99cfd021f8fc6af71b428e3ae90f9f5d2ec8e7140f5d8", "0x30602b296ce2450d72b00ee8cece9f896842ff3470b98e1cba2a1b3ad87539eb", "0x2776dbec079a5034700cd9c6e21404eabf7c13fa17d065a2d69d2987a718e78e", "0x28bdd009549a97fd0c29e9c30f7af9555d864aee05ad1886fb918d371ad29e90", "0x29791a2e17dc204afe645306f584ad767f2be949aa6d061f886f21d0401aad14", "0x22a667b65908699a22edc1697324bd37ffb0f18f00c0ba7292ec8e05470fbd76", "0x200d4863b2f35a853b7d5dcdc22bcffd8f45b60bd036c2f94907d873e5d95ca2", "0x18bdccaca11c8a10a12be6f7cc96d4557dd9cdbecd5f841e87303e3a312e9e23", "0x126ff502714b58c3a40ffa3d96df0de4e8aff3543975235bf3510c7ab22d897c", "0x0570fa4d1c92cf2917036fb2d477727e55b569b4a58891a07f96c500c28bbce2", "0x08c84000db8f725655f47432db3a4dde514dcf49b40fc4d301a17ce5d7228feb", "0x07212da8afb35376a4b9f93c20f7419ec704b22c898b20ebbf3ac9f1bf513038", "0x28c6bd8667a7e5336ebb7e53c724990fc8af6a059390353bee16d8c8dba971e0", "0x01790e7a8c59ebbdce18ea7b9be261b8848a8f5c69b3cd7a7b63a1b1e6d4c926", "0x09ce10751c2b7b90bce0d62e8fcb29fd3c8a0d286e93411fc66588a70a14a4fe", "0x203ec579417ebd5f056e1346a8c5be34cda66c9901fbb0bc27b8d773de7f665f", "0x2297981100bfd0bdbc495572aae5ed5676ecf2b693e33913b8fcffe65f57f4cf", "0x00e3fff36bb554a017f94e88130957a975d343d15c0772a67ce88bb1736db3e5", "0x22214f9dc31c1766784846260971d051aeee92226b6f13e2c4678689ee1304ba", "0x1eeccaaca23a1446309ca4c3d9b7d07962dbf8bcd8b3b37218f4199281263327", "0x1bd52cf0abbd32e888d402aac0a358309bc83eb74256efa17edc1abad196bf63", "0x26cd8ce2ace79114e2ee96fc1ca3801d012345c68750009745735edfc4e29d71", "0x1dd921013e6519e29b9aa0f52cc8c02fff3ad7af6a187ef0e90635008406dd02", "0x10358e1cb8ac12e54988a64bee4f1e94921f030a6926a00d57236283ea0c0ac2", "0x1ca1168b167aa5298bff96d82356b7387ebd1d70431c30b1c0c0df81fc0408c3", "0x08d1ab2692d291aaef2e50985c869485061578a2dfc37997222c81ef301fa942", "0x2d59780dd0a00a869516c6a0b300ed06f6fc39e0f9ead60507cb24c14444899c", "0x19b30f06355690afa779693f7f99c4a470f8ab8abd6989993d489a9b17180cb2", "0x1b93c9367d56b207bb1a2f171b56208c6aa1279be2572c1a59e65345d873768d", "0x2f8b45e1e079448ade818bcb785b0c8bcaeef004d956142347a08467e1961809", "0x239af691b7d6edf2761f88deeaec665169de99399cef819dcc37b4609b6cb4e0", "0x1260bd299d9e99321561090559b3f90afed3a36f36c4d397072de293d34cf8b3"], + ["0x2088ce9534577bf38be7bc457f2756d558d66e0c07b9cc001a580bd42cda0e77", "0x1b86e63908c4b12af43cec6810356c94d21c9e37d73dfff9742a58e0ec356be1", "0x09ca022ba1142d170f755212e2edc9d0a4ace33e16825f540d5d50d5a021a169", "0x277e69d47a133804241f6aebe9449be6e22c849c6d8ad8c938eaf613bc1aecd4", "0x17b57ea03754e24ae0ef425aa2ad931aac9ba5457a18cec594545a235db6b269", "0x11c740983395e0f4a026e2c7c939236375c9077755eb1a37a77d5a1fd74abac6", "0x1cd85529010dd7e2fb7ea403515bab5727556a479c59b822efc5a81eb37bc5bd", "0x2cb9354002cec4bcbfa985de34f43d702ced83d197aa374b5a1f96f87b12f292", "0x1f7af98e08f6877923f27a3dad40c525ac52f56fbbd878506544f9acd61aa32d", "0x2b15176925df33a45c9e99a7c4f26ad946b1075de58c7064c0ff92c431d31dd5", "0x22c89859b4d399d3a60a322d6b399b88061358493f3cb3653fda940e988c1ca3", "0x1a9f2730c80854d8f6dd98109363d405597039373af5055aa67fc18e5b1938fe", "0x040bae2c57fc68e3ce5e294998ea060e2563ebbac58ff8fc4a1a0a40575f0ed3", "0x16bf4f5622729467ee9749cc380605d2bc4d885cb99699aa2dd8565c4faf8b7e", "0x1045ecea044ba1cb1c3bf07ff4968390a3ea075001b21637ec7fcef61b11329a", "0x26a319fe6b7d6e08dd6cea9587cfe3f523492ece769f70f66d3b6197a262fd09", "0x28a5629b4c2083387eacb09c1571256d172ef1ed9c0738686da84216ba81bd6e", "0x186be22b6a063d18cc8760dba63b119cfc6d8897e32d6a0b19de280532fa9726", "0x2c41eaf9c0128c486c5595a1ced6b3dd15bd9b73218c6af88137cb8aa5c574e7", "0x11864265d76e8873b4d2ceccd18dada46ab7213321dbe0683727fa2df7e3cd7a", "0x1383e7371d7f3eb75f97461ff79565538166ede6fb6ac68b02cb60d8322467e4", "0x1a005346e9edc59573e3989f34c304ff1351de9642f398163602e138c59c7469", "0x2b541345bc4fe1589d649270ceed4b2dc6299c69a5d24b460e36f3b4eb486052", "0x213e74e3b88692068b420fdac7a62f3e90f87e8bd993310b982881b4ea7eb58d", "0x0254370fdf60e319df5d27b984e21d8979c86cc6c9db77b47e9e037d41ae2b84", "0x083b7377987bed3fbd0c5ee3279cccb319adaa660bb6a79ceee627f5a6369ecb", "0x0a2b26bbf2b84a55bc4c5b09b209d4a77bade4ecb0999e2a70021cccd4fbce1c", "0x287090d407c4c5293cd72bdd881ace1a4785c51889ac9ca053faef068533eb09", "0x00a9fcc21a234bc22a473c04931dde66476001ea6e32931277ca4cdab62a8587", "0x1d79fcc5066ff2a62d6ec0c096f3c0623f9722c5d10d6411386b8cf06606d116", "0x1d2da676081b7b0a7d87a57c6a6f2c91022a82291934ae8d646814f38b7c9cc3", "0x0121189d7362dba92f3bba28737ea247e85ff4b3ceabb4eadac26f7a79d371ad", "0x03ba01bdc7f31b4b3626831d5e82852a5da5a7f472f497564362ee63bd6d6102", "0x216487ac4eea81e4d835b220c7f1e7b7a3312df5ed0b6e606a169bdec89a35cb", "0x0eb5eb424bc72e5b20779d6138a7296dc333b4d98e4cede698c1d8f3069fc804", "0x1476087ee68863fe69d538de90f90bf271875fafec3aac6831fa17811afc45f6", "0x25995ecf079f4f81925ce8050e6bdd0b440e7adfb00da7e4dfd8a5aaec009f32", "0x01b590ea145df6152ff0e8eccb97f057eb378d3dc8585a8195a8fc6b03dddb21", "0x0ebfed12777ad9747734d82fb7ab59ebc85f07c3d055eb987dd42470e016bd52", "0x2e03b519ff070e31bad1ced25d02de18c5c073355890f26d6437c9990a3e232c", "0x028ed48befb70534a157c0bc8037347830ff6f7bffeda93a22663117c3038109", "0x21d5480ef2288cf37627083f5c6ff5806645d7878339792169d109945aa879cc", "0x2a017f4ca62717fe9d616fc3b74f426a22666a268eed190c92513679ff531866", "0x085cf123084d6b4b0b2b34cf06cf6f893e0a9db664958560e13102dca258a182", "0x01cab1eb61ae5a9c4f1b1f0f4cf71073d063cf8ea6ecb3a326bc3f2f24fc30ab", "0x08b659a737c0a7e198c51de07438e7faee94369715042367495f0305e89bb96f", "0x02b3adfef956007ba949e044a68115b0a9c895a81386e769744e7b5b2c307df6", "0x1a502a7b0883deaf9b24a7b451cf439d9b04c40af2fecc172b057b4fc00cafa6", "0x3048a536a2a75af41a0fa596752c83edb19c46c00e4072516a2cce33a42ce949", "0x01d008216832f77736b9f2c8eaf18d2ae69a7595a3d2e8725e75b3e9c66ab22c", "0x067389fa6719bb9e493424576d30d6254f1b7d54e69e1d1896c1b15ee85c0c20", "0x17da04cb5060861588a4dee60dacec407e08d6b19650359452705699bcdcabf4", "0x1e110b24526cf19448a04b71f91f834d903a08d3a7658e05ff0104ce6de14af0", "0x0b0a28b67269dcfb242231c7384d9b96c4406708f1a7bec26160e2352a820e34", "0x0226ba223bf5cc831bca604a2f55b324ad1d4b29b81ae33cbd7391ad0dca0c61", "0x1fa506fae71f617db6a04dba21eb6224accac5f7cff145947093bfce2f3f5cfc", "0x29724cc2973b5b34c4e53fb981f273589e7e0467a5b4b5a16d596f48844f0394", "0x20185815e6d5bd43d769b1e7b3a42369db44fada44534a9e41a181a7cd90cac4", "0x2cb5ecab94a2faf89986b565545493d5d8649d73a9f53133b614af6d89376612", "0x06772704a6a6c396f2f186272db825135c5986fbdbce0a3fd879bc27ee2134bf", "0x0112bff4736679a477440e744d7fc6191e168efe6c37fd0beeb6e64d30591851", "0x2faacc248d2f742b7dc50b013be9c4b2ea8d00be172832ad07ac0e268e391a57", "0x115ea053915c9231d6b9a71b4f3437e76d08af6e8fe7e42a3800136498df40aa", "0x0353e2c2845c0fdfc53f58394e2dbaca06164d10dbaf756127621b5a22181235", "0x29b3685900bbaca910363ae0cdec5f61cae2c52c7ede3ec010e2afeac748710e", "0x1a73ba985b824209d0a9f310920791fad9227b21bfd8e8a3a9f1c2fa89fac1a4", "0x274682d63a1d6a9eb5ea22e0558b145f5b9b5e845c8c9dceb83be943309a305f", "0x249de663dfdf6682ddc122e02aac0d79398f38e6089d92e2c892ccf949fcafcd", "0x076346a494ca499918229d2faf87b6b5afd4992f0d7d4023cbb677ea4376d4e2", "0x0712154eb43b0a3e8bdd94e29ad85939e220daf6931b84464741e64e9926b50e", "0x15bb7e127b9fc937642692a92d864960e249ddf327fc6c92afdedd89befc6c32", "0x0d438d885c3fce5b06a80584015eaf7a8ae05c60052c10ab80d80076800d8e11", "0x2bffb873c9b04762b2e362d6195c8013dcf7a5fd881894b7dc383c8aa34a9e0c", "0x24ea42c76f7350d08e8b1016663fdaa3f8552b9564e5ba2da45b76652707d6c0", "0x2a62ea21a0ade4740b808b9d838b4ef205b1193b579ecece0da34523c481dfbc", "0x0c49774a68f5274b468cea0f32211cc9a8ca864c6d32f2c644b1ab89edf475e9", "0x0a9b4d3d32564d83c24d4e052dc3072cffd61cbffaec957151fead13246073cc", "0x221179d848ae3c29baa0de8e19ad399cf000dcfce572ac310fc64bd4d201c3a1", "0x1702294352579a43d19da15dee1fdcb2a70a45de25203435e2340692f7f5e0a0", "0x059ab788273600685cf6de04f87ca9dbbceb1aefe37f779663a7ef5019d4d8e0", "0x23af64b1622be07735af1999691398ad6a034029a109ce435f12c1b21b41f599", "0x109ed21e2456ad7f94a0c6ca6ed942ef5e8132433e5fba6ed8f49b2038594516", "0x26d9ccfa5379d3fd6927a58958338d6037872271d891f19f67f70c39e0893326", "0x24ea9e2db358c1becf7dcd7d0e46979a647207816ae5a901fb00a6ccd991d0fe", "0x0015a9b8c33fce93ae3971d193a430be98eeca1d27735974cf502bfb20c71bbc", "0x2bbb366f79bc3baa138d79a96ab5cd14826bd3a85347e559550bf351f296dc1c", "0x0a1c76641eded157eaa1bf4aadc956791d9e7b29eb14d07654af052686b70e29", "0x0a8a9f9ee8ecf8ad0b5cd84217af26fdce2ca16c07bc747d103abcb48ab21fc2", "0x26d6852b5917f4e229c46824d00b44442b77d8e566fe3b3901ba6de2011dead6", "0x19601734c30cb2a44ee4a323b35f2c171ed67e0f3c1fcec7096e5f01fbae6885", "0x07895f7f029f84c3f17e359b0ee926d402505587f386cbb71070bc17cc87d044", "0x05807e0a2b2473f3b87130586c7868228eb4d9503bf25cc2b0f35a939e0ef483", "0x1ac9ba8eb9e2fde0a79886aa8c7dbd362aa490a355e07982828be3e5099d2fde", "0x231c7595f76fea5828672afc5bbb6463cd00e7a07346e2588af5638e3b321b40", "0x2e3d1677310217ce5fcc58f4039532ff946e2eff2b80d17f581ca78f0068672d", "0x0974163441712975a33b4093f922d7df17b2bdce7b7eb02c7830c5980464000e", "0x1cf5c1a4280822a59deecb82a64baab4edb87977e98ee29139bb51671b9919b2", "0x11ad46e13792150cf57933aa9476ec9184bfd5f23de46f1df78ed7e94cc81289", "0x0828fbfc0951c1ea0c0f3d5af2fe5796ed792a9c3cc4002b41e7a1bb8e63dae7", "0x02c720a8486e7122305304ecf3a00f99854535c4ff404fe82e30e99e8500fcf6", "0x09bdfc942fba8824c0a38d6f525f9176360d2881aa425028f1cd3a7fc3ef72c2", "0x1d954a0f93250e5581c6b897fbd72f4f2a943dde51e262e7dcc4a1b2ca82e2bb", "0x2b829352e297ab2106e74f9fe702f69635edf37e7ab0e1a7f92f14c98aed56eb", "0x12d3b917e58f1f44e1babaa341d1dac923dfac75482e108af1c33368734a904e", "0x28a9e6c65d06ed6ea47795bde9b177b5509305f85326062ad5015077afe4bbfb", "0x2bd3c33ae311c2f8d4ad82508b76df890c311fc8d232fbc2dc535fa593221ca8", "0x272d00d7a8fb1463bb624f1dd774edc8f3a0923bf9059bae3d84da23767d6873", "0x1355a796abdfaa903b81dfae32101a13068f5070440552eee0acf2a4d07d03bd", "0x0734bcbce4180ae16d4a6689b9b94f2b02cc7d74ca8ef1592cd16afe2a033728", "0x0778d4a614c2f76e28199d989a9052e2627464b620d91e7b6d3d15dbd4799d54", "0x16bbc980a67b2a65434d087c501859d127db377ae144ff634cb8574fe8bf869c", "0x12a3e7e197b0504c6894366245bed65e326db7c7aaf2c1c0d59e4bac10d633cf", "0x1f35f8c4431fb0dbf42d9d07334fd67f99160fa9f7e20d811f4b8fea7dd5d33f", "0x25d5bf1a863a0a6441cf55e7c85b8f232ff1556e77fbcc6d71e8bdf349bfdfbc", "0x15e6b8d9ab7e063a3638216ae471176e87ee4ce30cc24cad19587a23332320aa", "0x01929ef47c7322b77ebd0d1a40f9ec4d41eb2641bfba35a9cba7b708a534c9ca", "0x184f51e791edaa2dea7911151247bad4b0e864d7a8f678c7708ac65c51e3bb79", "0x2605adf5562d5055ffb284df1ec0d4e371eee0595ce1422ac535a410597cd866", "0x06e6d41feb832c2fe007e1bccc81442585bc9eae1612b8bc3d2a4925c239ad51", "0x137eb7da068955cde28db6ae5e780b7ae1c0d633cdd113bf0fde4345ac9c954d", "0x2e97930eb419f7353ba27b25879753fe64d7d187023ce2de4bf9e70eba6e9bb6", "0x13af409362087866e62d6860fdab159207405bf9c75a9efd9321736a1d812413", "0x0fd2f95404a9e92f46d57c80507375724966264560ebafb3ff2fd19259d47d62", "0x0bdd93ac21aedf31826fc3012fc8fff14384add521d98135df3ce70e47d38116", "0x083ea678d5a53e8a9b601906befbef23811a6137788bb873fefd5521f7d99f03", "0x08a9906be6e9ab93cbf1b94f090df2d02df6c6ccff6364c2ed6986d61f16af29", "0x187b1c82cfaf880449337cfa77f618e3ed19c604e65fb768b0333d8d535eaa47", "0x245005f814e38250751143117f5e27d5c173f0ca4ea2a81b1b8f3e90d7fec4f3", "0x25aa5a53ec5e71f3f47fb1cf8ea8c757fab69a61274fb36eada71deaf1614db2", "0x01c244a2ed1922753b39ec6b775f07cad91b14cd9b6578b64492c2cc4b0c8bb9", "0x01664e5c861216c4cb10cf3a3bd51afa0f3e59eae24fcd7e7daaa853d46c382e", "0x2af001a296c111e41e327ad212ed30234da2beada0449ea1d2e0f0a00e424074", "0x16022bdd67d2ade15f661a287dfe23915433b270f28c24e6066e45039aed813b", "0x132d7ca5f935f3e8864268ad723e8780df36916384a54b812c74a749a26826f6", "0x20bdab9829e48c89a99d0e8b0d69b79a4a273808807ade4ec5db95fd184c4f37", "0x28db494350ae9c81ab52d719ea05f98dc2afe87bc1afe556161e61772258a951", "0x19fc92f1d2c1dc043af3427b77ea74e80ab9f6041e0e51d1b24d9cb9f3fb3ed0", "0x16bea7126b8f072ab6c86afca80b606cb90c7e5fd02bbdba1dd733c3cb884705", "0x1fc57b168a5badca15a417ebb4bf5beb28fd09e0dff889550a126f5833f1fd5d", "0x1ad20d1a3ee559b6334be4ba911dec957d56699cf37dd7b97d23dcbc65bd9afd", "0x2173430a6842061f027393a443b6e25e59a3e5bcd20895ade0fcd7bebcd88885", "0x11673173043e15137361db05a0b067147a23d7f3003680f3e1534b183fe27cd8", "0x037c80af5ed51c1c22181f3e7738806984493eb998add05556eff65129259ff2", "0x1d70b961246d2262cacd8c0954040548b63fbd25f3038285c36f6b44e9b9ff5f", "0x2184448a7bb80d176dbe3de73f383a909635e4610c25864b2c63252186b6c44b", "0x03bdca6b22fb80cf9e7b317190ebbb9f6c7d3c96c1bf7d5013f36521a5dba7d0", "0x2b65873313d5bffa44d510dcb3f55048436f4eea91a100ec0d1af952eb64b247", "0x2a7fd02ef10db1c9dc03c9cbe82e857cf06f37ea10e7e3f539b53778ca274616", "0x1cb880cea192153865713565ee4255ce72da23b3d2142d265fbc2196fb8b569f", "0x16628b6f83fc36bbc1d60029a69c843d27484f594a7e3ba8d47cdfa548a91a56", "0x26fa9b84e855f1069e76e037104f8886b760d4919bed798e2e4b8dbe0080f16e", "0x0ee86c87bdf0ecd526e36a6c4ac9fc9bf05b9161856d658c1b9ecd80da9e9687", "0x08a5179993a8056405527cb82b6f619984c63cd115ffed3a6734ffa85267191f", "0x047aa61e4bf0721ac4e0a2f291e62124bcc2ad3949dcf96e875f45df7eeb5437", "0x263a511f033e1fbdc6d282b52712a09bf5d1fec21ea8bbfe2eb1ef5bc4f21148", "0x226520bf730486e2d8c859b449bbda7631b86432a2c100dd7386c9b1f993f34e", "0x2baef27107a52854788f0c5a940f5a4df0d18d38b893cbb1157b386a7d356357", "0x18022cca17f26818d54e60e300b5c949d9c92122f7de5651a60cf70c8da5fc52", "0x07baad301d58460d1e6ed10f52abf1bd785caef8565777fed94dd67de6717d25", "0x1e476106c4bce3903a5aac6e110df2cc1a7f71b4135be3662f4b01047e248a6a", "0x1e019dea5028d23b2df063c210466a88c3fc1ebdedccb8045c7e9d1bb6e77a98", "0x0dd55f006559bb6747b254d29a73f5ea7174c6b6067e730a5f9a9908186308e2", "0x0993085a8024a598e0c9059d3b919fb2ebc81be408cb96fe38a48a952c029189", "0x143f3cbf98e40971b2115493ee06e26c7893787bfcfb13b39f165869ec7fb9b7", "0x0525ff28fa24291b8d033b021395754fa030d497312cc17caafd008524eda07d", "0x2d9fdc18cd2586b9f449142017909392025095182d5f40d5911f708eb05cd852", "0x230997202fcd6f051e1bf1e59a9d01188e3621d613fe0e78e6dfb400efb43f45", "0x044b56469ffbbc9d0c0f075e20f390d30d11981a767e507b80aef7ed69e7171f", "0x1507d88bbe10b21c23a94555d1e4d379aa71672e002450393eaf7a23736150b7", "0x104d6752a761b50026377ec798404f71151b3cf6a9ea1be93c6840594824e9b6", "0x25276305cdeae4c16558de60da72941446a9fd2226aa604d44bbff12b1e0ec23", "0x10f3cefb054d630bd7dc4c7cabd97940dca683dad8cc35a6d0c30cbd9812051c", "0x0e406cbfa384c6b24ed043ff3cb1d6891baff0585afc4fcecc7cccec809df03d", "0x18f36033fcf64f1bda0c12616b00b611863efdb8966db7ed3534cfda40aeaf0d", "0x165d022a34cf10ad3255723635a51a35ba2a6db07572dba106dc56ca6c937c52", "0x223c8c9aed305b3d18265b56ecb7a4cfc4b10e58baa1365827a539c47819424f", "0x2103fee94674840b1aa185a1f8221ee4511a2b5268f1ac96d7b28c8984fde6d6", "0x1c1396433bb9eac9a02abf2390973c1723ec5cd55297a387a92806f78ef9d384", "0x1befee24005a88d2c9ae9226169e898106996fd32fecb72b0cb4decf109f1b92", "0x1adc49f1f1b405df727a64e98675ea0ac2fc742c806f0d5950c8ac41350f5184", "0x10a0e0cab76db0b6a00799dab1f2e4a74ef739173cfaab2d03eae240c9c847cb", "0x1a9aff62d6c66fdfed0eb91b6c4f974c1e047c0b27ef49b10d2933af1af3f997", "0x261967f6840995daf7411034526eb5ac725f95e21fc36c8ed191873985f95cb4", "0x1338030f85fcd2fae09eb016f4254086e1af2f88fe7dbe29d183c89ed5286098", "0x02c53745d1f0e66499ff109e777727e750c1134914cbb4d52bdf1649c7911ada", "0x2740100354406de4d94eb857a1c5df1c0e88d8b0b82d10c1276ea7d9f62a05d0", "0x0b8a9153d3d643f0a9f7dc08f24d70863e4f150d1c32ac8905a6226887c9bcef", "0x25dd73d81ea8918c9c1ff69b0b86a0ed3801ed1aa4059d94eb72cf548b2eea1d", "0x253d813cf05f2ff1c7d6622bdb9faaff277b4d0312a5888a9dcd12891ad1526f", "0x2523322d2d2a78cc54c944b57752bdd8d2c8e62e3af51e020eb2c15ed830f5f6", "0x2ac9c2d60d456848e8dfd47499cdbd4f2377f3b4ac98e10e2ae3e4f83b0071b4", "0x2a4e35f1df833442f9ccb8c75523b1ac8a9716174f47fb0830d94f9bc4386bcf", "0x270e7f6b15f2c0e0926147cbf79a7330b676d174acb65b730522dccb096f9fdb", "0x1933ef75d4b862f2274634e1f5a4e50ce899f15214f0b8feaebb2ca2ef52ced2", "0x165130ddf77a82db84278a31841109da4108d364bbdc6acbb1b0fa7aa5175dc5", "0x2fc1fe031dcd4538d5d8b1340d0d37df5505e965b7e7dc4c19895b9f6fceda6c", "0x0e1ead2be6f64559d903eaeb6e02a7c85d546422e7730e360a1e4bcc0f62f16f", "0x0a983360bf32392d5df30a2e4b22535a4f161fda3d05b1a5067d278e21c8e54c", "0x2e27e61828693607c17eff9bb1e5ed0baeef782e879c5230b86d6a79d729f4ce", "0x0d1cea26a08207e522ace505e837caa2ce7b105cbd04e7c838c1acd006ffa53f", "0x0b958dabc9a8066de9e4cef89abc82e3396a03568376fb44ccde4c38cb2a1944", "0x16f5b42d88f8d4f787ffff796bcf8175b1cdce307261dec86cf2034a9b88bbe8", "0x12b68aec2db262e0a61f0fd4b976b00ddbcf7546ef27f47d7435a288c2b6c63a", "0x1d2238d8d9768dc639d06ca5870e3503f3f81ef863300944c87b77628ab6d84d", "0x0d164e32fca3c3c8da3ae332a831cc9a95e75d4833ae232ae382bdc6b790d91a", "0x02fcdde6d6eabd7f2fa19234fb157661b762a5c47b57739a62000d7f6ca8ef3b", "0x0f133b8b1e54f43484574647812ca377c802a1590df5e5b8f9c8c21908efbe37", "0x03057ea8932e9bf7d1a4bad8241e14f1e60afd13ba4e90afb472d9dd29c42bde", "0x23dbcb6ecb4807740debdc825f7764571bc93f33645825d0e45c88b0088a9f18", "0x01b90754a2058217cdb64ab45e24c2e29423bc3a76f8289579927ecdf63edac9", "0x28db800ae16d7033c8e107e198aeaabbf9d0271c74d957c6bb9514a0f038fa91", "0x02f97a36ef93a7904cbdbdc36e5ef374e58eaf37b5b9439473cbe477c3fab178", "0x1bad1d9637a6ad6db5cbd19ba7b955a45b9e8089d1697445a130743e03ed3caf", "0x2b96f520dda8251a878b28bf96d281855b9c43220b0a3279179753f740edae80", "0x041f97f76c60b28e0fdf7974bf922b7a0999e0e0e40c654378ae12843212909d", "0x13b5cf57475057a2f5fb6d08093123973aef9726cbd9835b95616c2aed5588e0", "0x2ca43aed5aea162e8c9be92a15e7ad0af84d44f3d2e398b5f7491fa2df12deee", "0x089f6b1ec8b51cd1e6ea69b9649520a6f0f2f96ea11df270ab0c5d9adb5c3df0", "0x04f510cfc7e528370babb8ed7c50c34c6041772627793a0f3711d1300b4d1275", "0x260e12c47d0ab52563affcdd5c2862f4bad5b7af4ee037ea5f8164d0f13d1059", "0x1a656424760e75468aedd8515b3111e16cc0d60f8dce451f7bb35b12dec772b7", "0x00cc850e959c567bed20058b6769fc27a6c70cf72f222b80879e9bdfbc6711a9", "0x088947910eb3b43ebd8688695c64ac020e19d0bbe875a7f3a0b699bc60f18cac", "0x2c25c236bb48035f45fde5b178105655ace9f3f9afb09071e790dc4babdc86be", "0x12dfe1bc28654f5c9ba65865769c9e47f2bde0d79ddbdda21704904b2905da68", "0x05645b68f99a564ff08f745e1413bd83ab5b0442f0b8efaa2a986a6cfb2fd8fb", "0x17cf3ec9831b4d6ead640d912e41b4c72e9c259126bf6310fa4b110e43864c75", "0x12b15f28fefe5d6fa519ab9cc67a78c57dd721ab44af286e72fbbd5689a66f61", "0x2da44f7210520779cbdacfaab2e1ef01edda8eedb6fe6d037ffaf8e59842a00b", "0x137ff7323fe757f32afa165f11588b403bd393d5c9a961cd2f7da2e5d9a894cc", "0x1318105fa9fe1549f04ef48679c73d46b91ee0bf27b4451195de945c8cf78aff", "0x1408a4259df52a491775936b2c2d476a121708c312e635ef8d1f843c3ba3438d", "0x10cf20dd5734c18880dec5be44ae2ddcc4f447f20cac98c95193eb7571585d07", "0x2787fe4623bd3264e0c8b5a471974ac1feb1e37fbc3a9c8a4ea74d6010b7d08e", "0x1b90e21074907545c1dec3c59dbf2a6b1f703258bc03707e33db582d45ab172e", "0x0b8e912a5ec5a0bfb779a0801b90863edfd9429a7b3632bb5022fdbc40636cfb", "0x0d9982378cd9a8370bb7a555c34df3183ee6b0d8abf31f1f547a3993044188db", "0x1e497bcfd5c95cdfd630b0afbf6d376f29a468d1cd3ecde56f6940221d248af4", "0x2d602401cabbc69dff3dd552e271eec29a5a4acbc935686ccff9a15076585b7a", "0x170a5f4518f58544330671ad2a361f2c803c0d355f3e10a5784951f2abefa707", "0x21b3a23c3a553d401c08502eca497be938776af671edfe44c784956acf98865e", "0x224dd497bf3a4247b9c48c9ac3cee5307490e824a14204ed88c2b1166e8e479a", "0x2654965a3bf3c92422fb54e676ac8401baaf0f68d42664e300624a375302e0ef", "0x1d525f4105f51b69c006828670e7785b726e95be160ee1a3e299677820839f32", "0x28f88d089f421ca2bfe697270fc0f34f50ec41a1ede53612c52db74479b4b323", "0x082e621153ee34324e9fb7ff3d123fc9560ef9af0fa0f948db24d1c8e6f07a9c", "0x07f8578337523867b1d9403e9ca61ad99c0d7d5bcde4f19d8752e12a4d5805f7", "0x2e52f30dd05931adb7d7e85255849b062ba1cf2eb8d59208b5bda8e35d69819a", "0x14cb3e56b2b8c6605ba04261a8b117791caf26f7c233bb183f83f72ef4c8f345", "0x2fd6b4e6c892609fda21414dd8712de845eab305be627df4d36c8d325c9bd7ac", "0x0325898c8434f7ca32ebd73f53df3b1adb0c9940a69e9191fd996a4a96157bf8", "0x08f50a7b584dc022b85d6a16a0d3dff6b8a7ec4dcf5ec066f99fc4644d6d5d48", "0x29c5bbb8eb214fb285ca30a43cfd7141d9ceb8a19ff3c970f2bbf4c9bae9e11f", "0x1264cbd9ec001175211e2856a78901e4088f1eb7eaf5934999e1997307e7432c", "0x28a0e7819aa0251e9cf2bdabf64fadbd51dc9416533ae33f7cb97fd177688504", "0x1a9be651c412fee6c800848477cbb67e4c52fc23e51ade9c48f6af307ec621d6", "0x1bf70a24fe7fc8946fdde6f556b3ed4b03c33005cbe7f34ac11296e5b0c75f6d", "0x2f56c8c0387e5e44cf4921abd33b1590cad0719e932a36195c5138e0c6ac83c2", "0x1109db87b7684f4927b2afeeff00608af5f211920eb8d638e3a7c943b293fede", "0x1851c29804025b6f9c69c80891035590a51d13032cd576d332ca89222bc75787", "0x0909e4cdc0bc47f2df4898106b5c40f25c7137e1d5ac9a986c9f66fd5dfadfba", "0x2ae3e90e2650e286d5913d4dd1e71d4f233659701b319aa228e16af9f010e07e", "0x06a6c015f95173441f7a40d4f1bde04eb60fbc4dc72fdab7dd81ec557235d530", "0x2f6ab5d35ccfe9ea366da257c8596fa6ff30d6c46816a3bd3d484c97f8d2446c", "0x01f9c60308182eb6d4a83f9272bc220a8745d9c9127050899bf6426f7ab57cdd", "0x2f514c412bfd9754e6798e4c3cb13d5e4c4b29609d3ea5617ded35bc01d799d8", "0x14c4162b9c9eefb97941b1f133bb18225d28294d092cb8917afcb3e08abcd9cc", "0x19921fd625c66ec67ecd8af3d6ff0e0a3cb650e1e72b3fc98884b00354085b32", "0x1c852aefc9296753e1268739ac15d2c6d21de3436c816f75f93b8debf37eb6ca", "0x04bf4a69b1aa4f304afaa1dd1bf60de1f559e8167edddac1eb88ad9d02745fb8", "0x240a791f3b8bb62d5d9aae80f341cb569fe3fe72e7183d8e5830165e4d123753", "0x151b295b4242e0c09fef7bc5ef40f1e3c8551654186d62cc663ee4f28ff5e764", "0x086eb3d30bc4d80664a074a09739dc8c497c93cf7e657954b0cbf7676165f23d", "0x17aa8992d7b901eade7eacd95a8e89382a292a7121ab0ebbebe0dd62622c21c4", "0x1a5b3345a4c0d875663657607b5c7ff832f489b23a3c43962008570f96eb8de8", "0x2f03b46d9eeedcd7f8f4cf2cf710e48ce3f31d1364f03345b2a7964b01e6347c", "0x0fef583e7e8e102feba879f7bd60241870a0291723aa354a35259e0a40050d45", "0x2e07b5d70ca583cf4d9baffacd02d7d80fa5e523abbd895086a36288b969fa6a", "0x24599dbfa1dd1f4714d585248cf23ca1394b858af8e904c0517baedbf2f176df", "0x00a826afd370bcb65b66189e8d986777e61377388d8727e407b500fb5291f8ee", "0x28745950870bc1848adbc5f4bc03415f0a2bf23e905e7d33cad03de907081e3b", "0x219e6dcda590fc88d405673d2cb4710f8b5747b46dd9914d1be4081714cace58", "0x296692077b42e972399f17ba71ffededd95185ff7253d9d1f41747c6f27dbe6a", "0x2ccc5f0e2049d426841862f32f8062829fb5d826a6a483dd5078de859f9cbceb", "0x04f915a4fabc8ab208a615dd89fa207d367700bbb9bc061d07fa90a70feffda2", "0x2e04b7c1aa853f9ee5e4fbb5cd7b6e60ccea4ed5928a34f4e59ea9eba8794708", "0x08700df51138b36c0ef2bed12bd78340ec69b04a2e1b865108036391b4b6db3a", "0x2503336398f165bdea8d4929db1dd0b3710416fd63d7aadcec41bb7062c24782", "0x05633785a50a9c77573ab10d893341a0cc2df072ed8eab9a2996a47a527bdaed", "0x0ba4084e44c50e1412a4c982dc0d8a0d4622513b7c96e9fccb2c3be2d3901e1c", "0x2d6f32cb761406dfa9e03d7ff8a43bae106dc4519c61c3996cc9cccd8f307c86", "0x2f959c830737e631395846373b1f7d003c8e6bae3aea2edb73491244f8373687", "0x14863af59792adb1bb40901664349217498d999250cc0a858db27aed54fbaa38", "0x27623d101b1f922899f9c5783e1fdbb1e7552826e4d6b58d6df8d986937cdc82", "0x247328a4d9ce81603e37ea72cc5d1c895c21f09305301bf1411c0798602a6268", "0x1921909aaad03cc78a6cfbed6c1056e3d93a25a5496cafaca12af4ce324c6081", "0x0a85c0358cf388b47d14d42feafbdd4392df154f649b7213e29cf101aed00d80", "0x01bac04734a5920d65d67aaee04165de621beb56f902ca483860f7077537512e", "0x1dd1720966b3231bb00b08d6b8bac6c76dee5454f784134b93d8c70ab3eed999", "0x22897debc6eb2a7f36bee1e7f42ed4b0d37ad696535d82d39ccfbbe92e86c08e", "0x2ad01bb42b95d113b3b91ad88c69a33c1e94dc85512bc5168ee73065b387e175", "0x2e82bd0a053ce03af9aa947df5f131791529a57f8360a2cd697eaa177c6000b0", "0x2d2daeaeaa93a5f9d8b6529f00c4c6d691c3bc4efbfc8e7c2f08ae3e44e1f4bb", "0x0ab08914b2de57397983bace0b327f98c1a9c1e58c76ef2e716cc305727a0f72", "0x2758796cd1c178ed0c433c4f1b6b19d42ffa1bc884c3cd1ccca107cb2bc91998", "0x063df5b0349016e7bda4741ec898c74e4a30fc4f1b59fb713a824992311e30f4", "0x23713016555546753d41abd69e6fb91e4344b7c05838048ed0641cedc5fc6728", "0x26bdfc0a894998e693b7e2059d6a528aa86ab57eb031b96b53fe8b5adb74c075", "0x08897118f75cc8e9115dac581b9553cb407a1de135b632541bb734f53985286a", "0x02ef8eb2c7b26f7a57691ecb1e15a40afa9b3a5557abe81146ea6f6d4960c346", "0x254e8e5fc11b992348fd7a2c9f4a5a0b586bcaaf12603658b25910f63cf08b01", "0x02f41c21b73dd4e7b510dca16e7b4b4277301da5fbbd59db03d3a32b89c57b7c", "0x253f09ce9ecfd2aeeae98ba1b29806bc2871e5fc67bff13e303db99618e1d0a0", "0x04395eb655582d03f25775e66ae67be0aaf7c63ceffbbea9226b04b0e795bfc9", "0x13711235c3d21dd749e3e41bd048a32bfa2e796e26b72e05c999e6e6126e402c", "0x083c75117510a37d43b5513963fbd0f9f33590ddcc297e3cdd9ea42add7a175b", "0x26cc9b5718d84e606582d35d8fdbda944c6525ddcd7488cff21d4d0d823dcea9", "0x0e8978f047929b1a94601499634a8da020b9a46d0b1187d54504ed8a344d56e4", "0x2b11423af39a5d15be397439b5ca50aa9a6d41234acabed2006247688f6fa805", "0x21a56381040c702dda5a31a5aa275ce692685625e5aa77bbc430382573b402b6", "0x19a869e15b3f9b965016feca2cb82a2f14c800945ba49db74aad8e9346af07f6", "0x2b01c5a2baa16f9569d4670098466f05bf3ae097aa930771b76f24afa6be50d5", "0x0586148573b6b56617f94602fd6c86ad4a71b3fc67a35448d64eaea532582124", "0x040352e19809dd93bc7a2c549bc19cb007872e0599a3127a3e7704411894f98a", "0x2d6486b8e7b9549ea86cf044e8950ffa36974e842e1fef876561e1346c5a893a", "0x2ea9d2e1b7d07c9a3895565840e25843c9debe589044f305c1b5872c74e5a49f", "0x12e0dc4105acd8692b7cea0bd76da34aaeb8f6d00ecf84b4f062270413a8087a", "0x0da9c10656e6f42c3ce7c980a70c9d793db4df8307599a33a491f24b6368290f", "0x02f3551c6a648387da629c96633d5cc99360d9b89aec23c18ac76af21b11a850", "0x202de33a6fce9dfe8aeea34af1ed5c74093386c8a553d3a3da46e134731dde14", "0x07372d41054dbc009e3e91f902d57a213f043575f3427e35768a5a52482b1b7c", "0x02f7e35a4bbe9699949a819262943c97e8e938cd999cd911a9edbc716e2454fa", "0x2a27b84a7422e29b8cc73bf54bf535b011606c819b4baa6824b6123036d73ff1", "0x19527e9093b313d5d2638c863499839ff5d8e5f98e74b312fa0c63aff7161a3e", "0x08571a6b8b730363299666231e3c49ed231d1e355d93894c8562ba033147f025", "0x2c0f32778edfe932d912961c81d88e98d4fb64caea2cc2d4e3f213a5d2a1b9ed", "0x2710a63e84f8bf3b15da09e69bc24c567f84a4577610b19cc58191b2b1453ea0", "0x2d4b8440f168745ed84c3e393f75bdc0b0fb3f148e4ee77b525ebc258a953dd7", "0x234901ff3ec65e0a4f629bf6e96eaf379aea7c808ca9ee79b6b796895917684f", "0x28a529a627cfc689ba1bb3372072518c7720b450975339e87865c36be526e5e6", "0x1a1af260473d83489a6a466ddc1855fdc6e83d73b5c5c0fed554af11c6cef5eb", "0x2fd594dc14997e8e0123f3af16c9289d088264cc16a8119e8f02ab7270952924", "0x0d3564e44716de8c02d8f8278b0d2f819658234bc4db59147fa3a5dc23eec833", "0x293e9ac448bada42377dd8b02d5ae5695e886e0f8e43f01b38266aada3cfaa0d", "0x2186e961df0728bcd7b667d35e95f354cfb1ee1288aefb7e0b2381296daecdb8", "0x1b4972ee03b2787a27219cdeab7acdb5dce44bf8368a0c43e1e3b8c8a7f49e74", "0x01105ad26651d5ac52e817c32d86a3b10f05738fce996b2fa905ce1c3279522a", "0x072b770a70dab242ac30d03f5d2477595cf521ba7c91478d72e45358569ef30c", "0x1e399a42196a8061079e9d61ec97ff8c837195bb936206997f5a93021b70d275", "0x24f50ccc3a68ab3e2cba453ec40a8796a3c59735dd3303bcfadb6218aefb7d6a", "0x14fe92dc9227b42df23f8a5a0a7a2f50bc119f01dfe708b9118f75616714bd3c", "0x24713d85951736c77b66941c007d170282271958c98fd42d6b12696a7065916f", "0x05cf2ad05c75de38238f63258c8dfce0d1b698dede7feea9a97b263cce815ceb", "0x2d62695c7008a11d0c874b40395a695fffaaea6e6bfce85ae1580dc48218aa26", "0x19e47227e74d5563126770fa5ba61405ea6f348565c3aadad0830b3ef5d775a0", "0x20e43ff580378bafe2074a6b2fd50c74594537f98565f2d65ed8c15e5ca1084a", "0x264e4841309ac1aae92ddd9cb4d973e237406d50d2849c7091bf1c1bf5c1273e", "0x1238beacedd4f53b35b578af1c30c077f4289680658fb26ae1b4c0b2f710e604", "0x0d90474c262aac1913f37459d4f2055dade903de9bc02fa5fc7c137cce05fe35", "0x0f5aaf4827d5f40e00235ebd1cd1b9f6ebf3388383e692573b95cae4f653ad82", "0x2cdda4350f35334773cd823df37097ee967c28d62d0c45c34d0cee4008834893", "0x1c0c8c2ebb6860e64dc46755a7e072795bc2c78832a618bb6a2d5d0911b7d768", "0x269fa26069db1cf0cb705bc3584c0150b85642d4f243d5e68d7240b8e8c03276", "0x09b443b0a7676575b9a6d3f003609fa7c7b6226341ac8389258881d994fa91c8", "0x191b4697a8e295ab80f81b25743fe13f3fb6998e9131e99a86f22bd33e7bddbc", "0x0b488b6a875f238bc324f04288ad865c8577e8f906a971ad4bb9d91775645730", "0x275928b25e503c9c95c01b18a5d30081bb0cd31c36cd172bde1db83287f5f5e6", "0x1fde053dd87291d7e14f0f2e7b7461b49f60e4afc39cfdcde65d70f65c3b026f", "0x29b2c386816e9d3f76100e8fb9543329ff88ac29199a181358dc231aa1dd3e0b", "0x04987de3e3121811ec3c10421005e133fe1ce9c2aa7d7c54a26f425cd19767c5", "0x19a23ba97426bfa81b757e35aa3559050628665eb496ed8732d409942fb6e16b", "0x12333e97d1f0e3280b5e2f9d96561b2c04d001d2b393791a861fdc26c1b7f767", "0x23e48a5b646d353895d06928a181d75ad25c95a7672f3a1f4917ca03baff3227", "0x1b6bff423317d2c2721965972823ca2e93b8f2bb0a52245cedcd94587d596382", "0x16af0f387b9ba94c0ba6d176df30701ff378b3524680aafda4f7c4df4b088b07", "0x1bfad9c1a92234ed97c51ac7dc2d80f2e908c098b28bbe712cb75b92797a2103", "0x29bb5064073e9a6aaec7bfd94d48fe2207d90ea8962530f388442ca4d95e6256", "0x1cbe456ec3f8d8849e10fea36509acc3647edc3e765f4de7489264f5e34033e5", "0x0087a35062dbd735636f76cef6fab3b412749781f03b39b181495a62aae42424", "0x1f1219145ff0bf15d9645e347879a7347f9a6a5f3dea9a9bf9495174d228bcc3", "0x07f93fb41605d3cae1b42b92d527b2ce7cef14ad2b907702afa13d76ce02f88c", "0x0ae3de8a6edd589ab62767e92f3c19efbf32115679d2629a5ebd26c1c7d34299", "0x15b6688e877724b41ce08fb17695347b5eb8844423c71a98ebcc188c23888dcb", "0x131cdc252f00cfe48cd6cb1b15344b6fec8b176c1ca5584d76d6f9f6ad26bb13", "0x1bd570cf878b3dc1616ca32bf55e0b3fd898444d0e70d64909ec789ff11e8eed", "0x1e5a54e71ef7b9eabf717c01dd99b7262c3b43d1d6960094b8e508d1e11f03cb", "0x21c88de360b36a24fb641014feceacee94856233dfbccbdd1e9f0f35c9e7fccd", "0x2ef387dc1012ae94898b8afc9aa54a3be1f91820b61ab86f45ecb3ae21e23ac3", "0x283914da97f036349936af1157c536d9c2873fc3c1543afdbfc1c0c55cc6d5f4", "0x276ad4f7ba33971e4db2292c7ff704d15a14246a6e7d76ea79f1189066dd42c0", "0x24ca7fd6a2014d9821a624bf07950e8f64f5e6892d48e4a71cd4f63e9e2c63d8", "0x0fe8f370d24968de4dec0fae5919d8f4f666673ecae78bd7e22dc2276364afd5", "0x2f0bbec7f6a255512df348122df4b91778775ace589d4657dcc1223aafbf2586", "0x180732ee6d3ae2aa4866158f54f4d8b980013cc671d68c69a72d5955678703d1", "0x05a0b0ba16b7b0631dbe2c92f9121284974a7033a69be30407bec6b153590703", "0x2908a5a3204a9a144f6565e561bbfe9a4b664edaeba4106e1a57ac77290193db", "0x18c860a5d2537a84944a1075e804c32ec66cb5979908a8ca8cd7f2d8a7029c0f", "0x1ef80617b025bd54de5361dc2fb16cfb90c364e37f7a1f07ddb9ab292afc0e91", "0x2ab495215ccdfda498510f6d5dbfdac1429464e7788a229feae561be3d62c2c5", "0x251dc073bf23010a06bea25560e1be3ccb2c38e67d64eac680aea6c19952a7ec", "0x02201c3662a59685a511e2555643567df50772e8c150bcec0943a8af3f106847", "0x2bb9277b8021c5d354300da09101d24c72a842f97627a82065e5e67a22f465f9", "0x14f5ee46878e605585b3ded3fa8b9b7fd62a2017b6d2f30ed61339cca435e348", "0x114578668b59522fc7d794abcd2497baabd855f3fba503d5f5e0486047bf3fc4", "0x20bc06a35fe07cd507d0dd0a9da6987f228017055096ee68cd33eab3773a1146", "0x184801f655e82f8d32b94fb0612baa4ec983d1cd94cada67237670051d5fac5f", "0x1404d5fc7a2e8940778158fb2d303364892147a64bfee54b25d3906ab5b3490f", "0x251df4335e5164fcbbae73beb8cb57b809d71cb59d6e303db0560b0c1ee79e0f", "0x09a45be49f35c4f987b58d749c78c69082486d3f8777eba4103eac7190faad57", "0x2ede228b9b96b21dd5e1e6ea260a87f902c0051f1f203c788fb907df00e51177", "0x100a3118e3248ac400e6aab0e4e6b10f07e96de582c2c923a99cd14e45d6f209", "0x15872dba1f1047ac1faeac076b57513ad92ff71b6a6a2b32f27adce084894e10", "0x1f68a35d81c05733a573076ccd7946a4039da22e42959520737e4a6843283fa9", "0x2a165a1a2b018ab2fa4e581d7cb567d9b1515db27ea710af3683a8919e99a282", "0x064ff94b98a0588aa924e943ca627fcbd2ef854c66f917ae526f719fb40c6759", "0x1c8349f898cbf2d1fe6db936c53bd3564b673b72d673aaa39f9691e08283d5ef", "0x2e4628a8655d2fc84a32f10e0a95e92d0576739c07050bcb0158f156db6e7c5a", "0x0068316de71fed80213380a8757b3a9d517e7ea1e4800a22c510755a4a1ec152", "0x229e32cdf952fd49ddac8bacca9ec0a85b9f5f1e8b4ebbd995ec5b8289a54289", "0x26c9af69ab4a7e08335cdfdf33ce102a14cfafb05ad000afa7383f01b9b5b892", "0x14bc5140566915518f20d51498ca60f6e5e48678f97c1bb58e17af4db8f232d4", "0x22fe06bbaccc5b18b4a8bf2cc8c47e351291bacee5c5226fbd0cdb308734339c", "0x1dca1403773581144b083aa9b9768db5a81902626de0d81d80f53d75d247af04", "0x04152e8ca329e892a4503613f3472ee94b7e3025a592d4625f420c45c56a1f52", "0x13ce7edc9f1c7d2ed533026150f2bb6d261f379f1fbb48a8d556cc5ad7914e36", "0x24f4fa36a48be01d0bbe57854d48399d81ec03c394fb2eec544a631f4e1cb1de", "0x26e0659af8c838aacc352710f1433d9df9ccefc47bd5c487a0b3c29a01e559ec", "0x222f80f3327ff730c8ca585c067b5ce946724707601b7a4a72476c4f73e7818d", "0x19cd3a66216e859e433f64e4f9f3e2ad9c58d993ee168ceae5ebed3049ab2f87", "0x0d01aa823ee846c2cb695543c8499803101fc0ef222e3c2b44d8680e8a76188e", "0x2e17901918cb6f4fad9ac0d387757aa77c7207924e177d0826ebcc45c76488b3", "0x2e30cc49639069e2101cb479c7281e8715ce5f34d17c016430a9fa75bf484ad4", "0x18694d18fe6758b36c38ac70d1344c6d2b70249db92a74e1404683b2f00dee5c", "0x2597efc11329ee3e0c8bd40b4a78681738b4c52af4e55fb5be529996b56bffbc", "0x003ead8cba0d24715aea9ff5443d25ee640893186e6ff6c045dfc91edbbd1c94", "0x1e17e4583d68f0e1e7234d41915f2fa3c7b7c04cc2afaabd7f3bbe071cf1ca2c", "0x2d05098ef2828d71e8758837f5c973ec97b7547bdfa1433a5527168ee9f9d5c0", "0x09220ca57e2ddf5a1b2f2971627d1a74b7c1b837ade64a37e8e1f0d436051a7e", "0x22ee5c6d36a980b7a428f8afc999eb09868adc52b4fccfdb68b3f5fba518e03f", "0x1b70154b6e76cf9bcf4411203db1c19c77bc0ca8bef907ae8a4b4aac270842c1", "0x1a2ad9a834a4d41bc0d5bac3b7e9453100f58c8605fd112ef6b7a25baa7dfb88", "0x075aa06f43a273433cf8ee196e8577e5fa28844595b1f2b36f6473ffda38380d", "0x070f884d5d0093ff75fb09ce934c8733008f994efa4f556520f11ee8bcedf82a", "0x07d5a9301209de0fa56d9dee45f8480b12d33a73be02f078f7b9df6f9225ddf9", "0x0100dd4a2833b127fd800d28af04254a018853218ce565a8f615995a0f2466ea", "0x164c79e2906202e73bcfb8105c5c10829397bcb0089ce03bafc5f0e627e0d836", "0x29dec9bfa2a12f2fa1bc9158dc1d3d1ebad1d849fad58d34163d741923f8fdac", "0x27d590c95d3dddcdd43e3c40f7579dde645f33c7b0ce03d55e07978096257f88", "0x0c32e71be02fa8302d8abcb8ab2c6a3dc4e962e75955401c1e6a66157dfb965c", "0x0cecd591ea4f3cfe0c7d3edf52f4f93d60a3126433bf9b9e47710d298c31e9d3", "0x070627a0421fde844216f5f24789b3f54d44f1a06184aa81f75aa227335f264e", "0x116f5232abcabac8a8b9f1a3ac86bfa97fe285811ec2cfd733f1206f449d1de6", "0x2a8ecaecf1355850d03fa2f1a7904cf3a2ba7d3bae30aad7a35cfb4a6d7dbec1", "0x252ee8a2dfbaab265c060600b3f6e19f24e491ddd37195211f95918d3d39b911", "0x23ed5e73a4223df85afe948fdef2b6e0d3c120aa31e2f1b4c89054d5218258e8", "0x0ddef510d2c7ba32e4331ddba93aa688bb9fb86173625037b86ba4c62a0600fe", "0x2339cd5cb769acf2dafb5073bd988be15a65bf8ad06c38a82d38d317f0febe8d", "0x26fb4a101c97c06acc999150483d44aa762b585c422bf8dcb37afbfdf076ab49", "0x077d5874dba21d260cb02f280c5fdf78fb8ed9e0acada998ab5cb833b09d1858", "0x22ddb2bebc8cd1c946f8522d7326702328511313b40b4a9e812b69aeb6113220", "0x2e7c43c6222e6323f682c05c571f6aa62a3da64be2c3f381698e2c0ddadc93b5", "0x19ee0e60fc2da7a295371c667ce850772acdbbfa0a9eab7a7c94a50c9c682de5", "0x04d46d32c131ca79258ef2c525659b8138c0e199ce5968e57a82e780f1fa79b9", "0x2ddd25bd37dea23386a030f4bcc1d4382635a6dc7ea3cf3889a5e8faca46bd82", "0x0be3e9d472b8118ce3d01a92fc168de78549347b44526893312fd5ec3d2726ad", "0x27fa8f235db616a5909a2f31896dc8de9594798707b477f343b48ff528e49b8e", "0x17226412ab2fab6223eeda0b848333816a4dd6495e29ca47ce8b96f8c87aea21", "0x008a2aca609e6344086eed8a710a35469bdce68646a435a6918277a21d03d4a8", "0x27a10619eec3b5211b7ce9c318df7edfaecf7bc84098dc1c58232ac25093e35a", "0x06def2df638eab9899865393563ec8bc81897fe0f1adc5c0499755f25497fc46", "0x0c86bd5b00467b98563b7ad1b362a058538a7faa110a438b9d0ec7be8c50c098", "0x02237c3870ca51c0c9daf086524707a78be8845df471e4d4fb3f2e7f30d90214", "0x2aef4c14a514a36ce1afa9f2c5f1ede8d00530e01e2a704d70494cfd3c2982cf", "0x0f425f81861ada856f01fcf0d5ef108acea281735a913d24eea75b55833b328f", "0x1e562f2a3a83be1321eeaf564fb19f57aec9c66e6cc8fda18999d5baa0b4630f", "0x0627d8f4c1a8c8f8c5e1eb617598954aa814a756782e2cd85b79e8e1e748c705", "0x15e5ad36f719cca83a41f67782388cca380c25992e5cd14c670fd3c317b0ea5b", "0x0cc8d138d0854f9b62697b7791da960be500e3529cdefd4f0b18d16c5e757ce2", "0x17ff555b52d28be1b3c46c80946df519e9de247d2cf8d8175086f975d24c1e8b", "0x0fd5dd57c2cede876671978d2fd289aa0a02693252b74f7fdee8bd404e6c79e6", "0x203144a77c72ea89fcaff39b141def7e93a1da1fb9e22b7d0c6733bd72f06f69", "0x1979320524dfa45aa8ef35eebbcf6f621e1c855b5704d8bf755bed7daaf721d4", "0x089b6683b1f849dbbab0f1092ca04880f8b894d7f8bbcb95cade4e736ea28998", "0x2c2dd8e6610a0495784aa08bb9661fbe25c908396b5c3f2bd51109517fa28162", "0x2b9627b579ec4019306886e1ff4003aeb3a33249be5cc6b56dc3607b17e42477", "0x178f70a99501a6e05bf4ca79b2d6da47049f8c988936696519344ddd931174f5", "0x224ffa0f9d0d57eb0c7d718e99cf3b6ba01b523548ea0ca23a3f156c04083abe", "0x00f2ee1e2be1ece2cd8aef1dbfc826997d304d88cdee555ef67a799759c39ed4", "0x25757740ab14ca93745a76000e24328eb1a3d21d3cbed1930dd1ba2cbf7de236", "0x0fa6b963bc65bd930510b3ca6e1ae62c1b4675edf79ee79a7f280eae6496f16f", "0x0ccb794ddf870bb92a9cba5f859fb3cc3f4eb1f1117d14c1caef37beced0e32d", "0x123fc6d306f17fcd5a4309d4fe6e0cc1ca00fc23ea9447a7c6b68c7f6ba50005", "0x22162170a1f845eb0aa1ee7baea486212a09814a9557bcb9fc72cf90f0a29961", "0x13e385a5cd2fbda978dc7740e927ce8d422c9ee861c43036257242484e497e3a", "0x13bebd80c2022724017d8e3eb84c269810cecf47f9f57e237bb4be69410a7803", "0x13ed291502566a7033b4c4607245156a158a6fc84f4ba6f0246c1de057d8ff1c", "0x2ffa06928536af91c7ac3b7714f204e26c541142742179217095a6e54f743247", "0x2a6df655e926c4aa029749aaa7c9a40a10fd55a368624c148b5e528d4313183e", "0x27d8531ec6121a3eca74db524323fc100db502a580b8a4cf8651f1bf6b9b0238", "0x1ea104a44d82fbe1bc1ccfd4626cea0c06693422b3846b3a2b4aa12a3b0e747d", "0x1d69a3852720a88758034d954dea602e5989114a4667251b0da5915412ac5ff4", "0x1b8e232710f6c1ceeff9c1086d49cd8d2e647f6926da913cb5e10337d7f3d7e5", "0x2d40d3f8e6f9e3aa6014c69630dbfdf3169f88067574ffc9210f7da599c4fb3d", "0x24e1c2f60b1cd36101770cefc4334a8c02f00cc696df64f76df54a6fb6f0508b", "0x2408f2eb6b1e958ccadbff81c9a44913ac0c9cb5cbcb4b4054017abb3db8c04d", "0x0e3c6ecd281ba2e16aa37dacd2abc38eb07c1353dad96e87d14e5ea33ff8ecde", "0x248c7cfb7ba2e71819bfc755eb9e9a306cd0f6e3212e254090f0006d9ec543e8", "0x267fdcdeecf69d799e79f68632217df51226d8ce39574d72b4ae4f39d21721ed", "0x2bd9173ef276b7d4911ebf78dd15342eb261603c2c9afcf4ad831de9fa34bab9", "0x1cc0af33d07e50b2adda3346723006250fabad8fa3ddb365c1d8582f4dc65f14", "0x221f2bc4b7dce9195f9ca9ce8fdeaefcb05440c20dd9754bc59c11447caecebc", "0x18ebd5c63b0bf20f45d238fd0cab5dec8dbf1996bcd1b3489f3c2499ecf92b07", "0x2f338bc5a586f2774af3beb92aa92ce8e58a5efa19ddc891be47a5e77e9f5a4b", "0x0556b9c3784145eb4f2ff6e0c88f41989da5907f8c7118ae492939bfe4e9fb1e", "0x1ec100367f65684538bc6956805ed37051238a3637e47022a3294cbde38b2284", "0x1645a29dd4527ab91a4b798c7096e832073c8baac6e5db87e26c215bf448f84f", "0x22a78abf7d5b362a743ed52ef2737bbbddd375e9b3bfb42409a95ad105ac9350", "0x1a9921dead26c55aafb3ac9f3f35acb61a49d5f181e8036540830bb18686eb37", "0x0eb8645b0d2b8f0c3927d4643574c0b1a588272465d319e15fcc6c3262191aa9", "0x0e48af0cb275af55deb825a34ca48904a47c31b5592c4afa9077d60e5e7ea655", "0x17dfbac5a26f06fff967cfef597a6da11b5bc894ee6b62e626a62e85a3ea4b66", "0x0dffbd016ffd2b795226a83edbdb3c5a6f78917d7fbdbbc1b3631027c866aaa1", "0x2f948d5f70856b5f23a4338d244f6ba7e7ebfc750e16ebd1e2c2d13825094310", "0x194c9f7615cbe3eaa0f885c59e420bb89dca60fe174ea321d80435301511713c", "0x16e81a0540143cbbe662c7ae726051ec663d621562fb3701240cbfbb4b17b3cf", "0x11ef0c2d88131f715e47e9a4953f789fec78decdbeed34bc8eaa42927ea6eee2", "0x0876e45a4f862901bfc620a55951802a1d1d5c3e1414308db7d548400f668535", "0x2e78d35e1dd86776a4ddaee1192c055aa8676363bfcf3165317dcc98017e6c75", "0x19f6e589ba384db3c36adae4bc034fb9a444da42164b6ef289009a2cd7d15a6e", "0x09fed90b1f10f84f6739bdb1b4b508957acceadace687aa735dc9f6ab14404fe", "0x055e35bbef7ce5ee7a3603222e09005dd5192adcd70dc33721714137221f4831", "0x05e8dc359ee98d3bb6990fd928ecf056f9bb736e0d47cec22a96e7cac65a9828", "0x0c732297f8b0c272fac76944ee969930752a7bd3943c7b97e038bcd2315d290f", "0x16703fb8b02c94ade315d5b62aa1bf7834de248310887dc13cfd13fb6c2a10ba", "0x28715ac5265d7a812af4e39e43bf9ac80059635d01fd6fe40f3f1e059d7f7f4e", "0x2f683b0027994e095e71eec8475730fe227b480a6aca67ab1593ce6f837bcaf8", "0x0854d9c3be72187a2f198590decd43943c5aa6140a858f21595b9a08da85b323", "0x1e3d592b71a473c85b2104acc1d8db8cb9101a3cce55c66801a0d379497deadd", "0x1eb27377cfa38a3967a71e697725c195bc1d7ce047e83d0e069dee8b95a9a70a", "0x0045b9fd1e0f115801232c7aaafb5e73bc2d657c47b122f4e3ea30a659bdd9be", "0x027aefe3d1130e9394b61a804dfe2231d68295910dd39245f1e1de65a87dba6a", "0x2e4c5fa1a42064e556fc50dd7fca7b48625e4c169415487d4df0482a9b1df4eb", "0x05767cb28f1019a39627a19196a7e4672e82441be0b90523c7b9b9f74dd3315d", "0x17e443e32ab352d209d3e038d1364b24eb3f945e99a6809502c5439c807fb4dd", "0x017a0c0d83cead8ffb70978edec1bf3c4acef4a2cdcfd8c335bce42793513e43", "0x28b749b2a9becb34665e38f3c49b767f20738a481a7a76a19bf1030008a252b3", "0x1f5252eb629922c70f2fc1b5ec5ea0a0e0acee47da26c40436c3f1ffca690356", "0x29324c40ee7bc85d33a056c3fa8f44d6a7724da53ccedb3e56cc26b73358aa0e", "0x00567e9bd8a2b947d75b376a9a1af17bf8bec6c9abede582054fb3ecf7860cde", "0x1e96bab6ed6f45550f2621c0adad747c2fc9988485f6184355c3176d5c11e8d6", "0x08d47dc23b1ff527992c9eddc91259a748f6cd7c1f61874a0836f599e995a399", "0x22733cdd318150f40d89d1ac142f26750809a0b888c85743af671050cf6736a2", "0x2168174bb9c45be2ee87441174a24fd41de6bff4a377803025864c5ca1927347", "0x0b48fdaba88524ef8d0495ba63e8713b65af4a9267b5d62083e7b8726043a1e0", "0x18658643fcb63644520c0fa02dce232935a4ce8d7b733a9b17a866e50b3ec8a9", "0x2fc94cda5238fc785871bca97960b299ed0df05f6c6b28a3834865fd4974bc21", "0x1a54a91a89dd7e0ce87530303c12ef76244fcf42c38db35513d65c6d5994ab6f", "0x15610d8d64ba02952f4170eaf42a27cfb2d13f04d4673537b72510c5c4c3da22", "0x13597b4707657f437ee42087cf8b589042b277467d8a0436cf66ea44a6661212", "0x2dbb95e5114e740028bc5edf58b2e9fc7e3871d3f16ad0c3845d5e961a87837f", "0x2cb3a3e7ce16cad9596eab92d772f6b8afb43cb6492b2c363ec71e11f86c52f9", "0x286e8b9468bd2d392dad5d90ef65d28dec27de7147ce50b8edffeca5d70020a4", "0x166e762a73b519001d753737d7d908ef226237b077cb76ed9f6bbfcce9989317", "0x1dc5bee6477d7e7879fa2f33ba9adce878a57fad3845e7c9eaf4be54ab844f61", "0x1f16f7f1cd61d9563e064c86b508afec41d614abc7b34bb45174b40d3877155c", "0x28df04cdd7f79cb06fbf044e631ab11fadf9691e4ea5f6209f8751af58c8eb15", "0x18aa6490047ab52105dc1e60f448762461b7075d38a7c0b2ba95646526588fb6", "0x0076ab8143a290792147c6a6465c9a83bddf4f65388cae8357bc6bd9400ab99b", "0x2616217a94f407053cef3b234cc11acbbd2e344b403bbd8a26f821bcb6f1f8de", "0x2296862cb9a14424a34d3a11080d6ed5bfe1bc4e0301ec1cbd4e260d81675684", "0x0828428022a299903406314c159732bc0fda227a3e7a40a4834e513f3ef97c53", "0x0771ff9f397469dda6f20cf1841e702c1780a0719b3f590175b394f38279c77b", "0x0dc489dcf61aba1104925eb9439a4f44228d06dd4567fce1444965a749567975", "0x104470f92923d3b9dafa39eabdf7eaa23b6ff11b2ebb64a63bdb912d43865fa1", "0x14a490ce09c929505ad223e2f397186135aa6586b27cc9ccd4f78efbec993a6d", "0x206893bb747ca2504461fb24a2f72eae4cf330835825fb8ac9563fed9a7853ea", "0x03c2a738e753f35b068c6ac8171244c23fbd4f37c80ba508618c800acf626546", "0x129edb7a013029be80efc7400212cd7af1308100d34a569ef3646b52cfb06e16", "0x0874b0edfee05d8cddac89e7b562f917c7ece1ec2e262f226f4d1524a1ddc158", "0x10a0bab2786cda30537c696bb1ffaf898078841896f7be41cdf30ad2517b2aae", "0x0bab661c2a17fbe0221f435ba90520bced928364cac984e17a6c72a47e13fc2b", "0x2042016e686c984057a28aa2ae13c981ad8dd02ac7d4663005e1380c54f843b2", "0x1fc295ac71911a59a81d087f967f16a3a887739d7cee663fff5d6e0710cf4a42", "0x05922697b04ae608cc3bb0d9d345cadeaf4fa291de888e9b1dd32c19cb1a8777", "0x271b87d8b895c6e1d864b9cd030729e523bc90b469cee37b51144bb3b0e4b9db", "0x24aa401343e4705f22900fee892cca269d0c0ffab8f55c21c674edb9d7bba552", "0x1b07068cafe17b55b5e00f7037c9ac37ef0268d5d2b76d7271c617004f05922d", "0x1e35bad319a036cc6a2094f2a1bf2d1984a2b74aaf3e5b13a6ee30c90097cb33", "0x2ab91b9a85ce69e7bea68f4fb5b1fa0903945e039c4ddbe05eff2d5e754fc219", "0x21e979fa3a2594d2365ec70b5b3e0ddc5edb8e28fa7ec307aab14b547858f666", "0x187cffd76c5fb29795523ebe065c9c2115e73784ac6b15c596fdd68469d1ad0e", "0x18d2ff882c52b396a8c068f88c3d23f9d11d9f91c0f7fde9ef6af2180a007392", "0x0a878a77de615e83c3d430f11f326b785c1ac114e599c24e5adc1d9fb91b31f3", "0x286b9c6381700288bcc75d020ea09c45957a615576d7620a0b9af2609d39afcc", "0x1c4e5ed7db96db52059ae2da709879d489a1ac5031c35ee1b6c422d9080c3f12", "0x27141679bb9260a693b880784ff5fbc5d59457b96630e0a5c04912092a4d2abd", "0x15e337c65fa58edb6a74fdbe7cdd1901b5d019ce7dd4144a8b49eba02bf085fe", "0x08256792218c8227eca89f5114f1e7f091d88a557c69b2a956fd2dc90cae3631", "0x0c08d19af9c30a31acd3928ffb5a57de5e83367204ee67209ee7ed1bca5185da", "0x1919839ad91604c370f237d2a0aa98efac29246f93c24a1bd0f9d2b60709b6fa", "0x15bf65b02b92f40b9f0ea893ddbb0572f49375acb5958bf944c77ff6c3561a41", "0x122e02f2e0169809b22def001acc797b202d335af7bd2cf032e3a7c75ef033b5", "0x12075100dddb8098654e718605211f7f6a21f5176d380141fb39977305182469", "0x2dadbbb8fecf5ccdf01f73d0cc60b15f1bbef018a63f50f68d00b72d8adf0878", "0x14334ece05a631ab375e7cfe7b89fa0d8092ec0cee24c9fa3009edcd62ea8b71", "0x09a51856d49ec654f7d44aca57b174365ba5479d8714a09f0f6de08b34e3942c", "0x048e8feea9b828528dbc63cd3d811ed05ce9de018f4a4647ac1f685bb8f6715b", "0x204ba6f18193f747ff10980957022ecaa8fa4c13e7fa4e89730a76253c9b07f6", "0x0079e1be1622edc5742e4f811ea2c0379bff4fa82b79fde5d0c9a0d174df130e", "0x27e48eabb0ef3b22305ab720ee4c7f414e8d4dbf4360c81d1ffae4d7683f637a", "0x15571becc7f5454e45ae416a6b3576274767215f659c91ba354372d999881d5a", "0x2e6a4545ebf7c2e44af91ca7192eec4aedddbd2ac1df4f5101f7f8cdd316655e", "0x2de19fcc78800027b1932cdf6f9e959208606cbf8a07524457492867f8f6bca5", "0x2e1ca8efd1876e209fc2d62cb14446e8f3c4bdd53d6382ca86b113f3209d55f2", "0x154b3f85eaed8b65718e733ca2ca7c8af03cf8f23befc4d7c6177ac00ebad368", "0x29e58f39555d9dde7bac3df18d8eaeb2a5a50503860d20c5cd0ba2a2cf6373bd", "0x032d32032e52103ad798fb36ef7c0681504cd2d86a12c7d937ff518e57b4c3f0", "0x281de0191d30af73105e39dc174015d65dc7ff12d20888d02cec650e1a245a3a", "0x0f7e76af800ebab14281645d290607eabb062bf0afe1419133e1ffdcf70c808f", "0x27ea405bdfc6557a4dd338a2bca9819547501f6f77a588a75c014d46283f75b3", "0x0570af543efefdfddab63fb05d31edcad395ac82381491a80c825c621c7ac22b", "0x027a797e0014302478a413cede7a45cd894b0a229c8e89f56ebaec4c46692bfe", "0x1dd0e283a8ef7d0f4966a517687fc53243554a8d3c7e41d91719b36bace81516", "0x2006444695987560869df6dcde2673e5b73ee5bccbb43a05c2d8be6c59979242", "0x271926392e5f1c94437afe2c2969bea4ff3f6d83ee71394008831d24bb1b6cb6", "0x1b607ed2f130580d9a8c20ea26b33b478d6e1f00cc82f00176935a8b54cabf8e", "0x0b7a6e33808d217a9e55c23871cfdfe495c10d62b8b981784b0487e63df03e0a", "0x28ac790d462bb345ab80cd1670403943599b79edef17cf70236ecb1ef872cbc9", "0x2f8d745b1b4750fd2f932f7913095515c498be314210180c6c3077231226bb94", "0x2a3ef20e60142f17d2f3b82eef6135079523956d8bc684092eecb7a7d56d71be", "0x08119b14b83922e4b224697c2c6536cf772d067489d42672b988cb638c71a0f0", "0x1a4bae6c9cf73ea22739a275bc722c8cc83d91e7ddfd5110614a52d84ce73205", "0x1d659aebe4b37b888be3a7d7f23e362c250046c09d5326312d8d94cdb384d1be", "0x28e2fb92bf6da4e6b96730479f170760564458d95f732aae2406af4c03969f8f", "0x10f4ec3ad6f3ed3387729990456c9685786ede8e6e14b7c66311d47b8778aa68", "0x2ad366d90419107866504d4d34346e0a3c595de6e0aa51c805272ae1bcddc2d8", "0x02f1dc29a06c64c9e43d3379db0f2e8f0cd8f80351724d313ca02ad24c6dac81", "0x20086a672c397e65cb37cfb64ddab08074f173f37d0e4a1747b7f020652da64e", "0x0ef2861f4ec9ba5fec74ba22c0b7af9d458c3cd8f90c825c1f36110ca2ee9076"], + ["0x0e1962c232fd0a6bb54ad8962a82b9838cfef19d290a55fc49d6debd061cd2f6", "0x01e1f45cff3e74168accd0a94536fca6317128953eb47d8d2d79b847b355cf51", "0x1367eec3b20cb74953618fd9261047755ef7f8aae5ffe96fc8f7d9a02e37bd1a", "0x2ff6ad40533afa2acb78c9b91650d7ccbd274b09f78c100479f3a4d72956d706", "0x152c8c3d9e43d90ad8094831a74af8151fdcda0b18d7bd8374ffda68d1a5fc71", "0x241707db26f96df502364d26712c7f465d0ac5597a309559b075406351a20977", "0x15a4e4728a197dae6303d0cdd2b6d1e4114a9fad38a530bca6fd06ca1ffc1f56", "0x0cbfd63f363978c387d656e93f11e336987a68748c8f54f385887e64b1075598", "0x1fb594474b8334f9aea6fe5e323fb0e0ac27d2895921ac64e93e524e4ffd25c4", "0x05ac55361da931c1b4c560aa8dbabc8624ba225871bce224addb5af901676aeb", "0x135f83314252585f7e011692cd9acff36df6be985029f226de256803ea704d78", "0x0a68f262c9e14d8a9ee116bf90cd7d65e3df561bb3914e314e3f43f167f5c04a", "0x0a8360a837d4c97b946633c353298b77d6891b6ce78e82a3bd39fb7e51193d10", "0x136a21bd13b11857e0f7670e12d23290c2318bdac830154cc37330ccad9a3fe6", "0x2a60989b8092f8e1c1cb0238ec85bbd6b8b659327a03e8e193c15a54dbb73c04", "0x1b5eb81f143bf326da0f4eb95d4f45c8142cea640d33acafc8deab155f37345f", "0x08903cf6b684826737a348acaa452e1ba9f9345de911f2340ab7324d0bcb47e0", "0x03b8b717ba10035a12ae4dc40f4210b0f0529ae837766e1a269522105635d818", "0x0623ee7c19eabd13115398893e826eee211daea73f80fa53a22f8ce55906027c", "0x0bc8b24369ab76647fe0ea278c866d4d45bc3f93e8b06e76901bbe5bf20db5c6", "0x1a327d5f540190e1c9cb1e31d857b5c51c5cad9f1ee126c44670b782d46c2f50", "0x1087efac87bfa4807aca410a9c297d23184c05bb58abfd43a3fc2dd483380592", "0x2997117304dfbb464b5cd4a4188aa4f6ccd56de9cbd813da270ad7ee699e8065", "0x2296482e919fbd46f7a518155e72a55965596866f32b1f8433390f3e1f0e4063", "0x2152d5f164ce09f6928ace2566bebc6109a4f62047e4747a051e29dc187525d9", "0x1054109861b3349e419216f1bbe82f4a57823a77acb1deb6c48fa267ee5d302f", "0x1772f4029540432ab8c6968b3739c3a241cda3ade13ece2ea0a0b157d65c2c93", "0x00c296afdb2e037d7979878671c78a5f6008d98cbf75be4e3ec3cc1d44e8459e", "0x0ec85b22c62686e52cb79ab29a0181dc8e34ddf3167d1e353514ec868e729a5e", "0x149e2435c20d48a3ec56c4e45dbbc583b85bd64311a2576ff352668962c21866", "0x1d44140dcb4597c7214a6ed85bff1a3b5fad33fd7c530699bbd610e3bf5240de", "0x03cfb0570f824856fbf41513be01ed3271e1c38a16f610a8097cd27a1325d4d3", "0x0f223b396423edc29d51e58872b2dab7ea3aae89517bc41957eac79ce9761379", "0x1fe6dc2e6e83ab88e84337a45130963337746ccd01c2f2be100080be32a59520", "0x047310ebb459fe860c954517249440d367c6efc5b93f70c410bc76f8088b4a3f", "0x21858ce69a019e4cd46096a61790bf7e03e10e3edc1a2988df768498ad667cdf", "0x0da4f87da196dacc964fb6928a51f3acef042037db741f317b4d80a81cf98a8e", "0x198eeea981eb256b4fa43f05fa4e1aec908e57613eefd35026358080e329bc12", "0x11964efd21ea079340c66ad92fdb62b8a18ee08a9992f133a417d23b78cb1b0c", "0x04b07b1960518122f5725ceadc0c1f060928bdf0f5ec42e16f8c2934877b4143", "0x0246f5fbb5f719b0896e07b4c23fcf1d24487b4c775983cea49500f8637709ec", "0x24d78daede9327f49eba679539f85d099d6583060938cb052dce50125b01cdd0", "0x23de932658d2f181f59d7234a67e174763ff790d3904cfb3dd10af8af4d8865b", "0x0c4f5431daaa994ddf5f3fe6b1df0c0c42287a38c9a5c4c758f72638e3bdb403", "0x175999589895b6947d386d83a5e6f5faf9c6588d523c7846433212233f64d04b", "0x02d54cef5e3cad1a80471bc6ef0c6e4e74c2e56886a31d79257b2762ee7ab517", "0x1539cdc69fd93f2ea50dd12ebb0437c23df4ecda29c76aeb09437ffdbf01c778", "0x2359a45452824ba97dbc050086bb910c12cee0a908db1c2808979dedc8f29942", "0x0880e5da2125b0842203bb98e5f24ae26228a5af5a6efd5461f634a4476a15f2", "0x16110fc6c8167930bde230d5df954f107cfd0da005aee44ec5ff642872764c19", "0x1310c844b70d6a5856f6d18669e532c2d6bd5d01e6a31e804d81a2f5adc63fdf", "0x2ea868217a99a6cbe79b442e2152853c7330fd8de757eb7555765879fe42ce2c", "0x29c5042471d909ee4813cd1a36e8eca08d4e0d383009f17c4a367a877a3df4bd", "0x25e36eda0eab576075e88ada3914c29442172a027c6d174ce0ddfbb017d51dff", "0x2d21058ec44674d8493e702aade5bdf3b691e3faac0427089e867f9ed856bc73", "0x18d17c3835ecab44bdb8b67efe2acc71d39e9d3443dd0ed11d95045409a7c788", "0x28a2f63b0e940afd2c78d00de1aa6fd6953e6d6ccc3aa3203b39618f5d698f5a", "0x02635f5bd9bebaff0ce7614ec7843418a9aa83637910229beffdb91e23ebc10f", "0x1fb8e8726525268018845f8c826b0e4d56c4e9c58ea92752d581d1a51702b882", "0x087e2ce4d2ae5c93ea5611d50c313202a80c4b43533b49077fb569f837ea1fe5", "0x0788fa9532cf00f13c817f38ee1bab85fbc687998cf1c14aff5fc1eab115a7da", "0x1c5c85c57a1f7587f8d2fcefc1d4e98c2741a019effbd4c50334b0c15c3815ce", "0x0c1fb832b7cbe0e7e11e8edc2baf8749f6ea0637b20e972a63315dbdd5be1472", "0x229758a22b52ec3907f94a117f6639164508c77bfdbc679c1b3f876b46caf809", "0x05e066ca1257d8d5edca65a2921fb5b5e01e3a2f0a2a3bc6622c791552190a2a", "0x2b1a935a4ff16c2500bdfee2086d9df3927a358e8eabe75f6a70d7db25a31917", "0x19a55993108088e03fe7fbc2a014509ce987f4277f729ba5b924d25b39e0669a", "0x1bb65a3f9a4375ad926d44c188dcfe51b5a5dd6a7ee152aa6ccce44813e95db9", "0x1f721c4d0db7592f9bda01fd1fbebc8e57452e218d8a2e19163067d4af128d37", "0x2bd32a02899498a973382a4d40266dacae898a9847c2b33c2ad30bcdc4254776", "0x28585b052d22283650a9139d6361b08ce94d17d7c8f6dc1d54f58589066e4a31", "0x03eb34352610227beb26f8edfe466cbfa347d7950bee431e7165647bf1c5ccdf", "0x1c1347ef418d657abbe6e4c019011bd34ddb207ab54a9b99f07c4044589e0986", "0x04a8aa3b18263e171363e9396847a1933f044fac5f5b11f754e6feaf54ec4747", "0x12744a063cabe92e2e18f000afef29c928585a03afac3b2f4c17141203944239", "0x10af4d39a72d2dcb65eeeabfca40a08a69b274129704c021a01388ff8662fae7", "0x1038c656b332e519f483d54e5222b34b35af12906d13652d1d8c6b0f509b27fc", "0x10ee02ed1176804b7d43696eb87643b4fb45f01dd65889e5b65128f781d39d93", "0x1d08ccd47541575c60b567fd9b6705de88248f9cc60af2343098d35d9e4f6d35", "0x06bbf6e32d26e922baac8c62bcf85ec934cbdf6870e3818cfe49dd3a4c70897d", "0x03ae60403f93a98370688100dcd87ad4c71ee529c4dcc3be32d6bc0621d42355", "0x0fd0f776d267dc3c01a377d217e33a255c39937ac281a3b0eacb58b1012393c8", "0x2d4ab3b85ee6f55bc17d051fcef739168ae28b7e6d5aa4ac12a2dcc07b9ba6f7", "0x2ec07b3fadbe296f9bd1fcd1758f95e6b922db7582068d76d552184131e0832f", "0x0a6013e37f560f540dbd3e9790600200777b86a577c2d2d83ec7cd13db319376", "0x0dcbc3cb4aafe08c62731dca44c843012265950e0796c73d8f9e53a767c7e888", "0x198c373fbc6ba598020456f624dfc906f28cab915b70eb5568f175f842355c27", "0x2a9515770f3053638e3c064f5901da7acc2510fb29f5f3607f8ad1256ada07ee", "0x2d4154739ed8a6cf9a92e590812f15f93013163f57b8039773cf86348d5318c8", "0x02bbeae4c716ee136c4ceef194e7985d46415fc130430a65b24e9f47533077d9", "0x192b5b08320766f45be7bba9e9a70c0efc69afec2a75e4e071e6c8f55fb9ef54", "0x2bbe0e0bbda936b305829e3a74a82df030d4fd8112aa7f169670876b028f0702", "0x0963722d8db532fc95cf2240a570cd7a136366dff544947845b6d487dc7fa62a", "0x16010c0ed7a37bca9682ac858fc8d2c4af513f02d0f17dd306f05cd57dc694cf", "0x24486122987e17077b026baa81e705e5d0cb76b4d92dd3ff54bbb813f3d09ea1", "0x28da35a85262582b220f7262ea68c381573a918c10dd17e8e564eb6da113e5c4", "0x1d3196aa6209085c34db2f0e2b3dd4bb6bb670e6ca24d27d90dc8efa5e81638a", "0x0e56fe4b7ba62dcda0d2f7b9de86bce6166d79a0a0c3c695341fbdb407b9a506", "0x145fd47676ade5c380b90bf08020faefc8c3d270c6bd97f92a18ab94f973dbcf", "0x0b6704486fdd2a633bf9e40a5c5e4091e2d430c937306ab3045b39b8b74e333e", "0x276747994473ba9152275d15beafe42b924de69728107898b4701a6636df3cf4", "0x12665324c9fc8d246c1518e040a15e3a17c0f83f0a479571d8f61a47f3982d21", "0x0288c589327ff97824eaa3dff40bbcc9ca73f69e43eebf24b29cd53fa111cc8d", "0x2c3b3f266f21d21da33e4c39001c7a703e6b93e047357840123f30724fda336c", "0x1d089260f53d9b6d912460c6a9d9ff9df5a6391a492731534826a5575e8a7725", "0x052226cd4ff2c85dc3fcbbfdcaa0ecad7125a03d533223c8667040fbfcf7062e", "0x2712f9171804273a9c1973f7e87fae28bed9a833fdb70ed93dc6274865869356", "0x276f2f781e0c9ca0424a9a5135593be95764a759c231199db5d5e0e776e15aac", "0x2b21ffc3ba163ea61b7c0b717d519c64aacab81957e268e175f46876e9ac6f62", "0x2f3c2b6874b81531b890a603be7e36ceaaed6c8a3360a868f18bf23736288c09", "0x056721148d9a370a8e8128ee00178695f66ec5063c6660ff554913394cd5df67", "0x0e1712fd1798dbb4a2976dfaa085bb9822d2d2693983e99c76a556e75e63313f", "0x26c9846c7ca0b8227b6eaa7634cfaa6c4a13bfa4710cbefe80befe5119c0b608", "0x1ebb9eb479a644d25f53dab3e6dca08339f0effde9b7aad7a34748507d69a8ae", "0x1611f5e2add8ccfe9d093bea1d55eac62661a9ac9713fa4c70895997441bba88", "0x2462c3d5555611aeea4a146b8da50d30c419943c1aa600e5b13bc47a3810f63b", "0x0f376eb9e7de4c45ff508a22b34e55f0ffda026826a98b298672d81c826b6292", "0x0e7ff80c3d19a2ad98c8c52a5d19d1712517aa65826291ae6e75e0503c8b8a3c", "0x2eb13ff66ab49a73aaad760f5bf271316f3f8538c526a1a64fa65bd3b3fc2d4f", "0x22a40e530de7dddc1f842c9421192c635b43a6cb1f83d89ddbd3c56c2a512edb", "0x2740baa318c02fde162c920a6245b0f2208f7d0ee189823adb47baffdd5ee21d", "0x1965522cce8bd29b3ceb508ce40431f40d54b59c0411e5ca427f8c1c789d29b0", "0x10a0db7c2b0969dc250647af0bdb0d99cea4285fd8a90717c2760232a906be7e", "0x0295486271ada3cae4cfe3721e6d7b0acf21bdca3caa0e020a6d88ead1f2bb11", "0x1d00206d65a92466ddef22e5583661c68ee313cc40a01c090e5ccb118a1af13d", "0x112222605052423fd6da21d95545d6e96878e5a6f43fb2666e2fdc5937971bc5", "0x25cfafdb7df32a86f2ff44a32ad7b2fd9a60f31a44e5b5ad423ae52b0e3ff2ef", "0x1a42aca3307df84a81ff5b9fbec011ac9fdaf3d9c73cdfe95011f7c1ac779d15", "0x14fb6c4e0df0063275d380e67c251a29ae638028d8e6072a6e4fdff4e039a4ff", "0x1687f501a8c07c9e43eb4ab2244914b651293807a28bc43d73ac4b5640445264", "0x2d64ba4067ab898f7b434409319d7cadddb14182f613e46642919b43c89b8159", "0x265e19e2a2bcff9489cb749daf9b77256e408f180cfaf05506e11a02d6d4b142", "0x1120d9116a584ecad323cb8b8825b9e43ad16ce59c5e8bb5f11b4ab8e5ee6801", "0x135c200f7c145c042fdc94ad5bd2e4661b0db889ddc3c24a207f5c7c4098034a", "0x2f9d365d9b5f9fffc5491c0cc39e6b9ad14e4d8794bf76e66beca2974dc6c65a", "0x2bb27c1a1e8452f317bf86a6384954f8609a285004593c52fdcffe7d85812df4", "0x245f28da6986368776968d7e5da1763d38b4e1a5b53ac3b457b26d35d8cc553b", "0x16047c3f4ca23c6f5daca5d01ebc6721a3d156ca4c35e0084903836bd12893be", "0x13299dddb9e277b122240d08656164d15f8d15cc7483de7087e8ad96909c0565", "0x1590dde29e11424a0e7f7d4b3e0fc7e412d092463cf9545b7c62260ab2d434b9", "0x19fd60baa2486bfdffffc8f672ab64cba40b394f2818366c76d05b77e91e2b36", "0x265828edfb0391d860822c4119b39ceeec02191653f95c7392c01725444ee849", "0x023bda9a3c2e8bb1b227b126ea574f97ec7793cd80c62ca44cf8b2e415132bb1", "0x1b770c804bfb918b1976e3357ab884668b0d2aa414e007ede000714714aa09d3", "0x1d84eaaba6521eb866b600749069e6643daa80f7de10ec27351f1369a3729d13", "0x073a0aa1ba4c1e1e982ef00539183ef648fc441be88ab1dc5315a0cbb401c9b3", "0x25ac099aa85c9e2aee6789f2592258cdf5ca8c7b5739e267f12034f705797f81", "0x1c1f0dc22ad54da9f26321b793e014ac1b853001d156eb590e6ec522e6850c31", "0x103749ccae90e434a1d961319f96c744e04ec0f77c8c6505bc21a1194da6c14b", "0x093c47c9dad5ea61c8566620e4f436c36ad00d046b252d2264d06d9a377e9c68", "0x12d48a22d443711b05bba73fe7cbf5e0734df7ed34587f85d850a5158c0a274e", "0x0d1487ee7bfca46febcedb83e9dc73c33d3c099bf3c1a779334834f89f7da334", "0x2ebab1e544f6ad4525eb5592152ecb46f8e0f70cc54e739f5ae4c48945e534a8", "0x17260110bc0fa2d859a65a519b679cab157a6485e5062cafa3d9e8523543d460", "0x14b60bb1b813533655b74d1948fafd94c73e1e0bad2bf3e7cbbe997c40c22cb0", "0x144ca9b18104b5bb5a9d21d73bd957f373259539a163c78197210cd16c886641", "0x0b698540c0ab22734bad58e48515ff84520051215f5ce4915d80444032a3ba49", "0x1f458fdf92a4c03bce2bf69dd3dd4e26bfc1663c187799bb35958d3613e25bda", "0x26c0c3f9f2abd19392330ee93e2554abb27ed377481e2a2552798dc952a0acd7", "0x00fe825bdde1abafb480e985d6fa8f4c7ae9c6735f9be0a6924293d2ba1145c0", "0x24deed3988546ae6520a6c20c7659ebd2a5f4b828182a30f5195674997b1f734", "0x0bbbcd555c184aae0891582c61d65195132ba14aa26fae5bca4cfa0ef71c90b8", "0x0f9f78d85dede378437afbec3f6ba40c8e3f674cbaa51f2fc53555779ce9aa4d", "0x269cd2fb8c03936aa6e30dfd09c34ff786c83996e89f706c39cf9a673a79c8f0", "0x040a5ed55c1541ad1431b2e0a5c2370cc0ab8cb2ab31e62505f799b0a535537e", "0x0b10db52d69a08382c9b0f60d53c586333018877ec879067a2f9548fa035b613", "0x1e6cc5c4090d2d91f567237064c57abb80f1d1886a509cab6bc23e81767a2aa0", "0x104f9966b6a892138319ca037d4298fae4fad5d09cd05e6e4814b752e51f570b", "0x29d96f530ed5cc92c904d21bf560c82923bf6569acb90abfb9d68c495cbb9814", "0x16b917a241c5e2a1941d745666d8adfedefb48f9cffc756fef6667439eaba1fd", "0x28049dc8703e7eeb4ae5cb7eec9d0b9614f33f03beca54a67d729cff65971fa0", "0x2bc236714aefeb86454cf972676c646a071e70959d53871a23a27bcc4a514b46", "0x0e85e3f0b62dfac04defe89326b1f1c9c57f95dc299ef95fdce2dd130b0e09f2", "0x1576f55650e0dfa819a1273e6a0fa04c1f1ae18f1f841daf0ad5a235793b862e", "0x2e6d1f984d90d778bc0e0990dbe6be66258ad00487129ab3438da90c9ec307f1", "0x0a5216c240378084d7410cc778801c590391c6f600a85514de1d5cfd2e29fa95", "0x16af0c6ec857714b9e9e7932ac8a6b1b01fb42532e51e957c735e02403ecd492", "0x07ef3829b21e86dcdbc3aa02fd246b8fa8e7e4c21578ef0584874d36de491aac", "0x021cdfdcab1ffdac2baf015ddad7ef6fc196b7442e82b370a1187b484d5d62d5", "0x0911aa1ce608f4234ff3b9f35d9be546f5e7b94bf0a25f8bccb3535ebf1c5846", "0x1c861eb01c4b335ecfdb63207c5167f2f2a2dbbd4c604df9739082c5db91713a", "0x032ab5c0093afc059d72265152026bc674b6988489fa1922d3f6a130e6e98c0b", "0x1dbb7c4e30b3bdb3a248e0118c9259c31b75bebbda8acde2d114311e1166b850", "0x295721987b2a072f968216f69e14afc10ac7ce6870a1cef620b9e3167121e565", "0x0d848bbb53ea8c72c8ca0a933711061cd11c38bef5204e1987c6e0016cc87728", "0x125437f6105b57329c045376be9801f150088384916ab57ee90e4df260533e40", "0x16a6f85cf070a9343769dfbde8cec30d62500d50ee294167b0cfc9af4707ac24", "0x23e4ba166e2b5a1506df9dd4dc74c7a30dfb79f493ade38be21c0a604073d359", "0x0d7a570d5c131bf78031c66c8ae5fd454ba9855fab92eaf9ca379d08e856414f", "0x21793d46a696ee5040f599f482bd9845356c02e4c2b07a6450a1005543665821", "0x04cf9f12178ba86fab11c12d690e620603525ff7dfcb5606d0f67f0a7250d0a6", "0x1e1c8714aeba7e7549e08477b4365ec2dbebdfbb6018937f680d3cfadb5b9224", "0x125f99c81db5d7e74be0c6e6b4476dd0e503c1c704b3c7d3ff0ed356f9a5bfd4", "0x111bc3215b3bb2a5d17257fa73a77851d2a24e4804ad1ac6e652f0858326ceb2", "0x09e73771faea0065c80653dfaa8bff402eeb0be36688343826faf639f684b31a", "0x0964f621946810a123469fce6b544ff61cc9b733033b632070d47bc9474f4b0c", "0x09532bf9f11051f863a4e80679782b0732d663947390c12b02954918a18e47ad", "0x1d14808c54583a620e6587c24b993b1838a0eb07395c3085b449d3135be322f5", "0x09b88cebccbb2a0a18e2d2e799e77cabcb4a231123c303e98cd897ffad598d44", "0x24ff5ab38ef457484493054c9bd3ec894a8566491a91a52bd788343c429d0a93", "0x13eeaea2298ca24ee7a73162ec3a21d817ba86f9772bb68c0461d115535daec3", "0x11600a36cb41fde2dd26a7cd4a98cd8beae0a04e46db399eec5c1d49020510f0", "0x2c7682d3ee4ec3ce7e1f67cce9bdeba4a1f669f04d9f7a4bee13b3c97d3eaa3a", "0x2d9b1db246b004e185b08c953dc0af4fbb7c7dc67b2378eff707507b2db06cb7", "0x17f1407c2872d3810b7474bebe3711f72583cc95831301b4e3e06a3ca9628318", "0x089fd58055d20602bdbc2171ae485ff48f205301065932bc9d526fe54d297f02", "0x2779eaf53710f3a5848a8dffbe40b5f442a8a13c514ff97501fdca080fb3bafc", "0x07d6c3ddb807b8634c89aef35615da73596e8ee1a8cab49d022f0bca8780ec15", "0x1b2918da0b9beea69a80b05a151e681722cb66fb8ef1f7dd82939e991cd021e8", "0x1a21a1409ddfca99e3c0987f97450840f958524affeb28c18fde739c8189cabb", "0x1f9e67e3979195d368172267a6ba3b448173e2379f25caa137ab6964714d1fe1", "0x07e57931399bcc4119d9cd7b2191793de0ee69474716b08008a9f68a428787a6", "0x09ef7d4aeadf7bf593c5a79279e9e65578d14315df9dee07401693d199599482", "0x285fe3b15f4b43269d4cc0183f9f75b0b4fe69ff170ac641b18c7fb105d2d711", "0x19a7682bfecfe18fbab22301273895c1c4b9a994877dd778646e9dfd64f24dbc", "0x0ab794b4433b5d0ca9f3f9236159ee7b9f112abe71d3a4d19385202c209501d0", "0x08ff64f5bb9e3f8be81573117e011c803f69dc6a0970dc05118ab1071a28980c", "0x2f0d454b49e0366171d95142230002d70f90c8c37047c6b258c07c0c9d0388a9", "0x17b463c68fcba461e149e56eda9e8db1a4bc5c7b8289b0cd4286deb5c93554c8", "0x2d1a83ac832e49280df94b1e27bab65faa9e21a60a48ef0f4557c03f9b7d11f1", "0x1e182411560c80d7d4c480e4fd65b9997132a4ed29f9a8dc3d882209b63b07c2", "0x04bc5c19cbb312941ba1b731f096349ae7624eca3b83be88647080f794d7fab3", "0x0f10a1319508c09aa4427ea79071da02dce4a1745e139e6949f99216acd8305a", "0x07579d96bab793ef1f740713f70f3d2cf4af1d20ea560f48e6f8c04df64f2077", "0x1fd8b55d0a28cfd009b298b30e226aa3d42433dc148318c99c4e32af13c5144a", "0x2affd50c6aeba57687d824aeffa55c217f633d46840c928c0373ca46432fa731", "0x2fc1634b69dc697b668fad3e89c88186a76e4077bf6d1140d8e428eaeb7a3872", "0x23a53e514ab262e22eca7ee722497818c064f8f74ccd330503d7abfa85f015d3", "0x086ea98e8a4edb6d8500bca03d53a03a22f69b6f132c99ecaf9e950fbf26c87b", "0x0f48915855b4d191b7c37d85e8a5d491648cd4e53f5806d499a8de87ee10f2e2", "0x13e0bb95d9d3078c10ed2f731f57f5e9e40c95637574e95a933d9f2a7aa56c5b", "0x2bc35b0c5b335dfc6f1a9362e5b389dafeb65f0ce5b44548280f46c16ff51feb", "0x05b2ddcc86a8504b00808acbb4a643b169db2b07fc25c9cc3138467ca750b5ac", "0x1750d1a47da211d8e8386c198095b83ff665b589ac278bca8c0fa01bfc683cba", "0x1bb5321e95d1fba2b22cf4d75e2ea2c3643b85efbbf1a3b2cd4be0e7d123880f", "0x2a4e8ad4dfa27652839ce179e0964cc4d4732fb55370901b3292d663bde41ecd", "0x19b984a2d5a0323b956fae09b529bdcf455122c443eeac7ff1584bcdd632787f", "0x11105f818cc27232a8445ff886ded838fe980038727b9e2b33436a55c2f9fd3b", "0x2228205732fe6b9af281b5b2b5fda2d07f5184c555fb52a7f514c6c1b1fa80a0", "0x20b4c468bb8e29c186e7f45feeef84bd857db85643aa798bc264519daa463fdd", "0x14bcd2fd5c7392bf9d93e49b5855b5f35c717d4ce51137b8751b828386a7a5f6", "0x161cb26e6fa48dbb05a5c3bdab4a1a524469f98b8d10181f2848029c795e0576", "0x26d537ccd8d4f3e62fd0fac41c6a24c9411f4d6ddc03276bac261768953bd745", "0x1de7d3df97d11a081106a4bd21b97603a76adff165cd40ac747ed49e61c611f5", "0x29800fb0020ae18d4efd8fac1def5c7607af35f4e223904acc6a14d8c6d14ac0", "0x271271f850f692a3503fb72124b583a81f3f0ea6789be3a56ffb49776579eb25", "0x16694bf37fe421340b186cbc817d0b136f972c935579f2da300d8f3c663481fc", "0x19ccaf839bcde3fb9764e57b40f8be036c1d0ad6dd23caf40f0c2dea764b4538", "0x1345bc63be8e3e86d3eacdcc4cf142542e0ac660f6f75fe34d3c7f3453823d2f", "0x07e733e36a63b1c54e453050ae43078c86a1803b9bc1984f836da9e5bde26cf4", "0x067df85fc461d1e13b0a744c4f7894d3126d400c0f674115d764a07a053f6431", "0x03c2025ea4ee2c19b2f8d8be0a2b90a1d2f43453515ec04257ae1fc6ce5334af", "0x2cbf1dc7af58fa9adb8ba31b1930847624cc4f8f67cdd8bca3a9276c1f06fbb7", "0x012035a5219b900dedaec32f62cbb85a2228a3e71b53afd4d2fe6b3c964f91fb", "0x1b8c713c90d62b367382c0ceebebe29893157acd56e10755d10699928f3505ae", "0x14475f758d5db01a2de2add46c405d939eb1af0ab36bcf26ff93e4860541dd56", "0x213776f1e0fac855f958cb20aa090d4fd47e70fd0e936f751037fc33cf9c4127", "0x2acf42c1eca1a093f10198dd5a16bce16bf8b21107724a94aff2f190906e6980", "0x19194b68b898476596a9e2d4056e15c95a6648234abbbf9ca592cc2c53703380", "0x0b20a1d9a2470011eb2f8180215400b583cbbb1fd085fd53bdd1c9217cc5a3b8", "0x14a7d1d7065ed6f6ad72a0ef3b848d76034f7a95d2da2a06433c6c4160ef9c8a", "0x19142416e3b168abb99babc17ce6821d95a29a31d92bf74a122a8efe799f9bbd", "0x2cd1571dfb32abe6e5dfec8371f8130cf77566a9eda06cc8b6466fe9e1b3c528", "0x1cb1ebc4b42052876e83040bde7b380230f5f145f9400b5d4d7136a61c6eb458", "0x05c4ab72cdd1de95419689661e5e735e15b3ffcaeca1fdc8669e73d8a6cbc96d", "0x24c8da03cd8fb497e4f0450069b5d4deb102b64e68d5889772483e8d0e3974d7", "0x0de8195805706ff74cb251cfb0bad9b9e3fdd059d01a5fc7c705d60971fa4840", "0x304ce8cb3cd5519623520a4883d35792256dca0c12dc1e855157a59daa4508f4", "0x0f36b586984d1959a79c38a0e06450edba003daeb792c8d4df307c55c9efa8b1", "0x1a8325d55480646ac7faa3addecb2ec0ef7482f10a099c5b4656752e24551869", "0x2d7f6744d06196ae0879f406814aabf889073505deda846651fafc8c20185aec", "0x09205507dfc37672dd9711d7bf42e7de290b366b5df2367d437a82dc9e086681", "0x1c22e9bd3f23dfc3f73dc73c9131e16a8b076818fc8823425ccb1b732bf5493f", "0x1c5976233750078411d6c93680d8879596dfaf5f92d48fd4dd94ee5d29c51ca1", "0x07cb86c6973abbc69f89d248d744147e26690a61b6e31d10e980137879e42673", "0x0c3c9880a8248520b611ee4df7fdcc16a66af45f52eb010457579107dcc99d39", "0x03928e6de66d490cba3a1e3e3665123919938effa7fc4f8c9b31bbdee1e479ad", "0x0340f788573b536fe1e42c7fd409d367124723dda9c4b0f3b962e0137667e87f", "0x030a65bd5db79f009cc1b3fac1ce464c4c0d543385252da017b116146fe80d82", "0x2a42a802de9085d92c3bdd4086371a3f17ed03c08a2bc61b3e43e0539357de14", "0x1549a1cb250435699b3a2467f83901128094446a6bba526d5473e8241b5004aa", "0x30501645d7f67d6d4e1f64b95a344a85bc6a6f97fb361e7692c96cfd54a1d414", "0x1c3ea369de18dcdc3378f61dd563a1aaf256982fac9ea0994a3eee26c1f5d00a", "0x004f2d2437252a0d4d9ca4c1b01b66083c701281c233807e744910b3ddb971f3", "0x132fe529e4aabd030412962480562c95c8fb3c4abade9326e1d87becbe1392a0", "0x19fa107156b961886fb9d99ec13bcd8d0c4c544d4240c1f7f43c77c63f144857", "0x2d5f91cd3cb552dac7f7843f60552bde86f45e8bbaae484c6b79ccff34ac5ee1", "0x2dadd9a69ad146e65bbabfbaac3378af9c5540d17b9ba19bb29c48c85dbfe71a", "0x03c9003074e450209212b3bd1622da61c71aba0e8a094a7660be1f4638eabc8b", "0x0ba91729271f6b814378bf2b847490d8b06b46ca31cc5c4fc74c1cb04b71cf14", "0x0ee583d817f1705ac7ac0b9ae042158ad0d5ef3672c1d13dc7dd794aa84f3061", "0x1140026a5abd89c4012d2c43a478b52fbb46ec0861ce5b3b7c1cf69fe5c40f62", "0x176ec0bfa58b3976290ac145954418c577ed77ab87fb9f8228175a9ad8e6f5fa", "0x13e5899c46c14f7004fd0fd376476cd34aa7d3b13470fdc5232d56a3e59b47ea", "0x16730ce766f65c06cb611f8d7f4fc3d53c6662ea12ca4502bb968873f3e14f86", "0x165db0eb885ffed5f77a557b3eb21ef2d48b4a7cc6220709de00e61cd9f8f525", "0x0c428278c217c1e7e76e3110f7e1b26a9095e8c8cbc07a171714e9afee2670f9", "0x2ef183424c590a0a5d3b8a639f37e4e77d10fe9e12327718b8ecc2b40a2e92be", "0x0bbbe09fbbfda7b6e06cad868cb1a389fba5ca299ed9545351c974e612f5fdd3", "0x2f42003eccab3bff0dce2b22a8769a5ba1a0a6f854c73a788443bc13e8fa5ea5", "0x059113aaf928acd9154ea9295a5a69f864149ec96f0409673be860cdc1edded1", "0x1fbfaae77bc060fbbd03ffaeabae2cd4d3279363c5e4643783dfb9a5d5946825", "0x25b3cef1d524c48156e9a24aa0d2c20ed32fb69b4debe1c12de50db246e3c805", "0x15e6f0329ed4e44d0323f02744b4f6d0321e204fd38c99ccb72a35784b94026e", "0x16e47f642bf13ce66c2c2bca01a2763d704b46de0d7c99dcb2b480707c1a3bf7", "0x1d9f848cb9dfdb81cad62dd5fd43156e57c4ba194e32b421aa07de9e0a8700ec", "0x070e206946f4cb2c2a7c5c7c0ca84fe53ffd884279259eaeeee00627dd985cfe", "0x0a5f91aed115950ce6348b0f0f001569243c840041b974e4fbdeaccf72b19da7", "0x27736747795d235597047a57b524dd4c1ed0e3f42798215ba85056bea765540e", "0x0167c1d76479106953282f945c8d8cb72160f6310470a7f5165f1572d6c27ea4", "0x1becd457d21ba094804c47c3a688734bd543b2e6d7cb51aec0ca89d6c1e3c355", "0x1f43386fe739e7f9c63fbdcbb82bccdcd417338feac1eed42def7150d4a21358", "0x2d091c358175583b32cb97c58168f32d83a68c99bdfa7c2008d9c454b0eade16", "0x017257c5bc8dad57ef6f66cc041a1606350900dce184c312426065346dbdb1ba", "0x0b4adc03c7bfd313902dda678c2fa251522a92a7fc6e4b47d4f1ff98ea1f21c4", "0x1af84524441ac03fa2d8b5b391a7c371f2d9cf06a09005fea6e3b708ccce2cb5", "0x23ecaf81286336251a1fcc5dd44a4ab9fd3940a048e771ee4668830744a5a9bd", "0x187bc703cc893e2cba22fbb598c0e778c2046adbe58b3ff252d7b635ed990c20", "0x260b02db111d63998b6af09a81928f62cfc97c4f8cba26e828ff5c057a0e55f3", "0x2f0232a9940c4c4cdd0e44e3c4785ced14ff13b5f871ce2f6ee35742ad050ace", "0x050adc4d5d64807f730d0f450da5517479a3786a3bb2c8de24536a7ca5de2d8e", "0x16ab8f682a4083d0f999f5816f41cc7edbce82c0d59bccaa89c254729440f981", "0x1127fb2f0ca9cc953fbb1d4793474263a6e51b77e72c38b1147ef865415d4dac", "0x1f6d04ad97f2f4b710f91f5226a8c55ecbc1c25af4e4ca8b76cc4fad24eec674", "0x141be544be4c23b3625efa886da65e675b6799028d3a7a6dde1ed149faa49678", "0x1bf785f9867194b45e21dc76b200325ce4bd664b7ce3699174b28c0fb3243906", "0x24d9be7c32c7e33bf76816e19a3c1e4a887c9ae74d15a7712dae802864c08651", "0x28a481ef8515851320db9cfde816826a2eaf994aef8a551a3d0022d77205ad6c", "0x20573c158a49c54731fedb7c494eba7cca17975cb4a448c688bc56495907261f", "0x0a15b156592972641eef2970904de3e1334376ee64bf76db4bf5e7c8542c21c0", "0x1b2bc4a3f3f448efbfa21a4e41d5d6e09b73574739b66eac27e65aa1fdb78c70", "0x1a79a5d83a28bbc4c113600038135e86ce6188df4dff938155301593d4cc73aa", "0x1e15e7f11ea36757fdcfcc558e7c6bd8c7cb8484388a2c95258e2125164df413", "0x298a03bc1edd776ec3372c82ce73c44b3e12e9509c124459f15d9df783953816", "0x0acaed186bd21b6bf01884c2e80dfb84699e0bd83b7770d03b918d24a0129316", "0x2529c4ffb6c39cfd1aa6e04800cb59baeaa31da43903d3385b2ab25864812963", "0x19c47c2a37278f183f3b58427114139b3eb82c0b890c4199706ad944391fa6a4", "0x0d2701bdfa57cf911f1cd1fb435fee068caed685c636382249dd9acf45d4c989", "0x1e58e36e0ad7b4bad27ac7f76d34ab497488d1661a444dbc07cb9c7219409f12", "0x2698b2f66fb15f3b16a7e50cbd835a31fbb83e0b65982d7a7acb2971cc5825b8", "0x1c3a8e3737856514071a5891b7eb286fcc836f11b629c12c9b61a76a6f6dbe2d", "0x2927ce5173086473fa445d53172a05aa66a8f9d9a169f685c47aa989b9e0f5ac", "0x25aa17d824580d6d533236412a489aa45aa389b3d3d55a345d35663a1b143bf1", "0x0fcf1112dacc31179819d66574a5cb8ded45003f76667d34c1d34153d8fca994", "0x06032d6e50d059057d461477999efb4acabd1a9da592731a4048ae8d19b3d351", "0x01e40e819f426fae3dbb00926a7d6556f30d84934ccabf99e9876351d1716b5e", "0x27908496d0906f524c251653251098cfbdc97b9d7417e437710e1a7f4b80d08a", "0x02db1814f1435cd07ee54f8c3205c7d76262cb5fc5da605836a08d47f3fdf134", "0x19377a45d6a5de00751ea901198e1a0acc41ca8a99feae5eec07fe5233d289bc", "0x2d004fc82e3df9a9b89321823458832770ec80f875895a3ffe2370c0aaa5cfba", "0x17b836256a7de413cdcf93a4c4f8fb6b76975b1efe30aeef0ac12a83b3434c0e", "0x1b234a28dab9149e2cd39bb34f794a85dd125f33383b77841b913128cb86a3fc", "0x158861fd76bd8a58950c0c55d9578c9c6c3ff1aefa88803f32770adb1a6f17a6", "0x0eef809302d3141584285618b0ff2e6a373b1be0db0685be371bb601888aacb4", "0x1acf3ee76f19de157996768dafafe604e185bb23356b6e2592032eb732dba44e", "0x2f4f55f57b771ecc15813526d73b52b2fa1c4f065517b9bbf8c3658040e120bb", "0x0622964ca65a48b30d40a9fd4e8fa757fd737f020459e74a533cea55829072bc", "0x1c8cb349b5eba594e3e96ee041eeb7e096facd421f789bd7df6aead030cfd1eb", "0x1ef519f3b82f280469c1ea7b2551d3a38d3e50ad2b0c52ed0185780e83470697", "0x071f966c5bb87111e1d0f03d17e2885ddf50b7b5dac99f2cf9c87f25a1383354", "0x0768f94a8cc8222f9d2eb36abaeae3b351ad7c8fd075971bc95de6c2422ff2ab", "0x136fb9d089170fcb343dd1f2cf254468118c97ad2c951b6b3fe4933d5a4faa70", "0x14204ad52e17efcc8d6c3b29ce5220a5ea8c6829e2a9d33f646df24212c2ca81", "0x19349a56f15918f1e9c6c587cd23bb3f933af583322dd5c0fa6166cf1cd58c6f", "0x2ffd15400e3d57af1d503755eb97d331814aae9add4764bb7e951816e06b4fd8", "0x001880d406f04352ba0e70d1ea4e55302f239327e1dfbb0fe9fa74d947c04304", "0x2194fd04a6d3e80a04f53235a5f46e8e2225e99c530173cc28fb1577a0ebaa4f", "0x1384ccdde57742281a3d117c0dbc825cb7d1b7e2b57c0dee6521d315d60d8a11", "0x0ab80f679adf8789e9f68615f8e65cade12c9c19e8b096f9d7a58a6e9155afc9", "0x1be3a55706d4814487268bf10196ee80009ac69d26eaa4ae6b8299d3fa27da6b", "0x1f8a7889404464277e3fa7dad1438e5a55db2b53b46f1080ab25b31b538acdd4", "0x263c85c58282f656ea6193f72641aa2cf99ee4f7e47f1bc1bb22c46cefadbaee", "0x01019099267ff1ed724e463573701f4c2d074337b27f474060dc35e72ccd18a1", "0x0429bebc430d4062e38733619b8d3fddd5c26d05b203ba9bcd5fb9058c7545f9", "0x0a03e113f74fc0aee3e546e5937bf8c561c12274fc5008cc63180a26004147df", "0x0688887334f483422f47a9397e45666c9fdc15e508fbd4fa83a5e722be92612a", "0x1cab73177feeca8c863601745b40138d81b0c209334aac58951709278ccf7c3f", "0x0589e112f43c979ab3b8f131a7909a284f3786783a9205271f79813500826f3a", "0x081a1d79b226d02f3edc79d6756b2b78d06b7677fbe7bfd2e1c73c5b055cf6f8", "0x1d126b23da26bd262a0ba45cb83b78ae17efcf1aa5b97478d90843f0a618e923", "0x19d02ccaf1f728c35b88592e300daf8c6cba6eaa7334352eb047885db22f97dd", "0x1e7e21dbf66da47b76b4e025bbd438a654d665eeccff928e29ddd0587bdabdec", "0x169ca09f61d1010465b3d6a04ea6f323ff2126b2c513f473e258a738c34e84a3", "0x1afc1d0db8f4d43d32193344634043bd3cd59ec3c9e867e58f7c83489cf8e1bb", "0x219f8604bfa2f5aebd196ece21fbaa2b5e9d5a62855beda8781afcd668357eef", "0x0db71d9be8548133a2605d713b9f50cc768c1ab2824303b141f4b2f274c6f098", "0x13603e5cd20c12ccf12da4f7d04e9555cda644e5d9abd0f5417f7bb8c6c24544", "0x0035c4356044389e8d8d3d84619243b57ec30cecc3ba8c7ee66d8ed9877c40d3", "0x0ba68c56af0f045fee1b2266f53980c31cee55187faf97b612dcd930cddb452a", "0x23f4759e8cf82af4e51b1a31233dc5277f53aa2422435da2698f1b65a9515787", "0x12012879b9f59dece1ed0e03b17ec94a6ac6f2919157ab97dc1d5fec6fa4f017", "0x1915797a54b7038336310e46e2faa0b48ba3e1a2d42b8b587bab86f80b9594ea", "0x190ed18777ce88aa8ad85e8ec239d8259bf0f51ed8996339759d0453429b4425", "0x24e04081c1519eac3990439d5f86f2967685fe86b8dc37a4444d5fbf2ab701b0", "0x1345cdab47510fdbe7fc389be04256335e387d3f24d2aa7326f59399a10c85fd", "0x119a3ac7803dfbda5564dc8178a79cc1eff78597aca6fd95b3dbbf4952511e7c", "0x197b3596d3b66cadac6cc4d88c2da1de336594ee48a4f2e82ceefd9c81267b49", "0x015740cbf5b80c058f671ab7b14b2e0bf3b15a44dca4d640da40453d0ebccb13", "0x23da644943d6f890a344249f0d499702838011dc6e4535c478efc8a0e7ea1afc", "0x2344f76a1be8f4bba48d9dec02fa88b6eee01d1c48d7e37d7210b5a8e471281e", "0x2ed6f7c7b4188acd5623022b461c2672054ef8f69a05ec58fc8ec7f0a8fc6085", "0x0f5a919e83a103cc62a73502819fa163494d902d7ceadf613d7e0f7b56ae962d", "0x168506fb5ae2170331ee463708ad0124c50dda86c1ab464f13711db7a2f6c4e8", "0x065064ae2c2846b1e8c73942bdb1e2b402eb97a393e18a600bb8edbc8d029af0", "0x1710ff94c079aec5589d7a0487ee074ffa49f880abb14d9dddd2739ee6adde2b", "0x2af3554c9bbe595b39616669ca1984c2c143d16f9ee9ed316229b4f5a0a0103a", "0x22964fc3479b20e70b3e98306ec30bf3d5128056b6fb525e100f684366c3891a", "0x25de0b4cd61c81940d0fea87d9389eb473d469f0415eefd81b56d2048ebacb62", "0x1fd575da1c5352daae237b0e8f76723d44a3413b49e016ea12634876310edb38", "0x0533b56af329976350645c7cb7fa29c1e0c3b5d880e25f5a52774d056e9658ac", "0x167d885c645bd9cfb4a2d63d57268000b73d88398616fbdbe56f231b8b2bc825", "0x0cc2f243dd60cd41e04b2430c96abe40f21e3fd109e7a1946131880516bf86f8", "0x0341715bcd52b75e84c60edd47292611c4703f8f81abb45f58f86ff7897eee12", "0x1ccc6d8301ac14bcb7d8cb9feec228f9c2eebdef5778fb88e69571374f2c2481", "0x26d54cfcd51f1d76c8a6f67f37dfe4cb5365e33017fb4cd4d5aadfea672b3b88", "0x2445313440a20b29650a00e2efa7432ecccd218a8b111a67e0ec28c559be72c3", "0x08287cd7099b718a473e3a2dbff7354e6f56a54f860d1533b28a0c03407558b7", "0x26c24628356a67c0a450cf53f60453defa580ffbec5295dac6f26d87ca67a71d", "0x1d1cf3eea9d6f23c1722071241367ee8b05560a7af1a825fe788587692091aa4", "0x29a6cc340dc509321a8db99a1e4a6f92ed22518718e050946a211b9b0b035091", "0x22b0472d8d18e2207c7faa819e646aaffec0283c06cccb04554899c28dddb385", "0x0aca637d3f71393f5cb5d01e083778f519b821ef37e1335d65d14b2fad555568", "0x0cc06cdda9bbac58a1e162ef5c910ed9fa9861163b5bff627765b6de8e1e9719", "0x21c547728fc964c17b65a60176da2a1a8292d0d503dc16a5c60513bf88863c44", "0x08512df52d8a94319bcc6daa9f814853e4bf58f57d16f57997eb61d6a19bffbf", "0x25c0d9feb0c02a64b753bca57cc68248a5dec4149be2b759bddb53b6f7593c39", "0x2352d3944fa61a2c4ed5c84ec318fbbae05eb102075612c26b0f38670e69995e", "0x24bb393dedb3f8114acdc77cda2e74a97ff8cf89d751fbfcd9f52a4287441763", "0x033ba091bc665e268b65a8f2278ab3113f8c4ae9b6a0baccb4b840969a3b4f3b", "0x21cb4b445e8a579c73436f6e08b6b2487ad0f5c4706f0ddc9545fa62ea0224b3", "0x04a925ae34260dfdeb17f5c793e4b672b8f5c0da69f16bfb29403926e8d7d50d", "0x2df42667610a6bc6602aba26746266877079dc345a79f6d673d64fb27d7ff499", "0x179934386a6423cdb3a10950fb65d1c7776812ee19c813f5a67202bdf36c9807", "0x0c0f3cc0643c9053e7e87a1ed590dea8a70e6d5ebd907543c9561da4ee9fcf63", "0x051a858defc040eaf0847bc5714fca3d63775709d5486a995e93336184fe0aa8", "0x10a0da93f5e24e02e1da3b703eece97fd3a08f43a0476cfefd70372d6274fa47", "0x2d7beb4067840b65456935fe808f57cc971b6fefb7e09ec91336103e2fb072b3", "0x13f1bbb6a850cbb536a0197c016a46723d7387e991b67d58a8065c3e4dc18c55", "0x041fd980971d4897e5e3f42f4342db10e517f639855fbaf21c0b9590b23bd8d8", "0x09636927f5b349d290067029f74050c9750ef572691424a8a0a01663a45c5031", "0x2af36e704001f6023acbe0757637f6cb0facba8e0515b0df5eb317a1dd0e65bf", "0x2f97558fe6f6004109ac4658609a6d2cd1b22e5dc099a2ea132e88087e72cca0", "0x23cc4c0f96eb9152447440a55e3a3d0be1abc83834d9fe0873fc9d714b0e26d0", "0x2a5b6bd888a8a36578d8625f5b77e527ea06db8dc1b54796d80fb1c7db293b90", "0x27220be37f223c82ef3157df596b7c3f21bcc03de8c4ab8d7f1d5baaaf638f0c", "0x09b92d05c05908c5d9aaf4e8d234481f9684066bec0f478a6f7f41e4738f94c2", "0x103686d84f6209572cdb829b7aa67962be01752899ddb717831df659c2e2f60b", "0x23b62723d58ed5c2c6ba818383acd3964cf39243288d591a4ba0803b15b48735", "0x18870f436ccb65a0e1dc5e6837248474ae52fd226b179221bbfe73f747eae139", "0x028691d2f0c336148b5b5f1c5dc06b422d34071705f9a33faf2613c907f3325d", "0x1191fc63b79d85edaca6a27d88e92d40d897cc0ad052136e60b5bd0a8e560282", "0x16680b82f6e755d8b419d1e303203457b5470d8dfa214d023579cb6c1d09a3b6", "0x180fd65f8c737e7e07fbd0e7646c1541c8c34f0bd8a1e1623a3a0e383ca42237", "0x06c7ac54dd40d3891a14b48e742a06e587cbdfb65dff4a955da9c71d152241b2", "0x2c65c95a72571373a6ab7a18b7f4392c1aef296eb581541d876bab6c3bfe6daf", "0x0d9c0008a4f07214c24fd0e733864d7c57f4e13c040c31923bde3e9288552bc7", "0x12d3a04f3439bf85b6525221a3f314a2663b9b84ee290e481169dab2b0a48d0e", "0x2c75ef5fcee292d05dee7a7ea27eebe87bedfe6582644dba0fb5118cfdf255eb", "0x17c01330bb570b1ca9970d5872c1aaab8cda24b330e94a2c95d12549168283e3", "0x035fa265ba78efec1b389d50f1880191c35bd402977c50d252892c70ff3a66f9", "0x146a648e47158802e1fd7b6e211561de3ce10df63473c254ed2e3994796f3b28", "0x05c2f2d7318f91f0398ab541c72b9abe4cd4810598bd0afb230fcdca28f0dc9c", "0x1a14bac926bc804faab0ad62fa213583872294ff31da7306e8a092eb070acd47", "0x0883cd6e7dbe3bb29320db1da117618ff9f761713b7b07814f4bbad71610d89d", "0x06f98d2bbeb45ad82e7624bc3e387a1b0d818fcc94ce9d96f4e73e80caa23e55", "0x0c2ec98dc0ee676d862cc05b09e7d74389f6844ef462de336f6a8b693e568d96", "0x255191cfa833cd6a862ac869e520575e8da70da30ec970657c38781a7b002641", "0x2636c3de1dd779e5577de214b3e6c6351711e9cc1348dbc553be1c8d68b8b067", "0x06437037937218fcf4e73ce9b338baca0c3fe948c398cf9fcba25ac02e652956", "0x1008550284340174d1e47ac5a027793311c42867e3b718b24a4789acfb7d6dc9", "0x152b99159e87dd6e681aaef38bf7295419bb87db5f9fb0cbf37320ec726d448e", "0x0d382ade9b281a2e726cb96db54d26f433258818753b88e266280f74d8dca806", "0x0f544e2459e6a636d8da23834e317ea9ade7b2a07c4ab94c368da356cd884e6d", "0x2a6122af7c1cf2946b33735d2a9f5020cc5dd8669529e77d0069db364ccb08ca", "0x2bd710638fa09fa70cb0aab6bcde56cacaeb11aa9bec688c033ef7830dd0cd07", "0x17e172b03f25c98e9680cd0bbacf1933a942d834d945fb9880fae95d2594939e", "0x0759acc9cb975aefb18a833ff4c84df8346ef63c4eb67e220b11b0f5350c6331", "0x229f41e153a4409fa2c0c7c75811813d8a71930da6c8b1b8827aa648bdcea63c", "0x0d3153d6d1440aa8e8dc0bf1058667a18e5931afe24fa90ac1911fe322d3d9f7", "0x198a6f179f92ba427490fb90b8cf3455f69f02b756e98eb07d4601a52c77a33c", "0x29c2be07e30d93dd927e80aa49c44df0dbb5f0506e96676d2d4b1a91570bc7e4", "0x13e75b095ad21ac9d107b2a7f1e62088974240549c0bb4e7d83ce4630cdabdcd", "0x186d1e26c4e415c8aab305f162f00d8a7754cc1a7a4a5f2f318b7437465ca869", "0x24462e17b2b3ff3912d0e41f1750cff169806bc158648da822e1bc9f6212886c", "0x04c8ff3b9a174fc06d3b3302ff57c510ad38580c35f4e3b5af79e24055662bc2", "0x174a26f79f26fa7c4c2682cec14da70aed49fe7c75770f87a52b5a672413289f", "0x1794c80fa206e99862d7e1a753d7754f6f1779581a85201fd46a5bfb7baa952f", "0x025b4632d29770667d09f79c33bb2a8a5af66a449d6d39f6fdbe63c976e1ca11", "0x11adf7def96c53dbdffd06a85d63145f0dd2395063e8d332be42ea99ca368547", "0x01b928b7f293beab032350dd3ea4c4b48c4a04fdff082b4f542e094d973a399b", "0x281187bf98a4c5a6bf90203092c6aecb9fc2e561974f79f7481aa6d2991832ba", "0x247168cd8fc0ee2cc9fea561bc4e01ad3ea57874756f9d9d734a7fbc45c000b9", "0x23097d74125e04278e5fd0e14f52ee1936b901c2de64a05b2b80991a1f3f19e8", "0x2cafdfff6422239399753a96110feaa8a156264bbf59013f1d8195a30838e649", "0x1a5820280d1cc66e2cbb99320a29d80e7844576377636d8cc22a5b89838b5e81", "0x0439af191c824775b86b6ae9cdded69e0ac524d2d7953bce65dc54e116546a47", "0x059216dce06bd797a98709ad2b90c15d1f9f78177f0ad66d50009725ed6864b3", "0x17453fd8ce97c60079f3d00aa29be8b9b90cbcc9a2161b7cef52c599c6286cd2", "0x023a1ac8f3a07c86e93184c5f082be51a98f706b6d1467dce344bfe266397ec7", "0x13b7bfd3ad519190d49beb27b00df30991fad40a694ef0df12e89d617263eb98", "0x03d37546147228b5faf95ba080b2b40226a58810463208b9b39566f073163dfd", "0x05f3bcfb8ddc917835430a22e50cfb51396f15242a5fd0c7e3ac1538004d19ee", "0x0b75558f92567fc1ec54e9954a33efafbf51866a5894a76552d1349523cf65ff", "0x09415183df1031dad23297c334ef7a255819b7d74365be4f353a88b427d90697", "0x2dc2c7f19b5024315cf5b0c76546f9432e068efb50dd37c395fb8744771c0e34", "0x115a5ac148ff0c29901220bf5b9cbd3d5de9a902c8c6efd02f7a92cb1d4eda5d", "0x1ec78942eb0fed168fbe55b730675f3ddfcab69c122d9f6ca22f7cfa72280ba2", "0x24bc460c697257bb30552b45ad37313987739e25079c2842dcdf2f974f9bb686", "0x278a2b29bde54b5e1d0f87216de48f51d4dfa284555ebd7fe7f3dddc234d1a5b", "0x10f5c4b02af508777c4cd3cd0c6c11f4d679fb3b0d7a52698593bf50cf203cb4", "0x2d695324f885445840f526b71e519f295cfb0a6e4f24145f952d8baf8572f573", "0x18113527536434b631fb3777ac733ab250ddbe971da50f13fa6cf26c9e05bd1e", "0x040730e3684e391d5a166b5487ef2fa42a9efc154629ce413c989efe2c878592", "0x1ebb21dae6af4dc7d80bd2bb938982c215ca124b15e0797883af2a80adec4a12", "0x0c68022eb63cb3a73859b577b59b17e6f836176c595c6a1fda124a05ecefc10e", "0x088f4a9af5d668475bbaa35610bfac5790e103ef53b9a1b3abdbbe293e56f5ae", "0x1325e2e84e281caae87f905df719eb665173fc82cfce43743eb3f0d1fccc98b4", "0x2f3ea3a22a56db970cbbedaafe9d85f14f02456889b64ab7124b2479978ed3ee", "0x055564b7831acfd8f46df96ef819622a4462bfe8281b05e95557598167ee9f30", "0x08c29e9a22ec7f02449273a35136949b73de66834e3f015f4689043aab341015", "0x212a65492c6e2992484160e5e2f6fe8fec7581256613b05b8cd4237ea596dda3", "0x20e629bb5b6c1ef07efa2fc1f8f63b12aa92bfb42e38e48335db3adf267416fc", "0x04086fd6c2128b11a5aa58fa2a8b25ed5e57c5b6a3df6534839a817299ce7713", "0x065245cf59148ef3cf923d2866e6f1f61ea54e6a0e650b6ab8c9bf94dcf1e9a3", "0x0b6c1b1badc00e60dc7e286bf1b76198e61a063cfdc2630f7565064af179fa54", "0x023a3829defce44de2819dbeddcd9bd17cc1cc24d5efd94345352d153c898097", "0x1b51d50b9f2a1ce039e1bf33a4395f693e12cba9aa5ceaf5fc0c6265ea446bdf", "0x0ada2b8bf069b0a8622be85bec5cc1502475bcc995a5687023ea33d3a949382d", "0x0832620a355e131a479d163bd702e2e96aab3688f818b54ad378764ae1a2d3cc", "0x01dd7cf51102ea8b1048d3dfca649308d59f65f4f370be00726cf5c8e3a72fc5", "0x22cf9eadd9580935f02cd8a788978c53bb4cd780b262c7aa0beb67def5d1975e", "0x17e3b5605516db11b62512348f8e7f206c2e71fd57a7bd9fe96832af6bf7215b", "0x1aad1cbdd185bc5a2bbdceef570edb986520eb92bce2b265ab8864c51ac489d3", "0x28d5eced9d9e5515d0c29b800e333bf66662a8b5b9839856e4094222dfb4e3d3", "0x15660d8c936e1eeeedb10437c4cae544dbc1b9be0fdd639feffd0246a313e886", "0x1f5e8f3f715cba0dba6f1271e1cc8940b37305246fea62aa7e16c301c89fe3e6", "0x03bc3a131bcea5b2f4ddb5cd58f71a92c54973da67f3b6aeeb9c2b2b1ed32628", "0x10989c21815e815e3695b1e86eac0ad5e68468f37066142d042d951afa013609", "0x13a14796be2c62bfcef389accb50952a46c7569e009201965f13223a77feff88", "0x0f307148b769d5a3aa0d70b54514d1de5098e070dab986c02cd91005c37a9385", "0x1e720c542b831a978860eca880ad522210565a065884b82fdd9abaed3d224b99", "0x136981fc4f37a5ddbd57a28438eb003ca7ff0109b349c2b3114447bfe6420d5f", "0x23c0f4dca797a7ffeed6185b6270045ae960f80e1ffbded2349f7857defcc5e6", "0x0cadec3532eef6e435656436bdf7ec56853edf2ecc1dcab33e585d7f9f33f215", "0x1d3fd0cddca96749c0e76b1094747f66e822bb07a1a011506d198eb80b831421", "0x0fa4bf5751e05cb1879a7e9d1be18c0cfb070ae2e54365037bf152b45ac085ef", "0x0801c4500a511b5f9b6f0bcb6deb2d0898a3ee9d9727cf027bb17bced7992263", "0x13b257c8b7194f0ccfcd859b03f7451cde8314798115ac1de5981ccbeea58e56", "0x0c8e8cb135dd381120087376a03c386e67871000da2b1bc02be951330f7a5670", "0x165762ac8bae66f3f3807dd925a4334e870a9b885628cb7bc0b8b7cb941c070f", "0x042543556c325a58e3ac753f4a5aec40d3c73926e9e3b0a62b92a5b920c47cc0", "0x10884137e86600bdf06f81d79045eac6c34f58ad687b799c849d2d12afb2b005", "0x243aa9a7d3478eb73fc5c1107b39becd9808c6e5e45533a3b267cea612a3bc10", "0x0d56cd4f582b5719a3301be7873142cdbdbac3901c33c71f490a29f198cf837f", "0x01bfb79eb37264d67c12bc4b214fd728d6adf84d02a08165ecc982868612e504", "0x082b38037b96a47f54fea54f4f851430f7c716766cb58c14f3db8ee1daa707b3", "0x1d92ef0b67d46a991de603c82917a32b7b0911408f8c8ab283bd36fc1c62ba78", "0x1e85bcc91932f9ca07b35984a41c4bfdca243a151441e1b758c5a4c0ae6ba181", "0x25e30f6d84da989e0d4d0db84cf57739ed9d1f354c8e3aafcc01b47802c57a34", "0x11ee0dd308c65edc88ce2ad2edeca29b6600ffaf309fc6c5e3a3d6318ca98c83", "0x18f3ca75188fff5274224cde36c2d85211b094c20f53d9e3a4351896e3d1a1c0", "0x05b6b21c1f708032911b6e0dc4e57d1e8edcbdd144102b28c8617e53b11e4e7b", "0x00eb79b07bcbdf2d2258177bfd15ba43bc56d9362e49f13d002394f6c635f20f", "0x1d963571ce7313a17110b17d64d45001b36d20b4869ffcee44ee578d23d6488d", "0x28c45144eadce345f87378b432bcf30e9fdb40e2ffcf61f5b918e3ad42ccf153", "0x2776530993a11fb7e5222ee0df505be5e57cdbb6352ff7853e668007714bd718", "0x210a7004456a4c7e56642e7940230842fd54b7fbdb8c337cb1493561e778fe8f", "0x0cc1cb51986ab1a0f628c12d7c6656a9d8495db91d90e5dae8f0dd264d9f19ba", "0x13d1e0cbd9e0f421626c8db09dd24df92c270688e702495231d057c7676fb1dd", "0x1c2b5ad45cf4181611eda67060a0490d8d6ae3cd1b10a1570b00bf0bd3a26e09", "0x25edc11d3b5e6e968ca9a27c340cf9350744d28920f5762687d2d31dfae14235", "0x230c8e7ac3ff2b39daeba2788119cd58a3a90a9c24c3ed821eafd08383f389a0", "0x2937cb33c930ac4be787b6e890e67f8a08cc92c151f7e673ffbcc27b25cd0b1f", "0x28a3ac677b6f19ace69e3d06049557fde2a92476c199e1c819c907ce456812e5", "0x2dec341eed7524a26b7b91bab300323347038c01206e0f780349e5c2ca247076", "0x0e83c9f68c5feb4210d633821cc840bd1fbcbed87effde9f23d4403d9b8b03e5", "0x112fb21185598e785bff0f0f7e4821289232403fb2b31b48e7ec9022df2b7971", "0x1faa621f0c039fdc8024cbddf4ca817581c6e3f26bde278b13c34cd651bd8782", "0x04e3d26adfcb4ef7cc322ee557878606ea5b537fa1f880445c647e8d12c98c91", "0x1a70c2015bf1c5dfa637e8debf8f759e309f46c37e535f0c64486995ea5b9061", "0x228f60de5b5f3ae8a52bcedecf7b3830d5b6879fed7eed95231c674c016c7fea", "0x0e4ddc512fdf839ac48b7ddb03e765e9cf5e320745572a5d4f70097c1074406a", "0x1f8e572e2e0b48f9b6bdc474210a1c8df655ca5e19f7d13b5a89a185f3a3cea1", "0x03a183213151c33d6c58b6631cafa0c05300f75deb9ff971fafd35441f5cac78", "0x1b7da980828048a7498cdd2b49ec08be3bad7d4327c9754b5e3fd674e02c8286", "0x285dd9c3bde7c361a16cbf14bfb0b5a78d8f4ce4433d41f13a372e92c35e21b5", "0x06f952d66d60cd18949ec08a5c203707ff452e3df32d50a4e221e72a793cba06", "0x2f6843da088f675ea773a0377ecfcee33c9601ada5b8256b49f2c2259ab8abdf", "0x1bee4d9e168ac606a73d79a990c590900012aaff03291747553781384c28d800", "0x0c8c85c0320d6911ab65a50deb2b2825d3e33921a46522e54ccb6b806e55f192", "0x119ffc6ee4a000ec8b6bd175bc99718dab6508e999578d85f57fe22946120d55", "0x300d0e8681f117fb491827fa12101206254ecfe5a70b08716d1950b6635cff06", "0x04f424c26471906086dad2de5452b3148a9480a644e69b0d2c6a8e3572070181", "0x2aeea0843be6d263700672c426e9820c16f096fdeadef7beb1c423c04eddde55", "0x270aa0ae5c5a5ddf685bc432b47c996eead9eb1ed89a25bed2bb358cb4edb6f4", "0x0ba4f42fa43b005e31fe2fbf27ae1df017ff6d11f27cf952436383ac901bd17f", "0x189ac9f58d25991d10ca6233b1ad8cc583cc1c2479967904a801f92c4db08818", "0x0ac7c203b5b06e4b6f56de45fbd9e502d79662b3ef4c122f73f7a3383fb52af5", "0x2ed482bccb4a7c8a75dfd31a443b74d1e4ef522a250660344c21a8320a478cfe", "0x0f4eadae92ccf071dcdb7d67241db82286a0b53436225d8d6d06c3094d032be8", "0x2f3ee4a76715b3bc3feb74e528948ff152d0b69cae7aaa30ed3d254ba8931a73", "0x0a666ccbfa6ed09c57f58ee2963407236b8ebe1935729e811689b398a9dd7b40", "0x2abf8b9e553379c8bf68fbc67a67dee5a22df97393673145211d0fe9f5efca24", "0x1e0e4a52a2fe011eafaace83d54b92e6d857634b4510101958e7d80686ee9274", "0x13ee73f6525acc520a0987c161e5195723b4785d7ba6a031c8357fd55ea7540f", "0x094ff2c24cfd2859ef66c4f62696fcdc7edb93ab92127ca6227a6c029de19e11", "0x026fdd4092be37092fa13e02d03b3c93dabb7fb7bbacf3129344061909556cc7", "0x060cb0ebf20906790098d260ed00a75704e88e33386f43e272154888d56fefe6", "0x0ab0fa8ccd280804c537d2e09aec4c1306b1a7b479c6623e9128364d9297f7dd", "0x13dd22e61ff5e9e3387f90488037e06c48cf9ec7b8fc40b2f78e831e977f3d13", "0x24c62af21d61cc277ed3eecb6b53da40f824a6bc8619f830a5a5bf86846c1d41", "0x2a025c7888cb0ec6a2338a4be571a7c67bdf7f7dcf5c0775b785a2c5ea3a0c60", "0x035c1ff077b016b8069c044a2bf5cc09803e94ee0110c17a5bbe594cbb270e14", "0x2f296505bf1353b23a672791a4ee325a28a9e1b21ddb02278e48b7c8fd354d18", "0x13b16c3cc0ca470c75bc2ad7bfd6cbf0b669c762bf0411010099c1162e26a9a7", "0x2d3c900ba9a9d5494fced5d70e8a40acb68f47a0bd2521f3813ef831f690f5af", "0x0ce9e5f31feb0a8d20eb1aba890083cc3092738bfc196e10db8cc34b31f1af2d", "0x0da413bc6c64a52d068bbc66aa2517c323ce2e00ec365235cabb2235c32c93d1", "0x1897ae1a23df0f99f8c1cd4d480958b959d327816e6a79d83f64f11f29f9a26e", "0x0d116dfe5362123684539d6841825a764c053dee6db6b2bb5d35966760a232d0", "0x21e25952e98f9615b696b4cdc5403cd7cc432835a8e78ac727a64674b34e4314", "0x1a3dad57e7ae205a48f3a024984c4da0501b544afc63aea283022642d3b74528", "0x19bd3efa0a6092951ee71b313c1b6cd2b016f1decb5b51d8dc14927ec770f186", "0x266efc42a30cd04d6778f50a3fbd5c51dbcfcefb6eb400f85a7a278ae184e381", "0x1c8d90d85ef64bf4bedde609957ff4dd007aa05eb2a2d04e07b03013d7c90b6a", "0x02ac06d4cdbd30847a9fce14472ae320e1f36252687227e082f213b219e72703", "0x0522f2c9b0876d27388b8b52a51002e5fe0669f33da07014dbb8c0a8e29e85cf", "0x26bf744624ce575461c466270c3c7cb09ef5c0b8342d865985ff22d17b47239b", "0x2375100f868f06ec614e0ded6d99f714a1b3159f810493c846eec25cc2df2854", "0x0bf461146b46b3e73e0edd4936989f404cea1f9d9a058297b94cdeac7758325c", "0x0e98376ed641425e2716faefd8ed7544b173c5a3a66936209e4af629ae6771c4", "0x2f9c4d96056a1391d89f28720a20d0a1e7cb59a5c93a87dfe6069b5f4eca2710", "0x192f200bf3b555bbac797819bb21b990b729d65a4d28a27d6d3f00f1a02aa23a", "0x2bf8984b5626accf10b7667f4fdccdb7cb605a0ae34d6d204ac1cbc80cb49126", "0x0bca21c12464247244b2a19fd30fed65f8e3abbf8335b49205c1fcc1f6aac1aa", "0x14078d4ee11f463471a49516c3c85f9a266f8c40f6d7b1f86b1d1935b09f15f8", "0x0bb8a04ecf9f98e1697d330e922d0c8abde0000b50b5aa57c5800d52df4de011", "0x21526121c05e09a0abd2ca6efe5b42ebf7e9115382221caaae628a334917b035", "0x00f6a443b0e7ebb0bf777511512f66c5e5bbe044c9665d96109018d9729c84f4", "0x10092751e94fb6b5e49bea158a014bd99078542458af14ba4cbd9258b8acd236", "0x029389903d0d3c29a173ddf452a66b4abd36efc642cb0b57d8f10819d5c0f5f4", "0x2b6d20e6cc7ca916f542668724179d8d0ff0741c3d51f74545e2139112177376", "0x2900b4277fb3a0ff83b4c58fac79a8861e305d5eb313f2cf57dbb05939036558", "0x10afdc0066dda9b64bdd43b86d0ed62b9b3938007cc50f5699250240cd2ee1a9", "0x301ed1566f5220e17fbd4083a57bf42c12c15a6647ae8103edca272fbd5f8f11", "0x27f1833229c3a5998686903e824bb3e3e10bc969f1342ab0d02de635fddaff11", "0x0c4ef35ff9f906d0bea489d201c210c53abbd47a151a9e4efbdb922029fb64af", "0x0ba5ab9246af723bff457ab8228be06484af3e3545dbb4c932ca49115f957d27", "0x21c572bd4264d821c5e2aef993006499c88b3245cee9593f02c250149ae87ac0", "0x04d1cc4795008719326f8106c9ce9a4b0dde4f4de01d2429a23511b1fd0fd171", "0x0a379f7d6eedca7c4f07bb5df2d8ea0dd87f1eefe2ac2271370a7f3be27065cf", "0x28daef7d37a43f2ba44065f2213912eab6c8c60e3f7560fca990be0ff4639720", "0x2906e8996458504f2c044f053c4ad24d35b0e0ed373b27e02e5235a3d34f65c3", "0x260738b3d0a746fb0612dca6db53bb968c552213b2f9a134df341baf3e1379c3", "0x05f177ae8c6eec8b9712cfa042776690e924bf422430011ef27af82df0abb237", "0x26811027f445e86c192e8ae371d2e83fb73561c8cfd10bbf5b29a77f56b1d95f", "0x12def5ee59c1b4a96b50ab3de36175640cb70363fef89995f34926ee84be514f", "0x069b58a6aa41994a11cc7dd3a428f6c4ce621b5b06793f5e95b4034e2ef7e9bb", "0x0dbb162fce1812bf2a16aeb6aac7f1737f2d27660ca4cdf6e79121fbfbb6c5e6", "0x287ba84aa5087d8cc9f89450f1fe391cc3a84f28a24b261cd1dcdab039a309f8", "0x1e878a1f2fc77cbe232aea7683d46d8996debb9cb06af003849fd099e9c504e9", "0x1c8d1ef246dd75f42de13c5bfe069c08d6af9943cd7f2336f31c896456cba2f1", "0x074f1a678cb029488356dcb477a88303d0ded5f2d5ece54769f15abc1994538c", "0x2766e558172ac70b1f3dd85f4c80517ba6e18556bf51d20f687b669e7815d47d", "0x20636353e29facebaee5f04ede42fc3ead0d07727ede7a80af1c505c6ff5d534", "0x11ed975aa3d3f9bac1e0bab123041671f8db695fe07601fe5a71e0fcca916b46", "0x18100160418fd858f3e4fe8d5d6b80e2ef376618bfe5a556f24bc3247099c441", "0x2abca18d9b3f2522e21ee57a1c6634ec12774d041e65ef8430224cf31f960f14", "0x16625241533c582b9b57f6e0963dfbba9a7026139daab3174fbe71b0d9522c8d", "0x1bd3cf1bd3124abaa627850ff77a6778e8d82d07ca24655d94c5a27b57c780b7", "0x084e7ae8a515bbe6fd8370e7c13e7d09835c3749ed21c2842e7c46b4bfad4e38", "0x0105b64fdb0f02988732b58e06db800b2df09a71a5b5a165ad2011ebf48a6447", "0x043ed436d6b9af567aac7e24206137faa086d188e8444cabd5234983904bcef1", "0x2451cb7a5dec1f93fd2b3f8b97c4b1dd2fce7c87d0a92c9f699bc550032a0a7b", "0x18f37c624e96ef9c494d2f016bb1ed956ef951f3b57420a46c7160bdfaa576c1", "0x1bf84d6d70c748ccd981c21b19d555ce7c3841f34220c10797af76f62e258980", "0x0bf9b051f2021f38a294eadfd0811f05c08852720bdc749e1f9a62720f62719a", "0x19f1fd2199e3aac88c7ccd7dd858d158c2ef10e8236d2cd66a70a3f0d187988a", "0x1af9d63ace6db7a8ae20a04b776fa39de34b795394231214317f036e5954eea4", "0x1b3a2d08d1c3763b7678b9d9de1fee10cda80937fd7d74f27d6e550386f5443e"], + ["0x0752af3c6fdccaf3868276685f0a69b9749e1706a82917b64ec2ef847f804559", "0x069503d417e25f4568c7858ba8334301c0fa19c1b348bc7e18a4c1ace1d15418", "0x25c1b121f33f4cf7b308ec4630f27b603d22aa81ca3595e801c5fa7d9770a096", "0x23d6b55145bdb32827c1456af4d7be4c2d213e825c1d2f0c9ff99b2273751f6e", "0x1b357bce3ef3f2b76afc2b5804805adb14cf6bf37fe2357c79aa7d6b32acaeca", "0x28ec5ac0881c1e6426ba499409894a6f3c276fe5689f2c35c9027e80944877d9", "0x2c9862524ac8a07b47d211c9c504c8b0bd398d028acf690e4b8ed4005dd06eed", "0x1f6e6f0ac4aeb7a52343f30418078b40644cd43e290da0baee92891c4c065ac8", "0x03db3517e233f8a76d21b2fb23c85fa7cacc577769edea09aae39407b9af2fdd", "0x0fc333dca4183dab479c5962eb05ee4b79a8ac6e0cce9e9b0a2142247bfd0877", "0x1eed281978a8395c04289b86197673b0f2b65e1a135264527e250a5cdf99aca4", "0x2568bdf6511034343fb5d5d021e052d3080954fee357dca36fa5d78f33b5be3f", "0x1dafade374e63251deca970591da4a285a63d11cfe64661fadd9a001dff82330", "0x0af25c781abf56fa4cd6833580e97c7a60eaa97f1dc32b622e895df3a6915b39", "0x13501451cb7d3e0cf3cb57741fbe8dd59757c9367fcc48fa11deb135427c5c1c", "0x197045fcdcf15bcdb247d8fbf6c85c80f2d065f923108559a1730d71c73e56ce", "0x1a390d7281375fac249b9855f8c67a275e8ff8a0a821d1b305c4cdb1313c8661", "0x17f0706f7e12fb022d15f94297c7b45947755e5e84c7b9957659be1de64b737c", "0x0a8f5f03f19d49799b6fba650c06e4aef251ffc75243a8d7aee8924d563f7e49", "0x24c9e6c35f4f819f5bc1ef26576e16d2c7c7206a0598044acf0c18fc5042f0e2", "0x002405ca70d51550dc14abfee18e3823b9e979072330d547133a14b25e461fd5", "0x1eab4cd56f1474b270d502945621d93e44663caf8f1d31d86b156e107fef38cb", "0x066b9750f73f4561ede55939407e74b497d4deef598b873c4b4a1f32ae425d00", "0x1ee3dfa596f5d87030a6c9d27d61dd175b271179408235f13bb3f84ea28e7a42", "0x1ea94b9ac6fc1bde29d5893fdcb660ed61ff7b2c65b638a4046eab217c02aae3", "0x131388351f0796d4753ce564e754591cb1bae02a2dd54878281ac6e7a3c069cd", "0x1a45a017fdbe53619a29d8d31f27e408f64be10bf05ce16c90af3d1f13886a2d", "0x1b4a0d68e54312b9fa67550c5c0ff0d88fe57822dddf9d58d9d2215057aa94af", "0x1d45d369ec0399905bb029dd9fe0b97a5ced1d29c7b5a39da358ad226691dbb0", "0x26154c9c51df8059745bb2d97d9a9b8cc8f3d3d813dc4af414adce1d69920e8f", "0x2b748ad3da43c5cb9412cc64313c8d4711251a7080ec5b59206e7ac8c701730e", "0x17a5468fdb1e5fdacd9c9fd0a7f5fb756e05f2f2fb4104b2cb48d830fed13758", "0x2697a5e22542123f0923b86b1529a5405ef809de03ee4129b2baee5cb3bd94e6", "0x09b07ad43370fc4bf9ade610e1addd38d9d962e84d8ddb109efdba69916dd489", "0x069c194b5b9f2301bc48d6363c8e5afa4a75ca2f8a009e15ad4ca11a17c81a1e", "0x1a1974ad418cb372d555ec9af0f348b9729cdee681eb0e4479b90bb720f542c9", "0x18a9d8d34cf2c633138a9eb9eb29820c85b7098895826ecdf2e1bf040dcf0287", "0x2e0554839dd70a4b9998fd915327fae14685eca623d662585186d2f124ba8bb0", "0x1e6d0216c8b678bd9e890ccd72d23bc267948ad87fab25aea6257f8cb7012803", "0x0920932a6c405b1ee871ae173949731e6169a24442d8f8c9ed79ccc7a24a495d", "0x142c42de6abfff58054f6a4bda8eba5f7f10cf39fbeafb8d39aef30e884fa3b8", "0x1418edd88e64d3ddad03f33ca0936172444bb0712d646a8bce67b2e451ee0d81", "0x05c5dcf2bd5e04ea65654fb473c4d4692e9958a5999abd7e5cdd706cb7e082b1", "0x114464311fdfa11eec166d202aeefc601e4d16959ec936a9e8f1b2f97fd35ddf", "0x21b713b0fdb238f3b053f6d596caf07223b2a9d1fcca758321a1d9175c327ef5", "0x15ef67cae5838a50bc671a5ea78e87b48bc98e3cd7bf76d5fa033093ddc97581", "0x0bf88917cb7c570f68b39429d8fee0fcfe583306a6ca69338c349026fe66bfe9", "0x1881f0129a64b7f861085f6b3669dcef57e568d63497982780770b4bc3b437f9", "0x2055eb732a72d37cada83f04ef741785368d648d09cb50142575430a110e89ce", "0x19b848c33b3876bb168846d13897cde6b0b9e2b29954395b39946a4f5f26d003", "0x01e19797232964cd5f26ae8a2e04bd7b3dc1bda25b541f3d4a059b48fc952da6", "0x028b8dd78e8712e172486a4b278ac8e166b1996552c74bd2fa4bfbcba3913457", "0x1fb1cff73196d134c30359da15a530b1a5741aa0e05788a9d4fb2032aff0d586", "0x23bd3301f59bd655225f85c42a9466bcd7c64aa93637ee27aefecdf288326039", "0x0e2adaeb2ac7d6944e287dc7c833015313d3f2beaba25ea4c1dc6f0e3fbc8e34", "0x2f5d08548ef73d65c2853178cbcbc8a70c48003c0d1386db7288260d29a52d0a", "0x2f55c0e96de74a61fc974df0da85b11ac544b5c8544ae59ad76cbc03889e79b4", "0x18885f739a9c3dfeed39ceb7c8eef77fd635ad52e3294d3e126a92a64c5a4543", "0x1267cace9cec3c1a96fbda5f20df309df88f9edf5684a05bfcacb11167983082", "0x2a45c0484448da31b253b632f39c3d4f6c6af8e3e399ddd393b820cdec66f902", "0x2260279c332583a36011973aa7626d4e81d6382967868a9643a76e53a2b25316", "0x28ec82446ae8bb21783f54cd4daf07e279bc0ead04d7a313769f662c8e74a0eb", "0x16e13570deffb3bebe118958b2d86470578cb112969bc6eef3a1321befdac9b0", "0x2288e83beb79459807cb77408c9bbdbdd077e620279986f4e2f0b3e5facaabd5", "0x2db5b06f1102b72ce49946084d75f2109ad970785a8329de8e225a410e243389", "0x2fce39a19ea115f3a917041fdb267c1b5103b5887e5d63c48eedfdc533699758", "0x2c65ef055b28fb41707c324a36a894c6ad9f862fd1f97da54459c5db0bda55af", "0x29e63a24c91235dc00a6770b9e572358c18a9063a34066f8b6f56683cff48ffe", "0x054211c56cf9cdee64b7daa7677fe9f235e2b5c99c5d8b55de20d9aa612c72c3", "0x108e8e83433f7cb1728723837ede94d073032ab66e2e0fb6db9787b39559d73b", "0x0ff9bfb41914e199a553e070eed9438fff033cd31476589149a9e60d5058114e", "0x06913bc2e37230d4b6f56b44697d6f80418d7c11a1d20d8484e95b067f935bf0", "0x300d3b773b9a41ef818fdd12202f499d5dbde395388a81c5ce3bc3cc8b488099", "0x29f9b289721fe3001937f6c487bb30e342b344c71ddd0f957d02d9295fabe594", "0x14de0dbb50a0aafffb3994762d1496cf51449350b5dfceb0650667f7db7f33fc", "0x045cf1d37629dee9289fcbe4823519deb857ef66cb39cc6630a3ac6157e9e0ed", "0x1e7de46fdd23c6aeb94addf6cb999856322d3ad6d5803cef88b6693ed13590a0", "0x2c033fdc57232e685abe9aeb18a5950e59f666598a0a9032afcf58aea772939b", "0x117eae65ffe6634241265348d98472074e89cabe3d8f9f55cbc74ddbd9843e4b", "0x2988e81a9b5dc22c8b3c7a9d01344422f2483364c189996bcab079912d25993d", "0x0dbea591b66a2448fbfb886d10b899d656fddbea4e666c0f14465e09ccaddff5", "0x1edf424bb6ca08ac8c4cdfc98d6d3fd04000ec4c6a8628d5e2b3b1263234755d", "0x214306c0105f363d5259e2141e97b7da41b9d5115048d1ac8483fc688a7034b1", "0x242e00b6930be5835aa5027493d3b11e311877265a70210e01216328452fdc98", "0x29154d0128cc650989dabb8ca0b18dd5beb1ebac0f63fa47be96e3832012197a", "0x25d22d54d9c82d7cfb89c61aa62ca150506a2bfab5d300db784d25d260827d0b", "0x2f23f0ba299f5c0976c16eb3b88306892612873923ee88eaa2db8cc10108f5c6", "0x0b743a8913bd8e7e709e68311a3585efb096708315a9812039f215899f4294c0", "0x264efa00929546cb4ec30a621c3c6f661325872864ffdf84d5adb61af8dbb3d0", "0x1c49d76663a358387762d208dc85400e7acf1b65fbb13edb346df1f2a10ace37", "0x2f40725d1eb518ae4562ee25ca08b3e56dacaa511bdf82d099fbeee5110b682d", "0x2651bbf39215d6d6632a652ace6ff5118555acff7d4c8be7ee3e206f44ee7c00", "0x2198f3b0a3fbd0bfab07578d40d7fa03e50761ba8f1f2b018613d65b091f3eaf", "0x18d4c4699f7d01fa00edadc43c8e1f10d92a4f7db96c2d9139bdd6fb11fea408", "0x059edbc553491ec6b94233d53b5328a5d24b6e49f457190bcfd062a5822957cc", "0x129a61614b4e9e421e6667daa9b85fe14beaa822b3954e551288564bd2b14552", "0x2e2bfe4d7b3234df6b62688bdcb2c8767597ea3f7b7792fb44377e71e1ec9f16", "0x01f8397cfd8eaeeba4798e9863737ec54572f6a355ee47cdb827a7f20dc389c9", "0x117db9cc9140e4670bc74e7fd3a6fe99b87e1781d2ae191d011c6d64e02dcf8b", "0x11e0cce35b68def7ded5522f434c486f287db0b6bae3cafb231dcf951598f89f", "0x25bf4ae30c44ddfc8700e2369aed7f568980c6d48e33b6c63737c82f942b9230", "0x1153f5c16d5608a17dcfa2fcc5ff92d0a41d0fd1380b58d2f77c058339886f6f", "0x041bed39c29afb7004cee993fc222605cddfe641fa3a096c8013f38b5cd85b7f", "0x047cd5c5b0c2a604ae99c842540fa37d44e6abec3657699a116b84fc42ad5d3d", "0x154ef25e671486db8e882181a331826dae7b9739f2eb6c8f748a30649aa4180e", "0x1b483e74f41c2658fafd081b9cb7709df288999454496a29a492eee79efb9622", "0x12db88342d014b56fdbf93dbf9d9c082196cb34e0ceddfeca0a40904e2b8cb2d", "0x0944263fcad7635a7e8ede76f4fe3afb205cf835f42a95c0336de6c42ea5a990", "0x2e7ac6fa9dffaf83a9ebb6966ef5464e4429b98b78b8f14165c501546970b734", "0x04bca07a15b585cd27790768caa382e99d14cff8fa57e2fdaa115a472dd4ec12", "0x0a230ab485e781468fdbfedf32413aa400c839ea855a50f1916b03c6761c034b", "0x1621dc3c8c3db86fa83059f4a3c41298aec8ed93c49c53bdd2587339b216ec74", "0x1b4e4bc4f028fded0daa5c1a094feca0d05094fafebd6619348e1dd9fce168ca", "0x1a739e55ca644e9ca0ff28062320977d9738b357287fe6d8727e10ff4452c799", "0x292800e8452a5666cd02b1756950f8048c367a2439adea3d942ee3c3185cfd92", "0x1fa371d9106b81aa664c11f50cd41d2481a91439a39c0fa1311ffc28c4484dd8", "0x2a786941b8ab631a455f1f0bdbbd3eb9a19cda5d76c463bff4ef12200bd6cdf1", "0x1521f303fd41509e122d6b7661d62c911fbaeeee821fa2e11e29e70c843fc859", "0x242af7a107cc7bd9c1c5b2537e5eeb794c677827c5663418bb9a2c9dcef29157", "0x1cc30d4813bbff4b91740cc8ba20bd06afa9d217ea012ce12d14e0271301e77d", "0x23bd2922b425af4d8bdb587b1cc08ccdff010ab030431664899a4a323b29735f", "0x150fab5986eef5bd1fefa92aab5002530d9f54cb7e65633cd5c310555e0b390c", "0x18b43cb064bbf3c83fc2f158ae785aabc730df7e5c6ae3bbcaef613bc0ae707a", "0x13bb42eb4e73787060889be175018b8f2e5a28a1181d777e2aac1c993acd6698", "0x1ab89b566dff36a95f8050e843494740ba34cd3b35d0b7c97bd2d705ef842abb", "0x2d5fd90e717d8af8d5b10f73844c6ca50d005940af09546de8e34ff991435fb6", "0x0b836d0d581914218db0e93c8598b388972a479b35c933ccad984a0b6ce94bc9", "0x02ecdfb150fa2eecf4c34c76d56eb29a44a94003996fe3c7fb9d64d72d352e3a", "0x23578d7d5ec8ed31b2d7eb794564d389025fefd00652195dad122b400a5196b5", "0x1ccfb8b4d93e5e08c7c4c4f30635706fc9df759375fffa6835a4c1c27f222796", "0x1c0cb735346164ba93308881d536f5888873d4441e308375e8e6b738a1c0cfd3", "0x0b73e5b78e0d23f77b0fdfd001738191c33029c06dbbf6f410774f242d0023e3", "0x044715c00e5fcb99c435189c1ec24b3ce9b8311421f5b1f38484ab7692c6c632", "0x1d3b3647b8ea345e92cc286f1bc18b6ea3b3a8551d0bf1a5b95214cf2310f700", "0x1044b915a339a2582a6e7fb6a66f2b97bd6182f9946ada1e5d3f764ce1ab0ce0", "0x1813db2251e3d904d0d30bb86be2d7c5803a92b87375dfd68f976f4622a51534", "0x2808152f5685bfe577c94fca9d70962e5a08e0f6fcd8d92182df7fb3b2b3924e", "0x2da940a1e8c89a6f983e3f988a4e79759b5c6987ba11f3f51d9a53d3fd1d4011", "0x20fb1d869cd192c87e34254e4b48f222f997b4526a3d3f9c9fedf51cd1670269", "0x1bd49eeeaac3927d1982829065a4db42698c0f5d5febcfd48ec3bc1059959f1a", "0x135112b374480642311b6b142704f21684dd024e0ad55ae02728ac322689e66d", "0x2c9e245c71832c690a7ca3db1cdaadcdd7cdd39570bedc14a87ace5f726ffeac", "0x1a319a5ab3b2a9e95eb0c11a5a12b79e856929186a1ee3eb2872ad86be73f564", "0x1a123c31f99d5ea55bc42ee322b7c070f4ccc1fc26bece9f4f3eb44b90513808", "0x0b23ffdea065c8e75ea0d3bfd966dff136d6602afa94328439590ff3e200ef76", "0x1c81f8e014ab25b8ed79c5e1bdbf869fb1be1eaedd875a7539678046bd1a3314", "0x01bfc092f4701d4caeff6ed32605cc0f3543ef523858bf7de922363354ac3370", "0x16068fc89b3388fe5bd541a72eebf297689d1e6f978925deed56f2ada6d01fec", "0x03bd9dc121e7e98b549441bcf073b564d5a9d40e3020de4d1a71039ef2630336", "0x1d0bbb93d9c927a609eff76c3ca95ac6e94e1893c88ef2a544fb5f6295da72c2", "0x20e9e2dc88aea45883e13db206222e4c21d4e8eb954202f2b90c211cac96c9c8", "0x0a69dec0cd8a399fff11902a34afe9a1331f51ad13a7ee5a71efd7eb8594dae5", "0x0867c910850d2f230f7e5a03b3cf0dc03264d5b6f2661105b675c5ff41575c89", "0x145603f8fb5a0cf56bf71b9e6ffff83127c2d0bb368de23c69fc7a94c844c404", "0x2b8bb76dceafdd4a12be1fc9437b9d406ffe2144b7be46d9a56a410d17da75c4", "0x089bc5ce0fd41d90b1aa659de78346e05eac7d054f1fa5fa7db91c07fb3fa7d6", "0x27bad78b8cfde47a264cb63481b5a0388f1339cb21f2cc32905d82feb4e93f93", "0x07043ee703d2b1b6ab8641fcffaecd107bcbcc034abcfd46fe967d8417fd3720", "0x04f5ccdf4036bb78889335f68633fe091e0da370d2f07e6f854f67049e54c0cc", "0x15b1ffe12147ee71e3401b3335e78681c534bcc58fa9f80a8130509dc0820256", "0x109b0548eef07fbb9230e92b4cfb7441873a44edbd265fc152d65018783cd573", "0x0f07c58aa725aeb731b6af087e7c5ccec5a3796ad74c872a7426fbeb7fece87d", "0x1d1342ddce6e4469f70a948ce109108d3b1e75b3733ce7c9a237a4c5e5274514", "0x0635be9e7e8443d3b2886d154344d243daa9578c82a38e252885c4f3bb138b10", "0x1bd4922ac758c0f4c50bb3035b7ed4b5618ad0b714ab468b5eab988cfd8c2959", "0x2e1a0e6f84c93342b4d529f88184554976e21ec6180c580e4a58634a7b74759d", "0x2f1589be5a127698a4783ba48722e4c9a9088c7c9edd9aadf9152b9dd839f2b5", "0x273dbaf645f1185466bfc99b676c6187f8415b9fa2e1dd6fc6435f0a3ef35526", "0x1c11b76df042385ceb6d0fe269cfa150695919e047b4807bd6e9a3cd4b4e0a22", "0x16a0988d4234ecb090f09db6bde79af35394c9b3ccfc6a0bb444dfc6c7867359", "0x215d025730ada1788e2024cce27f2a53ce804a93a2fc60452a0cf948fb03a8b3", "0x2cdfdb0847de8099ed8a941822b15ef9e91fcf64325af2202de42eac92bbdf21", "0x0946dbe9998dec541da39a9d8ea544a7e449e26a4f9aa87c28c7e2f118961342", "0x0f958982b43f8fdc2c3785c4ac3e631d5c89fb94e0c724a7a65c1c3218b67e40", "0x185021b192274b1b61952ad219cab61acc3b36fd36188a1b8c12e56d998c5e84", "0x24d56b4d52b47f9bc6dcb7ad353eec927c0e7d4212a2e6de0eac44a210260b35", "0x1098d58fe7b53523eee81510b083fdadca004b549468cbd201b0a31c8b7e1d17", "0x24a99bc48481068390bc48330c113b7921ccff028ad504583976e7e30efc3c88", "0x12a7fd0a7a6ed9c0eaca3465ae557cf318705146f72f7b4e4ab24934dbb4c673", "0x0d42adee447d6aea66365bf01e5b607c52848089a845d1fcffae9f47e0716b16", "0x00d5d109de2579f4e5ca2763a37d1310930dddef69c2023b167ffea54b0c4aaa", "0x2efe7e744a2f0e450693507731d9c0492a077d194a02210022acc59e7ea469d4", "0x1dc37644bbecdc24f85b713fd19af55b6fcad311b77b5fe3030a96d5334bb833", "0x243115568da36482d004008176a75427fda366c9d07bcf56c7b0f4821c263764", "0x2ac9106e5d82d4e200b257b0b222cb30957327beae9834fc428046a0f5926e71", "0x16b852944570287d6e02c35a6300392635820ce4883fd0938260f85555c6c0b5", "0x29dfa400161b661f5264b4158460d4776f3e862b7b8235119430f7678a2a2a74", "0x25908a5cfb1c210f3afcd6e8d63173a6d79dce7535aedc57aaee994326c386b3", "0x1480f56b3a68ef41e5ea44dff254aadddbf19d50f0e990965fcc89bdc3bf3546", "0x2c1490f9335e14dbfaeac6675595f6b10807bcfa3e49a76efc9032f5f53af5b8", "0x1833f0ce5dc529d3576a7fb481d8f70fa6e2170d31c1031a255cd800fcb262b1", "0x26d36461a1c9f3a3653590e8273554f81fd51cc430f25bee2cccf55e2e762733", "0x29027f0fb381318f8eac14af24f76e1707dc6bed2710362256f16dbda69a90ae", "0x0a4cde8f3d42ed48fb3daa7589036f4994176cdf07a2ecc3dafb54f9d45d9b03", "0x1fbec12feffe0889cc4a31fcae7d819cec482785e190dda2536e2c4011da8704", "0x1b26f238c7bb8636782bc0ee48a931a309274684014ce72714005d98b8d8c666", "0x08ff4df0c027e88807b8b6e55e6bf7e643fa60c66d74a33dc844ec1c34598ee9", "0x2207c1318e959e4a002ad5015d381b29915de22629a612a1b6da389ab86fbc24", "0x09fcb07e82193539b71d0a052d3977996a09f84216bcc1e46f11ac84d5d75ef5", "0x1969f5c20e80f10e71ff42fe5af7bec47ee7533153678dd2ef33f1e91fbf98cf", "0x07b65d6a874f5706282479ce323f36bf23bdfbc34769e11ac34ef2494f2bff85", "0x09e9ac4c51b61ceada2c861e276a1c0665f1b069142f144f80c46649a65bc425", "0x08b74eb90b0e5b3013347515fbcfe94d8feacfd5aefb9546e1e5adf59ab4acf7", "0x19351714ce3d2e3e93ec9015c02e0fa056f68ecf8d1c7faba519dea116e0217a", "0x03c4a15bc97488139ce1cb928f474505ad5bc7893a53b3cf1c9ba21d51b00410", "0x0d8b7773df335b6a9cf298b08721d640290a0b17d5060f0222f263c7417d25cc", "0x1e14c212fb7679676af50c3711b1917d6599f620652b8bdfd244251667aed9ce", "0x2186cc6cdc5271291a9b111b98bde50c62a28043d90aef654171bb70e429fade", "0x0768dbd4b9074b435467927d1187378c4b174685aeeca35788de665f2812a195", "0x063f5a888b7bcd3f8ae406ba40e11207be013618ad5f811cc317fc1e558c79da", "0x17807cdc2e72f05b3371fce98fdee5f3553eb4ce92e9398d702f938cf9ee741f", "0x25f3dd0be3bdf8e632afdcbd431be7ae6601549304475ca580d13741e2a7fd92", "0x2274a45e2d69064bce67e2eb664db45aef4f1d9dcccd157bdceef7aae145f6d5", "0x087ee7936deb77a97b8d7473f53436cf3fb1ce85df07ab68a028b46dea841701", "0x0aaec0f75e53087db937a974edeb32eabeb633ece1180f1f8437abc9099df1be", "0x10cdf01e8c61263b446c3f7a10cc29fd01ed91fad9891f9c6fcb7b5ce438ba95", "0x176627a92072fa2bb64dd5dff9cc4a0d5bedcf3f22c91fe991cc6568a4fb54ce", "0x0eab0e158e2f672c68a7a0a48328e21179a417eb0c65b1b617644e1c52c4b425", "0x2edf1ea1cd97d1a91fe7901e64c0f2d12f7965741da5a7c7fabee25eac3b47ee", "0x1fc07137863b1d337bb5dac18ad91237739680a69eed5da0bf35062f4d4cacc1", "0x037bdff68025bddcbed554ceac3df66a9eb298966d79308ae414d34227aaf862", "0x177f68957ba07da671b9dd919f2433dfe5f363b74a3c16169481c57c5b5c07a3", "0x06d47b9921e2502c2abb0138d3b1028b02b85f8f42362cf43671b60a69e9e60a", "0x131d58cb8a41a753e767e1e97cef60d0003e49c8cd1f0f5101c861b177715da5", "0x236ca76235d9e69472c9985f842e626f33b3fd4fd5f543810a0c5d2143ed4c9c", "0x2fe7f85a579916545907f2a02202b83696b64d1f61e813730cebc06d068537f2", "0x04952326bd26efed64637d4fc0f7a4bb528e3a341260125588e75aaa88f62d71", "0x00c2dfb577b78dad18837bb70c8e2990f32325bb418f4f66263a2b63f3f98384", "0x122c682293b4892d51255991f9cfaf96e25140bd6b37337ea7dfad5e1242328a", "0x11ddc540d4a110e482a2455112ba67ffb3ca3ee54711498db1a372b9cc23d145", "0x2f6bd71f6b2f3af3d468820c80aaad72ee48a337f1fe3d7ce01bb89242106a1b", "0x0d6a16d136ee77c35f216f1aa0ca9e09bdc259e715848ce047be056a4a09f787", "0x2e7c6013d1be62a78b4c0015465fb0b293a07d4605dca6422109096164b22b2c", "0x0d6bbf18b7eb684adec412713570d3bfb36fd0f569fb36474f694b11b2948ba5", "0x12403cf8877ae510b7314b7c75ab5b0fb7fcde2e6ab48121288dc04d5b51e594", "0x151b3acf4ce3297d86e823a72067c71717382150c080ca3f8012bb0ba2fed47b", "0x2a1396702063c62e07c512b9d4d181d71d88b5681a7e47fd114cfb682faf4f98", "0x25cc49f3508fca1873a6f85b6550b6e1041d90ce535c638d2b523a61dd7869c6", "0x1fd18327a0482c394723b152c90544729cf4040bcced94e8a37e1c9e307683e1", "0x0b27566ce02bd4cd2273fd531336c0ebfe65a5b0da123cb31bbc89533e518b3b", "0x1a9e153ce82bf2a6fa0d71d1889c24b5f111d262c82cf3450f9ca80608ec15ff", "0x07ca794d5ac4f40f0fec4d69e3a3cd1f472c7446e4e27fc1fa4cdcdc8605acc7", "0x2fdaf44c707d8289da9373536a6f61b66494fa9e9e782e0e410405efbaf504ad", "0x154d7c7e94ee06a436fdf59b501b763be8dc7f12aeec0752b79179267d643a74", "0x2c753b7779a3909fa0cb0695a9f33a673532bf5cf394f40bb8db5ec5fb7a64ee", "0x144ef40df7a262ff41795d09590112d63feae75c3533c0ab4bb9ae43d61201a8", "0x22c68d6cd4bb18163791274a28ba33b0d138e148d6d80b469d6e95197d164883", "0x27ca38cbe8b2ec8a927b6fa011e982323e56da932c24d73095177fe7f8aa979b", "0x036994c16973ea012441dbae792fb3d06b139addd7ccc0c0f353be33d8873ea0", "0x242d7d1bb8ed3658035034b55e28b43138c56c7fa9c0586978056aa77decfd3a", "0x194576547027c4224e9cf6de762a5169ca5c18ac5db90108bd76021bb9b0cef2", "0x0e823aa11624ee571f23da021d4d7990563fc9898a7d0ce684e535fec79fcdd8", "0x082858a4db283919b56c0bc08b89386724b90868a4ba170bb1ccf5e112205c4c", "0x0217822675afac3da4a9137e0b172532884aa670f142da689569db24f5b0d650", "0x274c614c2e392cee896b7850aa7b6fe952b7681959fbfd7913b43af0f5858bb6", "0x27d35572895d61ef77994592fc75251f440e5d120133252049385ee1be25aae3", "0x2b391acc9c8e452b35f31c91bc7de27e00d3e625413d27f6d60c39d00c74bf7a", "0x1b6320cc8acd98c92ca849a5b3ae52f2de368474dce727a0069e97cc0a546b5c", "0x2286075e6a96f1a55fba6f84b3ca4974e87016864aed62735ff0d428c0ac91f4", "0x18aada171822e8e1dc3da76917fed163a523bbf82123dc98f4c097e17e11deaa", "0x0fc3fab45d405fa715ee3ac4a279c7003885e52023e6e36e5d71f05cf5f3035a", "0x1ce99509af24e048925eaad26d294cd555cd12e1d65881777ecda694a5e52a32", "0x2e26c17c921163b5bb3aad23ffadd47dd0dc4449b94c90ea3eb4e4fef138f727", "0x15116a7c92e6d9d46fb7fb51adee5a862aa2fa762c690991804aea7df5cfd3f5", "0x18a26a0800fcf288aa7e98f047317210e6656c87be903bf19a92e7c2a499c396", "0x22d7a40e7e4c1e76dbfbcce1601c22469b7fbfdd055a3f953cfcfeeb47a85c7b", "0x0ae771488eb4bf107cda3042dda3495899ec5fc437921508fd29d5bf21807afe", "0x17104e0440a812a33f825fe57da99dde13c1bd3e10de8ec967a5deee234cd701", "0x2680e4afc93fbbeb972d842f18fa3a35e1ce822ce02a629c3696e2cdb2894a5e", "0x0d64fda93aba5c384eb39bfc144bea57b13d11b27d89323d2ae2748fd54f16d9", "0x0aeacc635139009646db8941410c819e087abc601709b1f923f04ea67b5f58f3", "0x0a8a2ed2b2158fe6443bc3b11754c14521db193335616c785a073f69cf15bf38", "0x07b133a201739ee204c81df78b20a13e00fd8c0a386942794c29187aab6273bc", "0x118fbc76b7f861e02e9ae5ba516960c91142ad7c4af11563e1adff97f863ceb5", "0x2754b4ff473681f3069edfabe21dc75f4123a0ccad5597d42779a8120f54f022", "0x190360a036668714837675f7e59fdf15fa57634f4db0c2c24a80d26951c1ddc2", "0x222922f3670b5f65cf34b2b2665b40a187f3c303c76bed52017073a0a18dbf53", "0x109e9fc20acfcecf3d47c04afdfba926f30e1172a5d506d1241818aee9cc7c55", "0x16213b42dc9dd4c9ef91500adf2ef8708851787374dceee4d45a6645a3a69b30", "0x24023ea68a2a2b008acbc5d4a15fcd0942b67ce952b0e1a03ad175066f755920", "0x247404c48faa06e6c72b1d050b905fa3ebd774596b4cfe6bb4d57ac38070859e", "0x1d868231e2df133dc0212c6248179cea17cb0f71c4cd827f5353806230d8916b", "0x0c314749559c134886fc12ba1326e4ffdc33028d8eacd341f510f1dea2be37ae", "0x0cc1c33b5320c911b47eee03c4d96ea2b25bcd26e3711d28cb152cbc5b87d2ce", "0x05f4c3605ea09d4b737b29fee87e1c2ba74d332bc19e6d3e8ba947f0eb3999ac", "0x05bd7ce441a3a72786312e63866bb986adbcb847b06476f98c6b7f8b8f042457", "0x13fc4c0e950281ef4e96eca60355152f7c0b335e0f36bc1cdde5f3952dedc132", "0x153c2f89d6681e7f94df511b9f193e2876884faee1bd3aec26bb93493a064f03", "0x16fcfd6ddd242be8cd4982678cbabaf4010be47978764ee4d14e952dc4a3a118", "0x155435d02b33ce45b9c3b6f3f1090930fc0a9fa99788927e504721ea0668cf7c", "0x0669fa7d440e3a06db6fb80c876a36245bb693bb7960646421621fc2c391c5c1", "0x2b57df93a096e78d7f14eb117a9a5c5ef69d96cf45bc807e55d89bf980e8ac76", "0x1e8a7d19a676b3263f85a8482d95d0f3e76be0b6e5c9ac107a12fb9e655c8713", "0x2a6de0bded2bbe2b5866801f880e47e6bfa69005a0c185897c72efb56bd98a87", "0x099ed3a2ae3f0f6d0a67a1f79b55a135bd066cc32e5942a3fa2572de1348f840", "0x1e7d7ce084654213565d6ee21bf1f27b3d8027a2faa810517efbdfdca997fbf7", "0x2e703dfbdc86f5586edfa0221c81bb6899143210bbd8c66847764aa4f63c65b9", "0x0505b0c3df9f92959a41fb36c72d85bb826d5672798fe7482572b5f41f37194d", "0x26d1fc920ab60d7fc4e826056f7d19c78275087ff9116e356fde302840ffd3ac", "0x2b3439c16b1af27bd7a4c8d9ddc6934e7b9f5e10aae7cce40ce6a937506d510a", "0x1e45d86bc184f0e086020deae34e53ab0ee7123b3a1190475c6e25e06f832154", "0x23f3e2f49ca1c95434b0342156172e65dbc6c9f8321cc75e9f15a66c3bcb09c0", "0x1d8c2e51db59d6e96ee69f68480d1f8e48c03bc876cd7915d888b5b0a11a21a3", "0x1e1dc3546a86032cdf8b8bf7f94a44730b662f8a56ad862ea1247ba2ab0f3d2b", "0x1147e82c00df45e182d416b8338ffae299178da5f92d8f9f9153c695e7859447", "0x0be94456b9a03c6cbfab9d8a34b411e91d20cb11f5624faeb3f78f38247e90b9", "0x0c4bd9a3aaa923f649b9cd1cbd7879574b266ff2f7c0c063b5c44d6b48cca3f7", "0x06198c1fe412e25887115b54ff87eb4f1e2871d4cf377969ca151fed5d7b4dee", "0x1ee90aae68a6bda42c34a797d4d31f79679ceb41b587f619d620e1f5108b839d", "0x11aa5360b586c21447711b49721e9f4fddc6b6c98b57b84772d6fc6b8be017ca", "0x1a41a67390f922f10cdbaaa0ce5eaef61d66b6730825eb98a24d25987e87be58", "0x24a2997c832fba549618926afbcad00ce920788393df128f8a5416d26231615c", "0x067036caf8b57daa59ad4514773898e1b22f8e88d454bc1f8ef0c82cc93a2772", "0x2f18e853f9b7b7c4b1b4c3f0d1a2570b035fd2b4231a584139adb7a11221bc33", "0x1b3874144923943beb66ca8b798d0bb8f2be7f8dd9dedac6d91fc5b9e53186a1", "0x0ef5849ff458a11dc413a2d8abea9888c62241c3c285afe3a1b14cf71574c3fe", "0x196a36a231753ffd0c094642e27d80ba201a549af584ffa9a70a8026817ca668", "0x2e02fc222dd56fe6568a345add3c1d577898a361847e58b67576f12e3034a8c6", "0x2383bbeafd391d96aaf0ba7481467867c67ad39366ed8c43b42520c6292452c1", "0x20de2cd5ce733ea00a7f167f686ae67192637321cc9f0f4aa7214790676a3f75", "0x1f1bce33439afb8dbab1354b46a5b9ceb1980b83514095d65e513b79351a9907", "0x057b8de9d8ed593b5d214302ce88ee08f1812ef53cec6e05baec160c054d6747", "0x26777acbd88e932b2552f7813e62f368ab8b1d626b685502253a10c8050a4a55", "0x01589c939e2e3efeb8cb6c103476879101fec7a530ca18fe4bd2f096ff44af40", "0x2a36b79d87c963b1f47590ecc4cd69142346a54ae48bc3f573adf719b4e09719", "0x0eed87708b5b00a42af3e6de58d4cddaf22278be0ee6344f2a775132fe107a0d", "0x2bf84fed63a11695b639727e18111ac2083d936ce64bd51a32dfa9f1b0e71325", "0x164a6098075941c6467319c2372463c3ec7adba6f6db9a58ad59a678f8f18a39", "0x205075ea3558a17b0c51ae3a107d898609e3cd5d82f8df8c3f74b1b73b08973e", "0x1f1e3c76fc69fd8acfa3a9bfd0af695c10c2bcdce6d8f4d1f7b76d50419b4376", "0x0069982a9b25bd75814397b6d3c8a90781e1733be57f7573f2fe44dd35618c54", "0x2f17582941481b5489211befd4bc0dca43d4432ce11153a0fe735e55474a2393", "0x164531eab380bf81f6313f32f5c255a9badbd4edb7767f990c46b0fdbe9fb297", "0x031f46a8b4455ff121bc184a1c3551d4507a17c888931f3e99d356a9a06ef8ac", "0x11334dbaa6f7f4140d1493bd188c77628dcc782c5ff82f1ebf41ca094815741a", "0x0218b1d38a6fd11d6566a52fe136e2c82de229698e5414b36be8997f060e8913", "0x2effca369cf34f74248e37ae3bc74299187e16a75f2ebe40467060500eb93c31", "0x07e54138f828c24b98b3511392861ae9c5876550ff0ee776663c3997a8f1a116", "0x297e1fb7da5497d3dbd0798a146d2fab9ac5b0e7906d8588238187b795001fb1", "0x149016a717fd85cc7df7f039ca6b1b8b06a5bdbda365a33bb0ae228900e53b31", "0x0f9e7a22124bf50d94db9231d63685122f92db5268ad2148ba534dc853bfc54f", "0x1a3519a62fa692b3716d11b88e9d62aaa0e43bcf03c7ea81970b1d802a867b88", "0x2bb67c5d6c48cf458a293d69b2d1d44fa7c2c6088e7b7f9adece3f873dedfb95", "0x1fa713dde3903e41e68f09ac2f34c9b1237a445d5195c5e361c5bca31edfa972", "0x2019aa92adf7b5e795f0e539682e4b39b4e32bb6520c711102aebdd0c1516843", "0x2253b9233d047afa018c40c49fe9ff1f999432a9c7df06621b2504a46f120cda", "0x1cea08c49328f5f053c6b47cbbc9559224be1d81354911a18926a98e047bdae1", "0x123ad23966a42c729713094fc352e466e2646af9adaac20fd8e58f308d2736e1", "0x1ef59a7e266477a644527ebecf0bbbcf92ce5f80d2280daf826619b7ebdf79a5", "0x19ec1d74d7f3672f9bc66be9ac40f5be702b7bac80b4e33eceb592f86d5de3a1", "0x242646c43d7f28cf38c9acaf8c63b1b33ff07c778c2ae68c55d4893a927a3a45", "0x0e2c8a604553db3b81980fe40d801cacccfbcbd79992430fcb50b04a42cbe9b3", "0x2e77da327c869b63fadf3824d718983f2cd1f7f8ae64c88f5e8a500a34056aee", "0x191ca3be9eacc6be4808bc1668d814499742a1167792e33d70d35b5fd0ac2736", "0x2a26e10b714c8c92c42331368736018850b48a0e5de7936b2cf25eee46631964", "0x05aa6b2e25b7ce4c170427081a01190f2364872d01e51e969b14d984930c10f0", "0x07acb3904e2ccd87ac5d9d7b6b7b7bbcde3850493371e1b10bcef4cf32ff2085", "0x05aa9ca5f20dfc104c85eb2bcd80dfe7bfe69d42d1ba4400bcf0d8ad53a18c09", "0x0411a0b6eb09fffbe966876683e86ab965280186985f72fac6da310e80175dd9", "0x1e165682a562b6dd29cef850b2759ebf862caf71e348b42027553ab1e7f0cd1e", "0x2b65e92a1f91e38b2e7f192ebf0bc60cd224ec7c1c67b10d1e5f634fdf526b74", "0x2208ea7d1fc63767b1d3dd1e7fcfd4b13cbfaacb0f9f531b36b0bc74d364811f", "0x1ac718a287105fdd6dcbdd6e3a9f833791e7c345891b6ab4760e6e2bb62059b4", "0x098090f723dea7b927edc36a8eecf84630c92d0138f90dc555f6a48971f50e6b", "0x1dbe00faa3343aff72d37b302260143bfb5d4e5bfa4a0b3d0a62223ed66b4d6e", "0x0642c365181ca2ec3e423d6ce74e145068a43f88ce053575a2ebcaf718860998", "0x245611d0d8047a24db3d78131bdedc67e345efbe3ea7f6c7a4fcbd3c642246eb", "0x091ffe3d519525ba080e1fab546709b2dc62a1793e3811ec5161c800b487f54e", "0x2a617ed588722d3acf4900b3dc5015724b7c8cef458cf9db494d786a26b69e4e", "0x1302868a9ab3b6a36cced0f80f53f1a13ca436e2d7c0f9ada90040affba0a8cc", "0x1d903daf4300755be0acaaf9ebb4414795bc3fb377e5903f89ee9b3efac052ab", "0x0f671792ec6b8bbd0936abbc039d2a868f523a0050dc0122f5d9669b26347770", "0x1045a4241667a8cd38078067970b02dce9c35054a36fa51cd892d5d2133cf271", "0x28d738f79c07b35d2df772d562d54346dd7a41bd07096c36c2204320a6760b2b", "0x2d245b5c1c1a732f8283446ede7e846f35be9d49cb4f3f3bb4e5e1fcd1789d51", "0x25a499ca1907638351edbc836c1498ba7c8f2e14bf99f0bc2b8b86bb89b4eea1", "0x1be3f4d7663b949402307b82b828a15f9423f9be115ca9ac4584d4ac75296bdd", "0x1b67eb51facef5814a30cf5794a95d4ad1151469ad4d851d0c3366ed6b99320a", "0x06ad69201f948e4749ef9095707fdc6591022c78cb6fa047f825a41dd3e495c2", "0x0a4b8288548d5fb3dde7cf4bbd1a0881e5e61d99b1d52d0f82e8371509654119", "0x0eb4a9342e89d9cf0f482c41ce66e40ff7c7d8f9ad1de8d1d8d48a98b0054c93", "0x1a645a223471e2cf776be1bfdb7060185e5a58a6b651a12a8969ad5a0dfad97e", "0x0302c4499d41e259ff761ddb305a366f3e7c2b01c465777bceae1a67e6b412c1", "0x2c17e0b7f901b93630c9da99baef3c5c2f5a644dcea6444357a121bc2aa4274c", "0x0b0e36da8335e243dc7fd59cc2365974d0e0ffa247c54ef9617a80f76d4195cc", "0x129e733c1dda2ede8d396d85fd6bb8b6e61399f2311c09331c7ef2f9beab22bb", "0x2cdea7eb18f6146b67c437f37c13f856eed01d5e464e8870447c5c8b4befc4ff", "0x2ad4f0216033018e7d2a550c2e082432614f407fb60097d4505ccfcb31d67745", "0x2aac4f54256835bad96eec256641a10fc44d0d63fd5860fd475ce818276691f6", "0x17e25132c09ead8dfded691b9081b581f1f76c4a86f2fd9c9c29d2433f4d228b", "0x2ed95e493ac979a091bb6d28e81672ec5e1f1e39f163e5f4b9948de5b4be3296", "0x161ce63d596de69443d7f542fff36cd3c110c33cfbb445c9cf3b70d9081e4f0a", "0x193efc77ea76010547c5bcc600a11f1d5a80bdd7796a6b3d9a0daf66a0b8a4bb", "0x1449a38a938cee3b56f505f1ba2325b186e2ca22a8435f241cfa443c6000f7e1", "0x2060ecf9aa31db3120201827fcdf6b5ee7f1bb93d550187ca2dbbd4a4205a7d2", "0x048dbcdfe2fb6c50968e825a958357646779546c93340748ef2e05794b48ab1e", "0x0302fbe9b13a3eed91a823b0b4d3e3621413408497e6c3c2fa49d9c8aa36f408", "0x03e81925a3fd5f25081532f2986507e0ed91276cbaf4ce0860817ac7bb838e9b", "0x1c549879138d434cf3143517dd9bf2a322224d76ba5b3e4de34b7ec490407440", "0x08120c7ec356e16945d94e55e835ee7e2e91e410315dcf3475f82d270d16d0ef", "0x130646400633005168c1e14ee27ab8d238d8ba7514c903aaa591dcde7bfc1863", "0x23e9b4dd3d1f30c37cfdfb3a83d45e524f54aba1c067ac1ef1ace082ab43479c", "0x285b38aaba20c38b0459f4a48843122b6473162956247894711ec767994fc3be", "0x2559fdf58d3c2200c83ed1fb4f1eed568c2248ca08e5794806d1841f3a08184c", "0x0e33c73626ab1ed741e47ac52be4e9f7f7913b5d81d7da1aafe203a49ecb983b", "0x051d4123632497aa324257ae52a51e2fc1f9ba8901a925dc44c0dc6779ff5496", "0x1fbabed28208178778241052b236f0bc7ae9893d247ca9cd05672e9aff613148", "0x1c2f74139538bd253c3dd45a2ffb96173550a51cdbfe2a76827237fb85beec7d", "0x157767e2a7fdf25c184755b2f47369f2ce924e5adaee5a3738d4f942bb0bf956", "0x0fdf1e7c86898044ddb397feb48e5ede9e3d24fba5420dba8d1ea6d10dbf47f7", "0x0769e84ed17e6c1eac40b5e00ccd2d820428101b2c84b588ee40a443ac9e08b0", "0x2f2a0f50ded1e6ab34f60f8c56904a516dafc8153721b44f1b3561890c02e85c", "0x0b1dc04fe75dcb36de0bfe15ca2d5ad5bf2538aed1333df56e1b2d861928e2c4", "0x17aed8d117c277ed0d1d888b35ec4bd3dc0b823b2af037d3623ea103a2078b24", "0x153140aa66586cee231a8f3fd8605976e6d32ddf431ff33ee05b9f429c0c9481", "0x2ae922e11ef4d41b7b84d52ab835f5bc8027bce9de25c1ce5b0bb88b6a17d1aa", "0x0f818243cc3faecb7c73dfc21c2968be63b7e9390bac077747bbbe167a055b55", "0x1f62838a30bad6eed4ede2ab52866db5155137cce327a27f4b66e2204075000e", "0x2fd97957b9460d3414008cae825bb610f018c5b53309ffd26f39ecf1e7f795b5", "0x2692d11e64695e0d210374b482a47267cc00df2d1b90557227cd49fc37ec2b51", "0x0fcaa78988a35202687ff0dda691b035b4e9540a5308c96e25823d8787a5a040", "0x1a742b2cce21c83d7943fe6b492a9b88faff3990e48866670f52a1db33d691cc", "0x073a59e2c9c1aeb2a2bb89b1fb9b64fc42a1bfeff1d85b6e7a163b8c3bfa8203", "0x04c604d77b356b485d215a9fdf7e5ec3f29648fc90a186c97e512140cfc5d966", "0x1d380aad6383bd9f5c4b9fb4b127e0755d1198ea3a969efe5e3bcf12d167882a", "0x0cb07cbf2019493088e17d16ce9d14fc4204f670d6b8e2b1b501d1f1b3fd7951", "0x166eb6ad5855dfd3c45e27df9154853d4b0874112c4489ff7aa0050e41fbba1b", "0x0372a3beb9db36031b7f0c72baf1e53e9c7220780b247aed82ee2079efadeedc", "0x05bd655204d55cc6b6390bc1650301957a676f7d3d6017c6496ad031fd5f7b34", "0x144179199dba135cc5f9e91b76880f342a4e74b8ee661c27d5b651f45656021b", "0x0e6fe8c96ce98f3cc97c11993b5087b55f3de70bed632730f92299b3c32ba1ca", "0x07a2eb5886375517d399bfabe4c7ce5c03ede836c44ac2b51bb3e35aa9576d4e", "0x0764ec896ba7a374f5fd5a1cbed8a2be62bae0d572639e17bffad24590c3b89f", "0x07ba9ec6781cb474fa4d622908f09a01767a0785c3a14ac5ba29328c4da5f4f2", "0x0c325b498965e3770243012dafa0dd4fb036a4013f2f67f350f3fc9e74049160", "0x219dd3ca3c98d1613393838c73c88a6c6502ca23b3c85b5b8959a29691e34271", "0x0eb2b45fd518f54e1b0d4825026fffdd76489f6260380af40ddab5ffc1c5b33e", "0x2305b8b5abffdc552cd96956ebfa456a36b35d200bd3e43ce165eb38711a67ea", "0x1a7cb11ea9463f6390abb707987615cebe594cf232fb5e8914407a43ae57b982", "0x1e67ce0524d1079208a94dc25483d9e6b7428d40c36305bbe0893e194a25b325", "0x00ffc539a853778970432d8631bc0fdb0cf6020b4724b49ef031190dc4bb1120", "0x29945c9ca4c39d45540c035c10678a3f2f51cadcbf19b332f75ce1f46b5978ad", "0x19cb401323dbd3fd8be1da954c0291d6712487c687dd9664a4b167dc01804452", "0x285fd86adb21908cc4441249fd005cb1add0b2abf706caff421927506619dc48", "0x2faabfd09b63a81c1cf4dbfc64323d8c127ae552d00339b1dc4c59b1cc7ab4ee", "0x2fc7539c406bce26fbe61517b9b8efd3617110c8cd4b2bb3b4a2b339e9857d4c", "0x1296cd089d4750e55c1c01d768b5e8f21d2bc1fad76b842940f293ec0bc2ac95", "0x21a0c3daaf57fdcf2e88ebd4d1d1a44eaa465a40cf60b07cc26549b577a1f228", "0x1acf97f4cacc97d888e4e3b5ad02dd9a8ee511475e21e982fa1ce50467511ab7", "0x0b3556b9eef69e8447d1869d1286e0d15482112d23d0ebd7f8bbd61c435df612", "0x0b82cf5e2db8b88b32b37978b1176f2a64da2bea71894005f4acb1ce6a684b70", "0x2c8ad1acc7636f65a12bf83ce68ac92abde9f451eca15051413f36bb565ae3e7", "0x2fdcc46499cfb1102f554080793658228c92ae49ed7d814700ad1e13eb5bef89", "0x2c8d7b9323fe30ec21eb7b8e0b88248fbdc70f047b5b9166e3dd8a60bd2a8d0c", "0x0d1ebf973c9d26a64362620e65b0ca9f59c9e971fc97506371af9489de93e918", "0x1bdd929216a105b1351c6047b43c53d79866a0b653d0f4670233e9f59cd630db", "0x162aba246750dcd856c975a9a473a7c921b625699202934b0a1d29ffd038fe97", "0x2e681db0e74c3b6cc499a9afbe2229c8afde2932e4b15228679b540ff45e2eaa", "0x2fcc235134792fb4a81da0c1ffd8084cb8cd8099293c3a129504808d3ee39bd1", "0x1eb6661adbbb0a1774c6cf1637fa1e5e24399f6690a55416def3241ceece74a0", "0x174045c72f6848838b2a08a7a011756097b0f3ed254cffab2926ce159e9f5627", "0x02a0575f09f3282fa07e9b5cf5538993fc74c4ee8621c95fbb2ca2e5f2dc3a11", "0x282f62aeb167ef5963da6c6faa8671123225ad91b227b886b6b981aefdaca0c6", "0x1b9abbb81bcff5f1704632def6d989e50cfdbee1d249803238eac244351d7eb9", "0x18f8a4669faf9cff11dd19f3d73c37748fb4626d18339c077a06e5c5c810badc", "0x21af0de4ddfc449368db59be9e9241185c49c8496ee86d1175bdb7a431086a84", "0x0b9a1ec9fd21cb95dc93c0ac1911135b3a68d372ce6da9d455d80a780b15f8b7", "0x1b413f709358008f44c3e60877d810a081d90844f367e3dd0a7bb9cc118dc502", "0x24b4efb5028575888feb5b8b59d40e3498fffcea1f350826359bffb7fd4f31d2", "0x2b11edef3505a9dad6000607ffcbdd02788c7b5802339be9cd74d2ba57620117", "0x202279706096cd42f906239c40c6713e8bd89efd9f63741299dff53745dee8de", "0x207ed9f7ff57bb17d278f833b61cf678f52c8e321cc6bce3af0804a7c159205e", "0x05041c088d4e637431b2a49baa3772a9b0443f3161fe46515ae8d3ac0b0e551d", "0x001b7c7bc15682259ad0881dccbce0a64a0259c59ea3c5e012f99534fc02374a", "0x1ec19711623ebc49ef4d857325aa9dd7efb5fa3cd7ad50f3f44ccca99128c84e", "0x06cb1be75179c19f889920ea93186dff923e2c214c50a145518837a2b01ca900", "0x2712a82039769317c21b225a4e0ba45df63cafb4821303664d5b331d22218d83", "0x1d7d0968738734d0710ae851377e340dbb101428d7200b731adf3b1c220f3b02", "0x180502bae2da039d85f537212bade3edb56fb3b6a5567fab1e4061b86fa3e66d", "0x1c3f1a329f00f6f7115a5fabbb73a67bdd74caceac0e5a4ccf25ae0373e9213a", "0x0b888038bf1e8afa2e444b9f47cebf28f42854d1a91608e39dbcda872bde960c", "0x2a036e70e2987d85453ed7a3d9a68d574adf56eae1214dc774baa10658962c12", "0x03f11abd551e44d9b6a0f4440f47006e98cd9001459c9672e6f96a92e5023d3c", "0x1f0fa04bcd63b7a2bfdc870efbb36966f543e235c9dd5b371c5ea5c26aa7b9ce", "0x0154e2bbd796692b8942dc37abd9534c486ba70bc77be21e74c4e15381e1cb4c", "0x0a0525b3f96a7507890e7f65e7b593886d18cb1474f5db86501a4db1fba04b0a", "0x04a473932e524fc0e604d5ee9cf3ba9ef8d5b463a1379fcd7d6af14dbdeb54dc", "0x21150d11c7232f615628e7392f6a0c9348c70115a1a07b88736d04aeb85e0f8d", "0x0c71b12a8e8a7d8fd2b4ea9b587f1c7227be1c4e9740db36cf7c7c5e8f313087", "0x2d94cdbe04f7f77c5af2d36c37bbb81729d951abfbd791fee0aa3a32321ac661", "0x14e45c5e2b09d6d631cc60c59fb5c24b0a57041aac64b4a82db0b63600f5581a", "0x0abc5c5c8489780283c139c36dddfa39f88ee0601636ed3d6e4cc14bb3b1dff5", "0x0b937ba15135dbef736446fb4923206c8403a42a800c26e6284a93bb233d5c39", "0x13869afcef8309bfd43752610031bd0d155f0f8d11bfe9a7154452e2bf084057", "0x06d42cef5ae2ec34e497c596139ef1d504a0cda240f1762335f02dcd58c38395", "0x1554308cc7124ccbdc04ffb1bb97fe1e8277b386f65ccf2c8b5614e343031a31", "0x1e4fbc4c3e4f57e90ad50bc6e7a10b468fcf9a0a87a290c4873897e49791391c", "0x08d2ca5bcf00e9769dfc868d1c86f288e40a31ca8396852f3977369af24d70b7", "0x1f5bbebe4a188434ac69933fb8df5050ba89070879978fa4b7787bfae7f83b56", "0x11a2dcf45d740445dd1e82ef88829813555acf76a219024ca7002501240a0e43", "0x2a8a12e68b1fcba10e0a6d1a86c14a10d26e3c7416f36d62ce6217cf967e1c67", "0x0452848d3c0c00fe60d721380650c849ced2cf79d3044820812223e146647f35", "0x2a47a54f59ff22745597acf600754759113ca7dbaf11d9c08f507c46a9aac9be", "0x185bf57472562cca45f87ac1b1ae8122aec58cedb831281c51f3799f07e72b8d", "0x0ecef6489e709ad5c587636b3bdd9c7b6e85742175ff86ebdfc53ab588d6d8d6", "0x1608b3e2624ffc2c0091e47e90e5ac3c9962713c6a13683fd5531723cbb3889a", "0x0d3f60746bca57e5c968372ec0e987510a647f2e7d34415ba37989dafa94c60a", "0x098ecf0484e127aa679523cad148ea227237a8d9ff9dd8d8f39fb58162c3bd61", "0x302f10e11c13f3767223bc501a5f9dd130fe517b627f0248f789fb7b30ac105d", "0x0924717fe7babfe9541b3386fa40455a0177c69731baf22c0982cf76278899e2", "0x17382965ba7be709d54d70ca3e13feca23b22b9e6e5a918a9f008f47cdbfa885", "0x20d30010d977f9d912be79737775178aa841d972128aaa95eb7b27e160c2d2b1", "0x0594bdb78b3b69993449609386a251fa14ac536c37ed01608489ac1c721c0706", "0x2ceec6c13c11bbd47664844320ccfdeee402e0af2ec8068796c7c3753330aff6", "0x279fada83f830dfd97b7288e670459dc078c76cf0637a8983c0617f27b4b3472", "0x029d593a3112c3bf57ec8ab687d8398fc276fcf1d462a6822892738533fb450e", "0x07175181f0554da6ffea4a860c03124b8d50c3ae5b59a167e5847ba33d19c050", "0x1280cb7bde9bac1c3d7f557f27a5acead6e4a77be5dc3e8221087e4a6ce23ead", "0x1a994958d44c343f59489056b8cd725491ff551c0f449697b546c8dcfcb90bfc", "0x1f004034e8810c1f1de507b7eed842983412ab8473e2b00fc75593eb4e3f5509", "0x0405fcc7b759b8ca30e9273814efb350c1e52542d338f24c47fd99a94207800a", "0x0b872545cb5ccc73d220bbbe01fe39940e7a8929b084602541230807dafb3c8b", "0x2819facca2cd6cc16a6aea3191f833c2d3729d477c73835ea553be5873ce2730", "0x22e725f6cecf165754ce1a52ffbaea774d8e485d66cba799723253b26b68c53f", "0x01d122e4654861c4b3f76c3bc49529a8c573c7b0d4d3e79c48e3a4bfbd62cd1c", "0x1ed4f564d147f3faa38336a0985022d537d34521b511c9360bdcd1b29f89a2f2", "0x2fad9912c4caea5d440517f0e5688695a4d16b0e77b3dc3fd87f869c83e5b9dc", "0x2b5a8561f0dc586d6e3bb83ed5ec3248ed0c09f9b30352471f2b0b80321deae1", "0x186f4d63b014de8c9ea7ab01a79abe5b9be3808e6ca8344132f60f5595a33d57", "0x1ae5e940fc5d1295d32457a840581c3b8bbda0115b66f7f7ca429824faee4d16", "0x14afe0880ad92f816292a452cd011384632d64ea1839979d3d67d405af32778c", "0x1ac869e754be8b071a3ee9c64af49096439b98f44b15a8c6f4f5ae8b75a3849d", "0x2dc29a1a317499b43a5a4ba1b36cac1508f795bcc4431bfb0ea7028ef2fd32a9", "0x2ee8d03afe43c2b88599f0a35b90926ae6510637e2733ac0f6946d908de51312", "0x266d80fb5c10b2655e141777097040473cd5a4deda9225b8525c94836dd51eb9", "0x2e4d66f6559483f76f1f55682d1edb56c8c3e14dafb6beb3a02390544e52c22d", "0x10123aed5142580dc67408e337d4c773789d93e479e4fb44bd73218cf3db7500", "0x19526f25b7ebe2c461395e66f866ffb80b2992d53883100f0dbfc67f132a5a91", "0x2e77d96a8736e6c38fb67b935a55832b511a4ad8d86621f9bb313222dd37d656", "0x09f2c6c969d48ec291576bbcd917fd622c2b98ec21bbfa2df5d57324ffbb4b18", "0x0dd360058171b02326c9e4c4618c8e194999d6c4480081fa738878c3e1b11e57", "0x198a52b8282cad7eba3a3800b59a794a2c70949ed966c86ba29d9bcc37f29365", "0x17eb8c8e8003d6b93783e67bd14d12a9455684cdea4ec58d76a83a07b428dc47", "0x1fb9c160b09797e9d4eecc79c50e2658ec10d0f38ecefc1e3e8786b95fdf9626", "0x0202c3b6495a8af89ddc6e3fbf4d66d73e6dd13f8aab893174c0cafd78c8a510", "0x114ba7f12c0e1a3b12c2b5291bd8141bd50dfc7000465084a701f47b15763083", "0x019ad3e86ad82a3765aa64ea022d1117e1c230c02a6ac90037895728f82b3347", "0x254ff8ec9eca4d3fb26c72cd63a7d4e989bb1b9eba0d8bfcf7713dabf7f64e01", "0x0be8c9b5aee37efa93ee79b5ffc00e8b772742c601bf8f230252925ad2c9a702", "0x0c71775341a98ac909ba1f26ace40de8a56330931336abe715d2c1eb7d931ba2", "0x0b833ec8305c2cb5002b59beb9e58216a27ab69bbc7188e4302131e20fee9dee", "0x174aee31c36b81a6212b9d446065af8800a60cca5eaa1b16fec85c2e2ff974e1", "0x17831dd406c7785a5364d3939277da9eb5b6dff1e56fa35ff18506c64b2a8b95", "0x121e1c1bdb7e4a3574bfd1c3a4cb3994ac4936ff54b07caa0a7ca53cc09dc445", "0x0fb2ca5d37066fd7292478917498f8788bee33d3ed4904525a4145bce35fff1b", "0x1c131cf8a1d5440337fa13e595cf6d42c3016049ffac09957e69d0b4501e7ff4", "0x070ee4b2f7a90add1355f9cdbc3a557f84aacc648634b0ff48f83de4f76a5856", "0x0ac05c9b13d1f28281053b12af198776f3c9135d48f95d67c9314b2c48ee0dda", "0x0c95a176bf9b37e0eef92426ccfadd296954c0bca794929225cfdc4278961574", "0x16635a13512870b72fa81e4648421a2210c0b29bfa1a3cc9f41470a91884445f", "0x0cdc33eb19f21017be8a4cf0b37b6b12f801ea5c4cdb77a34cf176ad85bfa6ed", "0x0e876459770109bd315fd932ea7c69c96cf314e3403d0f93fdb3afd64a150472", "0x1f26a00bfd677bfe57b879c71cbc54ca913a4791d4b04e30437670966d840037", "0x229a17692c8cf3377225426ce0cba5d61ed5f7dbb5a31dd603eadfa165bccf8d", "0x21ae714094395df65267acb6549d580219c449bf86c33eb4f793e0747a6445fa", "0x2afbdd235c79565be2f6e2cdb1d527bd569adffece0cb39fe08bc9d0ec2ea2d6", "0x0a95c11af3ef7a0c585ebd2068bdfab2a1329821a17baf65a6a0746b38a4ac56", "0x2ed822401a485a621ee0b04f6f7b50adf796d225e3eaa587bcbf87c4ec0a19a9", "0x10f52269c0c47e3d8a4c878ba77b098d1a7e913fcd58f8a1bcd4afb520ae01b5", "0x0bab4900dc219d1a737b11c61bde5da6af375d36401c121e8ffe8535dab67482", "0x0f0f8530f0310cb2f6c999ee2dc694329a957946b2c761c8505ececcb2ff2237", "0x2015cb8f32acceab144d968136e87d67cc251752a9364b7759888eb1800a254a", "0x0660194d882e378a167b870ce7095e5ad119f66ff97465dcc929cb02aeb602d6", "0x0312bad9275ac67f2bb34610bfdf3c6989e89ef18bfeb3a5af5a3deadabde0e8", "0x05cbc68e5b05a1fc3e784569ef325011f839dad380e8e07742dc0af514804938", "0x23e6688ad84690b2fcc1d166fa6721105d36966ce9a384a0f659ab02a7bbe01d", "0x26201713078d367d68a33ce6ebb82ab55b6c116e534c85043fe458cf4d1f9120", "0x2ad17744e079b70e3175ef0cc86ebd7238cccd281148038498c47c733baef3f0", "0x00227b2456b2df3801ed64047464250e81b3bc1d20f3fb79fef34d38faa39773", "0x1936c25ab78e54a947a7452dd65c04739f52df324cb481eb9a13067364a0fdd0", "0x2aa9d353b8afaebffabba8ed09220a8121ef8cd61ad2c20cca4fe8d5d65772da", "0x2c37de8445ceb0e6e16551a08251fd477a57c36d493708f8f1503346e224ec73", "0x0b6016b413068fd8119603ac0ae0afdf94284916ab9582732584857312fc6228", "0x1c2da4c3fcb0215aef82e75f67b62db57f7e261792fb69195382b8ab565b2814", "0x0d9019e067b8a2dd481299ac904a14cb516ac0ddaa177839581770a27616041e", "0x0add8f2e12999625d665e7ec804c259862b99766997a2754498f1c10c708f516", "0x1b04c94fba0160faf1a69ae28901f6e58f265137c4e6eaff003dc34cc06ae9a2", "0x19b58c38a368d1bfb49de8aab145368123817e15d06bf1d887ca21feee481b82", "0x268512a6191579be4c51cc8bb8b9dcacd4663f69e60f295ed750430f6f7fd7d1", "0x13d268b42c3385b68c54f2bcb9f72457d7ed9138fedfc85181a048972d34e1b4", "0x2cb0a99448e388e04f5de4c9cba52f97b9c4b7c7486df3236c8f92e16200941f", "0x1f0101328d89d8c934d72ca36c83de0f0c9eee06ca36c551d8fbeea255cd18ce", "0x14262fa1b33f7ae3d7666719900f64a1387103ed4b3e1d995fdced66760720bc", "0x01364121b3d6d64c4ccdb10584b4bc6b0f747bbb66f30d764d0e60a796d30a5e", "0x2ffda5ed3ea18847ecd8fbbb951e83628462e15c24637a6a5fc443cc6445032b", "0x1b6a9f9c7c09354bb8f206f9fe4a9ca8e95c6e41b2df2945d2efeded3199efc3", "0x2954182782b8a9c2aaae675e5d8c81a38dc9d2ea6462f5e86d081770bebfd2aa", "0x0cad57ec1b88059bda6d41d957f17178beb8a932a29b6162675a6fee7dae1574", "0x29d6f606caf5aad785e9677fbaa1f8715b130e908aa7a5d6d88e08b3b8716492", "0x303a687f559ed6e770c9a84115ae726643fa16f4a9ec5c240f8981699f2f8c7b", "0x2318a5a800de467ac7406848d22ba7e2f2ade1fe67df255cd62a27cdad188086", "0x228ea9efaf3b18701d3aebf00c7432d13a6760e73767cba67dbfeac461d0a8a8", "0x2ed4c42bf04aeb7873c2fa14d564658533553d0cc8357cfd2c4dcf543b229be4", "0x1dafc53a1dee87dc061e12435c932ae1f4d4f6cce57d8e4f030eb7c0ed347b86", "0x181f880921711f6128e2dfab54440c2087ad7d0235beca496dc61aeae235db3a", "0x143fbacc8b948ff561d61cff210e8af82a0a500852d84ae29d8410e4d2dc7e1c", "0x06c4e0679e8b4d1b8249e09bae2238b91616a42094c69be83939570a4751e093", "0x14f7cda89bbbcd7cdd778ff878c8df66e2997ced3fed3091fa0b259c743347cd", "0x21b40bdb3db178afb97e6c8f509a3a54e4970c702a3c96e2a680a3bd9cd1159e", "0x02233afa3456f472cdfe3f610d0612f0d74ad9842d0ad08b826916d3a3b43bac", "0x195838cd762c2a0ac237c6bb111d274bf80900ff6b4956680bde41adfc90110d", "0x0982b8802216422f46f29c0985967102048b43b53e3c8d1e558b2ce81627f0d2", "0x011cbc741c1bf48f7080f491c26d116766a8bc51d9cfb6cd08163e569e5f546d", "0x04c26770bfd30be7f086c9c707f29e38a22ab6541fdd5d9491d613d3fc36d64a", "0x21da2bd83ee80170d4cb123e322f86c4aa2f2ebf85cb97bb19e8d7340ccfa556", "0x1380aa59b03b58c68d377f62ee0b3bdc06c1b2df0c68d503f8b0a95c17239ba3", "0x21309cec6120b32041475ba9bacb7aa507578fc7d428bb010fc06f0ea36d0762", "0x08792ccf88cf6e450d137ed7b5496295f3f9cd6376454346fae4717f7980e554", "0x0aef0f9086c9e942432200e8b59555695a4f531e319fd0d57f1881a55e3a037e", "0x0e0b748d5856936b3fd8f2eb1eb4c2cd2b8b8be4d6318a82cad3e0bac505766f", "0x172fad32593c374ceef1a42abbd708565d3591e8032c517e4595f3064155ae8e", "0x26f5f9ce4d72145d3e72c42c974ffdfc89a48c511bd760b3d9db03b9b105c4b8", "0x10e053336934904ff6d7b672a3bd2ca58728e5149a9582a72c1c309efcf7a407", "0x1f01a98934ddde51f300d542d1fad8fff4117471cab015d4146b05f1deb04116", "0x087cd7a95fdf5fb9d7f0431a0466625cdb42dc6237fffe77f5ba14c6dfa1b393", "0x1f9ae8ef71dbcd0d48a124bd265d37cc0c1018ca0b45e7b43796b045f65a7a55", "0x1571a2b0a25158c0c5d297a397715b00bd1c5435d2686c31618d4128c538f0c8", "0x2322fdf2761e45f7cf265e4d6272519626de08bbf5e71af17069df29497a5838", "0x2ca8980f9fdcdb1b35022e02f6be62f19355ca4b9eac9b2fdcc37df2ed0264f9", "0x1a8881c334f39420d4672c5050f45d9281424eb61545782a6c17040dc7d38048", "0x1f319a0dc0f9b7429e3ee9bed57a96a0f2f67cb5fcd92b1c9cdc97a15f7761bf", "0x2419336f26dc5d498f279af95b4d7d1211137c608eed29b5c9510695e1a467c6", "0x1f514d22f672cbb16363befa56678778209bd257ca117b5141b29e06e4bd5798", "0x28034a6c901cec4c56675311def10fbcd8088f2f68f795d3b35519bb1fbf1a1d", "0x26c2b92118cd2704063241fb919806a0fef9814c87b071d5a11efc2cb1103cf2", "0x03d539ea2ddcb358763861791cc434d1eefe731ad3262eda857c56a06d9cf8df", "0x2206f49436409e8be8f542926d9e299121b43210e71dd7970fb4283337d241c7", "0x0df25598607771039fef577a6f6dbb610ceeaf204eaac7a09b96ad22de683467", "0x283a898de5a21465cca3213af584b7f56413a9e84b524431436d0b136695664e", "0x26ab264e89611039dc9cfd4b216df44709b54f2418df66545c30cb93814e446a", "0x2210d7f2ef43e229c5631d4e701ef89ffdf1aca64351791e0fe7eed428493c8e", "0x07da0affb47d64b7edc682dabe5c6db224743b5a385d04a2474d52ffe8abfd09", "0x02ad8280ae5cf82936069f72e49010f8d1643cdc299f12ac096fd44c501ff9af", "0x267b89f84f4845e3924565fcf1a54e8a3257fe8aeef515f86cc1c0056f46f6aa", "0x2d46f5c35e5a81cd902f418b4b93f25abf802d32d52da054a5edeee276148caa", "0x20ae8e71570f8ae5e655eb42a4f274650226af1fe160a96b177854d736f2bd2a", "0x020b9b29a5644790a5a31aa0a724fb578f3650590ddd164ce5af593f43c798f4", "0x1390c1d95991972b3b8efa1a367383ab97f4714396635e8791395937010ef0a2", "0x04973b4363f1f55da12d4eab985012d32bd80bc0adb90216aed9574da9e97c58", "0x25f7a653fc5aadc4af0fe534953bc88307a20e941d7c686bc53bbe324d184cd3", "0x124d7810821f47782fe6bf64a7c5eacf03d559776a25e2f69de28362be180bc9", "0x2f6f04909dc360d1add503953c11648f726eb0f612f703ac1e378603d33309a8", "0x13c2cf1b21b786238faa93bfbff5c0921899ef1ab29548828a375e4bc00a1b52", "0x084c200f10eff59bf43cf3cc3a506de500ed68e59bce5cddf1137ec7d61a4ea4", "0x053b5ad5902dfb5ca36d76b2f980906b14ebdc4721546a1f5f1e9741644f2913", "0x23bd4498b4c0c9f248822f15b5c88bc7a78d528d3bd3e3d3b27af6033afe1262", "0x2b5ff61b0e1fe18cd84e352c417ab5b836683f28df1c16e28c08bc4fd269a99e", "0x28f774b7936bc5095e77eb655005ab8767aad076c098b8fbba8521f18a2485b4", "0x0c7f6d2ead683772565984ac819dc2c8326cc4d3b18f6339125621262128c845", "0x1e03532e35111565173f76b67ee9c713953757037b272b369b14bb5d22ab6433", "0x1cdae1682f2c10e440de32eb51726d9db76d07b6429675bfad7e778cc0bee076", "0x24de40666f59de97deeff6d34c873b7c2498f022b856c551fb4ba6fe033e4e1a", "0x0fdd0166d15c0f4266ed7296dba4b639040ceaa6910683ee44d37b08679f4825", "0x0318ee2254c3888ce4534d9090448b7a862afbdffbd4470dab55c9fa24f50a85", "0x07a8d19a1979c8fa3401bfe964ed5d3f3eef19d7e4d0ba007f3854b4904c5f37", "0x2846f15a121456f0f74b5072112a90ecc56a48d98a7a07f30eb553424a00b27a", "0x1295ad2de68e05b113031de854959d9858facf448ca101405407aafc1fe50496", "0x2745210ecc2533017a43305fcd13078d69443d0dda35be2ea50fc485ff8f1c88", "0x0dc27f0b35fec0e0ff8cbe131c7ee42a228d889cb8254c4900cb56ea784919b2", "0x09780925cdb1429cc17c1e70b0b43755e2e70602994e975d34c3fc31cac19839", "0x2ef89ecae1006a20f739aa4da6987bb866d6993fa89e4a2fbccbb9ce28ed58ad", "0x0f6feab3215156ac3f878ce67c5953dbc4e5ab3d131ee958275326ff94d29a54", "0x2049c1bcb035cb59a2350bcecc2a62f4fdb658108f059bc38c14098571a87d22", "0x09c5298f6696836b2a6544c9ca1c0f6448e0e6e4e0d4a8c3aa7e635aed20da45", "0x1d48ec8d786be28f71bd71994da04f787dc4b7792fe258255af742b348e4ea64", "0x0766ba3f360f9cb8d27593cee1d890f57350c235096d9d05633992d477ef2567", "0x18893956ce600734714ccfebc44f67036f51c652822bc0c23797d73a93d47493", "0x003ac5e6a3c0373c58379bf38c87165d716aca05e14ce4729ec91496dc74a1de", "0x171f4b3d04a6eaf7db0b86db0ba5be7d4451b4ea0a1333bfaa31be8f50da12aa", "0x181955a3fed4ff19d90d947c2f157f050db34c847f59f5f63ac6c03b55383aa0", "0x15e503ae66cd37b3a58ac65549aa1de59228f5e5aadea7035169b9801e58a800", "0x0feeb8aec6c963774b27f86a55b4594d54b4b30955e358490ea169738f9e6169", "0x0dd9531f7a34f1a001d4ebc74cb4ea4772b95519325d2989fc933035c68ad37d", "0x219fb59ac221747972bce66f78ca33c9bae38305e11ab3481aebdb9ddb4b2cb8", "0x1fd60dc0c476def3b624c219b3055373d73213dd925e940bf55ced88231ce09f", "0x1f8d07ef3e16cbeba789241956211cfa595452801f08c876c2525dc504c520b9", "0x0515741548eba397d14e6269b32566615d09447155bab001ac6ee205698f16ec", "0x2530b37d2dd1b6166039f29fb1d78e90e9034cb6e9b653fe7428d768f8e9b2d5", "0x1602e869d50b280951eccb3ce71715628980d648390e89aff50e55a1bbcad4b5", "0x233887217af672bbacd873f1285a3612796b0cbf7890463ede54882fc774cc7e", "0x1849b3aa9e7053c8e95252858980abe8f1642ec66804753f02ff63f0ff21d648", "0x1a0049780885e0827447af9ba9eb9e658ffd62acbac998f6c1a80dde5aedc1a3", "0x1ca9cbfa808ca9c85559425af31c0aec3e5934b6ab51a2ea2549fbc2e7562913", "0x28a2a0f0622c2a8e4f16f2e0365b72b481312d8d5087e2e58ae89b34b8cc93a1", "0x21d1beed10bff96ca9f615bded99674a7331a52fb3566953e6ddf9eca280153e", "0x187114f2bbba9a993297bd740c2735ef01b85abbdb5b47c41ce6ecf2fc7edbe3", "0x11d0a386775c6e670a360a6fd957c403b434ba13f72cedc39d1408bfa73fc06c", "0x0ff4ef2f46abef24ca15d8b389e02cd3944d1296131b6d2dce954dd11d724f65", "0x20338e47b520d281448f3f8bf008aa743f74c5b63f98a630a00108464bb28925", "0x256fa0fef5853dc10aefa865c5653169397d545f07584eae65e1b3e50fb6a616", "0x144ba3619d5fc9d84f0632df296e8dea5017329573661b69880c38ca45ae3189", "0x298498c8df31dd315380b3651fe9c7ed5aaf4a4950a66134bc8b6029472a3564", "0x18caf9e264a32dbca23da51a3514fba92fb62f78ecc2d844557355ec8a43b0c1", "0x194c812828f1cdbf0c4f0b0486afb4c5d96ccc218b3b90d04bc5f1c8665ff641", "0x23f93e1c44119ba856a10380c2333191b3105f502a61eabdd8b1abc803c04ae2", "0x25d2cc988e47ce70fa99cf18105000d3046717d839af547edc3de931969ac006", "0x1d1083600023cccdc7daeebeb19783aacc6e94226d00c7ca44dafd755614a80e", "0x1943a9ef811abfe657fff92504f2a8914f09dfdd5b979911047bee4b698004cf", "0x01f96db1392a3ae5cbfee4c1863f0bddfd95a652993c8f17ce18869c261bc6c7", "0x12d4814ebb315331d4fba9dfc2ef909cd77b1e7126c9e6258a3c9821d663d778", "0x27a2ad69b9eb5697b85b431eba85dbb19843f3c7518121aa49515a65ee552e30", "0x066f7f2981ecc4c4415da62eabd3230424abfed3567121f656e8191a78c5ddf0", "0x16e298f60b265f06f8ec9227e54e8bbcf2b4823921deb44f063c92430fc40a12", "0x1c10ab39cb04ce02ba72d996049ad688961f60f8d9821d1716c5a6a2fe0a9734", "0x2cd7c8a78dd99aedc18c8d47452b4d5b2e9c5b2128eb373b820ca8beec970a73", "0x23391ac9f29c1a99ed6fbd9bbfbe72b488569bf9a207addbd4e30a3a8b97311f", "0x3041c5599a51eda33a6398eb31232519797b00726702a98a319c7ccba9fed2f2", "0x04e64908d79f35ed77fa8196f07a948c848512b534d9bf4f30ef093c797403ae", "0x19251e907d7a903bfa7bed87eb04bd921dc19062e4ec3abc9e82b7fa4e25be6f", "0x1b39681c2c125cae8d38cc5ef6fac252f4f82374fd5b9059614ecc134f2b29d5", "0x217a54dd68dcd53e336cea49d89925fd128fee65bdca131659d324ae636696b0", "0x2c054bf6f91776020de3fb9705ba29e0df17d7e1afe61e11eda8caf78762af3c", "0x1f88611d6c0287ce53543d87ed8182ba475f6e223989eda35d1ab746275fa4e9", "0x204d5a9829d570e203bde491b862a96979d71e480ebffbb13c4cb3af566371cf", "0x0eac95c688afaa773ace4856252788170baba69a6181071d1d1a4e0dd320b4b5", "0x2245a0967d777ac5160082563d5815b44ed0ff9e4305c65c503e0ffebae5dd2f", "0x1b732905466ad921ab2430cbdf772a816d1ced4dea6818dc3cedfc67ffe5ffbe", "0x08caf1a4cd826d19e1c27f970cad05b2d49931bae369b82c30011041879f2894", "0x27d8134423cd987b249f4bedc7773fb7b7314e8c83d9727f3a21d0f162c561cd", "0x09a2ea37b3d739dcd70862ce62a8837dd267c22a29eb050ef246edd84f48f9fa", "0x1adcfb436b238f7461757a9665d2dccfea1c7352c59e5aeaa8ed24b8530bdfb6", "0x2a2354db535feba0800ad6659761f29aab31c142716e16779583c17d3cbcd700", "0x01031b876fc704c3296bb38110b87476f88f5721a1132ba71ba0dc4168719a6d", "0x0b85e9fb664cc3b4ee539936f885885ae543c606fda007aed20257c8e4ee3597", "0x18067bd085c60da630ab24cdf419afda09778912d5c76ebfd9df7ecff6207186", "0x03771dbe5c3340fd289917d6fac9a154b6d55d63557af13d9bea711aafc5e1db", "0x03a120381b15967cde1a33939fca7830caa1af1fbad6d6cbd4623592101f1f77", "0x040324fbad7390bd98c3553232cea681d4b18be857931218fbbd1d394d67f781", "0x294a9378accf723c26266df89bff1a2bdb710f198de168890dfd73acf786cd98", "0x203d8640466332ce0c493396731a23b85f77cdd95880c457dd9cd46e99bf0f25", "0x0d339481cf52ab1f652ec8967a89776e92b6aa12056794c9dc856fc27ec91ef8", "0x158be4217747076a28aa6f617c7ecc6045c8ce5c484aada197994b618b37cba0", "0x2daa17b35ac2ea21eda36bb06db40a7fa81fe60cda556d73121dbf17c8a05ebd", "0x1a2f7903bd643c61cc5eb68455202f6613c9c03bc3c59a8cd7f8d10b0c779210", "0x1ca7835f4f1c5f35aa1e0054afb114769a82474b2f9f771227f022fa762ba56a", "0x043ab3c95b64cefa7f97e1e8abf9db25d64c2213bf44b01b0005fee067804beb", "0x0eed1694086cdd6dd84002c69365120cc2318283226eb7dbd9c1154e5be774a2", "0x031b726aa5dda456ffac29cd38b64926be57a1b6c1fc593a50e7e9cd384f7ef3", "0x2652cfbf90110f7727750d68eeab7a49385886953f75832be375c37ea9ad6750", "0x24a58d087af381a6f27b0655de795b6a7be734f05a4f4edef0572279a28a3bd8", "0x1b04d3e92a338f6beeb8091382d93141b3bb3d033294413a398da24464272a42", "0x290b9ee02a3a29eda94ce08a6752191c3c296cc2c044edbbe091172360b24c1f", "0x2a012d2f441545c914d25d0cd28fa8104cda2a080845c79cc7d0f39146b0b358", "0x01d4e5bc180cedcb8ef0a59d25498a542e324cf0f7128f707c433eac1eded47f", "0x054659f012ec8b757b1d2a175a9fa643e963238c342264ae9fc39a69d75462a8", "0x19fc0305e1e5b2afcb86a742152ba895ab024ac59c7b57e535224ffb807dc720", "0x21d1fd0c2affce674ab016661a216f0615b5bb1f3fc3985e9d74dd71ea86ad66", "0x26956d93f01776d23bc7f1e3464992581adddb48176bcbb03efa853ab09c3b17", "0x2403120e5a687895bcbe57b5b11fba0d963eb0c863d8aab74112f512ed8ad9e2", "0x26684fa9b9548b08ac79e7a14bc28f8d47650312f0629a40bbccdb590a298cf3", "0x216969c221bdc3daa1c2adb9be456ca19fcb948de9725fc597ac626968715c18", "0x06d4e54362d5dc7cd489ef466713c1b8a703876062ed0366a475ae9ac0776c0d", "0x10c21ebf642d38aaf3de15ac4a0de3b71ab9788b5904a78326ef099a1eb953fa", "0x0a4b8e91b02da94aa621acff16bbdd44f079d29b2034a9e1dd8be270e7e3a803", "0x2b1a5b52b5f1c739f8e167a8561b7c5a567fd449b61e4aaa2965f3177badf7bf", "0x1e858a1edb097f168f10b9130e51d5a4f3b55da7fad6896298f14bb7af4e6356", "0x28362c3ff6abe4fb017450c7dd344bd4e08100afe5a09cb01877265967aafcd3", "0x204e017d42e6b32cff2091368e344201440854761a0cd463766041d7e38dcd44", "0x182307aa6e06bf1b20cbe534913a0b561e310316e23540f35f1bc9ee437e92aa", "0x1ee400aed2b9f1ed67a8116438ccb7bdb8d179868c1fd6a6dd9497744ef9ba9d", "0x288590acd331f4499efc2e7e8aa2656e64cbf0a68c7d928c2220db643db9d410", "0x008634f649b3d25022a2125f5f300d2cce2cbe122df4f1c51296e6b65fff1795", "0x03c462cfcb45169d9cead1d0715c8cecffec77ea449a20882aeafa4aee274e6a", "0x18fd54d4986a2e7804cbcb77e6812c06e7b8e28ca51ae323e56d9094782a30cd", "0x01b9efe04a809a43c624c726e9294bdcd3bd1e97cbded742e2173d3fe9e429fe", "0x109ca591b9350c71a7f2886c6e55628b38206223a57c07b2a4490771c921e2ea", "0x0f98134e9077529768e4ec3dce4b62ca6baf8199d78c7e35f451912a80fb1bfa", "0x2205834ab1c8a66de1bc766adee18eaf689a52beae8659ad4d0b437bec229526", "0x292a6caba071b9fd8fb5f0e46dde4d711bb4a118ad0c67e77a7637544bc6c21d", "0x0f218ac63a89d96ea37d62ea0387c145df2f14957bcf5c7b5b2cb9317a871740", "0x21393e5f2e1121136a25f071465cb85b02b2fe124a8e4ea83181891a710b0a50", "0x06e22d6946484dad3f4ad0da41be11da2aa5451fc7f4cf6cc5898278a6747bb9", "0x1ec8117c5590074a29a019140efd1c627b715fc464f1d7ac9d47f0979a4c59c7", "0x0e6f5d2ef82945dfb392e447138bc94c32bddb72483055a0563444a0e4f6dd70", "0x169abfcb3ee96d7e02f9711eadc0a9e24a47a2f9fb1121cf8c6dacd91a5b32ca", "0x2d1dcd8258d2c559535ec62861788dea60dd42d7fee0cccd20a6ae4214d21990", "0x1f8a46cec465bba964496d25caf9a351be7d09a628ff97eac4fceed7bfed5c45", "0x0ddae5753015e7c1f3b07dae4be7747398c9b98667aa13f80f768a2204620b28", "0x1d961204697279203f4721dd0858244f2cc64c5cbf1a4bf1077a042ebf11af81", "0x2611bbf19addb97f4b761abca43999a4b98d758bc74ed3719bf65b172635abbd", "0x2c93c5c5b057f52c0b3d54338659f05d1566d028c1816bfbfcf9003593b98190", "0x2a926fd3e066a9fb75f76fd02aa9996999a090450d11ee1a87a1e0e65cd287f8", "0x211dcee0fee3f8571fd96f2b5c55de1139807fa69fbe79216563f6c5709f72e4", "0x2b7ddc28b2bc2d2718e9d6b4c790d55834b77906de2d4ce8b301ac35d33bd761", "0x17ba5159321a180ddefe96bc9d0f9ab7f44bf2e55174b6a09029b9e3fd83e0dc", "0x25e12b63262139695e50a1e96b6480353a6dd6a1bb980c20f91fd59e518a030e", "0x095eca3482e28057b54118da6c45a3f0f5ae53d67becc4fb0ca2e96e241016b0", "0x1112aeb9622bd2e00306dfa76088ba87e8d9cfeb83d756b40acb4454e77e3ab4", "0x1b69507de83452ce3977a83e01648114afc0f41974a6ba962f77da7ee03b2353", "0x18c36a227f30ba8be835022cda0891d51b2049dcecb5261c0244336342681283", "0x032dff6502adbf3eae1edb0aa2a142c2387216dd501acaa18a3565112c3cef30", "0x067e9b2df10e463ff4e65fa21d18b8e7b5c55d217941207850d984c264ea64b9", "0x186a8c1ddfd9fb6731243a6c190d74c258076254fc4d851bb67c15c855da68c9", "0x25f12e0904af730ec68920122e8d7e83e6db7e0d3818d82ab3f5179652acf1a4", "0x292a053be9013f374156454727329ca30c50781b7f68371eb082974914cc2f8a", "0x12867bb541ea17c532cde157ebe2ff6f0a3d3e83b956e619951cc99af22e3d7b", "0x09dd2a75726a265e98ab42ca0d013e7ba2e15b26100516e0eab737fb70049b56", "0x137cfd0054dbae6b635b4e4f9e6175226e5c95c45e5b2541334f94dfd93b220f", "0x0d14636d7b7afd1186f0b9d5c8f8ef551beac7bb2d36b25436f04bf7dcb60de7", "0x1dbc81002d8a5cae1fd910532f08a4323c35781c2b901bd722babe0a5f6dc613", "0x241057b0d9977eaa50e04ba893702ba182cdb3388cc632907f4c2081834d8da5", "0x07ca75c9d51c65bfc2ca99c9c773bca2bad7b498370b5d50e275a88cb6b06339", "0x15fab6f34ae8d22bdedd760610dd463d881cef8ce82fe4a0c0f860502f6d3cc5", "0x0cf846e67ab815b7bfb255008733f8b45d83938e6eb0dbd19e6d537eaa581e00"], + ["0x1512df0135b6692589f071140a60749cf775c642b300da2fb4ad5c6e23ad4e5f", "0x2b109ae037ed30361cf6544b2f4ce58f356589896d6a8849482ed3f9b66e1198", "0x02585bece06eff553d485478a19eb149e2111ae4e1ecb1d61fc10cfe1c077f34", "0x01ff896f4c0662f4b2ad926741b481d03b813a8cc343b9c2d2bc4819c70b2f3c", "0x1b0caf02f434fa3d4cd4fbb13d3116ac8b7386a5afd6c67076ecbc3704aa45dc", "0x0fcb7c9f13c85517a7805894ac82b57c06f2f153a6f51f60f8e508684dfe5bcd", "0x2dc2bdf7f43812e39cef210e42e92b4968ad8bf554541182354504d32cbf9954", "0x05add9df20c1898da46bbf74594438beb07c9a65635c90f45c0a08febad13664", "0x21cada6641664daa997fd55ace8b88191cdc4194fbdbb6ca5895447c8a58859f", "0x19623504589a60f058b04489b153324d16ed66667a04df572b103590b848bf04", "0x1776442d850a436a005e02c6475b72fd2d5f84452890c444162848ee1d57dec2", "0x06c1691fd6d2ee98396610f3c868d70874f24eff853938d87face89234a09a98", "0x22c3aba15f3a170a1bd11761cc21794a7afb348a45d85e30bc5227881493f45b", "0x1f77b18f06e1458877c2b18cae4e92c196c0be0f779b9e63b06c48e90b0274fa", "0x226c3dfe7a6a67319c1dadda1b4ef04e45f6b80a78ddb0bd67e363e63b85c546", "0x056efbe3aade68e6886ab92e98a3d28a68ca89d2fb75706f6946a0081f01f621", "0x296406451f201c0d09587b7f4e00a7d0e1940260d48313de807fc2df0f755d7f", "0x2000e0b6012b20f09df8eed25b095bf22e75e2a9c87e478287700b593356f84b", "0x227f3766b6642d44c6d836a17c30cecff654b544ae8636818db8e27db124ad31", "0x2404641b2f5dad9722542bf151d497e9199807249b886c975f26385dfb254a74", "0x037493ac64d1deb34b9b83490f35170c4212d2c30926d4e4efee57baa652ba7f", "0x18ea07488f02c6925f4b01d01b809c9a6325ecc7d9c790922b68ce5e7941595d", "0x11952bfcba06442b3c1ebd959f1d4c51f982f21f994e105c2578fc4afff91c91", "0x12be2a32f27a4e203517ab2028e65b949f896c5becfe57e24c0af04fac720544", "0x23e8097f69bbe45f02faec5e26dc523a02153b9ef9e8bb9c5f179dfe3036c358", "0x0763fc4b7da94badbd97ba933613c3534ef21536ae7085e123c8d3e23235136e", "0x27a4fbd1c43e0ac15eac974e0ce2e25344c46c3232ee713141938cb019b3f907", "0x2dee4ada593d756654dec12b86bfb041ad785a56707611fc4845f4d849e7f86d", "0x0b5151d0ddf61b2291772eb93a4e3e211f52124338cc70f3d1ed95b0e9da3355", "0x2116e26c7086e70c806605a1671397d7c073bd016d370ab3cce7c695a7eef96b", "0x0941849147ab2cd8d189c4f8b17b5a9731e55f2d143f0a76d00023a38e4efe5e", "0x2ba07a6f84d2d2dc2f1b17e2352deabdb5d1e3b92e424cd6597c77d9fe672e91", "0x1aafef7a2d2f0516b4ef8cee33b4e8fa3a1776fd2955a878ef5d227d215a8071", "0x19434cc86e2f53e5db3cebfd2db52b402fa26e29c13bc13f315786d10ea01dad", "0x075519c0bd7a6e6fe4bfbdf61addde94db8427580193e2ac8517349805b6623b", "0x12165d475cf1c4baf662bc6cd8744f9aa4914a1d9e53477b211e853eefbde02f", "0x0baf434f56cb6bbd08a0a58713b949b54c441ede53eeb0c4f9a6a4047bdae7c2", "0x2e295b06bbef75a6d76dd10edba1eb93b287261bc8456ed91c2bbd0998444ead", "0x146567927180cac0a771d5830f1431d14cd2445f5da16cf934442e7365847e4f", "0x231d26e7d3ed945791a52013f46d02f5f4e46c17c3047acafeabe4ad02cbc44c", "0x01a2f5ce4406246fbd42a57e6d5ae3b2219261e364cfc1f2a392948fafae1e76", "0x00661cc8a39d60be9b3c8bcd81d91fa8ebf9aebf9829c253385cf9f0e3e76b39", "0x1f565da70f04f96f26b3b36265f977dda09b43bcc8988930dbb2079fb291fcb3", "0x12fd46d935d45a5c8489ae0cb02c2fc0214b40d2d0f3ce442a28d764a9fb0821", "0x2924153dcf47a15be1fa67f8ddf00ec5c816868c8e91b029f4afbd45fc52ed0f", "0x1d4e61f8c6455809e19b563d168b4bbb87a92674346f9fd628ea5d20eba0ff4c", "0x2c4e7acecaca8e2ea9fd849be562d4d5d955864d152ff339f2b2c7cccb4ec3eb", "0x080300849f022b572d62fa787583b6c9b1ea7520f3cc4250abfa8b4b600ac986", "0x193a37fbfd3671dbfe759399d018df64cde45f75b17733294e87596a304878ce", "0x25e2563688957cf61178a5f0073ab7dd28c6bcd12ebbb9a3f0656ea0ebb87c98", "0x1e0d91980c59a652465ce702e4e8de73f9eb4217eae2514566a39db44a09d516", "0x1391b258dafec594799dfa817544e8a907fa794af4a411f89bf5752f36561fb9", "0x12c30d5f593d4b0b80fc8c967c2a50c44828a4175195e47a97cbead60d026925", "0x209ac8a2abb70eb33f20d5ee2b44ef71f2fb317a4cbf004c89e55a9e37aa9ade", "0x0bc7ad09a98b59dd1677ab30302fdf0c90e54506b5084c5c89691a364d268ea9", "0x1a7462cd2353a35701592a1c54fd363747d3022cd8548ab8c838c8c163401a64", "0x0e251dc6fdd76bdbebebf70808d052504204fab54c4ef63159d064d68ec5f36d", "0x2aaa85771e835599b13e6c43c0228167fcccb380aaf7c8e89b4610e586f8f9fc", "0x2c429c35219ac033ca9ff5436fffc49c3ba01a4eb270259f6e9a3f1c3fb61414", "0x011a5a9e38934a5912bbee49d509564c994be9d2e3eb615468b22a72fc324daa", "0x22a724029f009c75b8a4358aa7636d13eaebd37cc79587497be8ffd58b4b6c0e", "0x229236c15bb19327d244457a311d69f07027cd95fc152a84b6e003b841c337bf", "0x304e4b8a0950a39ab2943c3b68eb6f16850a8cee4582fe4a8828296356811696", "0x0834178a75d083a131ead09424b3e3e969de53bb2d20f94010883f837c99f9e4", "0x105cc405ecb40ae3f79cf5b9bd76a7f97a03f9a076f8a1a22c10f4492063049f", "0x2a37b4b65f08c8addb53e8f024c07e47b2885a065a352a46a361549e1f8fa288", "0x1078c0ee085dd1bd24fe71fae426d7d6b9697d94e17a7258757927a864cfc9ba", "0x1be49bbab70ef67a5d4e1706624a22860cda286dec7c3a2c99c0b5f235ed7e2d", "0x068ca82d18b3e7dbbc769a29559b1d87edd0822384d2d4ce9b0efe2c63316f3f", "0x2d8989373a556639e33f298fb049824969a1a284b60053edb972a059136ad71d", "0x0d3e416c0ae12aff59d8dd5cd5dc509addd3f6390db216742c517f2df71581df", "0x14b2a67181fbd9c813c7babc9d1f7a7f1febf9f512c12abd0df3466a29b49bbd", "0x22cfe9304894cf79a84cbb1b6e0b577d683b024f0d5a855d0c86a1bcb432bd8d", "0x1adfe9a64e8029331ebd2fa3def2961f5c955f5956d61b34c02d0b062bdd2a8f", "0x2751b2da7db871ba5fdb40e0bcda7cab5b157b5555168220cf3b7969d613cf76", "0x057f90a4c08130418250b790236f23f3209e88ffe2bdc6a240a812f3b571aba1", "0x0ad74ef09771099c040c2c546719783c39ebafd5ec2a55fc8399b04ab922839e", "0x0b00c2fa7613b52e25e4a6cf633a33355badea435cbbfef67523e3b3b1b73ef3", "0x2795381be694e0991a369e8e6ce75e7df18d38c43af1bc588cdc65ed8e877b84", "0x09177d18cbff59ce67ee76d3d10d7df12fa0bb1dea660c3ceb006a6a3021de2b", "0x1bc77e5718826efce52a86b8610d9480074647bf4b3b9fa3707b681c1a855a43", "0x2f2d128b42d32102d05761240817ecbbcaa03d2fa45c5cb2f82c1a0c048cebb1", "0x215bfd258ebc79352a7a4faabacb30840f7eb357edd21699d5b3261b5762880b", "0x0e6b332b4ae5b95d518e6aebb7a07fb4fc09235d37a4133a51be17fbe9f8274b", "0x272936773fc1a38aa82f7d3172a2477b601e1015ac0198dc2880a21bbac65420", "0x26bc4d42a17a0ffc93798bfbf2e2b561c15a7460e1afd9c23af7ac2a6de03427", "0x2d093621fd40ab76ef16fdf49a7923d2d12c0228f8edb9b86959684611367ffd", "0x0275ba0e2a2a4c3b1f5d718b5b8cb8dcc4bbfba1b7064b6b38330d950cba0e84", "0x1ed6384ca9de788c235c7fbf0c31a59b861a52bff2847af2ab22592487879daa", "0x2c337c808bfe0d2cab544bd9af01f08f916d94b7ce0729a08cc4efb9eeef98ec", "0x2d3e0934a4371484c958df1e97e7f0f3984b5667539fd10c3e8e71246adad09a", "0x054e425aa02adacfeb729cae9df1907e4161302289467c9327ed08e35755cc13", "0x024957fa9d48f942073ef90a54cb0632c89a433ecb236d18f57dac5aff85ef96", "0x194b561a91334bd0dd4eaecfb94f03ebab927fe5787f1723c2535944b2fe6971", "0x1f5f3bb77a487905e3d39b2656b91e0a8223226a3cc0c7a473cfc4a52c74ac03", "0x1b3a3afed7a0821a684fc0d0f9ad9dfa3b557c6542bf7bbc5cf01bd3369cba06", "0x2b96619ddc3b2a292fceb07e2aa80c86ad636ea7d6d4babe8d2947e069390736", "0x0ba31e2d1e807374a710cdbf81f05af4faadce88ead0a1658b0b481406613177", "0x25d7d5bdcb74b92b74a604d6fab3b2f3a228ad23360e4def3919146e8c44fa52", "0x1ca9f911f0b08d1a6205925cde7aa5fd38b061095621152e8abd01654380fadb", "0x1a90d4e090aaabf652053435e3cdea5dea64527e5c841ea9358825e2191b48b7", "0x0caaf3b76909b0b1e1c7f4ec493f27501f5e6f08369e8a36eac406f29c7854e4", "0x1c8f94286e329069d1e80b45787cb308ce214b04999b3b99531d103fd2577cd9", "0x1acd43271d4b04976db5ec42700e83fb151359f9f260a5b9770873e3cb98a900", "0x046cbdd4dfe88c67791bb0c5ac749b5cdf44a3a87e85fc7bbc19b7839647a704", "0x2b4b03cfb4487c1a19d7c05ca15133be29c9d3f3051e4b01fa4dc573eeebc2af", "0x1a9a01f0040a3bea6124946a77e67fd3aa4fc6ff21ff5fb49c852ac59b65e5c7", "0x09eb5e077a7d0110673a617e59369830acdfee50de5823ae0688e60714292b6f", "0x0d006ce7c187ec6472562d212dfc29f615c5d119057ce0c721620af6e4666fa4", "0x054bc8d659b31001a2a529f45640a998dcaaf2ecf1ff8fd3f206fe34fa84722e", "0x1ca1ff244c5106ea88045116081c201c6323698c6b68738166af8e7f3f8dd9bb", "0x04f254de8093f3fb3330dd7423d9d9e17357ccb34a3c18e94019627610cab1db", "0x18fa6af934100cda0123fee0b5636b693692d91cc832f87c76c04bb20950153d", "0x0bc175cd6a0ad546d33298d27d2ce18ffc6995f153f6bf05c59c09a4eeeab142", "0x2e2b792abb6b6310e2cd5b188fdccf53028d6ca70604e36568b15f3408eea618", "0x1216fc0f6e7ac8f0ea59bf7840fc720b37848e6dcb0c77f253e2cd6833aa3af6", "0x15381275074173542cd250ba7cda6d1be6c12c44af2a00a11fcf0787421d8a02", "0x25aa562c4dfb0a38dd92e020b4d6f9b2769341f381de9c27af0eda1453183bcf", "0x19ac9e3549ff20909488ab728a6e88d10a0f634f771742a517e00bc2cc7cbe3c", "0x13c02339462d082f13ecc8ded6b2bcb26a8005a9ab55ef69a91f847e760bf302", "0x1fef0dcd8f5858f240c8986003e577a276a3526c6b45f75403e814a0bc620a1d", "0x031d9be212424a643c6c9bf144d81a06e6fc9d68637a093889cf3c7fee5e3ea6", "0x1a6cca07ef30d34314047214f1a8729728b8dfe8c0e55bea3564928b07de42f1", "0x2d3b9eda96cf186f8e0b5e1446543281931b260a3ff043c66cf232f4909c12a6", "0x07da58325965bec24b4d12d606fb4563a23a130e98eee7f7766a4a3558b5d6af", "0x2655571c23f7f1cd1be67bb24d4c4e7cc674b884b9c58ea8165d2934930d6ffc", "0x2e5ba95e4a2ce5c433f15ab0a026b1abc2b2cba256c61706b6997feb577a42d2", "0x3000c7959df31ee4bfd1118c7ae22906da8d802d9c47855050117926342bca87", "0x10e13d0881d27b08cf5b64ceef72c428ef1084679b539b058c81a17006abe053", "0x2be2a93b372be664eebf809dd873c74122acb3cf5abaa6c215871601b888f489", "0x21310218217a726cc850c0a7dc919d29ffa8b61ff606390b2eb0eca95d4465ac", "0x14d907f470707542205bfd78df274bdf24d8978959b44dbe9df7a7e52114a7e5", "0x05acfa1e857d8001ce311fd3b5d9eb3a1c92fc6e5dac2466c0af0b277816a3de", "0x123ffe61d17cbd6623ed486af0eb8e76d04de3a77a483c662b0b5cb98cd449da", "0x26368aa29474645edda1e155a5cf0df1eec95f4e895650810aa77f4ba7027af7", "0x21050e2060dceeb56367512af3fa11f3d2e6be9b72731255b05be5fee793f880", "0x22ee0d90c7d715326a0383c7abf6824b9d936af296756129574bc79af2fef0a4", "0x0e457467bae8c132f687fc06235fa92a0bb2c3fde1ebbbee6ef83729f25f3c2c", "0x1dfb9cb0002a56e38b73913636fa56e26a3b4de751939d5eb09a3432a3e29638", "0x06c5f60480c00ca60c016f34a8ae166b6934319b81ab4b27beb44a133839dc16", "0x01284904157c07148e61e56297ff04fdad394a6990d4e47a614a00999e4b8e78", "0x13d10300ac391c78f9c215dbc5d2d461b62cfa5a3ac70a69bd470be5d82cf32d", "0x063d65844b8805daa8fd771b07c278404c728b665eb17202297266c422a96188", "0x15e3bf17c52830ed3255cd5c1149f3618641d6e7fedf468c305d08220dbc8a38", "0x12bf5dd5c3caad12e0875e57e19b10752d9651e3a5dda05c0f66e5bf8faa3df0", "0x243c3b797e831a55046ae8916158fe53648e21e939400f9f5eb67d6c0cc094c7", "0x001e28fa9b34c2c6155b8421edd4de58c99d1e5e81e92345f62319ab96df03e5", "0x2ad1dba5506ee064064963527bdecd823cce0494a86ea452d9b4033623f386bc", "0x23137879a024cbc1b4810ee54c7f9b85046734145f334a7cc1e4a57c740c8d82", "0x074f6fa62972968e22189384563d6752e30235da2275481bc6c3b056937c773c", "0x22b10a5253716d165a670736ee243de0627619378edbf751b46bda0b12dcccf5", "0x0c190040f1e4eaa11b4fc7046995989680849177ece7bfef7b446513f9ebe112", "0x301875852c9ad256211b7f9f31ced8e2256188d32c3072c519d7069b0d10db76", "0x1c0f67d05ebfd650d22dead7a11130322bc1272efae98b85c815db6b318dda42", "0x286e9a17364f36946a3d2c7ba0612fef3fac60b0daeb6e973aabebce587a78f9", "0x2b729468126eaa101f4233baaa099d02db14fe35c48580eb3165c61ddbceb52f", "0x1f30f71406a5da98e929062cb48e0a34e473e832fc0ce811c28f09a31d5416fa", "0x259546f8419fa15978ab360084fe0a13229fc11dc698db8bb81c822e2c832173", "0x06e36124121afaca19887a7ca428e12c0ec8faaaf5d733ecc6960bd7aa5d7deb", "0x10f1ce0bf57c0778bf4de60a1e2bac8892de6b7b6ef2f8de911f731494260be2", "0x177fc951f639fcc274b4ee28f3f7ff560d6ca0d9f930f53d3abb55e6d75ad103", "0x1f34032aa46cc08d68555bbc2469a66a2efba23c56ec3dddc5836e2e919cd610", "0x269cd0b774f8625f5de7519be61857cc9ebe06d10610dc91d9f4cc57111eab41", "0x074f437828140fcfb1ae00b38c29a5080f0d0feeb99d4688ff8871f6349f3c66", "0x0396f2fce8cd5ab3d2601d37f80fd9775aa5e9f56b406f015d9b095fe1905945", "0x2e03afbff73fb05f32f50239907f48aae1aba810a6312480cce343ec663f210f", "0x2ae899455a6a7c49997c82bbe36066ef1d6c22d8426af54d2c74970b33ad2a90", "0x2bfedee3eaf7340a10fc0971ef0003dc87cb997cd687ef9f7f88b30c3def2690", "0x2b50b39a43cf9f1d9feaf04a1f100311e78932a68051e792c23a99ff95139a00", "0x24d16eb1fc9ee39362dc66338ea0d275147f8a7ab4b62ceb26dc3e2b16c3bbbe", "0x1539d4f6178da10200463590c6efb1ca7305bbba935e5a7dec940e236dba2f71", "0x09e85ddcb02bfe0709021dc9b9f4efba2ca7a04075a78c1bfd29dddbc7be7528", "0x01fe7f77ba2c018282073ab4d222959351f7cc16cac7e1c6794611eed06a3813", "0x1d3220cf7ceba197899e792fd2b5165807a83782df55438cc8fcee6ae75659f9", "0x1364bb46fe7c79bc9156a13a8c86b77d3425391f7ed124a035b94133404517d8", "0x0b70eea0fa95971c52b4c91fd9cf6ffb5de97e63e364028f0c0b1904b075b06e", "0x2a9ab96b4de33f8ccfdccd8e86510e8cc731fe673eb289d15a374eb0d055d217", "0x2ec7ab4d439e22d1d97eff2501e94577691d28698440e7b41190a8b8e0c98525", "0x1c1b59ff9212224422968e7616ceae71573b05c99e4bcb26213126fe4dbb5de4", "0x1fdfaa4da540e50d2bcd1a2a0975350f969e3492584085f7dd3fff9d8814cd49", "0x0cc8ef6a3dc250d7a4c94bb890be797b91f08869a99391caf70e2effdf7f0866", "0x09e595faec8506700a42a5a41190cb6b9f79fae9b601cc6567569e8ee9e24813", "0x06047cdc0ff8bd94c6ab60e3ffea21912f0101a60bf6c2e96371be54e63d7346", "0x2e40288a4a681e1ff5318fbfb796e8b7f0b2facfa5c9e691a1c4924fffba4950", "0x12616992bf6faf5144c8ce58355ec2b6e20a7d25c7dfb13460b0722681596807", "0x0a78425d56372af995d8930d48cd645a6e6b45485b4c06fc38e052818b5b3caf", "0x0fe9c60a64dce8b45b53462ca6e68be325d8174d067471295a983cebb1c9a0fa", "0x2e7aa9cee7624f71fa4902971d07cd303319bf41007bdc4ea0fea40ef97cba1d", "0x104690cf04a0666f4921a4ef9f808fb9a3bee6192df0e6cdb15b6f302f476c8d", "0x2e63c4212a402284deddf9ef260bcfe7a395002e22c9a6155930533b29959471", "0x23de0c9527d4ede516b956c9200315866378510615815351bc58d3b5d6ad7826", "0x25439ed1737440d79e4be009403949ec9d32a0ba6ccd7fc5158ec97c9d32c447", "0x14e35080e8da90b17e72b6fbfffe126b09ddf0c0cbd0b226df54958e680afe90", "0x2e0e87ca0a2090d9ae1824cec8a389e001b3c0aff73e81bd25847ff0a45d1fa6", "0x1319e0f608a12fa01b7740a8e14066b880f0b650831d8f424b6af3fb361c6deb", "0x262b82f1d1d07bb18b9920597c3925a41c0a61436b71d24ee7723c7fb8875af9", "0x27773d7ae7ed008296a572adb64f4fb5c229735b259c03d4c439ec2ae468b77f", "0x05a65188ac6d6467e028dbe4b941bac5a81240e80837a519152d6542a5f4074c", "0x00a2a8b07719ecfb2c94e90f8e045b18ec455f67325324c45119c0329195efce", "0x12cc316a669ced0290bec967576e8e2a9e9b6081bb09bfda6456dcd3fd8025a2", "0x25a05ba9a3f7dcc29a43df45efc404bed408749b7d2165038d702b303ebf1037", "0x06bd45d9b13af28e309348d1c06cf153b061e0db126ec59a8af095a310c284d8", "0x2f55fdda2dc8faf2cf83086758c7bc77a1a382934e7168c30a1e9daad2b96fbb", "0x1a468a18b185dc342ac6b8ebe53ef265c69191759e553eebbe674ee9763b1900", "0x031b0f9b6ffcb451f2617ee915cd6dafe17ac99689417b1d92698607ee005142", "0x28f95d6eb7547e7abe25d2484193bbfaa36c6576b19c36fbe06b4455ecd20f37", "0x04f70c340b166e834080afc44ae444ea1ef56aa8d084b2301e62f08e0777420b", "0x0fd721d14305b2fd9b20975775f54e6c4e8069e2c71fd663a9c9cd0d13086165", "0x0e79eb513eabd8ca3fc610965050510879c0d2c755b7e59da7726d0d54943783", "0x2e3636a0f8c3014fd963ff1cfefcc844a1763bfb2de23352ea55aa5dd7bb8f5d", "0x0edeaf35f44f339dafb57e3080c99c74c107f61e3e0de9b8b4c234a321a75589", "0x20e4391350654d0463b6ea16cc68d2c411bf8c97daf1dafc4ae6106ebb347643", "0x1aa0b9abab5c77259b24ba6df035bf864c7e6d573480ab4b2d85926e95b0b9d6", "0x2b582ae7e00f3c6dd5163f3e44f8ae1f8eaa9324e6347ae9fca7c2a3af2b95af", "0x1107e912d26d0c4253496352f14b263a30a09b20adb31dbd4fcbfac0e4ca93b5", "0x131dec28abb0eba0e9821ffce7980bcca06046c12f01413ad00a19b8457f804c", "0x300ed80f4915fcb5dc8d420adacdc6b5417c8ce35d907d95376756d23236bb66", "0x188e211e215ded9c861d3a21f43f1578977938a5335be74325e0669e7edb551d", "0x17d321855d1ca0303dc7b0b2807c43de1880bb66fd6b3abfe5cc2c3a8e6a227c", "0x1528e096fbd27e0e0900460be22a69b7f82ca1aa08a6def3f35256914b050210", "0x271672fbb529a7df27dd20e888bf331f5ddef5c07ff4e720604754739fd56381", "0x2d7d508df128fa96da79116c1491d6d4d4d87a8aedf97b24de2f32e86855f5d1", "0x02c12ae06490344d658455338a0ba557e2a1dadbd8c9915ac402f2378994b3ee", "0x1ef7f571d7daac5ada2f5b94de137402be8a81f9c9fdef9428ff3f46bed81b70", "0x186213e6d9a5ecc85192d790388eafed5535dc3634d8359e730685a1d7eb8666", "0x0370eb6d2e98282ce7eabd8dfadbc46b74beea0f05abaaf67af1698ab3d025e5", "0x104ffffbff2258b1d4a2c661d2d0cbf7896e05398ef373088bc86327b37bc103", "0x206d39d5af5e1e50b477e46c62534200bc043ca985cee17f0bfd3e68bc897ae4", "0x01aaa20931d5de5931734e80546c966b8baf8ad6c279558de1696b2e8b2907df", "0x1f4aa1784a2403f3c0b312e20fffc29f77e4d01e712d43a35b9f542d649488f9", "0x2701a0b09e785acd9711e5e6ff6232bc6497ea97a6ceb82d3947508bbb5202e6", "0x07e99ad5f3317c1ace19b4a7cb94b50900319f645b2b956a34056355d3b30047", "0x2250455670deae50875f75ae9779a6008c9fcfe530b417de4d423aa02ca98f59", "0x260d62893e254abd10f0e4f8be37b5221d15292ff00a8684f5e28b5f2495979e", "0x15abbcd2e0c442449275eca5e4911d157cb6dc045a595417834bf39c558f9f26", "0x09751f79321823f4bfb93804919c64e5cac1907d031085ff8daa9efda95e419a", "0x08b3d82cfbec8cc13f75f77c3a61848aa0cbc0dce4cef8d72ce3a59407b2e25a", "0x1976bc0dbbd83a1a26f9e14aa431e24a728af4e8f5cdfd7d29943dfc29a7b2c5", "0x04f59d201dbb263dd04d2c2fa396b12ba08a48989dc2464b3bd5976534eb38e9", "0x2bb23243e841c564e7add2d7b528d9af03fe75880e9ab76eb4d46a020ca6e30d", "0x2f66b96144ef6c5cae5bfd2511dd2456a1d6e3548569abec7d7a49e1e0474983", "0x29b569f2f67f1c0363f604936cd59c3299453d8233e796a25075c41fa7e19d43", "0x1aab6103104bd50f3a65eb42bbf901792e79eb39d44756caef259268a06d274e", "0x100955f3e56bd17a4eaff6f79b697742d0655371859bc704dcea5ecfc885ea23", "0x271b363c4f44f4faafa02db2752dcc192f4edf5c39c17ad5a7b8f479052711ea", "0x1021eaa8fa200bb0d3d7ef502c5d7eedf2a6ca36e63a37b5cedd98a318a7fb76", "0x13c6a203321170c046d7d44e25f21c4708f58404df6c2b578462f4ac181c5e1a", "0x066691a02754dbd02ada281da41893feebe687083f4ec299600c84657ef2bc9f", "0x16379af37c274e663b7e3c04ad065ee30999c30a05fbddf1a43037a8dbd4f199", "0x2e01cf9813252a5171624a4963d572e1b6e65a2b93a9c990f6a53ba7d5775696", "0x05a4ec77a21ca15f804aed87b98dc3d5fc92aed79c3724b3e9cfcf5c8d35bf77", "0x0032f3bab069abd4a66aa9845e84a3ea1d390a3c2b094197a5591c6b0c29b4b2", "0x056416328cf6d47d3d291cd7259481443215b7d2904c7c5631bb4b72e83de7d9", "0x16c0689d4828c935eafdaafac08e4d909da7bc8776c76c5dcc6b4bd49c7217fd", "0x1d8d23ed1dd6a53d2c18f91537564eb706ec1139ba2240b733ad3acb847f7992", "0x1aa1a21e3784b97843ec620ca8961e8c62d5e12b8e3effbab2a4eed9b8a58de4", "0x0bb54439d4c6f812a70581ab7c1da56d98a08916048d6b48f9540b451b7e66dc", "0x24421b73eeaf63134b46c29646c2b24dd7acb860a188b08a6ed1d00cb90b3c3e", "0x3045c2012f7445890f79f1567060c3c935965acd0ea551a671f1b625e684d7d4", "0x08ec863991a053feedaa5281098afc031b75551065d6d01f6deb04c63102c9bd", "0x250cb2ab9d5579a24a57faaa87f7c828c94952cfb248cc46d92ee60b8c4c95af", "0x0f25b63b5eebc3198122c606b0a5b2de15e6f5fd2cd0f493f96265369642f93d", "0x2ef6abc5ab02c8431de8f7a64ba3699c79e1df0c8f2d9d5e8d65b792dbc36d0d", "0x1e84897766aa9de056bb5d97c6797bde93c3b0592512340206635332b5c22b11", "0x08923f05b050e6e0fec0efef4dea500ff3aec3054d4b2b0a1fbaeb356384d70e", "0x11687ac05e24f50db06335e1875db73d8f379db3a5c1c3b9f57b725b1fd8437a", "0x2755837b80549adaba47e0980907591229f5a6971ee0f33ac930f5be13b154a6", "0x09f80c8230bc5a78138f9952ba6b64ce623e12da019460363a49f5e5efc076c5", "0x104009746d61c0bb6643e64ddfeaa2d4f30872a92416552a1dfb4b75d4092d4b", "0x196e821f653863b14b72b19a068aac434a6013598bf73b28eeb36c41e76fc54a", "0x2c8a8a85e2618452a8d0a9ea592bc495a50672522536ec7663869f758ac720c7", "0x07bd4de2aec5a7acfa66678754ef95eea840dc97fd1679e653d5fa32b8ad6195", "0x2464a17f4353a76d911cc8349f5dd02cbf2b2c58a1b7dea25f000eb9adca396f", "0x26831294e338f44440adcf5dd1ca4d1412a5cc41c93a2037985eecf4c2fbe4a5", "0x16d69ee3ae6b20ddd62dd1a13d279d4d7da74b207bc57a15ac9ac92cae2ecfab", "0x16b55a792f1b19dcce6b9f4c9b61be0e0457a9980e6050da2500a409415f207b", "0x0d49e31e27e1c71c16d524b2a8adb0a64843aea5da2fa4e686f183be95d4170a", "0x1affb8fd8b243d62d5d4a7b07b624f9a0452793d1d1a11ead3bb8284eb65f97a", "0x27da7ba10cb86c06758c55e7e8ac76dc9aba2e863c2deb8fae7525e42c96cebb", "0x27e1be0db1fdd736d218443f56d06987443704d18c42a96f3fdcb7c4536fba09", "0x2fb1dd1f7461d75fa3c1e25df670c1442b001b9275e670d73c81eb61fe028322", "0x0f5f0cc9a3d4d3066c99194feb229f0e31831dcf080bff42ff1d14974f82ffe6", "0x2bcd23585401b0f7fe33fe366ce92e3acd8818a23550f3753decb1ec24405ffe", "0x005c552a02e2a39af0e21c8944b9c4f56e15b438cf346516ba2147356904f01d", "0x0362a8a2865a2b2fe902831c8044c54b0ca94b95fcb79b65f14753c58222b4ac", "0x029bb183a6a291b93f0989746105e33cc669907250fd7064868fd313810faa29", "0x0608f62214871578ed58a12dcc4d1c152af970e6e5045f7913cf4c40ca6df18c", "0x1f8a4cf532f5e835704ed7ca83effb517579006ca22ecd7422511c0391b5c4ee", "0x213882bb31291dbc346cae58fbfdcf03978152e15b344892a94c44e2f0b1b338", "0x297125f6728b65f189fab61c3896016beb0a972dd34764910f059508d7e8622c", "0x0f76029cc3ff0861e048a601eb52a11cf1bfc69f2dd6ee1516a46e4865b7c7ae", "0x05a506ed7382db51851c224d5213c7ce6a22b19c7ff7a7fccc6237af1142bb17", "0x157ddb6fb6d427b97ba69e8798f3950d6888e44c60dfec0a98b7262a977744a1", "0x277aa399e55c3e5cb49c4bd8789f6551351da540cae037eba37543b045e91eaf", "0x1499091ae8dc567f8d050a0835eaecf4b995b5341d29c548da08391e6f1453a5", "0x200bdae3ef70a75a12979041cde33a178ec02b110abd379c2d26cbea9167b6f8", "0x2e6835de44957130dd724a0ac6335b7c35e8afad6acbba6aab16f455939dc77a", "0x09e302222c01cdb2c45e5c3a920edd82da3cba855e15ff634893209bbfe55d3a", "0x0a5b412cccce0a371617dada267bc783ca19cec068f155d6954d279f3959cd99", "0x2ffb034bf2ba629ead6f8a6022e2339779e68ef2c8bf39efda1a0332e63debc4", "0x1f3ab3fbf5fd24859380ab59a8f72cc52dc1ab2479a10f33d7c5b7121c58176b", "0x08303d8ea6c4af050a906aebae492e32010ece609b5b2c6eb137ef5dc2769b28", "0x19f0945d9f71950f6c2b298ad3c646e4fb9e99939dc170c735f407148c792532", "0x1a621a5b24758bb036344639e427c03f33d25af7f7711c3ed99995d983c4c3a4", "0x218a7b745f35f497b4428e61c3b79563752ea6f8c876361d327329579339928b", "0x16ecebebe58dff59a7b0ba40693aa431b899ca7769b445a7387db118088963fb", "0x1daee46cfcbbd63435fa6f8791b36a4fc659f5236e896a4d447ab3da68280fac", "0x260875ca1e98e895c635db3bed500d393940b5654d369c61156db2927de5ed18", "0x1cbf71e0ebebc2d151966acc2be11116788815614bec66f68735914c3b8ade35", "0x03b2a320eaddf48ea570e643f89ef2272bbebdb1caef32aadadb22a918a8a99f", "0x072f534bf07ba555426152c37e210cc1d36d8b7cc42e1dd64a83081357189f6f", "0x17fe62a93a9efb1236012e2ca1064b1b93d867b0daa30dd334ee5ca08d304b07", "0x2ed3b5db7ad2fc083734fb61471629463d4696ddd8c8dcdb1d2fdd460ab4cd1d", "0x26e83b9a8a7c7bd6929f22021fea78088037c25c7209425ba83e998115335c19", "0x1758fde5e2d8b8886ae2134943407d8beceba4be517a01e51a51a9c11c1510ab", "0x233e22ff85bffcb57cf35077fc6c81963590f67e3484a67d846bc1cff2cbe1d5", "0x2bdd734a2d8a75f5e1cda7114a8c418bf5064398045dc7a9a8f31669282ce92e", "0x21c2e28d54733906bd138386d7f05b1cc42f6604df893509a629c351f57b95d9", "0x03ec3db419b789b9a13811dfa2c51840d3a01961e5f884148ab3f6afbecca3f9", "0x04452cebb0cd94f7163266aab365b3666d2a329d634ec53db009dfbe331062fa", "0x2374e7cd3492dde40a21a4111b32313df5a4d1d483ff38c4b0cd49214b12ee2a", "0x18aace16399c7fd6e9d2197c5d7879598d2b72bd508e05d6f8bceb7f3fc668a3", "0x041d469f85bfadec96c07f7756a6735f417bd7a882e46ba06ba075731f56b563", "0x10b3c1cea302fb6b1aeefe7a701890cee0358bb45dfcd6db64f90df964cb92e5", "0x086dff039d2271895d0a8cdf944d75ba54284897d14b2eaa009400a8d77a4beb", "0x072e72d8677f6a51f4c2386e2e830d6648c4533a72851fdba34a5083f00802ef", "0x13dedd574590f362b835c05151d6d7c1a721062c50f14453fbfce12812dec477", "0x0f7b730b9f5abc35b874b224ebf120d469bcb883d4b4e757e8eb52bc26958084", "0x23f2dfd0242e0dd9ddf76b575563e69868e13c2cf3982c52777e6c5339472083", "0x264032c844dabcb025545315588b4509e27717b8e964f60404d2a98e8c4408ed", "0x2a505c683ed009b84ea09e705b1c9256187a48ee96064d3f094d15a931c09d65", "0x12195fb5314e5dca6dbb5301a0bab3741522aacd9262c5503deca09ed3b5bfa5", "0x2b96748cbb6147ef4860f0d7d93c21e42a84da2a5d24c07f2e6990175e362138", "0x168dc4dfaf6fecd4884881fd5f0feb2799adb041c6e16707f9f8701ca3535bde", "0x293fdf5e9741851b6efdd21641894eabaae4e7bd4b4b91d727a80ce850585439", "0x108d4122ffa4a9bed486d89bf9ce7188e53e0161b2337bc5bfbd81c668144e60", "0x1d34ef90f1f5eb9be9a718c2f5893fe4dd422203a306f961707b4a179e8a8096", "0x2d6db62f91949f12dd7df0846c7d73de9d13f571edd32a1a3b1e57efc7967049", "0x18ba73783f66e8f96616221f4959a5a6df06ceb5bd3d362fac4b106111ee2d52", "0x0a17603d2299bbf990ee1a95b5acc089aed11646ffe696ee065bc2ea650cf6e9", "0x0fc9ee6b510c00bf2cfaa5e6122b6e68ca866fce11dfadf427fb770d8c25d2fc", "0x28222e08995c93e38c8389bd32f39dbcc203d0efc4011447c543d051656122cc", "0x07d27a8bba7349dd716d1cf2a9595740dd41313b93989de7e5e9faab97ce9b46", "0x14498b47c4b8f2663e422f7171b4a3c073d3aa17895b331bccd09f1892788a8c", "0x0bd8e776f3ba7553933619f60711184e85c1c6b596b72abbcbd0d1ef0f067fcd", "0x20fadf38540e1e46da22ae56b75324b4983031b9c8f5198d32c50d5f25b03a01", "0x269997eeaebbe58b6ea9f9e7fd79d185bac71585073928a74ea6f594dd2ea05c", "0x287d91c8eb0d2d0882fc5764dab5404c8a8fff1685e7ddf656debc7b3b6190d5", "0x0878d3344a7d147ffb4c047b7d6dfa85a864deaa4c16a6753c1e72454c2c630a", "0x2e3c4acca0611112c29b18e0f9b59357f7c5dcab7a8d5f9abe92d7b2b2aa67ea", "0x1e288d37cca3d0ba558ade49cc5220ef629ef5436799594edcad6055c5bc6943", "0x1a1d7f65598460c079f75ba724389d5118d1420f958be0348fed76ec4f705786", "0x0f1a6c587f154cb9e0922c5c4d8d277e66679ac37eab5b27ddff668615ccad88", "0x2d782792e3cfa8411cf6233e5be30dec0df22d36c9d207da85ddbca5ec747197", "0x1bf4dc59b31c01ca9dd2d9a70520ac09d1b863b4e76471da01544f06d78a9be0", "0x29abe14d44a7721ffeb528360662842162b170818106e544ef147291047c3fc5", "0x02f4b020edf60204c8dc75abcfb07605173cbc68c4d935d0f7e654f104696fa8", "0x1c692a1214bb6ae2c5b3482b96ec4678c2f7956a82819e3a9c853df4606b9a9e", "0x25cb9034345fd345c79824069a5b9a05b77b94fbdc24eb5782d55622db5afd20", "0x15ba65b32365befa2f7cb0c5210eb901aa409689c9c74bfdd2538d78025a632c", "0x301a02d45faba3c161f8250a2e7e280d56090f4cec023448ae1199fcbc58aa88", "0x2e95c6f2a67a136f5124345e3a43ef22edcfa806abd731c91a4c3003fa20f355", "0x0a1dc1da90f177ad3abccb3513e1bb7440d8e695f2cf080fbb83e61ed285e871", "0x26feb10533a8b990dcce9ec02e87b7cd30753750d1156a52207b82ce63a92c51", "0x190eaf914232f96cdd1de4bbde137a2b8aa7ba817d6d4b1dce5dd3f03a841d4b", "0x1d441c3fc47fe77a1883e06966c8980e5846878e97071ee0e99e560efff58b23", "0x27028a819695508e70882dd56a022e912e386db46dbe0d8064e11c8ae74a2122", "0x0a26bbfd50a68ff9f1622e344e20bf890c2a198b6a58bd822c722f7e42ee2c53", "0x2551e3511c114035df498e07d8354c042df31b0bd3ee502c8c20ab8bca826fd7", "0x17c6203deb0a803272043d5ba927b5984c078c00a29002e6553a625efcf0b0ac", "0x0dea4d4c52bdec214ee4e0b88bcef03e062ee2dddab6d050b1450c0b95a51c7e", "0x05e660b1552d34ff3f62dbc5b1ab67e8e1156df506c39c0ab1d6dab1f6f9a62c", "0x0b9870c2d17bcb2bb8b2259ecb2e54ee162362cf9b18243c886421a90a646c30", "0x0d83ef93bf551550434dc0763cfeb5c0ab614d47cb0cb3c79180ce551849993a", "0x2bd44845898d89a005f5c1bbbf5f5b8e985d48e916285a64e676a811d5733ba0", "0x255721e12fbc82235e64a106731c12910920c71bfeb39be6bc82291d322e7f34", "0x11b41910ed33ae016c7d059a373657f56ab1ed3afa884f6aeaac3e8657b52d6f", "0x1634afe1bbae1766b7ff7b11b011ef9f88ff0dfd8834fcb085968a35870c96cd", "0x17e992284359e923536eed41bd61e308285399a12b6c1df22f6570bd00e5a237", "0x19808c7e543688ca243719dfc2da130147127b0d441d88dff53443d3d7db9d90", "0x2aa19c14548a4fcee170c0196d363e8865064bfc982225d5946c7ebff7945979", "0x2e6a2b023ac766e7485bd83cbaba016a130c00a731134bf66692cd5d7460616d", "0x04e13213097cb24a2a8b3819019a0b676bcbc81d2ff49af4da8c7cb0ce8d5125", "0x0436db88b4f66de384baea73c505b871c79c2352600f5859b30e218f07326ad8", "0x00c97e95688ee07ffa790567816e31d6ab7bb0e6e8f9d3e9cd09a9b1b16a9094", "0x2f04c8c72c8a00180ae6d0c29f2dfabd83d0d660ebeb5e7af3c6024d3e577747", "0x15070cdd99b9b5cdc0694685bdb06489c56f2c99961e1ae996608516cfd08791", "0x134e38e18c1f42b857ba214be75ce4b5d33155ba10f9834e95f3a96e25e2f70e", "0x1711629053d5021bafa111ac20ac85161cdec854fc170a064be745471ab5deee", "0x0d072e1c8ff17213b27848557a426701aad8bf3501c6a55ef01dd4b21acf017e", "0x0d6cba818cc9b0f4e2323a073869c4d4b4e5dd95fd04610ffe27a99687fa98a0", "0x1bb7ec720107065b5d75fc4539b3b91af0d95eec0b51ce06f6ae3b40f10a54de", "0x0f4b198af2aae4c1f15035affbdd30647ad04861de3e653a767efa5036bc59a5", "0x26bd5d4e6a15ed6e2ad4caf87762a8e2533158c689ed2e6b14f537f7f8af4891", "0x1db762c3e18bc6c00dae8124eb13921357a9cdb2a7d8d5af899ce5c8a304ef4b", "0x2421f2e7882947e068b590493df453dd22a3ac41f9a81e048fd5c80119ff62d8", "0x0bd9d71697d6c92e376850493ba687283e8483b529a57bd6b8f3240947310cdc", "0x264e510e5a7eb58fe37c891194e7228737e2c0ac2fd9e7ec416e84bb44835025", "0x1a28efe15e5ba6bc2ee602ea858829d54b1ab7154cf94bb948171ff092f084a5", "0x14a206642fa9a6cbe78d6994d4472aec2d66e9bdcfeca4cfc133855662a0ae15", "0x29195f6f5eb29605ebb51348adb72b86e184d5af2a55979e85d8c37d5fa377c3", "0x2becbd1aa2fc1d6a0cb87a7432ba18070d4d8d87c7c5085cc57a36872cdcf496", "0x2eb311c7d96af1bbbeedc811dcd0cf3b0f3a0b932daab80580ef19f2eca4dc7e", "0x06b13b0ec69efec0dda80dde05a22982e450da4b719eadc02e8e6f0ae8a9c8be", "0x2951569586c452e57a16deffed6643b907327ab830fa43c7616c6bbd7b337fa5", "0x0f80913d6a98d68e7d203149083421598790bd17fb71aba3be68235da31fae9a", "0x0f6c6ebc152c7142355f365056108ca2752a939343f52d4cfaa1ad0f9ea80627", "0x2651a3545d55a179b95c1d5ec9f4790094ccefe991b43482d3accc1a5e6bc41b", "0x19ffed697be990bd22c33a3152f1b61d924a88f25a682a604814ab0f83fdda64", "0x0514f51112b2131ff7446bdc8e6035f8a15633041e31caccdae57a2cf2e6e30f", "0x27b250eedea12787b0e74c67fd29ee3d6f3103204b0ec153bde1b310ad8ab960", "0x034e3b092aeeecf9fcbe012250071b7d86f50ddfc68b5bf59e57c5f93c71e1c9", "0x1453aabd4ab309ce11df060b36906f221e34ec457f3e1186e1ea3369be4b923a", "0x11680b19c0f622c3aece37013d9d9c6b094dcb5e74c08e22f170fda744ee17c6", "0x25121ba4a0ade9a8b4ddabdc337b09645ee6c42c3fbb6c30ba0fb457bca33d99", "0x3010c1d25cce64f6dd36355891cfa681dc6e2eed6daeb368f6678ccb41b08350", "0x1d50c97e2fc85017040cc192d199ce96cacfa54189b6d66af5d759fcb6bda79e", "0x15cdcbb1c5317192281df60267008a9ce8db866fef3ecdcccc3cfad29e7ab2aa", "0x0bae86292d004b61dea91dab5addecd8452e4dc0f664cc600d2cb6963b7df87c", "0x0966e0ae7b6e52fd18185266c449aca139d76048361592d38632a20c8d0246f7", "0x1cae92fe86f9a7ef83ba0419a261dc83aa12a12656250bf6cdb92909a8510867", "0x00a2cb83a054988cee1a7a847c228c8006686ea62a6f13dd9535dba248fcbd47", "0x1417d0b749fda05bc8a36f41f3f714025f2e4acf02f6f6160714bb4d86d8a7c4", "0x052c5a70723442134e3532806e57d283a142046d2a83291da792cfa54b234782", "0x22a8c9d3df25905c7bf99c0697e139882609c08276a171c88dc02e85db49aecd", "0x1c388261e076a0643d5479187cb6ed2431b5e1f531f91cdb5127baf89c83c73c", "0x0ab262c3215d90263f02d9cf1a2350d9d5ab0114a1ac7826460f34635a55c7b1", "0x21aa865cd024cd02104da176215444188f992aec9b53b65b9cff6390b28ac2cc", "0x0b048e05aefa0fb2c192ec55690d16ea6a969d2475762b9d21fdff8ada4a0bce", "0x1cfb664fac48b01372f86f107860398c013c2361dc5671b98f13855c15732ae6", "0x1c63978d82984a8f5b105d597d65a437c8298fb4074ee140622e9cbdf39cb479", "0x068727ddec782a2d0c02028fca3757fa85e61f33afcf5cd35986732216509c77", "0x0d890582cc215340d3476b50bd8d22261dbcb63ee7c6ce19a411e809b731a563", "0x184cd8e67d3346b0b1ed513225df4f8811f22b25219ac6cadc08bd27444c59f5", "0x11aedcd490fc770af451bb54a698ddbd4a3ce266715ea85b990f01027910000f", "0x296da6e5e32c20aedc69a743f6a45e4bb8d5f6604897b1cc751bc426ace0de83", "0x0ba576970da392c54477158abd25968b60387158cacf5f08288954e11133f8bb", "0x197e9d5129d713e382ae5ce666cd1276f88ddaae7dd50dbfab07019bc425f6df", "0x298529230c8efca126f2e5f127eb577c1f8dfde4f6132e61b26933726cd7162e", "0x097ec32e1e10cb019fa5ba87a78e31b4f56387df2dcf210639c9d9623efb5041", "0x0a696ad199a61dffa5210f5a67ef797951b25960efdd13ae477852993d9743fb", "0x20e69110246861565203f2b3fefffe68667893cd881bbd0adbb07306bddf4ed6", "0x27890f322bfd0fabc9682bf60620d1fc0434475394ec120d77088043513a10b0", "0x19df61b7b8dbe8152c57a8d9524609ad5fc58b95d9dcbc6aae0fe50e5a3f0671", "0x1f159a0092e8e13753d9a47082ccfd4e9ce23388fa7f48d0341e184beed4df69", "0x03ef8afb36ddbabdcefa9b43d1e5557e89159576e54c7b1a177fea5a093bbfcb", "0x1ccdffa3a8f918cd338b85146b057f87f8616a32159842f55744cced8fb463b0", "0x10c6ce580770b491e04cf22221cece5ec710f9dc7048a98063fbca9b0e9ee3a1", "0x155154344c44bbae48882ab681e1e402f7265858a6a499924f961e4241d7ea1c", "0x168f28d28a2797945e7b4e7b585dcab192b1fc073f6b0e62afa8cc9161748c0a", "0x25d99c080a836ecf0aa7e1299a757cf7c5d0a96b5812547969b3f09073d33a6d", "0x0955ad1ab1074db1280c78753ea4343ad05eee42d0bafbf3212c656c305ec55f", "0x08d466d64b8949e4bd175392e4219922973eafcbfbd965cb2455ed3f2186f33c", "0x1349923426749433b7e0014e827b3540c03c3a7323e7a25a4f8abfc14d492b68", "0x15792bbe2a6f84147f008f84b591b583e6465cb6238ef540189f5e69412dd9c9", "0x061a685b4ed05b65843a41c24b236a2a7b72ffd0602030b63b783c1e23923096", "0x25d7f0dc3e0a9e71090c72b48b051b8d8fbeda393d95bd8e9cfbeaa19efeb642", "0x2301c0c319cfd5520bc7f972b6646661135b2ac6cd82b0e8fbf7c814a9f38af8", "0x2d6992f2df7b56bc9fa14e65d0070763dfa5c6d70bf2fd88e428ad1df73fb523", "0x01e6621a98c65ef7ebeb275f696d11110d83ca8031014576baa10ecfd8411024", "0x0690e58eda24665799a2a1566986f05b3c342340a2855ae746a9aa6d7d0be2e8", "0x282924ad2ab431d50d479c2d43940b471352850f32fc7b75647a537189e981e7", "0x03983afede48f8107d3c43d8ef20050071e693e14f75835e7ce3aafcf2099d72", "0x2d3e2cf3dd17405faa9cabdac559cab5c4b88c053ccf888161a702d9d08314d7", "0x0a4118cb11e35af09c80a762b665cfd915fb9cc105a6439859e8d09c6aae3b32", "0x1f4f2acbf7868a099c0cf30ecfcf254210c0a9b6dd952090027f65aed87c2701", "0x127456c9cf4b04c64ea3280f18b4ab9e1b9640762704c9343c5c93ca26dbfe2f", "0x22f606187ade91dcd38f9cc7ffbcd51753713d431c32f26bb50f1a068d92b70e", "0x231cc62f25f6169d570976385132724cd5aafda34f955f2fb5578c8eb6fad2e9", "0x0fc97d0e65f7aeab397cafc36966abdea922157d67dccdead1b2315d1f008cb2", "0x2a07cc4343ea1b38982820bc9f3d8df014bd2be58b9f9d556aa1b75511cc8b7a", "0x205612cbc125d00b4a26d5a2c748cb7b67f7f74e5c1a3af99d2b53b21f904527", "0x113b94fa0bb37a7ce20e747694e19c4e197af3feb03e27e55ce1b6da8c7f8151", "0x135f57c88890b109164b1f19934b0e3077001aa3c399b46cbe4b3d45584aecb6", "0x12fec523a77be075ac0c47862f2b18cc5e5f5caa1dbef3d907c92625252e2702", "0x24f864be35ef6057de078a85d1e96a6b6d65f5f76042fe46c8a028016c99163e", "0x0032a288d270185bc167bbc21bf43bd695578cfc4dac4f59ad26adff03b41df3", "0x012a7a229b6de329cf40d61de15118d6050b9b235d6074565c93938cf9b5e564", "0x058b63645e3963bebdb6eb639106c4e16c0fdef2be8263e23b8603fe2004241a", "0x19a5af0c2b00b1da07b9d4b535bbbbddf052fdd09033541683fc54fa7cecdfcd", "0x0a2512fff94ebd00571d056704d5cd4a3d8b024c36eb2f29a03d0a6a69d472fa", "0x17775fe72d1785abe11b76379bdb3541c88dfd6bbeca37d2c1e6acf28a00e5a5", "0x144777351320b13697917dbba1c252315ff85fcb9e5c10f642c41f906c8c2cb4", "0x0cce87088d369ea25cf20315db73239b31df897915b70b38009d083111edefb6", "0x1c83604318f78c187a80c78b8e2ef66b48882a091380583f3c14a5797c3ebfbd", "0x195b1051102ed693e26286faef407469f0c233ea68fb74be5b8b801df4fe3972", "0x2454f53ba4ff1c09b2a650cdfcc32735105c03116b254c20bd8a196285cf6ee3", "0x02d0fe154a855bd683d4676c3607774c505ae33b0656425e2dd21a61045c4aa9", "0x1a9c1aa65d05e90763237b686a59f2d738ac1eebf433993e27376bcdc6da398f", "0x0380c6ffec35d91b268052e8575072da510b5fa976400221113df0adc2283e0a", "0x2f4835b7c8938e6e3d5a8d853cda5e24c879a5e0e7a79b63a8af8e3c02359769", "0x1278111dbbaa46ab94479485683e473efdf45be249083c3f65762dadedb5dab7", "0x2f6d0e205916919cd7c5381ab9263e9bfd975aa7cfa45ce9eb4b6799ff903538", "0x0987b79561d0d24c5fcd6c6bf1189b13f13aa0aafefb98a6c11305e7068f9a15", "0x20a1f94ea39d9674beb0e237b74d92706b8f1beff58f420feb1a0629938ea44a", "0x046624944f67281a6082d30e31a2d78225dea00bfa55ff2ebd6b4b6a4bbcfa0d", "0x0ec86df4e2404b4d4c5c1c7f2b7cf4ffcae2baaec96f1c93b5718c46e32f4b5e", "0x17a988b62f34331bc23c5c66fe5555dc2af680f9175c4e95269ff265641a7c28", "0x2f933a4009c38406c103874cde91ec02d622067c7cac56890403c74408a1efc3", "0x29c60a6ee7e22c0b8d8a51cf87215d4e3dd52c23c8c513a8c85c21205adaf4e2", "0x1e2e3cdd712c6ac039aeb3d4dca4e92de5124a1a92893a8f1b8b6dd17dd020d5", "0x1cc0cf1b5a677bb56afa928d7084c9e31d4f54691a9b90a2f48220fb26fb534e", "0x03f5f53cb34ca5b6476f61d4b4cc01e1d123b90dff98e0447c801007e6404865", "0x264f523407a076b04f72e26834ce8bd45b8c90dc4a915fa551f3ae56d50db503", "0x1790319745f7932afc826f8c296f92b2c0f7f6b3cfdb4bfdc763d0a1f28f370b", "0x03099a72a9c353b329a1bc4baabb784501c9037ba736c49806f1da48291041b5", "0x1604aaa41bce072f44b6adbcc0757542e4caabcaf109eaf7af718ebacb090fe5", "0x10eeb59a16fa139267e3c45cef01b53ce7dca8f8808ccc248fdb5728a799db67", "0x12eab8cffcc06cef8d112bbe5dfba7e75534f64c4461d162fcb3ba06715947e5", "0x0c58e04653d88bba71e9f539b5030b937dad2405d225a30b5a75da8ae19c23b0", "0x1b157f2ed740cdbf798af092aae5833bf52e391b113985ca6a30eed588cba4f9", "0x0d0837d097cee0020345d038d3656de14ee4c2833bb9cd0da1aff2399da436e6", "0x0a4225a5d367e0ce78a1255c9a69aa626ed22248763d190ed9dd0f3d35934154", "0x1f6a2819a67e201a2576f0affcb09496ed7feca0b85058411d09a6e756ffe8e4", "0x1c674a9b9fdb49fc966e064ba3da32c1ac2d4b6a1b4d06b96f75e31605c38cb3", "0x20844cd477a2921e8ecb26eec231d8c6d9b846dba93db5eff2200acce3dc5312", "0x0a8fa6b656ac797be797f42e294b3ac4d9ea7d3d52125b9fd77f8d44cb729864", "0x265947fe0877c73e0c65af54f643b0f3844a4b74de709fdf77156f4c338c8007", "0x1f04e4663f2f9937cf07d3c2fe5f06e85414b960dc77a19e8d6e38c5bced7d48", "0x06d020f03d9dd918c985f1e7d5cd39fad63f6459055f85e1b8d65c257ad64046", "0x0f4fb8263bc813190c44c383d548741b244d213df4344c3dcbce797969873951", "0x0e3b1e6adfa05450afba7cfbe8e8a08bbff6bbec099c68d5755f096075c21025", "0x22fb7c00042e5e4ba4b512efb900224bc6bcd53cb1224f3cccd425331fd6f831", "0x19375dd909e5ec26e7274bfb8b402c5d58ca19317505bd446ae80dda553ac71d", "0x11d0952461edb9d24c6bb08afd369692173a72dec287f6b19353c3bb540dd34e", "0x1da0872acf3b35eda099ccc9e9a5ff2477889bfa122b5bc54b4be05e898702a8", "0x1a74a3b2de9a16c14c026b9c511152cc11740b9b9d99b6bef9f44cbf757b7376", "0x221b345ba4b49dcbaad49fe51917d928c533cdebb44b095080064a93e6ceecc3", "0x0de529ef32404116fc0dd6041c8a9d3f7980963143c3e275f29ec6386c9c2bdb", "0x1df03417e70bc8a58129a73f2bfed475f59cf6940ba48757c860e4d5afe912bc", "0x01a6a6c5e41dd7ca162312935ffa4caa6e1681769b10291fa65fbc362c57f7c4", "0x26be4ab855efa2c395a0bad51338e24283883973d0dfeb2d8584bb3941f7b92d", "0x01f1c7d227986e5a9a329bac19a23fc7df52609360d366e0afce5913a809f932", "0x075852ae085011a3420eef6fc4d51c8810d40f57ce4c54569e0349bdde64f25f", "0x2e69ca1551e48a93009319aef40fccd78b8ab0eb3e6a75aa3a7cdc2ea9510e18", "0x21d1d8183e5430aeb1be773620504ba994c1df4ed550a87505fd6889bbc70940", "0x11866d8bbb8cf8fe585de19d816f444097b0d5eb88071c2785ac3a757ea5a973", "0x18eb3fd0f6793a01b4e4a35050555a79fd43c7d9b305f42e9b676ed7855086fe", "0x2874e162935850eb2b1e7a99847dbe48b39726bf75a18a99892b2bb6dbb141ae", "0x043164e5c0d618af751f9458ad6107cc2c18b4e24968614daa909f3a664fc898", "0x1c7fad75476d7966314daa926e188ac033bc3c0e9d754db747659d9845285f15", "0x001cafa60986645969073ad8c0e29d8d46c4911b3336bd15a3895e10d0a39378", "0x059b39a84beaab3bd16e649114d507aca8b49740ddbc4c7e709af251f7e5c002", "0x2ef7ed14755d43e71ea6eba6d478e4197c5368cc9d7ff7c427e3c97adceafaa5", "0x07e262f43947c3e4380bed5989b35368f6ee10185e911e2991845730df2acd78", "0x0f54ef80d9664876e7b9e9cf8ce300b9fd82929274f8ef4ba503096752083517", "0x17b19a0cd7597c0b95a9d1b1f3aa38fede0565e34ebaee7c9957696f92a3fae3", "0x23724db078fd410f494e5381886a2848618ffd4a8c088fd51133b0be784417db", "0x087f6029159cf77cf228c9cf137d25fa4d842a084fea42fcdb2d0a16dc4cb3a9", "0x2c91b436e22203f5cdf3b1c2188626007312b7e80ffc2c70264ff06560f3f52d", "0x08b9793cf23fb5b0eebd2647d2bc7d4cc901d7074715b445b14fb64a55e43bce", "0x214143f8421174ad70d3431efe9d40bed361820633e27b91cf0505a8950b3bed", "0x1d5b88560517176724a85325f6279ebd9130a2ffa28cd00b07286fe3a982214d", "0x14c9577c063d4dfaabc8eed7c32b99a187028d866e2b991974e6e63b0f838fa4", "0x046273375bf435bedde590cb2bac88efee89adae8c6e27b01f7792493074bb34", "0x1fd89f063226990387b017ebe985f55d4f6b1e5ba5a2bfd6f2273d2d6bb6a81b", "0x0502081f3b1250555aef587cb5b4b307d730c1bcd151adecaa53302fc2ee7bfd", "0x10baa6c318c7e6a3a3628756ad42eca66a92be51f475eb386f96c026772e1cb5", "0x01dfe4501e8b2ef4184e1a4d0f0c9cc76a8949766636308b02c66ac9823edc65", "0x1a72d320faeaf05e0cf44db930bdbd8eed25a09bc14754665e7fb5f28ea3fcbd", "0x266b33340a8bf66136e7999ba473455bd90f8aa53f455343339ed5b5320b0691", "0x02448e52e069c6b44402d59573822c3b5703090216d607de4bfb678e1357b958", "0x2aa25e459065532b65ab2780b63cf6f03d872ea7596647bf9517ac628b79a226", "0x00b1d54e7898b63a3adafee6e3a36b2aab81e39bf3a15a9b1f479b7499b2efd7", "0x246f7f7d8e5ee80022d45348a5aedba8612c3cf4623a6260ddc931952512c4cf", "0x027907ad369fc4b8372c78e6ab39d4a3faa44551f00b83d24a9e33e01df07ba0", "0x2b67bd277bdc4c08c7908bb15ad397256efc62e0325327f8190c7ad9b09ea5e8", "0x08a5e948d1db145e20bf0abfd419e70708b2017e8f8b1170459c2c767a7ee354", "0x0491c93811381bbf080cddda20357bbd01755d50eb869ac50ebfb775b49599fd", "0x0bbe5810c339505f191659c51feeac4d6dd8bc8396f30c1e4b3d89884035946c", "0x03b065bd291e288a177f161e35c3652c57ef70e46e1742ef750ce63d22b24810", "0x11f25b85db841ff7648ff0e35ac0b6c463c714fb2bc5f288970608ab353a6aed", "0x2f14f75123210cf69d38f2f32b833cae0aa310e763486126d0d36c29e68014ae", "0x267179f1f050aa24d1777e348a99dace45aadbf16420d828e91f7d8ba5d6b6ab", "0x02d760a9ccd958f723e082c804dfc2906860767cc3aba88b35d47d95551a1283", "0x042540133fc254876967d2739f1014934695761da4647d330b180728d9db97c1", "0x00d4fcd586135326975e12057cde193244cad1504c4e147115610c3affb06557", "0x27a2352f8c5f88f643d6dea7251b027cd3aa04364fae60e3e714f684d05a8966", "0x1c7e955c7dea3de14499e1b00c64512b1d0df603c5492f1d75747161c2112ecf", "0x050e7bcbfd9fa9c1c4d29415b03c0d00a51c2bccef5b1c441d8301fdc7335956", "0x1abb6a8eadef0940704d611503c9f295715c3c4ebe023abc608a8ff3704413cb", "0x0656203914995f78f4a1d5f2546387ef7e8b51497f5796521999bf0e0d1e80a4", "0x1a2a69c7673f072aeb2ecc5e750c81bd0af565c71cbd0d3367efa7779eadecb5", "0x1599622b5b0b75fc66ccd9ef20ec559bbf3f51a4a4ace856d8f687f6845c8926", "0x0eb54dfc23710746af102dc417a3645f5b1b87d888bf8db5c8cfb4b45eb03a22", "0x19e1a6f91e97deb1adf0d25cbaab09a1f72006ee92a36eb59f32cf304d889864", "0x201081529413a6f1f49f3d52dcddfc74acf146c6b32f85beb35149479c891d4a", "0x20c393584e2857f57c23efeb7820186a50440c935bd34a4a17f2a5bbff287f1b", "0x179cf0461c98a99f70c433f74f60fba50e7c2fc9bfdbe500a0a512f6be936934", "0x138cb76d3780d42942bfe0043d625bdd4d6e91c83be4cec3da085bf250c18d81", "0x0e70444af01939c62a8ca5ff3ddce46e29b1e45ac6aab7d37297decf2063fdce", "0x142b10f58204bef4cb15113136fee579513c126a168488c376c21adb62827961", "0x124c8c607612b5fbd2af84ac37bee103eee11a4eb711e11fae7700ebc6387fb0", "0x143fde70dd6bde8b26a0859cda512daf557c452fa5f76b542426b9fbc94f7446", "0x24694de53a139a6435ecf716b4139ebd01cb403a2d386d58ec733736cc21692c", "0x168618466211f05e88a1b771ac8959fce3a6352cb647d47346014bc486f9c0f2", "0x1b9be7105266245e707a46e2ba3de8322d4a8e7bdca43448ab05a7275e74e43e", "0x0fc2c8e1f54e166049d5ff37f6b5fad79ae76d7f069f98f8fcf8f367c0fb3b88", "0x0c6f5833230640ce8e70af4dca674821cee720690bd349e645f0d8f59684ac48", "0x24560e4af49ff08a2226a7f095e44890519c9b9976aefa3514c0b065a052e340", "0x0d61f061762684231c5f469ee0ac33f41d314add6a79d553c642dcee363ea047", "0x1adfa57f4ec443e497de3046f64d189a7cdbe086d98c94cb1d003a59265d40de", "0x09fc22885ab01975ba9aa4c8692a04d75e50971f7dcb7738629505532272651a", "0x1c01bf8f85c8bcc035cce929aeae20e5bc95e1d36160e286f5a373032cbb49f8", "0x2dfbcc48d7241a6674803aa64253bcb3210db37af2e9c036c47978c9842ae7a9", "0x27b945d4398db7c68d13576a8928aac99aca88a180b31be985b85fa89d0abd49", "0x277572bf0b290106380c4bf58959da217f9e689940d9db0fdbe79c1a154a7f89", "0x0831d1b88af8561c0eee6964bd720c377d04361f9af65ced7f0329e7deb715a1", "0x119459ca339e5c8a1b36593a8a091bbe9de7c8619ff83a8d32a566c2b15336a4", "0x27e8489bc8ced6a9f209bfe83f6e664fd2553ae84632a8dde85774f86a714f94", "0x10fb6c8fab6b135d7a50c54f8b1fb574eb0542c05b9bd84aaf4ae89328d6f53d", "0x1dad3864816666ca3a5d1fcb0dff07bf12d352f08aadd1d4a14b9fa9b2ac057a", "0x2439afd2542a9c564b85fa68fec6f9fd48d54c398cdfe14eecb7ed7d9e09642f", "0x2bea4058794d8bd725705e650875da2153b829dc245970082770a03546636a4d", "0x292712ecd08d349bc03fe610ec2a0e7d9b8383e3df3c13af7e57365b48d985dc", "0x241c1f77219d178d4d61f50838a69b6d7029ca1b36d3eb348a0b1a0b64c43530", "0x21919178d0ca9874c90f875407e6de742fd647a7679689972cf02c2863db6e00", "0x303d796d52867e994221af51b2120ff3822cd8a0637c9096efe2e9aa3d2c7b53", "0x1f0f30243212eb4bec6bf9e8b794989abaddaf1357f7d81b79f227314e9aa843", "0x0c12581aed963a169ff1c33716c8bafc6be9a8b6db13a25889218223f850de7a", "0x11459ddfc0f592b264269706501c04ce7bd998547979253ecdcbccaa3f54007c", "0x0f2b37146a0a04ac53e7b630871db252a1dd84331a8d39ea02961f938b5efa1a", "0x21efcae659790676b5d9114b81d60490eb551d6b21f65f362f08208eafbe4d3d", "0x1e1b56c6f76e3cc26284b04a42b5a02c5b9db9b842272100245dbbe7c876184d", "0x1087be4d0c47bcf20a815f60ce803d5fb9216f1d0b474a781c85e8ed1478eca6", "0x20c7a2c101e34270fc18b4f05d2b2f5a5a1298a2592dbf3f9b698e4a791d9311", "0x2d4886f200b99c57f4f09c0c362fd3535ae906a11cf011e261faf48734a3b07e", "0x2de6da1551b5f1d178de4dd889d03aeee464024fc2936097215c05ee14924f5c", "0x00d90348bd745e5cd779a6a6b5c4b625e1b86559d71c55a13b4a92aba2187aa4", "0x141c3084044d2bcfe9594da6bf8175b950ab36b4433a7e61b815b6101a5bb703", "0x067c3241799e3c89402d1048ba30030283b507553a06ca6b37a3872000412e28", "0x148f39fd35a56bc7d20ba1c8922e4ad5c215660dad8d446b0f597edc42a1fe07", "0x1dd1fd608be4764ee1dce05067899de53fffc6b00fbe475a2e0222a63c68c54f", "0x15bb0f86dd0a37802b115a81d4e3f68f9a1d3fe589e5848bbbc5f5a5d77beef4", "0x2642fdf5df1faf7aa6a2f37b33a665f163a7df70c86adaad87dfab06493ec72b", "0x25c726bb20a1ba08c73808e00f829bd3fd95381e78c88bb1d3f347dc7dc543aa", "0x1ca5808c3d68b51afc586ed44f44189a4f4d0e56cb496cd10f5de368966b867b", "0x1cdaaea17a2d78385a56e99849637edd7e75d8556bfd8f241a11fd903af4fa87", "0x255b06d48523f97d2d30bdcae93ce9803256a0723ec161b987cef062877948af", "0x1cb3ff20f743a845c435fd3e2d10e9312f61da413743c4a79e67ab6c32dbafc6", "0x047a32238532a7a734ddabb15024b8a154455fc2481d31c3548d1e725488651e", "0x0995b210131910f01df8976ae742e95e0a5ab490a4abeb30fce348e54dcc4e78", "0x1bf16ee530c9c94a408f2ffd49ace7dde635099bcfddc1ee41def1d86adadc98", "0x13107a5ea2a3406acdb6563a5e3f0809a1c6b7ea9a04928533266275fa6f521f", "0x2d562cc0650028df6e30c07bdbec07f73eebe766a192d130a6c737fc9ce3db39", "0x2efd12b5e4fa102fbd60bedc120b1dc022f8c43a2fce8642893698df53c23529", "0x110098c916b523211e18b985f8fcc7e8a804bcbc762bfeb6c25c810ced552162", "0x20a9d5216caac17db5ab45fcb6b45dfecd60a708291f5c86ab84da22ca596ad3", "0x048c825409094d056259dd3ca7e15a08594be82f488d66f91b43af660dcf38b6", "0x1984479ffca6b64a3b950372747c1b926ac36a7dd4f70e47e188bf7b410ded20", "0x209cec7ee37d47a8a56f8484b94f5db20535b552c11d5fdacc80305fd825c8f8", "0x2da9a692b08915b7b61930f011f76b09beb7edcfd6a19c48cde742e99cd49308", "0x302f50ece4afa17d552370a4e12c25a3b0151a43e3982ef5e71a38c74c36ef59", "0x1b46e081e756c42c783153f73a64054ff4985073b9a732153ab69c929470283e", "0x15103e3988d0baf626bf9de54d75b0301a2d3927c65d70b72391b062df7cb4f4", "0x1564e70062ed6c3b3ff272dea80ff3dc57ca1de688b1de481e7c0726376aeed2", "0x1e545f388b9e05a46dee5160c8706da80cf807c6c10260c85ce04ac3d41efc5e", "0x088cd407f0657fc8b6e8acf3ee2b0473e50e72bf58f54ea91eca40df80173dc6", "0x08b8e42fa1c4104467d67c7a3e384a3c0043e1c1d537d06beed997e0b52abcc5", "0x14f1b3f9e72031ba74e2e032804da7868d37bdec65c7b4c33133dce2b1990846", "0x1619c0ecca142ed142f88a2fe0b0381220b10d3ff5c20fb67a66badabeef018a", "0x10f620a862c7ec986c3ee7e92ee431caa4e8d3182bef22175d29542796c99925", "0x2f2f73f3953af6ecea86f5ef29075fc4e01bdc083c03fe6ef89842cb81f57936", "0x124ae93fdb1b32754036196428519c8350e699c10ae783b8efec04f6d0e4d40f", "0x23bba8fd9c1d888cc9f3268fc54eefdf5e18d60b41f5794117c800ea9564f579", "0x1da248f4d90e0056b683e2a892876fdd8efe474fb511f46955ad3145341e0d33", "0x2fd8234511e54966d00f3ea4a65dfcf0a6aa07d09323f994339b43bcd98ee670", "0x1cf83450d23c5fd64ea5ed6003ed6503737dfe249efbff2d05f6cc285b4adbbf", "0x0730028703b63880fa47aa0b948a2a956590f9d2de022298c0350636586dd7b0", "0x2aee39a51669c14763094fb8c42d649064985ff1e175d8828f4e0252e908110d", "0x236a48fec7f4871e2a0fc6305b4ed35169b942f9e8029734dc9a5f450b0a40bc", "0x26917d74db7165800ebb0bb05afd8cdc79b470c1d54a5eb1dedad874a4a77acb", "0x217279c9d9ad568bfde19952276e8a757021985b2c6c1967dcd8c3a4198a38aa", "0x1f84a26602f83970a38afdfa335e740e24b8fb974dd9d8b0319c7cf6d3491e12", "0x1429fc9a53a6937f151562283326d9f9954a2ad824285e563b67d2838e5dc265", "0x253264e5b4725993807f799d6b066d3850232ecd10dbbc01e9a0d52f81bbb7a3", "0x1f193de050e1e6fc55939e38c86903ea03252b489120d0a74ee2aa203b587f23", "0x0b179e9fcf3598400ce988278421f7a5eb6d5adc36917fa51649537396bdf99a", "0x0dd3cfd2e74ac6443f1089c4c0884a890801c608c1a53b503eba6153819f9016", "0x11e4f43e73c18df506683d89a511b493fafbc4fee14c34a8343eb03d1c1978ce", "0x07e9613f5cf6551a97ecdcc24d8810e378c9b542bb59d79461a4c25493571eec", "0x08f250aabaf2b7bb58a09c6cd958e13c0b86c806c33e60f4cdf06789cd0241c3", "0x1076a7855f3b7d1ecd5bdc7c0860391c57ae1ead3508ea994c31530e29c5a242", "0x1b57606bfd71ab8e3b2ea9cd32a78569d00e8a836b8a2f94e165149005a2204b", "0x16a0fec8e2bd755596396f1d1cfb79210796b85bd3bded82bcc2b8e6d4a61c5f", "0x2fa939b78fd3589160bb09b35aedddeb43c10dd40c2ac6471598c4ad136889ac", "0x2fec4aa75563f7b8ce369ac2d239486a7e2e593c4cbf7474fc20e5154227d91e", "0x0e1158e63c9b7df32d7c3f32a97e8e415343f54c62977e28f6be301418d8c3de", "0x0e11893c32e63b42a74bed81dd71e6348a9bcb55bf5835335580be1eaab2fee4", "0x0fc0701b9435b305b610c7fe0c667b33de7bbd330ca940d71d5ccdb7332452d0", "0x0fee4aa70a97580a7395d67a37f55330b908470fb803fd004d434ae664765fc4", "0x146742f4531fa49c48480406498c6541600d2a303dd8dac971b7b920714ee131", "0x26f145dc528340cb9335cbb6fb1e70d0c871849e7475e7f9c0890b907f9f6bd7", "0x0e307a3d20bd16381e2cb9d0b802046f3d33026535f1b2b7c03ab075b681cfb9", "0x037518e3a0fd47c9a1e33a918c30fe9fdce4dd04dc0e938162d2c3a541394e5c", "0x0520c4f6bdc375ba8ef5e4f4d55ee73949386a813c60718db08ca3e8aae680b7", "0x1a5ee091b74dcc7c3962590d3042486bb4399107600c5f6664b145b7eb8c9a2f", "0x1986256424084fb797529cfab403b2cbf0b6626d4930abce17b1a64dae036314", "0x03867c71d3cfa8039ab6407ab46053ab4b7405276f483dc98319047b951a156e", "0x06d563050f5097774e456405b8c40d1f65b8a0a9de14e2b052039700bdba23fb", "0x10767e56882be4809328a58d747c6d3ff85de6513d50d09c2e337d22eb11c20b", "0x1017176674f93d48207e239674d99ee39b6cd893ebfb903a2a41f28ff0b56332", "0x0ee7e6ce359254247932f4e03d3113c2ea26e51a83313e4c1649cce22366b3cf", "0x26ff82c65be4374fccd75b3238534dfa544cb04228b8b17fde68bf54a791d63d", "0x07e88a6fce601c48d5cd2ec5945e24080fb840c5ac75084146d4ba1a6a6fd617", "0x129b8c69e8518bd16636ab0f1a3d7e39ada28a5de79ea5fba1b6a7d13550b85d", "0x0d794f086bc4e45eea6337cd1e65391049d5c3d3fee8947032c40069aeeff68a", "0x2622b4fa8fb07226532b779e904eea44f6f909488cf516056bd81dafcfd60a07", "0x25630c8d104693e7a5fe41ae65db35fd3f4c63f8f51ef9d0948ea2595f158a26", "0x29023fc4f33c9028cdfa300500337f668de2a543847a619b6a6dcf7c64711b5a", "0x2c05672e9a763ea209baa0f7c31ec56ebabb34c45b24b7097c841bb3cbdab46d", "0x1f501c00c1ba8aaed173524be2f2b217d6b6ba00ac262ee58ff6220167ba201f", "0x19ba085b36795a55dbf040e54c356e70321b81fae29be0d71d777d49c4f4bb8d", "0x19b51d2fe788314270e14d1bc248c090da8605a40f7559216fb86482fe69022d", "0x135565fdd6d3e651191d7ed1ab010433782f9b07a41dbe14629bab713c229635", "0x22461ed7ba44596bf3a7402dcaed5c247b09835c534a81ab365148e148fd1327", "0x0e09c39935650773975a411bc093718dac77e8d7877666a85ac3da15805cdf8a", "0x084ab85314402a0b68cd3021e1ae6790b27686c6b0ff2e4948aae4ee6cb5077e", "0x143b5de83814814bc1553bc7ec9bc4756bbddb9d31843a9dafbc2936fc8cbf69", "0x2a9b9ce26f0b8721be06da85ee1474727580b0237cdb08135baeee610a460522", "0x0aab3ea72f43d0064b776a4746ea6e2b189b7e06fe8d49ebf452ca4627a387d7", "0x1656ffa30c037ac4573b8a0726888d99228ad832454abefca598c2318a3ec653", "0x014a2aa2a598b2e2370d14210dab5c5eb758b0c9178ceb7ff3fa681da5c9bcdd", "0x153c93de24e01c07ccd75236e4ec929b6efa0da96c687b5dc125f681850567eb", "0x141707bdc7698398e59f4ad04ec44fab8b7f4f7b20096f78020e948778a90f55", "0x021381259d9cd18a837dc34fb95017a3f32785bd91cc918589dae4212af7b979", "0x1d5d10c13222b1716d7a1def6b384d727948b0fdeb19e723b2bfa1292d97547f", "0x136ff9edb9c0568cd585b259aaa562ce3e24b30a6c4660acc0b5290d30a0da80", "0x2f3ab4418bb0cb7b859675b9ffce8c488f16cdd8cea44c14de0432e6e2881464", "0x2f03727d0894a74dc97e60cbfe74c7c7311b05d020ca878718dbf561db8bea39", "0x04ddf88beb916a6628e60a7da981781dfb0a5e1076285b24357f229128fe25ad", "0x0818519ea2b71fbec6c6bfff87c978af4427e7bcc576dfa5c15bc4fc9fed263b", "0x1154d1aa344585c4ecf9ee9390c84668dce99231c0f427e8629ac905234e9eb5", "0x0304298c6b5e2144ae9a508cd4c9f4c8160c37afa477b3829afd49d6a49fcb00", "0x13650a58dca9fdae806e76454c94a2198bed24df36d694a7a533147548ad0234", "0x07ccf19c8b8714b18d280a4c0ca0e8cc68e217516d1c54db6ff73582bf4d3263", "0x1b28476e34df146b4f9d530b6f59cd03abe281be29b3246a50feded647083d32", "0x1c58347a64fd5be62d478ca9d8fe383abeb3fa30d876bd5025ecf0701257b73f", "0x1cc9002d4119596aff974310da5bc62721915092504126a6ff3b684383f9eaae", "0x13d99de748b4fed4476bb2d6e9a4ec72b8b0488487d65822895a5267b35a5772", "0x21a780abb2efafce61f4d67da7b8bdfac494839e8c384f090605a94e7b396da8", "0x0d9dc88bf3861f705b9aaf1f82df9d53870a0d3f8de4fd8b8c965cdaf6571886", "0x078f3af2d13ebf855e840a8c858a3f2f14316ae520ab12fe61381c0d2d4a0469", "0x062f5b577804a423ff3a473952caf7f052f22c8b438f00c32ac888d00c99713b", "0x25a8c33d7adb7ddd6a19dd8307a935d9148f2e962475f241ed67051bec38bc7b", "0x0431652b03c94333a0ed76c36f1968d509ac73b8910df407b0343b9dd03fb56c", "0x22123ad39910862a3a25397329e3dc149b50289f9095e7224a81d5f2d39987c0", "0x2b43334743fc38c1bdcc7cc7d36ce441ab3be01674de449b15349a75cb937b3f", "0x2d0a0bc92e109c5fd70afbdb871bcec178a69fd1e244195e2ddaeaef5ca10dd0", "0x299db5f9e49f4aceb760a4aac36abc37af72e509ad6d21f6af1a267d2fefc6b3", "0x0c813f6de081bf25808656d58811a88b8ebd5fda5b1365a54f793ac2bd4dc0f8", "0x0e32673a68ba96aa959b25e655b9422d9871c6d5b615d14da978d104132fa938", "0x1a9e9dc3dec2e712da952fb4ce7f64e991cc590a0a3fcf2463dcef92b5edc389", "0x159ae72e80b1b65f43b5074ddc6642379e09c46769d7028b9d68e979abf59442", "0x2479b211ad9e81f8180fa2d44d0675f8de36046df216e254dda9c043b34d076b", "0x062f8b312f39bb2e5f11a786ea6bb051e5373763329dd904c5199ea19e3547dd", "0x22963c036561dcec8e1dcfed6ce50a7270acb2e415fb343cddcfccb77906da55", "0x04440fb323547f46c673d0de5a4fb198cfc8b94b64e0c776442fb1f189ad23b4", "0x2bd6e08f96c7801d3ec73c04ec706e3a56e10e90904c29a5a09654d56cc39f88", "0x0531d0d6dca62ed2cb479cc2490208473ce78e2d63a2c1d6deb6a15f7eef493b", "0x1611c38d07cbce2b51577b64073338f50af6af8a7d4e99928942b6a687340edc", "0x148604fd234d2f542477c7a0c73a59fd9a19c5527e9feb4165e4f711d04d84af", "0x0ffb01eb4752741b05b51b6331c2b1a03bcafad4adbf57fb621f8ffe3eec8e02", "0x14af647ed36be4e16593f8a81335300459721d7dc9ebaeb1c9de2450bc7d2199", "0x011e2a2bf16b4b70d91546fe3e9741518f14e2b6ee75d59640fd62f0606d6c98", "0x1fc2fdde6c5ac257f4052f0120335407e533730d927809879de0d023726fe4f4", "0x049e892045b8d924d757eecef66602987c317ba55b7909b5fbaa4adf56a9a075", "0x018b84c59e8b5bdc9e4c55ae91457be4a66332b5869a9bf4928124e170eaa6c1", "0x263c7be5644463e12efe717157993fd58751cd755ad31a3a75b7f52420208b1d", "0x0cb27cd239ea5d6f988acfb4b7de9a95b0eaab0ad0cec96c9bba0e6a2e459af7", "0x03634831e8b0e73bb4578749a7875f57643914df478aec0c457f62e8d1550027", "0x221ca9a31e8a11788017591eb067b1f87bc35b362e1047386378d85c24d26a4b", "0x08d5dccfd2d2164c0086fbdab916a75527156b82ab4536120ab6548dc99adefa", "0x1ea22f826469f0434f9dfe6749427fd15781564361adeea254850458ad482560", "0x16259979de9e13b79aaac6ab8a02ec0ef26b0b1690e682ecaa548867fd161a27", "0x25616133ee91e772b020d4c4c5953c05a8cea208b0162c82b57f9d07a5b6bcdd", "0x109451ff7ee8fbfd9563b8c2e7df834f72422cdd68f9372759c3a31b514d8704", "0x29e9eb61d0ce33c89954b0530ba55771f3b650a9ca00d0b52b6120da4bd97885", "0x176b236b779aa963de6e283bc06f4d40b2119fdf226bbcc4d56f9337ee940df8", "0x16a033d6c26609b062f9c369b06ebe1edac366e8534a33b62d0ec919855520c3", "0x27cd66a32dd969ba9fdb038201742c8062507ecad62e8947658f466f2acbbbc2", "0x0f90038779e72e988033ffcb1fecab087f302ef61751a6a84946c997e634375d", "0x205f70b96d6e7fed7449ff0f70be698cb5b805c7573d7708e2c68e4bdde851fc", "0x1ba89c27c091cf85f997ba0e3dfbb84ba95d463d1a589826f993bf60d8670061", "0x182ea2d905630567136f83ae671ac63158db9efaae71b5bd3ee0a3de9a9f9eec", "0x06509a885fe116b967ad2cc9999d442106b2f0967bbfff02c849c5272a100481", "0x02283f7d31bc75e8ec3c8f1db4cd383c04c02dafe42a6cc83205c0c1653aa855", "0x17faf24d23b240bc3a43066d218db8a1d8928714641e72b41b74febff037d4ec", "0x0a03a9fc7aa508da326142e62c7d4818f593dfc50e14b8b834ab893431a2a620", "0x071cdad090dd06cea45044f25a6adb52971594f3e161f62f4129e0b72a7a9407", "0x11f176589b8244f55560096a18423ec43451d6e99de165a29775f1e056bae3b4", "0x259f50c13a176f8513da7744fc31afecae0e9a4102a6bbf893178bee26a53d08", "0x268070c17f66e82a1219f144e97ac1a9f6f926d8d606bbe66c2bc7c051ea538a", "0x2feb1ea6480d6caaad0a25a3b660d0163b701931b7f73751d5e86a48f0aef56c", "0x267a8004c0a4a65b4ac33b8658b1b683579ed784647b378772b4b66cc4c189f9", "0x25d67a760f2a17a9435e5ba4d7486bce7a0010f771e909dc38cb40117e401308", "0x1e14c2d3209d43e73f72524efda3960e16c8d16dac6dfbae73c7e75189f20d11", "0x1c12410d09b3364340ac571b40bc1d74a9b42ab1001f9eb89cdc83a32656b448", "0x2797b79c67a48c4e5210e93402f7f739d1e4f443664e6981df1b4232a9916f55", "0x2f6fee780ac5a58cdafb653ff250ac96e02c6713fdc53ee530111131afd2dca3", "0x0096d875d77642579ca91708c5bccef61acd69fc941ce2e126c3ac394ca5b1a3", "0x09c918b1f1284e123af4a4279598dae5c44e5c201475ab083daaa270e43599a0", "0x14c0b0619695bf075a237947bc425adf17c35be75d444e54288a3cdc85b8ed19", "0x26d8f29cc41aac3e0e39e354547c53b30627ec26e4fba33bd8d60979be27cb74", "0x09d9f04394b4b2f5ba5c2e4f83e4f0f63e4c1791ef011148cb2196901dec70cf", "0x1704c408583e92deb63655c36b90cba6a9a2c403261fa2201b4fe6ba10dcdcb0", "0x030702b64d0a76cb0c9e651eb579263718b35cfe62e136472e08616938ff0ec7", "0x19decf83dece35005309897a3eb81d5e25cbce4eb5e2fefec5cf68d90383297f", "0x038c625f54e4d2ec49c3811c37063a1d108c0d5376cf97944ca1074964f7ea95", "0x0cd726d0859a55c8063056d8356ad29b410b1e1dd1ed0e282ae484d6b94c33ea", "0x0e9a0db14a18282d439947ef7412fe1e6aeefcc96b4ac50e7f430d980b47fbd2", "0x1d3b00e67012591f3fe5bddc1eb36574de7a0357a1be28359c1518d07d5cf985", "0x09745ec5d24cf1837696f5a867c3c6129a0d44c037d96612e99b82eef3dbd87c", "0x2dd5e2ea41588db7b01cc611528850114adfc8513b37b17fb2a46f2b09bf6b1b", "0x0b3dad731b91ed4c2aeeb10410c51a6e925360cbcab20c3ddecf83dbaa7e4c97", "0x049998b294f8aebbbf2fbbec695e4d2d56a9904ee051c84b0ee1fec9798cfb42"], + ["0x1373c771cdf15121a224f330d84b6688ef9fe0038a3bc26a28e3196578a0000d", "0x29f9fbda3c999836017f76e121af3aca5ce78bb48fa867a6a95e5b9db387533a", "0x1c7eb5116a20075c169b786d9dc86a24ee7a2525b565bbc262209a8cda490528", "0x21a549eb554f0f859f61d68f1b6bbe9aa3449a6238546bbdf2a1c308c9cc52e6", "0x0b53fff701347d1b9df98b46175800e0d3250ac6d4a1afa71a349ed195873508", "0x02129ac4742415c020db2473999b34dfdbabba3cad4713718f95e6346e1583b7", "0x01d28f305e8b0ec88da37c8251b0c8d230b68bea9401a15f5124d64c5454bc29", "0x1ed301e02e3fc930999fce6d3744c23596700c03720705939d61cee451faff93", "0x2edb1832966e34eaeee0903858afedb13dbba9f7c802c83ee628530d0e26ae1b", "0x123daaddc930c65fc67bc77ca8bf4123fe81fbd0501e8f89ac31a698756d87d9", "0x2bcc36362c90210acf67d5fe21d53104e9d5478d057141d3b17259fed8e4a8fc", "0x1fa928cab5938207e898e61d99c7d616269144f7900815b17095f7ff76e3c9d5", "0x29c2f1cfa72a0fb8f53a631e84cfdf5cc18fb426c254f5a905fd3e831fc7c837", "0x17a732ad13f1b6a1aff42664c390b9017c418210273c7d048bf300aa7be9c65e", "0x0c18c6e773ea7eb43b98cac66722de9d135484c6cfa084c2a512ea1977a60268", "0x1954c5c238d8a30c9f1ba4fb963e091acacbc3ed7b498dcf6600f530b6545e49", "0x2591ab77813f34d8a0e0b7b0caacd6ef179dd314597cfde78b74869d74dad600", "0x179db9fb8aab4619e67a6a8667c7b4b32f40ed848d8e33b756c9a794b5932fec", "0x305d014214b4107c11fd83870458738e04fb8dc4e747077c0e462f51d1c59575", "0x298723d70694578fe291635898762bcebca9ac4563b12b90e1fef4f76f9b7bbf", "0x02b336e9b38b504c412a683309ae8024d0802a45d06e649a5e53719aab29a913", "0x08687e699b527b1341f9ab7f17113d9e0eca0443251ef35f0a905704f155d339", "0x0a5ff9f7d45b3ca9b79b18d79db4307ee7c4ac4ddea9a8da1a36ab3be057c9bd", "0x20e44747601319223535f4566cdc86ca54324c5657265353add7dbf4f2504656", "0x0254dc31e3afd304e85c9ef8fabc1a1cd1a4c7b9bc860ce9ce436c33a202a96d", "0x11cd6492dc520c57dc3e55e33f8a387cbc1eda3a1490b6a4bcebd94e0742cbf0", "0x2f98b10265a30475bb0348d4a787cfb6603119a1a4fe15c36dc986cb4f8c7cf1", "0x153d814e4e55ad782bccef998c974250c073465ef7077550246f69c58ba989fa", "0x04db11a9ea014aed2ed08e46c06306e87131744d65d289e59964f930d13b9ed6", "0x0e9a9a6dee9339f5de7135ca3222fd2230c3f3f3e01eedd3633e606aa0b1a1dd", "0x0e6d8e464bfcdb8f9ee60fb1f2f33079911e7a073856faee78398811cb976757", "0x0237fe2151186437a1cf1901106ae25aac16e9846f9d41fd68796d7a28ed728a", "0x1e3d3d1eea8b7615a9897ef86229776cbda1d848aa5a680935825e73f1f5aa84", "0x09724144c7a4aec0ddcbba9f9a9e9ec9bcdf688ca3f5870f1ee6e174179fb440", "0x11139987e1147467d927db25eec88f0c1e0232e3486cd9a014be3fc8cf066129", "0x1524e5becef72c2697e34c8055ec81974af04912d7ca1df83e65a080ea96269d", "0x064d1299b11b1a6bb50b3e5ac7592a054fd72380afa4c092ce28ec8c31e80c99", "0x12d9fbd27be24eb620b7743cfc5296567cb4804091a1803dd977788a9f588e4c", "0x088d226e69e1b273eba31d4da8576085cc0fd0daae1546bef30079f84b651bc3", "0x15126de187213ebb40dce5da1ab3adc58a3139920c19497c3f47119baa50670f", "0x1169c1fe739bc528eac16a5263d22dee4a66a9961f01eef51684ef792126859d", "0x2a7006c683094f6f84d122ad5774ad2f0c9fa80b6c963e2fa3a1ead3d74f3aaa", "0x2607c22ca9aefe8cdea30fff05b05c4fec7ed8e9302d0f950cd9405ae94bb258", "0x24530b086f441e3834f36c2b11ebc0a809dbdfdd8317a384465931c1c58c2638", "0x06354e02d8c4de97a811481e390c26e5c93fc29a2a1a84824ace50467c9aa652", "0x1f6fbab3e2ea2791c94f5ff43ca128943640692151b295dcf42cac0d8ab0757b", "0x1747ca45b7282ef09928f7649f5cc8337537e2834e6c8905c1ae69008df70bfd", "0x03efd4b9b4d41974e36884e3b1055a705ab4ec3fb1c8e76f82e035991200a633", "0x2d9cd189d47b0b1b32c9a2412db6a59b1b475dc91ebd2d685c96b349c220b4b6", "0x01c9982650aacd1a449ed04605bd65fd75ce393d424c9751814fd03541b4756b", "0x243ffeaa82f3c038481e84b728b459eb221359851ae226c1c6d6a7ba1b1ffdb4", "0x0650daafd003bed0bed22bada31bea709491a83b55caff300339885481dc65e8", "0x16d20c619674228b767fc625aac650baae2d0cd15c1f9d0164547082b3099df9", "0x05ee8d5d661d39f15be923fa2944ef2b29da3f4831eb1e4f2f1c1230cf5d149b", "0x23ebc8fc40feec52402e18f881eacebfe441de256273ffe551eee0ed7e4dad73", "0x292bb59e7a6c70116ad7b7e11951c3b8b6b1b130f35bc6c428a9533c003a70e8", "0x133d42d9f83d054db43e4354d1bd7ec3a89b8cf94703fdc12950d9f3c21a63ea", "0x1fd6bed0d347a88e46fcb42f3397aeb0cf07a8e71467e6110b94c90f9323745e", "0x023b091a0c1f0822c8156747a907c8a79b8c1fcab4a3420622511c867f79d776", "0x075fc73bcb6ea2c158e721a9aa6c3f1c4d139b5cf1b752c87d96f44420512eef", "0x017e3bcba0b2d22d27cdabbcb360c8020e56c01c079cb550e3f169fb2a9a451b", "0x194299f0fb7951a80ace994a3ea3123e6e0cb72d5c46fee296ea6f8e73ad1882", "0x06f0e522924a4cf25d9011d477a2746c77e8cc77150b87b42c8c118f1473b514", "0x0cc91c18c5fee1b579da0900f04e5a6c36d65f0fc977993203d4b311cbf5d0ef", "0x1abd94c2a5b28e661310e3315b67adbf563fdb06926b6dc4e4d93d04165ed309", "0x24142c9001a7bfff363f3f67f4a2bd128efb72e846e3ba10344ffae655e56f2e", "0x1931b9d4523cb3f78bfbcf6b1dde68c46012aa747dcd7a3af382ed781252e478", "0x2ce3bd1161a012a572836e97ea8f0694f93c952d11fd11a8e8f9a49dff9df85e", "0x15a09fa373041c239e8149657c98b4f3aa30d192c87c03cce47a2b2453d5a48c", "0x0b1dc38f74a71b7d909e5ce7fe5601768738417a5786898da316f528998af665", "0x13ea22f9316bb5694d69024fee2cb95ee643c545496df0bd1c25490e34d0f1f6", "0x1ffe58bd14b12b9fafdc365e7081a395a9614e022f7f4d7bc7dfc974b0aad71d", "0x11bab1f186cda03c01e85dfedd40bc5d406e24ca58b305a6257b7c772bce2447", "0x14007eb2d1440b7b8e0936c79672051ae6f5ca9fd4055b417f00c9632abe30ec", "0x1037f0193d40f682ed9623a772de679f0431873e8e0b5004a1f242ac963fee72", "0x20b18be760e87d7c6149b810fe496abf77a0f840ee57ebcfe1cf77236338fabd", "0x1de835e6623f426711276dde7a2a1c20a61b910bf6fdcd33b34368cf96e95a2d", "0x211c38050b07c4a747c5dc44939ce1f76b0820c4b5f07a47e8b10b05e7a99d4f", "0x0372fc2cd832015e119c2a12d3622fd7212a4887e4bd1275c205fae2e17f452e", "0x01438dee77b0825cbef6b0f412e9a7277d4e5dc161ce9816f020ae4d1410d0be", "0x07f2ece16c12c9757aaa60953dedd709c513f6f8337e22968a65cd50b0d99211", "0x0c57a69d09575d8e1f525e012d73729bc89649b5bc4260d73e4324848452510f", "0x1c8d0a9db77f14f835309f2d3c6821b9921a366468a0d15efb308f57ce658513", "0x169da093e7a5b39bf088277072d4fd58d80215b69ca262cc2d12a5eb30c00b8e", "0x2f3034ab20af0fd83ac60b0236696866f8250bf2d765b10d6da2e3ef1e2d787b", "0x0e31b4fa627dd0e5f2dacaf105865a77781543620f3eb28ff7dc102656583073", "0x2a9007126f67e1631d29512f433a6a0bcb8c95a36be164be5fa86be9feb8a594", "0x080af40215b6078be84fb47acd79b59eccefe8a92b6a6033e772c22183bdc0d7", "0x0de8a234d208861ebb05ab3812e5c4fdd39e7ada9047c926efb88e1cbf2ebb52", "0x22aaf24c0f1e3f941606a527376ddff91cc6b0adc062efe641f96e3005af3659", "0x1f4f5b7709cf584bf0704861e94234cd8909851e3b212c64a0b3051ffaa2eb66", "0x1296d46427eb2e38816a5e817133565d4f6ded4eb72b5d0ab559bd57667aa2f1", "0x03fa86767c1fa2d7b4eb45b4a255b1298c55d045c69627f5d8adeb9683a129be", "0x08022805abe02bad75306d226478e49d25facfbcaff649364352d4a88d928f38", "0x1d58b33a2a9638ba180cd36029308a2e8be7ed273441d5d280456b2d3b8d8a0a", "0x1f8cae7359c800f307a625b66ff2154c6c4364e85ca8e01911a634aa4ad657a7", "0x039ca66f2fd7f80c17171a4ed8c82ae3c3bf0462d1451a9f5a58748958717bf2", "0x074f7e13e74f2b7b316a3839956f4bf2541eaf2497653b6db1a9335da6c882dc", "0x1f63cf1148c0efa656d5af850cd02a0d879ad7886cfcafe1ec55fe6bf4ad5cb0", "0x1d9bf6ebc0464b9cb47583494a27b45763d7a62296ecca17efbea97356a73e23", "0x076492874603b021892e5c2a03c706979be557fd4ee2e040792da16e28bc8ac6", "0x07012338c5c626e267f76d428388940b900e0085c785166d27b7ec8960825238", "0x09c29059e2013d0ce2cce0b24e3946765a95f040526c3c9224d2801a1bd4ff81", "0x1f2de0350981ab374c9ba7ea1a69d81b287c2c9fad9095205ab21582ba0ea641", "0x0c52bab86e259a3bd8c061197028873b801b4c56ea8036ff95a67f434f3b7425", "0x2f262e06178670c4ff861f670c7b51ef9e629213a6422032dfcb26760426a3e5", "0x2af6aa2335400114453435e97010dbe70786a691a5d972ea211af12d4ce384c2", "0x18cad65567f0322fd6f0626cb5caf567a46faa122d30c37380b54b6b5d01ab3e", "0x145667e19067dddbd4269db6ca76d0c0d7e57f1945eea251f8acad86e849858e", "0x2ebaa7e10194cd2957a13d1a358fc93ce54d8bd3dbed06e215b2bf2623b21847", "0x28b85b95982ebc76c4762654f932db031ffd5376a1299b45ba805c4b4e0754d0", "0x17cb0c473841ed2eb1f1a1ddf021b74f73f34172e065b24c9684dd3cffc340a5", "0x24f46ecb8583ca97c5b018736d227fde7c39d1978ca63c97e39ea06588db07b0", "0x274b5c409ea9809bf7f04a7cb5ee4d322d1a95a86c1d0961b15d4a24a7185dec", "0x2cba8960d543fd9846377348ea55b7d042b3348524d76101836646627ded4477", "0x27f02e416dd70b44907f97d7ecb945cebbab1d4dc73c8a18c00cfb1fb2469988", "0x2ab21865691229fa440b6528ad7c39c41693b1b939ec09dbeedf26f37724a151", "0x2910da916e438c04837ce799b81b0e9792c1ead008d92fcf9ca867b165f5e275", "0x0f03ce98366111de12ccbe5a1121c9f8309519a7e52300e397d9d90368207afa", "0x236b0371e7ce97213d8aeb6683f02f44044a1fedaca3d151edd3121a44fa19e1", "0x2c50cab6a867b1e801a36ffbcee521b83afbc580be1897dc4c5b6cd5df3b350f", "0x0cbf8c8dccd837d1dbac09151e4ee378f93e8548d923d8a49e6df81b9c3f277c", "0x1d18a9fb001245c1a6a17f7cd24ed820b0dbede9ef479830d0ae483346e54be4", "0x1476bb1c30603f7f94493d2e016bee63283b2a7efd999d59090c434c88837ed3", "0x24d565fb578dd252f56a7a0d5d8d4d1c5d727d5234ac4bd9a9600455ccb5ad58", "0x0c68e7e9567deab8e8b95051a7788443438e0f5fbe0d7de436fa3cfad596369e", "0x1ce5b25a539d3e1c0c5dcd1ebd0f4ee716840d44c3ae109a669eacddc4a35611", "0x2d3210e66407f6c343eef28fbb7bae59f626db73bec5d9ff06ba9d43ba84e208", "0x118ab3427747ef1a45a609cdf7e7102afae6d411392de254d3b72f1d450ad2f9", "0x0b45c70d2856c7e5b3fd6f8f0fde1a7fcb14a2acce4fdddfe50b39fb97423b5d", "0x2ce7c2bad5608153c5d1e40ee17cc33ef1783d9b1cf0153e4a2918894faa46b3", "0x0854bd46fef6c2e6480b3b0998215f55f4e090a3e99e03a5a64742f98dce5af8", "0x15c77e7600df711f58f2f0fa88b7d435770104a196076b74e6f5d7a96c8e693d", "0x2a0a3ee38edfda0761bb9b3017924d09309478b167a6099e54d2f5a221724ed8", "0x0e8c14fd43b9ace2b7e98e1ac65659cd37f8de94198aee42f5be6659765a4ad9", "0x163276e836c4ee6ab9466613c61fc6924faed9cfdc0a458bc95b59ff381e21e4", "0x23d1584a5cb0b74c00071c687cddacb4a632b104de4159c0e00c5352d078ccfd", "0x15685bc903a1c4c031ce016c093860a2ae2aefabfa47d1f290eb5a628522f5a0", "0x1b33f50e90e90b5dcacb1a158641d63311972457efd9485834b83f0fa04260a5", "0x28380c55cd667894c638647e6aa14b857d3f31c0315ab315d6a9457304f21dc1", "0x29d108541f3b451943eacf723acc6886aab18c8e4485808f4b1e55a73cda6246", "0x1d4c2cba59d5551bc3fe976ae5ac09e5b728d305bbda193afc259c99932f95f0", "0x16a8d69970561003650337aabe5e4e5ddfa4b71c1b9db8cc7b82780359c70d33", "0x289e50c1f0b0bddedc98b7e8a35be62f14f56dd5d7345bfa6ad0d2e43bf92e43", "0x0a41765a5352ecbe0b327ca7827a9fc6495e7b6c142dffca003f58383c6dff65", "0x24c0d42378a0c8a613c0402ede6de9bd3527ef2b82ceea6006e7f71bf77666d4", "0x277cae5057d5b5ace72c47e60cc4b8e113ed706b5d91ea4fb9b13fd19fa4d47b", "0x0a303567cbf94968090438a23e2fd2ccb8a7f71622bffdc1c1684e8958c3765d", "0x1f7ed8c267a29a69d9450dc74afaf768a884e42c37e0e6fb4d4385cb027ab949", "0x086c4b8301656b6acb8a735019556a278a60313040f236e815fd22e8473bbc65", "0x27b63fbc29594760dbffef8d30fef49afefddf1504bd487fd6282d9e3d6e3337", "0x00b9c0a45621716f9849af8a3c9075b7ab839c282881ede8b0e5a9e723766d70", "0x1b5ba2fbced922c3796d57b4962fd253f5ab6e2b91355d2c0a8d226040652395", "0x2e1ad57ebdf932603f51bb1ddab204dc026e13dc4986791f54c4030cac6f1938", "0x2f865e1df1169a35771f617046485f8fb17afde3b2b97d1eafafbd1862ac6e16", "0x0062ace5be380c5e4361b209b80befdcad052146b869d50dd58085ea65d9d141", "0x2dbcbb1b4ea08e3769844bed522b92ee01fecd5b3f2379c24b45d59842536337", "0x1ce3d90034dfda11e9bf7d92b65f810483c48b26cca092747b4ceaf07c7ba847", "0x086583a59497474b0d1eb0c3cec4f1df596aef3db638fee1895d3f5a5845252c", "0x2b984d5c91b7b320f7f297bddd68789ef6ca88cfed3957d2c5e8a6fc0e78d76c", "0x08edeaf9ddcd25a730751b32cd43c630da831101eb310399356e4b52df11fc28", "0x28df39cc7f96672569cf86ee373623da9f1c58ff1fd66d930cc234a7e959c41f", "0x15af6a84c6b142eacc58137fb371799bf3aff1780455c32d8d3598cfb91b24df", "0x19cf0dca22781a9bd56173491ebebd18ec8446d6717563bd3a80cc52a1be6961", "0x04e0e0b52923bff8b67b1210f23a11277337996ce50180eba97775618b003558", "0x15ab0a5fda2b5191cc2bd0485a30c2e75b540bc397c3436d2e64b6a2da9ac49e", "0x018e83f7a6bbf457fde7b8ba4fc53ad4810ee071941969f87b62b6c6ea8f55ef", "0x171b0539cf1d6e8519789fbeb31292b6be60c3f93e2b45309ab559a854e63355", "0x2ea76a14e0d177f355f681c822de2b37142ae6e93712492265d2992473da1021", "0x144292627b643b5180c710eba6d74a076cda5d3ff836576e983da9b7d93564b3", "0x07ad2bf37ce1ef4a8fac5b44305f1a5d2127d8c6ff173ec42f0e421ea53f7c1c", "0x055514dc9b01480ae57ba24fd5dd12f229bb5597edcffca145156af3324b0d84", "0x0b05a45bb9377e1597507fde0dbbfa2d642f6c358e233ecb8ed7e575ec6a34a5", "0x198b369f024a0561af9ad7a0cf7ac107042b42f9301bafe2e1b4c2ad9e46fa86", "0x253f82b21addaa86724677bad4a4c464ac5ec75c78755fbec6f46d9ef73c2f04", "0x0ef256e9d5e9e3da1f56d7d2115fdf10ed7674e3cecbcc9cdbcb46c7cfbc7429", "0x2d8926570b080260164e6b66afafbad3d925a464e995d7a1d02f90c7264f7b38", "0x19ce4c36c51210787f71cbb080cc340f2fb732cc191618d525400b2fdc516896", "0x059df907c9fe5249d484183f2e89f102e1f9978585c88b57b9a87e8d8cdfc6cb", "0x2afc27a41832e0bd3bd8e947284d9acd1ac7050295b388b6b5cc3179a842f803", "0x06e960a5b2385417429dfa89cd14d7787c0778e4c5421dba2eba694b0854a21b", "0x1e8b790ca2d081624486acfd613245efd710e7a7a908a233ec5afe1148476098", "0x2f68d78df4e08b23c96fa9597ab7ba5a1785329a370053300d792a0421cf3ae9", "0x0a2e82f0c2f9e345689b2f2da2108d018cce3084ee85dc83d57937facf3e56c3", "0x108b2af65d8a2b8ef81434d73646cff6c25fe8ebb88bb768dc435caa19143111", "0x0c2f90eb77fb2855d39b745a85d3c960c3d0c1ee740d8777971c936ddce26601", "0x03daddc5903de3d5302c7a07d4c546039fa84c3da6cf4eac9c2b9cbc94db005c", "0x010f4d48188805d3126738d24976ef4c80596b3c6380effb23cb3b3eac954134", "0x06701317708659ce74515f62f9128ea9a1cff2796e18eb9eafe9c2ec4f9e4280", "0x2dd0349f0f0ef52d77602037a211e5c565e0091e01072ef08630056d907fc6d9", "0x1b15957d8c8774076df16d49d788b11a5ad4690cbd8022437f402a6b25eb5436", "0x02a92a1f50c4658b687f2b6c8afb5323c9b8e3dd17fdcd5c40e17db738a27592", "0x0d4cb316f072fc8e2463a4a42d168d6dc04e0b137fa4b57216d1f2ba5e64ad56", "0x1cf0f9bf90e207f3a0aa5fc108538c641c40e0952c6f66e6024fadbd2248e16c", "0x0b81c03e6806a49a8a5edfc3db4bf78fd4beb80674d0c88dddeef543d3600ae8", "0x1dbd32d049764d6ab6f677b89c408f9f4d3f29b5a18148cc8d5740e48ecc9d35", "0x16d52bbf838448b0e44c2bf05229c3f741b966790438a2997be9cc660103ad90", "0x2c8ef880d5788e5359b97d1be554305e0cf5bd55c293991281bfe5401b9e35de", "0x1f007ef167c9b99e948007dd8060857192b9dc992127c235aec46a2b323f2f11", "0x0cd33683ec08207c56a80210d9929731d2035264394841b2b6f65c61519cd842", "0x0af1b0f70f93bb8f5377db6517c4482ac93ddfaf6051e68fe739f161b4380fd9", "0x24d03d522118e544c04d49d38affea789e49d2eb2fddd171613e69f4eb07bb40", "0x2f1f0e4bf9adcd2a4f1aee5cef4c2d3f27c9b4824796953025027a37942428eb", "0x248a412f287cd3b3448930a1039ab32281958f99a2eec0c2f1a52a65b3e589b6", "0x21e374b45da55c1d3d89c6d2173e11469992b81beb2d3d4cd4d16038dcbab231", "0x1c2f85c42f6a331092ca033b4ae06ab667cd8abef24b5458eb10e53346694a65", "0x29eb555ddd4c74ab9031084127bfc25036f177be8ed62d32ed35973d3de94e76", "0x07d30101df711f25364a955a7002fe48f47ec0a7c0acd54ba0cb551c912ec6e3", "0x2afaedc7a657941c9e77e728f202d568e4ad1230f91d369a961b4dcd4e15a36f", "0x2daf426a65d37cc81125c3d1cca527cb29e9451be0a5acb7e4fc81b2afae5a83", "0x0c774e81279520eeca70f8a7b3d7799bdee8371a9fcf902d43533e649c7bf48d", "0x0308212a0a56cac99561515c83f01dc3684be8a37a25197b467acdd367ee030b", "0x20fa9447e92e4f68025e1bec51f115fb653235aba484fa0dab9cac4aa744d295", "0x2f4f647ef450cdc4b3954ad14c7cb1c3e08d140549bc36c82f739293ce8b6245", "0x25a6d02422b9e00b1ca5e1156b87b4cdda56cbbb341f82b4a63ecd41afc79bd8", "0x0565834c7cf03c8e542f1c3288006ba9f35c56c95470bb86b9668d0063d095cc", "0x24a6f88d5d7090b24a151c68aede9f347fedffaa584aa431b2d0e90da3cd4fbd", "0x014b0d44ddf5cea576cb82d399c8e4a53e78225b646d25c97b504e63dba4ccea", "0x251d320b7603c1c86b6102493219cb1f737e4ff9b84cef7050e37456e8f03acf", "0x238c2bec6cfad388d477c55c0ddeab2d3268155f3363bcdefd3cd8ae5f63766b", "0x1337d778bf0f0bc001ad9dbf9999379cc08de0ed567568448ca3c0c3555da9da", "0x269ae35f7eb384ad1965b82f8c9e8b4f65d3cecfd767ed4408a025ac7ba97448", "0x2b01d8797cfb9616e3471921b610dc78c64ae9ab2fe48701baee5e7853ea1891", "0x1acc5f89dfc24a03458156ff7b156b22f4270746900d71368b1e8afe9a684cd2", "0x0a66d6f919f7dce7144ec8f66cece8dbedc62327e0407abdc7bd71060f8d5b78", "0x17978e79a55cc077d4bc92b38ee5d357ab4a6c62146b2a84acd9af50954e8ca8", "0x11cbbbe66bb4d957813408009843b2c96cd7b02fd4b449db1895c833a64ad04f", "0x0bc7843529e13dbe304210922ae9515a2f8148eaf5e83bd0686112dc646fc93a", "0x23d644fab01d806361de665c8bc6e972d9658d29a35e96208bf53f8fb4ca770c", "0x048371c6200b923b1a0ad3f008310dbc350e1e3c470d24d3ad23eb41e3d93b3c", "0x21207b1d47a4bac52ba3ae9078c265e5cd3b11a126547f2144e501c18a656f66", "0x1ab86eda61a6bc9606e65f455c3c48d4136b03d8cdce695e750c257104564704", "0x0471b41c6418b6afadf0c9517369b01f62ba78d561941c4beaa1de9827676444", "0x1f67ab3d71646c039ce09ee72320b2ad755ffbd7187eb43d5ae0850c923ce6fc", "0x1d78da55a4c0c3fd78ef34b4316eddd7f36d5d8db6551bcdbc836ba7197daff9", "0x14b37257c1f8852aed448036afe59b3a12159b89afa5e2ecb35063aa91c3b791", "0x00b904b1e068cb7712bb63b1721dbf5adf5b6717e6b0deaefff1f2a988b3a5a1", "0x2fc100ecb79693aea91c6118b70209fb445c5feae4f6d1c5886018a0efe4a8d0", "0x0a9d77bc8f430233b59f6737b9c0197aece2939a3b63c5ac24cad31bcc70074b", "0x1f4bdc685882ae1149affc74fa1e4ca614cd9499d75027a6ca7200000a539b9c", "0x0dd11b1befe293110cc4f6b5c0de6fae3a67edac4e84b238facb8a445fb73fd3", "0x21012864a44b6479d44bdb1e2e97764067df69e076d1e1c310de929bcc1ebbb5", "0x142cea93e5949c06c37dac88b664ed36a8bfe1abccb4b3145d0087410a5cf8fe", "0x25d074e31dd093d43fa3a3a6b5c044177d43ce7739acb9e5818ae8339e9335e3", "0x152368e8dd72e9bd3f00fa47ad0197096599bb5ba3f63401ae9b3689f5afb943", "0x224450a6f24dd8427d8d6f9dd985630313eca57d57479ec98ed3eebe3a23e50d", "0x08ee8bed1a5338113308a32cf4b8f0a42b9c122cb8ea937cdc1e31878554c81b", "0x068471f745758670cada7f230140e09acb0acfc237cf7f31e063553bab156dd5", "0x17dceed9a861ada2970318ff8b9dc13074a1113f3076ed7ddee67845662d5594", "0x21c951b2849f51336da12e1930cbb2cd407c5ca0bdf9cf6e2ee88a8e6cf36e1c", "0x0aeb15bdd33d09c780eb1ab6848dcbc1a18a5c6a1f250cee87cf506d46c36e36", "0x037e66e0bf7b7c7f7b00bb5c067215562220044c94bf788c40b4806fe86a08eb", "0x2705d297db4ab693a65d4cc73ed80ceac3a6e10d57123701a52769095647bb00", "0x0df821b1a387e78f8e2388cae0294e88d0c2dff811425a940a60e0285a71b3c3", "0x2959ffca94642766a46cd8340db08ec9ada915d23540688ad1f25e34a9ae3afe", "0x0e86b8655306bbde01748175b56e66ca36410f758e1bc02473e4255d88120a43", "0x08f94dc12076e1bd3900705e880245a6149ed38f87baffda0a6f4b14264b5fcf", "0x2968e4762ea9e6ee5013d96babb250d95f300fd80d86d22cc095de9514590506", "0x1556c2665a0e74cc056fd454a85a3fbecb57a23a879dc1cc95b98d9bc497018e", "0x0ce86a48c05d429be480b9cbcc220f3a29c6ec865bed10a07835c6fe6bee34e1", "0x21e6b5e9a5a5c57156dfb8cf5a8785d2117599c247af6feb577bb44e7524534e", "0x0444c6559f15a5d6f3781bc392e88e8ac582e487d60de12cdbc357c9623e4ac4", "0x17cdb083db2171c7621198f51b7d189117ab80e4aaab817656342e1b0b3dc1f4", "0x0c4fcd32fbbbcfb27be41a9492ec55425969c9142f365351c7d23478fd68b3f4", "0x037a47a18dea6fc765e6ce6ce7bd59e3d1103ab69cbf9206d1c2ff4ec0389576", "0x2c14bab17a78ba001537e37a630357abe06ecbdbd2af7424ce1225d4a4414b5a", "0x10bd8cfbacd505ffd57a2bfaa757ad3e45f63ef37e67dd541ef07e957984e7f9", "0x0f2a0b6a66486b55fd8273a453ef622f4c1d4e3d975c34d538cbd8440a3ce9c8", "0x297b4eb48434dc5342e4c9a262c200331480a02109163863805bb70fc7a92614", "0x22cd3cc552b8310954b62b62d4f7a91864e6b6cf79f55f244d384804946a77b4", "0x05cf496eadc8ea0ccb36502f443c99b347bf7023f2d7fbce512e1c58045fbb2a", "0x1e0ae8b082d3726190a6878f4b8889e0b6297d27de3f183aa9a9f2cb2abb90d4", "0x2b282ffef89e1c3a90c359bc7c80133b9f634215c30c1db82a095012793c7c1b", "0x13bae7e838c638a41a9961ab81520f408c9921070d9a02a7fe5bfd1da1dadc4c", "0x0cdc320eead70bf0db57965b29f9cca28826f6c44d824f7f122e430aa4e746cd", "0x1b94ed891e3a73e1bcd6b7a9fa336b485a5a83e52d5db08b704afd8d48136657", "0x2e8d765a70fd39533f1c456db12b420cac0d7b086bf19596c60cd6406b076c67", "0x2f69220fd9209bb41b0ef942bfeb31137088ff9a338ed283de9ec3a8850e96be", "0x1506e9fdec14a9dc03eb159d011f0baba652db364b0020f3485da40ef8079ebf", "0x2e43093a060a595dc13213ae7211c041b29d39401dbbd4e7fcb0341914492a08", "0x17426eb02415f1d682735382450efc76a05c6a0218671ec4fa3ef2d03980db21", "0x22a8a8f47529433cb471acbbceda9b6dd4e9e57121745b86577da8d106171e3d", "0x10d066af04e7708e512a382310bd9a10cbad751a721c660ed0f807f1693d6826", "0x1322cabd21b8f9826da84816f3599f20a3324bf47b44abeca3d8e6a26bf64c8f", "0x0e9033298b7fba81069ad708a401ccaca713c122a7907b9d2eec39ec1e5834d3", "0x277a069d3fc5701249012a0fc2d96d70c58b8f0bb45a1d3932051d4541c9be8b", "0x2b6a4d2b44646516e0511d03595b94f5f31b538c8445562a5f787cb7916238de", "0x1e9b7e897f636c286ac7592181135b3061cf02de5eb4c3344f2b3246f17459d9", "0x089d5576bf0677940ec8531e33761650a38edae669b73ee5f704c018310458bd", "0x11d91cb6a7c91f3a3778a457bfbcba977b28eb08b850e47260dbb3d205ada63e", "0x079ebc334aa377cdaf2bb057017b776ad150adeb27ad95031c1e6d6e4585b9a1", "0x0eeceb66fbafe2552212467fbd7ee2c535244642c87c54efaed43be19344eefa", "0x1189bb18157591e582637275139eff1ff180217439babf0369a7d6afda53af00", "0x0a104e1bc5aef5ba3362773b15d152a34bb66fcad5169061e4c74f42f8082ed4", "0x12aeabc55f0a0a7394844072432e9f1095a79e2a7b8765c0e7f93721f5eb8feb", "0x2d5fa7e448eba0f3f75b82d155d2bfb467c11361536d61cfac1e9eaebf9f9960", "0x11bc382ad6f3998ae12761764e273e8e57de5244008964ddc1ce7d887b3ea15d", "0x2f9de52e1164d578244301dc0f52c09dcfb7b12499ad768a4c91af37f1fe999f", "0x24a160dd3b3f19071f231118426515e7f75fd3fd4d98479d855e88cc40f2a146", "0x2562dab01972dcd2307417f8356cb096e5a52b39898d7700c9082fe661ab5aa7", "0x0c71fc8544d8bfe1eb57eb8b19344825f2800e7728874c0d4aeee09d37fc8018", "0x1c38cee709ea57a5433ef05d4f3d8fe85d27595ab5f3bd5b1e818a76b17edc8b", "0x1602213816c60cc200e8b2aee509da4de8952ca6f775f6951aa176a6cc78d10a", "0x09a046c67b9802554d315821da1c3d1338311acaa29182226455685b3a6a1a04", "0x0a2ac73a3b40f2e8d93b888e15ad9695a07d56f02d172fafdc326e99ed94475f", "0x26497f1cb3ed83f61c32795f5460e2320a0b056117fe2d4868bfcb691acc9d23", "0x1b1a886b957b5b7af3608333c34da124c68e137697ee082e21d6e9f534adda3e", "0x1a1cec97b3e63763610f3fee9e5f884313d66f3fda193985ffffa26388a8b536", "0x24eb5865c2393f7e9d6da7a0460f9fe0a1112c41137007f71ffc53e90fd2cd5e", "0x05ad739f4ae7385d18ae961990fdb8ed3e808de0108cae743d7995a23239bfed", "0x20ea4df643c31b3aec0c8c2cb444ffec0f2351841827a82103a36fef81c2b5a3", "0x07e426d7cfb8d0ed8f150d76e11c42bd7d0d0be868f7cc80740d14d6b6d985e3", "0x0c284170139a3d32feb893e2e393be22fc5712b4b134e117c9cbf91c06c7a156", "0x198e892e0b6e96942779fc23ac86ed3eaf5c68c79f8f881338ddfb381bcab3ec", "0x04f7274b4c460cc0d5d78d6391700ab706b188d6a4cbcbdcc6ca631c617a4146", "0x257a207c9af017f50c24c8286e99a006f5a9a066997fea4d63cbc4479d153cfe", "0x2f9195e87792cede31f827dd408160697c174a84a9cdd07cd69b4443a45f0c81", "0x02c32457f1c8a48108f1c16491e8da1e74ae1fb598642acebb76d0210d0af7df", "0x0d16062ea9a5b5184ae022c568e887e2fd31c2d2f1320acd915b84df1cd77c3d", "0x273821b59fc23f585f423e16c5d9571e78b428e446adaae789c159866c15a9aa", "0x28d58138ca8e1e1f410146ec8401796f7cabf49d41e59f4b8ae942dc6fe0ac32", "0x0cbbab4a22963ed50150ae37e8ae9cc139355f83de4f38f01179735633ae3f85", "0x2f29b839fb5759272d1519a17df03310eb9afab12540693b781c9397c0da489c", "0x212505f1db73adadfdea6353b38b8574fd52de8ab3cbe3310f5262a9496a575e", "0x0511717ed104198d0b67387b576b020b6b645d94f205f7005ebb04161ea0959c", "0x2cd17a3fdff1b2ee153b65554fc06a4edab7cb2d870c1cdac0e9651c21593d80", "0x2421eced65e40f5bd7b7ce147ab0845888853ce9d9e90242ef0ecbe4df94f4a9", "0x2b7bb1c13a605e06226271b1567d8070576b71fbcfbe0e8a0ce6ed9a60be4b60", "0x20de93b09b10f6f40d2960f3ae7f703d4aff7d4e2a309481635693fc1e7b57cb", "0x15f39da6947d0700036090111b9463cd322712f5fc0db38a8098abd4d3fded43", "0x055a10c5b2e1c3d3ac97853d37acc7ac3201c3f69ba770c90736e59910299486", "0x0f86f85857f2f3bfa5fa407678359c5e4bd7f68e4f8e4af22314df5ea170cb05", "0x2d57680dee104eb6887c77345eca7a8c131022a4471f88c54d4db9bf7a18f475", "0x01d25e7170e6b92b2bbcefed98f7ccf94c20b97a546408d962e48f6adfdeed55", "0x11dde898034df5d0a50a1067fe3a5b6e9d546b4268043f5998befca980271e07", "0x0d96e451da1d5351d3848643cd82ac82a91d297dba610e196992d08045efc565", "0x1ec50e2f05af8bd16955612b7dd0a22ae046db692a340f0b814b472cebefc7f9", "0x12e7a565e645e185f7c9e00f06ade71736d990052e72c97540d79391224c82a5", "0x277d5ebf33d14750cec8a5df484fcdb392db7981559aa350e2ba70b3565632ae", "0x227a8c5c6b1f1a259d5fceb57d7dc834257317a8c1b94209c3fb86fd94846a89", "0x2bcc414a720c85a42f6ed14bf7d1e2ca7d3aa5f7d61c4ff5d1bd1eedcec09f7f", "0x1f7864a729e70f77cc1b5cd86c193cbaa9410070863d5da37742d665e2de3188", "0x2add533a1c14b4ad2a4ecd780397391ac9d9ac8068584c3ae69f56a9e4d72ebe", "0x16198d9581405334a13e109b04d9d1f5638a7df278300e56059508f6ef65460d", "0x0a060a2599eb696b43d275c43eab0b3b04b461cc4c436cfe8b1748d65d143379", "0x302e7b6c0abbf4f44b1d799791ae0cc857007b28a3748798965cb4b281822b3a", "0x2b8971547ff17281a93943ddecb489f6c091e96ce505b7ba30c148e036b30963", "0x21f67c406780578d1e13c001eb36a4dc2b5624dc3f12b3e4a6a02570b3e84cd8", "0x0caeb5041b8532a723d9c68a990c083909ab94da865e673120f48846ac77bfb6", "0x0d576a5ddac69399f06fd5e247417ddb73fb47b533400bc79a35e18f0a51ad86", "0x06dcc4d20da7204e7e8acb7404b6b719cd1536af3616e994887b033125614d53", "0x0d0ae80d2c03d27ef6d6ac6edd57faafb88adb18cb43cb3a34052c92a8a0d6b5", "0x02217b24cd9e573c8fcba46d3046d830ccfdbe8f69e43eee315664c465fb6b5a", "0x1b037d4657b2b3c4136ff83f2de746a1f314dca33ee2b92a806636e8509694cd", "0x2be7d85266892fa4d49762ce64ef84575fa3bb6212df994ba9fbd4e2c3591f45", "0x2c2ec68b3fdbe4b10ca34ad1f1c9ee5296e4e418132bfd82fcbaf437210dd417", "0x0356ae0ee778d427d6a84545bf241a684fd562dea92cd30b0b75bd9a7880fcf6", "0x0ea67bcd02a935ed5631194f06968434fc9822df791ff6f6ad6c402a0beaf184", "0x188bba4674c2e1a2b8d1f1db4c2b3de7ac2f572e984804acd579f3c22e0e4ce8", "0x0d821e605046e0b7efc627e1f2dd84177a66e62974bb7bd3ca79e142f70742ef", "0x19bbb44064dac933d1074ebeab991790c637a4a34c33d1c9ca0ecc9559808659", "0x0b3f351b3bccd96bbca3453bab6d10bf252380a1e3b3ac2867b214d063b02d4d", "0x1f657838a4ddf2b0639961c92619eeaf6560243c0115152587fa3b633bc7b14c", "0x173966b03236c921b1b6e4e4e77fba43903f2b68bf83ffd2b00b2974cc4f4c24", "0x255adfccf4dacfd943393fd90822fb3e92292b150ae2205f9ee3b6837c687c94", "0x2ad9b647fa2c5d97d6411a5684ef18312cedf6f69fdef8f68afe434442487a2a", "0x26c815af9baeadf098c8be65a9b66936d88a90f47c878e46d55aa41fb23a00f8", "0x215300316d98fb3bc220cd379cbcf4b54133e613ba42fa8b48984667efae1053", "0x051ac2e037a8cb84449738040cb5d92bec1ebf64e1a65138c7f2d862aafbbbea", "0x1b0cfa4c9f7b4aec9c6a709a106d177fad8ffc6ac364914aabf33627d1de6a32", "0x0084f5b80cd3806bfd40f7d188bde0f5526dec4a77bca0449f1101f00aad4a4d", "0x2fd6803e516e8737c45bf2f40736831ebed2b6e7e7e643e0d4c67b5e51099d17", "0x0b17f732c6d938ac7e85bccf9a8dd401272d7d6d623a8e59ec3ea67e2aaa526c", "0x01b3fb88f6cab80f3af974dd496c9fa5f905da9a079017bc5299080e1d5d4f64", "0x2319f57279981d0a12b06f2f7541826affc4e51a44e1990fb3015ddf9a183715", "0x2f4dc289b5e7f23a370b0f61053bd82fe4cbfc7d1d11d13f289efba3a3c54121", "0x1b679b734eabbe6f8c42ad18dab54de081c89d68c708a81f8fe61438904c2ab6", "0x0a3453c08842ef3080b3af74ee8e799bfa236790cfda0023b588eca466f19216", "0x11c89d2f5498a788416d0042cefa0d5442dbe55f21226095045168139344f0a2", "0x0b3f2c98ca3061f627213760506fe76ffdd88ee755643788837c18dbffb68ce1", "0x2575c71fb8acabc5cb513bf66dbd4a4946f4e21a7b2f1a4062972a08425a03b4", "0x1dec0944dfddc9cffbb55c1902f845725cb92e09545749de3f1a118d41801560", "0x2532b96a8b50828cc619ddce80a2e9930dd8dec6588f52ed5c3e1980ee030642", "0x00eb3e072e9fc2bea9aea03cf45eb481c4e6bd67091f59ffa1f4602fc399f21b", "0x28a6e7466dab1f493bfca1991bfb886c2ef920770accabec486b96422698612c", "0x18b72ad6c372bb8b3b52ceb5c65e9d78c04814e3713baa81323f2a1956957b8f", "0x2fa98e48794fdd4cdba8e11d0cde18ce5b2cc9d0db7f65aa1b6c8609918b2c63", "0x022d6d05abbab403b1327edce33024fc9183aa514f69d1672d49ddbfc9e063f7", "0x22ce0a2387a223228a0a86b942f135a59d6bbee9f1b96d3fb3a151023a67fb73", "0x0a559e751dfe1415e40d0227d7b3dd1f188d99d935596d3dec2c033de5a22d2f", "0x13202360f125ca22c281a18e21a7ac10b196153236f86c5968b31ab50c282056", "0x1e85baa376985015ba63c3a38e7817ab0a39cd28e237233f4c1be35632fc72d4", "0x2450b198b045e4f0cd540b0b74de5ca56d85da5fe59816af30806dd2e036c5cc", "0x1bf04795a7979533886f7fb47d5a0b7edd2edcc1091255aacb96efaac6712b6e", "0x0f126ed9490b69935be97110c476118d00c8b07c586ba04cf81ae699607e62ef", "0x087ed4752046c22599473251c53f69b817b08a90f431417d9bce87ce4fd2bc0a", "0x0015185030c12d8cca42f20872de699989901e25569863a4b5b3fa2682dbf9cc", "0x1b424b9546d87ee6ca28fb8197a2186b6e001556b08e19002298e05f1664dc84", "0x214ba23a67a222ae9e33b4615a31e7b09fa911e18880bc379dfd20ed1177eb2e", "0x186e0edc096c6253b179102a7c9ee1496ddb6060c993fa9e83616a7daa6c2243", "0x151bc9534ec5f36cbacdd7bdf6176a60c9bb7b6cfb26859c7bcc0d1f7bc4dd0f", "0x28192f62ad97323e6cadfcbb9a99f5bada68adddbac3a4ddc18e69b95239b166", "0x0825b1232e6831678f691e7e1eb27888439e12e7baff84db3d18b7bd45172b18", "0x099e93500b62b10127609071e75f4c54cad78732b48596d16b44eae459a59fc7", "0x0dd5cd3a64731f803da7873057eb0a49a2ac15bd7057485b43d47340a202abba", "0x1d4cf162651067f82fc2124f6d674daef03adc3da75822bed2b0d8b690b6a34a", "0x23a86b440d5efbb0a26a76a9993b6ec01c33b46924c3f601ed79a87f9c464068", "0x2c983302ac40a26cbb323eca868e9a757e2a66053bb081bca55f55635168884e", "0x06e98d3bafbdb42dbd2ea2fcb9698273980bd1c808f1f7de799632a90ff09b36", "0x0f2ebb91192276ca7521084cff7a025fe53e14eb884989381d79c06f9fa9084a", "0x0b67885ad9dfdac5f5369f6e3181bcc79081981eb6177db27e5d6f6d851d5021", "0x1c32e21095beb791e1bc785043bb33cd94784b6231ff8f85a9edff92f91be4b8", "0x121818dfa76d98589c3274fe2d702da83ad88ced9df449626506be1eeef83264", "0x2832ac9bb20b57ecc969ba4ff5c713c40622fa6b4ebed066c655be21da02410a", "0x0917180fbd7a19816e8fc3a45fd43b435bac6b2de19f516b37641a6b1c423434", "0x1bd85f4c4b11ae715f45a17ba21ddbdc7d1c3ba680fb978a1b2ac325bed411a7", "0x0d0f2a86fb0d48dea88049d2bcb667030a29d721e4c1776d42d783bbcfd22af1", "0x0460af88f6d11afb5d191e488712fd79cb96116844491b4277ac0b5ef19b4432", "0x0bc1783c36accadd4fba3d634e9f72c5e9025f7784bd3efb8dc72096e2c56032", "0x0eefb878f6eb1589d7a687e94813d9d8423fa50db34de8d5ebaac1302e6f45d6", "0x01ac403196501f0054fa8d4b566cffdb7f81f429538db9b408a3dc20b92c11d5", "0x1d5bdde7d64a63bacc2585b8a14082d8d35f3ba8c1e857df1f729c52e6a7e5dc", "0x0799dfaff2e7d630414a7ddb0fdeea103e1bc3ceaf3ccce077c8733869e52b75", "0x0fe0f816efd74a7eba5c8dd5e7a8943889962492f14353e1afc78efac50ed96e", "0x072561c67ad2fc0793821b50518d4b5d8ac33af26da6d2ce77cebf80292bd27e", "0x2891352ac60ffb09e9c88660b8449def9986f9463f5a81c615a7cb9f4be0724b", "0x206e9efcc46cae2cfc7e866cada0a4c72c29f235f044d56c8244a92e882f464b", "0x2e7c4493e77005f49407f2d5cb46cdd6d04f22a061ac8fcae04d2d93d7c8dfd2", "0x0b9e944d5bacd889beef5909a139f5e7b7f23a1ce7a1e55a6c4b9c382a511524", "0x2635b8471126523448d0b1bce5d8f54ff5bc988a0a6fe53dca721304f8f622cb", "0x10df73bfddab994cdc079216cb585ea8530c13da58d6381ae0c517f2ddc88e02", "0x2da54f7a7bfd78f40c98e6ecadb665f2644b0a9539b27765df23eba241fffd7a", "0x19ce35c6a104ee3975d4a94908f5b1e0444d7709bda7c5fc59a527cb2c166509", "0x1a47dbbde2d5004a1be0ed7c21f57a388a1c86f8b4666d4d118ee99abc115a3d", "0x2f037e73c7888cef9d7046e58d9988837be8faca34c58bc50f021e8734c5399f", "0x27ab727198d9b7a62e0d99b2d1112710102464c3f5fa8deff2762af8a8699e7c", "0x301176359be9b665abc8dda6783d3bd7730c4b4936a1bd83cc5574c694080668", "0x030e87204cce403ee4e92e0507e8e99cae309599dce18929a9430100fc5c0869", "0x218e8653761694cf49a1f3e275ece28866a6e9963c3ee6eea46c2b193688d3b1", "0x2b219687a4549eb17e29db9fccb5796a11ddb6fb271b5a547946f0de32698a36", "0x221e784939d29eb5442fd1612b30a58b9e555a398bae96d6a2d6d9a616ece0ab", "0x080fbdb9bc4b4e8a83b2ad89383b25526e330678c057f7c34993f27eed2e14c4", "0x1601e657a22b8a280d4452d527beccfdb9d8c3edfcb7bd0372d0df43e93e9123", "0x0652d1d878dad9d7f854e48066531fffd4773e8a5c61301f581651b50e359751", "0x10db881688e3db58bb608ec993d36ec8531ad3ab580e65d537f4f37e4da26027", "0x1d8a06b51927f0379250e7359f9dab93aa9ccfaf764dd70acccec7177a4c7037", "0x19cbc2ea50b7bfbf009f709d159aa9ef2a2c0f68a5cbad1f5e1c99ea2ca2623f", "0x1a5279e38883b53f313f86ae7ebb07d7bb0cd658be590aa3ac3b413415fe3e8e", "0x1af136d53cdf676c284100705d04a976645234f4397140fd85a2d88a484eab0b", "0x0db8af764eef50bb1ddccfe0583ff730088f3e9c2c555278a3c9a7376a893232", "0x1613c14bc86f95e25e05f8ec72c8ff6aa207bdbaa33f912808ac693f137d5d51", "0x0fc47ef92f10f79d336550ab3e0a7545c74d2d3e2b9f97bcc43e4783d1d98cf9", "0x0f2cbf40b344707cce101e7797d137a9e8b011797c66fe6fb0474d2b711241db", "0x2efd5777f8ca22678839ac60c1a308703094a9d2be4413c817c751dcf56d8e1c", "0x2ab4e3413795ad9a695b04695db31b6b0ad0bed91bfc33739265bbdc2805b180", "0x2e3b6d8584e42666829c0e195571c50d7fa7bfacec12bad7afa242744e00c039", "0x1833f151de5bd86ca68d264d5de5d353b8128a96e3813ed2cd00e322dc91c8d6", "0x0ea82c252d8d55499ad63c61c47419c8e8e423257732f9f686f6b106d7daf0ea", "0x09857874422693705a7c9806340c6da0777f4571e92174d5f82c07b91f2c85be", "0x2772ac7928af0a79931f88a87e634dd61facccf610cb947724e7a2110d501449", "0x2e62239b790530756ca329c63e6f4338e2631ef4e2cc67e8046fe2e886f6769a", "0x0265bef6b92cd962298621e2609c90162dd587f88139bc60d74bf363c6712628", "0x24484c0c291379917d2fd8b48439fb3d70b05b155e8bcf330a56b5027cfdbc30", "0x2b2d449a3ab55ab7ee77d37759db58adbc91d0d50936538cfb0173360a2bd8cf", "0x23663d1956fcf1a723085825cc67cac82d3ebbfd0134f861ab5529e2a4c7de57", "0x28fcaec0fb6cf43a573261d10ed32c1dbb4b9975643fade00532c1bd1ea0e411", "0x0145c6e2418185a9ebc72cd8dd0f53dc537851eb5a42eddc04caa52cb3ae8abd", "0x167376a042099efae1cd8988e02c66e8cfda378faa64e85626bfe4636f3c580a", "0x0cb735de0e612a615759528eb278b1b34107c4a8df58ea674ee7fb719d0dab99", "0x2d67bac6616cc0464d4fe907e5f68f0eced070b8811be72905bf7758f3ebe884", "0x00dbd2a2f8d7fbf3ac403b1115523112b7f010a0adf6ca584d7ae03f947d216b", "0x11a992d7e8205757ae36bbabb544e843b010fddc7bd5abaa82dfddcab3f85c7a", "0x230d34341246fb715b784797e9dd8bb7307a4c46e2f4470d2c319340fdbe0025", "0x09feeffc218aafa614e8fb7dc4ec786ed25150ec1d3507b3a7170b9266ff6941", "0x1208ff94f1223bd249daa4e3a0266e079731f7c3f998b7fa707dd9fe53833f82", "0x260ca3cc820f873963cd26df1b8ffec4cf349fabe16e81f2f973663466802da9", "0x12655e2c98ad35ec444a134e55cf68dcde68f14a7b734b3834725308609bc854", "0x290097f2c047a3dd6600b706377d0e1c46145f3a9e9e0ba6d7ccdaf7b7e05ef9", "0x02c62e5bd65381e0972414ce0090a96c22b0555bf7ef8b2aeae1b984808d4f81", "0x233c642308dbf783701420788b19153dcf088a63e8da765c5182649424926fbb", "0x2b7328e368ed4b7a62fedb9cbf50104557b6c3d9be5d0c2745bcc76476f8ce50", "0x1738ea94cd4331c7b609f42f27c4dd57d8db78b70a95da0c2394c4ef18992855", "0x2e902d182a1fe1f3d40da28c358c7e89076d2ddadef80e31b9895eed02ca21b8", "0x1683ff7e84a5a4f1dacb206fc44fc92179e666450c5a65f54354bbe8676f585d", "0x132958454e01c1fd2bc43e02424e1296b54b55d3dd3ed1e1cbcf382790d6254f", "0x0deb48b7df7379266b123e0b6d83a1fe031807f1ee37f7673738438aea64eb00", "0x2c683489b3065e4ae5d7106e18f4553762d58ccde006ee96bd691f140b15f386", "0x1d7c17b521e158ad420c9d69237f4ba6e8152541d878e24876415572734ccf32", "0x064dee7f04cf564333fbdc610ab8bf68106329eeeac1b1a59614726561db5bef", "0x21e94e5d9adad9dffcc186e0310ac54ff38b0a29d3849fe384777d0048abd660", "0x16ee0a0b45170d89c5d91557ead0b253c39a842db804196bfa07044ae6e2b4dc", "0x0a7009f825b6fa180455fde8a901d42a28250e9948807e24a62805388cee836b", "0x08d5a34853ddfb099fb0fe1df7460ce4a8e4952a148da641d0e15f71efd2cf68", "0x0fb198531bcad7bc91489abaf1345a3ebc5f5ded5b21c1d17237cccf9b1a4812", "0x0a91f50c72a422f3f0c06cfb1401dcade6cb99c285b0705542fdaad40e0b5124", "0x2db33b34e5d9a988af35501af4e137c4717481b673292246d98e7728a13bc924", "0x1b745ff9c6e53c275d378f0a69d6c0d55d598549cefbc7669bb63a3d4100ed4f", "0x114554e3afc96df3b663c62243045e27f6a24a5c26b875e7344014b2a9858327", "0x1aef968db4765b450f098d4e1a6210b7165c53ef336b3d96f55fbac58a542bdc", "0x24bdf5ec4ebb16db47837189172e8a55b36038c50bf1f38cf79055279225be52", "0x2ae7c4a1655975ac7052d101d1346efa10fca5b0f13babddd62dfefa980ff78f", "0x165cd429a3966d1bceda614b06d459e7a0e0cfbe46d63f25521c9af74028a8f0", "0x1bb3d4b2f67440a5fbe410756945b7bddca2ff1ded3fe2108d125679097b077e", "0x18695f0185440a5f35ad74a5451da6337eda049d50b9a5d7bb284d52f9033d2b", "0x02eb1bdb4eaa3fddaa625344ea650afc460306e0e3d4bc618f81e9ed73b43a0d", "0x1de874e713e5c68d2f56d518f8eaa275229fd8fc8a7e112d7d1a24e604d3ef83", "0x1e5a6feb4dcefc2b68a5b2c3d0664daabb1f0735ff2a2d2b68430f4d39b109f8", "0x27a4284ee0c6f73ddad02f9d499be90fedd32ebd7af86f44ac50e354f743c782", "0x0099d8e9546fd891bbab547a0ec1dc838cf62126788d85b2759774d9de75e777", "0x3043a7ea89d1e4fe14f1f91b584d00c3ba79831ed8d8649b5bafcf75a00cf759", "0x0e7aae04dabfa34859024d075a3014e78c9096363690f53eb0e99b7d628897ef", "0x10fe0a11c4030def725ce7684fd8724e06d6cf0d295db09b4199eb3b6a9f06b8", "0x168cdf6baf5e970e1e6bd7809931d487654b42e9ed5d8d92a48f1dae8d2b4c23", "0x0d241d33c552c85556e62a7afe49e5a7128fe8aa210772bbae5957cb60a239c5", "0x1e25c0e00db77c69b87d5bcb95cba934b776ec23392d8cceb6c392afe5961f3f", "0x22b0e52f766a702afc38c2c60161e352d8803f920431acf9410f7fd11e9d7d32", "0x12ec9b91f395f1665567318bd3fced7a752ca01ee0a088138c40549a31164fb6", "0x299c8fdca8918c24daf876812258a75527f1b5d1741abd71a82eac0e1fbf20d0", "0x0f428bf91d4d31184f35d770a5475debf4353ce7dca9bc22763b69943344f235", "0x1be0549a5470c9429f0e1b6f9482f3c4e752e89c203c25b624817f523a79e9e9", "0x0fdcc3ce028e96b21f91bc87ad052d78e44ca6c96179ead64378cd356dd2acc6", "0x136a6a9843fe104838dc085992c0eb8e309fd3d169af68af8058dd8b605eaa13", "0x0584441581ce63a4ed2174db35365bcb01b93b2ec02fed5b6ced7314a127e66b", "0x1bf9ab90b1f5cf6ca9f0195bd4336e68135a5ae26b6b3511cc906156b621cc13", "0x2b0bf6b3cc9cf023ba13dc6501f00a742d44d26b66e9bd7bdd96abfbb33cc7b8", "0x19d18619bb73548590c00c7d02ec94b52bb8bbf1aa5c2ee06e1f8e875991397f", "0x14909f8c8920f79d4686a14a1aa6e03a71b84d3d9169fb7673317aa6b28433fa", "0x2397f311f598d249e6ccdb9af6ae5beb6f097f5a350886cdaf0691d0a8abd8f6", "0x0ac2f7a3c2e4a6fd58f9e502f9dfcfc904608763d69b94ea50288dd7b63b3842", "0x0abe36a7048a34d9110a463cff2fa23b5aa0966a3c58d3086ecafa112f5001d1", "0x245ae4790107afc9b9bd1f14c20f10d8a745f077eb15a960e5d7af379a18dbdc", "0x14ae110b2829126250e1d694f08436ee0c56d230b489d08d32bc3503e73bf4e0", "0x20a0576ebdef08dbe219160fdd1a7e75d838770c780a628b1cc720f027f61c6c", "0x23a05ca5b721e48da57d373df376c5252f66e9f963c697d7d8e4ecdb55ef833a", "0x2813d89a8a9061c300348cefa9447f1a96343f329f65c4e165b5b1387c4c64c7", "0x2bf7ee542e32e28081fabedd92f4b18191bbae48a436273dc04916ae09a64553", "0x25c148fb26cfe4c3d977b17da068fd67ea89cc51079fb5d0cd3654a9188b1385", "0x1d3dd23e6048866f0855741903765842756a627897cf47d91f9f2b1ec8ab2bbd", "0x0af7996cfa4b51163b4ea8ff49ed2ebf8a5e56a44687a8de351efc172c9bdf50", "0x0370dfbd98a73e24952f0208eb7e5bfa83ac7761d8c0b4b53ec669c693698730", "0x13aacdbfe05a0647fc158a1306803cbd1ebf8d995d5b27bc5c3a92d0438240f8", "0x050fb4ff23f5677d7f42b0c8184c224bb69d4f30579a6b8e9da5d22a4f7bfb26", "0x0cb2f5cee85cc6e0f9becb391b7edd42cafff7c34382aa9e19de473a2c67e393", "0x0a146430a98a85f906d31e8ca7b2757570996dbcf40a7aa8b6750667b96a2ef2", "0x231efb23ddd7cc3485b8bca812898aefc8095078e547151662abba0cce1f627d", "0x2ebcc008ed0ecd551829656c73b6ba8d8b0eef871aefb94a21a3ebac83561350", "0x1d2902e8b627c0443bea9f8aea5601b21dc0a41dffd98a1516761d400f7b379e", "0x277358dbe09c3bb9570889293f795c41d9c2c90425bdf1a2a566f9e4ee46819a", "0x1fbf692e87da200bc4ffd4898893cefb65a43fca504f6f675193f8d63c6039bb", "0x0f3b881fb65b30fb2f849620e74a0dbf593af33bb80a15eb7fb88a09d97e0faa", "0x0a116fa32c97610866b3a93be3919080219be6057a4b75bca3a7bd7bef88baea", "0x30384a31b80c532ecca12d2c61ce4eb98098a754079a69b0e44faa0a3beff23e", "0x1403e729814addbcf809e49a5465ed6ba6e4f0354a986cd27e9d03aa6a9fd181", "0x11794627e6125ac465ff2ed71d959c31860aa2d8eac3fa411b68152bc381cd24", "0x070354e3713899b38ad74a7f5e3154ecaaa27314b47f85773b6e066fd4e63dba", "0x2d1e01fe7b49660ecefd093b5ab269ae2030fd7827d6430c2bcc53d2800631b0", "0x11a01533e3713e1f38f94c3906843323c0c88bfab803e135042ba1b8bceeda3c", "0x058e4bcb4f7463bc6d02d6c40d7e858b0e0aacfc3a88dc320187d8c5a015d159", "0x1b2ad38762c6918201e093d2bc393f9fc50fd5f45ed943a8f11b269783335e74", "0x05ab9d393a4bb7eee00723e8de668b2404a162a0e17577a6e55b8025b1814b0a", "0x04058adeb5ade9a9c9e3d869edb70322278b09ce1219ba45685bf8f6d69ced77", "0x21a1c7c62cb8ece8d3bd434f87936c3a1842432f2f1a6c66101b1ac8d11c9a19", "0x2028efb9d44e5af38c0c1ed35f9cb843f38184ee0fb9f1c42121210542b00100", "0x24b0792d69eb31364cdc8b74c109223c1c2d244404c64a41d516076ab0240ca0", "0x2179ff52ea2032efd95ac4e7a37a9c0ce5034d3cad366105341e16ec7483da19", "0x29cbadb37f773c6dc580cc0c2ebf2926d598a19fa41f881e12cf4a5edfafa13d", "0x2b892f09ea9f60fd7204852f6bb995e20c3510648bdc400b97dfb7cc4d7fbdf2", "0x13badbd0953e09615a4e13d4b340f4e1bf2a03a2df5e6b8faf69d8697990c95b", "0x2b8fedf8c3662b0a10576cedbd720ced69f862124feb62eec83c7150d9936411", "0x02b3d62d6efea0a22e2d968f919a8bea56791a37b9f21d03f95185d9926c72e0", "0x07037bac8b6690794dd0907f7e315baa525edc729833c89c660406df21bfb652", "0x2cf9ea47493cb7867b86942e353487cd4f4cb3cd33e310e9fd4bc3c3e6b5242d", "0x303f5a8faaf2a6aead780f2a13937d75fdb4605d8f5a65522426442906edac25", "0x091b628bdfd4d49333c2a9ed84aba3ec2eab336a8d91a605b9dee9af0af44f26", "0x01f468f6ef5c35d3c95592e27b1de7a213878a653685abfb0d2972fb0f7f9e32", "0x1f5923725d991b36de8557d299cfe27d8b076c640cc4cfffce57e9c7477b89a0", "0x0dd5d7b1d0d52266c387c7e111fab8eac4404b207bc5e216ab64b7e10414a6bd", "0x26ea3dc5cbd01be1c06cec04ef328a7d266afe33f76bbb26da8457e966351444", "0x067231875a3d536b4511d0a0b21b7d24958a4bf1cd1eec4c597c25e3a00acb36", "0x0724bd4d523a70054c995241b67f4aea4e669458add9a6779d89cf3d3bdd9da8", "0x1cc9dbf8aad45d67178c5b91a0aa44701628b24120990fe6e29026a0b21e9ba9", "0x2b5841453a6653fd30c05d2581dbfbfac5ba89bda78842208e24a03c46fd32a1", "0x25a1bd92c9ca10226bcf7fbd9b1d8e2b227bc2dd4e3d46e133ae268154674f8b", "0x01c352fbd922724897ab79a60e47e5bbf3c4b714a907c63f4efcc5bd5cc6e827", "0x05e44830ec170a4a5dfd9de846e7e422ae9cb98c6f499bb67681fcf60f7e82b5", "0x077c2736ac2d0a070a1a1c6e45ea9cc526201d668ee404096b69dc85086ea9c2", "0x0303f34f6aa229a5228fec959544f831ee71a1137dedb6a4b76443011eec3149", "0x273011559d239160d463a2b9890096ba4558eff7b6637291082c5eaa9ffb153e", "0x0c4dc5efe016498ea823fad5e12d2e003f2cb4ecaaa7f0e02919626e58afa7d6", "0x1cb990d809fcea3daa8d03b3bcdf147a692ff7a0d8f0c114f6a080daa5a3ac12", "0x1a0a3d386c26c3d467f50ba733e6d7901a59b7453a4a34056e92e771b6dd4f6c", "0x20d81618c0e6ae5ec303cfde54346271041634cb3cf22219f999a54bc5033b7e", "0x0a39ba8f57c793fe65b66907cc656a97ff523817cfceccbc2c2de5bbb8dec0cb", "0x0de056fb319526dfec15d502173483ea35e6057e64949fb6e7690d3c25923f6e", "0x03f82ac12d5be639974794fb3c2322bf6e61a262c7b470ac5e97d20a4a4d8aec", "0x0835ac61001ea7950d80e32fcc20bc0c7197d12abb0b5ed99392101390de2a46", "0x120efd9c0663e0ef3b6c596414f018a73cb553266fbcb1564452df9016bb4975", "0x05afc3602e02391bd4e2c5ebdda280085ec2c1f356a3a5cd2fd2372be6f3f259", "0x0f885829358024fc29d041eb29a43130ec403922c4479c55ab3b346536ac159f", "0x09752c21e2a9c7d6d5b89634288e119a0c6406abe9e77b4ad1b8f36c9ecc8f1c", "0x1d6bb32d414b8f98583849694ad7ab5785d88ec70bde4bcd750287016afceeb1", "0x07d455cd69ad00e93b09ac44915f64a7d5ea3c4c1b3d176bb51859639f924b54", "0x118886890f7d3dde9af1204a9590e10750c9a6035e66b98bbad1fb625181abab", "0x245e7b3643a7766566395efde6e47601aafe307378fd000da08facc33dbb043d", "0x2ceb6176073a98a6613b40f768654dad8d119ae64edd6cc84e4b34370f9409da", "0x1b4e4d410613ae837b7f6a7f5206a03e9eca6692fa970287a53317990ce81148", "0x080057b8e664ad580ea5f385105766fc0e3a2226520cf523604973da274d10d8", "0x1131ec38d8960567a7fa9bd96dfa7fd5083e14f2843012ab36e946d4b901b0ab", "0x1d278e62c58f3c17e14769fe3dbd6c6b9faff11def7d003066d8e6b0fe7fb1a4", "0x0710431fa88e036f180f0e4d46e8ed78a7e6361a239abd787b6ce2f54615ccb1", "0x301e86b0693c07df60f8ac15ac6b1caa76f13ef5175535d8f97600b8cfe3b5e6", "0x25870378c0b7068041b92a7f44b485605448458c4d2e7a87a26cda94ca4099ed", "0x1176218d48c39ce7b6cf46e760d348871266005cb0074b9886eb2c4bef5be09b", "0x1e1efc3b03fefb1c972891409432c02fb0f4e9b6f6e32b3fc10942387a9a8125", "0x0192ce4fb97eec768607210a2a8fb1cb29828d4bd840236f14327e186d3946ce", "0x09d944903456cc43a43e9827368755b938a31d42a47cc6d910ca0b04ee10fd8f", "0x18e4179357588f230ab88e6fa610d882442a89519ca71bf10d8ba64fb2aabf34", "0x25d0f7bff22a9e99775d8f388a74d4ffd70f9df71d977a07d934379fee629378", "0x056ce0d47418e2c1ed7ea63d7b06dcb7e7068abf79478e2b53f402d584f8014c", "0x20dd7949307bc2ce53323022fcb6765379c953e8551f878c4b71205387a17b41", "0x04b97cd5a47874928e8e3ad6de644226493ca3a87a19b182eae89812db3aa060", "0x09374a10aa6cb0b2cadaa21e9f10459f79376f8ad0fd07830045b6f1e9452600", "0x2114b5f038cd400d24959916f83d0cc8273f7f7a51955bdba59df3ee5ea4c95b", "0x2751d812405f13d21c4d5937d20a981db7cd5933822124189615611ff4ba2d91", "0x0cd90a882276ea2b8a7273eda155a6fd9d63dd094b965024411281ae2babbf77", "0x0283bdacc14757e28398e67d6e7921529951edaf0c9872194456195e9781581e", "0x16f179d4dc4f2101cea8d127a6dc09e4f25ecfe4f79fa3e02851fc06108fd498", "0x286f91d1b79d9e681d6c540bd14af83299cfe5254d9a1b3aa634e5456afb700d", "0x15ccdfad34d292269d6734c173e241df98e2fd75e86e61c61369c6f59ab47bf1", "0x0ac6b90c6b7a47a1eda9d4a6d466b2adfe078dc41c9c6edd0a390303a9df210b", "0x25497ca515dafc37c125efdce7ee66072c8d4c152a2a30f81e195fdbec764982", "0x280948cfe3eca19e1cd0fbbaa5fd23a38e6728547e648fe80ba947c475827e2b", "0x0cdb1b6412b6db97dc592bc966c6e1a67fda70232ead9a157f27f6014885473d", "0x0c438d5abef5042a0a63ba4318d78911fec5373fba72bec6fd2f52bcb386682d", "0x219ec582c9278e78e48798023c5340d522a0f7e639858de4ca01199c4452060b", "0x03a092730cc3b1eea8a5a761259dd2bea4f586eb09a7beeb17c29a625bba8173", "0x10ebbfc35233d7cd631b6204cdc89ba4fd932ae0581a856a395a8a52662339a3", "0x22ce0890d9ef4f2b0ef4e69827dfb68f3a6ea6c30a24a675d51b9e199b6d7c30", "0x18948f58035bb10956bdf6d4667c2e16ce18442a19b8c281d49b2e26534fd8ae", "0x2619ceedcb834ba4008853aeb6a8d6144e281b7ae3678f1d52d352f04a9f0df1", "0x0244c74d793f1a16f197a2fb001bdd31e986f094a83e09d58f2bc5aed2c8beb9", "0x16ebedd4b23d468b9f36cbdb35e00187debb15668c180c8ab339ee5b59c87cbe", "0x2bc41c9eed9f63523245f4b412216715d29becf51d660c86bdaf38809677bad0", "0x009edbf534745f8c735ac87a602d806b99dc68012eb7d6c2c1d4c38a0673ea23", "0x18dacc8d13202bf232616f3a175bc021189a25a296efc9977880782b31407989", "0x0b2600a07263e83ac076bb1c4b07f48f2c2a3cf6bf7be4af77262d3917354ee9", "0x27f6d20fce0e747cfe43774331a19cfe4c234e99d180332893f70584a17f116b", "0x1050ba20c8f4d797a1aeec9de46fc7f794cb691a9b16868a2deffeed1bb3f62a", "0x07ddd2115a1e35311b052494b9c05ed47ff8fe2d418178ec600487ac8e65da20", "0x152a65b5478e0f92ec3fc360143e6a1cb83d6e99668168febed37160adda8a2c", "0x21de44ebe484523c17a9ce162f42fcdbaa71ed4437f8cdeb885e3d4a205c370c", "0x1be37644a1d3a397b6b549810568ec7636a1be4d7a64ae23f7cdf07ec93a0111", "0x18e7b112693223260a25dd17c71e431be5ed4a8ab737f3775ef61489298f8759", "0x0023f7f710bc05777402a21bec4372e3b648473f3747f1eb28a78c7e03a3dbd5", "0x2470de23677a016a0004c6ef292064ceec79cd12cb1fa49992a3b9bcd0a25de5", "0x1d1fbf8b2e41000803ef6a50be409987c6f52d8b53b617c4055bd24e7d27bfec", "0x027f5fe1f4bedb064473be4b6eac1ecfd656ad2086abc311b67f3ac8b8c9f367", "0x2d53af0119dfa77c28dd102b2828fee80af9ae651db1014c3f39fa5b9b8ff852", "0x12f19947c2645f4481c89113f4514641f4afb74a8c43e0366036e80549a71fd8", "0x2f0073674bf4fd79d249638ec64786a9445fb590f1088ebe4a4f01fe5f4c2513", "0x28ed45b47e0c45c29abf03b265d9fb7500037a95654eed4b6cf4a185d1c9aeba", "0x292142dc76706392f3006b8f5b45a451f3c37ecbad9f69b2711211178683be5b", "0x17eaa9eef3dc9a7059bf6ce3a51cea4a45ff03b7cc605cb8b05c3edf2b9d67fd", "0x1a167d224f703b83f20a9ae1dc90be77516a977e6f2ed07da85b06910a65be56", "0x084eebe766b141d7a2ecfcff08750b04bd6fea80535b2a0e30ae8933d98026ca", "0x2ec0f402c6cb9709e6e3817e2b364285e18cabe290bf8b8387e9d1fe8dedca2d", "0x1657e26c61a0eb6f8bca74c5bbf34a947772ffd6c2c0f9b62836a1e8ff6f4780", "0x1f8827beb7dac86958edddea38b28f99e77180f3c3b959979378c47776616ab5", "0x217a07d6592fc0001fc240be44f71c017f387006131b83f237fa4c9668ed4fd3", "0x0596d9d6c84f745470fc9997c5a1ce9d4e3904e17f16f139e1fc6f0bf27ada4b", "0x0bd2f1e61a7ed47726482de76ae4b0d7b41738eb06c9e98ff0277fea16c2b0fb", "0x14e4f14b2a7bbf9dd8c3a1b5260c3844519c3bd5d139b7344678f74a36f4e4aa", "0x0980b0b3d80710a167df147f9d475a28dcaf918a6aa3c967a5bb55d97a8f6dac", "0x25a6def1f1a79e8d6356671df1ca3350df855069fa1b5e7e86f27bafdee60ac1", "0x2cb242a29724740e63d8488ad7dad6c5d37e9e5d0915582e7a71c53e536b64e6", "0x06b32dc0408b1782c052bba587c379ceb352fb29579b21c6180cd3fb39ab7afa", "0x09f20a1375f56e6bee5326ac7563709bff6e90182ac092f12145ca088fdf3f47", "0x3040281c47d3b6edb8314182a595a1f3e6764e662cc0ec878b638826dd3db7f8", "0x0072eda160683c3ba9ca0dcbb27f008505e83a85eb5ac753b7a67a23d245518d", "0x1d0c406bd40bb8fe800ca737d501e19f158fa205d9f63a30b487e615f4721400", "0x2e1b6f701dfbe38462061a91d5f641abcc7406a5f463822b717de79344c8a9db", "0x2918d3fd3323723a1ce75dc1b1f82948d298da146366cf0167ad082f5afb2aab", "0x04a8ede82ea0c561443858fe08d2c905dcd445f51b11afd41f4676673d74af0a", "0x262f76f5afbfdc84c240e686362f25cd1f3497d195c79a40cc997225a4349280", "0x0e983bd202a424f24a83f8173737dabf2c711ecc05204e1d26b4f77f1f107526", "0x1a8c8a3b13837a4a657c26d0f804ca7ef83aac7e7516184b4c22eb7afefa5169", "0x05a16f27f460719f8b75c49c1cdaf348739ab5a216a783039bc055ec6f0aef15", "0x109a4e202a5d6ee943b2138dc5e3c868188b02ba57ab158a46e033590deb1d02", "0x114be636e12060d317a7f08c44b856144e883dc8a07af1f62caf300d23412dde", "0x1fecefae8607aeb2f109239e061d1839dfca12634a4b001bea1d1190e4ec8029", "0x1cfb5006b6281147b05dcb8a08aa54a7fcfe9b121f12bd36e989d2f47cf809cd", "0x2c2e31ca27197590bb0d46682ac10d2009edb57e0a88b4790d731cb34e926d82", "0x18f2a0b00b5449f4bb8265d9bc2b03a31a1ce6abae5eafd9eec2f3745be561ba", "0x0431b6c629cebdce444b0af77df0808506106f7657209a9c96c73f6b44da6b02", "0x0cf33fc2fde1e171be151ee344595705eec9d0930341489adc6433fdb9941f93", "0x0a0743877b28a2a675966e6ad6e2caf32f78fbe830bcb0187aba4c21fe7d9275", "0x195b9d285a58deae30758a177e20a4cf66350cf4becd8126bb5b89e672d39fca", "0x2c3eac5d52faf5b46fca54b5e7c16cd9503bf62ff1e3f7caf95149021544476f", "0x10008396ed7e26097d6384716ddf29931bfa8cf88d0f15406b7d3e30146bcc2c", "0x09d6120d8cefd8db99a2906268fc116f5d31339c11908252ec08fd39aee66c7b", "0x29f60fdfbe0d77c1641825b499e2452f5fca3dfb427be07a32201bcb38019187", "0x2a77d988433dadddfa317cf1a86c2503fe0194fc1595e7f8427c0b83f90b4180", "0x0c9650f149c994670cbb966f3903e52a637e956b5792fb69a0d7376e732e8113", "0x0cbfa17b2347e6821f788e9a44255c13f5032598d1e215a822e3e7ed9b757cba", "0x167c4c995f5a20357496678fc1ac33e08431127aef92a9a00644c61effadd079", "0x17b09378da9ad8fa77b5d10db6cc7b522df95666fb204aff23c0b9a9eba37951", "0x15444b346a2eee40220d5abbda30324fd422b12bd062507887a1749c9dbeabd1", "0x03d08a26f86c97f31c4cd9a01a7f68fec8c208d42ecaa7ed2cff73b74dc18656", "0x1c539c92417e0e11b263d99a0fad8fc61fd1c065e70399aff512d8777d7cf1b4", "0x19b9209e1055f404647d2f0bd4817e798972967e1f7688877f4e857400ff8526", "0x014e73253e3b5d2c90f199959ebf071b189326f39d1772986de1ba79db72f0a1", "0x0f76aa8a09cd042559e21edf64495557e806592a1d72dfe8ca3d583a04febd06", "0x07e97e1977f873a0581eda757955c93274a87454a65e6dfef9440bbe12f01489", "0x2fd534af9df31109c948d5a5d9336b8d7bc51895c34bfcdeac48f8b56dacb362", "0x1b7971c644b7fd517033b8df2325df82fa22a3b79a9ee0033237bb43fdf87723", "0x0c830969ca91ef87be109af46d0ad62c93e80b1ca9307d72709508cb1fea64a2", "0x1fdb86f3412ebb18754a1f9cf4df3096cb11ba89e798962295cca254c565f2e8", "0x2c9a5c82481cadcdea6bfbda30343d9815221e29ae617a30f950d29834ad2654", "0x23b19abc1dbe34a9793537f1f39a3d81944d1b8cfc4f26b0639ca4faecd98d2b", "0x0cd6922f3304a4d038833c697b0774147972516bdc8f96567b29a64769715483", "0x183212f2e427fc1080c237bfae4203ef12472a06c827f93dba5d5af24ec336a6", "0x04417a0dd6d3d8cd6d2ef81cc8333322d70f264f5100874a4c1603d1d6f839d0", "0x1ee7fd86ae6bfe916fbd87cf0a72a4be433d4d3f5b3b96707eda0c47a422c3a2", "0x0e386dddd870f8041dfe619d4dd8eef851a6391cf49eeef6f1f1443eea173d10", "0x0b31a49e957ac3bc7ff0f65ee6fdbb4cf4b145dd8a234f0d7e6c0639bea00747", "0x17bedf9f13ab9ce8a6e28190479939cd27863b892ffcdae05478a0859c7eedc1", "0x1c28fb33d99dd1b3ae37f884f3552546a4f5afae562f4862fe1e92e702409e15", "0x15c6d0a394166967cbc39280505eb9528cdab0ea52f1595c5e7871815ffd02cc", "0x236303150f9e76503ccf1be5c90c3a485f90f7c1ffaebb1c4fcbaa82a0519bcd", "0x1fbbe0747bd2bbc3ccbb752ced9897731942f79d9a761d3aba4a169681e30fe0", "0x147146fa6f464f7e58a1304441d2b7f64333e21779cd71f880962a50ea6385ba", "0x217e02c928941516f5a9a78eba51468d93bfb278d1c79061e666df4a32092c03", "0x246013b423cc893a16b68c228b01b9380b47b0afbe4dbeb1b4340f5801ba4c1c", "0x2b5225496c1e6facd5b74f12705ca0d4a7b77c30c1c8311c3c81837167ab45ef", "0x0a950f572749b6fad6d6c324f40568d7219e75a884f9bbf941b20ee81b42c022", "0x1a71888e664d2ba9bba5aa22fbc380f29810d0927d286af59110769f07f9976e", "0x15c5c720ef6fa5b02936376c298394bbedce59824d6ca9fc260f5edc8ea5fabc", "0x1c84983cab32fb96ccd0276d25fcb5a978edee693520c0b1ca097792cbd1742f", "0x10759b7a744e81322f8368fffa6845102867e21ca6893d97b463094ec72a1e24", "0x1ab43f1acf28763767e587542a3f399f0998b4d20f532d1f5b3935ef2ca3fc6a", "0x1d32f2e0c56427580de962f147633899ae7237f4ccfcdd52e0d9b7b037ce20cf", "0x2147506e00fbe0f6458115126df9eeb1ae4c331a4a381915cc195bec94888d65", "0x04e95ed8d8a554695f2a8441c175f22c61ab041aa4d27e4821062b02f7a29ab1", "0x2cc181f94de5719fe2cef2222777dd98aada9d4cbcd076a2cecb3ea78f8bfeae", "0x1615f6d5826caaa678c4e5c01cef49b442448157d2c651e3b1c99d32b2c51c0b", "0x054b0e2491d3ebd17f7fee0b0dce67b82346d224aaaa477d5d98fde2bf5df5d3", "0x21052fe17f3f83390ad8aaaece48b7924e54b8070b6304f4b4e8ab9f89493713", "0x1b1d8d905c713958dd315b0c84a65d479f6fb8d8698630e7f096342be4f129be", "0x08765df92141cc7b51bd0873fb5259a8acd5a9b5082889ae550bf3ff1e8cfc39", "0x1dd1e2c068b653203542fea3746329eca954b9e28fdcbd895870b32f34811054", "0x050582affdfc4e5c3ce73d746680b830a843939561216767e4ee6342502e2a18", "0x151572a6d1f57de2fa9e4aaa545ffb842bb184ad3e0b0bde29271b55732ea2d3", "0x18d0aa380c379a8e7000532a66d561410e8d118d2eafb6c0d6d3faf2dc8e85be", "0x2424a586bb57c0883ee4ca4ec731969c7422502c8a219cb95ced3a1209b05fdd", "0x0174d6643ccb632a14b11162fc35700604c59399d3a007f5f891504bcf7d77cd", "0x182104c94166052fdc748d49799011387915b299e04a80e33e612740706e7a6a", "0x0b70c1185230e22dcb948428cedde9d7dc9c967ebd45af4d9cd62da07bd522f5", "0x1db44b6e0142bae1070f734522bc1d40b99cfc51e62ff6dad389fde5dc68eca0", "0x23779598119faf923336a2e9fe15a7a32d4600a8b1f7bbc73cddf10fca81aab2", "0x0d310d08d48c04dc78bda687d48a00598bb963f09b18df3b8b8d31629b7b8a82", "0x2a8bf4e2d52476ec48829a99fa53b47cb1045bc3fccebeb252218186161c7b3c", "0x13cbb0f381a6e6609c3fe4077dce0da32138966e7ba2812896001837585b2eac", "0x2ae412652e44172733e1939fd32eb7804647d29768a74b335036b24553571b40", "0x03f426a5c7707a7da1a8348f9e6c0e6d5b2d507bbe98a006f715bf2f28c14333", "0x092fd1fd3d9c5bfccbd1581b4a16ec0a80915ed2f56a3d4099b239a9b4449cd0", "0x00b1e816dfb839a8b31ddce51963f3521131a5aca1cfcb3d20492f9fa4ff2b8a", "0x0cdaa3a637ae81ec5fc6b4f592b5e04f7fd8f1f67b915d7fcb95c9c5bf3d7c73", "0x11fed5b9e736562938a571aad6c1bf987895bd25d53efb5e93a89589d638d0fb", "0x0d06b9038f5d041a9edd114b3d6346ad5e11d8817dfa3e74034fb82fcfbc8632", "0x22f79b3d9df4256fc835f23d5e16c8f963eb0f80d76b90c47af463b7ee49af2f", "0x2bb2ecd74be3c847c7df14a1c83937f8b24a3ba2744959a2f3733dd4cb777e6b", "0x10bd1d611707ebe4a82d2ca962e0054bb2b7631de85e3468faf005adedc2b931", "0x2f4035fdb1622d23d1b9cb82da64f9f7071d09732cf17a53ce842eaa42f365c4", "0x0fa7d8c17fa7018ad14f089eb8564bc9a7c157700bbd07c3a64ba258b8e7920d", "0x0b8ca93688bfb7c1ae365aeb344630c19d0f1e74b666dec2b00436f496bcc5d6", "0x10d685614a99a405413e3559d826175205a03fffd9b037ced90bef0af0db1a72", "0x068e162c6a02caee021d6f4461fb4e1ca1d6092a85d90044c3eb14e07c4e4a83", "0x2f6d6a0c4ee21296496f69a965cb8fe239b91ea81767cb82064a8aa5e27bcc56", "0x0c6a439aed8ec86b5ba5f2a4a045faf2fe48bb442d9f7521bef498d057c2137c", "0x1e6b0d4b88e393a9d915c013b4fda5a7c3b589872c06dfdda207e1d6641aae2d", "0x1b2116f8a7de6981e99425446c1b720cb44955dd4bd46fcc6c522360e1c6bd8b", "0x05013f00c86773de39c01ba3cceea5c0cdb0d882f199569fab37c440e25a8e56", "0x083d430c489ec684c164dfdbfc5a0556dd90abbb11a8ba1037b92e7c3ce42cd3", "0x1b0dfa5c2f0fa739b03b0bff40616c9b5ab246c29694473d6e23ba5c5dd98286", "0x0553fdcea1498f28a9c4a586d47b0297b237e59c2c0e7034459f79cba4b29045", "0x164c272c42e1f907ba9fc7af62e5a9dc836e9e7124eacc6dbc5cfeee3b74e5e1", "0x2eeee949382b74229a3a5f86420c596b8224220ee9c1d093cf965c2003c773db", "0x1aa7b899db428b649fa1e4672581909f15a091c301c527ec4a54c3c093ed6003", "0x2844667092565157f2a88a0558450adcc388e6148d2417cac3dff95ebd707303", "0x247c0d8658c6a57ec482adc5e9ee6bb67948d96c781ad98311e279b81f67ef35", "0x21621a3b3c6489991b000d1efcdc69b0a540d09680497d61e96284e668c9abad", "0x2daeaab1259ff6596d09ee4b567cda64ab0fb88a31783266e5d14048118e62f9", "0x1906cafe7df4f4a8359a4818a4ed5b6769cada0a2e046e2d6138bf8f84409f4d", "0x00c2adb51600bba92fc53dc2165f80f7053a1350be50f6268dbe18b10eba2b31", "0x26b285169225658f8ccc3040cd85c3ce1f447e47eeb7be8e3b6df38df3d44bcb", "0x1c2b7e2db564eef0909dc7753604a4cc5d45d643355e3c60321d24a80ed6ccad", "0x2dda3e9fc09d2c2e6d52a76bda84df106ed236ff956f127a804fc7025bfcddf8", "0x11919b8f4797e0ee89f05e0428f57833d8b5e74104814a6ab664de8a45887ef6", "0x127bb2c1e855294058203de7a73f055c6f42601a2475b1d75f9395993ada7b1f", "0x2c59318cf432b8e499a99a0863c914e8c7836a23b31bc758028182f83283f61b", "0x13b24677e68adfb873ed0f23b0025bb5747a5fc744353025d2128d447017ac7e", "0x2628fe26b4d2bc5f8e90679f798cd9de5a47bd2f0486514b6db4c70cf3c247c3", "0x237cd160a1d6ae30ef20c93476c9ce0d6066c0e7a5abd261faaa4bccceafeabb", "0x1e1ad584ab675d5b5a4aed3ca5b804d62c29733574cb9c9ada2577d876b99c24", "0x0fbed731a82174de7be9e047985673580ab6cc4194893884c9f51ea11ffe8f58", "0x0b441c8f1423a29a71b1dcb16fdad0316d5334a298fd4480125e6085dcff1078", "0x214e573a6c57ff7da396c0aa15efaa21fc0930c59984cf9c8c74dade3af961f5", "0x1b6e4364576e33a3cf54bf21c10a91c48f7eddbd9106b505964ae8e0b48a5dbe", "0x2cb60dc30aafc3a99f1f439eb34c38e8a7ab265de46f45003cf2600f3a4619a5", "0x081c0b5c56711e541bdeac150b0644a7cee255102a4622dd990f3410d16853c6", "0x1920f847ae83969af5be395a459838984a0db77310b2c8c533eb602908321444", "0x1bd14cb5b0950d3b4783c53d2c733a2ae6e914ec6015517039128b154746aef7", "0x2ca16700e67134be0eef329f561fb057867ab0c66a7fa1dad6cd60eb3c0d32fa", "0x23a4bd6bef7f4d21c26192475547245663fbdd3a251afca27636ed1dede95365", "0x0090204cbe550a36f11c9d12b2a56a6ae7399cffcbc1682d7649cdfa12b5b3a2", "0x1ae99456d0e8b238516a52067559e599207da285d037bed5c748f39a6f94a04b", "0x2c18b3a0fc4bf35beb9a40064a69c7d976eff45bae2c1691005cb835ac07f44f", "0x2dca944b91011ea9f224fe5e0612ec2021e2e311dfad8d8d52376b60dd2963af", "0x2ea90ce7f34c864596617fec562b4cd9fa0acb71161655957ad4615ebdf4645a", "0x07d2a16fad795f38267999a70ebdd9b2b24de85aad12cabe10855c2bd71bda2f", "0x2364415fc864df4c341a8e4267a1f3e832ea5143a4e2686e0d8440c044ff862c", "0x2f5c88b96aed854cc0049a9ba476a6ba61789e5692cf2d7d8d9a7cc7b9d0cbb1", "0x29902aaebf3e38f0ef39c37deb5e4fb0f32fcf23b74511a62146b3f79c25f6ef", "0x0e190e057ebcf02ce0360f76fd5b279a4fe2ba80646ed69cc7d568411e81cb51", "0x23097b82c0c75e53cb8084869e51400bff9e1f0d75b5252e988abe3562702f7f", "0x30180e17530b860901b1fdcaf23b2efbc13ebd49574e69aa6df159d4a9dc8553", "0x11ba605959afb5de92d0a0cf68945b5e660a59e6c9dd2ee4838a9e52dd37a09e", "0x19f8beeb3629ca17720e83269c010278231a330319beabe793e9af41518a34ca", "0x278f39897cc83610330db265f6f959ec983fa13838ba88f76aad034c2f90151b", "0x2349cabda83ae2bf55842e72b804b36435a49e0b2f8501f00856605e24dec382", "0x07279b75f7a7c121005c3b62b7d19dacab6e1543f12bd3665c31818c5f2c7aa1", "0x006a49cec0500c059bf61970d3a03c4eca079f3bea76bdb652c9c13eb3a57f26", "0x00877dc29b504019644485576670f38ca53149695b5aacc5c4d50108e2683109", "0x29494a499fd7cc4e34730c48b22a629b24d74a728300696f523befad8a329f77", "0x062086a3a24f3dd07219b38975c451b48409e3433eca86c0832070c82f6dbaa0", "0x2b00d39eee2b4106a70ea6184d95dc19991a0fc21c472717740c3276a9a9051c", "0x25c788dedee36b381925503dc1bfc81f09876364b764989f86b9a9642c92eceb", "0x0a339d7c3399eb0090f9ca887196f55e5927dde8682c37fc9e85005d0ca14e5d", "0x010fddd4d628eecc6bb55ec4ed563c9c9fbd76ef45c591c221e08b66f44c9575", "0x08cad7f09fcd6d0a763b153a6ba13d09e4fb910e98a745707095c42ac32f7cd5", "0x2ba8cf3a07138c08643263e2d4edcf9a4a47328bfda137edd4115ba0b3274d78", "0x280c5aadb92f1863c0ab20ca14b01b00201b21dfb71c1ed32959b212dde8e8af", "0x243c43be625885bfba5754beffdb8c4e2718bd1ae38bac39b66883a20324547d", "0x1fb8a7db96d88075b7ab36e71669568b1a88c0bcc572ab1c780303c569e4108a", "0x0f7adf6a27eb979d0a147b417255058e3dd399f254e1d1571e5a6025d85d593f", "0x2a9c20bfb0234dd219ac5933e7616040ff98d6f099b53ce9dbb76b7a21c655e9", "0x2db11a75d864992a6df56cbb1eb569da36927f43362e983de12b7661aa91f465", "0x29cd63ef57ff897ac5b7df3ba8ed72d43a24ff18a03caa4d99f1e53190cd239a", "0x14d0521932e873b6db85e6a3aab001469a168e978eeb4c1a9386190dd74ede71", "0x026a3e834054cb4736723d1d15a241869f8f23475d377e69e4a3731689cded16", "0x08bd8277459e8e0a8359ee5323541bcc1465b27b9685fcf0d77e4aa73f4a5ea2", "0x19f6a1b5a8022bd124d262a77499621114c87b1bdc8e8ac715f0d906b5f571f0", "0x1f99477db5031b0ba723b1c0c6d156fe88eaf78de09241f1f59e0834f91c0817", "0x07a87edad5067f361df3b764ef37fc31175e017d9635a6628cef9158f63d44b3", "0x264fe161c98a2c04514b92f20b75c21223b2c22655e8fe2f76e4ce8d2563910d", "0x25bcba83915954bfc6a3fe5bccf6ec56688ec209cf1f976a48454dc6ded0799c", "0x2742a82c41ae2ff68e524803a43e387e425e943a2847fd729227cd01b707dcff", "0x0a4bca229eb9cea967db5f8650f3a9213a7eaba0664529ec48cb4816a32f3e40", "0x162dbbf72f31e2af5a8c62975d6add0dd747a86817bed09d690d2095ac1f302a", "0x1d90d3a9705c5a9a1e06c777c9158d78603ad4f9b10cef41aad2b8008d86bfc5", "0x2e97da108e41920c71507d3ffc4198f4e403fc080e3193b63471e816d3aa655c", "0x2bea7cfcff46cb79828d1bd5bc4d18a375765bd6927928bcffbea2aeee454519", "0x2e5e54e0fc642d8a0a21df48310fe89d3ecb81bd2d564b2b12d37ea41ce66374", "0x2df4a44be5efc0c61c496a8cb723e9fafd7dca85ef9c5ba52c71a78ff2a59d9a", "0x1dda9c60833b52676cc9476ecbcb34ee7f5b759fc0f8229f1d645e38073fe051", "0x2f91eee054fa514321dc0aca21ff25af7381ca3f4ef09a2fa27355c4fbd886cb", "0x094327a79722ee116aaf8196c4844e442e7f36444ea9c816948410ff111e3503", "0x0e0de329ebc013684671aa68f0f5c56a65a3c7e31b34af28d42e7db606b2ec4b", "0x0bfc1bdaea3997e63db63e94d43074ea379d5d5f9616edd9f19c1787e4875937", "0x2d74256d470e8f893f5a6a127237c24502c9e10567b892f7714983d142d007b4", "0x108523062a51a8b428eec2a66284bebd07dc1eee904f4347083fd1120649d616", "0x0c5a805d2ec7e6b3201e4954184dddc7a93d39fc221fd8674b33b68d65ca9e48", "0x172a06215673e0c0432c98acce1c426cfed640850197e72fe848b33efbc8808a", "0x0f65d03fccc7537eb1f4fd6c5cd05fb04b40396e99328a9e9f344c5dbd2a2e9b", "0x20c30ad3d6b572577a8733996093d5b939fb80f2e7caa53f0cc967c334dcd6fc", "0x0373febde10260fefc6ce9670914a9cec5c205a75d23def62e22fbf31a61dea3", "0x2334bac29b92db769c06308b787943375ba7e4560fdb741aa6569de8d16417db", "0x0a3e20c8a61c8bfaecbd65e43b13a59382b021358cdbf7a99805d65822f437ba", "0x00ea78ba65528ac7035e06fbd9be63a50e0caf8d0628f33c7b229d0931aa6f05", "0x0d1682fa0a924b9b3511188fbc8f21dfc6f9ef8eea1891607f22b1f9167204d8", "0x2844a8efb853b2db634a3cf36ce7cfdc331e7f32b0035d6705dec154b824b4cf", "0x2a2a574661f939e6c6a49f90107a2b54a0002022f963c20c1bf8753c826badbf", "0x11cf62ee06e4ab926c482f35525a5dd300a259bead4cd8fb9496ca06aac9065a", "0x29045c7fa9c73fc5b1e13499d171a16f376bc8b812f2654908b5ecd2b8261769", "0x057e44377642d4f3c7c1625dec2f3f4d22e915c7e90552879af016f7a1665f21", "0x258c4640ac1da995bd0525fa9162d7cb3a5d9b267d044a8c3c3c4310e68971fd", "0x095ee6ff5568fa535092d74c16311e477b7c62bab5fd585b7d4f1bf65ab4cc6c", "0x0806951088d6f83631a371948626f66625800d5b61eeea63d0d53f1c46ae4e21", "0x2e8cac5fe2f70b026d84f39f1bc80f3ebff2093625a1d44d8c9498a3172ee2fc", "0x112aae3d8032ae80dfe027a70961c04d17c99609a38c2a6e6a609ebd312a114a", "0x07f1bd289aaee1f4c2832bcd88746343d2128b9826f18ff47a02c604e04b256f", "0x020fb251f294ad1fc3d553cf9dc532cf2105d28b419cb3379be54f68384d3656", "0x0a76309ef4f35a0d942d2adb40042103117f8a92f8fa22713e5c8f4630a33aff", "0x02e338a6e276394e620855137d23d86e73b6a9c44713543e6ef0ca373032b662", "0x11277c021f4bb0566112a62d02989f306be3d6a61a55d6c2bf32b9b2d6eb488e", "0x0e416f597798c242813d07f02fa3f5afd3cd23eee8bec05ccf32280d2eaf0e85", "0x1246e80a1e90daf8f50c8e70a1973229c1c0476a262df79136087b3b252325a7", "0x02e7f56ac53002afeddd2ecf49250b5234d40ed25924ce04da52fb13d8197db4", "0x0b383f460b713d1af2c2721ef86ddb9ee97b4d51281993edb77472acee552822", "0x014c46b4a3f25b85a2d1085cfda812c8ae5586600b476acf5e6b6145ab449c52", "0x0ba3a95d3c28b392f3957569179db635593a9fe5eaaaa6410259cae7a66ab635", "0x02bbd2ad310bbb5d2546328872c54b64e25ab05e3477e04ce1f03021ef31b90b", "0x1cf0637ff2abd72a4c5d8b24af9998fc29d5f2fa62ab47914df14e897467d0a3", "0x263acdf45d079d43b1436625d9c3229e58d82daf3a40bf89e2672ff6785ba580", "0x2811eb97a600f13912348f4e9af47d30dbe08050ea0837010e174ec3f3acdb84", "0x15e681960836851b15c8e9896e91d65ffb1bc247794c5900e68ae82f1cf732ad", "0x1a1bf5d7b73d6cb3ddb0fcd106550674cf8b492a86440f90994543471d554405", "0x09137e8736492afc6d714d854ec1bd8c0fe63d4029ae840e6ca05fb3a8b36243", "0x10075a0236e3c6938e8acf35759f8c19c8630260bd8e58716edea970ec02ba58", "0x126344b41cb4cfdd9d78f912e02ee47059c09159f97c42943c5d2b735b6769cf", "0x0472a9ac7f6600881089a175f3287ffdc01fee5780a38e1e088b06f047024c4f", "0x0e52b1a8dc66014a14af480b80c8b3fd99592633eeed6cf9506e4f6ca9bbb8c6", "0x190e307e6626ac796ed7c96932800d3f155ca89d84c0392bb48a60b009867540", "0x19017529213e1cb331a1d076be3254c8ee5d9ea4005e9395706ea0f918491384", "0x1889decfad56cb14a6e2928091550a4504fbabcd71a9f4e3895367adccfec767", "0x14b3798bb27713b3f92fb086492367335424c56e0e7bd9ac39b5585fb18d0067", "0x217faa0b7866c660a700fdaf3ef0438acf44fc73cb7eabc5fc190b64ca97056d", "0x2bf465cb5271fe563121bb90877a821d529fc815fcee372474ec02cf398f9bb8", "0x06a83b6f33415934cc47c952b7911c5740d8d56de6a34837dcf8292ba823811d", "0x26bc4b7152ec95967de18162da0400a2b369c91088835659da957d1ce2b49e7a", "0x0d9bc3639ab1e9a50234c10d7041ea2220bbe7c94163188fab1f79e656d13b18", "0x13152f0714ede97bbaef3a29d44fb441aee818dac04f11e4e5c6a4dc31c8cb3c", "0x1afc129a674ba4ac7552dfead9ae8d2d584dc7e4a2ff2cce5d3b6f1350e08d27", "0x28498b045dd1b9b56e558065e0d7100675fa16284ac0ced1048e07c280a1745d", "0x13f8baf6efc94294c82829f59da2ac86191b031bbe2b2fe332cd302cd5d946c5", "0x2b0314eecfcf61ad7d4c6d8c7b95ec7fc99ecf8a648c21e23fc5f1946432f790", "0x2bd02329f573d05bd14eb5971f8e6df9438e8ab78b2d37a68ddb1a845d4cddad", "0x2f121eea462e2dbe253184030c4c1a59fd50fab1ac5c49ebf621f32347dbc0ca", "0x0b11ca165736db53fffd72e0d939b16fd5bde07a03678dbb6fe1302dff3abe2f", "0x244d9d9b9bdbf0a622193df5b53e533ae146aeffbb95815c14dd44340e192b9c", "0x02dff8347e64c0966cd327c431d42bbfa8e43ed65d58d452d2486f2affb4fcfa", "0x22362991babed59c5de9d9fd96a339ac988181b256bf1aec52a3d0cb8952f717", "0x0b5ddca04cf6621a6f22b94b90395a58fa8f1cf296fe5beb4049c7565f4f2a50", "0x03b3edc6b3744cf0578b2ec40d13a99debdb6e71973e0a40d265b99a54d6310e", "0x2ddfd9a5dd6daa9051779120cb17ff9046ede5daa24b5c33368fb84b55bee38d", "0x2e928f258564f11bd72156b627f0374bf8a557c49f88598ac940227ca2f59833", "0x0f970b4e284e95a97909459a34a03b90dc9703b24f9cf05fb5250c1a24861071", "0x027a802eaf2f9dafe4845f9b30907fdb39fdd9c44c5d181610f55882b7b381dd", "0x04ac7bc03182be8029a8440ef875a248a480985e693fd4eaeb92637c73e89e31", "0x075f3191afbd21d51497a26c524665de743157121f093c120d93e180582eaf8c", "0x0bd3be9213121f779c2b2b0a024be82b518e1bbc134a65f440c4476a9eaf585d", "0x0c9bce95f2d5967d3b58f93d7e03c93170917ea53b5f8b27dc70a1faab474cdd", "0x1e3b04dee6ae6635722e354655f6032d1a5ca2e6d7afa0c77b0be192f4f0c6f2", "0x0c1fc33b93195f2aac03fe6eef3e4110784c7c48322e30ee51cbd78f6ce9d93b", "0x2ab604267dae12494550e1ef273708dd11c17666770ff0cc7c077c935bf2af8a", "0x1c69985ff78559519a0052ea05e608e35cace62db7eccbbcec55af3db9156468", "0x16334fcd421256398cdeee08a9345a527decb71a01eb43524f8d3ddb0db24d48", "0x07ef8dd7665152f85d00939cfbabcfe37e2b1ef8a77a84568aefe01f1e9b5ea9", "0x0dcc426dc88bdec8c2848f2d88a200571b8a012cd0870fc6ea0b981494f58278"], + ["0x304c29aeb6f1873847879576d30f1f6e8a3ce41082c15c7632df920d6db5164d", "0x2b7380d8b25bca649b3f8bbd0a86ae417109069be27066f46fdd1c7c87d4c40c", "0x04c77200e5494b1cb8a3d334f69ae5bafa7e8775ba1924e563efe591eff302f7", "0x06c0b8966df93080c3ac1576486e61ab0d027637aac41bb35e482bfa10e34fc5", "0x24c73f425903904f40dbff590225f251ce1980a5a5ce2d07ae436e1d090778d7", "0x23df6f6f4448273c745ce53d5d7abb5d26c46724a58d68844d3c3ee45e9b924b", "0x1dc1b1ac389280188e937566071b84bf8189b955d0579b6de5ea8a5136bc2ee9", "0x27f71c5ca774ce20028b8140f144472043917cd4919cff64d848a745bd569180", "0x22b2ee53b302ba2e836b98783e15eb6de9d15a72cc7caa374e61b51dd0d2e2c7", "0x254d85065f87271e86d7b411d6acc280f9ed257c098c9fdb04a2ca4df7c7d766", "0x28620793f378bfe881e098bd2ec62beb46899f37a54abd053cfb0b3bb8d5e754", "0x2c19f26d0836635b04f38fa30ee5c648fa0ea1b202eb0846821acd3c699cf061", "0x0f9ed87e9a1ba7ee7c28bfd7ac38ff3ba10849fb04d3322898ba9fe0104fb445", "0x0d1deff42263b7cae8a123a1641b7258015476161ab881e1dc20e165b3f04579", "0x05b275e07a9e23f477a9f0e2294227286528ddda6dc74484d76e6aaa714db5a4", "0x1bc255052aed9dce37765bc5a95de779273a96f4bf4013542588b09783ea7fa0", "0x0ec2286cba99984d38c3dfb80cc08aebf79a4af8ecb98ffc53ec4abef79ea6e8", "0x1b05bef71fc396f1be97c82c082d2f7a4d8b32ecf30c19875409050e3ad35886", "0x16e93c7eed0dc0006958d1824d0dc740b5cfb8c986fffcf1b61d100f29eb69a8", "0x1ac49ebc00e374fc647c65981dd93adb8998d6128b917a6235aa5623ea461282", "0x0727bebb845f6d4744d3ddf12c2aaf6f2c2a58e04571ff17adfd905cd57c60f3", "0x1d5659be4fa9e713d3e428c29d34f9ffa9ae0f2aca3474543a20d6254b2f0199", "0x1316e470b54f0dcd5311b6a930347bffdb833901e02448a9419f127f8642fd77", "0x1f7182906e184bd88594ca2589ff849eb2daa30caf8cbf5213ed3fa4747e4581", "0x1319714ecdc7e6bab2b7cf57d8b088094a003f2d4f88edb0d0bd8441b4cef318", "0x088c106fdaeb323a76f94a0912add1b66be216084a42e14bec597248e017d88e", "0x0fb8ab5bdc6168d1ad8769225641d0b5eb4ff8fb5c609c661da8ee83ea2a0488", "0x2ddedde404858c4f097c6c8ddb66a00381635c4f155014d3012ad1daf790345e", "0x12d92b7c7a88c9869f79fc61e4ea1c1c881bb1320c0b7787c6437e230b58eda6", "0x21cad521c1abec464be99a77f0c0f792a5aaefa104bb7c036b6c8a405050aa4d", "0x11047fba7de2a553c3ec55251768314400708e617c9bdff33a49663ca2deb319", "0x2904529f4fc0291449c3af18fc9f54722ad2c751620d8f6e0e1f2a1382cac5a7", "0x121fe62c53f68475aa2ccbe28d58aa74a2abebb2658422cd6f145c2662cc96a0", "0x0ddb1e4ea7a6f367056eedacf793b94a5d37dfa020e655e90711306dc7142d19", "0x268b44875f19ff58a15dd84f4bb64ea8bacc7dfc04d1ad861910fb9942a371ed", "0x09c17828425de5e93c9eeb82d325f770935de8c24584591b744808316590319b", "0x230144d2945f1475376bde7ebb437cd7358d501b9c954f67e06c0a6e90ab3c44", "0x05851a8847cdfbc802889ade3444a577263d93718b2038a05b05bbe890a98891", "0x29b5ad2c6282954ce356aa7c31085eb91b6cc49ec6bf139422c39fa54eff00b4", "0x265fa1838ae2f6d591b8f33deb78d3d7c9ca14014170ff650618b601443be916", "0x1e87cb86588c69bf4f9eded33f03d497c15d61b0e48dd04594df336d8793a23b", "0x24594f115063f9a063ccb1a580e8e9f042526c8ccf6e4bf2a6a273afea167f06", "0x1d052b0dd5715c889194fe17e83763ca6f7bc79a204c4c40073bc8a516f934c8", "0x1e7bb691e67410a24507dd9a5cc323c0f86f97b842bc13ece75d88c800e76049", "0x2b7558d08ab870d30b18663ef9c710f97ce4c49454d34c4bf714be8865b80c76", "0x14fea23fd7fadd53c9faf43e1e30c1e426668d0080e706389f5d44f8d0cdb448", "0x0d8f85ff6b797e9a28f4aba6019337412d7a778c3b7d7ffe06d4e20864491add", "0x15d72cb12a8e6d3c9c800f96fdad51cf24527768c9d1334c608084d5a0728cc4", "0x25f75e361c26495bd9e51468aea168f9f097874e562d727f030a8cf5d8c5855a", "0x28623a688686721ccfceda6c9d786832e02654859b8150e21cf036fcc154192c", "0x0031e707664a432be639934c2b2daa575750cc41f840459d85a6d6d7d8abbbed", "0x0fd555d5513b8c6945f97bb6f3a5d3b1ff2ac2d81a7612f12eedefd222bee1a6", "0x2a1fe11753b7a8d0977038be1276a355857ab20cbe4484b08b150a46c8e392d5", "0x22e7970da1008db5772bcfba19eab45385538e2545fc20d950a60f840d9702a5", "0x1541fec85090b07d8856402ea224e1bb2d8a8a9d1192b9a13dec81b8f69682b2", "0x17c37be74622c608e70301092edc69ebd19d17be9a0d44bc78944a309f221cd5", "0x26032c97bbbb5c920e1208592a4f5246b11d4d78d63aa195ce386285bd0db4dc", "0x2e62d73cc8ace5bc12f5e5aa236ccb730830fda62d6dd935c6a3c420fd9c40eb", "0x2f026a82b15872385978b49c6b6b487659e4f5cc394de6e6ee4aba26a104e229", "0x25d29761cc1e49b6614ac429444e19c070b6a24ba90e7ac726672c7cfc363270", "0x1ba97b48605e1754e7e17d1af7ee496e7750fbe6165caba1529c89cc67f27911", "0x275e5aed25464202f1b713852b4730275b1ce92153d025063e0a15fa077b51c0", "0x2b363e45da3ff37132430409c8008ec685b22ebfe8438df6d3ed4a787a762e65", "0x10ada3d922f994d88afcc40cd9ddf995ae2119961df6b1daebadb62262f43f2a", "0x0a39ed164286e39b01282d6519cd022111dbd0ff83ef1556269a63a010083341", "0x1c37d6085793a30c47d92caf677c0ce0caccd2982bcff18078a46b1148cf6310", "0x2552caee804699d4d6ca75bef4a58f7408f97ea307b448a5c40d311298562263", "0x072529903f5a556c8c51e143c97853540a956bd3b9502b1a43fdfdbbc66a5b2c", "0x1a9611de6b18894ad967a44f129f48af82eff2bd0fe40b0bbee63ae07bc8ab76", "0x0a014cbedf93be2a924b9aa3253e8f832845a8562d459ac932bc831e042524ce", "0x08642d914725572bbfe7eb7f7b45d917b2d1debd3c44d3636cbd6617c129b24d", "0x09f8138cf03fdd6bd110149c68dce4ded8d45206e8016fc7d3ce6e2b66f743ac", "0x1afaae2609ce7d15c7ae47509767687a58ddc2115367151d6f38d2ee3373016f", "0x1e273929c27ca3f6fe04fbb488fbbc1d945431fa69207100dbccdbe2610fc984", "0x0345fe0b8fd130b8e3a3b2379acb34ef73feed141b806c074621a4e051c149a9", "0x17a3a98a7b70a445a3aef301635e8e5e8b277eea1773061eb9c5364f1f76773b", "0x0b124c9ab4def719e49619aea6d374bb2bdd842d5b8b84eb55665334c1439170", "0x20acb7a69cfcecd60733426ae5a7472db9b886e2f11369aa9f0f9270440cc1ce", "0x137ac68a78893aa457ce3af79f84a52ed31df7407c5feb5ab4b4d9aab3d479c8", "0x2822e5e8243c20edee38cb142be3e7d7e005d274fc346522f531c1ce0b0560e4", "0x19c53be6b70cb5c79e3e420968b4548b3ee55dcde0ed28075945b2ae8f2331ee", "0x270a91c925ede45c008bdbcb162d9d532717577a01ee948e0a9913ecd2ef9d2b", "0x29ca3e6811d8037a309296a3fadcd7371e87abe21eacb37c8f4ac7c98f1d48a6", "0x2fbe832874e6a044a4e5ee1b63fd7da24910ed685e1dd12444b80c95f959b91b", "0x2b10b943bc42b1306ae3c0c962fac147f158d9e2adfed079f4a8b7cb836e998d", "0x06927353ce97f1a2c75b57aa42d742974a60dcbb13586f9999e52d42b7bca433", "0x08819fee01c9b7f8f1d987fc3f2cc70de7854ace6de0728ba7a0e7a5d721917f", "0x05504a16782e9c95d1870166d6ec853dcd2859d0d4cafa6d320709069e221340", "0x0a6c9c3c69e558408931240885e4edf91e5448230aa020a59721e94ee19c4b10", "0x1638a245b63546e931ee796d3ad7f8fdb1f7373169833aa6ddd4ca0d3499693d", "0x12b5ab3d45071d84539be772c9f468c8cd6efef151a3f5b2b52b86c47c9480da", "0x2f9d04c7aaf854180b7c9943a86ab766f1c61f8265bffb8477263b59999a4ee4", "0x11709a242657e17727f2429c6736ed1bf6c756dbba899aa4eae5ecb6c845562d", "0x029668f5f5c4a3246bc3a86f22132fc0cfc625666f99e640dea0e1da7a9b5670", "0x2b613d4804feabde47da71f26e13d61428f2781b9ce1fde088902decf515f322", "0x25f3892eb57862f0087557ea0e93867d2bcc0220f7da2bc073ca276d750ad83a", "0x2103f7a5214f40e2ff64474583cce0914d2e9a4efc022f07ce5cbd791f543271", "0x14a8711072a8aeb4e3c72bf7685120f2325b64f906e2c1ee31f6afad6c815138", "0x2d8200110c740dd51bd22f4267cab97934e5adb86daf1c2f0405c2781bda7ebf", "0x05b299e405131bb5631072396c5b57cb87f50d070f196533bc3f0506c8ff218b", "0x2595e4e223f843dd01b550c5532cfdc51931fdc340a11cad1019fde0843cec87", "0x1ba92bc78f26df3148da920c7b4084f015ee164662a5abb3c94acf36f78a957e", "0x092caefded5f804924ccf1e63543d61dfd570007a1052abb764983233cc63e4b", "0x1c0dfade3ec3d45119238c75c700b826a422ee02f45431ec110449f1f75675b7", "0x1da05eac4674e99b9546876461369aca20e289e67d052cce10fbf418b0a0442b", "0x05086928cbd0d49403bf4ad6f4c626cbd48c1d9c7a22957306f0bddce9da919b", "0x1d32f71e4dd99385a2929a02b92912085173b482548e1bc06efb3ad96fa31170", "0x18fe8945c081f1a9937e20359578cbdb19343ad0ac50435f26dc8193cdeadbf6", "0x0c27a1469d7c1bb60c6923587a81bfa0517587a3b0d3356826a45c3ac8afd4d4", "0x1a0bcdb274bad54e1c3eca1e4e14eaed3bdafb0846b4fdb41c0cbc6efa4900c7", "0x18c15a3bfe80e4883601664288df62171afead7dcaeec0fbd959b3e7c6a8f768", "0x23af2addfcecd8cf403bee8c4dca81fb7c978faf147c990f260f115b2d3bc8f5", "0x186efb35a6b23d406efc6237e175dae02de9c44e5dc2897d5633cfff571c939b", "0x0ab171e95c605c6d5361ffd31e76ff8e4eb82ff2da56d659c66902e9d392879d", "0x1226226d5541e6086fb775843787ca537dba5a9684ba87ec0de592cfd20e88b0", "0x246c77e6d2858a34a3ca29d3597611adf328a4a2211f74d5fd04dceca9830c8e", "0x0d7495cdf807ac3d6184c18dd9e858b250fbb37c11a29e6291c12540d5e2bda6", "0x230853ec47ed72d1ffff83abef03b5ff7678f2e104b9296d8d29430140e89702", "0x141d86088c6316ce0dc3a560961a50f0769cb7de216689077cf65c6245ee76a9", "0x1fd4fda571ea5db50bf9a375b7e83ee18dbedc37914b06646014a50092a81e26", "0x0597cc1432a973d83896fabe991e7c2a537045f9a8ac612ac766a37bcaf9c9da", "0x16dc93239b74eab89823aafd91397dea7a5c2fea07e12e562afe2a94e7f33cba", "0x15d73eeee6d48102a0818cfe70ab0f2add92ebb7c8d847922aaef02054280414", "0x227c8330e2d7a7de907eebe9e82f7264c16de97fb23f4bc0d563a7874bcbf578", "0x1b952fa7b0d9dc8e9f3c52a957468f492a2aad45cb2d4a5037a474a6b3231afe", "0x2dfe192bbde5da75c175ac3265857bce905aa7ecc585ad20f4997f67a5042e44", "0x18ce1b58bd3f2bc554b746e90f188a6705f842be29f85b6a672309909fec2156", "0x146d5f383b2efb9962e773afa4b086c164b0aa5306e537745f15680a85f6a1b4", "0x05130082aea77203ab1e2819d4704f0e9d723d06c4579b1bcff7b9e70cf1cb26", "0x0122d2c1c48550ade6c88d3498d7ba8395d44776319f12648c14cacbada6cc30", "0x02be0dfc2a9ec2844a58563f8f0115944e9a39a8fbccfc3d79830f4a494a429c", "0x02362b83ecd5ac86a908533a876ca1738c844425822fd0f5e0646c965e94cd99", "0x27343a0ca83b7cbf4cd78fec7c2bfbd6452859fb0f7b5c14f62391a8fbb813f7", "0x25f66e4c31aad3d3e8f8940302a771de770c855cb7fce3fb170162449950059c", "0x1728135861261e3f1995b078af0a0f1236eb457fc6201c5aceb8c93f87217b63", "0x153b4d75654c5fe604fa2fc96bbb6a0ef1240c8281f8c0b6432bf1a529f50eba", "0x1ef294fe797568f55253c2f93c4a32ab6937a1332bb1c412b8cc15e74b3b8ef8", "0x2a5f302c49a8c8fd6e4dce1e265bc6ec0eef34cc46136f9cca664273ac3d8eaa", "0x23215a1413633606a8c8f22ba642bcaa8fb559f7cd322cb08aae796735bd5270", "0x1329f0d6fa9d80e536ed120858dae6e51376624c7daae3ba79795a5525a6c484", "0x2664e9a98faf74e1416aa645b64589ddecb3bc2c85f9a89688af7db70ec60285", "0x305d940fdda525f49e235ae6d25f9d4471e396e7bc3a133aeece1e56eeaa7382", "0x1271af6fd004b867484dea1dd43cbb5d58d731dac6de8dbfbb3026c17331ea9a", "0x231fd9e11aa688e3312731a6a027ecc1331516d00d7e30788c63521aa9326251", "0x0e19fcb863828bab9d152e0504ce09fa61faa3e0a23c02480ef6f866655d575e", "0x13030654176b06afcb611203a2369a442e863b3c0d1c88b89cd4c7fdf4f9ef06", "0x1fcd60b9a522c7405763bcc95462d77c0a36b4e952c461bb2eebf1e842854559", "0x1bc1cc4f122eca17b951451c773472f0a3f6a57c185319ce1d2de0d19ba1f21a", "0x02c0318563dbf99ae636bc012bf310175cabb7663f2a6764cfc3d67d186a21f7", "0x1cbb1a2a490b61176f9045b4b0b60ec03f12b15b30555a3932aa3c1ffea6b3b7", "0x006796f10e9ba669dff948e86fd462dc5cd95ba8079b02c2b2b4ad1e62fa37de", "0x07e6a8fe4a4397ba709215c5ab272f3c541465cbd8e43653dce2f59cdef8dee5", "0x284e093c985657bebe96bd671120c92995bdbd2c991cdd4909309cc3722b5ed3", "0x0d2071dadfd269cea8740cc0299323cb6e1a64bf123dfe1af98a1787a6ca3c04", "0x1945b6f5b9cf94b95d9341fbb6b8b4b7b461b96386c1e9cf3c7c4e3b2f083550", "0x1576a69840a50e47e5ab4f21ab39d53190038594ec599700415e12c4692b4678", "0x1d9f7484194e9043958d6ee7c8a552c0d25f9587e66cd899d2cf029179641675", "0x1506003f39bbe412e1a0a4f2a57db29e29af2ab61006382f6a1d4ebb8c39437b", "0x2245f77edf9eb3e22d647853698be8a2783facf92b14b8392e7368a459da62d5", "0x1897e74c6f1bf3139060eb8049b95328fff4e9db9260eada1e55346dbbdece3b", "0x209ff86085273e680ced957d0e4e165c78bd9670a24969e83ae8b0db12638c3a", "0x0622ee9d23b0c61b05845b23853e40d88d73593ab851e8be3b338ca7ce8cf5af", "0x2ae0659e9e749a47e3e0d244862ccf5fd6fd6e1af0b28894b4ec72940774bd9b", "0x02c31714e2c67c045454653f1bdfa47db03928439d44e321232023ff4d2fa0fa", "0x1c4a827874bb4a455d790cd7a86672634038bafb12d3b8954cf3a3faa87ffae1", "0x134da7e19243eeb08e0f7e68eaba7641e98ec35f8ab77f134dd10a8adc8499af", "0x15f65369e51155ed42a0d50c3479d7b880cff87e81765a97ce8ad28b9de6725f", "0x1081dcae10fd7fec12a3328a60678c2d760133860cf30f5e45a0fff5ba95fb14", "0x28206b5cd44cdb7bf177a2e3d60ae385e3ab2c7c8ef9daa9b3dae35fbb992678", "0x05d9355306abea7a1494b4875f06fa9f81f4fb0b85524aa61b03aa053baf43aa", "0x0869ae8683287423383a2317ce58fcf88433bb546675d6971ca292a0f00aaf33", "0x0b07d8566ac61df9c2fabe8d4062d8fe46bddd15d08734a4eedeb91dc9873891", "0x025dd57a9bee5a30ef1291f0aca75d55f20d11f8e0f2e69704013830f26c22b5", "0x1c9e2eee7d79b79e19a01f617f37eb8fdfbe0420f3c5fec58491ff136b459f2d", "0x1a053731cddfbf2d58d723ba5d50f874125755c8b2c236b11a2fae3eb15d154d", "0x109dd67f06c490940396df6410636f6535ea7f2b8eb9baf8e3be3ae1da12b374", "0x1b8e939a3cfb76056a4793e85b1b42fd38059856c1a434ae7ec90be0407f80ff", "0x1bb4549873191701fc74397465ac489ac5adf990710f9ae59fc7685c489f2e31", "0x0d971a30765153417cb648298e392f4f61defca06a05b4e423b97e45c8ce15e9", "0x2c58f7231642e86db82dc34a11ace0e87c24f9a1bb8e9cd926e073f74a96a3e5", "0x1797d37d7ee35e50dac62ab43434d3c103c7442b00891dd3f8bf0dad7d7f44a4", "0x147b1cf0b44efb08f03bc4924877bf51ef5f7a4cf15e1adc57253a33f006c607", "0x097667a035e3b304702995a8e51a212813913fb94c8db886c6c4fadd5261b744", "0x01d653ae96dc57c1bfec7cc425b328e4f4a7e017621b6f528188d2fbc5ac8460", "0x1b39cd9f113388364c77f755bf1fa42b706870d61dbdc416838f26459f4a2630", "0x25cbdefd82649ce519688b4e4f853341c11e14eca83b70c6bd27efda86352931", "0x042289f519c5c7e22728b74ca92afa8ce890cedc07a70547fdb8fb7e467c8466", "0x1cf966e94f1d7c69613fe1871f2704d239e1804179dc7ed1301dadb0e10ee728", "0x2804d255b571b9ab3f54011b69fefc0772db77f529cefe27eb0acf1e4373511c", "0x2b274b23b66d9d561d057bdb7ad38a96341b953943a4bb361ac57f816b44ab98", "0x1637057ba7c5dfba78dd8e38a2e3a8a4141ddc2dfb41598923f66b5ef886cb71", "0x1e55cde5864bea5d60d7c1ed34e6036c007d76d91d0929e81e1929f6305322b6", "0x1690e994aa14899d93ff21ab98ffcae9692d7e3f00ca258684268c06b7c80632", "0x27df430f854092fea91a08eb7e40570382563b16c78c12b8e839e7e7e3d723f3", "0x262c27865c6ccb2920d7a8d7ef181136cd5f7788cae7ab9be23c7498d23d9e0f", "0x14d8d4ec65500428ebac44b267b322e41d5cbdcabc277ecdc3cee7838b0877a1", "0x1d2766558195a3ae3031bbfd302439b08cc85d608bbe36e6d8c9aeea2ea0b66d", "0x11c2be8af313169515f4a855d0d71e80eb6167bb88d3533b70f818eb0c945cc8", "0x20c9692f4a3fadfd0ae3d2f7a78ea300a4417696e321503b0b6aeaebae7e4549", "0x28cd4e2e7c1f3ec3343e44f6cb1786c25dff23decb785302820d0dbeed3302bc", "0x11f34dd9733bd3d0822c7635dc976b2cc2f6707eaf4178561ddc5d4f563a27e4", "0x02d6c790965582a05f8e3abfd1e069e414a1df5d86a52db0fb57de9201d9b964", "0x305025e1c03aaa1a9b43123fb9f35399c6edcf30dff7398320a78bda920b1ba9", "0x1f9a91691a4a3aa765c7303f4b7ab8ccacd4d834f5c8e680687053eac7b86323", "0x03f134e018dad8b80ccb8dd780c808d3fbb1eb2222c364a0a3129048259d29dc", "0x2d9cdc3b3ca2467c237dee666f37b7e2dc58dbc59e0be477248961efd6782b20", "0x0f437d8f3cc4dc487e8971b038a11324b7a984c85cbf698d2823b2c3b71f485b", "0x12413aa63de038cc0427b1acbd24ee2ce6cd19b37149c6ca761504fc1e39904f", "0x1e42cc0b2b4bf580173dfac63ba6210d195e078880467cdad8774980a186756f", "0x08d62b4ece35499b60d1beca4f23a9c3d39bd6798dd9818f95a9f02e70757ac5", "0x2924988422b3cf13ee98c513f4fe249c3c3fb944805288b50864c26c2e398875", "0x0a797e9016f8f52786057f1b2a3cf50fe20f1fcd98346a958e4bc1c50ee8b685", "0x063d8222baf254dad1667f6bdb24c860ea17a33121763908e8ab1e9c3ea48fa8", "0x1815d8e9cdcb9c3b7d19759c898b078a33dfa3a38f3c22f1ff4550363603cbb6", "0x100541e3ea8bf5921eb66951943b5fb44530076330d19c6ccc49d5fedef81589", "0x13ed4a0f7d5a26c05266535f8eeb1eca63e346fd7ef20db88edd1d1b05ac1fec", "0x217fb49a601d07a6e772122074f7bae116fe2061315966ee39e7b3cb4f51e2db", "0x1eb9080e0f7bb6f01b3b05f9c60c62e0bfa768276e9e59eeaeb63bbf06f5e127", "0x0211d02e9d453de842c6e2744d5ce6557a3faa6467cb923755d543abfd302094", "0x0cbd5f7cb609c7e5adcdbb25f6f0cb74da626a4254afa409b9d2c1961b4dd4b5", "0x13ec6d0550258fa91057b0dc06d8f00a47d40c05aa124dcd1124c59f4e22635a", "0x1258ca1e77cf9d67a8ba02d1f665bb405b388553a5cd9d6c43037d0824ac4bd2", "0x28c5a7824391b529e9adb062d3983826ee1e7bbbdcf2050aa24045b2d5acf8ef", "0x19cf73a54ab1f2e4421cf88acba44776de1741a0b317cb5e1e2012df57287bae", "0x3011455d11c4a1433e6a9f6ea9ac559527d7a17a0191686971b7836a3170731a", "0x17b7373ac5c3f3e20d71b349aff449c73d41f34f1d008140ed5829cb265548e7", "0x204a96353538fe08da8072b3fd97d64b245e064d9bc901f0c0a18efbaae0995c", "0x285a72987d0f0f228cc694d10def85d22ba358e744825522182daafb14f4c258", "0x2474bb9f91f6f5401fabbce0f102f974cdd061a5e57a782d5b239cf7f8925a96", "0x1b45841eab52a5105aaa42cf7f6d8acec5c06ea8a8b0ee13ed691477054cf5a4", "0x0a3a4b8bc77d458c8eb26352e92b685e00602a68dd4a9f13cac10e88ce972ce9", "0x2cab4c359d890a1dec1881d24dfdbff978218003735a10392cbf6049d5cd382b", "0x0d0fd0694da677f99a809f785ee1ef067751322c28613929a8fb7249d3e6787d", "0x29e4e09d975b50201c40a8bb9750d31f30ca3601e110d17bb21c5ff860727a50", "0x115efe78f8b2a72e8a213c24b1f5c6efe80f63470439e678af721a0f04221370", "0x29b3ccdf150428583feaa28461cf1ff1a4e49aa92f90c6f720ee2fa89b589031", "0x2eb754990f68975867e35e9589436414b88a25440bdc0886623f1a568f516077", "0x0989335bcfd41020ca856ccf61af50321eb1d21ce04d1581db0c62043fa209b6", "0x208a9857b859c3f620169057519050719043b2d42c669ffd4b681a1e52159150", "0x0e7f8469184f41a9eec6990459221b111b01c5dc0fad09a985e31576e0000410", "0x25dafa7bc6be0a1f9fd21cbd71a64e56bfa46fc7f27b2a7b135904a0f7672e6c", "0x03da2dc2049d07c4d185a16a29800f785bcf6228cc891f1ce30156fb3175ca1a", "0x047b5ff19a973402f4621e51ff3146513505687f720e2ec080b6e44c46881d3a", "0x299c01d6095a1d660d4e001a6821f800e50efa1366c25656d144cec3b0294c65", "0x1662d7fa007ea31e89e692ebf522794e2d106cd844f8f0dd5d0b5f59759e44d6", "0x00fe4cd065090dfef40d074039bd06228c925c77bced4b25c6eb2985ea6da5e6", "0x282e49e314c31b6d337f417e9da54ac7b686fa6cfc1fae8b58273353be658678", "0x0e6cd752537a9180b86fcbb5ba8571814c7780b2e486697b18a8dc3a159d9fbf", "0x0cc70cf2866f123a2cdf2cb9e8a238813b0112de364fde0552d38062320bda5e", "0x1aca51b94c7479850d3f67d07a710f55ed784d4cbbef6f045422b80b438e5d07", "0x2670a1cc090bfb1db16c528c1ad51478b58db66adb1ebbbcbfe69f5ae47ca844", "0x144b566d3667faf0eae3ea9c8c0e4be553a7917bb6f8c45938036611327559b2", "0x27b0264ff594fece22cd26e6092542ed28851a75d1f15310a4091bdbfed36fcd", "0x1f608a88e8d2dc5bb6cc91be2f474eac4c3a659e0bdd373f9c6dfde4d6a0add7", "0x122d0509d2508c60e8a2a6a83f770f27d24aa528a40427db069093fe8e78a064", "0x015ea3777f61dd2f8d4860b202d3f4eddad0f6a5ac5089705be0ed60135fd988", "0x0f0f1c69e52b1e410d49a46939eedbd48129808923ef9f05de025f993741a4b5", "0x16dbd963fa198fc9a3c230caab4580b34d25c6223d611351c9657702e5168545", "0x01d85653beac61609f08d4a988b85c581a5b574c269821e66b2815b31521285c", "0x09ff09f0cc9a53c87802865299520b8639f59b6a5caf06cb80cc80fe960950f3", "0x0650ae88754b4ed48d3520aa7771f4ff9ee40280b85d9e767d3e53ced36ae0d3", "0x091741b2a425d5a56b2f914bcfca7699e385c734bba606d394261b6367b10263", "0x2ef48108bbc4c7b67f1d00e045eb30906ede0032a9838e68067580f22c15a386", "0x11bda846a5e5868bfff65e9331e0bec764a72dba5549ac66179a4524fbd6e3ab", "0x2b6b3bc942da684a5812478dcee5f2bc0138395cbbd0a05ac6b04b6e9df0826e", "0x0e117fc5897aa6d7ce2025a574c8e4f1651fd95ff1e63c32df1fad41f2830473", "0x0d285c64565bc502acdaea74795a0a64a46a148b904ef986a7aeb3a9e6dc56d2", "0x098141a57c9c6b72eaa0bcdc98f203359137fba1bde27afa94181d755823c723", "0x1d113cfff2cdf12cf8353701521ff920e8d10489f477d57536b59c600812a023", "0x13bf98387944aed3e268d0ad15b281a82b280fd924b8d4eb43a05b23e0f36ebd", "0x1c84249a8cecd1361a4b66b6d1911635ade640f4981ace2cdc4bb85ae7199173", "0x1888f869addf2a91230bea0393ec80b7cfb4a4cbe7a2a049f74401e7479fe4aa", "0x257341d8632255d76f29cd7b33d890b0c54b0e97b8cd6897886b6e389a8d2305", "0x1df9bbfb49acc99c43203403c99923a6fd9c8bf7f9aa6cbb91bd1a91aa4d7e92", "0x2a288ce4b8fed1b94cbd37adc8b6f814a3254feb0d0bc687213c1077648819d4", "0x23dba7c996de6b3c227c23a70785079fd4232a17f19d0311d561395d993a4bae", "0x199231edf22878bf880df305412ffd8a3ce6a555b1e7e81c7c3c72aa02b358cc", "0x2cc3d9d1107e7a5fa6aa9497994316294c7d31898d80ecc3b782573d81932873", "0x1847e8e68d4c183f3094888dea15007a6bc6b35daf79decc9f0ce88b88dc3c65", "0x1ea791dbd9aaa3d2ad56e590aa7344514e45684ea3201dc9bba200a046c3b896", "0x0a38e9e4712de317a533e3c929d6ce749307e8849137e3ebfa2a4d0bf6c080cf", "0x02de42647c0232f7870c412596bacebda08bf27fe124e16f1585cfa9d1f61bdb", "0x208c7a7f4dbd4c02d11bb6840a3fd96ab78ff9623cd0a39e3df3accc03fb5dcb", "0x0ddd22d2c7a22798707187615a91f9130a66d2c0d7d7a015fdc35a68deb8e388", "0x2a90b2d586a6c041362cf2667d131fe7c426075013c33923b0c62e3ffa7360cb", "0x298ab2e353df6ba628421948a02952b2afda68c463bfa36050a7c1418a026643", "0x08da6d2ca619829672809813a61cc5315f02460d8b1757dc014f947b729e5803", "0x065c9c7619f718cded1a784f0373fffea114170310b3105e2628eed621a2561c", "0x25ceb8bfda01132364f07044c33afc4d14755edd1bd6502528c367497c2e1db3", "0x02facc79173aa070593579d64b0f35841f65cda3b47c4ae4e675113a9eaba231", "0x092f157ad123e65d991404a2704a91b23bcebfde142a1e20d88e13e8fdc599df", "0x2e47ea8e1bb77292c06ec09029c1d1245949fe39de87f4101338417dd3f72bf3", "0x1e39369419393b8ffa389a34392449d953a992d7afb0ba34af8f2159f1396536", "0x0ace46ad0dfcc316211a507be4e87127b2180a16b2444fa8917459961c030590", "0x2e25fe7c19d848ac780af912aa4299cd59a55cf679625fffe9c14d4fb994eedf", "0x01d8d31d97fb5ebe90c25ab3fb433f8a82ba9fbb4443af83c7549d2b7688c17e", "0x029561c80c9527ae48a5f605db61e69b0892e43741f27e38715ebe14554776c2", "0x19104cc8e39a77156a55aeacb90058a42b001e74298de81f2d18cc617760db08", "0x1cb2e1388605bdd6583aa13a6eaeb2fc9ecde1337ade0e56f3e2e3e3f81e25f8", "0x164b7c0e87b3e37cd027652e2fef38b0897675ad34baac7a777a78a5928660fa", "0x03a2c5c52f34b9d603addb63238347c204e9bb1e65fed2b2d8cd09428ccb0601", "0x143107befa4803b1a04269d030233f68d927676832011c7512bbfe2b22c35785", "0x0606ce26a1a3b7d8bcfadf00f30d4ff0dfcbfeb1437ea0fb35f918510b1c37c8", "0x24cf1337b43c827ea97633e387c7948df90a3c42a8f7f27a1efa5e079036f982", "0x1c26028b3ff7ab73dd2cc99df0ac3caae4a9f81be4091ac7fae5767e4436da87", "0x1e0e4d243dd982c611637d510f43ff32874ea6680c88246a053121fa0e302a8f", "0x00404f39181657306e1eae8acd510212389713698606b3c8c656b26cd4f2bb73", "0x1138aa24e42bc883993d4c5f6eb785a8c59cb7bb1200186b5193afbe1c2ae478", "0x23b126fcde502df569a036f9d65e651805ca040b0e017355c6aa990e1f48e8a6", "0x02e761239a389a531493fa699dccb3d86125533a4608688ad2f159278dcac908", "0x18e087059de0eaadb5e3c5c4b9279cd76dc3f6d8a0d060558b19c3cfded6a6d2", "0x27364f27770f58b6dba3d3f1666e504aa45e867b30aee59144a53cb281528965", "0x0fe00ce1679e3aa5f4d6b7b80e8e2022bc2f8045eb43a4f8fe9f04cd4eaee94e", "0x1afede9489f5ab94671d20d1ab49a5ae0aeea4fa29d38ee212e0a9cafaf5de05", "0x2fdb0d7e75731eda93fc931e8d8f59762e0cbe15bcf6e0a3ee1da0e899546a50", "0x0b74792ad4e5624f94cdaf5228d8f7b7641e759a25ef4e30e802e3076ad09007", "0x0407950b2453c974580b9ba314aebd49d89052a1d8eb2a606fadb4052f2d9ddd", "0x29b8d1ec888f27ddb52f8e366cb07a3829a821bfd57296df667b49699e249593", "0x25d0c20a9006bbabd4f5160fa9eabc648c7e41552a0762b5d350cc151d6c4020", "0x2f3540ade2e57f26ce36acdbbb4198cf0a17fcf04c6c926bc3283a11a661df51", "0x14695ff8da20904e07fef545ab104fdf0dcbaf5b69a3b83485048a0057e58312", "0x16c7f28531a7dc674e8f240e35d75b08c6673995a46ba746bc718f42912ff69a", "0x2e2c2616f6bc0201be908941c83c38dd7cf79c47805ff93bd640ebc552c4ca0a", "0x063bca2d89100a11021bec39f11590ec08488206e016257061ccfbc613357060", "0x0f8c50aba399310f30c201d7be6990a7b5061d52e1dec5dfb59f69ec93d7af9f", "0x10b6435421a2edb44d8045a51332b050f137e26b37d4298dcc33213225bf1452", "0x0da21a08e5f73a231b94e20dc513f2681bb15ad12f33bae3d5f71a4c0ecc97fc", "0x238fad1f6960d619947d509d97efddb3e2ef3e30f18a26642e282864a7ddb426", "0x0eb8c17eed2e330329401b5ba5966bbace115ccc893423b26f224fba2af1179f", "0x197f1200a29e7fcf3537b187554dce9edd225cbbd8031120c57fda9a2a2d6cd7", "0x007e59ef9a273220fb6709ec8d1b831069b32169caa98e7f32affa732b55b827", "0x08798f412ce2aecaa57a737829556e5c05bea822ce81f856f9cc095c6ba65747", "0x2c43f8adcc2b39e262c252c3309e5ffbd6ed736bc0ed1e45973aaf52f7e0063f", "0x08c1d017bcf1edd53e4dddc010f9b9979f7a0d0dc3fed34dbbd8b0efc49d196c", "0x21ed2f1797b5183a2719257ff3eb1d3bfa896e6119929dfde80fa34197627222", "0x286886b6067d627947891e65b36f8d4b7c81c5c716ad95ff44e911b0341eb0c4", "0x1c0ae38a58b0cd3e5df96c8e5fae5f9b19b7ac5dcb839edc4213a5fa96c95f60", "0x0543f286b8254edc3f5323bf6ca470ab50eaff46a75e096ea9a215508aa4f7cc", "0x25bcdafb4d5b6dd773d7b3cfcba40f8cc8db7675bc541d187c21537fc2c0a340", "0x28a81071826eb4f16615964306aa7b1addd0336e6158b30dec2773dc4fe7a662", "0x0b2ae92d96d1937e5d1b42c830388254dd27e60d512fe8c417b85fca8c9b03a6", "0x11aeb340ffe89088b98a4fee7204585d7db8423fddb1b41064b785aad0a2878a", "0x14157e2dab04208eee16daa67f355bdb04f7014036d3c7586cbdcc6c1430b82d", "0x154035799252f5d335eb15af6bef9e12d6f37e33b43d4c099e89e518a4187c42", "0x145ee4885281330b255068756690f8af3c52ffe3a03c6f53c101a841a7ecaf83", "0x08c60b040006eac8f019307afdeb00aa9314bb8306b8fa60f8c1434c00d2ca8b", "0x1e0aabe003e834900958a13b47914ac4cf8f89509c001c7f8ffefa499f31800f", "0x12a0d132f615b78b0777aa9136e679b8dd334137027ffe5ebb281214ebbe4a83", "0x03a7748c591ab7a91d8f25859e06e77c66cc0088f2bab04e919508933e84d98b", "0x2815a7d428f1abfa2ddd7b67c2e916e3cc8b2d6950739f514684e8115f0ef0fc", "0x2a4e69d67391052f8e2d9f09cf09b0f25261bfc0b0aa208b1532e2eb2573253b", "0x28f42bb5e8069754d72b97f2c08ba8acea2ef1c21b3aad642c5cb04dcb4cee6d", "0x20fb72c032f2cdb3caae7ff84a3892097053ad8c2ee097fce6b247450ecc3987", "0x1369c95af38ec514dda67ed9ea6eb0e18e0e1137f70e869528e37bed1876859d", "0x1c021f2449f25dc718673ea93e652012b14958fd9b0268c30fef793429b73e2a", "0x0ae3815ea26af43c33567e41f83e305d0179a059f89a228e824db1684c54964e", "0x05bd2be31565865033475b0e553be2f47c0f7b1216f739365469174f67f8f982", "0x2368da2866a5dd17d187564fbc2a4ffe8682afe7140a9d957046c2bda1a0f669", "0x213784bff6ef1d44d08cb7c33602666a4002aeae491dd58196b0bc9d731e3bfa", "0x1dc824be3362a184ee8ed97489333ad2c5ec8ac80fc29cb1a3fe93724eb5985d", "0x255b2a1c202a2851250ab9d1f41427e8031b637aee29ff6a41d2f16e235e5d2d", "0x0c7af6613e1ec2e006780fef74b37a1039dfe29c76f6374c811ca923962f1de2", "0x015536861d874742904cbc356a66f3033a43306e67c3379b3c397b8d73979713", "0x2549c7bfad45cb19310828ccbd3b5b80325893f3f537bf6900b37d96cc10262b", "0x17853e6a2be92b752149605e938c59ed5b98a51b5e298dbf0a3f42e785ec611c", "0x22fb9187e826fbc34056155b64241d195a021c199bce96140c45a066b755ed04", "0x0e01dbb02d04ded9921511ee0b41d422a47df1acfa85cce84341b3a1a415173e", "0x13ee7aef873f8a2b2d7612cd2ceb88694d9dadad37917e8d323cbf7ff85dbf13", "0x06728405a1d96e7e9121047c6e9e4fa91965cd569b8a55c98acaa8c7990586e0", "0x1b8d4c1d90f139199df8da04f6d098b38e8f08ff0815c7c50ec70f0f221d6b86", "0x1bf50f97a290f53dd99387bc9c3ffdfe2f878bb0ff7b1e4731dc38f8806d469b", "0x0708564cc6c399de0e3b96dcc06ef877f839229aaaea1526527b8abb7e8a1c72", "0x061cf4c2260afe2472093e2b18d5b7a63e023a0dd2332fc11cb9c77925369e14", "0x0c1012dd2f4168a4ee6c8db5c7b51c8f38934e9ec835d0fd12bac1afd23bffa9", "0x010d2c7b272f6b1d02160bd78a9fbf556fca6cd21c7bc86e23abd7497786ad20", "0x19a7dec681440da95b1866760bb8a48a17b491f71a61bd48cb7ecd9f0cf2a2c3", "0x2fea37daf7c788558782a2d4636bc8b12a021d680655e16d44194e88a2846e1d", "0x093181302b44dfbc064feb7ef479d1788c5b9c6e76f00247bcc1f4f28d87364e", "0x0d562f7dcc8b1a57b47e7316c2832470447d46b1a05d15fb87d3550d52e310b4", "0x031d768025b65139dea57c8234259faafe28a1a4add5f4de09fef5b0c53a800a", "0x0c8c252ec1046f288ec63ba23dcac68b914795281ee2dfce5c3128afc6799391", "0x249923ae3dad26470f071c56d93ea8a4c45d9ecbc335c18355e0c8961a8f37b5", "0x18feddafc99611ece003ae06d7ed3ca7d69a7ccd5adce377b9eddae5df20a67a", "0x01d64afdfde99be84d37faeb3740ab4844d5db1798346e3e220e85424e4e0318", "0x0fb8de6ca433e586c7b5e1cb0a380769e6bcecf78ae4d9e1c09879fd9e28247b", "0x0d5b17c9447052c898a2f4bb21ed827eb9d36eac34e49bbbe1830bda935f038b", "0x0f2b7d51ec7ea6577b2e733f03525ef1e8fec6bd4f25c1f579f7f655ba9327d3", "0x2b23d5be39199976493c64732ab655589e05532a79a5197d24e046c281c0dd1e", "0x191eb6a33f3e80fbd227fbdc436fb8b1e3aa37b03617a7c87587a2cb068fb2a2", "0x0bd19b84791c746fd5b810f68f10ce1f514ece00a0e7749537c10844ffca11ea", "0x25a91a2714a79060f77b2503f0d3070fbdbbd187d34d6097ae283bcbf4d65c0b", "0x2e507aff9f00820e21752e75690c619b8a03b1e2699ec7bc0bd550fac9f6313b", "0x0b0b051cf9526c4019612dd0fd2afe774a8b1e828db2e42fadaed6d26d51ea17", "0x156b4cc0466b953f9f389eff9a1c7e261e902ac034bd9d285559e9c58eb5129f", "0x02f8887dc7c16c111475131c409f22cdab1440eea684fb76148fac7f33aea4e9", "0x1f3a7c2e46bd4fc1786dd949ded2e2d33ee5fbd53130f87235230209818346b3", "0x1102546f1c65fb38431152174613608dfd17564aeae1764f1570f72bbf479950", "0x00cb2b67c1f4aeebf54e927ef903fc6aa0e6acf0d4b1427040e981a102d15f84", "0x16f7924c29a61d1790d23da54fa4dcaaf1e264e46d6882c85d4fbd86f2b97c2f", "0x1a8977e7f9f883320104bccaba7b6920d4fb2b3e15d5134184c8c06ffa9cbb5c", "0x0038dde93666a06ff6df51857a40218b6c34f368e7bcc52d4504b85a9eea9994", "0x09af8b7ec74f96740f8eda9f69ea72c08f5e2311e78c0633bff78876646d6ec1", "0x0f06e7643fa6fd0b016904bb1234855dae0604472aa1f9e7b12b0ef594780f5a", "0x10ffb0f0d659b17cab58b2e7491212a734d45b41ddab889beb65518cc2b2a3a3", "0x08393e0581bef9db272b5512d3d6ac16289a6d51a7e8fee8f0ca854b7e7968c9", "0x0cd919f11e3940afd0fe3b7d687ed7117b40100f89a60ba1fc7cf743962cf97d", "0x176cd2d5dd5039afe4f9c9af84f1920de7c83f1d663a3dccefaac3c0acefa46d", "0x1ccf20b79ddc78dc632e41c11e537e599b418d4cb9ab88a74101a27a668cd46a", "0x1f8cb61ed38061411c750acb4c313d2fd167fbadc588a14fe6a30dac6719a12a", "0x2de3744ef2d7114fd6bb58fb03d0969bbe92fbf4db49b636a2a48764183b679b", "0x152f8c47e86343d9780324c37b0844681b1a6c5b76dc7aa3a57e957edc0aafde", "0x099e633a5f55fcb80e3494c20e6c607ff11cdf92f45acd6134011ef96e23d4e0", "0x18f88c7dd5dc507f63264610d668b8da3b1c704358336718bc68ea22d5f731c3", "0x29e39b42c32c642ef36100451218da7b33d7cbe7bc5882561a3a4c2f30b90c2f", "0x0dabe6781251df0230a700efbfdf25b0776b5b55e2816be9b614c3433ea26c5b", "0x09a1fb48c7575cb215e981afaf6fa4e0f05949fafaf7ec3f1ebc1a6b2e0d61fd", "0x0954ad0d0b6b9c663b1936b4301194a9cbe677f9a38ed0b544122334bc509f12", "0x20d340bda271bee29f093f2a5e2f257580f7d773afe3fd6006fb5d9c9461d337", "0x04e175a9a568c9a3473226fbf67f3c8dbdf71891833feb516ed8f1dc952d143d", "0x16efc53ea0c960e6bbb67a4930b7714a504dbacea7850303d662a56189688c9c", "0x163642b36df9c9b99d6a5350222139406ff558c486445a57a8c200065a3f85f3", "0x16885f2d67dd2eaa6b6e6e4a1cb778fe5b38d249d1d668156c033e36f8f35bce", "0x2154d6f24acd0cda11326e279ee9f9e84ddb4ca4bc11efd7136ac5d54573a933", "0x162cf98c08205fb5f4a0e9cb76c65445b300800021db1ef3b2d7919f9c202fa0", "0x0a6fb67c2c0f3320e22b4124b4feb76ce1330f85dab89c4477acd78214f472b4", "0x26021cf74a02b192f0c4ee77938e4f452985f021c469b6e84f7df3dbd86535d4", "0x2c8b9704c6b41769c9059238f51fb3827a9fb146ba424e318ab359358bae0d77", "0x28fb6c843b7e89259c13e51589804ca40a10f5b97fc4185449b1a61a6321518d", "0x1e234c17405876154e1af71c2ce4033078099705cfcb718866b347d80ded098b", "0x22836e37162efc88789ad4a5615f8e32e16a05fb2778006490a2fafb3743a7b5", "0x28a70d2aff679df7246dba5fc5d8e401c7261129e8a1965c5c5ed57f2ee5a7a4", "0x20a5a416c4101fb1ccacb4f101ec93c08b8ad9f4bcc0cd34c518d6bc136d4d62", "0x084057a3a39dc92da1f3da1a1bee29679f343096287d1044dee2fe29cc88b068", "0x0edf44da29ee4186c3ebadd1148e1011b508aa94a544915f9746f75c57df777e", "0x1f75f3cb325a537b11c16002c927ff5d8c75189c632bfe66793252d242220d4b", "0x020acb68f015bd689779de6a6c70189e40f929ac4843d1df1d78e6cf25f6753f", "0x156c068f32e0d7caaa30e86ea973f7ecc4bc2d53049970c956b0aeda3af888d7", "0x0eb5c66c8630a1c3b1b67a287dc32eb874d7b8944f7e2e4b6d5f81ba9a86351e", "0x086432ca6c103cbe76449ff27acdc0c72ef5535b3df5eb728e1d4caacd3867b3", "0x2591a12a1bb2e85526f2b0110b0fda970337bff3c42b0d0e0921fcf12e13e91e", "0x04ddc8e152142c57c766b50c4c8baeeab6813467c1cbd43ae57c95b0f4b74cb2", "0x16bef300d87c6582954f0b2e5fb74bb04b7852b2d09af537dbb87f4c037d114f", "0x22bb40ac95127ed05da2e9c37f14eda92586b50485efb61bb57e7b058a5cc5dd", "0x2152a25e328616ecc63f9f625be4ad4ee37a296e5a584926f1c1e6a99d335fa7", "0x1bc5d41bad17b44fc5aa6950aa643ede01d373b0aedc703c26a27dfa6337d04c", "0x19993e2352fe907ecef8bd33e642d549f9784545e8aed512af7eea0a5703ea4f", "0x0a8e009ab829fad34ecb98660ba055ed46d9e19a5457fad0e571346d83207276", "0x0e5abaa3b20ebedddbde163027514ad22ea8b6452d1e0fdfe5d6c92ca18bcde0", "0x2dec3c17312746988f783b14f92fd900fb3bea137b9da241e2d6858dc7b691e4", "0x1a05b78180f3bf45994f7844bbb59f02538dd3a06a1f462b3a8586d45273ffce", "0x16d22b879334448785405b6e74e823fd23ce82e68db2b392bfbe3ca740c141b5", "0x0890771aced399845ecc5b9cec64a6fc925f28e39e48ea0cb473f2ad38b670f0", "0x2530f400e734ed8b165b590db1658060cb45178fc4a3b6a96bdf62437c4215a1", "0x15e0290d7ecc55b275f623a63521d3979777442a14f18914d1fa8361bbaec66a", "0x2047fb78d48665b96c4885e5561fd89c6ca44218f4aad4adf202f32a3e3435fe", "0x150507a482c9b02e9c8884b33b154f4d856228655e7b64d0470eeb92f070517b", "0x26098db852bfdb0733c07727ee94598b5b75f96170f2cea41b51088d4fceb8bb", "0x1969394fb4a65784c3ca4b1fd9d241648e6aa58bf45dadb5848b9b55aeb49dd1", "0x2ccd5ba044e09902e540bc58af998861195b8d1b96bde96f059ce2158b8f4d27", "0x0e241a1e88c1676b2cd2b48ff54a473d3b5e8c95da39c24e84375e74f7640eb9", "0x0d64f55b84a0a5249d7452cbbcd2657bc2cede899380169ef36acf73c6fb42aa", "0x276cf981b3c8485a7f6e8a85a0c37bfe9485eaffd46796829cd170df1d25f5de", "0x125ab705a0f35a6c9e70e37cf82cbfd1b74a47ce4dd8c636520ef527cfd4996d", "0x2edf2bcb182b6c165d77946a219a542afc9383e9976271b19e585cdba3b4c034", "0x03044593e5115c8bf4b42bcc7374eda1f336b1d00cf30d0c6e0d8b8a02e70b17", "0x2c9288d07b86474cbf24db27b74421dd413b90870cfc013f00ecc0da9d880086", "0x08096ddb7dac5cabdd02794e0653def787bdcbbea73661915b20b233b13b4938", "0x2ca0c65eddea643c6cdd2b617752f71c5b36314afb56e2d7733c54ed7dfdd8c6", "0x00720ef11b7868de6172541965560951e30f9eacaf95da183e793ac4405c7aee", "0x15775168211ae2c9505cdd3ce6188782d031648cf812d9eba2b24ceca36277c0", "0x0dbd7358505479eca3fe7ce7b3c75615018996d00992cd43bd2736bd8ee0fa6b", "0x151a6143a0bd9763292a6aeaf7c0992ab65ddab5d35f2e713287fbd672b9f6e9", "0x119830a7f1e16e539fd97602ddc967e4119d9a48d6e84281ad0e72139c0a54e5", "0x166d4955f6c7422f53e750084462bb82ce565161c78a71f68c06abfc80c5f578", "0x2bf7f7791ad848e6c8804113cb78a0a6dc5f1a947341006ddbfe84dbf96ecbc3", "0x09b2550da955c2746eb3a0014c116e67b061402072acf2cdddc84af76da21cc5", "0x03ae24e58f82a3e97fac8b390c64434722325b338c6de16ab07ea83da7115b89", "0x22ea98db27502e4142824a333d94e297e0134757f316dbad2371cc2f0ad18d21", "0x2d42020b8f02617d9afd0693dd8cd09000c02a94aaa14b35d8ecd808edfc1596", "0x0d948c0328d6ade9ecff1391cc926da7311bb4b311cd893a9fe917640b26e7c1", "0x1ea1c2c8c2824809bde63dcc62f6b06a149fd2b9bdada635a4c35ede26a79e82", "0x2e90887277a6e6e8d963799798c9993b41e1d65845c17840bc1669c3432c64b0", "0x0c850a86697d9a609d26f02a99e116c164f3d8395d3bd699f8321f7628077165", "0x16d89099db9c32d90e67a74308b85c8867d1cdf0ba3c97c7a3c050322f912329", "0x122b8bb74a1b8b229c491ad31632da8e0b90c66f52be1cffba1f50bd740148af", "0x2cbbb2da62a9525283fda5fc5782e4e11c0f4ef559c7157b83c599fa51c11bd6", "0x1644c2d0af390c7835bf9a1fec01ae087bddf1a21a3d988a75c9c5da6006acd8", "0x147cd2bae2e9b717963ca623cf2f2b7fcb95672d056c1d73d2af372d8dcd6cf3", "0x0baa4d0ce6331d92b98beb9c28f6afafa0b9c2ca2c194b9f70a6d3b628e3ea25", "0x046f9a4aafb654f4a6b9103d20814e485b0a00819f200f8b2fc4844eeeb9b871", "0x2e6e482813494b77a2d153f8ce9ac84f614871e2d6d6410a7e9e9a786210e9dc", "0x219aefe0530bf083338865d59e42657596ca68ce12067fbc845c4b906ae6d8f0", "0x2b93eeb5f5defaa2cdcf165c91dc4b2c679f0a8275e124d9a45e4ef49ba78419", "0x2f5270ac7581f2186ff3bcc58c6fcbe53c3a8912a5e2b51d073b0e3e2a5e0489", "0x10cdbf5f96b3ff7196f8a6caa0e8745493277fa659bcc448efde72b71e8323c3", "0x2fd3890b8256cb06009edc1ca614e5b89896414190c4ac912ddd2fb0a54547ed", "0x0e0158a776bae6cfec58654426a8e0874d2a0b51580088682628d85b8f628ed9", "0x11d039e75730946e1b43ff6b1a36ca08cc68efc163a44afbbbd181aea1e3f760", "0x071e4c48fc462575c67463be4de4c67c178e690f7da3a02555f124f722f28c09", "0x221d11a98eebbf2aee536ea32d02ac18d539ad54ee9172e46a232a010017b2a2", "0x00ba4e4f69c3496368a277ca36f6b2d8e740295843219e90cf7cba25187357f1", "0x300c4c6484de03cb35ff858bb199f7a84a414f0f728de84742a88773642d0aa5", "0x1c508d314cce78c25d37c299edbab30ed7524e1902b335bb4c9386f596ef3f72", "0x2383eaa5db4f7ad7418a38459523b2b795a4f151505bd796916c5e05c0b7b721", "0x095007c9bace943994fd0a9f9f2bf09f8e576893256aea86969d1bd210f2249a", "0x2ebea4c9470c5979655c311724df6a0e451cdb84cb2efb05830374b4fee99a71", "0x24b7e73f62f97c13ee370552f0fbe6ef0b5a6e647f42d95f3c66e31e0b0e0226", "0x0803599f8035ea689063376c1ab9acff62203f5e0c1ba15ecb8efc30fc1cbdba", "0x2ab4c0a9e9115cc1303530733bea83654fb3d8a8ad4adbbca1b37ad21f8d9b35", "0x10f10b0d5b7a21918f84263cd64adc10e54f8767ada0a7fb59d7191c31d68f4c", "0x238ee32e5ca6f2911047e0797f4fd2571dcdcd775a81bf945787dff83c1fcb6a", "0x1ced6ad5ba466f3efddeb749c7d093d5a5a24348c9bedb513de6047627ca2d29", "0x28429555e34e7b9d39b0f9b8d68b09c89cbc0bd61dd301aa951da42b77ab72f2", "0x1b3a4e3db4dd67a5df83035ba6e55aff71f517d7e6692238091ffd1da89a1655", "0x13cc2082bc604551ef4fd01a81a52261f7979dbea0eb84296f2f6416d57d460d", "0x263b9e3cd8dc5a4413ce8e8c573a8116de4af9642bdaaa35ac342ac8705ce5fe", "0x1ab39521acbdc88aabad582fa222d6adf5633cb16fa853e6f4ee0414dd8143ce", "0x0fc133010270202b550a0322e569a9653a21f034a8b305a61819c26a9cb538b9", "0x291875d007b5cdd415acbc76c69b6122c86abe51c18eea30136bf66571588216", "0x2e2f9329346d920a98386f2c0a367740e032468696fcd5ac6e2cc6622ed81d6b", "0x0f093b428c6244578cd070ca16e69b36b0b8e2a585dabe4af899efa7c5f7ab34", "0x085bc13b698239310b05501cd59a78e9d1f3aad161541bd43080d9fc867d81c6", "0x136222a91f1c9487f3ff320b9e3baa52ef2327895f414c4d4b2b8ccbfef82d0e", "0x2e9341e5aac4da39b3363dee93af0482244b47679de4eecb5a54655e11841305", "0x28988bb98a34d5195384445d76cfbe9a7cda979693d25caf6819739888cfda7b", "0x13b4e0317e3f9cc2f3f49f7dc14c971372518f2b053de35762225ed265cd5b36", "0x19eb35c7021e14e946225fac7aae09481548d0eabf89304a3f62ce915768a7e9", "0x1d37d1e1ec0d7f119bd33a5116e19b07ccb42a6bf7b129bf2aa1dcaf069094fe", "0x1652a1124b3a6fc2029e43dc24de0a2e306968b12092787e3d578ed1d851db17", "0x2d82e3d62258db1a035e60aecf90cfc35c2a68abccee846d6f30dc7be13136c7", "0x1717bf8ac6146ab14ed32dc7a340f8bc0165bdeee55222d4fc0d1b9b8e87313f", "0x2fea8ca2751b165005fc5799cb9c928d3f5719fd377ac3d5ab988cfe7fcd0b96", "0x13122020261638533ce1db1818eaeeed3a3e5461925dfaf4d1ad253d00c0ed96", "0x08e63b96916fc88aab33140f6ed477424caf1b792acd7ea43c32848088b35b61", "0x1faad0336f78a518e2209d7e85823be53ead506dfb0eb4910664121f4db6d7d7", "0x09e63f2c7fa18fdb6fa1c263ad5f6cb0c39e75741a94bf9f32c5984347369172", "0x0d5812bcd3b13051f2a5811608cb30968de4f9c36dd7c4f6d38fcaa9aebde1fb", "0x1cef48b1d61226b8988148159e826f942e93972ce36051f55d0dc019f9ebd106", "0x213d3f4a801784d43909b5479cd159cbd628baf8b075cdb2cbef556dc12061e1", "0x1377884a51544da78a20bca27c033d666c05179f6f0c3b57a144a4d7c154fe8a", "0x2c2028206c6a58ea6b3fb8bd732935d210439f6cfeb683b7fa0b5f2d9041f86c", "0x291c29c826514d2807fe656bc2eadb0a5f264411b1381b0d85ee215e4806a4fd", "0x2c7f267d39069e4902597c9e3348b84a950f91dc7eee91a8061785de0c231723", "0x1bdffff475973387eb8cdbdcb9adc7ba1c9f63000a333d6b5a77c5b9d0efce6d", "0x108504de6c323d7bd6c6a54b3c7b2cbe67e2f863a483afcf8cec4d66849e2822", "0x143830758702da287919107b796f3e2c4208537704b355ef6d7d4af3b16519c6", "0x20cba0f444c54b7d446e9546034760bbcb21e94f64d6b4c9aab41356da39fe34", "0x0d05f1101da898ca8034234c57c1b8d90a84068cf4242d3a4dc3ec6a71b56a91", "0x0d58c99e7396f36791b921ef6b65b06f87c391b66e774bf40da42af79368e78e", "0x2f0d35b918fbae52212674d2c086ac35ffef289d3bfd783e761838f119866214", "0x2cf4868270ba3c288f4de29e985d0117ef8f2032235b5039cbfacfaf95b9f6ef", "0x014cded55649259b92ac128bd6e1b1bdb71152644c4d818c1d9a3a0e3a46eb2a", "0x0f16f496633341d1709e144de29846f7fb1a40e41bb3909f41e791b749795d49", "0x02076608271804137e0c9f68c1b0aeb571e4d34da3954e07e60670e31cf4d691", "0x21415fd472789e80cbc15fbc4a5e3fc96567d552453049f3ba8a0a4158d8b293", "0x28d80c9d6979564568b87745409fd0c33e38efe056510874727cacf65e7f4068", "0x07fc32882a7484c03cdd3a0e24abfe7587ef02c1cc52b11c55ae3b626f8b0701", "0x2d8dd2efa9868ba55ade797226fa74ab88dcd0cd6bd94ae685f00d42383e5f8d", "0x1a986dc0a9c125037fa3b30ba0bb49959d21ceb20ac5d336b09597c422537ae0", "0x21f392183eed36e011b851311afc2caac6fe76cce1eb6ca42b9813702bf015c3", "0x14d56f1ce4a77333e61e10d44964474bec74349d22c209bd4c1e3c0a3df5022a", "0x2326ed65301ef1c24feb4e9603860caacd9c6f80683303caeb0ad7f26cab0970", "0x2a3d9fcab4c508b0725e9fb8520ed06b6d29b522e5e8af4e4626ba281ee85718", "0x29cdcfde40f6fd4b84b8e3678b51ed546be8a3a0d0025bf892357a9a2375bcfe", "0x1ef82bdad09b9fc4f7d84b1d355f0931b096ca3d0db7cec8e33daff2b4093a86", "0x0bcfe28aeb735a664a360120b09176863374c387d6c0fffea5870bc0ea877cd2", "0x07f3e3ebb0d7fb60bd576ad9e7cb241aa310cca0d5d45014964197f7594bff2a", "0x2ac56c23ad3b8667fb05469317023035cb87ba64ac066fa035c73837ac8df1ef", "0x1e2e9f7e3702fa82feddb16036b94442ef1611ca1a2f1ca2f47336f16db80f9f", "0x245d55eaed831cbeafe45ad8ceb4fcbdbfc9d0ef8ee6ff03e31068d0832398de", "0x1ea295decfda9c0a400df14483ab3dae5bf43987ed926a02df2e7cef2bb64ea4", "0x05bbf568249f3ccae4c98e2549dbde639882927b39e4f39bb7d05f37f6af0d0e", "0x1c1291aab9893e46d2762beebb1bfb97465d00f30da6cf33e860785874cad7d9", "0x17634d1ccd51f9433152634c359773fcfc9f93f80fbe65baa59637703646f7ea", "0x14fc8f7234f6912c40f82a1bdbce93fa1af8d24fcf7abeb0c2d4f5a98ed71c24", "0x27efdff5ad6678d5fc5bd1da7143b076598b90db77772a8e9cf5c5295e0af7b2", "0x046644c4e7022580e83eee330c7228469b7ec8afd154a47564f0ccab9ba89872", "0x2c00d457f72e3452c86c1ae3645e645d0fee2d34f5d502ad1b3ab4d0ee3bd431", "0x03d24d7d5f668e0c76330b300b3eb77767ad982a878f643ca935a00742a21ae5", "0x03de941df807fb1cbde0f88b9ec89b64c11252edddce5123d2443fdabdfec534", "0x13968ee75a666efbede2dcdc1cdd9a5e15543cbfdd3d045486ecabad362df82e", "0x2a49f11f36030eb28dbb1c123c00bc12491a461126edf2371d4787dbfab690d9", "0x0fa680c08661ce0671847eb582b5ebb305c69b6166a2d3d32dadd35b73c87fff", "0x06d5a0ba4f63840b7dbeee170772dbc060c4e7da78580f7f02dff8dbcabe2adf", "0x1f624813ff4e4ea551b18a754fb0a852be6ade91807e86ca6def238cc0f23f20", "0x104988ebd6577839a2b07a037ab4d20e2b00daeb6451e21ea61028b2b6acb296", "0x04e71dcb7afa2e832487ac7f13b79eec44d7781897e9075b9198dda984d7f7eb", "0x236f6b011d7b96496fa7baab4c5dbe743276bc974c0d2d17a81ff079a483ff20", "0x1587663e2b5d740eaef59e36292d85686b5854082cf903e4de4beb5340e015d5", "0x11d45895b6239ba0bf7d68ed7790502aad8e13c8b45d313e323e27432e2cbcfc", "0x253c79369fb2bb163ad88c751e81d0ed903e0fe6f15e12c0fcfa9a06eec12476", "0x18913458b59d37dacd0dc16811a34f844b7253e8bf4d7dbecebf97b0549c2b01", "0x08d5bca196a8ceb1ddb165927affce0e3e57e42b22a130392bc52214749297d7", "0x0df1eb022b44f3c8f358a7424021402033eb56d439bafca09201a463712f6bb3", "0x1ec99a4a3dbab58148f9cc3024da287f4083d70a91966a5c76b46b0a27bd651c", "0x1cef3c619c6c700bd295937063395501cf4e208182209f6718d57da33a23e66b", "0x28006478a2117dd3500711cf843ee17b97026884681a5bed0621c157f78a13b2", "0x1f8db17184e9aa39e5ac0306e471408a83154340ac6f9c585ed910d0d897ad61", "0x0b4dd727de06a0a5946961b6f5fc0bcef0263f7e2e5829ddb6e49008cbc1b16b", "0x217209fa8996d860daa1f9c210eca2580eb3f1cec5aabbb56bd901b3d9fc871b", "0x0f68b53bbb8bb4798d191608f9542849c18697dd7402db0b5f30317d2178befe", "0x0eef36b6a205fbbe8be6815a1983e6cd146e42295eca46dbb316f976bf0596e6", "0x0ea89f549e8977b2ca99be52e9fef5713a73e5a06663918c83d22bcdb017f15a", "0x2bb5f1827e14485da2183c2c00d624ddbc01deffbc3235878f07a04a47bed1bd", "0x2f630711a84b9a470356b3cfc2ea0b9e09be16dfc9a75086b4b5978b69e8de4e", "0x2d1a64e0411d666c0ef9f06b3eb1f0c442913ca621a54307961896f61fe74646", "0x15eb85dc380a0cb81f1511dccfaff8a5079ed3100907772ef076f64bb4fb1f8c", "0x2935deb4412873991b6220aedc3e923c05eb87d8fddafdcbe1da6ae476075aed", "0x212a58a5f2ac5530a2515434437538885218522ac412496ce5f85a9fefa2d074", "0x0dcb873fe2bf8ffd64fa76001023572997bde0937993bc9822928476e735561e", "0x0e39308c1281899d7150092d1f116e41b981232c9d096111d827592e32c5ea5c", "0x0a5679d09418466a7300e8a0a964f4d3bb922958885147b5decb1438b101cf84", "0x038a8f326cc8a51dd41092f40ea3aac4ad722a8744101f4068139c5d9115ebe2", "0x1dc0fb391c19c979337f1983b07d90ad225179d1c6bf4fd85601fcef1c1854ae", "0x1ffeb0fdeeb9c720e7be5842a019527689b3b8f5e3d63a3de2505a964223a292", "0x2cd6511bbe7dc9d2a8cc050225b73d69f7c2075a623fd6ff4bd024c2a69ad268", "0x21d4706590b1854d962bec4cfa56951ae8441cbeb1e4175f5d3b61b8db79f68a", "0x12da59528ab92ae9f0268eb1bda47594920e4f5a4526278478dd9a0107bdffaf", "0x07aed9e16edd41aace93c2078ba1333457676697ceb8d77b5833121aea63f06a", "0x13e9c52761d0fd356778f2c9ca94f6ac1c714324435e0105d419e112d3f42c7e", "0x288cb3c2e45d353233d2680366d4913c125e7f2cc6bbfd65069538d89f4dc477", "0x016af712074445c8af7578cd68e6e32e0f88cd9e99b3f46c63b84c8392468eed", "0x1c1d9b10584a446463b905d7194c780666b9aa00a781ecf1003a6a0c81685f7d", "0x0a7c876f83ab4efd0d042493681e993a66420f23b0dc6337fd8e1ff0bedeef7d", "0x1bb8435cd2e6fc9c768446b13a53fdecee056f79ed8d0d1d36e3a784cdbcf255", "0x2d90be1ae182c3f440b85fd6da69e21de9eb2929e54b7512216ddce08a7095be", "0x0c9de3a0dbd2d14270f8a16c486495ae5ad2d44c0322f0d990ac4a4e024bf575", "0x1e397c182116d4e00a53581aa108e5bf880f8fe0736e98124aca92873840399e", "0x20a611d4fb392c94d85684590ea0aaa38e4800d027650f823bdda0e8083ba202", "0x1ea1b882a97d732991805ae46935233eeb424f9363f9e5fe864d30237484ebf4", "0x13f67ee6e8ffc6ff26648bc6e3106b834a3354ed989d351f4f08f2796910d1b9", "0x035d6e11fd71458caa1c0a7f76828e3360ad2af2e88a7aa8e5e5fb2a6110a56d", "0x1254beb4738a5e8e50f45fc7ad73c512165e0c20c0c764b1747dd24da4b5186f", "0x1e0b231f595958977dd7571e0e6988ddacc14ac1fbe98ac784f8684a101f417d", "0x1d787be18d93eeebcacf4eb98f2226645cc1aa4354e6af4cebeace6b44001963", "0x1b629ce1b52348a9865abe18e6c537f88b2455e0f0de338cf51dff14e09993bb", "0x102b0b82afcecad50b6cd976bd3acabfd34ef4f57c78f5fe7b57127d166504bb", "0x2c4f4e1436d85e914162bd51bb9d13bfcaf9f9d30ef53bd75d8f659820124eb0", "0x0e5d628e75b9cdc3a9898c4722023bcd26c2307dcdcb74d097f4fe00bad021d5", "0x1898efdbbbb625982db0dd512e8540ff986925bb78ea970cb5d044c53dedd4b3", "0x2a586ae0193dc050c68a6340d6387b5944d21cb79566610ca15cc0afbbebd619", "0x2c8df3a839ff2b2e1071ff973963e163cbde5994da3700d24c0942a1fb8f3e81", "0x2c40e73f41f7ada9ce46fed754b987d77c7b9c9be1c866cf0e50491785f9aa86", "0x10a44419a271043be49ccf50d187302f300027363f20187925db8bdd0aa9cc5d", "0x28250cdc61eeed8b98fcf0f9a839b0cb299f4a80f88534298660902932b1e8c7", "0x1b01b6d43822237fa886bb86fa5d0adaecde3b834324e93a02571202d39c16c1", "0x2b780386f9f3da9b23f88dc7fa2615e3429288d9c5de4803d42ce69ecfb64661", "0x24984ac7b0d3a403500f0a88a73ed082f8762c1686f379d5241b64c6d1ca26c8", "0x2954829e72a69347f4a05b5e4bb3a3e6e5badc6f7b963fedf95c52ed5ecc488d", "0x083607f9e053a5c77ab95343c1a4620357262891d282195bcc4ded3dd788cecb", "0x27cdc8f0618dd378a7ca6b89fcc86ceee70a7cc73d29367d3d4539291b73775e", "0x1c452a7426b31ef9c186906b2528de2b6f8b264c7083d07195fee3240f0cf082", "0x2a70b8f7a4f98c94dfe478396c24c0c73445153ca6a63f4135a61a7a7149209c", "0x1ddaf2c29060384a64f142964f68c38ea9b2ddf14c9aef92b701a00f4d78c967", "0x18d763f5955669c75685d78bbcfd9923b1e28a6fe22d19e53182bae2e387a4b1", "0x15487b28b3f0687448c73f432cfca0db556501a9985db9782ad1f16011aa5584", "0x1cd157f6023cd720180e59db9dcdd1d6d6aceff9b6db1ac72284c0a54157bbb8", "0x02f2368f8d046b18934dd27f29bbff29c909bb480ee0fdcb7705273766a189bf", "0x09d13a02ee4793785933ced2ab70bb0334e7a6fe653e8d4ed9783fdbf9a5f1be", "0x0d66c61f8b505a8efd06a8659d1f83910a781182a4383b9c734f51200dc4d62a", "0x2d32aea4cc326f82206b91c986181f18ed3c3171a53177243f2dfc7471976b72", "0x0afde5f85a042ebe32889c6a3e00fb40c40d9a1325f2f418916b1a46e3e4411e", "0x29a3c3d0caabdccb6c7d358593bcff8dc2e0518a9e41ffad251b50d9b397cee2", "0x0322c3386bfcbea88f4c322edb06aa6d5924122d858df34efe6373c44b7cbd61", "0x1438c5871add7ac0d3a49acd828a005222ce8c8df43059edcfe399d90e281363", "0x168bfa7bf400f5bc0cc14388dd1780550980e4134701a2f21fe0eceeba59c712", "0x1dc073a172aa9728c523545245f9160cef1a76e4cf74b6eac7d113fdf911963c", "0x26c80f81e2f12a302e630e9e4d3fc4aa14a7ef41508e4b35a0b58f3a63809290", "0x2dbf4afaf4c5ddfb04cb3ae7aaaa6bc6244c57790a6939ec0febe2c17bce532b", "0x00905bbfbd61ac42226f3d9a1fbfd2e90eb04dc665e023ea2395e2b1cf79d436", "0x1c1daa03e2b5bce3607ff15e37bed1dcbb5e189b073b6c20c27ba16ee2aba814", "0x1a2f8e8d55339623c11340ae1b135454635c71cbd8d20b6a536a39ff736a5243", "0x18535c592e62581176a3464783cf099f6b90e5cbc6d80f12398708d7941ef453", "0x0029f6bc49dc5991c8c89c9236e0535ffd6ec13e23042bd27843a51f9fd2b369", "0x0f99bda8902bc2630a41884a5c477fe8ce7697fe86a28119d5a17bedb9ad85aa", "0x2936f41a19816dabc413275d943ef09f3f961b49e15ef9d671d119aa39e2b4db", "0x2b3e5c1fa1bca2cfe43fefffaefadee5d8bce97f52484ace59b10654909a3c2b", "0x2cf54da2864c28dc6817000aa815f4d585821780bb27fd6762ac6f8c2ce50398", "0x0318d4abded11ff442e3295eae5f62b9ab53c783b0509643843123b802d2549d", "0x0ad5edae189c9098ae537345a1d3145b442a7776370ec6fdb6cc33cea6789c6c", "0x0c02ec64e912a52f98bc967f67d74ea53374a195e6b8df2da1c0abf95fed1c96", "0x10b354fb05e07b72d7d655444cc964130e3ee7b63744981e3c5a65279ae805f6", "0x18135a3547443addb809e56d299d6ab71600ca6a67d73fb903c46ea1f88a78a0", "0x169b2d1c9533fde28f5b61725eb1db2df523c8a7f326816a48a06b492f7d0971", "0x0706cc6846991bfa50aa52747c63ab1bb357c7ceaa4b38a0b6bdfdc48cc745d2", "0x0f23a2df079a3a7f3909ffe89f2a2e5d48e08c81f56aba869b8a073b134c2766", "0x1bb2ed4cd681047a7d449a435b1412a1a54576d1a299d8307c9325d0d9576658", "0x28d41a2ac7b3c71974ee058c7223a0a7ce0bb5a1e485dbd2686bc1300b47e21e", "0x25ab50f20dd391b3bad83fff0ee9692258536da228190b723073d55310c4bd1f", "0x27b24b346de16f4f286a056a24239895adde11187ed5c7d11e7c535ba5ca6300", "0x0ff16afdd9da02815b98fb92c5763b49b0ebfb16bced629b8ff2d6371090c495", "0x08a1329feb54f08092d18db2291e91c4e17c7c09913fed4c0130fc8e7f75c9b4", "0x0cd6bd732307ec5314a14259d354bf7d277f05badb1cd07253866472d7e90769", "0x101bda1f28311c2977cd3b452df6aa429424b87cf47c92366cd45d9926a0abc8", "0x02c39319445999f80e7b80b5a38639a0cebcd5b0766f64230227f6809280ef6e", "0x23e7afffd0c6fe2ec95a394af2cb724aeb088250214c099343289bdf465d46f2", "0x2176e7a545a244ce4bc1a7c2bdca95312da62fbdd2bbf8dae347c611670ea7da", "0x1c6067731c77d01d3fa867e8dfec2b88acbc17e7ceadd706c58aae38254ea2e2", "0x1588b2582131d05ee20beca1ce405c949fc16292219447d2b73c628fac00cc58", "0x232f65838476e01be1287b72f8897938f0783eda92b9f4c1ebe8202eb29dc889", "0x022b6f2c624b637e843e74a76c325b05ffc2ae4614384e0f3a0cc18565624676", "0x1202e2c0a73b8a2b43469495dd9531dcc8072d16e63adc02923c50b141a184ee", "0x014e203ca64dc05735b33078ad83b969421b96aa9e8347ce2e522eb38886db24", "0x040923212b1b7e37c937793aecc233f202d6b7578fc6f52774b165ed6784e471", "0x0fbfc45be7c5f3901abdef853d2e6216b71835c365f0f97df2f341f0f049e92a", "0x27310155192b1726750c5bff7117c4ebec2099c98b0de8c553f58defc30ba318", "0x19c2594328dca95959c2af80bfb179d25adef59eaa4a74f15ed3f19340a08cc2", "0x104796be743633ccc53f728144bacbebf5a09b5bc0717ba33fa69def3f31cd72", "0x1c97f91df1d79a0e5b7803b2a59f15ab176a207d1ce3f686f2e322314bafcfe7", "0x0a24aaf916ce0d22fe01afdc5f96cb1c40b49c48c99669354fe2c280a33f8cb4", "0x17dc7a5303ea797184fb650273faac447284beb23e29339d3ec9d91d3f8c76b2", "0x2e1b387ef959f82a150f807dfe5a3480faef6e7f79d15ec65f924d0aed280a56", "0x1153c4ce1088b51359d71725823d163ce69541317610e049beba015f256c1fba", "0x0d8b8924cba44d571ef53912455227a5bffa46057018fb68314dceeebd088515", "0x151e868f5e19e96f6d2367228d388afd8c080794d0d5c77c763beeccac9fc0b3", "0x2fa3eb12a770e7837a8e690b715f5a811f4102f3f14bd30a308a13986a92d7d2", "0x28318e53a9949641761ea87af6c8159a0fb94915083d1a1308be8bb05dede389", "0x2bc3819053ad9a6656006fdea87efa94e4faa379e89c4c1d38aa12d0a141e9b7", "0x1c124776d2bb735283d4aad14ad82bfa8e821ec542aaf7065b47657757ac31d5", "0x2a000712e4a9bf5b395edda3092db0040d44a0346178aa0128997459874c4bc5", "0x1e0800b41ec9c392c2efbe25f5de7ceedadcefd12d437d874dc46af997ae0087", "0x2ab3b50a1e176957dc1f08dd47185f0ed0d9aaddec45c5cab796dd2d991e9e18", "0x2190a0c5576267156ec9081961338a471a0422d56035b8bf3a8afe7870a3196c", "0x03cb7bb7d3a38a7ff1abf8c9282298a5551c55d28e1bdb6c4e7377caa034961e", "0x13432d180a4b815ff8c3f3afb4250c99e89c9518417ce5e147440df80d93e730", "0x1596f4d7e5a9b9f5b7f5e1a4b6d068b6aac9092877b820ebe95a15c59830fa9c", "0x2b757032499016fc85df940d7ea78a6b6c8a1bef0417c976554640b914dc9b75", "0x2b1528bf87a89c542779e1d6671a269331a2b9a64b56501a652bef0dc5bd5099", "0x2fd143194441382b4daf486d159def58f1c9869aa0a3fd03abd5d9c923dbc601", "0x084e5bd84e9f5a3f8ac1a0be4269e1cab3bea75a651eb476b23af0a9436e9e10", "0x26c737750217a4e394e063815275f3e99bf87a6339e437655ce91f99a3f894e7", "0x0011d44a14a217454b7cb9b013a7ed9ee78d380846903dab930a9f39c072a54e", "0x2cff02f46b0ec806c47b7c834e0c3378172ca0f7719b62de17f598ef8f047731", "0x18d2159e3a040d8af39903894bc9ec51d49aaa6d5776db31f1cd4dfa616268d8", "0x18f0110ae1d067eef4dd057722e96be6616b6c5edaf101db529b049a4e6126e7", "0x2870e7ca2635b5c3f898656bcd8dd853991704e07ad301612f4d7bb174bed2f0", "0x2674f59ed1fde5bb303cd010aac8a91458bea65a29db9a163ba3ab313cbd6c76", "0x03e34b2f33b176b37d8e88dd3501772a8961f02a5bdb29814588a44988157da9", "0x17944c0c7d9146518157f9200092bc82bf2c5672dc8584823659b07a0cef37ef", "0x1267aaa77cd7199c10f7c2bc5581a42f3c7b08371e3aaa60bb423ad2e2729830", "0x0efac3cc0daa23f1e378d1dcbdb2edd6a5d84954dd00553fac96416259123831", "0x2872ef46fc5700461f9af029c3611400a0a80497b58520afb43794da71326a97", "0x1abf3fb66b933fe5c436b2e90dc1dbc6ac2ffa74cf60bbd15d183134f069b42e", "0x093da890a6a4163a094fb0c3140683ba9868fccf8e42bef0a51e7bd577bda0f7", "0x2520ca8de344289083f5d01264ff76a5ae776e69d65d671442f52a680242a44e", "0x08f3791175eb454942ba5e3fd7f00463eb88900ee9c053d105f9c838d29b1035", "0x04389b9fcf9b26a0d52a7a86b11f50e4cd49cc758ff9c1c9352481c2b7cf55b5", "0x08bfac675d4d1623f5486662b8e9a72fdb4973064d5cc6572a36f8691574cfa9", "0x2a8e53108a5e6fa2b0bfd2e01a859323491aee5cca45981d7168f1ad1dd42a5d", "0x1ea97e496fa619c52c19d5b33076ce84d51ed947970643b0a6df301102252a9b", "0x2921097b063365942c0d6a534e2a92aa408908b6897945ee787bce67e4574ced", "0x2113f871b713c7ab1ed7af63982cf46095821e2aaef61368eee133aea6245f27", "0x0421c9fb1ea7d058c01c2537e22d1c717e40c0396c643be3e7c029c055616374", "0x181c57d9013554eebd5b3e9a9c4a89a7fd55e772eb2fd4b2f47e5f015b52b7d5", "0x210fbc7fae49a8711b72744a25878d1ecf3a88401dbdc87e7620ef080e9b1b55", "0x0038a73037d04b19c3cdbf74c32cdbff1759dab57fdd42954a3afd9807537c8c", "0x1c4faea527a5a146170cc3a85289479fb22e5bb5ad2c1900999faa9080bbbee9", "0x20bc74457f7b36956f2759ad6a18b00ec602a039c00ca7929304afe1aa00678b", "0x18dbed8b1ebd14fcf2858ff2c139d26fe901ce4e8b50f28c16ba6a56cbd6c3df", "0x290e5f918ce5182793fee062e0ac82599a6039cedb0327c69cc35c484a60b52f", "0x1270f1c49bf05b5711299838acb2d77e4d5209d650de540d000fe0b636957250", "0x244bf00718449105a612fd99f81f8293bdfd43758a8375aac6447d67afa07d4b", "0x253c1267e1697769dc5b914a341b02ead358261047fda749eddcc3e6496ab62e", "0x1f6205923f15d6674f8fa3f5dcbf9b6ae3005471afbcd8571a0b02535246ff74", "0x197d7d842654c8e9582900b5b72a9bbd5b43155c039140646b08fed032afc7bb", "0x0dc5162814338dfbdc374e6db2f4b541c598de3a6832361f44003a8a88b13f46", "0x118c03871e753f7528b2c0834123ca8f43ca7ab37eb1fda534bbb334e94c52bf", "0x212a8c29677a919cfac2b9daada92346ae588bee142654fa836347239d23144e", "0x12bbf40d2464fac9e64dd04d65399fa6ef74f8528cf6a3aec23555a82af23856", "0x1e1debb4f76f3d7ac15633e36bff09da18df1f9ea883af3bcb5ab4d84b4a798d", "0x00ce98db1da5431b8dcd8adee704963f8e89a35b3f020e696d79068ae3cfb02d", "0x21944627e60ca87a770eaddd5486c15ca5e487f4dd1ae6ec2104de83c3216e86", "0x223ca483774a7c5d4f1ce388320e1d5f53ff95dc5ce53442aeed94bc2625d392", "0x2501b50c7e7f729c7f4d896501e294dc91c266bd2a6dec0cbb09af8a13fc37a8", "0x2e438c6ef07f9bccb0218649a91da9373870a45ac4524c6cbf073319a2194fff", "0x20eb17b53e680c2b60d9f3d55b9dcc8b5db59e04b62afcb968cf6147e35a91c7", "0x256118253984eb71f26d781504b84d8288398293cc419aef59e8613c9fafcd42", "0x20bc1706e7de27b979166c50f3b4b713aa07a5b868f5fcc9da4faf7a066feb44", "0x28ba38a4827aa8ddf9349dc4640fa8017b0cacdb456a901065aa6cd3617e17fc", "0x0561f8d6997b836522d4f18603799cdc60381f5f65fcfa7bce7620b8fe8c7462", "0x0914871465b2f0f3c83c416535a525082f8e6558b54de301e5f4edf52bb6aa8e", "0x160e0b49d6bb20368b2a48a20c55da0d2659a94ab59f174de5dd4c13505b04d3", "0x0971ac2fe1f38483d27137f792f6bc0ef51108d2a87877edb01205a23a18463d", "0x0db36e959b2089b379088932fa5251e65d4ee1f415ad497f5677e69d620c3f3e", "0x260e6baea06a53e7947e163f0fe833e512802f7862e8708f575fb6baa7ed6ccc", "0x0103e7c9849aae12c3642ba73872141c0bfb65be896a6ce0f45ac9ac8d746ff6", "0x19853a0ef0c493811c3168e292855f690100b73069bb50dd32dde06c96a4bbb3", "0x0e2823849ec0077c2e8cb25046f6a38780e943ca3affd973c883809e227fcd9f", "0x15669e10f37a3d252b28f8c05f66420a4bc6e9baf7a6dd7032838972bf7cd9e8", "0x1da3b467c133912c54fd24e00f2916a91d533ee46e68fff074d1a1467179bb9f", "0x28c8aaa806b13f8e240e947d48be89c609ec24b42ef9b1b25916669eb613f715", "0x1287309126dcf2034cb33aa0d01b7e5e1b020a8a08ace1bae33530d5db8cf15c", "0x273d73d56fc498d1be414428870a92f0082658d381013de76cc13c80a2cd8de2", "0x0f73e29149d0fa5e27ffa53e4851187a653f2c5b310ede6b9598e4cbbd35a5a8", "0x11508faa2ff4f86a4ecdfec774e9d3f904e04d0fb9ca25b99be310c23dc74bf3", "0x08ada36165c3a78cf93ce4de9c7e13bd9fedf22b0222e5e70907c176588e4966", "0x1a649f2a76121b00a1fd7d4945e391fcdaf3bf69443b861fcf15d923a45658f1", "0x0c7fb8dcc2a5da940996877b67908497fe074a98aa8d6008041bdb1f4dc6d6fe", "0x0a6a254a2574b86867bfa9e5055ec61826368c028e52693242f63a83153abd3c", "0x00286876e2f3e95927a7dcd76f37e4c937b4c5e274bf123801f0569bfa6fe34b", "0x2095c2d2a9f23395d77f1a86179c512dc1301d549996a3250080f52b9704c8d2", "0x2ac90aff52b956782ca8598cbb2b22a3285596b5891a1f60e141012bf2812ef5", "0x114e912fde21fbc12348be91e0598b057430bdafb0b4eb9cf93e67f7235749a6", "0x301fdf0c1ff5be9807b51a91614541bc0696cec7fb16a503029cfb4704d9696e", "0x09a579c36f8bb8fe12c0de65c24ef587ca40796c850053c022fb015fc6bb072b", "0x1c6f93d553f9e4f96a575325aed9682a53dca61b88507723b6d2adf2cd683388", "0x000ed419728fa31c55c5946db446b7fa783f8af594158ec60ad8c1f66893c17f", "0x19411996cb83bdd95e61aff2e6d4a57be99120783e41fdc495f358c98226890a", "0x2a1eea5321ffc604f87d055b650ee63503584495923a451b32fc241ac114f2e3", "0x21d5fe87e3905b6c19c384d4902bff4e573ed1df960100fe2f630f5ac7249636", "0x222da21f4b7c807ebe8f93b67bf507df715f53c3b2ba7754604bf93aed23a7ce", "0x11bcb33294e5f8e82bfab58152eaa2b91ef6352a9d0ba55bac003dc735172629", "0x15f62b8e5ac177e7c52faca91dbf24e6a90edbda53ea0c54d6ae7c38247b24b0", "0x1e329eaeb402ecf26259a1257fa85cdf1078dbd858394c06dbd1e47b988cf257", "0x1fca943281035ed71d898d161ebc246f9cf04135c3255cb87cafc6e11e0e715c", "0x21127d56f6dfebd40f026d758a4bb8591d3e1d48c12e28753cc71431a1db1ecd", "0x06a69dfdeb9e80796a63b4a698266093e1ba7534ebb7e2b0f3ab58751d0cbf60", "0x2c0a57a5cb496459e547d4366e34a9f89adab821f418b9a6c70aa1c61512ce66", "0x261858f737fcd0820151966863a110343b6065926b133870912c595d0fa803e8", "0x074962d54f26a02909f99bc37c93ef70043e7cc51e773a5e873d3860c57fe9e2", "0x297eb20bfffbb3c3dcdcfb56f0b0e221ef28fcf4faf052a5284c04bf776a0873", "0x1b8c711b0a6109a9fbaae034c0df650c32dd80cfc5981816dba5a2d3ba884246", "0x1872c0cfacf2bf6e42d11d52d28c306fccd53c2575a9a2534b83dd27186213a6", "0x09e802063ab8c0b001265ccf9e5bcd9a83de0f56fdebd385ccbf5cbb5da8566b", "0x2d0177d9e97ae16ea923bc29c3b34f43b9743bb04e0af385fe4010eb92b3faef", "0x20f64ef9f3b9143a4dca77cdb2c11a72f8e3bef8cad37a6e07d156d982d36ad9", "0x14085e315fd11bd4311613b563658e194a8de5dce828d0b401974da62a8f5953", "0x1eae390777228c03ebd563fc4cc11ee0ded718d0ada8ed327d4cc09a3307ede9", "0x06472d3a9addadb7ca55ad8d286d7ef0630ce84fa631832009f2dcdadc315da6", "0x00fcdfdb353d3a99bf2c213d9a687d0321844e2371a5ca48bd41f7b25e96b6a7", "0x224c451f7674579be04568957daef86aebfab8746b8d8d68cbb5d4e2c53019e5", "0x0e378f20b71ccdffb0b20149df41e2832c57bbf385e953f2c8f55fd541291a1b", "0x005edeb6a4ca7a6cbff5c5d92694bb46698d2d476ecc1787904863f49914e49f", "0x115bdd6b5c9385955a8a20d244c4062b08eeb78eb692ead7893482b00beffee8", "0x0f6a5a9c39e7623c4583d9b7215dd4e3cc97e5a8e240ace0e8c5fa8343060ef5", "0x2aebe737741ada0dcf9980e84f021506d5f52f7a4082f0e97d37940123ad0bf8", "0x1b1ce923fec61ff8da2ac4ac5d3c2792c9a1adf90395d8c761aa96735a38a266", "0x1c221671ca78f00f58d5d5439c0d11bff3b9f74b62e40770a798dae970a5db24", "0x15770a93016e8761589b6d6e5bc57dca84cb91156222639139acc6f25668ceb1", "0x0c530d9fb0d84a2b04d4fd5d2345c5c587e860361f808e5d5e60d7f6175b31b0", "0x09c928ddd310f013a0176e314d2d76e9487c5631082dc4c832b183b143630782", "0x075919a774265ef6248bae80704929456314b2a274a44d8be22c1a1747ece847", "0x1cc025b3a59fbd993318dbd65f22b4418faf8a597fbe9d9c46262f5b99fe104c", "0x10244f0e95bf93e832fe52e49e1c05830f10fba9136227bc7bee9ca10ab72667", "0x27fc48c5fd8fece4851eb5fab288d4fd41b3eb0cce56827dacc7a3509e4fa4c7", "0x219404cf8c7feef751db9e5d2c4db1ec96ee66701e78422f57b736faf2593398", "0x02c1636d612ee048e2df1f38dc67920abd00676a977af875ae66ea5d5277a134", "0x131e408587a1b372dcb79c84d4a9327e4d1a93e225e682f5a8c1e6ad0f79b0c8", "0x164064b05249b6cc87d1edafb21c8e2bf177f979d46b68b2bfc6d2f9bc636a39", "0x1a32d386114cf8ea9dc720717df855af4106533ab7e427da3d6f8091ea695905", "0x26139768d3bed1dfcd575cbd5c61fc57dd2cd45b8f725c25dbd87819129f23ad", "0x1d24e974d3c14d9a37f65a36ce2a2a593f321cdec81a40a58d65f12da202c3d6", "0x2569aff88e4d3f209061cb023efa93c26a627daee66d1b67b99740682a057fd7", "0x10b621d20c61e70b3292085937120b9b28c488875ecef4bb56ecb134e427d5aa", "0x2b4419af0353be507f3d3121275f9ce9a1a3c84003f47343972248b5c0d2f1c2", "0x187369785670fba473da72eac6a6b825fd4581b5bd52c78420cb246865845bf5", "0x2103a328f4a2673a0c329b136fb7f008d1a1f005ed5e4ca26db74d4d7f49fbcb", "0x0799c7bf30075758b400e34108557143c4d713194e2dfc6d8a50089b1cb462d8", "0x20aec56c0e5b894caaf4e537d708ca7f8fa1e8a1de6009a7a2fea43a70519234", "0x2b839e4cbfc3bf9594e893e041989439863027056db91887c2dc09373f80cc1c", "0x095c1c06a5393a5995870dda2e65b90a20433dcd97882587aac02cf8fd0442c1", "0x08f2cf7886ffa7811e14cf8b4f5ee8ca28196b83478ded3719c2cec9a2b4de7e", "0x1ea2763d97a919bc44c3fb92e61437fe4093253c47bbfb2a9e55b252cf7f9f27", "0x0c8e9f9166ac72edd6d7cb80e80227cccae1d2d2056d6a856a90455f56fd7067", "0x057bb346af28bfd4bc2341d64e65b1a5734034adb3e1099cf9fcca79cda9c803", "0x070f630af25efa8e4d8c5e35861344889bebc7ddb790014113c1c2a221e161ff", "0x11d35bb72abd9000474d448fe22416c8ebfa152c08e6a0ffcfa2217fb86e9c14", "0x2e486100284930c2e91c1d00add9c6c98c3114739b13f3b3f811717372c25a26", "0x08c39ff6e608dceb35123f2d64d68b23c4a81681e5b7d0b8b8407e9aa1c50ad6", "0x270aaab5852da02e7c1e6c8167739b1d719f2da3806118fe66b08b510aa1eb9e", "0x08b07ed9445f3d4f9d5205530d7b6490440653070c6f4c3e38968e82b93ba584", "0x0666b480472adb317f5b138a92a4d295127befcfb83b7660681d41b96c408ddc", "0x2e06985058af9e113eb22379cc55b67a15e193613385bbc4775a68c6c526b6d9", "0x052319c919c1954c4d38a7c77741949a839b3f188619f74093e3180d144c725b", "0x2f8c80a8c321dd74d85f2dab2cb172a0824b990ca63765d6e17b483734c4a4cb", "0x229b17fefeb71703a7abe80495ff7ddb6140153f77e751fff2900afbe19114bf", "0x0f9985aec263c3be8667e4c93dc0d8812f874cef6dc321827d66fd92681ae9ce", "0x0af15c566b682c10cc83c3bbaae3ce621d1bc3e0b45108126cc0df99c6225c78", "0x03177754c13726a540502787f03dea917c9c0960fb205478714c9515d6a10e87", "0x22c84885da685ac6b74e3914bfe2668fa08262ef24f1adb4c55ddda0cdb580c8", "0x113bb87961b449ccf5595cf68329cb19309e8d065d013fdb009ab0e90645186d", "0x2abf19247afd7fcf68fe30989a9a370b99a1f12df9b2fae30b6cd3383f8d6914", "0x2fd4fecf4e46d2fe72647bd708f4bd4809ff961d89dcfd2ae91f812e0a3b9fa8", "0x17a17efbbc358c53fb41930002768de9e1398f39df32a8b06e23033114c7f9ad", "0x02288e2ab2b87a12d55a319b351d9874c32ed44cc16d93a6a63e0852f0f64697", "0x03ac39f86700b6611f1192263d9442e900d1100f26031bcb8a8e6255ed1a9f4d", "0x00d5322a34db3009785366c0060c47d29a618fe0b2cae945def9a35f3ddad1f5", "0x09d9a76e376e194d053554a267346b7e034a6d13447834db68d1c102367b92cd", "0x2a1e0bfc7f387787b93cb39bbd51cd9f023ae0e738abc43de81cbbf122c13e5e", "0x2c9ba1265abe8a7b57f69f8b3632bb13ae772ba1cc98ca033d5369664c40f5a1", "0x0e82b784df5473936515686de5cf8ea1a86455a68b3b55abda5857bd5527e3ee", "0x03ec77e964b4dc113afbfa1dd2eeadbb676f73e27899f033c6faca223802485b", "0x0a6f9edcca76c77a5d699a217dd7b62d0d704485236ed912ce6b8de2293c1e23", "0x1b628084d0fb8fe76d6353bf9482b59af97bf748a6e8046e8eeca9a8a9fb0ca2", "0x2480fbb04baf093bcc1c9162f78214bfe14c3649500d798e87477ff71ea99159", "0x2c92c181e91624bcb26fa27b6c0046054e80aebcf342de822df775333e2b1b33", "0x22cfbcf84ac83392239762dcdb03e8477b261be19ef57e2322c043c08935d271", "0x09aa0d0fd0027d58acacaf20e551e76434bd8216eb1ea6b317d1a6d23a53b1e0", "0x144d8e55408c898646f2e0ddb6ec192b5e4169bb312591d2c758b97207409ac1", "0x0f1a39ddc785cb0881420f42eb4e6b5ecc10c81f490be17f815f9d7f34e5e54c", "0x1e873af18a55663a04c84470498b245b46ef6bd781fbb2e4bfd4333ba143ab46", "0x24a4779886a1ca1aa57204e1fb50e033e31c7f99b8084d285b0b9a933cb0b3c7", "0x0e73aedc9a4578255f1d0f8527708f9d31131205e1d6140ef9757e8e07d593b8", "0x106f27e82457b91e9fa33358ed95a1fbaf86aae5d4ef9954a04dd4635ddc4fce", "0x1a952947fcb77c0ab07ecf32ebf40d96d40ec7fe87b24eb92b4c9eb16f2fcf7d", "0x197b9ed1a8ca8487b72d1e8cce502da9d2ba78c3f22cf7c05d8314722fff72e1", "0x1608554bb309772cbc9a0aab914c4e2c400d72f9f2e5dad466dfa1dfbe05d5c8", "0x0848283bd8201837976d43341d43578f9b22609ac2e457e02664d34830671e36", "0x14beb77cfe2854019e05160b921f96119e94d616e93a0607936b450a3e033b64", "0x034a1494914e7698185d58864582bfe82fc0b7de6ad63f931718abf8238d2805", "0x1c319df3b2680bd8c716696b5d2cf503e0eea5b11d5dde8e95217f4aab6abd0f", "0x12c29c95fdebf01463121a20eb33a06425e914aa9ec61bf665bc01ca2258e1c7", "0x1bcdffb410b009efda67f405fa33fd128fa7cff3730b3860df29b2bd561e1ac0", "0x2e8a9b80ccd2b4387f0ec24caa0ddafb7b0fee1cace342ceb18e91223eea76e0", "0x23149eb655b8640b7fe76b1c0d3b486c2749e647a8d20f29b5f92b2fc64d7aa5", "0x2a650695e37bfea8acc998914335ff376dcd297583262384e27fb805a2223f85", "0x290a2e64f4e1f17bf39d5d4519a152801ffc2d2035d48bba0eb1a8f8238e869a", "0x179786019d36917e8bafa6829471c581d532bf10be7da1e8917a5f70a7724e13", "0x22bc68c0855eedfaef551448da3b639271008d0633aa9e783fae52404e7ddcb4", "0x1340d5b6ce060075459a84ff7f47920cd5318f9d127f9e524dd1f7ac1d082b8c", "0x0942c9ad7de555dd976278aebbf1d22f1beaea0e5ca2bb5b0e6e679f2c7b6b22", "0x0e65bbcb5ebf23a40d6e25703ae029a31722b64a0d210496dc17c9014f9df451", "0x0112a919bd0ceb8455775ee49e2165b5291b9e4e400a75e977ca6566e6a0bd69", "0x1b91c4d8a544369b0daeeade27a0c2966b741a2d46131d3105741f31df20ea11", "0x02dd85797e168d21fa7e5b96622766ec0c02246bf9ee328a915ff2e2c8d9742a", "0x16224724314147d479ae0cbd26a381d4584a8acfd3185d4439b527619d3ae4c4", "0x2fe84e5971bfd3a919fad04214acbc50d07f3015d97c28405dde92827c0253f3", "0x2cb6734e19b3e02c46a803d5616730ad6343d3d923fe9ab98492921dbe14c3c8", "0x1a857e17f2ec1b4c210adfb6ab70c7b3dd0ce6ff603b7741dd2a7eed474453d2", "0x14ce63a350d29e5dc70f9ea2e1dd0912f8d734d32833723aafedabf41beb5b92", "0x0131d2e152c7fc3e65a89f4a22e737335ed4f68c82c5dceb438b519c352132bb", "0x1e410af2e0c4f2d213cb346414d9169cbf481e9ba4d4431e2359119d796710f6", "0x2c93c1454d0cc86eb41df1224d9869700ede7836475611eb1f06a0360702d1e4", "0x0bd5835813addfdd7fe52f4c8a3b10b157ca63073ee2782f74f43506ab58fc52", "0x20944de1bfc17ba91e7a4e57eaccb12a864f0f03f4979bb4a31a84425cc4c0e6", "0x21787b54ce543e9a71d11be03e1ee3ac9ccdd6221f43ae0d261624adc2bd982e", "0x225e74a0bc023c80bb25adf111d52ab833ea4e46967281064061ede0f3d70e3a", "0x19f618947300b561dc3d46a3cd62a9d25f7e9b33f301387d81ab1209feb0a541", "0x233a46287d519ac568adf99bb8694707775b999a6d0a3abca8d6ca64e0184841", "0x18d0dbaaa98db673b472c8ad11b490fac76f62089e10dec1e25386e3d04dcff3", "0x177aa6be86454adb4e45f649672423189eaedf3443933ca5d8cf2da4bc086fe5", "0x01a02810ac6a7679e40266f2ba978c62785fb467b84fb15da6b03c428ea1984d", "0x1ae6c70a5ebf251f5f7e4a1242096a326ef1d5514c38433f0128fdc668357505", "0x02214ef17acba28a71587476ce775f6ee0d3bd3fa5edade9895bb5e8e5d03558", "0x176948698048b89edde8c41a02d4198ff463d76881a3789b4b0dbe8837bdd612", "0x2fa8ea7b2bb13415e41758f04b784973ff08f48be3d5dcff9069f489ded8428f", "0x0144cc7c6ad28fa2e47eb0275a1a4beffea9738cfa8f8e73cc8916349d1e22c6", "0x14f9aab5c16fb02c9ac8c143a41d7ec1f4968f48ee8df78ffe4f87b79a1f3c5d", "0x21e7fe0f38fcad374f525a7e5aec05b47a33eee997097d7b674cafc4a06cddc8", "0x28b0a91e448abe0905876f7c4b7cf7e0d582c3901610d72fa2fd3445339f89bb", "0x1a16874dc677554af43683ff0af81aea7c37d0c8a7d48026698640f69447f44c", "0x2422891d43ab71f8730f1c1447320e50f935213f5036da1d2ca308b84a594ee7", "0x1da66525137ce8f72bac9da36ae4f666c3cb7a3b29dba9d82f7b286b44c32fce", "0x00c4731825357ab15f49be8be8fb61ba4aa49bbc66b9ea889de7433e88c6d549", "0x3000028c4011daebe4e6f64edb1fd3333638af69d40f0e95f484165868c9bbb7", "0x29bedc93abb3b62569dafc8b8987f295de2527006fa7d1ed0fd2f1481fd6687a", "0x0cbe74380509c8ac7668895899fc2fb6b7fbf752aa483e1d9dccc25060b960ff", "0x22b694bc68df2bc4689a4800531bb1c9d8a536287cf1e991a03c0264d009fc25", "0x2ad8e28c2e4bf73c873ee8463eab2f3baaded932a543d50bb9182f246f394dde", "0x0bbd04b434a55d4c5cdab684fa2b8484f8a1b83a5709985668e2d4e0c739c802", "0x2bd154a6074a15b651b61dc15a93640a887bd9e11704263464ecb9fec3f0439e", "0x2d5af17ab25857bdd7604420bd00f1f97232db937789672d2ca927a082046b92", "0x02f8e794e1b2e961d3b2cc77ceb684ca45338be65dd98f4ccd12e77d34708ea2", "0x24ea4fbe7f9b9e66c41cc0cb1bb5e2ce337611e360925dd3cc94953432a233ce", "0x0a37dd5bcc98bdfe4fc6d0fd0ec4520c6f449af5a8bbe4f813b5ed5dd544168f", "0x086a59235fe20dbbe10cc603f69a78b796647cb0af35bc7206c541a48876721a", "0x2bd74d6c3dc977dc2309a0a7b0c7cdad09d54bb466b2bf0caf198218dfceaf00", "0x1faf44bd04babf5ab2e71528fdbccd5fd91db2c2001da3f5e76162313608ecac", "0x26ea7fff86fe56b7712b59e70e502ab9ce09bd8bea98022363816b726f374145", "0x1db2370b5f14be48485e1bff9033853c99d8073cb18bc9ec0b078c2cd90528ff", "0x24f5bf757d1a7c28fd53de7c8cabec5cb62e44c373a2a32f378da5aaa07d19eb", "0x0bcbaced9ef9e0b03d3b87eb09c40501052c4bcd5fc32e4b2bf7b75e21148ade", "0x1ab76daebbedc5f1db440788616187c9fed43b1cb2668e53de5151761b39277b", "0x249dcd5ba6d7d23473c2a169c76eb581185399f9216aacaddd2463e0519fe6d6", "0x0c5da17200b90a0b125b039ed922b6954d34b979354423743e6016b5bc5d8023", "0x2df908878c9402fdd0a3014351b0928f1c559790a0d416ad25a2616c1a073cd0", "0x21ce2e33089951b01af45df3816c80e2048686f1e8014c257c95e2ef3e2753f1", "0x1bbecb607950c54f74a627369a9f94548867778604dd8de406483e21f61ee1a5", "0x23c175479965b3b4a9719cfe6be6a610c0c77670e586c2ab0cf083501e69f101", "0x2f370d158d15b736562d6d0457c44706e671be9aaa524bc6b3bfc34280996100", "0x0ef11cbff50df1e1d36be0c8f35588bbbe406bbea31a3bb6e69b7f7c4f4ea1a7", "0x1f2ff117675d97535c24d19a58baafab0390f3d4114a965c43350c17ce095aef", "0x14712d01c897590d2eeaab6e98e18e5ac1958692a04c1b5124ee06ae8628cfa2", "0x268e361752c72a4ad949b2ad1ef9e6f2e806375946b8b9e6336038d4f849c2cd", "0x11de1fb7c05eb638a4abdb4b4382618529b99978acc73f4e8563c2831cde12b9", "0x0d2a72343a90dbb53290239581b2ff31206a02b9cd98bac6667fd247ad909544", "0x0fc693f9f8f5cb6a1b8be6689dbc03f5031f5df4a30782d8091f738dc7e1e9df", "0x0e41e2a997fa4d0f8b752ecc0dc63b3a121be81ea0e242154dfe67ec049f5704", "0x087b2ca8d78931f6fde0837ce4fa58944596f3c9cf2adab8eae30b44944e1788", "0x125d93accf769d4d3514b21d4c663b1539e227e9cbc45964420361d8d220215d", "0x1f91ac718648cd1fdaf2bf6f11aeeff7bd8206cee5769d8817bb970339e88eb9", "0x29914ab6cec465fd92f8f2c869e1ce9d4dbb3f883b29685063f339588112659c", "0x02da4a10486ef6d0effeb26f869bef99f6d50d8feaa1ea1c8bde95989429e5d5", "0x082557d3f50fa517de2710e0498a683930db5b9fb269e8ab6a42771d5ae7dc33", "0x1d20832e960f550d7061872f6cd96796f9cf61faf4f807df0c3734a5e839232c", "0x1b57a822d34e4ad06cec4e19dff3246bf846bc3408036dab02bc2b12ca38e044", "0x0bc798c8dcf79ca9a7c76cb0e8bb7c2366719fe74092e61e6f40e8c4087fc0b5", "0x1a975b179649b114e3c4559a1b14125e35e3630bf1f8383faf9af282c936700c", "0x0caae9f4b66b45e4732e97851913a594540730f26529801539c4d44896075fd4", "0x08e3da8124c621e070e8a41f0ff1f1cf75e2211087955392d85a1723bd2dc41f", "0x260e3155148f892b7f96b2d74e6c79b9e2c1a3cd9cd0784ae507875e4a267881", "0x2e3ed8d27ee71bb41e5bc98fb466dd4ff9d0f8a668861b773af825d260ae3943", "0x21d0fb7ce364e0ac781b1e11d89abfea006392cabd20f0740d156be1e45e7eec", "0x0301a1aacc4f86684e3ed7a0eb023b92cc75af6f8214910f840c627c3da3cd71", "0x11ee53beb1e8ee4ec10689f4fe40ebd93cd1c9fe06d812e96a583368435ec2b6", "0x01d42d2dd9d2372530c30f4d6122732d1cef8dea9e2ebfb3b2679e9f0dcd04c9", "0x0861e448b92ffe738e18ae67a143876d55a58c162f74d8e556714d1f7e628792", "0x193793bfe5c7b90c6d61475e89cf0d41447128f280d8c6c5dd4be1fc9072ef2b", "0x0126b05ee124c85aa2b1c1273c21c3cefe7ded39b305c5e039a35f9024cc1256", "0x0569dcc226c2e215ae697b8c6001011cbae7ce535f45a803dc60fde9da50c83a", "0x0fe6172dd5afe8ff0e7e33f6499916fd4c5ff2fab969637ae32d8e4cfd3fefd4", "0x074ff2c5f008060e89d30965591260679cd3f0f5aed33162ac9ac99da10bab53", "0x086e65444d5366d82133d8cad0a61c20066b89be1c870dcabfe453648d2b6b06", "0x0b9bcbd52b7b899a651a02c326e064ac6a97be7457bbce896e465d73e93afb9a", "0x0269e035c429c4bdaedc393d2a87978a1c2f8ca0b25b085ea44ce5878ec506bb", "0x09e1b7724583b0e16a79ba7670636f87ea134a19e20dc3ec70c01c7b94664dad", "0x264ca5651ae7b84f43d8841cfb296bcb5f19fa5a06a2c4d2184b54c3d6370936", "0x24e4ad8c2f38fffdfb503a4dd50575c5a12426a5346359e3a5654af0188f0aa2", "0x0adfcacef6ab262f8fc9d2f614c0fe4a3273c82a9e7335e5e0e0800d81e87875", "0x187addb97c4a6437145866cf270df4a57ba705970fe1e0619a0f016933065d2c", "0x0710702df841d4ef5e0cadab7197a9ef19d7524808bba56df845a2e8f141bcaa", "0x2e0664aabc74b5c54d9d047bf5470e45ebc784026159273f1d2f5e4759c00651", "0x271cb7aae9142ad71842a770cc65df19d7d102d9235454d7c600a735a1fa4da7", "0x2ff475f9d52241c2261b9f520d2322f52268d289a028e974742d409fd8bb3b06", "0x2d3bb2cf8530e698b771ede66578a0149e561b366d502a6e79c23b33c500c2a4", "0x05c80b5a16b6a59e1e36303a59ba782cd71407f83273f37c19ea54a961e0cad9", "0x17077cca69eed28f21eeaf0f0048692cd310e6ba87b65b7594de5902a829d7af", "0x2edbe4d8286962d91cf1a93175f925b174cf53d855928f2f10cf46e7baf1f994", "0x2f95757a62d1a5289c6a087e5c829e54d5bc2e03082ad8621641d82f5758259a", "0x0c2ca1a4f1682da3f56490d1f154194ebe40ab4419951cbcd508c86005cccfac", "0x151b559773edbfd4a49a453c1732212955dc9d5ff614e80e75ac63d065dd0ccc", "0x3043ae0869eb8d13b810178b96eb37caa27a8470777bddab85002384b6e1aa11", "0x01a843dff9621487d353b70ce04d9ded438f76c5013f4780798063a4df6db7b1", "0x0eef8241527784cbff33f551f6e2e53d16b744589f50508cdaa0842e05eca01d", "0x1ae85b4527017d45d805a25b139e3f424d3745841cecada4658d97b38cefc4c3", "0x0ed437f0f11932bf16b0cd77f4983af1511e57078427feed328780828b8d842c", "0x17de9a117161bae7f824314ddb7a49d59e2443cd620e0e7af082e7246a725e9c", "0x12858cea51eeec2e4fba5072a9049318de40ea9a4179fa74c7bfc1e15706801f", "0x08cf404091f4ee5fdc068ff51a27e79a18f8ae93adda23b412de37eed164fbd5", "0x07638f755834b05e6dbaf1b992ababe1b575897e776ead3471a4fe68d9e70f7a", "0x246105558f45479e8cd5497d9240a6dd98d96e8111ed4e6fe8ae481cc221394b", "0x2994e4de23f47371c68cd1f602e71295a36a365b970704c70b22f8a816850b5f", "0x22c8d3bfbdf3637a9631e9d1b08506d60fee6945b0038eba8f2da85f10fef0c7", "0x281c2faf2a2c449bb40a4bc4738ea64efec118d34bdfb38652fc86e55297a33e", "0x18c045cddaab43389344b4efe95254dce7d25f7d392b05256c2b949e47caa3fd", "0x00f89a7f1ac9fb37b2753c758ad0265c94effe7e7838c5f03696fbe1ea19cd62", "0x17aaaa6bc71b2d1aa0d884b00934f1283c599011e96efd46d4d602d95d869f8a", "0x2913457175241255d94f002ec50a51838616f2758d69723a91bf0adc46fad0eb", "0x12eba34c52c9376522f8008a66608ab4f08401aab85d16364791fdf91ba661fc", "0x135e9379693f4edbe9fc86844938a52518e89db9fe13e457591328728f15dc08", "0x2f6bb4e91820b1e1367f83134ed632830307065adf75aeee1666d3a59beaa76a", "0x13543a98e58b1b6df98247f452e000fe071ab3fcdb0b3e6b1a919ae352352818", "0x2fd81f7d844b99ac61e8f093dc65fe0cf45dc2a5cdebe96f00b0f43bd0b7d9ce", "0x2d5552222ced4e20cc80371a0210411e95180cc4b310eb66209c2a46681a7f07", "0x23c153388be12196bc1c97d88d9a18dedae099bcb0f1ffa576985379022a1b21", "0x07f0d269eb34dd69addd5def5902b9a7a96dcd173bfe460828ed398efb3a3afa", "0x0d511691b6ef7b32d6b64bb70e219826d105c0e3dfb905a8b88164b8e33f2ddc", "0x287dc3609774096d2b9d98c6f2530946900d9dcd05f003de1d2f8b3cb8e7d1ae", "0x11531b14ddb49b066f1129808f043e3c9d3f32089e3aebcfe29ce49d93d0d759", "0x270c07fb85871f3017c468b3f4701c42c562bb79a2cb74a1b63f857090933181", "0x091cfd790d49049722d482129211f0aec3a10af3d1cbaff1acc674f598cfbd2a", "0x2e1f9b5465ea5e84c8cb259ba5cef63c7f78b04477beaf3b612774add6325cba", "0x064d5ae70d4b8574ff3077e835fee488017cc317ca8af262163fcf9f134868d8", "0x18dd9456a767449c657c3d5663eea71e54e5eb5b381d4e0158c71ca0e3a8fb29", "0x0150f8b58e0635bca8e54452f3e31ff5979c2122e2ed6315c75e2e1efbf4d953", "0x19c1f822135fbb5932baeb862261d37f58613c1ac6ecc6d1a985a546a52e6142", "0x2ceb2ab2576b2b66de64c9a8c564869f79100a783d4aea41e74f436547cfd630", "0x289ef304a10023e4f2d4e47caf25766079103e5b7059fadcc41a475937ea47b7", "0x106455ac17ff5b1625135663f28627d919ebae910c697c940e967e917b66e3a9", "0x27e194161a1d0de454c9f47a47d86289a1324f3069e346a0a14a291ed1f50f78", "0x03ea3ace131a580c737ead77275aaab1fbbf35f957ba5ffa40e3190117ffbf19", "0x108e136f6c0a7016aa3c91140178668f8be92aea8bf22a58a60401bf037f38a6", "0x1384b56f69cae939300958285cead5cfeb1971f42bb735852d21f3f3ff2e6bd6", "0x17afc5bcc3ae14f0ddaaa0ad7f068785c2a88672ae2669ca68d553f4b5611da7", "0x2af2b4d6e48590cb6ab37260cd0628c305e9571a104aafc5a30086ed36eb739e", "0x04965fc8bb9707daaed207994c88d236a33cc0999c7e116512fc36c3f3c48516", "0x1aa274f939ae925bdac809179e60547ba9176d0cc4d3b66ec61ea59146278704", "0x02cbcff5d0b52769ee0fecfcef4cdd995e66417094e84c9479856780fb1d940e", "0x2513f2ad59b991b9015b8748901a37026d2e511ecaf12a716643810327bc2349", "0x23fe312e7bb6a30fed6cd00fa0d98a215e903b45603eec14ff921352d6944da6", "0x0ce352c15bb81b39fe0e7263846b9c0bad0f9adb2935c112a4ca4f58c10b4606", "0x1784a8e161be8cc852574a40c64862adf5ad640468f451ba11de3fdac35ecadd", "0x148af66b8d3a06d4da4bfd09121cab2045cfa1a96e89ee1e23dc61445366f1cc", "0x0d28295b17753024395c50f80bec66890afbc458866858474f5765cfbe75af54", "0x09bc568aadf25c9a88404da27c73732817b6aa6c9bfbd4ce851e89aefd1499de", "0x0b0ff5b9694dee9cec669862d49825b8934f73deae404c9e5a601652af8fd4f4", "0x0e7fcee5bc529956fb4d31e98da1376276cae79503906dd5b3f987bf423ec0d6", "0x057903969900117c287b29cac4b315297d137b29ef2883e39f17edc318529a4a", "0x1dcd75635c831cf3cf5beaedd5450ed63ffb17dc35db44ebfa02078fc55c36df", "0x0f235e7fc34780e8005c242cc8428764be6e488c8eb8604bdbbd7e0644361701", "0x01d84ffec4654dde04de9b0a09385d509cc2b2021624a59d274fd0e063b3899d", "0x0802cf3684ec2646c535c018305bc1377b437590aad654951519c539c30d54de"], + ["0x148d9e4542066b125da6d69ff3fb676ebd27e6a38a1ff4281bd639c97af6ffd5", "0x0b60a28805324295fcaf51bb88d9692372cbf4eef1cba8b85cbc059346691a88", "0x2d38f812ad1d7ac79c32fdd57a56edb861885f20fa4bc6d0d942c2f41e8e4a7d", "0x25738acd1163580033367fd8f1ee199d7eb3c37891e06bc20e6b476a0357588b", "0x247f6967fca42689ae8e20b5a7a198d63086549b78c1620a51f5d36824ccf43d", "0x2e22813077a668b2b75249b8d515a3dcd93502006694245bb087ff0732708b93", "0x1523ea89be61be47e1c36b0e024068c28c48da74bf7069ab2d77389c83d474f4", "0x146695ce138230e087b53ef1bf81601f2591dd344a7cb509f138939369e0d1c3", "0x12d05d9571fa4b4171886d9c2cd44c7d7fc5a4125195e7d28c3c47cb5cb5b7c5", "0x242721147084d4613543788977111f3fde6c89326a556e35bccd2a2e73cac68b", "0x0fd921ba8395a5dde833e6dba4173385007b38d1af5e3841a345c9a480c9d292", "0x0f0bbdc7a39e5146929f2e1ca9fb4a63550cea8f12109c1d82e601975d581f5d", "0x000d65008588b2ee1a4dee0313b6d4396952d901385f2e1afe6a0a0def765dc2", "0x0aea567be31e1c42ce33f589d903363a482f21c1c3d8fe50fa6df018a2dc7c25", "0x02fa334757b03dec6be1df758ebe0353317b35316ecfc72934d069f182346bbd", "0x0017322782b3733e379c8909ae7da94655c46dd2b6b061b9253d787a1eaa9b8f", "0x156816f48e3ef988ffe04cc77ac4c89af8fef8482604e7f93b75c1fb1164d60e", "0x2c8ff977a27352b5d7d9ec103fc8f0c727b84a778f41adf777c38e01800afdac", "0x2cc225cb5ee4ba2b7053f98af7b3b488569016ecf6f4943d64ba843092c59229", "0x0d34d7a8b8f49abfa48c73b10f293aca19e09743a8345e9e1af9f2d63fead969", "0x2a0355ab04bedea61feae083561067edf1476b20725cf5e032db806d33edc204", "0x2dcaeb4653a0ccad1c0872f76b103bf4fa38f6d63119e1437c798203d29768c5", "0x22d2e63907fc0b6564850122c8e924a972de827d7491e92dd84397b2ebca7770", "0x1593a5b503df48305ffc360c4f49ceb02536c73d76b4f2f774f9da3d5b8dce03", "0x22d45f1203cc11e52b9155749a7c0a0a821da4b063cddc820580280e21026ebe", "0x28f01a0adb5f8f85236e1a129ffafb2cdf86aeb4056eb5ff5a06951d64c3d4b2", "0x1ba602ae9d3c4cbfadd0ae2ccf8fcce759f83cff29bf12b53d6050a7585e6aaa", "0x27bca061d815778ed8719c5f4f54063213c5005a46ed7aed0c979d2ad1557c33", "0x25593be458b75a5369a4bd6a86b70ae79876e95ab93705d244101d5df3e45700", "0x15608030e8bb2a8cec5f6e69489064cd21f9b3617034c9751c53056cc113c04b", "0x14ab657ef52773269b4002b7a2cc6d01ea66ec8eb51a97e0bde8ef9f593eaac1", "0x1af18589ae90058d0db1569f4d4ecf74154386cbb6fe90564311b4340b1a11da", "0x1f60106f88fadb4d8f97ce9ecc24d0910a4575c5a710002504b48faa28fb91cc", "0x0066027b365d51255f99caab82d5009ae066db65ba103962f7c65f2f2daea562", "0x181301fa387e521e8951a3bf77c5942c5bbc4a8fcc6c395c34b4f491a9068ab3", "0x2dc04cb3a80a5239a13299eea70ba026593f40ccf49cb8ebd73da29a76413e3b", "0x2ba55e1d5cc09043027597e4fc546a18922baf85d6ab0ec6eff1cf13922b5592", "0x2d5b0f0163ae47693ce731568cd67c54b82f249f2a429e585f65400f0c7adde4", "0x0374ac4769fa6fd0b8166fd62a112357902308a127645453d72f5249ca5c9368", "0x0e767d617dbbe410968708f585dba04e995a8347ef23ea101fea088508403aac", "0x1fb38ef3ce50f158451e37bf5480ba70a91f8fcee93274ab021dfed70f2e2822", "0x14e239aa73b943e39c9b48abb205ccaa4ff59d68f9d325b717791666177db65b", "0x2712d94019540f5f0d61c11c2c16d3dfab0257385896be59c31ff97a37c6555b", "0x0e6f524392452ebad40973a980e08f69abdeb214e5eb7830f7284c1d13e36036", "0x29470b692ab4a550523b448684e197e6be9bc885b9d3110c281575c1bbc67ca2", "0x23910827d0d4a41ee8b13a711ae19b5ac604401a221417172c3018a49de959fb", "0x0bf5862f89a9d3687f2fb246980570d96ed258e8414aca7e0c9df7cee833dd85", "0x00270d4863fd01f27b0558468bca95648bc8db3ca55aaa5feb27c286aeadb27b", "0x2dfabec7671e1e932b07f164ab49e69e63f173513f2d4a015ce8de3e168c1bc8", "0x0bab26acbc48f8648d736366adaa29fde492480002f5020c6220fb187dae8891", "0x2bcdf080431544a4ed25c9db868837a2d17876fd7b3001bfcc22bcb686483bb1", "0x2064a7ebb7e6ade9cbcc596200eec97ca5e2f9beb2a26acc673b93a218f16ac7", "0x0451e58617ec882799b2b33aad34bcaab6a871538c20782009b5da2a377b91aa", "0x2582f9576b56b22907c4bbfa7e4155b4e28ae03876964cd40adb0e255b6c1a14", "0x1af73515b661bd03915b5c3b5d8cec060b490d742c4f48d43ed907ac65ea6c89", "0x0eeb619b01645cb31f1f5145d2d1aca045e69f9a89742cf85faa65a8f30781c4", "0x1b4ee6b9a81fbf0c201d0898a6948a0995ebcd080e0cea83ada3d8ed6182ab17", "0x05abe05399288af84efeb848ec61d53dd0f07439982e04e3a5a304166ac1730d", "0x2cc02c9ccd63f23dce9ec2b3587322da4a4cebf9cc9246c700db6612aa769674", "0x0da64f9355bcc3ccf87a9696b344e5683cad3f876a5b9e5f715a0d70a973001f", "0x2d0b3f3a901f88ad88c2012c2b32f4eb9f02bbdaedf4cd1e37b84f4016feab7b", "0x1d566523ed67e71b5ff0cc5cd17a325d3092bd66a52773a537896e3c6df86c76", "0x037d35446e19eed662a2b628126b2850f7daa087974e21fad3d339d7e2dcc33e", "0x22b59547c33c37e6c300a3556f87dbba667bda84e1b8ef87430a522a576de9f0", "0x196f8d6f851f5bbcea6a1614656b38a30e5bcbff261cef19f6e34066acbdb74b", "0x0576d6d6dc692d9ed7232005e63f954d2da11c77e6e919b2b9dcebaeda11b507", "0x09dcfd5fff0be2df5a5265856c22ac231cedd81a1312304f5896f0909cc3e6a5", "0x26f792286cdde888e454c1ddf03592d6d62f4be4843823526509829fcb496163", "0x299921dbb6a9201f8aca7e69d8190238d5e4a82dda743aed85ca235cab80c163", "0x2863a223856bdd42e35069d206a5088d217b5ffba6fba0939ca22858cd770dea", "0x0ffa5609d1b9aa848721d2e1e2ad6da05d43a241e8e0a7f59508ffa9b1ede432", "0x11d925274d8fae7d518dfecea58a9a57d88642062969e67e457e962e3ed4a144", "0x21c219204226bc43f0db2448349213a9e563e94d3fff28b2e692688d0f5b2b12", "0x2c04ae9f250ba0194bf59eca9404e3af6dcd64dd38e370a038f3fd1e397f5104", "0x223cca831dc760db7b954d41810614ba6e2c62be31e94884d4c7e5ffa67da5c6", "0x244b3894104e51a151a671ca11fcb342d1ac225f43abee839469743457133d81", "0x24f71d5a0ac04a387b758c69782449df7b9ccedb6163a7eedb21ef401452f450", "0x2efb360d9ca0e15f52aa4033f4c423e0fa5c175cdd05e4aebcc278a7b8296b97", "0x29ffd7ef3d018c95e8039c2e990e4cfe66ff093810ad4508c30e28e8bb970620", "0x267ff75a53212383ecccac4e8a3bf2fc9e982baf37ec44478601cfaa6f417233", "0x2fbfc4b2ce6c2b08cbb3e3749fb22ff3d68d3bb7d335ce0e42ec6dc27090c385", "0x262f93de20005c4de2f4a5d8d055c8d5f568991b0a862047e5ad94c8868ba3ca", "0x0f080be27a791fcd1755754f931d9b87f5ad8c1963a02aa7cafdd1e8d31b94e3", "0x21a735213a8c784976e65ca3bec4acc4224527493cd1626d2346133ab8875ff0", "0x160a92fb6a607d5ee7949fcd5537c8431c449d79aa51bb955845d2cbe684bbfc", "0x0079159f6364543eb643f0424461f00135739813840ac74de81df7c9e10c8f72", "0x2286247c58eaa4509baaf85b947e699501d3b5f901acc8475a7d9d7941606cd5", "0x1110425198ba06c42efbdb6e95840d01c00b5d08850f0cd46435cdba1bdccea6", "0x0ec5a15571950cec3c3193aca015791604b7dae185d7b9d8992e020185ffd909", "0x220f98335597493c2e7f4fe3bdc0cd229d0c81b2d0b6f9e565ccf65eba2877e3", "0x1c2fa2d176f4d7070fe45cfe6a8d4bbd0ce685aa196e4ba2372a5195e7ab644a", "0x298c1fe3f63531aa98b6aad02e438a8f278bcad4ed97f3c82a091faea910e50b", "0x2e814b2f088d90012bee74ceef10c7013033af128356dda488e3feab3bf25253", "0x212609944ec047925f31c13d7ca9fd43a4e54a33fb09a6ec9463cb63d2570e69", "0x157bbb9d0546f86e4a8b5e450036ab0a84d6109d5506c85f239267f4ba584b56", "0x138efcdb344b5b40faa9c0a415664bffd77240b5a9cba56b499da2e3cea6b3dc", "0x0ca50e08d27bea508f20273021f6e839cf124a54361def3c9b2a64595e58fe4f", "0x0d34d2d5975a2da9f0dd72e846d797ab312022399e1fe70980f983f1587ef7c4", "0x00dd1be4f3fb034d4669a81922fa014c3c1c5c575f39bd809877db2b9fff9744", "0x25540fcc162307e3906abae7ba258e4fa84ff4dd4ff19742a0969d08018b21bf", "0x24f57936979ae2a3b9752d37c017574493524a254a5bbc10213b7fa6b15ad35b", "0x02d9bd62647a45334db73631da9d97a27e8c627e911b83f1962dc3417dc6ce29", "0x1499c2994ad838770ee3a9af64362a10de6c4c5f32d5ab5bbae55ca0b29fbfba", "0x15a6459a08eed36bd3e23157dd59512bbc84847e37e8a4e3f7d7fdbc7be20970", "0x148d65a6a75fbefb33965be2df0989fe031f47478922d2546f1ee126de7f35fc", "0x16d2f4865c76d38379fb5ad2efb21e777e01744b4e209c095d332e41edb45748", "0x0c86c69e94a003cc454e2990a7ad8167c3bbd4732e646f9f91e961114bc65c37", "0x00b12227a310f8622c9acfe2bb3228aa05cee6105c4268c266dd4176ce7f8e21", "0x2daf91d225f915884e6cfdab42acb62d276341987bc3a2541819ec7774d90e8d", "0x0bc4e8d555614bac1b8cc99bae7f008cb7c82b5cd1a3c481a553caf8ac373f6e", "0x2375f37d0030b894a1a8298dd2dd59e2b7e73667f31b156e86d9b38617500fad", "0x1e8e3c2bd0d4852e261a3c0fa93d83fb9c21d44b49578330dcb9718cbd54b285", "0x1e80ecca29b345ed88be8e53ca042d6c62afd2a4624cbacb3bd07c85839332b4", "0x2e1f5ee70338c50c456f43077216125fef314c6653c9ba72c75da5b53cfeda99", "0x0e9ba31ae136fb0199f9d9e0d8580f5560449f2a8b6a9d0f223ec52c4120431e", "0x24de52f156b2208d81bf109c790f409baa941ab7978af86fbc0f891a5e904f75", "0x05bdc7205a26bf12700656425ebac48d1150e02fe9b4acb07a41609d7168f04d", "0x027f8106542d99a1f903582ad757076e18afce563367b63d5d0973d80993a3d8", "0x07caf2bc3785db7ad681bb6c05ddf24525c19d1519a981b44045a5f78cba52b6", "0x0230b844661066c234483c7fdf632449922453ffb8ef379757509addd81cd773", "0x1c513a7ff8bdf940ef0d01e76fd4ec19086170e88c64294f737ef20b661982ac", "0x0e0e97979ae864b55f27371e6c6e619ab7b887ce3d861fedd84ae111bea40e0c", "0x062d46adc59134784cdaf0c4dfb6c9d7358f315f0948765c8fcbc97ec3f38eb2", "0x2642cee234081127b28b4edb038497a79a2a313a1b749fd2eb67e37794283645", "0x2400b3982c92f7fc2181889a7087c0dc946db2b2e8d86d3450bc254f6518db37", "0x24da88b4f2c2dc7055f4a55f78322392d808c076f2de6cb6a03881f2354e9106", "0x1a3951cd6925316481484ac39b31b83627a5484c259c818ee23a2700c6ceac9f", "0x2ceca27fb996cdba6d6ee1e105fa5df8ba6b67b865931c017515fb42908de010", "0x16081d04bd65bc19e41adef6fd8da7814d2bb0cfdfb2ecce5df82a8bea879e6e", "0x04eed4b89c0ede1bd58851a931e4de791e4c69cf2b1116f8a36b2bc559000e46", "0x1d60021b4137b2077b31173787004201f20b0701411c48ab9e14418fe26ef4bb", "0x1636c29d85687fec3aa4125bb66e5d5f1556557a4860c1df85127790f09a61a1", "0x25c716e5ea5ce2c6a2b671a863d5acb3b2dd4963879f4c163da6a06fb265cc42", "0x1dece00284bc698ea2af97de3d426cf90110bb49be71a393c1ce70ea971db460", "0x292a18569aed3c28685001d40cb42dd8153fa99001cbd52729ca6f8e2c466eee", "0x26edaa0ab7f7eeac8776bff120b4483ce9a6bce85d099931ec9322ba1fbf3881", "0x05d23fd0743e0e37089588392c6df0b04d5aef2e5268ab19c2e9e9b3a3af4921", "0x300bbec302c9b8b7e4baa06990571fef5dad26af618d0779b69977a244c589f5", "0x269f2d9ce098eee89e694d53d3b2d9861490cf184ea09baf640f00a39ac72a3d", "0x1122a37fa0c37863431182bb8277bd0e849b2178a816d31c7604fc5219d1aa62", "0x14e2dbbeb30a3a577a0b2299ce9af0539d08eae0748a721880aacaafe1864538", "0x2f926c6773a8c411b87dc5198c309903d9f492af6f0a43a5af2028e549f6c801", "0x1169f110cff49700bb5fee9e524a49e35889c4689e384b927984e9957c587fe3", "0x003fec863f40327b066e68054c87d20cefa1eb13140520d43a679b9e4a147a61", "0x2e87640ceb4012a9ada31482c79a08f64bab2e2c010cb036bbac1e4a87c801bd", "0x03e07a8e8e86a863b1471947bd2e9629149b55502a6acdabf609edafa0bc9d98", "0x23397da20fe1dd05ff21ca3d213fc0ce7ce46c469537c1a2aaf52294d2fd6dae", "0x179733a75ce11afe8a4842f8509e49301f7428d63ca83973b8d8156fd82ab69a", "0x10c1e8a0ee811326b883ca8e10f3adb124428ffcc5c7dc79e83c7907b2a1eae9", "0x24df93681b43879a4bb61b5c6280f4d5e1360287945b978e59b183f0233387ab", "0x22140f342fecef8e27e3458443baa7dfcba7ac35cbd4a1a09ad87c7f63d7bb5c", "0x08baf85894900ec08322259d5175b370fd4ad33d5f599d609c95e2d15c26fbde", "0x24de9488081b84914effbe7d56004598675363e34b41fe0e9b78107930312e17", "0x1f25291093856f64a271dbd8614931b97c31f8ec8da7121b0bb82caa71f453c7", "0x11eabe4c7efe3aec592a5cec6b3f6dd1095f9d384ea0ce040262eac0f053c919", "0x0b77db0420ec1e32b9ba0e9904a28921f236ded48f3f49aa2d761a631c25038b", "0x1689e35a0fde7b1d3a6e6d149380ffc6b7d9772807a553ab7c5073eb2e3ede1a", "0x162236b343c2c2f7f48b36f3e7a7ec97c07cccf22e3254dccc4b3a30f33c69b3", "0x248c951c9505d2cf2136f6b24c2b749c7751a01ab1cd83934be12fcbb8d05c86", "0x09487042f01494c2af046b94105b70b1b8e5ed1ac5f158408309a66a77a6abab", "0x0a9a97076c5d53411c3e8fff6bb537029080b671324819fb8af33d96d432ace7", "0x0c43d5fc0020292fd2ecd06842cfa8373eb9bef8a9d984348b43fa9614b32e23", "0x146d10ae53aaaf595cb8e8eb29ade3e56c92da9b55a3bc24becf2a2f5fab0393", "0x1bacba42d80c66b3b062cb5dda6a6230492d8685862447c638cc9b4ec374337c", "0x16ec168db0372a9144f511c5e860b07113a671b323952a86e8fd40722c7fc879", "0x0113e5457aaddfe1a393d7625ad05bec40e9d44a7e185ea3af2b58ae695ab77b", "0x18ba814a2a7fdd1206db6a30f7b98f3c45cab593362befdcb0d2a896ac78a7f7", "0x106843bbc36e4064856eb6688d8f3a90a43ffa7f73bfe63072169bf520248328", "0x00ce790f54ac2d34a26ca17cdd642a31b1d4005c09752c6bc5b433064cee6322", "0x2b4e47ca6f897e337d6d52c1ff33a52487c689bab5fd35620d83c567b57a600a", "0x27219b83ad2459b2df9f73df5cd1d2f8be66512d95c4f3d81ba876740519db2d", "0x22cc096806612553e5047eb6e0ec8d01759b9df23c96f53b6fbcaa8a3616ba8f", "0x273e0a2a56e4243f2133bd90e54692647184a8805fdd2ceb541a220253a78b2f", "0x0d449aeb41e8cc9b2f32856f89dbf1409d5605fc557c43c7cf573571d5aeea14", "0x1b07cfc60e61c162dc9f12de253b7f952a9246bd2c7c445ca35b8572e5d719a2", "0x0e4eeb512c3cac847535897aed4fb9ed34bffd87c012a117f2a3daa810dfb1e6", "0x27021e720da0286b61c23b748cc7c358fb6882d8100787fbce685f06e11046cc", "0x2eac1fa2d1212624bc5e0090e25ac0e0160f2d7390c790a2de7740775830e542", "0x0cc0645876817f8152ccd9010a6f262a516af0ca289330a340db6474ae66d261", "0x2ccf92d23a6abeee6e7924bf0d4a9e7040b715e662179a182fd11bb26fff58c4", "0x1b769ddc3111a9d38df31f4809f314d749b8be9fa642d2aaa36961dcde0be23c", "0x2dc09a5638b6194c6d6cb79c56ef205b0be1e7c83fcaef98b1cd1365295c7d2d", "0x07efca9ad6268754a03efb676e593a8c75a3ab84ad9046850654a5488312fd4e", "0x1bb73b4e345b0741548da2aa698783a8c87e923ab1b1008e72d737fbe7f6d9f2", "0x0635173b7551fd4fe8306abd764a169bcce6f3719dd606cd0bc1f2b117fc36fe", "0x189dd3b20d3f8f53f0f5a2ad97f300f99ebb84090a438f7738f2a126ea8a450a", "0x265e8dd1fa619461952ccd1d3a96f2aa94906d9df07365c28dd3e93a244f6eea", "0x143a058fe3987aaf1ca1bf2c376b4979310ef54c29a3e668c124e5af437902c2", "0x186ec8f1c3ba70ad834c11cea7962750d76c7be8691e679bd195a65dfe698ec0", "0x2818eb031998c554c9570842180458d149316f14e29fe162600507b1e50952af", "0x08cf9b17dd2cabc22de68072b0f3bbde4beac5cb58b575219c70f93fe1ec5de5", "0x0a298a9f044a1590bfb4a6835027c9481a406c765ed5c841878a5c14b1c4f4ed", "0x2f4050e4b3b15017c6c19d417790e22fa6d29269d33b54d801c4af98cf662ce9", "0x1f1e5035f72cba3a0226a0447fcd28c6bb211da5fde9229458c8f7d3974a06a9", "0x25763fbc942135da85faf354f47b3ae9fc27606ad701bfe7de3ee704d8160f9d", "0x0eb6142bda2a5f26b49f6dedabdcb7a97f20931fc14256aa85e6a3b0599c8383", "0x1f8e3d89b5c97325a7063c703014144af195ec37cb8b09d544786eb6721e8ef4", "0x1a027583e2da7adffb3534095700dc6f7d6ff2a7a19b06d7d69d7eb63da4158c", "0x2823d3822190171f5924b4ffe5383050cb301fbacd745c2e074f89152a53470c", "0x17fce7a205f42f17c80a146aa3528e74a3cfc444a1289cf535407fef6cfa1e8d", "0x211b7a11f1d36c9c10a9b3e78ee5329ae87e7effbcce5968260b64ca4dcd06ed", "0x1861368bb98ea3229075f4ac8ceac511120ec3fce84eae632b03138a44b4bd5f", "0x111b4df9aad81b42dad504cf07cd2956cc4848e7ede8ce10075538f78cb7f758", "0x12df6e0847db8d01b389639603c878d91a19f446117f9a4aefca9038cc9d147d", "0x2d5e474114c7c6020bd7adb6e15337c4e72f6ef15324106e7585ca3f8c116c4f", "0x226e655808a4062f8bb47c131ce125bacfe68e7840f4ba6476841041c2808981", "0x1f01a9d98aad3d9a65a5373ed6d2b672030dc1ca9b46149bbf9f084a7d24f4e4", "0x2f3578cba83aac8a83f34aaf5c651b0571199e3a4de39ec0579e5ee33993fe03", "0x18391d423c454019402cf0ec7b36cc133247eb98b9bb439c9c189beaebfdd5ac", "0x26fcf6ca811edf267bd800e0b00f6b49e60e5a13ca944810a36632595d788181", "0x140f9b585984d931fe856bdf451805fca64adfe34d55ba4f4140480bd7a97acf", "0x11e878e17f1f867ade93e914e58024464385abf6403fd4a622e41fb1dc22e3dc", "0x1f997c6de664e9ceb042c55bd22c9232b858e40ff4efeb4082c76fbd62ddd8e2", "0x2773284b6eb1c47f14de71f232989ca9bd6a70aae1867ee095299f6419cee52a", "0x1066b87300af439cab83660521ee9d03b06a17c9a00b5b7a8d56bfc401fa5bdd", "0x2f1309644679307e98d620766a2861cee589e6d55dd970c8c43de7ad84d7d110", "0x2f1043b7f9e4b6ec39aa0764007e50320617d97a87be9dfb8f00b4cc27c5baeb", "0x1b3ac550bfdc6fcf4ef9839b66b3223badb9ecc76ae39fe95c9a47c2a1102cab", "0x070be30e43784dcf7d99e4334102a69c40c7981eeed360d5b9968e7cf19cfeb1", "0x0e5529c5fd64e3920f611507fae99f8c877e9257fc367bf54dd073f091a3c651", "0x11d88f7b5649a4b0e1f788c89ef190ed917dbe39ca64cc58cde8633aa479b95e", "0x2f6cbff18a86d8b40f8973b1ce30bddacd2f248a1f47f1f66d3201fd46d93d17", "0x176823962788cb748e12ed59426bad8ee881381024993d5703c2c1079c0b7856", "0x077c3ac1150cda4394aae4e3951f8d0aebdb6fe9e8b336d899ed763745875ad7", "0x2355c7225b6025168045ab1f9cf7d6754e83365563e45a211aa997d1b85e8f33", "0x186f0b6b6d6040a7e140bf72b74a71b23c6ddc1e8496e2f733757ae000e90027", "0x14740840516b80d234f76a02dc3127f9a5ffab1b3f2346aa9c9b910058435ed2", "0x2203433be06680bf2ef05084f45cafb6d8e94158c6598ab1634f3ba66dd16e4a", "0x217d3e984355aa1f6df652f101bbdc281c69b7c75164a13fd29776b80b2a9314", "0x1777f06ba3ebc47efa43959fa089bbe8bace64f9a4406937600c273dbe21e4d1", "0x1fd8a54df4e6ed46ab5d2997b9fab040e8b4870f5754364850c508a9e573e767", "0x11d54b8c949efcb99816328db7aeee0a412c7d074a986a0603eaaf5acfe32a1d", "0x2cc41e52d8f986ee77c59b1de2690ae4e478eff25d4f103b15cc05ca7ab7446d", "0x047c5febf774c62215aa7e6cc3439898f576041f19ab3c8500b07d5c19a76fa2", "0x2e9870ed58dfa57d100819116368bbfba81c69a4903a85179cf7a4c2a8f31445", "0x1fadd3bd3a5c6158a4ff3f0aea374f9635f5211730c79b39d039f9ce17ac8945", "0x2a5c810d6c43ab2d29ff1c5aa46e4d982c1b6527b6a2e83ec55cd0cc4d45d1c8", "0x11fafe98343013c2fd3b4364e1e5922db5be5c0f7afdd7b8645d07b4c91d410d", "0x1d1a82a8b25d503eb4ae65d6bf5113049342c0c10e2f3cb8da9536c95b1211cb", "0x12ff18aee2ba37f448e89dcb5071355637d5d15545cf9cf8e60baaf2cb832793", "0x11737e654c3374ae5f4eb5c74f203d1da2aa812bb60b0c5cacb5f01c0b0f63e5", "0x1af3faf8b2da944010c5e3b35355ab593d59faae404165a07ce92ee11356d2b1", "0x05ca179ad0da359d92252ff3324e884af25b0edf9bd1700e012f45b683bc2df0", "0x1d6a598851b1ecbb9d3ac470d95ecbd588a3b32303a4cd8a7680ef5df2b95f5d", "0x0161720dcea14aad7e0710a67151921bb9d5c40bac136674f862c1c43899d954", "0x23385cd49db575f73550759f679df48cbd1ed1d69932700179df6fd61870e497", "0x1339217149da74d50b25a43cc8027420e272fc136725702f81da8835d0b9f410", "0x2651659ad69b37a47aec09be71481bce3cab23dc04c316118d407005501b0c0a", "0x02873755e5d79969854cccaa36cd8466aaa2e0594e3ba37b8f51bb3a6c9b87d0", "0x0bf86eca4c048d59ff3ffd610c81a7f99875ce0ff1e193415fbc2bcc4355418e", "0x127237aa090a414f2676bc5b26776a420d7da6ef914a89dfb2ea434b6db42c54", "0x0aaf012593fc014cab8879be8b63e24ea829b780fe9cd91b68892705102dae09", "0x2349511bcf3e14b5acbc973e40063d20c1a42fbe9e5dee99964dfd50869d0286", "0x0a13877e82fd54bf79457e703a3c5780eab1970a9b374df6988129c32e2efb81", "0x2f13444c0246613e4a8f06c54b773a553b6ef94af65d3437c04e3f6856ee6e7e", "0x149f9f85afa120aaa5db38e1394f536cc1530ffb639e292afb3136fb051171e4", "0x09af1ec78d4eaa552f14fa6e7ed41842a411c8bd2b49c9721dcd6de80e1649b9", "0x1598306c66b69a223a169259386217b9c543bb63b226c2837c835070fa6ee724", "0x052d00ac603ae26edfd7d8945afee2021a7f8cd3719982f463be765d26be97ca", "0x2d0b5bfcddbe9aeb4286aca9d10f9a783176bf8b9dde55008e232b9e8f45b541", "0x22e76d617bc69278c3976145fbec8a11ded70e6bb9b14739d59d7745fbe80133", "0x10e0725e62e660dc5a675e2da60c8f1ce756c162a10b53cda098bb147dafc138", "0x152e5879db732ef026d2748d6b17c21005a23125ecc01ace4b2ad46744b6918f", "0x2c0564cd2043a507901b5054db2e6eda28c94536013ce66ea5767ae453c09d51", "0x0a61fdb8748245fbbf026fe3cd6a42b873819c83905c42a5d7a01b3ce30a6233", "0x0d86b389e663dafebc5eeb72014ee4ffd205841fbbe43dcb55a0701b42c21e70", "0x2b0ea06ea29b5ebf5946ff05dfa56da1db9f91187ae6789a51283286b7242b5b", "0x2c9d3d65591a9ed07618ddf4f10770596a3fcf25ddf472126c8cb0b3f8975675", "0x05eaea9663cd319d7b6390fd37a5b916d0adcbdea0ef60de5bea3db63e973374", "0x1ceb088dc8e476eee2220df5e89c9943d28f9af36adb2dbad1741f19d064109c", "0x1f88c713fa7f9eae2ba80f2acbee56aac81a2454add66b1e70bee1e533bde95f", "0x05fc10c9b3aba423786210a189a8cbf0639448d239088926ab96346cc543f75d", "0x097f99277a3d8fd2d954de6c2d58e33f65208a53bc36d1383c2d17797b49b520", "0x295508a069661a782227ba2a74c212d4728fb8e8695f1b4826f87408ac4d087a", "0x0760bd5d3082701fd9e7d17d530a457d41a7be55ce6b608ae2363c3c45db4576", "0x0f6c413f51067fb324da04b213fa890fb953332e863df3b06fbfe3d5de732673", "0x1b0a842b23f5f0059a02f26579d95260931b64385be42555370270cb462eb55e", "0x0898e5f4d62bb5913fe5fd2e3b75440887d1156f415aee18cd67fc9d728134e2", "0x10f8852656055f6352276424a54ec899fc6e6d87a4299ed0ccb90011cacb1198", "0x15b12eadb1003ae6382b3d338854a5002c15c03d9bb02842e03fbb75da769cc1", "0x0058d7f1ccddf26fdfa6ee0afd3409ec103b91f4992518300ac2a7bbf82583fa", "0x24acf431e67a9d7f1bed441756b03a777a99fa7280b11def1061cdeb2878bb8b", "0x1a8e72e3b76468c434bba4f191e90170a642ce7ebbd289087d187c305f13a4cf", "0x155a981f161c8c3c756fe204ff2a25ce0f5346957d69fadc6855c6107e02a8d4", "0x1c747b94dba58c3970414851318a6fdf4c86a5f65e4d91e8d4772f567b49a883", "0x259f9119fafcff3c0a98d828daa5d1ac21288c6ebc8e16f4e8a85dfcff442f95", "0x1c5cd1b340400e37a37de09bb20753d4979322e23fdac9c7aff9f8209eea135d", "0x28972ec819ac03e65b0b00c52ebeac03b5ef78281fe543bb3f4e762e7904c6f6", "0x277e2dda293014c5c76662826dd3d76cc7c662d28b2905bbb1ef3a3f5081dcaa", "0x076e05aee9f8c749d1a98b3402f4a2c87be2840659a5182e15ca87f31809c84e", "0x26b2291c31dcdcc2eb55f004c1eab496490d025f12265be835f783a9613adf14", "0x1ecac53aeeb7e2ca436a200daaf1e975be8ac687a8102be23a7f291d9244841f", "0x11766003bdff5ecf352014501776d0a2eee1f7a8898409b21abf35a7092f4610", "0x0becad60e8eab107933f92495ec6e5070b26149eae6bb1005197556225239f94", "0x08cfbc5e1f5efff8fb1736bf118cfdf0fbd81cbe87ea61931dcf0cc70b1c488a", "0x15f63076b20a19f545ea7f9d386c63efae619defd90cfd8347e3e7eeda6b2d6a", "0x0a989c86ca97f9467240d9239a51aeba8c7772a4b68b37f97f4fba26958bbe1a", "0x0b6667027c41530cfc1cf7c6b60bf74fd15a1186ffc0b77f0976d5e1d4501a95", "0x0a87dd205830beedd3f8bf92235ce278e2c8529eb9f1a44530ce1b2626c49c01", "0x24a833d8f5db7cf49e889fe23c518510a895801f7f287538538ba3b0828f8101", "0x2a0116295e2074c23e1bd817842586d115cfa7103dd98245e6d364ca9d5642c5", "0x182724024bd1b487a7a886604e4312f25df11bb2963ea152649cedb6ffcf43d8", "0x2ec4fd171e0927dc9331540e1f6639e1541eb4e0cb74c66cded95ba05e718b8c", "0x2bec29f75e13ae7002213bbd81ba9848501d613894596e9fa35d734ffe9ad50d", "0x0ca8fe863fb236c10ae74ec094a89ff974b5d9cc498546f76c0bf1a510a8f984", "0x157e6adc39e984ff60e904ffd85d4b06c0f7c95d8b224eabb0e1090c080a3204", "0x1337e6b950018ae96f46214425210907e7578aeaa0f62fe3afb9877ee3101782", "0x267f0ac325930461def6afc4f54b6d09e163e84c00a41407938d2d263fd649bb", "0x1c049001366a3521dbfdfce92c324ad021d035767911574fbd4b4e9000ae9a4e", "0x167db26d1f93d91141c48b1a7ecf78ab3f714481594f3eb1dab4a4b78329706f", "0x159fa23e2aa81b787d70facf416079b68de6b8d7c0e234421fc450c2f1917256", "0x29adaf20cf59c0820209a749c61a36b84eb168287f7ac640a37df4a569c3defa", "0x03c390694ba7ab4800b93121bb53a36d654dcea8ff9bda64c95770fa545dad59", "0x091f94292f6b5252572bb419ec455d5435eab1473eebd72d8b20ae3fde0146c2", "0x29d64d0356b6cd07cabc18eb5de28728c246663c60133dd989e89af97f5dc212", "0x304897aa5036b3a80774e409994f5d1e71a7836f577839d3b92d938590888697", "0x125e0dd8f249486f133b8bcb9179c5525929cac3ab09bbaefd97a751bcb87e83", "0x2fef69cb9e21aa57adc0749d32310ebbc3921d75f8b5c79978a5e83d66888e6e", "0x1e3af408be8cfe4bbe03849a711fcad85b4f27977733524f2bd35b7166438687", "0x04e655df6114648220f3a2a056805a636307b809779e9397953dbfd8b9477b54", "0x2a43229e666093be6184e292b4a87d605cd3860037fa2aef07486d4f856dca8c", "0x156f9aec7359e5427d5f97a165cab447d27089dce49f1401e96c37e159490cd1", "0x212458241e29a83d0d11c64fdb0d2c5e7036f441e5394a625f52c1100f8daea5", "0x1dd909f5a32a657a89eaf948a11f8eea874eeccf49632b310314d77ed72c6257", "0x19d8a81f4867c40cd292344df8d2dd64b07fead4054107414a45bb504bbe60e0", "0x1f285a438fc7ca62edbdbfa5f9ae627fd1a6b68d4bbbd7ab867c34db73c628d2", "0x06edd2c97cb8ef5db711360743458dde6d45de0fb41c646a72afe0e02033a9dd", "0x2f3771f984d334c7298973e9b2cfaa1ad5989cf379bc41f78b964073955b978f", "0x2abbc43b9224188495cd9ec8479f39d763b8d560df4e9dea1cd7b1618fcec9be", "0x25178f08389153aa236e1da3c3bba5e408d52ba913c3718128a596fc40755a54", "0x1b28045d36ce94ca72ad5539c54d6a9a872e66fe6206a251a61df5afd50e3e93", "0x11c1664633f12fd93a35d8553fb8e1ebf3ebab73614642da48f742483c0d8148", "0x19307c6980c6adb7fe1d4539c10d6157310af45ceaa4618c0d4a67f71a4a8c31", "0x14fae46d00733e5f7e8ebfb360853311f021e2a252705453cac23dfcd72b72ef", "0x0e3d1455e479d3b99bcb1f8b662a43c885a9911b238e08fc4fa6bd1090369492", "0x0f3e285e855de079c2f3c562b5074d095b57268b0ab1aa07c4f7650254087d7f", "0x24ad5850b4f923abd687dbc4afe75ba26039f7d4b33cc43bb55f600be5fd2ebd", "0x0a22143eb18217e19455e023bd571d1e757ccc89850504f580e433cb40afdda7", "0x0b968c0b278f32e9ee1b4adff37aba3d15d5943a77ac7783353397b72c70d533", "0x276990e5dc0db030b8d88a5828a4b343177dcd554fce8a36692f74ff38f64c68", "0x1f180aceaa766f24b92552242448a01326580a9c2dbe2ae3ffbb530f23ba1717", "0x2dddf4a14757b28de03cfe210be338cfe3b63f8a02d7fb0155ac9c6e3e2b6bd0", "0x1481841108e80996b079e3e977578443ce0ea8899d558dd92c5cf20279795ddc", "0x2a3a6a173401ca83d33b0997eaa2805bf7869cc7deba404f395ee14e06daa3e2", "0x11d7372db5b796363296c6b99040d883ad66f54862b4965f5da0ee0227bbc456", "0x033e757e99e3f1ca826c9a648a73de374a11c2838024cf736dd31c5b5f7c0825", "0x0e1bae5e746ded510eaa1145574a8468c3a7e2691a7b324a9b9efb36a9cdd4ad", "0x21818b1fbab0cba1ef20245ed99451ca1dcca899222c147b431553016a09dc41", "0x1a2604c6579eb3b1e803427249ecf1742a9bd72a6ad9ac3845191f8c536f7d91", "0x2f41b5d5d349e955e15f50ba0cc3d3e854e9065f8d62461332ccd746bcb57865", "0x0394fff2c025027635cf4a7cb7588a6ef587ed994314e9f813b7ab99f8d4c32a", "0x0a9d0ebdd8cdc392ba446d6dcd5c9380dff2975f275e30f636dc9641b2a2362a", "0x255498cbe7c9e89580548f0d92255fe9a1775569c380abd18d22004807b68874", "0x29dfb1a35fe5c7f25490b6e2e303d711887051c092a8e642c07dc130ad3901b2", "0x25a5995a98ef0f5402b25b2031698447ff89a9b630094d71aaedf8b5fc4ccdfd", "0x038ff605feedf7a740e890862fd593fb712aa19b4721d0d97b0a85ea77f2b621", "0x1aa20d730f53b035813f1504a853ec87f89bb56b05fb7b34f21deb1aad4c18c1", "0x1124f2b33e05c415a7d9881d948b9e15f5891c816a0495e8e62e89089a29673f", "0x051d3aef244ed3af1880d68658b4fa452aa3f8ab79eb4d1de2a1b827fb5ea359", "0x18c3911d3e25dbd901a7377327c5622522a29f56fcb2d395c4c9ac1e05409d3a", "0x09e0a4773ed5abf26e474c8050e9578c5398abfc42d2ae66a72c3957622de157", "0x2de436c8a217f32be5d1451bfbff7e3f6b3ad46a2da58f8439908d285c9afe55", "0x269ad28cb1fac223861da664acdf330c1732e75ce9d1a80071d8f623e668758f", "0x18d5c9f0a8c3c1c62a31a12d945ac562e7f28e951145d700751b59f5c4e046dd", "0x1eec169ea79a149b6a4c5b3ace894f421779dc9e9bb366e8ecdef2eb3c53fd39", "0x0982ce518d3d2e3749dabe6b57758fef9eb663a996dbbd91aec0ed84eaa75ede", "0x272007ee9d7ec7efb6c80f25a2110f94d20ac436f7c50c1e2b7f6bdcc76909f3", "0x1072d3d540d1b00dfc923dcae102f2b6ce363e5054b3dfe2bece4f96cd15d647", "0x28bb8d7194d4123767738d6b4d73a05a94c8e93c7e08f808c3a4bdf564420120", "0x04baa18db3db501d39e42c49f1cce30dd5619e1ebd14266857e38a753c63dde6", "0x130c77637bdf1a336d9b4c83104ed1e7b81808142a0bf1b2771b530eed99f03f", "0x02c0ce56da12cff29effbc3dc9b05bd07d7ad42764ff28350c7c48ce48ad4af9", "0x23eac7695fea23aa2f2ec9e1ea7b62caf5e71ed61066009bf93a6ef3f74056a4", "0x1c79be403821f680faf8289807244a6b3c04d0716134d089add44dbb97da7172", "0x05a48abc281f771ec36dca6268f591ebbade05b23fb81e7961c8cdff5d5c8255", "0x022aefc1e9a4d06cc764e9498634bda97bf11eedd5850100a6dbc858619d26bc", "0x100fb400e2aaeca68ccbdd4cb0528dd3b8da8207d6bce2d41b4aecc1f0720581", "0x04f0b1d5fbf7c9467e826c385424b91faff7e5f6b59e37651dc4bca500327cc5", "0x06e33a10b9bafa04f20f3e596c0c1d986836b7c16a56ca48669d5a0514270160", "0x081bf056335b1c44c461c4d6fc1f9e032a18b9d2f7f2400724db06385bdf0774", "0x06ca03a97a5618ac671d4d2c18501e5e8588bd793b2c3b54dc154d1f40bf6271", "0x114bdbd88798dad58dcbdb9a1fbdc123ed1b56490a015b7c2943eb5aad9ed1dd", "0x21bd28fd49cb1151be1afac1cbed0b705b76058784ab92fcb3a2258291780489", "0x25516e358045290d7bcce1b4636ca33095142d4b01f22ef7d94e28cf81e9e29d", "0x21dee602b25e5a67889ef243ac9c891b73ebc717c7d8161995d74bf4e5bec07d", "0x205992101ef7c5c3493aebf5fb8eb7acd01319524ddb56fb75dc159a013e9c88", "0x0667cf69b46dcfae72f7fe6b5d81e6d1191ef029280803eec032f5ffaeb12019", "0x2b7a9027fa05243ffbaa486daacaef850c4d033b84b3641db98fde01315e5be6", "0x2c7aed13aa9064e06c4dd9299479fd2fbf56f73edfde4a117cb8db54dc76e134", "0x19f76d0c1f5b1efc61c645180c5441b569a90ad7110f51271046c642f78ee4a6", "0x04749d2cc3d3c5612d7586ef1214de38f848d8b3d9afa266e153eda3920e72c2", "0x2858e042dbd512d9ec147fcd5cc0ff21570bb5e8da3b20f7f69acbd28785610d", "0x17a5cf2508f786d73497fbb01f1a02dd8beded89a2a3c2170ba1f3b2eb31c964", "0x08c7b3263cfdabea784d21a2d888b7b10d6c95a282a10169c85f22a22bb78e66", "0x1604f8490be24e6adbc37db5d23f82bd706546d4e78c08e39c1580b7c04d46fe", "0x04d2e4db13adad49bbf930ad243167c77297abe1bd73b5d148529efd75ebee00", "0x249361888bdec58dac53f9c01752c5f6ed7bd97fc27b3fd41e0cb90b9b2937c6", "0x001ff257f8b90fc3cc3f483b9623ca26519e4e04ae6dd38ef24275258a7f1494", "0x27e9c91e30b6b5e3c3097ea19fe5341727a2bd8dcbaff38d057313169e3fbec1", "0x022154015dff9dfa94f7a8339f4ff118a8f8176dfab2c88468b2cac7e3914cfd", "0x03a08472944a4c84ee7fe76ac61ba12ad1b5ecea7d14d4dedc8b2f7a878e2afa", "0x227066b89350a8b139e5bf8b14660caba369b0828b4caba58600f80cace84ab7", "0x188541fa12da77e21d041035190e0af32728193188f77229d79a08cde35e11fa", "0x25dd5c1efd162352f25ab776985b0fffc05deb7094bb6d2879d925cba328cfbf", "0x129f292e9cfc7cdb1b2ae2c7c30c3bb491349cef4f7d65812d66095ae9ea2aa6", "0x206a809eda7d396d034e89813719a58caae380eb9f221f445b67cd5a7514dd44", "0x2e7f566a18c5c428b55b4b7d4bdaec63f721b59c4a307a7a740458dcd9d05d9a", "0x1c0df0b100e4e728a9e7aa34f6b0db0da6b8fc99c3d377f1560aa156b7f2626a", "0x0b875a366710c0691872b26d9a98a498e929acc2e677868c4ccff663395cfb72", "0x214168e91d3b6a94d48476b1b424f16240bfc8fff6742494cc897103ba7d2459", "0x01bab48ade466bf636813634624daf73b6c5d6614340542895795c49716351e9", "0x0c8425e1b2470ca424397cfa66665fb861a3af4ed66db9045fbb6a7f761479d6", "0x0870e13994fe31f94b82cb4923e820a13c37d711d56dcc718f4b15a03d627d72", "0x14ebbcfca7be17a5efc356904a319f4969b4d4136f1026f57400cd7db424d778", "0x22dd5ea69a5036fd0d4f63153af386feb23bcbd02112d0b7574a6315b4dd5fd1", "0x1e72a099e89eb37443e42de1ff7def1549480852600cf4552fb17466abd89ec5", "0x018fe65ff0f8901603ceaea4a7462fbceb80df62602a9c132264c5aa49de0cfb", "0x1b649fe60a17792252a77ec365ef832fd3722505ee40b08999c728d5c6db2a62", "0x18a42f27632071b87526d95dcb7de26362aa28abea426c73cf679450bca959ea", "0x22ab7ea700db2b287b301d010124c1d2af58f76434b8bc47c59aa88620add840", "0x26dada935deef8551a9bdd474985592e2a6e9ea3522c07afc4bf39577211011e", "0x0c6f417f88a5fe08839f2e8b9007e2360e1d618e1b46a4979cba59d29b719644", "0x24788ff3b08c4d0fb0b51b9b4358fc0cbd31ca31ba05515855a33a282e2de1e0", "0x1db3fcae24ab59721eff9aca5d5d41ee9d7831a79a45ad3ed385b1322a7b2785", "0x1f45fd57e811d4e574516575d86501ce6be9246f5891ddef62b7ccf835bfdca1", "0x11acec0b13d058dc6c7239eba9034aa33702da17de75d6306f282a1b2bd16892", "0x21acdb05d55ae1f4aad873ec5adb6b6078170063a70cd2e6319ea0cef833cf29", "0x110d9b94d49799b659e142699e767d9564ce45179b522648fa8a83b45f8d76d3", "0x18db2b58b40741f2e007f70118e3a1a1bc2150e04fa34e421db5068de19e3f24", "0x014768c6934126d0ebfbdef341b57ed229076d70348eecdad8647b1d0df7191e", "0x1704d2d2e1876a075b167a65f6cc26d8837f7e2d3f7628aa26d3f7696962c237", "0x2cb8147670f73e2ff79ad1912c835d3d3f2b2381f60eb37444a6c0c173b537e7", "0x0908b9e220885b417b58db1da0ca974c2d657b50ae1c3c5e114112a925a7159d", "0x0f0d85b4586161eb7e1353fbeb7ab3e31b5b62e720379efe3f6549079ac3e60e", "0x2103faf663c3549c9bd073de214585c1aedbd5023e4a5ae61996f5e22b0a4a65", "0x127ca0c64d361063a6c7da37c6c3c2080181b6dea5fb63469156f2fa486e7ffa", "0x0c3e9dd099f9ca600ede039ada789f28795ef7fc650e845402fc15f99d48c00b", "0x0ea05b5d4d88b9b5fe35406f17ca1bb4a855e0a6ee7d60b31e36a2a21f411fce", "0x0963c4be071c32fd06a52124c0d87aefe595c1db2b2e6c2c9cef53456bba30b4", "0x0aff89c1e81410468fa51e7776f23a077f27446bd98cc72189f641b6456eccea", "0x15e753027d63337a330c260000082ea07548a724dcafa255e67b7745574624a2", "0x1f7acb7ff46a7c623381155c6829374bb77587abd1f9fa6b879df3240954ad75", "0x0c62a3de0bb681107c4dc6d9e623d0562cb6784f2403693fdd64622203b16864", "0x16ce582016cf2e1838db97dcbece873f49f8c60722d756c551af3ad3b1a933bc", "0x29cd5e2fd2b684e47c078fd56f852b1ddbb07ebcf995be991e9c2259539fa032", "0x12e8ff93cd5c3d7e0455d9eb0e7e9ff940575c41c35d1e5e441e530ea888a908", "0x0f3c400867219d40e6abf2ef22a90901811ec95c61906c730cbe777761ce12f8", "0x2a61f96bc53c2328ddc85e45096c9532c012f4713b8b8c8b1fe1227f8fd760c0", "0x1ca94ab706e569a4fc1bd36c9b63457d5d7235b356be56bdfaef24f99378b467", "0x2bd4a2387e6ec124155de47009789e1b945ada3adac5e35107398bd569524090", "0x00454150ba34548a851b191fb1a9f3587464de17acfdb0ddeb715a2e64373174", "0x1f22b39bedd115a950f7d784c7031ca0ec3d1a6a67375d7b6ede480c5ca145ff", "0x079a66156cfb99cc17c6d39fc9c2219bb89247b6caf93658d59c6fd0a1d1bb06", "0x17ee6df0822371834c222f954f03b016b8d5ad4db1be66f3f946d5d028e65176", "0x24cde14169b4a758c3a126ab3f8f18077fbdfee0f03fa7bccf999919dd417804", "0x20ad08d3558c9efe03c8895ad4dc88bf8ab5ed4867e1acde6533ea2f86d9fa7e", "0x1d0e87e604d01091898d6e85d2ab9af9bae03ab511a34cd9a620f088fdf8f1e0", "0x0310a319952f3f6e25015abcce49fa8110ba383c048413c899ac4d202c36b804", "0x1570b11e64614fd49047279c454078eaa9cfb883a9434a064f763421b26b2709", "0x07a6850ab997ba45837a422c1c0466e6cdaf76fac2199f13f63986b2a19cf2d7", "0x02c25344043642c634a4c011d981aaa7e5f179ce9ea4e921e8d52d0e57169ce2", "0x09f74e8a85c293ee8a2e71f6d23495bcd9de56c2e0034169034eee85596f5a7a", "0x079336363220c753590ab21e164aba518966a7480c4b2890f45272368ab2a97c", "0x1ff046afacd14fba346ce72edf23e540d10842ad7ee3c733467779518a9a70d9", "0x11d64cc17c095e49c45eb1ca2bad482a820326003d49c8cf9e9c02ecb7acb4b7", "0x2ed20c0b8e33f57ded5581cf937a4055f680b7d72d65c554c014568087d5772d", "0x259cbd244ea8c9840becd72df29e96fd89b6c39c7be72b16be9f0e43b73eef6e", "0x1e7d2f21917295fc375854225e63ad503e27e8d6c9225db35c2ba375cf4f8fc6", "0x257e31a7b6add90c617b93325bad37127f0732dfac4d0ad93331fa7999212a5a", "0x1dad54fad4273e93971deff7dc3fe74abef1cf6c302a64403fc7683966975019", "0x296a02967a5513e1827e29c77285be64682ab142d13c6d2b7eb58c0920dfd0d8", "0x3012ff61f630a0352b741e63d628ddbed474ae6993acdc0f9e314e8eca590f9d", "0x0fcb8fa2167ebb6b4f422131a8ed841306b3a0840f258d68edb477e8e1ebfa2a", "0x0135767e5d3112e0777607c1c5b91b1148ba641dcea07e1c2355c260285ba1cc", "0x091943098fd0c94aafeabf4dbc494b6385e39969c06c0a6854de0c7e688c4d77", "0x13010607d24e7a178c43d9bd68212157776321d95438d572a3b6ef77141e11b8", "0x16799d69231b9802789adf9d22468442767461b49d594e9a950dd8d5ca49e7d3", "0x1eb07b70401fe93b81df97a1f4599947a6a812e34498bf2abbeb1d256a28edc7", "0x005cdd9a797bcf1def23e8ca120b900a7626b357ef869644f28afe0c053f3eef", "0x24b20d885cd9a6318269aaea97b2469c2b60f7ea371c6a9c223eeedaecba49e4", "0x2986b0ba3a3e232129e3c444e9482584fd83d6d6a7d9bf43120a4c56ee5db03b", "0x1a188537b78ce9f663d64b5755da53cf88ecaee852442767fc16025ff7a66780", "0x08619134749841915bf5f92cc2045ebfb124506b9b25255be814a3b28fbe118d", "0x0135cf6c3cd0c694581fc2e477d6538a7b233f89d226373622781b029340f0c6", "0x04f9a5254dff765ca0403efaa2acd9096b7f59fbc20039138660b892c808068a", "0x29bcdd6c672f0a1870708d37e85130225c5fc826e9e62146313fbe1ee2c74d1f", "0x0c1d777f8eed911d4cc0e50c3f430ce9a1d5d7176800bedc36f92b7e4a685fe0", "0x1ffe8a9ffbc76d46c2ea2abc0e1fb3831f18c81144bce602811de39623d4a493", "0x216cd3e66ee82b1da658549f4df13ec3f38ce9341673c49859ff0e831827a7e1", "0x06b806883bf69388b148afd73b4880ff63bc57e089ef256e4a56befe78abdbb3", "0x1868f65214ce859946a2a86eb0925a650cc4d47a95b988a3bd98a5406faaec8b", "0x201b2cb3fb0002584beff69faa8a28968ce73207f731336a3d56860bc8d33d3d", "0x0f1c998ffd657d5af5f3d1500f9821453743face03ae2ffd055bedf624b76699", "0x1d8d584fd393d2a8c5fa9fb2840012a4e5cfd1fca97f83bf6cca4688b3931f4f", "0x1d4c5ec792d0f9e121c17ff5754eff980a2477f142fbb815901b6c597f5f5101", "0x058283d9a82cbfd8f01675373aa63d9279e9bb463c225ae7895a8c51a794bf15", "0x2797be48c99c19a141e57cee32b7845f553923b08474796cbe0eb9e79b05f8e1", "0x2b54896116cc45dfaa47204d5156075d1dec98cfca7447af4e93457ec1d9ec6f", "0x1b2fad2ed7baee3fb3d2197d6a9edca30ece42925f13481e0f780172119fb13d", "0x06b54e3fdd785e099f791c94fabfc62c3cf75963c21a75a60e65da896ea37dc8", "0x2f3c8963365a4058a8be7a91e6e451dcb1d7933aa8484a5aa7359683ccfa87e8", "0x2fd9929dc895930eb098661ed0d152f2868bfea13e8992d08a69253b9e9afc7d", "0x25d1ebe8e9ec0fc6d182b906d747498cb9fa55a298f8f9f6c9b4cc2eb326adc9", "0x0b6e6536ba3020bbe259f45ab1c38b2f5d36865b84ac8241720d28cdfbc34122", "0x23b8b4db22e8ff993e12d9b81757d1e7edc6c39dd4de47ef6caca147e9fad713", "0x1c232bf61cb7d3de8b761fda9304c24420b059fd01d42c74693192ad77634d69", "0x06d0184a21f4593daf868d9560e4647b5283892526f6a7f9c5ee2663c666d567", "0x1d96ecadc34f0ef9f5a9c10651d6ffe3fafa6d6c7107d8a92ede406c229def93", "0x25d6954f6b8e584c65d70a0d9fc5b575b5fe34e7ca66d8273928ed4b8fd19303", "0x011560d05817b7116aebc0b0e3cda650e68c0f528f62593af13587d683bf3e37", "0x0a47bc556a1bdf639aee0eafe6cf7e7b901679b1b14a47dbffa1b19afdf877ac", "0x287af493d2f91efd9e12f3bc7c7c4e0e04dfe89fa9e68242fc418daee7337bea", "0x114980324eef85f90c3877ae83a48005abbab0c3c0f7df46b3244d84019ba5ab", "0x2f2f074c9bc276d9fa172a81e954b616cafaca11090da4c330f3759c68eac2a5", "0x13d19a59728afdda4583a9e180ccb9b095f5b5729e866851982711903adcfe13", "0x260f038a5bf94790b22f2796e77d65d4b53140ab18c617af7da59bb1ebad8f46", "0x0270944854b771115be9dae3bae6007838e81311ff77e334755c37c2f8abccb1", "0x29fba9080e2201a4d09f179919d8f8e29b22b7aff11a3c3a1ba8bfd36880732e", "0x0735d5519e7f9cfafa9e943ff54f904badd3c07812a71155579d361803b0d300", "0x123d88ba78d5d633ad4f4e78ec2806d642ad8d24aa9ba8d6ea4393d38c5a794e", "0x2f2c3689a6ce7d1c36aa42906dd8b694be752a4d5643cc8635501a987e638daa", "0x0a9f37c901456b2a30e8d56d65afaf7cbe90b3a69b47112f6a909ee1c896c0bc", "0x0696d1a52cd965c61b8333cfef9f147da7cbdaed71be5fcc0a4eed3acffbd03d", "0x2df64206d9cb7e763d94c72e85da26e6147ca02236f670a3bb97d0705cdbf1ff", "0x0f924eeec090b123ae678a47aa3d4cbb2fbc33d2ea10affccbd55bd58021cc70", "0x13768e9d6ba854c557124e7ecf2e7b9a6a3bc1e25751c5db50b681b83f5e4e6b", "0x05257f1213538d118ae84b89e2adde7e4003e042836fda32a65aa63c96a702a7", "0x2eddb854c4de05814827157e9d7600e053c686346537776592c91a9c51efaefd", "0x0c5b286e46a70f81261a1799c036cff3a138dd31af847eea379bfdce8cffddcc", "0x28ceb1311ae3f2112c59eff2f1de36f027fe748e398e61e2dfb5f41605195b76", "0x02baa3c428d4f39e1dd51172840cecafc93869a5d4d2c451ef261b91d833eb18", "0x12fddfcba4edc48ffa0af927e5d29d678cad43b1e5889e496512423c51c75194", "0x1ffe4a425765acbb4dd8f671f11c3abed1e43cc8729c8d7258a787366e6935bd", "0x0518e1167639d7726de814e573f8d6e644de240190eb22da07ac2a6dd1a49fc5", "0x1088088ca3b2ec5ef3406d8b19498409253423a0cbaa579b78cfe22b8d2ffdd8", "0x0141132e639be390f54fb46daf1bc33a698da31b6e21241ac25ba91b4a7a2344", "0x2d30e4075796050c0f400440059b3b08141a3c096955c00720f37e3349b10037", "0x06c0f8d2050410d797974e3a22b48d7b4aa0f4c12db7c71a319adec4361941b3", "0x027714059b3ca2531e3a65e024d3bd46869e854b68884a6b16869109a965333a", "0x1143e960033b2837e35911b225966fb3559f869868a7587684cd7210ecace9d0", "0x24561022b33523412fb78512e39617226ec874021939d3d0e9b7a401794632b5", "0x225a3a239054ef061e664b56d65efd62ddbe5cfef9f55bd402a3278b94c9bc1f", "0x04be165a533d19b49a0151e7183868a5120a2e6422b500441050b41c486305b2", "0x17258571aa87c63d477d10e64d069fdf231a6e47d4a31ddda4d6e5f1933f93df", "0x2a9a6b89343fc416e297dbba6f6bc3d284db180cdde66ce94b0baea5ff716b9e", "0x14e059588f8f8af22297dd77bbb0112f57e56c3b7d3ea47471334d34e2181b6c", "0x08c09cf67bf4d0fd0c211298fe47ed233e6ab52ebcba1b524f66dad01366ef43", "0x1916ed4b8a5f979154a9199566a8b361cc1007551ad9db45515f8a6c0e1b2705", "0x11ac7a860d793f97870e952b32464cb5f501e215e6691aa5d4b79c1c4cfccf33", "0x2770c5a5b83ef407cb79fc9e556a310bd6aa3f081e6b45d98a7683f60c3227b6", "0x1d412d15cdfdf748f3a97dad82987660dd39a4ea932fcbc51a082233c156d69b", "0x303def2eaf1677b5c7b9cfb679829804d6734dabcd7ad3a774bbfb9a8337bc45", "0x241d6d50be49fb796fccd362aaf45b350bcfd74573d144c73e7ab42e3047011e", "0x114727a81cd91073352f7f803cf621820de779cd7c6c2b9ab87cb5b382737d44", "0x0d8184eeeeaff3b2fca1a4cdab39e4951e3a57327ddee51637dc6d24464842f9", "0x296998f1627009acc7913af056bc34280345ec6a9c27c73804ee142fe0b2b99d", "0x145b273c11c576c7578a4b02281d9b15153775884bb6e788405c4879c0edc2d2", "0x0973e6f51a9cf4fbeca74165562d7a656db8f642c4105a2841b1b93489b1e73a", "0x12e81b001e1e905f9dcea512b51ff63d55488d57cd25ff3add4025cf3a9f67f9", "0x272e7880a179f5771dbe70ae7d7d51ca28914120ea1dc3ab8429565cd6a7cbcc", "0x155b4d3a78b1d705f6ce624bf465d82325fef70167cd7784af872872b348a025", "0x09203e60c31daf6007a9ef20cb2e34eca9d1c9d93e99021e0a383598bfe77392", "0x11ad480fa72db3bc1695c9bd672d2e09a54e72ac9e8ca9f45ff8a1c73f0f75f2", "0x05fe4ee300c48b0cefd03b8707154264cd513c0c883b463944dfed3040c55dcd", "0x182a229d10429db9ff0a5258729e706fe9282c6b7ca60473ea234ca13a31bfe6", "0x1ef4d2b668a1e1ce444d213f1ad4d23de6ccbbf6cf5a93d31687e53e967f9dd4", "0x1cf2d3bf240e01691cc6fbbf23bf48d21eb9b889c6294cc18d1fb79c9b9a53e9", "0x00c110171a8f0642ac0edb07f83ae2c79d991a3438366f98c32c2d12f2f94a49", "0x0d82a68b0570ac8cb4b70fbf2a60bf17962ff2886284edfe5aab8ffd84314bfc", "0x0a31c585939669e5697c6b166767edac74e6359d364e1263134910927648ad38", "0x137c5b065b8d3a7161c63bbacd60dec9eb2e17c63dc696a5d157b648554b1c58", "0x090658991cce09af9bf77bf1fc0506346e5a03e3096921e8d436469fd75bb6fa", "0x09b309f6388a7f65393bbe50ebd6110854a91c674ea05189451cf6afd48fdba3", "0x0cd217f30eee2598caa7389d2efa182a4756fadecf67b83915aea4b0c36cebb5", "0x2b9a50d2973f4eccfe26616eeea8f7f2a9fc1f09e8d2853869194402179baa7c", "0x1d444efa271e105a83b3105d469ca1eaee6a27534b9a62cc210b19946f08e1ae", "0x16e21e081525d3dbc0f34577fd1436837c912d3924ed75557718992d14dfcf4c", "0x157b7cfd75560a0bead677843c52591d17554d8ef8a015be23e34adc390451d8", "0x1bc4666ac3f4cd1f5dd72bcfd1dccfd8c60fe3722a35f65682091586dd285284", "0x22b10f5c2194d9054221ec2a9cc6a1bfc1f4441871831d5f24d3da686d4d5e9e", "0x051e548469d19290a23fad84daedd2b5495591f22c3dc6bf467f1eaf12a09f50", "0x166e64fa7d0939c9127aa58b7aaf2bea61dfbb3138bcdf3dd9cc986e9ca4f0c3", "0x2e7f8d47107c0f31031de15f840ffc7b43b8f64815dd7c10357e852963f14c84", "0x15598a6b2c7ab91c1ba768585f11d64d4c9a3f609ace9039df753b4cf9016931", "0x083008079d5900cf73ac9f0501ceb27c3e92250eccb88d10d0e01c593202e8c7", "0x028e30096654da16fd90ad2c20080fadb0bbad109a3ed189d4238eafd2dfc3c4", "0x14eb993565894d0556189adc509b5945f1275f7078bec96997c3630b743e93dc", "0x203011c30db2185e3fef5336058ff6d9a5d05c557c3de1b627bb4aad651db9bb", "0x0637901ac6475b826f073e1386498979efba98d4b5daf92d2a9abb63b5aeaa74", "0x203cb3fdf3cc234a72ed4c8699327ab6cac0e8b7479b284c08c7097d1629ec07", "0x1a1a408f899c84145b135ca0a7a43f35eb3cb77cd512430c325ce44a11ddedda", "0x0900c26da8557e0760b971e35af5866c7cc494ac2fbf20d862130449ec41f9ba", "0x303a4550897edb795c6a63b60ea33cc5eef82fd0449b6a2119ab74d55e49c241", "0x1722e5a843482b59b079aecb995c43d6b8275e1413ec08a55f218b800fb3075b", "0x20a8aa1a0c2fb4cd10a82d702c2c30104f00de5ad99103a724deb52e9d801d61", "0x2f980d7eddab02c06b6fb20398e7a7acf6132af1a605d0cae0182294952f5236", "0x181489870649491f84912c75dffdd55cd0dc00b08724ea1fe43147e1996d8fb2", "0x1dd0b954ad2e65acc5ca46615391ae78b6dd2539576a9de4417555356f9794bd", "0x194f79cea624f2bca51d368706521a62dc473947209aa5c50083837c16eec6a5", "0x2ae9c244e4b0bce42b1b55053a4fc96ee7affda23267920a88e87f16229fd132", "0x1ae6a6a8c9bef477d15a21176aeb422be24e5d0f0cbd8c9cb37f4b9144510e38", "0x24e0e6a00b175e22407de66815bddd096b42dd73fb551eb810f84e01be304c0a", "0x2f16ab5671089f7de0bbd1e1478e45b9fa6284ff4444cefc8b43469187b83e5e", "0x19dcac9dcf078b6a68523d3bcc3412980e5519ce6db8d12b6dab3907bbd7e0ec", "0x20b0bb1f290136ae88bdbc15b3c864624b07ed3dff579055c1680b0a185f6b06", "0x08e893d8af978a0fba2a42f6bff7f2fe3a74d3765eadff49a82056d014dbe346", "0x0eac99d7af74de1ad1ffaa9b5f43eca35d6083495536c0acbe98cbaf2d7bec2a", "0x19e9e6d56923733923a15cd7f8a4350352ea308d6160473d5937e9c4b50b7cfe", "0x18e41764dbb5d20f85831a89fdc14094ed0343216f602661fa5a54dbebc049c7", "0x266dfc6e9d31040cfdd1088840fc0b65172976f58e0640ea6f5eadb28eabcaab", "0x09f1ac1f5d80d143d9cd087273a957f13c9ee26f5b76cf30d3fb73c392f91cf9", "0x1495384c593ec4da248a17aa457bdbe8cf95020159ff46eb973a6b558a6d46dd", "0x0a11a63e5191eba16f6ccb4e92bd6389c929ad153c53a130c933a41f46b6b4c8", "0x231a22a2e0f6ab20466445129d96a40feec1b299509949588c0f58a766d9b3f6", "0x003a3eb1110d75b9668d0d8a48da076e7dcd2ed0fcdeb9cc3538c11773047ba5", "0x28b52bf6dd8d0c5413ae7bda5f1e6b5d3e4548a4505d08e36f77b72629d97790", "0x1ba18831433cb15405ee724bb4281bba541299cfadd485c6b17f74fce436cf57", "0x1d295967084284a212b841ea2ebf7ff29ddcfae8dbeebd9df58b5f862e7fd808", "0x0e863567d788dac1dd5f3244564aed928c7923bab8962452bc7885724a93472e", "0x0c214a5053ea609e5608e9a6d54343a32cd02d324f6053e338b34dc0701ab5c8", "0x16ffb0d9b5f3fbd6bdf1d50383723cdd72f3530d3e7ded29883b900083c608fe", "0x20e05835550e6a362606f50251d8ac0706e2fbe57e46b4977e52e1adf3489e2e", "0x1891a8d1b078650521b08c416216caa086e0e98365aa1d5ba41d4ae076807ade", "0x01bd1319ea81a8f89e2da3f46fc7479c5efea1e4237bd5754f56f719b23c107f", "0x1c4efc3b2c0f2669cba549600ac023f7815a95d24f9476589f734ad7b94fa8ed", "0x2438e3bf4fc727a743f4c4409548240e6e852939f03e85e352c31ca386c432fc", "0x28a8d250a0a2aa2acf48d79e043e252eee15f1d1e6a84d58bec3dfaf37f0b855", "0x2a29e7d381d8d8083043970efb8aa561868393850a0f34a0a7ebcd3d7e36bdcc", "0x0f9e579ed04df85ea802b488588769c3c0e5376c42a968e8bd0b02dc23472493", "0x02a81dc03f49acba49709e9e780c56aaa9ddeb245fe6026d784c47cdd89a15be", "0x207116aee1e7b7022a90ac821435e9f7ecb94f9fb942f7b6ff7c6342a02417bc", "0x11b431f3210818658cbac818f63655dc6c31f00640c487031a7a6699b54a7242", "0x197a50af9dec2014518b3e2fc26013a44f706466d4596f06243f255ba3818325", "0x0a6fd02bcdbfcb0200dd89f9b86669bfe8627ce67454b2404d4966f1726f47ad", "0x05fac5cfd5e2f5690704f33b440e6f739fb4ff4445c5bd3a69789db652fae459", "0x27842cf8a4ebd7009ce2d7ec348ff783830acc87479ad4e401efd5e7339d25f6", "0x2278683aef662a07d427d0a36ee6b52ce9628e9914cc53bca5ba4ac2493663ab", "0x294cfee66c7b8de505e0c76e2225619066ea5ebe39af92dba7ab74b8780853a5", "0x00c6b60a8e2ba1b774f52c1f598d14cfcd9aebdc8d72d4c87db9c6eaeec4df37", "0x2f5611fd9b8a9cb052d3b6ef2b2ec32d48218862daa4e54d63219fccb9e0ac4e", "0x261bb66ac988ca3a7e2dff027944f8fcb3decb9d985b05bbcb0fc6062080caca", "0x0b5e36bdb5742eda03a1d1e3044465a751fa29be2804ee69b38c2f29438624d7", "0x1408760c6504e35db02d76d0b6a1755719c757419a494baa596e5ae0a4b31219", "0x2f898e5947f14b0655f04bce35dfe8b08aa41303f602747748353959b95d7dbb", "0x2d5fad29cbf4c420e6192ff7eaff97862de5523acd6a81ae61197e85e0f220bb", "0x24203764364f1ebcc8f52daf648af6b02de9e46293ef2f52b8956269f5a30458", "0x1a8627a7fa552c1cd073aa53fd7cc34fb7120513e2a756ff7335b6ab23d47e32", "0x19edcfd6befb3fb5dfec768b5c4aed2b27dd9311c4bd49edae8498386de5b3e6", "0x1eccece3733c2a81a006975b9e433e6931da70c649fef647f368a67682e1a5a8", "0x13a728b0bfb2b322c8af665a8478913f2f1693b39077eea89eb81de4125ae1e6", "0x1773b5b09655e9bddacb50af4f33f5e75c7eaa8f4bfa4680c4be11c71cc2abae", "0x1d91107ecdd5de37205bfe827e7800c8466f6572bf611a77d4d502242af5b230", "0x109e58922b02d172c8363f88c5b9225cc0122fb980e0d210b84d74a5abb01a5f", "0x00a0d1b2d14d861fb04c07e85f40ac8a4af481ca602bd224bacb442290ff74b2", "0x03ad94a5e38fbfb5bbedd2d3617e6fbcff4f5b0bf89329e01e8cb9538f91c26a", "0x235269a08752712471e2d8b204cecbf633f8a1b087b8d50d4386bfdee47fd0c7", "0x063d22c46f6125a208206f6991a7e553ecddeb4334f770f69715b9c31defee47", "0x244852bd0f883825948fba58c795389f82a0c6cabd905f6f6596d60b8a72e7d7", "0x20c9c3fad08a30d64daca24d77cc93e07fa9531a9458b64e7c36e2b8d5de7a55", "0x28f02c4b53c5fbb9b84f9be7f2d1151a3fea40829596152ec7a9591d7b77f53b", "0x063282e45c9b2fa5c6ac5fccb64f3a941204d8a7d0dbfb6e2f2063ba79dbc93f", "0x1322957803e814ff656281a896a1b454f83ee7591d04ae45c55894efda0d4679", "0x26f91c6326c5dba2e2332e65e25adcfa80ec44deddb1cebf62f5c3b90fce07ed", "0x1b006a8a282f5fa8fa8268174058fc457bb3e2270dbfabf1a77ab10ff193e1d7", "0x044b4701a897f684f973ef35f913c8714b23a0bc6892398d2999d5b897ddcf33", "0x290fa6dc0e09ec4d9c78594891374807f42e9aeddc710dae63c9e9a824f1cf32", "0x281b64631470b98572a677637e538166edecf6a4846ec4b66857aa8cea9d612d", "0x1bce47add587e607ed688687c0179da17c54ca73f9b4f6091f816eea1727536f", "0x15c8eed354694a3012b822620bc91f1d68c7bac0e6685f0a15c48ef58941a196", "0x186ea82f0981f8ca347f0a9eec056daba176a44465cbd85e7b8eb7bd0580ff85", "0x3014777dfb63a11a3d9b734e7a47a4d3b6ac4fe406e195f3ba32a015817fe8ac", "0x20ba24356eff7ae0b9ceff1562a4a41585aa9ca0d45915204e433f0728b15997", "0x2e6161643b1b31dc3829448622dfa6ac7cd79321ee432399877dc4edb25edb32", "0x024b512c632070bfce3efa8bd2f34bc100f0de647d0f5510269ff2c01c7f29ba", "0x0a9aeec22efd017571affa68427722a1fdea69288086f9c693ad2a42e773b59d", "0x15c908e364ab93c1611361ad84f06fa11c53c2311ffd1f4694d63b2b982c5772", "0x2562b5739170c5fa1e1cfde87d7a56c2795a1df9c0d6e500fa6b3759eca84986", "0x04135965e6fd02788d00f9ae2183f19e0936288807f48df45ad3ff1a70f69e3f", "0x1fb4eee3328ba9d3c79f1af71a38952c405f3de71458cf48856da83e06a96f8c", "0x18a5e35384d4e479459ad405c05532553c24fed90b8393f3a30b8c38bb2ab3ca", "0x0fff7f73e42a52ebbf30b6e73fd4d45c21133e4ce228f534ff6e3410b5b39f17", "0x159a3daa666c332a12c6c56e7b56e626d8eea9f2a36ea6aace95834ce6cc5314", "0x1424875221f68cbd4f0de4472ba76bde5e4c790a7aff782b4eb121419d61f567", "0x18b3209202c6757549296b01095c5cc390d7ae27b5231dd8414e699abb18613f", "0x0ebaec9cab92b182f65ab68cfab4cf7e1a80a36714bcae30798f61187a6a9300", "0x115552feff175b6e3289516c75c721e15922ceee83425938783434d12dfaf147", "0x22d004875985eeb33417b4ffbccc689588b00f5fb99c76cf605a0a2428a82185", "0x0f396a65933c65ad9b540ace1416bc4787aa4b6ca3f7f2366a4ecd95ef12ce3b", "0x00edd7d28e36173f0c3b28207ddc0b55fa12e4f54da25e7619871ca8d8439d42", "0x0d7d9009c3d6797090e6e1059933e21362d2cf037e251fbfc2b6e18611875baa", "0x2e368c153fa35a3d9ca68c21a7ca58a90ba28ab252a18efce5a2d59951d7e480", "0x0cd6774ae72e071a0beedbeae7a449ec52362f76e5b0e0a4419eed187a31bfea", "0x13c25853d9680d2e8dc8c684ef48b202e7a227592f76010a20d593ed672029ee", "0x17a717d1e3f5854fb59b7f09e6f8d513e32ddb8946467f7080beb8ca10fba076", "0x08691117ebf4e67180021fbd6df623ca48c067e9e890e1739a9672a2eba49ec1", "0x19cad12c44534134c3feba2082a29dafeb550920f13f376ccfb659e835ce8ab1", "0x0b7c75d010ff98ec7b5ad1e3a17a1e092c353c544f8e7f707f5e816519fd6fcb", "0x2055156145c4411db547bef92efbfd4b8a1bb5fe2e13193e0d9c07f39e5875c7", "0x164afaeb4166726964fe5a079a1b332517980c47a33a04ce22f56c33d03411f8", "0x2936c50982fbdb0f56cce6d4f575a31665fa813d72252464c2776a70ecbc2c6e", "0x04de9f4b9d4424cde860ad5534daa8397b1b83835d83f00372fac4e376e6e907", "0x0c6553007546816e86c7d90552a6ec216f9a34987be622be17ae4eef454d5a5e", "0x1a7041d055f98dbe2d87333de8a3d0b4f6348f4eb2968aec9cbc7dc3342587e9", "0x1467cef176cb717eeada2b84230336a70ea45e0f4af5c55a44aeae23ca563a48", "0x250aadc3ae989f3e82f4ab1af04ea5ad3d92a98151d06046b6354f98b046110d", "0x0553972aee593ebfaa45c932bcb153e62fa638167b46555f9a8a74a361f78afd", "0x04e5656b267f8ce0b1a315f9493873eea35c1193f2febdbfecdde494b6945838", "0x19401e900ace225941f6c581824e338ff98d33f2f0b43f3b74dfbc0951eca86b", "0x087253b2116e8fcb45f8eca1b3cefd921105e9cefb33e3cc0bf7da006383b80b", "0x135bd80682f771572bf574f3f714f34105afb21e87d72c40a2f46ecd8518ca77", "0x11c234977200db6c688fc254053ad3016390a025d0ca0975d1337bc077db38cf", "0x16a5b75b970e48a5ec3eedd2dfb08d2b6c95b732dadff1e1c81e81a3dc9b24b8", "0x027edd6afb362a9da2f60335207d7296d0359d339d418602a8c27069d167d23c", "0x0c7a718e63c1faf872af76187c5c3f8ffc855d4095f5c55dbaa00533515b238c", "0x184d77c3d6d7236db32d9a3e48c95fd448a5a0c1fd3e5ad15faff8baf1039019", "0x2031859dbe2a3689a9975b41196fdf2eff1a587a9247361e78b7b029763d63e4", "0x305690c19d76dba5dffaecece28218096a32980cde7a9f4205b1989fea80dc6d", "0x2de2fb494197d9c1f1451641efc2473b85300d05c0d27e7ed1816de14c94a9ba", "0x257e7ecb38903e44f1a558b49fd0022c3bdd932598472c8a12602b7a020e4c35", "0x032507176faa049c0dcc74a8ffc7b327ac29743679f21ff553170afdd2f04bfc", "0x26720296b4837059257a06bdc3b09d26928102cde57e23e91d1540cfefc4fe9c", "0x1af78e5e918963050a415db24ab45cdfd81539caf74fbef4b800473a6235a0eb", "0x2fc7b7164ff4096593f45cc674765db55d536cd4e86711085fc05bb2a7cffe0d", "0x1a4ab0f4515b49bd3aa4adb03fffb4514d9aec224f6768315bbb2365fe99dccd", "0x1de216e2fada4c24d7fc78f587496c24a8eeb7aa83fcb9cc737919d9eb3d85ed", "0x1aa330dc4e25a8d0c910bfc87a7ad051e48c82e62586179b18c2ce956c8b335a", "0x03d5fb1caad9fb50491a73974c8dcb282e868a605494dd7a1ff9b2df16b0cd6f", "0x045e130424d8e0d943c1188f9521a6f799334f57dbe62cb05ee469438e35b4ba", "0x1fafb6e25f7e91a4f20039c29e947f863c090fa29dc5664d9f8a69261327e4b5", "0x287a56018cd08f5d6293e1652db8cbf40249cdc759a84dd7cacf4979cf4df559", "0x23b3508c33e9cd373874da82d6c15c250aac99d33de516f0351d7c421545057a", "0x1b3745b04ec0f843b9fd872d6dee97c8ccfe952a3617716231198d8bd837f44e", "0x2dd389f08b6fe3ad079bc9d1daed7b1698011d74a913502bc7c7a7e1d739fdee", "0x0a8cddb9be00c6e178f3ec831482b8d7dbd7e91b5c8f1da27f1386068e58fb14", "0x2e89a90cc4ade3e2150cad862b6cbc4ad40b8fe6779a8e61efc4827f5e43aa55", "0x2703815217d57fb62633da64e4777229bbb663fcca7628ea35101a5a6ef991c9", "0x2d1d570be0820e8d90f6eec8bba76821e90ef209d705604d6e43832dc8760295", "0x02d9053b8863ba6cd46acffa0891c0720bd9b78fa1662bc0f842a1e05de62400", "0x17f4b26ff311b1b4d54e74ffa45ad283565b677ef40e2e4e19a635d638d8d344", "0x2e68020ca82963085aefcd925073a6427050e04906e7930c133f1889d123026e", "0x2574c30da10c274e658dea82f3d5afb58da1a834cd25b7ffa5c59665300b1eb9", "0x15c361a25585226a86655101e0f0f3136c7b777521ac2409e56e666ca449763d", "0x0b54e1c8bfe294a08328395dc6cd3a353108221161cd70fbdf118c3954cab9c9", "0x1805115f1d5b60191ec5a8733ccc5b1b5b4a32d81c70f23982df2a2599528916", "0x2934d73dbfda4666b331a0cc2f38f7e83ed8093cf29d111ef74a7a8d7072c5e8", "0x00488ec3a6563536696134d8a0a51a872cfc4aedc458c44eb6a7235af9263c95", "0x1319d9b4fb3bd01426ffcb26f256b4f8634e0f18f9597dac37a0f5f9a00cbb47", "0x0ab5e82e345e304b1a8a0f657fdf3fe03efb006b2e53fc8e776506796c33581c", "0x03fd68ff74722b09cac4d58b377e0818671d9ff52a211e449ab162c3d0cf875b", "0x1e7c552e5a8f3605609c3667bc1f8153099f46ec8edff78bddcff7e42372d009", "0x069952e9cb26d8ddd8ef84484f4fff8495601489ddf9cfbc86731ca15bc2b42b", "0x069de4322f390fb4b3c4116596f9a8f51b00f2ecc9ed53b8ce87037a5d8cb36c", "0x122e535351d03790b9a1411ebcd5958a16baf61b01c106f5f158461dba427258", "0x22ff22f011f8c226ece797d1e36b1201449338fbd523fc46ba52fa48b3227b64", "0x1161d30490f1a507df1a75be86a5df94d448a224111f3c313ac3fd273165388c", "0x2ae2fa2fc3962f22ff6bbd4376b6477b2ace3fa963586637d700ae936d92be09", "0x2a9dc09bbf2c43f2dc75ab6f9bfed365703a43b9c358101f7ebcca2082653b20", "0x2f402e60aed9c5fe85b9face12c2a770483ace81132fcdc9fbbc7eff4874c30b", "0x14f352e9dca46d65efe8bec37b89a573f65f0aa8e0c753bcd10d24fd045fd0f5", "0x13c70c3bf42ce34c36893390500b82fb1486a30d3921b4ecb1fa47c085f20fd9", "0x118619bb14a53a21a1ecef9113b10e7c6b7a36d3b38f7e6ce5abaa97fe96bf52", "0x236a45b272320cea6a74280f2a954e3b157174b892d5f3b2ac4b6e5c4dbaf38c", "0x20fd78a9f662d3be07c07b99e4d4cb804974b3fae1ade638d8800e83490b31a1", "0x04992af8b903034facca4002586466136a675222093ac348a7784c8bfbcdd9a0", "0x2354b2ec8c7e8e6d1a93f7307342c7b66dd6cc9313e5db3d06c380feb249193c", "0x1ac8c9558885dfa7d7df490e11b102854df3de5b14c5fbfff2f7aa3f31fd2e28", "0x06367597ab7a2e533d99a4447726388c35981b997632e555afdb491746d83d2b", "0x1436363c86ce4a176a882bb26c4b75f5ad8da469935a7fb3be81827d0b5ed494", "0x251e61d00ab4ef232c33d55a73388eeddd65e3133bc4fb3edc709797e9529b18", "0x273656870c7b8b89d38a63a9485663adff3c46ac7d43e61606e26f5191cce0b9", "0x2ec2b54c9aa440e0fa017bc29135eb124aea0970864b8f1d794dfb16f8b8cb16", "0x134c654f5a38eccb1070a5a78831bc005ba6ac7d7a3b76e555580eb1233f949d", "0x29bc8e34b1a10f97997502440979b118c5cf2af2abd97241db406947505080f2", "0x0cf3112832c45c48c1dcb5ed866a51365b5bb7949c0cfd9aadf67d125d4f3ab2", "0x078dce521d3bbaaae5c79c768ffdccd8b04e111d8b46c1f2ffa6d2e602ef31fe", "0x162418eba2b1930a1a9a5b9fe0ade663448188e25b28ac81410ff08c22c70f57", "0x0bd3b4988cad29012c9dfddc9d2d75812634ee0a07456435f1a0f73c02ea08cc", "0x11e33b5988d6b2e5672d58c5921f7b1cd7290635675b9d3e0cd07e81acb2f58b", "0x072bf81a1308cf51759f27217c968746b32324bc9d429270c10e1671a6f3a759", "0x055853a33d1150e0e106160fe1d7fc65ba18fae5cbe59e8fb6bc8cc7bd663216", "0x2083fc1ad350d82f1d43ddd5c7fa475268c2927e0f02e6be71e5090f82137169", "0x26ca79a855958e45e1a89bb4546f838b67d98dc4c8c92bec26a0efd674ca6211", "0x09c669aa0e831572be5a542e8498090ef693900bb4d79a588aadd5cdcbe62696", "0x0261cb90ab796a6235a92da9adebbc39dcabcd01874af5d63d90d66037ba3b57", "0x07c14d288cefc862399a1156e7fa72defcfbc0466e0768abce1e35366450404a", "0x2ddcd6dacdcbbfaef37cb2d4c5060f0ef36f1110807fd81c43089cd45a26da1d", "0x162d3c3fce8f30204c522782c0cae66f911e432c8b4476166b35b5f530d3e8c8", "0x090fbafe1f865f43fe3a21609b7d8459fe348d60a4c471dc62a0afc555cc2648", "0x1dbe8e50c293846305c51baa3473e29dace57e6e1af48fbb23d81556eab5733b", "0x19ffef9bd58ca547ac02f4b953cb941def36fd834c1f5ec5a59418b2d22df911", "0x0e29b047951b6805c19b7a21ac7d24129ca8f8e2b385731b2194c1905f21e401", "0x198d3baaca379db6105675052a55a31c1fd44a8773a9d7c789bce06e07719d32", "0x0ee8deaf28778a46bf818104276bbdd9bb48926ce699bd185c649a8b4a7ec16c", "0x0303d98318c186c8579d1803984fde3284744ab161f14bc457ba045f3c1329af", "0x265d7fa88c0af3c2ddfac0db3d464c31df095cda96dc391473f833acf4f64807", "0x0edac8d8183fb0ea31af3b383ef9f921a3c293e8bdbf95598f950a202a677cb9", "0x29fa89d16190d1634704cc096f030dc8cc7c5c9f86d13d95976b6f178ffd2154", "0x234c3e31f412fc1fb7c9a5b70ebe31f33b5987c73555fc0e4ee7e75280d84264", "0x2e053dc186786e4471d0ac6f5e19b33f638dc8f6439077e2cf368d14d4fbae61", "0x1d616ac50587ff0c730b1a099a8daa6e05c32dbb5dc36649d9ec0c1feef2b533", "0x037771eacdc853125cb0bc917610c0c3d3b065560600b4aef883bd173adc47a0", "0x031c46216616ae3241851e82decd045f40a89607c578c6248098b30c546e1e76", "0x00482d1d2987d7bfc6d256af3072b41696038a557c9867a8ad267027ec3a5bee", "0x2115d7cd1cf9a84f43fb6426aebb8976578ff3e5646f89f240a48acd16f0fe1b", "0x26da8474f5bfdb9c88e0d72f32227af2c5f4b6340c8ffc96b0423b1172c7f79d", "0x0636db5afdd335e31958a70e694e17245df7fc8d148d1cbe19ff880e7dc0af6f", "0x07096b395701facb3492ac24564c468026e587deab49ef63c528f418f7e471fc", "0x148bc6df9f364b928d68180aa6a2667a29adff966cef3e340c3680803333bc31", "0x24dcfecbe203abc67313c8324c6339a22a9a1f72fe944591c8fe003ff2a19620", "0x20db93b902460ab611256f28dfed3e7003b3d3fba36d7bef993f381f3f2230d8", "0x044e39201aa990c4e32c94409c1b1410fcfe511f2f5abc94216b0d9eeaa47a1d", "0x2aaf90c30ce60e19085a54153f4675921b8e65e712bb4b0a040d4c11ea6653bd", "0x23fa0908d7d89f3673ea140ed664f7d1eeca765fb236ca8a78ef2bad304a9cf6", "0x1f19c141089be7fd73fd0bcbc3e672f924e9d97fe2eda429fe25f5f1f8c1d477", "0x2fa5b884aa9746b07e87209d1023582478603a994f1ffec3c1d662fe09632dfe", "0x272bd4357d44e2e2c152f694efbbc238125f0f534fc7a8ce7803a7e77a43b6ff", "0x1270fa5808c0ca1433423b90060c34ade01f3a9c81b76d4d2b3cf7158338639d", "0x1b47f9d3f2eb0fcd707a1d29c7f0fc40481fb6bd2e192571358ad06e42995218", "0x1661bc3ed40445c9b8f5a6b74ca52c81e3072117a6b9ddeae562f6f51bf9b8b6", "0x0038c8f5bba73df7d9aad4f06775a656a8eb780c0b8783fca440631d87d486e0", "0x03797c94554c71421be0ea2108bd5dc2d6172f9c0b51e818cdf0c998e7658b5f", "0x26f801cbead2c26bc2ee66c9c561d6648f9dcfba02d573316998070d434920a1", "0x1bd9eb0781aedb96c9799f709a0caba80db0cfc155c437d27ded8641de18e61a", "0x1485c83f748186c1b8e237eaeee6f23e093c2509838436c084c6ef0b88303feb", "0x195ed64dd0a8134694858f96fa14afb40218dac40a3304762325b8efe03a9485", "0x2ee31061ca7160cfcff414af67dabc5ad156a9de263256b791270a6acf9f0969", "0x15d0f0fb824860bdae5f0189bb09ce4b3bc002a7f86e93bf85678d5c9bd517b2", "0x0bfb2fdc19db2d9d7eaf8f2549ac9aeb8e9dcd83c91e67a047d0fa7fd36f385c", "0x179cd6248b5c0af277b392c623b744f865a8b1fe851df27c5fc2a47a0aa1fa0f", "0x19f1469f9c81707666f6db900e8d90123b715e74ac0224adc357ccdea8737fa2", "0x21339a2203afcc5f2cb1fd56d2ee9179637ce45abd2dfdc9a7c561cd7fafb68b", "0x0e65726da6be88d5f916154d202ad3dbe3fff5d65ebdc29c7c97ea82d9987e47", "0x02564e8b0fbf65f1436a9e716a5ec7e079eed2d6db71b7d94a2f2434e0068682", "0x2a236647dce4e45c60809cf6d1603baa4362953ef852b8f785ee5e959011ea49", "0x0174acce9e73a9ad5ecaaedfdce776d4d1c6b7761fb1599ccf97032a59c5f3f1", "0x10cf2a80803b6802cf2a63a37e127b556b70d65bbb61657f6821ca45a06f240f", "0x16167f9d1b3ab094f67d0cbbf40a315fe39b45e4540768f3fa35dd6d55baf7fc", "0x137b1b07cb60ff07b21aa151724f9bc6a50e4a17a68f2aea512fc1e93968c897", "0x00d590eb7aaf8e30dced18ca317ffbd048a9b0fc80d37c54a8bdb7724d8dd645", "0x2d0a63690237ad3469abd472e450c11fe51ee1440d3bb309b2295cb954efd3dc", "0x22d55e04ba0d855f42039d18a1dc14dd16305ae516c689d5141a9ce5720b8f7e", "0x01cc71169f322b9595897b864438208b66a71902b73f9518826158d7145dda58", "0x21f949a16acb35194d9e53fdfc5ac01f3491775170254c2cb4b91772f46636db", "0x14cf5351c14c087a59cf5fa5303c5752c33d446b5cff317e4570df7d685aaaf2", "0x10f13bf1727ad7e9069fd6701506f958fdf59fd2d08b0fc5048c9486b43eb64c", "0x0632085e771f74df8fcf5ebd07f95373f832cb41ec980897da8a860c05e9b0c4", "0x16fd673aa4b499823fb173d9efece6e6b604ae03bd5a8c677d7aebfbd73bf592", "0x110da915aca9c87a2c4614b1ef6d6f03d8227d6c3e2d63bda028de1a580a438a", "0x1e6f125f3f81a4545935e520f5ebdaf6f99a0c03b485f582fe23a53ac66c1b8d", "0x12c069a83b55b665aa90952fbfa8347ec157c11539f49640d4bd2358da589b37", "0x2b784e2f52c3b9522dd48baf6c3fe282e2682ecc50fb16755ff8a265ef6b882e", "0x1494861baead0058801d47ef56842723c6b96d04d382e47c45473eedebabe484", "0x09dc71751daa5a14501bb2c3cb8b22953f3a3c3c88cbb77b1931181741dc7095", "0x21d3e12c5de6525d5dab5a15000888e8ce36f40be3b49f03b24cffa70c739311", "0x1b0e70929f5772f72eae56c8a272d3195689ec4688d96570b46e19fbb66872c8", "0x140fe4a3946bdeaff52c0cd3eff628dc40e30af8fa8534c67a6d07c958f33df1", "0x0c7349dd6d791d4871433b501fc3c593352fd6995dba4fa687f501ec8986f0dd", "0x04b0a35cf626c40f82a1f07b916076c0d3598b4414f73c9f6c97442024441a3e", "0x1db02b68964ee9cd52a2936cc783cc12f88d98b60e858cb36366519fa012b388", "0x10e2e956993e23f93c073c7ca4db0bfc7ae8e558f676b89b1ee66086203c0596", "0x1f45de365f1d93cf840280890e369ef6e4c5a98b9a7f8339ecfdf604d5e6f82e", "0x1cbb85bda895dc172232f7d59845c6fc171016b82c91d91f433261fed4ea9c7f", "0x03d3f3bb86ef161295f9134bfe58441dd72b6461b5fbe2d5787902e3e5ab1de7", "0x0fff02814d47b34516dd84ed17a200c44ad72f4080f8057da77060d11471e9ee", "0x2e9416d3161e4f7b023ba61c8f6635617855e308d6233b4e85e941f7a5e6c9f8", "0x05c70ee3eeb80db84501c1544c24161ffd5513bca5cf2b5c740011e3793d8ce7", "0x0666d733d249dbde4fed105b2ea2d6d4b991983e2b4f58ad54910923d0965dc3", "0x27f945bb22dc180a99a596449e83b32dbd10e78bf4367531ec11e4da936f39f6", "0x12e27af14b7ece9b8bcf7bc1c9241d0d85f9fa47c83153836e199eba8961544f", "0x0a8d6c9fd80c799bee076177a1f9d7beba446ab13b7c79956f07d994677946fc", "0x08a0d3646c476269077062dc3c447553d61a4648f306d20e56fae32d109886f0", "0x073faad575449ac35cdfc514717251bf168ececf0329752db7403c5463ecd84f", "0x22ee22f436078de048d593f4afbabf56f4a3fd4e07e8a6645fc68541f0e5fdf0", "0x01b50235ad3b1a6f6ac75de3a9f75f4f39866e6012439c9c0179ab032c4266a5", "0x2ecf4f3c84f75ea7b10ec11a6b2596166ce9b5a28a526f80cd02d665226a3feb", "0x27ec7f3ec5624cd3319ab85f7df1380283a59b36ebf18ac38bed751ab1a04bc7", "0x0e576250e1560c77cab672af14ebf856402468d2e9b0ac03f3cf29709e13d931", "0x2251f276fde77c998d42b5dad05aa25fe98a908200b440bcb7babecbb77e7ff1", "0x028dccf77c467c7818192d4787e3848bb057c49be099f60291a2f1e48de1834c", "0x1b2dbe9236f5a27ed5c9e3b70e099432d324f380f39158e119069f95921133bd", "0x0869920b8f5026cc43cff18be390f74c35586cd2b6943b29ef7b17beed277832", "0x16f4fcb1833619bee667206a2c91cbd91055b10783059b0be52e1b656d67600c", "0x2a50cd6e6942fca74acd134045c28838838723fdf651da02bf3b3d7741390824", "0x2dae4ce829a70182dbdc41a8eda89651110b2c99c60565ae336df2bd2afbdb6d", "0x2dbfd9447d4214f9aacb9f5d2924d545d07310230c1469afa03b283b8c7ed93a", "0x10e7bad952c8a632ade1d077490bf80b125c1a05ae4ef7912e69f152d6406de2", "0x28d4ab3097fe8d0377f4a2678261166b5bb24c51f04d768082eceeb3c6b1fb43", "0x0772b1c14cb95aa6b39de1d4c24ecb7f08d26343b14ad85821ba29bf5983b263", "0x1856fa356fe94847f57602f5fd41da9d4ca404f858e29e7237568a8f1f52ca05", "0x2457b8229dbdb49c207e5a1208b102b0f86c9f2a76b4a4a23c0d423304bfe9d4", "0x045fbfe6b2c8759a8234e16f0f4c37f53312596fa90b2b7bd27f0b55dc5aef77", "0x17f4e29758239596e70478aaa8b63ff126a74055ac5b80c775c0f924d80f2c63", "0x146cda97d41fea38bc63c955144a65223d4f5652c51bee160dadbbc681252717", "0x15cccb291e3b75673baa8d2c4846ee56da33ddb497661760c4bf19d52503ec2e", "0x0db560c5e93ecd131b7b26a4b777c28234c9d15588cc5e5f2004880f5ed76d98", "0x277091f4d68c4dbc1b8b93570cc249973e892f48db3c356a965816a23b286841", "0x230c0878b8e670672f23598b7717cef1b722a448d9d14e04b81ef722e72bb505", "0x1d7aae3cd8dd3f91e27cab6f15ba2974fdbf72782825f99405a50c13a004446a", "0x2c87e4b81173ce8fd99c9bdf2f0c4bd39e3245d84cbd89d79d8e9fa7de963589", "0x2b3137b3a764d5f3604232cc17dd2e8ab96d46a7df9e68419b4e7c18ebfd5a8e", "0x1d92d102f4f430d0e18948b9701b544e5413d0b5bb1e056ee2672165bf52459d", "0x0bff74ca04e6568b8feb6a03494311339d7490a75d073368242784ea71f0520f", "0x104fb3aa7fc80f7cd356a96401b415aab91c4077426fb088f2aa972822f9786f", "0x21d5c5327f9c0ac66eb7da87ba7a63a24e47d8e03eb49817ab9f1070d864f603", "0x2f29beb28120d9bdc4e147946cf7cc260bbbbe5ea6421d7d3bad99af9f3b16e4", "0x1661d9d3ab98e7204b2355e05768d6cf4367f30f1446d8cb57576c71d8f83cb3", "0x2b406f2b9f13585e0e5e44db5210add697cbd3f0b523249a21ed63494097bcf3", "0x09d507b50072650b0ffc5c36a63a35968063747bd70a655c9f0e07b58ae4a881", "0x17e38db767cff7dfafc813e9b6773e75d9f1257e8bfec1ea9e8329e80a87a7d1", "0x21b5c11292bac2662798e6098d0ad0f29f8e6d826adf5ee133c21504ce0ab2c8", "0x035e47386120af666c32d7c4fc87052b30ef18cfc2b061937e935b0903134fdc", "0x04f981d3a984ca2d85f9581d7a74f859b61c3e0136d6c450d17768ca1987ca96", "0x0c2a23457f590b126af6a4c54d1ada810121f4cb4975d8956d844cffe0a5ba5c", "0x1b5ca14cd976dbd10e76b12b7bfbc28a54ac8afdb669639dd4c5f69f91e8a9d3", "0x183f68d1a9dd706109a8936faad813a89cf3d8473ccdc77b3ce29333b7aa7aa9", "0x06a5f95d98b5573df52a7cf20b0e3336680db5eb7833194e82a92ebcc6ab03e8", "0x21403b255d1256c0c736ceec52f224c6b763f8b6d7230b295b4a14e9081ef6b8", "0x2f0d6e5992b021e6c4806e078494d985335a44bd043c27ec8fb96210c733a6c2", "0x2766137fedd6013d86d9c93d3d8e05f9f7434aa2db80d444371ffeca8d5461b1", "0x07292a1dc8afc94852dde4bb513ea938096efe1ccc0b60f53baf031e64ce7aeb", "0x0f64f4a028e3419e451380c4fdbdce5b03ff40359207f5bb119c2953433d52d3", "0x1c2b3c6072f344c7aecbdb388daa18463eab5cb5943d2c57afefab51824b37ea", "0x12cdca57b94c8aa6c214703d5c456dfc88159401e7f66d1481b00f36dd8386da", "0x23f505ce933fa0a7486664fb00e5ca54b685208dfb4999dd346e4f26a697b807", "0x1a84bb82ded6255c6ede37585e4e28fe787d20844df3094fd03c82c6f2cc0b97", "0x10a6655befac54448cd2e0e7e52a56c178d3fe670b11c58b16109fb759f4efd2", "0x1a26556d515195ac28f883768f3ea67904ec23f742ce544fba2f854313bbe14f", "0x23a8eef087916f1ed3df07f7a60d9ce2c2a196d4e9c4231d0e9bc16cd0e3885f", "0x109e59cbba700e22ee2fa0b85105e52833c7c70bc6d1e918813aa2421a188e3f", "0x1639528dab1dd1f0e9945b63b79246d3e872c0b1bf637a3b680d98689d997759", "0x2313e8d331cf2e342e132d2a75ece0e712afad8b0bb32185d91b02493c876796", "0x03e96a03762ad8273fb05818ab28cfad626ab2c3b01465f8c973b4275f2585f6", "0x0e318637b7f15366c44526d3ae3c0d33bda12c294a4876988c28d09a7f7608b7", "0x12a1f1dc357dea2da4cd6a6325cd2542289736117d947b3bf02d32045085354f", "0x117374b586f4692b1682f8d026e9ec7332a43f7b0929bbd51543e21b3303de68", "0x2bafd7bfc204d9e55b8a53b5641e476ee5fc5113d631736b7bfaa349e618dc24", "0x08d075c84ba48cf35979ba012c379abd58827f1bb562155b19bca5a09ed0be24", "0x2b0785443a2d5deee66eeea2b3f8ab317dd37a2358d185dbebadd5a336676243", "0x0af228650aa58e291b19b511225c1f0dc11c5c982d9b9ae57a3e0ead52667acf", "0x0b4e7e3454f2b9217698632fd31d95a50126394453c89b6945250f8d36ece0a3", "0x0e5f276c143fee910138e17115becf458758ce9bb812d986c7a89b297581ac79", "0x241341f84a8e31629592e3c2a5a33f5a8f853f610df38842b80967f54eb3d30a", "0x20606300d8b0643f6c0cb4b4afdb6d3503efedb23d693b1c3705cbe46c27fc62", "0x0bac99db56310e7df296760866502bef6fecd4c90c17ee5dc13a704d17159622", "0x2171b3c348a2df153f26768e206114b0c4968c3c99e8fb9e7d5d069606398f83", "0x05fe9945cea71eb802226fe6ca38357eb73e86a76fab2f66d88976c822419fc0", "0x043abc2f359716a41d6c5661950fa31ad11ced0eff1ade02d43af23dde903bed", "0x2a1d4d9bd164d4b3dbccc77591b690fc7fa7b07e09fa5b2709887062e44a93c3", "0x2f14b4a9eff419296a645716b4022cb6fc3a8f3c97cf077fa60140cdc43bd4a5", "0x0865168248c7b18aa9b38c76774d180949daea2d647fce0f839df5d749d8548b", "0x26123a0ea393450f6fea67f7c11acd63848efd02d07380e364cccae9a6548d4e", "0x22c637ff2907aba15ccfd3f77be12ed68fc32f8be96698ed7673e881b712d43a", "0x117fdef07c59ef9c9a770756027104730ee9e6b4398745393804a176268b8a22", "0x070153c96b148cc400f9553965366f632ac923fa2dddf69d3b6bbe503ce96296", "0x1e84c7981ee7a8fd3f7f2050c364e921fb310a075a3ae817c00a77f873bc9011", "0x0661ff0cde6e581660f5fc3a181b00353bd0baca8016d6f75fca269508ab8d41", "0x15beda5d1eb94bee696ef86d0283ddfe69387fbf0c0ed75f851eb55c9c97202a", "0x1442078783c42616f54d9327f5d43d659713e2c3960eda452dcb89ec3e503359", "0x0260670536ce7e64cd31c97b23d5b96c494f93fb3b1c0a9d1ab7de4dddae8796", "0x203890235f209fd4c8b66e308a8702e964c52c2f0218ebabe1db114e6a710817", "0x00de457d3fc9a6188d5e936679da8606a114ce54513fd11dea8497d55dd0844d", "0x0825f2c42df2ca6927ef679536bdd0d813af3070a5916b259eace7f21438ee4c", "0x2fd5b16f89dfebeb30841632b9890f6a5681caa6622d5cc4fe9d3ec8c7a54306", "0x102fdc4167bfb4a2ae4ed738864e5b5c1f3bfbb46f5c0ca926a791bfbe991c93", "0x0fdbaee0a9aa49649be987495cf7392f4857a04aad29ff25649e0123a513cd8c", "0x0959f84709aa0b385b7d892592d1b6e177bd8a8398ffc6bf07a39b7c0c48a30a", "0x298668206446e92e47d41144e2f4c5d00eefc03da20a0a2a303e5750ccc6efb9", "0x1a798081d88ab9e0bdac032702b4486087383d5ff75c0d68d1f8b9b98e9452f4", "0x23e94711594e7e4c671df90f260ecf63770a76352cdf5f471ddc31e8e0064a24", "0x2dede69a440649fe17322b8bccf4c1ce84b7e051bb82e99b81407ebedbac7028", "0x034762b44e47bbafd5ae3d7f8173d2aa0c1da17291370bc2f84659b4c80f483b", "0x1ea442b0545ba6243d92ea9759a23d73285dd99873e8c3657e6a006a3ce7cc25", "0x2f53038432ee14c75222813f3380f02ea496d77cb9bdcdad3d3c85ecf9e93a7f", "0x19d7dff298825937fb7c4c17d23d53119ae96ed3e397b1df7180fd304461b50b", "0x1e71ffe6e516b57b4822f537f03642b23201e42e5b0cc2239733067ad89023c2", "0x1dc46d43c2a715d565df9e9485f3dfe928bd53f8795c8b03a1862773a7cf67cf", "0x2f5469db95cb8cd752a683e4d2870809c1abeb2f84160ff21648151f7b3f0188", "0x2739dcc2e48fb6db002a2f0d724f52cd1700374816e592104575ed422fa2c6c8", "0x2fc5655adacfbf8103fc58c8cb5e10dd30e933ecfba2263b087a61f3868a4a4f", "0x10ff844496fd5a92965630f5a5d51f67e5b6e36a64b2b51c28bf4c7cab403abd", "0x09b32ad8c1e10c31e9264eeceefd619e8129d9c305303e8ed4dc0cdb522a6ef3", "0x29db150d367a5323c352474bb55f235720943dfd6cf968c34b73fac9fbd77822", "0x205e44b540bd357aa8311f36c792e9dd500a3a49de4e367eb885bbf68862b56b", "0x1d6b67db7f8b7200a82ffbb2bd26b18dbd96a53bd83c5b4264edb905d843feed", "0x253677541389370bd4233f8067a78a69d6e9e596f59e282697837cc1415d989f", "0x190842923eb80f2b220cf15e3f8245e4a3786ef2584fe60bc3e45ca34ea43802", "0x0f25ded631f016f91448fe7aa2d0d13dd40f99722c508085e3148774891e7563", "0x1163738098b1c787b6ecda0692f277db4daf7872effe8a9ec5230d8d988b7bb4", "0x11600f0ed3eb711dc6d3d9a0d96f4ba3ca2399bf9249786ef73900c9b34e11b4", "0x1c8dbf5547d551e31a77a502b1e0589341a2fb95daed81c5028fef4e8cc16acf", "0x2e4a5c1a55787bdc046bee70f4989f8f935de58efa4890d813855631dabc9484", "0x1d6035c010bbac3bcc45493acef7cdf406e2e876eeb32a8851f6209c385a78c2", "0x1d6b6fb9c2f187b1ec8373a18d077d3563dc1e4829c73dbc656340ae0c61b2ca", "0x28480ca625ee02475417fbf4fc651359b034df55b56dc62eceb9a79bdbcedb96", "0x0c004ed9c509fd77f0f9841f39f4fe11ad199277daf0c4359f002bc78d974f14", "0x219b95798d9b2ed2d230732cbaf4ca57b7d04074319d71a739fca9b4c083bdde", "0x144f1472c3c7a639ddae611b2eb5be22ee6df25a859a05292ca8307f8618c3f3", "0x2a688177e96545cb91f9cfbb44a7a14b24376781097e9561314cceec16c78b7b", "0x24c898e032f33d7e0748a544160206258c97865be5489896c9790acce9251e19", "0x10abe1e0df0aab96d5d73704068b921ecc1dcff78d605a13727ce9dd8b0eaee8", "0x2e80ae39eca1770dca35a77a48a991b6dedbf54924618756df064d4b33f2b658", "0x15e39e8f8a4c7f890d0cc707e28a696ad69df5b48fa37b74049b50791a22c272", "0x2d5e7a36fe68b184552bbc452beb476a96c7a85fd2196aa9572208a2c02a5632", "0x1439f040b4c907c5082d330ab439de47b4b99f1179ba46ac20112506a82bc14a", "0x2ec996b247a0a8c1682d1d0900f049d70ed0b01e169e75ec27d769a160e06c43", "0x0124171096fcb5aaa5d1e793c53867134ff1a49c6a90f2521601c4e07bc3495c", "0x253ea269e4499bcb0a140b90cf71cdf924843d35eb286dc03059647f7611a1f5", "0x083c4fab3c20577223fac6f35f8ed59bfe36a4702da514914829bc1ad979217b", "0x2284f546077f31542f71656a454d08bd85e080db4eccc44490f88dd89d191c41", "0x2cfe51e414d5d94c3e2a46358c6b1fb5ead77ac14cf7a6f53b460a7058a8393c", "0x1a85fece3b27ab5241e2a72032ed6e7122414bbee90fb40721011aeb30e944f7", "0x10829aa85b64078a84d4b8b2173e0cacc3cf1f5e3b8f1e1488c1b416bbdcb8e6", "0x0475de7d88dde94421892d8c48683402431ccac412efcd56fed01bcdda39c5d4", "0x02e8264478fa612941193367da01857f791b377e2083b3613a5b243cf38e65f9", "0x13496a43dd1cf974965170a2d81bb480d7161d58b5170f5f134ebe721029ef0b", "0x259a81e924ed46c5441edc5a5a75e6c207f73c343e6850d7aef9839bf9869832", "0x02d2ded3e58eb843eb39a3344829143f506dcf9e74ade3b97f2f0dc5d977914e", "0x065fe7a3cefd7dc775bd96d31e758619ddc371df362370eac98599764bccbc71", "0x09ce956b584caea51c5b57a33d13773b71ff03c31fae9bc149a97e281554cf81", "0x1c135b8055f27736b4c89ca09ccb72a37294e06194bacc54deaea9449ac17c58"], + ["0x11e27da7b7ef964948a332974d07cceea778bc33aedbcd09de222fa22ad0b101", "0x1f60381b83b44a8fe65a0f4142faaafc5fbf55f79133c5740c53f036a3065b65", "0x0fc1e1ac8ad3524ebdbfa45dcc51576548234d0292adfe1cd70a706a1b6dadd8", "0x0a40798ead3a12b78bcd8f10bb15cb0c426bbd2282a81dcdc070084ce78b8d76", "0x2dc09d3357051155987ea95594436b6cbf393b0135f51e2f675ea5f462f4a9c5", "0x104b9241d534264532eda181de1a154dd175ee150f349033e46ddc54181da088", "0x127a6208d98f6cd387b802fa44cab2037b3b91f0622f17084f1b8d8ac9d12698", "0x2d075ceebab54341dc02fb1f50d938ce1dfdcde659955a930ec18f8625f86d4d", "0x044fd5c2101a20be2ad923bebe15a477f40c6039a3dd0d7443fe72758042010c", "0x2b302c8511fbd3702b815564c5399acb8a8f2a8eb77f96c7f0849628e09f9bc8", "0x07cbe339db90599455d1eded1e8a870bd302c92a79b1d0f4ee87222cce99e22b", "0x1326749312c6e8bd4ef24c97c809f78ae548394c94c3df2f28ffa8105debe211", "0x054021406b8d1f8c7080e7c245304e4b7a797cd236dad92d929b223f269780e0", "0x05c0e033b589f8ddb23a9d559eaeecf98691a8d018f1279bf406d08f2787cc42", "0x2508a8cdd450f969b61c749d566c9459a16ead4330e35d5415b12eca38584bb1", "0x264dccc02e574ca7e736da25072bd8fbe9909621fd4f4169b2bae8d368ff12d2", "0x2a938c2540d63615763ec3ba10c1a26001b9f4bf1418d1092a6b02dda5195db3", "0x254f370b85f58a7e4ab27a6203f3a161c1b070faa3185baf2852a75a865a400c", "0x04801896f1268e5abf83712c7414c8953d6223e51c44cb2dcab0b29c14952ac8", "0x1f7188e4d4f7549437f48fdab22e874e71d0a1f18c30106e3dd2721f99da561f", "0x2b9273701ae02d7b231ce443af1d80bf21d65aea616353336059f755edeb68a0", "0x1597224cb8e905ced829620aacdcfac76e509a0f7bc186fb7060196db93742c6", "0x1d8c5a65288346907cfd57a752372196841e6323e96b39da7fd17a82c5e12716", "0x1b75dce950731f508251b86a7e1a5139920d2bec18798d439f581570c1dc6630", "0x2773a01869bf9ad359d5ad8209b337119ff8deddfac6e4ed2c8fd0158ee8f2ab", "0x1a5d47883f24462610cbe7ad0e9b1b8ae5930bd3b9d4c1ee01984f6226515b7c", "0x19827732059461e2073cd90a09ad54149b1ca5909b96281a47b2d9c398506cfd", "0x297c8bf54b03a6f7ff272465fb881c918551bbe984751f3e9f2b30ea37b1a4f6", "0x01f3da36b1ff5283b078b69f5f3a7d4bab15a3087c5ae8a6dc307eba7722e40e", "0x167ced6e39dd3bd6d655eddd2abe6c68ff247d86f9a6a6bcbd41c98d37b4f132", "0x085d19b0e16f0ac29f32da541445e8a8a6db9a7bf45e741f9f113e7526b8208f", "0x04f365f710e9acd5c1653cc6fd8e93cae2a0d363f1697f3ef829f7435525ea4d", "0x128d4f03d03d7097d3a22cdaef6b11f329caf0facbc1a67ba91ff493be9ca715", "0x280210dd41268b133c9fae770b799affd3e66805c6167415aca36eaa02db1021", "0x204ee7c7d4ea06f7ca65faad631e703e0e3dbb59c45b51dcee73b0ca64d45cc2", "0x3042aff09c1765b4fd7365a6dca0f1172666fdc0e549822b03f7388eac33d786", "0x23b78077e751602be7779045861cce3ad318670bb82f33c2939f66d41554c7fc", "0x0f351e14bd3a41ad7703cf9a906bad791a627996b935121e6cdc3bf71292cec7", "0x0e67b0135f71d48596749f9fa8585c3789441022d45b5b4611a507bd401d0ee4", "0x06e84634966d462bbd68c14ce6ee1662769e43314e0eb85e3d5909f518da9df3", "0x1761112f15f357cf96422bb46796f57c2c7d6da40169b8f5794841e8561fc02b", "0x24387ac57313799c7756999bfac495b8fe377a7385526c8acafe14e5afe039c7", "0x1f3c817cbf94302a06e3526fea7b3218a287a31299f0dd162b66d358cdcf2370", "0x0b13cf25c272dae339f1a6f30d43d40f74bc0b938ed73bf16a95ecc3c4996fc9", "0x2c731e62db4cc41c56cd465c4a5e8d5719cb50ae7737044fe4ea859665997f02", "0x0961bfea8f9f2a708f3adfc127fdb17ebeb4a5632a8264f17a494c0f0601156b", "0x1eefb99fe9dac9a91963f112dd357ed51f599b9254e5be2c75fd01a58ef7139a", "0x02ff9863fa2a6cae3de116b1d6aa56a8afbd93c70417b8a0593855a1ff574123", "0x29655fc030f0a0f6dd2b00caba527938fd0fdf41de89b42eaa16ee598fd031f1", "0x2d9fe744f2beadb989869fc205e9487697f56721beb1ca230b59b82eab27b050", "0x04b4c3f4f1c21d6f389848280e6e006c0552451cedbf5ab96defbf0c2cb9ef92", "0x13a8f3f3d0e87d53b9e959662a069638fbdf077024564bc2a5676f0247e8428e", "0x1875c2e8f43d9660e1a556388fd81741eda7e486cf6243c2fe1752f919859b7f", "0x0db7a917f7efc1d2167724af4ea32b1f6a6cc23c1db5abfad9020dbaf5ba5371", "0x01c56db7a81fc78b94b267dce45a4dba48a4288b99eabd50b1adcf132dd4a7c3", "0x1c9cb5a5d0274d9dc31ca07743d1d7b4d416801d964039851f05678e4be82853", "0x02f786dbf83bdbec66ab656694d5348988b8252b4f5a3f4a452a075f60dfe92a", "0x18b9789a7a68183ad384ecf038429f75814593c0fea1fd25f1001c3bec4488c4", "0x28eb1c34f770ab912b55482a946bdaaa29df2b4c947c29ceb7c8a19e38881d61", "0x26e9c9daab62a9f1d6a4c694bb0c6fec274787a8322343c03f95dfe65ee78e81", "0x0111977858879145675ba7f1d70f301294feddb0a802cfa944a75907a4c2ed15", "0x164f34b7c356b9fda1a7d8415fabb683bac61ee70c23573fa72a9d756ba52cf3", "0x163219ca5322b3774e75b1e6f75657e0bbeb76a9e323b7c788a7dd6638b2b3a5", "0x0441594f59c65d1a8576b8fbbab4058dc39002a1bc4357084194ce632b9611b2", "0x04cb005b4d43931c9c4abc50b639a8e6e20b3ca5afb60b06140cb24b7e4a691e", "0x25eb50203caac17c399c83c674cfceb4e73f227228647f9d220e95d3434a04d2", "0x0a605f7fe9e36bb7504523525169c6689cd6d2fd076d7dc11277ee1069316776", "0x0ab2fe209b9dfc7c9007248cb7ca36b4c14d991ab3b8d04a163eb0e836a46c58", "0x0e1459cb5c0add6f90f949965603320b313454e6747af5f399566f5d23461326", "0x045ae1dc4a86d1ec80dc442edce9682a616d26e76013675abb04cca45fce07aa", "0x1834f47c13698cbb916059cbcc88975fe15dd0e9c3319865e08147e4d397a970", "0x2039a1c7335a7e4c7a694b5c5b4e1b44f620960d88933ed5237422ed53189f5c", "0x2a10316f1e66acf32e2adcdc292a350a00d8d5e87ec5dbb66949e3f03350bb3f", "0x1360b91415459da5840edf14826aea05281f973dc18133cee5cbe2761176824a", "0x1505e255267d336a081db6f08a897bf2ba40dacd4ec1d61a990cfaa40f6a5f6b", "0x0350e3020ea30d1e779d9813a0b650977adb1842691e8a364c12b8e458f77d33", "0x0eebbd4c2b0c9b32b82d96d64b0d221a8dbd06413b607ba69f4b9d42cc12cafb", "0x15b2d4b361df49e3444a2404f7003ee043147cac3d1428711f1226b374d87f8c", "0x29c8338c5cfe98df7fd49f9316b4950814dde9d66535ef624e892c35d380b18e", "0x1d7a2627f55aece0cc81b775580ccde95fd10f112f8ea71a7f8dce7e9ac798e6", "0x0cd634c27ab406058abda156af456572de2f5492005587aee69c7e5d345d75ed", "0x1303fd48e2656565e7a16ca8e8523131493035a9721d354fc44d7bc59b727adc", "0x052f5a4386ea22f5ff06ffea6179e58617bc908a3dc6b1e7462819c9c9e906ab", "0x077e3bc5ed1c34ba3702fc0a42c45ba5c714a6b0c10ba2b4d8c2a7aa75959293", "0x08d88160882fc8afca6044904e7a984f85c99efcfe147bacb0b7f1046f953d65", "0x1ce3b22dff95f834c7e5b6326029c6bcb4d5ae4b19ef69c40419d1aad796a189", "0x0d4fd994dbcc15262df5f3c0c9adfec2683e3effbf506e5309dbd8c2b988ab8e", "0x2ba6be5cd79aff7462511ef5a38a4f8c78c74fd049e6b8657cd044e82abd94b3", "0x09767a2d9dfa39e67c95400400da96a192da6fe5c0f02cdf1b9c39dc8e96864a", "0x010521c723f47dc5fefc35bfe0ce7e33d2e045b2a018e1093662ec84f104c05e", "0x144f09b80346ccfbc0865fa64d220d6dbb7b3e8bbf0363e62fd8ccb457bde1ed", "0x1fc0b9932f74b4db56d09315cc6a8e86205276ca3e3b124963dae83db5ed6baa", "0x0776d2d972a004c04a8be7b5f2fcebb02e1a3b1b787036e3514bb8f972c8361e", "0x221d6e560e54eb27665128f37e1c312528be49af3aeecc9d7c56755f076758d6", "0x164189cdfd9833b71c1f8372e999ba27bbd20de62f965ad406d8aee67b88e1fc", "0x1e3e736ecf9745b4abf71a4d863d8b6d03523eaf82d9274526393e103b08a3cb", "0x1ff3d30b3286b988f501ec920b1622d2a0ba2cfa9dfc589c53f639d379c10051", "0x0a50d9824fcc95a9d22bc08a592b1a6d396cd361940abc3f873a725230083a7e", "0x2db50a1e16be63bb63d42de51689d990d2e4721b93a07edfba28f208965740ed", "0x1282594ff20212e8a581a228fb4405f2ee7d34445566fc9dea011d89b202bb92", "0x0ade27c077951cd335ff789b7b4d63ff5d0bceaecc46dccefe0680c0ec6ef09b", "0x27374adf1b38ac62d078fa4e713692be324ca24f2ee43e24eb62adce2f3e67e3", "0x2eff75fa36e8716c9b6ac0acb78da92970cf7aca6a0ec3b37d86e97538242e11", "0x1a28225582a1edd464784b11ec7eff190fae33a61a783b845327642e82fae68e", "0x0e1113e81de1bcf204e51a8cc3f200047f3d8d85704c44f5f5ac6ee862c9f439", "0x210575d20f3c2816b807074e72a672a50738ed0c4fa09b6f966223903a479f5c", "0x21e897f749c84ac2faffa9e264ac61b983f03bf9f337bdba4dc48c5971a14351", "0x1a5687dcbbac62972aed85c50e70cbeb50193d831c0790ee7bbcde7d9738a66a", "0x04105499d5cfeaf115fe0a40d742844e806b107296b306c4d556d2f244e49577", "0x1af9497a7280e1414956e80f4f072e2f26b50a06876967cdd57aece720c6be48", "0x2a0e2d3eec6259b7ce7e0eb1667e8ed0c16cdbfa2247b8bc7e308ee32e2c6031", "0x2d7c986d3d3d3be8c70105e48492160ef85389f1e31dbc8814b0cd3e84ac5ed1", "0x251d1231e763979238b7df4a8c0f5019271de5e4389e84c09e5a596d4e1e22bb", "0x263b8dc03ac7d253f5cb7b8bd922a290675babed6364ae12cfa1fab8c56c37ec", "0x07c59c31f979dba930b94c897ce7016c9ddfc527a696786b7e5e1c1938a2c28f", "0x009f47f021fa65de6b54e751dd5a4bf917bd7574e071c7bb31bf1a4e63af2150", "0x1c160043dcff2330ce441d49f2804832969f2731383e524c8e7a9813f741ddee", "0x0c5b6896687f066b9cb23f21b32c269092cd6c711dbe66bfde09858735cb837c", "0x23acbd7f928bbe5b72a7ec442e6684c8f0d50cf823f02804c7850933b9b70cf0", "0x0e8ae8a1d1141dc07829413847ca857105e5189a65df9ac40ead4cafc21d7ddf", "0x2eca0989f9ab916d07ab296a0224fda36a0bc7a5abd571f3368054da7795e302", "0x2c76ceb7d040b4e58fe06b7b0fe83ea88b7b4cf376296771ec15d12237cd8f24", "0x0c53afd1b381167d73d14ab7db8ea41b9335cec4194b105aab7e0060ee1e3044", "0x0c36629562a7dc67e58cc15bfdce2392b3a1673602e970f174cd6c6b14555322", "0x052d66b614253ade8f74000275db8525f88cb7a71b14df9d8aa4ecf26f4c9bd1", "0x0de6ba1409046058d8320fd0ebf9fc5275f837ee5dec27963db414509f608f9c", "0x109ae0524afc2b1187e88c2fa3a16f6388568b7f8bdbc4b399fc00a257bc1b4a", "0x0b13e5f2c901b454ca49bec29ffcb5da3e13fe237ce86ededc17da40b9045053", "0x0c9a986af2ad58483b553e95c68bbb3b45829ef6e4e7a4ab85f1728209ec059b", "0x0093a4e1fc46b86a210890e741a14ffe41249eb0b0008264ea6dc319a0735cca", "0x01bea7e52a3aca2937549923dfb7e35fcdf8f5c81227637b3015ed1ba712657a", "0x11e88dc0b5900bd29542fbc23832e749bc9aab6347f0bf97cd3a36c6308fd596", "0x138741f5ecbf395997f21f212e76366491f0f58ec195200f1033855ceba4302d", "0x2447012a946927a4240b4713db8d27e130e419df4fbb4d68a1e0f1b95dd366d1", "0x0276193a782f6de5b903945371e5341b9e5dcace04b9768e67be9830a2f674d9", "0x0df9bd68c4fc32c8c064f6c47d517b13888677c985d3ef1f1c49fb880ded7bca", "0x29091c18613963c6cba4f4c0def50fce1cab647a8901957ee2a55305c2b0f8c1", "0x0b78f8ecc6577966fed47ee607e25f21b41fd67a5416de3641283f2fe825c959", "0x2e8f059c9b78f62411b017f87e900fd70c8036be1769c5344eea4159c62b6b3a", "0x03e34c2876a83413029cb7018f657b52ac287ba351f2521738ad7d309d1b6732", "0x13a1f660a87557cecf01b505c1a47fcdd6b52c5f05a1ec4262db308ce86f6b2c", "0x010e9a5996f8e3390b6b786102cad914520a8e93e7ed551b48f3245687f14d35", "0x0bdbee9846a8d67cd9d54f0433279044d85076041b07c3e224b38d208ff48c4d", "0x2381dfdd9bc337d5d6fb861e16ca28d117d586d16d5eeeb7419a661c782c1f8a", "0x0b856bd8fdd6ebb7f0f1ded0ef19204691e1c3781f8a9c4f58511f1fa484fcc6", "0x16ec15959be8357513caa8a3fef0b2fc10b1696b81519b0a2cfc18c913178b70", "0x1943d70c0ec13c9142659121156a773f4146d548cdfd42e40a215b1659486e31", "0x29e5268ac796d26efbc2cb4f98e2c2a01effacb1501b8582ccaf1e311af2edb2", "0x0fd72d28e75be53d626937f75af22f744ea1b7dcffff94c866f3da8a8978e4fe", "0x19ce9f98a369869ec45bfecb1f112a5f7062fcd6c75dafce902ac70ccc0ce370", "0x08a4d149a8a27a2170bc9ce670438eea64d211d3a97c702c1b01dbd3bd5e91ff", "0x19150be38fa5e5fe4de7ebf98d59fc9af1abaa13f5a068cb716002f3a6983910", "0x23c45261101440def1c0c23ee7aaf5d8b15ee7bf31ff7374ab808374d8daf697", "0x204a9542c690fe338feab653e9a46aacebaf2df53e4e905e896414cb5a0cb126", "0x128efd4c6254cd03c21b21913ce52665facd0e9c46f465c51a458124723adf10", "0x305becd1cba07fb742c9528e4b9276d871b1815afaaf6218cb0e758aae5ece7f", "0x0bb14b69696ffb4a46fb91301af32682fee9a391a5372ad19f3a4e320bfac6a0", "0x2f981d8eec9950e39c6fed8079fe44a2f256e7e686a60cb754bf183fc3aede0a", "0x2e38c6f6a7489a54ed982c483a2a7951eb3d0b28e48ddf8b57d2969f78369337", "0x1bd7086eb7150c0dce1beba39a67cbade72b8b72e1c1bb6f0ddb51c13ee583cd", "0x1c8b437f2be3e61671e6b62fb698e8af1872031196a43ffe76d1527b2315b461", "0x2b91c7a78289a7c43e1635e8eecd50ba4c9669431f10243a65ccae6031566fc1", "0x0bdf989e7dddd8d9451c4561ca77ba707b738f9cdbff5d15c110ee7471370f83", "0x0ad1a3217e86645a6cff1a4d86ca1f19afe85a45e74912d616a4d2b430bbd479", "0x256ff8d3f524e4ea685780448f2f8c55b5925342f08f944ac78d4acead07aa08", "0x209d7ab297f5a31258207d3ceda7b2e121683d20ae561c6d460c11ebfb1b6b01", "0x09afce8ac2c2cf3aff6002441b98ea52fc86d3ec411216e3d669b55ce5b8bf52", "0x29f82b1ec02e68c25099f0104815897e33ed9c26dcff3b2c89e6a3471222c934", "0x03cdf7f8fb015f6861322f7adc221ada280021197bdb71f800ceef89ed021dd2", "0x27eb263dbf7ceac824d85f2a75380469227033dd02153365636df044d8cb0b61", "0x1628cf084280bc149a9e3ccbfc5bd08722101ae4a043d33b2f98ae76a9d55984", "0x2b168bfb1e6c4ced6a44fdd5618617dcb8e9c4dad7b04c4a8955209f1b61ab93", "0x057de07094dca307236a6a8ccb3f1720778549057aeb7a7daf8a463ba18c85ff", "0x0fb079650d5ee3f78603c60e8b545313be5e7f7d6c1a6103fd79f100ac8ca101", "0x18d976ed9d44fb7437320b91d3295c8e336e7b402659149b2cabaeb272fb06bd", "0x1edfbbef180142c47c4c7f3ad1e2cc81bd020abfccb432ee327caa22e93ff45f", "0x2510fbda0c1b8256290a2ad3b4519c815f0397bb8c85505af672aeb7da1f925a", "0x14783ce9bd49860f364d0e46defa666d36138dc406255b9200904fc060cf0424", "0x100e00477369c0c6778fe65369744816331bfe377db33e66f63ace31e3b56857", "0x1aea93b51726a8d70439ddfb7e2f8774bde996b72f9cb00cc3d7f2ee2e0c45c3", "0x0b14c0df6b2222d977213161401229763a551b889694dfd30e80df7e6f76cb49", "0x0a643ba72531a192b1ef9c8274ba8eab73fb1a64c3951b672729c60eecac354d", "0x0c36a12c83a445a6979b13a16b87a12bcc635ced8c8421ef9a8cb2839f396b02", "0x25cb792acf147080d3a3c2e87f729c5ebec1c43898e222fd0e50a951897d5d39", "0x1e1064f65448355486dbfa2c2c83579fef6431deac35046fb277b5885b09bf99", "0x26440ee4fc4c477d379980c1834a3b2f3b261d7ed7b913e2950676ed20f87854", "0x300acf3e9a901b9c681b43a6ea7b482cbfc4495dd5125247d4c9b2ab843aafc0", "0x0d27833da8adcc215d9a530696c52693b004de152c6471945ca7a1701c3849cb", "0x1c4e8f6024bb796333f853462a295e0cc16a6098572ef58d159a528cf886aae6", "0x0db38e1071218ef0ee5d77ac780dceaadf1cf79dc9f24d2f3c9d58412b1a5939", "0x0f8a423d040aef0eddd6efc469f4dd9ddd7fe591a4aee3ae3906da7a77f8bc22", "0x09da570d55e2f64c94e3b2e7a2e255f059dd362f796a69142966756fad8590c1", "0x0d7cd5c265cfb5b01a59e4448c67c7addbc2c09b25f078b23c520d78af40057e", "0x2c9c47bc4c332aac15ac68bdb464ae193a745c1351c7d1230b261fa40b95df69", "0x1ab135f3c81fc395a7b94e0b9115359101ec75e76adfa14529759393a1789c8a", "0x30521d4082f58b8f3a12b7c8e41d1fd968284acf12143d85907ec782d3dfaf9c", "0x1b90102210279a42b7f8f26c7bd068dd82b76cd3fa2f330145698a11f5ed996d", "0x2e9ac434179029826cdbc624b3208030d4f0b265e4a8e1c70b89513103398096", "0x2784c3d71d125586185496e3fc7c369996e700ad9783b23f41fb483cdf8eee37", "0x025305428921f6e34da2ab05c3b762268ed1b1bc3f06acdd1dd5e32691e62ba8", "0x1d3006e6c5725e17b5828b5b5a23716f9a6d0a4c867fed2cc2543dc0ac99daa9", "0x168767323e5097bb2fe6682bf6ac8bb5b8f9af071ff2602564739988a3a6f0bc", "0x0a5d80b200e7ee00500f5268dc319e00b797d0ad358989a15d8af551421e1bd7", "0x25dbb5423ee2a7d7861f9982f522b0c3aae6dcfd0e90508cb6550f724d7b8282", "0x25e1b972aa7576ff000acf7ee101175d1d1ef18264415d4fc9f4c5c3362ab026", "0x27a9c670e696ec5287b8b606a5c231ae0fe3cdb764e2ef99ad255231b98500ff", "0x260d6606a1db4854bb358fa415ce13ce114316d871a7a2b90d112ca2eb7bdf05", "0x2397a374f84a29a5ad3798bbce567eb631730c745a7d389e654208eececb28f9", "0x11ee1c616304dccf020f88f6a48fa4072126e64e2796ffba89dd93b3a91f1f2e", "0x055ae011520b4ec5b5a77d3b5f377a252ee98781a8c2944d2bf0ae1867ef9215", "0x17007f74a2fe2b85581af879d136d587cbe18e9a9c3ba1ac01c50cfa2fb8ed4b", "0x214ac964b34b210e03297fecfc88f4d06a85fcf0f15e380f948b15fa1304ec1a", "0x1c2146ea153de11fa480b444285fdd1cda53cc2728a796c375c47c2e2d574042", "0x0ca0af024d983aea8ff6340dee9ec828dd798762c18f06bda92259b3c158076b", "0x012f82ce9da76870a65735548988e6e0af180c6d4b5d98c5ae1ab86c055ca6e8", "0x255f614a333b1375e92526e39d3763fa78f13e535f7eca2a2a7b97ca0d44cf6c", "0x0d0354ad322f5e1dffa7aaeec44429ffc89e4df6081c049b7ed3d3de082e7b92", "0x039f496e8bf76be9faff69cf331a848e9280eda0326d5a191311b5dafc27eba0", "0x1b0b0e8dd862523da0903ccbd518edc5a129517fa698941fdb0925ff03cf5794", "0x221b67c9b923277387b91fd41c7654d37ceb937ee692fbec3afe6eaacf2eb6b0", "0x125249ba3c9ac4c59c1dcdaa6de29ab9ad1480f8b3f020e468608f65bec51157", "0x0264e9390b7b2787c4ae35d9e35360d7807e3414b4077b533b85381811d1e730", "0x1a8dfa17839af5cdac40ac89c5ff2347e70c17706e32688cf7b18e09d19b752d", "0x02ddb274e22f13d1e9c186eb710c2b3cf7bb0378ce46226c1bca058f802e1da5", "0x1ed91d70a1e0e229d8566bbcaaf63b0aaa3236dc72dc772ffb5264c340f945ce", "0x258d9714748ca3bad62b1fc9bedccae02f8861640906580d683f21131c5205ba", "0x28094fb0c9ce3fa37073de7a1261bf0f3e70f6338fd598edaef57849297af20b", "0x01b268245960a242d8d60f4830928fd10b2bd9b27d8a731dfdf69475603e4779", "0x1ccdc2c48249496818618873ace0bbf4ab3a3f2f6497f939be73330ad18bdd6a", "0x10d7b6fd7c71bab6887f51ec5639a447682d7fd6ba710e8fb14f81ed72c71f6b", "0x14a136a1e4827d707dacc928f8bd5234cc327c8a3e4ba6000c6db5ee3b125757", "0x2991208842feb5c9b11c6180db57f479c3289c9bbf2b6d5e639b14d77cc25858", "0x0864276f06cf50500d51cc2d6eedca092f1efd1e35717c91b5181c66eab3485e", "0x01da1115c035901d42d512b03bc2962d2f3de504caec08f18437c90363a5cd18", "0x0ce4c61522cf118b66edd2dddf683b407fdd1d00213f2debf9963b5a8a297613", "0x22822be14736c770dd111018ad3a4818979da22eb522bb3ee4b3ebf4f94c0138", "0x02488c2ef3cecdf980e826af298af3b81ced49000d09ef6cceee194c13f3a44f", "0x22b3bd43bd130c0e2e989fd0633e352805ea72c21441ddb14fa2a4d7ff5b5ebd", "0x0ffea11d900b5c13cd8e4632e92d28e55f4b02b9ae182eb262d9fc054c592acf", "0x14acdc065935230efe80adbb43ba56e4815cc53e1ebbfd39004294d9e376721e", "0x15fc1e7cb819924b6faea51fc1adec10cd1e3adac0d0a32460a0d4a95a03c6a1", "0x0547d1912834376f0035790ee7f36ab73c9c8f41e1c4fbcd7739b4c767622c51", "0x135f9f4c16f97545b9cdb5ceba5acb9a4e52ae255e2a69e22b31145737898099", "0x08ce4af40d7de598c564f0c38c6620eddc9fed826c4060aa6c28f0edb3345e83", "0x21d6a6d971259296ed9b72872104b340cedb9119c4774b5b08ab4bad29c161e7", "0x2abc622ac35f50241f3652aa962d4b045c8ce1b4d3a77c51a5cae9995c6eeeb4", "0x2545b28d54fdcebe42f8a4562de1061eb216272889536260d5f32decdbc4c82d", "0x2854260e63dc45d22afd22d8c9fd8c22e1da68f4173a4028bb885bf7fbb4ade2", "0x095d54e568987ae7c379dce46d678537a26d61558a370609f491cfe778e8fb9c", "0x2ac03c440c8ae0f753a4f633e704bb41f8c751cc463b91976dc63157057cf8d2", "0x0ce597700fa4ef07ccefd26ea346c30618eb42bf9a4b7d791a957736798970be", "0x02c13a4027f4153b3680a29b7268e1eaf78ddeef9f8d1ac0866595cd9503b836", "0x21a643839be351a4f38fbbb173b5b0eb5ecac4f78b77f6830da680ef5aba11c2", "0x053b07c71cd864b2113abd0705fdf242cf3ca016b2ce545cd1877ab44ba35cca", "0x1889c70502e3edfb3f20c8b32fbedaad51fc6ad1caa14755c7edde52e1d4ba39", "0x16866b664aa3f628ce9e1a79887af71ff1bf20d4df6e707d51e05fec7b8edf61", "0x0ab47c201ad315c7220412e1c304b812546d4a3d84d0ff71c7a57018e7dc7834", "0x0577bfc93b1ab50ec622257ceedb3d2f4a5486002f7581c9ff3cd22f3a5ddb65", "0x07900aa352bf959e718e5284a4485f241a74a0bb7f730166c297e448732d6ccb", "0x2635df956b7df3f7de298ce9e18d310907e65c1c96502c693d1be9554bab45f9", "0x2e7115f1d6bb75fd5adfc872613922aa172fad9a29483b4872e5fd21c8374306", "0x28e330b6e413acf334dbeaf1969d566977dca676b4618ac27a530b6c859e5728", "0x27e821c205286813e130ad991acbe2c71de552ceb2cc34ee727666f936b0e82e", "0x08222684d80154930f962ddf78b2c56568a59e5d9da21ae8f063adacc9c2c38b", "0x0ffb7cc3c05ed4a3084dbd743112c05f254fcf9b593abdb82e25dfc5b4db8fda", "0x0d6e11d9b51ef8fa12b034fd87068fdc22f0a4a3f793dc6c9662eb9eb915d279", "0x2c5d6dde18d28b08d919f3981e5f27a99f2c10d9af52677d244ccf6480c6960c", "0x10582dfc5f5399c4c952550128efee21169a4727ed9e1c140b9a22db6ecbc0f9", "0x1c58fda68ba74bd534d519006cae71804c2e6074aba61d95f7d8ac84a3def0bf", "0x271044c8d54e1a643dc46ddb909ff4078e9534e8d23a8c2a1916c9c5c2b1d8cc", "0x186c5e24015fb0b6a140d7f5ecec132b14b85966768ce1b39c20365cd3f5d335", "0x1ef5281243bd23e1a1d3f0eaa8653e2a642556af81664859c816c5f69b1365ad", "0x0e9af53215e2364935a0272589b5c3b0c80af154cfa6cf64969885d37cfa68b3", "0x0c0a5c9bf118a07540485a024f1cf7c7cf0688827f6c1d6d93f6315c62a02337", "0x02752ea3cdf410169a2b9f7d940b9301f855cb888ff55dca8d5fa0f14ccfb4c6", "0x1f484d4e14af3b11cd257eb79fc52785fdcd8ff152dc56dc9f822475289e3d66", "0x18a42e21ac35ebf3034a6b7e836af6ba99686bc07b1ee828fd18ce264f98af14", "0x17bc4fcfe167ed740800167e4d386431ef1bdf24c6128a964c027aaf87922fa8", "0x2fc3b7b410acae015c637749d9fe90d89402b6b50c9d844775316c204bb4a3bc", "0x23050b3666768fa91186ced8876f0c35998af3ee48ffb141b841a792151e8e18", "0x091bb332b35d6e464789951159003f6882fc864a87bf52899711e84d7a696e7b", "0x2ee7bf6ceadb5749612d3f3237b181d839b32c66b51c3e0e518d6196e3fb1ad9", "0x0e5037b387cddecb84346cb5c04ba1c9a7600253c75f28d14c938916803ca018", "0x1556d870d39bb506dbb69cdf14cc083080b8d81b1450048090cadd910ec7397e", "0x21994dd012c107a165f93ad7e28bcab73468645266ce123640cfaa8330db37eb", "0x2da94256d843094dd9bdbc75b6c88634cdaa76e6d2bb2c7a4b9c23260e28144e", "0x0be0a92edc48db09808d50a03956b3e847dda5481fae1dfd077d7821d9b537b1", "0x1d332c7d075cc815dd316307189d93e14f0bb9e201638579cef3fa74568b662e", "0x15a8d58dd7b443b1e047e330b99eb9007b48e5c1a48a65f04c2ba40e136ba98c", "0x15f0ba262ebc5d722d3cfe67bb7d2fc20375faf5cee78716a321ea37907c7942", "0x2cfb417b5ebbb0015efa9458687cd92cac12b9d78c640336eae91934fb36f1ea", "0x0d331b322888532737741c8cb532728decddd7e7c3c5459d830a8ff4395b9dca", "0x188a4855919f14b790002d9bbacc7fc011980e3f5197e53c509b9b04d7023d5e", "0x08cee96a66c1ed7e3f978607c188fb906123d343f4bbf02d00920a66d243ea9f", "0x20b61c43e264decca5db37abfb717521e78ecf25d029bf4ba611426f1a82d558", "0x1b70bea273a40aaa74ced8369d5611aad3452804196ee87a3870450c22c1cd02", "0x24c234bd6c73e17254efab015050a01b7ac6dc82a3354d6e136a94f75a1a7796", "0x2a21a5594707eef1b1070ca39d553ec74f8fce88f64f5f494e3ca2b807a77047", "0x09cdcfd503958b901b3c6dbc1681386b7fd0e338313e3bde4ee4cc6907175f35", "0x037213fd6b9adf8b983606125320f73ec38b1e33deff6a0e719ea82fb5d15563", "0x2be5b55d83cc6fb32ec758e83ec576f521dcdb1da1374cc2ae0224725d6d5d85", "0x1f9b9850a392f6da10fd0088fd06054e43d5e204bae3ab38509dbfa188589300", "0x0968a47a748db23b73e1a1039b2ab2533ba91a12ed80e30afe4754c03ca1caa3", "0x1a624785eae483bd8ef9d81afed0c8612bfe450a124e267dd83957abf6a3dd15", "0x25ac240c7126a642eeb1298bc19876d969d9cb5ed0952cd446eb548962bf1586", "0x27151bced14b6f53383bf4553bc9282c17dbbb8cb47c1e847ea89be43ec167f5", "0x01ece2bec2de7891272f8f2f11fca0c00caae162e3fdb06e0548a1fd905fdf49", "0x27e856df227cff7d93cf1d0c05a10d1849345e99d6956a6659ea11d7d7374c43", "0x1ba8591af1c58a45df09034774a836e315884127d62ba02b4e99157b62b8c467", "0x2f11fa9402c5853bd308181c6596dce77c95a431928d16b85340980da12e532f", "0x19dccdf36783961a18c8e432618fabdd0892cc17cbf38ebfce63a2bf846232ed", "0x1350eca5a8cbc2c53b6a9df1a39ac7d72f0183bff9fbfd01757f08768dd52d6d", "0x230585af7582b6a4dc662070eb37eb1c3578564f80a86702d5a046fe7b251272", "0x052a71b5daed70d11e7bb9ab1a6130cfbe019383dc14f99fe2b53108ef831183", "0x07851ddc73a2c6f97b8a08a05bd1de3dc88e04910bea0d837164f2c574c3d337", "0x069995287feef5bba996cbc5a831ba001095e26b3e6b5e35f9765fefdf460e8f", "0x0a69204150bdc7bc73297aa4bf156b07fa581ba2def6924e2868c7dae84c74ab", "0x20fd9fbd1536a33deacdf27678b70436cb81705e267cdc3bcd6926ad26285114", "0x2eb1a2eaf15db5d578a921d8e77da62f9e62282bbb029f0cb241b6021364eb40", "0x051f55bc0974ccb75e69b79fd695fd54e210ad37034836b401f2f233979d5de5", "0x0ea1386d77c0f896d00ada2bf96303b17f1b4318a7dd5d959f3c8ab1c25dc3b9", "0x11e2fce0eb7e64e488e0a639a5f1dd20f1db91a1cdbc79f47111e0e0148b4c2f", "0x22633874fb5ae4774d1f02a955a7475f8e929ab6749a17cbcb0e12663eb9de8b", "0x1ee2613b8ed5faea8c3bb5f38f8e7427528e52b36a5cd114c8d8465bedd6213f", "0x1b3ef2535d759add05abf42ddde283129274a71318834b561b07e0b9895acb23", "0x24a084eac600612e07a30c5f1651b9843fbefe25e65077f1bbd4ed75e478bc35", "0x049c2e0e7e177a16668e8d6a2831d20bf52c915586b52be3a535c386e2e23fb0", "0x0769d2b56d0d48053a2dbad1ddd11f7262f80f04bc7a8f61dd2c4a93615b609c", "0x1aa20a25e4526401305fb2432c897ce83c4e4daf9d4b6fc5609df0dd8d0c8279", "0x20214d534469f0969a8f57b36f6d6bb2125e2ea61b2126143cfc66f7377632ae", "0x02c25b9f5db0feefc72ea94da35fc305c712e1162b921c9594b8c9b3b9095345", "0x11d06d5cd8414889b209f08264e1f638b56befd0a7ad4d1cb91a87986426f3a2", "0x01118c6633adbbfa1f08b73dc28148ef5008128e94946e47df78e52b53a81813", "0x10cbd0a971243c100cfc3447d5987790b60420664da96477b29ed58159d3c0bb", "0x2d7defa56218b1d02e64b31e0d84fb39d4068e7fef2f8e47c173401d5a01be7c", "0x035bfa1a3f16472ad0964a6603d44cb70a930f4538ab235d5cb1d90e75a8a935", "0x0a172329742ade46e7f37612e637f8a0262620ccd838892f3fcbce0f6340fff1", "0x2c58c487ea60769242d19dd8230a0e10a9b600a055416858160cab8996bd747d", "0x10753b36168ef4814cbce8a92176fe0d0429294a7bbf562599e90138972345d7", "0x05cab98dfb3270bc9f27c6151315ddb0af0b292642297fd763487949675ab3c3", "0x244babd314036a353068b387e78f064b6c3c21a1e4379c64034852528b8cc286", "0x189d6ea1975420c15108f928975eea4f635afe80fb1543ff6518c5dd989b4ef4", "0x2834b06e2f31e1c2e013b589c306629d588c9677ea3b4729da29e5b931727e11", "0x2ea65573cad7061d208bee93d6f72e79dfb7a9b0c58d1c3c43b295b7edbc050b", "0x2a8afaf324dca28c3319c642c939fee380fbb0992bd00c0d507bb244e79f3b64", "0x2700ca9644562122c6ec1339a9ebd06170fd8350ecd893f4c4b54ca714e8cca5", "0x088d20ba63d5235d169351e5ae5382a65d0a0e4542466625c496484e527caffd", "0x1e3b2b692746db2e3221d31c2c9d2af6cbae59cdea2df8c9d61d09cab543651c", "0x0320140e2c3634e2bbc6eabd67e3150593409e17c8a8ba14d6ba10b48f57be7b", "0x25fcceae7afc449cf6fa958d7d01bb57c0cad966b89de9db049e4d99aa35c63c", "0x2d08ac7c3d1ef44252da3c40aaa7dc955760672fbbdabcac988f85dd7f61659e", "0x07723b7f34c31a1d58c5d67e8f0082a117f77b403f42383783ded75501288e21", "0x08f93f11a62858823b57ebe7bb4f2c7fdf0a99ad9ae526bc7565f7fcbed531dc", "0x2505c08966f418cbb7cbf186072cda3478ba030cc08a31d4dc8353f14f5fe9ce", "0x22730c77baceee5fa6c5607ecbebac0fbcca0a5faa48ab37d4f49e603f33c1e0", "0x2866da8f65cef794177ed99ca0e5e28c45e33f059a6fd8db8bbdd83f37b93ba7", "0x2cbbd169f4a32d679b818634b4018a00a213aab1df758cc0e5ed696914d2794b", "0x152d67da16d24a00a82991886c6e1841bb58f19c064618531f66feee723badfc", "0x064ebd9f00d3aa92502f6ddf8fee96e7a247af07493edff59a6473cf2b877b5b", "0x17bf7430be0ed0a5924ec6889b870e3a5ae1d005432e965597264457be3a920a", "0x02d8cd6c4dabfab46a079273c4b789b7921b68909a69dedfb64974cd1228f26a", "0x0616e7fc01785aef16700dd740860e1445464ec05242217c1d7795fcfafed0be", "0x18d309277b33ca481301e0ca3d42a88033ea83fe6b9abe2c2e7d93061a31f3c9", "0x07524811ca357fc32cf3c5582cad662b040dcc15f0afa3e04550687031984655", "0x1ec065e0ec95640ef74fd337db8c6e0fd7a1414162d1db45bbe523b373941339", "0x2471756386b3496c2180e68c6ac6bd0842f8cf2024d6e519a37112e9c2b0115d", "0x15b16796e573ee84ab8676dac041a3d2b088bce5b17ef437b3dcc5965302bc70", "0x218e6f091731868afd5aca4beaf96fcfac98acaaa66d5738014f0139c02ffa42", "0x109fba9e59cf55203fe971dcf32608a57e45aad64a7c8dca57db4811dc17c808", "0x125a6c051a7816c5166bacb3647bf54f12ec2945ca6a51bc9df19051cef9b19e", "0x1b2e6621d9458cd5dcdc30e3eff2ffd34677b2dd8af74f4d742049e157d5ee1a", "0x0ee6a1864ab85f0cc60a19372b13b8d1671821a681cddf68dfd82a0e9acc72ca", "0x2c5ea8b8d22cf4ce55d4a3811ea4ace1daf2127a92c77bb3bca51e636c5dd5a3", "0x04769ebd949f424f925e09d2f1163a6602f26785f701a0f6e46eef91a79b2d81", "0x14ca5631f7309cdd27c353606e8ebbd48b911a239d86b45c5589bd5a9d5664f9", "0x17085e091ccb55cb01d45c2feba1c8c18ca380cf17615edd10d3fdb91040ecc5", "0x2b58062e06097f47843198458a974bc7ba88aaf01bbbfab7235cd990c3ec82ab", "0x05f19742b6b9cbf14b622e55b5bf45bc72639533c18c98b2dd811c4dd677ee49", "0x2af4cba34b3365d68f5b0775bdcecc6ec1f42972af48d64820eff166e68c4589", "0x304ef965cfc0cc4cdea00e9a2b8487dd791652baf6d9810a5efdae392c334ea2", "0x0c6b70050e17d95eaae67e03b820be7bcf05e0e99c40c7ede3a4d69434c2ce4f", "0x152051567b1ed7d6f4d2864eaf1d3b052ec28037ce709adfcfec0dce364fae76", "0x196a7e50cb517e21769d1fdbeaa92abbc040c76404d7144554a4a88b27bd5a56", "0x1dba4d6d2eba84339bb2a7a32f9cc9787264acf687504ae4c69a8b1a296b9a0a", "0x114fb35839ddb57c3a833d40316eeb28e32221d34ff86ab96507ad755c4d375b", "0x152086d1247da80503965412bca5b020f0918e05fae4f40293c5c1356b015832", "0x248f8659574c27b349b97c3403dd5f08fcaafc9f606a59693b89d743ae952fef", "0x212124ced78bb0cd0b708d1f0dda3a8e4f5b42cb3246e7a64ecef935e5fbce2d", "0x09d68a717d8417864da716b3dc29a6aa6e2dfc0b661cc9526b66026a7c9e8b52", "0x1009d9033011387d7b59d758418ca3c0742dd6af7eca2e5e6889ac3651b32a01", "0x1dced90604d29cc66f5810108713c09579fafab7b3175b12f7540f1a03de6851", "0x12d425da9511657071f3700e73d3a357c1db3368aff5148d40d3b315c3cf4d50", "0x027bdc068f23f8f9287c8be55469809925dfe5226108913794b4782b07ff59b8", "0x07d909196d6cbd2091e7b66d1550e3772b360afa4f9646af879002bd20e674bb", "0x2c5408234e473efa7269604e73d12733713a47b552726332dfc58877bafb84f4", "0x0991a9a7548e3c5c4f09473aac60815c6e04cbc7138bfc02d43346f46a5bcd21", "0x0e6c6e47926d2386b0db74b20f6778c507bf92c3fe5ebc26327ef1bc5a9bd57e", "0x01db7d7f599538333bfdc1b9376b38e8cdba27e8c49bd819e08d28e132fff211", "0x14e0d2bbb5969c1e0f86805100c284d8f6f6c1c101e8e7239a38e3c7a006267c", "0x26ba784e04d92ef59d57a171138b2f2bbbf99cebb2d5bac21cd86c8af5106755", "0x07de069ebcd67dd5880d098549ad3e1cbbe74f219b8c53f8bd49166a9725f72c", "0x3028949b0dd33e015aa6b460691d837d8fb9b9d5e70877bd83df0300b4a0d843", "0x0b5f2ccb84db3c03ee4842f663479d9b0a8cb08d3f1d7ed41069fe30120038f3", "0x0f56a30dc396d6c1b178f692530945d187d69c0828141922f2923dfa4d93f821", "0x16a873c3f3cd80fd6a45e7826eca59151c03e4ea8c1777b20b4fbb42d7118f98", "0x227479dd4a5e86e44de806dfff98d05ee2c5148f5b42a5acd07747ac71c7b474", "0x247f177204c1391a4bb0241cf0d084ed79f81fb4049498c003ba1b225514994d", "0x1a7a0d3e02ddfd68639b98edcca6409b511a4c508aac4a3ee26decf3ab74118e", "0x06109074715f90196189de280af6d0c820c8e3862abd69a5d050932f442235f5", "0x112ef9d464e2ed0c3f34862cd955d29628c3116fe54520e76309b77ca91bc2fe", "0x052afd3488a875bc44e73c54eae6ac05cad2d7e19b480f50c2858b8ec5a4dbac", "0x07fea8911b7c2841f4f7bea4f3b7be7cb5710a624297be767b313447fb2a1f9d", "0x253b88bbf4610d15934d7e98f4a1303662f9cf547bb61fa5f1035b11837312e7", "0x10ef8f2a1e54a3e08d4b642a5b584207885166843709469691d3383502834a88", "0x2de738c01f72522b6982c758e01540c6d792040f3ea15285c7864e3bf92c8e35", "0x1869a05c2435f4ede2ca33fad840b07857efde65f8509325e06a06f89b3093f5", "0x044a3c589cff1b0095a3bba218c63c451998d5436243ba1e93f726dae82593eb", "0x0edf15cc47ab50a92e54014b5643168988e253adae6f0551e239d265d10f1fcd", "0x1dde71a388e1a9cb075afd6b6a13354701e041fc3415b5d6b613541d4103f409", "0x13101734082cb23f9bd2657ecbc31debdebc886dcb5a15bbd8b120c8a945f82b", "0x25a3a7c128ac6ffddffec4d7a17cd3044ad0ab308b974260f083c39ff72937d5", "0x0c5a938393016ffa071e3b9f2fe3c58ca3083967a294e62ed8be565724661b4b", "0x1b63a0bee07072dfb3a33c63fd00d2da4e682adadc666db1205326008cba6e17", "0x26f99a34fc19ea7dffe9c6ab96719b2cef9d38d41a209ebe74b51b2f8b0f60c8", "0x1f1884b1cf3fe36cc0e0aae88ac6686375ce66ad770087b66b2d1c401e4983bf", "0x0d7f0e2206d6a092c502ca25b440455da98e69d7fd5e4e205c5177a8a4df812a", "0x184da09fd45fdba360861f125fb5390f5a476252fe71889582cd7b73da98050a", "0x1840781562955cc1a9035f8b1ba651c833b0719fe283333c249c8b263bb01573", "0x02d077d027f39896d9d8b1a619ea6063290da1477d06d6a244b48023b6f3cdc8", "0x2cba8f305b009310a36116769a2a17ff2230b4915e156c43c2b5d9c977813660", "0x1e1c46b068f4807d6832a968be9f79bcaa990b6493844ad724f8a8b37bb7921a", "0x21ad357404bb8cd9db5355e5cc479dc1aa1e48fc6c76f62f5d1ae768a0e1a419", "0x00e19ce8b72c6453c73a3538e919f48d4eee11f6609b60cf430e14b74ceac5fe", "0x0f89d945566a286b7bc63b937036d40fe58fff3b13a6fd1ea7676eb66194d06c", "0x15e6a57cbb53220803c4e91e066b483a318bab0be2119a8643ed1cecba61137d", "0x1c45c8841fd5d4e675a46c9911545c14e9e468ef83e1e7c6675e91703f0e2327", "0x10ea93f02575126c231458b20f4b77480a0f10f53cf4c5b6f1dbbbbfe8d88a01", "0x01bbb7784b1f4971b8b74b714d17266e3a45008805ac742477142767ad0c5ff1", "0x138941fb4f666acf374fcf0190a41cc86f9429386ad7ca204fdc2ca224c3405a", "0x2c8991fb3b6295cd67162631ec3491ef54fba71727c22957740552c825943423", "0x0de66b24c1d4e2e56781bc629c1b3989d78dfad628716a843a32c5db418c7501", "0x0e8b37c16fb6281255cb27790ac523f5ff5c15be286b1e82d973b4e0104bb2a5", "0x0fb41067dfd9ee6e840b88280597d436a0cbd61502e06898cf8b5fed9289c85e", "0x0119c19df693f80a7a7b0e64479a9a77ef4b8eb70d6bee07fbc33ef7acf857db", "0x2826c0eb3ae0b75c96cfc181797f6133d8434b812058bd1887e71aacbf095795", "0x1d138c8733414f701ebcd319a6858178037aab082b804e2143322a87b6477c76", "0x22e32c8a1a9e200d7e31d69e4277c3e679494b1d970e0c79217587e4955d7c07", "0x2d52b65582b83b5d13f288d67ace22c5c51f8a4f075b8e6d7660a660ad5cf6e7", "0x2e2e7048c0a0db8910e0827eadd124a35947cb26064a22e793b4d4ab6ab9021c", "0x234f9d96cf483333c13f5224a40dd495370dacb7b6799e3f9361e2ab893041c2", "0x0bb3e00222cd3d72f5499a2749dd7e36c8e2d55e255fe81d758a107070ba481c", "0x199ae52b7547a3da5f54bd2b9ca9dc0f21d11594eb52a07907759b82eee76612", "0x01a3d8048dad09581c18d1ab2e10666d3eccd0769689d612199c26550f3a181b", "0x1666ba94ac2cb3a58c5cc86eec751353a14391b0e06fbe263851396decc0fd1b", "0x15c3034cd79cae75c00b7976817c5969598916ed56344727b811872af4042e8d", "0x086ac6932de61a9ce418b612502851e06d5d70f4dc3b1e1ed8ea2c6df75b8789", "0x0f43a70c864e7a81e0576bb27764656141ab43b19925a1b4d3a1768bc722b72d", "0x1db3a2b7c6b538ad07068d97508df5ffb34a09ea1f98ed30399af2983fa145f4", "0x1b15391ca85237ee8ea48570d759416f1826aab34ea87d3a3cc3547d17e7dfd9", "0x0263aaa9f9e83c255e67f9a09901feed268df56151e79df345426341e0f38f33", "0x2da84ec38f7707d5d71faeeaede793d990f04e8cdd016cbbf3bd65c129138213", "0x13ae9ded4812d1f4d28d379642ba7b79bb2d3eb81dcd223e8910c55e8f77be9e", "0x25b181c72550002c2b1304937efdc34a0d45e709511929cea060359fb523bf6a", "0x2d141f87778ebaf647f2da27abbe0504d46442838f3ae21aae9074583f6b64ba", "0x05cfb5698f68cf5130c14bfd4c87741a0b65e2c197f594831ca414ff53ef5505", "0x0fba377e6949b3908154085c8457a2980cc5ea3472ec30e0996cc8dd9da31d9e", "0x2ea5bc22fd3e4ee8585ac883e574501215972b203e21d3cac33b4852d9b507b5", "0x0db2fe84aa7d137472e72b0ffbc7e76a76f9224fac1d1b3da6ee35a5c724f8db", "0x11c804a419c47dc73db1ab2682979afdb042c12ce349a00dfeda1c72f0a4db23", "0x1423df99c89efe43c3e80af699fefabb861fe0d8974624dfc1927d2776daf241", "0x2e07c1f81bba9f8e1bd8915787ca74c04607e83c308f4da253140de0e3cb4ee0", "0x1b945ccb17bc27e10a23926ca5537b49b28b63312b3278cd16db144ab27fa3ca", "0x0ae9821243e03b7ea9373b032275d32dd4cbabc93781f36d532b7cc9db7a575d", "0x18f2e62f9e91c3e399358234fa6a0c907c3f3541fc0ce8ef1b5ad135d41c4c02", "0x17d7aee292dba3de1943cf8334254f9754b17ad7a5a2c57230eef7e06c4049fd", "0x0ff75f8ff73a55d486beefd9f5d8bf6f6f9d31b10a0903b24f4a3bf2118f9836", "0x2f8219f3c7c148dcb2f38c697bffd3100e34b0ec8dcf6d7436de37e9dfc65a4e", "0x16ec1ee6a74f79ddd9d142216659d99b9123f7d789019ecb5cf3a043f7d820e6", "0x0fe5612d8e5fe5ff4e224078cbf3907f25078d2604dbf20a6aeaf18b0216b57e", "0x080219777df47cea0bc385242c5263eae06b2a7eaaca605b7ddd32fe0b0cfc8d", "0x08e90c05a9091040815ec08eb142106a1b2c94eeed5132c637cf9c0c40403e77", "0x279d2ce8346731fdee7a49903b7e6ef1362c59970e31aaf01aac51dec7f9f026", "0x117e0047acd22b61fbf81e99cc13e2b9f1d8db8fb38378592d44372779bdf165", "0x02bc7053dc85295a51d0f8d051189da22f32f222487ec9ec39d5a17652d9411f", "0x0790684b4d26b9a83225cf72e60c026432ca5378678eb8c744ddbb6e645fc010", "0x08cea9f02523e9dcb87709812e1f78683f373a33895774491c1d6072e3ab079d", "0x1a28f5548ebe2c210f3610ce30bff1cd5f0233fe045f0da2d2a7061f63ad35f3", "0x1551491aa0e035787242f5bf43519ad561b6601029c56fc863c63474cbc6713d", "0x2705e73556fd298b38cfe6b3d042e4e5f4b457e90e7e8b16a3c9b54b49c644f6", "0x19edb84862a4a113e372e01c3835b7167bd58d6edcb038078de507dc89472728", "0x0938b1c265302b7e4148906fe0e90f9ade375510950d475224a0915dbd2a3429", "0x0435d661e18d8bb28bba1a4648b73af64441623162e5b636ba1dfb7a7e887c08", "0x2ce71ce2431662911ea33f99ddd42227b1477573b261f9d38957f9c86286b2cc", "0x17c75da1521bd3f44b2ed39799b747fb4fd28038a87a50a6efd9bf39060f1df4", "0x2fa18e89595e69993eaa57f71aba15a8bb83e9a86c5daf770794567ff4ff187a", "0x0a97b5f7307b9b6b4614dbdd9ca06eed80fa8ec636008628740f04673cccd983", "0x2fb02323a8db7ba7e3bea78652a3dd50fd90705cb65f2f99115ce510d1ee90da", "0x010984915fbcbcb2c7d051c06a00200823c6431435ff387788b87834b46a645f", "0x25faefb54ae7e8ac9b3516ed44536847045f98350fe8020edb24fd028cb95e74", "0x163e9a85805166386406aec43091656df8a354104960ac7097c85d2107dcff77", "0x2e01e39fdd209edd00393dbc792737828f81d0a25706436c45868a40c23fe53d", "0x1ee6ca0156eebed43a7f02726338c9259484634883e64cb6c34ff4b459dcfa61", "0x25effb4b84c2c0906ebb6571af7a151325c6ad696ac0ab5a7e7a34366a923f44", "0x090185086d0cfbdf941af09f6e85e6c9199da41c0b294c049e2143e2d1bf94c4", "0x196921a374020f2f7cf6bf76b7fd8dbaae06ceded49ff948268d3728d0baccbd", "0x2e30a88a9c1a48deb66bb1fe9232d73aecd2d81976822b2ed437aa9c11080577", "0x18fc95efb840dd52f4de54cd023b0b552d57f549acdc4f86c1635685225343cd", "0x0bd2326b0caaea6d5141b3be470e865dae99d86dbe6bd7861a22ef6e2d95c08b", "0x04de1aa3fb9807b22fe3c503dcb0a58325340ea0b5a50702e62767018655a8c3", "0x279d21657b39b694181d5081827940f6e6e1271a084c55f42dfc737a187eb989", "0x2594a94215dcc6c73d64510bac3b30414abce18cdbfeb509afe6d70d3dc97a8b", "0x095142e3ce6e5fbdba9885833c614bbf459895b6cea10edfbadddb276ddd2920", "0x04f7c712281ecc56dbf8bbf95fc1af4690f419b84130342647be3ad1b6773261", "0x150c295bb04a6280a5cfaf70de3e998f8a42448b7a8ee56d1fcea8c515fce483", "0x040b073aea01b55948462b3c96965e070681ba42d92705beaba7ea9ce5983783", "0x285854aae042c3ea616da7b02a6b2ef30975aaa2a90aeb8713f189c4caa36c9e", "0x0ab00bbee202a51e42ec8fb9b5cb61f9165ceb652b6956c1205e8dd53bea3b04", "0x01152e1913091cde5f38a6bdf0a4eb0ebb501954b721f3859a0aa262cde13f80", "0x2df4a938e9488825979442d85dda528501171bd09b780d43d1b2e2532e8a4d15", "0x1d10433e676c08dc3ad49d71ac027dc4b2bc6f21a2fb3d37d7e9e95819279a77", "0x087e2ac12cd1267a049093f730c2a461aff6a429c231e5ffedb62cc52676df26", "0x0f3769737a44340e6fc9fedbb6b760856826f7c3a6ca8b993fb004118718ac38", "0x29f6d54a21cc0209800ee613b44585252e7c35d3c0a4f00cf18a8220f36cf76f", "0x00106dfd6a05f7c55004c6d0792728985e392d63c6d22e183b76c13cd4ee465e", "0x3024b6653dfd68a1ab85ed24f30bfb88690c50b9960daed59b460331f8e36e3e", "0x2f179ae3fa16736110c2911a504837d71c7cf5d27a4c83dc447a7ea54e9a89ff", "0x057740fb88ed21c6f4ad03ad49ab3386680d3d0fb5decc4dfe65e2c187b397bd", "0x157f8573cc1f9773b3852c965bb00bc1189bc83355c7d831f1c881006d3d2286", "0x21dae9de84c896fb3e060fe467c7dd0b7471e76e961a3b30d37644d20e8f449c", "0x2d76eba37f90108bb9dced3f9da1acad5a29d2a354edd54230afa9b76e4703c8", "0x2041ea40d491d2f1062862372715383db89750828052255b1e071f99ba360196", "0x25b939e2c40c6e075a42cb8968bbf928e3d6a8af8da4cc79c9bfc72d6821c673", "0x2ca8f0a159782d2ab2ff4ecd6edfb287ef6e5a1f20d50cf7a75a8b07605ce461", "0x08e18252ecd58de85a74fcf2a5dfd866d780e8b3f592153b7e7c04707d2f1ffb", "0x0e742fa26b8408adabaa17ca7dca2bfc14f40e3aba46a2d6e85d3e3ba0c5767e", "0x28743cad3d872842ad23dae6978295d26179d81275e52dc30a7af80a3b3fda7f", "0x2b78a47772df0f8005e508cc47a3c2a37059fde340d3886c2eafe79aeafbe868", "0x16994b815229f66f90e88f89e047b4ecd3f91a57dd9ee5e9a56294c2f350af7b", "0x0e0f16cd75041288520edb1897af5ab11b85a545f4d642ffb157f5772129430f", "0x1b01e8e91d773dbd4ac756122f8e79aa9f017da3e15d48656d07e98f9a73ef04", "0x0d1f2525b6adf5013e9d76170afe6f51176a4497c1588c8be575c04e567d332d", "0x0ad15029458859dcffe10f316fdcc134527eab1f97c0a6b0994e2d16e3f45210", "0x2eef79034f8cc2ee04f0f188115c01e22b41d429feb2a66bc239361eea4af45c", "0x25e42a21e65e99f63f05b36cfc485e97e72de3aa38a8573d343f95ce50c62dad", "0x06c62c056404aa31061978613c9ba2a052ef8531eedd3263bcc34c4f166f7c8e", "0x17a698b583a769145e307795122804023f82be37618acdc120d41eedee9d4cfd", "0x0e1cbcc11d65e21409282179563ab3e273859363b0bee9cff0681ce5a11f520c", "0x220b8ec07c64919136db6bffcbacd9bcbc2a560bfe98b02ca9d2a1c1620dd0ad", "0x1f7195b3bf189a997c2d4d7f8d107d91c2ad5352b63d111cf142505c2ea35645", "0x0946e22a5fe1252cea749730aa63636b7f99680f6299a80249c399c38b566709", "0x24785875bdec9ee2dc76560daf9dc2b016472189b7b2a7d7dd99e86329313b5d", "0x24d6da0aff8453f029531e9a90cab696c4329fd05d5bc33ce3e949d2d35105ba", "0x195e3e21079ca38093bddbb11591cdbadaccecee91d44a9c797380fd2b701512", "0x1bff6b43a453e16b2b130323317ccf68c0116cc4e69908fc4feaadebc010209e", "0x073f9d5f52694d81ef62884fba9a31432e8c590087630266a86b89f3c0e9c78a", "0x2be3fe4dab84c18cce436f93d492a73d3335c21a6fb6f3c325c70f27ab0717e9", "0x280f758350e2ce22acc0220828c374113c0a04547216dec766b2669ed6874db5", "0x06a4b8aaa363261c2ba63fc31e73c4704152908250ebad77bd7902e381d5f251", "0x06118135c6b1997f96d30a6196877ee0a103713b91004027410a76dc5bdfdd5e", "0x1a89b2b10aba25ad34445917055b958f121305f7b31489f50eef474494c31c07", "0x2e34c3a24b90fa5afcb3b92b40591c3803921db4bb1475fd94984127afe1f4c0", "0x29f4cd64b7c9daa88c1e0cbe36c0b53840b9241af6be3fa3528cbd8495d89b76", "0x113034f899c9af84654ee734cf5907134128528f8ca2fc627261ade006dc5da4", "0x0dd5e41e4d002d17fd303a182c7ce4da1c12c29e5245a94e678960f79a03c221", "0x09495239a4fed063a3c2928a42413f02cf9ae08868146f80054e6d5ff531cb67", "0x15486ff36b7325528afe532981984b6c06a63a0b6e25b1fb271f63b8ca6e8d82", "0x2d8aae1d082a60db6b3b1aa0b244929ce37c13927e8d61fb0e918f01a14e4835", "0x0094ebb5501dae50b3d868311700fb837a5c69e9bd0900903601616f693545e0", "0x1fdaffacadac41b6154b16c9aa2c8859c42fd8da9083d2ac07cccb26e690c7e2", "0x0b7584cee1c78e903017e3a2e83e815830db9118a5b4779b594d764aa5b241c9", "0x1412e854da8a4c9e0a11d27ff0c4609bd728f2e0d566a56cc2936f370c40c875", "0x03d34dbc2e6f77a1d12aedfa5e11de27cc991c49edfb396ee74e269ef5da2981", "0x2aedd5795046dbc6c913783882d4a45463950d108a7e6910532ba1a1f4d317c3", "0x0a5dce1ec5c7d1991d275f91ed2fea3793edc4afa7d3b171d6ca2d5ec880e283", "0x158e7fc9d1596cf04bac80a49f4a93445b37178a9e5a76be24d6c708cd38959e", "0x08d73061d983610d3093e05e80f0494cec6e6a9752f85e7f604b4e65e6fa595e", "0x2eb16d92356a9ce2c7372015b5f16ab18974df29cf53f17e1f641d5360d7f209", "0x2e9bfb1c072ffa1f1448bcf3cb189e3c8d0454857a93f2db4c1f08f66506d6d4", "0x04da3ae9ccf23c44250ee9f32095b2d3758c3223aab85cd4e21791287baa4d08", "0x164495749ccd7eae205ca14f4882b6d5a9f84d70a2eb1265e7e3619322726e5d", "0x1c81b3933e302e2a23052a1ede80c8edc7a0830fc90d4f967c13e8fa199dba98", "0x0de77902a2da45cf6727a6e8790b4b387d26bbe3d3a10f8f1af7d71be82acebb", "0x0fbc8f1f39fa56f501d218cc4283d9f4f7c5758bf121ae97978a0546b275a224", "0x1b158898ddeaf57075ac5a033d069543ffd9226ec1fc9f5fe8cd17428e9f9c25", "0x10a9ba7d8fc36249b71ce38282c550047c0723d4324859b8f33c07233157f7d0", "0x1e62b7c53f510e60c1ccb7826515c00d62eb21aee00b0a12bbed33f3f0a41013", "0x21e2a30973e601469bd38f69e6bfe5fc6b1f2c546a298dbe4b759eec183997e8", "0x1f4256c012bdb73cc6324b6059b196f6607c81eebe0cefce37fbae343a0db862", "0x283815406e80c945ab6a80b4b7903592e3325feffff20d60df1eecc01c310936", "0x0cb4ce0de05ffede6708a7bb1424540d7811962447dea07bbd6b3e24ffcff3f9", "0x23f9dadf82c522df3d0b41e31a7f6ba53230df9046b8a338d3b37127cbad9683", "0x211306e19fb65ae10286d8b629d4cc7bf2145ab76ce513d4afcb5d058a5cd059", "0x26f18bb09eefa70257d9406c53b1703ed3202ee7ee291ff66b080757c8bcabc1", "0x2d69b46423fe79aa1ca07dc9a2406f2424577e3bfafff58ea504c104ec4f7dc7", "0x07465ba33026ed23dccf76d5215c11ffc8c750a30b5d9d39cb2ad3196d2c7e32", "0x0e4146dee78ceba688773810e5327946ae20f047ac4fab2cc45a390b4d46d64b", "0x1624e960b1dc56e5876ea8b2e2115cdb5f60a6889863457fffaeeac02066dd85", "0x1fd0e3ae2786ca41e655bf8e0247a719ebfdf38df0ef7f012ee5a5f9358d7ac4", "0x2052c36e6b89e1840e6d174c96649a3d2e7b50f2558cbf862a05c36b177696a1", "0x12c7be80bf7ff89d69d62f5c25d1cb829f598187578d2fd1158a47f3dc9b187d", "0x1e71226367cf0e67f9ee1e5bb9bcec098a0224003bc724f044ada63f0dc88482", "0x1b1aefde27d4009da9ca9dd14d8d9c546a7c84e6747a8b1fe2a561d62d4732f9", "0x28fb6fbe80d161b9d19d64c68bfd2467db0399459e4e008699bba3b0901f5b4f", "0x27034c9a18b55f5259805f96d8a1d9b7716fb1c87571f71f137b02314914ce19", "0x2e6ade49ee96d2b99cec94c7ab90989cafd911d9d74f6b969130dc9f6102c8ae", "0x1efaca3d5ae87a5f68d4f3114902e480a9416d69332914e0c3ccfaa25e819665", "0x1dbfa12bb1e7b0cf39195ab98b2f4fe7b0b523c43f61778b2ad38e17b660b8e0", "0x1d21adc595bb3462aa395e9dacc67153a5ac4e2a81c8ba83fe337e64d9981dca", "0x183a031f65283a2c57aa61b93f71f8ea2aa7ea9881b0a4c8a7eb62a99c62a4e0", "0x05505d703f7fffd323dc5679872d9bbfde81a58ce5a2c4fa004a1fb57005b3f6", "0x2fa94b93636e509a5fbbd374f111a54974eae4dfa857bc927d463fd02c665b2d", "0x2f1824efee6b90c7288dbcc4174d2eeb29168ad468c9f3433d183d38fdbb60d8", "0x2f8b0043c7ab7df1252a365a6536b5ee4586d79bf4edd4ce4d4ea1236a77d294", "0x2a066fa811754a4c8df61a3eeee92a7a80420f92541d0dcb06eada3127f4b346", "0x2dd483975bf2124fa85dca41749188c4f74da8127ecefbe78dd972b7e9d9e144", "0x03875224d3d0b40a164746fa30f7835ed6dcbce9d23dc4a3c41e65e0a70f7a8c", "0x29848fee626508de066e7046d93ce678c736cbfe64839b0fe774772c6514c1c6", "0x28a7d8aeabfc1efaa515c8550248e34412a27e7fa6cbd78d20b0067c12567a3b", "0x19507b15686e20fe2b1f98c9a1e495b36ffc24dc149ad29f233961e6415f92b7", "0x0a61b968f505e0704be2f676b267ea44908d929ff8639bdc4144945b0075cb95", "0x10975a7f7060b302abc4d5cd2e8d2b5d330d42b31bd5c8a478d7a76859059f5a", "0x23d1ef3b42d0c153d621634f43b24232bf75c90f73c5bc30b85fbe18b4c89a2c", "0x15b66bd3ea7986c7d2964117894f3c43fe02b8256d2c9c185dcb7f8c63b7aa74", "0x09e46a8cefa89c5ca6a5b961fbd945f07255af54c53f732d32619442b8fdf8e4", "0x0e72db48726c3049121cbfbd1c083459c0a633cd69538cb633b879e4af6c6bd9", "0x16f05309db91b39d38acfc1debd39a91cc444330c3ed445812142016a64d7846", "0x06fffdeeb381cbf39795f83c9d69c8b3accb2d87fd6ce4270f5a6606dd0cdfc5", "0x1a252b1f347d8d894af61bb2f75c65cf5fca1a2211de1f905cf39fa6d384e77d", "0x231561bb687a5aa8aaf7e1c595bf155ad2d93e0922dab327fb9c1f27877210ed", "0x00f8d4030eac93ec6da79f6304cda6b04be32f036e80b42addaa351e7007913d", "0x2f49ddf565cb5324e9d3dd48bb57022ccb7b479be123e003de3f2cca6cdc80d2", "0x1dfee8987696c32de30440637725865531f9d7c3d76fee9811656a435bf0684e", "0x058217bdeb3065546892cceae218f7fdf3a43c2383ceef12387fc29d4dc74380", "0x05f842392a9a07d4c7d70f1ca1f72b9e3b5cf5633e199ebf54ba2423560d4f55", "0x188b0807b79105dcbd5c36ecc676c2fee603aea072b7712f2ebb69b9d1752e4b", "0x1103f6ea09cae621ec6f695e07929a36037c52efcbb493f10af13cdb0055548e", "0x1a40f8ba3192f0c929248b4aed619c81a22f8a0bf03745d15372be437b0fc08c", "0x008823b7625f84a5f5c9a8891cbf3dc7a3477da215200ba420e51821645f9d2f", "0x052a494af3ecdef5031d87994f264905d25fc6c6267b6f7de4435bc6161f3f32", "0x0fc8cd19ee31da018d0c6c59856e6ba369a5429231113dff4c8e53d50f1577be", "0x0bece88708ff447f261035600d99b11389aa0725b446c9e8d54a02e8ff2de3c0", "0x2bc2fc2f7c93245f1f5ed0ab6c4cdfb771544f8dfeca02250d9ca1bf6dc2ef92", "0x22b16f8325f2a2c69907af42680101e4f86de80d901bb6970310dfa1bf805fd6", "0x2782823d5188cf5d414c280cfd8dec816ae7ff36c0fdacd870ae6449f25a6cb6", "0x12da3c90acc4189b45b06a1f741598dfb2d9c24f459120debece5c5fe23db5bf", "0x2d81a5f9fa4173f58f754643481d08089726bac7bb7078f4111b55106b5adf0b", "0x286dbc990140046e1e2637885d4d2904875f0afa51219ab2b758fc32cb600c6f", "0x20e7a3674a066766d04226362e73219b54ca6a4258260375e8397f8fc115197d", "0x2289f3227f4ceebae0c1dc514de4c642f15314eae937b39a3c3c12476913fcdf", "0x213251e30a761990f27fa1970426f9d44a093dd04524016706a1180753aa4616", "0x091655612a93f5be3cd31db248c7b627a2df2aafa1ef69f7f27659c13f3019ee", "0x1af60faf34b05755f1941195b02e6463bb42df76c12b10f14f8b162506b8d5e9", "0x21b41d0effd2b0440c0d3b70123b7731903bfb46db3c7a23acff016eaf107fd8", "0x16a0876c96d45b59dde82c8f1e1022c5cad31638c4e38cece5b7a56c408d84b4", "0x185329f9e4aa85d49d42a62ab4f641d62c5fdede17015a7d79f3164b690f6407", "0x123f208db0c4ef54956335d16ae7152534d2d8ba793d601f15524969639ea3e1", "0x1aa5654278de22380da76be7885381c1784c80ef4f4bb032acd13b09739c263a", "0x0955b8a1677a5b6310ad8e0492e82d1044a14c78ca87d1e30e0d7f3316ea6ce8", "0x0c7fefd4edd4ba7d92756b5173928904d18f9b6fe995a575f0e6a6e88f7c0e58", "0x116d188997eec6a1e2af2aec8a5db1ebc5cfa588fbe5490f08ded1503ecafb06", "0x258d2eed2c2de759f0b394b6a3ccd2d96e28b10018f3e7f45393ac8ffe947ea6", "0x229de8c2965aeac1aa7edb78fbfb5d7fb12e7fd7ffe6b9b3afb5e888349a6c44", "0x0b1fb0feafe98d6cf6372170d4c595adda71702c0e9d41c6ca1a03d7518f83ab", "0x285a05be9b2dfd8af2d0f28f2e32f5cce6b153d880d8acf6906780ca636c4cbb", "0x1d8240e9902394edee2b76099db03d74dff9185434f3a4e4fe8575969ce4f295", "0x2160be8233ce1b0b331989349ec4bd9b12486448510831e6414678b312d57f93", "0x2929b839d44bd2b3fc5bf2cc815ee7910db996cd5b5dff426c8f18a5adab52fe", "0x07d0d43c3f633701e5f0dead5516e94b91f97725e46982d199de03345920ec08", "0x0b99c27daff90cc053b37132622fddc5fd52bcebac1270b1cce378a7f02393ef", "0x2e952dfcc924c08102cca7e9565eedfece78965083b853ac1f4128c7f3d78691", "0x2190b77f963391066d6d26f3d74620ec35e501376b5299cd3f7e9c23b55cca5f", "0x05be919c52d2f1dc0d0b0d161f7ba7195510208aaebb5dceb0815f2a91168652", "0x0b4e4b3ca8aa834622cbfffb76e6f30f9df997dcbf93df22a7becc8ff9a0672f", "0x1620522a88c3b531c45d51e5363f94f9333582e5f6ee1c3cb76408d116144fd4", "0x0f442ea26883f8e188715f5841a690cb2b38e479d8ad7074e893ef19e3c7390a", "0x1a855bfbe80a7886ad81ddf0e7bedd80c1e0e4d1bb03130e03035d53b59ba710", "0x06a93868612233e3d6098de0b8126649036cc14b1ce3c7b19149a17caa20b66d", "0x0671424962e923da926612e9c0661665c4a67c524267c45a83dee528130d4c44", "0x0b119799f6ee67e2775cd4a71a8c5d455b82426e00ae6cecea32b5f4483b6d45", "0x26d468d55dc31cd5ea1416dca0f7ea5190642b77cafa7741f1233213796c165b", "0x276fcfe17ef821818010494be0aed24abc1a41eaca531c7f5d2f7129eae80325", "0x238d40c836db7215bea1455cc92b6d73f5100568d71a6d1e81abefc18c21e93b", "0x064c4fd1c50ef587dfc7dcaccd4ab7ad5c7cdb0230cc8e0e34d76ce399fb49b9", "0x03718669f16fe30adc38474a75406af29431ecb57f3db1ba7b66997b07b2a425", "0x19f104f90bbc03762d621a274a325c49f5073fc50c47db885e9456662421098f", "0x2486c93effa24890bea4ef9ae6cb9b8f65fd7591bd84d535b760229c0ce27ba7", "0x29ef7d3ea32d9632269fb022937c78a91d7bcaa063a818c5924b7b92d01ecbf5", "0x26d91e7cce1d8deeabc8d7c549cbb1beff0c152cb8819e8684cf20504a0252f7", "0x0248d08993b5ebb254ec885af2a38d3e415c4ad154eb53616b9b09c3934ad167", "0x20ae46ea2b701d379bca7431dcd231d5a0538a7df6d25dfde9ccd7dd02518db0", "0x0a484d6f4b86578d49193e5c0248680b9614950d8e391f527df0f478ec51db0c", "0x06717f5b869d2656c2b35c01e28c56972b04bf97eca77613e5b8ca92bcf84f3e", "0x03783c713038e54892dd2a76fccf0119a329d633ac533e811e511817c4c4a350", "0x0f13bbfec1c7fa9b9412355719d79deb7376afde0da0e70e2cb31f752e4f9d34", "0x251adccce5317c9893770f1694a37887cfeb26f1faacf9bfff6caec93a6182a0", "0x0f825a06fc69017ca9e572c732e7aa8595be6f6caaa1fdc983b9af1284f63dbf", "0x0a3cf2fb30ad2c7358975d96ffb895de8fdcd61f74ebb24d3f1cd6d251eba933", "0x0251b2e061b12c56019ec04c54d7446c13bbd7df46d1fd9123d6f91b9bf77a42", "0x2951702dfa126f50ba6d0463be4ca34e12ec8de2818075fb043ca471bcc2d379", "0x182c9f08809a2953e6465ccd361b57ca28a529bb951a355643b7089eab715698", "0x0dea1f640e09dcd69fb450088cdb061df4630db6292f1d6085c11d5ae6b6f850", "0x157410ebe0e8a0c81ec70253bc16022ddabcce7070c509e78aa1bb6f49e17c6d", "0x117b09b34738397c6163ef647d60969d6f797cfe1f4b4a55b59490aa6ff558ab", "0x15737e5a5b31340f4aec578a73d86e4da61cbd4d1a54bb5fb9fac3678a762fe7", "0x196b0672513f279f5db200d1264c03c1ec5f0be000255a3d256edc3eb713f115", "0x0bbdce038ba792300cdb18e689d2e0678a095e69e10a3a56bb6f2b18c076f698", "0x08e4fb5e144e2d867c55ccb2cc02c666060be0ebc3f6faa98b40974a53dcdac6", "0x254cc53ae8aedc8323b546a40516f9ad27a2ac1afef9dae8bda7d56a2d6baa68", "0x1a2c40f1984dd2338de7281020ad784dfd936ca376a8bf3491ca61cb00287204", "0x0b02a14f5ed5fbe30f98b6bbee9ba25f3794994280c633b7dc03a3a9bf532100", "0x15228b44db9915e56aef3fd0e965f2bd0581663dcdc77e5b6a9869480744160e", "0x24ef8fa23231f34c98b1e19c0e2b2d2532ea1048f0a45c3ec605cca741766317", "0x25cd05a9267e21e2d0b57f22fc07ca332738a6e94fde2ec72f766b7bdd4566ac", "0x0ceea6b6d86dde8d6313f7d6e5199ed23a6636984c8bae0113adad98acf71272", "0x2263c0701b49306df1d77f6f1a14726d2b6ef465bde4b950492ea402f9014657", "0x2fb656f4df02841248f98a4630369337e443d1816e16a3c1f084c38f005ee10e", "0x0e6f9efeb418fa0b4016757e12e6414760bcd4598e641d894aa245c6f3a96619", "0x02496c73995124ae0044151bb698f5765f8272f388d7b512ea9436e2cdbb8314", "0x0df3c49bc65b7087becb1940994f1cdcebb16f4f21121a3f662679e361bd695f", "0x02343f6b80186e6caea2ad4df26c37628aaff7131761a180f7ae28b9fbb4b312", "0x276b8652e6133ec164810dafbaa40ce8fc3a30f78266d8e7c61b2fb0be8546e7", "0x2bf09a235c89febe7e56f002df7b004214bf00da1194018467909ead95ea85fd", "0x1ef9064c20f83e8c7581b609ac572bdcf4b6e1fb368cabc0dbff08ad95b73e73", "0x210b418e297eee3da4e80b3c937e1906f5b0f55dac023e27646bc1dcb8cf8e83", "0x2ca9e6ee5998c2ad06753624075de0771a7d019e89a6d6f76aff5993665beebd", "0x174ae2a5db32dca4d56226575f1e5c4fb0ffea7ee7764b1f51ddc7f5256c86a0", "0x1862319cee8de3ee4d638995f693f324546a5235d22952cdef52040d8bbd9025", "0x1221906c99798cdeb66c50f140b8b579e032128cce09179bb263390ecaf9cd49", "0x084dd25a4d141a723b29c69cde8e0bbb53d031926fb0d14d09137e3f8a122f1f", "0x29341ad04e73a6e69d3ac654d4450a386ed2c7947b01769ed324d6e331381411", "0x1aab0dc965161f77eef8d0fb4e72e46bfdf6e3d718eac4e5cea176339993dc08", "0x1852c126862b742ffe3e568fe27ace0b675fd5df36155a66099985c700d26984", "0x026eabee5c1a5c1b0fbe224177ac7a16e8f0d7b48c4efb62eed96a931202f0c4", "0x268b607a75498aa86a1eb65db5fa72a54b41c3e8ed9ca5a707d76113bcdaa492", "0x10a5051f064fedc0bfc0ec7b6be56addf94d1077ddbf456a180f3a9bd5029beb", "0x2c27938ce4e1e0f98d5e53359bceca5a9c22066cb3dd0f765471dd85ff641214", "0x060390a2034599638ed0dbc2903cecdf490f1c20d605f62b7f95bafbd367a3ff", "0x2109e7dc4aaf6cb2a13ff62bc3cbd0ebcd3ebdf022638f5e480d010beffec7cb", "0x0106959e10ce6819bdaf48cd5c19432d35ac8a167282b44cb0a6703eebe3ed2c", "0x276acf8bce26b9321591bc588392605b50df7f766be90c8317a19ee93c8dcb40", "0x2625cb1be09ff63c5e0340798d10b774c04321d22340e5ee8d2cc4aea3dc924b", "0x175223b56bbc74a46feb991a4fc55f02fad1ac9bafc75c76ca3db3a69ddcff22", "0x22cd6e17bd1426b13e742213606f1558d5619bae25fec69be0df6c31ea6b9970", "0x033307917f2f058ae6295611e36036aabdb91a0fb9f3a4bad3e6afdf283b1836", "0x0c74e27d536a6274a8ab91df7afb9d4ebf944c68157c4135a81993632ba4114b", "0x11b2212a08cb877ccb3b4a5639ce7825ef74875fb213f0761369ca5d87a9a809", "0x2c8c8d42080e2e9615d4c8dc0f20c3c3005dceb1697d9623ebceeb638ba6eef8", "0x0d61124d06cd75baa08d463b9a3a3a1cd1fa3bf6ca508399111e206dc19f7be5", "0x18a8cce9e7aa6df3d5eb35406b0cd46b87e4b08f8fdc991e91fb5924a07340c0", "0x01453226c75742b840fb71f151e3e5346648b9a07fc10aac31485d7c0f071a80", "0x0eb05f52067935d0b5517addb97ad9134f66b921c80fbe68548e0c08cfb8e60d", "0x17883a0fafa37d03fbe3da640fdcdf02fea822bcf612d7e82e0217d38db4020a", "0x07516cbb3f67dbbc050bd2ec21b18bb9d0ea9971770595a85c4863633b0e19c7", "0x1f86ef9471443b26a59da67e1c2a223e457baeeaff2ae9f0090c550c30bfe2d3", "0x0b84ec6355cbfb43ab69709d4fed906685f02613d9b48612f38cde33c69e9f03", "0x1ac016b40d30d26723c5bdb4e9d2fc71a1b9ef8065cd08ccef66ca98ce789730", "0x10b2fa89de4545606176a004568cea6c3381be9612e83815467cc4bfaeb585f1", "0x00bf5674a5ea1ce6fd4cb75ce7f26710e510639b34354e53ca2e6631b404d5e8", "0x2fe1439993bd33783ba21c5ec1f28dab97147a3e8664866dd04668e04c0137b8", "0x2f403be7d38ca7336768a3a9c7f656692853628f4378a74a52df4896fdcc4034", "0x0e1c171baa0ba3e825d242d1d70454b833c3e23fe89e7e223d48decd8817db94", "0x172fc861c822a0459d27e0783fc603409f835913f73b71d51ff31a62f6e4fb87", "0x1bb9e2454a33c3c08cbe31dd75b33d9d6642cd9b0a978c0251f5b91f0823523c", "0x29293f8422d4f96e3dc694f4d99846ccd6cd5b4a78662625efc72034308d4c3a", "0x29b378f2446a9a31f37d475c830690532994edb64baa43794e13f1d9c6949d13", "0x018a82c74bad8aac7b761794760e090acf55a8f95556f2aacfc20fd98c19616e", "0x2c1fc04ded87e37d9f1c639ced48dd8c9e46618cf49218637db54755921b1644", "0x29ea0e1e015e5caeb3ff1ce6d2772502e7778bcfa3dc0377cad7d5efe674b2be", "0x2a1753c6a4c7c43716ce3371f140a65903d228d5939dea928ec37968610f3349", "0x02d94aa3bb5498d0d77ef1efc5950519b1029350d4746394aa68e8526c09e1df", "0x08f269084ee637620a11780eabd8e8f96c2b04b8db6027ee88a7be850485dbf0", "0x03abf553fb5a4b9d5093d3b5f898a111a4261c2419f3e055060dfb45d82e7db2", "0x1b9d84d189c5a22bc9be2926623361fc6be7c714d079536427fc7a70bfbcbbb0", "0x23afc200414f23e7496b4046294db690a60bcf5cb72c41a61ec7351365c885c1", "0x26a5ce6ea63bfd9e6e1a37318938d4dda0dcd5fe9d6c2acf1abdd27ce1453799", "0x227fc0412f71fbe4902252237859f0b8a694990316918ad670c3454ef255f9ce", "0x0c6b448a7deae48afbfcf34cb758d847568f75d7249dea4da09a90f96c672bec", "0x218c92e39e62dfc119c4cb2ded9512dc217a9907a9a8b0edb96a275169f8e9d9", "0x106bf92a017c308f0f726df3d0515aa6feec1c18020c380333cf76c25016bba5", "0x1f283fea17244f043b7c35ea1e71931649cf7000692546ac543a65b18ca3adaa", "0x1fc5f58e5a06e1c70ebf3fd2a2c8dffe7bdf2c2c179b817fc1f41d1a26ee7dae", "0x22d0d77f0ae4cd9396cfcd8a27a246303cec70fedd54beef6dd86c91938fd560", "0x1ce511212d8688537a5e039957276e9935b3e8d5bd47045c6d5835108eec5f0d", "0x1c83ca5df6ac477ae74236c49f9309ddf52a4290f9c7c1d3092c113012d1c3f6", "0x2e72da0e1d1d1cacc95f8a913d87a10688af0ad11294b350cee6d128a97442ee", "0x0455ee8e7552be76b8e7c2597d97871d6102b49eb2cf1ddb6f681b7e05b0d0fc", "0x107863daf4cac318dd06ab14f132159794902e3b8da171b8848d3eda04e6c449", "0x0132abaf80e33ac48982da9d5d2fe91191f17f1910fbdc06731717b6bc63a9d8", "0x134e4567b290ed94c47b163fa304ac8d14f00f9e26375f6299a846770f4aac21", "0x0e6c1008a6d6cf304a1dd9e6194a360c1e9aa6d765a2e5328a1be2b5235164fb", "0x2f8dbc0f86cd3308a3d598a9343d638a3c2f56e9736e91f0f77d508bfd3828a2", "0x1eeda9a9c6d8a03c3cd9efd1bea7e46840d6c70d7fa82e085bae67347e5da7d1", "0x1e2bdca3589d22bc09315622837feb89557205a87714cd8011fb26dba1ae0fc4", "0x1feb959112175ba6f2abd9d6051f3aff32a9c4da459fc5f3baa166b7e01204a5", "0x1b6a4bf2fb32031b9837654b1fba8aca04b6472a91d05f96320bb5bdd3add66f", "0x0bc2076260db797f04ef2fa60c6cf5d014d897d3202be009fc5d8ea60dc18cbc", "0x039a5ff324caa9dcd65b8c44bdd1d423b6c02e4050ad8ae931ade6dbb2273cc5", "0x1e50c1f7a5bd8a96614ea267e0c22039cb4708670638b16e4c4e6b4ba088ff35", "0x24315140db1e03d34a9e890d85fb3786861adf648212141be6f031edd51b8c0a", "0x012cb6f35a18d9485c72a073c4f9037dd664d98d011e892bfa06df8bea2bb5dd", "0x149a528e7303119ce066de9da4177803d774e3f1b2c6dabe9edffb3951481615", "0x00990738ffecc6f8dc0e6b5269bd1dde74c6f6afd47779a119d8c963d5b65d33", "0x15b319e4f51ac8931ede6542ff983cb2ed3bf30772e681bade4cbd64659fc741", "0x1553343f95b1ff226a6d8532af3e489d305a08e8d5c532787d351a5c30b426f0", "0x124d40c154d4454d10e254fce373986e8a2ca1b43dd221b55a8fb8d19c5a2314", "0x08632672fa4236aca43f4dfea0508cb6d3895dbfef58c5f80f65ea0f48c17a03", "0x18ed4202e081efeb7107021aecb706f76f7466e5e36101fd92674c690bda36a9", "0x22b62d63e4daa7c6674dc97f43d7ec63fa9cfe047ead601eba36fd375d840091", "0x1f76ba188448c2dc50cfe2ab65caa6462866c5e31bca72d12cd7dc1be7ec16d5", "0x259b4968f9e4c3288590bb521b2bef5f3bb1b30a728acd45627eba45d73260dd", "0x1a1af2418b1ecd4ebad24c5a54adccd009072a2b7edbac04a0803870fcdf21d1", "0x13c488efb576d98b2f58c265a0d76d450c74c0105d225a6b111808cfcf13e8f7", "0x2e0278933d94b8434c52a364e5aa39d4c02e268295819bb0a4c999b15fe36beb", "0x26fc6a0f560e5781202e95e5866e679ea3aa4a76cd8bd4fe67550bb4e6c1db59", "0x2d7ce0354e6a457ed5d3621afb91732d02e5c99248786be8ba0c51da68fe9488", "0x2de1db6dab7e00b81838596cce66e8bb0aa26989a69386ce5061560f2693cfd7", "0x2e306809073d4a00babe836e6fe48eea8e4fa13b9932c928641fabad4944f587", "0x21b9bc5ba7bde0787a20a8aa9ef9a17d56ae2afc1d7bd7a2ada77506d16b66f7", "0x037e12238029fbbd0ef48a32577480a4d9f663ae39a0e3b6c6ad0f8c3914c711", "0x062340efa1a3061910fec854ff5fa9037ddd749d9ffbd5a6280e9498bb7b9e9c", "0x28e2ec6752d07e64574e4e92409b417686f725127f1564d1646c4ff44beb9dec", "0x1081db39ef41961aac8cfdafb8c4785a847ca3348a9b6eaf5a95e0ff4f3c4541", "0x0ac03c48add6876ea8b8475ce16d306f80aea6229d08b3c986662fbbb7a22370", "0x09941366c57343c57df860782d53fe8adc2a75da2d0f174364a055aa7ea07d8e", "0x0dc938da60ab9182c7121c8aa04c1d955c1f729b7ea6bbd8c37ba58b74bb4dce", "0x07426bd12d4769e174840d4a3a64b40541e85ed86dd21ff5d71be7d7eba930eb", "0x2ca34511539337cf05471caa3ac6604ef0705b3d2e4874db17877f6a3a2d666b", "0x23db1c118022fca90dfc9a2abf1186aac09c22372b5a6814835458d33c1833a9", "0x282b59962607ed3c33a9f9a36899a24920768e679c43b319c781acc020c68558", "0x1cec719a4e8fdb8383d544623cfb2ecf5c087ade03a12cc202060ddf23baa05e", "0x279d1490e81ceeb73bcce66e0a6dd98443b711ab1317a31ea2c17718c534ea41", "0x168da84ebb303fa935e70e85321b10b67607392561e6ffba3364f888d2a715a5", "0x164c7be1367b220daa33b5f8f637e9200c43c9223fd71c41fb9830287caf3502", "0x1c09e997ba2bd1625852c50e1d6abebb6ec6c61b20d1cc91b015084942162bcf", "0x2ec385a2ef59f594167112b1491d5877520634bb30d00dc682d089ee458336c5", "0x0cfa9efe4507963806d38e2464287368238b2f90e13ae6e520ec5f1e5da1ae83", "0x22f8fee0b3132a953bb0f4d4acc621b5a534403d922f9bf5a22e512cc0c103b9", "0x14473dd3650a7bf140743b43c5832193823e2506c60db669d71c63fc7cbb42be", "0x16f91395a42f68a912148920e5b9c30b536e84f15ca7b509e115e33a08df45c6", "0x0d9f494ee675c250cbdff49cbd786036d899117513b160c0271c8ba6faf30da4", "0x0bf36d4c6fff4101d84dd07cf6d0a9c9e5ab346d5f14c9185af3db3e13d697fa", "0x23452880a7cb59d393e5980266f1e752c686b57a87f041f75ef1318932577905", "0x305f2a14df1590baa4d62da4c168423625e3e721f20c0c21a0fb45ceca2f57f6", "0x1947f0175a8a9f3be490f60388486781533ac0bff5b8730a08b435f8a3407acd", "0x2de417a960b566abcf86d9abf49ad41144c3b6110deb4f47ea362257345e748b", "0x13b887c77592f15dae0d20fa25330e19201d5572df244b98dc2b03bc0683bea3", "0x097b35dd0b26e46805e16fd0490ce0560916e49ef1ebca21dabb4abf2c445370", "0x237a037ad96a360aed5937d3cce38ed91e58917b143f17233bc2d75456dd4151", "0x18cdc0365a8dfabcfb0494270af4822c29a6d9124e8c190a9c0b4826774adb46", "0x163428bf966085965901613a1cded9f28d62a74d001e6684bc3f6a47a8b3bf6b", "0x1dae0d15fa1822a5e59b940d81b3af27a5bd3f7dd508167ea6065b6d49c332df", "0x02add9c74cf22d1e4927fac6754b5cbcc172d4adc75ac1fec05ff8fca0d977dd", "0x1edb562e5b4376324a0b647b90690fe3364078dc212de0ad36f5fb26d14f67df", "0x301dda97e290a7a01ec100e59b59d78fe4021973af1d9e7d101231ed8fe9a1f7", "0x170a115e7fb0e76a4edb05ac080dd24ddb5c27c0c94b3b36ef5e6ec54eb98da1", "0x2976381557759f24da99faee2d6c5059bee939a66fb321b9fb2a609e4d47e9f4", "0x0858c7c6f9fec77cc7b6c2a5df2dd6312140713f97cc7c8503b4d7c6c81effa6", "0x12557c612c0f7718ec112701d8057a1dc301ccc30b2c8475a46bcad3514d39a6", "0x1ab063ffdffa216a5bce2900f37d819f2d75e6f00c67ce024ba3f832de64dcb6", "0x28493d04672068c6a6e94f79cb1af1d4152b823546363589499c0a141bd2a580", "0x023ef9e5d4688380ddf2c16c0d08a831237ee58775797c67d95c6e0d8d8af345", "0x1093325100722f8836caf30bee53c0ef14eb18410bf915570b327ffd9464a5c1", "0x1705479cf3bdbbaf78d4f103d38eb47413c9335478003810893f35259dde8d55", "0x00896c2b79cfdda5eb7f6f9ede3ab477ceee2b38b068174f15a3b37bb8b348e6", "0x149f13bc3e4e2b0515b378a2747dfba90f7d5c7731e59e9f36bde3f04eb50cb2", "0x2e14222448be50c068ecfebf70944b593540c7295ca0e47f2bb7f63199b8712e", "0x1e22c0396024ba3f6db181ac92b229a5187187033b138fb27a1cf7f6d87050d3", "0x2c5a1e453406fcda5d58614353f0a29842fb54af88ec4b73f7778563e05e07c6", "0x2d08dae6f1fb7e0250a660e71b1cd31853c227b188d87559216af1c465d8abee", "0x215533a77776226664118a8081d87e212a1250766139ea38c769f93ca2b4d7b3", "0x1cbbbb26f991a721c7bdf835ec9d1ee0c074092fcdbf0079e4df3ac287292edd", "0x08f57bdc3c7c95681f005500427ad5399259f69104c22206aec2f99122924e8e", "0x1b45938c7b84f0176f33520321500d1297cf97aa6699664fdb8ccd75ed39912e", "0x2aeb209044868ca84487b7916e6b4033ee6cbef726e269d0e916ac2cfd3fbade", "0x27635bd2ae7e0cacaff0b836596607a792403dba10ac3706c9e11977403a3eb2", "0x22e593b7a67935027938149bf16fce07fe9e726055fc0cdd07e7eaa17fe57301", "0x1795962bb5100236a183de49169d6b83a427edebd23711b89694da83cbd087c7", "0x0077fc8d7cd9adbc283c25321bf37598cdf28827ed35707cf4887fce4707c437", "0x0ae5b494d166f6a32442d1d0bd59b65ecb7ad8f6571b77486a45ecd827dd1280", "0x2924229b6d648184fe63719ada7041e69272cdfe895455d77f01634a8b892c87", "0x051e840903ddabdbf22103674933685142981c0852a6ca6af0c8d15b068716d5", "0x0fc508b7e620bb6c47a85971bfcbe28df62619c5309685d0a0a6adf3c8bf2f84", "0x19f7621bbd659b27d189bb32010b95fc2bd877392e2b56afb558ac5fc0f0f22c", "0x303e98ee35bfcad292680a7956e0b932f7c572c0a131adec5006d8f298b721bb", "0x1a78253e57f825b0cbc742d87923b27c51f4a531d1235a8a901d997e31b2ea07", "0x15e220939ba64b3a3ab29debf3b0884a4c4385a74d845e20e3449e7fa2f39320", "0x160486b6e621dfa0e90123a4e43fd69221ec1b0ec73d196476b504bccd290b94", "0x2beeb42404db8ab5e279624bacdb614b21b5ae386f2c2a34a798feca76311006", "0x24b407500416ffb0459b1db9740670bdb8be8adbb4fd5af8fe9c4b5ec021f0e1", "0x07f5fdae988285c49bcffff23fc1123baeb103bffc97df6839a0c3506b7c042b", "0x2ce9b5a08decce4b853e67d28af6eb4c755c7bee8190d7806af042759a399503", "0x1daadc911c3ec3b8e5f42cb123017f1fbf16e4aa2e32de94b018128845bfd022", "0x1ff80b169617b7ee5aaefbee67aa64bd64dd14ed8edae148f99a16e3f2205651", "0x2aff68cd38d188b8ab85c008f300c50882498b5068d3cd3b82b5ae023bfc6ee9", "0x114d0b3f54f14de45cc4db5a1feb1c4750ea0247d8f24e8f6f472d92eb7086df", "0x12b607578c2d349b69e0f756850dcc21258f85ae8d8caa8a3a021cf8d02abb9c", "0x14c692ebcd07fcef55092bbe950589f47dfec7ec4f3a42944b0442690795a054", "0x2229dbdfb92ae7eb8344eb56d746d07067637d75ffa439edb3d75a8b08199f20", "0x16f4648ac47c197fc572f58351e4b00773ad9a2bcad04ac0f873a556b6ecf6be", "0x12d90d55c8d3ec184dd04f5c6aeb639bea70a7e3d013fcb17437eba662122ff6", "0x04e2c49756b8b5ac26af9d939411caf87f15626ec4436deebc7dc0749045216f", "0x21917d723a33db266b07f81948955c45dd507857e9e5981831d35c56dbd0bb36", "0x0d13b46aa1b41168f81b4d236512268c23e7bfc4108948b5e9f3a5f5ee0c2661", "0x17bd731275d602d17ca1b8ec47cb12df1a4bcbb9e3b02a26f86a08b2eef1fb70", "0x0240ee601a6823ec698a4bc774e6dafc2f3d1cec2c5c89f5bd13629bdc692745", "0x2663ff9d0eaa6e910593d11022d3c77b877a3bed8d007f6fc207a8ad75bf252c", "0x02c45b53fa72d7a0d7a244ab3ab0b41fc40e9cc38cbbe294e8c84a72c7c3fbe7", "0x10bb8a7531ab05d22872880f96834d23a31937623df3fd2953885abddd1222b7", "0x2222950c8a1ccc1c2122a353d1482744d42e61254dd653bd25ae69d2ba79b031", "0x2c3d3eb720537d2dde7bfb8ef6265d26c9d6d918e37f2e97030fbd6b04457db4", "0x0539a696e15198169314296de56dc874312e19e5b3518ef5d50a72cf98a30895", "0x25e2a5fe1f155a2eeeaf50d01664f96f7d6772b108ac5c4cbfa5ef5a1fcd5ad1", "0x2f5d3e87df6904abd454efca9cc30f154164220c9e3fef27e1812e0870b90fc5", "0x0dee20e4731c0e7542e4e543e8be6c2ede71d6eaa821596e4fc9e68e89dc300e", "0x061442c13b9d1fb339615cd8afc0bc9e11be741cbfcbd2b3a92194034e9d2e54", "0x23a56185e12d6230a0ebaf7cd4a01cd18410d3d2ca991f79af5716fe22993123", "0x03344b7b9adb15a3b7c3d64fe1eec35342202ee3c4a36db2d49e81e5174235bc", "0x284b751ed61d484ba2b5940a1a1ee1ec536d392b113d06db4995b08ab661e675", "0x1701ad26a42de77f4d58a4c8191f9d4730309c5f4bcd0c6dc3a0aab396340820", "0x27cadda519a8370108d7aa6e9102f6b29e8fa2386cc0296593f2f63449ff3d4b", "0x2626d61cb110bb03b32712d59f0e3b1b2f5b9059eb994807b267e4ad261ed696", "0x1cf3330897c54f25f15f5e8b8da57bed0865f3fa841ec48441a9f0457915138e", "0x01b5bcce9d699e55a490d3d86e8c92c83a7256a7feb9fd8af6c84d68e148f64e", "0x2a175105d15ba3fecf5bcb2746b3c81fc8ca468d1d4aa999fbbaa8d8112026ef", "0x20a2382295eca0a61c888cef81115ae0637d7ec792d30eca6a0f298a77f9b26b", "0x051549bb9adbce26e4b218b29ca79e221cb691c9ab5b2786239ef8126bad2e51", "0x081ca5349e64d60bca080bfc534c8b30b18bea4309cf02f44c71185fe688e079", "0x285a400d61a5cbd6ca7baa7c3c9aca5503b17fd702e00420bce7332382c0b82d", "0x04e1bf8c955bc3c8708262e3ff148bea268adb662ac2459479e6af2e73440b21", "0x0bbe19ac4f5c67e9eec32c9e6b7dd7bc8059c91f501b2f26a92b30bc268b0b4b", "0x2724ac58e1ea4df19e6644b8e7b7665d9248d34ffbbf4c4ca8934c608d2e8f6a", "0x0446788d95426afea830d1a6ca8d2d085bfb4330cb2514dffd60a9ab70fff709", "0x0e1ecf26c286c86abd910c2b37ac40bfc0e65cb2914269a6a6aaec5cdff5758f", "0x29a267dc9f3d12d601a849148a2449103f25713083b1611c386d7d0c05ea4ba3", "0x1dc34a60e783b5daf42125586ea2a5b49dc2cbeb9d2b90ba881c34ceb99d2d3b", "0x2b9fce58534bf4a486c3220f0ff9026f578ca9c435d8321024d10eec82be4e5b", "0x2fd9c97f01054fe61ca5e07e3681c1dd9a9d1f8ba630dd24ca5a344c3d666d19", "0x004e6a7146c2ac015037f0a82c1bc746bfb469cec9fee37f1b708239f433e647", "0x0f5beba2020afde73013b7efe0c1384762db8612dae058d0f849c7383c07943c", "0x1c5e1e6ef1be1aaf4b6e0d32d590dc5b249e1b1bbcf7d05d3e60c63e0a18667e", "0x095675c6e1e8f6daa8dd42060883a7e9795f1bf881095e98497d33fd5c8cfa79", "0x060093cc9e1f54f7bba74af718e19a10f033198c22d21f3ee80271258099dccc", "0x2c44a35ca8e24a9f5093ce1cb92c8d0a49c5337cc3601c44e4f12e044ace0dc1", "0x03e89623477c5f1365bba16ecb1a8a5a70e3d5c83d50f30715a4074343e68f68", "0x1925fd586e678334d1618a7563499f6b4d001cbf3afb202328435f2d49cf734a", "0x1a187d62deb639b820168e8b725a76c96e556a6e90304a1aca7f1971057719bb", "0x17238dde447d9bc6cab663957ff54c74b47d53bad425dc3bc11482ad4484aa0e", "0x2d7a0593a56bd337e7eae8a984181a77465891cb699d069efbbce87113570291", "0x278387c4eeee6ace12f06531a312b777895ecb43495bf90a740b5ff258a733af", "0x181ae209709983bd903f41b57eeea056849f4a86d3d79e12892a45250e01f478", "0x2867934ebe66c335663b038c9622b41cb6bf88402c049e91801d416d73441a68", "0x01651870d1a0d7d05a218d811e464fc4767e798061515e43be016c6672b4db55", "0x0f17095f8a2b21edd50126d275134f29cfb911a7846d5cf2da795be0c1a70024", "0x0f29ea40097b34f39d01cd889e6319731da77302171713e2990e838edcb51ce8", "0x034503418f27ccfbdc0ee2529112d5768087367386315b530a2d9a052b608901", "0x2da658aeea1db7b2066cc982a3a4a62fc22eea96a956b8c8d4f6b9f169bf34f6", "0x099891e8f2205b9edb734fb0bc6c8e14d4cf2eb7850a5496ffb44dacfbee6877", "0x22b28527a9e27d65b7d9d425f4b2f4d57bcdc390089d3ab210cf46373565b251", "0x24ac41c21e032f1205f48938a1ba892716ae8d4c7230864b86f3b75576d249fa", "0x0efde17c56189b5dc8dd3fc9d4796eefc7dd52347c0dd3ad06538c2cbccd8601", "0x01f321a1be55e4b41c5d5a9985d450f6c23a2db580cde1fd17df1ea16f393998", "0x1284635e8aa17e34bab161fc58a3e85ec269123593797a44622f6bc5b14a028a", "0x18403a5edf30cb8680f7eb86264aa0efc6422ea6f34efe55f9783bb6bccaaf5c", "0x29ad7c5e7c5ee93c961d4b670c2998047174bbfa7edcfe28b2b4d19f3c95d995", "0x2685b8dec7109c008c4eb559aef8b289648738087770d65a8a4f61d933309ce1", "0x06d1a1bca7522d697a93b448ac11d95972e2737c9f6da9789408ef4a701c03e0", "0x159f8629446b261b17f2bba98679cd215ff18a8e22a0addadcaa084ca728be2c", "0x2100c1605b40e1644c527571d1f2a268d17a89c1b0274fde3c1856768e134361", "0x14cd583763c5aaa5965a6cd810d3aa708ea1b01e865ad84926b6dd8a0c297f3a", "0x2f9afdf2575f844497ccf724cdc060155b29e2f452c95006bfe54d4402068272", "0x0b6ce3f06fc23b61e6949086a27891cb2132730d5d976c4d036c7e5aa960ecd2", "0x2096a4ace19cc7c0d94c97584f8bd1e1aa0f38a05ba444b158c0a4f33def65fa", "0x1742909d20f9f17efb5c6ce8b23f6b85f7db0e01111ad80e910da7387926bec3", "0x133c486c3be9d399176c89777872f6f65cc4bfa41a00b11a2b07db79541a4d9d", "0x060b5bc9b94f45495d6e3fad5ef7c20c1d304c3d0b5dbfe930c8ae22233fc358", "0x16c0f928676951faebb1a97f70dd86bb2439c4fadeb26028d69f33107949dcac", "0x0457f42dbda7cb38de3369bad13b68321762477158c3d9b2edc65731d2b0c43e", "0x05bc53f4bf388b5f477d5bf8c5de1e7f38ef0f94c775d737dfbcfe40a7fcca47", "0x20d057e30e2563d7dbc5d2641226c6f6000bcb549e7dcdb9b7df819ffd10bcdb", "0x16f0574e7c13b41c5ececc36f9590719c31f29435a736c33ad9ac1afb9287583", "0x1b9629d5678b18eca5f9c5244adbc287bf1b1a89468e549d1765835db5fdce7e", "0x27d80f156488fd903d07d2c64460dd644d47db5973d0c736d914e3fa60fdbb1e", "0x21197bb3fd8b66d8735019cdd7911cfceaba63b49dcd07910e48c993fe79d950", "0x28f5f49728da96532a66a2d377eb299de91cc1d78701d44a0a5a5cc67ddebf9e", "0x165bbce0d62d6841124276f53cb28883ac5e7ecc12d12514e2feb2e19b7913f5", "0x14937807a2d9d72d2234699c5f3b12f1b72e282b216fae910db56f68cada4bf7", "0x07142fc4901f0e214ec4c74f1685c35b0485516b7b827d75ea1b801e78f0445d", "0x2714d6a77ac0ac766c4da2cf468c59fcc7be39c93129b9d927c2abd6843bba53", "0x1d3110379d97c5ca70da7b048a8bc859587af977b5fbb83eaf0f951b1db2cc69", "0x122f9b480060c35e6b1b0bb0212291b0adbe2719c660eab107abd5e632e2b96e", "0x02815f76f3eeca94b8f2c42982cf182c937af5efbc802621c4ad9087603e5b5b", "0x228acef677466bbce8160bd59c938c5d3400c24a10d1a3cf145519ce1397904b", "0x2f6f0800c73e0b58c4e31639c1d98e57aa1d7b38f24198ddab4d3bdad8b1b1d2", "0x12dcb00b96e9729e3e440eeab56d23b49592c8d306826ee18efc8f7fb11fcd3d", "0x14c934fddb9e93c1b539ff3c72692317d0c365fd7a727f2b0d40e0442ee6cd82", "0x1f5b48fbb10cea0ef59ad9b12483ed7be5c601513b0ccce1cda3a80c45a80c62", "0x0768ab8aa5cd040e5ee5de5261110d22bbbd30c0b5d9ca3d2b075ab0b0de8f38", "0x2b84fe02c304f24fadc1edc0691f5bffb0501f7be8a381d099a67a9b7a870347", "0x1827d1191b15dcf51a200bd968f5ca9cd1f96c3fd79edd645406ca0cad18251c", "0x016950a06b92b5485ef759d0a43945c48231b0ffde5b2281ef87eca0180bfadd", "0x211297da4d70cf7d43f3ccd70a88c15224cf043f6faea68a74d6fe282a831607", "0x0a181217d1315fc3fecf5e801814b4060a742f8186893db95f39ff21721e4d85", "0x286058ed6304f12c9d7b6053e6d2279d34a0c187f029810854c809486d834444", "0x2cd0a562132678f5f840cda24da4d3060639841f53c603b1a7ad459f81ddf9a9", "0x21ce26e8e7c83045d9e79428cd905ad489dfbe75cac1fe58540867c86ef30135", "0x014addc67a9e923ff890ed279b6a29656b1145ee2a213e3c067578c17758c517", "0x0afab4df7911d1154f9b5b9f9d44d08c2ce948d0e92a06e3a466c1293618db80", "0x0756ddc46866ba28ae20299eac58c3d58d07c0c68f84fed9cbe306a0b9a00228", "0x15ea177d8bc1f254c3d290e72d8ebe6f9e5f672ec4fa5bb53bfeafbd30c41227", "0x12d41992accc7258671e1ea6167ebb3dc99fe6275c38f12fb7fcc994e3263025", "0x0570a07021e7f0c979ae47d42f9e3e371249eb2a583b7060822d834e689cf8ee", "0x21b6e9c4d6dc7798292e4900ac89f5ba6dddc3d27bbb50c45f7ef63f63e6d70a", "0x0bd7383dae8fd3f1af1696a4973bac5a34a01c54adc73f1aeffd5f31f01fc1f3", "0x11a866fd59e5ba1d90c39c5a4a415ec8303611f3450d52f0487aa7acc82dee9d", "0x2e330e0fb2955d8473ad9e1ba6233fdaf44fdd2fa188d4a4aed15c82979b33d0", "0x2ec61414765244f6b467c5f24e442c939c04c3811b99def64d52b1a4f17d9dab", "0x137a770838d8523704e776827dc372e55a90f20ba2dd51320c0ac783b023967b", "0x1d6ae5237bba6b6e32a89f30200200af5dcaf294019868e4e152b332765e0c86", "0x1f9037f9189a53ad5773c913e88ae7910fd020299ac394ee2e4d703b62fa69de", "0x2c6012259c33281c77d02c61bf2b4b3db3b33146557747746c9db1eabbb7cf7d", "0x1217df830ec5644575209a75abdc35fa606b271775f46edb7b7742b573d289eb", "0x1d39b721d48d3be9d3d5155c58c545485e71d003f19a9fc0c663fff57f8fcbd3", "0x144ef6b529a19c55c07e41d2859d3df72b0f756026d79f32eeb1dae57227c237", "0x2d266907d986d7e07303e2eb45b6620d01644cb8c381ea3d1738d7674728efd4", "0x1b31b63b9c97363652e64ce04b844efc6a63b122f164fd3d2f87d49d4fb0fe66", "0x1a8c452a31afdc62a25380d738c6cf4e5841c5620dab19410228094537ecf537", "0x0d9d810fc7da5931c7a4907976b7b77fb68ce7fa860435910ca346aaa8b2aca6", "0x15e7308841e82cb44ad00ba4aef9a4241004f8adf496819032375a10fecdc8a5", "0x2e17f718ae9f7897e72b481f0c779a84c41bfacedb13e09530a7d16fe355f765", "0x127e7ffc6ff8ba194c9422ed54f61b63e58c7ae6729280d1b6e1e881d4d02fa3", "0x0c730999ebdac150b6d5e7fa69d47f090863fab10d1949911a00156d328593f2", "0x111418254b9d16ef8d649c5a2fc4136ac5762191ef61f1ef46d35ef199f92a27", "0x00d0e3232f7be8a95699b9bd11508fe495e026daabb9efc935ee7c4b754bc846", "0x25130e977ec4f6beb4ae4dbf64f196f48d60f80bf80c8d5f228118383790c927", "0x0cbd22ca70300072163ec1b61ac95a45e959f6a6843d1f7a8fef6b5b290db4ca", "0x0c4e5c71b46e2663bc89392eb5775c7769c080551d2228d8103e545548b5812c", "0x0763b55731d105220bdbbed3e0f3d8dc921b4aba2d5bf2d5995317a39d43a3d1", "0x2e578b9c3527502c2cf248f9d25e724b252b1fea5d30b96840b142b066acf145", "0x2d7262bd89e73f64f7850e56ab934537f62cafaf511614bc8869875e33a69381", "0x233e5ef397661c73433fac490b72a375f31c6f6774dd69330033873c59a8db85", "0x2047881d542bbf974b9e9e9201453c82b5744730ee78d2fc226bf73dc724bfb8", "0x1392e09d8e3d6943778f5023ac577ed58573640dfa8cfb2261dee56f020cae02", "0x113ce5641e8c08401edbf8e40a58f7f198486c943d988b571265da3b80098b29", "0x06fe34aee96332c0dbaa756704f0acca6fd488b7a1a424bc50759ad66df3ecf6", "0x210eeda90df0688f37ee7f4db012fa7051daafd3d4e62a8a75aad73ca0c45808", "0x28f55311ca526e39e26e38e2065861f3cec1e628de46f4356441c8ecdb716178", "0x0fb3a80a4b528a8955142e642194ac4a64f5b345c86e0ccf70250016052d9532", "0x1f678a57a75775bbb3ca95f5dec0761bb71ab147df107fa75f43aaf930aea3a5", "0x073ee51a98aea4e9ce5ddef9961b599770e580dee5cb29161bf81c0aa74ba6c3", "0x1236c1a9259acec50a04f193506918990da1bcc9f23bafc774803adea417e9b6", "0x169ab9a5835557f518a17756db5575e9a8273112f54b1f63479d261aad5d780a", "0x223dc979f2833569c24130f59936a05daaa49b610c7af1df373c81ad41876f07", "0x2a7e07c42b264f8847508f7767fad20b7e85338a7cc7b8db9cf0615a614b2a7c", "0x2d374c9ec1482f4d7b0cf45b5f6ae5b09f9b4c5e0d3e428646822ffc583320b2", "0x17722a6c97af3611c31e2e9c8a7c1be2cf1b1e67920cc61925228bb6b1719fcc", "0x1bec21bd2b79bf0aab824d2c73439bf306979950789c762d3f246ef172665c6c", "0x1e4f5c4c15166b2b0d0f2e1243ce5e4d7df0e4086f1b6c13c24760c23b3d2b94", "0x1b266d6a03fe6a667e5bbbaed2407aca042fc65ff587a37459242e347da908ab", "0x0f82ebb4a3a2d9c061231d072974da7867464d45a092c369337d6f7f38f19d4f", "0x035f0f510df053ad98d957cd63f2c511acb8d63f8ee734d9b9cd9d3cda717c55", "0x239e2246410f90abaadc256d0ad649458d8a2f3a98b680bdc8648328706e59d0", "0x230a64e0e39531bab69e8378bec5ecd45dd04f7b91a264d4b852b17050a2fe7d", "0x201d93592e63dd8ed97eda0c1ef8f54ae33556e80ba51ec6c7d4ef5376da2669", "0x1bfe78c50d0b855aa69885e63537eecb984c18e2c9ffdf6f76a0d38cd8aa24a0", "0x3029708c7f3b5bafc5c0ddcd865d174e1b9ec7126ad730c124274c5627b8bfbe", "0x15a0692e27780cc154dcfb7bcca7d8c69d613ed71ac739e88ccad5311d419393", "0x158580885b4521fab1f59255bc74ac46dcbc6f67e4c5bbe3c0407f6e79f99663", "0x22e542709e136b18fda8d1c59e5df8a9efcf226296ce6b99f0c5a4c6d8c5bf53", "0x000984d184c20909b189b56d89e1fe31074b711b106813e31a430f9234845fc8", "0x260bb2c2f561af7b4bba3c23af14460e63fef91913779d6ab8780093af2e76c8", "0x0026e2ea372b49821ae56bbe19786ebf21c4326c188c47b70f47b2d120765cae", "0x0b6c4d9d36fac30339d96876a3040224baf38b59f96fd0aa02aea30ae1a2f4d5", "0x2cf5fc3d75ef42b5b3743bfabc21490bab9a8bd9d38286f8d6ec65b3c13753f3", "0x0846aa6aa21f18c74000f044143fa266ff1e7be7bdf600be16ce4fdc40ff1e62", "0x002f8d0ec8cf06bdb3e4c638733894d5d0a95204d648fbceada053acd9d3ba40", "0x1ce8ff9b74b79c4cea0bcdd58063f744db9630f3bf5963f1cbdd959f61126f87", "0x017d79111e385452e615c442c6ef083333a8a9e08628bbe1e84f4dee795dc1cd", "0x27d064dfb09c51348c9692abe74e7db7d899b06d63af1036ab74953c08b3c55c", "0x146874a68df33461692546b88bc079d85961ea462f0c4817e5121d74e2bf2f53", "0x052b6352c27d080dcf5d1e50b8770c1bf6cfde559b24e7dfdd17d373e9a94852", "0x1e7438946d79cd191bef0f79ab4f9604669367572252eb82cb0f3b19d4691159", "0x04709da1736faef43d616d59fe1010c92e91e1410e5dd9ac376efc7386702426", "0x28381d4a02a8a55fb06bb696c5e7ec20b36362f885b753b1ddc517db813f62fc", "0x160ecf90b4e27a49d3f40b2cbe9f0a6ad7fba8256b9a52fb4cbfff1507a47113", "0x030e521d91a1e1f8836f39b27733745fdf96d0867bbfd6ccaabcc94735a4704b", "0x2b66af33183aa4e53cfb665216f86b458fd3e909d9a3b03758bad9e44657c43a", "0x1e8516b0a2276dcba92d8b88d6fd8f9b04d61ab367a21058ca5bc8a752aabb53", "0x2b2172b73311ff4eebdf6b89af516d2ae0b8ab75b8adf8044eb7e20d511826b8", "0x064c2e0636845a3b22912c8baa94c39e14e7df6bb6d52cb8914521bab14371e6", "0x1bd4f8967e443e8efe5a18601bfed7d2bd47b34c60dff0ac964d6a4eb059b417", "0x04efc234a1736354be10620eadb0fafbf030092e0f16f539eda958274d543430", "0x2f42fc1f05d90dbce413777f74a353c57e8e6632d30e28aaebde88b878df46db", "0x0a3fdc6b2d46b0047731f5994f193b35fd23e6d4d4906d0622be96f29d9b5369", "0x0a9a381a6f2be5b71450314f356fcceeff031aa46a27c92ceced2cebb547d960", "0x2bf2a0d3ac00be9e5bc060a39053d85f4515d3ecc6ee6d9925c557eb3ffa487a", "0x149cea4acc9d345af9baa0b0aa9dbb3a275341487b4809a972d4ca49fd02cfa0", "0x2ead343a42b0ea570e1b35af19c93b0c25f50f1503cf4a637dbb9bcb58a0bf21", "0x1c12759c6c33c9cbf6ad891adb1cc2ef432de342518651f8b1577394d7527edf", "0x1619230feafc8101f6bc79b2c7204eb8a8b083a38c0d4bae74b31fcd353d879b", "0x2bdc4bb87fececa61ace09b0abe8b6dd75cfaf7ba591f02eeb5635808ecdb46e", "0x1d833c7135d27610e6972fdf005780ae41f0f98e36b6251978b6bf95d7df6a3d", "0x1ff7a459526e796396fcca196dd04f81ba3401fec67b6b6d83422e987782009d", "0x2440fbb4876cf36a771ae13594f31b06f3ba1748ccb06f3a16a97f94d8d66b28", "0x10e5d84b11ab864879fed067da2804f75c9a75273911cded8bb551cff3ebb3e6", "0x2e56c1830fe663703064d0f77480bc78b4f1d17939629fea2e9e39284f3f6262", "0x0a099027ca6f5c10087a2f4b38caddb366b98cc4dd0ea74f08819e75029f46f5", "0x1a97468d8d9b841a57dec26dd4f17af8602de695fc539d284ee78ff852949904", "0x0394a6458349a524f4995c77b6b7f9ce6455a2162f1374383187a751a908358d", "0x1216cf8f079a098852635296432f576a48c6dcdefaac70bd63c0f86d79de9591", "0x21c53a9ee1d8f71099fd185abe9772623343b8ba65e3f969ab665cc58c0a6003", "0x0d00e1ec990ebd5225c709906332ec218459d452a34560c000a4141fe92a1275", "0x079036df6b30a36b4f6a52cc876b33ec8cc13beed3e49d996bc31130e9942fd9", "0x07316c90d57097c21407e647c1290a42d5766d43a8f324733420cabdacc16580", "0x2caa85f3b8132001bb0fcf4114d84dba8d6ac61c96a21f3195d74803857085b3", "0x1a5b32a122696df0430fce233abfe21fcd11dd0731f969f95f2e9243fdd98df5", "0x1d46a76334170cf0b58ba0cdd75b31f83b3ad2bc79f7c8c930a5eacb0ba02e1a", "0x0d99bf048437a3cc71ea6998f890a532ab3a12024e230e8536d8a8bef084e956", "0x1afc2f4c8ba126e304c61726fec22341f447302a246b922e339cd87bf2def560", "0x1c9f11e8631cd4664da9bcf45bdec1d92ba81407e71321c727b14c4c53ff491c", "0x199268e3ac14b60c2a29efe18ea87ec108721eb881f6a49e9d6ba1a1dd94d3e0", "0x22c335d47bf6718031e83de42d47ab805bdce03e3eacb2ee8a5dd88caf5d5657", "0x1160bf99f0f4ec07b8ef2d15be5a3a8d1cfa192e406bbef5ed8dd5fb75db41b9", "0x2254cd32fd4087b71387dac3554cfc9de00194f7472fa41de674d8ca01cbf08c", "0x1919751c378a82506fe30958a36bd6e75ec673bf25d693d98033602e73d647e5", "0x27916b3e4a0c89922381ac94cdf88b3a4e82a539fcf5c899a5120a63cb4f768e", "0x268d3ff9e18dc9c373616a6a5a1b81c93ec208dc043414557310c749b77985c8", "0x21286d51d350476f7b3a2ae3ec046c13d5c911173de41ac1dc9e59bbba669f2c", "0x20fbf8d6843bac844b6cb6324f7054344125db54d5600a06fc9b720f2229941d", "0x1a2fb57443a3a3d7030aab81b256c8b9a84da724036a003d435ebcaccc774f44", "0x21b13b9a4cb8e9712bbce32f178f59074a35a8cf0771061ca0764b6b190fa139", "0x2c7a11815a420038f71fd201baa6412ac292a63dd9f7d3090ba15573bba3c5d6", "0x18c9638094626db7e58bffd717b1287c8ace706823253bf6f91ca06a37f7fb35", "0x136fb4abc4e094fb4b5bff23de0d41bb4764481de793f828bf3d9f9df1aa1cc7", "0x03ec0f79bf7730bda188a011089b92d26afaa5bad67724d8e1932572c65796a8", "0x0629f306d8b1a0682c7794c32da95adaea0be483fe4f631c2b9dc250541257d0", "0x1f0854ee6861491721684270879df687a12c28a0a7935c0bac0972ea398410d6", "0x058928f7c7b8503a2585ac439ae4eda9310d87f95042402ffafe98ef48ea713c", "0x2fe5a4fac888cf8dfa9acfcee249f788e86c043441cd3623fb972ee519ace172", "0x29e954045cccab9612ff8402ad222c21dd5cd3b34d4156541d5024dc885b8d98", "0x251a3962ba0f3e9f8de881d104643c9c39272092312a2a771f11791e63957b20", "0x0eb04f89599cba100ee5bbc4704ec638d102c6701083c6afee8d26cdc64b101d", "0x2d2057ebb4878c47313300f8a161c6d6b3008c263e738ed1b77f6e2d2368b082", "0x0f537c7681eaad752061f5946a10f248f8afe02efaa724d97e763cc8c0971556", "0x1e40b9aa000d70d6ee680f23d34ba07ea043561b79e8b6c306fa7878232f1cfb", "0x1aa38f4a119fa9c3e3ff99d0ae54aa6cb1180c41d7585ef4e033678fac84b2f7", "0x05661c023cc8ffadc425af8edbc5a45a5daf64967bab03b91c6f2383a61949a9", "0x023c4d9d809b0d3afc1c27cb6b1dec663e9625fd44f1f1389cd1b29e2db150e0", "0x09fac0eb9231850de7965393a8bfd15ddcbbf26596278dc789b3e40703db42b6", "0x040b84ab00737103ed5ac312f5d44e27d4749cd191051bf8a6231bb4780e354d", "0x2e2eb4b8354572c267ce846c9eb223e3819628b26456d7244899e57d70dff93b", "0x198728ec996ad0953cf87bfeb8810be5c588ac10b738ccad7b1f8bad50c97e35", "0x2f8a8ee41d90aac2a91c1cc70772ed6f98340052516b3a54bd8df388870c5b24"], + ["0x2fb583762b37592c6c5a95eb1d06694b6c6f9dc4f1ad4862dd8f5e67cb7a3f5c", "0x12e9f46cd8231bb03d4028bf7a11d7c0e331dc05c088e6dc3d1d001da58b85a5", "0x1275cd70326f52f816a7c53fe62e323efe61a5b8d3747f6dec5837a825873afc", "0x06e7d165b57b0299d23e750a75ea2e12c9c7a16954c40a4d10904a61e8773541", "0x2f67f23a93ef1e215a4add2ecb41bef4b9d85ef9135065d992800e34fa98108b", "0x169eb9952e2a8623ef38de57e15e242df388019489e01b7c84fa839d864dcd1a", "0x0f4cd404b4024ca13a513ba3156d4de9cb3aa240c683b3e0eb7253bc98c8b5f6", "0x1c486bfae3ab032ff519e8dca6dc41ea060b0ef9083127bd7c2c4e089fd45aca", "0x102e745864251ce940c67b1e2f4bc4d27fd3851571ce6813baac665e8cc0c79d", "0x1e6a6d620433d22293044ffe36a5f2a729c129cce3eeb0bdafdcd0d52bc3bab5", "0x08f3abf97ad8d01cfd8651ff2d576e3d68ecc47aad82b4188d92138bae603b6d", "0x283da3f1cf8477d9821ee60378b1c39c72428511a1b9d6683c0302938c248ce6", "0x2d99cd8d88e49e0babc84cbd58adbc143a75a26ba16f96466a2e41629734437d", "0x171edd6a7456a4c25fef8aa6d8b748ead869369f72a4e502861fd037dda8f779", "0x2fab64694369e3a2bd573c0cc383695c02a381e785792a3fabd6e1ca8df2d3a1", "0x0c6155944f64f7694fc8ecd2a2b9a2370568c3c898db9531dc18c72474f9afe7", "0x1ee0e5cfae030622249210cdcda71437f28f0b1730653c0915efbfc08607c3c7", "0x2741e1a7bc6ba2cb162858c4e8454dba0d0e12dcd956d127bed071739ba5ef86", "0x301194a663309ab8d80a434822a6f6552585e888d498581845f54be634ebc93a", "0x188ad25347ec25e6a8a1b5991b3e96df81f55cbe2c52ba48741c04efd471f296", "0x2d1a0a032554c50b22699496dec487b01401f25282f587e1b575fc98c9fbd648", "0x2c47fe6533bd34a760084e8d4c488c4ca2b3bd11c22493179ac81a99f8a44a9d", "0x2fdb414eb8069b5573db5c11ede045a6009f267a8d908dbd7d90d6a0f028f28e", "0x009cebf9eb6d06fb278fe736d6ba09f93e0df2a040dfdda5fe7d9ad0fb94bf62", "0x01d55a3800a64ee82703ab1591d18adb00259d168276e1b0fad4718cbfe05966", "0x0a2f6b059255eded6daee4743c08fa84dc3c51bae3179040056b3a8df38982ad", "0x17cf49c0568384e937f81b41c62c476dbbab87bbd6f4d9228b04429299cc81b5", "0x2b28f60b3ee128401dadd3d94dc96f001b9432f70ea1b3b3219d80d369921aa2", "0x25f0cfd33257de2cc32415e65ebfec4246d90a181e8145f9387def3c4c5e0d8c", "0x117c3c2b702ecc0d12cdf264fc26fb8b4ec60ab3752d20f1d2d7c440cd461273", "0x0ac8603ee819274a7bac613b6d26420bca69a1d147072de90aa39d4af80376ce", "0x12c3b1dc37d665123fa74a2e68ee329a42f75db42d2b1c055a71c16f04d4455b", "0x107b0f5506fdc2e774668e4192b959410a4a8e0c9e82d05c5cbba8be93d73f37", "0x1bdb9f5e2cf7aef69b26f0bec8bbd500ba3a56addcb25505c877c662a810899b", "0x008224a746a8f72cba619582bd7204b8e21d3ced7370bb7fc77ee51241c1cf72", "0x0d2fb5c8797a28a15bd27665dc510ff7afbae95abd32d7886d223d1ae86ec2f5", "0x21397b45c024f6cceebbb9d1b0e43644f6ca76d2de9eb0505c862f05d7330586", "0x0e207305e6d3028b5c459df6090396fe3eedbae0cf8884e15fa5b4fd9c5eeb4d", "0x1cda646c94c324f84dccc02f77a716daa86e7677c57047caa0026724c12789de", "0x03392d1c129eecf880dfbdd7d30b4a8d35c5736d71e6e1879fae2362211a7aef", "0x2a46775585cc9e5bcea482164e668818ec54fd76d9d2c7d933be090f7a6878b7", "0x0756d791c7b670dfbd18ebbafec56fc148365f1df99518b634a491a2203c9e3a", "0x1682d281fdddf6f34b42a4bad0b260d597e8238878c1d7a02180a699db4faa7f", "0x0ba069dec00122629c2eebbe6f9842040a40d8a12327bc084ef34fd142cba2cb", "0x25d190a3c1e234d174ec14da8db903a8df0a76e91217f9193dc891f1965d1ab3", "0x2206270cd7f6cb0f4692560ae2de0eff1fad9f86100053a3ea52db32f6de92de", "0x13135b4171ad752f3906f7a0227406d8c50dcae587b5a671c63eaec0b42efd89", "0x0ff9a3343287ff5db495f642d32a71f193ce25650ee9a3f0b3cd70ccdf11f4cf", "0x2c5fbf86b2df75c9f14ee20b314fe4b3d7fd3519593ad8c73ace69cff6406a94", "0x1ad6dfaab2cbdb350af0f2bba83c21438a078f09d6f50a765096469075307c81", "0x26def3ab54ffe04d216d72bdf3e34345c21f29c715dbc964a70d1565224a62fd", "0x1ad802b37c96c6ad360a316cb0883a15c3d6e951f3f81b29f2da517a93297c30", "0x16963177b53b5162bf2f9829514ca1ac60196b428a7770a80be012a42eb984e3", "0x03206529b723d804ab582c4463e1d39ec579f6415e0c3c100c4ddfcb87a1b6eb", "0x1b7080e5b36b8a6782307882edd6ba9c43714a319544360725f10cbe4036d56a", "0x1f501df667ce40f2023272b32ec123854fdeca8cfa8d21fa5f8f91f4b3c6e151", "0x29dcfd2048ac0b5eb2db20316a6cb805490cfaaa7f7c52cfe325d0ee3f3c8132", "0x2b5c0a4f3ac49471deff47662cf40c2053e1ab9bd8c90259fd39958819f1cc26", "0x2bd152e7a7045ab64a942d6af902cc2995ceca3d5fa5298f10bde467d20eb383", "0x1924180fc608c30d71ca6bc196f6b6b65915d82abb6aaa66df4154088dbef2b6", "0x08e7a84a3ec9fea2c569690436e1b89f8e9787427cc2eaf895f86bef37a6a6bc", "0x1bb936cd8a92e3acb1d40861ae7ab5d7b0b0e4d1548e136e2751e261632cd5d6", "0x2f6fdb04a6ddba0da03ef70a36c8912ce407b81e963f4c4ec4a05e1c1afdbbaa", "0x033dd37517c4e06557a334bc4c272abc198853e381599a5f0b0f248d5e94d79a", "0x257bd936aa56d71b0d64ba98006d38ba85fd07e2c556443c1101deb930d62754", "0x1c1899724669efe1b1d9b17d5626fa7ea52d62b8bc93a52fa69eb4a5a0d669ab", "0x136e4007bd769d059096dce1b8d16e8d5ebd9262d646383b80ccecc3f6708e2d", "0x1cdefb056618b5286265f7d1cd85cdad945dc9c6d203b97756700a68a7e305e8", "0x13bef640af3bd68eddb99e6532e05fa787171ab21061f2d51282505558b0f778", "0x222c43b44c581faf924430fe5b1674e15e5f62b174e936299e8fa41aee000c17", "0x0cb7489149d78784b55deef16853e3faf1298e78da5c3d199e4f6256eec3bc94", "0x1988cf8b0982b7ebb3c5df1be4aa097ca59311816ac1c52df87f604779e5d81a", "0x2a86243d5537e0e1bb946ba87afc04141a4f4683b73a8a642f430113b5834d79", "0x0810e4767c0f83b08eee45c743a28f6aa0f6c478179dc923a730c00a777c080e", "0x111051b6f6e645b111ee16f8d7277c5736544257b993df519a1ec2c56bcdcfd0", "0x138e637186a1aea10cd1929f478be75eae3ba9088375a5f1032eb90389fbd16e", "0x1c48e87c3a5f6585c7feb9009f959127513965869f67312b5dc4ae1091d97b13", "0x1bc91e3923739d8557a49df73d6b18eacd3f1d843d2f9a19d5a544d2cf61bb1d", "0x1f55cb86d44e8975bc1483e56fdb8da7c4ae53e1ec31b84bb2da027005d4527d", "0x27df4280dc0fe9e40b3c69f81ee35b9d10c3a77ee1aa568cb99de3c25a33c445", "0x2f5c9f8726064d9ef2ae70b9c8b9bd8c67bd0b4e01e33da14eeb08c9e84900b1", "0x18039fc9add69e1c38faa320bb6a1bf0fdef44feb0935882df019920c87af82d", "0x0327903788c3245da6ab00b1dd054ef0a8909c746381d36be32c63540f6aedd8", "0x1f9e9d1ae90c18f18b33386e190283cd795b00a5e700d9b450bf30597bfde322", "0x1335f2a251d97c1f4fe98c9df2f5e0b49a9915b63ae6ac860715a450ce045c69", "0x216fde3c47d44db12ca9b3890b746551e14de61d61eadaa82872b8b02d08c0fd", "0x20aea5ea277d5c1799bf056503d16e9c18067cce523655520500a4509558d6dd", "0x2c9873fee4f36a764e4633cae58d5975790e8878d02f6687fd5aecf0fea45c72", "0x0c59d06a98278118aa314c0a2e1ff138782a1016592643141fc11eac458efa06", "0x20ed28a0e5dd6d3528f6ddb4729fad421ad078802f2835228b38c04acdb5cb3d", "0x242a84ca0128647dbb3ef3da25cb387d422f571171db50845d58ea6beab90dde", "0x29ac14a0b12b581d8b76b71e2197adff56879090d84e5c39952f91f2bf8c397b", "0x037dcddb2530ed5cda99b3890c9e7ea0b091a00f50687bda0b6233da0bb9b422", "0x25a8987fb6f4c18aa01d2e5429697d61eec4830a301a60c3562b61ae3290ca92", "0x1c9bf71f113b61c7bf719d99bb5aebf0cabe8712b304f1e1ef2d17a098c79acf", "0x04a0c9f59af433f472f1de92cc39d604d4ce8369e91c4df9feb6d76706d10e21", "0x0d300e35270adc9e45f4315f3c3d9d939ae9e6ddd105ed4f7ed3805d29fb0d7c", "0x03b3d5fe98cd3d41d656038d84f3f63d5036ce839ab10cac86d931bc6f49c71f", "0x0d4ff1e8e5f471c0cb60c4b64e25d46058a64ba30d9fd526b6df528f36a5c585", "0x0e69833375985f6c99f32cf9047ed72319a78d1cc452574b160ae501f9106b70", "0x218a2da1a71bf2d9495435c13826e81bc4fbc52f7e9e76801d76efa6d1506d5e", "0x220b7c5c7df259d28ef5c87818d37b1aedd331c5ed64e2be36963baa6f0e2ede", "0x05e6ff3bb2c3c3d36fee30974381c7e9e4257cfcb175226975f80c7826601d7d", "0x06ea2130475038482d43b40d701f2e5719f8b5291e32e70e7ecb67c84952c15d", "0x0e8ea3e32a39cd2f0524160913424ef01a99b490ecfb7eac844e9bf858b9b014", "0x294e5cb86e4debaee0d50db9d21828d54d2996a6d2c9c184172c6e58fab66f16", "0x1b76a6dc618f7023b2e9201816b56e04600a1f6007704757a20de7a453137ee6", "0x158b87e1fb4ee03a0cf364d7737fea5b505c8f265d85e53cd8b6ed21b8f7e0cc", "0x0d6845f8ffa83ae905c90b939bc0217b96a114eae191142b7b39cccf6a05f918", "0x01e70b87aa5eec31fcfca56f01de6f0e16abd68e94016a6862f1fd84ac753eb9", "0x15afd08d9cd8f119f6b84c1bcf1bd8321bfc269f7ca4ba312f78c18cee06332a", "0x0e8a18af50888c0e678a18db035e95f3e514d12add25b3129fcb0a1175bf20d6", "0x05a423b76a066ffd86bface24a69eea019d742ac25673cfbce2d6c8d8fa959f9", "0x1cd6633fc781769de49bb060222f70e764c0a599cfa63dca546cc770a8c96e01", "0x0bdec688fb651a41a8454bab72bceb7b4b9a4e64e15a7759af96c3910f1af1ed", "0x16fe2f67cb81df40a13aee06cbca391aa9f363c8b6113970da577f00ecb68632", "0x0d9e30316cdadf4ee7861bbf058f9864ba41949a97d80f572f4f321c5c81c266", "0x2b7250de2b670143d2795767be62b401b33ca87317d51774332efdc0d561e2ec", "0x21191107cd97ce6d82d8f24580d3f312384ff8f7c372a6a6f84bea4619432126", "0x2d3d14d019903bbebb3844951f492ae64034eff311f6fad2e7ee224df122abf8", "0x0b1761537abfe52313d2984794e0f0cb5a67fab6c7de6064a9b23a9c1682e48f", "0x2648c021ea22340d9c15bf3b4de1019ca5bb2b154f528acbec879ba3060c5e71", "0x210383b9295acfb0afe0a2779904ff68510979cb8308cd4be1ba74d50f8ebd2e", "0x2366beb9fb0aefb2b27919a936a90e5178b6c920a7cdaeb2c24dafdf8eec4f62", "0x0ac0babbfeb05aca0bafc86a137345008a4785828aecae6e75726e52b19473f5", "0x14f4e3f929fa309ff76b77022f98355881d3a4619826f8f46f3f3307b7ed7cbf", "0x26c17a705c1fb16fc93b49912a3b026239aa37147116548af22c50b17c63d2f3", "0x1c041b56052757aa8b251c9cf93ac84f163b5029446b6b9d5f73738c71569c1b", "0x1db847af55f4dee4b04b07d8c756ded04b10c38423abda88cf955686e19b4d98", "0x14a9f6b5276ca64c71eb85421324ea22da9e59418c3f3d168a2e25614aabb250", "0x19e965d8014faa21520a879fa7062f8cd83e83d23d34eb96f6155cb698fcc5ae", "0x272983b47b987c94aa704a01c88698c287f66cd6a35b0c53b0ae248257328491", "0x179082445f7e90050f2751613a18be7c615443a5aabd9ee30dd5ae1aed141d0f", "0x2a45d991765d6810e7c6de95b751077ff3acd1a9e2ed841d4e351641b531af77", "0x0ce80600ae777b7577dcb0c38e3017ddbbcbce86bedaa78f3ee80fe8f8ed9c46", "0x1836efd329ede999eda029ac76933e51d379c2ec9f81106091d4dd81184b4a90", "0x23c2f9f5c32b9fc9d8a0f06a1fb94342f8e0f72871532ae622e69cd26983cbd6", "0x229a60de9ea7b9a31af0537a15fc0cc8f4e1874b05b029a17aa6069badc70709", "0x27c1cacd84763504bb9da995fb9c11dfe1de4f9b4de0070c62458dc06e6f718c", "0x226925e3b28e9d3583306111412c7fb3125a6229d56499d4ad4ce275fb945a6d", "0x2d4c3ef6b8649fd521c317d440f0de2170c7dc0ce2acfe5547c96265237229a0", "0x2e163352d3c6c204a4f39c6347ed2a1546da1c162c17b37fe5122dbe0ca38d81", "0x1d50944ab52614ecf794a99ec9d9364ac97acb173f01a5793d55f9adbea4c3a0", "0x2b4bd70b5f1f434f70f1f952d02b031723f769ae18207781b37efa7d860b6a33", "0x01da84194beae599eabcdd0d9ca29cee05c8d70118af22d79496664ba63d953d", "0x0b1469c1486ad837a64a4889c24acd60c7975f59a70181bebde9950fc04b94da", "0x191e2dcf4dba410ac50f7e9aa497a5c783bffbdcc2db8471cbcf70b56e501040", "0x01668607fdf864d54f4bc62a7a64bcc84e7c9928a5bf8215fdfbf22877673317", "0x2f9967228d705426d5012c764e1754e1f43e1cb9dbde29a8da4ba862ae464916", "0x0174c15148cd64c6a9c7e25bf7e92c0eed93ba9d9d20dc9d99127b9837f842ae", "0x0feae0bccd9061f01578a7a003394df020d098b1b5d4d994e9c7b01d5c2a6e3e", "0x0ecd1468fba5b3142d6b6a3698bd27eb2961f2232da5614891eae6fb2f501f83", "0x23b8bb2b66cce71b0805586c9d01f82c1f7acd6608ba14377052ab5228b9d2a8", "0x296c2942c041735a80687e79b03159ea0bcc9c8288bf61e932b16d9a77418703", "0x0dfe7f9c9417c892a1aa425e36eabd1a8307bf14178cc1bff30de270804ac6b4", "0x0f9c80c1ed9dbfa5264ec0ca7f2907b45582aa1aadc8f2244eb826f36302075e", "0x13c76a9e0ef6a2afe12453d52c5ade079c945de6700ade999d2654f00e0e1db0", "0x08d14936c51c9d5bfa8934ea69752560e7f72d33c6db682c6eeaa8d37afe72b3", "0x2bbfd29e71032bd6df3626cae78d5d7d950b8251aa9ad387baff0cecc55ae78a", "0x20add9dae28c0b6c56acf8dd8fbf8b82aee8b9e464704243077185468c6c7a25", "0x1fec96baa86d874146fecb495308b927cbc63ef0acf2481252cfee977d77a051", "0x107f942cd1f7db02a84ff410913b07ca14067c08e3cee6883c829f8383db56af", "0x20446a5488024632c1ca5a03f3e0d9927db7911b48d0ada345cf442d574f708d", "0x16c45c6ee2e09bd860204a12550cfedf1c15cf5ae79210ff56c3a067be982232", "0x095afac9e9c0e7bf3a3757afe1a59b1cd2c8a9dd0a4016a768de4e394c5aff4a", "0x1789b8d50c4f470a2040a8c97540530eb4a4ba188e058c5cf98eeff2986363cb", "0x1ae4a093f1ff056d43eb1f176efac59e64dbb0b30a17bf9cebe739ced02d7eea", "0x2078664852923af8ee05ac393bb1b71771aee237ac4bc13feef5eddb824b5212", "0x045c263bfd2c80cf563fd1dd093919e61702c4180667ced47109f22293d6f635", "0x05bd68adfe9229ea5f91b9b9b7c648930278ff9cd4235a74ddaa2989b8ed1b68", "0x2ba6147bf61fac6fe9f89f5d03424bbd3dd25abd1ba8099498cdde87a83508a6", "0x06c29c1a964316e5ff468201ecda5c5eab28e5cb0cbec1f83fbf55f911dbf6e6", "0x0b3a42e10c5b32a4db4ae5742917bd2a2b6484d58d069988d40f4b2c5d923511", "0x1ef05c441e5c449dcde2b0104cc0cf09338c87fc1ef249e47219be01f8900d4c", "0x1346b974d355923f8812b1b81cd69ceac02ba2ed4207e078b1bcdd65b99c1c4b", "0x0641be843dc5babada2893a000856038b0c480c73bb1222242f5c182b0366566", "0x0e0ab9754fa55418576339c74a518da23da4512ef44d918f3ce7adc03877c0e8", "0x0524eda9a8cf74c8aed40f27e804a118f479da36331029d8e35fa3067a8a2e60", "0x2d9cc26968b956d282d882ad26062692ad57541ae207ce90a36eb408ffcc1c2e", "0x208be81442f0eea20014d7c50cfe3f8497c3eef59d23ac75676d86e6df672177", "0x0a103c791829e5f91e9143aaaf373c130be8bfc3579f3608b2eef23dda272775", "0x24c250eb5eb7b2d00c290f548f258b4206da050fcfec439320698146a687b4d1", "0x04af611dc756228bc87c791eabc9412b4dc539e482b11360dde2e8b15c5ceb26", "0x2edda4c0c8cdb6ac1f766af30f296c30bad29a7fa345c492c5fd461c83a74ad4", "0x24a57cc97ac713d122d20a0f45af32a192d57ee2df010a2abf932d3fedc531a0", "0x2b7869256ef8449ef1632686c2e4eebf6c7dc01925e171b6a3053c00c7fd938c", "0x1fc2cadc1d42598fa8af9a087df97d11564f96124486f9d36274a5290771637f", "0x1721830740eab5d3e824ca501d9dbb279c33cca46d957cf4dffd86c4643852f7", "0x065bacc3845e9e1db1666679ba9198965a9604f9d0e17a509d3435461bddaacb", "0x14b469025cbe3ae69548004a75ab8cca73e668f3fdbe5b0412149da212b86295", "0x1691556195caee6db9f3e92a740b8e3df97ba65b9401d64071720fc3f5b93d11", "0x2043760c0846ef1a8307b889640c3495bcd17b855fad23866cdc940a9e9bf202", "0x254c39a9337dae077e34effcb2bf6149dab1ff4c47077f565a1164cc16065df2", "0x16fff81b84dcb6ee8195fc9a2b43183ef2c93eba69ed01fd66215afd4118bc7b", "0x1dd3fdf493e57791e270cf1e45932a03871ae749d8b071b210c113c746ced3e8", "0x19f34c30d29e2b2e71d0e7b58975b52e5895100a642e52509f73499470664e6e", "0x0e53378ab524fde35bafbf5b073f60337d37cc7bb024e4d770b478cab71efded", "0x02657a42fb7fe70f69fbdd34cf77e2cc1d9be5dab5c3df54468402e9823b730c", "0x270797e181131ae454fbe035b74c818574db4b0b14617145614bfcd17d866f5d", "0x1fe850c6eeabe8cc324105f8780d7802b35263639cc09d7c27e2c3d339fec530", "0x113b0fd84f896b1726ed7e324f037d49bcfc61107341ba50e6ce467bd4fb0393", "0x0455301c9c3a9576864e5349b9dbaa24bb5a73194929e2022f9f9462dc60fc58", "0x1e78afe9e73f4fac3c0603f1a9944fac953e8649a63ab9ca386e14f76cc9803d", "0x2a2df8062cd4e4019ebfad326af75f075ad9910112c9e56dcf5c1402af2eb5a7", "0x23199d2e3d213c593ea050c5b5ad9f69f1b0cb0a3bc785927509481d9365a79b", "0x1112f3f5206cad6ea06f81e7e93f6da2605d12111f7d82dadab721a862820454", "0x2a7850975343dd2d9736a41fad96173abdf8ec955a5dbf0fef598a3427b06cd7", "0x0e8f0ccb5547386fb377f8eb03ce31a2fd99637c8288acc824bb3c7e11976247", "0x2dffa0cb7982a215faa3ae587f3d0a8fdb38bd67fe497d6ec6a9af385a7de5fd", "0x038104d875861c16f8696630fff0f564ab6367eebb54aec00444abf7ca01097d", "0x2e1c146050524fcd059e554496c7365dca249831f8f3ce19154a3a4f25c0a15e", "0x1f1b007113b257163a2338f7dcd31019898bc9de8cd433c6f4d2a0d61b4a895b", "0x0245d414c0213d2b34191838ece52483b9b823ad5fc60b0d1b5faa19dc499428", "0x27b89b2aeb20498cfc4ea10b7057b853cd060d9f43abda0b62ec0acb50efb0b4", "0x1c77ccc651789deb5aac8d3c633ae0d61021f924fd15ea3f64b2190692f0b84a", "0x1344ab9603108364a71cd08f29138f17b813a2e507c5a371265094c3ff091733", "0x096f47da409be2b87d72a5b4dffe768e464b9f343148561cc8f7f65996473338", "0x2a963a2d7dbf1b6648324ca5ca201005707c68f190338602106ff7a1c8180074", "0x0a24a1fbf8e9ea5e0ed9b2f6f45190baf98eb130f23e3a59b98800474cce6d7d", "0x1efc39326593db3571d1f81f6e239efbbb625848e204043a3eae361b784da8cb", "0x02878f199437f80ceb6115a4cc69ad4306cb90caf7d33a57ee2c772fcb0e7c43", "0x14e714116af02eac68ca2f2d7fdc5602d14b0e3156bf689dd8af02225f67d6a5", "0x1cc4f895a494442a4c6bd0b9be44ea8d5c164ea0aebdce116bf6e22ea9c9dff7", "0x1f72d9f57cce69a7a953a9d1ead68e0fee628478d59b37fccf1e710729f9f2b5", "0x1504122452ed1fd0021c274b2f90e860d621c530397d4999625732841c24175c", "0x0f84c2185df257426cc7160be00166fabf2793f17b4dcf955537842cc39ebec6", "0x26211875cfeb1f08402906b6e10083eabf34188c0f1c9e6ee6666fc7499161b3", "0x1fdaf9a5b7dcb487eb434eae3a3a1b632045c4f36727a1600da5c67d7162bec6", "0x1a82c7c40e0b33bc3be8f836c4b58c1167b9dd3b89a64a40f250fba5e7992603", "0x26a830d5593275fd09838a337dceba9d73b6b0bcde5794f3795a2c7d9a005beb", "0x1ca1b51031b54d6c209c60095eba463cf27afc1d87db60b8527336586bf5ac37", "0x02ed0b2c0fc04e99dd373f11a3fce52800291722a4f60f69de44b0be369b4301", "0x138bf926c9f7d99f3b356786eca06d03696c34a2b3e7045ccf4d35036ba8f5e3", "0x14c9004d3aa47932ecc43b64f48012296eec6175998b27d4ae9e67ac37e252dd", "0x2e8fce1dabe0cdf3fc5eebfad8fa7adc6f8afda97e429172d9b753dde4b98fd5", "0x086d86c3c731fe45726bafc5176b5843fd04dd64f58080677db1ac99fd279c34", "0x07c522aa9582313c107a3629403f5469f777e86b83ea72d506087187a8e72bd3", "0x0f8ae11d8f6f426faf8516e350013be77f4892512580ed34e760da1c298b68e9", "0x0ba5aa0e6b3dc7c67804fdb84bc1bbcc1f844e9046a6624a910173cda4154bcd", "0x125a057c109e46c86d4a079d3aa4396af8b3e01365556a1b54f39d8ede66fd21", "0x28ca6c1010270adc4961aa8335ce83696b24bedb4bb473dfc15e82d305b95d75", "0x1d636937861daa12215f031dd31ef5ddb5d298fe8a687f1541c113dc6a6f982e", "0x2e755335e4022d7bac084dcce1498520f80ae93da97d2f65715027dc8f06f0dd", "0x071f2713b1a7933a0a20f507b9120564af7e399becb3c364dc4d4ff00e82c84b", "0x2ffd5da8280e32999e19a1717e10c89afce0c6f81f5d3289e3d5fce62ce0f328", "0x1dd14fe6365e941517ddb8fb308e3a93f54003ab4bf5f2acc7a7bc28b5133d77", "0x27101129fc7fce62280ca2c588ec157d96e5aee5c2b0dbf2049ed24b2c1305d7", "0x21919fe253784f0db396d4f9e4c77352386b9b72489043754ba8a2b1f4ac126a", "0x07027958a8f531877d1cebacf828dd8b017a125c9d287595373a5a39e58cf8d4", "0x0f4c12b76814adc1cddb3af4d1ce6900934ed214203cff4daa3c327f9ece5456", "0x08d988683eaf49158a7c9ae87146068f6e1cf75455a9d82231645f7290d10b36", "0x0272e74426d074d9658fd9526b8616907d5673aef4ee33678507f82bceef5868", "0x1a4709dfae34cf5ddf7006d7c290bb58c74297c8c4818fdf5f3950b54c924525", "0x22002b8b417575047a0ed5d359143aeda19e8810c53499ea4b57de86d441adac", "0x24574868ec8a4a702ea0cfa55bde2ea3bfb22821f6d88a66183527b1c7f8f0e9", "0x10d966de7e680887412eefd87d811dc46b0240886d6854934338d21121819798", "0x2ee7c7e3e8a979087deded02e7255ec067b1c4647cc714b96e1a28258d706966", "0x07029f067945ed1f6946894d66e2a8f17513b7caebd40c9adcaf39eceefeba86", "0x238f96dce22c10c9aca9a1982ee6eea87b7cebfae5a387782b49a62fea5aabfc", "0x0b46866c52482fd492baa3395e0a2c90470b402e538b3d8d0c50722e5621dd1d", "0x0d766df2a110efe25a3d9c00709cf5309a71c3eda799419fc3cbb0f69cce2ae6", "0x070143b740c54c7108f5f6183ce84371f770750dda04ba765ef83bda3fb2d5ee", "0x1700b579f15e50c2ad18cf77dddd549da000a6c8390de97e7ed0d8e68dd77d5c", "0x0966a4c76701d09676a086e95d90becfa07bb8034642244cf6aef00a540d2348", "0x0dbefe8bef0af25598f5412f84e00a3dd4e87de653075ba0c5da7ed783970bf4", "0x166d86374c39d7660096c87278e27024ca839197e65cd2f341e7a588c5387fa0", "0x251583bded154eb2396251754588712d0e1b78c29cfd44b45f29a9fd52ceaec4", "0x104fa2f361cf696082c5fced47e78a75f39363142e877b3d82c55c686e52627a", "0x2e937bf849309765a350ed8791a96d859a2037229bb6a652bc6aded264c7c5b9", "0x2b1d9ff7fb70883508c56021f57e3f9ea1dbac6ca74116b17ee926c1ec3190ab", "0x05f6384c19be9a2806e892c810917c10224188bf43f041a4e9633f370fabcd9e", "0x2ecd3211e05ef27a50e8cebc42ff0b183cfe21dfab238ea9ef76229b3f109303", "0x134cc424a26df27d06dfecdce2641a01bd102e7ff1a079a2f7e02cb5c04d0fbe", "0x06491bf6df0385099926b322197f0366b2757d7dd62ee3c2a04f9b4c9534051c", "0x195fc25a0f0e518936af73aebdfd96d9b38a4353504b0ff8c1418986552920cc", "0x21d9052cce28cf6e4e94073f863ce8edf12f02ec3286237f9d223b6239666286", "0x0baa8f730ca31f03feecfac34a96c3ac7af148079107bd1d17241917917321bf", "0x25581389210f6dfc774d3716e19784984d93837f46e519dc753d36eb2ac7ed3b", "0x24e00e2fcb19f6424d723a02dee50396b779a246da53a1a240f1bd889a8970a6", "0x083d4854b30ee0679d2db410b207e0e3a675788631c5a356cc87732960134c7a", "0x00af54416d73433ca2ed2f161359272770b6e3009381d71298f8223deacfaf11", "0x0d86112e0b5ca938fa7edbeca9ec16e9e9eb4589c77706ff386b4f121fff102f", "0x222eeb0b16a9b7ed31088917ebe1cd3de2a51f15e1e39229a08bf734fb2cf54f", "0x26ab188797afc73322cb02f8e79578e0e296f991bb2bcfebb635d1212116f43a", "0x0189a33095624a9fe843ee367eb23224db90c8d79614941f43009202bf3f7692", "0x0cb116f05c5b188d660a15100e4e53213f9c91a2c7cc48497468ee009204155d", "0x0677167ba65ce31ced812c57211602111fc3a26bbe9226918a7819c94281196b", "0x2038709e7cfcc3a1fd50ec84476c90870748ebb30f6431bd136fde99cfde252f", "0x11304b471f078464bc2004c224dc05a4c4ec5db0a0d15f324130e12793a7aee9", "0x25d8e2ab7f87aad379da3e3eb7f5d35f297eb80c430c765adec7f637c4f592ec", "0x0252705f54d55bf29b30237f8d12aad2b21b4a5d3a7aaae982f7cde3da630867", "0x1db9ede78af0ebf26dc188f6fa75663eec8f65b6c9a5ed38fbb3421dec7d7e44", "0x28915bdfab7235384a0052ed73839f3b6600a7ad6328222a5b5cf6e833a23778", "0x0a48fd9b0e00279f51f240b4729c1360740f003e804a09579e28c033c47d5b25", "0x004aa895e8c124ea62643e1d47b28162c404aa390fd45c32f9ca00c080fec007", "0x2f6ff2c3db97147ad04594d1858994b416f98aa1243bfb9deea65c109df2771c", "0x24f4f4faf7ce4f405a99b997acbe94f4f75646fe7d669779737e6aea7a59318b", "0x2c6de883618f61bf7f3f7d8d27a607d6a7c4477491b4a505955312a1ead3bc10", "0x084e6d4e3821e133fb91ddf17c52a3c3e056dc5211d99c507a5f8eb010f2051e", "0x182695778ac2503bd5ab232f7a06bf670a950fab0f52691e66d85d678f7ec4b0", "0x160333461efaa2ab9af0c831084d54e7669d8a39c5cdb67b2dcf41d3c4fc5e05", "0x2cd141426aef83b60baf24a91964fa03a4a15a956db96b9ff8b1802cf7886907", "0x1efcf46de40d031f8433503f35b57e7e05e7333292fc4e87e8cf690167176023", "0x13566534c621d806ed162efe86de13e99f5ba0b87b7662bbc7b558abd47fb72d", "0x13dd0f3e7ad7091840f0fa46df2804297a60a00afb5cb4cade62ef93010b907d", "0x063074d64729807274b9582f5459fa5f13a570aa0c8c1cdf970e0a676cfc6bed", "0x2cf0b9463240189f91b0d0081f1fdf117013e3bbf66b2ec20768b6196ca78a40", "0x2414bc086989d9c5a4b4389231672e10670faa0fa46393ed3acb8f7592d53cfd", "0x035c375210c40378de763a3a1ca80b6f59ee72e60bccdcab9987567607a7a661", "0x24649b22485d4164a5849e6fe09e491800bb975c4c18dbe076ec4c8430944105", "0x28ff30154191e734bbf8835086d026958770f58c05adf2ab87451b0f5b6a5b90", "0x1333e068eec2449ec9f3ec2509033a95eee7d93b3e21bacbf131f353021eaecf", "0x1aaf01fef0368da6ec25d420df62bf7fc238eeb68f9c01efe080abd921969992", "0x1a8158e9d6efffb3f770430136749c13ac3b57b0ac67b7e790b87e4c9533164d", "0x267a4bce46448d250fbc476240bdf28082bb7b3fd4fdf6b4959d202ca5c22cc0", "0x19092ce179c682ce654858f33d7db753b9a6864268eeac3e01b9c7499d669382", "0x2cbc84334505141c85446a368bdce6f43c4c73002b9c7fa2755bafd3c913cde5", "0x0f2290d7acdc26ef20e0ebf6c790b226ec27618780d69b34235db806c2cf7fad", "0x08997d8fe98a3b07b245abb1a2ff924e69c94ec512dd8717d26d913976f7009a", "0x281257a6930442a04b62b72ed85e06c26510ef3572b9d76a5a47d39cc8ecfd19", "0x1bed3ef59d524fd38eb28351acd8928fe6837cee442cd4128e17e4ceabf5c5e1", "0x2450c4222f921391c2d880d0549a66879b1f036e6196b0ed04b6f65d7501ae88", "0x13cbc816452f1a7859c5a15a87dea7c7074b06f50623b8d535ad31f380862014", "0x2a447dab60e9a356de04e09237b0a5e823997072c557c28398dc34349ce6b103", "0x0403afb29d58bd7a9985c47f8fc5e230619c306bc3b9e5001e5641781e2a2767", "0x01f1b34d74c7ba4b249e9ed1a403edebaedb7cdd68997d769702c61675cf9fed", "0x0e5e3c54edadf35d98492c46975dbc8e2ff08c13858abe8fcde5ff740182b642", "0x0d63ba660037b09ad891f2a73ee687cd93fe26acd102f90ad5ac7fce6e3cc24e", "0x0afb72ecf8fd02e169980cd8f4d692ceeeced7f54406a649da0b542138177506", "0x0a18d18293b53b043057c48caee752f777ebcbbed6cac878ae6dd7f823daf887", "0x0341875860149b8023899da549912f6ca633d0cd64308178b5af305831025c9b", "0x1e74f47f430e1d9fe4edafcf6484293d475dbbd32e4db7afb109344d6b217ca1", "0x1393ce303c52c2d727cb4004446b8e2ad22c18f3c6baaf7f0b9807b4dcab60ed", "0x2996a98688b3896b12bf84463004b1e6cfd41febfa82a76c39829c00a5909563", "0x1101278844bb1ed1532a88c945eea3f1771c0b7177d9e90a89fc14e15735c0f2", "0x0ff944e58495c3facf9e8bce3ea7e63b45e0094453d6de3a476f34f0bcb7f076", "0x09685892b1647936a2d06ec2904235a2a473236fbae0007813832b3b28747a11", "0x2df959566a7f74f07a6d8db0ee48cce33d83d76d83cdfb72f8e601cbda8a619f", "0x1371c30df84f6fa17717dcabf21240b1f62b6a0f7ad88ea974b74424576bdb2d", "0x063df78a5d2ae65937d865fb6653358f110a1620b462221fc53722e3e5914bf6", "0x06943c3b3b93a51f75b9ef027e7e489c4031ff92dfc9e6cc8c144765ed455963", "0x258a6301e1d4ed86f430c121b8a7a02ac41a45310d6eccfb1e25c50e144d552a", "0x16946c160509bda0e6a28b310d1e3d465496f50f331eba12a3d335e80d02ceff", "0x228a377dc063ee95ea9383203e09cdc44ee8ad4ce4a3bd6accfaeeebcdb3afe4", "0x29d562c833355a13246eafed9cb816b700e432688f9d0161eb345f93c86d1c30", "0x06bc32e8519fba6364af48c63d468794e43eaf044a122f5df7506db732811574", "0x05b5f5ee4e1de0165485ed2e889de65244597ce9795bd1302995d6448b7099cc", "0x228e0f6ae75902b8c6f351e3afe911852fb72594dac6d84bb2501f6c1fb62b7b", "0x1adee1a357f9bd07b9aa5d5de6c1cf13ab85e3c637572c4405180255a6b262cb", "0x0fe8e230f7a653e70d7e66b68cdde3b091c90bbe3392ed70c657cc18529c48d0", "0x17f2e3b7e2a5e959cac4b2e2abd5b204ed1d1da788ecb601e209e9135b42776e", "0x0e5ebb8d9ab7b2ecfd74f5c7d852fb72eea1d29438e5849d60c3be110dccd77f", "0x1176ff60b09a930fc378bfa5bfae137d7e914b2c2e5d41718bbe5987ea4204a6", "0x1c289e2a8f4efc5bf0272bf45012e7c53b2ea259353ca5fac13452570f0ec30a", "0x0897085ca8062df434a4f9526f65def6b90df42244485a72e23b62dbc3ad4b2f", "0x08702d77c6eb4854ab9a0dc200a9496022381e1fc33606f8a276cae0a0086edf", "0x2d557de044b0ba9934b4e84c14c2790b77dfd73c60964fac43c12834ae160236", "0x1b7c71b547295485251a601e795a5be291ec9310d09af4cbf6c6f1d9d97f0759", "0x0c2ffa9d08d01f7863acf32741e6f40f5a614d5b5bc9680d4450bcc3ddcfe7e0", "0x16b4df7609480dc496c9c80c205cb130dc75a36bc86ed397537fb8621bb55aab", "0x278870285022a8e62c007ea1a80dfb983108933916474d70597eb223db38d120", "0x12d086f24270995532f5e9a5fe0f454211df6e0d70a4f5648dec1532bced0822", "0x14051b5b246c70615818e460072a6335353ed0baafee7ca27dd1ed323a1a460b", "0x12b64f3fb3491740234c4b2a9c22b0d3615e6409374dbd51c68480ffed83c578", "0x1dba77c37155cfc3a40e60a3cab22a65ed3d0b3b9e14a088da0f78235f378c46", "0x2d3cdee7c20e981df78414afbc11ac0ba5538b05d8b3ee64e93ddf79d16af761", "0x1e72ec6459044a8545cf04fc975cea4396932411985f63f69cf5abfd079ea339", "0x033de42aadf342bf63b8dfa88f1834316ec0a1a2031fe6b990b8939ead902367", "0x01033afa420fc311df873cfa662b1aa74c3293b32fafb6dd8b50957b40e4538c", "0x03246089fc735a2a10eff81988dddf6bf6cb36ca4c94e5f811d34a138af7695f", "0x184378877dc29eac96d70f2c3c23d03b15bb5cc33ef46aa4d7d8bc7436e2e133", "0x24a45709cbcffb8665e006e6da138718b961a11e5f833afc14de37273a14fab2", "0x15edf9c56babcccfb597723c4e2ecc4e9f27a6622c161e90f6aa189ccc28c479", "0x24a5b373a41b6284b58dffc853e57c1e94dd8018bf6155dcf79f539ad38f0588", "0x212667816adfb3eaae237f4bc5003837247ff166cf8cba1fdd43244f34aa540f", "0x1ef893f637158368e9a96b7893b13693d1a08dac4f4523108b0a99cd60d627e7", "0x025d14d1d9d039aac2acd4d2dda3f73a808846aed7159817289db8ff01a512c2", "0x09d18709d5cd1e66a30a5af2a40202a06e2c4b6456fbe28c5509fcf8f5010097", "0x10e49e4515ab23f11ba99b0a8eb2b9c0c00ffd31e297cc0ebff4b70a19084a03", "0x120d8f3de534d39e74a6866a095aa3038cd5a8a6da2c8c3af11c6a57878fbd27", "0x1086a1c670c0b38a4615e2b5c9da452435b28cb618a755cb8e4d6cc4a185e0d8", "0x143da4f1e56c2995390de6d5c203a81a0f8534ae6fe1b548bc06ed66eeb71b82", "0x03f67f0c682e74186fa8a43185ad1058986d7829037c9bc4efd13303df2565b9", "0x2ccc820115f173d6df190637f860f7559838d62da484768aa9147e38718fe4f5", "0x16c78c003db17ade4964026d9c805f98f6bcc18f5ab084bf6db478324b4cbbf1", "0x2ced73fefc2ccaf65b289e9dbc565eb7118f94a1e55b431c176659a4e20300bb", "0x080355d267446e657f4fa48445d6bbeb92bd0722224b62354102faf995c8cf0e", "0x1d7b035e2e3447110b569a0a285fcc75848e9edb05f260790b1842827caa69c8", "0x0def7d6932196574dfaa3bb93e455eb3073af3c6f5b23510af304e44af9d45eb", "0x1d7bee97b83a508aafabcfc215e94be6c319c91a06a446efeea5d2eb6433d01f", "0x297df20f1168df352ac2f6f2eba37c01f2e1dce8c6c9ab6fdf4bd4f73a8aa61b", "0x2704da6a1722356355503d2c68fe1b4cc81c7ec8ec79e60293c6ebe2cd0fbbe6", "0x2ee1c93621569042fcb5787986b162c7713c3f46ba980f84c35605f39c6bd09c", "0x143dadb2702943f0c1ab5f4dbc544741271b5feacc410778391bbd31df27d57a", "0x092b4880d629751c880c52a583e7c897b96f8e4017d03615240b58b099710347", "0x2dfbb9e30dfdd6a6109ff6096fa7880bbdca630af585a98dddc26c3c0ba06b1f", "0x183f5efabcd0bb3b5bcdc307a3000408ffa227d7ea09d1e46728b8a41dc10b1b", "0x188ec11b8e4279fe5d6885cae68b47b0e2f3b1b1491823d56d45b7ee0b819bef", "0x03b932f42f057452cf7e63be1d791df135b1203a05a1ee87181b79569dd9caf9", "0x0f004e411866bf3827ee877ff26b9030e8234af91cec1abf4b1e63ec376cb4fb", "0x07b29a2bf26c3253559ac91866e18bd24231873c628c6c54085020e9d94e4e06", "0x0dd493324477dab3fb82ebf9bb5ecb261b16053ffde0780c7a103f5224ed0d9b", "0x15a2481d9a02f0f660f26f731800672d4f01386a88b39a481300524ff7d6d77f", "0x020fca8de9b1ec1b1306069459134385ec736ce3d47fcfe31c9036de466599d5", "0x13f13006cc21c4413d126b903430c7d0f91843fcc8ca9d6f29e088d53e6d56d0", "0x1562270321f351d19ff030cdb1061906ecaf1d545a842611dfd2f62b517fadcc", "0x2a1bac0d137627714a64d25cff803b56397eb7c49f916f212c325e36e099a21b", "0x0a626b8413c43716fb39475aade5a5fa6032be65870a14c7536db969accd9f4f", "0x01d8614a7501b8508b972bb3a9865d7ebe10da1f7ef9a4b7caae2e8dbeafde38", "0x2c4cd54213bc9c118584922573edd0979687ffe60194ee617a89971095ff1712", "0x273b67e44bbe0f36e03fe1bb7d026d3ae18d74280ea660f7eb6adebf13624370", "0x2345edc3a494fd086270df8ec3337021bbfedb313e666ed13358d808d7fb96be", "0x14e3240d400b2f37c462731eab1abfa3121fff4452adf8b8f1ea2d7dfefe5b96", "0x26fed100c2fe18afd4558db5690f1f5c1ae4848e45f7984b975a127b2c3e43fc", "0x094f0c0432e3dd61dd59f78f3cae7b2ceacc7ea52e1e429618132d2993561b3f", "0x01b69528d1cb065ea1bb8cb4ffcd6f727a43c184998a8c52289713e52f1a4f1a", "0x27f41e553f9d587a847aceda9bc374ada23fd5a31068640ce8851f2ac9416b9d", "0x1e78dc5799e31ae0047ec4338ccf8b53635cebfeec7de05098ac9a49f51b4e11", "0x1408db23a0195163f57ff57339bc69577b96aa7c9f5b2347cffee7c6cacd3895", "0x0a45ed2874baa1e55853ca869d88ece0b18f92752a6a622992f2c40a80fa1bda", "0x008c69e11628ef5f25cf5aa9a86c58192293eda7b8038b0fcdbe9ec43a387b38", "0x04418bddd1b637b566e983af7174840f3116feee63ecf811ba3c183208b73457", "0x215cda6478735eb143ffb90674fcf75ba4d60f81f2e13ba3a148ae32f72d4b44", "0x035577a54e516696334944d355f8f5f19cdc0006a3d8f19cbf52a315fca92657", "0x14007e08f2050a67267adc8999afabf2df408c524b62d66242e07bca846b734f", "0x1d34dc16f79b6e30ed5a661cd37c19178e1b9b5ef6814104b0f01b3042fbc1f1", "0x210287383f8ea9d022330583037c97c78bc6559b06da998d3486c784518e28f4", "0x24f14e85290d69d501a2347570720ffb805edfa3c42574f10c173631dc15a933", "0x301162024bb27bbcbe7606f50fe7ff61f9ef6fec6c70faf2485d11859f59249a", "0x0112ec7cf1ab77ba88df0bf2b9c9adcd5bbd3904798557b1fb17c9f09aebc0ad", "0x00405e5888854684398caa0a447f1077f2294d23c4fe188bd1d9024b5c786c9e", "0x2648137d6f48e92e1bccacacbe308447399f63583708346e2ebf987f397c8f19", "0x2828ed7039303cd2ab1ac07e24e2ca8df13562f1974b2c9f2b3fae742eadc23a", "0x015e6dc583e4e1f4626d8699910170faa3235d54d4fdac2480010cbc4383736f", "0x0e0d901f126136db8ae40803538a6e638a67be495a8b0da6523dd152be24514e", "0x15f1d6b88717f376031f4c9db9389922c83275af3e65bd06f1639457d8aea6d2", "0x2d4a2d4bef42094512da25f1fc445197da4116cbf1a5f19deda71329b3fd3cc2", "0x2b75516b90c831875a52efec663b3ac244300a4aea3390cbb79cab04a41c9c37", "0x22dfe7ba1a8b83b4ff9e598e4f853568e49212eec0beb566cbd83a580c913510", "0x17356d230f9da4d245e95d31939c5468fd6b4fe1d43a5e6a23c325beb7818e85", "0x00771aa5a01cb551d674ecc77a4566d30413f3c6f3f98883f2297bb2af901700", "0x2038c2bdc57d92fd22826fc76e6d08c2b9f0dfc5284fff92067ca7711869f1f7", "0x1bbb2d783129d5647dcd868d4068b4cb291755342f4d189667cab73f58913c54", "0x0cfa3cd62a22569bd9f83dac75982f5d9ae73f6d11e945db4f1691e47d690cdd", "0x20b8bcafb219c0e8cc74c564c365e7f1aadcebe9d1de307a7d8bfebd9a59448a", "0x133f8f49324ce55abe13c52065b9fd5525d19ae1fd95c968400efc2d32a3e559", "0x1e393e2816d184bb6fd0624f0fa7d0be2c767ce0cda87aa2235863564b6f0ec5", "0x0ea9f996da777929697fd9c0b7078128e70ace44e0f9c5bd2b408096ba6acab2", "0x1f998239bb13599db25c562143e127d87f7f7a94d32177ac46cceb87cb9902bb", "0x2731954ff3fa93fe61134965d3f2dba0bfaccfc91ea76ca59638d2fa9c4a7a0a", "0x18d07a9939fafa512e2db3f523d1cad5de5ee6138dc2d68c8ca06d5abb4ae655", "0x21c5122f00f0db5fd84ce1d7c2370e019fa8269fe7631560f30a4c791f228e0f", "0x0f94cbde49d7bb747f1b7a83bdbc3fbbacc95c68355767beed02d68f444504cb", "0x07786585577d81638c8df6c6fbe94fd632f7ad7e35ceffbe367e9ca3ca33c165", "0x13899fa1b41f12f9ba9d85b72ba310e028736f5200293bc15df542c1f3fdf3a2", "0x1a3e2b4a3410b810d0d8d8e91bc0abbc5843c90e1f196902924901e4a423dcc1", "0x24693cd5298886503438be685277e580caa0c61090ce7de0e7d40e49d12b9190", "0x1cb88707d385048828ee4a4ff4651d26b0c6ce4403801b70e65d0364285bd25f", "0x2d5d8e36c872f5ba089905e748b00c1738ad5103e56334250db8c34f89f4cb58", "0x1df48fd041b0e7762fff784087064fdbbbaf29242a35bdc6a24c764f1201e39d", "0x21aea18d65264f486c986b3dcde7abcbc0ce1f82418b6fe9dc420ef728f9a5ae", "0x295a978d6b1143de34ded6f81e2af50bbaf9e93a3c4f98f07b69a912978218da", "0x04f0f0b54e2f9add517c53f11de865a6ce34df352d0c8b7b0ea8fca0521a3b5f", "0x0c4daa6bd8a280695ceb773c23ea936eae30b9aecb7d29732f3d005e8f6be875", "0x0275b5f950e56bed013209e34c98959fad51b2bdebacfb151e2993c8691e1f19", "0x142e622b8eb094d15647fd69116f59a527d8984710ab8437379206bc95bab064", "0x09acc90fba52574235b7ebe94b3afb107a68bb7ed6d60b21714219fc170d55b0", "0x26512b4e53591f187109b2b4f36f4131fc0bcd1cc606b6853aa20526b9591dde", "0x304cb4d258b30a6798cf5e3fc86e491809ca72e944066160a27ec60c6687faed", "0x09f24d8469717a2bbdb34740942cb66804ed67d932b768c87bb6b4ecf354eccf", "0x302a604d14a5cea49d0411d6d669797578de3ededd4bee595109a509f2005f78", "0x17057a92fd82f27763b98c0137a3daa6aebc82d1ee84dc286521c4b33ad16acd", "0x17c98c3e6b14e5c38bfd3d1918e7b32d85d4324f16e43448992ff12bd0063a79", "0x2d85baa692bbe01ee8ecfab8e20b80b8c012c96d69f694baeefc253bb98e49e7", "0x22a713aed1607d36caaeb46fff411e64c1bb3160db3f3431facc07969dab4d4e", "0x2f7ae4d4acfc8497fda4ac0d082cad38196f265c86089235093e1aac53c67e8a", "0x1afd52944628c9eef6a4d5cf21a9dcf6fa49b1da1fbd9c97697aa50dcd6cf712", "0x198e874eb31875b5796c3081424da73a92708ecd74e80eded5c8ac492a8011fd", "0x014ea1b78ec6247114d4615ce0d11e280c33b0a1fbac636f55f043a5ebf04ca7", "0x23b4797b3bffb21db4277e4eb13979e6774acf0452deab3d057ed6c0eb5f1712", "0x27c85c1c147076cd777f41b99d2e55530d4d43b341121187d010637cbb66ae86", "0x1f846837097639fad43c0f406a4029a3ab6d809c1a27c61e48b15c1b71365f1d", "0x26b338bfdf150311357f806449ee81b2fd29e3f2f43badfc7848948dd7781af1", "0x2ccc6e79733745f9b759c1eb5fa3671dc3d99065e8413d653eb24837a9bdc544", "0x1b7fba6bd285b5ee75e195de2bbb189e822ded19a2867c5323c7f6c575c198da", "0x184a5c858586996f08ac5cf5b5f67367d91cfcd71b35eba37787e44e7cfc61b1", "0x2391576ba9118db12874e5169e93c729f8aaef71d2dedc81d283dd953d59e0ac", "0x06fd613bef646afa4f1d57f7128518f83350e5efc0e41f8148d2ebbbd9194058", "0x1ecf14479487ad8f8e5e4677f73dbe81f3ce377ec7bed9fbf0c0a0f16b912718", "0x06fe9870f03a8f83498e73ecf2e214532b8b114a14cf3b342d7623e9d5192b67", "0x04b8da7397a519153f0756f72c9b62670ed5e983c02a4109131e7275d7f2d1b3", "0x2b1c40fcbdf7d9db85f818aad7fb333b7249db791d1f65f43f529a77e3118998", "0x278fb21e4cad110091702e5c8cdc84425bca088286772f1817308f3109787057", "0x177ef03c343328defd5228df7d4e44d4cd23956dfb134448a485b196572925b4", "0x0d201654bfcdd40cba52e51bd419c0f95c12101fc1063ebb8d81554c71c16153", "0x03b21c4a37026ac5d962119572d8bbabb453343f75c0d55c740aad13968d6e09", "0x072a52164e3175f63504fbe7a0e02509d050e5552490e23d7c9c8242fa870ce5", "0x030d0c184b743e3401114b1f395b12fb6a962191c77c5bdfef165977cdfacbe8", "0x24ba3bf7b9134803ab3dc87fd9e9c27f129764f91c34eb53b557ef3fea87a39a", "0x13e05d5c4e1dbad46885dff27afbf021f7e1bbd432d0a9f1a3dffcf3300a7a48", "0x113a2fe6e9019e83e0e898410c35326c10cdd01429acbb1fab5faa9cf474de2d", "0x078aebc8ff29a02e89514e9a5beb5690b75e598d2af2f9016bbfbdac02f47d17", "0x2ddd3bdf04d7d1449c12e60030b971b44c6577ab560f9efe8e867282ef1163e9", "0x220faf36a017fefd9df4282a946513585a4f6cfa5bc5f9766861fbfa43ca18ac", "0x0eb6a2ea9f6827065fe666ff3d1318280923a634f91efa9e43a223060257881e", "0x0be9458e9cfd6cc6489d7f20d1738f3e519b5c22ad15352cb444105ef4b89a8a", "0x1925d24635bfac09431b17383636f69f224baed3577628de33d1a282cd18efda", "0x0a4098894729d44bb96a4b265cf98090039eff6cf8b170ce3dd6f8e42566dd97", "0x19c9d480ef38aa13105b574a419520aa7d092a68ed6e76171065803da50482bd", "0x1c0a6c07cbc0d6ab894864dfce9df406b04bb0c3f7d7d4f00b3403551411c07b", "0x1d40bd40cdae647cff38b49289ad2cccffc669bd94a6aa724fa2fe232d4e6b02", "0x28ef2d4bb34fb4ff673169aa1cdfcbfd7a869974957ff7ec7bef4c731dbdb666", "0x1b2d5d6b171b0148947d55f61b069828285670f4b843d29aa7f4493bcc5a8923", "0x0ea0a67e504a55e07fc868ed85f3cb24431835409db5e6653cc31fc307d29ebf", "0x14a99bbcb8fff06772149dfbed0103dee78b5622afc0d99ccb2bcde06732c042", "0x28f711676e8ae8c2443c3f82a8b765edc17cfc6ed254b7d2338f922b6843a8e6", "0x145eefa014a02d9cef3bdb305206dfb1dcd4e4b8bb91513eadd1374c38e94195", "0x2379d29d5e9c69d6fba8ca261656c9d0370235a378f77cca2850cfb3d5fc2170", "0x2d12ce4fb01ed5ee6c444c59583cd1a26d8e745443a6721ab48739d7b2685e1d", "0x2dada5fcace74d74dbebe88dafd754b859989b09240b43a46e03dc6fba6c8f45", "0x2e23386575e2f0f1f97e4fb08438a13728dfd5030d398192ffaaa1fc6da5d159", "0x270d58901f888a0d3331391d74b72d35fe749849add6419cd747d6cd67db2d52", "0x29e48b157cb407f9ce069d0f80a4537cd9e87179d9eecab350c78d6990a4e0e6", "0x1d15d50631be723e2ce8bf8b559d975af370557abee33b6514ced1bc7dbfbf70", "0x19a954aa55569697082d97017cb66cc676d03bed6542a58a2237e7483ae8e3d2", "0x1146d8cd42e6e1e47b51d5d80660d7e17ab43467a2a5b5c8c0d271bf92837151", "0x0281a3bc2877b82e9a9796befbe8db3536aaff12bbcebd91de6887432f37bb44", "0x271904d6f98de7de1c70275d3e362c3985b2e7ebc073ae59058ac2b4e71394eb", "0x1b07f0f881d60b7ceddfe4dff878fc7162c92d8c237b5241017fc0a2aef43881", "0x2bcd2701a63735e73b0257b73d63ac7cd7792cf96ed0a0fa3ce3bf6220835aeb", "0x131f25e8aa9663cff8fcdc4f325434fe144056fadabb01d4effc020148f07566", "0x1e03c62451cbbfb82a6a4c851368b9a9cf79366be4c7937ef16e890bca6cd6c6", "0x2a8d3017f2b21a818d3c8c932566bd1baaaa7c45600baa0990aa67a49309cb32", "0x0174c20e110d106eb038cd9318d46691a685d777b71d8852d45602462ec5e3a4", "0x2639df073fa32789d0e9afab0f34422488eae06fd75ef55995e369e1b15dbddf", "0x0c170d68f133125763ba7714624b007475fb6787a1b17043926963dad16afd1d", "0x2fb299340483a1739b0108e631ac6e8917367253a76b9e7993b1aad9f694ec29", "0x2588cfe421a60702216fa0bd567cb266af1042923bc6cb57ed68bb90488f35f3", "0x22c8fd4638564b9de90ca35e661965ea6f01f37ff615ef308046fe136ee5f01a", "0x017cef09c980a80c4e53d7284b5b2a10dd1cd0ab41260d33cc19dfada88e5447", "0x1d9f0a3022c4764f9e5e6404397bbf44be049e5185cac48bc729ac948ab01331", "0x1bbf6b14ad3e7666bd58c7e9750f7bb9f6d6f70c4c2abe91e20fc51cc5ec28c5", "0x14c8d23e7b15787024794dc33c58dab8c117b51b4588f5ec5cd8c59f9cc30dcb", "0x1b91fc8e62a79e98f545cda2608f29a4169641a3f715ead78bf494822555f565", "0x0ae904147620bcf04a4b4a9679b2713fdd8cd50296d42ca318548e32b81e3b38", "0x166f3e332577ce10c873891b5cc742e7c34bb4d62b5773316688e510f4d82b8b", "0x0141e088bfc6e007a2d82cf717954720cb29b97b30c8c8125d5f9b46c2e26621", "0x118e0ee4202d127a0577a6eea29bb614d99c1034fe0e2e7465e91e97c837aa29", "0x2970b8f31d9b9afb3d3b912d90594a847ba0483dda4b0934df1278ba14bc2ec8", "0x2f4a5eaa4b7aff3fcd06c9d68fa2e32e4b4e629aeb93eccb552c9f96fbda3ddd", "0x0291d6cc7e8e5152902f5b05c13002bba95cb54657ef393e92bcc23b9bbf7ffc", "0x2e221aaf4070c2c0d735b5b0a52099c6594d38936914c9393d8ecd2327088c42", "0x103d669fc46b07aaf6cc4489e85724181503000817f8c1fb5d471b2b36179f22", "0x10dbe373ed70674013a939b46a07ee4f8c191e3fb639f8d0a781d1ffba82fe90", "0x116229ba1cf580ff86ed006b9207036e69cc0f1b55d4088ab34e01a3f25fa531", "0x179bb393b9bee8ef918a2ba2239ff1e6bd63d6d48cad4ab6f2d319f2999be4f0", "0x257a8dd0150b1254b585122987e3bfcdde7f914d374d2bec0595c46afbc0997a", "0x1015f7f8871dbab0d121570b0ba6417980a2d11b292fb2a37ac74c8a6e198dfc", "0x160acf3dc98d9d1ffb15eaec2287d5cc743ef3d16fb8bd40946a24633d23825f", "0x063c73552b19fe6f68e9df9438a581827ece6c31520117c2353c67cf0714d5b1", "0x03e8c80daf887938cd355ec710a9e32f44c47520aaba5dcff9c62c4bc0412a82", "0x1ac3f781cd9676c41ea21fd2b7cd3f38cc795eb6ba45a525b291c66b8ce7ba68", "0x189d712149326d71b0327f9b7102ca0f93043fdbcf400c18e3bf70106493354a", "0x25a912761f8d8bddfcfbc099bc994a355176c54a1831f8eea5572c476592c1ca", "0x1158c9758fdbbd6551fd2ccd615dbbe0bede969a6cd0f28040e93b5239eda2e6", "0x28e7b56cd29b16133e66383a20edaa6a779b6afb82772344cd2c25979a9a5eee", "0x02c3597feaf103aef0cf0da96c7817bfe5713828c613e326c975ca1309927700", "0x1c4cb6031554a2f40fcd1b71223a97975dde9f4f5c26ca08678870a139ed93c9", "0x2ec728fe7b69cc421f18d96bf7a826ca1b04261f24a98fe9c1e8a0a41b64b58a", "0x079e331f65c8a82b875922c8449bbdea3a111a68179e5d2dffff605e1ca47dca", "0x026cd813f24807033d7c0244c9f0790fb80da30e5e3c1e45d7c7032f2aaa1831", "0x05bd11c2b64de1a736f93ac8ff7e0c166f8c570a6f068dedaf72227e85c11451", "0x25e16ec5be688e137b2cccee835428dab939351b3227e8bebfae85f3a1f9c270", "0x0b38073981b0af418fe69ea55eda1be5d289b2f0de3bdde47ee6483f033b16cf", "0x1b40be531edfae81a33e40638fe85f88067919a14dd1de793e8eb1520db3a2bf", "0x1b3437d0f405ab27c185656999c538a67654438f28562b3a00eac395e7133835", "0x25abe96ddc21b2c17b6bfb3a8a90a2ac051b3871c87fb9e35383cf6d7223888a", "0x25e3fc93bcdffeb428bdf8c12491963e4aca18475844b67fc5676c73fd0eb358", "0x03af96b4b972c3371b076821359cfaaeaf9638a072c4f93e08ab119e6c7429a7", "0x232a48732df2599b09f1f1631d68129303ff6d40098f8b2600983e5534435c11", "0x0cdd518a91b38feda4681d3bc992182ee111e0440e9860cdc71cdb36ae80c1e8", "0x1b821898c43b4f3ae2007e994ea83a84d3fa63e7595db2f41312cdfad1cf2499", "0x1386203ae413c1942a336b2fa08038f4e92e5952e523bbdf7cf3378113ef0cfe", "0x0425657e57a9410eba03665cf1ce8eff3e0de9469b032d468ba15d9208fc20b5", "0x27884ade4cb4eec0c91c8177e0971bd5a9b844af188d28ac1980ccb425fe6986", "0x0ec81730de0878942af4b3827b8bd9ac4cbb1f3ab7ae97cd1bb135b0b7c78f4c", "0x0a93f1c9629ec9071e268148c6503ce1800f4cc3c5389c36e9ede3eebabb7025", "0x07e9c58dd7c4767fca5ccbcd7bdd8a4f4bea7858542b298743660654001ec52f", "0x0975e07614ccfe3cf39fd0208e97cad49c65a30af3590b24df1016e6a7ad9b39", "0x0283f302c98975a418a232d3263d80dd74300113d851de6d7b5ef3c7f9299450", "0x2b99993f81272c00553c71827e9e24b3270549e703515a6704393b3894a7d378", "0x03cce63cef0bcee4b9d5c753a190c249127a628b4eff5d557f2ec05b5d033c9d", "0x2bf4ce1340a1e717fd8df525d46439375eb3642228ada9dbaca5804e6998507a", "0x1ae9453dcb8890ce578b221d846612a3396ab24ac8057ed48209efdbf31165cd", "0x2764d3e37c82c76382c2c47f4a93dd8e73fdc7cadbec68bd3b03b4dd75c09871", "0x150f9419a3b6d46dafe052942e15ed496e5b162648b7ddd3cf55bf1e52f7636f", "0x0876dc242c8d2aa183d184cbbc4340d5a9a3a474ea84a99046999d95c7884bcf", "0x21ae86ad0b69ae69e4b9be0ceae01667895a9d9381a1c0de6d3864d228e8ec55", "0x0ba0ae75f3c762e9efa11794c8121d2b7bc6ebee38f105fec003595992419580", "0x10a16abfd6b38360d4f3257f3c51c9fb94ec5f845dd83e0c4ac4f7798f2d9077", "0x09dcd9b007d04507c0bc772c0ebf964d496e697461753bd1bb81bbc39583de3c", "0x0b1bb2a1096618ee3bae22563f63fcf7e85a817f6345501426c271a2cf1975e4", "0x044c7652068fbb0991aed6944540321bd6b09a1f0d6e91a54b8af4dba18471cb", "0x214ea955c4b2a5107d885a37734de5c9afcef744c4815593f970bbdac51db55f", "0x1684d36dcd86408b68230ca9f98e784957bfb7552a9253eaee876820bee310aa", "0x01666ceb9d9cfa4cbed159ae6ac945516b093ce589c59dfd5abeff6c6c2ee06b", "0x2151a99ef7bc07707ef7e223864c9e8c50836302f299aad05de35ad74c409daf", "0x2f56e15326295bd701a40314e42ccfd5ca4e0814fa54d312e7717e488da05955", "0x116ae009a6c4bb4c28c016716364fb7e7be3b21723755e1607b1a262b91a16ae", "0x2fdbe71f53d54e5b3bcb850ce61743d675be601d74430d9eb8073f6814205189", "0x011a91f3be424b955b2241d753e3d6d5b0c48ff9c68ba868f8a611232ba442f5", "0x1c7c9cf7751255070ebdd0e3db7f97e5d95564d33d2b3293caffa0434e6d788f", "0x1eb979221c31f6978d43e7568a7cee7709d68b86e56d77ec89587dfaa78261b5", "0x263b48e46edff89f2de5dcd258850d200543ee5dde31459b6fb5241a6bcefd76", "0x0785b9559c5da0bd57a80150c229bb2d75f51094c8e1a11bfea538e217d2ecf5", "0x23cf1ad5ac576585eccf97091be57cf0ea3bbb2d3af9174f8042582424321d9a", "0x27d4db4bdb30ea4e07550d9e077ba8a9d5caa1d418c1a76a12dc71ec55881180", "0x115f6242fd5412b1208cd4023d8cf87fb62d33a8292b231caf8d825701ab681a", "0x089bbc83094f64e293c91ae79a8b7e009d0f679c67dc19c62597b04e1415c424", "0x1d4a1b3e7a6d26a8c81d7e9f4bf08af0bf1370dcd0d2101469ed87d469d246ae", "0x2868583e9bdeb10538362d7fed8997e9ceb4b43ab8db5b0a4b2f140943ae52a8", "0x0b79459ea80e71539e8079cfb3eaae03ce6d0e3c856557c3f71fc983095b434f", "0x119119d4ed16eb8d4766c638d0c34acc159a2b8e24e38928c3ba875890ea1985", "0x0bfdbe4b4377205377f69c3cd5e93ecd2a9cb3b4ae2c1541d8e74b64e965a7cd", "0x0d41174cd6b5c4c0d34b2f4d841f3f9da4f100e20cf6140864efe6eee54c08a1", "0x21c5915b86d2211067d19fe9a318234043b80b53312749898b537783cbe4e1c7", "0x1038a4a9cfa20caba2d23ef064e7419792e83a31f0cabde4eeab2e49972fd78e", "0x017cc0079f9863177147858c89d3d7f31adaebfbe4c9e074ecabd20b7d2243a4", "0x294ff7e5e36f7690d60fad36b804e35659e82117ecd44deeeb79e58bb8c874d8", "0x1f03f5d810dfa62edd32521abd1d283c2416a28fcaa244d36788eeeb195a9041", "0x002113e2715ea893d00d101bb30e6e1702157d10faffe85095427dc9d9caeec5", "0x2e92c29b7a243a299d92e78195f30a996a3f534d5791a32a0be28bb7e8960c7e", "0x00bb300ac74564449f872674dfd9e17a185432f1f463317cdf9d499c87cf8595", "0x250e835ccda0e466dbd59a541e1d03c4fbed637ac6b715c82c32af588e1bb020", "0x06b776c5024ab6374c84f5528ca7930439da012d412f9369ee36db33fc435826", "0x21df8b318a44cc5f9d54bbefc97a91b787912bdd5cdca95f47eb9cc89abcd1e2", "0x1e4e1eaf5d1729d55230bafb1743de4732a18d66a9692849701f9a25e74ca9b9", "0x268ceb3749719379b14ea062c63b359449e70ad5816df014cbd102ac647f2228", "0x0e252b231c1f0ef18c8d6afbd879eaa7f9e61dea73247ca3af62b3c1e8794fbf", "0x0799c14eec20438a0e53b69882c90c6d9239b7367be50f64ce92d9974c2bdaff", "0x0fc050000c821a4cf4ee6bf4d91ba46d2cac2305118ebc194684a2dcb7d7383e", "0x261a8cec31c1289f2358c73530ed7e01c2eef88cbad4010ec09d036e57d2a9c4", "0x0fe536c9c7dda5070a37fd31135f77a67f9f3a986b1c23deb83e85793cf3cf89", "0x19ffddaefdb50032b58e08b4f377b1c0eb37f06375ff78e7ab7b605781dde8d7", "0x2e204413c53445351004316110f539849ae7971f877fb0841b19ee753ee2083d", "0x2aad98682dfe08ad2c9b15f4455a201d4a963ac7dbb189a42d2b3e1c3e03111a", "0x2c89f855544594b08ca43a7c32c31c0d90aeaf300132c8b4a4cc66843a181ae9", "0x17aa1f236e0e89d6c821337ec90bd7a78b32eb9bafdd9e83ff8c7b1b9784828b", "0x290feaaeff298d887d5a5baa47fe2e84070eb78d2079d791acb9067a979ac1a0", "0x26103b8738968671897412fb4246da86eac69235c4a1a71aa7a928034915f67d", "0x028a70fcea0f277978120db4bd478a6b09d54eaa8a97d369dac79716989b43c7", "0x2499d1e4544c6db94e9ded9ba93fd92162686e412099de5baf123211b4138ca0", "0x0a1aaa6aaa97e0c7228ffae517b59392211af38efa670aa06207ad7f05bf0af7", "0x25b6189ccf6ab3a759641ae79385f3e7de0e375a61c260d84d91b330f83616da", "0x1746b0b982fefd9d90e7ce72cdb5f92ce0c6990eb43a27cd53efa1bce881eb60", "0x289e95d858d2babe2526517d850587c3609a9f4ad32a646de51e866bba0b42be", "0x3048411ae21ced1b31d43d3496c92e66a26d53a24f250e17f328c358d97c220c", "0x037ec711790b5b9819ed2f20da092a6befa9bc44cbe6c1c21f33d3efb17688fb", "0x2d4029de72bf01e5937bfa34ff4d5ebbeacb010ea816d9fcd6e7af91d9a6714a", "0x0466fd8b23836d8e45a1751a1d0d28db003cd20545a88e41318c571c38fd3b12", "0x032edf5df6d833b5490840e0140247218d6254c3697d0070fdcfbf6f1168e841", "0x24098e733e307a6ee49e38ffd010589a51c1df21282d82788f5bd0cf8928d1e1", "0x2d5e2fa5e630042a0731ec84f4a548420dd5674b614b3de83e5ca707ecb32706", "0x0e77210dc9f28f0aa0b9330bda698258e429ada3e10f084f5066aadc86d7de01", "0x02ebdaa0993f6a702e710f8fc47392d7a0e5186294ba78ccbde291351087b4fb", "0x05667655c2f54b241385b86fcfe274d1f245699cd6aa60b6fe515102e6ed9c0e", "0x0cf97aeba824e4585cc9e73c62f0334b8ed4cce1276b939501fc2fbf6b2cf2dd", "0x1b0d81d58b85a80d5fd10b4c399e0ba9603e0d60c7a63c89c8339dfacb3dd88c", "0x165261806d574e0612d935eff3064754aef0f9fc86984b1e31da996961b565ee", "0x2543c122ea7e08406b7c5a89f385579c585ce647d98ec4400b6db8ecbe6dafc8", "0x18aac1e93332c0695691852880b308f069d8749f94c92372c1367bced171ee01", "0x1bf63cffb45ae6f08358df0152ace17058bb3a63b0b1f2567e69d42b44048bab", "0x20283d0443c843dfa2cccb285119fb4a12094c90ce6ada0f6def11ec6caa6b96", "0x1d954fdd63b3ee13a6ca13dffe9832aa9d9e5f2e1ecd3e407272d87c281250b2", "0x031b80ef30eb0f639c33fd4e7d5b778d607ce624ab7c0bbcd9b2921b6dd0b164", "0x1bae6f23461f682a6389c607670ca2c975b768ba4922543dfe0c78dcde3ed854", "0x0c15d34b4ef0d6dd324f1fa8ef058bf24b57419c1e49396aecc6b2945562780f", "0x0c95d91f46eb587506c57bbc2ccf87a0fc5348ac0dad375eb409aa64cf92da96", "0x2d1da15ca522aa1868740b9e801a008ddb7884657ae89507fb99457326786ddb", "0x0572ccd7fc6fe06be9bf2bfa8b4891a37e728805c609f1e282a0214480e62894", "0x2016ba766dc14ebeb269c939f988c0b0e5d7a16f2649e38877f2ff8a525a88a6", "0x1d570b5ff85730e9ad8c3261b6ae8574999221574fda8a97f19bad50dc2ec724", "0x143223d027cb22f42b20a25860333657c243a05e16f8a0fb07784a3f8b3f83b2", "0x0f67ed530f31504bfe3b87325682a5e9b916d75caa7b5b3d5e222c7f86417dcf", "0x10138516469478294fef0508151ea8164f146c8e377e90637c4630d0b45de53c", "0x286dcbdb9c85e5d6c68066b69720b550f46158374b88e76ba48091661b591e19", "0x189017ad0ec6599655fa5f5c041b189d4a5055a83914e5eb1565209d44366f1d", "0x123bce9fd40c7f1962d00668560cc3192428bc2296c92fd13a42d75b41b441a4", "0x1f9aa5e25387985073ca220da7df2a6cef8b60a089e4afd93e14eeb3d5dcb5e6", "0x103f38ddb6e1a669aa42ea1c7b9ab05761f1804a15fe22f26bd34367654326a0", "0x12389e0109377aad426be4716375841c2fd4ab598b60b6b2b4e7a2ef8a48ae7a", "0x204ef0a4fe68dbf212371431265460d3ad63691245c56ccd4f6990b989537d9a", "0x1425c7e1f5f5a42708633437672f8ccff1c17bf74dbefa1e99cd040cd193fb91", "0x1d1b25d3cabff58428e2696ecea9975a9484302d17fa12cf33d8416b4fe1d299", "0x23908186767f07f13d0adad116284f2f179144750b0f1ffdce62eb4797ec20e6", "0x0d754473d7c8757e822a89718cb7d7c5acd1125ca5e0d12718486552a3741974", "0x2d59de71c65b8678dd79d9ecd3915197d161b253913299238ef8d3d28cc12d67", "0x2b2f638dce6c5dc04bfcbfb40d6d547e52730cdfbca74f0c0bbe5fe25e0a6e44", "0x20831f33188daadf77c482c1f3aebbfccb9bc2755940684441276f800693c758", "0x1bdea03a87112ac5f71d27b0690eb578be20a7eab02ccf7be94a9b504306bfef", "0x07f190626c5ce403670abb23f739112ffb91dc234819180d83de234de743a31d", "0x21d03a8acc5002c7565dfd84fe3001d9d7025929c71749de25382bf9383c70ce", "0x037f8e1f9f310b909085ced938b600d4dd06a147d5183992d9792ac4458f7936", "0x02680cb420ea4ae49c2286e497ad3cbb55360875a2b69e17e1fd096ebac531c5", "0x13a3a06d1fb827ff1406192162eb23b3e27e94cfda6aa05a86ab5e325e5df358", "0x07060927b3c64111746648d6a8433ff8f373a4534841e5cbffe5bc41b9e688f0", "0x1d4143526045c6c418ca7edfbf9850fd260d231b52b2097fd22411041cbeef8e", "0x04f6db2530b719a376c6e7d489cd7fbc652e7d2d09064e3e9444978c9be197a3", "0x0542efc3df5bcef699f0fa7be5c71cd32d253f20488bf70d734241e434dbf09d", "0x2769424bb96a6c21c64a506107d4885fe53603c09ffbb01860658330ab1b57fc", "0x123bcdb0cf6e7afb47b866827db72332e93c571506e073c498ad1a92befaeaf0", "0x15a1d25ab64db0353b33ad1009a867276097d5a60b4b18dd02bfe855a4952b21", "0x0b9cb6fd7e6ffaec8246acd41e43e0712fd76d5cae56a94076cd816354db31be", "0x1f38c1ffe5470c8367677c8c65b3f83194cd9c7d2e8080a1c31513a2c23912c7", "0x0f32237d2d6ed00b1ca954df37c30c988f89415eed829133f5a73634d05f0c60", "0x1905f76e825e1671f867fb5858f25e53a45f8f306a9a1b6dee7033647fc8ad15", "0x091c7d54e02067adc0794494efd0ad906e8c338a524c37f825f9003ac312d02c", "0x2dba5a21943598041f90860c8e92223d7511c74beb4648caaae4b8de3870f3f8", "0x293a350bc3c789dbf7c2e5a015480678a755ebcd68e1cb29e41d1d2942c579d4", "0x049d0199b6c0f2b3122d7d74b31aea8fcb701a24f40ba5fe698de631d22f6248", "0x2b9325291ca148c86eabc2eb32cae477dde830f028f548b5b5c6e143fb8ab68e", "0x096a6ee98c5686bf3d586a0e54961b0a3afd6d52da377122e85a355009f4a560", "0x13fcc77ccb4a091ea452a3f4a10fcaddbaa7ab18eb3f88508bd128ad2ea5a818", "0x09199f06156eda7c8103343b344bab11f43551bb9507bccd47a292af3d4fba68", "0x2fc417c576e3fa9b6b38a82e0328422c2d2dab90879e42fea73033a7562166b0", "0x27a81a0c9e5d0c98fcfe679afde0caedce2c5fd66742492e80dce95fcac79ff1", "0x0467bf8d537dbe823d6a7d64ca2c7a2417a2d7758fc1a89ff93304fdeb4d079a", "0x071d82bca92aefe7636f10c9ce16f7e5b41314128ae5907e1884baa183442469", "0x1473e4434eee30b2e7db34daeefb0df47d1f5e939aca25394aa11a686ebcecb0", "0x2303403014edd8333b87d5cc4cb08ffa29ee752f6a367c5c9918f8e3b80acd49", "0x213f2f341749dcc702fbeb8eb916ae6575445cd9d4e5fd5bf047aba7ec25dc82", "0x064369bea4c676d37efe3a65dbd4316e0e1b6b51ac48bf9c01b52c15b24e8a19", "0x26189341509951e63ae3b022397098e5fa9353625280131b31dac3a1c1837967", "0x28c51ab463012d8ba9f0b7f8eec91ccd7691ef0570217892d57494c6faa6abd3", "0x2a3e5a660753c0f733827620cf3d2351e4f171133f749eae0cab25ac5aa4f0cb", "0x0bf314d9d75e35486cf9f62f6539584d0f96fcfdfea1617b76a4640999f3d109", "0x2d96368456c5fe26d119a5742d014db9e86feb0e2315c2a37bfbf7e02ca01494", "0x1ed8f2f743e4af9edd62d9add634474d54113712e5e948f05b82d06e7b59913d", "0x008d5a047a23396ab6b1c02d108974b25ae135e4f0de6805627ca074f3c58a89", "0x047d8ab6c52350d654f86b8942f10d2c0021bfe9dffa1db254dcc5028aef7100", "0x1991c857b30f3ed8a58fe229da5c13fe07d75199998df10921068afed09a6a36", "0x022e4866b8af16ceb7fd45737ac352805b1c575456e1535a9e9d9f7a79e0a5b5", "0x0a0840cc3720e659f311daccfe6348f287ce1dd473912c34979a48e69b06aa54", "0x0e4ff910ee3920c587d0610db1fbe08bfdc2db5381926263b177698810dda57d", "0x155d27b044856920bbdb5667d361a536c3f8c5a5d8599e2a7955dffee77c266f", "0x0cdc005d55f575c61a43d8a28fdbbef3eec35e56a438ab99680c4d1efae64e7b", "0x231e87ba98a67f86d501651f5b74bd53cfe26b9ee09c07a9d8371b6bf7c42be6", "0x06b4d87805bfb75f9c37a61e10e5579122d369327c344d516e2ce6c89398b379", "0x16e66d16d3f570ad5da3dc1ecb3e18b38eb8d8e05b2e8e7884491a2e1b2e562c", "0x0c66a6340c9c20cf66de3d6eeb9d49e8a737c233343df8d847e5a718ed5118ab", "0x154a4b19575147b6672bb0a721ce40957fae3e336c82c7fca199ab30e7512274", "0x15e4b6a70cdabf2c4de98419da811d062ca8e9dfcbe39bc7542f66f7b60bf63f", "0x1161ad8fba20760a13bfd7b7ea1d38257edffa8c52be8f410087c916f504afbe", "0x27b83bc79d2ad4da4b5ef4982e91b81074985cf23311a658dbd0ed301e90fc5a", "0x1a4115730d7515e8ae8d0000e48f6cefcc893190566d94d39db15517f401d9dd", "0x1a9c2b3b97a4108828bd76bc41968d31402b4041aadc416d65c20996ee6ac6ae", "0x156aeb50e11c39af946c5312fb0e14db6e919490571e0ed6b555556c31f97d90", "0x14d25507db869e282d0759cdf16e81006faf9f10e663883030997ab894149e2a", "0x0336977ba5510fb3b812bf39fa1946594a78a99c00101ef101727c2e8e7cd687", "0x07f8bb771e58e5761017a9562c6b285b93d6b709aeda186d96616197579f1b68", "0x154c478a2566294d2f96d834323009af0dbef15da62def8171c309a05ed1dd6a", "0x1b938bf306de7f48325de59877abcbfe2eea089eab0903802c7bf3fb9532627d", "0x1aa446890cf65be6ce7f7d603bd42e03b7fec0d201668f760dd609d31b587e20", "0x17eb7ee41c38747374a7b1f145787ac75b8d542d33494d65f0ed00ca4ed17edd", "0x1d1b95e9e4dcf3df901aafe1bda2cc8237032fd36ed508c61c8b4109f820bb61", "0x099d7df97cab5226cc7e3a35ceaa635c22ab0110e93a62516f0370a2967429f0", "0x161e53b2f10ee9aaf22596c621480e1de2090503fcc55a8295c23d45baf68f94", "0x0b9bb53d660364ce1a5222bdcf2a80a161934e3e92de5057d668dcf49dea99f5", "0x1c8457a265c1756de7571b30290dcb48fa0beb2b7d1e44114262515854808326", "0x27f9c6fd0b90983010d60a37d80a58abb0f3500d6d16c9bb4d6a52ac91c4a491", "0x26880cfa04ecadedfda3a24a956734d4abc8ae2f92644369c8460df5f21647ab", "0x2f3b58e9bcbe37e95cdd9990aeb26482c55eb2a9409e28e56cae24dfceb8dde8", "0x1117104decc679a66af2e7588d971805b518ac219fac8078cd522ac8980c6980", "0x01c745418e4cdd80ea18a339ef590e58362b3823b1fed2d6a8ed942190771cfc", "0x0cad8a954ec6676b42e43c86902432a1e17e2cf4af5a3274bc1be6726e1dbe3d", "0x1b30bb989db0337d04320fccdc7d66f0bb15b4377fce1a75b4278bfaa61d5f57", "0x19a557a172005f84242d40c56be7c37955cf74da223557b0eaddeb5b55c6181f", "0x2a1f883c5eadb6964d4847479f52c8250b4ccca0fdb292238b9375dcc218f4c7", "0x162a0e44db8faa02dbe1aa52b1680710a8dca6091387695cb22c1ff844928341", "0x0ed9944bfe48542efa10c9f20b7dd4c6b15584e126bf2c01c8e04568bc8ae21e", "0x1d53c076c105da67f5cfd822fcc9c291dfa2923c4c6d275ddb45d926c9711c2f", "0x072ba0a2cdae57b583ba1d72f09c745e50f4e16adedd6488cad8b793e3d2adce", "0x26e72dc609c2901873d40a7e739f70af722aa439a0fe417d7568c38e38f47ce1", "0x1f3cab65aab5d0cc6458519a14d2b0dfddf4c005a63303d1738f56d4c41602bd", "0x1dfb345ab565970e95c89ba297b6355deb2f2302b66179e1dc548983aae02d76", "0x0b60e697535215bf10f1cb1208e0e699bd88598199c6d8d652e69b90ad80e6c0", "0x081593786e302650396b0a45ff8f62366310a1f53869d0557284481ac4bee258", "0x260276a46e6c624781f3a777a9b45b4835a751c6b016e584da35a3c309844351", "0x20120b4045167313784d0c2cb4ede07afe7fb0605518f6f50cec1b8a4b68ac73", "0x01fc1e2292678af8dc5dc1f2f1f573c3ac4e195c5a9857e40fae92309bc768a9", "0x14c0047ad00b7d736a8d817e561e582e901b4481e38316568b1be267e775b93b", "0x250b4e6ad1c7ef8ca6c251c27aff101d7be1fc25fbc484477cbbe4e90d456d2f", "0x11aefbc0c4a1db81e5b74581f81f7a83ce7bfeefceab74ab4b6ada0d8aca2acc", "0x100917e088672481c83ce9e3fcb3db32fb72a83332e5b27af55a48c73a6f9a89", "0x037b5eedbf4da97617f53b898370933367620388d38e16a0bda6a7759714bbcf", "0x0af98b1a856c51387767bc26146888b2806e66643b446fcc3f91859fb39cddb3", "0x00fdd008bcac697e8113e71c1c0e4904f5259f60aa43ed448796c0ed948fbad4", "0x1781e1fcf5046e26f19bdaf3416ea604454e254feb0a493905f566b51510b596", "0x0e80eef14d5ce06847a51b0e9e4541b3ab94cae7ca2a536da9a264c83918594c", "0x037dca03a6b5e150b50564128082e6980a67703fcb783e0e3e12033004fd76bb", "0x109c28dcb873b3272d40beb0a3fe8f4fdb1e7a2ec5a79b3c437c19dc4e561f67", "0x19493c0f5c372c7ad0c4f096bf4c206602ead23d19773f6766f135a71e017bea", "0x1b10be965cb7e46f154e3c08a36656c2e8954b5d507c949f7597b971c03de325", "0x2de26e700320ed4cc986550d9e4d6a1656115670f3411f5f503404445b4adb7f", "0x11d86ac71de74607859deaff3cf093f8076d28620a88621c09a7aab1209a91a6", "0x2c3c3cd13f231389681701241a54f58c9f6af1ebfd6cef4fa30e9fa2fa4e02a2", "0x078864be7a5f36c07fa9248e98181040fc5a911815984b8750f944bfa5365032", "0x0fd7187cb6096ae0e12e4e276419a03edc0d3246203362d583cd064a6c79fff0", "0x15e626596829d802f0adbf2476e9566e1c36348b0225eeae7e38bd0e3eb2dda6", "0x0d46ded5521d165c4fb07256a2f7f5e4819f6d88ade910b9ad3fa6c5d7dfab10", "0x0795397bde46b5a97a23f72a8b926a329f3cd2bb6200506e7e832abb6453b8a7", "0x13008e1519be302934f4200329db951b700e322db1a87dd5798c2b9e1259e9a1", "0x1a3f403f644737a46615e047a42acadedfb3d84fccb73999cab627fb6050123e", "0x0c921bc32a9fc9eac6065f5dc6346159ef9f6dced9649896b14edbf3aa8264f8", "0x0078f97a37d55f50fbd63b87d595dc665fd206ed6c887509ada7f1af0d1e6493", "0x1bc6393214162a52026d07fe770e530763c725b7539d9b219cc574943977c6d6", "0x121898c012ec88514f155880c36c1755c158939089f8a895b565401de07bc60d", "0x0f1bca466bb24ddcc60ce92b9aefe7bff427d1e57e56f654fbdcc362eb1e0d6b", "0x0af379ec4d8d65332218f5138dc128d41b1b35a33a5d0efc5dbb6c881444890d", "0x04f21086392ddbe22291af900709be87fe4e9d52b1dd659ec563bd848d42dd77", "0x035894f580c826c669d912a6966478ecfa19ab1bbe80e5a70c6a1867c02c8d95", "0x2ceb915d2e4787cdc8e948a4ea35ae04bb6a02c0720c51ecf9989a94b8979482", "0x0633d77da5ed88f9c127c459a30d5f8cc0bd85377a63c4e7541ff735271e66f7", "0x22f713759545175f343d00265c3ad9156ae99a35f3045a03446fcd88ff33168f", "0x13e3034537e2b8207a22d1753474f2c4bbfb103f2473ec508348ddc50d60297a", "0x12236867a7bde21abd297a77018eeafe4b840df67f784d1b6981d7e91d70424b", "0x15ad10d6809344fd76a38b99f45fc3d10e98f0b4d1af4eedf461c43e92a6c0e6", "0x05e7352d95dc1c7a20313a53e66e69525902a17e1ed43859453142fc49529b84", "0x29f6e26d8d6141e1955d9fb3226a74ac71f393b16aafab41e3c787e71fbfe196", "0x1ca3c0b4056dbab797c54688838a074cff8de6bd6a75c7b6081f113b1fe37380", "0x141d31bd71dc6bc8c4ad59582f59b963c05623de46199438ba7edbe4be2a4660", "0x1063538fa44657399e12597ad0c9220fd608178de399e5a98fe8abf3ac410c83", "0x0a1aef7064cc9aa31935dda57cdc4ee0f1104d4345bcf2e42ac48aca3fb9158d", "0x085280793128e1556cbbfb35c9aa97aa074c4a60d8169427dfda366e42686aac", "0x06a3c8dabb9a0040af5671cb1ddbf725b484c68360ef5116e9b7ec05fe0a6966", "0x09a5f6596e0891dcc5e27a3b98ccf537acc9a8bb74f8502209b436dc071bb4c9", "0x11620412943c57b902af3626ecff608f71e3f958c87cd0014a21f94c9ff355e9", "0x052144d7b94eae33de0d6cceb2e26c829b7f722ed2f9b6010606fc6f38b7cc63", "0x07ad1ca346d6f4cc17bfe58274c1b355659092c58295e4c0e78111a387aeab1e", "0x2963052dd36d3383f358c8024308dae2127213640c785f202a8d83251244d4be", "0x0489690a5d56372b457632d77ccc8b80aa24874737e9a05de269e11618ed69fe", "0x1c01fff06b37a517d39ec7afda66ee768fd39ec5689b1ecdebf31299c376cc66", "0x06b30c158318d9b5c81edee80522afaf72e880fa327ccb07f8d87ddb66f15edf", "0x16d571fc71e5e4a9630373d12b85a412268322cd94707eee0d678d2b6266e9ec", "0x067dd981da6052087bbe44ed357898be8c108fb7ed6a13481a650901300cd584", "0x01144f33bf1bdba903eb0b43449b24687bd995f0dbbcb654e38aeb94a6d93a1b", "0x1614036785ba16cc3e158bf70c214fc0584e433fd14009d576a6787970ec0bfd", "0x257755228300963581662fa0e767f42d5bc6fd642f040372c53d3a1fee9692df", "0x0de8628a2b51d70e30fffd251db4dc618df73081d01df1612182b2f3bc07ba1c", "0x2fb3c8b96fe17cc14327e848a61007ac7f0432d3b40f0802f764ce7c16866428", "0x1b68037617ea65f863d828f2bbe441228b9d76d9463d83d779e5eea0ddc92297", "0x2882c16547cb68f8806b77ad813ee36372353e9bd1c006fd1961020508774411", "0x0bbf09ef8393989d28a68d1e0bf9b49b9335d0c3611136494e128e5f7b64d8b5", "0x02c70af6d36c07f4e4b654b3f8ad98b2c91af09b7bfb74079977aa87f99b1394", "0x03e7edebd18cc3ff82b835ad08bc4c3371b7d55286f7c48c747d930127f62b5a", "0x2d024df041954ba23441dd927b30a1ed1028e92d4c351643296742a974139b6f", "0x298c0d1fc2f36e8fff334256bc5cd7e9e43b892ca176292b3a64d76227cc49a9", "0x18e6416958898ec89885353630496c2c5f572ec50dc2d04ef17869798f9aefea", "0x2d53a27c2c07fb96058b88c9789fc3f8e1d361a412bf164b2aa0e66e700b3678", "0x055277041cb7a122b1618b05ffb93f723416ea8eeb6813085dd54a99db3eb13d", "0x2643e6d5ded06a3b540a3a17e76cbced06eace4c7f8e95e99db09a1cf674fb25", "0x04c7d00cd7767e1c0a83375a7b11d43bc2fc2d9ad3ff6366890a261c53c310b2", "0x0f89d1e5310d06767b2f0b1266d56be653d83648878ea25d79c4ba05d7192e26", "0x2e6a9044a5f48fa9bb75ee3a7599da717dcc8996cec003d26de87e494ed4e97a", "0x2c99c1ff6a5a75729540c409b39faed9387759b5731f0401e86c9df9aad08cac", "0x13ead7267dc6cd6162931836b07745bf142ebf38fbb16c030a410055aaf41e6c", "0x17a87105c96c2026c777aa33a53292ee200cbb9f855d990949a36d55d576f7cd", "0x2ead3b6ddaf49661bd4bf3f6cd1f12127b8e26d7baf9366005861d08ababd4ce", "0x1947f8c0db2c58260479222a71b692e4eebf33cca2cff82f2ed62f90f51f17aa", "0x2bb8110d2109c6a1f2ec56bf72e05a161e94919bbb0d855d5bb351625a409e86", "0x017dd76cb0dba4956f8bfb5311a83222e60bf5df2e20316b336693d2871a745e", "0x1b6a1fda58c084a90932e269b8e56fb51cb7741de326280e035d9d89925a453c", "0x17d9551144697337ab2dc2942cb774bc424408dfc3fe1819b3bb30fcaf404b6a", "0x12ab68bb7ba2a36fa645f90fc7220d4f82e8384e231b09ce993938a349e0d5b5", "0x0da8dffc7bf3ca3d2adcbd362035aec9296bc74ea67d1e94a2f6f7df6a0d9219", "0x1496cb3ec7cda51d85f776d8613b0430e974d7c3a7a6a843e66fa2531da27578", "0x2e81957d2f73aab44a59030affc945b26172fce09b4d4351ae53ecdac82dd99e", "0x2fbe8d6ba5027296b98f0277b27e287e4c59e9b1f84624e0097db390fa65c090", "0x2804d45c96d2d8422c8c1ddad8c1115d92aec2b16930cd70079bd44cf41fd98d", "0x2b7ba8b64a1cb2fe67745be523ff46a4c8c0408092faa2333c45d18348211415", "0x0f506b1dbb1b5edf2b2d93bfbc297c117df212d6127cb29c6ee60a2f57b9e215", "0x2e9b52c7f050b2e79bd377d47bdc1d8246fadf3db799826364c4b7ee2133207e", "0x08151faf272100b459ea31b72c3abc2aa0ccd71adda2ec0196895c9b2f9a6c35", "0x077dd8a546141be08daca164600e35d10d4d4e9f536163d41c270c7afedb58e7", "0x3061e55590411e9f811476d6ee78bdafd88f4fc3d4be60b561eb79e0e17831e0", "0x0f5000c26e73824a45300d0420e81d8cff3e8580387e9310d4f46908cde9a92f", "0x091d831cf15ead47511b93af75c8305b55610b3116d07a164feeb6aeeb21f7a3", "0x1d3a3e735d4999103059079b59588db5fa076b94ea8c70ac7ea6cdba7f7a9553", "0x1e89d2b3e30ec664ee929c38842721c074450a0cbb42a4a929654b3756d0bbba", "0x1c4bbd5f72f3ba7d1484e517da5c0af72236341b6a8e991fe9e02a19cb24bf71", "0x2a7c81f7813b82e3b263fc5739cab23c5eb35d84c7d82123f08625db7b4fb963", "0x00d48e4062cf25ed607d179bc3d84e1f49d30e21f7838386ac3b203701ae9884", "0x17f43305942f3566265972ba5543d4a8845dac0c80e2cbcb56aab179d2854157", "0x08d87717d5eacf3e5bb3fb473776a5cc47d2ef805bda1e77059026c7c6629741", "0x19e6e275500bd0e80203aa20c0ff65f7985455cb0096088a5b9b8de314900a47", "0x096d0f3b6dfc5e9233dbaaacf69bc70a0aaaa1bf6c0e04e02dec3b5cf8889f86", "0x00b9a564349bae4ffcdb0453cb7230aec5a15f18eccdf1910c10dd7ad3aefb08", "0x237d449c1548db8987917574ce540b1ccd24eefd90e28107866a175c7c16af00", "0x12ed08f7b9d12bc30456bf424f2c05c6bc912990de7318e2257d98a413e47deb", "0x29611601abe18d26f5c198268af5f329b25f42b8f07a65849fdbdf90038408e0", "0x0e17287eeb77d085fe7a0b10fe16540368e4b1b457425bfca8638ed10f62b201", "0x29d15813db66650d5fb633cfe0fc56e242ac3d039d1de205b0a26178c46434e3", "0x07fe7f7be1fcb36aae15a33171e9d0d7f2e0e193e789e57bcb8f016e08116182", "0x1fa87be196f938da229ceac44ee343da8f2c3f956c8e50095d36b73123b7eb0d", "0x24ffdb52f4f443edfc06b8f31a9357253c6a157aa0ed35119437196c2308fd2d", "0x2d4bca77457123208fe4508ea4eb49c617032b6bc735fc5399b0c2fd6e0b6f77", "0x02311d7f0ce5763f04be120e804d7e894f789db9ebe2f85a62659a94a27d3bf7", "0x1b6bef8d51e9451f00d5faf09a78393ba83e58ed224a2e21c0039658bff79995", "0x0908d6045d96d1113c4fc30336df3011bcc56ba66eca87ec8d2075a176a76bde", "0x0d94f3ee8083301f8e3881008c66651c32f74324d41423ae0859ebc096f76b50", "0x01ea89e11b87e6fd00623489d6ddda9bf67efd74a703d3bdf58bc09f68a0112f", "0x0d07457dc3eecfc6ee77c7adaaca1f5a369e096def369e66519a88701baab786", "0x260461a3f76bb066094d76406587ab6377217fed528222da29be2cc7b90f1d2d", "0x1a229e393e2d30c7978250bfef3165f267643eb3c22dd9f1cb1ade57ec1bdc1d", "0x14ae23496945484e158822450bee1d59df28a552afc9dbdce748e36553d21786", "0x00a287200ab7d925a94553e693ad30d517961d7b5ba293d9d6ba67953438ba72", "0x178b818748633614e922de31583f27c417c365818953d40cd44f18042ee1d1d7", "0x0084ae8aeef5fb792c36cd573a0b12f0dd0c91d6d4476779e1d99b2925a05432", "0x28a6aa60d570f0999b772d7c83cf5583c9b23dff39f63388dda40f6ea4adcef2", "0x1afe2a4839132b0cae494f76f6fbb09fc97a2dcffc3cf455f644dfa1e89e019d", "0x1f5d00c0c3a24bc115798720b1f9ba6b52feaa44522ad1fec2c1ac9cc2cfa9ad", "0x280c20325d10c5c9f9526576d6019dc0248f1058a0afd5da5a0cc65a6debce93", "0x0aa34e03af3b028cb67d1f4dec7d789478a3cb73a27f01c75f84bd466ed9b32c", "0x2de51efeb36dd7f5bee9b67afe192ad7ef4abf63b4621247be883af708828074", "0x143cba615b06223f5562bd0a28a61a33cf8dda134c2b41954e1a566dd30bbf01", "0x14351a9d27d670b7aea2b999bb187d7ecb0529f9203aa036142e5277e6815f6e", "0x046922904294927e6b58028050139001843032f6967ad8a05a204425711e18ec", "0x2e056e1ce369ea903c473abf7988a24d82fe9fe0c87b7c9a605c656dacd3c5aa", "0x07245393912f85302ed7b5d3601fcbbfbaa6f35920145ef0c59ce88c1a6a9219", "0x2309fe6c306ef736f61dcaf65bf6d9b39d10d2e9fcf68ede37d511fa4bbdee11", "0x170e4332da217cb3562e25f5e200a19cf36f84c986296e71de1fb26125b6e78a", "0x1e3eacbc11e9c8190274d70bbd5dd0ac64a374595cb77dc08e33ee5e0d82c609", "0x0998326b8f93e6da7a460baf6cbfd1d29db3773070becab001c5b4af76cc24e9", "0x257d940ed0cd76647e2d3f62a38919b3c62326a494ac9e039f82a22ef1e68891", "0x0f4335d10bfc05a979f038de90daf70272bbdc2426e4988646650e164c5627b1", "0x1de2a72ae9d2a5632c3e6239e61de783b7b84c8bfbe97df965c739dca7609284", "0x12f44b0e8c694e7bbd5699e4fd0ca734a8c9cc3f59ba2eab4a329cf5cb229289", "0x0fe2692674fac2fe017fee7d922928dcbd3158ea209d7948a3d769a709d90d45", "0x1075abb0e5a208cee18841131ab4c87305f1441aafcb808cfff68477cc4fb2c4", "0x1a64cf8c020e712b334dc8164f247def9098553dcad7a440c349fe902439e93c", "0x296a51a4ab990c5934922b9f553e053293caf46316e058bc79ad13a37f7c82d3", "0x138ef5ca84980e11dc9b54ce02bd516621b65ea78ae0974c1db9a6720c00223c", "0x28a75cdad539dc300a2e9518bbfb47cfecce5da01cf1e90210782605181300b8", "0x26d2b92339d8d44b3687709aba95c380438360fdf88bfc7a011382bd2a7859e1", "0x1df11fbcb77f0ede506504bfb4088e3279a79fe6b84c3a51af512a5fa9e2ae36", "0x1c2478fa762abc607fb0a162a2473b9e4c983859e0ccf51dabde5fa7c8d67789", "0x2ddfe02cdeb5759332eae4e2b5edd5381205515653b7a766967b829cab80e18f", "0x067f9d082c4ae52e53eb02ac1080d31a93537ea24d74a510c89b7da79bc3158e", "0x010f56349169a98c01f7e8da62e515e55aebd4d44c4503783012f588a37c7280", "0x02b035879b1c570495436d250a2a45bd85510b8a6b951629a4a5bfefaa7117fc", "0x1059e4e3320b8c2d66a6b6b1511fa09e619c4b274201ee8741be77fc5b39a6b3", "0x07994b9136814469cb0a286067f632b349b5ae24dae78b056ce45d722752eb90", "0x269e470e88cbd936f4c35ec5f0042b9d6fc138f3dca5de3a83a99321c8c1e4a7", "0x129f3f097b2aa5746ffc84ae17aff9a892a6bc4bc965ab4bd1c65addefc160e0", "0x19f39b427cf94a65aa7bf76a405b43c0d0b4a824c8e60ddd645d66f0a91ebbc9", "0x1cb82f7ce4871b4ab04f77469d0100857e98d6d950dbe8ef64e35681cf888c32", "0x2fcea06bb3c4f9c9158418921b8c4ab1380d155a139894648aecee891241413b", "0x0c88d2ed1d6ffc58445502752247df534c2577b18fc83f8419fea33727e56f6e", "0x0a1da581a39db4e8dbe4f5f686327e7cafbce078ca7cdfe29ca5d3ae74ab1d26", "0x0d56f11d19300b214a6309769c23816d9109b415fe6b1fbb17de6fad7d7e12cb", "0x2e5745bd8e65df2e8c490465d8e9357e9afaf55aa182b8a46a4d8b47ca3e6be2", "0x1da803c3d0860644231a958b17d2c22ea4ada1347c5748f8ab68a402e77fe8ea", "0x146a6d1fc8428ca679fbe8c69616ff6798f59a827d47dafc15af34fe5182f08d", "0x12ea0731eff3e53c881aacc0ea77c163e30001ce74a0f5773779059f96360fb0", "0x21c455910996187ec677c08373e20c41a30a2d4c06ceaf21b91f0b14a13c9046", "0x189890c68e60d975ac6e44d343b29cda1dcba09e0a67e61e2cec8b2fb9f6d8c8", "0x2112df96cbf5b91e4f19269e8fc74f24ff3663ed5632a26c9c3b7252b502cfdb", "0x05c4b82abfb0c152923d56f0fff0411a3b5d11bf00539445ff183d6b3170fbcd", "0x27d88fe28f12c51e94af9b2b3f14099afce73a3736a9fe1cc89b11fd4b84447a", "0x17450b33b035a97eb613d289ecf775f4003044d861eb41963a5d78304ebbd905", "0x0ee988a9ebc8e608d631fe4324fd78fa77e00e402f5b4b0474723ee47ddc26fe", "0x14a89566dc2f0ff0b64dfaf5d8703dc9f74a0f9ee395961832c194e3257e0edf", "0x0ce667d93177e3dac9901ec3238fb0f403b7deb370bc069513428be70013464c", "0x016aac40ca45f818abfef9c158704a979b32a208b1557647c606de868582184c", "0x0745f2cebe4c7eb3a170b3aab5825d5c2bcba8c04d66de1007f587b2a1e535b5", "0x3061f188eb54dc71a19c698f1931ee261ec69297f79c420805ae0751496703d9", "0x1b71a417d12ce73a3b7a7025a14f8fb51a90fdec9af9b1dcd8067f5830fc17fe", "0x2abaad97be28bbf4339b5a4be2e24b57e8d9cc14775f5b717ae8cb227c8c581f", "0x15797c5a072cb00cdaa3a97cea969bcd53fb2984c23b7adb237b6065c650dc73", "0x29df7edacb34a24b1c52d8142c5338b98dc340c0cf27bcda968891e63b8a7a6b", "0x24023ac420b27f83814bd182a843f6ebe5739bb1b9c686f59ce8a1a9478d7044", "0x0bab405ed11caa543f9cd6d8863a65dd800dd08e8c9499e5d6a58474800339f5", "0x1270d139a0dd8a66bd9d360a9e0111cc440b39ad7b3ab4694b3ce507ba64a922", "0x04d722503a7341a690f338977b80ad66d0710aa65c6f27bd49823d7c12c7f8f0", "0x07a08300cf55c60191eb9e9eb63b40497980883796856aceb6147e390df57143", "0x1436ea3a03399a958710d4a76fa9140b32d5180d16dd837da335df7fbe18dc42", "0x03e5972a9ee5473d2bee70683a4054098d41faf8a44c03ea9d09cca460b186af", "0x212989d49540fc0bc6b1a2d150e3bd76a621ba2cdb4475ab1b72b0b6391d88a3", "0x0eb7f400b0e9a2a4635510a5379b4a03df8d56c54334fc8c713db96bfb3a5d99", "0x2338c348fd956af6e191909a22a99009acc53bfd8180926f591ca7f78f8f986a", "0x026afcc776011c8bec5e32f56f149a511d064df09cdb28f0965b701558e63838", "0x21da486ba0aa4577041578b2716221f15b5bb054ef276cd9a4383e646a3a23fc", "0x04accdbb6ca5032fa7396c256fdd8f52bf7412d11f318c2f8293aa1c9832b849", "0x2de8a8d4960c10ee9dfe8ab018fea3c87553992f59bcbae36cd42af4b455bc5b", "0x215ae1f57e2421bb33c2b4c2e854084cea0b12bcf61a53963057a9eaafa19a7f", "0x1a81df3c791bb08768948ae63fdbba1bd42efcb009ffb07aad880b31bb8aa68a", "0x141983471c97c0debdcd4f0f085145364900fba8429e1e5583a4e561ddad5bc9", "0x0176cb7a66c586ec1f480ceeedf332cd6cd5508d4b55a1a3286289a178864c1d", "0x03a27a1378e601187b81dfdd76e3ff8190d170d1ccd7f7cf333cb61f5e6a6afb", "0x17e1d8919b6ada78c9d1823afe824714fd0948406311b21a2b94d3a0d1c08a9d", "0x161d6423df64e1ab1e9db604809d3ac5fec7676d57d42ef3138d3f0d22116fa2", "0x2a5a183c02ec47c022b2f65642a493730eb86d977e599c0d57b1d57e21cbabb6", "0x2734cc336702645a5769e176b62627b0ad899e8d3ef24e84357214dea0675e1a", "0x19a0bc5a4ed65b51890c60994626f86d7cad3719879e00fd17b4db6f2ef09aab", "0x1db6087ea9f42685265847de13ddf18dc446b158f84bfa20a527d62ec9841398", "0x1d544bdf3c2f10b4aeeeb8543af54309705f7a275f093edc7690197ba3a5cba1", "0x2b1a876127921b75dbf4d7da75a6bedb7414bc5d55c998dbee49f47ce200f3b8", "0x276ab335062e36197fe442444f9d9450cb76e171c00c3ebfb7617bf0afbaeea8", "0x02fed58d5920b05bc742cb65a1d7e50dd8e6a1baedc27b6de3ad6a4fbbc259b5", "0x1f600a529dfad6ff62ef171974ad70e76f3733f0c98e0eb1b10c95f13676095a", "0x2ba35eaec2c38f4faaace52bbcc068d30b21149a6088d0467952542e9dd831db", "0x16630e42aaabc020163e87c1bf7463c1007dfdce3e1ce9c5c28fe64c1b7df093", "0x1585e3c692b27e7e342bfbb4bd4218e7ed01efe13c95daaaca62d2f5455f6506", "0x18d7cf9c098f734da2a04f93a309f774820e141f9aa92e8cfca42d8e22c61d9f", "0x0646a732a7d52e8abc0441ec9b04d2af6ff7eaa085a22c0cfd82ad0243b6e64d", "0x04ffa957845e1e01f2916f2243815f8e5e3c76361f3680e259218c0d28f39f14", "0x23d3c890fd6525b7814fd3c325dee2ffa11f67e14cb8bf3de22b29058276d1d0", "0x2000315723a56cbd67692146cf429cee40952ebc607b3100f21354be0605c2df", "0x0f092bdb3995305ebfe727512ebeec1ea48d29acc977cfd1169588326f50f999", "0x1b8059e616227b9a836099e9ee37329fb5a2417e3b5bafed731daaee12b9b1a6", "0x1d8e60b25f1fb1d0b97da0f17e094258aeaa40b142c97a863b245f787c75dae3", "0x1cd738d6519d3e822a6767a7dbfd23428e361e3725a95bf62d30723a414ed1dc", "0x232c85d492596d3243cd72089c50f3a691fd79fbd60b6cbbace1661a26c7a5e9", "0x0de60bdb58a4e7c7efbd95b55017d3201b746e78a9a6f4bebeb51c1d6ee4e64a", "0x02fc101a02306054035ef59b60e1e3efab2c3f65027f93da20756e8abef12057", "0x03f53ebacdef572b73bea99550064782d2919436a0f2b5d9223b2da974e3ca09", "0x0e27834cc8fbea3881ce43d9896e6079b8e8c9db4d77192daab89add326aeec8", "0x24d40616c713b9099f7c8f3aabbc731ef52e0e96693a746a387d8ce676d6f70e", "0x149d27d0cb014e5ce9c41a78a76a8ff7a37501def603b56bf0397edd176e0c68", "0x00bcc978ef69a805173a7bf1d1d56518813032502e4a1d772ad91a9a6a7e700c", "0x06964a0afbabc86a2f491e86270ead44f49f98622b88f4c44ff86830fcce1640", "0x19342122713b66231b0a7cba1993c5d904d4279e978735fa07ce6832da4d6e61", "0x26f535c20424267a91005fd224230a4aeebd3ac079a58a78a63520d58716f71e", "0x2bc43e9309052167648814454cbd77956f73aa69b201c94fb517845a8c7198b6", "0x0d9922a3643b4c9e175b57df597f10b70a46e9eda419564c33675b6afb7febf1", "0x11b438fb1df0a4557fe6b1405b6720ad4a1537fe1b42f884b841007f55c61aff", "0x1495deafa1bd1f27b7541138eae20773ba01d0d9ec10b771707955e78fdaea33", "0x26a73d4a105a86611a01bd22d90e0eb52dd0340ba7476f771190cfe587ab7d93", "0x16ddabce6e6ddd32a9f8a3a674851ed8976e0f53c1f7f6c6f5a28ccb00d97317", "0x0581eba655a038de496c785d31d65a919404bc25f0922a774bc399a67fe122f7", "0x065762a6974eb7ced80ff42b534bc545ed6cde0843d2583ee7022b9ce40fe6f9", "0x17bff1a70e36b684a2ed9dbd95530cbe9b38b87d76eaeb63359ffd250b78c5e2", "0x18e68289ed3521949172f06e8a59dd9b074dc3c9dbc8203d8fcf3818c70a1a9d", "0x02a8d8ee03d5f03a69c0b0d2b1f35792747b3429f00b6e011f4a141345e5724b", "0x0300243abed4b18e061fb1110abac6328ff55dc53162388f9dbc753749946b8f", "0x0f2ace21877125cf2e78abe96afb79fdb5d572a369f1da4f2dd7b5776f6652af", "0x26b7e92b9f4f8776b2b9af31ed850fc81dff18f70b165c8447275f6ea5c1ba87", "0x1878b3a4fae1d39825386fae5f199a1b3b5f8f50455ab5002517cbd2eb7b5fa7", "0x0062d0d89e967bb6fa4c987c0a83f65bcc795c0ea977b6dd63d625e06ffb0a55", "0x0a03b278b25ae2e7d31b31082a0d0cc57c8e7a432f24ce9fdbccd93475f3d135", "0x100da120ec2ae772921c7c04b83ed8ee7682d2077cf47740086c980e04e38f6b", "0x2342223b205a2b0279d9e5f0ce7f0f9bcd772839a34c52c57d0750be1e51385f", "0x2df7f4397bfc42dcac58480f57316877f9aa21ba908f70153dfa19b7e52f36ee", "0x23622584c86a8ab59fbaf2569481d964d1e15f8073bafa8c6e92fc2c0b187fb6", "0x06bf808cce651f581a1ab25261d66b74f604b70480af6054cc45f81da3290ac4", "0x0f53c972702cdee0f9fca0a70505cbaaf6c9605909dde03cfe4c337331fdfd72", "0x2988b1a79f8d22697c0d51b537a9b308f979792b1ca47cc408b8bd8ba6f6790e", "0x0c41be010c41896092f74093791d90c85c0404f92861f74ba1776de6da0f3e83", "0x2f88c192a822a2a0b2f12cb349e15ea2b3f3b1c83ea2bf5461abb010f80bf3ef", "0x03a443a4b0709ebd40891c593ed528cb9e9f65eecc40af1f231574b7c9738189", "0x28f8211ec19a4dc191f757371edfb788696efc2b0b592d65d8097f38e723f131", "0x0abbaa7ef23a5d98710e42a669bfa42305adfc1f8e49e05bb3abdc96c8ca73ec", "0x1f04fb54a09ee2df286b6c5e089560b8fa61e062bc90fb7298d5213491211ab0", "0x0679c1bbbfd7f4d0f2c2c18d82948d060f3563f28a1a632c99f2c64a461e8267", "0x2b44d70ebe9679bf7681b2e1a3249e29b5d800109367a7a48ffff53e969a13d4", "0x23f3f9e009138f0998b53f841093307a41ac380348ef662e348de2827ca499e3", "0x24811a70ceba527ea6c7faf5762f5813591c865170d2879a08bcad496b23201c", "0x01aa535811fbb13fe315f411cee03e20a4a3c48ec6dafa75fed0e12352c34bbb", "0x0ae3df3e4e59c999b16606ff38902c761634e2b49d63ea716929a61e8b57306b", "0x0ec1accaab8a76e43c4984f380d2fd4a1f8bbbf49a16b889467f7424cb06945e", "0x1b16efc5729c815659bcb1becfd1e1948656ffadff07978d138b54349f97b76f", "0x11fb1514ae1b038db9750815dab5d7ee929cfb80674acc541bd0679b11ff075d", "0x03e8a08bcf09eec1dc2ead9784a919810cec64993eb40cd49399c2ea31ef27fd", "0x232dc0617b6035c98f66ffc4a8945d1f878df5e3258e9b542178d6ba1b684e42", "0x12b2c5d51a142d7f8a0540228e2ff3cec778e91e4ff701deea235ec7142047f2", "0x09d6f2228acdb9d4a06577ac9f8f76f2c858ff531b957f89b822a8d28df70f0b", "0x26e61018fe4b3ef6d966954c74c63e1e1587784e276ec198232b65e3d1f3b6d1", "0x0bee9635b9ac510099b9c82dd622205c67f1361972265939c0c197f7c48a0e80", "0x2efc7456782b90263f57853eb2807e67a88cf15f2cc756b7f4a9570bcc38e379", "0x283fb2e8d6b18ec3f4115d0431753eb6facfe99f099ec679abd856917dc22f8e", "0x2889b870ee98688faee8863a5484afcb67874b33a9f0c1794b46a9263e181ab4", "0x05d7bdbf3df0f01fbaf9c1fbd87f0d8dc354875e451678476aea4b0ee0c016bc", "0x1b23124a367801d93b8fbfd222eb27d149ae2ee98c6b9dc30bb29ce3b501f7a7", "0x13f573baaed32aa63ef2ee51c9d25a996cc9cdb333bfbdd2b95e2a3a323b9f4d", "0x00fd86c6312ae538c580c6fbe67e07539643967f075c81cfc504d4a0b51d4d52", "0x11d07e190748d15d00447b4c653b055887677d1d0cb899a4a7090ea07aa0b393", "0x1b8fbeb3c715077b0a094d76e35702ffebc4740fecca3faee9608d460c1cdeaf", "0x0297423e21180784527bd90be63d021fbe8c4bdb8b204398ee1de6f3d41fcc39", "0x069fad4b2eaf9a9fd4891be5f4f128ef4cc11e4597cac7c55e3b2beded8c05a4", "0x1b351f30e204c212a5ea86b7de299b1df744d07c8ff7f7f4944514985160c49d", "0x03c814bb706f73f933bb03d3bff83fb5b793d838c2de00089d5d582183c954a0", "0x263c1482af92672f28e64ca3d4dc5374862e2e60b02c9e2fa95deca9d95b9fc8", "0x20d53632d8bd5242d9dc9ad8fabc48c6c60c6f71a235807b1b3bd0d42e187c02", "0x1312833846d4d021e6b854478da8d9d63f1e1fe36a08c6a95952ee4d1b82457e", "0x23abe598cbc971ff0b6625e441018e1ff84ea07ec5a37db3ad7ff2e18d1efdf4", "0x189b134a1aa72c806ba90d70580ee758d968c1a0acbc1d5fd3aa9881e742b784", "0x21739396f8193d4ec0154cbb302d7226e7563b803d9b6639a7ca065729d87a6d", "0x0d17bda5b0f2b08f2ca4760fbc8fec19c961c0eb8219565a2017c19b8feaddcf", "0x2294fd20b62a1854819540e5560302b45403148db6e9890bde0b0a883fe1909b", "0x2bcaa1216d5737475c013dbc3d8c54e36be0196dc71ea0981b01609369d204bc", "0x0ffc62d59cb8ef71f03d5b7cffbdf3f1e8a8b3906c8fd25b9ba85b756f774e52", "0x282b2996448809068c25fb3430dbb5bdb038e9c3810d554d7ab3ca1fb25b08e5", "0x231b7767a4cbb0088fcf156fff8c71cbdf02b27e31dfbcf7597af49fcc99d610", "0x0d52e9703d4fd0b424639d4b8173bc8ee730bc3db3c959dc1f1e36737babe865", "0x0e8d1205f76890e94beb4460955ae97b5bf295671cb1d09c581b80d0c9729755", "0x09b5e2bc828abefa93a501bf75c0a67686fd8a0cf106fdcfad65a8f20ba8b363", "0x08ee620bb73422c6b3c9506a973ed0f754f9d8106148fd626cd5a04d4386800e", "0x14deb68983af2bdb376b873303e07f4672d77798f8fa8a481a22c223eb357d19", "0x0dedb230d955cb9b02ba8a586010044e4c6eca8373192b5fffd1252927ce09b1", "0x16a6e90080ea1aa4e0d192aa13f701a781142373c0d9a985a4ca5a70e6ca20fa", "0x17cfe46ed6441eee1e9acfbfcf669efb386f270d142429b3d1c6a8f3d984cf93", "0x09d43cbd543486b31694bb1f856d876cf3f135b86aa0e2f45889966912280f31", "0x181457642e691657d5b2414b7a81beb58432ab1c9abb588c7e1b2da1f1e8aa96", "0x140504614839fd16f90f1a5a2a49f19c8b2e0a3a0ac67d1fa2a31ced43f3a27b", "0x120487061ca7d1fa340f11b2d6c7115eafb971569529424171bb1d3f10fb2afd", "0x1678ea1c9a9f63f1ff0d1eb65ff7c7d5c704b2a0dac3b15505fb45224ccce387", "0x298964c2828d52a1764b41b5fb460752ae1b8ab108fbc070bd1be15bb6faed73", "0x0ce97b6f2777c3a5eb86fec6a0ea65a823cb9bee65253157a0b9733ac6a44c01", "0x028e819231b5541e7b5243cff6f044b62e6ec5fb8adedd2b6abf879add5f8fd2", "0x1d04a29170773073c3680a0d73ba0759e80630bbb2798f4a6e77c003a145b6d7", "0x2ac32e5d907bc921779525bcb9ad4ae1a8c782ff0abeeded32787eb25275adda", "0x1f7600e736df837404f0c327205cfb931cea48bb1472ca0b45a974b6b5998b95", "0x2921dca5c0dc3bd317e0ca1557e2e72c6dfc4856fff4d705f78a7e1f55f5a3e9", "0x14f80bfc521f50b8d79457a4c2e9d7553f3f33c37649ee18a43a480ab2cd5bbf", "0x2dae059ac17079b15f6b6d0de647a6ce9af9cc9b5df5659f169be826e0ae745a", "0x27ad1fc6da5465b8b9013f0cce96db4af1dd0d18e2799b73cc5416365084a6d9", "0x13eab23fd02de014e3055b4ab42881509c6b625e04488e8ee938557c6688261f", "0x18cfb5ec775eb1683db7a7327945df44502e441a0082bbf760825fdc05054dc3", "0x26cbbfbc719cf0657d98a6fca78d2572adb2301938a1ec19bf734178c2208656", "0x0ccfe2f976ce2ba408e431ca319e95bfbeed592741e0bb33da63a03fc8402d3f", "0x17387cd668214f736af582dcbf86c00a80dcb77250be031c2e02071391d537d5", "0x2d9acf8eaa6d15e6da7ffab14e16353cf737f7e5585ef9e2e43acac6cc879742", "0x0393a4c1ee837afaeb10114ced12f96bb9084dd4a4c2750d700e876b6caefbf9", "0x0f0407a7118b6910dd909e894966b42440d616da403e0a07b3f86f4ba8011df8", "0x2f7735765e2789fd4d05c78350c35c6b84a69a74c7f69e0afa99342f1c6cdc39", "0x0dba9178d2ef6af1e01cdc2de7e85578418c26adbf376d063cb6b5b1181f41b4", "0x2144ffd569395c83073f882ecfca0d8c9428b32c9469db7760d3778649fe275d", "0x2984137c5e2012d8bd79b1d59087915b997a8aaf568df355bcf531f4014377a5", "0x0934f3b2191291cf3e631822087c19f835a28cc49b98742783224ce6cee8588f", "0x0e0ba5918aa4cbc38c47648a5b28d83c7ac2ff68a4127ece98836b5429ac3078", "0x049a3734a8e2a2ff2fa0a01e5a6c3ccfe37d09fed6c8f5dba7ef4c46b5d33b9c", "0x29fff8192128faebc6fa8432c1562bc01b7289b3fb5285e29d12a3556cc0ac49", "0x2201820de3cfa4aa21637bc742afaa39c3611951330598e61ad3dcd8190818e1", "0x094821527657e717dc177127a1b10531a2a9d18f9141a12e8c9f02d1f7ec1a1e", "0x10b58daa36c56ef2f2a4dde18698e272112fcc01e68769868e9ef1b5edbb4fc6", "0x29dad68ce58824ba5d89b7b3e7ec1fdd95c253a6b6ab2b6c418d53a57e3ee8f5", "0x1ef75d0df2fe249e6fcec6cf55699bbd616bbb1dbdb384d6aa21f5c6b5793a6f", "0x1754914267b0b09a948685fd7d60692da6c6bc990d3bd86c05d1409132920a37", "0x0f593c997ae0a9426b4fe3054b60635374a049bc55af8d13735a0a903919a66e", "0x0aa91854cab67a7a1e2982a8e515845a71913530ff5aee98c91eebf79e361825", "0x12f2e653a73a9077367b6abde35ea68cba141062ade7d3583b05da2c8f0baad8", "0x1692c37f96667fa62c619fe1a0e79abdf86d9bdd7241728228db6009ffdbf437", "0x04e833620b139d50e033dfed3b39394574f631371e31c2bb0e9c44ab8a168490", "0x14f13dfd3e5881a820ece1fe4844628b14daab9c0fbefe88acd1895c43576619", "0x0458b78330d7902b4e84f70c250bfa081c92ba1de2962e19cab628b18608d3d9", "0x2c52077e5bada6cef5397019391717264140b8a99b7d2fde520ec89d31192312", "0x01de2f57c28133226450019531ae86d160a0e72809f01593c1771e4ecca7a23c", "0x0a761fcd234c2bbd661bcd788f5b14a5ee4255190b81fd3153c003d68a3199a7", "0x0ebc974e17f713f3ea0d8b12e463fd5af0450149066d6e72322d8d0e1e1b6831", "0x1b96e0241b7221a93125215256ab608135b2214e2f04c127a3e451d7f8f7787e", "0x1df3623a81acd17b0eb45cee6638d1dd1e84966e38cdead88ca5f9f9096fbccf", "0x208f1193b74f48f50021d1c0cd977dbc6a55e2f68ef0ef0000cd21a38ce5bf08", "0x246352bb36eb512ff4f36fd8df72042f69cf67f1744521898a117b6efaec7895", "0x030e94ff4018a5a9725300f274a619de490177d1404dad9a8299ef29e0b04f1a", "0x1f52354035e44ac050ee86ca631c0e45eb5f75b44d6e7f01b0805e28066accca", "0x2659250e4f2ecc3d3cc5a1c74355aa01f2b4c3aeac607f7df372c15b85ecbe3e", "0x1be2311b78b5c1246fad8a8c346e83e6c0822df59557588b5511b4e821e2bf2c", "0x0509b5de4dff732da434372972b466d1154d194e10915b4347dfd0665a72bf9f", "0x03247680850a5862c08fbcb0fef6c739df1e88043c3a5e73531f682f93f8e975", "0x2d110540eff687a945010e040dc40497a3d1360b99073babd6911541d30be5f3", "0x07ba21b3ad4f133f69627b211c12f3244d1ab553ae6d6a1daa888d0040b07779", "0x20077db65156a8dfb7c3160a81d62e119b2a861118be3dd509cdcceffda88d10", "0x1cfea2b8984b62b28fbd6b8dbe134240e2bc10d6bbbd3c2f73a3088710b09973", "0x1549ba97fc538867506f349929a7d1b86213886e8d2abfb60fce0368798fd294", "0x246252ab7cf345e982717225f954e74e7303ce0c9b1b24b1dc06fe10fdcee4a2", "0x2b750d77da95774f2bee129b314d1c3dd5e302b666c2bea46cf886585d5ab6db", "0x236fd4947774395d7f9423527c5ba34cabd6f7a9501ccd33353234922e896e16", "0x18a4917affbb7751667f7629ec085af1a902e9b5471a02c89e05678d620bb0d0", "0x02ccfb77f9dd97d7e6a8ba9ede42364214c52a02c8a0a420ccd0768dfca171a1", "0x18db49b4f99f685906f772938980682572837a1370f023d0fa379fcf1c1ec854", "0x2040dc09e877cba004d4061b3701c6a92b03fca41c1dc6ebff525c76a1f9f7eb", "0x0bec5c4494c0b5ddbbdbcbc6fa88f438305525b4c08af59860055c1f8b73ecd9", "0x2879eec47e729739d1f79e83f7a71e631eccec2c83b43dadd6ee56841f83a1f3", "0x01a50c3a018059042e5ce95a789914e5c2800b4f4efe17336c5b2a216410018d", "0x1950b98c22b8f3cc855c167c7d9bbdfd4ea37aac98b12b1fb017257c3e7f293f", "0x13b7710d9218c0b169ee4a1276715274ce9a6468730d2de7731349ad1ae9df7c", "0x1ef80d90805ed282fa4f5e12843ed4abc8f22f5b59f04ee13349209a8bb581ee", "0x13abc482d41ef22b6e3d0db9276b75599044438af8940b5c8d58e7dfe80c44c5", "0x267d61670e53dd034e795bb20c20912163a58248709d5aba8a95c0dfaf50b02c", "0x24441cd1cd8145e42b471f82e4f7f9c28d45ac2c55e4e60d3e66d74e8b56391a", "0x0355fe883f75c1a4353c1c0daceef2d3a71a9a74c62053199e431b8fa81cb8d2", "0x0551b53fc92ae63c2b2ecbdf40ce937a2095fce0647482e64a0fdf515cf42ea8", "0x28b6aaa4aee256071d9988bff1bcc284ed68a7614622392e53465a6ea91258bc", "0x2df31d847dbffcb0444258e69876ed3b7463a49454be6ab6250a8446c6a01703", "0x1bd22453d36950ff1ba1b49bcc43f9c9d4ba388b780c43f4ad3216b9da8da126", "0x213abe279cb897fa749b6e98180a1c8225558acd88667bdfa14070baa65dc812", "0x04853a8eae790c34e5751893e34ba932024d9c549c7a7751d536be9cc9af6b94", "0x15242fbe31477d9de0c431d25d0c8e35d489dcd4c99fddf72c4f0ad4c492dd4f", "0x12f6323f31e14576328957a9f393451ddc868aa57692ca327bc5a169e93aba39", "0x1dda2035b7580e63bab28535dc392f24085d59d0bbfbb54991ba3ee9563a1899", "0x13251bb73a28dae6bd498501db9e6c58c4f9d458e8695596669b2ce90007629f", "0x0231ecedd2828136a0f76ddcddc58f9cb3a77ca05c4c0fb95ddb696040391328", "0x2002a71a926fce26a1e77ee49f68846c371b74ca7addd66da7ec5286bb7c54ab", "0x2cab6f0f98bf107f345e22dbef16b15ead94407098a933ad0591b3c4500238a5", "0x0401a74a17b514f0532e1b9b4aa4421addfec7269f934875b34d4f73cf9e876c", "0x27c78bfa3d246da84fcc765ca8b00ecdf6baca2c967796a8e8c8e1c501bf5b43", "0x18ed98acd2c8f140ad3d56627d9f0e8b41e84e30dd1c165e4043c1c43e32f663", "0x188d51f7de70e218853c44a40e505b38f45caca8c92d5090d474f2d01530db18", "0x1930b89b3303134f1f900880fd7c39c7ba00a96a972fc4f43b17e19e3f1f3d4a", "0x1fcc8426a4936736199ee6829c5f3bd947cf62dd0a92e7ad4af4cbafb490b0a8", "0x2d3847971e336844d626b6c39ed253d6994002bd07ec946b521e06e9993a2d48", "0x24217d683b98c9d630a704c3bc4550cbf70ea14dd4dd770aba45b41ff3ac0301", "0x28aef269e0a3dee65a1df434d1b2ad4dcaf8e840b1a1d067b353a2986d94d35a", "0x238b3d227a012ae13dfcb6f0b06511b9a1d7dddf0093299f0400a887a90e070e", "0x197d7a63493f21eb3e99111944cc130269461f7bd88d302f8b357bb7d686817d", "0x1bdcac988edb00a3505567ded6f9440a542df09e20aeb013c43972bbfb3ca7b6", "0x1169171163bdcc2c0c8bd9e56b1fca66e44bf61f9243343cdb1e131cc034b0b5", "0x0ab66abcb7869437b24facecee1c89b18ff8d2d024046bf978b844a1a5dd123b", "0x20b9a555a8b39f0cfbc6031a7ccde6c1185abcd06e3f6fa2c6685038b874dab2", "0x032e07028d1fef76b7ccb9dc54ff4f41da1031ffa8952c64a5437983e838cce8", "0x1573694373095bc3106e92b6b627ae4c7d0ff8e499cb2ea426d044eed818cf08", "0x01a602dfd352e43ecb2f69fcbd568b60a140ab52fa9f65b53af13123d511cb04", "0x1e2bf4fa574ea907efeb285f6766b4a17db35bcb6186c84a04602d438a6e3216", "0x2505c8d417739f21d2162110db6677017bdd46e9e105bd4a3d56147c37327a0c", "0x0e654549cd7da15a2808d06d8611796c000286fa77d02f6a0230debefc88c215", "0x06fba732c616c7828cec557ffecd6e3ae22aeb52c72a210e007fcdc5c3740079", "0x1658321ad9c3d0a3639efbb9e23aff309512599f0df251998bb3b03b7ca5692a", "0x2b33052c618387b8b667799bcb8566a6b6fc5e2ce3f9440d025fda9150d4a82b", "0x1410b1ae9db218e0ca654de70f05cecc7953ce710aefa4885f0863b8e03470c3", "0x1848e80ed144936e3122de3c706cfb707ea3fce31047e632c79638ab01dee1e9", "0x27a27ffd5e7cfa1dc5541dbc940085bd3dc590b21473d05384f8c463fb2ba936", "0x29b94126f5536a88c763d0301ae366abf2486bd300db3123762df3cb93d1d986", "0x2d5b96cdd02c61014a228fabada597a65e1c5757772248009802bba450b6049c", "0x0202c5350a6a37c6f159112efa516be970c2f88e16c01aa8462d62ee4e52043e", "0x2cac718d86bb68b80cfc3e17cb740609d425aa547aee14f9105b4da9490da8dd", "0x283e1a39e8ac0b1913943e8618a19c89c5c74b58d59299b11fd127f02cfc9891", "0x11a6bcf0ee6b0b9f6f62dc0c48168cadd576e8d86390f85c4744bd70e3c1e967", "0x126821771411186adb55ed7e59e584832bb8c3544ded7227e8d707a5b34d6137", "0x1301d280a12befc02f9a13f3a92501da7208279bc03d99e772da490e7ae069c9", "0x28e729cd9ca2716cf5e82b0c1547ff3c48958ccc49f806f9dfcd6f8d90b2e422", "0x10ff9267c3b191f2fb37450d4e015aa137b25f12294430e936e8d124a1f98d5d", "0x2c19b499d3dc4f8545d31cca6a58a6240cb2cd5ce0204239dfceddb2b77d1423", "0x2f92727812c862f5ab2543ae88bb5539fca6a97cd331fa4e5e02ef7231017ee2", "0x2b9bccea18d03f5de4dcb9a4f10ac80fb44be746fa5bf30724fe04c0d576814b", "0x1c85bb1761d97e4a576faf5c53b9bdb479a0fbc37818dda8b2abcb365e0a73f9", "0x07dae9e87df37a4014d11878b49e0571628a20ff3e6a102291d211b8fbb1ea8f", "0x2b9b3bdfe342987935c9d780df13f061f6ce9a4e6b470cc1bc7c7aaa53075332", "0x12adabe287498be9ddfab24ef799bc49be7d58f069cb49bf01c9c4b1505d0586", "0x2b206a11a92edb5474ae7ab65b8fe85d4503de3b6f4330767f938e7c67060fc6", "0x1f540c4837c4a4a75d8f830935c6d2e4d731f230dda7ba5052a50d572439c019", "0x054db8726050afda0e8a0c6b5eaf5f967d80fe0e4b85179c163f36970700d2a7", "0x2cea9ad4bafe136cce349fc6eaae2db05071118b4b82f2598a09cdc8db005af6", "0x252f699ea739d55642ef8a22b45b58eea8d55900f8ed7f391fb1f077d13f94f7", "0x1f061b04b5f927b2108c7b6be795c3c9314965107000b13bb63283f41925ad89", "0x08459eea73a94af361d3c656e75f97d27f6f1e42503fce8ecbbaf19a29186835", "0x1b3d700fe7f51953e2275604d391f136c1fda986a3d30201ed0fa140208ac812", "0x28e56028798196ed5eb0d88ed905d5b0c47e9d6110c75632a5a2ee8a86a4861d", "0x09bd90f2333c4c2cbd4bf7eddadd1fe7a91e5b98908afa559781d98a257944c8", "0x15bc1a6e6baad5f6b0c2ae3378a252b14299e0af66eccb6b266814278ed1278d", "0x19c52f0dccaa44199a7f4fc33bb47d41d6a081cf36317e7fe159e8fe6b1f0a89", "0x2547bb5ff20db5e0c592983e54fc962f0f65f478598b2cc5fecd72f169489a9a", "0x1ef0bca70036f3bf1d7d3f294c8b0a1057691172793c5be658b8d55f8e5337a5", "0x04198d58ecdcfaf0b9c2d6acedef52537d1043136b624a5a1f588a40cdeca52b", "0x2c5edf565ed2065d7d04fef7d4f7e1b1722a2d064c00549725e0715947c26f4b", "0x2bba33fbd4a8b19d6cc52859259379a3b46a9fa17cc5c4570956503ef34eb8b7", "0x2e98fad823aba9aa740aae084860f04081a58de39bbb101eefa119cd6a471fb0", "0x2d20c2cd090abd0533aa05e4b25ed9479e9ec4b21eb59c765637083b87a95921", "0x10967beee9da2505cdc53be5c9837672e8f3729c6a784b013979d8ab8a3c0a89", "0x121fb7ac685ef13f74ff829cd18af140bbed250db5896f0ffceba42d5d803a3f", "0x0142e085876884e6572c868998a0ea31776f38ab30e6c6ff74cbbef141dc906e", "0x23ca041ffe1231fcca12d630c8db597bd844191895714dd1623eafc2056c1bcb", "0x1a30767b5f4f01d00c2b01a44f01b5f136a5258f7a513d6f7d0627f778970d51", "0x1ba0ff653ae6bd81573fad7901533cc794806aa616f1a263c06fcdf07039d741", "0x094a5945a881842d8067ba77e9e699ccfc74ee8517620e6b090f5627bfd7293f", "0x21c84f232883c041a078e1cf608ec1f30a07b8859f6eb8eef7229fc6bca86f03", "0x10f83fe52b38a091bfad07decbf295e8610c63112873bb05b7ef08f7043f7bce", "0x037233401e03f5907192e47e733f792c15520c7f4975a82877db6dea638fd4db", "0x131743f65beda2de7e4bcfaa7a4bdca39d066f9c9d571529e62e7f5ce47512a2", "0x2c3e6fb700702366dd46d37f965a454869d6a3f1b8efd90cea90be0dc15deec1", "0x0bca2e8dd5719f2490699eac6bfc2b3e7c6591317c76ffb1516d126ce3ec162c", "0x09ead2ebea129a56023afa72ff1b77c6e867a72df81839fb76c2523f9452205a", "0x19a210d7be3606ebf9aecd9b0c8f3ab0bb04099584bce5a7ae2a35a0f808ce6a", "0x1b44df05ea46ec1231818008eccf838e627afb2ce4b7798aaa86f609c2423634", "0x0e4d978fa2ed0507dfa47dd154b51006d25578e18d6c9d83f8735e6a0cb7f1c4", "0x154e4d1a506fc0c10019f2f89d186f4af8a2d1b6ac3ada831ecb00f3a925ca6a", "0x23f27f2464c116f55a5b7482a1cf5e6c7bc99f12e28fbadc6fd4826072eb76e4", "0x2df196c92d5355817805c6cc3ca1029440e27db83b17fae40c35fe3518954753", "0x2b7a89ad1419e85f4d414f1a372feca6aabdd69f721f684f34fe829b2048c8d0", "0x22c29d74824817a0423ab1d70d5c9d5249b16a181034550669e7fa357d9dc33d", "0x2d44559bf653c112918fb033c8153bdce449b0f1e769e46bb91e5fac97ef7cf1", "0x21d70f181b322f74ab50c432ddf9736a1e3738c4e883625889434da50d884c8f", "0x2a437b970ff32645bd5303f9474b5743427333c6663d17f44d918e9f2ca005d4"] + ], + "M": [ + [ + ["0x066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5", "0x2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e8"], + ["0x0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff9", "0x1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c8"] + ], + [ + ["0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b", "0x16ed41e13bb9c0c66ae119424fddbcbc9314dc9fdbdeea55d6c64543dc4903e0", "0x2b90bba00fca0589f617e7dcbfe82e0df706ab640ceb247b791a93b74e36736d"], + ["0x2969f27eed31a480b9c36c764379dbca2cc8fdd1415c3dded62940bcde0bd771", "0x2e2419f9ec02ec394c9871c832963dc1b89d743c8c7b964029b2311687b1fe23", "0x101071f0032379b697315876690f053d148d4e109f5fb065c8aacc55a0f89bfa"], + ["0x143021ec686a3f330d5f9e654638065ce6cd79e28c5b3753326244ee65a1b1a7", "0x176cc029695ad02582a70eff08a6fd99d057e12e58e7d7b6b16cdfabc8ee2911", "0x19a3fc0a56702bf417ba7fee3802593fa644470307043f7773279cd71d25d5e0"] + ], + [ + ["0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad", "0x277686494f7644bbc4a9b194e10724eb967f1dc58718e59e3cedc821b2a7ae19", "0x023db68784e3f0cc0b85618826a9b3505129c16479973b0a84a4529e66b09c62", "0x1d359d245f286c12d50d663bae733f978af08cdbd63017c57b3a75646ff382c1"], + ["0x2a75a171563b807db525be259699ab28fe9bc7fb1f70943ff049bc970e841a0c", "0x083abff5e10051f078e2827d092e1ae808b4dd3e15ccc3706f38ce4157b6770e", "0x1a5ad71bbbecd8a97dc49cfdbae303ad24d5c4741eab8b7568a9ff8253a1eb6f", "0x0d745fd00dd167fb86772133640f02ce945004a7bc2c59e8790f725c5d84f0af"], + ["0x2070679e798782ef592a52ca9cef820d497ad2eecbaa7e42f366b3e521c4ed42", "0x2e18c8570d20bf5df800739a53da75d906ece318cd224ab6b3a2be979e2d7eab", "0x0fa86f0f27e4d3dd7f3367ce86f684f1f2e4386d3e5b9f38fa283c6aa723b608", "0x03f3e6fab791f16628168e4b14dbaeb657035ee3da6b2ca83f0c2491e0b403eb"], + ["0x2f545e578202c9732488540e41f783b68ff0613fd79375f8ba8b3d30958e7677", "0x23810bf82877fc19bff7eefeae3faf4bb8104c32ba4cd701596a15623d01476e", "0x014fcd5eb0be6d5beeafc4944034cf321c068ef930f10be2207ed58d2a34cdd6", "0x00c15fc3a1d5733dd835eae0823e377f8ba4a8b627627cc2bb661c25d20fb52a"] + ], + [ + ["0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1", "0x25fb50b65acf4fb047cbd3b1c17d97c7fe26ea9ca238d6e348550486e91c7765", "0x293d617d7da72102355f39ebf62f91b06deb5325f367a4556ea1e31ed5767833", "0x104d0295ab00c85e960111ac25da474366599e575a9b7edf6145f14ba6d3c1c4", "0x0aaa35e2c84baf117dea3e336cd96a39792b3813954fe9bf3ed5b90f2f69c977"], + ["0x2a70b9f1d4bbccdbc03e17c1d1dcdb02052903dc6609ea6969f661b2eb74c839", "0x281154651c921e746315a9934f1b8a1bba9f92ad8ef4b979115b8e2e991ccd7a", "0x28c2be2f8264f95f0b53c732134efa338ccd8fdb9ee2b45fb86a894f7db36c37", "0x21888041e6febd546d427c890b1883bb9b626d8cb4dc18dcc4ec8fa75e530a13", "0x14ddb5fada0171db80195b9592d8cf2be810930e3ea4574a350d65e2cbff4941"], + ["0x2f69a7198e1fbcc7dea43265306a37ed55b91bff652ad69aa4fa8478970d401d", "0x001c1edd62645b73ad931ab80e37bbb267ba312b34140e716d6a3747594d3052", "0x15b98ce93e47bc64ce2f2c96c69663c439c40c603049466fa7f9a4b228bfc32b", "0x12c7e2adfa524e5958f65be2fbac809fcba8458b28e44d9265051de33163cf9c", "0x2efc2b90d688134849018222e7b8922eaf67ce79816ef468531ec2de53bbd167"], + ["0x0c3f050a6bf5af151981e55e3e1a29a13c3ffa4550bd2514f1afd6c5f721f830", "0x0dec54e6dbf75205fa75ba7992bd34f08b2efe2ecd424a73eda7784320a1a36e", "0x1c482a25a729f5df20225815034b196098364a11f4d988fb7cc75cf32d8136fa", "0x2625ce48a7b39a4252732624e4ab94360812ac2fc9a14a5fb8b607ae9fd8514a", "0x07f017a7ebd56dd086f7cd4fd710c509ed7ef8e300b9a8bb9fb9f28af710251f"], + ["0x2a20e3a4a0e57d92f97c9d6186c6c3ea7c5e55c20146259be2f78c2ccc2e3595", "0x1049f8210566b51faafb1e9a5d63c0ee701673aed820d9c4403b01feb727a549", "0x02ecac687ef5b4b568002bd9d1b96b4bef357a69e3e86b5561b9299b82d69c8e", "0x2d3a1aea2e6d44466808f88c9ba903d3bdcb6b58ba40441ed4ebcf11bbe1e37b", "0x14074bb14c982c81c9ad171e4f35fe49b39c4a7a72dbb6d9c98d803bfed65e64"] + ], + [ + ["0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18", "0x11924f02fd19b09255aaa1cf46ea0518e3d7bfeef47421609491011db0bd0b02", "0x247fa7f022304a1994ff505456c2201ef9b717369498d3ffce446601ed9df845", "0x03fd7b19ef2c861f22f77ff810f54e277bc94eb76c02d79d986be3dcdf051c3f", "0x18bd41239c3e71579a677443ecffbd555a81eeeea69352a68b67c8563c0c2a06", "0x2d78c3a5d28de9ff35bf0a257635196e5730ca7f40493277078cd75da8b4ebdc"], + ["0x0a514a5c227f4cec95dfa029e8dd124c34895aa46bb27c0911f3780d5015540a", "0x192e16d17d956b257b85a652eefdf2ee09589eac5be80915775723d2cb1da06d", "0x298ce0c1e3113bb935c7058e7772b533b1aa9db0c0926bdc8917e5605ca3ac10", "0x094cb4e83621afd271e41bc71727f0158ebd612239ac9d698b17fe4be05b7fc8", "0x03d880395be93c27d649af5fd142e76b33918cb8841d5a28173bd5cf7d328791", "0x28eeae6b5866ad68e443bbaf91680db7d7e2b3037e38fef61b42cbccffceca81"], + ["0x278bb49a7b4e44aea46eb0f882cb692801a6e60fdd5b5c23c63cd65ccce4fe0a", "0x063edec1bed831f506af8db648d6fdea145345887e8bdcff109035a1d9b674d7", "0x1baef1cb5509b526a42061fb53657f99b3232500e855192cbe8c940e068c475f", "0x1324564ac7bdf9e22164e9858d7fa8e368b165eaea3daf4eb67ee59c0df2e5d4", "0x005761b8c6aecb1a8ca4ea4dfc2c8376064a4a8004ceeda210a55240562ddc13", "0x10c9e283159d58cb4cb2e35fde83a3ba1fdc28002ed9963d2a99f186178a148d"], + ["0x0c399e9f67aa40707a203feefb0b958bbdadcec5ca34901d253d026a2419f6a2", "0x083f0df3f1a0351d0330ec3ff602ca8cc353b7f6e762c7107184cd7b423449f6", "0x1a6764d5943fc4a720b4c0a19fdb8c711984307287a58b9b5f9f5d58212cb263", "0x011a63a26feabf87fa66bde66cc25a922c96382d76c6a7ff48f1537beaed683a", "0x08ca7b64657c3548f32bef5b63ad24288a41c0b251099ad27f9434307e3e64d4", "0x01998270471e9361955446b0cdb8bea915ec0675f1cd648ddcb04303507a4489"], + ["0x1d6b3d5f6ea369c26f825d2362933eaa31ea35ec0a77c1fbd9e01ca1523e4432", "0x119ef188bb3dd0d32306976c19941e8664be687e7a69692da27da215a6f06d40", "0x2d9e0ab5c06893dfdfd03481381ba86b6e6292df5609d71f2c64b2d9a79f809e", "0x25f16631bf77060f7ea34087c025bf135784319ef08cda2e31419ee0a529e658", "0x144c7a11da5a7c5dabae3f33fbd03cad86d18bc594c79a497ecb9894edb554f1", "0x0f971162627723f3feadacb28b0c104cb8f74de508752fa8d7c0db2af13de8ee"], + ["0x24be510095436206dd0abd0b0cbb95c883ab304aa52598b1a69306ec981a688d", "0x211610e2ad4a377426fadf7068b0c1a6c299a164c1c1a603eaed944870d0b9b9", "0x15a67d981041b1f6f09f3f9ebefd864e779d3af08157786ac077505e50ec79fc", "0x049327fa79d28c12a2c82406947f77f06775b0287468b3136877701dbe7c9598", "0x230940dcc5232658ff9c29697a3fd416d170e8c998f1aa85dea0c42d79f951aa", "0x1b121c049cd1159e289007e0c9da9995cc4bab4c26fb888ec3972a8a2e656964"] + ], + [ + ["0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d", "0x1b4bc5885d1cfc8eb691875300db5a0c7362ae381898acaf8b63cad04ecb36c6", "0x08a72fbb55dde3e93c5818571a424a54953695029eedbcf91eaeb012751c7f83", "0x0f95359a1f6845d4921892f83e500bbb1b3d3763d8fc762400af039b0abb83f5", "0x16f01751ce985328afde34d81619defb43e6c7b5dadf52d0f82472fbce7770d9", "0x1c391626328457fcafa629f3e6d33e2555e8d885e3c07cecc8af1f4d56596417", "0x00970f671b9ba35e3e3c642d1e0b8032023ed5bac91c2c1056f03965a42c5297"], + ["0x1fe9feb5c7f7c7a426bff032cd6a3158278b6c6b2cc57a871213fcafd6427989", "0x0cc7eabb154aa7955eac47a19f6437a2b8dec0fe9e5686150ff6e88b1a7b4bc4", "0x0393efd96399aa0726ef9af79be8b6c715e429906ca0d15076b5a990fea75ace", "0x0871233835b752ea030cf8a4f43771296eeb33f697d1b0825db47d39ac9e5955", "0x1a02798f047a51baaea34fcfb26ca6afe96a5fad1d2db4270497b6e6504891cb", "0x055665d76df3cd0fcb713c234ea79d06a31d6e3e4c3bcc657dba4c664d5a0da0", "0x26ee9691a638edc7c91887e302fc55e8e7758286a44845ad88fd7de3bb1052c1"], + ["0x00cdb2db9e4f9d732d217c5e3114821165d49e5a2d41556bcd53d0c4d433224c", "0x012f3bb29c972793182123f5c49306e16a3a787c4bcd9c798a131b70856d1cbe", "0x0bba9006404c5ede82b527677daf444ed43fd1e0dbdc5528dd2cd1f17ad73481", "0x17e4e73bf701f88d219acf1ca6390cc1e17c9f84b1713820837ca070be84a2dc", "0x234b8a077ef52b53a343b8da5b20cc358ad60760dd60276d485015f73d53d207", "0x2dc3fd77394b7b5ac1cbd1b46e6ded5b835d7217a4c50a487ae9a35a7fd45d9d", "0x1668477640fab14c72b1c16ff0192e48cf882f12276bd12f97f82c6ee2e61e48"], + ["0x09664216ca565c1a44fc2b98347ea8b36904b3877f2159dcc999895adeb4d70b", "0x111fd8dfce2bd3b7ba0cfa93e20fb685abf76d77305857b8df30914e4849ecef", "0x19f53c0a592b3ea93497a511e56f66753598265b1ab6774da48eec04e4d93426", "0x19b683c39d3b002fc3523b7bee5a60148b1dbdf18dd1c318e6a541e8cf66a174", "0x2547113a818779f13e3448719c7ef100b8036bb3e882dd5e6456c35311c1bd5b", "0x00cf148f8045cdbe7bb1013f72ebd4126a3e35cba9a970441ba8d5bc76943b0b", "0x3008421eed767a093322a09c3733973a038168cb28cd2e1f709076c00b869599"], + ["0x1463f51d4a4cb1eba16dbc115566aa48fe77b43c244c9988a3c658d2f56493d6", "0x16afd8f4c39038b8006a59d292aea84731c0f83832a61b82250ed90118e8fec2", "0x2296361f3bf154efbab996921936e9b1dff8352711f958638172055333e07579", "0x1c3160ebaeb10f809f69843cf8d5bbaca198d1f8e3439be29beb92d909ec891c", "0x094c66bdcff54382cd9213abe43312edb5b4d414c6e09acca24912a7635404c6", "0x2e883bd408c4c826d004ff777d7c0938434ab5bb84f3420e5d94b853b1746f89", "0x228af6d425e91a783dd18fd89a6b38bda053f2f23c094b875f27cb3abba2030b"], + ["0x214e41788bd2b990347c7f2a8f47612d4dfceb1a1e6da38165873df66ce51f59", "0x03fba82d3f783620873da94e9f4e84c8b529d76f54e4b5d7d4805272af9b9775", "0x066782fe3e869de2cebd7ebbf60fb435785329dfb12ad9bd1b4e46ed36289511", "0x1c5cd6b23ef336be01efa37a27e6b7aae5d1643fceeb212cdff51588835fb537", "0x2f3b4bf0f105f88e27248af094e29feed9ff3fad9a794e15830bd2b311539453", "0x2f4085eaa9f80a69b739fc23f2fe4057f64729b311783fcfab3a0a36fc1ff432", "0x2363603349e94f520fa1f98fe2507f6aae361934078aa59a16214c088185638b"], + ["0x0548541724f64e20128260899abe8fbcdff184a1957a9385fb715923bf0fc79d", "0x21c5e25a6991364e59a205e5b01c811deeb095680a72928369cfd2de71b14f98", "0x11c5cc53f6338c825817aff7792a2efbce8fff171300d41455a2edac37663d02", "0x27a0949fdc9f10495c4ee7214aa0edd2ad8eef68f577da8b96f9d87a39504bf9", "0x1c7fc68f3fbde4a23c455ef0d0dbce0ce556a0194e6d552c0455cbb5b0c230e2", "0x11d0f56fc00e7d85b3a2939fd33991dc8abc1ced0c3f3c530cbfb4500d63de9c", "0x01b2e9d20d9b55deb048cabe1636f0e96363bec886679cbd91f332fb2bade44f"] + ], + [ + ["0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27", "0x0e1f4e4d26e9da5f8ee3deaf48b493610be61d7d3db1d9754feca30879adc644", "0x0c298c14356a5a7f226c5a549e59184900385aafd8ea41d9746729964ef75f34", "0x19e070982d3ee675e1622ca20d13b2375e528b676706882eb8f1afe1c5045ea1", "0x0333e2923992e89dee570a650125eda75a20a72e69e10863a19d17b7beea9295", "0x1944aac72bf6fbcdec04361238c3c4d9510d5f07439a1b6ff41f652990be0139", "0x27d802ad019a42fd04892ad167d9e83596a730605890401319661675736359f3", "0x2bd05a040a0987ac6bc01f67242d54b7a2c527a970ad2815b273471eb9623e73"], + ["0x254b8126f45243f14dd8211df41fe5516b35952d56c62678c148e73cdbad3718", "0x2089c597feaa4ca9a202edfbc823763100e294c9e33000e513b2a216491d474a", "0x0ddeaa906cb65f3e9c9bea6344dda8db90c253c0f7f99ecef88786fefe0e5cc3", "0x1114c9120442750493d999d4dd45dbd4f3b75ab183209235396ce83d8ee9916f", "0x2e8b35a8c29e639dde8dfd49b4b347f00ee467863f6efcb355fa1534ef70783f", "0x20e6cc613ae6cb0a518425f53db1298a7f8859ee20aad08320d0a4f9bbfe8512", "0x2420dd1281fc0dfac176a752d15906b55f137b9cc320d5d5daa9df3f3d43d3e6", "0x17bd4f2726748d99925af9a2f2929e231c1869428c13b1e397bb0099191723a3"], + ["0x270712f18b1518fafe093660f492cdbc2fb70ffab31d8a4d8a1934be68792369", "0x107cfefa1e864045a668396526ed9f675b2bbf272ca635d8d3e8801099bb97d0", "0x04b96a296a35acf415929b8784b6bba64a630d29dff28b628fc98ef708230b57", "0x1f0465a9c133a1c6805d705be6b3ea9912a2d062c34dbef92de46955b83e7bd9", "0x27a2b7f5549e5eedb90105c0f8e20f0571ab7af0801f1bdd23eaad91f2229a13", "0x031b0afb7ab2f1d241f882178f7dcdad48591cc67905d651dbcafce94b14d073", "0x22e0323bbbdace5fbc74a0b3dedea6e1e3bf10e84dfc71fe395089ac197af744", "0x1eef36d62f3f864eae67c63324e47a6344e33a2d5bfb82f05bef9900c54e745a"], + ["0x2bfc3981a249aeaaec4ab9001727d32d4e6fe75598ee964fc85cf30d50df584b", "0x021630ec3f236ed219f73cc617b9f8b267dbee99a63c528544ea31b27cde49fb", "0x28890a03199b727fede5ed0090ed69494c053c97930fbb6c52358b0d7d104c16", "0x1b80f3f439396c2f466b8e9b25765a014970455a1beaed7a6fa308dac75fb582", "0x2a4bbad245a33e5d9701537f751410e4ff297b8f1d1d9098fe9c518c261a1b0a", "0x1e431f2b1b7edae4f8cbb5d307bf5131c352c2a215a870d739617f4b017c6d16", "0x255639889a259ebe59f74a8fdf2efce7fde1e3a666b35d8e6ec601d4d0b22689", "0x2d0d8a814cfa16c2323f174be2dcbe0c295829fc59bf2a89f13b4ead0eb056a8"], + ["0x16060a17e1b11f851ceab20464572b3d78d582ea050014843101485f65ab723d", "0x2741203d66c523c7639ea713b20346119c961cc1e9659a458af74cbee16d71bf", "0x2208c5004806c7aaf58314590bcbea16168fe62ec0497afc6bdd2938c12d9a23", "0x1c01f6db435dc4885eef9cdfed193250b9d3eb4cee366674b07bdd194ff349fd", "0x1f0e36c2cf9ac2c4388e74966d9ee7d1a0b3186916a08cfa306f6bb36d21e548", "0x199fc2be60e49e679ec2ede6cf3345dcb3b918e5b3e07c2cd8141333934e178f", "0x0a38d163b8a2fa3092999c1797b1af909bd971a25a656baefbdbdfa3628e678f", "0x198949eef2b27c2b9c3d699e3fe57da3d5b509c2b670afce400aba1aaa9ed51f"], + ["0x00e73217a106c402e4c6c166cd9ef1fd2a0b16ac1cb43646bc1c726f83177770", "0x17b2092b0f634576b654c6de21a1a8d812bd4c01559fff83217129082e2b2b20", "0x2f24d609cb23720eda55fae29ec6f19902c42d8bf904fb656202736d97b2eb69", "0x2df183fe2bc9b8b75773fa961c8d4117e582a80b656af5c58763e7024ea4189c", "0x15fe963f5bd0d92878c10a894e118018db82e63528afa4d4703e9881eda118d1", "0x0af594dc4030e8509701fbd3d8995f73126ad72a7af0fff344eee82a31ce77ff", "0x0b8e857d9fb1d554f3a4ec307ad907de7a436438603af1b28d4e4ee379960ce7", "0x07ebcd25a10e56693a28155fcdaf7b3519d9e0e08241e21789696cb76ee06297"], + ["0x04b959ca07e7182ca08f2351a03545bd7ab676f740b02331637ea1434c8545ec", "0x068e8e63411df2b3a9d7c567f66419a580d3ba15bbfdd1226effa3fd6bd47b3c", "0x0344d0c772c2f053664a7b9266b19d48ae5d2ab3d1c1a18150754ab4b836afd3", "0x07e0cca1a35ed15fbdb619bfaecc7a9a8f4c51293927562acea8eab817c6b84b", "0x222edf3e26bf74b2f503983189201d4ee8e6d6fad341d7ff50748dd739749df6", "0x2d4308b4823b465db653d36818181209d23cd12f844f72f7548d49e55055a601", "0x2e8e67fc85f9b4d00e9e1197b35bedf55afd7300a4c370987c83c15cf73cae3c", "0x22f1bc4ec138b596128ce5ee5b8184964cc262318e17ad21d45c552477f53e61"], + ["0x0fc9cc95222f92715cf7476010225e14cc38f314071e50e0f3bc9ec674a8aacc", "0x2f5a2a0cd0cb24896c94878a8106d57e82c68dcf1e209167a45ae9cf8570fed2", "0x2cd19b5c55bab1809e52cc9fc1a038c08935da19cfc563e7048d6bd1970a0c8e", "0x24ff2986781fe40ae61e8f5ca0ef17c5a5ea7bddbc127d431547c1f6a8f5cedd", "0x12a87d0c5419f448419840e5e5a92d276ace00963d987f2a1008913d98a27114", "0x0af3ceff2c865a901b9406d5d9b2fc58833d642f46c6493ca030ef595061ec6c", "0x27f42d86842f4d8a8c3aff2f47ffc1e179f097aaecce55bba0b0fdfd5b190aa7", "0x2b6b3bc340d4119e57831e4a2187013f1216ab3b639945dd92a984943241f1d0"] + ], + [ + ["0x0190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56", "0x1f8d3a9d2d31ab32d9bdb6375170dbba89f6f8f74d16e4fd02f3675d5fe2baad", "0x230c694139416f40422d713e13c056c45c3c631b346854523970eaea58a37df4", "0x2063a461ad06315ae5992a53a14bb598367624afc2833ccbb83af92ca0f6a334", "0x0c574e628f84b6ba9d17b9d2bfd4747e06dd68cda2383d64ce365927098c046f", "0x276428d88040a3e0f442424d2ffcb8d19becf3fb6ca02c1b5c61b5ddc53ceb90", "0x24bdf6101b2f223174e869d6aecbe8ea5b04a14c38fdf1494393cc6fdb3e42a5", "0x180fca184150c0e354b4b3a4a075824d4b68e8274943f4dd8b0c64eca25dc68e", "0x10726dcff87299c8532159976607633f1bc2ad24453c1bab26b726b82d756ebb"], + ["0x0607cd8ff9b889773c9eb68b8a4366469d470cd7c6004106caae95c10c424419", "0x2591580b73e7b5d5f34d9fdc0cf7fe3de7f6a18a255e4376fde3eb31dfa51d79", "0x093cff12150aecb3465c4c99f044be85dcc1eba21d429132c2260dd3d12ea441", "0x059116da88a081267dd888204fc6fb79046c3297ccb65f9e0fe0d50b4db44ec6", "0x2c948497373514e7d9846dea9ddf5755337ddb661043d6c628cecb8f55173bd8", "0x2c2729812be9ed432e75709133119cb0a14e1b6ea31c1279b7c3e495deaf108e", "0x2280d6d4718f9f06b551a988408f0515070e455ed63377e910be087fb79bd191", "0x1b1bba125505ae9675bcec7c9af579c5cc83533c9d555be398afa09cbf95d6a7", "0x17013257716d3cbae28e1c272cb6aaa2844136049ffbca05ca201523032c64d4"], + ["0x1da524cff60b64856dc1f5dde0ff62da7b182da26908f6ba6e590adebf91b40c", "0x2bb4565893b6ffc5799139cdc151158749c2c65db48672abaf24c5b3813c0e2b", "0x25081a00fc20ae366b1fe7ea6b09e62a51f6fd377f608368c12ba4e3bf89935f", "0x1b43719cd10b60c5647c097d1fa84b8f3c12c9c475ade13b388c7ec47240be11", "0x22dd201ecbab94a2ee393796fefcca63aa54d9a19ab9c7f20a0bedcfb9d191f2", "0x0b8e79838cd30707999c621621e77e69c0f433d543b79c668cf379b6623bac84", "0x02082d5647658eae648936cefbedfad2cd0538572aa6122ca68ccced68f432f4", "0x277bae2fc597a536adbe9c24bc8ee81731eddb574c6a5142c1c5a48c51f82e81", "0x30354c9f29c920c05e99d7cc747510e76f7fa69a71594a290eae7293c5a48441"], + ["0x22f33eaee3c481e65801b761a72832908f066fe21dab5fa5ec1d4c6e99dd6dfc", "0x1c5ce77776893d48147444b9f6d66a4da29c95707de832756c739eab8e87658f", "0x2ab8edd22fbe2a1cd3ce9a4212d0efb282ccac28af4d876fc946203070c920bd", "0x26e49154acca24424d5f8d29f650f9824de82eb7887329cbc83a56ae01dee4a2", "0x0badd77f516d4fa321d1099bc1e51909001591ad9919f08ce9718aeeb2bca4d6", "0x23671c5d1fb556063a64b5f664340936dc5ffedd4bdbaa2e96205704da5864f5", "0x020d7202ccde24901d6ce2d107e79e1fd78d6c9398ba7a4996f116adef14def3", "0x1d86496995f14264e7a054cc8224900368775c3e5ac6b5f54285f4a73c2171ae", "0x136961746d34fd196025173c4d79bf8b3d1d05291c584928d97258fd5fb4fb4e"], + ["0x075f84e9c719bb8de8e61083290daff19aaa4337454e5ba804257787470f2f54", "0x175505391c619b75530fa83e513184381e603d8449d1e070017ee8ec0a4d25f9", "0x29c5ce97710c1578a0990d862cf881badf10e4f6bde629199e803cd1c426be4e", "0x2caf86cff60521ccc5ec6e2e2c83b4707bb90f948644bfaa8f80b0afcd4cde10", "0x24f92793d67638b4abfdf48ce3b62ab5d0e1b250dc274d746f2f7d0544185b62", "0x02809dfe24c7fd7cd49b97b27150f4d38a340b60f0733fd4530cd4269b4811e4", "0x26709688150ed035f959687edf7747ee8ee946b770173dbe50390ab8c08c5f9c", "0x1e5ae4c295ad5a17e00f973f136f1230a6fb85637631b306d3705f80effac24a", "0x2310e2337e4d53c1635da18a2722178d55af583591bcc317eba842df247deaa9"], + ["0x2084be9a57e9adb80303a8dcaffd4bb77adb6815168b36a1d363b38425437135", "0x06ed1d14dedf763a3065f27e7a46d7fbf20d2b4e86a0db86692a269767d577e3", "0x1324544a54174cf7b3cd8ffc4b86320f2319d9b88c1779b89b1916018f3fb9b7", "0x2e923ea46d492247e12e0a7dccf6620f5eea6629b7532b3af246809398859633", "0x000bbbbb87eccc91d5fb07b6c55088ca514d68ddd93cf31c8ed2d2cc7f23b22b", "0x26010a3f5295bb4481310cbca5384a47af0f9905e4c76bf54b870ef0ffefa1c8", "0x0751a4a4af246255ce412c4bb47fa34a51b8628f3cd902077775c8fa488e7519", "0x28d2351619ccc6fb31ad4206e2c064bf4d9b2292b28463e53e4771f10670ddbf", "0x1815e4f7b40a7027878640a6cdc4b2854300cf6fd4953c2ac2c77625ef44ae04"], + ["0x0b303449f1bf4b92d2cbc26ab34b4215b6dd7af010747a705b2a6e3398882922", "0x140cdda33bb7a79b2baa851df5ad459e7df569b9f2c3da542d3b8d5b76b356ce", "0x1d18b25aac98b282e10b5a3a74ce5caa169a5c30bae52bba280ed517f3f82fef", "0x1ec6c32f513b8f30c7aab42e7d91aecbe54aeb188a84f8ca46bd7e9741b9a389", "0x089beeb21c346cb9bc182aa2b70f853f1a2258d56893ce5a948d9c645ecbc9bb", "0x2790643a66038cce4a6488847d8d2da2eea84961f8134b1be36947f803527e67", "0x159e25e00326a76f25c1143a5be6f53fa51ccf368d9974cc6d93cce8eb81d37c", "0x2486b884370d49a003fd041e800f0a898ab61b5e947997461ee3284241f3baaa", "0x111efc136a9dfe0ebcffae8943e679cc0fbf62fd0ce03b409fecd932a8281b10"], + ["0x0c099bc68243537203f97254f08dfb7efc09de8f96d72f3b3e0aaded45e18b4a", "0x035e9ecc464cb431cc92c3356e8a98547e843ed1324c1e971179fd1ad9fd51a0", "0x02f35e921dae87f1284c0c8ae737dbdc4936cbbb03a03a5918552fe565270a8d", "0x23a72c27f4f5e6ea5325d5b368f98b40693b2db1e8ca3d096739753dc5678303", "0x0e07b1d22eed54fdf966ffdfbcebb653b5dac3b2a91f50272876efb17158be2c", "0x05fa56d431d4bd09625a86d3623464dc90bd541ea41748f2026f65025ea9d2f2", "0x2d6f3e0e98413d5d6a1101b245c9e711bb2e956e27a5870784fd5403b39867cc", "0x213176bc1a04939fe7d6bc30691aabd6152ed24f309bff3939a0d91d54c67a66", "0x0a5a1148dad4562eab18162b3914b64d5753e9617a5154e93f7e43e6860687ea"], + ["0x1c5fd9060d4e0d999264429a5004c165570bd1675b09f977708b1ca48e616388", "0x129f06c930edd36fc2fb7044a6332751a2e3bcdbe756d883716cead6bc7063cb", "0x14a5ce1603228d6e6fade57c1da536659ba46d1b25566f12c28debcbedc5b4f4", "0x143617efcdbbc0d27a091f28039eba8abb39392e2a462850b1f9cd8532f5075f", "0x2885f2d44be0ecff57d92a4384edb5bebfb585bb23eae2a2ea50806bab8b7bd7", "0x04715db6d86b513d002589f1f9522f7de3b1a8bd702c167559ede97da2c0076d", "0x088887966c079d2e689a8d6d7bd913e92d326959bada59b99a653feaadf6c467", "0x12ded41f8047da3e6c22bfed3ec5bb52d027e560048db4c0f96ca9fa85e17bc3", "0x1f47c67a4325672f17b8bd1ddbd80e4e9e6c62419a9c204cc7e8821892431aae"] + ], + [ + ["0x0b1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098", "0x2fe429db8068e61b82624f25766273cd9fe6368ff097eab97aaa09be4c630e27", "0x2e750867942439083365d21fe760c7dfec9e3593c67de12a4255c6b01648b690", "0x23237985a96b177ff7c01486ab0d603d29991b8324abd6b07dbb96f5c21ba17f", "0x15ccec857b25934ffd429af92c910db31d00dc1c3fb83745a31d8131ea5baa85", "0x17102ad2d98043e5509e76c331e6b22d5fb62d074760806aa675764660eb56d2", "0x0a4ecaabde9d1ea11c81dafa8d5d4869bee7ad0bf4eb78397b71b8f989cf9812", "0x0ec1821648fddc448a1512aecc8ac37714923981940f5542737a468d4d887c8f", "0x255a493aa4becd9d137eb76941c4120784c1233f6c5fdf5d65c0832af543e415", "0x120f44670301b1435249294d9833d59e01682af4c8658719727678fd9ab7ef2e"], + ["0x1abb95b6e33243a050e563b5c4fd059de5513ec28994a6f60e57c98d3bc8f586", "0x0a5b604c958bc90071ad10618b1772599e0c8dddfb641131fef39daa58a39923", "0x24e82df5873953792baca345b7c19f61039adeb1190592bca18cf4f907c1a6fe", "0x10e3349eefd3a112417e110fd9e832078e54b5f4537cd018aee3dfbb90541581", "0x165adebe00c7ba019499018c96f5c5870eca5679c90c843d9527184a525fcca0", "0x01fb81218feeedf4e7e0e33dd8ecbe62d65c6b7d4233f32e073571ff862d89c3", "0x1be2802fbea51003aafae82ff4499d1158377b108f8b020c82b8460a8d603afa", "0x0418081de8c2958355a1e45e28ee51ba2c66cad04835f4fbd81e696de6398769", "0x1f3e937ab29f3a88c6fe438698a7198a5209aa6ac9f141319f3bb201e7fd6716", "0x0113e968769b0ea32cb7b5ff70484aacc96f13dc2827a8e5e611695e0797fc3c"], + ["0x110d213a836478aa301bc1fd4edd388507d87745b3abfba5bf282afd21f7242a", "0x2cdee0c635a4fcd9549f0f91b4f4a9b628aa7319e2eaa094a693b38b5cf9a242", "0x00d60f0585755d48577b465746de8e286e49925150f1784f29fb6b96dbd8f0ec", "0x2168dcf216d8369a626ccc61453236a389d02519f3052e87eff9ccb8aa299c46", "0x03530dd962ef23dc16f79b28c1fc1ddafe9458be15174cbbbf3a806de5f63cef", "0x1cedc6d4e1476741c1099557e58e642c42892aa36e2d0a793f670781a21b0dbd", "0x269c8c139a4f61e16bfaae9e8bbb1c69808c9071083b0a339dff9e4904b443d6", "0x0ea7bc52503e2039d277912e022fd6d0ded5bc687c6ff97194976f3a28bd30c6", "0x2180b9eb156eb33cad1aa750ea0fa3ddbfa4127296e497f86e6441e052a23b45", "0x18cd1471430adad31e45b529494fc8a7e319bd2fc0619c99207dfacdb657bbf7"], + ["0x18edb2d105bb53b768ae0137850dc2d2bf6d1303a1f8ee4aadf76d8f81990588", "0x2c962d7d54a98c3a82a638d8c82450813f42071a17c6c05f470b44958f57ef15", "0x1f495e93014314988dace5e4e867f5109e09fa00fce87929d1e0ece95a449345", "0x262903f36acf0dc055f610397df0794fbc30927ef185c6356bc33e5c31faef9f", "0x1b7e922b3dd503e6441ada966c8b3ba7b908cb2b98b5fbe1e4c2fb982455baa2", "0x1a88ae2fde12ba32e5f4eccacf11c25bc163bdedaaa8824474cae5869e5ec20f", "0x23407728269c70fe712b021915059dc8dc2124ae648e2cb549fc76362bc2b97d", "0x12ab318626d511c23d28baa9fb5b5802e0ab95e3cb17aedbaa25f4d084cfda57", "0x1cc69d8f34ee877838950e20a9d4c4bd3e9acaf3d693aa64cae04faa225a2e1e", "0x23d0fa965e920dfc530b52670b1e32e2d5fc2821fc918c0844a003b7141825ad"], + ["0x1e53e92df6c53ecec4c0de5b07dc4c9a0c5545f2abcc1fabf4ccb84a0a6e2c27", "0x2bc761185f59efb7b67bcf1d3e54da00daea067fe49e3f1d9334e5470438b454", "0x124331e0ecb1d9808a1d91efaa98950abe930c46fee5a30d5ad07976a5bc0263", "0x0046887724f29321895c2ef8bc0cf545df773c04baa097c352a4165395cca786", "0x247460ad4580a18639eada69b904c91b19f7d4387435707696c40bac3bfbdd33", "0x265412a4e3b5560aba502d20ed833deff707b7d425ba3c09f3b6392b6f1f4339", "0x02ad06fc9f81684542e0458aae19c0a7c18be94f1de3fce6a3e5d2335a01e90e", "0x0d1e34192343d66fc1b6591cb6a3b0602b0835a403c7227dbcbd72fd8000c6f2", "0x0b565179887ee30e381631d8e5dd357c70ee2ebb410617d2321f6d8537f98970", "0x2ea6b32af37cd765d728ddefa30918902a21e19b291400854f56393c56d69460"], + ["0x10fcb817e10f69f7074e64c393b807cdddf33c84a8b5cfe33f44b73fe18c0e36", "0x2e450d1fe7773c9889a0be55e44453bcc844c94b56fc0bb806eb9982ac553428", "0x2f421fcf54d77dd38930cd69076f9baadd3d3f1947371215a66c894d637e89b9", "0x13276081db012d1d4f4b7dd2d8a2f8a5180d2ecc33854cdd35f9ceb07bf40d53", "0x144d5be38d44c5bf8f3c5735334fb1a07c13702d86af39ba0b4220ec9a7568a2", "0x12691b599d32edc48ae99c7a73abd59e5b18f4bf773fa1051cabd2c49aaabf6b", "0x0578a55f0fda29909b9f850c3d74be6668e4444ac691764f1644a626498218e4", "0x12e3b04924b2cf6e407bd26b3cd47bca61d6ffcf7efa1aea1c2e0d8a49de64be", "0x1162a56ed3bbbb4b6760a16a300ba7202130086da4d5588a70926423ff8c242f", "0x03340cacb04d5a85614eacc4be3352938baa3fc714c2575aa9d85f739113c50b"], + ["0x2b1d8c11fc652c593543b6f9800bb7d0c9371dedb96f08bbbccffdc6cc44db98", "0x25c0f87c946f375e341f72f6a8dd63a94e86f4ad182715bcfcbf2b28df6b4a0d", "0x0543b2bc66f3b2d93d4c1882039ddb37c70c0b437ac23ac5bb9868e6df24485e", "0x2dd117218538e8acb0301eb40adfa2435f5bffa8028ff52f96a99d77fe927066", "0x269b06b31e89ff132daebc200efdc8ab068136fce65f2fc55a1dcb939b7fc6f5", "0x20d4401cbbf92877ecf616d7d28551cb0aec552fae9518dcf9218c38c1a0bc90", "0x2ee2da24b7f8e7035fb73b08c3414833ffa38e14b1faac198a860a5767d2feed", "0x06dd89fabf92546847b9c13b3a36bbc7e679c5bb0dd785403f3ff49bbe61c8e7", "0x1360f719034572b59410c529b62a62aa94565654597e42779f33400f1d17d652", "0x15ff827e034c02a90767f0152840e7fc6db983e496ea0519c0ff41dea8180628"], + ["0x19f473e40c05676d5f8d51e11336e9c65cb32828c397cc8125f1dc667b6cadf7", "0x0bfe6fc08e2a2e1b8911ae065b985388fcd105a490a4ab943b25558cf3d054b6", "0x203d9ee6462a586914fe7dbfc1bfa29773b7f9b3d63aea4120c601129c16660f", "0x1b912abf2e1649ad4834ca5b2a3831cc9c207d4d08e4bf274a79dca80e52fe24", "0x062caa3c9fd39b69864faf701dc8a4588571cb31bfd5c9c3c59dfd97e99f701a", "0x138c03a2ecea183cb8f265eecd7e93275b0bb98297c1545a72197dc6ddd9335f", "0x11589959fc2493292fb6c50730e74994ad7cd6d3533c3b00a57dae833cc701e5", "0x17b9facdbe747d7c5163ca00e3b0b825d012ed4357604e7185750d677c6b357f", "0x0c603d03f92860da8a68c6dcb1924d1a45099aea50f1a362edb2f2a7ddfe90ff", "0x05d56f0c844d169248503135e4deb9ffd6329d54cfceed4b947d78a568681147"], + ["0x0fcf3a4d9c6c3392de1bdfe25cfb86817ecb80c51be17d47f79750201f1fcd01", "0x0c182e438257c4ad7e7b79c3b68d60984e507ac597cb47dc31d913a7a540fd9a", "0x025a1ecbd7e7893f646f35d3e07ee997c94354737884fe6c26ae8155760db8aa", "0x20135ff263867f708ee0275170cc9788689c088b2933a361c775cf430748ef1f", "0x20e160f772998a2f7d0064c7efa15884ebc6d8b71821cd5336e2df14341c95ee", "0x150df11291b680e3ba925a0471c7fbb30e704ab4b554ea5d8c07b70b2b96202a", "0x17572029e8e897202d0e65c2172c571d4b91ca856e7ad3f118ad922127b87054", "0x0aff15650b805bff6f8b3515d5e29cf914b7349af8924e796009f8a4f1b7264c", "0x1a918fc117d9a6445e363ee5833dc01411034b95384d98eee47ae896f92a7d67", "0x2e5618411efea30cc7de310d4872597d087c1e122e02ebb117db0c2dff04fc0c"], + ["0x23b02d00fe2634889673a7d04736fe15b9f62652b1c0626a19af8d6085d70822", "0x2ff4d0b8798a82667793533730083c25223d589cdd079362f1e8c2e01d54476a", "0x1d897f60e87fce5ceed8da7f2f4a63fdee7ff9dcf179c08e05e9e5cdd8238ac7", "0x0ba6d4ceee2182d3f2ab2e4a3ad08fc31f7f4cc0fec91ad53e92bf8ada3e278f", "0x05ce94b8e9a60b28947710461d87c7757246266ae8fa5d3af3ea81776b5b8c07", "0x0c346b046af03cb9048c29353e1107d6b75e590bb2d422ea83c09a5da1ba0c65", "0x2fbf8cc6ec7efb30106423f2e67b0aa9403360e56e88b6c5cbaec34a80bdc7f4", "0x0d064e72449efc11d1e90b97749de3909490b912bb1f72f542f41d62ab2d847a", "0x02a88e0c35617665f3cc2fc77d90afc7a8d1001c71debcf2733ca0c71a19e1ea", "0x15eeb3e0541bcf010da0c47adb12f6df540b974d439c93e19ea4d02f9975d446"] + ], + [ + ["0x026dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e", "0x011a131a3778c3774233bc54096419d463d3abbae18322a7e77a511881665f93", "0x2a18ab4dc4777e13cb8358c1c423153570d1cb909544243abdacd4547c8ec3aa", "0x16ebd782cbcf6d63c38b87b27db2a4a5af5847a9a60889c4cf6aa318d6866b1e", "0x02b7ed47fac275d34f842f09b01ef9421014de040c26a591595b227ba7bc6fb2", "0x0c5e49e319fb9535073f07f9e055accaf3e3f24a35dcb46cab67dfc648efaf30", "0x0161e4ae5b2d24cd638ba5c32bc2317bf90d404e37e003f1055d9a96e406d30d", "0x223c7fc6d24fc53d1b428edb8f1c52d20ceec592187d2c7a6b0b147b6292b81e", "0x1ae060e39b338d09845e2e9ebeb70bfb74cd4af926217f5732be2b6cb7fe72a6", "0x046191ab41e93929ea51f190fd4e773ac8d5083328d4b2f04828dca3e69098c3", "0x14ba1b5383e3733c63d00c32c2bbffd8e54507ed33bf7544c86388191eca3e40"], + ["0x009813c803ff84a3694eedaf4b1c2172615275dc18ca654c799a70440946ccf0", "0x1495af03dc9180c886f0e1bdaf9d18e32e6b0d1b80370e7cbe5745dafc433523", "0x0d95e8cf8a66b56c32e7d11e0107e41e1297122d1acc41332f1b49895a3c97fc", "0x0b05f16108c4616a973b01d82e50d4fc9dcdcce67d2d21f852816bd234e9872b", "0x230b62315b30bc49d73dff8a9de79c620e03c747b14c432f170715e588d605aa", "0x15d217a31784741048f326e155af96e90b5aae734f06779e698864039c92e123", "0x0af9afbecae1761cc17d44b51ca66d1dbdeaf341e85f1082958f9cb72f7b55d4", "0x1da4f4e3c6790ae1b89c4118861d8ca2a50cc82a4e7f1ed3c5ba8cb944ba4689", "0x2860aa52dc2f967c0c1a0b942ac81e02189d031430c11a919a5aa895bcfb6151", "0x16ff33d67c85121bcee7d81cff1618927f1c92b4d1d21c2a07b6ae18b2b7b9b7", "0x1ba0e835f47626b0d82426900c49170a8be29c39d90337aa5fc10764e2321a1b"], + ["0x00202973f7fba5bd21ed58bfe7156d7b29010d41090f63f1bb290c1d5da1ad60", "0x119344c53707f00243983c6d024fd49a0f8af80e5871933e58ff87c3a1f48b93", "0x07c22f96f2f55653d04edc63150567a7a04609b0b79eecfacb1485dceb7bc873", "0x2f394cfd3e442503c3a22512aa4b76b95b743c7076ca4115a9fbbb7c6b07ee5d", "0x206351750037bdc90d4f3e7918619fc690c2b5857f8bfbd86d7c001e4cf2ca18", "0x1accea09c2bfd17f4061725c712fd1976a07e773e54d906da166215201a58136", "0x05e52c0ff8c04a8e5e3c7eafa1d0902fe63e35898934b00f4333b38fe614f913", "0x2e708baaf894bc5835e5fea81227fa8cfaef99086d12b0a3a7f3f85bbca61d28", "0x0ac23f00ff015baab1c8be9a90943c3c72d17818be7ad427c45eb3ff1828727d", "0x02134798f4ca7fb9928012c937f37de87432b8665aeedf373e7ffa6fe0c13d00", "0x0219f5e28a5fa52689d2b7be432624280c940c9bf9883c1fb0fe929f78873c1b"], + ["0x12305eadf64dac24a7913a62d95aefd45f48355576c671e56fde9cc7c8344ffd", "0x00a92bd6a919d1605615786f2efe80743ca57c10ec80cfb926722b5bed408b79", "0x0f716c54de41920c401a62df8f9186e19b9523e98637a5b113d61ccc30ba0213", "0x0a157e244f939125d57f9c8e66f7d88ec0fb3c05b90f526bac0871bca84677f5", "0x2218be861d524eaf03b9420b1368e9c5aa7cefee72d0e6ef80732ee9d7e6e2c0", "0x2f9bd19d0c8c3887a7fc0173f863f075e66b183ad89f13704930416e1d5cb7ec", "0x14eb401c1084a9ddcd5d0092e5d1a299aa0f55c351545c781703c01ce87d6b29", "0x13fe23be24261ba5b92d363989f58e17fceed4a858d1c61fc2cf2b71dbdb6936", "0x032fa2f166622f057f61a9405c9256223cab2ba82c9495607921755ab018f690", "0x2aeddbfa245756ad1e1658629f747b8da7593b195cc950324f95edc9eda42aaf", "0x123a6055681023b16570c70fcdf3ae8e387a973690b9e6761be22f9941d7ef76"], + ["0x25c783ad66d6a1fc6c84770bd637f6207097dffb0378d7e0395f8c0b86b505f9", "0x1c7d3a92caa435cdd974520bb6fb6cac81634cc9bf4e534df77736e06d768c3c", "0x2cd68fc31b67dc45fb6b16f42b5eb89dba2ae7e9aa50c5f1915275a81887190a", "0x1d4567c12db648d4a9c41324c0329325b76a07730fad72ef9e490a748674985c", "0x069ee4eb20b4860d4af91afe1781338f53aa354562ecd873e0e625af70746f26", "0x06cad0c2bd438c4dba2ed64bbf75066e731484c36d1f6738b6e98601e9fb498d", "0x1e0e166d734aa614c6b53db4f691179841a33f8105430a3ee70abca83ba6ec6e", "0x1c879c9428e19607d647f5ef1415e76f7c59fd01e52afb80486081851f9a5284", "0x215c0cd4e3f1bdb482b93e571879d7931be90023d7a220e8f93b21c8add41ffa", "0x1f41fc67ca1322b37b7aa01b631fd19105281f6c6a4d37fbf68fc1b5f62802c6", "0x1dce36062af7e4b0098f5590622ced7af9f28e88d476cde1391eb30408d5d266"], + ["0x222deb606f13cf28c73a67216d88b16f5958d5d292ba10ef3bc2c10f5a0b613f", "0x12fb88a0f6f749d68da9250d5adecf088442827248d67f989fd14b5c9cd4d4c7", "0x0066292e64e6a2c64673aed365cb50f7bd4e1d3b5270f6b2e9982590c3f8400e", "0x0a94a2d7c4093c638823b095733f37176d7e747ba24645b515ac2a241ffdda81", "0x0a226128da1d9bd5b329f55f52c75682def3369ab13359dcb7d212eefca86229", "0x1b5da83966361586e8810fed032435caa80a9b476db21290474ed1977fcef22f", "0x2fa75deed281db734faba5b70eaf57962f93e2eea1d3dcee34c81ab1e9fcc0ee", "0x128cb3150b15cbc4faab14bf7d676ef3682b52cabfc8d3419dfd98109d19ecc0", "0x052700b19ef6d42ea392e044a094cbfc308eea1f72f2a3428b1e721bfc32c6ad", "0x22d1e64d4ee15e60c459d851ef9f3495e937f5a90990382c97867c45b7940071", "0x252e74746677fd7584ceb0f8aa6936bd04f9528ef600737e9913fe4b5698eb28"], + ["0x1614d025472771fd870a9e9d422b3571c5494e7d679824d8fe1212177d5fa2ec", "0x2f6c4e097bb5851be12bbe2c712c2fa906f310b78048d695b4aad301ffc0d268", "0x08a1ef65f52128eb3b22df2b6aca30509b0af8af2f7888eee766c0c24871188b", "0x2f6f14502f20d958a9ff23b696cac3ae24967517ae8b2e9592daf451840bb98e", "0x17ceb42a19de6dd32e3b38cc2990e64273b52a5618263eebfa49d84518ea3bef", "0x2adbde5c7b73e9a7e22b913f99e40d95e689c65c428c2397cd273923cf68ddbd", "0x14bfe33115df293670393e1dc8da4d6947acc4b60249e5b1c8cae376665cd580", "0x2bf523cd8aa3be20ce7d891f8727a7b24b72a4d4838484de842acc782fd8bd32", "0x033b93a5cf15ffbafa2726f2527824a11af8e42e01d3a7ee159b273ca0a6520c", "0x249f416fae5ab52a435d65201006dd8ae8d54266e4d5643307551902423f7cc6", "0x19a9079a9897a237074252767912bed7b7635ae8ca0ede2dd3a42a75c1c6b81a"], + ["0x01358bdd6b7a51b1f5b5d094dbd8ee086ccdcfb9c27faad0806e8ef718d0e2b1", "0x1c06c782fbc0980b9e493b29a5e4a04aefc668cd4255d6cfe208e9e7c8b9a1c4", "0x24529638ebcdf26de8816287fec6370614e112e10c039190c103a75ced11b426", "0x12641cc3cf50ca67bc93bc8c19ed89d4613e9e281a51cdf313cbc8111922242c", "0x29012deffb112eb14034159c59162f866d4a1803b4d192a4329359f0f903266f", "0x1a8b8ad1ecb6cb888273a90bef8b1a2cfc03dd44e0b28b18e1074e404a9e0f4c", "0x17ea198f3ab261da000152f26b0eb0ebe088a709e8b06a18a3dc2108c2096864", "0x045aaa99ce1e06a3c02150804a91087f57a43b79797773e83216ca969e873380", "0x254e3acdbc75ac592679b032b65a9c91d2e092ab5e5719551b5da635b13e9471", "0x12a996abc8577021ac7880c16f058d9e06e9511187f0aadff6bb640e4316d26c", "0x0777edef4d91520fcd490a22dc569a97e540a0fdb527b4b1a3a854fe346b8e7f"], + ["0x1c2007eba4d1629846bb69404acc84565de5d24620f75cfcd9f11feeeb3f3748", "0x211865b7f9c1c791a33d703ad3280f69756324349afc8912a19b83de2cd06a0c", "0x12e4b5408f48641951739ea27e521067240b82aa51a42de2d4dc1e8225908187", "0x02185c7a4ad8cb21f19009396f134a2c3fd614d305e475ddd19f26f6d4b3f9ce", "0x09c4b2f61adf245266168cc918e96f7f8dfc35bd3df7b23fc641ef01bcc71cce", "0x281eca14bbc3920919e001150451c3e44ff18e1dd1171412ff5e663d74a073c1", "0x0533e8a454b8cd6df8d48fa9b0a9cb2952933e1a6b1d423cbc54d0533a72599b", "0x284ccf70859547fcb9c3c7b64cf0ad62e51726ec81b58eb01c1a1f8ec7a9eb70", "0x04fa5620a2c057dc552a59fdefe50a901068190fdc3df8761991cab50a01a449", "0x2d2640a74ede9af6c9888e5f68a84fac92b13337dad8fc6152fab34b55419908", "0x121a3764269fd35cdf1e621c3dc6318f47b862380ba00357849d8840059463ee"], + ["0x22f49d7244077e41f409c0b353afd1696e3aa15ffdb4a0bdb883ffe7a1a87217", "0x25542e07c1c13979bb14f8d4ee93dab7a3dc750806cf37f2c02ff53b4bb9e66d", "0x0084b88b1ce4598b701cf96a3379a02a3157d4193c8a8f1157459f6a34ec32fb", "0x2f6da385450911cd272e13601e7ce66c2b91d809307492f7ee578ae34d6f5fb4", "0x1802b97e54bf3a8978632cbe10e429705b03680325d26ea190c0f1ebc7362ea3", "0x0054cc81c7d1d59581ebcd26b16ccbdcbf1968d77f87a2081d13054f51118f7c", "0x19681b4242d11e28aa72530cf33a7d15719f1a888fff625e04652c77ee2b2de3", "0x1abfe4b1cf5db29d4078e5289bb143498abbbdc9af56720470a26a3dfa2ba855", "0x1d2279673f6cabf0a1c4b8eebf8e9c78361680b2e59d7ec19348819f5b3d5a14", "0x0f246d2fbb4e1217f09631fbc8770827c36751e6ad8d6fb16810e3395143ad80", "0x2f80ca151b077b50767281ea5d4c1f7457f8da444dda16d8149bb6c1061ed0aa"], + ["0x1951523a4270c54403dfe3218fd3d4ccefa43114f1b19fb2c2821a4374718b9d", "0x12b5a09e1e95e0d01fbcd234fad473d8ee2ba976fa22827ffa6dd03c8b25a64f", "0x2c184e904d7bfd368d4495b9e3027f9af6b9313c8f193f929ac9e24d10d7a36f", "0x16fc48e55d64d83010ad573377ea2422397fc3a7e6c88af808a566de0223f0c0", "0x2db1ac4c2b1c23a00027fdcf0f663af896d87415bb035b149d28ad3da98c6fcc", "0x170c05a5f8a55d5c9fdc5e8238b367be358917a19a28b4c47e46f3e73d42a085", "0x1eb7f6e5520215c15e274355b19bbf71abbf04aa426cd07da536cb3f909f6e57", "0x14111a74bd24730c833699eb41b38f1d4ed16fcf0fecc1655b76f2437d4a0c9a", "0x2d46b48e5090c0c56a390de373f4c9a2008db311fe31063cf4fed54629113585", "0x15f30ebdfb8b8ee644241039a26b408dc7a8de77f2cc6fed754b703ea92dde53", "0x1ee950c45a0c2f4a4b64688a7935ed2b63d4fe5b414afa05c1a284674409f165"] + ], + [ + ["0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6", "0x0fd547840f3a30a533a994d1fdb3f60ae5073f4484f34be951ee16a276fdeb9a", "0x05019671bda026670c7ffa9081795105963f56ce327fcf78451fba2bdb3ac1c6", "0x2952c18c15558f29b2ae77fc39e51a395f173a9097db404db765ab02906b27dc", "0x2353a60af6bd61e5eac2c9a4263d451fad07380654d4792378daf752e5cc33fa", "0x0ed6a3bd48174e370b4f264b37488b03a5e3f4c0f61cf32d3157ad3e3b86f6bd", "0x21103a7aa20c8d15501be8c23504c6a912c6100c5d88085cc2e42a52302f4483", "0x2fb232573e85d68c536d100c3a6ea9172884451e677b0d1cd0fb4dc4c27536b7", "0x302a085be040ff9a709ad0c73238b0d1e11e1d17409abaa34fc45de29b541535", "0x0683e640e6154ef73c3cd6b1d0f0fd86ebf7e292e63fa84cf0a883c2f1faa8ba", "0x1f09f3fb07f7f6476fac98946b7375095e014b28f23a07ac9fc7077144ac3979", "0x0598c38d2e2c78dfe4907c74e82325cb191d52608955b583e5826ebebd1857b5"], + ["0x1f930557a284998225f5f4e4dfbcf5ac211f1b12d91b0562ed3d63285d7a714a", "0x04c4061820cda9bf472df3f64d6afa004f1e8623d0a4f6142cca1f19a4c275fb", "0x0dbc22c3e54c924a882c22000951239cc263755dfcb38b27ef4f880e202cb5fa", "0x2fbb1c59e9e8999d91c40f4d44233122ab35ffc975edfb43c53ed07dbf0d9c76", "0x0b8f40d2c4d28c472085203a0e460af73bbecec3b2b3a63f27028f2ca8a71251", "0x028c01a9f01601bb46417ed466be6008595052f782e46857d81229e64e6bda02", "0x23ce8e402939cccf36176a5bd83183a0d54a24ee6cabe4fc7f814dfbf26f85ea", "0x0db82abbcd3a1b56f7fc8d116cb54c54fe26243702bd3d57e71f7ce0d470a40f", "0x2e703ea9af99161acf9949da7afb18d462d85b671656d61c2cdee3a72390213f", "0x16512c150c1d2fb7235efd2d4f0fad5fdd78f8d0cde53a66bc90206c82c4b597", "0x0298aa5d5a44565b75ef68df902d791d01d98a75e822ef553b1761c58d6fdf32", "0x203fd2078ab2a8f88b7606543145ee34daeab2aefca31bc04a476065697cabf8"], + ["0x018e8222f6907da5745eeb9cd4a9e62f28b8b710aa85fe729f9ea73a3ef0099d", "0x107757eb0c0799f781308d83d2e057ef8106f6b656b45e7636181e113a2cdf32", "0x0966a21b9615af2b7563dfe41b8b9fc06039512dc9c8e1196891eb77f856b608", "0x082046081498eee63c287c6fa3efcdefeba1b5272a77bba9cfddb56afa53c82d", "0x2c7ecbf14b2d6049a6439d0f29f10e26ec975acc3e3eddb77c831a509af59196", "0x144022e7e077ff22a2ce3dfe9923107d5aef046d0a1f2cb5f36191ab04eae4ed", "0x170403d414148f4681b8213550951e238edc009f46b00693ce3d9c5800fadd0a", "0x2997d92a5e9bc66c84f635e8cbf080eb720ecd4ca3e42c3ab8d088611880861a", "0x21427b3a9a2cdf1e2e6c628906b21e24271d72c18b0261be68cca44865dece11", "0x24bba58086a78541a8ebfd535c107c36946d78ba6cb26d227e615131f71d337d", "0x01fd5a6eba52e9ea1db389a1fc8dd3d0283d737c18eb06e090b6fd2dc88e0a14", "0x1276442d9383c52d50fc9b5ac34442a4ec8e9cd7aee6d6ceacc1a6f521aae4a4"], + ["0x180e924d757d0be4066feb146ed56212e38acf9df4957432653f370f905b8b07", "0x2acd39e3892ac429ed812863efa05eda746b55bb974694a4e77b9a19abb55001", "0x17b18621dbd61df085da4cf8a03395e3700269c7df4d98ce4851f90abcbb3631", "0x02a429c2d06dcf34d34730c3af8bc19b04abd652468de5a85b5d5cbfd9c23e6e", "0x197dfb64189c09aaef94a1f542d8c34aea27fffba704202d5286d62bd0eed372", "0x0fd3bdb79cad913432b7d3828e072dadc26cf4903d56b8976200723846c6577e", "0x29b9ffe05db2c52ddd1bf0e5c532eefe70497c7df4b97db2f0624836576a6b29", "0x0a2a006e3b086bf502c5b1540eaaec14b9c15bf88471cb6d479fb4563f016497", "0x237a9e020908cd0edbd9eae8772350e0e731e3228b892fc5f64fdfa9b9daa670", "0x006d349d6182ec30d68c9be010587c707f7e1e175c0d324e6added6337a72c2b", "0x0aabba39d220f30604d0c44dd47c3c70de3b79f5baa70a3a7a0ca02ae1b080c5", "0x16ee980a2c67de24fa1a34082f11c71b7c45966a6e8bc6aa1a1dbc7ef6a9bab2"], + ["0x2f7d0715d1391190e7b14a1242b6799eac3142e21f08ca02c21755eae77a55bc", "0x29788bb6cd947ea9efaeefd0eeb7fd563fcc2e40bd623ea2b2442b55d98dc5a6", "0x12cc274647fc572bb79035bfc3332a4e566a28011f69dd0874f01c56bc44c3e2", "0x2ef584c3aaeedbbe2b4b103a61e94ed40a97294156ad7ddf0de43b845249f534", "0x05f9a6a8d64cca12725dd15110f74aecf99dd30e57a7d99829cd8757b75b772f", "0x2979d1aeafdf97988560d4ebbacfa6e2b7f3d026946abbb9d5397645e6e81825", "0x153891052fca1290fbf83240d334fd4ce05de78adfaa2c9686488e0c47ce1fc0", "0x1b8c7eb04d351aff4e76af7f9fa1114fe45aaedafdeb42c1c23503b122639c7b", "0x2d8125dbef602bd970d11fad7cfe06c3c64f5687b09b960ab92b14f69efbea57", "0x10924807f6fdc4e9e586792e3ace3001f16bc02e84ada5df51d7bd37243ee1ee", "0x230918919b6826faa7124c5bd15d10c036d565e100b696a3be7afaedb2abba6b", "0x1db922b8c249ff7bf96121eae9d9555ef7770f3dd7b056191ae9ab38a5ccf6ed"], + ["0x02283ed8d5e6f9470b3f4f49a771061e4a4fc7dac683defcc0348a8862c6ce71", "0x06ab8672c936070a10757adb45031a5e2922f0fb8b5fab3a4f5e3872fb582ed3", "0x2c7d538b9e6d2b2e06e72f8aaab26dbddead1fef6a740a11e9953f8e8e9ee057", "0x28e4620d210536bcaa42ee46b1cdcb21bf215933bae4eec639efbd51f4bb6557", "0x00fe0def70bfba40679aef8d5a239b3a1b5a52fe8fd7edb754aee2b182d64b66", "0x22ae023520979741e5c58fb04fd25d12dc8f5fcb6ad15223a5da7e0f91c7b4f5", "0x105c0b246660c4bd8a6f1b36fc3cff86a2c432c0dc9321cb50abb98a10cd1bae", "0x2a5aba3b45e79eb2606b2a5b47eb907584aecfbfc0b4cd50cda1ce4854338597", "0x23a3b23d5edf5cb66160fd2523b3a383142291c0e0ee666682e946b1d57937d6", "0x26635f4df7172107dad6b7c3068d2d438bfbf486471039f9e65a9c8462a2c9c2", "0x2bb28ef42f5fadab6a6ffd5655b36580deb063ae3081d587bb1598878590f1cc", "0x096dd43a832ab68e35e57c98d7b01f2a2e5936807704593ac72c74001383f7e2"], + ["0x21f60efb132b62909990b9f994f381a9c02abc3ccb54c5c8e8c9c5664c6913d6", "0x1db98a562fcd1a5e4496e61264aad5ea3b455f46eabd8957ba671e9c31e5092b", "0x2f30800c0ee461010569d36b60685a38b02912a020bc4708598854f65822f15c", "0x1e32b1e2e6b59273a113d609663af6b30c95b36884fe5faf371de3d564213c3b", "0x1b1523463a45a2982889048681a422c02ea373f8b8c1bf16c74a375d5060c662", "0x05246ee7854b2e20e8612da021b30798e5f0d02a5bfd5e79d3f9ac6c79fa609b", "0x06cdf8055439ac8424c435e7e9bea3f0ae93eab171ac383ed2cedb460fcb04c4", "0x2f9a5cdb79645e3454c617d77a774feaf24ef603454c02076fc4c9d7548cc455", "0x01b1625d757786a19a93b37adf7f22ca8a502aa4462ca78f7da2d7c22b37d7f9", "0x28bf5488a525f5514400dce722430287fe8e4c810154056eb0f4d6fe61091cf5", "0x21891bee31fb7bd89f0e4422b3c8f5b393299af0d9825db9be73e7b20097923c", "0x2282e86ade85855d4ea0657c4add20625c6daa90bc93943b59a92dbb77b63681"], + ["0x1cde82acee60b84424e9bcee49a5464ee05d1cf0b70469208a675635ac715495", "0x1c4dde07d0f94d1aaa832ac2f5712d438b4e1804b5209ce55942d7afb24c6401", "0x116c45e4d88ceae4565c0e94da844eaf2775d5f5b435d94d2d3d38b583fa7841", "0x18820364804d22119347b728135b409956f7933defa1059d634b977d9d3abcde", "0x0c849d07b1d9e6ecbac517fc19237ff73424a0678f94699b23f76952afa4514c", "0x2b60a4d43d12cf31076e0690e931716c47a86e7728c34b2d3cb0cbcf95bbb74f", "0x03161d7b94e1b0411fc01dcfbd748a6df3156ff04536b3dd3101f7b2ebc3811b", "0x06438e8b0220464039a7b8022f06beaee502c5de269db82f91d88fe1b72834fa", "0x14898babc8810cbc626688531511a8473ed89a22569d47ba586c284e45bd0ae0", "0x0090dfcc0327a541672cfc26c7e1370583c5f9214177093010fd3fbf279aafd4", "0x038e0c2e29c79ccf46b5ea1bc589276aec95b74e8bb82e4385c0585637c885f8", "0x28331d0d31ca8675ad4767c490261bbfe5b84adb4ca2c5599a87f331908130f4"], + ["0x118a24510a2153f818f0a996c87de913587805f16cdb1939d9406941f958e8e1", "0x2cfc82712ed9d71ff4fdf63ee4ad116fac195794f8d910286c152efd9f959bee", "0x2ffccbc40031ebafecfc3a97284bd0f6dc4d45eceb8b8998f1a667bee369ed62", "0x09b6c00a37df2770cec0f1bf62a6aac3bd380c6ce9f4f96e0f0879237ffa510b", "0x2c4036616c156006337771c1e355fc0f2f238e64cbd69d068aabb4b58116886f", "0x041b909a658d136993b3f509a9e9d50138baca48f6b66399ac5c649e68dd3aa4", "0x25c075b41ea2d827a4955b6469db9d41760faf885f2c6e9c09407ebb1c4dc274", "0x115a91867233cc75d1c906a42930e93cb9c16afced390cc14435e5cfefb4e96e", "0x2f8fb37178b525758bf6aa527f25773e1ebcf8e1425379500c8245c741ba3fc4", "0x29a14dc4bac0a4c52bf30aaf6b9b8e05453d0d797246b64732d50f176a7ca257", "0x2c89dc7562b91d8f2f7daa209b7560520b6bc62ec631db41cc5edac1fb142be4", "0x14972bfc85de037b07e55332e6bc5b4f08f39ed4eb8a9721dffc4a586dd9a1df"], + ["0x164567b0de16b7a5550fca229bac7cb0779524325e4ca5e78a86078881660264", "0x18b49b773f5799888e9abe3f6883d7063333835b6cdd333580b2b4bf48f3b27e", "0x2007424b129ade2194c73e6e2c9d79360d1360c4fbb8c5f31330f938558b3ace", "0x0445e26e26f91707da2df5c188baf80ea2f48c703614980fa798971cd8ec60f5", "0x176804ec1cf85d35298351245d32236546838d9b98cf4242d601c7e8e501b49b", "0x25b6e65e90ffbf910d19fe3ae23d037f8f64da9fe3df483fc4f4977ca36a7b1c", "0x2fa2af7970e131f7efe3a7c788890ab860f76751e55b4ff634dd46cc4de660d8", "0x0c8fd4ece5c205190cf6c842d1683444079bf49835d5c8b8dfbb11af956ccaf3", "0x0e992f44463e2dfd267e6a4a1c3303ea7a1186252efd6c9fae9e5f0c1f6d8266", "0x02609ff97ef574fd68d16a3de0872c3b59a5b928258dd1469826a191dcbf5bd0", "0x15dc57879cb41d6015da9881f948b40d20f0e03fad87746d8575af009c96033d", "0x06d039b64e82d7975dd21a37b5ee79308f20e82e23489382ec2d176190587896"], + ["0x188ff303194112a7034527cc9dd0b4deb0960c9c106ce115178dd7087e4e8c02", "0x0b300de5b99c27d332091f8fb0d97cf04a86a51d4d2037788e0d4f38e8f4eab2", "0x2c53d6676d4d4c87d9eaf5d4da08d1e98d103a3388d59a7c0c3de51e2623aa3a", "0x19f5101715162976766e2b57a58674bc58e1ba2be18a59b07a07e4a93e038075", "0x2f5855a876a37f7bbbd6104accfcae507e9ddcd2a7219b487a76b17c525b50ca", "0x2c0de448a88dfeaacc9bcf2850b6ff4f701e1a538d69098bc94087cc35930966", "0x0ce587066eae0c345c3368c53dff2170cdb081bee52b243a1e6de6d4f82451d7", "0x2cea98cc64abd926df963da57f2ef4c434141cb53ac6311b2566edb957982713", "0x2c7ae475d90c475f73c0d29be8889d0c4b8536fee6c0389984bf9e4dbb1aae6d", "0x23238fda1417302dd03ce54607749610292945bddbd587241714fd3964af5f10", "0x1c674ff2ead27ce002f4befc7ad5f0f5123e59793c0fe21075e819ce56ce1e83", "0x2627be68d9cd0ccda3828d51621ba409f9acf09f1a9cc503a29ec306f8606ae7"], + ["0x083d832adf9bb4a25f686abeda9f16ebf53263dcf9ef4311781d09920d094ead", "0x0541af6b96524662084d1208d71b6b2a8d66d91179745b213679c2a2bbc94968", "0x2cf2c992c02a36334ff5dc851646ee7da04b44eb544ee3c0fadb8dc5eef2a585", "0x06c5df8fd61eca2fb4923f0a46dd4e416a3a3b48c10ded13133ffeab6fd153e3", "0x1a233c7cebfb0c6eb72dfd07aa2b537ccf291e84093aae36cc68002ffb83639b", "0x05f6d62f54518f039e79aa726bf15a5983583eca4062405400acca58ca9d2235", "0x2b09de93c6e3148cf7ff5731c8e144debb66ca896ecbe4089d2d22cbdb09777e", "0x0239ecd92517825174f796345db296562223760fb1b81c091b74a6a4a82968a4", "0x2945cb85e34532e3a22fc576703797893ce290d0156430a8dce61c9df89a8bd5", "0x00d3be6a5b12bcf1bc705c20c30f320b8881c6c2ec00e857685c0599262a3cf0", "0x11e7bc4a39d2730196b6c334f99750de5bb5e4fbca5d6a19eb7fe14abe845dbd", "0x0c7c9db952865fb9470f8aa1402536cb3b82276d9e288082ac7f83b10bcb6d17"] + ], + [ + ["0x0d064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592", "0x2b2ff5f27531b6f3d6a85d75e3e08f3a2f0dac3680a6c26d55ecbf803ca80569", "0x0b658849ce620bbeeff233b7d12258015ea9f87a5390f5614981eb6e4cb4a5fa", "0x118132fbc1cd83f95167cb4473d54c6bd2c417e2782e5efea16e72d47b48b70f", "0x0b5944768d61c1b3562a5749f4f06c4dd085bb562b838d7e2ef14a21fdf524c0", "0x2b04d6ffbaf7144012d92c5c6212803c0b5bcc0d7b1950b889d1fa6f3e56445a", "0x29be2a42834ae32de3320fb0ee46b4c102a3d1ae44c5dce152fdeab5450c9c44", "0x1946fe9de0a943d5a716eac08561cd91f9031fec82da9ab72883c7b218b11eb7", "0x1af3ca6240a55aba55df8e49835b92fa17e39ad5701ef70f8144109f894bf1d0", "0x081f58a91a4e0d100e0369fdd81a190035342fd0677ee1bf5215e47f8e58c2c3", "0x22a852af90680a8ca9688b71ed27c157d02b406bd6c7fd8121d7c7793ad2305d", "0x0b27ba82a0ffb98368981736ae927a227828985c00c3e5df8c1276b1001089a1", "0x04b46526207edc70a0d23c8438bc49a365635552dee240661a2cdeef966f20f6"], + ["0x2d8c70035731ad9efba92821a88119f6b8183a362be641729a93d6a327c03809", "0x09ef3492ad19dd1d0bfbeb191330a880ee7933c9d3b36bb5fa02283bae5d605e", "0x1458de516a534190c5550c6a1bed3af535c38b242eb9291373096ec60e39c1f1", "0x136ef2515955ff6619498fac59424816189f896ac0ed69b59854d105df47c4b4", "0x18cbfde0cd21c183797a2f089594a81cd828f3b0742371ed02eb83fb0064dd43", "0x22757da9e822345297bd060a3f71bb1e70ce977049c393235035677e84357314", "0x1622805125ddf344c18e351d11e82291618b975822ad0c903efbeada5a51d44f", "0x29765d8cf77619a580658d127fb6faa44d6c70a0f4d65dbaa960754b4195d9fe", "0x2bb0b6b08fc1bd11070edc42f23e807b82e8b88ef70355dfc74e096a7ff381cb", "0x04951e747b7ae6b99d9250108c5d2b70181a93ff1d4bf723781e1b938029827c", "0x17780b9469e81ca70c7cbb4347e7fb40c63ef68f3dde51d04cb47b3b83fc299e", "0x1913d51d9c71d042bfbf649d9e6e6ea5fdd82b4fd3173ff2fe02b85582528912", "0x2a9e342a56c8b6466d3fe533b89f1ab441b62dff3153d3ae6500c2c3be6365e8"], + ["0x07b620c8a78e09e49ce547aa783aa78f3e4594c49ab3dd6f602bc6c0351d823f", "0x27d6bd18703d7ca92aa24076d3187b6c0028d0b6213d9e5d2c66115237a19051", "0x2969eb5016f24b31accf173ca204668dc2229845bf6446cea007c113349bd4d7", "0x29c67bce04bfd020f4ff7eacab6cbde034b22fb86334675a361f059e50395311", "0x124474b08829d9b717c50884bc895cd3f81d519859d21235d7a74450d0a9427b", "0x2c7e28f59fe8a8a3bb2fa2b2b1e114ce283fe22a978a3df9f62a171cb1d65e4e", "0x165c0b978b4bb646a9ff225ac4900521292be54c879882d3f11eaa3103341487", "0x02066134bb299d9e359cb82a8380feb63b60e4b9859d9b9872edaf9152f92d4f", "0x09372ed18ba1a774eafe1bff6deec4bc0814b0899c6196fa15a7acd15ecc5ca2", "0x1e3a130e8caff9b5e563e8aaf84b2fc73668e351cfd28cf66f5012de61345b58", "0x255543a314afc5a2991413228c75eae398b90576b23b6cd86128665cc3bd9478", "0x076547449fa03845f185e61578a5a8f2683a19733fc04c73ac6a0b89bebb8453", "0x2f98bf081e0eb78f8025c03ee9c199f2e838c51e5a0aefd333e9f7cfb38f534b"], + ["0x231996b592528575567d39d00645a83b13929093bbfa00d6a661e4a690351d0f", "0x193f32a3f839f76049c9cbf2414590698a2118e83658327c4338aa3648d8f7d7", "0x0a5da659b6fcb1a4273e1b7e3b544d2cbd362cac497afd004b8ea920fdb04bff", "0x02a832ceed3837e742196e09491fe23e3f6e51126eab9acec96e71953102ef24", "0x098bb2c4c6334dfea474d04cb2e9761861f6b18a8058a52b619d6227a26228a8", "0x101749f9dd2605191c1963f25694ae267f6b44bfe2d1af34fefcb65e958784b0", "0x0c7b5e09343db5c63c110d3175d01bb498290d971b1e6dc0e9a0e9e7158356b1", "0x116a313d00cf99dc18e21f93a5bb198018bbea4b7cdced3e4d210971dd0a681b", "0x0404c0fa1bd1f7e059054cbb87f6b5c69d11457e59f90419ce4bd10bb8a803df", "0x0c1c216af33054c497ef04381f58582298b54335f632bd62add29e08067a59d9", "0x11cb20544f43437a688a7dcb573a7da4f8c7b4437349eedf3fce432a6f3c1653", "0x186f160ae866e10c4be0ea7d204cd64e57337c60c40b34c3a371d753f2ff001a", "0x1e1d5920edcfe9d6b2d0ddb2f6f741afb06590340fc07b182ea7c3ebbd933931"], + ["0x04e47a72e49b9c5aa3f69f6af22fa0ab640c93fc524dd3c508486d66f079852a", "0x235d0e71a350f1f23d9bb5182ac44ec9e4615e77801e5aadcab8336aadb1712c", "0x1219740c424743dbbf896996f0ee7a4076ba960a57e8d7679b828479218570d1", "0x2b501f1003e27aa809dc9e5cd84976a3b8c169c1e9c63977d7823f80d3f823be", "0x0f34db93ea8d2ad7d1eff86db5820cc7ada47bdcd8c82d01821f5c21a3ea2325", "0x04d02ab05826fa50bcc5f9af9e396477e68542d076b683ee61b85869d4535893", "0x2bcc82e75391be4ea9cd0f8a505f9e4f684778fc7a9b1bceb7868bb299cd2072", "0x0fe29b5bead54c5bbf426bb12844a2920884ac447906101cea9888986a030b11", "0x1bb2091870a4fac03682fe5b1e2eb56b14ad6e48f4676fe41454bfeeb0ffd4d9", "0x0f54c9c522a5c74e0d4e0c63611a7502657575b7a963c0e786d2a761c4e845bb", "0x160f5ac0b2481f8019e95e0b26445ba64dc03a4be8a15461496247e6ac29002a", "0x2f3d6b8e2361166089501b9147e84ab6b09792ac17a5f080d75b3e320affc86c", "0x1b59bb60e986194987fcea070498bcc7c93dd561ce8af5fade754ceac07b1705"], + ["0x0a8cb4b2bf3f0c5da671e48f83e5c1b3018f0d31200a6f19fd5195db22eef7f4", "0x1df5c9ef694afe61bc253ae908a8f6af0a08cdb9e78a9f322c22388322f16c2a", "0x134431128e5ffc0ab60136c5d851a11dcdd63cdcf17ad64fd77517701de675f8", "0x03ea4e2bffe02da5977ced1f1a6e852e921abe2e015f35b36ce4bd0246c2cd89", "0x06e03ca1146705522bb5e9dc73560eeee6b9b4bf51d48f953fbd1f006d758a75", "0x014c499ee51925b231da17ee7b55a75f96f462e431675ee36c7be4e9b069e260", "0x0611ecd1f379a0062b05c4aedb100bc015244c6a88f1631a456cc2acca8930cc", "0x22af37c0e4a88deae9f7fad83819910735cb4b49311e0aae11cb7534d0bcee6e", "0x299ef95aed8c75494db82e8679fbc6d5a3d2e29aecdcf6979a9b272a607dd5df", "0x103cc8384be1be1087b9bb47c0eb6049f85e0413f7b408f1dc2fa1e6fc4af91b", "0x206cf4290ac984434fa774bb0f8901a233905632b793c80b1d59966e96a73832", "0x0dd85dcf08fd38d22f316d91d812cb2a884308775afa9f667c6ca80954397c86", "0x24ce0acb522da527d3eab72865cf073d954babbed3cd1706aa69d767e9afe7cd"], + ["0x18bbb002b46f2e5fec2b120faf87822ca8e77ace94e03aab5c16c4b931739dc8", "0x1db2021eca3a3624a7d45bb16cf4a44e2af4fae0dc280030e7ebe55394f69d8c", "0x097c6133aea8fe48f3a5fc416bdf5e46d05de0723bc49e53b9fb5e83d350c295", "0x150ef9e932a74b8debf670080641339b12684ff5a303b2fb7c1d8d56f56ab61f", "0x1237f44f036b2da0067a94947334e3afa2ac4cf1009896766f5b191cde284972", "0x2d9ea99d2d237328266d59dd7e018bbd6bcc7941d9ff5f07a17baf0099f614d2", "0x0477f951e19f531b8434ad755b6783d61b679efbb87fd956e394db9c434e2352", "0x1d8b8ba772c4cda72e8ef9b19c424d55d57251b247c632bea255271afcfc70b6", "0x206aa2f36e32b2b06d6be48ad493d354ca7468753f526e6bd82549fc36cd4109", "0x28da9309acca103ecf19df72a722134d530bae6c660db3c364d0ebb200c2aeaa", "0x01b9435855d6cc4339240e9fa3819c2ff420980d6cf14721b75e4cb1fe57e118", "0x238832e643158e96689b5803b0b77601b59bdfb4926113a3455f1ff4df6e2b46", "0x0b43b8facc43cfc067b5513abcce846504b9395cdc14df96861a528a52ae2ec5"], + ["0x02bfae1b054ef2e924d75a8a01283da29103c57bad129ec8396ce274ba4524df", "0x1a46a26691841c26109a32ae07eb584a6b8af657273cdc4d8a112dea0bcc85cf", "0x107da0784dfb314d82859be44d37b4d2b6345c174b91651c65c98449682a5204", "0x2b45b3be2674fd820516acd6cc6183c4fae0f7edfa9afcd02dfeeccd02bfed46", "0x2082e9103cc45245924289111527312860f6e7ee94578f0118f4a920d0f8d525", "0x303a9e22855d95d07e8172f3a0536d4b95142f962b006a8ab09e7bb6335e8487", "0x2963514313f046f844f950ffea80f5e5b424b707f16599662e5a2e3668cbe5fb", "0x04b7f8d1d5ec8bf689adf12d656b94e15b0b229c1638c9c4757faf0d18fa6433", "0x259547168b64b2a228941a542f394a2699c081c149463dc2c3d21fd8b2e4f31c", "0x27919dd2f9d3dc9fcbda1a23b95cf23e3630e6fd5210faca6acf4629b88e5ff1", "0x2b9237e5941e1657efa507b892c3b8dd57fc8d52876ecb599dd5e1052b6b1f2f", "0x202e38e669883619ecbc6a6a45368b9b9a3e9ab67efef50f896dfe48b78d3dac", "0x262758fb3e076936995ff3140ef7d1b0a1e0fe4240a50747e2c3c120d977f3ac"], + ["0x06d101b19477d1627b9542581bf0cdfab38b05cdefdcb81965c5be00d780f192", "0x0cae80cc05aedb66d6e649b057dbc5ae9759da5d7b43d5e25a400e1f92e9d1aa", "0x12256b3b99d31d8a372986f95d66cc139dd23e935487da26b3e249ea7cbf91ae", "0x238965d658967afa2bce50ff18cbbe535327c65b0b76e50da30739ded25eb492", "0x23a6e143284e8f238c4b632ad78ace5b0dcd94a897cb05d1e297b4880e7433b2", "0x24e13a38f04d5e0fc0b6b6e0f782a6a523a8b3b0127224b8e23751b9cb9f8960", "0x09010d73677620aae1b0fa8023ff1c812313ae9c3bf43066ea60bc1ab477a7f8", "0x0a41e5a4421defd5ed7acfd48401395a409a67c3edf4c168ce3368ed944212d7", "0x2fc7d17f3a9afc1de289ad0f94126aeec834498120629cc87c4586c627780075", "0x1f86e3e9d147ed604c71e1fb6ef8459cfc40001bb4fc5ccc2661669b155abeba", "0x182d8f91ee2a9a26215b35f3c0eecf8ec5cc360124cf6b903e70ca83126975dc", "0x067d2b612d75f4f974312d04ae0fef43a35b60ef054c0f475302c55fc10bdab0", "0x0eab3f26417e6b53c532072de92d4aa78ccdf1da91660a461abb0f9fd7bdcd7f"], + ["0x18af61f6184ff85f104c2bef179b3ec5a5d242dfbebe8e27a2918f620e8a5be8", "0x195057af1319e24df1b905c6e2eb2957003cfc34b001c0e54b9dcf2ea5df6be9", "0x1d952ebffcbedd26036c54a1e8a2828fe320adf07a286e7f2c211b47f6c3ee86", "0x0370b757ac6cdd46610eec0c22d43a543d5e0482577bbdc14e71090307b5f69a", "0x22e076a3aa6ebfe996ba068bf5bffb17fa724338cd67f67ea25330195c628172", "0x126851f3eadc0183288a750153910a41e074b3544f0610a51273ad3698be0cb9", "0x0361f4082b75a6ebd23f9a6e7309d8c4e7520159da23441edd631a6ac14c20cd", "0x1abe8badb2d12353b9bb98152086a9421b7cee17761730e25ac284d6b1ed7b37", "0x15a7e64a5a46f5973e4e82a263ef905ed64f182b2041baa00a1359e7e9c5eda7", "0x0e154ebd50db3c2864dbe1ed72b0816210851b86c353692d1744cb3372bfa72d", "0x25528d5d31dbd77cfa6e7b1847f8e84c81c1ed5bae2a51c9e403cc754c54bb55", "0x21f0c6b896fb14220d811441629c78f8e8e27746026220e331cceb89a0ee89a3", "0x20addeb2afd20e752a39d2f21ebddc2772773b062922dc8dd3ba068836dba464"], + ["0x11e3a7c2d5f74371beb188c6e3d7a14b33128af8ee3287546d12d7777cef70cb", "0x2d4d35acd9f28a3e6bfd601472948293c1e4f084c714ddb1a075f2eae9ce21b3", "0x26309b52cb55f6ea5a9030b01378f65d2e6b7a9619926d9b1b1e21cba01fa7e1", "0x2aa84c1ef9e848a64f748b80e279ddcff871e9c4c3e2fafaaf79159b0b4e4018", "0x2fe31b0df04f276a525b619acc4a5ba3eb58d8c321c62390febab05ecdbc798d", "0x27c1b406bd19ed13d533550b8b621186b1fd47f671e6604680317e6638b091e1", "0x0cebcf30975b37267aedf521ee2bc753c3424dc4b6edf3984fb02ae1ead44daf", "0x291c0da731c016c0d6c4c75387030a962bf7a2eb35e15aac02fadf530278a3d1", "0x1216f05607e032e49038ac1458100e89ac8519a5a3cee4545b08850d8bf160e0", "0x19ae65945a1dbed3965f2de3a39ff2d54ab1dee0f333b88fb49edb3fc9ac7899", "0x2f996ae620d00a3d4e55ef7a6ce0b681388f1b7ff3875b725aea6eb9039d8b25", "0x2c825ee561c4ab6a22331177999c89806fbc34518387e807c20c359739ba9eb6", "0x0754947436c3cded29a60c9e898237c2183a49db7e70e7eb73aefb4b5c693246"], + ["0x2de5d6a7a27343dd0422ac71b8d409b43ccb0b672e978f8fdfd214f4d7866404", "0x025eb2ed84c520aba164e33f0353b5131886c0fbd18e55695541512dec563a0c", "0x0a12525f0781322371fd70b0928cce6e2eaaa67b8970dcdf319df25e8019a6de", "0x1bbf43ddb5a0b0d2845923b1ce128292359cbb313c5876fbb52f5e6b1fcb7031", "0x23e8c3606aee818d2afa8c4465d5ecb9c45bde78dd819c0f35a620593c1f42e6", "0x158880f5adb96dd1398128b9ff339f3d827da6463891cca129c012c06b16b321", "0x23a1ac07351946a974c8841e92092a4ffc6aefc7fa988e3c1f7e7c87e1512a90", "0x034c460fff28862ef7a509a1750a26ed1e5960fcb58c4f48c7d267c77e58dd66", "0x223db18f31c85e98e1dd7b7245dddda0ff8e319bd7d1a67fdbc7eef56d667818", "0x0099b97c878ce35c957d01b43dab07f8003e2c379b41ca61a6e56a9204fb16bc", "0x2c2b1e7c70fec2f58ca01bef5ac37cbb9471ae7914bf08df7e47dd8e3bc3ce93", "0x04625f2258edf0262ba0647cae426a486fc801dc0b59d20ec0f4d0af8cbd23ce", "0x239ca61a6ef7e501810aa89ab4996dbea8fbd47fd2f7a2c96a818e93a3c38c89"], + ["0x227cb43b9818924f2a2588964a0ad7ddfa3df62284b4b3b10199a501ed970622", "0x16c7c5c6161eda32c65bb347655acaa80bcc98bfc023f4ab12f5b2a899f37e3d", "0x27e37c68a01530f092cd37c4a26dece2737868dc2c3519435e1f2cb88f07b62c", "0x19dd1c6d45298248ad499531f33ce002505458d76178eca26298e39a62fb9501", "0x215f5563464e2df6a8daa8c34476a465e4ee9fa0ad01fc4399b649b2e07d1679", "0x00f36d166e99139b9bfc1ac3270a3d98c4afa81bf97436076f57383da50436a5", "0x1edd7c7deaf249e0fd3f5768aa92e9dad64118b491bcce12340c46f210b07ced", "0x08e1741a97f6348ed6d68f4b7bc6ec8b2dbf03f426769cc779ceee4ba1beb03f", "0x2f4aa8641ea4135031f4d97a7a2f679a8cbca562ba6aa54eae7d32ff7d04dbd2", "0x21a0a43c88ce26effbf8b9ad668056b5b0362e5009f3d80033db473228fb7fc8", "0x031b369d011f219e4a8fb21df9352878d93ff8035bcda834c3dcc41c3c2df85d", "0x020a72083579059cb659952d3f2a01ed90d21002275b5ea11f209c763baa8457", "0x19f11771049b5be81b43ca81e3611f4108a4b9dc30cd122441f74319c3adcde9"] + ], + [ + ["0x0e30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68", "0x12186bb22000ad84b6bf29179ade2d4e7e94ff07e51627e09580571061fa8ce8", "0x2399faa648aedf9024c6ac3ceafea248216e24a9e56caf5acd29ce2546a9f6b2", "0x03add29fe398ed2d44f233125ecd1509e3cede77e6be08b94af4fec87eb3e48e", "0x121af61f4dc5bb24890abeb9251e5cea94770ab062dc0c28bb8995dd8f183635", "0x2ca8ffee2d58f2945297b00cd0b511da167080d53949b3f1fceaca9616b6143d", "0x2c99ef5e064147da9782b914a294b6c14d21ea7eec1f72e8761671069d82a134", "0x0d7d07cd3798f44d832a6571c21706758693e5e93684ce2d1a5e8a53e0cc6709", "0x29195117106623ffffb0af525c838686d0d97259fc73a5194609ac7b7b171313", "0x01b62d4b17de67375b58f248a88dbf707cc9d1491bce0095644ca0219a01e40a", "0x2e1681bc7c22d24c433f81dd3a326fd0242bfc7e2bdeb6307e4d2aca32adda1d", "0x0065850d11d0eca87c3697b6f5e57f78ca86952bad1c9047dbd2eb6be9e9db30", "0x1a59b36b94f9d723577e504d600c493f2810f0e67112672c743abbb13abf43b8", "0x1a4b186b77cd53f961c8ccb7815d9781cef7a52af64d0bf746cb522512d3d0af"], + ["0x12826e5b9be1c9b85f7c98aaca9ce28a870687d3628d60def0ab3072b57b09b8", "0x237e39980f9007bbf8699dbece054fea1f19766be6101885d421fa3ea46b5348", "0x0540f5492497595e13080f02f6b1e653e2e51895160ffd5ca14d26aed93b8672", "0x12bbfbb110ec2971007ddac5f8e36f655465d05f2462996b2114efacac70afb5", "0x2f2ec51c48f8b73c51b264a70d2ba0b46bdb43f933de0faea8a7da2a97cb41f3", "0x26e36544d0b5952dde4007d11818465bde91c4dce65abc015e7556ba58b95ffa", "0x226bf94b86b177cfe7f03103d59e3f9ce2393821954708e7c723f8104a68c664", "0x25e311b37cee693545e2c2efc2043bc073552115b3a065cef13d36547b6b9dc5", "0x0f2336e0eee4685741ca23828c34c24f073491f0e72c139610524a56f71aa405", "0x0d9bb7dab4a189a3b6990a5526c82b0ae50ba7dd558f951bb9fd343cbb4b0e19", "0x2a4a6cc884cfd08af4b0dbe89b6d8e0e58113207aded8cbab2d075053efe998c", "0x1eb97819b3531ebb640ed6b42134335419101d1db60dd1a924ef9665f7a91af5", "0x226b91e352c65de4fcee112445bff20e4a67af0e110957319b2860d5087406bb", "0x0ac5b86128ee47944c12af531cf1458042c35adfcd9e5b6a7531973714559de7"], + ["0x22fea1297a4a5f08904d555c2e15d016102a4ed29c32b4bb10809ef14af42c77", "0x1808cbe7ddf2a3684d8a164fe2d150df62206f6be33d577dc5798f193aeed7a1", "0x1c1ccb44ff8ab6da854e9271f4bef26d2ac26cd7441f1b69d16eee0d7a7b481b", "0x1b8d209d66b2c1acbaba435e304ae20662d336d10330beb3355cf801f194733f", "0x11738ced3933c4b27de13911db71ccd58b7b31344ed9153dbddddb91fbdbceab", "0x1e97ce013afaa6e9c993e9cfdc9aaec91b06787819830985a72e9f7c6e516ab7", "0x066ab8beadae7bebd26a33adbd6bb392d6825da37a679e8af9ae8bc4813c3168", "0x21b37be521835c32b673a31d71aed1bc7f3ea96fe1d4c23f14623a0a851a3cd8", "0x1e86ec086805bc7712b7510def651249ba1d491076241d99d00c692880f39a75", "0x075d1aa6cd2b8d181c9e0f42275c9884ae6fa09186fe227e5c4673e56e3acd28", "0x142a83206747200fdb02773e766f504c65af82b200c0e7fd942f92be23d586be", "0x0ee4683c8da536b6b50773a469bbbde2e417a1cf9be221520af1e755968d7ff6", "0x168e771e9f8f860c49367ef919a00d4f128bab01c13d7dd72ce8d36bc6d1d835", "0x0c2a439067121449c1ef3dba6be1ff84f6ab7fac4bbd54ad7539e61826ca1971"], + ["0x24cc6751894087b831598b5bc7f9db3cbb48ce294d9208e1aa436cb5fa2e80e1", "0x033cccef05b0bcf7b77aa5560a0f949c90be5cc2c57122f9885d24a117c63f98", "0x0e8efc85cfebde295ce589de60aec0db43c81f4be7da44eb26fa4b71f7cb7ee9", "0x0a9d7ee7ee91677affd3ca4fc674625be897df79f82ec438e80f1e000c8b1f70", "0x09175b1fafacdc0e62b5f95e6ca67c3ffc96a26e37cfc734795b92f1e46124d4", "0x3016b074c814225e2d5c1091a8303eee4be476b1458ad54c16b4e1691f6b4724", "0x0c099861545e013a687cdd49a3a296a8d2c2e99691c2535da712d351d5e63c10", "0x0b71a06bb75b0a10bfd28a3788bf54a8a144b3287df9c591a2643c4100fe388f", "0x14937879c4c7127644c765b6362f8b98cfd32f8572d7aad9cc329bed5b507a69", "0x28f9e0058ebcf1591bc007cb02ac3acde0851427db20c7358dbef9fa9c57c2ba", "0x0df653524fff92dde8ec1c9a51c1bec30bf36a4f01e9b3b62eb13f8ffdf7b8bf", "0x02dfcfb280a3d372dbc15639eace45c0bac562c44e292f1429bc916578fb0bfd", "0x0b345890b33c23d167396c583d12e4f3d9efc904f261202512350190ab1961c5", "0x04f7f1fafee121bb811344f73f54f4a3583076739dd9dfc462b3ae6343c93cb0"], + ["0x2cc3d0503a0e1da952b081ba5dc5b117e646bed572a645266c6ec3ce0a1474b9", "0x2854c82b4b5f5df6dd3872e3f371372de0d12e16e9108766920b5458105e76bd", "0x0b1d810fcc721551e2a596e9009367fc6a924857ab29b703207b08c95ecd001d", "0x0b6eb2254edfae1d7503c3518e64cf19f3443d6cd03b71cfbf1be5936da4e046", "0x210a4a80e6eaa799f7ce05752bbda4d4ff0520742c943e1efeeb12a91229a5af", "0x1c1b2cf11f0d3a3a121be7d0ddfb24dc71f54b9bef943aee32963966922a8399", "0x1574c9e5caaa8a6a7fb4894d2c45d1901d1c42b3214fe9a72fd3cc668e399f76", "0x26ed5fff06ef9e1942bd3d0d3ba6848e47ec045cd26f93049d80cbfa6bcc73b0", "0x059de873c59806f55114bc3f8309f9b64cfcba7434aae220447ea0e9c4a66da2", "0x017e39ccba3432a135c0075d720c649562ee4d31b6da2e9c90bd72a039765e73", "0x2ae7f1414f1443735318163e1bfb1e1bcf5c271f37f6abf1aa86766b2e59e049", "0x12ea921acf5b8adc6a4e36be85713576d658099230b0b1766c666f12d92ab142", "0x1815d4c2e6a18f4f3fa538a004146d7f540fbe80a4605857714fba2795615df9", "0x18f6c40e3ccf885804b374433af0a962b2963fb9aa01e8bae8cc834b3e17a31d"], + ["0x11eedbe5a5969f33446503494b469a2b83f88d3aa477e5d6d7963a8333a61315", "0x009b63c75dfcab572d280b057fbc3640d35dd5f16244863ab8a31e0956da8802", "0x09fcacc3998065124de01bf7c0c8ba26ac4241f1f7deca1eefe5ef3d5015e3ad", "0x01a9ab3fc2059b0cff7e3cc431f7db45f59d8f7f724cd10a03f31a36638f8b52", "0x19bafd0d7942b839f36ad3d70d9c87b55674b9bdee02a7dc30e4f99ebcc1d94f", "0x00c474824afd2a880c6a85a7b7a5a434ac422c7a63aaf8ddc7c4d9325edef40e", "0x03a65a91d35b6e877908d5c419e7850f645f62b1c913765a214bb0f7a2915b49", "0x137908baac2e35e13f86834abfe98d1b54b7c25d6c85fc6c05ec7cded9175517", "0x1662f26cf04f5b969cdd6b93e890ef2b5b1124f51822888dc2167bbecf7c31e7", "0x0cd0a4c27de11aeb6460e32fa2bcb289cb83321723155304929eb0ca4eea03c9", "0x2030b7bc2a70905d031674efb420336fabb0769ac0125c35dfe2ff372c1aa4eb", "0x0b5342503af446ef824df4df6a088195fb67276657d420e6f312b2628e922986", "0x282a555f9ad4fb57698faa1fc3279bb8c28c1f8dc8c693225bd8520db4313489", "0x174c1a1095e95d4f098c8d60826776c2f73691db37ec3b937835b65b01ba13d6"], + ["0x189ae9e9b162ab1a19d599cedcef428bd1325c78740aaad6715b710bfac4c1e6", "0x28fd36f1c761ea7bce29e6f00067fa40b32e6b318f506b6c94bb847bf72b5b52", "0x05d2f0a3c223122ac01214250320b52ff5a3d242118e19778b2c8cd1a976c611", "0x023fba23ab4bc24d4880ba5a6ffd6eb5050dfb8d0f56476d3a30290eda372ac4", "0x26b8eab0dd0d95b7a8439e0ff7d3438a73a27b5993d81fcece729a824a3521b1", "0x19775ec781fd4089859f6b7f127c91eb83eeb7ec9eade14677b0a6b10b9e6e24", "0x0c073eaddb5d3f79e5bf83bac00f37700bd64502d8bf7d5a099fb3eff7d3b03f", "0x143991e8386d62334ca0d87832a0845b48416ef5158c18e7b9db8cd6aee223aa", "0x05fb897d71edd8d8eb1f3b5c823a5882a06d964056afd532e6c88893a25f2615", "0x2745a059d0962f1bf0dde1e1b97e0bbf4c4143d10fd3fdeb8d2b295ee4d7a9dd", "0x12a710de6d17f91af890102226853bb64209f1b41331a1d17305bf5b7b52172d", "0x09265fb314a676b6b3f827f07283a1ed4f300e8d90f967b20ff61f455d2ab2fe", "0x148ab15972a6925b714602710fe9e64c0a015053acb838d0e876a46cb5653f59", "0x1f7f9704cab1cfea2b2471d579ef99d193b234af90e62ca09b5a671c2428a515"], + ["0x1aad11449d6e2c6e1adcf9e89114c336c0145528f356ac049f52fd8cb084370a", "0x2b56c2e44f703a3b143da03c25749367f752b16817257e6d123b10bc85543432", "0x0c7513f762b64022a151d62302099dffd51791d9afd3dcf96cbfcf6035a2c27c", "0x0b26700fd4e950c25ad78fedb63fcb0d9ba73ecab858c071664866a9096f14d5", "0x173985fe17f3b0fb85de6104c02b46c3d79eee9dc28b567f02ab1a1c0ddec576", "0x20a9a6284cfc4381795e3b06837e9596815fd5b6f162bde02f97db687c8479fd", "0x217aa400b2b625bc36432a545e533124f99c1cb98eb85df747319e85d530470a", "0x148dc9335f621fff9c8d2fa72a9cf5b6febabe1f5ce77689c1a29e393185fba3", "0x0ecfacaad0c147e0b3c7e049771e6d4072b02ee4d171c0e53224214d17ade351", "0x1365a904c7f6721002dbce17077a89a92bb8038bd27af53333f447c4cf035a80", "0x1fba713b98742311dfb3fa356ff83eef234ce8bf2b0d4a52de7af4d2519f2f12", "0x0ab913f65e1ceb39ed8b83bd5d7fd900e78511edabcfe62314dd10d567858d8e", "0x08e13c2e61c446b53024d2116ab176c843600d00e676402c4641745158c243f8", "0x01fa02616024cd9bedf643ea36d262d1b24f38a557a77a82c686618c3c33edf9"], + ["0x0d7e1eae2cfec406402d34c259e5966f6e2eb261d4f08e29088325a6bb669a63", "0x184e5824689e4f81438567df435f39e1d35a819041d7eaf3af908429beb2bc2f", "0x18fde6451062016edeaa32e40a8fc30751e17e9bac192f8ca891c11f39ebff81", "0x04a572b86105dba5253d7ed1e76d35a126e6718551b976b208f593f08158dea9", "0x1d948e8774b180fa5e1a3932439dfe8c5f32a437657d21277e42614b4c9a3dc3", "0x20441aa5f4d5638e64d7ad9982b1bfcfde158f6a3cd6af62941e05cc8e533151", "0x178a58ff122d168cd4ff11a47280a4b8e5cdb313411b6f6e9a947c7fb577a51f", "0x256e145378d2604db8c509dda4552452b6c4a891fac5da199c7560768d948836", "0x25f64d42a750971afcb8023070f6ec97bb2362b196a5aae2af6a70f2e7b357af", "0x02f812121e2eaccc7d51bf266398d5ba8f601a2aa6d335eb69f7864642177667", "0x00c8f8722892a2f06c5ab454e407bd557e9c2ea77ef807ee0e3d89c6785b0d33", "0x0407d585a6a7efb561377e5f3972319a3e7285e146c5499ef6c8504a3d0b62e3", "0x11cb83e01ff5803b049a2b59ae9915b3e0045e1db694a6df9de9c4e7152d191d", "0x2e1c292e06b7f8a6e4344f10540675a63ca49e452f69565fcfbcd43bac0f3af4"], + ["0x0796a23ad6ed2ac995104a0d3e6c75e977ce29aba1d25e62a9a8a20364ea1be0", "0x1004c5ecbab6b7d12f6bb4caeab33dd56c1f829ee28f47c29fbfbb147e884654", "0x077559473737549dfb2016dfa72558bb2c1c816d7318763a5e4fd516b04914e8", "0x1bcbe67ed5fb7522adeafd1d9a150f8d57ada218db346915c86e6c00c00e38b8", "0x1b61a03e218362204fd20b67536e5e6ca7b96dbb53d53ed1602302988614876f", "0x2d3d269ee324e7c43c11aa84cd15bad65444ef8369df15749a8a6b2c8121e2b9", "0x0ea45d22479ef5773e58b0fe740868fc1e8b50bff76049d5b6ed5e723711867b", "0x2280250e212be2a48d293796a88ac62b05411012f46a66f87a0220a3dff3f79d", "0x20be703f86d7c0b9dad98ff8bb9fc92fe8ac0a84c6897a75d851146f74840b71", "0x21f8d854091ddb601dab1b01fb30c3d4f77cc3167fa3332c3b32377a07e6aac8", "0x0dbd093dc16e73832bde62d05cbb06f8271fa47229470462d8c18cf8a124f9eb", "0x2ff5bbbc022d1b74fe184c064e58d967f1aad1f0926c906a5e356cfc3b81ad24", "0x119816862c8226e9e5dfabf3167b3b2bf7fb3d19063989b24a16d97c94bd53d7", "0x06fbced52576a913e6cdc5c5c96fdc8f9f4e931fa90beeb46d9b3c2d775e1e36"], + ["0x299b8e8621d7d8c8d3d6286cb126b34ee53b2dc9a3697b8380c6e47f5711345c", "0x0a973a665693ed09434edb2cb0a971ad277a82b3385788552349ae09e8bd0c85", "0x2de9ee6529e5abc7aee93b794c4eefdd517c4fe12fa56bce06a3708d86336bbe", "0x2ea6b7a7265c503fcb284c2bb19512dae71ef357125c3ac755c6bc6cc37bdb66", "0x1380beac7b062c6b89914a976a8d0b9d3276a13c82c23fa21f4fa4403e3267cd", "0x1a5718f4a92dd8d179b932b0820f65c7bb93eabce398f997324f98ac76323b92", "0x1c7cbf2448de7114eed701b041809034e07b946a0340b777268529d582c225aa", "0x09c89e06cad5430153dd52cc66ae4f521bf4145df048681beb2e06a385050117", "0x296f3a9c104222692a44ad24f0f6fd8190027e0755567e9a7009ec71ef440ea0", "0x018393505ea6230669a8030f6e76130a14c1070a901ba5b640b88ae80d7d30b5", "0x1dca3060a6bbc4c324f7efba22274fd8d1f2560a4eeba8c8b0d38997e0d9c46b", "0x06da6d88c233e3182c5fa5ccda1392c0f89f7c6bec4e60da8df8054807eb0922", "0x0c61ec79b106e9dc6494a6359f175ff637839ca53ac8e7a13471c56646180390", "0x2cec67e62320bc6a0ca32518ec81c74363a4b6d259bd275a63425d6cede468d8"], + ["0x20f11ee81d2ac9a9ed1cac61d9cfdf10bf1b49cdfbb6d232872a1df1427c1839", "0x125478c8973bc395b648c822091f8df469504a71ca4fdf1dab59a708d0fe4719", "0x12b591b7af35ffd997b3a613687e449225625dd5d101cef2d6f2af02d9dbd6d7", "0x30544eda9c322c6c872671d667fc5fcf09cfb8d34e8e5812b6e738e7ab40d8ef", "0x2110c105efb481b679ceb2f112d6ea704442763ae2ac65edf8f15cfd169c560d", "0x08fd4397aa8b3a84dd1ba4e2d0eb7c6d1c5eda1f764814b5ffe204c8ec735606", "0x2487df9d5e066b76ffcb2f0ca190abf5fc1e5872c4b6a36a46870e9159201010", "0x0aad68c20fade1e3e2bf70fcef4b550ba00d6399e20d83402fe09b52ddcdf527", "0x06301679b6cdb17aa6c212ce342ecf681ab7cd96bf0bfb93350368004d97c353", "0x1e151fedfea11659c189a31ba27f2ccf6956084188eb2c4c99b827f645f1db61", "0x291bd9401de20916b9002a0066114b3bfae4d3c8308aba4afdccdf0aec12d66a", "0x00aab27e6279952c7291f036918f0b279d3b1d9f8e4e8ac380da77ec2fc24ea0", "0x1e8ee641308ba6fe5600b2df492cf2f14f9892ba1025826c53c77aeb7bcdb04b", "0x276e2623828949e6a2fdc917e2ed45dce0ee503cdaffc9add815f6d1d3c4f9d5"], + ["0x0a403e979943b8d2f947f6eda6d41170881341bb5e4fbbb3b4fe3dd7dccdd777", "0x2b0696d45980020a2a421073440e3a4fd39edc5288e6900a5958e0cd81e0eee6", "0x2f9f88fe9be36457e8a546455aa00a0f5100a7f32580b78f26a77bd0b7612181", "0x206733e327a64b78d3c48b6f7580d0887c1778343b67768859e2532d7d1c46a7", "0x00c272d10af2ef78a98dff7486c49d7505edd88c922e5672a3abb15cc49f4134", "0x1a327ff2c46f5969fcacb463506e102d682502381fc3f999b9ffbd4520ba4695", "0x2c0cbbe46422917152ca1906462bcb5a13ef536322a8715237da09b8c594cac5", "0x25f4103521e36d55e418162ef8ebfec6d45695520ef47b8548ba38b52a27fbf5", "0x007940eb04b61ec5341c1702f03993faed167db6fa2cea92290cd821b15fe4c2", "0x2ae1ec9e09577c82c97b4b09142ace51aaad1df7dc352cd4e5813d8cee9c98db", "0x1c97fc775f962fe05a7b66346b93c3260c8f6a90a7f5c63223a3386e19852ead", "0x27737fcd76dd296c28817646d30b1168c4d00e1f764c4565caa3276defd15c7e", "0x16b61b242d41e1975843309a01a36a14397d7c8e7beb4afbd9233b453aaccdba", "0x0c75ba60f8e0f6afa126e75703b83d9908116147b8b2db45ef24f3156b8f1855"], + ["0x04646253380f4bf642972ae81977779454aa0833fda36b1822cb9c09719e3dd1", "0x0264625c74f2a3bbbdc19481b7866757e639c124b4eb560da531fcef99773903", "0x09714e717daa3ceb3e9794d24abcd172831cba18066c4c048b0995e9e6df1dec", "0x14dac9059c9e78d96c7ef807ba342b946870679782231d2af0f6e4ab76cbd101", "0x129dd677c1f8aa2d36d2a7d5340645dfac34a64ae456f91b97de9f8e91313615", "0x10879ceabc3ad045d76f6cd5b26b56dc47b512d6509458f9ffde8da79e6649cd", "0x0f7c3f3cc96ceda039e43c86c1b680c77d6f49f50e94de23e4db42f8e9caf7d3", "0x10bd7824fc1b883b3da0072d2c6194c4a1e5957156594e908adbf6e6b1912b9b", "0x090da12e1595551d2500f90310b7701df97676404113c33e475b2e7749adb613", "0x24ceb0766de25fc22789286a09287be740310c41747320bdf2eb5c956e040356", "0x1c7dcecea59e6f7beb6d702e2fe74588415d30e5dc09970bb2d56acc8e08328f", "0x110a5e84de09209e9363c03c22b537ac6a7aaba2f6a9d1a1f6bfab71a960a583", "0x13822dcc3f6271b71549c2cd917b859cdac36af6848804d15a354d4de0f67ef9", "0x085e380905eb2cb7e753d0ab0ff4918b232c734418b6bfe1331de492fc76b21c"] + ], + [ + ["0x04523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe", "0x19a92ac6087ab89982fe5650e5e799f91003fd8b45400748d2c25e40f04c578d", "0x302608d750f16491df5a285f5f7f6a5ce6b554f5dacf0b69d450b24bbb4967d7", "0x1a3c7daa6b4af5662d0d8407b287674d83eae5b7563405f48def49981c98c424", "0x2db1c9855ac29acc679367dbf70f08d98894077df2411f91ef68dd90177c1e9b", "0x0f06ee47558f182d810bbcb214a25da7f70a567a0464b348e1b30eca7de99d27", "0x2166d78d948dafa963381cf1560d00bf3a0a1c288a743344c8643a58daf8cbb3", "0x2929be9bfe3f93cd34fceae665d96b1de1afb26bcaeea2f4edc454c50cbc4401", "0x1076d439c67997c37c6c1fda9a37dc2f762dd577946f36fcfdccd7898ec67cd4", "0x185c9ad0da87cf824624d02bec3ba4665822a0f6b3b25deff3afcc687ce1321d", "0x2702b1be39e91044fb73926c1104719f4c037aa4151823ceab24f0cec49f4648", "0x0af71a51cd463b9faeda93803cdc03186c7781845252fdf4e0155709d93dd375", "0x28667f9c7332073e293c80b98edffae01af4f67b4c52ab45e49db8b30f182d28", "0x2763c33f5b2d7bc3a23040afbcdaf998bb13254c272a5f8635a12606a59c2e5c", "0x0f81a8d8e08758e8a32aa8292666c4cb6ba3f5f06c4dcf4fc502ff97f03a85a6"], + ["0x113ad8b46c3eec20c9965b5a7b2e8a51529871d0401b4de6f63de9e5211623e2", "0x07930cd5256f8ab77ab92b08bbb5b195a44a2382c66e27514619efb94e649110", "0x28f8144bdae1b904ead70b3b72c7943037de6b48490efd3177783594edd28b9f", "0x2474f543d1f2f33b5ef3fbb190651135a59390c8a3661fae2df1d3f14432b608", "0x21715a84742c02d057ac41f743b166da023228425681950edfaff8581201a097", "0x1ef0e0c1f0b5f67644c486fecf02238cb7f4fa63a082a3c030daddce65a4b82a", "0x278e8dac8c56b28a23dba4d90fba91eb947f5092d4a7a9ec7802f61778488e87", "0x0faf33843e6733437e98995e6f7bfa6feefa73d7410d8585918c347f3cfe92a5", "0x2ba437d6ae6c588c6b71506c8b508347e634b65cee317af1fbb9cc2a997fc006", "0x24a6c1919f94aba9db98a5af38feaa5391cda79f9debfaf118670d7927e41db0", "0x04d80e7ef7e27a2b1397678ac42abcc6e2662c880503e4643fdfbace67273b92", "0x17f6a3aedb0005a9b0a258e31b8e6e2a48f3f9551cef6812a49075aebb8785f5", "0x1e62029129492c8bdf8514945950681361591a9f5eedc2449e5f229c85bb97db", "0x16bae774867656e64fc95f3c249f801f150fd7ee28d195bad9eae43743875278", "0x10f0172799be23a8fc3f156adfb6c512ba415e35167b563bf7b186fd12a41e57"], + ["0x1fc50a16dbdfa1c3b99038f47f81a1c5d1ef6e7b221d4ccca6e821220130e000", "0x2d8d3d924f2897199e38eafbc7e101d17d7e563488a9f3198060796ae84c1b08", "0x2aa9aae62cdb852490c650ff9e27c9b33d4cd4020ca66f5e1a6b374e662935bc", "0x1848a60efc89965073b95773f467666687e38d59be208e8377d31903921057e4", "0x0c893808103549d2030cbfe0004ea6655e24ee71a1f8c1f072d5cf6e17ae2499", "0x0ad80718c6e9d1c67b4a37b9e103db32f225fe42a9ba655ff065618b87b82aea", "0x020d87476f1243f490246f88736ee5fd6d33191f0561271487e9693fcfd7a649", "0x134b86642ff202388f4fe37356ca4f0ec3805566b7d4d412d8937a359ef9b401", "0x2c04878b4cb8156e9983d11574ed99dc7562d3fbb1878257abbc68852fdd2680", "0x1783a45215805ade9d359232120b183db54b43f9a7e8fb8dcd95ba9bbabbba59", "0x0fc96302e8662de23cc5c8c228ac8ac2dcdbfc488a59f4dd41e3f27095f7e195", "0x24b22e5ce671ce79dff8de16d7cd2bd6375d7ecaa016ecf59cfeb246dac80720", "0x052c33fce08d4a39fd805156c8affb84349428ba4920cfd2e7902ddcf9b0557f", "0x00f0d475225c99702bba4fd01276102b5cabff7bd4d147c0e3cdee4c07ac31b1", "0x1183e91b7ab7372f157d4c477691eeaffc9e8863fb2d806570c67f4b1858fc54"], + ["0x1214a9d6d7288fe85651a8cb83048c7669c83b5ed82ca2642fff01e852a44b4a", "0x1c0de2bfeafce164c9838067a8df6340f9d97edf0122333159b714f45c3f13b1", "0x1e394d80067f0e10baa95de0d99b4e39204a18727d1401b476ec976b5f173a82", "0x2ca2d8b0a793d90ed318cdb5f697193137155bcfb942d82bef558be5fab359bd", "0x28427ab007a68c7ab12371f13bd7dba0acf7e97ea6e64ae52d5219210fe8a2b0", "0x2cffc378d2cec76ba7080b37fc671a96328bcdfc4630fcc2f2133dcf29c70dd1", "0x00cfcaa1d7d382e1fe1fcb950e14df202a08793d7185255b025d562eb8d97544", "0x1d8724c5e641d96f6e372771b0a776bb742fd3c08e1ae250432246cd3bd01bde", "0x0fee8f9731397974100834649ee87a27ac92be7a3810303460141aafb542a429", "0x116f239abe820737b5e1e82b2ace3a45cefac489a6bff084e323036f54277108", "0x2a31cadb918d78b96dcd548b394425a42e2aa7a28a6b63e509261bfae6fa25b3", "0x240caf6d7ab2f7b6ab3d15efcf3074f5b2142a1e804f25012d988454809e096c", "0x2224c85f0c0b4093014db1e817d1ff16918f15e0cd231b848a48cf83324c4144", "0x0039a288951a0381e3aaf598ef132853b5d694716c20db87923f0bcf14c914a8", "0x17620d438499f6c0a66bb577add4cadd66ad39e3377d302bf83d3bba126b2aca"], + ["0x0d421a7c25af5538788f49475836712af5da156f88c5867568cd958e305026cc", "0x20e4a28303dd55e5cee332f30eebafbd7932e7b3531d942454c344b8b8c17cde", "0x20bd028c958d57b79e35218fe34e469ebdaa8e8e714e918d58191f65046b972a", "0x06ed98a185bb2358f334eb257ae5e3183599c054c1b4e2022569b8368da1abc8", "0x051deb4b234890e31f5ac8e69a1e532453774ae93a9e9360fe009ed377ae9c36", "0x21f1f6a630471e32a8b9ac4b7ed4b04c56b96a71ee20a66a5458c6b8d5c6d346", "0x0c39dbdf6e6d24a91a0a45f922c894be252baa127d9ac76909f86dc0bcc68a66", "0x305614aacdfd4167cd1bfdd8fcdece6892d84d4a65e86e6f7c6349fb75e48b96", "0x0ef9ae65eb922605d4260ab2021dfbb4774cd5ffaedc1b79dc681208be6f85c5", "0x1adccb898e5fe18b5c29a4708c4b112b56d0fa5d299b5edc07d6f5bc00428b8b", "0x18a2661c03ab9b0d8f7d01091c7e563efc033196747e34139d3f5cc7ac001e9a", "0x0f8aeec74144d00a3ca38bff10bb0f3a8dbff4af6197847db879745aeb57b5ea", "0x1f53514a97e8b57204e57bd6b1b1d9555f3b50368154154e67c2134fd3151591", "0x27bcd639c47482d2dc8b6d13da19fb8d63f3d6c875f6fea486da6ff2ee11e107", "0x0e9e8373114ad25af97d28e272fc42d8490373cab582193b874a10428ee6cd21"], + ["0x2de8ba83d2b6ab6a711fb9230adee1cba46de8c930c86d266acb8c1cb9684e24", "0x1bb15ee4d492a8e2cf1b10db1b738c6780066ea8347abe536357a723f6cf57be", "0x27fa2120431379cbd86205ff114f34dd2dbce13e1c2a0a8e46a1dc27e7b686fd", "0x1ab527614a37c2ffb00c0fad360abaa447ac1063fb9fc656d0148cdce2d7c372", "0x170cee2983fa3d3ecef2f806f40eed8d8e135ceff076fc530bbfee876c9e7f1e", "0x288851770f1a13822251da91c84e123593fae1c9cbce6c4ff2317e70bb658209", "0x1795384e91bafa554dedf5156cd799e11210ffd2afe817b5c63ad5b85e7fdd06", "0x2cda26473cfdcd185ba28cfdaa15e7de2359646a0287ebe8b60d702df009010c", "0x27ab4b40901465ef59007114ecf1fbfab6157c24f402246b86a60397267308f3", "0x27122781df7bb05f6ae9e14e8e99da5c23dc77cc06108c0ebb061e5d1be93626", "0x26812acd03db3412cad4bba1aef71bd44b0094d318ace0366c79e729ff0eb2e6", "0x213d29d4e1b6c01fc0d109ea6169490076d131d8e034b3040f7bd9c3c373ea17", "0x2132f71ac89892c984a0a73653f2d45222ada34181a9e6dbcea0d63961f934f3", "0x121395023931f6bb3ef28b6063eb7a2ed7839e083fdb92c1e5593c83edff5f53", "0x1f665ba33da4ab9d9806caff77ced39c9be254fcc4c5da8f570096111fb109b5"], + ["0x0ea7be82f1cb493b1bbd83ab7ca285bf0a1559ea05c3f59827b3b013d0a91fb2", "0x2ccf31a572412bb7d9cfa637707853217e7db5550b1cc30a894cdf483a3b63e3", "0x0564651bc1179170e3c97afbc4f493617017b43b213eeed86b9b1bffe521fe86", "0x0bc769cd7b34fcd1b454abff0c00b89b540a619b87c95444679c3ac6be84d450", "0x244b6b63f8041a5975f4640b18c7d067e4a0627f18751dc906016b8893c35123", "0x2ff4ee110ee1be62e2715dcd119c95b95413376e88ec3ddc3f06fc9db8c27a94", "0x2666ec1a67daa7beb057aa0e6e8a10396601a21884372369c012b49aaf849049", "0x2b0666971fd911529e70ef918d019f44b5c9d77442b6d1866f6e76832d478847", "0x2bb5bf03cef933e4ee87f511de3985cff0323ab7b718d4cbca3f429addbf3052", "0x2e37a7440e75b649a0799cffeb7f9dae38fadfc7cab6c5585e4a84f437729d02", "0x000371f0d49346df2d88b9f1ada8ac99dd8125cfa6c30f3738fb9932a853268e", "0x0d0327b593042de04f58e0ff93386d1608d33a86872c1d3e7e089120aac7a4ff", "0x04dbc4c8de708e59aa4b2116e53944bec97ed42309b4a184561d8f32d291f9c1", "0x290ed9ae7479f9be13af13f98bf88507e6fdf018710e4859fd2e48cc66ff9b24", "0x135aa38339bd927dd5064e4d572df55811b226bab54b0acaee511d60aedb02fa"], + ["0x1e3ae7e5775d352651d713ebdfcebf9ca8e905cfb792bf7874239450f914c8c5", "0x01d492c34b245bc12941bb163c5118bfcf85bc4f344042b2031ed8662a1f6ffa", "0x07333cbd0ff13c8ade1febe72892d9ad435c7b451aa72a8c05a7082395882865", "0x29ad5236ffbb598a2f8d238703608db7a497a7453ef9d579fbf05be38f8f76f1", "0x2e72b1b114dfee7e8d7f0161255c6895fa786070ce62d806c45a22d7d98a0a30", "0x2ad369a84b57f7455ba31064001ca7779d2b4b96b0b4a91f156abec366aab786", "0x15793f31caea39de315dc5bf5a3662ad5d8e1a12fa1a7280f2efaadafa97adf4", "0x056c55df543a8d4043a12f409cd2c4bcf43a770f3e38c3fc79ad214b42da834c", "0x1ee10e28c612d9d6ee72f1274850c3e829be5c06f5bb293280152a5610eb01e3", "0x29f356dcec3b79523c0589a7046ef0758486828b212146c3f5ce987af3fd719e", "0x27cea9c43fe0bf1ce9e53c0c026e839d80a7d869136603102cddf63cdf28b975", "0x0bdc078b1edd9cb1fd2c2a01a97bdf7d458648439fac1f28509b41a2dc9e7740", "0x2565a17a6bc56e87b0b63664319b8a47bf662c1f49e2ec9251be4fdf33d90f4f", "0x15b085b5eb678f8cedf21bfb30e2d64ae1cbdd7472449ed24e6034101c658868", "0x22bc96cbe7f8cbca81b29ba7df848dd6599035ff515b6d485550842e1a35a1c2"], + ["0x05943e3618a32cf050018a4e2375f4d027b8c14ac82a0de57cbb90c5122a64b4", "0x1c9b5c2c07fccfd9dc6b3abfe05675fc997eb7b8cbd8d8b4cb7e671615b0ecce", "0x290a7ae732f4754e0cb91923c9248971932607be2e829163f11612ff8a955b10", "0x1434ece209d491280c5ae05d7e26cf92d99bb7289a5c1cac09a38ce53b6e03df", "0x228e7399b0e05802852bdd5d5e09966f03c4c3aff53c683eb2f69e0fcc21c0bb", "0x24f0fa154fcc6d6459d6c56f711f25e38d57e90be7b8046c9e001815edb41404", "0x18800bda17a89832fea54f26741d86c6b6fb9e15b02e7bd065533cb5661d2a95", "0x16b11f24502aa4cc3b0c2562a18a24ab8f986431b244034d3fc29555402b5f4a", "0x020a9d575fea891302b106439ab03a8a951d8b2ef2b562991946eb2541f1fbad", "0x0f9c05f609ad14debeaff107b95accd60e62662259905105abfafa9e8e08eaea", "0x095f1db43c827e6f0b9cd4fe929e7b8c78c93fd02ec9e0f10992feb753b4ca07", "0x26bc00d9cd25124442832d97abd90866d3fa7a401bf38bd95fa7ad526548fea2", "0x173e80596756cd9aee04bd6dd9dc15e4b8ebbfefe3771d9819bd4d444726f79d", "0x12a643f4a327acd2454514dd469551e36ab0e3f24ecc3b28a76dc1f38214fe38", "0x11e1b0af7f5fc9f049877154ae173a1a72c7bc3ba192e438a9d0fa81fdfa4900"], + ["0x0603755180f66e98215d61e5346b116cc00cfd058274d7d969b3af95e78bb335", "0x0243930ba01dfd3945f2aa02d588922b47c1bef2ff8023a849b4ca66a1bfe98b", "0x1eb520feac62e4545f4fe7cdb675e36474b8b1fd19e15d7c73a2b1dfbb23fed7", "0x255dfbdf30553413a1f8f5113d60e98583838d13e11c1ee02b25a387ea00cccf", "0x18451132581b9adf996c6cae15b92d2e4c09fdc7d6c27b4426f32b5e66a0b723", "0x07221cad39d9b5f8db705a8723038b92b6baf87284131735eafbecd533dda6d1", "0x156f6a09e6a81d8eecf4dbf21646bb968b2406786cd1dedd4cc732b7532f7fe0", "0x18ea0ede9010c7bf0fac361b5b8e7f97c75ed93a13a7ad4a017d920c03c98686", "0x0b73119c98d25eb6de14246b1401bef485c9dc6accedc23494b9526a39d53221", "0x1c66828552cac1443334ed70b7fd7fb525f907ab64479d117864c92e911986c6", "0x10a66268dd9a2f368e95507efc2085eeeee8ce977ca1eff5b2e3d94bc342ff58", "0x1f14aab5a59ad452cf692b123c65873dd80ffc188798a4570eca792b3f2f257e", "0x01d34655b5776e24701621acb41324cacb50165e019bff1e65f98304f7d822a6", "0x16a1eedbbea79c5411a639e3bf0e90f6e3f740f141599af8e6a43a2069572f95", "0x14de448becba6ca0adb21b07455d2c2864c7b85382267026e28f0978822d65ac"], + ["0x19817db66fdb8215ecf70476c4044c3f41d78ac5a549c684e35845947dca0b11", "0x08f328e5e66c0b879b36c233f598bd8578d18e2da9f019f0411731524f42d90b", "0x259a2a1f046844724cf992aedc2635f6680f55e8a0fdac695ecd05fbc2cbbd19", "0x067d9294b4072b12c368c2816a53bb16b7e7e2a79979a416f2d02af862abedfb", "0x0e1d7ec2a54b11b36e65d7551e9a875a88ccc7a6c0470e7c26e199670a0859b2", "0x173b3b349ee888d934aee9c14e889cd7d785d1e3e4f1eb72a5c2e56c48fd54c9", "0x2977658a10de6e7921ab9e34bcf07bbca61a72549ae57d0c15691bd143d4d2de", "0x0396097733de5a1fa4a548749b73ff7c426f98d9e5ad16920614d337897f6b1f", "0x2a66defcf489c23eec5079a0ece1c5341027a59e7c592e760184b826d70dba9c", "0x10f43368c0567f405aa6aafcf367e3e68beff957c4b0cba17c30c62b3f95490c", "0x25a2a43ee612663dbd61814f2deb06ed005a7414f99825f8be66f542f95a7b2f", "0x182f1c93c6eb29867b1559c58207a6aeaf40b66eaaf579ca6bd7ca40aaeb7abd", "0x042eea616d905025147a482eb436a3b75535c9869b76d6cdace118e15c91fb77", "0x05ce7f592dca2148e198554fd64db8c479f29d23f1f16daf3cb8930d9456e4c5", "0x1844a81d4fab57aedbb4c4628e2e47fcb2922883eab0b2e1de16f248de4bb902"], + ["0x073965f7a9ba8cb33a955d42da55fd7c37a3f0226b029d36dcb3fbea95d642f3", "0x284a2f083ee32a6663081c800713e0f2395e348dcecc89fc81aa75a5db2ba12b", "0x08f78e6dc59cd4694c41abbca086569a9083ca8cc800bd9134e4d48ed9d89dc3", "0x293ca8a06c5f179d938065ea47f80f65ff21969a9429e400aa177ecf6b6ae853", "0x029b68e652deac818824da0c2a11b408d7a839a2e8576c55bfa5f1335ffc5b93", "0x09bc3e40bfe5f616fbd520f3894a0fdd37feb29429fd3a5015953171de3a70f9", "0x284181093e43419789263736e544817111fdcb559a43773f05186608acc542e4", "0x0b9d5a3a957eef251ae9c26e53423f9be6f2efc24bb18756893a9d80e56a0825", "0x04aa8e91dc30f9ca318fe24718fe595871f7897e92d57f2d87d4b1bcf9a635e1", "0x253a11c66463a6dcafd8399fca58ba27febbc307d8833c666e0d8df072c5f69f", "0x0e4fd498778c2c76a02d0d91d8f89825856e706f598337dfebbf3ca33397968f", "0x126ec8c200262c45d1133bf9da5f1e5fd62bcea1e493a080af1bd283ab86f122", "0x0cf030b10a1b4291e576ebabb39c583fea0fa6decfa98cff7a96dc06cb77da51", "0x110298fe7f2bcfdac0bcdc3affeeb436d7b3a377453ae778fabd37a9acb299a7", "0x0eef04f24ae210ee0a94bc5621574783e49d4d93365a2b3dd069fafd43055452"], + ["0x09a550431430846b6694125b5642b00607f36a1a29485361a3cf427da77eccd0", "0x19772e83816fc2c49b96427c6ad0573347fa49a5df691252592aebc390055a35", "0x2d8ec6adad3a646843c88cda01285f8f32d29c6b1025cb5421422bf8bdba7fce", "0x255b96258dc8e1644f1bcaecee773632f25a6ea803cd32a1e01f82573775f6fc", "0x186e1360041193e12f38099b0e35e767affc3410f6a8dfce9bc75567e39bc402", "0x29cb31e1afef4f252578aabd76f23a1320aac90d4a0a66c2225e3d94cc48d22f", "0x200fa20ed1b871313900c01f8b697760d030d8cc0150fdc58e04a0d8a2b344b1", "0x1a63a589d1710aa705136cb520c2f1c44d778e490c212d4b72e9f1538e5555cf", "0x133369b3bcc73ee793e869360cd50d8df60fe398ed9d9c0d0d03e669f796e87f", "0x1e99516c240d42bcaaad9c73f21a46193db8433349203035eea30398f9df7893", "0x13d84ca7f358aaffb1ee8ebae81c32e01adc01e90d09c9451af36e31af82170e", "0x05a78464a4b6bbca6e96d839827bfddbaa9d924840aef6555de643df167d4caa", "0x260ef13ac7e80fd2db3de9eb942edeef3f5e252d4c04508b1e1b130191ad0df6", "0x14829f09d4beebbe6fc30545047243fb3dab99c62aab7364a7a5b427457a02c0", "0x1328467c87ba73028921a89333bab97f8b24fcaa72f43837cbcfe5dfb7a945fe"], + ["0x068eb4e9d6e0a588b61a6ad501f380da0f009067666c0853d156e33d59c43515", "0x2dc5900039d4c8523ac379945cb9b58a54e01dbacd67f0c4baee85d353d3fe97", "0x1b72ac4374e95b7b7d28cd2909507f3006e8352d4af19e47b0b909682a03200e", "0x1f2a8dcafe79fd0ea22bb1563c3b28b23c5c4d7591d45e06744b3b379d426618", "0x19294dd22da673470377d671fabdf42cecd37ecbc018386a438706d6106b04a8", "0x1932bc6bb488b736e0d4bf306d41e622e66c1d685aa4598153054b40f75c0b00", "0x08d1d68b8437bc980aa7c59d83393b162a0827de74070d2d34b4eaedc17e7e60", "0x1c0343816b8cecba48519b59b0fb6d4a9bad309ee38311dc3e8cfe8bad75dfbf", "0x0709eab96cc6255f2ae917914f25085025490c423284916e23b608638ccce29c", "0x0c67a06b33cf73882b1c7152d4585b78223d85c77cddc2c7d3594824c5016565", "0x0740c1e9b8ed16e9fae204369c554cfb72007dccfd2530f2e34d544003ae5994", "0x02a84c424eb58f9c38b4380af38e0458468980988faa1f0d4c6e723845678523", "0x0bc367fd93ceacb599c614aa28068783a5d27eec1fc8fa1765015b76dd82f5cf", "0x0278b58503e0b9014104f8c446bed4c6de575c72d4dd9db3d1866846979aab9b", "0x0791d832e976b66bdaaff450731ff35d998595ab9748f695bb45d2c0fef06930"], + ["0x225e00a0da5a7f7496b70d0923a7cf7ff332bff06958cc0f3fad439874f6024d", "0x0cc378b44e58f668b45832fdab4a49372731ef2415c37f40b5ded5594aef3cca", "0x0d7d8273de237ba2d4d5e8051c5bd5e312d298b6726ffbd3af7e732af91dff27", "0x22ebe0a315e07be4b0928885f52449b011b3967e519e438c424cc0428c35726f", "0x02ed3cf0214f444d436655e03af8aee2b4d96961eea06e8133bd6e8d3e38234f", "0x0cb6fa0a5e11b9192a51904939d45a05af8055bdea3f379faac29d1309830e85", "0x039598a1443c009678602b8dd3474f276da5d62425083ec628a1737e8cca3e7c", "0x1af56e6575123f99c5d7ab7b83770f0fd60fb9f4038c2942644069e3c243793d", "0x0e8d9c0707dc5bf80a2f08c343c69cc659def86630af3141a003acb3d3e90c08", "0x1f6dd8e85d3597bb6d37b47a1f063122014c888250b38cf8e82e3e5471ef84a9", "0x0cc8f90bab68e6de84845da1899bfc52440bdddb940b208301ae94a95777cb72", "0x0c0dcf2b13552ec55c97166be347ca2f93b07e2a10164096d353fa280c796821", "0x001f126117a949dff900fa5d111a0ce2661bd9d5444577c491a9951cfb58192d", "0x138f67fbd9cb91ef5206d48cabb269ac42bd352cf371e43311bccad89acc509e", "0x11492ba406435f35623906ff45df11c39efb59fff09f501fb893d717e34f9d61"] + ], + [ + ["0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099", "0x069b1779dec3eaded3f07d0c3e6cecd6cffe78d747faedad9c90665aa2d92cb3", "0x1fa4effc83498d19aaa598b7771f88a0554dddda89d32dcf8a6f4cf776d13b99", "0x01676f5c07417ab54c37ec8ae1a8314bdeeb09964769881592043dffcb26bf41", "0x1f4e7bbc8d42779e58aa07bf54ff324b814fe687b4c8eb81b9b7e74448ee27ff", "0x0f6b18c98fc89fbfa99a04c8c96ae5db35c296479f484b680df905d4cbd1dfa9", "0x00e6cd10883e1e11c6c191d36329f30eb0045af06c2d86d0c439f5c1f4fef54b", "0x0425a9641fb01558bc7170a2ffc24eb6a514198b296a1629cc284d983bca8757", "0x00397a7d7434b0aa941348de45aec442cd5cad2c398884950e8233c58dd50335", "0x1d66f208fc04411a1385c22e203dc08f0bac2f7cd9dfaccdec20d3b93252ad04", "0x0ec1ed3ae3beac4ddd1fdb17b9c7c648e7ec81885a07a5bcbd967e6a3676f356", "0x0b3e601e36a5d82e0214362c8419474dc1cc2c0ed8126534d69a3f790b27c603", "0x163cb4e3a5ec92e57b25b095a3aaa8cfdc4ce59267718cc6090a07e14af10b0d", "0x2dca90f3e5a15b29895f48d7a1290d7a33646b89620dd0a8ccde3aa3a51d41cb", "0x2c78ee5ea16d38f0beb9dc0733c4bb1893cb33ff671b737a1122d64f729cff22", "0x2af324ec4f9e7786dcf00439c75a294bff753e3292bbf62e66471fa730f19c79"], + ["0x111d04c083f51a6fdf87412a537f6601076d61f435094ea16946efbfa4893e97", "0x187aae261ef3ee21b37023518a071675c6d00bde82bd7f5441448abb632a764b", "0x0da28ede7f63f75596a2568b2dd7a584576e5b282f284795b1a7aa21663822b1", "0x2043bfe52d2964e4a3b2da5e30107716cc764f9b1c8ba463f215ab1f7f03498b", "0x27b48a636a39b51a938aea3eb552091559fbfbe71e096d518c40d908dd2570ee", "0x17fe75a3d11b4b9d2acf7856d6dea3bbac62ade0c501347b16864f3c73ebb7f9", "0x2326c3dca7aab6b1852654fb13fff42a152ca9632124216cc7cc6f6d37522a59", "0x080c442909227f4a9da92e33237f9a82cb0c6f7d0c4155bdea5c6517b046eb9e", "0x2b1c00ea00893f9f91331bc907397db865c37d3bc6c4b39b81cd931696fd7837", "0x092f03c7e98e61c2a85943ffaf9c04dbb0145fc2055e4d5be90bb68b90109746", "0x2a0f77bb3624fc4826c9a2a66be4ec75dbc21642a16fcc4182d2d65c0fd8d7ff", "0x1083b742d35332a8b79b80e7dc04a72f7e86692e529b6a1ec5687334b607da7c", "0x053e95f9455bc6499d447b6cedd0b6aad9cbced97ccf10060f3c9ef51e28e76d", "0x05904dae3470d40ce12749b27d646e620e8519e2b17cfa016caeb89d9e34ee6e", "0x2e563b9dc5a3d4d5a93f476b466e371019c77fd6eea506126a4f79274f2f6b9b", "0x14560083d980d172dd40c9426cff41467acea41d7f48ff11ac5fcc087ba2d5b8"], + ["0x0133c5913f25ff5eaa860d0318f6a4b4349fd22f2d53530e5c785b70988a3a88", "0x169538094d4f752529471e3fddc9ef994cfad4f96dcc7d636f0fd509b8eb9c31", "0x199835da95f6eb22c591ebe514c7f283f674fcfa1eb787dfee5781a64f082439", "0x0dbd8662511dd7000991b39da129f9d03b565a0cd2f218d6eabbb49a25f105e5", "0x0dd0c118f15ae07e5db55077dfa46e08109954d99e18d72cd2caf613920e390b", "0x07c921bf45e354848a60b0e5f292bb03c2469498b9c1e4d322f4afd1867408c9", "0x1f694d1acbaab0ea5bc026a1864d568be555b89c0f49b6134e9b895ae141da86", "0x1604de6a2db122bdd5d839540a1005ed402425bac3b85e3a72224d337402bdec", "0x25970ce31b7b10cef221267bb1be1656ec29146df06fdb5b4f6fe6607523aa08", "0x14956f80a65b01f9ee97e2eb070e9df2711cb8bcb538dd98e532636cc60782e8", "0x01d799ae83ef6552f30edc47b9e82adc0503dc4b74da40ba0bbd2cc9eb1b0a53", "0x12417c001be86197013b2b4871c4e9b0dceb83991919a9cafacfe54666f590af", "0x2171fd11f94485466a819e24d0acef08b0c87d78b46d93bb9462b443fa40cdc5", "0x22e9bf2aa02fe65e3cc74fb3d83d4e3351869bd30528c378958af462efd645ff", "0x072ea2f5cdc8a3789fbcea414a91e7b27bbfb3151df510d080ff4ef7cc73f0d9", "0x260f751c7823abae61b8f3748c84791c0bd84acf7eb6854870250178e9a52cf5"], + ["0x08875f47d6f518c8c2df51a786bf2207aade284067228f440e7d0307520a56cf", "0x0a68830f19c0a729b2f89be27373d397ae1157bf507e7799d4220166ea0982d7", "0x2af560600b3e25abcc7f78a4d6e2cd3fd99bcba075ab82b55e9841bef7b9210d", "0x11b33a9f1818ed7f581cac020051de26fe28dc0bd8cb1a4457d5a8447bdbd6fc", "0x045c617f604c1ac9fb8d76e8d380322e5a3b69fa7b7c2ae2c8ec5966d6a4c788", "0x0e6197fe502328d0ef7f9b930355312b347204b877e7f85d9b569dc34f064c1a", "0x0cdfe099e7a154278dfb6c0388b9daa1e8ff323a20be6a6aa7a8438333f879cb", "0x15ded859d501c2733feaddde22ff36fa8ae85803aec7a204f42b1f6553bcc655", "0x2d4026bfa7b37a19a300abaf2e1d5c32dbcd42240ed860f681f61dd6d6214cef", "0x0bccb669cb016d498464944f7192ecff6716e6cb5f895d2715bcbbb65b1288c0", "0x05de1099c65f08a990ac0f1f45ec2fb872c771e10275dccfa4fce1146639d0d5", "0x2c465d9b5eb852d79338b427b3184d941f34046172a82cce44e2b8e5c4379478", "0x23918075c8fa0929befc2b171f99ebe9ddd6683594ef9a83f84d4acfd9592d59", "0x15d7fba62bac57be5d97452a3c06d9fa757f144df166479ee7306967480a287d", "0x02b6f16f812ba903901355955cc4ddb99f24f1c6e26430947e51811a68311bbf", "0x0f6673b7fb4be8cdea74aaa7802c9c73ff0d53a98e94a2bc60685d890a24fdeb"], + ["0x0ba9f44a107a81cb23fba66f2bc34152728f5f5ca68406649a7efe47c9473f21", "0x018ae39086eebb98d1fc5f05fa0f87ddcb149b0afe38d1bbb85a65697895e63f", "0x101544d131454f20b549b24a65ec84f1b3221fd9b43461ddc6d156833b34c52a", "0x026f2f58d63ca6ef59bb95206ce3ed3124885ec21762bbb1db1d6a7771ec6650", "0x25b974fc5129d82ae4c6246e35f802e03440ead09995865313c8ca91c820c2d1", "0x2d409bf78bd6f6a4eca7397d065023f0bb6732207925d3ce4beef9f621da2ba2", "0x17f732cc1354b1fb476e70568d2dcb0b6683d30b02415dfd385504736aa86de6", "0x040db0defe6ba4797b74a43125cf34d86a2b33e7a22e2710b0fb7a5568893aac", "0x29e89034942414a1ff6833d6e22742d4106e0f5f37d1f2ab80e5444e5a52c9c7", "0x121d2ba5bd8f232ecf44aacf1044cd6ab6f93f1e537d7d1541754fd49f51b225", "0x0f0913eb4ee7d3c02d8ce73d1cec2b6cbb176a92129b34a294adf066243ff6bd", "0x0a0fe66c0d4de00cc7761008732a0097fb14d6465f9d1df835e0423fb207d979", "0x0898ed1ec1a43687ff6aba32de5f819434528a0752b3928331899b0646b2f061", "0x11e0b2343ef371d2d6d22805974f2539b6e510d761e0da170d0da90095a13262", "0x1d59d5c10b0c9dd347899377da35b7e677c7d39ef1b49166b974a7f2bc99c946", "0x1a15b7e2de27125f2e6a74f4ec7cd2455f1bbfaeb1155f1af819bdb5fe54241d"], + ["0x0542832ab23b6c7a4b547a1066037152a2442e998c5381ba97698413153ba6f1", "0x04c5ebc771344cc0612765710bfcb1c2e6097abc3d346f049495f7d7b7f06cb1", "0x1a51740cda5e45ea4d4bd7bf5ce5466a66a11afb5bc93cf10d5309e07d410e4e", "0x2eb6ed568377b696ad3cb237064ec68e390c24886e1f122d21d7cf3290dc6d08", "0x181589b140c9109e492fc3ec7d8ca8e3c25a7ce58df06f13ef43561d58c5926e", "0x205a6d5aab2d224b668c70fcb41582ee9ebe1ff099292b4bc50af8b292c0ea42", "0x28239a882dc7b2f3ff7b9aa8de9e3d81af736d4ee6ed991d5c6b4fa540148f43", "0x1ab15f2fde6f535e77e615c8c2602193d45860cc015849df578f9fef9a5bb283", "0x032b6266f24017fde1b281d0fe206dff30b539d5c5ba13b5312e488d8d6f194b", "0x04e358f259a33244f4058a056110a26816bbec3c76ab6a5f7be93c9e0c92f3eb", "0x25a9ac2d1ef84abd98927b52c24f38796ea60e63858ec5b50196d7e169c93b84", "0x2f521f24bc02286ae2bf8484fbbc39843886755f52bfec7d3dd5df78d340721d", "0x1dc3f7a659530a13accad181b6e265474108d8b1469266552dfbc38cb679d06d", "0x2ba39845393fcc776fd383e535d567621c7f64005a83a6f7f48222bc902092a8", "0x04730fe04e0108c9a5145a5c48e60c5457e4708522157bfe0f82af5c664d6ea2", "0x075a09e41e74de8a2ac7fef27591e76a77c851e1a51185f31e99b5e08f01cc74"], + ["0x0ba1f764367360952942ccb6edf051c8f937906a816641e0d1e9e2ed26906fa8", "0x29faa7dadc8b7e9588d4a601e77bd80aadf272a1bfec3c443ca3ccac81d9e1e1", "0x1324558b8a5d4ba61b17790128be9f2440c0085dd5d6065b88f0a3b2537bdadd", "0x18faaf1c91e002f7dbbd12f408bd5c5b92f38e02ce3635824821e0347faf53ec", "0x0ee1288b29855e2e38dd26292b39e260529841344538d6499996a32e7cc523f3", "0x2380ab051d0ac580a7d116f4a9337eb31090a4c7ecbd4e638e7717b7a52bf106", "0x158926b9e94b10fcb321b293bb8a8647627a5bd31315808d397c1c94f650f2cd", "0x264fadcc791aa18e76751a895242c30cdbbd1197a90a456dc278e10bf0bff5e5", "0x2ea014b61ed575392239bd9411c0a6c4202b7334cf2e0dd8c3040528e4a3dfda", "0x2da2603a26d4fdec35318204ba5060663e15a0b1e4d9395258d5e6eecaea8fb1", "0x20a0e3f4e1249c4c6af100dfdf63f8bdc69ec7885bcd0d2c2e98d98f9bb9d104", "0x02f1d3eed36018f9679711e030bdbae51224b5efb8b1eb1cdca8ab886212f0fb", "0x0e388bb105242406e372080e997a31392cf4ffbd9c694163fc366eae770e435d", "0x25143649c13e08d4b00bf34d2aa1a8e450f89788e27766896217047155c5bf1e", "0x12ec24239ba1b0fc9f952550a223a52d209d8d22b8b21ac24881a2719276be0e", "0x079c04944d50b4777dd0bebe953600645ceca9d65fba020f97365146bef9c6ce"], + ["0x2e0611fa4ca3985d7bfaf512f21a4081141f4ed0dc4b022834d3cb6cfd8b7ffc", "0x2acf3493012bbd818724e7ceda2431e97c8933bfaeb5d7463b512e6e8e8f7fcc", "0x13473024ba419fc2a7743e7df8fc8375aab150d3753a54250a808d66f2d06b91", "0x29437af1b14f637a1f0e39955f2604bf20439fcb2a090e346aa65a9ebe69788e", "0x206e4d445315b764280cc643b9479f49946ea86d7304b6a2c692ac34d7c98d34", "0x1382c3c24bf2489fe9efd80a163e650111f5d9885e58a9ed729dca1f9a74e59f", "0x17cd11864fd2c73d0867d37264b4ca14df935a82f2a6f432c4998135fa5f4aa0", "0x2de279fcf77a270823a91a6cd1aafb58e9e3ab32fdff0b3b05c98d554db6fad3", "0x12ced5254e260a9db7abe0cbea26396680f6e57dc07732a755d409ef751200b9", "0x0ef5f9ee6ba1ae1d1264cf1a36e0fe4b8043ab0bddf9b9c3200fb687a8ea5c83", "0x06b7e18d01b47ff8e4ef08078e8128a06693be657489492ac4195a854722bdfd", "0x23aa7ccc3751b740eec9f35a29986bc958a4dbc7c4b12eab2be8376706deb20e", "0x2273c370eb5810c03903605d7cc94d5a92af6aaaa7b844f35189e77406a7e86b", "0x2a7310e75fafe902e20287a91abe388aae8420b1ea4660dd7c159c26b9632cd1", "0x20098399725ee15d93ffd3e481e4a7b95c8c5083f9d69bff1714eea7c7d82d49", "0x02ca2bac7c1aa0c64e684123f0ffe22173923052b6a01f3c29be80137fd8972c"], + ["0x0e6f23c0ef6f159dec68341a87830fb864b6c08cb954a14a2500876697897fb7", "0x23b34612e7d052f6b312ca0e0cf70034ad232d9bf63c88821085383b6f6ec4a3", "0x13f15bc6453df6f9383446550534dc57aedb10139e3053e83bafdd99356175f0", "0x0edf86bf1b1599fe27c66f3494862d75df7764070a8263cf88778f7287938d8e", "0x1641648c26b5a2dc297daaa6d4ddb6a2f258ba738f9094e7c5cda6efa8c993b1", "0x280c4522ad0ffd92c391e94c70f87120b8341890c3329af050625f2be52f3a41", "0x1d772098b6154921db8e7506e6f0372ca44f20af3386e13bcf71ff5dc0d61b1b", "0x053ed8ad550d8992f4b9814920183dd839bf355eaca8cc7b07020a22614a808a", "0x1d4f9ba4fd8ce4ef193b9f870f44956079538d63bce344f9016ac5ed63a99a5e", "0x0d53d61c8a5214e0c4715274ad67a5d6a2cfb9fc3c1e791d41de22c8ba8468a4", "0x12cf87253913d45d287e975f2b4f5b909d16a87d89c889057f666f6ba61389b0", "0x2b088cd30a10899babc325bba32aa343d329f9a8782469c4d25f0f237ff607fd", "0x19972ffdde7898ec8be4fb28e4b19efaa43c7ee20c88e29096ebe872e1c19475", "0x1fa6944703fe0012a16ee6042529ff02bc804313ef8c6d8b0f910a75e6f47739", "0x18237af733bc44418ac84e623f483a6be28b8f21d033fbf099d645ba20f1fc26", "0x13d9035a0dc798b04dcef0f08edd241524fdca0e95ba9cac05d207bd317e19cf"], + ["0x01a7a2a4a08d87e75f720302bead7ca21c8f7c2ed2debaced9b8b1b2da461cbc", "0x11680cc6e80b0e430a4cd3607017fa8331d86c4d03a96dfc18767c97cbe0a197", "0x1314b54f8786096244532c9f054b379636e2b58bfdceb3d48dfb2210b529b4e5", "0x1336b208e00d8ebac83246a96ebdde351063fa3f635887e753a0ce3e29c7eedd", "0x1887be87f7a352410482ef3bdcf7ef17976e087eb8990c76d7e971c44c048239", "0x1f405a9483311e1497568f1bdcd6d58cd6bc813982a0e71561b620003b888204", "0x209576be72db7b0c9fe2b8329125e7dff0489a8e900a5f14c1e6e48604134264", "0x00279702b135d144ede943195269c00bf620f058bf0186ce9fff3cb38b22245a", "0x02c9c3135cf64b89eb5b714d7b2ebcd81fc7edae637cc6116591df208b6b2583", "0x252e78b4838ad5007f518bb9c6a4ce501871f71128eee3f0c9784cd64b183fbf", "0x29a7d554e9ffbee639867842fd0e7d41ea9b1bc9621b654fcb398f71c95b668e", "0x305a0c2c2c4d35998e9913829f5602504363f21bd720347350b604193e79bc3f", "0x061d78e1953d1943e2d968335b73e15fecef89075e96c943d39702b214ddc5fa", "0x261f975babd7692822473b8e39f948b9cf98730a9785de393179d4bb99dacdc8", "0x1e3d6cef37f9bdac23d1b381a6c58d0ecf06a6ebf58dfa7a995a443ed7df68e9", "0x1d6657d791831169c56b6e9a201f8b7b240246a2d0f854430489b983454032d4"], + ["0x1d8005df48c8565987dbb442b482cae5bfc10ee486ecc5b670ce861345979d1d", "0x1fa772ebde6f3732444623d67fe991116298f8f30a2d1010c8ae6132a3d6907f", "0x056a8ecd232a674c63d7b603ef8cd06321c560df2fd3f6c2649af576467fd798", "0x2646341eb44b4800d56084cb48500fac48fc533891f557e96784cc6004d8928b", "0x231f2c98bda8d48bb4a6d9c98bbbc16027235a22a1ed4f88bc8d3a6e582209f2", "0x1cafcfb62926fbc04857b0bd7d7392b8d8add16b5cbefb54b4d5312826e89942", "0x0b7ab1ef17ff6235f7737f044161902f03d594cf4a0cc67b4ffb4711ade1eb0f", "0x179a82b77f2ccb94b38eb582ac4abbb16df429ecc22471be73cc7766f96d9948", "0x18b63685f6fed2aa1904856378442151dd1fa01c7ce6121d23e1e9ee20b42558", "0x0a27a8d1af6a0460ae1724f32f21a06b036668d0a863be50fcc47fec5763ce93", "0x186756775058d09c639cdabbacd01bf3c2744152156fbf7e8f3e999fb610ed38", "0x08bd9ddd192d797a19dd1da049beb39fa6596598a27031ea1c2b28966d96180c", "0x194184a825de9e9b63ed7a7bd071253ef5903e1e75a50536db93c26311a72017", "0x2e08b28bdcc417d9643b3008085a27f4a9876792d3915c8b9da3567a6dd6ce82", "0x28e55b0bed59191216d5dbe1dd05b22c009b079de877fd54aaf5401d2c867e02", "0x1c89d8f975f0304282ad8f7bd41c12c3b18ac6b80e4065fccda423bbb3ffa786"], + ["0x28122254823f8926acb7e98f557e796282e5e1271618858e76d49d0886da16f3", "0x2e63f1740332f57e8317f2592ebd8db0812714d6604132d525e33e19b3c98494", "0x0098b740976c2a1031e75132e050bf3838b739d061582543c1c7f95c152ee262", "0x06f53c79fed9e09848e112a0742d8ae84a04bd9ba5aa2765b1e5edfb1602140f", "0x1fcea89286dc1db61fe1111606af396e98cb53dab5199750aa5e5d11561fb145", "0x0a12e162620e71beeb203be56594416b083e7e94eec23e0f44a5ffe9e159508b", "0x1b1bbf4e9f706051716a0e28990caf17573086a5d818c038836696808b12d8e5", "0x089efed00e9d993f5fc1d5af2f2b5d47a9b70e6d5a603fbaaa8f65102123efd7", "0x2b202e1d2626c6793d68aacf9c3a8fffb27cdf5a0b83ff8f3504f9ab26a43d15", "0x03048a265d0eeb40e5a531633ac22bb825f75cee9036e66a061be3d4d248c862", "0x2532dd7487fcae0dc3a7ac50b80ec330c6fb6d4cf885f1135988bf6dfc010a6f", "0x12cee8e3d1cac1ca84517ab3def487c460aec058348ff220c801b78979af9e61", "0x21c0d1874decaf90613183ea827b91c1b2951839f71f329cb9c9b0753ffaefee", "0x017e9ed191c5641d768b0e55ec0d4a85f6e5419d32f5668d397d5b6cb805387f", "0x0c6c9ec31c9e3be0744919fc555c77c0c125927bd16de2807712b35ca26dd045", "0x20829ef3df9c183f8965e49c8f315c2995a6446a76053543eb750145f1a77400"], + ["0x2414d4aefc7b4857df681328e68a582d23b2dcffd579a8e6aeed6c61050e05cd", "0x1202e349d1d7b805846e90834efc911eb6b10c2a09eaeaa29ed288bd779b14f1", "0x024b96dbebfab6d23fa32c2c8e7758cb240bacd8143323c53cdb48dc8b65f8e4", "0x2a3c9f55afacee735a1b515526426384ad044291f7691974d9c05c634b43947e", "0x0f7bfcfab17db34c144cee44636bdeadfab44a6bf4fc8ef384ec89a4ae9ed209", "0x17203c4d2e1a428a17be2c27d1c4c5960dfc6aa36f22bdde8be56a0cd44e71ab", "0x22a8ee74367413eccf7aa03fdd420c6bb6255a6dd82081d6b14eda9a9752329b", "0x21e25f0a7f8edc38de25ba605a86cc08e08ccb03e77c5e0b9edabe74768b60c0", "0x06a78dfde1458ee341a089c15f953a2193527dffb43f552cdad595da7c6fecc6", "0x03fd94e51bbda6843d31a282530d54240aa496165d644d5d7737b1e5a7d60d52", "0x02efe529db1de3c01d6fe7fb8a71f1eaab6af1641fb1f7aad4f2b88cd13c9fe5", "0x0cab504b22a3573d09509f85d3fbd94e94417acb25392342bacd684006c37185", "0x1cb33ad2ba7dd0c2063443432a847bccce775a8daf868e0c474905a4fa36d70e", "0x0aaf37d1f53dd0556e347ec705962379077cd543198e1c27593f4454521261f7", "0x2a607facd3936fdd0e84e9bc3e4b4bac86e8102c2b5ad15cae550d28b3654e73", "0x14a2bd5a56f87009db981546533202f3af812d2ef4d6b037f2830853b9f9039c"], + ["0x2f710c72d6da19c7d87cbffd55665b472b0265d13e2326a9a33b96e95d3746b6", "0x168fdc32d4aa8dc9034ad4a4fafee89f0ed5c980d3db424d38f8ce5cd04c237c", "0x15bbd5619f0d59790804f2b9b37e069fc909a2796d1f77d0c62609deda2d0278", "0x1e16e9ca2502d696023bce3427244ad6553ce86bbc4c349a34ba61067c6b6d6a", "0x01dd0a5502743aaa9f583bd0ad35de13ad8d5fc98f1961f2612ad4c28fd9f9fa", "0x0ed2cfae7b36f470a7d1f6940f914e8ecd322bfd6b50f9ad9f6a2226e7a95db4", "0x2c785f9d8834f5cf5d08f106d5f9918340fd414abe24f0a9ff2b8e0492b44d83", "0x0d8dbc3fc854c0665c30c48846d7bb0eb18d3d78a4f70fef07f242e45b865eaa", "0x22f62e45e50084696ac2512a25db9925244cf0214b6b543d3a9f83b8e8e58ffa", "0x2f26bc13ae48520a439c9f546abb35a1222a307e38fafc3e7ffc843f6c77d7ad", "0x0af825f7ca24b4a285f544762d9defdc99f2b85c1b89fc5ff2079d3d50e6d4ea", "0x160590968429f480f55611c6448912fdf423d37bf483c36acccc1ac9a29d2a53", "0x2bb32cf60f8d469edb1b6c56493d4c9338b4051ae2514d4b6082ef18b1d5228a", "0x2a4a72e9dfe5bf25f6fde750a1847e5b44298ba58fb504be57a595e7fccdc404", "0x0c509a4bf48ad76e90410bea34a8919741608bbbb6b5503c93e732036f079d12", "0x199733da4aeed8d6cd148461617e8e46de22d3720431fc1605619b12a7fd4e2a"], + ["0x2e285441d0bed90bb41d6480836850e4d76da8211b04a236dbc7c3c30320c00e", "0x0b9ae9f5ee6ad70a651b4b66e34f521b130d18c49464d86fe5d4b1820489028f", "0x04760054bd5d07132548bed7657f17c61c038ebcdfdd4025c7b802e08948e108", "0x02a4c6d3259779c396ef8173ae5fe87bd611dbe25d1c048ada96306db1e3a40d", "0x1959db01f5c8bb0cf483490373e75b0451b87b43e59181be0b6016674f3f5efb", "0x1849cd0910d72eacc32d891b71faf500bcb93e1cef2504af443b94f8b1ce7212", "0x04b5dc2057b88170a718a102e0ca9177afc757ee26773a0290c6bab159ca4fb9", "0x17bdf338072884b522ce3c50ef4711091b9daf48a43374bdc0a830c37e5dcdc8", "0x2d9379e69b178208b8496b8a0a0a90d578b21f090c53042be4767e3c10d3b40e", "0x014057d02e5ebcf33c166e18fe904defa9e342a19e88d42336377f1c5e67ec30", "0x17818dd0254b291d0d8f4f1a458c6a21d8841153661812bbe986b1403cf270df", "0x1c95c2917353c53b4cdb7f750a0fe86ce10f8d5bdb018032d3f793797d7c0a35", "0x02495b3c1bfec60741808149333fc43f04d79dec56582c292829ffdfb3c1a3c4", "0x2adec8549dffde7238b2bda6e7732990a911700c8d35288baa39e67015953231", "0x178074303b90d8985e376584b8b8dfb7f952f8f4cf84d815f90baaa3b644c4c6", "0x1f5fc060028ba07d11fc9477f4faffe79a81040ea9a04c568267644895e6737f"], + ["0x2964901a2b42e9aea1a6593662aeb9e12077a287434bda4ec2012e36a19dc95c", "0x06c2194af72fac58ca13a2a5e3223104ef49a540fd2eaea0d67a920d8567040a", "0x0a5494c9bcfa06aa72c36fd22d98fe72dc14dc0e4e74e03d1755f38ac34050ad", "0x265ca211180b012c378e0198f0b5f7758c155e3675fadf92ca79156bd56fe339", "0x21f659fedaf6c2617f17d637cd6f54a27782f4e8431f87af5c8591932ce7dab7", "0x1e463ae3f4c3bd047aa1049f4f091a2f1d5d3550e3d5801fcff68f9a5e6828f4", "0x27412191fa2b2e5327a11d290e4b439a4124f48145c61ff4ece8448a4373eadf", "0x0b3a769c8b371562260395ee4f348f88bb056a2f0ec0f98e4e633bf7d943615f", "0x1adb4c87433d866e8fe5ae26d01477e3962879c20c8c3a170c0727167c06d0b8", "0x1fc26ed027db7b9e7241c2c760176662f634ba05a9ca7a850e184ae588cbe215", "0x10175fb6f81b16436af30682f36fbab396eddb7829a50e946c75f27e260987c7", "0x23d300373bb8ebf7dbcf314a3c0b1fdecd5cae23f7e7bb915bcdb6a6782b57fb", "0x0f0417fa6237167e741525261306c17664dc3efa9247aa0d4bcfff38e89dedee", "0x1e8fd20a8030fdd94e2c4353d8f82b4b212bf887bc59615814890b0f92a47d90", "0x18572826385dfc6eeca4d3c71d110b04abae013c5450d9e4947a3d019bb41b6f", "0x208b7c8c1ff8422d4a1bd13a02a94681ce217d925f40d2875f73def14de7a220"] + ], + [ + ["0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938", "0x1440dc2578f44694d18c25f892d98c23cfdb87a772200020e897823d4bc84d3b", "0x23aeeb0c6499b84bfc32ae3c42df9728798fd2ef774f1518b870bc57d1385900", "0x1ed9d3e9276acb7b4dae53eba148806fd9bb07b2dd06187212fab7dcbe63d72c", "0x2ff57f3f7e95b03411db790a86647467581197124d217520ef2e6332a5b35185", "0x15faefbf8584a38969b4a719ffe5f02c2191a8cceda0b775162203d30b80208b", "0x1e6eaab1191593de0d89cbb2399ab8aa955d829ad959428cd539be30b72fde9c", "0x2a3bb020c8a50d310ef5b5c77cc408b077fe2481454754c4568ff668fe5f0974", "0x051f815c454b6015c7ebf90c297b90e9604cd36acc6af07f99b5e51fdeb32234", "0x28b75c2ac167fdf184725317c7bbb8083e5ac5bba937bcfa6cefcb69e4048bf0", "0x023af324599683d9b71b61d093d63dcbbd97e44957333d2697fdd060c1e4b585", "0x05a07868a7c95f50a015879fe7cdf1eb6c317e4d489d4515208ddf40a32329ea", "0x2c5b4a65bc55ac5fbeebde53ce5fa68882faed2a92a7b3f5732832c72f7f2c30", "0x173f895e472c4eb16a2aff3b8e0417fb32b83eb1e3233471c76a0550505d0607", "0x206cb038cc328526d0c3dc5af19437d83219751c5ee8f61b0e9e2f5881366be3", "0x0240c57897161666f28d000b88d3353921d967420f401ce86bbee42be287a4f8", "0x1aaefc2e9925fcd453996fda804063fdab276b37c5f51dfdfef9255b4ec10cc0"], + ["0x130fc54477fd953377fc23abbd7a41be6764892a8787c759c1440fe0133c852d", "0x065e134cb8d84447d6ea1e17932bd4a341ebef2568313c24594faf9d7eca2110", "0x0e76c40392bd5f458bc187be54099312a0fefff44b441637020eb92670a6fcf3", "0x0b981765ecae69dd7af3b10ffa424b8aeb206cc4f49257265c6753b1cc54ebcf", "0x0e4fb044a9fcb4087e351341f25d98b1399b576e2d6654534f348219a0acdf86", "0x303e39ca88e8da6e5c963564712df8a7f8501a7af4a990e4ccec19e5f8fc805d", "0x01b77995dbf30cc55f9d4cd4849ced949349da81239a015440fdb38b876abee5", "0x23643add30be204734d029cf034c958144551060c1901c420a28c9688ec36a80", "0x1946a26ab8953f9be558105fa5179f175e76a24429dad5d532c2ceb3cfea05c9", "0x248b533f875e5ee8e751cefa4b1d0732fcd30151c3a5cc4abbbb1e93b4655d45", "0x2e7a1c51da61dd214a1789d6f1ee2957f69d21b1f16d1f9458eb25a406500bd3", "0x2065e374edb1f3cbbd2919dc04d14adb07062dd01ec1501b85522e7e0faf925e", "0x2f36535a83a09cf09fc38a20a725477aec56668f034a364a9f4a5605fffd33cc", "0x1123d3c97ff8e6b589d118bc40ca0b9ac12ae909558f2582551f7a42345b4621", "0x160b30c874d9c06704c92c266c7a5b7fd966a62a5db008f1bffdf443b1099a82", "0x1361d27c42a7b4bd6eaeb98a339592616c0d4d8fceadfdb16468162bdfa88d46", "0x00f1e8f86860c3b5c78bc14dfb67d22c6beb8992123658842f23f75ae3a92e99"], + ["0x2c9c91f48661771baeef6774578a78f69c355c8e907156fdf26db39d2446413f", "0x2c6b133e80abef84904fa4a75f968fbaabef890286d5fd11b87a1e52b7eb6d0d", "0x2ce8546cb59f420ede61692e764e0e9f6715b16a2c8047cd8131c97646f50d24", "0x0adaeaf28776b813d518f645c793e57bf16067fd80eb921dd5a67e895646c9c4", "0x2086a01b816438a2a41c59e43d73fa9aacf0c24e4f6bac229d65fba59922554a", "0x2348580de49aac01ce8fcb5aa2b467f6787dd8a96ccecd6fb47df7d5a4307398", "0x1fb6bd6df650d27e8cac05ac0b45eef0700e308b29b4bd41eecff58027edc45c", "0x03e9718237c1700d7dd213e026f307e8000b3851467fed9e6f51fa5020c2369c", "0x00925af35a3366801ac80a31d63f745fa807bda10560345ad572bef4cf2ce0d6", "0x0f8692d64a5b69a956c4e2006bfec344477fdf5f0c9aab866609842b9d75269d", "0x2bdfe7eb4fa803bc1dc0052a46d850ee3e091eba8a7f12579682f6f6fd5044d4", "0x13bdacc137bbcf51d8bc9d281931d6e71122dc6e93e7ffe8b835e3393775c3d4", "0x07d78ce0c1c87391a06a06c83d300d52524b29f183884e300e0eaddacd05f068", "0x0984c132b29a05f2b506ca07c06fe9a6584f36bb87506d2d316a4f353cac5f1f", "0x1b00faa85136b1bfc496e0ea9a6284cae525aa96612ffeeb514808955693879e", "0x19e1e46536704ceceac3eab991bd806e347be40a0b7956dcd7037352fdbc4347", "0x19c2540bbb1cd4e08f105437063c945cfef28ae9dd50b97e0b795f8dc5ae34e2"], + ["0x1dec0bafa3e8190621e5e095ef751ea03c836dbb8045b2a73f8d397cfb815192", "0x27c72332f59a00135baa94bde294911d135d1d95f53c52eb8b3b95594374906d", "0x16e64661144d816885b32f3f7809703477788268d57c14b1d939a26b29cb7ef3", "0x2018db386a3e4e57eada8d91408b155061df050140fb22f9a4f34fb4e2d02428", "0x12263b7e3f3de60899a2c22fee919972cd79dc289a87f31f1b44baf2439dc87c", "0x10e420edcb6da76170b24d777ce9d31612edb1593ea6d30e8cfdacfb6974f991", "0x0ebcb358f95f84b719c631d4045cef03ac6fc238f6834522cebd02e47411bb6f", "0x0c48e2f304f730d48e83dae5c78a46188500bc8040a49542eea5ef1a21b9d222", "0x00e766f03afbb7af630eaa8aff4fe60f3810f30f3f4438498efe0186333dadc0", "0x1b8a7909d7e7bd4f0bcc8003968e384ac2e8b405ad05cf610364d3ecb982db7e", "0x1d92e4213d840a330ecbdb08693dbf9a971bbd6229047eb88a03f334cadef227", "0x0d3b3fb86a44b7422429a249884c85644af1975641206e610070c02ef5a9f4cd", "0x25c7e8faf6c48a156cb91d81a997c6673d32694a3fdd64f5e9594e9f504bad83", "0x2d7af834c9cdf1b38c8cfed218f1ef0ce0b9908de9e7aa7a5510c4fb917a0281", "0x175af5e50e5685ec2dbb1cf7a2cd25d45680f6cddf68d7c0795dec98b87f6a71", "0x121f4a18d7b7d9650aab625ebe8695a8079439f2ab00c090279de74726234e6e", "0x21f08f9b3c23f3a02518114a96929b6d1056eb4d1db147ce0c8882e1b0f7bd1b"], + ["0x0a5f52ad6ec4a8aa377d8dd2ae3aaf6eea0c68c63a1d034fbda67133ca0b85cb", "0x087488f735b1fe2fa3c6c7148c4968e7f3479b1418a1a566743c1ca215dcfcfc", "0x06cf0db92f86b2732ee5fb881ef0176012dc4adfd849b9be4de17846a6ce5d99", "0x067c4411745db6c6aa659ec737a586a8f4a1cde0352e30aa0063794865fc1c04", "0x19909241cac50288c0d12343e0c12cf9b9790b405ef0a9001aa6be0289063aa9", "0x01d25b94bb7c49c0170ee1fb2a5824b70e4554bcc54b6c8f8cc0cc9d74f19a5e", "0x03274e735db2faf186787528254272ee01967e6ae9d825141378b8354d843965", "0x0cac320362e235b458d6d364cd0fff914f3c056adbb038dc2a861a49f7f70e24", "0x1111ed7a66ba2ccd4bea0d43eec86ea35ab40253a1209e3637f103dcb84fc429", "0x13e736cc70b7c828a38dd6394ece76b9ccdae2ca4f43963432502fe8c2ad19ff", "0x1f2805084976b142f7c74a416ff439ff1bcd8b8e7b0570130040754a61b71912", "0x27aa50a0e5d5588c1486e8e7fc8dda65489fffb866756c218f87e7280cddfa64", "0x1f3cc6f65d9d34370825a38fd1f48f509f7c56171b9e7a624d9b0ecdf6ac4eab", "0x1b11713791ea4cb2e17c8c5867502043d0a8cf955384c1c793c506b75fc0db29", "0x104560e95c49febb7a030862edb3a33c2b2a3d414b0536b2e54e25ab36e8f281", "0x08c45f3c4c486f6b5378c779c607b517200bb70b5533bdacef18519f625b925b", "0x2d2193c677bbcd56a74fc2ae50ab4f2cc69aa77ccfc33c7707452d5adac77edb"], + ["0x20ab7394bfdab344cbb6f2123800a0e23508e2125bfe795ab4a767cecb4d9306", "0x19f0e2e141896eae6d56d182b687b8a6c64cbb59e031b749f35822fc7ee353fe", "0x18f754a95b0af0e4706ff9024bb135164abd6fc16ee40cc2d6852d88a2ffc9f7", "0x193fe0e9b48010fa319c33b86b6b18f428f323fa237ca918a38faaa91ba49567", "0x011ff091dd551b6d586203ee0cafae2f7652e923aba82574a53b632a066f4884", "0x1da3e00601ca3fc0d90b197bd2a474b46efe3aff3b2cfaf1ebe15fa1afadf2db", "0x004ef41945559c1fb0b2116cb2be1f043bfce8dbc96feecccda47cbf68be59b5", "0x2f053fdf1a72d6ad8c9df97a04d637916f25e3425b6dc33e99ca7cac5cc7e4c7", "0x1daf74842c7e79104349ad399592c5c4cce16f79e1a86f50d941598772cca953", "0x2ae8da8d0b129a22f834d0d234c8917c2f877ff00dc16215498d4b748fb40df1", "0x099b0a6330926a4a1564dfe94f9a1104bb8374bb518a89de08c591c17dfaa059", "0x0b9aebf041146c119199757ea8ceee5abcea9ec42cdb28b921caf21e84847851", "0x055ef271e388278b1aca34d3cb00116bd6f7cb584b3c69f0de2a7afc8d98deb8", "0x26fbf1a351963fbbdab590dbd760ce6284273525a1b46c41f29226c65339f4b3", "0x12fd67863b2e03b6fb45224fb041ff280e936742b54c8e54d3823e090e144169", "0x00600cf26635b2d546431507589739010d1b757ceaae617bf95b8e1efa98643d", "0x0f528f5912be49455d4323b259e30ce2984d8170601eeb4bd7096b47353ab7fc"], + ["0x110ea322b0c26476c67bfa2c1b9d1713f93b3b9cf8320ce0dcd4b64288bda07a", "0x299c47f1e3ecc557ab1c9abe36f0d2ba0ece01051e07f0858e97a9ce16f5664e", "0x1cc053a6a4d6f96da77e5e73adb9d49bc4d0ef2cc2f69fade48040b7f8d71386", "0x09558ecc58bee4f3c578f62489dd900840a9889096c0a62114aa2db045a1d033", "0x093d7d5563e3ccd0b5f15a9b093fe6b863aacccf9af11ffea9b295b7dd42b1f6", "0x045dc0579ca66e7e096d4dd86b882e68af2d35d70cf5e3b1783caaa0ec424253", "0x0da02f6410e24058a1e90412cd5302c57197f7b1af2a99496f9cff3ffd58808f", "0x2dfb6dd598ada57ea71a8d68e6924608f0ec7838808688ee4b3fcd521f7be6d2", "0x1057062b40bdcf1fe2aaef45898c871146799a92c87d0fce64302d6bc83172df", "0x26e6d18aea75a94861a02333b5364ceceaa78adfbb742817218ca3af607b910e", "0x0565b96659025935d9c025c7ab20b1611db00b67ecc51426b342f8c7a17fed83", "0x2776bde52a1259472c1cc020e719f82191dec3ab7699b7d0fd769dd3fe392997", "0x0c1a324c49d15f87931821989b8c8437ea9eb46ed3aacf8895fd1cc311053e60", "0x27e68568e9cffd07f9253ef9dbc356251dc6b2d6a903d6c7046b5e90e1bcdc9a", "0x1db0e7e01722aad210e5296c36e9103e82d15765c318134d177146a1d9fd5358", "0x0aef8a4e47d5ec760e0565ae7acdabe7e8e98972de86dd2f447aaf216ab4cc17", "0x08c00c4e5b3467f01901f64f9f89c15bb0b90918d488b730cacc3296691e9200"], + ["0x054eabe6131681fa01fbc6dbf3e7d53595d0f8809987182142b890ac8af89cbe", "0x1a4befe11c0230c62de44ffafea0de903ba328c6d67af73680312b68f9acffda", "0x01e40665f5bb8c5c0dc9c11f39d47e9d33e717afa31ba74f92f8737a55efe134", "0x23c4abfeb83192362aae21b2e9ee5cfc765bf1000f798c3ae70133556abc78bd", "0x1669e44bf0223a77f48fffbc9f4f20b5814f6185ae11a210f8fdfcb5f71d603d", "0x2d5b3f523a9668cbe4887881bf7b40184f978713e358de270d87a600e5c5c92f", "0x10c1856f282f556d7cf6d4a293621506724ba6d3c582e4c261842f2a4bdb0ec6", "0x22cc4349f6baa3a8e0b61fc40ab97210e4bd3b3dec7f05bb8ef839c84692afbc", "0x12d019e37cd1bd76fee065bb7380a9bd8331a4dbcd1c9c776792bc19045c23b6", "0x27aa38fa051c434189df57bafd80723ee29bdccd59fbc1aa9af11891d3722e61", "0x0f0b9336db5c16d472fda3fb9ac13b13394c09ab9f484ecf6ad2060217b5896a", "0x275a6f59623354d71d38b4e200ce2e9676aab74ea8b8366fce33bdbc47d0586d", "0x02ebb6730d7bafeac23fc0b457ea824eeea3c55eca634bf24b2ac2a9a21483e1", "0x0ff215eb1e38dc67432e262df27eda7c3aa9419d5b6e299bd948e970fc35a62f", "0x247f9c7fa610322535feb0676cff549f1c177d0d39d3f1eee642e9253aafb82d", "0x2ad0bd9f71e2785084aa0b84616b7dada053207c418e65f4035be66a0cdc8c12", "0x0fc3ccef00d6a64080abbed4fed90b69c5e5803134c22b42cdca0a60f03ec33c"], + ["0x224d811fbdef8ec0a006d376a019e57c93bd596213a07823b7d4abce1fd8e621", "0x140762d30c5c3a0b0750b1400a86a9e2f5cfc2531b729370f3ad9fe1dcd43f96", "0x0976d7c3844bc8deea0f0337f89b2a131302ffd2d0a870181ca5fd5fb6d4fb63", "0x0152604201ca7df05994e9d5f058f3b6749cea63aa0cb5b4e1c3a00b6667958e", "0x1ab6d8fe39f87bb0ee5b883eea2725caa52c575740d5ac30b058f77113d05239", "0x1b62ba8037a83f1261544c307f019dbea1cc6a84d481ea8960b0fc670745e8ae", "0x239abc7c9f866aec28685c26f4e046a92d4360d36cb50890f422e18ed6f8a7b2", "0x02fed5a03200417664537df8fa30276b85d91bd2ed21de33d901fb4d82439857", "0x0996cae74d9627ca3c56c646095f39730274d25e82c42ce21cf789253d48a3f0", "0x304dbc0936862356e0024b2a32dfa3085abedbd337f22b89062be614d83cb083", "0x2a7de8f5ff476d81d393f1d274636ca956f05bd422bc9f3cc0fac0054b58cb02", "0x12c6f6c83a3530faced60c88f19a82fd12b7d938a79864ed20a545a52fdce11d", "0x201e03f1ff672629473a24f32d2d502acdc8fdd2883014de74c98f40a195b3e4", "0x118c3efe920c9c3f907c867743d35d2ccbff7c89e9c31bb6a17c552ef92b6c01", "0x0f705feba5f01cb27b27c104bc93f0c974f561fa26d5614f6a9d9e47d03bc655", "0x28d327a1c2d6012d9e69e9a3b4c11ad336d3c0dcdff4c5c84ddddf911eb645f5", "0x1bce67f4dc99547f2caff1b5c6d63e3ee2565a404190664533c1c65dd9d8d532"], + ["0x0e691fca423128a7d4afcaa582b1a94799ba1f5d2a5d53bc2bba56bbecb227a1", "0x180aa4babfa7539753d9c222e5e3359aca59e06bbefc7cf3a3ffa4f961fa1d5b", "0x2c54287eee368d5d52dfb068282d68e6b09b76bd1b5c9333b36848ac277744f5", "0x2f65361a4aed320fcd03a45c44dda740213571f3975ce20b96bffd960cbc6e25", "0x235bf178b5b56262d988bfc62708b0f85d57385cde2b4dacf9e6d592deb2afe4", "0x1794ec2b0eeb22fbd753b21fcd949e7bedb305f15a59eaf74a961c3046635f85", "0x083e1cd5943461ab505b200311bde4003fb4f7ed16aa58c8bc28f2e08e9f6922", "0x22a67a88776982d6a15f577dcf780ac485ebaae6fdf6fbe50b95ea266a7b6059", "0x2d1188d9e7e6ac24c4b2c9dc3dfcfb0fe4782d689f31b94b1fb15ef29d11f19e", "0x265c43c886f07d025200d56cd246b01670b3e82ab482f5879b10608cc05a37fc", "0x0f26d05e938f8317bd608eff0895d352dca712b653b1492f8c2ea96b26f9381e", "0x257689a4e22f6a8768aafe54218d31de4e409fdbf42319582536bb583313a395", "0x1edc57f174e1322b627c6f9dbe27ae2703c3f11c364b38188bf41d8ca0c1709a", "0x17b39f38636d5eff5e06eff089eb56051a602bc8f4bf1bb0ad2b2cd10cf07138", "0x306094ecfe63300b2f95bc98a0406c7898d86852330a7b69f9b04b5404b3eef3", "0x11afecc85590543bd2df8ab952be164670a3f32593e962d4bd493bcd3c84f84d", "0x1a8ba4f37d2315389c8560d74dac572a4447a02145516287053e6b9edefbca2d"], + ["0x189e279c92de0bab66707e6e6e310524e615cd4c6aacc665372a3b8e372d8ce6", "0x17208ea9cd4dc1a6deebe6a8d27a3181ab5f86c6a706e6fd007fc1eb678e9de6", "0x228a3488cabbf9f29efc0bce211a09031972b37f25ea35aca840dc2331a0cf35", "0x22122c6313fc9a4c6d0f944d3ce238272bf35147b1b788aab2b8dbceb6024c76", "0x06649a13e65023a713aaee5387d388e3609ae9b14ba4da10642ee0b7b4a16634", "0x1ed4c95c6283b45ec0cd88f511976f063ea2beb0695b8af7cc10589593a7978c", "0x15fe62a69b0438294395da1bfc93272d88797ceeef666ba2443f0c146f8ab7ee", "0x2b079a1d09b9d4a76d4e50c45c01fb7508b1c443a8fb21ebd28533e05def8864", "0x0c34496a7db5abb330b2f6ce9adaef5ae6e308c8fc2c5634097ae352aa7457d4", "0x04ffe27a92cb4300e774388edc3147ab9dcc4ab354c380f51ca7a2e7fe0463c4", "0x28b73b335c72f0774871a2030d444e5fb954979c1c568e112fb911a46c666768", "0x195821b99af2c217404ee582e29889072ba3cd994b74955c261b5ad364e5a9c7", "0x20a56fce37122b7400ab61a65eac815dd180f52fad2835f7fd9649063523881e", "0x235132912db2da07a4750c5ed5df2590e718404aefc48be6953432f64424042e", "0x1059db5e97f25826b0bbefd6bfaa6e9496c55ef5a88fefe9712691f6fbdf4298", "0x0b050c882073a581e767223705cd9510c04c30168c50ffe0c9875a28b6938299", "0x115e60c4e2937eb53c6e4a5488f801266e84d07547a0b1cd91b18f49efef9920"], + ["0x1d9bcbbd17b93b1913d2f79cdf12844441237206f0294746d93f8e5bdceb4725", "0x20007a0f5d37798789e0a8ef683536d9cf4831a6566eb727b41191d9f2974710", "0x16bae49f5ebb1ffe886b634d215de61ebf4f44d1cdc4f84670df8ed69310bfe2", "0x229aa5b547a63780d8d129e209fdb92f85662616d59da908075e668fd817822d", "0x29a5b1e4e2f25445496adec230ed53a35993b37630aecb5d76e56608d1b78cc6", "0x0bfce7b120068b9a30029dbdb36be01d071e8163fa1724f13c6ca89be29b729e", "0x20055568b33367bc12bf4aed7a0909c173588a5763c6a1a7598ba7c6c7e3c2a5", "0x2df1ff86644fcc42a1932cf15d314eed407608246f14a8098725ff7be809c87e", "0x1d4fb0f18f31c8270b4636e6b5d7a33e455b1050de1164182cfcb739cce965da", "0x19d6f1d110d9f873db002ff2ed828905bd6cc5d7921c238d7569daa9b2401d32", "0x282a01e8f2ce09cbdd862f98fdaba3f9af02443edc962cb34802d04477de1e20", "0x304b679008e8a1f09448423a05889e0df663a2b65055ca9ee5a99dfe13fb9a16", "0x1998147edaf3a92ab179c61ac2c36af5caf3e78bcbfb684cfea15db17b835907", "0x028a4572cb654261cf9358435923e65aff8f40393752748b76acfd2e3f5755c9", "0x15bd998c2729dbeaccc29b5d6e4f0fd96ad0a6037c84a1a1a785169fb336fb6e", "0x07cdf3309e130f9ceddd688af3885369fbacf6d8a44de4d450667c0d7641213f", "0x152d47acb9b06c9d12c2138a31416bbbbb991a65dc4d4f8ef91a3dd728e63b6a"], + ["0x1179184635a9780ee1312dcc3d15c7ef042b18ae9409670e28c4c7f0fb9b608e", "0x229da441a302929b0bae93741b7c75e11337c797e5721f9d7ee59235cda9a40c", "0x2e269dc78f70f9103b2bced3edbd41e156e64910887b4dddf8a3eee960f601b7", "0x21a91fed8bed14914c4fd491b6fa4dcbae7b3b8b3d456303af886c328abf4699", "0x29f07c1effc65b5589e1ca52cbe00bd65ef5e962d01200302670b6dce79eeb00", "0x0506a7a5de6b56ebec5e708a70a3cecb3a2cfd25e7a20ed495e295a93023c5a8", "0x0c02b148f4a1559b597cd320f00c02b96a7fc7c83811bd86a1e79cc3106b2201", "0x24a466f74e99a602894f421010f43a81c708b1b4ad076425190b85347f685b1a", "0x1fee18888425724970bd2897b54c7fa8e9c367dddbc8484da37864faff9f9056", "0x19711c41d76f64a371aba62f3f46710dee0c3aad217b7cb00bd12613b24ef52b", "0x2770d14a220152fa7083040be9b3cd38c8ace9e207073486bcfafcad706748b1", "0x08dffe684aa33f911d35e9a644b4bdbfcd15a4da49b6531816b60e8ce4f6b5e0", "0x1cbfab7cb05e2f28254b230bfce017f005fb4f2dd8935ad11765b347d2003667", "0x21d7269a53d3712b20543b0039aecc9466520133d299e8442000b33184a39e84", "0x21fde580a19886b13358f18a32d5aff685b4bd77d94f067f44f6e7a93350fd2a", "0x05232bf95807e48ad82a1eb4bc481e9b0720e95196dfe361f55c4d1cfc7926d7", "0x13602646b88ba31c0d544c757bd9181727835dbe690c30583a23f37f52fe5e3d"], + ["0x0e48466182ae8333af1891a6aa19736741ed0680d57c931ede13fc07ae82e88b", "0x1137b5c61b9684bec41e4dfaa76438256622a4378ea4e646a2844bbc85bf81cc", "0x1f4b85552b960d1c18b7b8f66af7305a6773d9b05faf51e0ed1a5f2ef2f95e7d", "0x0ba8a54914886fae16700c02efdf7767413a0bec5a19ed0cf0a7d8ac60c1f1c3", "0x30289c9678c0330f85cf8e362683a6144f22b841aa08f586f219dd9edaef78bc", "0x04890048fcdbde6366761cd58fcc6ac0a3360d9a64233d3ea4d8d6be8a23ec45", "0x1a4162e8a7704447be0c1d4d5cf2f777670f4841ea27ac2709cd6bffeed2cebd", "0x2e944b449c1369ce9766fa6f4f99a87630b5c1f2d63677a437a537d61b6c7470", "0x22d6e787f44daa6b6593dfde5576d2fdf5dc0447e65a1d5e7712e4e62c3bdcee", "0x0e08ddb69d5efd949c3d671e4e78e4fc7628c65ec1cfbc18ba6a101aa19dbf66", "0x27a573036509a8a29a90eaa34d2adaed5ed1ec6b207274f3c5ca23dad3880e57", "0x072372083f62195bcc2b5afab1038198a3f0546b62d171ea21c37c8f31551176", "0x151e0bc2110e4300dd82a4c92442c4751c65b294426c8c320c69e61831958ceb", "0x13f1acc389c4f8e752cc7e4b81c37ae2130c60df9c8b7e87dc5fb7459caf4916", "0x06823a9baa55623732b02fa270b2f887fd3804a85c1a7f2a355df3fbefc69dc1", "0x1e41936e6bc0c3ed665c2e2466ab9216b9973fe136d9f9aad95878c1b5607c6e", "0x065766d2980331a55c0a39d83be78bd127baee77d53a24268e064c71daaf2b6a"], + ["0x1c9d56f71c2f22c44d3a8c17bf5b40452e05471f0b6dfe9ffe4725eb29f73464", "0x113003c1dc7baf35e4536f95f4eab2f3badda2c7a1c6b5afc956234ade3e7129", "0x0d5fb9b0e1503f2b92697c473b69cf76d38fc12912e2c3cb33996dbb0cdfaa38", "0x2e164a524ee22eb5a8903fae1f35a3a78f882f3e3a9892b6ff4753baac934949", "0x01f9dcbde7d058134a510a711d036d1f1800e473a63b33a7e0fb04dc2e09e3af", "0x285b20799970b58c63ac9f4af564ce0f28209b61802214da5bfafd0cf24c6712", "0x0ce3dd727fdd11a8bc731500effa23763089ce3332cb730f9fe57146ee204810", "0x01079746ca51d9518a0c309296ca48206292798910494277be2bb65a6b134b3a", "0x23a85d4f91eda69f310c451d7d480c2f40c0d53382ddd3fcaaae627b9617170e", "0x240657d67f92b5e4261ace434fd286206c315565378ce8b81661523f0e6ddc54", "0x2384a384bcc2c4a17ff7c9e3e7d131d39173c431333a9c7c1d6fd7110e25902b", "0x25547b51b2c6874e4538ca9b34093b714ad36a8f356e4c78e0d66b1f190038fb", "0x0e59e1a990ec00f72edc37248349d7a5a6f7bcaef158110450f1e5985f0a5d99", "0x066c6090936f6b054f17dea91682954332b3e32d8f20a0ae171d417316d3622f", "0x1b25662843b0986ab1a4e9a766193efca47c70d49364f03d50c5edb5b5517ebe", "0x2647635477ee5fa9e7ac5983f92db34d7336646c63c63e2dd53d60b8714bd759", "0x26db2e85a9006ef5c11cd675a267d42efef9f5af90466b2aaf75eea8024b00bb"], + ["0x2234546f5e8541e8f72ad794891950b32b1cd891cc66775c5b635961642e9c15", "0x1b61468fab59c925f1986186bcb97965a858523a2582d434319a9525ae71158f", "0x011291ef514a10d6f0651e4ad0da5d4a489e3018927879da942defdbdf701ddd", "0x2df2fb2c2e321e3cce13d16091705a40c5c795f8b41b61dfd6ae7d97d63578b4", "0x01baaf8ff96bb2224bc34cf80c38bf13086f1e429bceec12090d8a7c376a9a82", "0x07b0d70ccff1b70dad9bb4b0142e3f6dc5bc95d3766affad378cc5042484dec9", "0x11f28ee5da80d19e31581b566a439537466d9ca7fdf14b7086830bd8ac13c4cb", "0x0013d7b03e8fc9fa647fca6cdca97146901df7c675a164913c2bd2a3b6ee3cb4", "0x2440e786179a7fbcfe8d29ab18d0fc6cfa383cfb747f7a2d15b77d82d9b0d9d3", "0x056149221712b88ec291fc218324142d02873cdd53199679fce4dfcb5dda9116", "0x162c5bbc81b44427be4e82c5e5253bd66c3054f5c5b73b28b29238487849a794", "0x178f2aa8df9a11ef33558dcc934971f7697e626cfef00ffcdeb6f3c9c1a7d10a", "0x24afd92f80e57788f40fbb2b79f29454dc485fbafb5a7263f462b7c84b4e500b", "0x0492ae5f5ac2a5102ea96e60ac8375553687151ae44042dbf5899232c8f2100a", "0x10dcb11f815c7e29c66be1dd3c5f7602c98e9fb1687c2d825b48789c521fbd0b", "0x0a11d587cb75d48544eec662ad27ca6acfec98f7a8b7963a294e4bb329b170df", "0x1dd6b095cb68459dcf6bdadd434aa81f80a55a08e6782c653a93afd8a65f3267"], + ["0x14c09d155c5d428198c234b553da338f227cbc12b0e42f2b9ce71563ee1495c0", "0x117fd528770fb17f718e29a2d91a63ec7c39ef1dd3039f0943f717d1804253d5", "0x120e7416d74308e24047f6828c68ae28bc288b216e8a25e8b0ebcf738480e390", "0x06995e510fd7669374c39d27903f342ac5bf8a1464807f308bef610b76cb693e", "0x1d814b3c17656c2327f94cc02472780b886b88394f1a5cbe34dc4f44ff134fce", "0x03b90da34b198cbca17e34aac98b169875ecf73aeb5c6ff1f00c9fe535aa9902", "0x27fa77a0658791e6755781c367683f9c9333a41364f7870edff1935a347485d8", "0x06d6ee531ba3fdced05e24cf9103d0962dd227f1de692c0199483e92ab24ba59", "0x1e507921be7c76124879ffce5b62dd0e96259e98cc64c27208d62b40bfe3e482", "0x0681adaea79cf457db5701931f0ee2f15ecbb159ed50cf746a15b85c6f8a5370", "0x1e6196147508bf2edc872c4e897a967778b119f69fb431a7f646d2018eab4010", "0x068efa35bc620124ab7d88990171bae4102ad21dfddfb387df0de0c8a3a189e9", "0x1b012224a4f050df841122d17c5ea4eded7c8ec2034743a432a2cee893976f29", "0x208d814151bcdcddfcf835a958c259a6477bfe4b3392710edf9d80787a25c5d0", "0x28f901fcaa860b0dc4192adef8ea4ae55af6ce432c85e0ce4d073e514ab24252", "0x1bd639879731823c871f9cd4714e3cc56a6eb19884b73664eed24b11929119a0", "0x1d3ee85f078fbeecda2473efc2bedd1ba7ec6f4795faaeae3b0de48d3080c625"] + ] + ] +} diff --git a/zkrsa/circom-rsa-verify/circomlib/src/poseidon_gencontract.js b/zkrsa/circom-rsa-verify/circomlib/src/poseidon_gencontract.js new file mode 100644 index 000000000..1ca16a534 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/src/poseidon_gencontract.js @@ -0,0 +1,208 @@ +// Copyright (c) 2018 Jordi Baylina +// License: LGPL-3.0+ +// + +const Contract = require("./evmasm"); +const { unstringifyBigInts } = require("ffjavascript").utils; +const Web3Utils = require("web3-utils"); + +const { C:K, M } = unstringifyBigInts(require("./poseidon_constants.json")); + +const N_ROUNDS_F = 8; +const N_ROUNDS_P = [56, 57, 56, 60, 60, 63, 64, 63]; + +function toHex256(a) { + let S = a.toString(16); + while (S.length < 64) S="0"+S; + return "0x" + S; +} + +function createCode(nInputs) { + + if (( nInputs<1) || (nInputs>8)) throw new Error("Invalid number of inputs. Must be 1<=nInputs<=8"); + const t = nInputs + 1; + const nRoundsF = N_ROUNDS_F; + const nRoundsP = N_ROUNDS_P[t - 2]; + + const C = new Contract(); + + function saveM() { + for (let i=0; i=nRoundsP+nRoundsF/2)) { + for (let j=0; j=0; level--) { + let oldNode, newNode; + const sibling = resFind.siblings[level]; + if (keyBits[level]) { + oldNode = [sibling, rtOld]; + newNode = [sibling, rtNew]; + } else { + oldNode = [rtOld, sibling]; + newNode = [rtNew, sibling]; + } + rtOld = hash0(oldNode[0], oldNode[1]); + rtNew = hash0(newNode[0], newNode[1]); + dels.push(rtOld); + ins.push([rtNew, newNode]); + } + + res.newRoot = rtNew; + + await this.db.multiDel(dels); + await this.db.multiIns(ins); + await this.db.setRoot(rtNew); + this.root = rtNew; + + return res; + } + + async delete(_key) { + const key = Scalar.e(_key); + + const resFind = await this.find(key); + if (!resFind.found) throw new Error("Key does not exists"); + + const res = { + siblings: [], + delKey: key, + delValue: resFind.foundValue + }; + + const dels = []; + const ins = []; + let rtOld = hash1(key, resFind.foundValue); + let rtNew; + dels.push(rtOld); + + let mixed; + if (resFind.siblings.length > 0) { + const record = await this.db.get(resFind.siblings[resFind.siblings.length - 1]); + if ((record.length == 3)&&(F.eq(record[0], F.one))) { + mixed = false; + res.oldKey = record[1]; + res.oldValue = record[2]; + res.isOld0 = false; + rtNew = resFind.siblings[resFind.siblings.length - 1]; + } else if (record.length == 2) { + mixed = true; + res.oldKey = key; + res.oldValue = F.zero; + res.isOld0 = true; + rtNew = F.zero; + } else { + throw new Error("Invalid node. Database corrupted"); + } + } else { + rtNew = F.zero; + res.oldKey = key; + res.oldValue = F.zero; + res.isOld0 = true; + } + + const keyBits = this._splitBits(key); + + for (let level = resFind.siblings.length-1; level >=0; level--) { + let newSibling = resFind.siblings[level]; + if ((level == resFind.siblings.length-1)&&(!res.isOld0)) { + newSibling = F.zero; + } + const oldSibling = resFind.siblings[level]; + if (keyBits[level]) { + rtOld = hash0(oldSibling, rtOld); + } else { + rtOld = hash0(rtOld, oldSibling); + } + dels.push(rtOld); + if (!F.isZero(newSibling)) { + mixed = true; + } + + if (mixed) { + res.siblings.unshift(resFind.siblings[level]); + let newNode; + if (keyBits[level]) { + newNode = [newSibling, rtNew]; + } else { + newNode = [rtNew, newSibling]; + } + rtNew = hash0(newNode[0], newNode[1]); + ins.push([rtNew, newNode]); + } + } + + await this.db.multiIns(ins); + await this.db.setRoot(rtNew); + this.root = rtNew; + await this.db.multiDel(dels); + + res.newRoot = rtNew; + res.oldRoot = rtOld; + + return res; + } + + async insert(_key, _value) { + const key = Scalar.e(_key); + const value = F.e(_value); + let addedOne = false; + const res = {}; + res.oldRoot = this.root; + const newKeyBits = this._splitBits(key); + + let rtOld; + + const resFind = await this.find(key); + + if (resFind.found) throw new Error("Key already exists"); + + res.siblings = resFind.siblings; + let mixed; + + if (!resFind.isOld0) { + const oldKeyits = this._splitBits(resFind.notFoundKey); + for (let i= res.siblings.length; oldKeyits[i] == newKeyBits[i]; i++) { + res.siblings.push(F.zero); + } + rtOld = hash1(resFind.notFoundKey, resFind.notFoundValue); + res.siblings.push(rtOld); + addedOne = true; + mixed = false; + } else if (res.siblings.length >0) { + mixed = true; + rtOld = F.zero; + } + + const inserts = []; + const dels = []; + + let rt = hash1(key, value); + inserts.push([rt,[1, key, value]] ); + + for (let i=res.siblings.length-1; i>=0; i--) { + if ((i0) && (F.isZero(res.siblings[res.siblings.length-1]))) { + res.siblings.pop(); + } + res.oldKey = resFind.notFoundKey; + res.oldValue = resFind.notFoundValue; + res.newRoot = rt; + res.isOld0 = resFind.isOld0; + + + await this.db.multiIns(inserts); + await this.db.setRoot(rt); + this.root = rt; + await this.db.multiDel(dels); + + return res; + } + + async find(key) { + const keyBits = this._splitBits(key); + return await this._find(key, keyBits, this.root, 0); + } + + async _find(key, keyBits, root, level) { + if (typeof root === "undefined") root = this.root; + + let res; + if (F.isZero(root)) { + res = { + found: false, + siblings: [], + notFoundKey: key, + notFoundValue: F.zero, + isOld0: true + }; + return res; + } + + const record = await this.db.get(root); + + if ((record.length==3)&&(F.eq(record[0],F.one))) { + if (F.eq(record[1],key)) { + res = { + found: true, + siblings: [], + foundValue: record[2], + isOld0: false + }; + } else { + res = { + found: false, + siblings: [], + notFoundKey: record[1], + notFoundValue: record[2], + isOld0: false + }; + } + } else { + if (keyBits[level] == 0) { + res = await this._find(key, keyBits, record[0], level+1); + res.siblings.unshift(record[1]); + } else { + res = await this._find(key, keyBits, record[1], level+1); + res.siblings.unshift(record[0]); + } + } + return res; + } +} + +async function loadFromFile(fileName) { + +} + +async function newMemEmptyTrie() { + const db = new SMTMemDB(); + const rt = await db.getRoot(); + const smt = new SMT(db, rt); + return smt; +} + +module.exports.loadFromFile = loadFromFile; +module.exports.newMemEmptyTrie = newMemEmptyTrie; +module.exports.SMT = SMT; +module.exports.SMTMemDB = SMTMemDB; diff --git a/zkrsa/circom-rsa-verify/circomlib/src/smt_hashes_mimc.js b/zkrsa/circom-rsa-verify/circomlib/src/smt_hashes_mimc.js new file mode 100644 index 000000000..1cc292144 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/src/smt_hashes_mimc.js @@ -0,0 +1,12 @@ +const mimc7 = require("./mimc7"); +const bigInt = require("big-integer"); + +exports.hash0 = function (left, right) { + return mimc7.multiHash(left, right); +}; + +exports.hash1 = function(key, value) { + return mimc7.multiHash([key, value], bigInt.one); +}; + +exports.F = mimc7.F; diff --git a/zkrsa/circom-rsa-verify/circomlib/src/smt_hashes_poseidon.js b/zkrsa/circom-rsa-verify/circomlib/src/smt_hashes_poseidon.js new file mode 100644 index 000000000..0077f2734 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/src/smt_hashes_poseidon.js @@ -0,0 +1,18 @@ + +const ZqField = require("ffjavascript").ZqField; +const Scalar = require("ffjavascript").Scalar; + +const poseidon = require("./poseidon"); + +const F = new ZqField(Scalar.fromString("21888242871839275222246405745257275088548364400416034343698204186575808495617")); + + +exports.hash0 = function (left, right) { + return poseidon([left, right]); +}; + +exports.hash1 = function(key, value) { + return poseidon([key, value, F.one]); +}; + +exports.F = F; diff --git a/zkrsa/circom-rsa-verify/circomlib/src/smt_memdb.js b/zkrsa/circom-rsa-verify/circomlib/src/smt_memdb.js new file mode 100644 index 000000000..fbd20681e --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/src/smt_memdb.js @@ -0,0 +1,63 @@ + +const Scalar = require("ffjavascript").Scalar; +const ZqField = require("ffjavascript").ZqField; + +// Prime 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001 +const F = new ZqField(Scalar.fromString("21888242871839275222246405745257275088548364400416034343698204186575808495617")); + +class SMTMemDb { + constructor() { + this.nodes = {}; + this.root = F.zero; + } + + async getRoot() { + return this.root; + } + + _key2str(k) { + // const keyS = bigInt(key).leInt2Buff(32).toString("hex"); + const keyS = k.toString(); + return keyS; + } + + _normalize(n) { + for (let i=0; i { + + cir = await tester(path.join(__dirname, "circuits", "aliascheck_test.circom")); + }); + + it("Satisfy the aliastest 0", async () => { + const inp = getBits(0, 254); + await cir.calculateWitness({in: inp}, true); + }); + + it("Satisfy the aliastest 3", async () => { + const inp = getBits(3, 254); + await cir.calculateWitness({in: inp}, true); + }); + + it("Satisfy the aliastest q-1", async () => { + const inp = getBits(F.e(-1), 254); + // console.log(JSON.stringify(utils.stringifyBigInts(inp))); + await cir.calculateWitness({in: inp}, true); + }); + + it("Should not satisfy an input of q", async () => { + const inp = getBits(q, 254); + try { + await cir.calculateWitness({in: inp}, true); + assert(false); + } catch(err) { + assert(/Constraint\sdoesn't\smatch(.*)1\s!=\s0/.test(err.message) ); + } + }); + + it("Should not satisfy all ones", async () => { + + const inp = getBits(Scalar.sub(Scalar.shl(1, 254) , 1) , 254); + try { + await cir.calculateWitness({in: inp}, true); + assert(false); + } catch(err) { + assert(/Constraint\sdoesn't\smatch(.*)1\s!=\s0/.test(err.message) ); + } + }); + +}); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/babyjub.js b/zkrsa/circom-rsa-verify/circomlib/test/babyjub.js new file mode 100644 index 000000000..eafb0f3bb --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/babyjub.js @@ -0,0 +1,113 @@ +const chai = require("chai"); +const path = require("path"); + +const createBlakeHash = require("blake-hash"); +const eddsa = require("../src/eddsa.js"); +const F = require("../src/babyjub.js").F; + +const assert = chai.assert; + +const tester = require("circom").tester; +const utils = require("ffjavascript").utils; +const Scalar = require("ffjavascript").Scalar; + +describe("Baby Jub test", function () { + let circuitAdd; + let circuitTest; + let circuitPbk; + + this.timeout(100000); + + before( async() => { + circuitAdd = await tester(path.join(__dirname, "circuits", "babyadd_tester.circom")); + + circuitTest = await tester(path.join(__dirname, "circuits", "babycheck_test.circom")); + + circuitPbk = await tester(path.join(__dirname, "circuits", "babypbk_test.circom")); + }); + + it("Should add point (0,1) and (0,1)", async () => { + + const input={ + x1: F.e(0), + y1: F.e(1), + x2: F.e(0), + y2: F.e(1) + }; + + const w = await circuitAdd.calculateWitness(input, true); + + await circuitAdd.assertOut(w, {xout: F.e(0), yout: F.e(1)}); + }); + + it("Should add 2 same numbers", async () => { + + const input={ + x1: F.e("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + y1: F.e("2626589144620713026669568689430873010625803728049924121243784502389097019475"), + x2: F.e("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + y2: F.e("2626589144620713026669568689430873010625803728049924121243784502389097019475") + }; + + const w = await circuitAdd.calculateWitness(input, true); + + await circuitAdd.assertOut(w, { + xout: F.e("6890855772600357754907169075114257697580319025794532037257385534741338397365"), + yout: F.e("4338620300185947561074059802482547481416142213883829469920100239455078257889") + }); + + }); + + it("Should add 2 different numbers", async () => { + + const input={ + x1: F.e("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + y1: F.e("2626589144620713026669568689430873010625803728049924121243784502389097019475"), + x2: F.e("16540640123574156134436876038791482806971768689494387082833631921987005038935"), + y2: F.e("20819045374670962167435360035096875258406992893633759881276124905556507972311") + }; + + const w = await circuitAdd.calculateWitness(input, true); + + await circuitAdd.assertOut(w, { + xout: F.e("7916061937171219682591368294088513039687205273691143098332585753343424131937"), + yout: F.e("14035240266687799601661095864649209771790948434046947201833777492504781204499") + }); + + }); + + it("Should check (0,1) is a valid point", async() => { + const w = await circuitTest.calculateWitness({x: 0, y:1}, true); + + await circuitTest.checkConstraints(w); + }); + + it("Should check (1,0) is an invalid point", async() => { + try { + await circuitTest.calculateWitness({x: 1, y: 0}, true); + assert(false, "Should be a valid point"); + } catch(err) { + assert(/Constraint\sdoesn't\smatch(.*)168700\s!=\s1/.test(err.message) ); + } + }); + + it("Should extract the public key from the private one", async () => { + + const rawpvk = Buffer.from("0001020304050607080900010203040506070809000102030405060708090021", "hex"); + const pvk = eddsa.pruneBuffer(createBlakeHash("blake512").update(rawpvk).digest().slice(0,32)); + const S = Scalar.shr(utils.leBuff2int(pvk), 3); + + const A = eddsa.prv2pub(rawpvk); + + const input = { + in : S + }; + + const w = await circuitPbk.calculateWitness(input, true); + + await circuitPbk.assertOut(w, {Ax : A[0], Ay: A[1]}); + + await circuitPbk.checkConstraints(w); + }); + +}); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/babyjub_js.js b/zkrsa/circom-rsa-verify/circomlib/test/babyjub_js.js new file mode 100644 index 000000000..fb488fb55 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/babyjub_js.js @@ -0,0 +1,170 @@ +const chai = require("chai"); +const babyjub = require("../src/babyjub.js"); +const Scalar = require("ffjavascript").Scalar; + +const assert = chai.assert; + +// const bigInt = require("big-integer"); + +function buff2hex(buff) { + function i2hex(i) { + return ('0' + i.toString(16)).slice(-2); + } + return Array.from(buff).map(i2hex).join(''); +} + +describe("Baby Jub js test", function () { + + this.timeout(100000); + + it("Should add point (0,1) and (0,1)", () => { + + const p1 = [ + babyjub.F.e(0), + babyjub.F.e(1)]; + const p2 = [ + babyjub.F.e(0), + babyjub.F.e(1) + ]; + + const out = babyjub.addPoint(p1, p2); + assert(babyjub.F.eq(out[0], babyjub.F.zero)); + assert(babyjub.F.eq(out[1], babyjub.F.one)); + }); + + it("Should base be 8*generator", () => { + let res; + res = babyjub.addPoint(babyjub.Generator, babyjub.Generator); + res = babyjub.addPoint(res, res); + res = babyjub.addPoint(res, res); + + assert(babyjub.F.eq(res[0], babyjub.Base8[0])); + assert(babyjub.F.eq(res[1], babyjub.Base8[1])); + }); + + it("Should add 2 same numbers", () => { + + const p1 = [ + babyjub.F.e("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + babyjub.F.e("2626589144620713026669568689430873010625803728049924121243784502389097019475"), + ]; + const p2 = [ + babyjub.F.e("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + babyjub.F.e("2626589144620713026669568689430873010625803728049924121243784502389097019475"), + ]; + + const out = babyjub.addPoint(p1, p2); + assert(babyjub.F.eq(out[0], babyjub.F.e("6890855772600357754907169075114257697580319025794532037257385534741338397365"))); + assert(babyjub.F.eq(out[1], babyjub.F.e("4338620300185947561074059802482547481416142213883829469920100239455078257889"))); + }); + + it("Should add 2 different numbers", () => { + + const p1 = [ + babyjub.F.e("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + babyjub.F.e("2626589144620713026669568689430873010625803728049924121243784502389097019475"), + ]; + const p2 = [ + babyjub.F.e("16540640123574156134436876038791482806971768689494387082833631921987005038935"), + babyjub.F.e("20819045374670962167435360035096875258406992893633759881276124905556507972311"), + ]; + + const out = babyjub.addPoint(p1, p2); + assert(babyjub.F.eq(out[0], babyjub.F.e("7916061937171219682591368294088513039687205273691143098332585753343424131937"))); + assert(babyjub.F.eq(out[1], babyjub.F.e("14035240266687799601661095864649209771790948434046947201833777492504781204499"))); + + }); + + it("should mulPointEscalar 0", () => { + const p = [ + babyjub.F.e("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + babyjub.F.e("2626589144620713026669568689430873010625803728049924121243784502389097019475"), + ]; + + const r = babyjub.mulPointEscalar(p, 3); + let r2 = babyjub.addPoint(p, p); + r2 = babyjub.addPoint(r2, p); + assert.equal(r2[0].toString(), r[0].toString()); + assert.equal(r2[1].toString(), r[1].toString()); + assert.equal(r[0].toString(), "19372461775513343691590086534037741906533799473648040012278229434133483800898"); + assert.equal(r[1].toString(), "9458658722007214007257525444427903161243386465067105737478306991484593958249"); + }); + + it("should mulPointEscalar 1", () => { + const p = [ + babyjub.F.e("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + babyjub.F.e("2626589144620713026669568689430873010625803728049924121243784502389097019475"), + ]; + + const r = babyjub.mulPointEscalar(p, Scalar.fromString("14035240266687799601661095864649209771790948434046947201833777492504781204499")); + assert.equal(r[0].toString(), "17070357974431721403481313912716834497662307308519659060910483826664480189605"); + assert.equal(r[1].toString(), "4014745322800118607127020275658861516666525056516280575712425373174125159339"); + }); + + it("should mulPointEscalar 2", () => { + const p = [ + babyjub.F.e("6890855772600357754907169075114257697580319025794532037257385534741338397365"), + babyjub.F.e("4338620300185947561074059802482547481416142213883829469920100239455078257889"), + ]; + + const r = babyjub.mulPointEscalar(p, Scalar.fromString("20819045374670962167435360035096875258406992893633759881276124905556507972311")); + assert.equal(r[0].toString(), "13563888653650925984868671744672725781658357821216877865297235725727006259983"); + assert.equal(r[1].toString(), "8442587202676550862664528699803615547505326611544120184665036919364004251662"); + }); + + it("should inCurve 1", () => { + const p = [ + babyjub.F.e("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + babyjub.F.e("2626589144620713026669568689430873010625803728049924121243784502389097019475"), + ]; + assert(babyjub.inCurve(p)); + }); + + it("should inCurve 2", () => { + const p = [ + babyjub.F.e("6890855772600357754907169075114257697580319025794532037257385534741338397365"), + babyjub.F.e("4338620300185947561074059802482547481416142213883829469920100239455078257889"), + ]; + assert(babyjub.inCurve(p)); + }); + + it("should inSubgroup 1", () => { + const p = [ + babyjub.F.e("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + babyjub.F.e("2626589144620713026669568689430873010625803728049924121243784502389097019475"), + ]; + assert(babyjub.inSubgroup(p)); + }); + + it("should inSubgroup 2", () => { + const p = [ + babyjub.F.e("6890855772600357754907169075114257697580319025794532037257385534741338397365"), + babyjub.F.e("4338620300185947561074059802482547481416142213883829469920100239455078257889"), + ]; + assert(babyjub.inSubgroup(p)); + }); + + it("should packPoint - unpackPoint 1", () => { + const p = [ + babyjub.F.e("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + babyjub.F.e("2626589144620713026669568689430873010625803728049924121243784502389097019475"), + ]; + const buf = babyjub.packPoint(p); + assert.equal(buff2hex(buf), "53b81ed5bffe9545b54016234682e7b2f699bd42a5e9eae27ff4051bc698ce85"); + const p2 = babyjub.unpackPoint(buf); + assert.equal(p2[0].toString(), "17777552123799933955779906779655732241715742912184938656739573121738514868268"); + assert.equal(p2[1].toString(), "2626589144620713026669568689430873010625803728049924121243784502389097019475"); + }); + + it("should packPoint - unpackPoint 2", () => { + const p = [ + babyjub.F.e("6890855772600357754907169075114257697580319025794532037257385534741338397365"), + babyjub.F.e("4338620300185947561074059802482547481416142213883829469920100239455078257889"), + ]; + const buf = babyjub.packPoint(p); + assert.equal(buff2hex(buf), "e114eb17eddf794f063a68fecac515e3620e131976108555735c8b0773929709"); + const p2 = babyjub.unpackPoint(buf); + assert.equal(p2[0].toString(), "6890855772600357754907169075114257697580319025794532037257385534741338397365"); + assert.equal(p2[1].toString(), "4338620300185947561074059802482547481416142213883829469920100239455078257889"); + }); +}); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/binsub.js b/zkrsa/circom-rsa-verify/circomlib/test/binsub.js new file mode 100644 index 000000000..7f238fe97 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/binsub.js @@ -0,0 +1,52 @@ +const path = require("path"); + +const Scalar = require("ffjavascript").Scalar; +const tester = require("circom").tester; + +function print(circuit, w, s) { + console.log(s + ": " + w[circuit.getSignalIdx(s)]); +} + +async function checkSub(_a,_b, circuit) { + let a=Scalar.e(_a); + let b=Scalar.e(_b); + if (Scalar.lt(a, 0)) a = Scalar.add(a, Scalar.shl(1, 16)); + if (Scalar.lt(b, 0)) b = Scalar.add(b, Scalar.shl(1, 16)); + const w = await circuit.calculateWitness({a: a, b: b}, true); + + let res = Scalar.sub(a, b); + if (Scalar.lt(res, 0)) res = Scalar.add(res, Scalar.shl(1, 16)); + + await circuit.assertOut(w, {out: res}); +} + +describe("BinSub test", function () { + + this.timeout(100000); + + let circuit; + before( async() => { + circuit = await tester(path.join(__dirname, "circuits", "binsub_test.circom")); + }); + + it("Should check variuos ege cases", async () => { + await checkSub(0,0, circuit); + await checkSub(1,0, circuit); + await checkSub(-1,0, circuit); + await checkSub(2,1, circuit); + await checkSub(2,2, circuit); + await checkSub(2,3, circuit); + await checkSub(2,-1, circuit); + await checkSub(2,-2, circuit); + await checkSub(2,-3, circuit); + await checkSub(-2,-3, circuit); + await checkSub(-2,-2, circuit); + await checkSub(-2,-1, circuit); + await checkSub(-2,0, circuit); + await checkSub(-2,1, circuit); + await checkSub(-2,2, circuit); + await checkSub(-2,3, circuit); + }); + + +}); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/binsum.js b/zkrsa/circom-rsa-verify/circomlib/test/binsum.js new file mode 100644 index 000000000..601baa992 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/binsum.js @@ -0,0 +1,39 @@ +const chai = require("chai"); +const path = require("path"); + +const tester = require("circom").tester; + +const F1Field = require("ffjavascript").F1Field; +const Scalar = require("ffjavascript").Scalar; +exports.p = Scalar.fromString("21888242871839275222246405745257275088548364400416034343698204186575808495617"); +const Fr = new F1Field(exports.p); + +const assert = chai.assert; + +describe("Binary sum test", function () { + this.timeout(100000000); + + it("Should create a constant circuit", async () => { + const circuit = await tester(path.join(__dirname, "circuits", "constants_test.circom")); + await circuit.loadConstraints(); + + assert.equal(circuit.nVars, 2); + assert.equal(circuit.constraints.length, 1); + + const witness = await circuit.calculateWitness({ "in": Fr.toString(Fr.e("0xd807aa98"))}, true); + + assert(Fr.eq(Fr.e(witness[0]),Fr.e(1))); + assert(Fr.eq(Fr.e(witness[1]),Fr.e("0xd807aa98"))); + }); + it("Should create a sum circuit", async () => { + const circuit = await tester(path.join(__dirname, "circuits", "sum_test.circom")); + await circuit.loadConstraints(); + + assert.equal(circuit.constraints.length, 97); // 32 (in1) + 32(in2) + 32(out) + 1 (carry) + + const witness = await circuit.calculateWitness({ "a": "111", "b": "222" }, true); + + assert(Fr.eq(Fr.e(witness[0]),Fr.e(1))); + assert(Fr.eq(Fr.e(witness[1]),Fr.e("333"))); + }); +}); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/aliascheck_test.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/aliascheck_test.circom new file mode 100644 index 000000000..dc2252d25 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/aliascheck_test.circom @@ -0,0 +1,3 @@ +include "../../circuits/aliascheck.circom"; + +component main = AliasCheck() diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/babyadd_tester.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/babyadd_tester.circom new file mode 100644 index 000000000..129acfac1 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/babyadd_tester.circom @@ -0,0 +1,3 @@ +include "../../circuits/babyjub.circom"; + +component main = BabyAdd(); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/babycheck_test.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/babycheck_test.circom new file mode 100644 index 000000000..925de65e2 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/babycheck_test.circom @@ -0,0 +1,3 @@ +include "../../circuits/babyjub.circom"; + +component main = BabyCheck(); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/babypbk_test.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/babypbk_test.circom new file mode 100644 index 000000000..2583bb95f --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/babypbk_test.circom @@ -0,0 +1,3 @@ +include "../../circuits/babyjub.circom"; + +component main = BabyPbk(); \ No newline at end of file diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/binsub_test.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/binsub_test.circom new file mode 100644 index 000000000..254b6f390 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/binsub_test.circom @@ -0,0 +1,31 @@ +include "../../circuits/bitify.circom" +include "../../circuits/binsub.circom" + +template A() { + signal private input a; + signal input b; + signal output out; + + var i; + + component n2ba = Num2Bits(16); + component n2bb = Num2Bits(16); + component sub = BinSub(16); + component b2n = Bits2Num(16); + + n2ba.in <== a; + n2bb.in <== b; + + for (i=0; i<16; i++) { + sub.in[0][i] <== n2ba.out[i]; + sub.in[1][i] <== n2bb.out[i]; + } + + for (i=0; i<16; i++) { + b2n.in[i] <== sub.out[i]; + } + + out <== b2n.out; +} + +component main = A(); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/constants_test.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/constants_test.circom new file mode 100644 index 000000000..61d392d23 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/constants_test.circom @@ -0,0 +1,18 @@ +include "../../circuits/sha256/constants.circom" + +template A() { + signal input in; + component h0; + h0 = K(8); + + var lc = 0; + var e = 1; + for (var i=0; i<32; i++) { + lc = lc + e*h0.out[i]; + e *= 2; + } + + lc === in; +} + +component main = A(); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/eddsa_test.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/eddsa_test.circom new file mode 100644 index 000000000..1ef054ec6 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/eddsa_test.circom @@ -0,0 +1,3 @@ +include "../../circuits/eddsa.circom"; + +component main = EdDSAVerifier(80); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/eddsamimc_test.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/eddsamimc_test.circom new file mode 100644 index 000000000..8ad48e639 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/eddsamimc_test.circom @@ -0,0 +1,3 @@ +include "../../circuits/eddsamimc.circom"; + +component main = EdDSAMiMCVerifier(); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/eddsaposeidon_test.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/eddsaposeidon_test.circom new file mode 100644 index 000000000..98f96c7e3 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/eddsaposeidon_test.circom @@ -0,0 +1,3 @@ +include "../../circuits/eddsaposeidon.circom"; + +component main = EdDSAPoseidonVerifier(); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/edwards2montgomery.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/edwards2montgomery.circom new file mode 100644 index 000000000..960e59410 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/edwards2montgomery.circom @@ -0,0 +1,3 @@ +include "../../circuits/montgomery.circom"; + +component main = Edwards2Montgomery(); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/escalarmul_min_test.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/escalarmul_min_test.circom new file mode 100644 index 000000000..69737011f --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/escalarmul_min_test.circom @@ -0,0 +1,26 @@ +include "../../circuits/escalarmul.circom"; + + +template Main() { + signal input in[256]; + signal output out[2]; + + var i; + + var base = [5299619240641551281634865583518297030282874472190772894086521144482721001553, + 16950150798460657717958625567821834550301663161624707787222815936182638968203]; + + component escalarMul = EscalarMul(256, base); + + escalarMul.inp[0] <== 0; + escalarMul.inp[1] <== 1; + + for (i=0; i<256; i++) { + in[i] ==> escalarMul.in[i]; + } + + escalarMul.out[0] ==> out[0]; + escalarMul.out[1] ==> out[1]; +} + +component main = Main(); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/escalarmul_test.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/escalarmul_test.circom new file mode 100644 index 000000000..1af53ace3 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/escalarmul_test.circom @@ -0,0 +1,31 @@ +include "../../circuits/escalarmul.circom"; +include "../../circuits/bitify.circom"; + + +template Main() { + signal input in; + signal output out[2]; + + var base[2] = [5299619240641551281634865583518297030282874472190772894086521144482721001553, + 16950150798460657717958625567821834550301663161624707787222815936182638968203]; + + + component n2b = Num2Bits(253); + component escalarMul = EscalarMul(253, base); + + escalarMul.inp[0] <== 0; + escalarMul.inp[1] <== 1; + + var i; + + in ==> n2b.in; + + for (i=0; i<253; i++) { + n2b.out[i] ==> escalarMul.in[i]; + } + + escalarMul.out[0] ==> out[0]; + escalarMul.out[1] ==> out[1]; +} + +component main = Main(); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/escalarmul_test_min.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/escalarmul_test_min.circom new file mode 100644 index 000000000..2b8c7ba3d --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/escalarmul_test_min.circom @@ -0,0 +1,26 @@ +include "../../circuits/escalarmul.circom"; + + +template Main() { + signal input in[256]; + signal output out[2]; + + var i; + + var base[2] = [5299619240641551281634865583518297030282874472190772894086521144482721001553, + 16950150798460657717958625567821834550301663161624707787222815936182638968203]; + + component escalarMul = EscalarMul(256, base); + + escalarMul.inp[0] <== 0; + escalarMul.inp[1] <== 1; + + for (i=0; i<256; i++) { + in[i] ==> escalarMul.in[i]; + } + + escalarMul.out[0] ==> out[0]; + escalarMul.out[1] ==> out[1]; +} + +component main = Main(); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/escalarmulany_test.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/escalarmulany_test.circom new file mode 100644 index 000000000..c09918d6e --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/escalarmulany_test.circom @@ -0,0 +1,28 @@ +include "../../circuits/escalarmulany.circom"; +include "../../circuits/bitify.circom"; + +template Main() { + signal input e; + signal input p[2]; + signal output out[2]; + + component n2b = Num2Bits(253); + component escalarMulAny = EscalarMulAny(253); + + escalarMulAny.p[0] <== p[0]; + escalarMulAny.p[1] <== p[1]; + + var i; + + e ==> n2b.in; + + for (i=0; i<253; i++) { + n2b.out[i] ==> escalarMulAny.e[i]; + } + + escalarMulAny.out[0] ==> out[0]; + escalarMulAny.out[1] ==> out[1]; +} + +component main = Main(); + diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/escalarmulfix_test.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/escalarmulfix_test.circom new file mode 100644 index 000000000..7d80b79e3 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/escalarmulfix_test.circom @@ -0,0 +1,29 @@ +include "../../circuits/escalarmulfix.circom"; +include "../../circuits/bitify.circom"; + + +template Main() { + signal input e; + signal output out[2]; + + var base[2] = [5299619240641551281634865583518297030282874472190772894086521144482721001553, + 16950150798460657717958625567821834550301663161624707787222815936182638968203] + + + component n2b = Num2Bits(253); + component escalarMul = EscalarMulFix(253, base); + + var i; + + e ==> n2b.in; + + for (i=0; i<253; i++) { + n2b.out[i] ==> escalarMul.e[i]; + } + + escalarMul.out[0] ==> out[0]; + escalarMul.out[1] ==> out[1]; +} + +component main = Main(); + diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/escalarmulw4table.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/escalarmulw4table.circom new file mode 100644 index 000000000..43143b6a1 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/escalarmulw4table.circom @@ -0,0 +1,6 @@ +include "../../circuits/escalarmulw4table.circom"; + +var base[2] = [5299619240641551281634865583518297030282874472190772894086521144482721001553, + 16950150798460657717958625567821834550301663161624707787222815936182638968203] + +component main = EscalarMulW4Table(base, 0); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/escalarmulw4table_test.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/escalarmulw4table_test.circom new file mode 100644 index 000000000..9f6777fd0 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/escalarmulw4table_test.circom @@ -0,0 +1,17 @@ +include "../../circuits/escalarmulw4table.circom"; + + +template Main() { + signal input in; + signal output out[16][2]; + var base[2] = [5299619240641551281634865583518297030282874472190772894086521144482721001553, + 16950150798460657717958625567821834550301663161624707787222815936182638968203]; + + var escalarMul[16][2] = EscalarMulW4Table(base, 0); + for (var i=0; i<16; i++) { + out[i][0] <== escalarMul[i][0]*in; + out[i][1] <== escalarMul[i][1]*in; + } +} + +component main = Main(); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/escalarmulw4table_test3.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/escalarmulw4table_test3.circom new file mode 100644 index 000000000..d41d827e4 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/escalarmulw4table_test3.circom @@ -0,0 +1,17 @@ +include "../../circuits/escalarmulw4table.circom"; + + +template Main() { + signal input in; + signal output out[16][2]; + var base[2] = [5299619240641551281634865583518297030282874472190772894086521144482721001553, + 16950150798460657717958625567821834550301663161624707787222815936182638968203]; + + var escalarMul[16][2] = EscalarMulW4Table(base, 3); + for (var i=0; i<16; i++) { + out[i][0] <== escalarMul[i][0]*in; + out[i][1] <== escalarMul[i][1]*in; + } +} + +component main = Main(); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/greatereqthan.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/greatereqthan.circom new file mode 100644 index 000000000..3428ac27a --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/greatereqthan.circom @@ -0,0 +1,4 @@ + +include "../../circuits/comparators.circom"; + +component main = GreaterEqThan(32); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/greaterthan.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/greaterthan.circom new file mode 100644 index 000000000..b890ba816 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/greaterthan.circom @@ -0,0 +1,4 @@ + +include "../../circuits/comparators.circom"; + +component main = GreaterThan(32); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/isequal.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/isequal.circom new file mode 100644 index 000000000..c14d506fa --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/isequal.circom @@ -0,0 +1,4 @@ + +include "../../circuits/comparators.circom"; + +component main = IsEqual(); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/iszero.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/iszero.circom new file mode 100644 index 000000000..0ca0589fa --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/iszero.circom @@ -0,0 +1,5 @@ + + +include "../../circuits/comparators.circom"; + +component main = IsZero(); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/lesseqthan.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/lesseqthan.circom new file mode 100644 index 000000000..db2eda47a --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/lesseqthan.circom @@ -0,0 +1,4 @@ + +include "../../circuits/comparators.circom"; + +component main = LessEqThan(32); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/lessthan.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/lessthan.circom new file mode 100644 index 000000000..63944f2ea --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/lessthan.circom @@ -0,0 +1,4 @@ + +include "../../circuits/comparators.circom"; + +component main = LessThan(32); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/mimc_sponge_hash_test.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/mimc_sponge_hash_test.circom new file mode 100644 index 000000000..f6be5026e --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/mimc_sponge_hash_test.circom @@ -0,0 +1,3 @@ +include "../../circuits/mimcsponge.circom" + +component main = MiMCSponge(2, 220, 3); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/mimc_sponge_test.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/mimc_sponge_test.circom new file mode 100644 index 000000000..92e9df28d --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/mimc_sponge_test.circom @@ -0,0 +1,3 @@ +include "../../circuits/mimcsponge.circom" + +component main = MiMCFeistel(220); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/mimc_test.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/mimc_test.circom new file mode 100644 index 000000000..26b0b0173 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/mimc_test.circom @@ -0,0 +1,3 @@ +include "../../circuits/mimc.circom" + +component main = MiMC7(91); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/montgomery2edwards.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/montgomery2edwards.circom new file mode 100644 index 000000000..39d05a649 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/montgomery2edwards.circom @@ -0,0 +1,3 @@ +include "../../circuits/montgomery.circom"; + +component main = Montgomery2Edwards(); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/montgomeryadd.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/montgomeryadd.circom new file mode 100644 index 000000000..8caea17d2 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/montgomeryadd.circom @@ -0,0 +1,3 @@ +include "../../circuits/montgomery.circom"; + +component main = MontgomeryAdd(); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/montgomerydouble.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/montgomerydouble.circom new file mode 100644 index 000000000..70a3840e5 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/montgomerydouble.circom @@ -0,0 +1,3 @@ +include "../../circuits/montgomery.circom"; + +component main = MontgomeryDouble(); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/mux1_1.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/mux1_1.circom new file mode 100644 index 000000000..5a3afee39 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/mux1_1.circom @@ -0,0 +1,31 @@ +include "../../circuits/mux1.circom"; +include "../../circuits/bitify.circom"; + + +template Constants() { + var i; + signal output out[2]; + + out[0] <== 37; + out[1] <== 47; +} + +template Main() { + var i; + signal private input selector; + signal output out; + + component mux = Mux1(); + component n2b = Num2Bits(1); + component cst = Constants(); + + selector ==> n2b.in; + n2b.out[0] ==> mux.s; + for (i=0; i<2; i++) { + cst.out[i] ==> mux.c[i]; + } + + mux.out ==> out; +} + +component main = Main(); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/mux2_1.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/mux2_1.circom new file mode 100644 index 000000000..4bb62477d --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/mux2_1.circom @@ -0,0 +1,35 @@ +include "../../circuits/mux2.circom"; +include "../../circuits/bitify.circom"; + + +template Constants() { + var i; + signal output out[4]; + + out[0] <== 37; + out[1] <== 47; + out[2] <== 53; + out[3] <== 71; +} + +template Main() { + var i; + signal private input selector; + signal output out; + + component mux = Mux2(); + component n2b = Num2Bits(2); + component cst = Constants(); + + selector ==> n2b.in; + for (i=0; i<2; i++) { + n2b.out[i] ==> mux.s[i]; + } + for (i=0; i<4; i++) { + cst.out[i] ==> mux.c[i]; + } + + mux.out ==> out; +} + +component main = Main(); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/mux3_1.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/mux3_1.circom new file mode 100644 index 000000000..69f98f25e --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/mux3_1.circom @@ -0,0 +1,39 @@ +include "../../circuits/mux3.circom"; +include "../../circuits/bitify.circom"; + + +template Constants() { + var i; + signal output out[8]; + + out[0] <== 37; + out[1] <== 47; + out[2] <== 53; + out[3] <== 71; + out[4] <== 89; + out[5] <== 107; + out[6] <== 163; + out[7] <== 191; +} + +template Main() { + var i; + signal private input selector; + signal output out; + + component mux = Mux3(); + component n2b = Num2Bits(3); + component cst = Constants(); + + selector ==> n2b.in; + for (i=0; i<3; i++) { + n2b.out[i] ==> mux.s[i]; + } + for (i=0; i<8; i++) { + cst.out[i] ==> mux.c[i]; + } + + mux.out ==> out; +} + +component main = Main(); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/mux4_1.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/mux4_1.circom new file mode 100644 index 000000000..d63e4661b --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/mux4_1.circom @@ -0,0 +1,54 @@ +include "../../circuits/mux4.circom"; +include "../../circuits/bitify.circom"; + + +template Constants() { + var i; + signal output out[16]; + + out[0] <== 123; + out[1] <== 456; + out[2] <== 789; + out[3] <== 012; + out[4] <== 111; + out[5] <== 222; + out[6] <== 333; + out[7] <== 4546; + out[8] <== 134523; + out[9] <== 44356; + out[10] <== 15623; + out[11] <== 4566; + out[12] <== 1223; + out[13] <== 4546; + out[14] <== 4256; + out[15] <== 4456; + +/* + for (i=0;i<16; i++) { + out[i] <== i*2+100; + } +*/ + +} + +template Main() { + var i; + signal private input selector; + signal output out; + + component mux = Mux4(); + component n2b = Num2Bits(4); + component cst = Constants(); + + selector ==> n2b.in; + for (i=0; i<4; i++) { + n2b.out[i] ==> mux.s[i]; + } + for (i=0; i<16; i++) { + cst.out[i] ==> mux.c[i]; + } + + mux.out ==> out; +} + +component main = Main(); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/pedersen2_test.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/pedersen2_test.circom new file mode 100644 index 000000000..e13e35309 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/pedersen2_test.circom @@ -0,0 +1,32 @@ +include "../../circuits/pedersen.circom"; +include "../../circuits/bitify.circom"; + + +template Main() { + signal input in; + signal output out[2]; + + component pedersen = Pedersen(256); + + component n2b; + n2b = Num2Bits(253); + + var i; + + in ==> n2b.in; + + for (i=0; i<253; i++) { + pedersen.in[i] <== n2b.out[i]; + } + + for (i=253; i<256; i++) { + pedersen.in[i] <== 0; + } + + pedersen.out[0] ==> out[0]; + pedersen.out[1] ==> out[1]; +} + +component main = Main(); + + diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/pedersen_test.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/pedersen_test.circom new file mode 100644 index 000000000..accd484d0 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/pedersen_test.circom @@ -0,0 +1,29 @@ +include "../../circuits/pedersen_old.circom"; +include "../../circuits/bitify.circom"; + + +template Main() { + signal input in[2]; + signal output out[2]; + + component pedersen = Pedersen(250*2); + + component n2b[2]; + n2b[0] = Num2Bits(250); + n2b[1] = Num2Bits(250); + + var i; + + in[0] ==> n2b[0].in; + in[1] ==> n2b[1].in; + + for (i=0; i<250; i++) { + n2b[0].out[i] ==> pedersen.in[i]; + n2b[1].out[i] ==> pedersen.in[250+i]; + } + + pedersen.out[0] ==> out[0]; + pedersen.out[1] ==> out[1]; +} + +component main = Main(); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/pointbits_loopback.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/pointbits_loopback.circom new file mode 100644 index 000000000..39dacfbf0 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/pointbits_loopback.circom @@ -0,0 +1,23 @@ +include "../../circuits/pointbits.circom"; + + +template Main() { + signal input in[2]; + + var i + + component p2b = Point2Bits_Strict(); + component b2p = Bits2Point_Strict(); + + p2b.in[0] <== in[0]; + p2b.in[1] <== in[1]; + + for (i=0; i<256; i++) { + b2p.in[i] <== p2b.out[i]; + } + + b2p.out[0] === in[0]; + b2p.out[1] === in[1]; +} + +component main = Main(); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/poseidon3_test.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/poseidon3_test.circom new file mode 100644 index 000000000..eeb034467 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/poseidon3_test.circom @@ -0,0 +1,3 @@ +include "../../circuits/poseidon.circom" + +component main = Poseidon(2); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/poseidon6_test.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/poseidon6_test.circom new file mode 100644 index 000000000..b75cfdce6 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/poseidon6_test.circom @@ -0,0 +1,3 @@ +include "../../circuits/poseidon.circom" + +component main = Poseidon(5); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/sha256_2_test.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/sha256_2_test.circom new file mode 100644 index 000000000..855423b31 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/sha256_2_test.circom @@ -0,0 +1,15 @@ +include "../../circuits/sha256/sha256_2.circom"; + +template Main() { + signal private input a; + signal private input b; + signal output out; + + component sha256_2 = Sha256_2(); + + sha256_2.a <== a; + sha256_2.b <== b; + out <== sha256_2.out; +} + +component main = Main(); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/sha256_test448.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/sha256_test448.circom new file mode 100644 index 000000000..9a5dbdc83 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/sha256_test448.circom @@ -0,0 +1,3 @@ +include "../../circuits/sha256/sha256.circom"; + +component main = Sha256(448); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/sha256_test512.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/sha256_test512.circom new file mode 100644 index 000000000..dd8b11dba --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/sha256_test512.circom @@ -0,0 +1,3 @@ +include "../../circuits/sha256/sha256.circom"; + +component main = Sha256(512); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/sign_test.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/sign_test.circom new file mode 100644 index 000000000..e6a6e3b66 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/sign_test.circom @@ -0,0 +1,3 @@ +include "../../circuits/sign.circom"; + +component main = Sign(); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/smtprocessor10_test.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/smtprocessor10_test.circom new file mode 100644 index 000000000..ecf15d069 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/smtprocessor10_test.circom @@ -0,0 +1,3 @@ +include "../../circuits/smt/smtprocessor.circom"; + +component main = SMTProcessor(10); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/smtverifier10_test.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/smtverifier10_test.circom new file mode 100644 index 000000000..31a4dd784 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/smtverifier10_test.circom @@ -0,0 +1,3 @@ +include "../../circuits/smt/smtverifier.circom"; + +component main = SMTVerifier(10); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/circuits/sum_test.circom b/zkrsa/circom-rsa-verify/circomlib/test/circuits/sum_test.circom new file mode 100644 index 000000000..013d567e5 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/circuits/sum_test.circom @@ -0,0 +1,31 @@ +include "../../circuits/bitify.circom" +include "../../circuits/binsum.circom" + +template A() { + signal private input a; + signal input b; + signal output out; + + var i; + + component n2ba = Num2Bits(32); + component n2bb = Num2Bits(32); + component sum = BinSum(32,2); + component b2n = Bits2Num(32); + + n2ba.in <== a; + n2bb.in <== b; + + for (i=0; i<32; i++) { + sum.in[0][i] <== n2ba.out[i]; + sum.in[1][i] <== n2bb.out[i]; + } + + for (i=0; i<32; i++) { + b2n.in[i] <== sum.out[i]; + } + + out <== b2n.out; +} + +component main = A(); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/comparators.js b/zkrsa/circom-rsa-verify/circomlib/test/comparators.js new file mode 100644 index 000000000..a41bbb8f8 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/comparators.js @@ -0,0 +1,187 @@ +const chai = require("chai"); +const path = require("path"); +const F1Field = require("ffjavascript").F1Field; +const Scalar = require("ffjavascript").Scalar; +exports.p = Scalar.fromString("21888242871839275222246405745257275088548364400416034343698204186575808495617"); +const Fr = new F1Field(exports.p); + +const tester = require("circom").tester; + +const assert = chai.assert; + +describe("Comparators test", function () { + + this.timeout(100000); + + it("Should create a iszero circuit", async() => { + const circuit = await tester(path.join(__dirname, "circuits", "iszero.circom")); + + let witness; + witness = await circuit.calculateWitness({ "in": 111}, true); + assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); + assert(Fr.eq(Fr.e(witness[1]), Fr.e(0))); + + witness = await circuit.calculateWitness({ "in": 0 }, true); + assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); + assert(Fr.eq(Fr.e(witness[1]), Fr.e(1))); + }); + it("Should create a isequal circuit", async() => { + const circuit = await tester(path.join(__dirname, "circuits", "isequal.circom")); + + let witness; + witness = await circuit.calculateWitness({ "in": [111,222] }, true); + assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); + assert(Fr.eq(Fr.e(witness[1]), Fr.e(0))); + + + witness = await circuit.calculateWitness({ "in": [444,444] }, true); + assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); + assert(Fr.eq(Fr.e(witness[1]), Fr.e(1))); + }); + it("Should create a comparison lessthan", async() => { + const circuit = await tester(path.join(__dirname, "circuits", "lessthan.circom")); + + let witness; + witness = await circuit.calculateWitness({ "in": [333,444] }), true; + assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); + assert(Fr.eq(Fr.e(witness[1]), Fr.e(1))); + + witness = await circuit.calculateWitness({ "in":[1,1] }, true); + assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); + assert(Fr.eq(Fr.e(witness[1]), Fr.e(0))); + + witness = await circuit.calculateWitness({ "in": [661, 660] }, true); + assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); + assert(Fr.eq(Fr.e(witness[1]), Fr.e(0))); + + witness = await circuit.calculateWitness({ "in": [0, 1] }, true); + assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); + assert(Fr.eq(Fr.e(witness[1]), Fr.e(1))); + + witness = await circuit.calculateWitness({ "in": [0, 444] }, true); + assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); + assert(Fr.eq(Fr.e(witness[1]), Fr.e(1))); + + witness = await circuit.calculateWitness({ "in": [1, 0] }, true); + assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); + assert(Fr.eq(Fr.e(witness[1]), Fr.e(0))); + + witness = await circuit.calculateWitness({ "in": [555, 0] }, true); + assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); + assert(Fr.eq(Fr.e(witness[1]), Fr.e(0))); + + witness = await circuit.calculateWitness({ "in": [0, 0] }, true); + assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); + assert(Fr.eq(Fr.e(witness[1]), Fr.e(0))); + }); + it("Should create a comparison lesseqthan", async() => { + + const circuit = await tester(path.join(__dirname, "circuits", "lesseqthan.circom")); + + let witness; + witness = await circuit.calculateWitness({ "in": [333,444] }, true); + assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); + assert(Fr.eq(Fr.e(witness[1]), Fr.e(1))); + + witness = await circuit.calculateWitness({ "in":[1,1] }, true); + assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); + assert(Fr.eq(Fr.e(witness[1]), Fr.e(1))); + + witness = await circuit.calculateWitness({ "in": [661, 660] }, true); + assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); + assert(Fr.eq(Fr.e(witness[1]), Fr.e(0))); + + witness = await circuit.calculateWitness({ "in": [0, 1] }, true); + assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); + assert(Fr.eq(Fr.e(witness[1]), Fr.e(1))); + + witness = await circuit.calculateWitness({ "in": [0, 444] }, true); + assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); + assert(Fr.eq(Fr.e(witness[1]), Fr.e(1))); + + witness = await circuit.calculateWitness({ "in": [1, 0] }, true); + assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); + assert(Fr.eq(Fr.e(witness[1]), Fr.e(0))); + + witness = await circuit.calculateWitness({ "in": [555, 0] }, true); + assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); + assert(Fr.eq(Fr.e(witness[1]), Fr.e(0))); + + witness = await circuit.calculateWitness({ "in": [0, 0] }, true); + assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); + assert(Fr.eq(Fr.e(witness[1]), Fr.e(1))); + }); + it("Should create a comparison greaterthan", async() => { + + const circuit = await tester(path.join(__dirname, "circuits", "greaterthan.circom")); + + let witness; + witness = await circuit.calculateWitness({ "in": [333,444] }, true); + assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); + assert(Fr.eq(Fr.e(witness[1]), Fr.e(0))); + + witness = await circuit.calculateWitness({ "in":[1,1] }, true); + assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); + assert(Fr.eq(Fr.e(witness[1]), Fr.e(0))); + + witness = await circuit.calculateWitness({ "in": [661, 660] }, true); + assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); + assert(Fr.eq(Fr.e(witness[1]), Fr.e(1))); + + witness = await circuit.calculateWitness({ "in": [0, 1] }, true); + assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); + assert(Fr.eq(Fr.e(witness[1]), Fr.e(0))); + + witness = await circuit.calculateWitness({ "in": [0, 444] }, true); + assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); + assert(Fr.eq(Fr.e(witness[1]), Fr.e(0))); + + witness = await circuit.calculateWitness({ "in": [1, 0] }, true); + assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); + assert(Fr.eq(Fr.e(witness[1]), Fr.e(1))); + + witness = await circuit.calculateWitness({ "in": [555, 0] }, true); + assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); + assert(Fr.eq(Fr.e(witness[1]), Fr.e(1))); + + witness = await circuit.calculateWitness({ "in": [0, 0] }, true); + assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); + assert(Fr.eq(Fr.e(witness[1]), Fr.e(0))); + }); + it("Should create a comparison greatereqthan", async() => { + const circuit = await tester(path.join(__dirname, "circuits", "greatereqthan.circom")); + + let witness; + witness = await circuit.calculateWitness({ "in": [333,444] }, true); + assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); + assert(Fr.eq(Fr.e(witness[1]), Fr.e(0))); + + witness = await circuit.calculateWitness({ "in":[1,1] }, true); + assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); + assert(Fr.eq(Fr.e(witness[1]), Fr.e(1))); + + witness = await circuit.calculateWitness({ "in": [661, 660] }, true); + assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); + assert(Fr.eq(Fr.e(witness[1]), Fr.e(1))); + + witness = await circuit.calculateWitness({ "in": [0, 1] }, true); + assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); + assert(Fr.eq(Fr.e(witness[1]), Fr.e(0))); + + witness = await circuit.calculateWitness({ "in": [0, 444] }, true); + assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); + assert(Fr.eq(Fr.e(witness[1]), Fr.e(0))); + + witness = await circuit.calculateWitness({ "in": [1, 0] }, true); + assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); + assert(Fr.eq(Fr.e(witness[1]), Fr.e(1))); + + witness = await circuit.calculateWitness({ "in": [555, 0] }, true); + assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); + assert(Fr.eq(Fr.e(witness[1]), Fr.e(1))); + + witness = await circuit.calculateWitness({ "in": [0, 0] }, true); + assert(Fr.eq(Fr.e(witness[0]), Fr.e(1))); + assert(Fr.eq(Fr.e(witness[1]), Fr.e(1))); + }); +}); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/eddsa.js b/zkrsa/circom-rsa-verify/circomlib/test/eddsa.js new file mode 100644 index 000000000..4a9554b49 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/eddsa.js @@ -0,0 +1,71 @@ +const chai = require("chai"); +const path = require("path"); + +const tester = require("circom").tester; + +const eddsa = require("../src/eddsa.js"); +const babyJub = require("../src/babyjub.js"); + +const F1Field = require("ffjavascript").F1Field; +const Scalar = require("ffjavascript").Scalar; +exports.p = Scalar.fromString("21888242871839275222246405745257275088548364400416034343698204186575808495617"); +const Fr = new F1Field(exports.p); + +const assert = chai.assert; + +function print(circuit, w, s) { + console.log(s + ": " + w[circuit.getSignalIdx(s)]); +} + +function buffer2bits(Fr, buff) { + const res = []; + for (let i=0; i>j)&1) { + res.push(Fr.toString(Fr.one)); + } else { + res.push(Fr.toString(Fr.zero)); + } + } + } + return res; +} + + +describe("EdDSA test", function () { + let circuit; + + this.timeout(100000); + + before( async () => { + circuit = await tester(path.join(__dirname, "circuits", "eddsa_test.circom")); + }); + + it("Sign a single 10 bytes from 0 to 9", async () => { + const msg = Buffer.from("00010203040506070809", "hex"); + +// const prvKey = crypto.randomBytes(32); + + const prvKey = Buffer.from("0001020304050607080900010203040506070809000102030405060708090001", "hex"); + + const pubKey = eddsa.prv2pub(prvKey); + + const pPubKey = babyJub.packPoint(pubKey); + + const signature = eddsa.sign(prvKey, msg); + + const pSignature = eddsa.packSignature(signature); + const uSignature = eddsa.unpackSignature(pSignature); + + assert(eddsa.verify(msg, uSignature, pubKey)); + + const msgBits = buffer2bits(Fr, msg); + const r8Bits = buffer2bits(Fr, pSignature.slice(0, 32)); + const sBits = buffer2bits(Fr, pSignature.slice(32, 64)); + const aBits = buffer2bits(Fr, pPubKey); + + const w = await circuit.calculateWitness({A: aBits, R8: r8Bits, S: sBits, msg: msgBits}, true); + + await circuit.checkConstraints(w); + }); +}); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/eddsa_js.js b/zkrsa/circom-rsa-verify/circomlib/test/eddsa_js.js new file mode 100644 index 000000000..24befd800 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/eddsa_js.js @@ -0,0 +1,88 @@ +const chai = require("chai"); + +const eddsa = require("../src/eddsa.js"); +const babyJub = require("../src/babyjub.js"); + +const assert = chai.assert; + +const utils = require("ffjavascript").utils; + +function buff2hex(buff) { + function i2hex(i) { + return ('0' + i.toString(16)).slice(-2); + } + return Array.from(buff).map(i2hex).join(''); +} + +describe("EdDSA js test", function () { + + this.timeout(100000); + + it("Sign (using Mimc7) a single 10 bytes from 0 to 9", () => { + const msgBuf = Buffer.from("00010203040506070809", "hex"); + const msg = utils.leBuff2int(msgBuf); + + // const prvKey = crypto.randomBytes(32); + + const prvKey = Buffer.from("0001020304050607080900010203040506070809000102030405060708090001", "hex"); + + const pubKey = eddsa.prv2pub(prvKey); + + assert.equal(pubKey[0].toString(), + "13277427435165878497778222415993513565335242147425444199013288855685581939618"); + assert.equal(pubKey[1].toString(), + "13622229784656158136036771217484571176836296686641868549125388198837476602820"); + + const pPubKey = babyJub.packPoint(pubKey); + + const signature = eddsa.signMiMC(prvKey, msg); + assert.equal(signature.R8[0].toString(), + "11384336176656855268977457483345535180380036354188103142384839473266348197733"); + assert.equal(signature.R8[1].toString(), + "15383486972088797283337779941324724402501462225528836549661220478783371668959"); + assert.equal(signature.S.toString(), + "2523202440825208709475937830811065542425109372212752003460238913256192595070"); + + const pSignature = eddsa.packSignature(signature); + assert.equal(buff2hex(pSignature), ""+ + "dfedb4315d3f2eb4de2d3c510d7a987dcab67089c8ace06308827bf5bcbe02a2"+ + "7ed40dab29bf993c928e789d007387998901a24913d44fddb64b1f21fc149405"); + + const uSignature = eddsa.unpackSignature(pSignature); + assert(eddsa.verifyMiMC(msg, uSignature, pubKey)); + + }); + + it("Sign (using Poseidon) a single 10 bytes from 0 to 9", () => { + const msgBuf = Buffer.from("00010203040506070809", "hex"); + const msg = utils.leBuff2int(msgBuf); + + const prvKey = Buffer.from("0001020304050607080900010203040506070809000102030405060708090001", "hex"); + + const pubKey = eddsa.prv2pub(prvKey); + + assert.equal(pubKey[0].toString(), + "13277427435165878497778222415993513565335242147425444199013288855685581939618"); + assert.equal(pubKey[1].toString(), + "13622229784656158136036771217484571176836296686641868549125388198837476602820"); + + const pPubKey = babyJub.packPoint(pubKey); + + const signature = eddsa.signPoseidon(prvKey, msg); + assert.equal(signature.R8[0].toString(), + "11384336176656855268977457483345535180380036354188103142384839473266348197733"); + assert.equal(signature.R8[1].toString(), + "15383486972088797283337779941324724402501462225528836549661220478783371668959"); + assert.equal(signature.S.toString(), + "1672775540645840396591609181675628451599263765380031905495115170613215233181"); + + const pSignature = eddsa.packSignature(signature); + assert.equal(buff2hex(pSignature), ""+ + "dfedb4315d3f2eb4de2d3c510d7a987dcab67089c8ace06308827bf5bcbe02a2"+ + "9d043ece562a8f82bfc0adb640c0107a7d3a27c1c7c1a6179a0da73de5c1b203"); + + const uSignature = eddsa.unpackSignature(pSignature); + assert(eddsa.verifyPoseidon(msg, uSignature, pubKey)); + + }); +}); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/eddsamimc.js b/zkrsa/circom-rsa-verify/circomlib/test/eddsamimc.js new file mode 100644 index 000000000..df3503d2c --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/eddsamimc.js @@ -0,0 +1,98 @@ +const chai = require("chai"); +const path = require("path"); +const tester = require("circom").tester; + +const eddsa = require("../src/eddsa.js"); +const F1Field = require("ffjavascript").F1Field; +const Scalar = require("ffjavascript").Scalar; +exports.p = Scalar.fromString("21888242871839275222246405745257275088548364400416034343698204186575808495617"); +const Fr = new F1Field(exports.p); + +const assert = chai.assert; + +describe("EdDSA MiMC test", function () { + let circuit; + + this.timeout(100000); + + before( async () => { + circuit = await tester(path.join(__dirname, "circuits", "eddsamimc_test.circom")); + }); + + it("Sign a single number", async () => { + const msg = Scalar.e(1234); + + const prvKey = Buffer.from("0001020304050607080900010203040506070809000102030405060708090001", "hex"); + + const pubKey = eddsa.prv2pub(prvKey); + + const signature = eddsa.signMiMC(prvKey, msg); + + assert(eddsa.verifyMiMC(msg, signature, pubKey)); + + const w = await circuit.calculateWitness({ + enabled: 1, + Ax: pubKey[0], + Ay: pubKey[1], + R8x: signature.R8[0], + R8y: signature.R8[1], + S: signature.S, + M: msg}, true); + + + await circuit.checkConstraints(w); + + }); + + it("Detect Invalid signature", async () => { + const msg = Scalar.e(1234); + + const prvKey = Buffer.from("0001020304050607080900010203040506070809000102030405060708090001", "hex"); + + const pubKey = eddsa.prv2pub(prvKey); + + + const signature = eddsa.signMiMC(prvKey, msg); + + assert(eddsa.verifyMiMC(msg, signature, pubKey)); + try { + const w = await circuit.calculateWitness({ + enabled: 1, + Ax: pubKey[0], + Ay: pubKey[1], + R8x: Fr.toString(Fr.add(Fr.e(signature.R8[0]), Fr.e(1))), + R8y: Fr.toString(Fr.e(signature.R8[1])), + S: signature.S, + M: msg}, true); + assert(false); + } catch(err) { + assert(/Constraint\sdoesn't\smatch(.*)1\s!=\s0/.test(err.message) ); + } + }); + + + it("Test a dissabled circuit with a bad signature", async () => { + const msg = Scalar.e(1234); + + const prvKey = Buffer.from("0001020304050607080900010203040506070809000102030405060708090001", "hex"); + + const pubKey = eddsa.prv2pub(prvKey); + + + const signature = eddsa.signMiMC(prvKey, msg); + + assert(eddsa.verifyMiMC(msg, signature, pubKey)); + + const w = await circuit.calculateWitness({ + enabled: 0, + Ax: pubKey[0], + Ay: pubKey[1], + R8x: Fr.toString(Fr.add(Fr.e(signature.R8[0]), Fr.e(1))), + R8y: Fr.toString(Fr.e(signature.R8[1])), + S: signature.S, + M: msg}, true); + + await circuit.checkConstraints(w); + + }); +}); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/eddsaposeidon.js b/zkrsa/circom-rsa-verify/circomlib/test/eddsaposeidon.js new file mode 100644 index 000000000..ea62272a5 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/eddsaposeidon.js @@ -0,0 +1,100 @@ +const chai = require("chai"); +const path = require("path"); +const tester = require("circom").tester; + +const eddsa = require("../src/eddsa.js"); +const F1Field = require("ffjavascript").F1Field; +const Scalar = require("ffjavascript").Scalar; +exports.p = Scalar.fromString("21888242871839275222246405745257275088548364400416034343698204186575808495617"); +const Fr = new F1Field(exports.p); + +const assert = chai.assert; + +describe("EdDSA Poseidon test", function () { + let circuit; + + this.timeout(100000); + + before( async () => { + circuit = await tester(path.join(__dirname, "circuits", "eddsaposeidon_test.circom")); + }); + + it("Sign a single number", async () => { + const msg = Scalar.e(1234); + + const prvKey = Buffer.from("0001020304050607080900010203040506070809000102030405060708090001", "hex"); + + const pubKey = eddsa.prv2pub(prvKey); + + const signature = eddsa.signPoseidon(prvKey, msg); + + assert(eddsa.verifyPoseidon(msg, signature, pubKey)); + + const input = { + enabled: 1, + Ax: pubKey[0], + Ay: pubKey[1], + R8x: signature.R8[0], + R8y: signature.R8[1], + S: signature.S, + M: msg + }; + + // console.log(JSON.stringify(utils.stringifyBigInts(input))); + + const w = await circuit.calculateWitness(input, true); + + await circuit.checkConstraints(w); + }); + + it("Detect Invalid signature", async () => { + const msg = Scalar.e(1234); + + const prvKey = Buffer.from("0001020304050607080900010203040506070809000102030405060708090001", "hex"); + + const pubKey = eddsa.prv2pub(prvKey); + + + const signature = eddsa.signPoseidon(prvKey, msg); + + assert(eddsa.verifyPoseidon(msg, signature, pubKey)); + try { + await circuit.calculateWitness({ + enabled: 1, + Ax: pubKey[0], + Ay: pubKey[1], + R8x: Fr.toString(Fr.add(Fr.e(signature.R8[0]), Fr.e(1))), + R8y: signature.R8[1], + S: signature.S, + M: msg}, true); + assert(false); + } catch(err) { + assert(/Constraint\sdoesn't\smatch(.*)1\s!=\s0/.test(err.message) ); + } + }); + + + it("Test a dissabled circuit with a bad signature", async () => { + const msg = Scalar.e(1234); + + const prvKey = Buffer.from("0001020304050607080900010203040506070809000102030405060708090001", "hex"); + + const pubKey = eddsa.prv2pub(prvKey); + + + const signature = eddsa.signPoseidon(prvKey, msg); + + assert(eddsa.verifyPoseidon(msg, signature, pubKey)); + + const w = await circuit.calculateWitness({ + enabled: 0, + Ax: pubKey[0], + Ay: pubKey[1], + R8x: Fr.toString(Fr.add(Fr.e(signature.R8[0]), Fr.e(1))), + R8y: signature.R8[1], + S: signature.S, + M: msg}, true); + + await circuit.checkConstraints(w); + }); +}); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/escalarmul.js b/zkrsa/circom-rsa-verify/circomlib/test/escalarmul.js new file mode 100644 index 000000000..b059c9e6a --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/escalarmul.js @@ -0,0 +1,117 @@ +const chai = require("chai"); +const path = require("path"); +const tester = require("circom").tester; +const babyJub = require("../src/babyjub.js"); + +const F1Field = require("ffjavascript").F1Field; +const Scalar = require("ffjavascript").Scalar; +exports.p = Scalar.fromString("21888242871839275222246405745257275088548364400416034343698204186575808495617"); +const Fr = new F1Field(exports.p); + +const assert = chai.assert; + +function print(circuit, w, s) { + console.log(s + ": " + w[circuit.getSignalIdx(s)]); +} + +describe("Exponentioation test", function () { + this.timeout(100000); + + it("Should generate the Exponentiation table in k=0", async () => { + + const circuit = await tester(path.join(__dirname, "circuits", "escalarmulw4table_test.circom")); + + const w = await circuit.calculateWitness({in: 1}); + + await circuit.checkConstraints(w); + + let g = [ + Fr.e("5299619240641551281634865583518297030282874472190772894086521144482721001553"), + Fr.e("16950150798460657717958625567821834550301663161624707787222815936182638968203") + ]; + + let dbl= [Fr.e("0"), Fr.e("1")]; + + const expectedOut = []; + + for (let i=0; i<16; i++) { + + expectedOut.push(dbl); + dbl = babyJub.addPoint(dbl,g); + } + + await circuit.assertOut(w, {out: expectedOut}); + + }); + + it("Should generate the Exponentiation table in k=3", async () => { + + const circuit = await tester(path.join(__dirname, "circuits", "escalarmulw4table_test3.circom")); + + const w = await circuit.calculateWitness({in: 1}); + + await circuit.checkConstraints(w); + + let g = [ + Fr.e("5299619240641551281634865583518297030282874472190772894086521144482721001553"), + Fr.e("16950150798460657717958625567821834550301663161624707787222815936182638968203") + ]; + + for (let i=0; i<12;i++) { + g = babyJub.addPoint(g,g); + } + + let dbl= [Fr.e("0"), Fr.e("1")]; + + const expectedOut = []; + + for (let i=0; i<16; i++) { + expectedOut.push(dbl); + + dbl = babyJub.addPoint(dbl,g); + } + + await circuit.assertOut(w, {out: expectedOut}); + + }); + + it("Should exponentiate g^31", async () => { + + const circuit = await tester(path.join(__dirname, "circuits", "escalarmul_test.circom")); + + const w = await circuit.calculateWitness({"in": 31}); + + await circuit.checkConstraints(w); + + let g = [ + Fr.e("5299619240641551281634865583518297030282874472190772894086521144482721001553"), + Fr.e("16950150798460657717958625567821834550301663161624707787222815936182638968203") + ]; + + let c = [Fr.e(0), Fr.e(1)]; + + for (let i=0; i<31;i++) { + c = babyJub.addPoint(c,g); + } + + await circuit.assertOut(w, {out: c}); + + const w2 = await circuit.calculateWitness({"in": Fr.add(Fr.shl(Fr.e(1), Fr.e(252)),Fr.one)}); + + c = [g[0], g[1]]; + for (let i=0; i<252;i++) { + c = babyJub.addPoint(c,c); + } + c = babyJub.addPoint(c,g); + + await circuit.assertOut(w2, {out: c}); + + }).timeout(10000000); + + it("Number of constrains for 256 bits", async () => { + + const circuit = await tester(path.join(__dirname, "circuits", "escalarmul_test_min.circom")); + + }).timeout(10000000); + +}); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/escalarmulany.js b/zkrsa/circom-rsa-verify/circomlib/test/escalarmulany.js new file mode 100644 index 000000000..8cd0e6395 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/escalarmulany.js @@ -0,0 +1,51 @@ +const chai = require("chai"); +const path = require("path"); +const tester = require("circom").tester; + +const F1Field = require("ffjavascript").F1Field; +const Scalar = require("ffjavascript").Scalar; +exports.p = Scalar.fromString("21888242871839275222246405745257275088548364400416034343698204186575808495617"); +const Fr = new F1Field(exports.p); + +function print(circuit, w, s) { + console.log(s + ": " + w[circuit.getSignalIdx(s)]); +} + +describe("Escalarmul test", function () { + let circuitEMulAny; + + this.timeout(100000); + + let g; + + before( async() => { + circuitEMulAny = await tester(path.join(__dirname, "circuits", "escalarmulany_test.circom")); + g = [ + Fr.e("5299619240641551281634865583518297030282874472190772894086521144482721001553"), + Fr.e("16950150798460657717958625567821834550301663161624707787222815936182638968203") + ] + }); + + it("Should generate Same escalar mul", async () => { + + const w = await circuitEMulAny.calculateWitness({"e": 1, "p": g}); + + await circuitEMulAny.checkConstraints(w); + + await circuitEMulAny.assertOut(w, {out: g}, true); + + }); + + it("If multiply by order should return 0", async () => { + + const r = Fr.e("2736030358979909402780800718157159386076813972158567259200215660948447373041"); + const w = await circuitEMulAny.calculateWitness({"e": r, "p": g}); + + await circuitEMulAny.checkConstraints(w); + + await circuitEMulAny.assertOut(w, {out: [0,1]}, true); + + }); + +}); + diff --git a/zkrsa/circom-rsa-verify/circomlib/test/escalarmulfix.js b/zkrsa/circom-rsa-verify/circomlib/test/escalarmulfix.js new file mode 100644 index 000000000..f50f205ba --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/escalarmulfix.js @@ -0,0 +1,93 @@ +const chai = require("chai"); +const path = require("path"); +const tester = require("circom").tester; +const babyjub = require("../src/babyjub"); +const F1Field = require("ffjavascript").F1Field; +const Scalar = require("ffjavascript").Scalar; +exports.p = Scalar.fromString("21888242871839275222246405745257275088548364400416034343698204186575808495617"); +const Fr = new F1Field(exports.p); + +const assert = chai.assert; + +function print(circuit, w, s) { + console.log(s + ": " + w[circuit.getSignalIdx(s)]); +} + +describe("Escalarmul test", function () { + let circuit; + + this.timeout(100000); + + before( async() => { + circuit = await tester(path.join(__dirname, "circuits", "escalarmulfix_test.circom")); + }); + + it("Should generate Same escalar mul", async () => { + + const w = await circuit.calculateWitness({"e": 0}); + + await circuit.checkConstraints(w); + + await circuit.assertOut(w, {out: [0,1]}, true); + + }); + + it("Should generate Same escalar mul", async () => { + + const w = await circuit.calculateWitness({"e": 1}, true); + + await circuit.checkConstraints(w); + + await circuit.assertOut(w, {out: babyjub.Base8}); + + }); + + it("Should generate scalar mul of a specific constant", async () => { + + const s = Fr.e("2351960337287830298912035165133676222414898052661454064215017316447594616519"); + const base8 = [ + Fr.e("5299619240641551281634865583518297030282874472190772894086521144482721001553"), + Fr.e("16950150798460657717958625567821834550301663161624707787222815936182638968203") + ]; + + const w = await circuit.calculateWitness({"e": s}, true); + + await circuit.checkConstraints(w); + + const expectedRes = babyjub.mulPointEscalar(base8, s); + + await circuit.assertOut(w, {out: expectedRes}); + + }); + + it("Should generate scalar mul of the firsts 50 elements", async () => { + + const base8 = [ + Fr.e("5299619240641551281634865583518297030282874472190772894086521144482721001553"), + Fr.e("16950150798460657717958625567821834550301663161624707787222815936182638968203") + ]; + + for (let i=0; i<50; i++) { + const s = Fr.e(i); + + const w = await circuit.calculateWitness({"e": s}, true); + + await circuit.checkConstraints(w); + + const expectedRes = babyjub.mulPointEscalar(base8, s); + + await circuit.assertOut(w, {out: expectedRes}); + } + }); + + it("If multiply by order should return 0", async () => { + + const w = await circuit.calculateWitness({"e": babyjub.subOrder }, true); + + await circuit.checkConstraints(w); + + await circuit.assertOut(w, {out: [0,1]}); + }); + +}); + diff --git a/zkrsa/circom-rsa-verify/circomlib/test/helpers/printsignal.js b/zkrsa/circom-rsa-verify/circomlib/test/helpers/printsignal.js new file mode 100644 index 000000000..796274d7a --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/helpers/printsignal.js @@ -0,0 +1,22 @@ + +const snarkjs = require("snarkjs"); + +const bigInt = snarkjs.bigInt; + +module.exports = function hexBits(cir, witness, sig, nBits) { + let v = bigInt(0); + for (let i=nBits-1; i>=0; i--) { + v = v.shiftLeft(1); + const name = sig+"["+i+"]"; + const idx = cir.getSignalIdx(name); + const vbit = bigInt(witness[idx].toString()); + if (vbit.equals(bigInt(1))) { + v = v.add(bigInt(1)); + } else if (vbit.equals(bigInt(0))) { + v; + } else { + console.log("Not Binary: "+name); + } + } + return v.toString(16); +}; diff --git a/zkrsa/circom-rsa-verify/circomlib/test/helpers/sha256.js b/zkrsa/circom-rsa-verify/circomlib/test/helpers/sha256.js new file mode 100644 index 000000000..ec58ee1d1 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/helpers/sha256.js @@ -0,0 +1,178 @@ +/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ +/* SHA-256 (FIPS 180-4) implementation in JavaScript (c) Chris Veness 2002-2017 */ +/* MIT Licence */ +/* www.movable-type.co.uk/scripts/sha256.html */ +/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ + +'use strict'; + + +/** + * SHA-256 hash function reference implementation. + * + * This is an annotated direct implementation of FIPS 180-4, without any optimisations. It is + * intended to aid understanding of the algorithm rather than for production use. + * + * While it could be used where performance is not critical, I would recommend using the ‘Web + * Cryptography API’ (developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest) for the browser, + * or the ‘crypto’ library (nodejs.org/api/crypto.html#crypto_class_hash) in Node.js. + * + * See csrc.nist.gov/groups/ST/toolkit/secure_hashing.html + * csrc.nist.gov/groups/ST/toolkit/examples.html + */ +class Sha256 { + + /** + * Generates SHA-256 hash of string. + * + * @param {string} msg - (Unicode) string to be hashed. + * @param {Object} [options] + * @param {string} [options.msgFormat=string] - Message format: 'string' for JavaScript string + * (gets converted to UTF-8 for hashing); 'hex-bytes' for string of hex bytes ('616263' ≡ 'abc') . + * @param {string} [options.outFormat=hex] - Output format: 'hex' for string of contiguous + * hex bytes; 'hex-w' for grouping hex bytes into groups of (4 byte / 8 character) words. + * @returns {string} Hash of msg as hex character string. + */ + static hash(msg, options) { + const defaults = { msgFormat: 'string', outFormat: 'hex' }; + const opt = Object.assign(defaults, options); + + // note use throughout this routine of 'n >>> 0' to coerce Number 'n' to unsigned 32-bit integer + + switch (opt.msgFormat) { + default: // default is to convert string to UTF-8, as SHA only deals with byte-streams + case 'string': msg = utf8Encode(msg); break; + case 'hex-bytes':msg = hexBytesToString(msg); break; // mostly for running tests + } + + // constants [§4.2.2] + const K = [ + 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, + 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, + 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, + 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, + 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, + 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, + 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, + 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 ]; + + // initial hash value [§5.3.3] + const H = [ + 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19 ]; + + // PREPROCESSING [§6.2.1] + + msg += String.fromCharCode(0x80); // add trailing '1' bit (+ 0's padding) to string [§5.1.1] + + // convert string msg into 512-bit blocks (array of 16 32-bit integers) [§5.2.1] + const l = msg.length/4 + 2; // length (in 32-bit integers) of msg + ‘1’ + appended length + const N = Math.ceil(l/16); // number of 16-integer (512-bit) blocks required to hold 'l' ints + const M = new Array(N); // message M is N×16 array of 32-bit integers + + for (let i=0; i>> 32, but since JS converts + // bitwise-op args to 32 bits, we need to simulate this by arithmetic operators + const lenHi = ((msg.length-1)*8) / Math.pow(2, 32); + const lenLo = ((msg.length-1)*8) >>> 0; + M[N-1][14] = Math.floor(lenHi); + M[N-1][15] = lenLo; + + // HASH COMPUTATION [§6.2.2] + + for (let i=0; i>> 0; + } + + // 2 - initialise working variables a, b, c, d, e, f, g, h with previous hash value + let a = H[0], b = H[1], c = H[2], d = H[3], e = H[4], f = H[5], g = H[6], h = H[7]; + + // 3 - main loop (note '>>> 0' for 'addition modulo 2^32') + for (let t=0; t<64; t++) { + const T1 = h + Sha256.Σ1(e) + Sha256.Ch(e, f, g) + K[t] + W[t]; + const T2 = Sha256.Σ0(a) + Sha256.Maj(a, b, c); + h = g; + g = f; + f = e; + e = (d + T1) >>> 0; + d = c; + c = b; + b = a; + a = (T1 + T2) >>> 0; + } + + // 4 - compute the new intermediate hash value (note '>>> 0' for 'addition modulo 2^32') + H[0] = (H[0]+a) >>> 0; + H[1] = (H[1]+b) >>> 0; + H[2] = (H[2]+c) >>> 0; + H[3] = (H[3]+d) >>> 0; + H[4] = (H[4]+e) >>> 0; + H[5] = (H[5]+f) >>> 0; + H[6] = (H[6]+g) >>> 0; + H[7] = (H[7]+h) >>> 0; + } + + // convert H0..H7 to hex strings (with leading zeros) + for (let h=0; h prev + String.fromCharCode(curr), ''); + } catch (e) { // no TextEncoder available? + return unescape(encodeURIComponent(str)); // monsur.hossa.in/2012/07/20/utf-8-in-javascript.html + } + } + + function hexBytesToString(hexStr) { // convert string of hex numbers to a string of chars (eg '616263' -> 'abc'). + const str = hexStr.replace(' ', ''); // allow space-separated groups + return str=='' ? '' : str.match(/.{2}/g).map(byte => String.fromCharCode(parseInt(byte, 16))).join(''); + } + } + + + + /** + * Rotates right (circular right shift) value x by n positions [§3.2.4]. + * @private + */ + static ROTR(n, x) { + return (x >>> n) | (x << (32-n)); + } + + + /** + * Logical functions [§4.1.2]. + * @private + */ + static Σ0(x) { return Sha256.ROTR(2, x) ^ Sha256.ROTR(13, x) ^ Sha256.ROTR(22, x); } + static Σ1(x) { return Sha256.ROTR(6, x) ^ Sha256.ROTR(11, x) ^ Sha256.ROTR(25, x); } + static σ0(x) { return Sha256.ROTR(7, x) ^ Sha256.ROTR(18, x) ^ (x>>>3); } + static σ1(x) { return Sha256.ROTR(17, x) ^ Sha256.ROTR(19, x) ^ (x>>>10); } + static Ch(x, y, z) { return (x & y) ^ (~x & z); } // 'choice' + static Maj(x, y, z) { return (x & y) ^ (x & z) ^ (y & z); } // 'majority' + +} + + +/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ + +if (typeof module != 'undefined' && module.exports) module.exports = Sha256; // ≡ export default Sha256 + diff --git a/zkrsa/circom-rsa-verify/circomlib/test/mimccircuit.js b/zkrsa/circom-rsa-verify/circomlib/test/mimccircuit.js new file mode 100644 index 000000000..5601811be --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/mimccircuit.js @@ -0,0 +1,25 @@ +const chai = require("chai"); +const path = require("path"); +const tester = require("circom").tester; + +const mimcjs = require("../src/mimc7.js"); + +describe("MiMC Circuit test", function () { + let circuit; + + this.timeout(100000); + + before( async () => { + circuit = await tester(path.join(__dirname, "circuits", "mimc_test.circom")); + }); + + it("Should check constrain", async () => { + const w = await circuit.calculateWitness({x_in: 1, k: 2}, true); + + const res2 = mimcjs.hash(1,2,91); + + await circuit.assertOut(w, {out: res2}); + + await circuit.checkConstraints(w); + }); +}); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/mimccontract.js b/zkrsa/circom-rsa-verify/circomlib/test/mimccontract.js new file mode 100644 index 000000000..9c135d5bd --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/mimccontract.js @@ -0,0 +1,48 @@ +const ganache = require("ganache-cli"); +const Web3 = require("web3"); +const chai = require("chai"); +const mimcGenContract = require("../src/mimc_gencontract.js"); +const mimcjs = require("../src/mimc7.js"); + + +const assert = chai.assert; +const log = (msg) => { if (process.env.MOCHA_VERBOSE) console.log(msg); }; + +const SEED = "mimc"; + +describe("MiMC Smart contract test", function () { + let testrpc; + let web3; + let mimc; + let accounts; + + this.timeout(100000); + + before(async () => { + web3 = new Web3(ganache.provider(), null, { transactionConfirmationBlocks: 1 }); + accounts = await web3.eth.getAccounts(); + }); + + it("Should deploy the contract", async () => { + const C = new web3.eth.Contract(mimcGenContract.abi); + + mimc = await C.deploy({ + data: mimcGenContract.createCode(SEED, 91), + arguments: [] + }).send({ + gas: 1500000, + gasPrice: '30000000000000', + from: accounts[0] + }).on("error", (error) => { + console.log("ERROR: "+error); + }); + }); + + it("Shold calculate the mimic correctly", async () => { + const res = await mimc.methods.MiMCpe7(1,2).call(); + const res2 = await mimcjs.hash(1,2,91); + + assert.equal(res.toString(), res2.toString()); + }); +}); + diff --git a/zkrsa/circom-rsa-verify/circomlib/test/mimcspongecircuit.js b/zkrsa/circom-rsa-verify/circomlib/test/mimcspongecircuit.js new file mode 100644 index 000000000..320553401 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/mimcspongecircuit.js @@ -0,0 +1,37 @@ +const path = require("path"); +const tester = require("circom").tester; + +const mimcjs = require("../src/mimcsponge.js"); + + +describe("MiMC Sponge Circuit test", function () { + let circuit; + + this.timeout(100000); + + it("Should check permutation", async () => { + + circuit = await tester(path.join(__dirname, "circuits", "mimc_sponge_test.circom")); + + const w = await circuit.calculateWitness({xL_in: 1, xR_in: 2, k: 3}); + + const out2 = mimcjs.hash(1,2,3); + + await circuit.assertOut(w, {xL_out: out2.xL, xR_out: out2.xR}); + + await circuit.checkConstraints(w); + + }); + + it("Should check hash", async () => { + circuit = await tester(path.join(__dirname, "circuits", "mimc_sponge_hash_test.circom")); + + const w = await circuit.calculateWitness({ins: [1, 2], k: 0}); + + const out2 = mimcjs.multiHash([1,2], 0, 3); + + await circuit.assertOut(w, {outs: out2}); + + await circuit.checkConstraints(w); + }); +}); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/mimcspongecontract.js b/zkrsa/circom-rsa-verify/circomlib/test/mimcspongecontract.js new file mode 100644 index 000000000..a2e7394c5 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/mimcspongecontract.js @@ -0,0 +1,43 @@ +const ganache = require("ganache-cli"); +const Web3 = require("web3"); +const chai = require("chai"); +const mimcGenContract = require("../src/mimcsponge_gencontract.js"); +const mimcjs = require("../src/mimcsponge.js"); + + +const assert = chai.assert; +const log = (msg) => { if (process.env.MOCHA_VERBOSE) console.log(msg); }; + +const SEED = "mimcsponge"; + +describe("MiMC Sponge Smart contract test", () => { + let testrpc; + let web3; + let mimc; + let accounts; + + before(async () => { + web3 = new Web3(ganache.provider(), null, { transactionConfirmationBlocks: 1 }); + accounts = await web3.eth.getAccounts(); + }); + + it("Should deploy the contract", async () => { + const C = new web3.eth.Contract(mimcGenContract.abi); + + mimc = await C.deploy({ + data: mimcGenContract.createCode(SEED, 220) + }).send({ + gas: 3500000, + from: accounts[0] + }); + }); + + it("Shold calculate the mimc correctly", async () => { + const res = await mimc.methods.MiMCSponge(1,2,3).call(); + const res2 = await mimcjs.hash(1,2,3); + + assert.equal(res.xL.toString(), res2.xL.toString()); + assert.equal(res.xR.toString(), res2.xR.toString()); + }); +}); + diff --git a/zkrsa/circom-rsa-verify/circomlib/test/montgomery.js b/zkrsa/circom-rsa-verify/circomlib/test/montgomery.js new file mode 100644 index 000000000..49c292733 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/montgomery.js @@ -0,0 +1,95 @@ +const chai = require("chai"); +const path = require("path"); +const tester = require("circom").tester; +const babyJub = require("../src/babyjub.js"); +const F1Field = require("ffjavascript").F1Field; +const Scalar = require("ffjavascript").Scalar; +exports.p = Scalar.fromString("21888242871839275222246405745257275088548364400416034343698204186575808495617"); +const Fr = new F1Field(exports.p); + +const assert = chai.assert; + +describe("Montgomery test", function () { + let circuitE2M; + let circuitM2E; + let circuitMAdd; + let circuitMDouble; + + let g = [ + Fr.e("5299619240641551281634865583518297030282874472190772894086521144482721001553"), + Fr.e("16950150798460657717958625567821834550301663161624707787222815936182638968203") + ]; + + let mg, mg2, g2, g3, mg3; + + this.timeout(100000); + before( async() => { + circuitE2M = await tester(path.join(__dirname, "circuits", "edwards2montgomery.circom")); + await circuitE2M.loadSymbols(); + circuitM2E = await tester(path.join(__dirname, "circuits", "montgomery2edwards.circom")); + await circuitM2E.loadSymbols(); + circuitMAdd = await tester(path.join(__dirname, "circuits", "montgomeryadd.circom")); + await circuitMAdd.loadSymbols(); + circuitMDouble = await tester(path.join(__dirname, "circuits", "montgomerydouble.circom")); + await circuitMDouble.loadSymbols(); + }); + it("Convert Edwards to Montgomery and back again", async () => { + let w, xout, yout; + + w = await circuitE2M.calculateWitness({ in: g}, true); + + xout = w[circuitE2M.symbols["main.out[0]"].varIdx]; + yout = w[circuitE2M.symbols["main.out[1]"].varIdx]; + + mg = [xout, yout]; + + w = await circuitM2E.calculateWitness({ in: [xout, yout]}, true); + + xout = w[circuitM2E.symbols["main.out[0]"].varIdx]; + yout = w[circuitM2E.symbols["main.out[1]"].varIdx]; + + assert(Fr.eq(xout, g[0])); + assert(Fr.eq(yout, g[1])); + }); + it("Should double a point", async () => { + let w, xout, yout; + + g2 = babyJub.addPoint(g,g); + + w = await circuitMDouble.calculateWitness({ in: mg}, true); + + xout = w[circuitE2M.symbols["main.out[0]"].varIdx]; + yout = w[circuitE2M.symbols["main.out[1]"].varIdx]; + + mg2 = [xout, yout]; + + w = await circuitM2E.calculateWitness({ in: mg2}, true); + + xout = w[circuitM2E.symbols["main.out[0]"].varIdx]; + yout = w[circuitM2E.symbols["main.out[1]"].varIdx]; + + + assert(Fr.eq(xout, g2[0])); + assert(Fr.eq(yout, g2[1])); + }); + it("Should add a point", async () => { + let w, xout, yout; + + g3 = babyJub.addPoint(g,g2); + + w = await circuitMAdd.calculateWitness({ in1: mg, in2: mg2}, true); + + xout = w[circuitMAdd.symbols["main.out[0]"].varIdx]; + yout = w[circuitMAdd.symbols["main.out[1]"].varIdx]; + + mg3 = [xout, yout]; + + w = await circuitM2E.calculateWitness({ in: mg3}, true); + + xout = w[circuitM2E.symbols["main.out[0]"].varIdx]; + yout = w[circuitM2E.symbols["main.out[1]"].varIdx]; + + assert(Fr.eq(xout, g3[0])); + assert(Fr.eq(yout, g3[1])); + }); +}); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/multiplexer.js b/zkrsa/circom-rsa-verify/circomlib/test/multiplexer.js new file mode 100644 index 000000000..29e2b0337 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/multiplexer.js @@ -0,0 +1,101 @@ +const path = require("path"); +const tester = require("circom").tester; +const F1Field = require("ffjavascript").F1Field; +const Scalar = require("ffjavascript").Scalar; +exports.p = Scalar.fromString("21888242871839275222246405745257275088548364400416034343698204186575808495617"); +const Fr = new F1Field(exports.p); + +describe("Mux4 test", function() { + this.timeout(100000); + it("Should create a constant multiplexer 4", async () => { + + const circuit = await tester(path.join(__dirname, "circuits", "mux4_1.circom")); + + const ct16 = [ + Fr.e("123"), + Fr.e("456"), + Fr.e("789"), + Fr.e("012"), + Fr.e("111"), + Fr.e("222"), + Fr.e("333"), + Fr.e("4546"), + Fr.e("134523"), + Fr.e("44356"), + Fr.e("15623"), + Fr.e("4566"), + Fr.e("1223"), + Fr.e("4546"), + Fr.e("4256"), + Fr.e("4456") + ]; + + for (let i=0; i<16; i++) { + const w = await circuit.calculateWitness({ "selector": i }, true); + + await circuit.checkConstraints(w); + + await circuit.assertOut(w, {out: ct16[i]}); + } + }); + + it("Should create a constant multiplexer 3", async () => { + + const circuit = await tester(path.join(__dirname, "circuits", "mux3_1.circom")); + + const ct8 = [ + Fr.e("37"), + Fr.e("47"), + Fr.e("53"), + Fr.e("71"), + Fr.e("89"), + Fr.e("107"), + Fr.e("163"), + Fr.e("191") + ]; + + for (let i=0; i<8; i++) { + const w = await circuit.calculateWitness({ "selector": i }, true); + + await circuit.checkConstraints(w); + + await circuit.assertOut(w, {out: ct8[i]}); + } + }); + it("Should create a constant multiplexer 2", async () => { + + const circuit = await tester(path.join(__dirname, "circuits", "mux2_1.circom")); + + const ct4 = [ + Fr.e("37"), + Fr.e("47"), + Fr.e("53"), + Fr.e("71"), + ]; + + for (let i=0; i<4; i++) { + const w = await circuit.calculateWitness({ "selector": i }, true); + + await circuit.checkConstraints(w); + + await circuit.assertOut(w, {out: ct4[i]}); + } + }); + it("Should create a constant multiplexer 1", async () => { + + const circuit = await tester(path.join(__dirname, "circuits", "mux1_1.circom")); + + const ct2 = [ + Fr.e("37"), + Fr.e("47"), + ]; + + for (let i=0; i<2; i++) { + const w = await circuit.calculateWitness({ "selector": i }, true); + + await circuit.checkConstraints(w); + + await circuit.assertOut(w, {out: ct2[i]}); + } + }); +}); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/pedersen.js b/zkrsa/circom-rsa-verify/circomlib/test/pedersen.js new file mode 100644 index 000000000..2002edba6 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/pedersen.js @@ -0,0 +1,81 @@ +const chai = require("chai"); +const path = require("path"); + +const F1Field = require("ffjavascript").F1Field; +const Scalar = require("ffjavascript").Scalar; +exports.p = Scalar.fromString("21888242871839275222246405745257275088548364400416034343698204186575808495617"); +const Fr = new F1Field(exports.p); + +const tester = require("circom").tester; + +const babyJub = require("../src/babyjub.js"); + +const PBASE = + [ + [Fr.e("10457101036533406547632367118273992217979173478358440826365724437999023779287"),Fr.e("19824078218392094440610104313265183977899662750282163392862422243483260492317")], + [Fr.e("2671756056509184035029146175565761955751135805354291559563293617232983272177"),Fr.e("2663205510731142763556352975002641716101654201788071096152948830924149045094")], + [Fr.e("5802099305472655231388284418920769829666717045250560929368476121199858275951"),Fr.e("5980429700218124965372158798884772646841287887664001482443826541541529227896")], + [Fr.e("7107336197374528537877327281242680114152313102022415488494307685842428166594"),Fr.e("2857869773864086953506483169737724679646433914307247183624878062391496185654")], + [Fr.e("20265828622013100949498132415626198973119240347465898028410217039057588424236"),Fr.e("1160461593266035632937973507065134938065359936056410650153315956301179689506")] + ]; + +describe("Double Pedersen test", function() { + let circuit; + this.timeout(100000); + before( async() => { + + circuit = await tester(path.join(__dirname, "circuits", "pedersen_test.circom")); + + }); + it("Should pedersen at zero", async () => { + + let w; + + w = await circuit.calculateWitness({ in: ["0", "0"]}, true); + + await circuit.assertOut(w, {out: [0,1]}); + + }); + it("Should pedersen at one first generator", async () => { + let w; + + w = await circuit.calculateWitness({ in: ["1", "0"]}, true); + + await circuit.assertOut(w, {out: PBASE[0]}); + + }); + it("Should pedersen at one second generator", async () => { + let w; + + w = await circuit.calculateWitness({ in: ["0", "1"]}, true); + + await circuit.assertOut(w, {out: PBASE[1]}); + + }); + it("Should pedersen at mixed generators", async () => { + let w; + w = await circuit.calculateWitness({ in: ["3", "7"]}, true); + + const r = babyJub.addPoint( + babyJub.mulPointEscalar(PBASE[0], 3), + babyJub.mulPointEscalar(PBASE[1], 7) + ); + + await circuit.assertOut(w, {out: r}); + + }); + it("Should pedersen all ones", async () => { + let w; + + const allOnes = Fr.sub(Fr.shl(Fr.e("1"), Fr.e(250)), Fr.e("1")); + w = await circuit.calculateWitness({ in: [allOnes, allOnes]}, true); + + + const r2 = babyJub.addPoint( + babyJub.mulPointEscalar(PBASE[0], allOnes), + babyJub.mulPointEscalar(PBASE[1], allOnes) + ); + + await circuit.assertOut(w, {out: r2}); + }); +}); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/pedersen2.js b/zkrsa/circom-rsa-verify/circomlib/test/pedersen2.js new file mode 100644 index 000000000..f017b6b06 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/pedersen2.js @@ -0,0 +1,53 @@ +const path = require("path"); + +const F1Field = require("ffjavascript").F1Field; +const Scalar = require("ffjavascript").Scalar; +exports.p = Scalar.fromString("21888242871839275222246405745257275088548364400416034343698204186575808495617"); +const Fr = new F1Field(exports.p); + +const tester = require("circom").tester; + +const babyJub = require("../src/babyjub.js"); +const pedersen = require("../src/pedersenHash.js"); + + +describe("Pedersen test", function() { + let circuit; + this.timeout(100000); + before( async() => { + + circuit = await tester(path.join(__dirname, "circuits", "pedersen2_test.circom")); + }); + it("Should pedersen at zero", async () => { + + let w; + + w = await circuit.calculateWitness({ in: 0}, true); + + const b = Buffer.alloc(32); + + const h = pedersen.hash(b); + const hP = babyJub.unpackPoint(h); + + await circuit.assertOut(w, {out: hP}); + + }); + it("Should pedersen with 253 ones", async () => { + + let w; + + const n = Fr.sub(Fr.shl(Fr.one, Fr.e(253)), Fr.one); + + w = await circuit.calculateWitness({ in: n}, true); + + const b = Buffer.alloc(32); + for (let i=0; i<31; i++) b[i] = 0xFF; + b[31] = 0x1F; + + const h = pedersen.hash(b); + const hP = babyJub.unpackPoint(h); + + await circuit.assertOut(w, {out: hP}); + + }); +}); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/point2bits.js b/zkrsa/circom-rsa-verify/circomlib/test/point2bits.js new file mode 100644 index 000000000..f0697a181 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/point2bits.js @@ -0,0 +1,23 @@ +const path = require("path"); +const tester = require("circom").tester; + +const babyJub = require("../src/babyjub.js"); + + +describe("Point 2 bits test", function() { + let circuit; + this.timeout(100000); + before( async() => { + circuit = await tester(path.join(__dirname, "circuits", "pointbits_loopback.circom")); + }); + it("Should do the both convertions for 8Base", async () => { + const w = await circuit.calculateWitness({ in: babyJub.Base8}, true); + + await circuit.checkConstraints(w); + }); + it("Should do the both convertions for Zero point", async () => { + const w = await circuit.calculateWitness({ in: [0, 1]}, true); + + await circuit.checkConstraints(w); + }); +}); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/poseidoncircuit.js b/zkrsa/circom-rsa-verify/circomlib/test/poseidoncircuit.js new file mode 100644 index 000000000..ede13b1ba --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/poseidoncircuit.js @@ -0,0 +1,60 @@ +const chai = require("chai"); +const path = require("path"); +const tester = require("circom").tester; + +const poseidon = require("../src/poseidon.js"); + +const assert = chai.assert; + +describe("Poseidon Circuit test", function () { + let circuit6; + let circuit3; + + this.timeout(100000); + + before( async () => { + circuit6 = await tester(path.join(__dirname, "circuits", "poseidon6_test.circom")); + circuit3 = await tester(path.join(__dirname, "circuits", "poseidon3_test.circom")); + }); + + it("Should check constrain of hash([1, 2]) t=6", async () => { + const w = await circuit6.calculateWitness({inputs: [1, 2, 0,0,0]}, true); + + const res2 = poseidon([1,2,0,0,0]); + + assert.equal("1018317224307729531995786483840663576608797660851238720571059489595066344487", res2.toString()); + await circuit6.assertOut(w, {out : res2}); + await circuit6.checkConstraints(w); + }); + + it("Should check constrain of hash([3, 4]) t=6", async () => { + const w = await circuit6.calculateWitness({inputs: [3, 4,5,10,23]}); + + const res2 = poseidon([3, 4,5,10,23]); + + assert.equal("13034429309846638789535561449942021891039729847501137143363028890275222221409", res2.toString()); + await circuit6.assertOut(w, {out : res2}); + await circuit6.checkConstraints(w); + }); + + + it("Should check constrain of hash([1, 2]) t=3", async () => { + const w = await circuit3.calculateWitness({inputs: [1, 2]}); + + const res2 = poseidon([1,2]); + + assert.equal("7853200120776062878684798364095072458815029376092732009249414926327459813530", res2.toString()); + await circuit3.assertOut(w, {out : res2}); + await circuit3.checkConstraints(w); + }); + + it("Should check constrain of hash([3, 4]) t=3", async () => { + const w = await circuit3.calculateWitness({inputs: [3, 4]}); + + const res2 = poseidon([3, 4]); + + assert.equal("14763215145315200506921711489642608356394854266165572616578112107564877678998", res2.toString()); + await circuit3.assertOut(w, {out : res2}); + await circuit3.checkConstraints(w); + }); +}); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/poseidoncontract.js b/zkrsa/circom-rsa-verify/circomlib/test/poseidoncontract.js new file mode 100644 index 000000000..f53638de1 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/poseidoncontract.js @@ -0,0 +1,65 @@ +const ganache = require("ganache-cli"); +const Web3 = require("web3"); +const chai = require("chai"); +const poseidonGenContract = require("../src/poseidon_gencontract.js"); +const poseidon = require("../src/poseidon.js"); + +const assert = chai.assert; +const log = (msg) => { if (process.env.MOCHA_VERBOSE) console.log(msg); }; + +describe("Poseidon Smart contract test", function () { + let testrpc; + let web3; + let poseidon6; + let poseidon3; + let accounts; + this.timeout(100000); + + before(async () => { + web3 = new Web3(ganache.provider(), null, { transactionConfirmationBlocks: 1 }); + accounts = await web3.eth.getAccounts(); + }); + + it("Should deploy the contract", async () => { + const C6 = new web3.eth.Contract(poseidonGenContract.generateABI(5)); + const C3 = new web3.eth.Contract(poseidonGenContract.generateABI(2)); + + poseidon6 = await C6.deploy({ + data: poseidonGenContract.createCode(5) + }).send({ + gas: 5000000, + from: accounts[0] + }); + poseidon3 = await C3.deploy({ + data: poseidonGenContract.createCode(2) + }).send({ + gas: 5000000, + from: accounts[0] + }); + }); + + it("Should calculate the poseidon correctly t=6", async () => { + + const res = await poseidon6.methods.poseidon([1,2, 0, 0, 0]).call(); + + // console.log("Cir: " + bigInt(res.toString(16)).toString(16)); + + const res2 = poseidon([1,2, 0, 0, 0]); + // console.log("Ref: " + bigInt(res2).toString(16)); + + assert.equal(res.toString(), res2.toString()); + }); + it("Should calculate the poseidon correctly t=3", async () => { + + const res = await poseidon3.methods.poseidon([1,2]).call(); + + // console.log("Cir: " + bigInt(res.toString(16)).toString(16)); + + const res2 = poseidon([1,2]); + // console.log("Ref: " + bigInt(res2).toString(16)); + + assert.equal(res.toString(), res2.toString()); + }); + +}); + diff --git a/zkrsa/circom-rsa-verify/circomlib/test/poseidonjs.js b/zkrsa/circom-rsa-verify/circomlib/test/poseidonjs.js new file mode 100644 index 000000000..96e5e65cd --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/poseidonjs.js @@ -0,0 +1,15 @@ +const chai = require("chai"); +const assert = chai.assert; + +const poseidon = require("../src/poseidon.js"); + +describe("Poseidon Circuit test", function () { + it("Should check constrain reference implementation poseidonperm_x5_254_3", async () => { + const res2 = poseidon([1,2]); + assert.equal("115cc0f5e7d690413df64c6b9662e9cf2a3617f2743245519e19607a4417189a", res2.toString(16)); + }); + it("Should check constrain reference implementation poseidonperm_x5_254_5", async () => { + const res2 = poseidon([1,2,3,4]); + assert.equal("299c867db6c1fdd79dcefa40e4510b9837e60ebb1ce0663dbaa525df65250465", res2.toString(16)); + }); +}); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/sha256.js b/zkrsa/circom-rsa-verify/circomlib/test/sha256.js new file mode 100644 index 000000000..2490fd96b --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/sha256.js @@ -0,0 +1,118 @@ +const chai = require("chai"); +const path = require("path"); +const crypto = require("crypto"); +const F1Field = require("ffjavascript").F1Field; +const Scalar = require("ffjavascript").Scalar; +exports.p = Scalar.fromString("21888242871839275222246405745257275088548364400416034343698204186575808495617"); +const Fr = new F1Field(exports.p); + +const assert = chai.assert; + +const sha256 = require("./helpers/sha256"); + +const tester = require("circom").tester; + +// const printSignal = require("./helpers/printsignal"); + + +function buffer2bitArray(b) { + const res = []; + for (let i=0; i> (7-j) &1)); + } + } + return res; +} + +function bitArray2buffer(a) { + const len = Math.floor((a.length -1 )/8)+1; + const b = new Buffer.alloc(len); + + for (let i=0; i { + const b = new Buffer.alloc(64); + for (let i=0; i<64; i++) { + b[i] = i+1; + } + const a = buffer2bitArray(b); + const b2 = bitArray2buffer(a); + + assert.equal(b.toString("hex"), b2.toString("hex"), true); + }); + + it("Should calculate a hash of 1 compressor", async () => { + const cir = await tester(path.join(__dirname, "circuits", "sha256_2_test.circom")); + + const witness = await cir.calculateWitness({ "a": "1", "b": "2" }, true); + + const b = new Buffer.alloc(54); + b[26] = 1; + b[53] = 2; + + const hash = crypto.createHash("sha256") + .update(b) + .digest("hex"); + const r = "0x" + hash.slice(10); + + const hash2 = sha256.hash(b.toString("hex"), {msgFormat: "hex-bytes"}); + + assert.equal(hash, hash2); + + assert(Fr.eq(witness[1], Fr.e(r))); + }).timeout(1000000); + + it("Should calculate a hash of 2 compressor", async () => { + const cir = await tester(path.join(__dirname, "circuits", "sha256_test512.circom")); + + const b = new Buffer.alloc(64); + for (let i=0; i<64; i++) { + b[i] = i+1; + } + + const hash = crypto.createHash("sha256") + .update(b) + .digest("hex"); + + const arrIn = buffer2bitArray(b); + const witness = await cir.calculateWitness({ "in": arrIn }, true); + + const arrOut = witness.slice(1, 257); + const hash2 = bitArray2buffer(arrOut).toString("hex"); + + assert.equal(hash, hash2); + + }).timeout(1000000); + it ("Should calculate a hash of 2 compressor", async () => { + const cir = await tester(path.join(__dirname, "circuits", "sha256_test448.circom")); + + const testStr = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"; + + const b = Buffer.from(testStr, "utf8"); + + const hash = crypto.createHash("sha256") + .update(b) + .digest("hex"); + + const arrIn = buffer2bitArray(b); + + const witness = await cir.calculateWitness({ "in": arrIn }, true); + + const arrOut = witness.slice(1, 257); + const hash2 = bitArray2buffer(arrOut).toString("hex"); + + assert.equal(hash, hash2); + }); + +}); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/sign.js b/zkrsa/circom-rsa-verify/circomlib/test/sign.js new file mode 100644 index 000000000..9bb38a5d9 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/sign.js @@ -0,0 +1,82 @@ +const path = require("path"); +const F1Field = require("ffjavascript").F1Field; +const Scalar = require("ffjavascript").Scalar; +exports.p = Scalar.fromString("21888242871839275222246405745257275088548364400416034343698204186575808495617"); +const Fr = new F1Field(exports.p); +const tester = require("circom").tester; + +function print(circuit, w, s) { + console.log(s + ": " + w[circuit.getSignalIdx(s)]); +} + +function getBits(v, n) { + const res = []; + for (let i=0; i { + circuit = await tester(path.join(__dirname, "circuits", "sign_test.circom")); + }); + + it("Sign of 0", async () => { + const inp = getBits(Scalar.e(0), 254); + const w = await circuit.calculateWitness({in: inp}, true); + + await circuit.assertOut(w, {sign: 0}); + }); + + it("Sign of 3", async () => { + const inp = getBits(Scalar.e(3), 254); + const w = await circuit.calculateWitness({in: inp}, true); + + await circuit.assertOut(w, {sign: 0}); + }); + + it("Sign of q/2", async () => { + const inp = getBits(Scalar.shr(q, 1), 254); + const w = await circuit.calculateWitness({in: inp}, true); + + await circuit.assertOut(w, {sign: 0}); + }); + + it("Sign of q/2+1", async () => { + const inp = getBits(Scalar.add(Scalar.shr(q, 1), 1) , 254); + const w = await circuit.calculateWitness({in: inp}, true); + + await circuit.assertOut(w, {sign: 1}); + }); + + it("Sign of q-1", async () => { + const inp = getBits(Scalar.sub(q, 1), 254); + const w = await circuit.calculateWitness({in: inp}, true); + + await circuit.assertOut(w, {sign: 1}); + }); + + it("Sign of q", async () => { + const inp = getBits(q, 254); + const w = await circuit.calculateWitness({in: inp}, true); + + await circuit.assertOut(w, {sign: 1}); + }); + + it("Sign of all ones", async () => { + const inp = getBits(Scalar.sub(Scalar.shl(1,254),1), 254); + const w = await circuit.calculateWitness({in: inp}, true); + + await circuit.assertOut(w, {sign: 1}); + }); +}); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/smtjs.js b/zkrsa/circom-rsa-verify/circomlib/test/smtjs.js new file mode 100644 index 000000000..ac7655a63 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/smtjs.js @@ -0,0 +1,176 @@ +const chai = require("chai"); + +const F1Field = require("ffjavascript").F1Field; +const Scalar = require("ffjavascript").Scalar; +exports.p = Scalar.fromString("21888242871839275222246405745257275088548364400416034343698204186575808495617"); +const Fr = new F1Field(exports.p); + +const smt = require("../src/smt.js"); + +const assert = chai.assert; + +describe("SMT Javascript test", function () { + this.timeout(100000); + before( async () => { + }); + + it("Should insert 2 elements and empty them", async () => { + const tree = await smt.newMemEmptyTrie(); + const key1 = Fr.e(111); + const value1 = Fr.e(222); + const key2 = Fr.e(333); + const value2 = Fr.e(444); + + await tree.insert(key1,value1); + await tree.insert(key2,value2); + await tree.delete(key2); + await tree.delete(key1); + + assert(Fr.isZero(tree.root)); + }); + + it("Should insert 3 elements in dferent order and should be the same", async () => { + const keys = [Fr.e(8), Fr.e(9), Fr.e(32)]; + const values = [Fr.e(88), Fr.e(99), Fr.e(3232)]; + const tree1 = await smt.newMemEmptyTrie(); + const tree2 = await smt.newMemEmptyTrie(); + const tree3 = await smt.newMemEmptyTrie(); + const tree4 = await smt.newMemEmptyTrie(); + const tree5 = await smt.newMemEmptyTrie(); + const tree6 = await smt.newMemEmptyTrie(); + + await tree1.insert(keys[0],values[0]); + await tree1.insert(keys[1],values[1]); + await tree1.insert(keys[2],values[2]); + + await tree2.insert(keys[0],values[0]); + await tree2.insert(keys[2],values[2]); + await tree2.insert(keys[1],values[1]); + + await tree3.insert(keys[1],values[1]); + await tree3.insert(keys[0],values[0]); + await tree3.insert(keys[2],values[2]); + + await tree4.insert(keys[1],values[1]); + await tree4.insert(keys[2],values[2]); + await tree4.insert(keys[0],values[0]); + + await tree5.insert(keys[2],values[2]); + await tree5.insert(keys[0],values[0]); + await tree5.insert(keys[1],values[1]); + + await tree6.insert(keys[2],values[2]); + await tree6.insert(keys[1],values[1]); + await tree6.insert(keys[0],values[0]); + + assert(Fr.eq(tree1.root, tree2.root)); + assert(Fr.eq(tree2.root, tree3.root)); + assert(Fr.eq(tree3.root, tree4.root)); + assert(Fr.eq(tree4.root, tree5.root)); + assert(Fr.eq(tree5.root, tree6.root)); + + assert.equal(Object.keys(tree1.db.nodes).length, Object.keys(tree2.db.nodes).length); + assert.equal(Object.keys(tree2.db.nodes).length, Object.keys(tree3.db.nodes).length); + assert.equal(Object.keys(tree3.db.nodes).length, Object.keys(tree4.db.nodes).length); + assert.equal(Object.keys(tree4.db.nodes).length, Object.keys(tree5.db.nodes).length); + assert.equal(Object.keys(tree5.db.nodes).length, Object.keys(tree6.db.nodes).length); + + await tree1.delete(keys[0]); + await tree1.delete(keys[1]); + await tree2.delete(keys[1]); + await tree2.delete(keys[0]); + assert(Fr.eq(tree1.root, tree2.root)); + + await tree3.delete(keys[0]); + await tree3.delete(keys[2]); + await tree4.delete(keys[2]); + await tree4.delete(keys[0]); + assert(Fr.eq(tree3.root, tree4.root)); + + await tree5.delete(keys[1]); + await tree5.delete(keys[2]); + await tree6.delete(keys[2]); + await tree6.delete(keys[1]); + assert(Fr.eq(tree5.root, tree6.root)); + + await tree1.delete(keys[2]); + await tree2.delete(keys[2]); + await tree3.delete(keys[1]); + await tree4.delete(keys[1]); + await tree5.delete(keys[0]); + await tree6.delete(keys[0]); + + assert(Fr.isZero(tree1.root)); + assert(Fr.isZero(tree2.root)); + assert(Fr.isZero(tree3.root)); + assert(Fr.isZero(tree4.root)); + assert(Fr.isZero(tree5.root)); + assert(Fr.isZero(tree6.root)); + + assert.equal(Object.keys(tree1.db.nodes).length, 0); + assert.equal(Object.keys(tree2.db.nodes).length, 0); + assert.equal(Object.keys(tree3.db.nodes).length, 0); + assert.equal(Object.keys(tree4.db.nodes).length, 0); + assert.equal(Object.keys(tree5.db.nodes).length, 0); + assert.equal(Object.keys(tree6.db.nodes).length, 0); + }); + + it("Insert and remove 100 numbers randomly", async () => { + function perm(a) { + const arr = a.slice(); + const rArr = []; + for (let i=0; i { + const tree1 = await smt.newMemEmptyTrie(); + const tree2 = await smt.newMemEmptyTrie(); + + await tree1.insert(8,88); + await tree1.insert(9,99,); + await tree1.insert(32,3232); + + await tree2.insert(8,888); + await tree2.insert(9,999); + await tree2.insert(32,323232); + + await tree1.update(8, 888); + await tree1.update(9, 999); + await tree1.update(32, 323232); + + assert(Fr.eq(tree1.root, tree2.root)); + }); + + it("Should test update with same key-value", async () => { + const tree1 = await smt.newMemEmptyTrie(); + + await tree1.insert(8,88); + await tree1.update(8,88); + + const res = await tree1.db.get(tree1.root); + assert.notEqual(res, undefined); + }); +}); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/smtprocessor.js b/zkrsa/circom-rsa-verify/circomlib/test/smtprocessor.js new file mode 100644 index 000000000..541981606 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/smtprocessor.js @@ -0,0 +1,211 @@ +const chai = require("chai"); +const path = require("path"); +const tester = require("circom").tester; +const F1Field = require("ffjavascript").F1Field; +const Scalar = require("ffjavascript").Scalar; +exports.p = Scalar.fromString("21888242871839275222246405745257275088548364400416034343698204186575808495617"); +const Fr = new F1Field(exports.p); + +const smt = require("../src/smt.js"); + +const assert = chai.assert; + +function print(circuit, w, s) { + console.log(s + ": " + w[circuit.getSignalIdx(s)]); +} + +async function testInsert(tree, key, value, circuit ) { + + const res = await tree.insert(key,value); + let siblings = res.siblings; + while (siblings.length<10) siblings.push(Fr.e(0)); + + const w = await circuit.calculateWitness({ + fnc: [1,0], + oldRoot: res.oldRoot, + siblings: siblings, + oldKey: res.isOld0 ? 0 : res.oldKey, + oldValue: res.isOld0 ? 0 : res.oldValue, + isOld0: res.isOld0 ? 1 : 0, + newKey: key, + newValue: value + }, true); + + await circuit.checkConstraints(w); + + await circuit.assertOut(w, {newRoot: res.newRoot}); + +} + +async function testDelete(tree, key, circuit) { + const res = await tree.delete(key); + let siblings = res.siblings; + while (siblings.length<10) siblings.push(Fr.e(0)); + + const w = await circuit.calculateWitness({ + fnc: [1,1], + oldRoot: res.oldRoot, + siblings: siblings, + oldKey: res.isOld0 ? 0 : res.oldKey, + oldValue: res.isOld0 ? 0 : res.oldValue, + isOld0: res.isOld0 ? 1 : 0, + newKey: res.delKey, + newValue: res.delValue + }, true); + + await circuit.checkConstraints(w); + + await circuit.assertOut(w, {newRoot: res.newRoot}); +} + +async function testUpdate(tree, key, newValue, circuit) { + const res = await tree.update(key, newValue); + let siblings = res.siblings; + while (siblings.length<10) siblings.push(Fr.e(0)); + + const w = await circuit.calculateWitness({ + fnc: [0,1], + oldRoot: res.oldRoot, + siblings: siblings, + oldKey: res.oldKey, + oldValue: res.oldValue, + isOld0: 0, + newKey: res.newKey, + newValue: res.newValue + }); + + await circuit.checkConstraints(w); + + await circuit.assertOut(w, {newRoot: res.newRoot}); +} + + +describe("SMT Processor test", function () { + let circuit; + let tree; + + this.timeout(10000000); + + before( async () => { + circuit = await tester(path.join(__dirname, "circuits", "smtprocessor10_test.circom")); + await circuit.loadSymbols(); + + tree = await smt.newMemEmptyTrie(); + }); + + it("Should verify an insert to an empty tree", async () => { + const key = Fr.e(111); + const value = Fr.e(222); + + await testInsert(tree, key, value, circuit); + }); + + it("It should add another element", async () => { + const key = Fr.e(333); + const value = Fr.e(444); + + await testInsert(tree, key, value, circuit); + }); + + it("Should remove an element", async () => { + await testDelete(tree, 111, circuit); + await testDelete(tree, 333, circuit); + }); + + it("Should test convination of adding and removing 3 elements", async () => { + const keys = [Fr.e(8), Fr.e(9), Fr.e(32)]; + const values = [Fr.e(88), Fr.e(99), Fr.e(3232)]; + const tree1 = await smt.newMemEmptyTrie(); + const tree2 = await smt.newMemEmptyTrie(); + const tree3 = await smt.newMemEmptyTrie(); + const tree4 = await smt.newMemEmptyTrie(); + const tree5 = await smt.newMemEmptyTrie(); + const tree6 = await smt.newMemEmptyTrie(); + + await testInsert(tree1,keys[0],values[0], circuit); + await testInsert(tree1,keys[1],values[1], circuit); + await testInsert(tree1,keys[2],values[2], circuit); + + await testInsert(tree2,keys[0],values[0], circuit); + await testInsert(tree2,keys[2],values[2], circuit); + await testInsert(tree2,keys[1],values[1], circuit); + + await testInsert(tree3,keys[1],values[1], circuit); + await testInsert(tree3,keys[0],values[0], circuit); + await testInsert(tree3,keys[2],values[2], circuit); + + await testInsert(tree4,keys[1],values[1], circuit); + await testInsert(tree4,keys[2],values[2], circuit); + await testInsert(tree4,keys[0],values[0], circuit); + + await testInsert(tree5,keys[2],values[2], circuit); + await testInsert(tree5,keys[0],values[0], circuit); + await testInsert(tree5,keys[1],values[1], circuit); + + await testInsert(tree6,keys[2],values[2], circuit); + await testInsert(tree6,keys[1],values[1], circuit); + await testInsert(tree6,keys[0],values[0], circuit); + + + await testDelete(tree1, keys[0], circuit); + await testDelete(tree1, keys[1], circuit); + await testDelete(tree2, keys[1], circuit); + await testDelete(tree2, keys[0], circuit); + + await testDelete(tree3, keys[0], circuit); + await testDelete(tree3, keys[2], circuit); + await testDelete(tree4, keys[2], circuit); + await testDelete(tree4, keys[0], circuit); + + + await testDelete(tree5, keys[1], circuit); + await testDelete(tree5, keys[2], circuit); + await testDelete(tree6, keys[2], circuit); + await testDelete(tree6, keys[1], circuit); + + await testDelete(tree1, keys[2], circuit); + await testDelete(tree2, keys[2], circuit); + await testDelete(tree3, keys[1], circuit); + await testDelete(tree4, keys[1], circuit); + await testDelete(tree5, keys[0], circuit); + await testDelete(tree6, keys[0], circuit); + }); + + it("Should match a NOp with random vals", async () => { + let siblings = []; + while (siblings.length<10) siblings.push(Fr.e(88)); + const w = await circuit.calculateWitness({ + fnc: [0,0], + oldRoot: 11, + siblings: siblings, + oldKey: 33, + oldValue: 44, + isOld0: 55, + newKey: 66, + newValue: 77 + }); + + const root1 = w[circuit.symbols["main.oldRoot"].varIdx]; + const root2 = w[circuit.symbols["main.newRoot"].varIdx]; + + await circuit.checkConstraints(w); + + assert(Fr.eq(root1, root2)); + }); + it("Should update an element", async () => { + const tree1 = await smt.newMemEmptyTrie(); + const tree2 = await smt.newMemEmptyTrie(); + + await testInsert(tree1,8,88, circuit); + await testInsert(tree1,9,99, circuit); + await testInsert(tree1,32,3232, circuit); + + await testInsert(tree2,8,888, circuit); + await testInsert(tree2,9,999, circuit); + await testInsert(tree2,32,323232, circuit); + + await testUpdate(tree1, 8, 888, circuit); + await testUpdate(tree1, 9, 999, circuit); + await testUpdate(tree1, 32, 323232, circuit); + }); +}); diff --git a/zkrsa/circom-rsa-verify/circomlib/test/smtverifier.js b/zkrsa/circom-rsa-verify/circomlib/test/smtverifier.js new file mode 100644 index 000000000..4b27e9a0c --- /dev/null +++ b/zkrsa/circom-rsa-verify/circomlib/test/smtverifier.js @@ -0,0 +1,139 @@ +const chai = require("chai"); +const path = require("path"); +const F1Field = require("ffjavascript").F1Field; +const Scalar = require("ffjavascript").Scalar; +exports.p = Scalar.fromString("21888242871839275222246405745257275088548364400416034343698204186575808495617"); +const Fr = new F1Field(exports.p); +const tester = require("circom").tester; + +const smt = require("../src/smt.js"); + +const assert = chai.assert; + +function print(circuit, w, s) { + console.log(s + ": " + w[circuit.getSignalIdx(s)]); +} + +async function testInclusion(tree, key, circuit) { + + const res = await tree.find(key); + + assert(res.found); + let siblings = res.siblings; + while (siblings.length<10) siblings.push(Fr.e(0)); + + const w = await circuit.calculateWitness({ + enabled: 1, + fnc: 0, + root: tree.root, + siblings: siblings, + oldKey: 0, + oldValue: 0, + isOld0: 0, + key: key, + value: res.foundValue + }, true); + + await circuit.checkConstraints(w); + +} + +async function testExclusion(tree, key, circuit) { + const res = await tree.find(key); + + assert(!res.found); + let siblings = res.siblings; + while (siblings.length<10) siblings.push(Fr.e(0)); + + const w = await circuit.calculateWitness({ + enabled: 1, + fnc: 1, + root: tree.root, + siblings: siblings, + oldKey: res.isOld0 ? 0 : res.notFoundKey, + oldValue: res.isOld0 ? 0 : res.notFoundValue, + isOld0: res.isOld0 ? 1 : 0, + key: key, + value: 0 + }); + + await circuit.checkConstraints(w); + +} + +describe("SMT Verifier test", function () { + let circuit; + let tree; + + this.timeout(100000); + + before( async () => { + circuit = await tester(path.join(__dirname, "circuits", "smtverifier10_test.circom")); + + tree = await smt.newMemEmptyTrie(); + await tree.insert(7,77); + await tree.insert(8,88); + await tree.insert(32,3232); + }); + + it("Check inclussion in a tree of 3", async () => { + await testInclusion(tree, 7, circuit); + await testInclusion(tree, 8, circuit); + await testInclusion(tree, 32, circuit); + }); + + it("Check exclussion in a tree of 3", async () => { + await testExclusion(tree, 0, circuit); + await testExclusion(tree, 6, circuit); + await testExclusion(tree, 9, circuit); + await testExclusion(tree, 33, circuit); + await testExclusion(tree, 31, circuit); + await testExclusion(tree, 16, circuit); + await testExclusion(tree, 64, circuit); + }); + + it("Check not enabled accepts any thing", async () => { + let siblings = []; + for (let i=0; i<10; i++) siblings.push(i); + + const w = await circuit.calculateWitness({ + enabled: 0, + fnc: 0, + root: 1, + siblings: siblings, + oldKey: 22, + oldValue: 33, + isOld0: 0, + key: 44, + value: 0 + }); + + + await circuit.checkConstraints(w); + }); + + it("Check inclussion Adria case", async () => { + const e1_hi= Fr.e("17124152697573569611556136390143205198134245887034837071647643529178599000839"); + const e1_hv= Fr.e("19650379996168153643111744440707177573540245771926102415571667548153444658179"); + + const e2ok_hi= Fr.e("16498254692537945203721083102154618658340563351558973077349594629411025251262"); + const e2ok_hv= Fr.e("19650379996168153643111744440707177573540245771926102415571667548153444658179"); + + const e2fail_hi= Fr.e("17195092312975762537892237130737365903429674363577646686847513978084990105579"); + const e2fail_hv= Fr.e("19650379996168153643111744440707177573540245771926102415571667548153444658179"); + + const tree1 = await smt.newMemEmptyTrie(); + await tree1.insert(e1_hi,e1_hv); + await tree1.insert(e2ok_hi,e2ok_hv); + + await testInclusion(tree1, e2ok_hi, circuit); + + const tree2 = await smt.newMemEmptyTrie(); + await tree2.insert(e1_hi,e1_hv); + await tree2.insert(e2fail_hi,e2fail_hv); + + await testInclusion(tree2, e2fail_hi, circuit); + }); + + +}); diff --git a/zkrsa/circom-rsa-verify/circuits/pow_mod.circom b/zkrsa/circom-rsa-verify/circuits/pow_mod.circom new file mode 100644 index 000000000..d71a98305 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circuits/pow_mod.circom @@ -0,0 +1,69 @@ +include "../circom-bigint/circomlib/circuits/bitify.circom" +include "../circom-bigint/circuits/mult.circom" +// w = 32 +// base ** exp mod modulus +// nb is the length of the input number +// exp = 65537 +template PowerModv2(w, nb, e_bits) { + signal input base[nb]; + signal input exp[nb]; + signal input modulus[nb]; + + signal output out[nb]; + + + component muls[e_bits + 2]; + for (var i = 0; i < e_bits + 2; i++) { + muls[i] = MultiplierReducer(w, nb); + // modulus params + for (var j = 0; j < nb; j++) { + muls[i].modulus[j] <== modulus[j]; + } + } + + // result/base muls component index + var result_index=0; + var base_index=0; + var muls_index=0; + for (var i = 0; i< e_bits; i++) { + if (i == 0 || i == e_bits - 1) { + if (i == 0) { + for(var j = 0; j < nb; j ++) { + if (j == 0) { + muls[muls_index].a[j] <== 1; + } else { + muls[muls_index].a[j] <== 0; + } + muls[muls_index].b[j] <== base[j]; + } + } else { + for(var j = 0; j < nb; j++) { + muls[muls_index].a[j] <== muls[result_index].prod[j]; + muls[muls_index].b[j] <== muls[base_index].prod[j]; + } + } + result_index = muls_index; + muls_index++; + } + + if (base_index == 0) { + for (var j = 0; j < nb; j++) { + muls[muls_index].a[j] <== base[j]; + muls[muls_index].b[j] <== base[j]; + } + } else { + for (var j = 0; j < nb; j++) { + muls[muls_index].a[j] <== muls[base_index].prod[j]; + muls[muls_index].b[j] <== muls[base_index].prod[j]; + } + } + base_index = muls_index; + muls_index++; + } + + for (var i = 0; i < nb; i++) { + out[i] <== muls[result_index].prod[i]; + } +} + + diff --git a/zkrsa/circom-rsa-verify/circuits/rsa_sha1_verify.circom b/zkrsa/circom-rsa-verify/circuits/rsa_sha1_verify.circom new file mode 100644 index 000000000..185a8f89e --- /dev/null +++ b/zkrsa/circom-rsa-verify/circuits/rsa_sha1_verify.circom @@ -0,0 +1,53 @@ +include "./pow_mod.circom"; +include "../circom-bigint/circomlib/circuits/bitify.circom"; + +// Pkcs1v15 + Sha1, exp 65537 +template RsaSha1VerifyPkcs1v15(w, nb, e_bits, hashLen) { + // w: 32, nb: 64, e_bits: 17, hashLen: 5 + signal input exp[nb]; + signal input sign[nb]; + signal input modulus[nb]; + signal input hashed[hashLen]; + + // sign ** exp mod modulus + component pm = PowerModv2(w, nb, e_bits); + for (var i = 0; i < nb; i++) { + pm.base[i] <== sign[i]; + pm.exp[i] <== exp[i]; + pm.modulus[i] <== modulus[i]; + } + + // 1. Check hashed data + // SHA1: 32 * 5 = 160 bits. the first 5 numbers + for (var i = 0; i < hashLen; i++) { + hashed[i] === pm.out[i]; + } + + // 2. Check hash prefix for sha1 and 1 byte 0x00: + // Prefix: (0x)30 21 30 09 06 05 2b 0e 03 02 1a 05 00 04 14 + // 32 bits words split + pm.out[5] === 83887124; // 05 00 04 14 + pm.out[6] === 235078170; // 0e 03 02 1a + pm.out[7] === 151389483; // 09 06 05 2b + pm.out[8] === 3154224; // 30 21 30 + + // 3. Check (0x00 required by RFC) || (00 bits padding from 32 bit word) + component num2bits = Num2Bits(w); + num2bits.in <== pm.out[8]; + var remainsBits[32] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0]; + for (var i = 0; i < 32; i++) { + num2bits.out[i] === remainsBits[31 - i]; + } + + // 4. Check PS + // em = 256 bytes, tLen = 35 + // ps_length = 256 - 35 - 3 = 218 bytes = 1744 bits = ⌊54.5⌋ * 32 bits words + // ps value for 32 bits words is 0xFFFFFFFF == 4294967295 + for (var i = 9; i < 63; i++) { + pm.out[i] === 4294967295; + } + + // 5. Remains 16 bits (0xffff) from PS and 0x00 0x01 + // Hence: 0x0001FFFF == 131071 + pm.out[63] === 131071; +} diff --git a/zkrsa/circom-rsa-verify/circuits/rsa_verify.circom b/zkrsa/circom-rsa-verify/circuits/rsa_verify.circom new file mode 100644 index 000000000..f732a2769 --- /dev/null +++ b/zkrsa/circom-rsa-verify/circuits/rsa_verify.circom @@ -0,0 +1,51 @@ +include "./pow_mod.circom"; +include "../circom-bigint/circomlib/circuits/bitify.circom"; + +// Pkcs1v15 + Sha256 +// exp 65537 +template RsaVerifyPkcs1v15(w, nb, e_bits, hashLen) { + signal input exp[nb]; + signal input sign[nb]; + signal input modulus[nb]; + + signal input hashed[hashLen]; + + // sign ** exp mod modulus + component pm = PowerModv2(w, nb, e_bits); + for (var i = 0; i < nb; i++) { + pm.base[i] <== sign[i]; + pm.exp[i] <== exp[i]; + pm.modulus[i] <== modulus[i]; + } + + // 1. Check hashed data + // 64 * 4 = 256 bit. the first 4 numbers + for (var i = 0; i < hashLen; i++) { + hashed[i] === pm.out[i]; + } + + // 2. Check hash prefix and 1 byte 0x00 + // sha256/152 bit + // 0b00110000001100010011000000001101000001100000100101100000100001100100100000000001011001010000001100000100000000100000000100000101000000000000010000100000 + pm.out[4] === 217300885422736416; + pm.out[5] === 938447882527703397; + // // remain 24 bit + component num2bits_6 = Num2Bits(w); + num2bits_6.in <== pm.out[6]; + var remainsBits[32] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0]; + for (var i = 0; i < 32; i++) { + num2bits_6.out[i] === remainsBits[31 - i]; + } + + // 3. Check PS and em[1] = 1. the same code like golang std lib rsa.VerifyPKCS1v15 + for (var i = 32; i < w; i++) { + num2bits_6.out[i] === 1; + } + + for (var i = 7; i < 31; i++) { + // 0b1111111111111111111111111111111111111111111111111111111111111111 + pm.out[i] === 18446744073709551615; + } + // 0b1111111111111111111111111111111111111111111111111 + pm.out[31] === 562949953421311; +} diff --git a/zkrsa/circom-rsa-verify/contracts/README.md b/zkrsa/circom-rsa-verify/contracts/README.md new file mode 100644 index 000000000..663164550 --- /dev/null +++ b/zkrsa/circom-rsa-verify/contracts/README.md @@ -0,0 +1,15 @@ +## rsa-verify contract + +This submodule contains the Ethereum contract and tests case for rsa-verify. + + +### Running test cases + +Before running test cases. some sofeware needs to be pre-installed +* [ganache-cli](https://github.com/trufflesuite/ganache-cli) +* [docker](https://www.docker.com/products/docker-desktop) +* [truffle](https://www.trufflesuite.com/docs/truffle/getting-started/installation) +``` +$ sh run-ganache.sh # run ganache client in local +$ truffle test +``` diff --git a/zkrsa/circom-rsa-verify/contracts/contracts/RsaSha1Verifier.sol b/zkrsa/circom-rsa-verify/contracts/contracts/RsaSha1Verifier.sol new file mode 100644 index 000000000..a88128238 --- /dev/null +++ b/zkrsa/circom-rsa-verify/contracts/contracts/RsaSha1Verifier.sol @@ -0,0 +1,421 @@ +// +// Copyright 2017 Christian Reitwiessner +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +// 2019 OKIMS +// ported to solidity 0.5 +// fixed linter warnings +// added requiere error messages +// +pragma solidity ^0.5.0; +library Pairing { + struct G1Point { + uint X; + uint Y; + } + // Encoding of field elements is: X[0] * z + X[1] + struct G2Point { + uint[2] X; + uint[2] Y; + } + /// @return the generator of G1 + function P1() internal pure returns (G1Point memory) { + return G1Point(1, 2); + } + /// @return the generator of G2 + function P2() internal pure returns (G2Point memory) { + // Original code point + return G2Point( + [11559732032986387107991004021392285783925812861821192530917403151452391805634, + 10857046999023057135944570762232829481370756359578518086990519993285655852781], + [4082367875863433681332203403145435568316851327593401208105741076214120093531, + 8495653923123431417604973247489272438418190587263600148770280649306958101930] + ); + +/* + // Changed by Jordi point + return G2Point( + [10857046999023057135944570762232829481370756359578518086990519993285655852781, + 11559732032986387107991004021392285783925812861821192530917403151452391805634], + [8495653923123431417604973247489272438418190587263600148770280649306958101930, + 4082367875863433681332203403145435568316851327593401208105741076214120093531] + ); +*/ + } + /// @return the negation of p, i.e. p.addition(p.negate()) should be zero. + function negate(G1Point memory p) internal pure returns (G1Point memory) { + // The prime q in the base field F_q for G1 + uint q = 21888242871839275222246405745257275088696311157297823662689037894645226208583; + if (p.X == 0 && p.Y == 0) + return G1Point(0, 0); + return G1Point(p.X, q - (p.Y % q)); + } + /// @return the sum of two points of G1 + function addition(G1Point memory p1, G1Point memory p2) internal view returns (G1Point memory r) { + uint[4] memory input; + input[0] = p1.X; + input[1] = p1.Y; + input[2] = p2.X; + input[3] = p2.Y; + bool success; + // solium-disable-next-line security/no-inline-assembly + assembly { + success := staticcall(sub(gas, 2000), 6, input, 0xc0, r, 0x60) + // Use "invalid" to make gas estimation work + switch success case 0 { invalid() } + } + require(success,"pairing-add-failed"); + } + /// @return the product of a point on G1 and a scalar, i.e. + /// p == p.scalar_mul(1) and p.addition(p) == p.scalar_mul(2) for all points p. + function scalar_mul(G1Point memory p, uint s) internal view returns (G1Point memory r) { + uint[3] memory input; + input[0] = p.X; + input[1] = p.Y; + input[2] = s; + bool success; + // solium-disable-next-line security/no-inline-assembly + assembly { + success := staticcall(sub(gas, 2000), 7, input, 0x80, r, 0x60) + // Use "invalid" to make gas estimation work + switch success case 0 { invalid() } + } + require (success,"pairing-mul-failed"); + } + /// @return the result of computing the pairing check + /// e(p1[0], p2[0]) * .... * e(p1[n], p2[n]) == 1 + /// For example pairing([P1(), P1().negate()], [P2(), P2()]) should + /// return true. + function pairing(G1Point[] memory p1, G2Point[] memory p2) internal view returns (bool) { + require(p1.length == p2.length,"pairing-lengths-failed"); + uint elements = p1.length; + uint inputSize = elements * 6; + uint[] memory input = new uint[](inputSize); + for (uint i = 0; i < elements; i++) + { + input[i * 6 + 0] = p1[i].X; + input[i * 6 + 1] = p1[i].Y; + input[i * 6 + 2] = p2[i].X[0]; + input[i * 6 + 3] = p2[i].X[1]; + input[i * 6 + 4] = p2[i].Y[0]; + input[i * 6 + 5] = p2[i].Y[1]; + } + uint[1] memory out; + bool success; + // solium-disable-next-line security/no-inline-assembly + assembly { + success := staticcall(sub(gas, 2000), 8, add(input, 0x20), mul(inputSize, 0x20), out, 0x20) + // Use "invalid" to make gas estimation work + switch success case 0 { invalid() } + } + require(success,"pairing-opcode-failed"); + return out[0] != 0; + } + /// Convenience method for a pairing check for two pairs. + function pairingProd2(G1Point memory a1, G2Point memory a2, G1Point memory b1, G2Point memory b2) internal view returns (bool) { + G1Point[] memory p1 = new G1Point[](2); + G2Point[] memory p2 = new G2Point[](2); + p1[0] = a1; + p1[1] = b1; + p2[0] = a2; + p2[1] = b2; + return pairing(p1, p2); + } + /// Convenience method for a pairing check for three pairs. + function pairingProd3( + G1Point memory a1, G2Point memory a2, + G1Point memory b1, G2Point memory b2, + G1Point memory c1, G2Point memory c2 + ) internal view returns (bool) { + G1Point[] memory p1 = new G1Point[](3); + G2Point[] memory p2 = new G2Point[](3); + p1[0] = a1; + p1[1] = b1; + p1[2] = c1; + p2[0] = a2; + p2[1] = b2; + p2[2] = c2; + return pairing(p1, p2); + } + /// Convenience method for a pairing check for four pairs. + function pairingProd4( + G1Point memory a1, G2Point memory a2, + G1Point memory b1, G2Point memory b2, + G1Point memory c1, G2Point memory c2, + G1Point memory d1, G2Point memory d2 + ) internal view returns (bool) { + G1Point[] memory p1 = new G1Point[](4); + G2Point[] memory p2 = new G2Point[](4); + p1[0] = a1; + p1[1] = b1; + p1[2] = c1; + p1[3] = d1; + p2[0] = a2; + p2[1] = b2; + p2[2] = c2; + p2[3] = d2; + return pairing(p1, p2); + } +} +contract Verifier { + using Pairing for *; + struct VerifyingKey { + Pairing.G1Point alfa1; + Pairing.G2Point beta2; + Pairing.G2Point gamma2; + Pairing.G2Point delta2; + Pairing.G1Point[] IC; + } + struct Proof { + Pairing.G1Point A; + Pairing.G2Point B; + Pairing.G1Point C; + } + function verifyingKey() internal pure returns (VerifyingKey memory vk) { + vk.alfa1 = Pairing.G1Point(14178884684974583355080722729983381633125932625350740406695737171069118499878,15402669894982326070498589264712293467805276054927659096039459426970026621268); + vk.beta2 = Pairing.G2Point([11783115430318376848721973854148598119516778537122230693511935536569567689964,2437237211966528494203785904188637167435340807929132621793887207100574050702], [19030982323732769826255918094477827935046824254816079421894985778337242130527,2579446356640349044594078996296492626409328979083142177375913275855800313495]); + vk.gamma2 = Pairing.G2Point([15201584073605516458027638239322792924770565944046836271665885020025994708889,10954815603849423353424141411094826829201498452016024851636459644774085600872], [14405433732337753057696257995549491804805146023099831647281318177649531213054,1655426456305095300099359620653433669268466321201695374669868978928667402045]); + vk.delta2 = Pairing.G2Point([1976968580578032300784532288825036509388949804300373922020284116008236527771,4743879747330150491479040320040757137646699087610992998535097464878856636887], [16469964863964192323947423286423488684834262306617043746870844134242228005477,1665757649600634678138093669615071373626018955684823339594053090299291613855]); + vk.IC = new Pairing.G1Point[](198); + vk.IC[0] = Pairing.G1Point(7949816934067791968332462957273998361902784074529050012316816165891748058448,4057168966206681672017718048445695789663691940161121165670332646193094262049); + vk.IC[1] = Pairing.G1Point(9276395593732531596255056021988070811463142100362953900049775121745172250035,4762682588959485260836311500398967279150700465224508796048712259398561918909); + vk.IC[2] = Pairing.G1Point(8039387810261901298003686899572453433549052360808799560886377606692205909658,20738495963728037475341128097296502478485011342222295217249757376155488583007); + vk.IC[3] = Pairing.G1Point(965952910585029658057700173009840220723199777311415711952492959310824737722,9325005144326486296722116040451575931532701130491799657386184269726249163764); + vk.IC[4] = Pairing.G1Point(9598257433321189048664637375718685814050892383974985214242111364050112590389,21172212843859767216763762362930039388863869431977092792152448588580296082164); + vk.IC[5] = Pairing.G1Point(5842321348064722176779255819514269096193879284637857468832487649673780791549,7511458018339186250411193323481040136393420761859871748638960177410396897073); + vk.IC[6] = Pairing.G1Point(6104819087904437275840212874327126320946277258594640608852446924865728475784,12334147507511864006430149015360158143317036006264596159308657510648591116129); + vk.IC[7] = Pairing.G1Point(1062276374117766979165520009521840349777411270904399268129558687895190447633,16488269641826737211711630163850195317056822294171297324029485313130139506404); + vk.IC[8] = Pairing.G1Point(14778777477324204772499914717307059944530239001363434801276973223156527998546,10846180385584061252134888124838933277660569861640311751634842863582972193334); + vk.IC[9] = Pairing.G1Point(72504108194228341053358792260038913847370754762779347907607130636558036617,20582541616656457355145264971870011799641352689448014586917146363233026695904); + vk.IC[10] = Pairing.G1Point(4189384714193124474414659387179073380986109137902053240055017997013256911397,21359999414660739453402517129303224175745306459876299489010427091538282720837); + vk.IC[11] = Pairing.G1Point(5175155370594511352007290004809789026668970123749987607702562200924408446360,16860279565596763537894095297889172796863889771022243299114374321300772082176); + vk.IC[12] = Pairing.G1Point(10383285029540279066774945122045712137360177091981280629576449359874278320203,6245238679388021384131237452924264391168198005954727780039886236159211680920); + vk.IC[13] = Pairing.G1Point(5230264144513160170360875600250154158476858030438623331125070570746207352455,19330962032308906279517505858566950754851869523619375938490731189879388370950); + vk.IC[14] = Pairing.G1Point(10373507262458336677779213185798204540897959916938379460897156828144138250560,7242278246216537628089897476868127798902719347565184028110932614824130544773); + vk.IC[15] = Pairing.G1Point(19835722849944842624330690184947530376054637821585711005553793218822224658231,21261482810418912649580565554991725183791677533582506988341115456755524166585); + vk.IC[16] = Pairing.G1Point(20582411243433488563387137064291048990301757708649663190089740666931128099863,15693279323903983176890155489944219977341453053904226955076091004794629001274); + vk.IC[17] = Pairing.G1Point(18873219213658292592613206984743894254941270566968124057585352054726315677173,2516270047514646959994940530733099926541938944780939431684118295483333545100); + vk.IC[18] = Pairing.G1Point(19891217694338582356903696147937491630131639144452333991174339667138100010768,13431872514393760989165963964413825998696207302821745300729034564721280164045); + vk.IC[19] = Pairing.G1Point(29671545849434419200396980543205652141878048341459373257945194761089510744,18897640007362833076121600415410549933337573801871321136800132250025044093536); + vk.IC[20] = Pairing.G1Point(3279204755870530440946256819309240671072693496273712032623970698924374740502,21069288593073352249983077255896447221116644381940527553122982992684057759430); + vk.IC[21] = Pairing.G1Point(981660428626722856516176002536158599189553152740440950059253434484247183317,6329547999451502494821823445863485525401019907164031796820977461804600242010); + vk.IC[22] = Pairing.G1Point(20758200915455232377229088875208449906202245942271012571750729113133341021662,15481514470919126724346212777045809189396810887857262869935076824535668871095); + vk.IC[23] = Pairing.G1Point(10037673252670182062006589622159920815674394201187958711343916287287426695684,8206203392040991339535889854469897700084216310605484555173587570162322436158); + vk.IC[24] = Pairing.G1Point(6621650419194892507429844103445210787568823986709573727060075596362127851030,2549430025236685213959893730788082864345414130212483398070209175448358513811); + vk.IC[25] = Pairing.G1Point(8345772966695390426098272387935233507078395396346139369040052069526287757691,7624785403093911805793402936638169333175164228830305487701670650220324538653); + vk.IC[26] = Pairing.G1Point(16434065582770223982485414562956727906557595859570586142071687924297227588830,4860202840034028202603286826817288138642000727635079220973031502769454640276); + vk.IC[27] = Pairing.G1Point(1255374283599303788357216946135951711663290423946796533622513055272614358322,168512201902809418100405807316703827906255890034715833512071029160335354728); + vk.IC[28] = Pairing.G1Point(2396719302685587835627058892719570328944106665106046231025023404204163643499,5919259413737148618031951546834487259045683507815395054731907741351567731017); + vk.IC[29] = Pairing.G1Point(9495723854604563749898445206334212173751188541078072983215957642788083399365,6079074304083663842495173247734747984560141202767003179887404251994578463699); + vk.IC[30] = Pairing.G1Point(1769713431724455228584818636302828876531677067100100672455710712663559984582,8841674206119192237339638398544689403298127734941796399348804059352879828646); + vk.IC[31] = Pairing.G1Point(12111023730340567385250561548163941817019877574584476592816843992034359531916,10393147547493195216617207392909888818409765942798456917732283171407818554029); + vk.IC[32] = Pairing.G1Point(8767126759761011979693470740340908653464427009931029473372704916231058871457,2112287573283964202793566403718516000770563181171104582844248360955049281500); + vk.IC[33] = Pairing.G1Point(17459277195598628195048904921890727273989010660404360016885193531656414822713,21128009241861496817897777235959719541302027988640350335126676185568088859947); + vk.IC[34] = Pairing.G1Point(16599872548856328939834605267333623207663189116104072693664671505165489963826,18305538493584284191847622486925675328799483822083109542808989176576181328072); + vk.IC[35] = Pairing.G1Point(21303248880768044223567519151986560474273190743906109701467130240815880193641,19722340407344070492962755878595147351027767851564045741615171064463324491976); + vk.IC[36] = Pairing.G1Point(598181244192462081483327202176292082282101292512672112504510559969005341839,14873640432940611508617597545323734359578813200470722956327820917633813194387); + vk.IC[37] = Pairing.G1Point(5928166341751750125052162591809270768094093399666549632350201391666449280518,2244442033209752083756971988010918536907292345488256972812475362070647059427); + vk.IC[38] = Pairing.G1Point(3353865666695875517573564727844178037376256400415200519024163846614547173310,14244974202592972362298820854075301228423245552880298683334780069183604020026); + vk.IC[39] = Pairing.G1Point(10355924272295771892611371159373578574423624701167134100171356443807728172305,12638410498544725823408079431532835642264165638277883424694250646631672865307); + vk.IC[40] = Pairing.G1Point(17713676661789108131581672106308031296687960225959032487317556070528105567973,3719220846161128862755396478981732443784781814116398722760996574756737598139); + vk.IC[41] = Pairing.G1Point(21139215005355434467581285157832435125123204238407548758862969465928863277368,17860557218262007246564738032854486964164276429478838270483415282095418504250); + vk.IC[42] = Pairing.G1Point(8024544055993069934163830309739586325998953120281523940713038716054312962291,4839698274972319108214525602052634790450675913310848337893380902137287779228); + vk.IC[43] = Pairing.G1Point(1746096676487052903562365331550364445849272386292792676618792782577937116309,4636144700383744079547342337236907423930896873160945246592244778119059891154); + vk.IC[44] = Pairing.G1Point(14942341083363718008573132190747464535304000191299403235971133259150379719955,20868933269103107619452377509904026134052217785490436326405590152827872597080); + vk.IC[45] = Pairing.G1Point(10622263157591032019126185655733132936127802275485286624655855037750995279830,3734144102328283928406639036932520953700885690041327257427620607324349828144); + vk.IC[46] = Pairing.G1Point(17213695684880432638770373413108138735298557131221669196354936693645051715896,15777435843646148419388275536516064018081705327612822382084858920453337765109); + vk.IC[47] = Pairing.G1Point(15734688392371534552116326840131914283964950328978981914103704268765643635105,3500704611722732138185291338966180192827629189026319847843968912283072684247); + vk.IC[48] = Pairing.G1Point(19949669656865901864000689921638143429406686099966459816271855292286333184535,3426709667014531107869887361996497416599610944572352067626456919557247063676); + vk.IC[49] = Pairing.G1Point(9579430843330182390271104185361436312700586468482547918876953105145819234120,1917183932915856832735622954541212658060321055996058989912136613154426741824); + vk.IC[50] = Pairing.G1Point(17493634430207161658270366941076073120633044353145179861138933098254936463853,2400618283687984424512954549042500597364824503393090861471877558355606126167); + vk.IC[51] = Pairing.G1Point(1971339124313905159387967250797028201949276456265985703756853621055123096690,5293682785210909627159021633721861632356312943810460409361633735890538750835); + vk.IC[52] = Pairing.G1Point(14606662092213705475724025512807548393916192347007185141556587096617783878078,531481387475043364519853812935197636782474817229768909033457083939195482188); + vk.IC[53] = Pairing.G1Point(18176160654688536984945894581437358414394819855347651181053202595906604547377,8557558171556008954026822659839397763768677039284085981401732099912735467020); + vk.IC[54] = Pairing.G1Point(4564531107035377663917098058943772279570914841198171458703505944830796073212,7566980652194203270971706120524980968133342517477479543352562152180121994856); + vk.IC[55] = Pairing.G1Point(11807169765423844310223204882067706842124342268470314228690258826460481636536,4119990402561477755846267380015265034442029074155952825889579850220056229531); + vk.IC[56] = Pairing.G1Point(18927400651591849141317604304740123703207831274178578514086951972362029937153,10937805852771289083454661810762174646427365426358924476735535415493662185817); + vk.IC[57] = Pairing.G1Point(6183299320115300680194428567010124978404809127125684874823905568737067643046,13457899505757570526634125878086856682892577012586004911949578917097031254408); + vk.IC[58] = Pairing.G1Point(20142408497549328825981132000923622369636196369792369687739571891003924823796,20925866419420796254815750981621025869772386893357751091632509987645639321646); + vk.IC[59] = Pairing.G1Point(17697852616004691872175851843106941734360345697209821184403797022756807502624,14972948103496822313352808180256631963383354485009044438885443283496499258014); + vk.IC[60] = Pairing.G1Point(329382886161851007373454895388801318558466396558146451368326423703145163532,16016538263181468377590841215663679674574071431338318431526282778202226294251); + vk.IC[61] = Pairing.G1Point(8120221757568790809212201189325481135711851088352096710690258774440300366908,14674476636284739300036510633978874885474282139841290259189973134558604281048); + vk.IC[62] = Pairing.G1Point(5945795714406206510674324118868048121148846510486430663981899783766028174973,8828978015027228448782977668509906084765121845343236976266767552108111832864); + vk.IC[63] = Pairing.G1Point(1210913086788866148433360373797508645408315392131742627031513696236029298407,5746792868696664901338422772551775552260660287749729068406233309256282123909); + vk.IC[64] = Pairing.G1Point(10984242069333932254041059847074947916202731891491570436988173207502857059164,2976697968235939263178164023473957713230814908571237229280796357989294757454); + vk.IC[65] = Pairing.G1Point(19793029529066742079126681348376698923672315028193218739956839164057069400213,18444802461060086125163852412151005849787869742208185666985998911101300259722); + vk.IC[66] = Pairing.G1Point(9077480699451292832966852648303832857994225622072075915810495081416140609127,18482507264626776348193846993358491978538567369124859702835835658566186078095); + vk.IC[67] = Pairing.G1Point(18403387064999751374639082588687631766171109326938803760709837392953485949834,6182917975604158560891987503620049962404206576266002201448293531821806840873); + vk.IC[68] = Pairing.G1Point(9424423688017368250382418463119572662353146878506174377706899312766356633688,8520194817521833910640225909241393802050685324094125159553395405874883558688); + vk.IC[69] = Pairing.G1Point(14978792905832985041481373346205161708223091743177809580698129172613748946080,17194136973012541313413187643557762423296046334675673104487807022831411491759); + vk.IC[70] = Pairing.G1Point(5376946736007893001220070585747093238311247892332905098516156549162246428222,4225708242619273527201737670358597963237614132302717758959068728613970815450); + vk.IC[71] = Pairing.G1Point(7052449243385053209796306033260723755659308060282786230863038567499849599357,15843766414187324587082405863648130554489055905291220405011215713837697299294); + vk.IC[72] = Pairing.G1Point(10720709548449889558103879413463410026969731834761640717691687458126843872131,20319996333654107812579469344279230518416764516803934946931858174756552378716); + vk.IC[73] = Pairing.G1Point(14808637037181373471176954987199272565809591219215031667427465430053878966358,10530333503393922694781618375298987349363085941999602881243142757341064115959); + vk.IC[74] = Pairing.G1Point(11753525537447001542724375088647833884644845593941864641439855961061694066589,21505502427760529186445617001953994294745612765179865796615107355766303639269); + vk.IC[75] = Pairing.G1Point(1865670688264592030655949455809681078296719326138801080344062327223964714180,16746666122248106168261703073262269979908684034096922988774761313871013857032); + vk.IC[76] = Pairing.G1Point(5059574083244171888545303066636678055351072508426394581314796142286738749549,13144952546706364963622950886345946977101409476453253166974701036265064560217); + vk.IC[77] = Pairing.G1Point(9547758546148387971896171092153124006294233847331597367976754352615123125135,18360903900920385797992107200125983958765732257841239711740037883119848060512); + vk.IC[78] = Pairing.G1Point(6470278206103184243903620860378202382451098931764876207714622873931099789706,872699729149024629119447834554298839778365497792898497121515884088546499857); + vk.IC[79] = Pairing.G1Point(3534657794505129214982438732166141523643271339179006511573318068150000228269,1173804246015114496150818042111114421524078898368286067318525529993951330174); + vk.IC[80] = Pairing.G1Point(5840343952110868065516888929046951468835974197765282585719279616987014732422,6562095333610131407635154517155207450437910267891054012798658061132391206298); + vk.IC[81] = Pairing.G1Point(4042213872825967050183223044425433542221120419890084655602007348230280272401,1074261432306889405733636637199407091380947442506562303928086076864410676693); + vk.IC[82] = Pairing.G1Point(21876106526276647907426249446183132887790081062567719923622725719214474483006,19953799253946033675110426399385436235532828195487524788889583817121048470338); + vk.IC[83] = Pairing.G1Point(19683309850054272303809998792789548749310417347735332107992940681851429339276,9276463659190393725804012089061363265477770668409926636822353818621782108995); + vk.IC[84] = Pairing.G1Point(5896371273693913746952234805354520481967477906306702173076179287781047904350,4050696724181782699285903093871364174693000999869005603114044786217765373783); + vk.IC[85] = Pairing.G1Point(8604960375781884324965495318752697099016271378811649282531713381667998548001,11044047169220072157152629776107394713429462641776851765447513148375965631696); + vk.IC[86] = Pairing.G1Point(8951921901898741174129491743088075866663217505490916290777895874076987136992,8842339797303693624454977005978155069030542175895975082177648618303757021493); + vk.IC[87] = Pairing.G1Point(339206758931797883072058243782877662123890217111563335064752731465807574593,16705862793562095745469636112598951441558903885037281347417449797194431941372); + vk.IC[88] = Pairing.G1Point(2505868434073142761239832379744888072736909127680552597284726844656384753118,6287221410123180826349720965268511645115596160361853868732199183536532123917); + vk.IC[89] = Pairing.G1Point(17630567255611865748748166768347647009630743809141985097105814141877956429720,12168745320204375448840350297855692437281481183409621388339452755170530428282); + vk.IC[90] = Pairing.G1Point(10559209280767887247358810636190397179117327326648404605347457720990402755668,7402842950851181361970164289191708023193005203425859905745792044438011837230); + vk.IC[91] = Pairing.G1Point(2631551181152057881816409592391227287813281026483942203134812195475283165347,2590835390202883088838255829331385755152937904886710128704367319259619430110); + vk.IC[92] = Pairing.G1Point(19131141690875580174566066295836493770389444473164407862576480912832695687062,13005610103326176652127975084391747272629033641558873869616996768958167890589); + vk.IC[93] = Pairing.G1Point(4312783557860042559130042740073418954930036038534376069489152871662033403795,6526519528586340360789252196975922322351152209820431248502326882978032633838); + vk.IC[94] = Pairing.G1Point(19791155663642322374023362372861303370799941419902104318864902200751604941215,20284421423945529773768771951176503838311107206637578464676959900261519339381); + vk.IC[95] = Pairing.G1Point(21091386377380986551267451269160866671173827131693877551464683179391132395394,20872773687435957990287827660608518790136291713839886588556740956823221120280); + vk.IC[96] = Pairing.G1Point(19034434995835303621317483209210918406494914369171061898433440846336960582589,20868705001626075458152953545129624673866909445577288008106851187485944352844); + vk.IC[97] = Pairing.G1Point(3907267783471687286727554308537589972561166168827359979744311098547612171197,16373097736455522907165951857476394257976329230059976719499305576691462142131); + vk.IC[98] = Pairing.G1Point(5101725916782316811122569602439564192621363661342305936499959003558008457598,3985686158320851956848955150625351409268349270207113033301725174801401074404); + vk.IC[99] = Pairing.G1Point(5550230075618153441081702394866020777049346880135302183274284216716794795006,14957429605190598847144249752697525157475604683332976167032006976279281979136); + vk.IC[100] = Pairing.G1Point(20178371439696377333466708401305754044848161546965103218976883471077532620764,16372989883870739602783421640846595221482232480780087292766107835840365402224); + vk.IC[101] = Pairing.G1Point(10178869459066702666106805712786486966792283141046335583312524731722067837152,14873402549837962891261022684726859880472157863406294017596742390639983989191); + vk.IC[102] = Pairing.G1Point(19395389248160338350373943160918455241812418647719384189237960633326217202905,10633113489306251080202005066597013224353288068227458035727162521106689519668); + vk.IC[103] = Pairing.G1Point(9150030275887412627358031505019915694302369335833901421646364957464619745352,6922978192096526098962311318688964493432569128976823712994331695118481752577); + vk.IC[104] = Pairing.G1Point(11913173921095141831576637696648817515755525468452776795872247801603355824162,8707199836873309199588522424379452321803437468574862063337617099456714425915); + vk.IC[105] = Pairing.G1Point(8151660554850047679779597317864791731113343757739731704403373134770742387653,15078896164449120616426044858041918531407837354059494317702597857283793757779); + vk.IC[106] = Pairing.G1Point(16929071638918986610382800572809492540791732060000716524112412727536200749127,21283314103817754187637240361231596982713903087691091103061278481246669894234); + vk.IC[107] = Pairing.G1Point(6343559596404706467173581087775991720223740057659761059036501826624684142028,10938162970226299397803657064659687525512535694156936637905788461694821692399); + vk.IC[108] = Pairing.G1Point(14459283080800810176690928676973023485561031988516805435732570460889915236491,4415173244512783659755094463274270026021468359835021494407833686890587846522); + vk.IC[109] = Pairing.G1Point(4945966254512002220391153836795372337883776472864966017320685803665393156578,90744025095637792248158359680812331372815002321488242924247999102825442145); + vk.IC[110] = Pairing.G1Point(12595298446155279355932659372412930570474040875040308226113092117117365901598,21790502336990829138945683391020400890160538193871116832235927450545532755844); + vk.IC[111] = Pairing.G1Point(4343796203639356768715030305431759020642857119016372644304746498937959785707,18939350772545882726482877085843955074444473290578870103717675833709678370965); + vk.IC[112] = Pairing.G1Point(767431438311513135403090585399578396099118063642266405668726927012758525489,232656053681086286948540723414247316002137260592640368225480935409478445545); + vk.IC[113] = Pairing.G1Point(9812776807306808269434290399148976877523318720436189269429535618615621056514,9725257252880436407053257075173027906923838083636482102711699760367537419178); + vk.IC[114] = Pairing.G1Point(18049191722581039815668865284570986507917631456771432099438888573736990707469,9599716274171067743042533996679168934972461579657863000533443894733565247392); + vk.IC[115] = Pairing.G1Point(10962558451888740090489331507039668658811228791492374688726635881996741619552,15787468769543054362627080352604662227491352542137628386710438091213999399400); + vk.IC[116] = Pairing.G1Point(12495940261801401562183014051251751534036150974429744470702965161880645924185,13571596447059929041085522675183518325864032997664545321152671384412974497431); + vk.IC[117] = Pairing.G1Point(15882867772584428025828519329840994192750578047406124629758708076669795703208,17984501065578291392320556886840125831722952434633060086014803873485098264175); + vk.IC[118] = Pairing.G1Point(16124813862588383147812117522309268490644277946965679484220855657438614531915,18734915309852441677178095149916227463655096339116757990384184440696594402385); + vk.IC[119] = Pairing.G1Point(3358104002317670169623897364329792777696007000175549558956071184612792181485,16435093808977001649341575365205387567227590558998682705289759331483734801683); + vk.IC[120] = Pairing.G1Point(4339990791039829484842281910243747232192377252132130559593390320956586845409,16655618491568936735493280910696008160572597813084361451208099230746348098433); + vk.IC[121] = Pairing.G1Point(12199891288944055053834120451890198866732055498039237383260775781479793768036,3404623137646115244380950425186316834199946658142690925676982988640986736752); + vk.IC[122] = Pairing.G1Point(16063889908437020106933745435326697477188717836492659943125167162730332385179,9786184709811447930040254601074567155253304564058046083139518022646010972238); + vk.IC[123] = Pairing.G1Point(4421812438771743559174275651994860046279360947841567815934900709553921688375,14610150498464869740286730779067458544139343372278677406952260215199371642949); + vk.IC[124] = Pairing.G1Point(21100432892893002112714068638667673482898330331848938774112438418394575730617,10533628178522832555057359829966148063154166081418194280810256065042873757633); + vk.IC[125] = Pairing.G1Point(32296901833333164945776156837253832712380996655706613311075285742600990208,4558450943153632476400247709120220272774874280393663236473710255338542402807); + vk.IC[126] = Pairing.G1Point(19841211134697366359527564324268480762830400929588896859368930080125395576863,12538001086218102885749418227051795152559570218230741578677813165507879963263); + vk.IC[127] = Pairing.G1Point(1495891079566879539673230021396878406508327362974411273656692000430448072845,16213218985526752810941911042898873952133811336944077949272391965525752602397); + vk.IC[128] = Pairing.G1Point(12517774328598760156299300901298459753990734892493112291937314276148709656228,11887011404867965229315810962903475157549307046254956215793584187804358399949); + vk.IC[129] = Pairing.G1Point(616404099982168012795742736162928898604128867224373711205941665354749035008,20019762485799860573359706296808874383706140982845424837898376496546828808885); + vk.IC[130] = Pairing.G1Point(2250050652410680871929716372997765003195380099388654554049767715889279969392,21176400535095573195178399642421500526110517267200295358232018561475739807267); + vk.IC[131] = Pairing.G1Point(3721885708066971746553679483040037254263013193337578637651648900364536437379,12184887395594789300199325031522368680563531665595960771196615314007789161663); + vk.IC[132] = Pairing.G1Point(4934886010437775442714817811391666563406664499984104700256181057283573105853,2761441735670789102965618295731648526755458276912079237659660074985853180502); + vk.IC[133] = Pairing.G1Point(17868682815311518648555849249748212942747015940595829514121455368960619992718,9613361629544248178855151162831844815851989434024117440123361511992074693152); + vk.IC[134] = Pairing.G1Point(14106127079911210694299322905889506586979276240237469533227315954282255514882,19139457979438404965235135029083112237836850264412105406430122559341390257269); + vk.IC[135] = Pairing.G1Point(7924336100476540127115717941938838564588496592164015084570172795826788459283,13396709826074323484886404913939228515970092245720581538310453108286959690255); + vk.IC[136] = Pairing.G1Point(5449983332789721036173175796349431676745078874571425268368062070180709279870,16986232179125037084671804292027255541906912189839647181413063394727403763141); + vk.IC[137] = Pairing.G1Point(10242063739314399019662919441353332361985619839030598605473063795150519710869,2016738674987977932663607004352180603806827785416348231418536503044626967445); + vk.IC[138] = Pairing.G1Point(21512611634419144876862062972846530952233741579426338105808707214708891985895,4768465242460750028181221873275538497875701576399058718482331192149255220404); + vk.IC[139] = Pairing.G1Point(3405373176217599090907281007441133693736331544392797392928921760274047406791,2051019589575213912122741758628135016040319469680956802217992779848674788582); + vk.IC[140] = Pairing.G1Point(3649424859097318241178489077083614477246608848704836965684889353533252731910,2528707939152385868319746490688601699597306609444473690884780238884199783808); + vk.IC[141] = Pairing.G1Point(19123346118653873225168326016686155429191800721017145754772774337120478263639,16014369757036442589978092011607436052078274419381112747773608992934906652896); + vk.IC[142] = Pairing.G1Point(16987809935707926073480903226659010559769842972885778497068104928523260556204,3951009386563911709076947871390995294153546140646204418340163643798037459942); + vk.IC[143] = Pairing.G1Point(11003984403276581095194837858992978628564207083164780488891368372040046326966,20422184428957555308126063381811822361507698082970863567393340139115408503530); + vk.IC[144] = Pairing.G1Point(3937823971992926655533893904909592033087244245644720096056257461140925076796,14831638297544147461157736406938214012830345342337811292212481217812674729655); + vk.IC[145] = Pairing.G1Point(17334397313701459628223803590949302357588802066287815597956458544161265535117,96013504516564917263053311465291899021131712815223401980940752602525820453); + vk.IC[146] = Pairing.G1Point(5646614692902711809635512341753250114751859900767203747547547231757476213615,4405337475867176762930202206247459362938576203025213201460880460908872178593); + vk.IC[147] = Pairing.G1Point(15150023111389389335586044362677154922402247236006403027754177068507877811485,12273959441116139181263719193871969059808757051731454629389359765199386590642); + vk.IC[148] = Pairing.G1Point(20049685502873987678611711100687843661149937811135282613037058740653782159008,5971830863419751278659219925521906643381225613934490857548121882606747464848); + vk.IC[149] = Pairing.G1Point(10852362060028296798881662577315410606878961775009755012619226073601804106312,2022229371599322757368425415673261331001449748567392036235866494262164545025); + vk.IC[150] = Pairing.G1Point(13628254790414695418525855016280288004286853955998878526329772017184936758545,10708350447184049227747042444307370583632090905874967399963024756174577177784); + vk.IC[151] = Pairing.G1Point(10508598462519587256693956480249801397064420336312341540220151277224723709942,2669953204515266069656438394618653036924325869877838930021405555540666830905); + vk.IC[152] = Pairing.G1Point(10234557227248358666882534335712138299652874851731085905782916772851686660130,9581439533584622559511961230368234043962746100342573416323819330396605199033); + vk.IC[153] = Pairing.G1Point(13834458541107114081922540885049434249531442841997058242932268156520603052903,9095277735590089341821645582667052225424018496516458350427038845319599543092); + vk.IC[154] = Pairing.G1Point(16094799962656918789989847247001971761457502904753649818842551277221207790480,18543183682165867021534389327199648536078020948424128464322902520783484615817); + vk.IC[155] = Pairing.G1Point(19982528434379475046158149438049797140942067252764219498549564439884143403397,14127221871453838824781638804913810701469273926139862947550305846474100333793); + vk.IC[156] = Pairing.G1Point(2240831908522799619578515109455586535298748949496571662338463390866820720919,2718761093885329720525578296004268501939276333838806348145093199864876189065); + vk.IC[157] = Pairing.G1Point(16741268977061279879278514406934507486849267431532199142779092593797060775518,434981239926327617265344373893555932800160385721961735293458811066770490324); + vk.IC[158] = Pairing.G1Point(2994295736441321213745421890156000199167627721923111796447826161031358750288,7865134977295195122443610267244670779561249953899012849281992478912399484662); + vk.IC[159] = Pairing.G1Point(10830567358082064864879831663204716409716652495115373344224190649463370321237,5835068658808025919524676671707025365800562192045497195523602618694082907957); + vk.IC[160] = Pairing.G1Point(21192694964106950680276761688292610888822585447949736538266972619532353352489,18847211039595837339124982560201604069222070769688301647004515919812235887645); + vk.IC[161] = Pairing.G1Point(18104847774906102148913798896918929419000963982759542611099463167609069279572,8179644381731279631826856528647046784396510051824829102058309184012993586727); + vk.IC[162] = Pairing.G1Point(4369689154123104131093274228385180967802752534621414973827468379527513794093,1935065798079471883184889934170691525268915066807350803304669712034073294205); + vk.IC[163] = Pairing.G1Point(11905930417594207100376302387876935188872606992341037549440064721993279301454,10222520529253199475304667229287500012325111392773127828249822693786888928856); + vk.IC[164] = Pairing.G1Point(13814443391823763931708493216106356064330540002532509763573162526945605408380,9967969163949507094093589853502854546632736866764477303970494021172942092235); + vk.IC[165] = Pairing.G1Point(12442707786705760339497436642344222847639990611806215593508079494210589323966,2461159711399903480525805791589961174606946488741363297969173999182256055746); + vk.IC[166] = Pairing.G1Point(16894742926318360222692554465279556345264293165264504561833407658167593495091,4173724509333659609963972668390398582364342502911455666779672395669564716278); + vk.IC[167] = Pairing.G1Point(12549889974061047904439099825078196182080713007194537837129696294307753043056,3196644946257016957451234168954389892077772914634007900251846370141749458621); + vk.IC[168] = Pairing.G1Point(6971356408146426928449881178825682279732386822038958606084650911738000095714,10215928035762111632138225583718709821814124736512926457876417170955925940882); + vk.IC[169] = Pairing.G1Point(2197183414367620097033721692736479436487213644142488965313965297684958095862,4333461034893826144800666656704428029625971474538955098829472343338000952044); + vk.IC[170] = Pairing.G1Point(15065425777628429861180922811632275495192977235237164308356465669475145936399,5960712129215955639614149919075793715990766542334832502148992629391678888181); + vk.IC[171] = Pairing.G1Point(2391028025973580121927973656196618130045024064074967312994492525631350344194,1149064269779665938950880467470936709078164437548174928814322569925027550735); + vk.IC[172] = Pairing.G1Point(19904138570337935061262366000196057681346886201819255241565318772473139125347,5190926780804301491254501427733021978853283778054683625635710909056912016044); + vk.IC[173] = Pairing.G1Point(13331900225622532696227750816656513622209891991198247501057136853328071355672,2097618832879429557111774529946457265517135409882086449397472764104159268631); + vk.IC[174] = Pairing.G1Point(7925738093556172079190310387753270723854496481907306709195170704797217863684,113272580987340385819176759465619171795943270695837612581947667076326846264); + vk.IC[175] = Pairing.G1Point(16006943187332637849667691704650865668900667410974608074415130583375969379577,12628482488954540458550109683494629682308825862588497357255399757664934743092); + vk.IC[176] = Pairing.G1Point(2094910144590524206878759657901746490813270624331714067264839541275668906804,11711383911295768742182594960753430787999069217015804130022038661970813589002); + vk.IC[177] = Pairing.G1Point(16400444180446117078617197227896418648308777457596940555002318822245616583689,11543345814996479784165897491174726408168911564134329187858019212305184943681); + vk.IC[178] = Pairing.G1Point(7417692997056306083783338307166978003298168756317112144098737308706690093822,19775567782229560481449405385720765241385929484971828401418896076802357643765); + vk.IC[179] = Pairing.G1Point(15941435223394415590371765415829231853457790615228310265548341084598471575675,2478815176428709834249498777866811756005595243029627302303951974532249180879); + vk.IC[180] = Pairing.G1Point(15517242582490159853540562610802920176984686515767568714829121997963816018564,13110442179342447148788112847565072315836444036482307479344678557635022240031); + vk.IC[181] = Pairing.G1Point(1711912599749786500101635961358424389035390233512678279968270662868407850856,17069596768448409007801766023775387702666951539455987033730558153593847778169); + vk.IC[182] = Pairing.G1Point(9808645794539769429424680110260213799399998205580657685982283772592177356571,17538902394743442177118957772931022741746648754852551803843746501899491414975); + vk.IC[183] = Pairing.G1Point(5296805288671941436574131916515922938071181653115503812866478979593326964651,15878135987652190304273527852882098691722323154562103391563441044723101300477); + vk.IC[184] = Pairing.G1Point(11585385791212604255642608905744743642796067267000916378122559439104438022948,16469785446819718356325544217970537800334711579382272881322238877550159657024); + vk.IC[185] = Pairing.G1Point(15389769524917271739195091185664520148066586590781145045476961342298717404822,20030258897535319983670423129694605416728231652067780830582708752109246216064); + vk.IC[186] = Pairing.G1Point(10030389370312141939608509760845320480182662908071748014408496888392230141271,8623226855978899737183683746888446490512634222898937191704605185195600109553); + vk.IC[187] = Pairing.G1Point(17539719929453140796461144944694340971881476791622611300162657253141941454064,10483666092725065865544844590613974493428492423426826217523803697480405018235); + vk.IC[188] = Pairing.G1Point(2301132229783903463781922555586026233812263683307898529229569687813866383766,6158097530366855122608029399526866452305231001748034658758336793655700409669); + vk.IC[189] = Pairing.G1Point(17451255749368388960508063668001943708345960257401887321803362106679661478390,21789080641618002437397513791429407895460807632933944033254051777617060120216); + vk.IC[190] = Pairing.G1Point(175410527419641899164495315910887672474717534119690816143545368700598216839,18654074074642306534810506315004662936348292536442017461197178991723362145199); + vk.IC[191] = Pairing.G1Point(9677101543795306170334556602380511931059820989396570561277017439265753521044,18640747906248309627253580237085654934474191806970580369309214002695152726685); + vk.IC[192] = Pairing.G1Point(7596378232316105570360588932837039992514163209659108750010737580870401516976,19267676827799097040384864691704830811503093602238888970796719979314683336565); + vk.IC[193] = Pairing.G1Point(17452972015139480453166612606778664138249814592431079429885664290994652326470,7914926203563438595444343067824680635157377735842385032476208626545431059291); + vk.IC[194] = Pairing.G1Point(6007037518841962674840164973695727373267187600215668583062281899414148483891,8336876917895582064571748739535229867645685955412109939127953248023578146146); + vk.IC[195] = Pairing.G1Point(19307661037717784584629921055918735839494456711315188120227257381403080713458,21039333202774175396231635751671234924986935188726515482180013581212046723272); + vk.IC[196] = Pairing.G1Point(20874193010441636889465222423537159531526453239657951709578042071742867827728,10698068446797929258255604384482689794319333586704512635571150665396532209819); + vk.IC[197] = Pairing.G1Point(16042637409886295600060485737273560971687603472394128959033747645439852320172,9676954242650934999646896473498400837548635136895033196846680609802452136352); + + } + function verify(uint[] memory input, Proof memory proof) internal view returns (uint) { + uint256 snark_scalar_field = 21888242871839275222246405745257275088548364400416034343698204186575808495617; + VerifyingKey memory vk = verifyingKey(); + require(input.length + 1 == vk.IC.length,"verifier-bad-input"); + // Compute the linear combination vk_x + Pairing.G1Point memory vk_x = Pairing.G1Point(0, 0); + for (uint i = 0; i < input.length; i++) { + require(input[i] < snark_scalar_field,"verifier-gte-snark-scalar-field"); + vk_x = Pairing.addition(vk_x, Pairing.scalar_mul(vk.IC[i + 1], input[i])); + } + vk_x = Pairing.addition(vk_x, vk.IC[0]); + if (!Pairing.pairingProd4( + Pairing.negate(proof.A), proof.B, + vk.alfa1, vk.beta2, + vk_x, vk.gamma2, + proof.C, vk.delta2 + )) return 1; + return 0; + } + function verifyProof( + uint[2] memory a, + uint[2][2] memory b, + uint[2] memory c, + uint[197] memory input + ) public view returns (bool r) { + Proof memory proof; + proof.A = Pairing.G1Point(a[0], a[1]); + proof.B = Pairing.G2Point([b[0][0], b[0][1]], [b[1][0], b[1][1]]); + proof.C = Pairing.G1Point(c[0], c[1]); + uint[] memory inputValues = new uint[](input.length); + for(uint i = 0; i < input.length; i++){ + inputValues[i] = input[i]; + } + if (verify(inputValues, proof) == 0) { + return true; + } else { + return false; + } + } +} diff --git a/zkrsa/circom-rsa-verify/contracts/contracts/RsaVerify.sol b/zkrsa/circom-rsa-verify/contracts/contracts/RsaVerify.sol new file mode 100644 index 000000000..068ef9cbf --- /dev/null +++ b/zkrsa/circom-rsa-verify/contracts/contracts/RsaVerify.sol @@ -0,0 +1,154 @@ +pragma solidity 0.5.1; + +library RsaVerify { + function memcpy( + uint256 _dest, + uint256 _src, + uint256 _len + ) internal pure { + // Copy word-length chunks while possible + for (; _len >= 32; _len -= 32) { + assembly { + mstore(_dest, mload(_src)) + } + _dest += 32; + _src += 32; + } + + // Copy remaining bytes + uint256 mask = 256**(32 - _len) - 1; + assembly { + let srcpart := and(mload(_src), not(mask)) + let destpart := and(mload(_dest), mask) + mstore(_dest, or(destpart, srcpart)) + } + } + + function join( + bytes memory _s, + bytes memory _e, + bytes memory _m + ) internal pure returns (bytes memory) { + uint256 inputLen = 0x60 + _s.length + _e.length + _m.length; + + uint256 slen = _s.length; + uint256 elen = _e.length; + uint256 mlen = _m.length; + uint256 sptr; + uint256 eptr; + uint256 mptr; + uint256 inputPtr; + + bytes memory input = new bytes(inputLen); + assembly { + sptr := add(_s, 0x20) + eptr := add(_e, 0x20) + mptr := add(_m, 0x20) + mstore(add(input, 0x20), slen) + mstore(add(input, 0x40), elen) + mstore(add(input, 0x60), mlen) + inputPtr := add(input, 0x20) + } + memcpy(inputPtr + 0x60, sptr, _s.length); + memcpy(inputPtr + 0x60 + _s.length, eptr, _e.length); + memcpy(inputPtr + 0x60 + _s.length + _e.length, mptr, _m.length); + + return input; + } + + /** @dev Verifies a PKCSv1.5 SHA256 signature + * @param _data is the sign of the data + * @param _s is the signature + * @param _e is the exponent + * @param _n is the public key modulus + * @return 0 if success, >0 otherwise + */ + function VerifyPKCS1v15( + bytes memory _data, + bytes memory _s, + bytes memory _e, + bytes memory _n + ) public view returns (uint256) { + bytes32 _sha256 = sha256(_data); + uint8[19] memory sha256HashPrefix = [ + 0x30, + 0x31, + 0x30, + 0x0d, + 0x06, + 0x09, + 0x60, + 0x86, + 0x48, + 0x01, + 0x65, + 0x03, + 0x04, + 0x02, + 0x01, + 0x05, + 0x00, + 0x04, + 0x20 + ]; + uint256 sha256HashLen = 32; + + uint256 tLen = sha256HashPrefix.length + _sha256.length; + uint256 k = _n.length; + // invalid input params length + if (k < tLen + 11) { + return 1; + } + + uint256 i; + + bytes memory input = join(_s, _e, _n); + uint256 inputLen = input.length; + // EM = 0x00 || 0x01 || PS || 0x00 || T + uint256 emLen = _n.length; + bytes memory em = new bytes(emLen); + + assembly { + pop( + staticcall( + sub(gas(), 2000), + 5, + add(input, 0x20), + inputLen, + add(em, 0x20), + emLen + ) + ) + } + + // EM = 0x00 || 0x01 || PS || 0x00 || T + if (em[0] != 0 || uint8(em[1]) != 1) { + return 1; + } + // Check hashed data + for (i = 0; i < sha256HashLen; i++) { + if ((em[k - sha256HashLen + i]) != _sha256[i]) { + return 2; + } + } + // Check sha256Hash prefix + for (i = 0; i < sha256HashPrefix.length; i++) { + // return k - tLen + i; + if (uint8(em[k - tLen + i]) != sha256HashPrefix[i]) { + return 3; + } + } + // Check 4 byte is 0x00 + if (em[k - tLen - 1] != 0) { + return 4; + } + // padding + for (i = 2; i < k - tLen - 1; i++) { + if (em[i] != 0xff) { + return 5; + } + } + + return 0; + } +} diff --git a/zkrsa/circom-rsa-verify/contracts/migrations/1_initial_rsa_verify.js b/zkrsa/circom-rsa-verify/contracts/migrations/1_initial_rsa_verify.js new file mode 100644 index 000000000..2549ba5fe --- /dev/null +++ b/zkrsa/circom-rsa-verify/contracts/migrations/1_initial_rsa_verify.js @@ -0,0 +1,12 @@ +const RsaVerify = artifacts.require("RsaVerify"); + +async function doDeploy(deployer) { + await deployer.deploy(RsaVerify); +} + + +module.exports = (deployer) => { + deployer.then(async () => { + await doDeploy(deployer); + }); +}; diff --git a/zkrsa/circom-rsa-verify/contracts/run-ganache.sh b/zkrsa/circom-rsa-verify/contracts/run-ganache.sh new file mode 100644 index 000000000..c461ba94f --- /dev/null +++ b/zkrsa/circom-rsa-verify/contracts/run-ganache.sh @@ -0,0 +1,2 @@ +#!/bin/sh +npx ganache-cli --networkId=1 diff --git a/zkrsa/circom-rsa-verify/contracts/test/Test_SigVer15_186-3.js b/zkrsa/circom-rsa-verify/contracts/test/Test_SigVer15_186-3.js new file mode 100644 index 000000000..b7a4eb283 --- /dev/null +++ b/zkrsa/circom-rsa-verify/contracts/test/Test_SigVer15_186-3.js @@ -0,0 +1,51 @@ +const RsaVerify = artifacts.require("../contracts/RsaVerify.sol"); + +/* +Test case from +https://csrc.nist.gov/CSRC/media/Projects/Cryptographic-Algorithm-Validation-Program/documents/dss/186-2rsatestvectors.zip +SigVer15_186-3.rsp +*/ + +contract("RsaVerify-pkcs1v15", accounts => { + let v + + beforeEach(async () => { + v = await RsaVerify.new(); + }); + + // private key N + const n = "0xa8d68acd413c5e195d5ef04e1b4faaf242365cb450196755e92e1215ba59802aafbadbf2564dd550956abb54f8b1c917844e5f36195d1088c600e07cada5c080ede679f50b3de32cf4026e514542495c54b1903768791aae9e36f082cd38e941ada89baecada61ab0dd37ad536bcb0a0946271594836e92ab5517301d45176b5" + + + it ("Inorrect sign. Message changed", async ()=> { + const data = "0xff23e00f819bae424e41d6b762ea6b88801e651c831c964af31de0c1d6dda4a7c8587d804ed12f526819da06650e7412fb627555979ed442f2663341e5fe57527e0ddaf453a124451674976a6a6e0a31f56a79f5b73dfac39af4f3ba4a5e8bb846cb5e333812756482d975ab1910162f96bfd7c58a02f113125189f5ac05291f"; + const s = "0x10ecd0085694f8db6ea62dab2f239d8a93fcf449102f1368c67de329d79692b677500f55994c9722e2633063fc7d8c2c50ae8857d45c08bfaba9448dda0689c2a08605d47a7694beaacbdad1a954458a87fd78b6519393013b20996d636b755323b4b2b2b6d06a46c9221cd200462428ab5bef0f9743e144191f6928562627a7"; + const e = "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003"; + + assert.equal((await v.VerifyPKCS1v15(data, s, e, n)).toNumber(), 2); + }); + + it ("Inorrect sign. Signature changed", async ()=> { + const data = "0x9edf5246ae1d8fe800bc2ed422e6441cedde94c85a870277972a4b4a5a74f4fd76be8057ac92e6c5c36a4242dabacb79fe31052ef83c38da68cd2095185ae6398a284fc5d3c934fface4325ec734a2265fd3cbd513b957bef47f04f4dd699c6903a42757cccc5fdfe5b264f18f5bb16b394c4f855404486c63cb5f2d51aafed5"; + const s = "0x488d328861653ab0a769a11a158ec7b479b62db5b253eda899beae580afb9a7c762030262b8a066f085185475e17870700504d3f78fcc4bcb95a3c1648796a323613a7b706cb64b048c68c06b396aac20b52f22f3fdce40992fb9a5ef68b5725134d83035a6f091d01aa5947175885822b2d4618c3f3fdbfd8819847fe40112b"; + const e = "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003"; + + assert.equal((await v.VerifyPKCS1v15(data, s, e, n)).toNumber(), 1); + }); + + it ("Inorrect sign. Public Key e changed", async ()=> { + const data = "0x9edf5246ae1d8fe800bc2ed422e6441cedde94c85a870277972a4b4a5a74f4fd76be8057ac92e6c5c36a4242dabacb79fe31052ef83c38da68cd2095185ae6398a284fc5d3c934fface4325ec734a2265fd3cbd513b957bef47f04f4dd699c6903a42757cccc5fdfe5b264f18f5bb16b394c4f855404486c63cb5f2d51aafed5"; + const s = "0x7c547b350710337c783e7406935fb8ac7bcd1cdd4a7bcaeb63422067d1239f9f59fc29b51993a29d6ac8dcc7980871bbba1be8f0b6ce951a9e0cad64b37d7d0c3734e038efcd4e3499c8855f7c52ea3323ba4876ba9d78a98e7e5cf72b4b7444228dd0d81283e59055873450b8bc411d1cb970efda5cf5947a1d1f17e92a4639"; + const e = "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011"; + + assert.equal((await v.VerifyPKCS1v15(data, s, e, n)).toNumber(), 1); + }); + + it ("Correct sign. Pass", async ()=> { + const data = "0xd73829497cddbe41b705faac50e7899fdb5a38bf3a459e536357029e64f8796ba47f4fe96ba5a8b9a4396746e2164f55a25368ddd0b9a5188c7ac3da2d1f742286c3bdee697f9d546a25efcfe53191d743fcc6b47833d993d08804daeca78fb9076c3c017f53e33a90305af06220974d46bf19ed3c9b84edbae98b45a8771258"; + const s = "0x0b20e5093c2a926233108afbdd851b88eeb554f4beaa7b18e51519f7d0ec53b181a3b03e8484ba8de2aa7864a402e2208e84ec9914af9d776ed13c48bdeb6484254de169318a87c40f2265ff16714eae8aee2bc9c3cb4dee045e4f5d9d625210121bfcf2bed8d3ffa602ce27fff4e61cf9bb650e71a6921ae6ffa296cb11bdbb"; + const e = "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003"; + + assert.equal((await v.VerifyPKCS1v15(data, s, e, n)).toNumber(), 0); + }); +}) diff --git a/zkrsa/circom-rsa-verify/contracts/truffle_config.js b/zkrsa/circom-rsa-verify/contracts/truffle_config.js new file mode 100644 index 000000000..4b5ca3b4d --- /dev/null +++ b/zkrsa/circom-rsa-verify/contracts/truffle_config.js @@ -0,0 +1,88 @@ +module.exports = { + /** + * Networks define how you connect to your ethereum client and let you set the + * defaults web3 uses to send transactions. If you don't specify one truffle + * will spin up a development blockchain for you on port 9545 when you + * run `develop` or `test`. You can ask a truffle command to use a specific + * network from the command line, e.g + * + * $ truffle test --network + */ + + networks: { + // Useful for testing. The `development` name is special - truffle uses it by default + // if it's defined here and no other network is specified at the command line. + // You should run a client (like ganache-cli, geth or parity) in a separate terminal + // tab if you use this network and you must also set the `host`, `port` and `network_id` + // options below to some value. + // + test: { + host: "127.0.0.1", // Localhost (default: none) + port: 8545, // Standard Ethereum port (default: none) + network_id: "1", // Any network (default: none) + timeout: 100000 + }, + development: { + host: "127.0.0.1", // Localhost (default: none) + port: 8545, // Standard Ethereum port (default: none) + network_id: "1", // Any network (default: none) + timeout: 100000 + }, + // Another network with more advanced options... + advanced: { + port: 8777, // Custom port + network_id: 1342, // Custom network + gas: 8500000, // Gas sent with each transaction (default: ~6700000) + gasPrice: 20000000000, // 20 gwei (in wei) (default: 100 gwei) + // from: accounts[0], // Account to send txs from (default: accounts[0]) + websocket: true // Enable EventEmitter interface for web3 (default: false) + }, + // Useful for deploying to a public network. + // NB: It's important to wrap the provider as a function. + // ropsten: { + // provider: () => new HDWalletProvider(mnemonic, `https://ropsten.infura.io/v3/YOUR-PROJECT-ID`), + // network_id: 3, // Ropsten's id + // gas: 5500000, // Ropsten has a lower block limit than mainnet + // confirmations: 2, // # of confs to wait between deployments. (default: 0) + // timeoutBlocks: 200, // # of blocks before a deployment times out (minimum/default: 50) + // skipDryRun: true // Skip dry run before migrations? (default: false for public nets ) + // }, + // Useful for private networks + // private: { + // provider: () => new HDWalletProvider(mnemonic, `https://network.io`), + // network_id: 2111, // This network is yours, in the cloud. + // production: true // Treats this network as if it was a public net. (default: false) + // } + }, + + // Set default mocha options` here, use special reporters etc. + mocha: { + timeout: 100000 + }, + + // Configure your compilers + compilers: { + solc: { + version: "0.5.1", // Fetch exact version from solc-bin (default: truffle's version) + docker: true, // Use "0.5.1" you've installed locally with docker (default: false) + settings: { // See the solidity docs for advice about optimization and evmVersion + optimizer: { + enabled: false, + runs: 200 + }, + evmVersion: "byzantium" + } + } + }, + + // Truffle DB is currently disabled by default; to enable it, change enabled: false to enabled: true + // + // Note: if you migrated your contracts prior to enabling this field in your Truffle project and want + // those previously migrated contracts available in the .db directory, you will need to run the following: + // $ truffle migrate --reset --compile-all + + db: { + enabled: false + } + }; + \ No newline at end of file diff --git a/zkrsa/circom-rsa-verify/package-lock.json b/zkrsa/circom-rsa-verify/package-lock.json new file mode 100644 index 000000000..80596de89 --- /dev/null +++ b/zkrsa/circom-rsa-verify/package-lock.json @@ -0,0 +1,8673 @@ +{ + "name": "rsa_verify", + "version": "0.1.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "rsa_verify", + "version": "0.1.0", + "license": "GPL-3.0", + "dependencies": { + "circom": "^0.5.45", + "node-rsa": "^1.1.1", + "npm": "^7.20.1", + "test": "^0.6.0" + }, + "devDependencies": { + "chai": "^4.1.0", + "circom": "alex-ozdemir/circom#a5215f6", + "mocha": "^5.2.0", + "snarkjs": "0.1.16", + "ts-mocha": "^10.0.0", + "ts-node": "^10.9.1", + "typescript": "^4.9.5" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "optional": true + }, + "node_modules/@types/node": { + "version": "18.14.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.0.tgz", + "integrity": "sha512-5EWrvLmglK+imbCJY0+INViFWUHg1AHel1sq4ZVSfdcNqGy9Edv3UB9IIzzg+xPaUcAgZYcfVs2fBcwDeZzU0A==", + "dev": true, + "peer": true + }, + "node_modules/acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-font": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/ansi-font/-/ansi-font-0.0.2.tgz", + "integrity": "sha512-F0/7wvsUxF38bWUB1yI2O4Cxm04XUvnF5emQmvjJyPjYkbTbiQR51pHmxuFBUkTvWA2vG0Uvzm2/TU+teFTwwg==", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chai": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", + "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", + "dev": true, + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^4.1.2", + "get-func-name": "^2.0.0", + "loupe": "^2.3.1", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "node_modules/check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/circom": { + "version": "0.0.30", + "resolved": "git+ssh://git@github.com/alex-ozdemir/circom.git#a5215f6143ea7324f03f78804d8fd1cef64bc7d5", + "dev": true, + "license": "GPL-3.0", + "dependencies": { + "big-integer": "^1.6.32", + "optimist": "^0.6.1", + "yargs": "^12.0.2" + }, + "bin": { + "circom": "cli.js" + } + }, + "node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "dev": true, + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true + }, + "node_modules/cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "dependencies": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "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, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "dev": true, + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", + "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.9.1", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^4.0.3", + "eslint-utils": "^1.3.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^5.0.1", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.7.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^6.2.2", + "js-yaml": "^3.13.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.11", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^5.5.1", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^6.14.0 || ^8.10.0 || >=9.10.0" + } + }, + "node_modules/eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/eslint/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/espree": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", + "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", + "dev": true, + "dependencies": { + "acorn": "^6.0.7", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", + "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "dependencies": { + "flat-cache": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true + }, + "node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "dependencies": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "node_modules/get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "node_modules/get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true, + "engines": { + "node": ">=4.x" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha512-z/GDPjlRMNOa2XJiB4em8wJpuuBfrFOlYKTZxtpkdr1uPdibHI8rYA3MY0KDObpVyaes0e/aunid/t88ZI2EKA==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/inquirer": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", + "dev": true, + "dependencies": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.12", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/inquirer/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/inquirer/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "optional": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/json5/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/keccak": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-2.1.0.tgz", + "integrity": "sha512-m1wbJRTo+gWbctZWay9i26v5fFnYkOn7D5PCxJ3fZUGUEb49dE1Pm4BREUYCt/aoO6di7jeoGmhvqN9Nzylm3Q==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "bindings": "^1.5.0", + "inherits": "^2.0.4", + "nan": "^2.14.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=5.12.0" + } + }, + "node_modules/lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "dependencies": { + "invert-kv": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/loupe": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", + "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.0" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "dependencies": { + "p-defer": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "dependencies": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/mem/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha512-miQKw5Hv4NS1Psg2517mV4e4dYNaO3++hjAvLOAzKqZ61rH8NS1SK+vbfBWZ5PY/Me/bEWhUwqMghEW5Fb9T7Q==", + "dev": true + }, + "node_modules/mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha512-SknJC52obPfGQPnjIkXbmA6+5H15E+fR+E4iR2oQ3zzCLbd7/ONua69R/Gw7AgkTLsRG+r5fzksYwWe1AgTyWA==", + "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", + "dev": true, + "dependencies": { + "minimist": "0.0.8" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mocha": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", + "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", + "dev": true, + "dependencies": { + "browser-stdout": "1.3.1", + "commander": "2.15.1", + "debug": "3.1.0", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.5", + "he": "1.1.1", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "supports-color": "5.4.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", + "dev": true + }, + "node_modules/nan": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node_modules/node-rsa": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/node-rsa/-/node-rsa-1.1.1.tgz", + "integrity": "sha512-Jd4cvbJMryN21r5HgxQOpMEqv+ooke/korixNNK3mGqfGJmy0M77WDDzo/05969+OkMy3XW1UuZsSmW9KQm7Fw==", + "dependencies": { + "asn1": "^0.2.4" + } + }, + "node_modules/npm": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/npm/-/npm-7.24.2.tgz", + "integrity": "sha512-120p116CE8VMMZ+hk8IAb1inCPk4Dj3VZw29/n2g6UI77urJKVYb7FZUDW8hY+EBnfsjI/2yrobBgFyzo7YpVQ==", + "bundleDependencies": [ + "@isaacs/string-locale-compare", + "@npmcli/arborist", + "@npmcli/ci-detect", + "@npmcli/config", + "@npmcli/map-workspaces", + "@npmcli/package-json", + "@npmcli/run-script", + "abbrev", + "ansicolors", + "ansistyles", + "archy", + "cacache", + "chalk", + "chownr", + "cli-columns", + "cli-table3", + "columnify", + "fastest-levenshtein", + "glob", + "graceful-fs", + "hosted-git-info", + "ini", + "init-package-json", + "is-cidr", + "json-parse-even-better-errors", + "libnpmaccess", + "libnpmdiff", + "libnpmexec", + "libnpmfund", + "libnpmhook", + "libnpmorg", + "libnpmpack", + "libnpmpublish", + "libnpmsearch", + "libnpmteam", + "libnpmversion", + "make-fetch-happen", + "minipass", + "minipass-pipeline", + "mkdirp", + "mkdirp-infer-owner", + "ms", + "node-gyp", + "nopt", + "npm-audit-report", + "npm-install-checks", + "npm-package-arg", + "npm-pick-manifest", + "npm-profile", + "npm-registry-fetch", + "npm-user-validate", + "npmlog", + "opener", + "pacote", + "parse-conflict-json", + "qrcode-terminal", + "read", + "read-package-json", + "read-package-json-fast", + "readdir-scoped-modules", + "rimraf", + "semver", + "ssri", + "tar", + "text-table", + "tiny-relative-date", + "treeverse", + "validate-npm-package-name", + "which", + "write-file-atomic" + ], + "dependencies": { + "@isaacs/string-locale-compare": "*", + "@npmcli/arborist": "*", + "@npmcli/ci-detect": "*", + "@npmcli/config": "*", + "@npmcli/map-workspaces": "*", + "@npmcli/package-json": "*", + "@npmcli/run-script": "*", + "abbrev": "*", + "ansicolors": "*", + "ansistyles": "*", + "archy": "*", + "cacache": "*", + "chalk": "*", + "chownr": "*", + "cli-columns": "*", + "cli-table3": "*", + "columnify": "*", + "fastest-levenshtein": "*", + "glob": "*", + "graceful-fs": "*", + "hosted-git-info": "*", + "ini": "*", + "init-package-json": "*", + "is-cidr": "*", + "json-parse-even-better-errors": "*", + "libnpmaccess": "*", + "libnpmdiff": "*", + "libnpmexec": "*", + "libnpmfund": "*", + "libnpmhook": "*", + "libnpmorg": "*", + "libnpmpack": "*", + "libnpmpublish": "*", + "libnpmsearch": "*", + "libnpmteam": "*", + "libnpmversion": "*", + "make-fetch-happen": "*", + "minipass": "*", + "minipass-pipeline": "*", + "mkdirp": "*", + "mkdirp-infer-owner": "*", + "ms": "*", + "node-gyp": "*", + "nopt": "*", + "npm-audit-report": "*", + "npm-install-checks": "*", + "npm-package-arg": "*", + "npm-pick-manifest": "*", + "npm-profile": "*", + "npm-registry-fetch": "*", + "npm-user-validate": "*", + "npmlog": "*", + "opener": "*", + "pacote": "*", + "parse-conflict-json": "*", + "qrcode-terminal": "*", + "read": "*", + "read-package-json": "*", + "read-package-json-fast": "*", + "readdir-scoped-modules": "*", + "rimraf": "*", + "semver": "*", + "ssri": "*", + "tar": "*", + "text-table": "*", + "tiny-relative-date": "*", + "treeverse": "*", + "validate-npm-package-name": "*", + "which": "*", + "write-file-atomic": "*" + }, + "bin": { + "npm": "bin/npm-cli.js", + "npx": "bin/npx-cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dev": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/@gar/promisify": { + "version": "1.1.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/@isaacs/string-locale-compare": { + "version": "1.1.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/@npmcli/arborist": { + "version": "2.9.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@isaacs/string-locale-compare": "^1.0.1", + "@npmcli/installed-package-contents": "^1.0.7", + "@npmcli/map-workspaces": "^1.0.2", + "@npmcli/metavuln-calculator": "^1.1.0", + "@npmcli/move-file": "^1.1.0", + "@npmcli/name-from-folder": "^1.0.1", + "@npmcli/node-gyp": "^1.0.1", + "@npmcli/package-json": "^1.0.1", + "@npmcli/run-script": "^1.8.2", + "bin-links": "^2.2.1", + "cacache": "^15.0.3", + "common-ancestor-path": "^1.0.1", + "json-parse-even-better-errors": "^2.3.1", + "json-stringify-nice": "^1.1.4", + "mkdirp": "^1.0.4", + "mkdirp-infer-owner": "^2.0.0", + "npm-install-checks": "^4.0.0", + "npm-package-arg": "^8.1.5", + "npm-pick-manifest": "^6.1.0", + "npm-registry-fetch": "^11.0.0", + "pacote": "^11.3.5", + "parse-conflict-json": "^1.1.1", + "proc-log": "^1.0.0", + "promise-all-reject-late": "^1.0.0", + "promise-call-limit": "^1.0.1", + "read-package-json-fast": "^2.0.2", + "readdir-scoped-modules": "^1.1.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "ssri": "^8.0.1", + "treeverse": "^1.0.4", + "walk-up-path": "^1.0.0" + }, + "bin": { + "arborist": "bin/index.js" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/@npmcli/ci-detect": { + "version": "1.3.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/@npmcli/config": { + "version": "2.3.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "ini": "^2.0.0", + "mkdirp-infer-owner": "^2.0.0", + "nopt": "^5.0.0", + "semver": "^7.3.4", + "walk-up-path": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/@npmcli/disparity-colors": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "ansi-styles": "^4.3.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/@npmcli/fs": { + "version": "1.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "node_modules/npm/node_modules/@npmcli/git": { + "version": "2.1.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/promise-spawn": "^1.3.2", + "lru-cache": "^6.0.0", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^6.1.1", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^2.0.2" + } + }, + "node_modules/npm/node_modules/@npmcli/installed-package-contents": { + "version": "1.0.7", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + }, + "bin": { + "installed-package-contents": "index.js" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/@npmcli/map-workspaces": { + "version": "1.0.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/name-from-folder": "^1.0.1", + "glob": "^7.1.6", + "minimatch": "^3.0.4", + "read-package-json-fast": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/@npmcli/metavuln-calculator": { + "version": "1.1.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "cacache": "^15.0.5", + "pacote": "^11.1.11", + "semver": "^7.3.2" + } + }, + "node_modules/npm/node_modules/@npmcli/move-file": { + "version": "1.1.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/@npmcli/name-from-folder": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/@npmcli/node-gyp": { + "version": "1.0.2", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/@npmcli/package-json": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^2.3.1" + } + }, + "node_modules/npm/node_modules/@npmcli/promise-spawn": { + "version": "1.3.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "infer-owner": "^1.0.4" + } + }, + "node_modules/npm/node_modules/@npmcli/run-script": { + "version": "1.8.6", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/node-gyp": "^1.0.2", + "@npmcli/promise-spawn": "^1.3.2", + "node-gyp": "^7.1.0", + "read-package-json-fast": "^2.0.1" + } + }, + "node_modules/npm/node_modules/@tootallnate/once": { + "version": "1.1.2", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm/node_modules/abbrev": { + "version": "1.1.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/agent-base": { + "version": "6.0.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/npm/node_modules/agentkeepalive": { + "version": "4.1.4", + "inBundle": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/npm/node_modules/aggregate-error": { + "version": "3.1.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/ajv": { + "version": "6.12.6", + "inBundle": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/npm/node_modules/ansi-regex": { + "version": "2.1.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/ansi-styles": { + "version": "4.3.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/npm/node_modules/ansicolors": { + "version": "0.3.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/ansistyles": { + "version": "0.1.3", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/aproba": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/archy": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/are-we-there-yet": { + "version": "1.1.6", + "inBundle": true, + "license": "ISC", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/asap": { + "version": "2.0.6", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/asn1": { + "version": "0.2.4", + "inBundle": true, + "license": "MIT", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/npm/node_modules/assert-plus": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/npm/node_modules/asynckit": { + "version": "0.4.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/aws-sign2": { + "version": "0.7.0", + "inBundle": true, + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/aws4": { + "version": "1.11.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/balanced-match": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "inBundle": true, + "license": "BSD-3-Clause", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/npm/node_modules/bin-links": { + "version": "2.2.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "cmd-shim": "^4.0.1", + "mkdirp": "^1.0.3", + "npm-normalize-package-bin": "^1.0.0", + "read-cmd-shim": "^2.0.0", + "rimraf": "^3.0.0", + "write-file-atomic": "^3.0.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/binary-extensions": { + "version": "2.2.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/brace-expansion": { + "version": "1.1.11", + "inBundle": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/npm/node_modules/builtins": { + "version": "1.0.3", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/cacache": { + "version": "15.3.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/caseless": { + "version": "0.12.0", + "inBundle": true, + "license": "Apache-2.0" + }, + "node_modules/npm/node_modules/chalk": { + "version": "4.1.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/npm/node_modules/chownr": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/cidr-regex": { + "version": "3.1.1", + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "ip-regex": "^4.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/clean-stack": { + "version": "2.2.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/cli-columns": { + "version": "3.1.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "string-width": "^2.0.0", + "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm/node_modules/cli-table3": { + "version": "0.6.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "object-assign": "^4.1.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "colors": "^1.1.2" + } + }, + "node_modules/npm/node_modules/cli-table3/node_modules/ansi-regex": { + "version": "5.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/cli-table3/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/cli-table3/node_modules/string-width": { + "version": "4.2.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/cli-table3/node_modules/strip-ansi": { + "version": "6.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/clone": { + "version": "1.0.4", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/npm/node_modules/cmd-shim": { + "version": "4.1.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "mkdirp-infer-owner": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/code-point-at": { + "version": "1.1.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/color-convert": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/npm/node_modules/color-name": { + "version": "1.1.4", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/color-support": { + "version": "1.1.3", + "inBundle": true, + "license": "ISC", + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/npm/node_modules/colors": { + "version": "1.4.0", + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/npm/node_modules/columnify": { + "version": "1.5.4", + "inBundle": true, + "license": "MIT", + "dependencies": { + "strip-ansi": "^3.0.0", + "wcwidth": "^1.0.0" + } + }, + "node_modules/npm/node_modules/combined-stream": { + "version": "1.0.8", + "inBundle": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/npm/node_modules/common-ancestor-path": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/concat-map": { + "version": "0.0.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/console-control-strings": { + "version": "1.1.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/core-util-is": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/dashdash": { + "version": "1.14.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/npm/node_modules/debug": { + "version": "4.3.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/npm/node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/debuglog": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/defaults": { + "version": "1.0.3", + "inBundle": true, + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + } + }, + "node_modules/npm/node_modules/delayed-stream": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/npm/node_modules/delegates": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/depd": { + "version": "1.1.2", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/npm/node_modules/dezalgo": { + "version": "1.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "node_modules/npm/node_modules/diff": { + "version": "5.0.0", + "inBundle": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/npm/node_modules/ecc-jsbn": { + "version": "0.1.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/npm/node_modules/emoji-regex": { + "version": "8.0.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/encoding": { + "version": "0.1.13", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/npm/node_modules/env-paths": { + "version": "2.2.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/err-code": { + "version": "2.0.3", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/extend": { + "version": "3.0.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/extsprintf": { + "version": "1.3.0", + "engines": [ + "node >=0.6.0" + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/fast-deep-equal": { + "version": "3.1.3", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/fastest-levenshtein": { + "version": "1.0.12", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/forever-agent": { + "version": "0.6.1", + "inBundle": true, + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/fs-minipass": { + "version": "2.1.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/fs.realpath": { + "version": "1.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/function-bind": { + "version": "1.1.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/gauge": { + "version": "3.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1 || ^2.0.0", + "strip-ansi": "^3.0.1 || ^4.0.0", + "wide-align": "^1.1.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/getpass": { + "version": "0.1.7", + "inBundle": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/npm/node_modules/glob": { + "version": "7.2.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/graceful-fs": { + "version": "4.2.8", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/har-schema": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/har-validator": { + "version": "5.1.5", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/has": { + "version": "1.0.3", + "inBundle": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/npm/node_modules/has-flag": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/has-unicode": { + "version": "2.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/hosted-git-info": { + "version": "4.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/http-cache-semantics": { + "version": "4.1.0", + "inBundle": true, + "license": "BSD-2-Clause" + }, + "node_modules/npm/node_modules/http-proxy-agent": { + "version": "4.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm/node_modules/http-signature": { + "version": "1.2.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/npm/node_modules/https-proxy-agent": { + "version": "5.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm/node_modules/humanize-ms": { + "version": "1.2.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/npm/node_modules/iconv-lite": { + "version": "0.6.3", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/ignore-walk": { + "version": "3.0.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minimatch": "^3.0.4" + } + }, + "node_modules/npm/node_modules/imurmurhash": { + "version": "0.1.4", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/npm/node_modules/indent-string": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/infer-owner": { + "version": "1.0.4", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/inflight": { + "version": "1.0.6", + "inBundle": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/npm/node_modules/inherits": { + "version": "2.0.4", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/ini": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/init-package-json": { + "version": "2.0.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-package-arg": "^8.1.5", + "promzard": "^0.3.0", + "read": "~1.0.1", + "read-package-json": "^4.1.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/ip": { + "version": "1.1.5", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/ip-regex": { + "version": "4.3.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/is-cidr": { + "version": "4.0.2", + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "cidr-regex": "^3.1.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/is-core-module": { + "version": "2.7.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/npm/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/is-lambda": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/is-typedarray": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/isexe": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/isstream": { + "version": "0.1.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/jsbn": { + "version": "0.1.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/json-schema": { + "version": "0.2.3", + "inBundle": true + }, + "node_modules/npm/node_modules/json-schema-traverse": { + "version": "0.4.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/json-stringify-nice": { + "version": "1.1.4", + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/json-stringify-safe": { + "version": "5.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/jsonparse": { + "version": "1.3.1", + "engines": [ + "node >= 0.2.0" + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/jsprim": { + "version": "1.4.1", + "engines": [ + "node >=0.6.0" + ], + "inBundle": true, + "license": "MIT", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "node_modules/npm/node_modules/just-diff": { + "version": "3.1.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/just-diff-apply": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/libnpmaccess": { + "version": "4.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "minipass": "^3.1.1", + "npm-package-arg": "^8.1.2", + "npm-registry-fetch": "^11.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmdiff": { + "version": "2.0.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/disparity-colors": "^1.0.1", + "@npmcli/installed-package-contents": "^1.0.7", + "binary-extensions": "^2.2.0", + "diff": "^5.0.0", + "minimatch": "^3.0.4", + "npm-package-arg": "^8.1.4", + "pacote": "^11.3.4", + "tar": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmexec": { + "version": "2.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^2.3.0", + "@npmcli/ci-detect": "^1.3.0", + "@npmcli/run-script": "^1.8.4", + "chalk": "^4.1.0", + "mkdirp-infer-owner": "^2.0.0", + "npm-package-arg": "^8.1.2", + "pacote": "^11.3.1", + "proc-log": "^1.0.0", + "read": "^1.0.7", + "read-package-json-fast": "^2.0.2", + "walk-up-path": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmfund": { + "version": "1.1.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^2.5.0" + } + }, + "node_modules/npm/node_modules/libnpmhook": { + "version": "6.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^11.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmorg": { + "version": "2.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^11.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmpack": { + "version": "2.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/run-script": "^1.8.3", + "npm-package-arg": "^8.1.0", + "pacote": "^11.2.6" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmpublish": { + "version": "4.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "normalize-package-data": "^3.0.2", + "npm-package-arg": "^8.1.2", + "npm-registry-fetch": "^11.0.0", + "semver": "^7.1.3", + "ssri": "^8.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmsearch": { + "version": "3.1.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-registry-fetch": "^11.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmteam": { + "version": "2.0.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^11.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmversion": { + "version": "1.2.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^2.0.7", + "@npmcli/run-script": "^1.8.4", + "json-parse-even-better-errors": "^2.3.1", + "semver": "^7.3.5", + "stringify-package": "^1.0.1" + } + }, + "node_modules/npm/node_modules/lru-cache": { + "version": "6.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/make-fetch-happen": { + "version": "9.1.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/mime-db": { + "version": "1.49.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/npm/node_modules/mime-types": { + "version": "2.1.32", + "inBundle": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.49.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/npm/node_modules/minimatch": { + "version": "3.0.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/minipass": { + "version": "3.1.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-collect": { + "version": "1.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/minipass-fetch": { + "version": "1.4.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "optionalDependencies": { + "encoding": "^0.1.12" + } + }, + "node_modules/npm/node_modules/minipass-flush": { + "version": "1.0.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/minipass-json-stream": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "node_modules/npm/node_modules/minipass-pipeline": { + "version": "1.2.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-sized": { + "version": "1.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minizlib": { + "version": "2.1.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/mkdirp": { + "version": "1.0.4", + "inBundle": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/mkdirp-infer-owner": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "infer-owner": "^1.0.4", + "mkdirp": "^1.0.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/ms": { + "version": "2.1.3", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/mute-stream": { + "version": "0.0.8", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/negotiator": { + "version": "0.6.2", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/npm/node_modules/node-gyp": { + "version": "7.1.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.3", + "nopt": "^5.0.0", + "npmlog": "^4.1.2", + "request": "^2.88.2", + "rimraf": "^3.0.2", + "semver": "^7.3.2", + "tar": "^6.0.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": ">= 10.12.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/aproba": { + "version": "1.2.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/node-gyp/node_modules/gauge": { + "version": "2.7.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/npmlog": { + "version": "4.1.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/string-width": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/nopt": { + "version": "5.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/normalize-package-data": { + "version": "3.0.3", + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/npm-audit-report": { + "version": "2.1.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "chalk": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/npm-bundled": { + "version": "1.1.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "node_modules/npm/node_modules/npm-install-checks": { + "version": "4.0.0", + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/npm-normalize-package-bin": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/npm-package-arg": { + "version": "8.1.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "hosted-git-info": "^4.0.1", + "semver": "^7.3.4", + "validate-npm-package-name": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/npm-packlist": { + "version": "2.2.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.6", + "ignore-walk": "^3.0.3", + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + }, + "bin": { + "npm-packlist": "bin/index.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/npm-pick-manifest": { + "version": "6.1.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-install-checks": "^4.0.0", + "npm-normalize-package-bin": "^1.0.1", + "npm-package-arg": "^8.1.2", + "semver": "^7.3.4" + } + }, + "node_modules/npm/node_modules/npm-profile": { + "version": "5.0.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-registry-fetch": "^11.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/npm-registry-fetch": { + "version": "11.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "make-fetch-happen": "^9.0.1", + "minipass": "^3.1.3", + "minipass-fetch": "^1.3.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.0.0", + "npm-package-arg": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/npm-user-validate": { + "version": "1.0.1", + "inBundle": true, + "license": "BSD-2-Clause" + }, + "node_modules/npm/node_modules/npmlog": { + "version": "5.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, + "node_modules/npm/node_modules/npmlog/node_modules/are-we-there-yet": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/number-is-nan": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/oauth-sign": { + "version": "0.9.0", + "inBundle": true, + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/object-assign": { + "version": "4.1.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/once": { + "version": "1.4.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/npm/node_modules/opener": { + "version": "1.5.2", + "inBundle": true, + "license": "(WTFPL OR MIT)", + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/npm/node_modules/p-map": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/pacote": { + "version": "11.3.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^2.1.0", + "@npmcli/installed-package-contents": "^1.0.6", + "@npmcli/promise-spawn": "^1.2.0", + "@npmcli/run-script": "^1.8.2", + "cacache": "^15.0.5", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "infer-owner": "^1.0.4", + "minipass": "^3.1.3", + "mkdirp": "^1.0.3", + "npm-package-arg": "^8.0.1", + "npm-packlist": "^2.1.4", + "npm-pick-manifest": "^6.0.0", + "npm-registry-fetch": "^11.0.0", + "promise-retry": "^2.0.1", + "read-package-json-fast": "^2.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.1.0" + }, + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/parse-conflict-json": { + "version": "1.1.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^2.3.0", + "just-diff": "^3.0.1", + "just-diff-apply": "^3.0.0" + } + }, + "node_modules/npm/node_modules/path-is-absolute": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/performance-now": { + "version": "2.1.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/proc-log": { + "version": "1.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/promise-all-reject-late": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/promise-call-limit": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/promise-inflight": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/promise-retry": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/promzard": { + "version": "0.3.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "read": "1" + } + }, + "node_modules/npm/node_modules/psl": { + "version": "1.8.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/punycode": { + "version": "2.1.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/qrcode-terminal": { + "version": "0.12.0", + "inBundle": true, + "bin": { + "qrcode-terminal": "bin/qrcode-terminal.js" + } + }, + "node_modules/npm/node_modules/qs": { + "version": "6.5.2", + "inBundle": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/npm/node_modules/read": { + "version": "1.0.7", + "inBundle": true, + "license": "ISC", + "dependencies": { + "mute-stream": "~0.0.4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/npm/node_modules/read-cmd-shim": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/read-package-json": { + "version": "4.1.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.1", + "json-parse-even-better-errors": "^2.3.0", + "normalize-package-data": "^3.0.0", + "npm-normalize-package-bin": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/read-package-json-fast": { + "version": "2.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/readable-stream": { + "version": "3.6.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm/node_modules/readdir-scoped-modules": { + "version": "1.1.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "node_modules/npm/node_modules/request": { + "version": "2.88.2", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm/node_modules/request/node_modules/form-data": { + "version": "2.3.3", + "inBundle": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/npm/node_modules/request/node_modules/tough-cookie": { + "version": "2.5.0", + "inBundle": true, + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/npm/node_modules/retry": { + "version": "0.12.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm/node_modules/rimraf": { + "version": "3.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/safe-buffer": { + "version": "5.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/safer-buffer": { + "version": "2.1.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/semver": { + "version": "7.3.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/set-blocking": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/signal-exit": { + "version": "3.0.3", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/smart-buffer": { + "version": "4.2.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/npm/node_modules/socks": { + "version": "2.6.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ip": "^1.1.5", + "smart-buffer": "^4.1.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/npm/node_modules/socks-proxy-agent": { + "version": "6.1.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.1", + "socks": "^2.6.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/spdx-correct": { + "version": "3.1.1", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-exceptions": { + "version": "2.3.0", + "inBundle": true, + "license": "CC-BY-3.0" + }, + "node_modules/npm/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-license-ids": { + "version": "3.0.10", + "inBundle": true, + "license": "CC0-1.0" + }, + "node_modules/npm/node_modules/sshpk": { + "version": "1.16.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/ssri": { + "version": "8.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/string_decoder": { + "version": "1.3.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/npm/node_modules/string-width": { + "version": "2.1.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/string-width/node_modules/ansi-regex": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/string-width/node_modules/strip-ansi": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/stringify-package": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/strip-ansi": { + "version": "3.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/supports-color": { + "version": "7.2.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/tar": { + "version": "6.1.11", + "inBundle": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/text-table": { + "version": "0.2.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/tiny-relative-date": { + "version": "1.3.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/treeverse": { + "version": "1.0.4", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/tunnel-agent": { + "version": "0.6.0", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/tweetnacl": { + "version": "0.14.5", + "inBundle": true, + "license": "Unlicense" + }, + "node_modules/npm/node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "inBundle": true, + "license": "MIT", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/npm/node_modules/unique-filename": { + "version": "1.1.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/npm/node_modules/unique-slug": { + "version": "2.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/npm/node_modules/uri-js": { + "version": "4.4.1", + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/npm/node_modules/util-deprecate": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/uuid": { + "version": "3.4.0", + "inBundle": true, + "license": "MIT", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/npm/node_modules/validate-npm-package-license": { + "version": "3.0.4", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/npm/node_modules/validate-npm-package-name": { + "version": "3.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "builtins": "^1.0.3" + } + }, + "node_modules/npm/node_modules/verror": { + "version": "1.10.0", + "engines": [ + "node >=0.6.0" + ], + "inBundle": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/npm/node_modules/walk-up-path": { + "version": "1.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/wcwidth": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/npm/node_modules/which": { + "version": "2.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/wide-align": { + "version": "1.1.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "string-width": "^1.0.2 || 2" + } + }, + "node_modules/npm/node_modules/wrappy": { + "version": "1.0.2", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/write-file-atomic": { + "version": "3.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/npm/node_modules/yallist": { + "version": "4.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha512-snN4O4TkigujZphWLN0E//nQmm7790RYaE53DdL7ZYwee2D8DDo9/EyYiKUfN3rneWUjhJnueija3G9I2i0h3g==", + "dev": true, + "dependencies": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + } + }, + "node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "dependencies": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "dev": true + }, + "node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true, + "engines": { + "node": ">=6.5.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==", + "dev": true + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "dev": true, + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/snarkjs": { + "version": "0.1.16", + "resolved": "https://registry.npmjs.org/snarkjs/-/snarkjs-0.1.16.tgz", + "integrity": "sha512-BMWWNlPe5YtDHVjR3Yl7YuEQ44BtkuPUNtoCJaSQFKaoXOubhwVWGTYpdA2eQUaHg7eFivCSnEj2NI4u5C68ug==", + "deprecated": "Sucurity bug fixed", + "dev": true, + "dependencies": { + "big-integer": "^1.6.43", + "chai": "^4.2.0", + "escape-string-regexp": "^1.0.5", + "eslint": "^5.16.0", + "keccak": "^2.0.0", + "yargs": "^12.0.5" + }, + "bin": { + "snarkjs": "cli.js" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "dependencies": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/table/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/table/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/table/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/test": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/test/-/test-0.6.0.tgz", + "integrity": "sha512-dfbzeAI09tjJM0TCxxzLzPnHAO8gXHN6KaZ6N9zBde2YOFXunHO69tetz/ai93XRsOOkEm8q4IE3MJB/RlszxA==", + "dependencies": { + "ansi-font": "0.0.2" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/ts-mocha": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/ts-mocha/-/ts-mocha-10.0.0.tgz", + "integrity": "sha512-VRfgDO+iiuJFlNB18tzOfypJ21xn2xbuZyDvJvqpTbWgkAgD17ONGr8t+Tl8rcBtOBdjXp5e/Rk+d39f7XBHRw==", + "dev": true, + "dependencies": { + "ts-node": "7.0.1" + }, + "bin": { + "ts-mocha": "bin/ts-mocha" + }, + "engines": { + "node": ">= 6.X.X" + }, + "optionalDependencies": { + "tsconfig-paths": "^3.5.0" + }, + "peerDependencies": { + "mocha": "^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X" + } + }, + "node_modules/ts-mocha/node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ts-mocha/node_modules/ts-node": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", + "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", + "dev": true, + "dependencies": { + "arrify": "^1.0.0", + "buffer-from": "^1.1.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.6", + "yn": "^2.0.0" + }, + "bin": { + "ts-node": "dist/bin.js" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/ts-mocha/node_modules/yn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", + "integrity": "sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node/node_modules/acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ts-node/node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "dev": true, + "optional": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/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/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", + "dev": true + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha512-1tMA907+V4QmxV7dbRvb4/8MaRALK6q9Abid3ndMYnbyo8piisCmeONVqVSXqQA3KaP4SLt5b7ud6E2sqP8TFw==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", + "dev": true, + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "dependencies": { + "mkdirp": "^0.5.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "node_modules/yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, + "dependencies": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "node_modules/yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + } + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "requires": { + "@babel/highlight": "^7.18.6" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true + }, + "@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "0.3.9" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "optional": true + }, + "@types/node": { + "version": "18.14.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.0.tgz", + "integrity": "sha512-5EWrvLmglK+imbCJY0+INViFWUHg1AHel1sq4ZVSfdcNqGy9Edv3UB9IIzzg+xPaUcAgZYcfVs2fBcwDeZzU0A==", + "dev": true, + "peer": true + }, + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-font": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/ansi-font/-/ansi-font-0.0.2.tgz", + "integrity": "sha512-F0/7wvsUxF38bWUB1yI2O4Cxm04XUvnF5emQmvjJyPjYkbTbiQR51pHmxuFBUkTvWA2vG0Uvzm2/TU+teFTwwg==" + }, + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true + }, + "asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "dev": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "chai": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", + "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", + "dev": true, + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^4.1.2", + "get-func-name": "^2.0.0", + "loupe": "^2.3.1", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "dev": true + }, + "circom": { + "version": "git+ssh://git@github.com/alex-ozdemir/circom.git#a5215f6143ea7324f03f78804d8fd1cef64bc7d5", + "dev": true, + "from": "circom@alex-ozdemir/circom#a5215f6", + "requires": { + "big-integer": "^1.6.32", + "optimist": "^0.6.1", + "yargs": "^12.0.2" + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "dev": true + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true + }, + "deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "eslint": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", + "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.9.1", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^4.0.3", + "eslint-utils": "^1.3.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^5.0.1", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.7.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^6.2.2", + "js-yaml": "^3.13.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.11", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^5.5.1", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + }, + "espree": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", + "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", + "dev": true, + "requires": { + "acorn": "^6.0.7", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", + "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha512-z/GDPjlRMNOa2XJiB4em8wJpuuBfrFOlYKTZxtpkdr1uPdibHI8rYA3MY0KDObpVyaes0e/aunid/t88ZI2EKA==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "inquirer": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", + "dev": true, + "requires": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.12", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "optional": true, + "requires": { + "minimist": "^1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "optional": true + } + } + }, + "keccak": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-2.1.0.tgz", + "integrity": "sha512-m1wbJRTo+gWbctZWay9i26v5fFnYkOn7D5PCxJ3fZUGUEb49dE1Pm4BREUYCt/aoO6di7jeoGmhvqN9Nzylm3Q==", + "dev": true, + "requires": { + "bindings": "^1.5.0", + "inherits": "^2.0.4", + "nan": "^2.14.0", + "safe-buffer": "^5.2.0" + } + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "loupe": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", + "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "dev": true, + "requires": { + "get-func-name": "^2.0.0" + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + }, + "dependencies": { + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + } + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha512-miQKw5Hv4NS1Psg2517mV4e4dYNaO3++hjAvLOAzKqZ61rH8NS1SK+vbfBWZ5PY/Me/bEWhUwqMghEW5Fb9T7Q==", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha512-SknJC52obPfGQPnjIkXbmA6+5H15E+fR+E4iR2oQ3zzCLbd7/ONua69R/Gw7AgkTLsRG+r5fzksYwWe1AgTyWA==", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "mocha": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", + "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", + "dev": true, + "requires": { + "browser-stdout": "1.3.1", + "commander": "2.15.1", + "debug": "3.1.0", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.5", + "he": "1.1.1", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "supports-color": "5.4.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", + "dev": true + }, + "nan": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-rsa": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/node-rsa/-/node-rsa-1.1.1.tgz", + "integrity": "sha512-Jd4cvbJMryN21r5HgxQOpMEqv+ooke/korixNNK3mGqfGJmy0M77WDDzo/05969+OkMy3XW1UuZsSmW9KQm7Fw==", + "requires": { + "asn1": "^0.2.4" + } + }, + "npm": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/npm/-/npm-7.24.2.tgz", + "integrity": "sha512-120p116CE8VMMZ+hk8IAb1inCPk4Dj3VZw29/n2g6UI77urJKVYb7FZUDW8hY+EBnfsjI/2yrobBgFyzo7YpVQ==", + "requires": { + "@isaacs/string-locale-compare": "*", + "@npmcli/arborist": "*", + "@npmcli/ci-detect": "*", + "@npmcli/config": "*", + "@npmcli/map-workspaces": "*", + "@npmcli/package-json": "*", + "@npmcli/run-script": "*", + "abbrev": "*", + "ansicolors": "*", + "ansistyles": "*", + "archy": "*", + "cacache": "*", + "chalk": "*", + "chownr": "*", + "cli-columns": "*", + "cli-table3": "*", + "columnify": "*", + "fastest-levenshtein": "*", + "glob": "*", + "graceful-fs": "*", + "hosted-git-info": "*", + "ini": "*", + "init-package-json": "*", + "is-cidr": "*", + "json-parse-even-better-errors": "*", + "libnpmaccess": "*", + "libnpmdiff": "*", + "libnpmexec": "*", + "libnpmfund": "*", + "libnpmhook": "*", + "libnpmorg": "*", + "libnpmpack": "*", + "libnpmpublish": "*", + "libnpmsearch": "*", + "libnpmteam": "*", + "libnpmversion": "*", + "make-fetch-happen": "*", + "minipass": "*", + "minipass-pipeline": "*", + "mkdirp": "*", + "mkdirp-infer-owner": "*", + "ms": "*", + "node-gyp": "*", + "nopt": "*", + "npm-audit-report": "*", + "npm-install-checks": "*", + "npm-package-arg": "*", + "npm-pick-manifest": "*", + "npm-profile": "*", + "npm-registry-fetch": "*", + "npm-user-validate": "*", + "npmlog": "*", + "opener": "*", + "pacote": "*", + "parse-conflict-json": "*", + "qrcode-terminal": "*", + "read": "*", + "read-package-json": "*", + "read-package-json-fast": "*", + "readdir-scoped-modules": "*", + "rimraf": "*", + "semver": "*", + "ssri": "*", + "tar": "*", + "text-table": "*", + "tiny-relative-date": "*", + "treeverse": "*", + "validate-npm-package-name": "*", + "which": "*", + "write-file-atomic": "*" + }, + "dependencies": { + "@gar/promisify": { + "version": "1.1.2", + "bundled": true + }, + "@isaacs/string-locale-compare": { + "version": "1.1.0", + "bundled": true + }, + "@npmcli/arborist": { + "version": "2.9.0", + "bundled": true, + "requires": { + "@isaacs/string-locale-compare": "^1.0.1", + "@npmcli/installed-package-contents": "^1.0.7", + "@npmcli/map-workspaces": "^1.0.2", + "@npmcli/metavuln-calculator": "^1.1.0", + "@npmcli/move-file": "^1.1.0", + "@npmcli/name-from-folder": "^1.0.1", + "@npmcli/node-gyp": "^1.0.1", + "@npmcli/package-json": "^1.0.1", + "@npmcli/run-script": "^1.8.2", + "bin-links": "^2.2.1", + "cacache": "^15.0.3", + "common-ancestor-path": "^1.0.1", + "json-parse-even-better-errors": "^2.3.1", + "json-stringify-nice": "^1.1.4", + "mkdirp": "^1.0.4", + "mkdirp-infer-owner": "^2.0.0", + "npm-install-checks": "^4.0.0", + "npm-package-arg": "^8.1.5", + "npm-pick-manifest": "^6.1.0", + "npm-registry-fetch": "^11.0.0", + "pacote": "^11.3.5", + "parse-conflict-json": "^1.1.1", + "proc-log": "^1.0.0", + "promise-all-reject-late": "^1.0.0", + "promise-call-limit": "^1.0.1", + "read-package-json-fast": "^2.0.2", + "readdir-scoped-modules": "^1.1.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "ssri": "^8.0.1", + "treeverse": "^1.0.4", + "walk-up-path": "^1.0.0" + } + }, + "@npmcli/ci-detect": { + "version": "1.3.0", + "bundled": true + }, + "@npmcli/config": { + "version": "2.3.0", + "bundled": true, + "requires": { + "ini": "^2.0.0", + "mkdirp-infer-owner": "^2.0.0", + "nopt": "^5.0.0", + "semver": "^7.3.4", + "walk-up-path": "^1.0.0" + } + }, + "@npmcli/disparity-colors": { + "version": "1.0.1", + "bundled": true, + "requires": { + "ansi-styles": "^4.3.0" + } + }, + "@npmcli/fs": { + "version": "1.0.0", + "bundled": true, + "requires": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "@npmcli/git": { + "version": "2.1.0", + "bundled": true, + "requires": { + "@npmcli/promise-spawn": "^1.3.2", + "lru-cache": "^6.0.0", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^6.1.1", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^2.0.2" + } + }, + "@npmcli/installed-package-contents": { + "version": "1.0.7", + "bundled": true, + "requires": { + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "@npmcli/map-workspaces": { + "version": "1.0.4", + "bundled": true, + "requires": { + "@npmcli/name-from-folder": "^1.0.1", + "glob": "^7.1.6", + "minimatch": "^3.0.4", + "read-package-json-fast": "^2.0.1" + } + }, + "@npmcli/metavuln-calculator": { + "version": "1.1.1", + "bundled": true, + "requires": { + "cacache": "^15.0.5", + "pacote": "^11.1.11", + "semver": "^7.3.2" + } + }, + "@npmcli/move-file": { + "version": "1.1.2", + "bundled": true, + "requires": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, + "@npmcli/name-from-folder": { + "version": "1.0.1", + "bundled": true + }, + "@npmcli/node-gyp": { + "version": "1.0.2", + "bundled": true + }, + "@npmcli/package-json": { + "version": "1.0.1", + "bundled": true, + "requires": { + "json-parse-even-better-errors": "^2.3.1" + } + }, + "@npmcli/promise-spawn": { + "version": "1.3.2", + "bundled": true, + "requires": { + "infer-owner": "^1.0.4" + } + }, + "@npmcli/run-script": { + "version": "1.8.6", + "bundled": true, + "requires": { + "@npmcli/node-gyp": "^1.0.2", + "@npmcli/promise-spawn": "^1.3.2", + "node-gyp": "^7.1.0", + "read-package-json-fast": "^2.0.1" + } + }, + "@tootallnate/once": { + "version": "1.1.2", + "bundled": true + }, + "abbrev": { + "version": "1.1.1", + "bundled": true + }, + "agent-base": { + "version": "6.0.2", + "bundled": true, + "requires": { + "debug": "4" + } + }, + "agentkeepalive": { + "version": "4.1.4", + "bundled": true, + "requires": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + } + }, + "aggregate-error": { + "version": "3.1.0", + "bundled": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "bundled": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "ansi-styles": { + "version": "4.3.0", + "bundled": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "ansicolors": { + "version": "0.3.2", + "bundled": true + }, + "ansistyles": { + "version": "0.1.3", + "bundled": true + }, + "aproba": { + "version": "2.0.0", + "bundled": true + }, + "archy": { + "version": "1.0.0", + "bundled": true + }, + "are-we-there-yet": { + "version": "1.1.6", + "bundled": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + } + }, + "asap": { + "version": "2.0.6", + "bundled": true + }, + "asn1": { + "version": "0.2.4", + "bundled": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "bundled": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true + }, + "aws-sign2": { + "version": "0.7.0", + "bundled": true + }, + "aws4": { + "version": "1.11.0", + "bundled": true + }, + "balanced-match": { + "version": "1.0.2", + "bundled": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "bundled": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bin-links": { + "version": "2.2.1", + "bundled": true, + "requires": { + "cmd-shim": "^4.0.1", + "mkdirp": "^1.0.3", + "npm-normalize-package-bin": "^1.0.0", + "read-cmd-shim": "^2.0.0", + "rimraf": "^3.0.0", + "write-file-atomic": "^3.0.3" + } + }, + "binary-extensions": { + "version": "2.2.0", + "bundled": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "builtins": { + "version": "1.0.3", + "bundled": true + }, + "cacache": { + "version": "15.3.0", + "bundled": true, + "requires": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + } + }, + "caseless": { + "version": "0.12.0", + "bundled": true + }, + "chalk": { + "version": "4.1.2", + "bundled": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chownr": { + "version": "2.0.0", + "bundled": true + }, + "cidr-regex": { + "version": "3.1.1", + "bundled": true, + "requires": { + "ip-regex": "^4.1.0" + } + }, + "clean-stack": { + "version": "2.2.0", + "bundled": true + }, + "cli-columns": { + "version": "3.1.2", + "bundled": true, + "requires": { + "string-width": "^2.0.0", + "strip-ansi": "^3.0.1" + } + }, + "cli-table3": { + "version": "0.6.0", + "bundled": true, + "requires": { + "colors": "^1.1.2", + "object-assign": "^4.1.0", + "string-width": "^4.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "bundled": true + }, + "string-width": { + "version": "4.2.2", + "bundled": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "bundled": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "clone": { + "version": "1.0.4", + "bundled": true + }, + "cmd-shim": { + "version": "4.1.0", + "bundled": true, + "requires": { + "mkdirp-infer-owner": "^2.0.0" + } + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "color-convert": { + "version": "2.0.1", + "bundled": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "bundled": true + }, + "color-support": { + "version": "1.1.3", + "bundled": true + }, + "colors": { + "version": "1.4.0", + "bundled": true, + "optional": true + }, + "columnify": { + "version": "1.5.4", + "bundled": true, + "requires": { + "strip-ansi": "^3.0.0", + "wcwidth": "^1.0.0" + } + }, + "combined-stream": { + "version": "1.0.8", + "bundled": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "common-ancestor-path": { + "version": "1.0.1", + "bundled": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "debug": { + "version": "4.3.2", + "bundled": true, + "requires": { + "ms": "2.1.2" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "bundled": true + } + } + }, + "debuglog": { + "version": "1.0.1", + "bundled": true + }, + "defaults": { + "version": "1.0.3", + "bundled": true, + "requires": { + "clone": "^1.0.2" + } + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true + }, + "depd": { + "version": "1.1.2", + "bundled": true + }, + "dezalgo": { + "version": "1.0.3", + "bundled": true, + "requires": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "diff": { + "version": "5.0.0", + "bundled": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "bundled": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "emoji-regex": { + "version": "8.0.0", + "bundled": true + }, + "encoding": { + "version": "0.1.13", + "bundled": true, + "optional": true, + "requires": { + "iconv-lite": "^0.6.2" + } + }, + "env-paths": { + "version": "2.2.1", + "bundled": true + }, + "err-code": { + "version": "2.0.3", + "bundled": true + }, + "extend": { + "version": "3.0.2", + "bundled": true + }, + "extsprintf": { + "version": "1.3.0", + "bundled": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "bundled": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "bundled": true + }, + "fastest-levenshtein": { + "version": "1.0.12", + "bundled": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true + }, + "fs-minipass": { + "version": "2.1.0", + "bundled": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true + }, + "function-bind": { + "version": "1.1.1", + "bundled": true + }, + "gauge": { + "version": "3.0.1", + "bundled": true, + "requires": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1 || ^2.0.0", + "strip-ansi": "^3.0.1 || ^4.0.0", + "wide-align": "^1.1.2" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.2.0", + "bundled": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.2.8", + "bundled": true + }, + "har-schema": { + "version": "2.0.0", + "bundled": true + }, + "har-validator": { + "version": "5.1.5", + "bundled": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "bundled": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "bundled": true + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true + }, + "hosted-git-info": { + "version": "4.0.2", + "bundled": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "http-cache-semantics": { + "version": "4.1.0", + "bundled": true + }, + "http-proxy-agent": { + "version": "4.0.1", + "bundled": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, + "http-signature": { + "version": "1.2.0", + "bundled": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-proxy-agent": { + "version": "5.0.0", + "bundled": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "humanize-ms": { + "version": "1.2.1", + "bundled": true, + "requires": { + "ms": "^2.0.0" + } + }, + "iconv-lite": { + "version": "0.6.3", + "bundled": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "ignore-walk": { + "version": "3.0.4", + "bundled": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "imurmurhash": { + "version": "0.1.4", + "bundled": true + }, + "indent-string": { + "version": "4.0.0", + "bundled": true + }, + "infer-owner": { + "version": "1.0.4", + "bundled": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "bundled": true + }, + "ini": { + "version": "2.0.0", + "bundled": true + }, + "init-package-json": { + "version": "2.0.5", + "bundled": true, + "requires": { + "npm-package-arg": "^8.1.5", + "promzard": "^0.3.0", + "read": "~1.0.1", + "read-package-json": "^4.1.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^3.0.0" + } + }, + "ip": { + "version": "1.1.5", + "bundled": true + }, + "ip-regex": { + "version": "4.3.0", + "bundled": true + }, + "is-cidr": { + "version": "4.0.2", + "bundled": true, + "requires": { + "cidr-regex": "^3.1.1" + } + }, + "is-core-module": { + "version": "2.7.0", + "bundled": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true + }, + "is-lambda": { + "version": "1.0.1", + "bundled": true + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true + }, + "isexe": { + "version": "2.0.0", + "bundled": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true + }, + "jsbn": { + "version": "0.1.1", + "bundled": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "bundled": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "bundled": true + }, + "json-stringify-nice": { + "version": "1.1.4", + "bundled": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true + }, + "jsonparse": { + "version": "1.3.1", + "bundled": true + }, + "jsprim": { + "version": "1.4.1", + "bundled": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "just-diff": { + "version": "3.1.1", + "bundled": true + }, + "just-diff-apply": { + "version": "3.0.0", + "bundled": true + }, + "libnpmaccess": { + "version": "4.0.3", + "bundled": true, + "requires": { + "aproba": "^2.0.0", + "minipass": "^3.1.1", + "npm-package-arg": "^8.1.2", + "npm-registry-fetch": "^11.0.0" + } + }, + "libnpmdiff": { + "version": "2.0.4", + "bundled": true, + "requires": { + "@npmcli/disparity-colors": "^1.0.1", + "@npmcli/installed-package-contents": "^1.0.7", + "binary-extensions": "^2.2.0", + "diff": "^5.0.0", + "minimatch": "^3.0.4", + "npm-package-arg": "^8.1.4", + "pacote": "^11.3.4", + "tar": "^6.1.0" + } + }, + "libnpmexec": { + "version": "2.0.1", + "bundled": true, + "requires": { + "@npmcli/arborist": "^2.3.0", + "@npmcli/ci-detect": "^1.3.0", + "@npmcli/run-script": "^1.8.4", + "chalk": "^4.1.0", + "mkdirp-infer-owner": "^2.0.0", + "npm-package-arg": "^8.1.2", + "pacote": "^11.3.1", + "proc-log": "^1.0.0", + "read": "^1.0.7", + "read-package-json-fast": "^2.0.2", + "walk-up-path": "^1.0.0" + } + }, + "libnpmfund": { + "version": "1.1.0", + "bundled": true, + "requires": { + "@npmcli/arborist": "^2.5.0" + } + }, + "libnpmhook": { + "version": "6.0.3", + "bundled": true, + "requires": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^11.0.0" + } + }, + "libnpmorg": { + "version": "2.0.3", + "bundled": true, + "requires": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^11.0.0" + } + }, + "libnpmpack": { + "version": "2.0.1", + "bundled": true, + "requires": { + "@npmcli/run-script": "^1.8.3", + "npm-package-arg": "^8.1.0", + "pacote": "^11.2.6" + } + }, + "libnpmpublish": { + "version": "4.0.2", + "bundled": true, + "requires": { + "normalize-package-data": "^3.0.2", + "npm-package-arg": "^8.1.2", + "npm-registry-fetch": "^11.0.0", + "semver": "^7.1.3", + "ssri": "^8.0.1" + } + }, + "libnpmsearch": { + "version": "3.1.2", + "bundled": true, + "requires": { + "npm-registry-fetch": "^11.0.0" + } + }, + "libnpmteam": { + "version": "2.0.4", + "bundled": true, + "requires": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^11.0.0" + } + }, + "libnpmversion": { + "version": "1.2.1", + "bundled": true, + "requires": { + "@npmcli/git": "^2.0.7", + "@npmcli/run-script": "^1.8.4", + "json-parse-even-better-errors": "^2.3.1", + "semver": "^7.3.5", + "stringify-package": "^1.0.1" + } + }, + "lru-cache": { + "version": "6.0.0", + "bundled": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "make-fetch-happen": { + "version": "9.1.0", + "bundled": true, + "requires": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + } + }, + "mime-db": { + "version": "1.49.0", + "bundled": true + }, + "mime-types": { + "version": "2.1.32", + "bundled": true, + "requires": { + "mime-db": "1.49.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minipass": { + "version": "3.1.5", + "bundled": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minipass-collect": { + "version": "1.0.2", + "bundled": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-fetch": { + "version": "1.4.1", + "bundled": true, + "requires": { + "encoding": "^0.1.12", + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + } + }, + "minipass-flush": { + "version": "1.0.5", + "bundled": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-json-stream": { + "version": "1.0.1", + "bundled": true, + "requires": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.4", + "bundled": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-sized": { + "version": "1.0.3", + "bundled": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "bundled": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "bundled": true + }, + "mkdirp-infer-owner": { + "version": "2.0.0", + "bundled": true, + "requires": { + "chownr": "^2.0.0", + "infer-owner": "^1.0.4", + "mkdirp": "^1.0.3" + } + }, + "ms": { + "version": "2.1.3", + "bundled": true + }, + "mute-stream": { + "version": "0.0.8", + "bundled": true + }, + "negotiator": { + "version": "0.6.2", + "bundled": true + }, + "node-gyp": { + "version": "7.1.2", + "bundled": true, + "requires": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.3", + "nopt": "^5.0.0", + "npmlog": "^4.1.2", + "request": "^2.88.2", + "rimraf": "^3.0.2", + "semver": "^7.3.2", + "tar": "^6.0.2", + "which": "^2.0.2" + }, + "dependencies": { + "aproba": { + "version": "1.2.0", + "bundled": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "nopt": { + "version": "5.0.0", + "bundled": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "3.0.3", + "bundled": true, + "requires": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + } + }, + "npm-audit-report": { + "version": "2.1.5", + "bundled": true, + "requires": { + "chalk": "^4.0.0" + } + }, + "npm-bundled": { + "version": "1.1.2", + "bundled": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-install-checks": { + "version": "4.0.0", + "bundled": true, + "requires": { + "semver": "^7.1.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "bundled": true + }, + "npm-package-arg": { + "version": "8.1.5", + "bundled": true, + "requires": { + "hosted-git-info": "^4.0.1", + "semver": "^7.3.4", + "validate-npm-package-name": "^3.0.0" + } + }, + "npm-packlist": { + "version": "2.2.2", + "bundled": true, + "requires": { + "glob": "^7.1.6", + "ignore-walk": "^3.0.3", + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-pick-manifest": { + "version": "6.1.1", + "bundled": true, + "requires": { + "npm-install-checks": "^4.0.0", + "npm-normalize-package-bin": "^1.0.1", + "npm-package-arg": "^8.1.2", + "semver": "^7.3.4" + } + }, + "npm-profile": { + "version": "5.0.4", + "bundled": true, + "requires": { + "npm-registry-fetch": "^11.0.0" + } + }, + "npm-registry-fetch": { + "version": "11.0.0", + "bundled": true, + "requires": { + "make-fetch-happen": "^9.0.1", + "minipass": "^3.1.3", + "minipass-fetch": "^1.3.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.0.0", + "npm-package-arg": "^8.0.0" + } + }, + "npm-user-validate": { + "version": "1.0.1", + "bundled": true + }, + "npmlog": { + "version": "5.0.1", + "bundled": true, + "requires": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + }, + "dependencies": { + "are-we-there-yet": { + "version": "2.0.0", + "bundled": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + } + } + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "oauth-sign": { + "version": "0.9.0", + "bundled": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1" + } + }, + "opener": { + "version": "1.5.2", + "bundled": true + }, + "p-map": { + "version": "4.0.0", + "bundled": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "pacote": { + "version": "11.3.5", + "bundled": true, + "requires": { + "@npmcli/git": "^2.1.0", + "@npmcli/installed-package-contents": "^1.0.6", + "@npmcli/promise-spawn": "^1.2.0", + "@npmcli/run-script": "^1.8.2", + "cacache": "^15.0.5", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "infer-owner": "^1.0.4", + "minipass": "^3.1.3", + "mkdirp": "^1.0.3", + "npm-package-arg": "^8.0.1", + "npm-packlist": "^2.1.4", + "npm-pick-manifest": "^6.0.0", + "npm-registry-fetch": "^11.0.0", + "promise-retry": "^2.0.1", + "read-package-json-fast": "^2.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.1.0" + } + }, + "parse-conflict-json": { + "version": "1.1.1", + "bundled": true, + "requires": { + "json-parse-even-better-errors": "^2.3.0", + "just-diff": "^3.0.1", + "just-diff-apply": "^3.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true + }, + "performance-now": { + "version": "2.1.0", + "bundled": true + }, + "proc-log": { + "version": "1.0.0", + "bundled": true + }, + "promise-all-reject-late": { + "version": "1.0.1", + "bundled": true + }, + "promise-call-limit": { + "version": "1.0.1", + "bundled": true + }, + "promise-inflight": { + "version": "1.0.1", + "bundled": true + }, + "promise-retry": { + "version": "2.0.1", + "bundled": true, + "requires": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + } + }, + "promzard": { + "version": "0.3.0", + "bundled": true, + "requires": { + "read": "1" + } + }, + "psl": { + "version": "1.8.0", + "bundled": true + }, + "punycode": { + "version": "2.1.1", + "bundled": true + }, + "qrcode-terminal": { + "version": "0.12.0", + "bundled": true + }, + "qs": { + "version": "6.5.2", + "bundled": true + }, + "read": { + "version": "1.0.7", + "bundled": true, + "requires": { + "mute-stream": "~0.0.4" + } + }, + "read-cmd-shim": { + "version": "2.0.0", + "bundled": true + }, + "read-package-json": { + "version": "4.1.1", + "bundled": true, + "requires": { + "glob": "^7.1.1", + "json-parse-even-better-errors": "^2.3.0", + "normalize-package-data": "^3.0.0", + "npm-normalize-package-bin": "^1.0.0" + } + }, + "read-package-json-fast": { + "version": "2.0.3", + "bundled": true, + "requires": { + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "readable-stream": { + "version": "3.6.0", + "bundled": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdir-scoped-modules": { + "version": "1.1.0", + "bundled": true, + "requires": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "request": { + "version": "2.88.2", + "bundled": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "form-data": { + "version": "2.3.3", + "bundled": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "tough-cookie": { + "version": "2.5.0", + "bundled": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + } + } + }, + "retry": { + "version": "0.12.0", + "bundled": true + }, + "rimraf": { + "version": "3.0.2", + "bundled": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.2.1", + "bundled": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true + }, + "semver": { + "version": "7.3.5", + "bundled": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true + }, + "signal-exit": { + "version": "3.0.3", + "bundled": true + }, + "smart-buffer": { + "version": "4.2.0", + "bundled": true + }, + "socks": { + "version": "2.6.1", + "bundled": true, + "requires": { + "ip": "^1.1.5", + "smart-buffer": "^4.1.0" + } + }, + "socks-proxy-agent": { + "version": "6.1.0", + "bundled": true, + "requires": { + "agent-base": "^6.0.2", + "debug": "^4.3.1", + "socks": "^2.6.1" + } + }, + "spdx-correct": { + "version": "3.1.1", + "bundled": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "bundled": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "bundled": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.10", + "bundled": true + }, + "sshpk": { + "version": "1.16.1", + "bundled": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "8.0.1", + "bundled": true, + "requires": { + "minipass": "^3.1.1" + } + }, + "string_decoder": { + "version": "1.3.0", + "bundled": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "stringify-package": { + "version": "1.0.1", + "bundled": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "bundled": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "tar": { + "version": "6.1.11", + "bundled": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + } + }, + "text-table": { + "version": "0.2.0", + "bundled": true + }, + "tiny-relative-date": { + "version": "1.3.0", + "bundled": true + }, + "treeverse": { + "version": "1.0.4", + "bundled": true + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "bundled": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "unique-filename": { + "version": "1.1.1", + "bundled": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "bundled": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "uri-js": { + "version": "4.4.1", + "bundled": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true + }, + "uuid": { + "version": "3.4.0", + "bundled": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "bundled": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validate-npm-package-name": { + "version": "3.0.0", + "bundled": true, + "requires": { + "builtins": "^1.0.3" + } + }, + "verror": { + "version": "1.10.0", + "bundled": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "walk-up-path": { + "version": "1.0.0", + "bundled": true + }, + "wcwidth": { + "version": "1.0.1", + "bundled": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "which": { + "version": "2.0.2", + "bundled": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + }, + "write-file-atomic": { + "version": "3.0.3", + "bundled": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "yallist": { + "version": "4.0.0", + "bundled": true + } + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha512-snN4O4TkigujZphWLN0E//nQmm7790RYaE53DdL7ZYwee2D8DDo9/EyYiKUfN3rneWUjhJnueija3G9I2i0h3g==", + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true + }, + "pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==", + "dev": true + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + } + }, + "snarkjs": { + "version": "0.1.16", + "resolved": "https://registry.npmjs.org/snarkjs/-/snarkjs-0.1.16.tgz", + "integrity": "sha512-BMWWNlPe5YtDHVjR3Yl7YuEQ44BtkuPUNtoCJaSQFKaoXOubhwVWGTYpdA2eQUaHg7eFivCSnEj2NI4u5C68ug==", + "dev": true, + "requires": { + "big-integer": "^1.6.43", + "chai": "^4.2.0", + "escape-string-regexp": "^1.0.5", + "eslint": "^5.16.0", + "keccak": "^2.0.0", + "yargs": "^12.0.5" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "optional": true + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "test": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/test/-/test-0.6.0.tgz", + "integrity": "sha512-dfbzeAI09tjJM0TCxxzLzPnHAO8gXHN6KaZ6N9zBde2YOFXunHO69tetz/ai93XRsOOkEm8q4IE3MJB/RlszxA==", + "requires": { + "ansi-font": "0.0.2" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "ts-mocha": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/ts-mocha/-/ts-mocha-10.0.0.tgz", + "integrity": "sha512-VRfgDO+iiuJFlNB18tzOfypJ21xn2xbuZyDvJvqpTbWgkAgD17ONGr8t+Tl8rcBtOBdjXp5e/Rk+d39f7XBHRw==", + "dev": true, + "requires": { + "ts-node": "7.0.1", + "tsconfig-paths": "^3.5.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true + }, + "ts-node": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", + "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", + "dev": true, + "requires": { + "arrify": "^1.0.0", + "buffer-from": "^1.1.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.6", + "yn": "^2.0.0" + } + }, + "yn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", + "integrity": "sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==", + "dev": true + } + } + }, + "ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "requires": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "dependencies": { + "acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + } + } + }, + "tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "dev": true, + "optional": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "optional": true + } + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", + "dev": true + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha512-1tMA907+V4QmxV7dbRvb4/8MaRALK6q9Abid3ndMYnbyo8piisCmeONVqVSXqQA3KaP4SLt5b7ud6E2sqP8TFw==", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true + } + } +} diff --git a/zkrsa/circom-rsa-verify/package.json b/zkrsa/circom-rsa-verify/package.json new file mode 100644 index 000000000..37878fb83 --- /dev/null +++ b/zkrsa/circom-rsa-verify/package.json @@ -0,0 +1,48 @@ +{ + "name": "rsa_verify", + "version": "0.1.0", + "description": "Implementation of rsa verify for Circom", + "main": "index.js", + "directories": { + "test": "test" + }, + "scripts": { + "test": "mocha --max-old-space-size=16000 -t 10000s", + "test:sha1": "npx ts-mocha --max-old-space-size=16000 -t 10000s test/rsaSha1Verify.ts", + "circuit:compile": "npx circom test/circuits/rsa_sha1_verify.circom -o bin/rsa_sha1_verify.json", + "circuit:setup": "npx snarkjs setup -c bin/rsa_sha1_verify.json --pk groth16_zkey_prove.json --vk groth16_zkey_verify.json --protocol groth", + "circuit:witness": "npx snarkjs calculatewitness -c bin/rsa_sha1_verify.json -i inputs/input.json -w witness/witness.json", + "circuit:prove": "npx snarkjs proof -w witness/witness.json --pk vkeys/groth16_zkey_prove.json -p proofs/proof.json --pub publicSignals/public.json", + "circuit:verify": "npx snarkjs verify --vk vkeys/groth16_zkey_verify.json -p proofs/proof.json --pub publicSignals/public.json", + "circuit:solverifier": "npx snarkjs generateverifier --vk vkeys/groth16_zkey_verify.json -v contracts/contracts/RsaSha1Verifier.sol", + "circuit:calldata": "npx snarkjs generatecall -p proofs/proof.json --pub publicSignals/public.json" + }, + "keywords": [ + "circuit", + "circom", + "zksnark", + "bigint", + "rsa" + ], + "repository": { + "type": "git", + "url": "https://github.com/iden3/circomlib.git" + }, + "author": "jacksoom", + "license": "GPL-3.0", + "dependencies": { + "circom": "^0.5.45", + "node-rsa": "^1.1.1", + "npm": "^7.20.1", + "test": "^0.6.0" + }, + "devDependencies": { + "chai": "^4.1.0", + "circom": "alex-ozdemir/circom#a5215f6", + "mocha": "^5.2.0", + "snarkjs": "0.1.16", + "ts-mocha": "^10.0.0", + "ts-node": "^10.9.1", + "typescript": "^4.9.5" + } +} diff --git a/zkrsa/circom-rsa-verify/scripts/generateKeys.ts b/zkrsa/circom-rsa-verify/scripts/generateKeys.ts new file mode 100644 index 000000000..d9506cfab --- /dev/null +++ b/zkrsa/circom-rsa-verify/scripts/generateKeys.ts @@ -0,0 +1,44 @@ +//@ts-ignore +import snarkjs from "snarkjs"; +import { + stringifyBigInts, + //@ts-ignore +} from "snarkjs/src/stringifybigint.js"; +import fs from "fs"; +//@ts-ignore +import compiler from "circom"; +import path from "path"; +import { exit } from "process"; + +const main = async () => { + const circuitName = process.argv[2]; + + console.log("Compiling circuit.."); + + const circuitDef = await compiler( + path.join(__dirname, "../test/circuits/", `${circuitName}.circom`) + ); + + console.log("Instantiating circuit..."); + const circuit = new snarkjs.Circuit(circuitDef); + + console.log("Starting setup.."); + const setup = snarkjs.original.setup(circuit); + + console.log("Writing vk_proof"); + fs.writeFileSync( + `./vkeys/${circuitName}.vk_proof`, + JSON.stringify(stringifyBigInts(setup.vk_proof)), + "utf8" + ); + + console.log("Writing vk_verifier"); + + fs.writeFileSync( + `./vkeys/${circuitName}.vk_verifier`, + JSON.stringify(stringifyBigInts(setup.vk_verifier)), + "utf8" + ); +}; + +main().then(() => exit(1)); diff --git a/zkrsa/circom-rsa-verify/scripts/generateProof.ts b/zkrsa/circom-rsa-verify/scripts/generateProof.ts new file mode 100644 index 000000000..c92f9714e --- /dev/null +++ b/zkrsa/circom-rsa-verify/scripts/generateProof.ts @@ -0,0 +1,72 @@ +//@ts-ignore +import snarkjs from "snarkjs"; +import { readFileSync } from "fs"; +import { + unstringifyBigInts, + //@ts-ignore +} from "snarkjs/src/stringifybigint.js"; +import fs from "fs"; +import bigInt from "big-integer"; + +const main = () => { + const circuitName = process.argv[2]; + const { splitToWords, assertWitnessHas } = require("../test/util.js"); + + console.log("Loading circuit.."); + const circuitDef = JSON.parse( + readFileSync(`./bin/${circuitName}.json`, "utf-8") + ); + + console.log("Instantiating circuit..."); + const circuit = new snarkjs.Circuit(circuitDef); + + const exp = bigInt(65537); + const modulus = bigInt( + "20506905762542020524871161678960952669227058659927078218271030534582761906102467699393948948114139735259706562420121819112616469954212206452989673612962456485305857618836705565920733028260432760902031313787720369995510471130599102558482336196876350284746643805203867606604791810979044849617116414687907664642425838288031468042894615870085669599118270574276888256966317882601643671908532332881082928485931800682216974215333508696744511589005313614483528061110932069902761669230087546367823235305619310530467515083259158991386499753659530202286867052240182476186344672076897333556704707979558010033445565709135805374613" + ); + const sign = bigInt( + "5332533708304928746894390686611370107777648928992425061277200333880115157436051084444362905461532996433641113519926367874526095072310720152973308224330358686438617471416055294190586134682872348440672370380995250031085161121381564017697263551778610884714382166968969177242355479964292743453957133034752559140338547652996896360540859090172918998428671903288379676931780276952537766132923383266753722220952517425873806713403712573540875001657636820437023260187176397640658050733586006363551613755012222660224916177460794428681462357514747077850858497964541008009093527747458335492854300840516233890468664145778772049050" + ); + const hashed = bigInt("1391999260142290886374207300432027233340359984115"); + + const input = Object.assign( + {}, + splitToWords(sign, 32, 64, "sign"), + splitToWords(exp, 32, 64, "exp"), + splitToWords(modulus, 32, 64, "modulus"), + splitToWords(hashed, 32, 5, "hashed") + ); + + console.log("Calculating witness.."); + const witness = circuit.calculateWitness(input); + + console.log("Loading vk proof.."); + const vkProof = JSON.parse( + fs.readFileSync(`./vkeys/${circuitName}.vk_proof`, "utf8") + ); + + console.log("Loading vk verifier"); + const vkVerifier = JSON.parse( + fs.readFileSync(`./vkeys/${circuitName}.vk_verifier`, "utf8") + ); + + console.log("Generating proof.."); + const { proof, publicSignals } = snarkjs.original.genProof( + unstringifyBigInts(vkProof), + unstringifyBigInts(witness) + ); + + if ( + snarkjs.original.isValid( + unstringifyBigInts(vkVerifier), + unstringifyBigInts(proof), + unstringifyBigInts(publicSignals) + ) + ) { + console.log("Valid!"); + } else { + console.log("Invalid!"); + } +}; + +main(); diff --git a/zkrsa/circom-rsa-verify/scripts/generateSignature.ts b/zkrsa/circom-rsa-verify/scripts/generateSignature.ts new file mode 100644 index 000000000..5836db4ea --- /dev/null +++ b/zkrsa/circom-rsa-verify/scripts/generateSignature.ts @@ -0,0 +1,42 @@ +import * as crypto from "crypto"; +import { exit } from "process"; +const bigInt = require("big-integer"); +const ab2str = require("arraybuffer-to-string"); + +async function main() { + const ec = new TextEncoder(); + const message = "hello world"; + + const { publicKey, privateKey } = await crypto.webcrypto.subtle.generateKey( + { + name: "RSASSA-PKCS1-v1_5", + modulusLength: 2048, + publicExponent: new Uint8Array([1, 0, 1]), + hash: "SHA-256", + }, + true, + ["sign", "verify"] + ); + + const k = await crypto.webcrypto.subtle.exportKey("jwk", publicKey); + const signature = await crypto.webcrypto.subtle.sign( + "RSASSA-PKCS1-v1_5", + privateKey, + ec.encode(message) + ); + const digest = await crypto.webcrypto.subtle.digest( + "SHA-256", + ec.encode(message) + ); + + const kBinary = bigInt(Buffer.from(k.n!, "base64").toString("hex"), 16).toString(); + const digestDecimal = bigInt(ab2str(digest, "hex"), 16).toString(); + const signatureDecimal = bigInt(ab2str(signature, "hex"), 16).toString(); + console.log({ + digestDecimal, + signatureDecimal, + kBinary, + }); +} + +main().then(() => exit(1)); diff --git a/zkrsa/circom-rsa-verify/test/circuits/pow_mod.circom b/zkrsa/circom-rsa-verify/test/circuits/pow_mod.circom new file mode 100644 index 000000000..a2d15c1ed --- /dev/null +++ b/zkrsa/circom-rsa-verify/test/circuits/pow_mod.circom @@ -0,0 +1,3 @@ +include "../../circuits/pow_mod.circom" + +component main = PowerModv2(64, 32, 17); \ No newline at end of file diff --git a/zkrsa/circom-rsa-verify/test/circuits/rsa_sha1_verify.circom b/zkrsa/circom-rsa-verify/test/circuits/rsa_sha1_verify.circom new file mode 100644 index 000000000..d470e4c9b --- /dev/null +++ b/zkrsa/circom-rsa-verify/test/circuits/rsa_sha1_verify.circom @@ -0,0 +1,3 @@ +include "../../circuits/rsa_sha1_verify.circom" + +component main = RsaSha1VerifyPkcs1v15(32, 64, 17, 5); diff --git a/zkrsa/circom-rsa-verify/test/circuits/rsa_verify.circom b/zkrsa/circom-rsa-verify/test/circuits/rsa_verify.circom new file mode 100644 index 000000000..1ba38a1be --- /dev/null +++ b/zkrsa/circom-rsa-verify/test/circuits/rsa_verify.circom @@ -0,0 +1,3 @@ +include "../../circuits/rsa_verify.circom" + +component main = RsaVerifyPkcs1v15(64, 32, 17, 4); diff --git a/zkrsa/circom-rsa-verify/test/pow.js b/zkrsa/circom-rsa-verify/test/pow.js new file mode 100644 index 000000000..bde1f4350 --- /dev/null +++ b/zkrsa/circom-rsa-verify/test/pow.js @@ -0,0 +1,41 @@ +const chai = require("chai"); +const path = require("path"); +const snarkjs = require("snarkjs"); +const bigInt = require("big-integer"); +const assert = chai.assert; + +const compiler = require("circom"); + +const { splitToWords, assertWitnessHas } = require("./util.js"); + +chai.should(); + +describe("PowerMod", () => { + + var powmod_2048_256; + //var powmod_2048_256; + var p8 = bigInt("27333278531038650284292446400685983964543820405055158402397263907659995327446166369388984969315774410223081038389734916442552953312548988147687296936649645550823280957757266695625382122565413076484125874545818286099364801140117875853249691189224238587206753225612046406534868213180954324992542640955526040556053150097561640564120642863954208763490114707326811013163227280580130702236406906684353048490731840275232065153721031968704703853746667518350717957685569289022049487955447803273805415754478723962939325870164033644600353029240991739641247820015852898600430315191986948597672794286676575642204004244219381500407"); + + before(async () => { + let cirDef = await compiler(path.join(__dirname, "circuits", "pow_mod.circom")); + powmod_2048_256 = new snarkjs.Circuit(cirDef); + }); + + it("should compute powmod_2048_256) (64 bits, 32 words in base, exp = 65537)", () => { + const m = p8; + const b = bigInt("27166015521685750287064830171899789431519297967327068200526003963687696216659347317736779094212876326032375924944649760206771585778103092909024744594654706678288864890801000499430246054971129440518072676833029702477408973737931913964693831642228421821166326489172152903376352031367604507095742732994611253344812562891520292463788291973539285729019102238815435155266782647328690908245946607690372534644849495733662205697837732960032720813567898672483741410294744324300408404611458008868294953357660121510817012895745326996024006347446775298357303082471522757091056219893320485806442481065207020262668955919408138704593"); + const e = bigInt(65537); + const input = Object.assign({}, + splitToWords(b, 64, 32, "base"), + splitToWords(e, 64, 32, "exp"), + splitToWords(m, 64, 32, "modulus"), + ); + + + const witness = powmod_2048_256.calculateWitness(input); + const expected = b.modPow(e, m); + // console.log("expected----->", expected.toString()); + assertWitnessHas(powmod_2048_256, witness, "out", expected, 64, 32); + }); +}); + diff --git a/zkrsa/circom-rsa-verify/test/rsaSha1Verify.ts b/zkrsa/circom-rsa-verify/test/rsaSha1Verify.ts new file mode 100644 index 000000000..a73fabf30 --- /dev/null +++ b/zkrsa/circom-rsa-verify/test/rsaSha1Verify.ts @@ -0,0 +1,50 @@ +//@ts-ignore +import { wasm } from "circom_tester"; +import path from "path"; +//@ts-ignore +import bigInt from "big-integer"; + +//@ts-ignore +import compiler from "circom"; +//@ts-ignore +import * as snarkjs from "snarkjs"; +const { splitToWords, assertWitnessHas } = require("./util.js"); +import fs from "fs"; + +(BigInt.prototype as any).toJSON = function () { + return this.toString(); +}; + +describe("Witness calculation", () => { + //@ts-ignore + let rsa_pkvs1v15_circuit; + + before(async () => { + const cirDef = await compiler( + path.join(__dirname, "circuits", "rsa_sha1_verify.circom") + ); + rsa_pkvs1v15_circuit = new snarkjs.Circuit(cirDef); + }); + + it("Should calculate witness properly", () => { + const exp = bigInt(65537); + const modulus = bigInt( + "20506905762542020524871161678960952669227058659927078218271030534582761906102467699393948948114139735259706562420121819112616469954212206452989673612962456485305857618836705565920733028260432760902031313787720369995510471130599102558482336196876350284746643805203867606604791810979044849617116414687907664642425838288031468042894615870085669599118270574276888256966317882601643671908532332881082928485931800682216974215333508696744511589005313614483528061110932069902761669230087546367823235305619310530467515083259158991386499753659530202286867052240182476186344672076897333556704707979558010033445565709135805374613" + ); + const sign = bigInt( + "5332533708304928746894390686611370107777648928992425061277200333880115157436051084444362905461532996433641113519926367874526095072310720152973308224330358686438617471416055294190586134682872348440672370380995250031085161121381564017697263551778610884714382166968969177242355479964292743453957133034752559140338547652996896360540859090172918998428671903288379676931780276952537766132923383266753722220952517425873806713403712573540875001657636820437023260187176397640658050733586006363551613755012222660224916177460794428681462357514747077850858497964541008009093527747458335492854300840516233890468664145778772049050" + ); + const hashed = bigInt("1391999260142290886374207300432027233340359984115"); + + const input = Object.assign( + {}, + splitToWords(sign, 32, 64, "sign"), + splitToWords(exp, 32, 64, "exp"), + splitToWords(modulus, 32, 64, "modulus"), + splitToWords(hashed, 32, 5, "hashed") + ); + + //@ts-ignore + const witness = rsa_pkvs1v15_circuit.calculateWitness(input); + }); +}); diff --git a/zkrsa/circom-rsa-verify/test/rsa_verify.js b/zkrsa/circom-rsa-verify/test/rsa_verify.js new file mode 100644 index 000000000..2848bcbbc --- /dev/null +++ b/zkrsa/circom-rsa-verify/test/rsa_verify.js @@ -0,0 +1,84 @@ +const chai = require("chai"); +const path = require("path"); +const snarkjs = require("snarkjs"); +const bigInt = require("big-integer"); +const assert = chai.assert; + +const compiler = require("circom"); + +const { splitToWords, assertWitnessHas } = require("./util.js"); + +chai.should(); + +describe("Rsa pkcs1v15 verify", () => { + var rsa_pkvs1v15_circuit; + + before(async () => { + let cirDef = await compiler(path.join(__dirname, "circuits", "rsa_verify.circom")); + rsa_pkvs1v15_circuit = new snarkjs.Circuit(cirDef); + }); + + + it("2048 bits public key. correct sign. 1", () => { + // public key params. decimal + // const modulus = bigInt("24226501697440012621102249466312043787685293040734225606346036389705515508545746221669035424138747582133889500686654172873671086178893587422987328751464627501601101326475761646014534358699943642495332701081302954020983110372109611581202820849485662540890985814355975252780310958088652613376767040069489530039075302709233494829280591680666351811024913107949144932224439129715181798714328219977771472462901856297952813239115577652450722815852332547886777292613005505949100406231716599634852632308325816916535875123863510650526931916871614411907700873376659841257216885666098127478325534982891697988739616416855214839339"); + const exp = bigInt(65537); + // signature. decimal + const modulus = bigInt("19519656709521711429995139570547637181624762345324681785580301433588578378976966544165585079401325182615959394866402724247835200419210171384906228922984432351987054912642033888228862743737229361716981611335688010406392740956095932032128322466964202114087152883670346149379400227222916089973767149942678375161844533695413249493781659113508618075245377182482183926262306924673460477726816132619589117118686140127946600027192273556577984708113826100980891561591927374578519390433856317958492213293246054621642838485415189189708020272151599126098965668920960197306467800450624437168334563149867960568978175974911770644043"); + // const sign = bigInt("18928545496959756512579438348223103860103247450097569223971486743312798156950374943336714741350742176674694049986481729075548718599712271054643150030165230392897481507710187505775911256946250999396358633095137650326818007610162375520522758780751710735664264200260854016867498935206556916247099180950775474524799944404833222133011134000549939512938205188018503377612813102061504146765520561811620128786062447005833886367575841545493555268747671930923697279690399480501746857825917608323993022396398648205737336204493624060285359455268389160802763426461171262704764369336704988874821898000892148693988241020931055723252"); + const sign = bigInt("18519413668282313530131997444544340850073620641877474693732612923133913245075525024960156829644289238504103501567397968180045457914513699207360909317047448265537558209931516041220213380485055317892660643047402260178446676527589466628914994871817454357096262507299305662674661072917824223693871712826261322530380635166572948674090951224993714002393850119230963745313576434028274886145226699206192128504349141865259386563696313153598850003313320010544755512487148878264280144487955893567709755037425603476095352711045167095964851359444560909860196680830409408298067784727737140263880998968241893614784855717084522255107"); + // hashed data. decimal + const hashed = bigInt("83814198383102558219731078260892729932246618004265700685467928187377105751529"); + + const input = Object.assign({}, + splitToWords(sign, 64, 32, "sign"), + splitToWords(exp, 64, 32, "exp"), + splitToWords(modulus, 64, 32, "modulus"), + splitToWords(hashed, 64, 4, "hashed"), + ); + console.log(rsa_pkvs1v15_circuit) + console.log(input) + const witness = rsa_pkvs1v15_circuit.calculateWitness(input); + }); + + it("2048 bits public key. correct sign. 2", () => { + // public key params. decimal + const modulus = bigInt("24226501697440012621102249466312043787685293040734225606346036389705515508545746221669035424138747582133889500686654172873671086178893587422987328751464627501601101326475761646014534358699943642495332701081302954020983110372109611581202820849485662540890985814355975252780310958088652613376767040069489530039075302709233494829280591680666351811024913107949144932224439129715181798714328219977771472462901856297952813239115577652450722815852332547886777292613005505949100406231716599634852632308325816916535875123863510650526931916871614411907700873376659841257216885666098127478325534982891697988739616416855214839339"); + const exp = bigInt(65537); + // signature. decimal + const sign = bigInt("18928545496959757512579438348223103860103247450097569223971486743312798156950374943336714741350742176674694049986481729075548718599712271054643150030165230392897481507710187505775911256946250999396358633095137650326818007610162375520522758780751710735664264200260854016867498935206556916247099180950775474524799944404833222133011134000549939512938205188018503377612813102061504146765520561811620128786062447005833886367575841545493555268747671930923697279690399480501746857825917608323993022396398648205737336204493624060285359455268389160802763426461171262704764369336704988874821898000892148693988241020931055723252"); + // hashed data. decimal + const hashed = bigInt("83814198383102558219731078260892729932246618004265700685467928187377105751529"); + + const input = Object.assign({}, + splitToWords(sign, 64, 32, "sign"), + splitToWords(exp, 64, 32, "exp"), + splitToWords(modulus, 64, 32, "modulus"), + splitToWords(hashed, 64, 4, "hashed"), + ); + + const witness = rsa_pkvs1v15_circuit.calculateWitness(input); + }); + + it("2048 bits public key. uncorrect sign. ", () => { + // public key params. decimal + const modulus = bigInt("24226501697440012621102249466312043787685293040734225606346036389705515508545746221669035424138747582133889500686654172873671086178893587422987328751464627501601101326475761646014534358699943642495332701081302954020983110372109611581202820849485662540890985814355975252780310958088652613376767040069489530039075302709233494829280591680666351811024913107949144932224439129715181798714328219977771472462901856297952813239115577652450722815852332547886777292613005505949100406231716599634852632308325816916535875123863510650526931916871614411907700873376659841257216885666098127478325534982891697988739616416855214839339"); + const exp = bigInt(65537); + // signature. decimal + const sign = bigInt("18928545496959756512579438348223103860103247450097569223971486743312798156950374943336714741350742176674694049986481729075548718599712271054643150030165230392897481507710187505775911256946250999396358633095137650326818007610162375520522758780751710735664264200260854016867498935206556916247099180950775474524799944404833222133011134000549939512938205188018503377612813102061504146765520561811620128786062447005833886367575841545493555268747671930923697279690399480501746857825917608323993022396398648205737336204493624060285359455268389160802763426461171262704764369336704988874821898000892148693988241020931055723252"); + // hashed data. decimal + const hashed = bigInt("83814198383102558219731078260892729932246618004265700685467928187377105751529"); + const input = Object.assign({}, + splitToWords(sign, 64, 32, "sign"), + splitToWords(exp, 64, 32, "exp"), + splitToWords(modulus, 64, 32, "modulus"), + splitToWords(hashed, 64, 4, "hashed"), + ); + + (function () { + const witness = rsa_pkvs1v15_circuit.calculateWitness(input); + }.should.throw()); + + }); +}); + diff --git a/zkrsa/circom-rsa-verify/test/util.js b/zkrsa/circom-rsa-verify/test/util.js new file mode 100644 index 000000000..98843da27 --- /dev/null +++ b/zkrsa/circom-rsa-verify/test/util.js @@ -0,0 +1,40 @@ +const bigInt = require("big-integer"); +const chai = require("chai"); +const snarkjs = require("snarkjs"); + +const assert = chai.assert; + +function splitToWords(x, w, n, name) { + let t = bigInt(x); + w = bigInt(w); + n = bigInt(n); + const words = {}; + for (let i = 0; i < n; ++i) { + words[`${name}[${i}]`] = `${t.mod(bigInt(2).pow(w))}`; + t = t.divide(bigInt(2).pow(w)); + } + if (!t.isZero()) { + throw `Number ${x} does not fit in ${w * n} bits`; + } + return words; +} + +function assertWitnessHas(circuit, witness, name, x, w, b) { + let words = splitToWords(x, w, b, `main.${name}`); + for (let [signal, value] of Object.entries(words)) { + assert(witness[circuit.signalName2Idx[signal]].equals(snarkjs.bigInt(value)), + `${signal} expected to be ${(snarkjs.bigInt(value))} but was ${witness[circuit.signalName2Idx[signal]]}`); + } +} + +const extractExpr = (f) => { + const src = f.toString(); + const re = /.*=> *\((.*)\)/; + return src.match(re)[1]; +}; + +module.exports = { + extractExpr, + assertWitnessHas, + splitToWords, +}; diff --git a/zkrsa/circom-rsa-verify/tsconfig.json b/zkrsa/circom-rsa-verify/tsconfig.json new file mode 100644 index 000000000..86b63ffc3 --- /dev/null +++ b/zkrsa/circom-rsa-verify/tsconfig.json @@ -0,0 +1,103 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "commonjs", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + } +} diff --git a/zkrsa/frontend/.env.development b/zkrsa/frontend/.env.development new file mode 100644 index 000000000..6eb584d60 --- /dev/null +++ b/zkrsa/frontend/.env.development @@ -0,0 +1,7 @@ +NEXT_PUBLIC_HASH=83814198383102558219731078260892729932246618004265700685467928187377105751529 +NEXT_PUBLIC_MODULUS=19519656709521711429995139570547637181624762345324681785580301433588578378976966544165585079401325182615959394866402724247835200419210171384906228922984432351987054912642033888228862743737229361716981611335688010406392740956095932032128322466964202114087152883670346149379400227222916089973767149942678375161844533695413249493781659113508618075245377182482183926262306924673460477726816132619589117118686140127946600027192273556577984708113826100980891561591927374578519390433856317958492213293246054621642838485415189189708020272151599126098965668920960197306467800450624437168334563149867960568978175974911770644043 +NEXT_PUBLIC_SIGNATURE=18519413668282313530131997444544340850073620641877474693732612923133913245075525024960156829644289238504103501567397968180045457914513699207360909317047448265537558209931516041220213380485055317892660643047402260178446676527589466628914994871817454357096262507299305662674661072917824223693871712826261322530380635166572948674090951224993714002393850119230963745313576434028274886145226699206192128504349141865259386563696313153598850003313320010544755512487148878264280144487955893567709755037425603476095352711045167095964851359444560909860196680830409408298067784727737140263880998968241893614784855717084522255107 +NEXT_PUBLIC_VKEY_URL=https://d2ovde7k6pdj39.cloudfront.net/circuit.vk_proof +NEXT_PUBLIC_VKEY_VERIFIER_URL=https://d2ovde7k6pdj39.cloudfront.net/circuit.vk_verifier +NEXT_PUBLIC_CIRCUIT_URL=https://d2ovde7k6pdj39.cloudfront.net/circuit_rsa.json +NEXT_PUBLIC_GENERATE_PROOF=1 \ No newline at end of file diff --git a/zkrsa/frontend/.eslintrc.json b/zkrsa/frontend/.eslintrc.json new file mode 100644 index 000000000..bffb357a7 --- /dev/null +++ b/zkrsa/frontend/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": "next/core-web-vitals" +} diff --git a/zkrsa/frontend/.gitignore b/zkrsa/frontend/.gitignore new file mode 100644 index 000000000..e404daeb4 --- /dev/null +++ b/zkrsa/frontend/.gitignore @@ -0,0 +1,38 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts + +circuit.json \ No newline at end of file diff --git a/zkrsa/frontend/.prettierignore b/zkrsa/frontend/.prettierignore new file mode 100644 index 000000000..b30e55c87 --- /dev/null +++ b/zkrsa/frontend/.prettierignore @@ -0,0 +1,39 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build +/dist + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts + +*.json \ No newline at end of file diff --git a/zkrsa/frontend/.prettierrc b/zkrsa/frontend/.prettierrc new file mode 100644 index 000000000..552644cbb --- /dev/null +++ b/zkrsa/frontend/.prettierrc @@ -0,0 +1,7 @@ +{ + "trailingComma": "es5", + "tabWidth": 4, + "semi": true, + "singleQuote": true, + "bracketSpacing": true +} diff --git a/zkrsa/frontend/.vscode/settings.json b/zkrsa/frontend/.vscode/settings.json new file mode 100644 index 000000000..044b8fbd9 --- /dev/null +++ b/zkrsa/frontend/.vscode/settings.json @@ -0,0 +1,6 @@ +{ + "editor.formatOnSave": true, + "[typescriptreact]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + } +} \ No newline at end of file diff --git a/zkrsa/frontend/README.md b/zkrsa/frontend/README.md new file mode 100644 index 000000000..bcc7cdd01 --- /dev/null +++ b/zkrsa/frontend/README.md @@ -0,0 +1,7 @@ +### zkRSA UI + +This folder contains all necessary code for running the `zkRSA` UI. + +It allows you to verify in your browser RSA signatures and generate a zk proof regarding this verification. + +[Trusted setup and proof generation](https://github.com/iden3/snarkjs/issues/9) diff --git a/zkrsa/frontend/__mocks__/vk/verifier.json b/zkrsa/frontend/__mocks__/vk/verifier.json new file mode 100644 index 000000000..cb30decfd --- /dev/null +++ b/zkrsa/frontend/__mocks__/vk/verifier.json @@ -0,0 +1 @@ +{"protocol":"original","nPublic":100,"IC":[["5785844247536863367793925541078537183841447548771366015034573540646858771064","19787855113275914255683509340614690871064437579877572903100321502207558601728","1"],["18726480140519747059852526022679662481538487736006341666563058390398092930252","11199670617041528859492457357948525910620426351005265911887046896582931693121","1"],["1518609698926806601804955801471221696552392802922649628701131464063570879812","13699503390617130543769240472366250267663899185268534894605490854099289858820","1"],["9074975821735029378045130622810541449142819845042976234329125366498809146698","13773412285156639043767337487404432156623438440613308971777973812191709740811","1"],["4411643662463574577326159033194290939141867264122793987246311267733797401125","7079448764483011918825413744517169636620863924489847321330609841306567923987","1"],["616187729794953471954880328554790967075248270206970255807401976351273839634","7019214561810909509532232402397599538743154557245553932823253066345668157537","1"],["15712859223184772708349906481386835679914965829489717315829195709565311835687","18628433678176269177874059059755464778565042387728709922699091676679151945382","1"],["4487804743020289351029349819137511308730498488542121585592305988835854563695","16007934324020889593540461800292213541650738178518489372368489490202982798658","1"],["9802480753033024656271661466124908652981957466476500927312202810833100131255","21739144589684894886363956931362637571197333425863023339722509800542601583601","1"],["896206473930185933580264342288034573455454009968391898197713665606659293919","733429962863196493123096424292268806518427691643058211463405044619441335557","1"],["7528232163855355530210763490610534617954471837823154555654839216995768541649","18592527459920549257331698128351347557943645456167336595766350511176339753111","1"],["12189676700739982124346503065536299699727592780818647066450781544652189380928","7236567902382828001250222314043186870632733706439519389947047888025413261762","1"],["14525646957202661289288979133258710760592676184144090980985985906022556123954","18726124536796321470250830206347914923892288544490796504308879005916150005824","1"],["5680824792815309853213483494775511573213964087973039159102714419298762590242","14439757426260336172607811287806103151965554872277826015808117603921482173249","1"],["10006785124515406501784274297284509787434756156570183520076962116578920679188","10389761241039808358167019550870042629902303783698411292289903273738668421281","1"],["14207470024583542889734097133124879504259335136314157268074705778627787133405","16001078670814993426553815561841785372144817598577856353408183242884152761308","1"],["14853788757436671904315491969119495852612824562376837542296371893345770166708","8197627085368477293460679088115755658180310239194402507069287506567452150129","1"],["19273710991433547425595599860685670551027085895415108883059082622505317261650","21390630328522683005717111270088909143427167873315704172243057882462509066405","1"],["10342921012675166292426440582402538495355948917496562675351597025658829057922","6939415811839515646106160152835004912888167730437950975972659002884300544826","1"],["6125764901628113481826351003793843170798985451149283845809410384348619706440","1892279504729702581373464271343005645816190530841221157639867533803569949748","1"],["14982212263901043412146326118127486666816528240859783127955428013085664217386","18011807758638861535707918719237158032603840700042164479841041267363431440542","1"],["8123052951356070112207978603715190343098617430969645596618410598052874123969","9376093666724496345742854172975417099140678690339995409479767685415208458953","1"],["3330002166461188974400097200766153749576230795596602152465828436938017535026","15523313420589533038504328356000711652482178200326170650132827354416965013474","1"],["9957973911179218353843194046815676697686659290661823662138601861849495068339","229710394709176636910917423161792785731129774920586089084470669153294762681","1"],["14504848366826744058631215342891380945055773757847702179378753127367103224876","4542833765380793404853217185617217364934801424130892407400870388851888741948","1"],["7892969561991409441719862497019799223939366178377146226844947102126065785682","13899410286450478646629549995849666955604900800120617420882508305846900533431","1"],["20337892156294174820859053811319725960084689304725726766818969092902265369277","5070134252374819131284452608099080097973785835525594373869052497993664346504","1"],["14218665088804636394349861547060696007110157528141689346453325579190705076516","5365613015491375510561317990567234918990934311882150871049010337875879716570","1"],["9628564583243065805381041256901195156989887773159437535738155510042219703792","3646679769806372710444310435449966732662312896939892843647263242723547943078","1"],["5822659409447030605603195562134797712963293803524899591421055449913030747950","6304480084565315158507434980517316231978913386359463073587066865826867750701","1"],["19532993406349859997942972494468760904563809419324524642752268717104652270657","15804922684753909054505309632926238202180774815862051760933406213485657184001","1"],["1989974794967762161891257427350028807227092346741841050530632153381550905578","15984596128006270593992412647018617255084396336694270284131053690988581266791","1"],["6052487328385165547138120686770242038654852088085176647730864246522595988213","12719461844237938788714695841240444755018436310230002718396323352353379849290","1"],["166672556059224233118558883487451899359061438511628349929067309052921204981","468472449858566272733268192046507755835221729738175354268399307707112431879","1"],["12937922238596970887726134844355540386986347184385141462901640993845323691794","6819488925246452106741190564055927293486274966985202080713466490278591526960","1"],["7874633407510309829922634237383395459765240222950075336585769694338472028329","10106508428786486173374053921985036839587067509692709397318766427152960080169","1"],["14429869087660654262114870064774872986648139752441689750164064773173085989739","19810789850834025517413789120334239201766815643144884322233475910863623365301","1"],["7819817415475731902333687431694782596662468016020200684796183375142296858577","11585525678082997603820616856283510978062798877064800639062892998312112739676","1"],["1639730416743176315108464688701518768801313220721946714399154465789451709243","14321632908829997086519787441695701424642203280054131062507857659237854202207","1"],["21677160038229531674691088840729403373303889915334574232058820178973731532014","336354295278023313235391132025760613666743078164777357457336065173736653366","1"],["14184737334798055102895032901515820347768376114028789362324595490555161206545","5257443380366622090121284816920876753373333396430862613748059829971459048742","1"],["21576711055200202259893246138389256194712198318087954920423536437932886637715","13006535776975400090882195254706111836804255865599865257415842766993435294689","1"],["10563145276246556167251266940983713836983353612328558772303124927691664156899","2616558326981052893709586076874614092863821880643566581381007373768403860901","1"],["15184278740020277201925135015349503420270555323981985575212968359309496269142","1468293214212864664526510762088124689848596060436176877362217677074693065773","1"],["19785639545597731542415816464816759682230508364987412262026389865694241990596","11772539240088553199839850011898116483861720154587420531252816207763642539049","1"],["14095253590681593856137280868393735261834257683255982683417802578973210834049","7966383194514143157083082055062690325204879363702221972296698746314357344446","1"],["7897699527875351541164200903959779699641805279441198102446759126649329369445","3576684754423211008589974598524104854393742011138235746050634434696855089728","1"],["13776062563504354074402008629681172027432817007037635489992737802265981833913","9208931527438627722039091258263986517965469610452782918448794685988516281743","1"],["13579500065972313473050320392445525506527108430024191347179802316526366036517","21253609226842335670161240865244133222069649122393389829016851567775985129052","1"],["6639234686554375947682991805475692801762445473927734985416680304587417215262","3991283561247617117530986995456557145573524159259861664095272115233294877303","1"],["13818594195792284085946049324359399612146332002375692489759776982363916993409","2471289046809835385030591428857283755360034127031001211245270201624256349830","1"],["5195843760388812906391091266881170939812306563623003537398541448555186569432","3412158553377049855160595230734758237978872549773064121535212427140728566797","1"],["7967819595895397309648303619403872080856376470477537904721069864154241274705","5897561636287562607709447699976582560521948781277565391071363528260551784603","1"],["15911765380892207264224499328545164120594507512064728765904531460648041369662","787517385162014225892065790188027668114959403557508119769482122656680643250","1"],["1027423153990746964036084380067741915773372145745994791694044175573059959527","11940085710882650114207559965220747058845597041480443163671578476557875713913","1"],["2731594449966180058583044779391386049255198710444205602508304249025896144505","17920587682230123107211399595561565076454167135919007788885929772094773302668","1"],["12668276530816525286267238131051363684409211295014089260608527225837542745810","5240200202231736404122306640353455915124740986989347330134178800676395949595","1"],["9285929778475792934041293042069386840381645461406766710782542978433586893385","5668454156412005974805070329340435218917297467510738493268468777416880901625","1"],["8821447508073956136944773533714254120627443799468941596133211091279178550401","13585797737095675134344018293567247482106572209424009350149629263800758420102","1"],["3080679976311795917467562427499070959268163062493495865725170533827284239068","14593011551937056185652931260917185626484345843943618430506919561902360907755","1"],["10795852780725016502819894878025199370190982049346331748035750303398333900409","1412292950676899116435145728625560393264686348384496964352992923607593147189","1"],["20692969296886102445957492708247413529448131357938168687758231888173040654243","1607864509278376547145096131994225412744213125248674010754172990532201354307","1"],["10617605123934413647677730591861801537897919033438720876800738474823675802083","8214914608341206918502791014266904352320310707093393329106138057359888932072","1"],["6176432869085422422526166475330835055762827916118350027935053430463692256472","13702948379065247073302293645680397537656426882660093586344961376482523882007","1"],["7890050901494140369189401019297993442798160375314401916974034214574288527283","21206345756545883853435849661742530391937365315615266566078123385515352166643","1"],["20974803561923595857175894480382526718804715841226572163861400462472484590135","5993616732303050553291138288983910009407539153223899356635528337965249925440","1"],["5807807738215164783897271467669547953530680440253524657610550556018613404272","19117479052412772314368787647382029076000863515015374644202684502865908295666","1"],["15628210857618043996352292226161081608608558801865516953019444971744104874735","5698983184821373392684159919866475018804696536214687518211970478217717955858","1"],["2890853012420137090509763475296688149295688081133473668467062945246717018862","19069508657900695492115689084812608056505146010158047544574733693554548288466","1"],["12225569061545229525346752712712813656124459765399300720219190587103655404379","17850391459752873050832377315007725389707948453966931405014774868542096741355","1"],["2081923461418605462624396828786250781950495951523961999915769113332337776118","3854131308661142336609345591680169784772200462838796416821046538612546807259","1"],["5023986245592831702666252993143310795196356311893484485224688331892937104442","12040217849826845773549477732882829643971261334058771574120257613369809991013","1"],["18439056847116914564099066467682415074020201862361143934183719269497211806163","19137459331975128426092584663855784508663866522681765740790640358586989026371","1"],["16930181887351418743197368269306130353904839126897291053270264047986382539850","16812127132710472611968313153520909152475879565616524901653369590016818702935","1"],["1985750179666144173532529354655616178273677415585419817053149831631891433762","1673560080797817326968604585392863896447411941444074303174321122369003500387","1"],["2906029940108900901224443748508289472402617391602639032982826999561383551448","3038073167723216936495797388425001381787718394266740508681285582903629562701","1"],["10600358071781540008246426618818607541258297879755604938612666644644755434843","7496408733087419959454878222336277888035333779250145115024424365866808207917","1"],["4059276859258000042443941938871621127259412525236154697196957657471759662712","15739465843685338130521128866693760407818257782938374993392778556385120122737","1"],["2836549040081554898345626425062878889751972273658626600559371919298547145318","11768337895053700117808980116597756723447910704537145564765988971554379235073","1"],["14151341318251849540103449187282725306078568185415653322299396695808167244030","9542566312717823469500804397032505363087539834525718291981304170300381158543","1"],["5709264017625791173029187757008087983817647980117148292825844562806018637142","2482804555488276007259947550395897626725621886089953015543672792818205551489","1"],["21071605053399985845288976785842301038254028099612878992772424054075763321038","8631413633769689196051451594693262251076792166385757832845960417406816722537","1"],["9220859300650046394105505944105450027419743773424493231505632458863483778259","9711412846641309409083876948270034701637130325164558236001478235247531694972","1"],["17994601596709629393539256610668589758727793105153653782887465256233232456253","7475752631028806416499884413235470836317133499558726985732685274343986183464","1"],["18977885990932429209285638808220304838556931653409340847526972170146662297872","13351362580053080376123621951112052788057385659189036506081236096990262740578","1"],["10241076981983939802049804229512130522088399505772400942441090180066413209852","5946911573891581595266895143515686083782043780309160092054429316622053922965","1"],["3848850323226645373402950765757638006758770739606307620476531040957651743116","7456857062310952704930870234398370694604593048379848971198494241898952226393","1"],["14849648686972398949937441172022532852156165459758524813856298846739086994934","4451386356622100727662964825813304043484446095581588789937099031094408023807","1"],["20673202716934864016695820820404588294343615305743440637521129181664291729293","18909774043608280728026121941902314689660831632623850189279642194308007998083","1"],["15449079938796813147063868651605400844184249820918382112809498957376905685896","12736289723389728429445180488994371365097796128647647975085336472810697186693","1"],["13863800706127241554797147608120275560767386666977748507630426548461719731235","45856412877194369896039001913769563797410784373616315238759467097189980613","1"],["5601760751901983970798630812851810175571993218667049983120299272347987682047","17435363957287990825578326808165722139349464699294371593757458259213428215862","1"],["14840776265765818688023682706764302823883254282359340003118587448659206111137","15798892407855417356648111942927003337604665452612223987576018736892602257301","1"],["10429528295987883304714496865650923606623401596892441418161345212999742441631","2134951714607625793759338528065263322805403205627339721989245717968879389953","1"],["21452789586103676328134460467642354391649718920945945359934467093873330947538","17309748395776729603852870022304301637317112984846307790880992979272524294647","1"],["19872393529562271127993996124271445560038545840260246769515134806463666547941","14611191716723900837664755637539201408645854424369070667267784854976572709391","1"],["12930677762933189938066997847653456308878512759108854403971556430711787672751","4632046687849924297305240463225904398276951029830170550323590056164720692823","1"],["12231843907080004002447641410461298755685571225975026508865166905683479559705","5414633577034916860399959946262982930422869357267368406863125295188022727450","1"],["21479622256801954446320201877887005836810654424245999841530743299069544967348","12430255711243943288779902270088909082538488146745875053169029764095601592872","1"],["15651436529601779227627570265282282848952298125917847136918169640212403489303","7974245934239007955105941492751554581635925169577113252752905799917721925419","1"],["3346246067339377803895897682354892575318193985224086272865539485952200889906","10339800702093961818055599671355001300388121748389634953953944286983040752393","1"]],"vk_a":[["136825459303452369861006826316692374410732060160086572689497979540261777437","17679127447307655354426606191659092325446219544358832102868250487361533413671"],["20818787510104357822195829419304485778969084614298528173484004195597907349727","4756527638556932664429834434865924152388202595838631141121172593619903356024"],["1","0"]],"vk_b":["2001564732134106630694347752179418068654621960460466512435483472728444324128","7177473316342309252983651356124396854633508724094258314909323781350812297286","1"],"vk_c":[["13715511178519359853998382728760994799774978236501669033378673279413155594727","1950989520617657052149028819118562081768286072271746508910743705847801993143"],["10370088775825404976138940932978057879093802714435010340968091996877591066553","8405368454455457385876420252626621445998572898535367089857140855942539649556"],["1","0"]],"vk_gb_1":["6865887987953067581250768221359686102760744255984863310408011889265810891473","20823754595825239221996716504985370438646119447207685147738803058998696702325","1"],"vk_gb_2":[["20447444030558093866806494628681243825509715925122323445265253583889092612356","14039154630594430623762503181939675192625877930702458476102425771761188139758"],["19625813420290148379928108009446556914592171244847236382511207367765650926762","17338396992838993382427916552846880785403767362482622779824224939902317547234"],["1","0"]],"vk_g":[["1159182075389839895784653365857764158739637846517391702208226379091329007995","2534082052977844723901038594445993947856131643094615758506477376432640214165"],["1286983771084465407409475744725860549949642794083685585766169500593696083020","11645645293133248655966594565186215689608671960131594768685004640860273839679"],["1","0"]],"vk_z":[["2893395991600938852331738625896390031153405304878270605553174457896013129577","17209208804443334909963449788339630211879198059325127166450723688705179361916"],["21533361155444907945940772754659589233666943966332081357868660203981758148155","6840346712604530522166826991074657164372328127359111901949775843309478968766"],["1","0"]]} \ No newline at end of file diff --git a/zkrsa/frontend/__tests__/components/Buttons.test.tsx b/zkrsa/frontend/__tests__/components/Buttons.test.tsx new file mode 100644 index 000000000..aab469bf8 --- /dev/null +++ b/zkrsa/frontend/__tests__/components/Buttons.test.tsx @@ -0,0 +1,68 @@ +import { + ButtonGenerateProof, + ButtonExportProof, +} from '../../src/components/Buttons'; +import { render } from '@testing-library/react'; +import React from 'react'; + +const setpublicSignals = jest.fn(() => {}); +const setproof = jest.fn(() => {}); +const setcompiledCircuit = jest.fn(() => {}); + +jest.spyOn(React, 'useEffect').mockImplementation((f) => null); + +describe('Testing buttons', () => { + describe('ButtonGenerateProof', () => { + it('disables button when vkeyProof && hash && signature && publicKey is falsy', () => { + //@dev: mocking useEffect for now (custom Worker implem) + const { container } = render( + + ); + const button = container.querySelector('button'); + expect(button).toBeDisabled(); + }); + it('enables button when vkeyProof && hash && signature && publicKey is truthy', () => { + const { container } = render( + + ); + const button = container.querySelector('button'); + expect(button).toBeEnabled(); + }); + }); + describe('Testing ButtonExportProof', () => { + it("displays a 'Download' text when there are proof and public signals", () => { + const { container } = render( + + ); + const buttonLink = container.querySelector('a'); + expect(buttonLink?.text).toEqual('Download'); + }); + it('does not display anything when there are no proof and public signals', () => { + const { container } = render( + + ); + expect(container.children).toHaveLength(0); + }); + }); +}); diff --git a/zkrsa/frontend/__tests__/components/GenerateKeyPair.test.tsx b/zkrsa/frontend/__tests__/components/GenerateKeyPair.test.tsx new file mode 100644 index 000000000..06f3c8c5a --- /dev/null +++ b/zkrsa/frontend/__tests__/components/GenerateKeyPair.test.tsx @@ -0,0 +1,34 @@ +import { render } from '@testing-library/react'; +import bigInt from 'big-integer'; +import { + KeyPairDisplay, + GenerateKeyPair, +} from '../../src/components/GenerateKeyPair'; + +const setkeyPair = jest.fn(() => {}); +const setjsonPublicKey = jest.fn(() => {}); +const keyPair = { n: '12345' }; +const keyPairText = bigInt( + Buffer.from(keyPair.n, 'base64').toString('hex'), + 16 +).toString(); + +describe('Testing GenerateKeyPair', () => { + describe('KeyPairDisplay', () => { + it('displays correctly the keypair', () => { + const { container } = render(); + expect(container).toHaveTextContent(keyPairText); + }); + }); + describe('GenerateKeyPair', () => { + it('displays a button to generate a keypair', () => { + const { container } = render( + + ); + expect(container).toHaveTextContent('Generate key pair'); + }); + }); +}); diff --git a/zkrsa/frontend/__tests__/components/Hashing.test.tsx b/zkrsa/frontend/__tests__/components/Hashing.test.tsx new file mode 100644 index 000000000..10f7bcd03 --- /dev/null +++ b/zkrsa/frontend/__tests__/components/Hashing.test.tsx @@ -0,0 +1,21 @@ +import { render } from '@testing-library/react'; +import { HashMessage } from '../../src/components/Hashing'; +import React from 'react'; + +jest.spyOn(React, 'useEffect').mockImplementation((f) => {}); + +describe('Testing Hashing', () => { + describe('HashMessage', () => { + it('displays hash value to user', () => { + const { container } = render( + {}} + setuserText={() => {}} + userText={'hello'} + hashValue={'someHash'} + /> + ); + expect(container).toHaveTextContent('someHash'); + }); + }); +}); diff --git a/zkrsa/frontend/__tests__/components/Inputs.test.tsx b/zkrsa/frontend/__tests__/components/Inputs.test.tsx new file mode 100644 index 000000000..f297e45f3 --- /dev/null +++ b/zkrsa/frontend/__tests__/components/Inputs.test.tsx @@ -0,0 +1,116 @@ +import { render, screen } from '@testing-library/react'; +import { + InputHash, + InputProof, + InputPublicKey, + InputSignature, + InputText, +} from '../../src/components/Inputs'; +import { InputInvalidity, isValidIntegerInput } from '../../src/utils/inputs'; +import userEvent from '@testing-library/user-event'; +import { + validProofFile, + correctFileName, + invalidProofFile, + invalidProofFileError, +} from '../../jest/setup'; + +const mockSetValue = jest.fn((value: string) => {}); +const mockSetError = jest.fn((value: string) => {}); + +describe('Testing Inputs', () => { + describe('InputText', () => { + it('should invite the user to enter text', () => { + const { container } = render( {}} />); + expect(container).toHaveTextContent('Enter text'); + }); + }); + describe('InputHash', () => { + it('should display error message on invalid hash', async () => { + const { container } = render( {}} />); + const input = container.getElementsByTagName('input'); + await userEvent.type(input[0], 'a1234'); + const element = await screen.findByText( + InputInvalidity.INVALID_CHARACTER + ); + expect(element).toHaveTextContent( + InputInvalidity.INVALID_CHARACTER + ); + }); + }); + describe('InputSignature', () => { + it('should display error message on invalid input signature', async () => { + const { container } = render( + {}} /> + ); + const input = container.getElementsByTagName('input'); + await userEvent.type(input[0], 'a1234'); + const element = await screen.findByText( + InputInvalidity.INVALID_CHARACTER + ); + expect(element).toHaveTextContent( + InputInvalidity.INVALID_CHARACTER + ); + }); + }); + describe('InputPublicKey', () => { + it('should display error message on invalid input public key', async () => { + const { container } = render( + {}} /> + ); + const input = container.getElementsByTagName('input'); + await userEvent.type(input[0], 'a1234'); + const element = await screen.findByText( + InputInvalidity.INVALID_CHARACTER + ); + expect(element).toHaveTextContent( + InputInvalidity.INVALID_CHARACTER + ); + }); + }); + describe('InputProof', () => { + it('should display filename upon valid proof file', async () => { + const { container } = render( + {}} /> + ); + const input = container.getElementsByTagName('input'); + await userEvent.upload(input[0], validProofFile); + const findFileName = await screen.findByText(correctFileName); + }); + it('should display error feedback upon invalid proof file', async () => { + const user = userEvent.setup(); + render( {}} />); + const input = screen.getByTitle('input-proof-file'); + await user.upload(input, invalidProofFile); + const findProofError = await screen.findByText( + invalidProofFileError + ); + }); + }); + describe('isValidIntegerInput', () => { + it('should set state when input is valid', () => { + const validInput = '1234'; + const isValid = isValidIntegerInput( + validInput, + mockSetValue, + mockSetError + ); + expect(isValid).toEqual(true); + expect(mockSetValue).toHaveBeenCalledWith(validInput); + expect(mockSetError).toHaveBeenCalledWith(null); + mockSetError.mockClear(); + }); + it('should set error when input is invalid', () => { + const validInput = 'ab123'; + const isValid = isValidIntegerInput( + validInput, + mockSetValue, + mockSetError + ); + expect(isValid).toEqual(false); + expect(mockSetError).toHaveBeenCalledWith( + InputInvalidity.INVALID_CHARACTER + ); + }); + }); +}); diff --git a/zkrsa/frontend/__tests__/pages/verify.test.tsx b/zkrsa/frontend/__tests__/pages/verify.test.tsx new file mode 100644 index 000000000..b77390c5b --- /dev/null +++ b/zkrsa/frontend/__tests__/pages/verify.test.tsx @@ -0,0 +1,27 @@ +import { screen, render } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; +import Verify from '../../src/pages/verify'; +import proof from '../../__mocks__/proofs/correct.json'; +import verifier from '../../__mocks__/vk/verifier.json'; + +import { validity, downloadVerifier } from '../../src/utils/zk'; +import { Proof } from '../../src/types'; + +jest.mock('../../src/utils/zk', () => { + const zk = jest.requireActual('../../src/utils/zk'); + return { + ...zk, + downloadVerifier: jest.fn((url: string) => verifier), + }; +}); +describe('Testing verify page', () => { + it('Test validity function', async () => { + const downloadedVerifier = await downloadVerifier('from-test'); + const isValid = await validity( + downloadedVerifier, + proof.proof, + proof.publicSignals + ); + expect(isValid).toBe(true); + }); +}); diff --git a/zkrsa/frontend/dist/output.css b/zkrsa/frontend/dist/output.css new file mode 100644 index 000000000..b738c0739 --- /dev/null +++ b/zkrsa/frontend/dist/output.css @@ -0,0 +1,571 @@ +/* +! tailwindcss v3.1.8 | MIT License | https://tailwindcss.com +*/ + +/* +1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4) +2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116) +*/ + +*, +::before, +::after { + box-sizing: border-box; + /* 1 */ + border-width: 0; + /* 2 */ + border-style: solid; + /* 2 */ + border-color: #e5e7eb; + /* 2 */ +} + +::before, +::after { + --tw-content: ''; +} + +/* +1. Use a consistent sensible line-height in all browsers. +2. Prevent adjustments of font size after orientation changes in iOS. +3. Use a more readable tab size. +4. Use the user's configured `sans` font-family by default. +*/ + +html { + line-height: 1.5; + /* 1 */ + -webkit-text-size-adjust: 100%; + /* 2 */ + -moz-tab-size: 4; + /* 3 */ + -o-tab-size: 4; + tab-size: 4; + /* 3 */ + font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, + 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, + 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', + 'Noto Color Emoji'; + /* 4 */ +} + +/* +1. Remove the margin in all browsers. +2. Inherit line-height from `html` so users can set them as a class directly on the `html` element. +*/ + +body { + margin: 0; + /* 1 */ + line-height: inherit; + /* 2 */ +} + +/* +1. Add the correct height in Firefox. +2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655) +3. Ensure horizontal rules are visible by default. +*/ + +hr { + height: 0; + /* 1 */ + color: inherit; + /* 2 */ + border-top-width: 1px; + /* 3 */ +} + +/* +Add the correct text decoration in Chrome, Edge, and Safari. +*/ + +abbr:where([title]) { + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; +} + +/* +Remove the default font size and weight for headings. +*/ + +h1, +h2, +h3, +h4, +h5, +h6 { + font-size: inherit; + font-weight: inherit; +} + +/* +Reset links to optimize for opt-in styling instead of opt-out. +*/ + +a { + color: inherit; + text-decoration: inherit; +} + +/* +Add the correct font weight in Edge and Safari. +*/ + +b, +strong { + font-weight: bolder; +} + +/* +1. Use the user's configured `mono` font family by default. +2. Correct the odd `em` font sizing in all browsers. +*/ + +code, +kbd, +samp, +pre { + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, + 'Liberation Mono', 'Courier New', monospace; + /* 1 */ + font-size: 1em; + /* 2 */ +} + +/* +Add the correct font size in all browsers. +*/ + +small { + font-size: 80%; +} + +/* +Prevent `sub` and `sup` elements from affecting the line height in all browsers. +*/ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* +1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297) +2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016) +3. Remove gaps between table borders by default. +*/ + +table { + text-indent: 0; + /* 1 */ + border-color: inherit; + /* 2 */ + border-collapse: collapse; + /* 3 */ +} + +/* +1. Change the font styles in all browsers. +2. Remove the margin in Firefox and Safari. +3. Remove default padding in all browsers. +*/ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; + /* 1 */ + font-size: 100%; + /* 1 */ + font-weight: inherit; + /* 1 */ + line-height: inherit; + /* 1 */ + color: inherit; + /* 1 */ + margin: 0; + /* 2 */ + padding: 0; + /* 3 */ +} + +/* +Remove the inheritance of text transform in Edge and Firefox. +*/ + +button, +select { + text-transform: none; +} + +/* +1. Correct the inability to style clickable types in iOS and Safari. +2. Remove default button styles. +*/ + +button, +[type='button'], +[type='reset'], +[type='submit'] { + -webkit-appearance: button; + /* 1 */ + background-color: transparent; + /* 2 */ + background-image: none; + /* 2 */ +} + +/* +Use the modern Firefox focus style for all focusable elements. +*/ + +:-moz-focusring { + outline: auto; +} + +/* +Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737) +*/ + +:-moz-ui-invalid { + box-shadow: none; +} + +/* +Add the correct vertical alignment in Chrome and Firefox. +*/ + +progress { + vertical-align: baseline; +} + +/* +Correct the cursor style of increment and decrement buttons in Safari. +*/ + +::-webkit-inner-spin-button, +::-webkit-outer-spin-button { + height: auto; +} + +/* +1. Correct the odd appearance in Chrome and Safari. +2. Correct the outline style in Safari. +*/ + +[type='search'] { + -webkit-appearance: textfield; + /* 1 */ + outline-offset: -2px; + /* 2 */ +} + +/* +Remove the inner padding in Chrome and Safari on macOS. +*/ + +::-webkit-search-decoration { + -webkit-appearance: none; +} + +/* +1. Correct the inability to style clickable types in iOS and Safari. +2. Change font properties to `inherit` in Safari. +*/ + +::-webkit-file-upload-button { + -webkit-appearance: button; + /* 1 */ + font: inherit; + /* 2 */ +} + +/* +Add the correct display in Chrome and Safari. +*/ + +summary { + display: list-item; +} + +/* +Removes the default spacing and border for appropriate elements. +*/ + +blockquote, +dl, +dd, +h1, +h2, +h3, +h4, +h5, +h6, +hr, +figure, +p, +pre { + margin: 0; +} + +fieldset { + margin: 0; + padding: 0; +} + +legend { + padding: 0; +} + +ol, +ul, +menu { + list-style: none; + margin: 0; + padding: 0; +} + +/* +Prevent resizing textareas horizontally by default. +*/ + +textarea { + resize: vertical; +} + +/* +1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300) +2. Set the default placeholder color to the user's configured gray 400 color. +*/ + +input::-moz-placeholder, +textarea::-moz-placeholder { + opacity: 1; + /* 1 */ + color: #9ca3af; + /* 2 */ +} + +input::placeholder, +textarea::placeholder { + opacity: 1; + /* 1 */ + color: #9ca3af; + /* 2 */ +} + +/* +Set the default cursor for buttons. +*/ + +button, +[role='button'] { + cursor: pointer; +} + +/* +Make sure disabled buttons don't get the pointer cursor. +*/ + +:disabled { + cursor: default; +} + +/* +1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14) +2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210) + This can trigger a poorly considered lint error in some tools but is included by design. +*/ + +img, +svg, +video, +canvas, +audio, +iframe, +embed, +object { + display: block; + /* 1 */ + vertical-align: middle; + /* 2 */ +} + +/* +Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14) +*/ + +img, +video { + max-width: 100%; + height: auto; +} + +*, +::before, +::after { + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; +} + +::-webkit-backdrop { + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; +} + +::backdrop { + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; +} + +.font-sans { + font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, + 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, + 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', + 'Noto Color Emoji'; +} + +.font-mono { + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, + 'Liberation Mono', 'Courier New', monospace; +} diff --git a/zkrsa/frontend/jest.config.js b/zkrsa/frontend/jest.config.js new file mode 100644 index 000000000..138f5509c --- /dev/null +++ b/zkrsa/frontend/jest.config.js @@ -0,0 +1,15 @@ +const nextJest = require('next/jest') + +const createJestConfig = nextJest({ + dir: './', +}) + +// Add any custom config to be passed to Jest +/** @type {import('jest').Config} */ +const customJestConfig = { + moduleDirectories: ['node_modules', '/'], + testEnvironment: 'jest-environment-jsdom', + setupFilesAfterEnv: ['/jest/setup.ts'], +} + +module.exports = createJestConfig(customJestConfig) diff --git a/zkrsa/frontend/jest/setup.ts b/zkrsa/frontend/jest/setup.ts new file mode 100644 index 000000000..1e82fe545 --- /dev/null +++ b/zkrsa/frontend/jest/setup.ts @@ -0,0 +1,21 @@ +import '@testing-library/jest-dom'; +import { TextEncoder, TextDecoder } from 'util'; +import fs from 'fs'; +import { InputInvalidity } from '../src/utils/inputs'; + +global.TextEncoder = TextEncoder; +//@ts-ignore +global.TextDecoder = TextDecoder; + +export const validProof = fs.readFileSync('__mocks__/proofs/correct.json'); +export const invalidProof = fs.readFileSync('__mocks__/proofs/incorrect.json'); +export const verifier = fs.readFileSync('__mocks__/vk/verifier.json'); +export const correctFileName = 'correctProof.json'; +export const validProofFile = new File([validProof], correctFileName, { + type: 'json', +}); +export const incorrectFileName = 'incorrectProof.json'; +export const invalidProofFile = new File([invalidProof], incorrectFileName, { + type: 'json', +}); +export const invalidProofFileError = `${incorrectFileName} ${InputInvalidity.INVALID_PROOF_FILE}`; diff --git a/zkrsa/frontend/next.config.js b/zkrsa/frontend/next.config.js new file mode 100644 index 000000000..13dbe9ae6 --- /dev/null +++ b/zkrsa/frontend/next.config.js @@ -0,0 +1,13 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = { + reactStrictMode: true, + swcMinify: true, +} + +const withBundleAnalyzer = require('@next/bundle-analyzer')({ + enabled: process.env.ANALYZE === 'true', +}) + +module.exports = withBundleAnalyzer({ + ...nextConfig, +}) diff --git a/zkrsa/frontend/package.json b/zkrsa/frontend/package.json new file mode 100644 index 000000000..694859fe7 --- /dev/null +++ b/zkrsa/frontend/package.json @@ -0,0 +1,52 @@ +{ + "name": "zkrsa-ui", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint", + "analyze": "ANALYZE=true next build", + "test": "jest", + "format": "prettier --write {src,__tests__}/" + }, + "dependencies": { + "@emotion/react": "^11.10.5", + "@emotion/styled": "^11.10.5", + "@mui/material": "^5.10.12", + "axios": "^1.1.3", + "circom": "0.5.45", + "next": "12.3.1", + "react": "18.2.0", + "react-dom": "18.2.0" + }, + "devDependencies": { + "@next/bundle-analyzer": "^13.0.2", + "@testing-library/jest-dom": "^5.16.5", + "@testing-library/react": "^13.4.0", + "@testing-library/user-event": "^14.4.3", + "@types/jest": "^29.2.2", + "@types/node": "18.8.0", + "@types/react": "18.0.21", + "@types/react-dom": "18.0.6", + "@types/react-spinner": "^0.2.0", + "arraybuffer-to-string": "^1.0.2", + "autoprefixer": "^10.4.12", + "big-integer": "^1.6.51", + "eslint": "8.24.0", + "eslint-config-next": "12.3.1", + "jest": "^29.3.1", + "jest-environment-jsdom": "^29.3.1", + "postcss": "^8.4.17", + "prettier": "2.7.1", + "pretty-quick": "^3.1.3", + "quicktype": "^15.1.0", + "react-spinners": "^0.13.6", + "snarkjs": "0.1.16", + "tailwindcss": "^3.1.8", + "ts-jest": "^29.0.3", + "ts-node": "^10.9.1", + "typescript": "4.8.4" + } +} diff --git a/zkrsa/frontend/postcss.config.js b/zkrsa/frontend/postcss.config.js new file mode 100644 index 000000000..fef1b2256 --- /dev/null +++ b/zkrsa/frontend/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/zkrsa/frontend/public/github.png b/zkrsa/frontend/public/github.png new file mode 100644 index 000000000..628da97c7 Binary files /dev/null and b/zkrsa/frontend/public/github.png differ diff --git a/zkrsa/frontend/src/components/Buttons.tsx b/zkrsa/frontend/src/components/Buttons.tsx new file mode 100644 index 000000000..92399ca8c --- /dev/null +++ b/zkrsa/frontend/src/components/Buttons.tsx @@ -0,0 +1,216 @@ +import { + Dispatch, + FunctionComponent, + SetStateAction, + useEffect, + useRef, + useState, +} from 'react'; +import { splitToWords } from '../utils/crypto'; +//@ts-ignore +import snarkjs from 'snarkjs'; + +//@ts-ignore +import axios from 'axios'; +import CircularProgress from '@mui/material/CircularProgress'; +import { createTheme, ThemeProvider } from '@mui/material/styles'; +import { + SetVkeyProof, + PropsButtonGenerateProof, + Proof, + PropsButtonExportProof, +} from '../types'; + +const exp = '65537'; +const devHash = process.env['NEXT_PUBLIC_HASH'] as string | null; +const devSignature = process.env['NEXT_PUBLIC_SIGNATURE'] as string | null; +const devPublicKey = process.env['NEXT_PUBLIC_MODULUS'] as string | null; + +export const theme = createTheme({ + palette: { + primary: { + main: '#EFAD5F', + }, + }, +}); + +export const ButtonGenerateProof: FunctionComponent< + PropsButtonGenerateProof +> = ({ setpublicSignals, setproof, hash, signature, publicKey, vkeyProof }) => { + const buttonDisabled = hash && signature && publicKey ? false : true; + const [loading, setloading] = useState(false); + const workerRef = useRef(); + const [currentStep, setcurrentStep] = useState(''); + const [errorMessage, seterrorMessage] = useState(null); + useEffect(() => { + workerRef.current = new Worker( + new URL('../worker/generateProof.ts', import.meta.url) + ); + workerRef.current.onmessage = ( + e: MessageEvent<{ proof: Proof; publicSignals: string[] }> + ) => { + setproof(e.data.proof); + setpublicSignals(e.data.publicSignals); + setloading(false); + }; + return () => { + workerRef.current?.terminate(); + }; + }, [setproof, setpublicSignals]); + + return ( +
+ {loading ? ( +
+
+ + + +
+
+ {currentStep} +
+
+ ) : ( +
+ +
{errorMessage}
+
+ )} +
+ ); +}; + +export const ButtonExportProof: FunctionComponent = ({ + proof, + publicSignals, +}) => { + return ( + <> + {proof ? ( + + ) : null} + + ); +}; + +interface ButtonInitializeVerifier { + setvkeyState: Dispatch>; + setvkeyProof: SetVkeyProof; + setvkeyVerifier: Dispatch>; +} + +export const ButtonInitializeVerifier: FunctionComponent< + ButtonInitializeVerifier +> = ({ setvkeyState, setvkeyProof, setvkeyVerifier }) => { + const [disabled, setdisabled] = useState(false); + const [loading, setloading] = useState(false); + const [buttonText, setbuttonText] = useState('Initialize'); + return ( +
+ {loading ? ( +
+ + + +
+ ) : ( + + )} +
+ ); +}; diff --git a/zkrsa/frontend/src/components/GenerateKeyPair.tsx b/zkrsa/frontend/src/components/GenerateKeyPair.tsx new file mode 100644 index 000000000..c83d55cef --- /dev/null +++ b/zkrsa/frontend/src/components/GenerateKeyPair.tsx @@ -0,0 +1,54 @@ +import bigInt from 'big-integer'; +import { Dispatch, FunctionComponent, SetStateAction, useState } from 'react'; +import { generateRSAKeyPair } from '../utils/crypto'; + +interface GenerateKeyPair { + setkeyPair: Dispatch>; + setjsonPublicKey: Dispatch>; +} + +interface KeyPairDisplay { + keypair: null | JsonWebKey; +} + +export const KeyPairDisplay: FunctionComponent = ({ + keypair, +}) => { + const hexPubKey = keypair + ? bigInt( + Buffer.from(keypair.n!, 'base64').toString('hex'), + 16 + ).toString() + : null; + return ( + <> +
{hexPubKey}
+ + ); +}; + +export const GenerateKeyPair: FunctionComponent = ({ + setkeyPair, + setjsonPublicKey, +}) => { + return ( + <> +
+ +
+ + ); +}; diff --git a/zkrsa/frontend/src/components/Hashing.tsx b/zkrsa/frontend/src/components/Hashing.tsx new file mode 100644 index 000000000..62bfb5d7d --- /dev/null +++ b/zkrsa/frontend/src/components/Hashing.tsx @@ -0,0 +1,53 @@ +import bigInt from 'big-integer'; +import { FunctionComponent, useEffect } from 'react'; +import { hash } from '../utils/crypto'; +import { InputText } from './Inputs'; +//@ts-ignore +import * as ab2str from 'arraybuffer-to-string'; +import { PropsHashMessage, PropsHashText } from '../types'; + +const HashText: FunctionComponent = ({ + text, + hashValue, + sethashValue, +}) => { + useEffect(() => { + (async function () { + if (text) { + const hashValue = await hash(text, new TextEncoder()); + const digestDecimal = bigInt( + ab2str(hashValue, 'hex'), + 16 + ).toString(); + sethashValue(digestDecimal); + } else { + sethashValue(null); + } + })(); + }, [text, sethashValue]); + + return ( + <> +
Message: {text}
+
Hash: {hashValue}
+ + ); +}; + +export const HashMessage: FunctionComponent = ({ + sethashValue, + setuserText, + userText, + hashValue, +}) => { + return ( + <> + + + + ); +}; diff --git a/zkrsa/frontend/src/components/Inputs.tsx b/zkrsa/frontend/src/components/Inputs.tsx new file mode 100644 index 000000000..003b225d4 --- /dev/null +++ b/zkrsa/frontend/src/components/Inputs.tsx @@ -0,0 +1,184 @@ +import { ChangeEvent, Fragment, FunctionComponent, useState } from 'react'; +import { + PropsInputHash, + PropsInputProof, + PropsInputPublicKey, + PropsInputSignature, + PropsTextInput, +} from '../types'; +import { + InputInvalidity, + isValidIntegerInput, + validateProofJSON, +} from '../utils/inputs'; + +export const textEncoder = new TextEncoder(); + +export const InputText: FunctionComponent = ({ + setuserText, +}) => { + return ( +
+
Enter text
+ setuserText(e.target.value)} + /> +
+ ); +}; + +export const InputHash: FunctionComponent = ({ sethash }) => { + const [invalidHash, setinvalidHash] = useState(null); + return ( +
+
+ Enter hash:{' '} +
+ + isValidIntegerInput(e.target.value, sethash, setinvalidHash) + } + /> +
+ {invalidHash ? invalidHash :  } +
+
+ ); +}; + +export const InputSignature: FunctionComponent = ({ + setsignature, +}) => { + const [invalidSignature, setinvalidSignature] = useState( + null + ); + return ( +
+
+ Enter signature:{' '} +
+ + isValidIntegerInput( + e.target.value, + setsignature, + setinvalidSignature + ) + } + /> +
+ {invalidSignature ? ( + invalidSignature + ) : ( +   + )} +
+
+ ); +}; + +export const InputPublicKey: FunctionComponent = ({ + setpublicKey, +}) => { + const [invalidPublicKey, setinvalidPublicKey] = useState( + null + ); + + return ( +
+
+ Enter public key:{' '} +
+ + isValidIntegerInput( + e.target.value, + setpublicKey, + setinvalidPublicKey + ) + } + /> +
+ {invalidPublicKey ? ( + invalidPublicKey + ) : ( +   + )} +
+
+ ); +}; + +export const InputProof: FunctionComponent = ({ + setuploadedProof, +}) => { + const [fileInvalid, setfileInvalid] = useState( + null + ); + const [fileName, setfileName] = useState(null); + const handleChange = (e: ChangeEvent) => { + if (e.target.files) { + const fileReader = new FileReader(); + fileReader.readAsText(e.target.files[0], 'UTF-8'); + const userFilename = e.target.files[0].name; + fileReader.onload = (e) => { + if (e.target) { + try { + const proof = JSON.parse(e.target.result as string); + const isValid = validateProofJSON(proof); + setfileName(userFilename); + setuploadedProof(proof); + setfileInvalid(null); + } catch (error) { + setfileName(userFilename); + setuploadedProof(null); + setfileInvalid(InputInvalidity.INVALID_PROOF_FILE); + } + } + }; + } + }; + + return ( +
+
+ Upload proof:{' '} +
+
+
+ + +
+
+
+ {fileInvalid ? `${fileName} ${fileInvalid}` : fileName} +
+
+ ); +}; diff --git a/zkrsa/frontend/src/components/Navigation.tsx b/zkrsa/frontend/src/components/Navigation.tsx new file mode 100644 index 000000000..b5852dcdc --- /dev/null +++ b/zkrsa/frontend/src/components/Navigation.tsx @@ -0,0 +1,80 @@ +import { NextComponentType } from 'next'; +import Link from 'next/link'; +import Image from 'next/image'; +import github from '../../public/github.png'; + +export const NavMenu: NextComponentType = () => { + return ( + + ); +}; + +export const Title: NextComponentType = () => { + return ( +
+
+ zkRSA signature verification +
+
+ ); +}; + +export const Footer: NextComponentType = () => { + return ( + + ); +}; + +export const Description: NextComponentType = () => { + return ( +
+
+ Generate a zero-knowledge proof for a valid RSA signature. You + can generate a signature using our repo{' '} + + here + + . +
+
+ ); +}; diff --git a/zkrsa/frontend/src/components/Status.tsx b/zkrsa/frontend/src/components/Status.tsx new file mode 100644 index 000000000..e51a264be --- /dev/null +++ b/zkrsa/frontend/src/components/Status.tsx @@ -0,0 +1,13 @@ +import { FunctionComponent } from 'react'; +import { PropsStatusVKey } from '../types'; + +export const StatusVKey: FunctionComponent = ({ + vkey, + vkeyState, +}) => { + return ( +
+ {vkeyState} +
+ ); +}; diff --git a/zkrsa/frontend/src/pages/_app.tsx b/zkrsa/frontend/src/pages/_app.tsx new file mode 100644 index 000000000..519bbadcc --- /dev/null +++ b/zkrsa/frontend/src/pages/_app.tsx @@ -0,0 +1,28 @@ +import '../../styles/globals.css'; + +import type { AppProps } from 'next/app'; +import { useState } from 'react'; +import { Proof } from '../types'; + +function MyApp({ Component, pageProps }: AppProps) { + const [vkeyVerifier, setvkeyVerifier] = useState(null); + const [vkeyProof, setvkeyProof] = useState(null); // typing for vkey? + const [vkeyState, setvkeyState] = useState('Verifier not initialized'); + const [proof, setproof] = useState(null); + + return ( + + ); +} + +export default MyApp; diff --git a/zkrsa/frontend/src/pages/_document.tsx b/zkrsa/frontend/src/pages/_document.tsx new file mode 100644 index 000000000..f53b5c61b --- /dev/null +++ b/zkrsa/frontend/src/pages/_document.tsx @@ -0,0 +1,34 @@ +import { Html, Head, Main, NextScript } from 'next/document'; + +export default function Document() { + return ( + + + + + + + + + + +
+ + + + ); +} diff --git a/zkrsa/frontend/src/pages/generate.tsx b/zkrsa/frontend/src/pages/generate.tsx new file mode 100644 index 000000000..cefa8255b --- /dev/null +++ b/zkrsa/frontend/src/pages/generate.tsx @@ -0,0 +1,74 @@ +import { NextPage } from 'next'; +import { Title, NavMenu } from '../components/Navigation'; +import { HashMessage } from '../components/Hashing'; +import { GenerateKeyPair, KeyPairDisplay } from '../components/GenerateKeyPair'; +import { FunctionComponent, useEffect, useState } from 'react'; +import { sign } from '../utils/crypto'; +import bigInt from 'big-integer'; +//@ts-ignore +import ab2str from 'arraybuffer-to-string'; +import { PropsSignedMessage } from '../types'; + +export const SignedMessage: FunctionComponent = ({ + keypair, + message, + setSignedMessage, + signedMessage, +}) => { + useEffect(() => { + (async () => { + if (message && keypair) { + const signedMessage = await sign( + keypair, + message, + new TextEncoder() + ); + setSignedMessage(signedMessage); + } + })(); + }, [keypair, message, setSignedMessage]); + const displayText = signedMessage + ? bigInt(ab2str(signedMessage, 'hex'), 16).toString() + : ''; + return <>{displayText}; +}; + +/** + * Generate a new RSA key pair and sign a message with it. + * @returns + */ +const Generate: NextPage = () => { + const [userText, setuserText] = useState(null); + const [hashValue, sethashValue] = useState(null); + const [keyPair, setkeyPair] = useState(null); + const [jsonPublicKey, setjsonPublicKey] = useState(null); + const [signedMessage, setsignedMessage] = useState( + null + ); + + return ( +
+ + + + + + +
+ ); +}; + +export default Generate; diff --git a/zkrsa/frontend/src/pages/index.tsx b/zkrsa/frontend/src/pages/index.tsx new file mode 100644 index 000000000..cf064c893 --- /dev/null +++ b/zkrsa/frontend/src/pages/index.tsx @@ -0,0 +1,62 @@ +import type { NextPage } from 'next'; +import { useState } from 'react'; +import { ButtonGenerateProof, ButtonExportProof } from '../components/Buttons'; +import { + InputHash, + InputPublicKey, + InputSignature, +} from '../components/Inputs'; +import { NavMenu, Title, Description, Footer } from '../components/Navigation'; +import { PropsAppPage } from '../types'; +/** + * @dev for exporting json proof and public signals data + */ +(BigInt.prototype as any).toJSON = function () { + return this.toString(); +}; + +const Home: NextPage = ({ + proof, + setproof, + vkeyVerifier, + vkeyProof, +}) => { + const [hash, sethash] = useState(null); + const [signature, setsignature] = useState(null); + const [publicKey, setpublicKey] = useState(null); + const [publicSignals, setpublicSignals] = useState(null); + const [compiledCircuit, setcompiledCircuit] = useState(null); + + return ( +
+ + + +
+ + + +
+
+ + {proof ? ( + + ) : null} +
+
+
+ ); +}; +export default Home; diff --git a/zkrsa/frontend/src/pages/verify.tsx b/zkrsa/frontend/src/pages/verify.tsx new file mode 100644 index 000000000..44831ca60 --- /dev/null +++ b/zkrsa/frontend/src/pages/verify.tsx @@ -0,0 +1,70 @@ +import type { NextPage } from 'next'; +import { theme } from '../components/Buttons'; +import { Title, NavMenu, Description, Footer } from '../components/Navigation'; +import { useState } from 'react'; +import CircularProgress from '@mui/material/CircularProgress'; +import { ThemeProvider } from '@mui/material/styles'; +import { InputProof } from '../components/Inputs'; +import { DownloadableProof, PropsAppPage } from '../types'; +import { downloadVerifier, validity } from '../utils/zk'; + +const Verify: NextPage = ({}) => { + const [uploadedProof, setuploadedProof] = + useState(null); + const [proofValidity, setproofValidity] = useState(null); + const [verifying, setverifying] = useState(false); + + return ( +
+ + + +
+ +
+
+ {verifying ? ( + + + + ) : ( + + )} +
+ {proofValidity != null ? ( +
+ {proofValidity ? `Valid proof ✅` : `Invalid proof ❌`} +
+ ) : null} +
+
+ ); +}; + +export default Verify; diff --git a/zkrsa/frontend/src/types.ts b/zkrsa/frontend/src/types.ts new file mode 100644 index 000000000..f27afd5c9 --- /dev/null +++ b/zkrsa/frontend/src/types.ts @@ -0,0 +1,94 @@ +import { Dispatch, SetStateAction } from 'react'; + +export type SetProof = Dispatch>; +export type SetVkeyProof = Dispatch>; + +export interface PropsStatusVKey { + vkey: any | null; + vkeyState: string; +} + +export interface PropsButtonGenerateProof { + setpublicSignals: Dispatch>; + setproof: SetProof; + setcompiledCircuit: Dispatch>; + hash: string | null; + signature: string | null; + publicKey: string | null; + vkeyProof: null | any; + vkeyVerifier: null | any; +} + +export interface PropsAppPage { + proof: Proof; + setproof: SetProof; + vkeyState: string; + setvkeyState: Dispatch>; + vkeyVerifier: null | any; + setvkeyVerifier: Dispatch>; + vkeyProof: null | any; + setvkeyProof: SetVkeyProof; +} + +export interface PropsInputProof { + setuploadedProof: Dispatch>; +} + +export interface PropsHashMessage { + sethashValue: Dispatch>; + setuserText: Dispatch>; + userText: string | null; + hashValue: string | null; +} + +export interface PropsButtonExportProof { + proof: any; + publicSignals: any; +} + +export interface PropsHashText { + text: string | null; + hashValue: string | null; + sethashValue: Dispatch>; +} + +export interface PropsTextInput { + setuserText: Dispatch>; +} + +export interface PropsInputHash { + sethash: Dispatch>; +} + +export interface PropsInputSignature { + setsignature: Dispatch>; +} + +export interface PropsInputPublicKey { + setpublicKey: Dispatch>; +} + +export interface PropsSignedMessage { + keypair: CryptoKeyPair | null; + message: string | null; + setSignedMessage: Dispatch>; + signedMessage: null | ArrayBuffer; +} + +// @dev: generated with quicktype and tweaked +export interface Proof { + pi_a: string[]; + pi_ap: string[]; + pi_b: Array; + pi_bp: string[]; + pi_c: string[]; + pi_cp: string[]; + pi_kp: string[]; + pi_h: string[]; + protocol: string; +} + +export interface DownloadableProof { + proof: Proof; + publicSignals: string[]; +} diff --git a/zkrsa/frontend/src/utils/crypto.ts b/zkrsa/frontend/src/utils/crypto.ts new file mode 100644 index 000000000..76f509f3d --- /dev/null +++ b/zkrsa/frontend/src/utils/crypto.ts @@ -0,0 +1,53 @@ +import bigInt from 'big-integer'; + +export const generateRSAKeyPair = async (): Promise => { + const keyPair = await window.crypto.subtle.generateKey( + { + name: 'RSASSA-PKCS1-v1_5', + modulusLength: 2048, + publicExponent: new Uint8Array([1, 0, 1]), + hash: 'SHA-256', + }, + true, + ['sign', 'verify'] + ); + return keyPair; +}; + +export const hash = async (message: string, textEncoder: TextEncoder) => { + const digest = await window.crypto.subtle.digest( + 'SHA-256', + textEncoder.encode(message) + ); + return digest; +}; + +export const sign = async ( + RSAKeyPair: CryptoKeyPair, + message: string, + textEncoder: TextEncoder +) => { + const signature = await window.crypto.subtle.sign( + 'RSASSA-PKCS1-v1_5', + RSAKeyPair.privateKey, + textEncoder.encode(message) + ); + return signature; +}; + +//@ts-ignore +export function splitToWords(x, w, n, name) { + let t = bigInt(x); + w = bigInt(w); + n = bigInt(n); + const words = {}; + for (let i = 0; i < n; ++i) { + //@ts-ignore + words[`${name}[${i}]`] = `${t.mod(bigInt(2).pow(w))}`; + t = t.divide(bigInt(2).pow(w)); + } + if (!t.isZero()) { + throw `Number ${x} does not fit in ${w * n} bits`; + } + return words; +} diff --git a/zkrsa/frontend/src/utils/downloadVerifier.ts b/zkrsa/frontend/src/utils/downloadVerifier.ts new file mode 100644 index 000000000..5fa133611 --- /dev/null +++ b/zkrsa/frontend/src/utils/downloadVerifier.ts @@ -0,0 +1,8 @@ +import axios from 'axios'; + +export const downloadVerifier = async (url: string) => { + const vkeyVerifier = ( + await axios.get(process.env['NEXT_PUBLIC_VKEY_VERIFIER_URL'] as string) + ).data; + return vkeyVerifier; +}; diff --git a/zkrsa/frontend/src/utils/inputs.ts b/zkrsa/frontend/src/utils/inputs.ts new file mode 100644 index 000000000..d7efb8181 --- /dev/null +++ b/zkrsa/frontend/src/utils/inputs.ts @@ -0,0 +1,35 @@ +import { Dispatch, SetStateAction } from 'react'; +import { splitToWords } from './crypto'; + +export enum InputInvalidity { + MISSING = 'missing', + INVALID_CHARACTER = 'input should be integers only.', + INVALID_PROOF_FILE = 'proof file is invalid.', +} + +export const isValidIntegerInput = ( + value: string, + setvalue: Dispatch>, + seterror: Dispatch> +) => { + try { + const _ignore = splitToWords(value, 64, 32, 'sign'); + setvalue(value); + seterror(null); + return true; + } catch (error) { + seterror(InputInvalidity.INVALID_CHARACTER); + return false; + } +}; + +export const validateProofJSON = (proofFile: any) => { + const expectedKeys = ['proof', 'publicSignals']; + if (Object.keys(proofFile).length != 2) + throw Error('Proof file has too many keys'); + Object.keys(proofFile).map((k, i) => { + if (expectedKeys[i] !== k) + throw Error('Proof file does not have required keys'); + }); + return true; +}; diff --git a/zkrsa/frontend/src/utils/zk.ts b/zkrsa/frontend/src/utils/zk.ts new file mode 100644 index 000000000..0b3778760 --- /dev/null +++ b/zkrsa/frontend/src/utils/zk.ts @@ -0,0 +1,24 @@ +//@ts-ignore +import { unstringifyBigInts } from 'snarkjs/src/stringifybigint'; +//@ts-ignore +import snarkjs from 'snarkjs'; +import axios from 'axios'; + +export const downloadVerifier = async (url: string) => { + const vkeyVerifier = ( + await axios.get(process.env['NEXT_PUBLIC_VKEY_VERIFIER_URL'] as string) + ).data; + return vkeyVerifier; +}; + +export const validity = async ( + vkeyVerifier: any, + proof: any, + publicSignals: any +) => { + return snarkjs.original.isValid( + unstringifyBigInts(vkeyVerifier), + unstringifyBigInts(proof), + unstringifyBigInts(publicSignals) + ); +}; diff --git a/zkrsa/frontend/src/worker/generateProof.ts b/zkrsa/frontend/src/worker/generateProof.ts new file mode 100644 index 000000000..bea3a83a3 --- /dev/null +++ b/zkrsa/frontend/src/worker/generateProof.ts @@ -0,0 +1,18 @@ +//@ts-ignore +import { unstringifyBigInts } from 'snarkjs/src/stringifybigint'; +//@ts-ignore +import snarkjs from 'snarkjs'; + +addEventListener( + 'message', + async (event: MessageEvent<{ vkeyProof: any; witness: any }>) => { + const { proof, publicSignals } = snarkjs.original.genProof( + unstringifyBigInts(event.data.vkeyProof), + unstringifyBigInts(event.data.witness) + ); + postMessage({ + proof, + publicSignals, + }); + } +); diff --git a/zkrsa/frontend/styles/globals.css b/zkrsa/frontend/styles/globals.css new file mode 100644 index 000000000..b5c61c956 --- /dev/null +++ b/zkrsa/frontend/styles/globals.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; diff --git a/zkrsa/frontend/tailwind.config.js b/zkrsa/frontend/tailwind.config.js new file mode 100644 index 000000000..dd50a38b2 --- /dev/null +++ b/zkrsa/frontend/tailwind.config.js @@ -0,0 +1,21 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: [ + './src/pages/**/*.{js,ts,jsx,tsx}', + './src/components/**/*.{js,ts,jsx,tsx}', + ], + theme: { + extend: { + colors: { + beige: '#E9E1DA', + blueGrey: '#556976', + gold: '#EFAD5F', + }, + fontFamily: { + 'work-sans': ['Work Sans', 'sans-serif'], + 'roboto-light-300': ['Roboto', 'sans-serif'], + }, + }, + }, + plugins: [], +} diff --git a/zkrsa/frontend/tsconfig.json b/zkrsa/frontend/tsconfig.json new file mode 100644 index 000000000..99710e857 --- /dev/null +++ b/zkrsa/frontend/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], + "exclude": ["node_modules"] +} diff --git a/zkrsa/frontend/yarn.lock b/zkrsa/frontend/yarn.lock new file mode 100644 index 000000000..d08a0ca23 --- /dev/null +++ b/zkrsa/frontend/yarn.lock @@ -0,0 +1,6721 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@adobe/css-tools@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.0.1.tgz#b38b444ad3aa5fedbb15f2f746dcd934226a12dd" + integrity sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g== + +"@ampproject/remapping@^2.1.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" + integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== + dependencies: + "@jridgewell/gen-mapping" "^0.1.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" + integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== + dependencies: + "@babel/highlight" "^7.18.6" + +"@babel/compat-data@^7.20.0": + version "7.20.1" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.1.tgz#f2e6ef7790d8c8dbf03d379502dcc246dcce0b30" + integrity sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ== + +"@babel/core@^7.11.6", "@babel/core@^7.12.3": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.20.2.tgz#8dc9b1620a673f92d3624bd926dc49a52cf25b92" + integrity sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g== + dependencies: + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.20.2" + "@babel/helper-compilation-targets" "^7.20.0" + "@babel/helper-module-transforms" "^7.20.2" + "@babel/helpers" "^7.20.1" + "@babel/parser" "^7.20.2" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.20.1" + "@babel/types" "^7.20.2" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.1" + semver "^6.3.0" + +"@babel/generator@^7.20.1", "@babel/generator@^7.20.2", "@babel/generator@^7.7.2": + version "7.20.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.4.tgz#4d9f8f0c30be75fd90a0562099a26e5839602ab8" + integrity sha512-luCf7yk/cm7yab6CAW1aiFnmEfBJplb/JojV56MYEK7ziWfGmFlTfmL9Ehwfy4gFhbjBfWO1wj7/TuSbVNEEtA== + dependencies: + "@babel/types" "^7.20.2" + "@jridgewell/gen-mapping" "^0.3.2" + jsesc "^2.5.1" + +"@babel/helper-compilation-targets@^7.20.0": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz#6bf5374d424e1b3922822f1d9bdaa43b1a139d0a" + integrity sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ== + dependencies: + "@babel/compat-data" "^7.20.0" + "@babel/helper-validator-option" "^7.18.6" + browserslist "^4.21.3" + semver "^6.3.0" + +"@babel/helper-environment-visitor@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" + integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== + +"@babel/helper-function-name@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c" + integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w== + dependencies: + "@babel/template" "^7.18.10" + "@babel/types" "^7.19.0" + +"@babel/helper-hoist-variables@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" + integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" + integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-module-transforms@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz#ac53da669501edd37e658602a21ba14c08748712" + integrity sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-simple-access" "^7.20.2" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.19.1" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.20.1" + "@babel/types" "^7.20.2" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.8.0": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" + integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== + +"@babel/helper-simple-access@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9" + integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA== + dependencies: + "@babel/types" "^7.20.2" + +"@babel/helper-split-export-declaration@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" + integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-string-parser@^7.19.4": + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" + integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== + +"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" + integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== + +"@babel/helper-validator-option@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" + integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== + +"@babel/helpers@^7.20.1": + version "7.20.1" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.20.1.tgz#2ab7a0fcb0a03b5bf76629196ed63c2d7311f4c9" + integrity sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg== + dependencies: + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.20.1" + "@babel/types" "^7.20.0" + +"@babel/highlight@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" + integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.20.1", "@babel/parser@^7.20.2": + version "7.20.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.3.tgz#5358cf62e380cf69efcb87a7bb922ff88bfac6e2" + integrity sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg== + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.8.3": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.17.12", "@babel/plugin-syntax-jsx@^7.7.2": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" + integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.7.2": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz#4e9a0cfc769c85689b77a2e642d24e9f697fc8c7" + integrity sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.19.0" + +"@babel/runtime-corejs3@^7.10.2": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.19.1.tgz#f0cbbe7edda7c4109cd253bb1dee99aba4594ad9" + integrity sha512-j2vJGnkopRzH+ykJ8h68wrHnEUmtK//E723jjixiAl/PPf6FhqY/vYRcMVlNydRKQjQsTsYEjpx+DZMIvnGk/g== + dependencies: + core-js-pure "^3.25.1" + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.10.2", "@babel/runtime@^7.18.9": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.19.0.tgz#22b11c037b094d27a8a2504ea4dcff00f50e2259" + integrity sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.19.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": + version "7.20.1" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.1.tgz#1148bb33ab252b165a06698fde7576092a78b4a9" + integrity sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg== + dependencies: + regenerator-runtime "^0.13.10" + +"@babel/template@^7.18.10", "@babel/template@^7.3.3": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" + integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.18.10" + "@babel/types" "^7.18.10" + +"@babel/traverse@^7.20.1", "@babel/traverse@^7.7.2": + version "7.20.1" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.1.tgz#9b15ccbf882f6d107eeeecf263fbcdd208777ec8" + integrity sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.20.1" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.20.1" + "@babel/types" "^7.20.0" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.19.0", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.3.0", "@babel/types@^7.3.3": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.2.tgz#67ac09266606190f496322dbaff360fdaa5e7842" + integrity sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog== + dependencies: + "@babel/helper-string-parser" "^7.19.4" + "@babel/helper-validator-identifier" "^7.19.1" + to-fast-properties "^2.0.0" + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@emotion/babel-plugin@^11.10.5": + version "11.10.5" + resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.10.5.tgz#65fa6e1790ddc9e23cc22658a4c5dea423c55c3c" + integrity sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA== + dependencies: + "@babel/helper-module-imports" "^7.16.7" + "@babel/plugin-syntax-jsx" "^7.17.12" + "@babel/runtime" "^7.18.3" + "@emotion/hash" "^0.9.0" + "@emotion/memoize" "^0.8.0" + "@emotion/serialize" "^1.1.1" + babel-plugin-macros "^3.1.0" + convert-source-map "^1.5.0" + escape-string-regexp "^4.0.0" + find-root "^1.1.0" + source-map "^0.5.7" + stylis "4.1.3" + +"@emotion/cache@^11.10.3", "@emotion/cache@^11.10.5": + version "11.10.5" + resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.10.5.tgz#c142da9351f94e47527ed458f7bbbbe40bb13c12" + integrity sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA== + dependencies: + "@emotion/memoize" "^0.8.0" + "@emotion/sheet" "^1.2.1" + "@emotion/utils" "^1.2.0" + "@emotion/weak-memoize" "^0.3.0" + stylis "4.1.3" + +"@emotion/hash@^0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.0.tgz#c5153d50401ee3c027a57a177bc269b16d889cb7" + integrity sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ== + +"@emotion/is-prop-valid@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz#7f2d35c97891669f7e276eb71c83376a5dc44c83" + integrity sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg== + dependencies: + "@emotion/memoize" "^0.8.0" + +"@emotion/memoize@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.0.tgz#f580f9beb67176fa57aae70b08ed510e1b18980f" + integrity sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA== + +"@emotion/react@^11.10.5": + version "11.10.5" + resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.10.5.tgz#95fff612a5de1efa9c0d535384d3cfa115fe175d" + integrity sha512-TZs6235tCJ/7iF6/rvTaOH4oxQg2gMAcdHemjwLKIjKz4rRuYe1HJ2TQJKnAcRAfOUDdU8XoDadCe1rl72iv8A== + dependencies: + "@babel/runtime" "^7.18.3" + "@emotion/babel-plugin" "^11.10.5" + "@emotion/cache" "^11.10.5" + "@emotion/serialize" "^1.1.1" + "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" + "@emotion/utils" "^1.2.0" + "@emotion/weak-memoize" "^0.3.0" + hoist-non-react-statics "^3.3.1" + +"@emotion/serialize@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.1.1.tgz#0595701b1902feded8a96d293b26be3f5c1a5cf0" + integrity sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA== + dependencies: + "@emotion/hash" "^0.9.0" + "@emotion/memoize" "^0.8.0" + "@emotion/unitless" "^0.8.0" + "@emotion/utils" "^1.2.0" + csstype "^3.0.2" + +"@emotion/sheet@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.1.tgz#0767e0305230e894897cadb6c8df2c51e61a6c2c" + integrity sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA== + +"@emotion/styled@^11.10.5": + version "11.10.5" + resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.10.5.tgz#1fe7bf941b0909802cb826457e362444e7e96a79" + integrity sha512-8EP6dD7dMkdku2foLoruPCNkRevzdcBaY6q0l0OsbyJK+x8D9HWjX27ARiSIKNF634hY9Zdoedh8bJCiva8yZw== + dependencies: + "@babel/runtime" "^7.18.3" + "@emotion/babel-plugin" "^11.10.5" + "@emotion/is-prop-valid" "^1.2.0" + "@emotion/serialize" "^1.1.1" + "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" + "@emotion/utils" "^1.2.0" + +"@emotion/unitless@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.0.tgz#a4a36e9cbdc6903737cd20d38033241e1b8833db" + integrity sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw== + +"@emotion/use-insertion-effect-with-fallbacks@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz#ffadaec35dbb7885bd54de3fa267ab2f860294df" + integrity sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A== + +"@emotion/utils@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.2.0.tgz#9716eaccbc6b5ded2ea5a90d65562609aab0f561" + integrity sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw== + +"@emotion/weak-memoize@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz#ea89004119dc42db2e1dba0f97d553f7372f6fcb" + integrity sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg== + +"@eslint/eslintrc@^1.3.2": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.2.tgz#58b69582f3b7271d8fa67fe5251767a5b38ea356" + integrity sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.4.0" + globals "^13.15.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@humanwhocodes/config-array@^0.10.5": + version "0.10.7" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.10.7.tgz#6d53769fd0c222767e6452e8ebda825c22e9f0dc" + integrity sha512-MDl6D6sBsaV452/QSdX+4CXIjZhIcI0PELsxUjk4U828yd58vk3bTIvk/6w5FY+4hIy9sLW0sfrV7K7Kc++j/w== + dependencies: + "@humanwhocodes/object-schema" "^1.2.1" + debug "^4.1.1" + minimatch "^3.0.4" + +"@humanwhocodes/gitignore-to-minimatch@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz#316b0a63b91c10e53f242efb4ace5c3b34e8728d" + integrity sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA== + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + +"@iden3/bigarray@0.0.2": + version "0.0.2" + resolved "https://registry.yarnpkg.com/@iden3/bigarray/-/bigarray-0.0.2.tgz#6fc4ba5be18daf8a26ee393f2fb62b80d98c05e9" + integrity sha512-Xzdyxqm1bOFF6pdIsiHLLl3HkSLjbhqJHVyqaTxXt3RqXBEnmsUmEW47H7VOi/ak7TdkRpNkxjyK5Zbkm+y52g== + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.3.1.tgz#3e3f876e4e47616ea3b1464b9fbda981872e9583" + integrity sha512-IRE6GD47KwcqA09RIWrabKdHPiKDGgtAL31xDxbi/RjQMsr+lY+ppxmHwY0dUEV3qvvxZzoe5Hl0RXZJOjQNUg== + dependencies: + "@jest/types" "^29.3.1" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^29.3.1" + jest-util "^29.3.1" + slash "^3.0.0" + +"@jest/core@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.3.1.tgz#bff00f413ff0128f4debec1099ba7dcd649774a1" + integrity sha512-0ohVjjRex985w5MmO5L3u5GR1O30DexhBSpuwx2P+9ftyqHdJXnk7IUWiP80oHMvt7ubHCJHxV0a0vlKVuZirw== + dependencies: + "@jest/console" "^29.3.1" + "@jest/reporters" "^29.3.1" + "@jest/test-result" "^29.3.1" + "@jest/transform" "^29.3.1" + "@jest/types" "^29.3.1" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + ci-info "^3.2.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-changed-files "^29.2.0" + jest-config "^29.3.1" + jest-haste-map "^29.3.1" + jest-message-util "^29.3.1" + jest-regex-util "^29.2.0" + jest-resolve "^29.3.1" + jest-resolve-dependencies "^29.3.1" + jest-runner "^29.3.1" + jest-runtime "^29.3.1" + jest-snapshot "^29.3.1" + jest-util "^29.3.1" + jest-validate "^29.3.1" + jest-watcher "^29.3.1" + micromatch "^4.0.4" + pretty-format "^29.3.1" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/environment@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.3.1.tgz#eb039f726d5fcd14698acd072ac6576d41cfcaa6" + integrity sha512-pMmvfOPmoa1c1QpfFW0nXYtNLpofqo4BrCIk6f2kW4JFeNlHV2t3vd+3iDLf31e2ot2Mec0uqZfmI+U0K2CFag== + dependencies: + "@jest/fake-timers" "^29.3.1" + "@jest/types" "^29.3.1" + "@types/node" "*" + jest-mock "^29.3.1" + +"@jest/expect-utils@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.3.1.tgz#531f737039e9b9e27c42449798acb5bba01935b6" + integrity sha512-wlrznINZI5sMjwvUoLVk617ll/UYfGIZNxmbU+Pa7wmkL4vYzhV9R2pwVqUh4NWWuLQWkI8+8mOkxs//prKQ3g== + dependencies: + jest-get-type "^29.2.0" + +"@jest/expect@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.3.1.tgz#456385b62894349c1d196f2d183e3716d4c6a6cd" + integrity sha512-QivM7GlSHSsIAWzgfyP8dgeExPRZ9BIe2LsdPyEhCGkZkoyA+kGsoIzbKAfZCvvRzfZioKwPtCZIt5SaoxYCvg== + dependencies: + expect "^29.3.1" + jest-snapshot "^29.3.1" + +"@jest/fake-timers@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.3.1.tgz#b140625095b60a44de820876d4c14da1aa963f67" + integrity sha512-iHTL/XpnDlFki9Tq0Q1GGuVeQ8BHZGIYsvCO5eN/O/oJaRzofG9Xndd9HuSDBI/0ZS79pg0iwn07OMTQ7ngF2A== + dependencies: + "@jest/types" "^29.3.1" + "@sinonjs/fake-timers" "^9.1.2" + "@types/node" "*" + jest-message-util "^29.3.1" + jest-mock "^29.3.1" + jest-util "^29.3.1" + +"@jest/globals@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.3.1.tgz#92be078228e82d629df40c3656d45328f134a0c6" + integrity sha512-cTicd134vOcwO59OPaB6AmdHQMCtWOe+/DitpTZVxWgMJ+YvXL1HNAmPyiGbSHmF/mXVBkvlm8YYtQhyHPnV6Q== + dependencies: + "@jest/environment" "^29.3.1" + "@jest/expect" "^29.3.1" + "@jest/types" "^29.3.1" + jest-mock "^29.3.1" + +"@jest/reporters@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.3.1.tgz#9a6d78c109608e677c25ddb34f907b90e07b4310" + integrity sha512-GhBu3YFuDrcAYW/UESz1JphEAbvUjaY2vShRZRoRY1mxpCMB3yGSJ4j9n0GxVlEOdCf7qjvUfBCrTUUqhVfbRA== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^29.3.1" + "@jest/test-result" "^29.3.1" + "@jest/transform" "^29.3.1" + "@jest/types" "^29.3.1" + "@jridgewell/trace-mapping" "^0.3.15" + "@types/node" "*" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^5.1.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.1.3" + jest-message-util "^29.3.1" + jest-util "^29.3.1" + jest-worker "^29.3.1" + slash "^3.0.0" + string-length "^4.0.1" + strip-ansi "^6.0.0" + v8-to-istanbul "^9.0.1" + +"@jest/schemas@^29.0.0": + version "29.0.0" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.0.0.tgz#5f47f5994dd4ef067fb7b4188ceac45f77fe952a" + integrity sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA== + dependencies: + "@sinclair/typebox" "^0.24.1" + +"@jest/source-map@^29.2.0": + version "29.2.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.2.0.tgz#ab3420c46d42508dcc3dc1c6deee0b613c235744" + integrity sha512-1NX9/7zzI0nqa6+kgpSdKPK+WU1p+SJk3TloWZf5MzPbxri9UEeXX5bWZAPCzbQcyuAzubcdUHA7hcNznmRqWQ== + dependencies: + "@jridgewell/trace-mapping" "^0.3.15" + callsites "^3.0.0" + graceful-fs "^4.2.9" + +"@jest/test-result@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.3.1.tgz#92cd5099aa94be947560a24610aa76606de78f50" + integrity sha512-qeLa6qc0ddB0kuOZyZIhfN5q0e2htngokyTWsGriedsDhItisW7SDYZ7ceOe57Ii03sL988/03wAcBh3TChMGw== + dependencies: + "@jest/console" "^29.3.1" + "@jest/types" "^29.3.1" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-sequencer@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.3.1.tgz#fa24b3b050f7a59d48f7ef9e0b782ab65123090d" + integrity sha512-IqYvLbieTv20ArgKoAMyhLHNrVHJfzO6ARZAbQRlY4UGWfdDnLlZEF0BvKOMd77uIiIjSZRwq3Jb3Fa3I8+2UA== + dependencies: + "@jest/test-result" "^29.3.1" + graceful-fs "^4.2.9" + jest-haste-map "^29.3.1" + slash "^3.0.0" + +"@jest/transform@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.3.1.tgz#1e6bd3da4af50b5c82a539b7b1f3770568d6e36d" + integrity sha512-8wmCFBTVGYqFNLWfcOWoVuMuKYPUBTnTMDkdvFtAYELwDOl9RGwOsvQWGPFxDJ8AWY9xM/8xCXdqmPK3+Q5Lug== + dependencies: + "@babel/core" "^7.11.6" + "@jest/types" "^29.3.1" + "@jridgewell/trace-mapping" "^0.3.15" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^2.0.0" + fast-json-stable-stringify "^2.1.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.3.1" + jest-regex-util "^29.2.0" + jest-util "^29.3.1" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + write-file-atomic "^4.0.1" + +"@jest/types@^29.3.1": + version "29.3.1" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.3.1.tgz#7c5a80777cb13e703aeec6788d044150341147e3" + integrity sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA== + dependencies: + "@jest/schemas" "^29.0.0" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@jridgewell/gen-mapping@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" + integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/gen-mapping@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" + integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@3.1.0", "@jridgewell/resolve-uri@^3.0.3": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + +"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.15", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.17" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" + integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== + dependencies: + "@jridgewell/resolve-uri" "3.1.0" + "@jridgewell/sourcemap-codec" "1.4.14" + +"@mark.probst/typescript-json-schema@~0.32.0": + version "0.32.0" + resolved "https://registry.yarnpkg.com/@mark.probst/typescript-json-schema/-/typescript-json-schema-0.32.0.tgz#724d2de8baa2e46e5af4cfdeb9fe3758ced9b2a4" + integrity sha512-OoD+5D7Mka80FIcmvPyuAKV7g5Of5S04R74S4DTAG8pr9REDWySUh9pOloro7SNFwWt/+2f90wyP+DtGHykVfg== + dependencies: + glob "~7.1.3" + json-stable-stringify "^1.0.1" + typescript "~3.2.1" + yargs "^12.0.5" + +"@mark.probst/unicode-properties@~1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@mark.probst/unicode-properties/-/unicode-properties-1.1.0.tgz#5caafeab4737df93163d6d288007df33f9939b80" + integrity sha512-7AQsO0hMmpqDledV7AhBuSYqYPFsKP9PaltMecX9nlnsyFxqtsqUg9/pvB2L/jxvskrDrNkdKYz2KTbQznCtng== + dependencies: + brfs "^1.4.0" + unicode-trie "^0.3.0" + +"@mui/base@5.0.0-alpha.104": + version "5.0.0-alpha.104" + resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-alpha.104.tgz#1792e962dd782f1fa434f4aa7bab5410ed946644" + integrity sha512-tQPxZTzfYMwxYfKhEwufbTfdLpNjFdW7bXq6dK0j8651AAyZL4M8wynWUQ98hH1362R26mZFhVxHB2UD9t7VuA== + dependencies: + "@babel/runtime" "^7.19.0" + "@emotion/is-prop-valid" "^1.2.0" + "@mui/types" "^7.2.0" + "@mui/utils" "^5.10.9" + "@popperjs/core" "^2.11.6" + clsx "^1.2.1" + prop-types "^15.8.1" + react-is "^18.2.0" + +"@mui/core-downloads-tracker@^5.10.12": + version "5.10.12" + resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.10.12.tgz#ff36abc5f4aac3c762d116e12ab51c2688d93da1" + integrity sha512-cR8lOS606G++iVHR8I6ySgMAEiPoA3DxO/nLeqiv7w7d1707kvKoV4/7SWjh4ui+kHb052xlf/G196q2EKx31w== + +"@mui/material@^5.10.12": + version "5.10.12" + resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.10.12.tgz#1e97bb4bdfdfde136c1acbfb6ab16991de1e8677" + integrity sha512-rG9ZTkG9qUwujyAY1I+uQAa9pkGdsWY3KN+wvS/6H6ZbYIA06QRwmig6ySC6LbeB3WL/I/1ngwJqWX7nfINSbA== + dependencies: + "@babel/runtime" "^7.19.0" + "@mui/base" "5.0.0-alpha.104" + "@mui/core-downloads-tracker" "^5.10.12" + "@mui/system" "^5.10.12" + "@mui/types" "^7.2.0" + "@mui/utils" "^5.10.9" + "@types/react-transition-group" "^4.4.5" + clsx "^1.2.1" + csstype "^3.1.1" + prop-types "^15.8.1" + react-is "^18.2.0" + react-transition-group "^4.4.5" + +"@mui/private-theming@^5.10.9": + version "5.10.9" + resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.10.9.tgz#c427bfa736455703975cdb108dbde6a174ba7971" + integrity sha512-BN7/CnsVPVyBaQpDTij4uV2xGYHHHhOgpdxeYLlIu+TqnsVM7wUeF+37kXvHovxM6xmL5qoaVUD98gDC0IZnHg== + dependencies: + "@babel/runtime" "^7.19.0" + "@mui/utils" "^5.10.9" + prop-types "^15.8.1" + +"@mui/styled-engine@^5.10.8": + version "5.10.8" + resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.10.8.tgz#2db411e4278f06f70ccb6b5cd56ace67109513f6" + integrity sha512-w+y8WI18EJV6zM/q41ug19cE70JTeO6sWFsQ7tgePQFpy6ToCVPh0YLrtqxUZXSoMStW5FMw0t9fHTFAqPbngw== + dependencies: + "@babel/runtime" "^7.19.0" + "@emotion/cache" "^11.10.3" + csstype "^3.1.1" + prop-types "^15.8.1" + +"@mui/system@^5.10.12": + version "5.10.12" + resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.10.12.tgz#fd97a6fd75995038c1c34e9c5b6eb4ff9b9eee56" + integrity sha512-9DcN3hF2KTTTpZ0K5Tn20B+Tz7tIqDmJLk1M6P0CYoAGUN/xrcF/6dn1zZ829rxE5tmauoDUekTfomrvPsvlSQ== + dependencies: + "@babel/runtime" "^7.19.0" + "@mui/private-theming" "^5.10.9" + "@mui/styled-engine" "^5.10.8" + "@mui/types" "^7.2.0" + "@mui/utils" "^5.10.9" + clsx "^1.2.1" + csstype "^3.1.1" + prop-types "^15.8.1" + +"@mui/types@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.2.0.tgz#91380c2d42420f51f404120f7a9270eadd6f5c23" + integrity sha512-lGXtFKe5lp3UxTBGqKI1l7G8sE2xBik8qCfrLHD5olwP/YU0/ReWoWT7Lp1//ri32dK39oPMrJN8TgbkCSbsNA== + +"@mui/utils@^5.10.9": + version "5.10.9" + resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.10.9.tgz#9dc455f9230f43eeb81d96a9a4bdb3855bb9ea39" + integrity sha512-2tdHWrq3+WCy+G6TIIaFx3cg7PorXZ71P375ExuX61od1NOAJP1mK90VxQ8N4aqnj2vmO3AQDkV4oV2Ktvt4bA== + dependencies: + "@babel/runtime" "^7.19.0" + "@types/prop-types" "^15.7.5" + "@types/react-is" "^16.7.1 || ^17.0.0" + prop-types "^15.8.1" + react-is "^18.2.0" + +"@next/bundle-analyzer@^13.0.2": + version "13.0.2" + resolved "https://registry.yarnpkg.com/@next/bundle-analyzer/-/bundle-analyzer-13.0.2.tgz#1f26279af4ab2288fcd2f0297198e207ac4cfa81" + integrity sha512-8GZ1kTnMEUEZwiLG1IEjNy6jhjwOdGUNmJ5aEy/EaG6ptXnJQ4eMeuwkxOq9sXtX7EMFl+xj4dv9A4pa3QG+Nw== + dependencies: + webpack-bundle-analyzer "4.3.0" + +"@next/env@12.3.1": + version "12.3.1" + resolved "https://registry.yarnpkg.com/@next/env/-/env-12.3.1.tgz#18266bd92de3b4aa4037b1927aa59e6f11879260" + integrity sha512-9P9THmRFVKGKt9DYqeC2aKIxm8rlvkK38V1P1sRE7qyoPBIs8l9oo79QoSdPtOWfzkbDAVUqvbQGgTMsb8BtJg== + +"@next/eslint-plugin-next@12.3.1": + version "12.3.1" + resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-12.3.1.tgz#b821f27b0f175954d8d18e5d323fce040ecc79a6" + integrity sha512-sw+lTf6r6P0j+g/n9y4qdWWI2syPqZx+uc0+B/fRENqfR3KpSid6MIKqc9gNwGhJASazEQ5b3w8h4cAET213jw== + dependencies: + glob "7.1.7" + +"@next/swc-android-arm-eabi@12.3.1": + version "12.3.1" + resolved "https://registry.yarnpkg.com/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.3.1.tgz#b15ce8ad376102a3b8c0f3c017dde050a22bb1a3" + integrity sha512-i+BvKA8tB//srVPPQxIQN5lvfROcfv4OB23/L1nXznP+N/TyKL8lql3l7oo2LNhnH66zWhfoemg3Q4VJZSruzQ== + +"@next/swc-android-arm64@12.3.1": + version "12.3.1" + resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-12.3.1.tgz#85d205f568a790a137cb3c3f720d961a2436ac9c" + integrity sha512-CmgU2ZNyBP0rkugOOqLnjl3+eRpXBzB/I2sjwcGZ7/Z6RcUJXK5Evz+N0ucOxqE4cZ3gkTeXtSzRrMK2mGYV8Q== + +"@next/swc-darwin-arm64@12.3.1": + version "12.3.1" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.3.1.tgz#b105457d6760a7916b27e46c97cb1a40547114ae" + integrity sha512-hT/EBGNcu0ITiuWDYU9ur57Oa4LybD5DOQp4f22T6zLfpoBMfBibPtR8XktXmOyFHrL/6FC2p9ojdLZhWhvBHg== + +"@next/swc-darwin-x64@12.3.1": + version "12.3.1" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-12.3.1.tgz#6947b39082271378896b095b6696a7791c6e32b1" + integrity sha512-9S6EVueCVCyGf2vuiLiGEHZCJcPAxglyckTZcEwLdJwozLqN0gtS0Eq0bQlGS3dH49Py/rQYpZ3KVWZ9BUf/WA== + +"@next/swc-freebsd-x64@12.3.1": + version "12.3.1" + resolved "https://registry.yarnpkg.com/@next/swc-freebsd-x64/-/swc-freebsd-x64-12.3.1.tgz#2b6c36a4d84aae8b0ea0e0da9bafc696ae27085a" + integrity sha512-qcuUQkaBZWqzM0F1N4AkAh88lLzzpfE6ImOcI1P6YeyJSsBmpBIV8o70zV+Wxpc26yV9vpzb+e5gCyxNjKJg5Q== + +"@next/swc-linux-arm-gnueabihf@12.3.1": + version "12.3.1" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.3.1.tgz#6e421c44285cfedac1f4631d5de330dd60b86298" + integrity sha512-diL9MSYrEI5nY2wc/h/DBewEDUzr/DqBjIgHJ3RUNtETAOB3spMNHvJk2XKUDjnQuluLmFMloet9tpEqU2TT9w== + +"@next/swc-linux-arm64-gnu@12.3.1": + version "12.3.1" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.3.1.tgz#8863f08a81f422f910af126159d2cbb9552ef717" + integrity sha512-o/xB2nztoaC7jnXU3Q36vGgOolJpsGG8ETNjxM1VAPxRwM7FyGCPHOMk1XavG88QZSQf+1r+POBW0tLxQOJ9DQ== + +"@next/swc-linux-arm64-musl@12.3.1": + version "12.3.1" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.3.1.tgz#0038f07cf0b259d70ae0c80890d826dfc775d9f3" + integrity sha512-2WEasRxJzgAmP43glFNhADpe8zB7kJofhEAVNbDJZANp+H4+wq+/cW1CdDi8DqjkShPEA6/ejJw+xnEyDID2jg== + +"@next/swc-linux-x64-gnu@12.3.1": + version "12.3.1" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.3.1.tgz#c66468f5e8181ffb096c537f0dbfb589baa6a9c1" + integrity sha512-JWEaMyvNrXuM3dyy9Pp5cFPuSSvG82+yABqsWugjWlvfmnlnx9HOQZY23bFq3cNghy5V/t0iPb6cffzRWylgsA== + +"@next/swc-linux-x64-musl@12.3.1": + version "12.3.1" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.3.1.tgz#c6269f3e96ac0395bc722ad97ce410ea5101d305" + integrity sha512-xoEWQQ71waWc4BZcOjmatuvPUXKTv6MbIFzpm4LFeCHsg2iwai0ILmNXf81rJR+L1Wb9ifEke2sQpZSPNz1Iyg== + +"@next/swc-win32-arm64-msvc@12.3.1": + version "12.3.1" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.3.1.tgz#83c639ee969cee36ce247c3abd1d9df97b5ecade" + integrity sha512-hswVFYQYIeGHE2JYaBVtvqmBQ1CppplQbZJS/JgrVI3x2CurNhEkmds/yqvDONfwfbttTtH4+q9Dzf/WVl3Opw== + +"@next/swc-win32-ia32-msvc@12.3.1": + version "12.3.1" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.3.1.tgz#52995748b92aa8ad053440301bc2c0d9fbcf27c2" + integrity sha512-Kny5JBehkTbKPmqulr5i+iKntO5YMP+bVM8Hf8UAmjSMVo3wehyLVc9IZkNmcbxi+vwETnQvJaT5ynYBkJ9dWA== + +"@next/swc-win32-x64-msvc@12.3.1": + version "12.3.1" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.3.1.tgz#27d71a95247a9eaee03d47adee7e3bd594514136" + integrity sha512-W1ijvzzg+kPEX6LAc+50EYYSEo0FVu7dmTE+t+DM4iOLqgGHoW9uYSz9wCVdkXOEEMP9xhXfGpcSxsfDucyPkA== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@polka/url@^1.0.0-next.20": + version "1.0.0-next.21" + resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.21.tgz#5de5a2385a35309427f6011992b544514d559aa1" + integrity sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g== + +"@popperjs/core@^2.11.6": + version "2.11.6" + resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.6.tgz#cee20bd55e68a1720bdab363ecf0c821ded4cd45" + integrity sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw== + +"@rushstack/eslint-patch@^1.1.3": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz#8be36a1f66f3265389e90b5f9c9962146758f728" + integrity sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg== + +"@sinclair/typebox@^0.24.1": + version "0.24.51" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.51.tgz#645f33fe4e02defe26f2f5c0410e1c094eac7f5f" + integrity sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA== + +"@sinonjs/commons@^1.7.0": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.5.tgz#e280c94c95f206dcfd5aca00a43f2156b758c764" + integrity sha512-rTpCA0wG1wUxglBSFdMMY0oTrKYvgf4fNgv/sXbfCVAdf+FnPBdKJR/7XbpTCwbCrvCbdPYnlWaUUYz4V2fPDA== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^9.1.2": + version "9.1.2" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz#4eaab737fab77332ab132d396a3c0d364bd0ea8c" + integrity sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw== + dependencies: + "@sinonjs/commons" "^1.7.0" + +"@swc/helpers@0.4.11": + version "0.4.11" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.4.11.tgz#db23a376761b3d31c26502122f349a21b592c8de" + integrity sha512-rEUrBSGIoSFuYxwBYtlUFMlE2CwGhmW+w9355/5oduSw8e5h2+Tj4UrAGNNgP9915++wj5vkQo0UuOBqOAq4nw== + dependencies: + tslib "^2.4.0" + +"@testing-library/dom@^8.5.0": + version "8.19.0" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.19.0.tgz#bd3f83c217ebac16694329e413d9ad5fdcfd785f" + integrity sha512-6YWYPPpxG3e/xOo6HIWwB/58HukkwIVTOaZ0VwdMVjhRUX/01E4FtQbck9GazOOj7MXHc5RBzMrU86iBJHbI+A== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/runtime" "^7.12.5" + "@types/aria-query" "^4.2.0" + aria-query "^5.0.0" + chalk "^4.1.0" + dom-accessibility-api "^0.5.9" + lz-string "^1.4.4" + pretty-format "^27.0.2" + +"@testing-library/jest-dom@^5.16.5": + version "5.16.5" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.16.5.tgz#3912846af19a29b2dbf32a6ae9c31ef52580074e" + integrity sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA== + dependencies: + "@adobe/css-tools" "^4.0.1" + "@babel/runtime" "^7.9.2" + "@types/testing-library__jest-dom" "^5.9.1" + aria-query "^5.0.0" + chalk "^3.0.0" + css.escape "^1.5.1" + dom-accessibility-api "^0.5.6" + lodash "^4.17.15" + redent "^3.0.0" + +"@testing-library/react@^13.4.0": + version "13.4.0" + resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-13.4.0.tgz#6a31e3bf5951615593ad984e96b9e5e2d9380966" + integrity sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw== + dependencies: + "@babel/runtime" "^7.12.5" + "@testing-library/dom" "^8.5.0" + "@types/react-dom" "^18.0.0" + +"@testing-library/user-event@^14.4.3": + version "14.4.3" + resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-14.4.3.tgz#af975e367743fa91989cd666666aec31a8f50591" + integrity sha512-kCUc5MEwaEMakkO5x7aoD+DLi02ehmEM2QCGWvNqAS1dV/fAvORWEjnjsEIvml59M7Y5kCkWN6fCCyPOe8OL6Q== + +"@tootallnate/once@2": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" + integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== + +"@tsconfig/node10@^1.0.7": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" + integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" + integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== + +"@types/aria-query@^4.2.0": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.2.tgz#ed4e0ad92306a704f9fb132a0cfcf77486dbe2bc" + integrity sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig== + +"@types/babel__core@^7.1.14": + version "7.1.20" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.20.tgz#e168cdd612c92a2d335029ed62ac94c95b362359" + integrity sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.4" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" + integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" + integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.18.2.tgz#235bf339d17185bdec25e024ca19cce257cc7309" + integrity sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg== + dependencies: + "@babel/types" "^7.3.0" + +"@types/graceful-fs@^4.1.3": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" + integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== + dependencies: + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" + integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" + integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest@*", "@types/jest@^29.2.2": + version "29.2.2" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.2.2.tgz#874e7dc6702fa6a3fe6107792aa98636dcc480b4" + integrity sha512-og1wAmdxKoS71K2ZwSVqWPX6OVn3ihZ6ZT2qvZvZQm90lJVDyXIjYcu4Khx2CNIeaFv12rOU/YObOsI3VOkzog== + dependencies: + expect "^29.0.0" + pretty-format "^29.0.0" + +"@types/jsdom@^20.0.0": + version "20.0.1" + resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-20.0.1.tgz#07c14bc19bd2f918c1929541cdaacae894744808" + integrity sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ== + dependencies: + "@types/node" "*" + "@types/tough-cookie" "*" + parse5 "^7.0.0" + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== + +"@types/minimatch@^3.0.3": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" + integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== + +"@types/node@*": + version "18.11.9" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.9.tgz#02d013de7058cea16d36168ef2fc653464cfbad4" + integrity sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg== + +"@types/node@18.8.0": + version "18.8.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.8.0.tgz#b8ee8d83a99470c0661bd899417fcd77060682fe" + integrity sha512-u+h43R6U8xXDt2vzUaVP3VwjjLyOJk6uEciZS8OSyziUQGOwmk+l+4drxcsDboHXwyTaqS1INebghmWMRxq3LA== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@types/prettier@^2.1.5": + version "2.7.1" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.1.tgz#dfd20e2dc35f027cdd6c1908e80a5ddc7499670e" + integrity sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow== + +"@types/prop-types@*", "@types/prop-types@^15.7.5": + version "15.7.5" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" + integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== + +"@types/react-dom@18.0.6": + version "18.0.6" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.6.tgz#36652900024842b74607a17786b6662dd1e103a1" + integrity sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA== + dependencies: + "@types/react" "*" + +"@types/react-dom@^18.0.0": + version "18.0.8" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.8.tgz#d2606d855186cd42cc1b11e63a71c39525441685" + integrity sha512-C3GYO0HLaOkk9dDAz3Dl4sbe4AKUGTCfFIZsz3n/82dPNN8Du533HzKatDxeUYWu24wJgMP1xICqkWk1YOLOIw== + dependencies: + "@types/react" "*" + +"@types/react-is@^16.7.1 || ^17.0.0": + version "17.0.3" + resolved "https://registry.yarnpkg.com/@types/react-is/-/react-is-17.0.3.tgz#2d855ba575f2fc8d17ef9861f084acc4b90a137a" + integrity sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw== + dependencies: + "@types/react" "*" + +"@types/react-spinner@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@types/react-spinner/-/react-spinner-0.2.0.tgz#9ff024f7fd4ca77e2035adb41fed25e2774be2f5" + integrity sha512-vYsfbP3vnULw1bzocqT5jE26ODr137WRR2appcvO+32d3/wjcEXija7B6R0u6tWBgZo8Sq12O5y1aNPqoToXzg== + dependencies: + "@types/react" "*" + +"@types/react-transition-group@^4.4.5": + version "4.4.5" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.5.tgz#aae20dcf773c5aa275d5b9f7cdbca638abc5e416" + integrity sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA== + dependencies: + "@types/react" "*" + +"@types/react@*", "@types/react@18.0.21": + version "18.0.21" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.21.tgz#b8209e9626bb00a34c76f55482697edd2b43cc67" + integrity sha512-7QUCOxvFgnD5Jk8ZKlUAhVcRj7GuJRjnjjiY/IUBWKgOlnvDvTMLD4RTF7NPyVmbRhNrbomZiOepg7M/2Kj1mA== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/scheduler@*": + version "0.16.2" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" + integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== + +"@types/stack-utils@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" + integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + +"@types/testing-library__jest-dom@^5.9.1": + version "5.14.5" + resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.5.tgz#d113709c90b3c75fdb127ec338dad7d5f86c974f" + integrity sha512-SBwbxYoyPIvxHbeHxTZX2Pe/74F/tX2/D3mMvzabdeJ25bBojfW0TyB8BHrbq/9zaaKICJZjLP+8r6AeZMFCuQ== + dependencies: + "@types/jest" "*" + +"@types/tough-cookie@*": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.2.tgz#6286b4c7228d58ab7866d19716f3696e03a09397" + integrity sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw== + +"@types/yargs-parser@*": + version "21.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" + integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== + +"@types/yargs@^17.0.8": + version "17.0.13" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.13.tgz#34cced675ca1b1d51fcf4d34c3c6f0fa142a5c76" + integrity sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg== + dependencies: + "@types/yargs-parser" "*" + +"@typescript-eslint/parser@^5.21.0": + version "5.38.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.38.1.tgz#c577f429f2c32071b92dff4af4f5fbbbd2414bd0" + integrity sha512-LDqxZBVFFQnQRz9rUZJhLmox+Ep5kdUmLatLQnCRR6523YV+XhRjfYzStQ4MheFA8kMAfUlclHSbu+RKdRwQKw== + dependencies: + "@typescript-eslint/scope-manager" "5.38.1" + "@typescript-eslint/types" "5.38.1" + "@typescript-eslint/typescript-estree" "5.38.1" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@5.38.1": + version "5.38.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.38.1.tgz#f87b289ef8819b47189351814ad183e8801d5764" + integrity sha512-BfRDq5RidVU3RbqApKmS7RFMtkyWMM50qWnDAkKgQiezRtLKsoyRKIvz1Ok5ilRWeD9IuHvaidaLxvGx/2eqTQ== + dependencies: + "@typescript-eslint/types" "5.38.1" + "@typescript-eslint/visitor-keys" "5.38.1" + +"@typescript-eslint/types@5.38.1": + version "5.38.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.38.1.tgz#74f9d6dcb8dc7c58c51e9fbc6653ded39e2e225c" + integrity sha512-QTW1iHq1Tffp9lNfbfPm4WJabbvpyaehQ0SrvVK2yfV79SytD9XDVxqiPvdrv2LK7DGSFo91TB2FgWanbJAZXg== + +"@typescript-eslint/typescript-estree@5.38.1": + version "5.38.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.38.1.tgz#657d858d5d6087f96b638ee383ee1cff52605a1e" + integrity sha512-99b5e/Enoe8fKMLdSuwrfH/C0EIbpUWmeEKHmQlGZb8msY33qn1KlkFww0z26o5Omx7EVjzVDCWEfrfCDHfE7g== + dependencies: + "@typescript-eslint/types" "5.38.1" + "@typescript-eslint/visitor-keys" "5.38.1" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/visitor-keys@5.38.1": + version "5.38.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.38.1.tgz#508071bfc6b96d194c0afe6a65ad47029059edbc" + integrity sha512-bSHr1rRxXt54+j2n4k54p4fj8AHJ49VDWtjpImOpzQj4qjAiOpPni+V1Tyajh19Api1i844F757cur8wH3YvOA== + dependencies: + "@typescript-eslint/types" "5.38.1" + eslint-visitor-keys "^3.3.0" + +"@ungap/promise-all-settled@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" + integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== + +abab@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" + integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== + +acorn-globals@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-7.0.1.tgz#0dbf05c44fa7c94332914c02066d5beff62c40c3" + integrity sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q== + dependencies: + acorn "^8.1.0" + acorn-walk "^8.0.2" + +acorn-jsx@^5.0.0, acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-node@^1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8" + integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A== + dependencies: + acorn "^7.0.0" + acorn-walk "^7.0.0" + xtend "^4.0.2" + +acorn-walk@^7.0.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + +acorn-walk@^8.0.0, acorn-walk@^8.0.2, acorn-walk@^8.1.1: + version "8.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + +acorn@^6.0.7: + version "6.4.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== + +acorn@^7.0.0, acorn@^7.1.1: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +acorn@^8.0.4, acorn@^8.1.0, acorn@^8.4.1: + version "8.8.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" + integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== + +acorn@^8.8.0: + version "8.8.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" + integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== + +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4, ajv@^6.9.1: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-colors@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-escapes@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + +ansi-escapes@^4.2.1: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== + +ansi-regex@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" + integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== + +ansi-regex@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" + integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +anymatch@^3.0.3, anymatch@~3.1.1, anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +arg@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" + integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +aria-query@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" + integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA== + dependencies: + "@babel/runtime" "^7.10.2" + "@babel/runtime-corejs3" "^7.10.2" + +aria-query@^5.0.0: + version "5.1.3" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" + integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== + dependencies: + deep-equal "^2.0.5" + +array-back@^1.0.3, array-back@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-1.0.4.tgz#644ba7f095f7ffcf7c43b5f0dc39d3c1f03c063b" + integrity sha512-1WxbZvrmyhkNoeYcizokbmh5oiOCIfyvGtcqbK3Ls1v1fKcquzxnQSceOx6tzq7jmai2kFLWIpGND2cLhH6TPw== + dependencies: + typical "^2.6.0" + +array-back@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-2.0.0.tgz#6877471d51ecc9c9bfa6136fb6c7d5fe69748022" + integrity sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw== + dependencies: + typical "^2.6.1" + +array-differ@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" + integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== + +array-includes@^3.1.4, array-includes@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.5.tgz#2c320010db8d31031fd2a5f6b3bbd4b1aad31bdb" + integrity sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" + get-intrinsic "^1.1.1" + is-string "^1.0.7" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array.prototype.flat@^1.2.5: + version "1.3.0" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz#0b0c1567bf57b38b56b4c97b8aa72ab45e4adc7b" + integrity sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.2" + es-shim-unscopables "^1.0.0" + +array.prototype.flatmap@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz#a7e8ed4225f4788a70cd910abcf0791e76a5534f" + integrity sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.2" + es-shim-unscopables "^1.0.0" + +arraybuffer-to-string@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/arraybuffer-to-string/-/arraybuffer-to-string-1.0.2.tgz#c373aa7bb0e6844d9a2bc9654c8889a9570a26e2" + integrity sha512-WbIYlLVmvIAyUBdQRRuyGOJRriOQy9OAsWcyURmsRQp9+g647hdMSS2VFKXbJLVw0daUu06hqwLXm9etVrXI9A== + +arrify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== + +assertion-error@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== + +ast-types-flow@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag== + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +async@^3.2.3: + version "3.2.4" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +autoprefixer@^10.4.12: + version "10.4.12" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.12.tgz#183f30bf0b0722af54ee5ef257f7d4320bb33129" + integrity sha512-WrCGV9/b97Pa+jtwf5UGaRjgQIg7OK3D06GnoYoZNcG1Xb8Gt3EfuKjlhh9i/VtT16g6PYjZ69jdJ2g8FxSC4Q== + dependencies: + browserslist "^4.21.4" + caniuse-lite "^1.0.30001407" + fraction.js "^4.2.0" + normalize-range "^0.1.2" + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" + +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + +axe-core@^4.4.3: + version "4.4.3" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.3.tgz#11c74d23d5013c0fa5d183796729bc3482bd2f6f" + integrity sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w== + +axios@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.1.3.tgz#8274250dada2edf53814ed7db644b9c2866c1e35" + integrity sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA== + dependencies: + follow-redirects "^1.15.0" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + +axobject-query@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" + integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== + +babel-jest@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.3.1.tgz#05c83e0d128cd48c453eea851482a38782249f44" + integrity sha512-aard+xnMoxgjwV70t0L6wkW/3HQQtV+O0PEimxKgzNqCJnbYmroPojdP2tqKSOAt8QAKV/uSZU8851M7B5+fcA== + dependencies: + "@jest/transform" "^29.3.1" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^29.2.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + +babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.2.0.tgz#23ee99c37390a98cfddf3ef4a78674180d823094" + integrity sha512-TnspP2WNiR3GLfCsUNHqeXw0RoQ2f9U5hQ5L3XFpwuO8htQmSrhh8qsB6vi5Yi8+kuynN1yjDjQsPfkebmB6ZA== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.1.14" + "@types/babel__traverse" "^7.0.6" + +babel-plugin-macros@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" + integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== + dependencies: + "@babel/runtime" "^7.12.5" + cosmiconfig "^7.0.0" + resolve "^1.19.0" + +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + +babel-preset-jest@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.2.0.tgz#3048bea3a1af222e3505e4a767a974c95a7620dc" + integrity sha512-z9JmMJppMxNv8N7fNRHvhMg9cvIkMxQBXgFkane3yKVEvEOP+kB50lk8DFRvF9PGqbyXxlmebKWhuDORO8RgdA== + dependencies: + babel-plugin-jest-hoist "^29.2.0" + babel-preset-current-node-syntax "^1.0.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +big-integer@^1.6.42, big-integer@^1.6.43, big-integer@^1.6.48, big-integer@^1.6.51: + version "1.6.51" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" + integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +blakejs@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" + integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brfs@^1.4.0: + version "1.6.1" + resolved "https://registry.yarnpkg.com/brfs/-/brfs-1.6.1.tgz#b78ce2336d818e25eea04a0947cba6d4fb8849c3" + integrity sha512-OfZpABRQQf+Xsmju8XE9bDjs+uU4vLREGolP7bDgcpsI17QREyZ4Bl+2KLxxx1kCgA0fAIhKQBaBYh+PEcCqYQ== + dependencies: + quote-stream "^1.0.1" + resolve "^1.1.5" + static-module "^2.2.0" + through2 "^2.0.0" + +browser-or-node@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/browser-or-node/-/browser-or-node-1.3.0.tgz#f2a4e8568f60263050a6714b2cc236bb976647a7" + integrity sha512-0F2z/VSnLbmEeBcUrSuDH5l0HxTXdQQzLjkmBR4cYfvg1zJrKSlmIZFqyFR8oX0NrwPhy3c3HQ6i3OxMbew4Tg== + +browser-stdout@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== + +browserslist@^4.21.3, browserslist@^4.21.4: + version "4.21.4" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987" + integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== + dependencies: + caniuse-lite "^1.0.30001400" + electron-to-chromium "^1.4.251" + node-releases "^2.0.6" + update-browserslist-db "^1.0.9" + +bs-logger@0.x: + version "0.2.6" + resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" + integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== + dependencies: + fast-json-stable-stringify "2.x" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-equal@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-0.0.1.tgz#91bc74b11ea405bc916bc6aa908faafa5b4aac4b" + integrity sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA== + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase-css@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" + integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + +camelcase@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.0.0, camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-lite@^1.0.30001400, caniuse-lite@^1.0.30001407: + version "1.0.30001416" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001416.tgz#29692af8a6a11412f2d3cf9a59d588fcdd21ce4c" + integrity sha512-06wzzdAkCPZO+Qm4e/eNghZBDfVNDsCgw33T27OwBH9unE9S478OYw//Q2L7Npf/zBzs7rjZOszIFQkwQKAEqA== + +caniuse-lite@^1.0.30001406: + version "1.0.30001414" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001414.tgz#5f1715e506e71860b4b07c50060ea6462217611e" + integrity sha512-t55jfSaWjCdocnFdKQoO+d2ct9C59UZg4dY3OnUlSZ447r8pUtIKdp0hpAzrGFultmTC+Us+KpKi4GZl/LXlFg== + +chai@^4.2.0: + version "4.3.6" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.6.tgz#ffe4ba2d9fa9d6680cc0b370adae709ec9011e9c" + integrity sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q== + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.2" + deep-eql "^3.0.1" + get-func-name "^2.0.0" + loupe "^2.3.1" + pathval "^1.1.1" + type-detect "^4.0.5" + +chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +check-error@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" + integrity sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA== + +chokidar@3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" + integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.5.0" + optionalDependencies: + fsevents "~2.3.1" + +chokidar@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +ci-info@^3.2.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.5.0.tgz#bfac2a29263de4c829d806b1ab478e35091e171f" + integrity sha512-yH4RezKOGlOhxkmhbeNuC4eYZKAUsEaGtBuBzDDP1eFUKiccDWzBABxBfOx31IDwDIXMTxWuwAxUGModvkbuVw== + +circom@0.5.45: + version "0.5.45" + resolved "https://registry.yarnpkg.com/circom/-/circom-0.5.45.tgz#82931882c5d38022ccb8be9c4a6314ea94bc511e" + integrity sha512-5Ixp6UjwrhBWnnFBO/mTns+eeEDOpi5UoN4znAUWy5rklCUWYt2Ezl9QVUswBXjMP5kpfEtGUY2XSsYRAp6uMg== + dependencies: + chai "^4.2.0" + circom_runtime "0.1.12" + fastfile "0.0.18" + ffiasm "0.1.1" + ffjavascript "0.2.22" + ffwasm "0.0.7" + fnv-plus "^1.3.1" + r1csfile "0.0.16" + tmp-promise "^2.0.2" + wasmbuilder "0.0.10" + +circom_runtime@0.1.12: + version "0.1.12" + resolved "https://registry.yarnpkg.com/circom_runtime/-/circom_runtime-0.1.12.tgz#e1a302c6fe8cec390f035c2e7a8496cfa7cfb4a2" + integrity sha512-R+QT9HS9w71cmGmWIn+PSyD3aHyR5JZBiVvxOjCfn12wwnpuFwBjdMG7he+v8h/oQD1mDRAu2KrBeL4mAt5s4A== + dependencies: + ffjavascript "0.2.34" + fnv-plus "^1.3.1" + +cjs-module-lexer@^1.0.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" + integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== + +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw== + dependencies: + restore-cursor "^2.0.0" + +cli-width@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" + integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== + +cliui@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" + integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi "^2.0.0" + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +clsx@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" + integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== + +collect-v8-coverage@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" + integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== + +collection-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/collection-utils/-/collection-utils-1.0.1.tgz#31d14336488674f27aefc0a7c5eccacf6df78044" + integrity sha512-LA2YTIlR7biSpXkKYwwuzGjwL5rjWEZVOSnvdUc7gObvWe4WkjxOpfrdhoP7Hs09YWDVfg0Mal9BpAqLfVEzQg== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@^1.1.4, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +command-line-args@^4.0.6: + version "4.0.7" + resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-4.0.7.tgz#f8d1916ecb90e9e121eda6428e41300bfb64cc46" + integrity sha512-aUdPvQRAyBvQd2n7jXcsMDz68ckBJELXNzBybCHOibUWEg0mWTnaYCSRU8h9R+aNRSvDihJtssSRCiDRpLaezA== + dependencies: + array-back "^2.0.0" + find-replace "^1.0.3" + typical "^2.6.1" + +command-line-usage@^5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-5.0.5.tgz#5f25933ffe6dedd983c635d38a21d7e623fda357" + integrity sha512-d8NrGylA5oCXSbGoKz05FkehDAzSmIm4K03S5VDh4d5lZAtTWfc3D1RuETtuQCn8129nYfJfDdF7P/lwcz1BlA== + dependencies: + array-back "^2.0.0" + chalk "^2.4.1" + table-layout "^0.4.3" + typical "^2.6.1" + +commander@^6.2.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" + integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +concat-stream@~1.6.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +convert-source-map@^1.5.0, convert-source-map@^1.5.1, convert-source-map@^1.6.0, convert-source-map@^1.7.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + +core-js-pure@^3.25.1: + version "3.25.4" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.25.4.tgz#e8642cef4f4246a4e7c15280f5e3926118fff84b" + integrity sha512-qRbgm0ADrsNTU66UcW47YMJjXm+ShhUP2gkoEoAShT2BHO3cb5gGqLtmWpjnM6Wx9h5hMSF4uZ+jEV/8+4KCsw== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cosmiconfig@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" + integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +cross-spawn@^6.0.0, cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +css.escape@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" + integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssom@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.5.0.tgz#d254fa92cd8b6fbd83811b9fbaed34663cc17c36" + integrity sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw== + +cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== + dependencies: + cssom "~0.3.6" + +csstype@^3.0.2, csstype@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9" + integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw== + +damerau-levenshtein@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" + integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== + +data-urls@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-3.0.2.tgz#9cf24a477ae22bcef5cd5f6f0bfbc1d2d3be9143" + integrity sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ== + dependencies: + abab "^2.0.6" + whatwg-mimetype "^3.0.0" + whatwg-url "^11.0.0" + +debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +debug@4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" + integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== + dependencies: + ms "2.1.2" + +debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + +decamelize@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" + integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== + +decimal.js@^10.4.1: + version "10.4.2" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.2.tgz#0341651d1d997d86065a2ce3a441fbd0d8e8b98e" + integrity sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA== + +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== + +deep-eql@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" + integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== + dependencies: + type-detect "^4.0.0" + +deep-equal@^2.0.5: + version "2.1.0" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.1.0.tgz#5ba60402cf44ab92c2c07f3f3312c3d857a0e1dd" + integrity sha512-2pxgvWu3Alv1PoWEyVg7HS8YhGlUFUV7N5oOvfL6d+7xAmLSemMwv/c8Zv/i9KFzxV5Kt5CAvQc70fLwVuf4UA== + dependencies: + call-bind "^1.0.2" + es-get-iterator "^1.1.2" + get-intrinsic "^1.1.3" + is-arguments "^1.1.1" + is-date-object "^1.0.5" + is-regex "^1.1.4" + isarray "^2.0.5" + object-is "^1.1.5" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.4.3" + side-channel "^1.0.4" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.8" + +deep-extend@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deep-is@^0.1.3, deep-is@~0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + +define-properties@^1.1.3, define-properties@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" + integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== + dependencies: + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +defined@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" + integrity sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ== + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +detective@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.1.tgz#6af01eeda11015acb0e73f933242b70f24f91034" + integrity sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw== + dependencies: + acorn-node "^1.8.2" + defined "^1.0.0" + minimist "^1.2.6" + +didyoumean@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" + integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== + +diff-sequences@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.3.1.tgz#104b5b95fe725932421a9c6e5b4bef84c3f2249e" + integrity sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ== + +diff@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" + integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dlv@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" + integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9: + version "0.5.14" + resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.14.tgz#56082f71b1dc7aac69d83c4285eef39c15d93f56" + integrity sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg== + +dom-helpers@^5.0.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" + integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA== + dependencies: + "@babel/runtime" "^7.8.7" + csstype "^3.0.2" + +domexception@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-4.0.0.tgz#4ad1be56ccadc86fc76d033353999a8037d03673" + integrity sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw== + dependencies: + webidl-conversions "^7.0.0" + +duplexer2@~0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" + integrity sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA== + dependencies: + readable-stream "^2.0.2" + +duplexer@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + +ejs@^3.0.1: + version "3.1.8" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b" + integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ== + dependencies: + jake "^10.8.5" + +electron-to-chromium@^1.4.251: + version "1.4.272" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.272.tgz#cedebaeec5d9879da85b127e65a55c6b4c58344e" + integrity sha512-KS6gPPGNrzpVv9HzFVq+Etd0AjZEPr5pvaTBn2yD6KV4+cKW4I0CJoJNgmTG6gUQPAMZ4wIPtcOuoou3qFAZCA== + +emittery@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" + integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +encoding@^0.1.11: + version "0.1.13" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + +end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +entities@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.4.0.tgz#97bdaba170339446495e653cfd2db78962900174" + integrity sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA== + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5: + version "1.20.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.3.tgz#90b143ff7aedc8b3d189bcfac7f1e3e3f81e9da1" + integrity sha512-AyrnaKVpMzljIdwjzrj+LxGmj8ik2LckwXacHqrJJ/jxz6dDDBcZ7I7nlHM0FvEW8MfbWJwOd+yT2XzYW49Frw== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + function.prototype.name "^1.1.5" + get-intrinsic "^1.1.3" + get-symbol-description "^1.0.0" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-symbols "^1.0.3" + internal-slot "^1.0.3" + is-callable "^1.2.6" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-weakref "^1.0.2" + object-inspect "^1.12.2" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.4.3" + safe-regex-test "^1.0.0" + string.prototype.trimend "^1.0.5" + string.prototype.trimstart "^1.0.5" + unbox-primitive "^1.0.2" + +es-get-iterator@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.2.tgz#9234c54aba713486d7ebde0220864af5e2b283f7" + integrity sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.0" + has-symbols "^1.0.1" + is-arguments "^1.1.0" + is-map "^2.0.2" + is-set "^2.0.2" + is-string "^1.0.5" + isarray "^2.0.5" + +es-shim-unscopables@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" + integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== + dependencies: + has "^1.0.3" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escodegen@^1.11.1: + version "1.14.3" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" + integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== + dependencies: + esprima "^4.0.1" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +escodegen@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" + integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== + dependencies: + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +escodegen@~1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.1.tgz#dbae17ef96c8e4bedb1356f4504fa4cc2f7cb7e2" + integrity sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q== + dependencies: + esprima "^3.1.3" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +eslint-config-next@12.3.1: + version "12.3.1" + resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-12.3.1.tgz#5d4eb0b7903cea81fd0d5106601d3afb0a453ff4" + integrity sha512-EN/xwKPU6jz1G0Qi6Bd/BqMnHLyRAL0VsaQaWA7F3KkjAgZHi4f1uL1JKGWNxdQpHTW/sdGONBd0bzxUka/DJg== + dependencies: + "@next/eslint-plugin-next" "12.3.1" + "@rushstack/eslint-patch" "^1.1.3" + "@typescript-eslint/parser" "^5.21.0" + eslint-import-resolver-node "^0.3.6" + eslint-import-resolver-typescript "^2.7.1" + eslint-plugin-import "^2.26.0" + eslint-plugin-jsx-a11y "^6.5.1" + eslint-plugin-react "^7.31.7" + eslint-plugin-react-hooks "^4.5.0" + +eslint-import-resolver-node@^0.3.6: + version "0.3.6" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" + integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== + dependencies: + debug "^3.2.7" + resolve "^1.20.0" + +eslint-import-resolver-typescript@^2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.7.1.tgz#a90a4a1c80da8d632df25994c4c5fdcdd02b8751" + integrity sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ== + dependencies: + debug "^4.3.4" + glob "^7.2.0" + is-glob "^4.0.3" + resolve "^1.22.0" + tsconfig-paths "^3.14.1" + +eslint-module-utils@^2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz#4f3e41116aaf13a20792261e61d3a2e7e0583974" + integrity sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA== + dependencies: + debug "^3.2.7" + +eslint-plugin-import@^2.26.0: + version "2.26.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz#f812dc47be4f2b72b478a021605a59fc6fe8b88b" + integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA== + dependencies: + array-includes "^3.1.4" + array.prototype.flat "^1.2.5" + debug "^2.6.9" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.6" + eslint-module-utils "^2.7.3" + has "^1.0.3" + is-core-module "^2.8.1" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.values "^1.1.5" + resolve "^1.22.0" + tsconfig-paths "^3.14.1" + +eslint-plugin-jsx-a11y@^6.5.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz#93736fc91b83fdc38cc8d115deedfc3091aef1ff" + integrity sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q== + dependencies: + "@babel/runtime" "^7.18.9" + aria-query "^4.2.2" + array-includes "^3.1.5" + ast-types-flow "^0.0.7" + axe-core "^4.4.3" + axobject-query "^2.2.0" + damerau-levenshtein "^1.0.8" + emoji-regex "^9.2.2" + has "^1.0.3" + jsx-ast-utils "^3.3.2" + language-tags "^1.0.5" + minimatch "^3.1.2" + semver "^6.3.0" + +eslint-plugin-react-hooks@^4.5.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" + integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== + +eslint-plugin-react@^7.31.7: + version "7.31.8" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.8.tgz#3a4f80c10be1bcbc8197be9e8b641b2a3ef219bf" + integrity sha512-5lBTZmgQmARLLSYiwI71tiGVTLUuqXantZM6vlSY39OaDSV0M7+32K5DnLkmFrwTe+Ksz0ffuLUC91RUviVZfw== + dependencies: + array-includes "^3.1.5" + array.prototype.flatmap "^1.3.0" + doctrine "^2.1.0" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.5" + object.fromentries "^2.0.5" + object.hasown "^1.1.1" + object.values "^1.1.5" + prop-types "^15.8.1" + resolve "^2.0.0-next.3" + semver "^6.3.0" + string.prototype.matchall "^4.0.7" + +eslint-scope@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-scope@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" + integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-utils@^1.3.1: + version "1.4.3" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" + integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" + +eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint-visitor-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint-visitor-keys@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" + integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== + +eslint@8.24.0: + version "8.24.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.24.0.tgz#489516c927a5da11b3979dbfb2679394523383c8" + integrity sha512-dWFaPhGhTAiPcCgm3f6LI2MBWbogMnTJzFBbhXVRQDJPkr9pGZvVjlVfXd+vyDcWPA2Ic9L2AXPIQM0+vk/cSQ== + dependencies: + "@eslint/eslintrc" "^1.3.2" + "@humanwhocodes/config-array" "^0.10.5" + "@humanwhocodes/gitignore-to-minimatch" "^1.0.2" + "@humanwhocodes/module-importer" "^1.0.1" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.1.1" + eslint-utils "^3.0.0" + eslint-visitor-keys "^3.3.0" + espree "^9.4.0" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.1" + globals "^13.15.0" + globby "^11.1.0" + grapheme-splitter "^1.0.4" + ignore "^5.2.0" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-sdsl "^4.1.4" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.1" + regexpp "^3.2.0" + strip-ansi "^6.0.1" + strip-json-comments "^3.1.0" + text-table "^0.2.0" + +eslint@^5.16.0: + version "5.16.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea" + integrity sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg== + dependencies: + "@babel/code-frame" "^7.0.0" + ajv "^6.9.1" + chalk "^2.1.0" + cross-spawn "^6.0.5" + debug "^4.0.1" + doctrine "^3.0.0" + eslint-scope "^4.0.3" + eslint-utils "^1.3.1" + eslint-visitor-keys "^1.0.0" + espree "^5.0.1" + esquery "^1.0.1" + esutils "^2.0.2" + file-entry-cache "^5.0.1" + functional-red-black-tree "^1.0.1" + glob "^7.1.2" + globals "^11.7.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + inquirer "^6.2.2" + js-yaml "^3.13.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.11" + minimatch "^3.0.4" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.2" + progress "^2.0.0" + regexpp "^2.0.1" + semver "^5.5.1" + strip-ansi "^4.0.0" + strip-json-comments "^2.0.1" + table "^5.2.3" + text-table "^0.2.0" + +espree@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a" + integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A== + dependencies: + acorn "^6.0.7" + acorn-jsx "^5.0.0" + eslint-visitor-keys "^1.0.0" + +espree@^9.4.0: + version "9.4.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.0.tgz#cd4bc3d6e9336c433265fc0aa016fc1aaf182f8a" + integrity sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw== + dependencies: + acorn "^8.8.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.3.0" + +esprima@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + integrity sha512-AWwVMNxwhN8+NIPQzAQZCm7RkLC4RbM3B1OobMuyp3i+w73X57KCKaVIxaRZb+DYCojq7rspo+fmuQfAboyhFg== + +esprima@^4.0.0, esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.0.1, esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.1.0, esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1, estraverse@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== + +expect@^29.0.0, expect@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.3.1.tgz#92877aad3f7deefc2e3f6430dd195b92295554a6" + integrity sha512-gGb1yTgU30Q0O/tQq+z30KBWv24ApkMgFUpvKBkyLUBL68Wv8dHdJxTBZFl/iT8K/bqDHvUYRH6IIN3rToopPA== + dependencies: + "@jest/expect-utils" "^29.3.1" + jest-get-type "^29.2.0" + jest-matcher-utils "^29.3.1" + jest-message-util "^29.3.1" + jest-util "^29.3.1" + +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +falafel@^2.1.0: + version "2.2.5" + resolved "https://registry.yarnpkg.com/falafel/-/falafel-2.2.5.tgz#3ccb4970a09b094e9e54fead2deee64b4a589d56" + integrity sha512-HuC1qF9iTnHDnML9YZAdCDQwT0yKl/U55K4XSUXqGAA2GLoafFgWRqdAbhWJxXaYD4pyoVxAJ8wH670jMpI9DQ== + dependencies: + acorn "^7.1.1" + isarray "^2.0.1" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.2.11, fast-glob@^3.2.9: + version "3.2.12" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" + integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fastfile@0.0.18: + version "0.0.18" + resolved "https://registry.yarnpkg.com/fastfile/-/fastfile-0.0.18.tgz#2b69bbbfd2fcccc9bc8099c27de1379b89756a4b" + integrity sha512-q03PTKc+wptis4WmuFOwPNQx2p5myFUrl/dMgRlW9mymc1Egyc14JPHgiGnWK+sJ0+dBl2Vwtfh5GfSQltYOpw== + +fastq@^1.6.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + dependencies: + reusify "^1.0.4" + +fb-watchman@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== + dependencies: + bser "2.1.1" + +ffiasm@0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ffiasm/-/ffiasm-0.1.1.tgz#34ca6a00a875b5a926f66fd46e79530194e9c312" + integrity sha512-irMMHiR9JJ7BVBrAhtliUawxVdPYSdyl81taUYJ4C1mJ0iw2ueThE/qtr0J8B83tsIY8HJvh0lg5F+6ClK4xpA== + dependencies: + big-integer "^1.6.48" + ejs "^3.0.1" + yargs "^15.3.1" + +ffjavascript@0.2.22: + version "0.2.22" + resolved "https://registry.yarnpkg.com/ffjavascript/-/ffjavascript-0.2.22.tgz#101f33db330b0f6a0c10dec22ebf5725618a8a7d" + integrity sha512-EsVqap2Txm17bKW0z/jXCX3M7rQ++nQUAJY8alWDpyhjRj90xjl6GLeVSKZQ8rOFDQ/SFFXcEB8w9X8Boxid+w== + dependencies: + big-integer "^1.6.48" + wasmcurves "0.0.12" + worker-threads "^1.0.0" + +ffjavascript@0.2.34: + version "0.2.34" + resolved "https://registry.yarnpkg.com/ffjavascript/-/ffjavascript-0.2.34.tgz#e0607d1635ad06e8519268af475bc90deac60fbd" + integrity sha512-fq/qfJluC4spiOD1lp5jfckZVnS0o0kI5eKXVLw7UKwIwbNr+NBMBveBVcidSfMizF87T6wb7NBtLSdckQiAnQ== + dependencies: + big-integer "^1.6.48" + mocha "^8.2.1" + wasmcurves "0.0.14" + worker-threads "^1.0.0" + +ffwasm@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ffwasm/-/ffwasm-0.0.7.tgz#23bb9a3537ecc87c0f24fcfb3a9ddd0e86855fff" + integrity sha512-17cTLzv7HHAKqZbX8MvHxjSrR0yDdn1sh4TVsTbAvO9e6klhFicnyoVXc/sCuViV/M8g65sCmVrAmoPCZp1YkQ== + dependencies: + big-integer "^1.6.48" + wasmbuilder "0.0.10" + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA== + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" + integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== + dependencies: + flat-cache "^2.0.1" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +filelist@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== + dependencies: + minimatch "^5.0.1" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-replace@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-1.0.3.tgz#b88e7364d2d9c959559f388c66670d6130441fa0" + integrity sha512-KrUnjzDCD9426YnCP56zGYy/eieTnhtK6Vn++j+JJzmlsWWwEkDnsyVF575spT6HJ6Ow9tlbT3TQTDsa+O4UWA== + dependencies: + array-back "^1.0.4" + test-value "^2.1.0" + +find-root@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" + integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== + +find-up@5.0.0, find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +flat-cache@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" + integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== + dependencies: + flatted "^2.0.0" + rimraf "2.6.3" + write "1.0.3" + +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + +flatted@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" + integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== + +flatted@^3.1.0: + version "3.2.7" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" + integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== + +fnv-plus@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/fnv-plus/-/fnv-plus-1.3.1.tgz#c34cb4572565434acb08ba257e4044ce2b006d67" + integrity sha512-Gz1EvfOneuFfk4yG458dJ3TLJ7gV19q3OM/vVvvHf7eT02Hm1DleB4edsia6ahbKgAYxO9gvyQ1ioWZR+a00Yw== + +follow-redirects@^1.15.0: + version "1.15.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +fraction.js@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" + integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@^2.3.2, fsevents@~2.3.1, fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +function.prototype.name@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" + integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + functions-have-names "^1.2.2" + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== + +functions-have-names@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== + +get-caller-file@^2.0.1, get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-func-name@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" + integrity sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385" + integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.3" + +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-stream@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +glob-parent@^5.1.2, glob-parent@~5.1.0, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.1, glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob@7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@7.1.7, glob@~7.1.3: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.2.0: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.1.0, globals@^11.7.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^13.15.0: + version "13.17.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.17.0.tgz#902eb1e680a41da93945adbdcb5a9f361ba69bd4" + integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw== + dependencies: + type-fest "^0.20.2" + +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +graceful-fs@^4.2.9: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + +grapheme-splitter@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" + integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== + +graphql@^0.11.7: + version "0.11.7" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-0.11.7.tgz#e5abaa9cb7b7cccb84e9f0836bf4370d268750c6" + integrity sha512-x7uDjyz8Jx+QPbpCFCMQ8lltnQa4p4vSYHx6ADe8rVYRTdsyhCJbvSty5DAsLVmU6cGakl+r8HQYolKHxk/tiw== + dependencies: + iterall "1.1.3" + +growl@1.10.5: + version "1.10.5" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" + integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== + +gzip-size@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" + integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== + dependencies: + duplexer "^0.1.2" + +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +has@^1.0.1, has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +he@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +hoist-non-react-statics@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + +html-encoding-sniffer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9" + integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA== + dependencies: + whatwg-encoding "^2.0.0" + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +http-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" + integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== + dependencies: + "@tootallnate/once" "2" + agent-base "6" + debug "4" + +https-proxy-agent@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + +human-signals@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" + integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +iconv-lite@0.6.3, iconv-lite@^0.6.2: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +iconv-lite@^0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +ignore@^5.1.4, ignore@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== + +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-local@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inquirer@^6.2.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" + integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== + dependencies: + ansi-escapes "^3.2.0" + chalk "^2.4.2" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^2.0.0" + lodash "^4.17.12" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^6.4.0" + string-width "^2.1.0" + strip-ansi "^5.1.0" + through "^2.3.6" + +internal-slot@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" + integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== + dependencies: + get-intrinsic "^1.1.0" + has "^1.0.3" + side-channel "^1.0.4" + +invert-kv@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" + integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== + +is-arguments@^1.1.0, is-arguments@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.6: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +is-core-module@^2.8.1, is-core-module@^2.9.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.10.0.tgz#9012ede0a91c69587e647514e1d5277019e728ed" + integrity sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg== + dependencies: + has "^1.0.3" + +is-date-object@^1.0.1, is-date-object@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-map@^2.0.1, is-map@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" + integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== + +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-potential-custom-element-name@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== + +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-set@^2.0.1, is-set@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" + integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== + +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" + +is-stream@^1.0.1, is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typed-array@^1.1.10: + version "1.1.10" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" + integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + +is-url@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" + integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== + +is-weakmap@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" + integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +is-weakset@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d" + integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +isarray@^2.0.1, isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isomorphic-fetch@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" + integrity sha512-9c4TNAKYXM5PRyVcwUZrF3W09nQ+sO7+jydgs4ZGW9dhsLG2VOlISJABombdQqQRXCwuYG3sYV/puGf5rp0qmA== + dependencies: + node-fetch "^1.0.1" + whatwg-fetch ">=0.10.0" + +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== + +istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" + integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" + +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.1.3: + version "3.1.5" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" + integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +iterall@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.1.3.tgz#1cbbff96204056dde6656e2ed2e2226d0e6d72c9" + integrity sha512-Cu/kb+4HiNSejAPhSaN1VukdNTTi/r4/e+yykqjlG/IW+1gZH5b4+Bq3whDX4tvbYugta3r8KTMUiqT3fIGxuQ== + +jake@^10.8.5: + version "10.8.5" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" + integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== + dependencies: + async "^3.2.3" + chalk "^4.0.2" + filelist "^1.0.1" + minimatch "^3.0.4" + +jest-changed-files@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.2.0.tgz#b6598daa9803ea6a4dce7968e20ab380ddbee289" + integrity sha512-qPVmLLyBmvF5HJrY7krDisx6Voi8DmlV3GZYX0aFNbaQsZeoz1hfxcCMbqDGuQCxU1dJy9eYc2xscE8QrCCYaA== + dependencies: + execa "^5.0.0" + p-limit "^3.1.0" + +jest-circus@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.3.1.tgz#177d07c5c0beae8ef2937a67de68f1e17bbf1b4a" + integrity sha512-wpr26sEvwb3qQQbdlmei+gzp6yoSSoSL6GsLPxnuayZSMrSd5Ka7IjAvatpIernBvT2+Ic6RLTg+jSebScmasg== + dependencies: + "@jest/environment" "^29.3.1" + "@jest/expect" "^29.3.1" + "@jest/test-result" "^29.3.1" + "@jest/types" "^29.3.1" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^0.7.0" + is-generator-fn "^2.0.0" + jest-each "^29.3.1" + jest-matcher-utils "^29.3.1" + jest-message-util "^29.3.1" + jest-runtime "^29.3.1" + jest-snapshot "^29.3.1" + jest-util "^29.3.1" + p-limit "^3.1.0" + pretty-format "^29.3.1" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-cli@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.3.1.tgz#e89dff427db3b1df50cea9a393ebd8640790416d" + integrity sha512-TO/ewvwyvPOiBBuWZ0gm04z3WWP8TIK8acgPzE4IxgsLKQgb377NYGrQLc3Wl/7ndWzIH2CDNNsUjGxwLL43VQ== + dependencies: + "@jest/core" "^29.3.1" + "@jest/test-result" "^29.3.1" + "@jest/types" "^29.3.1" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + import-local "^3.0.2" + jest-config "^29.3.1" + jest-util "^29.3.1" + jest-validate "^29.3.1" + prompts "^2.0.1" + yargs "^17.3.1" + +jest-config@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.3.1.tgz#0bc3dcb0959ff8662957f1259947aedaefb7f3c6" + integrity sha512-y0tFHdj2WnTEhxmGUK1T7fgLen7YK4RtfvpLFBXfQkh2eMJAQq24Vx9472lvn5wg0MAO6B+iPfJfzdR9hJYalg== + dependencies: + "@babel/core" "^7.11.6" + "@jest/test-sequencer" "^29.3.1" + "@jest/types" "^29.3.1" + babel-jest "^29.3.1" + chalk "^4.0.0" + ci-info "^3.2.0" + deepmerge "^4.2.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-circus "^29.3.1" + jest-environment-node "^29.3.1" + jest-get-type "^29.2.0" + jest-regex-util "^29.2.0" + jest-resolve "^29.3.1" + jest-runner "^29.3.1" + jest-util "^29.3.1" + jest-validate "^29.3.1" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^29.3.1" + slash "^3.0.0" + strip-json-comments "^3.1.1" + +jest-diff@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.3.1.tgz#d8215b72fed8f1e647aed2cae6c752a89e757527" + integrity sha512-vU8vyiO7568tmin2lA3r2DP8oRvzhvRcD4DjpXc6uGveQodyk7CKLhQlCSiwgx3g0pFaE88/KLZ0yaTWMc4Uiw== + dependencies: + chalk "^4.0.0" + diff-sequences "^29.3.1" + jest-get-type "^29.2.0" + pretty-format "^29.3.1" + +jest-docblock@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.2.0.tgz#307203e20b637d97cee04809efc1d43afc641e82" + integrity sha512-bkxUsxTgWQGbXV5IENmfiIuqZhJcyvF7tU4zJ/7ioTutdz4ToB5Yx6JOFBpgI+TphRY4lhOyCWGNH/QFQh5T6A== + dependencies: + detect-newline "^3.0.0" + +jest-each@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.3.1.tgz#bc375c8734f1bb96625d83d1ca03ef508379e132" + integrity sha512-qrZH7PmFB9rEzCSl00BWjZYuS1BSOH8lLuC0azQE9lQrAx3PWGKHTDudQiOSwIy5dGAJh7KA0ScYlCP7JxvFYA== + dependencies: + "@jest/types" "^29.3.1" + chalk "^4.0.0" + jest-get-type "^29.2.0" + jest-util "^29.3.1" + pretty-format "^29.3.1" + +jest-environment-jsdom@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-29.3.1.tgz#14ca63c3e0ef5c63c5bcb46033e50bc649e3b639" + integrity sha512-G46nKgiez2Gy4zvYNhayfMEAFlVHhWfncqvqS6yCd0i+a4NsSUD2WtrKSaYQrYiLQaupHXxCRi8xxVL2M9PbhA== + dependencies: + "@jest/environment" "^29.3.1" + "@jest/fake-timers" "^29.3.1" + "@jest/types" "^29.3.1" + "@types/jsdom" "^20.0.0" + "@types/node" "*" + jest-mock "^29.3.1" + jest-util "^29.3.1" + jsdom "^20.0.0" + +jest-environment-node@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.3.1.tgz#5023b32472b3fba91db5c799a0d5624ad4803e74" + integrity sha512-xm2THL18Xf5sIHoU7OThBPtuH6Lerd+Y1NLYiZJlkE3hbE+7N7r8uvHIl/FkZ5ymKXJe/11SQuf3fv4v6rUMag== + dependencies: + "@jest/environment" "^29.3.1" + "@jest/fake-timers" "^29.3.1" + "@jest/types" "^29.3.1" + "@types/node" "*" + jest-mock "^29.3.1" + jest-util "^29.3.1" + +jest-get-type@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.2.0.tgz#726646f927ef61d583a3b3adb1ab13f3a5036408" + integrity sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA== + +jest-haste-map@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.3.1.tgz#af83b4347f1dae5ee8c2fb57368dc0bb3e5af843" + integrity sha512-/FFtvoG1xjbbPXQLFef+WSU4yrc0fc0Dds6aRPBojUid7qlPqZvxdUBA03HW0fnVHXVCnCdkuoghYItKNzc/0A== + dependencies: + "@jest/types" "^29.3.1" + "@types/graceful-fs" "^4.1.3" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^29.2.0" + jest-util "^29.3.1" + jest-worker "^29.3.1" + micromatch "^4.0.4" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.2" + +jest-leak-detector@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.3.1.tgz#95336d020170671db0ee166b75cd8ef647265518" + integrity sha512-3DA/VVXj4zFOPagGkuqHnSQf1GZBmmlagpguxEERO6Pla2g84Q1MaVIB3YMxgUaFIaYag8ZnTyQgiZ35YEqAQA== + dependencies: + jest-get-type "^29.2.0" + pretty-format "^29.3.1" + +jest-matcher-utils@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.3.1.tgz#6e7f53512f80e817dfa148672bd2d5d04914a572" + integrity sha512-fkRMZUAScup3txIKfMe3AIZZmPEjWEdsPJFK3AIy5qRohWqQFg1qrmKfYXR9qEkNc7OdAu2N4KPHibEmy4HPeQ== + dependencies: + chalk "^4.0.0" + jest-diff "^29.3.1" + jest-get-type "^29.2.0" + pretty-format "^29.3.1" + +jest-message-util@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.3.1.tgz#37bc5c468dfe5120712053dd03faf0f053bd6adb" + integrity sha512-lMJTbgNcDm5z+6KDxWtqOFWlGQxD6XaYwBqHR8kmpkP+WWWG90I35kdtQHY67Ay5CSuydkTBbJG+tH9JShFCyA== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.3.1" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.3.1" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.3.1.tgz#60287d92e5010979d01f218c6b215b688e0f313e" + integrity sha512-H8/qFDtDVMFvFP4X8NuOT3XRDzOUTz+FeACjufHzsOIBAxivLqkB1PoLCaJx9iPPQ8dZThHPp/G3WRWyMgA3JA== + dependencies: + "@jest/types" "^29.3.1" + "@types/node" "*" + jest-util "^29.3.1" + +jest-pnp-resolver@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" + integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== + +jest-regex-util@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.2.0.tgz#82ef3b587e8c303357728d0322d48bbfd2971f7b" + integrity sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA== + +jest-resolve-dependencies@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.3.1.tgz#a6a329708a128e68d67c49f38678a4a4a914c3bf" + integrity sha512-Vk0cYq0byRw2WluNmNWGqPeRnZ3p3hHmjJMp2dyyZeYIfiBskwq4rpiuGFR6QGAdbj58WC7HN4hQHjf2mpvrLA== + dependencies: + jest-regex-util "^29.2.0" + jest-snapshot "^29.3.1" + +jest-resolve@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.3.1.tgz#9a4b6b65387a3141e4a40815535c7f196f1a68a7" + integrity sha512-amXJgH/Ng712w3Uz5gqzFBBjxV8WFLSmNjoreBGMqxgCz5cH7swmBZzgBaCIOsvb0NbpJ0vgaSFdJqMdT+rADw== + dependencies: + chalk "^4.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.3.1" + jest-pnp-resolver "^1.2.2" + jest-util "^29.3.1" + jest-validate "^29.3.1" + resolve "^1.20.0" + resolve.exports "^1.1.0" + slash "^3.0.0" + +jest-runner@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.3.1.tgz#a92a879a47dd096fea46bb1517b0a99418ee9e2d" + integrity sha512-oFvcwRNrKMtE6u9+AQPMATxFcTySyKfLhvso7Sdk/rNpbhg4g2GAGCopiInk1OP4q6gz3n6MajW4+fnHWlU3bA== + dependencies: + "@jest/console" "^29.3.1" + "@jest/environment" "^29.3.1" + "@jest/test-result" "^29.3.1" + "@jest/transform" "^29.3.1" + "@jest/types" "^29.3.1" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.13.1" + graceful-fs "^4.2.9" + jest-docblock "^29.2.0" + jest-environment-node "^29.3.1" + jest-haste-map "^29.3.1" + jest-leak-detector "^29.3.1" + jest-message-util "^29.3.1" + jest-resolve "^29.3.1" + jest-runtime "^29.3.1" + jest-util "^29.3.1" + jest-watcher "^29.3.1" + jest-worker "^29.3.1" + p-limit "^3.1.0" + source-map-support "0.5.13" + +jest-runtime@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.3.1.tgz#21efccb1a66911d6d8591276a6182f520b86737a" + integrity sha512-jLzkIxIqXwBEOZx7wx9OO9sxoZmgT2NhmQKzHQm1xwR1kNW/dn0OjxR424VwHHf1SPN6Qwlb5pp1oGCeFTQ62A== + dependencies: + "@jest/environment" "^29.3.1" + "@jest/fake-timers" "^29.3.1" + "@jest/globals" "^29.3.1" + "@jest/source-map" "^29.2.0" + "@jest/test-result" "^29.3.1" + "@jest/transform" "^29.3.1" + "@jest/types" "^29.3.1" + "@types/node" "*" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-haste-map "^29.3.1" + jest-message-util "^29.3.1" + jest-mock "^29.3.1" + jest-regex-util "^29.2.0" + jest-resolve "^29.3.1" + jest-snapshot "^29.3.1" + jest-util "^29.3.1" + slash "^3.0.0" + strip-bom "^4.0.0" + +jest-snapshot@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.3.1.tgz#17bcef71a453adc059a18a32ccbd594b8cc4e45e" + integrity sha512-+3JOc+s28upYLI2OJM4PWRGK9AgpsMs/ekNryUV0yMBClT9B1DF2u2qay8YxcQd338PPYSFNb0lsar1B49sLDA== + dependencies: + "@babel/core" "^7.11.6" + "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-jsx" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/traverse" "^7.7.2" + "@babel/types" "^7.3.3" + "@jest/expect-utils" "^29.3.1" + "@jest/transform" "^29.3.1" + "@jest/types" "^29.3.1" + "@types/babel__traverse" "^7.0.6" + "@types/prettier" "^2.1.5" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^29.3.1" + graceful-fs "^4.2.9" + jest-diff "^29.3.1" + jest-get-type "^29.2.0" + jest-haste-map "^29.3.1" + jest-matcher-utils "^29.3.1" + jest-message-util "^29.3.1" + jest-util "^29.3.1" + natural-compare "^1.4.0" + pretty-format "^29.3.1" + semver "^7.3.5" + +jest-util@^29.0.0, jest-util@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.3.1.tgz#1dda51e378bbcb7e3bc9d8ab651445591ed373e1" + integrity sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ== + dependencies: + "@jest/types" "^29.3.1" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-validate@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.3.1.tgz#d56fefaa2e7d1fde3ecdc973c7f7f8f25eea704a" + integrity sha512-N9Lr3oYR2Mpzuelp1F8negJR3YE+L1ebk1rYA5qYo9TTY3f9OWdptLoNSPP9itOCBIRBqjt/S5XHlzYglLN67g== + dependencies: + "@jest/types" "^29.3.1" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^29.2.0" + leven "^3.1.0" + pretty-format "^29.3.1" + +jest-watcher@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.3.1.tgz#3341547e14fe3c0f79f9c3a4c62dbc3fc977fd4a" + integrity sha512-RspXG2BQFDsZSRKGCT/NiNa8RkQ1iKAjrO0//soTMWx/QUt+OcxMqMSBxz23PYGqUuWm2+m2mNNsmj0eIoOaFg== + dependencies: + "@jest/test-result" "^29.3.1" + "@jest/types" "^29.3.1" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.13.1" + jest-util "^29.3.1" + string-length "^4.0.1" + +jest-worker@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.3.1.tgz#e9462161017a9bb176380d721cab022661da3d6b" + integrity sha512-lY4AnnmsEWeiXirAIA0c9SDPbuCBq8IYuDVL8PMm0MZ2PEs2yPvRA/J64QBXuZp7CYKrDM/rmNrc9/i3KJQncw== + dependencies: + "@types/node" "*" + jest-util "^29.3.1" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest/-/jest-29.3.1.tgz#c130c0d551ae6b5459b8963747fed392ddbde122" + integrity sha512-6iWfL5DTT0Np6UYs/y5Niu7WIfNv/wRTtN5RSXt2DIEft3dx3zPuw/3WJQBCJfmEzvDiEKwoqMbGD9n49+qLSA== + dependencies: + "@jest/core" "^29.3.1" + "@jest/types" "^29.3.1" + import-local "^3.0.2" + jest-cli "^29.3.1" + +js-base64@^2.4.3: + version "2.6.4" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.6.4.tgz#f4e686c5de1ea1f867dbcad3d46d969428df98c4" + integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ== + +js-sdsl@^4.1.4: + version "4.1.5" + resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.1.5.tgz#1ff1645e6b4d1b028cd3f862db88c9d887f26e2a" + integrity sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q== + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.0.0.tgz#f426bc0ff4b4051926cd588c71113183409a121f" + integrity sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q== + dependencies: + argparse "^2.0.1" + +js-yaml@^3.13.0, js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsdom@^20.0.0: + version "20.0.2" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-20.0.2.tgz#65ccbed81d5e877c433f353c58bb91ff374127db" + integrity sha512-AHWa+QO/cgRg4N+DsmHg1Y7xnz+8KU3EflM0LVDTdmrYOc1WWTSkOjtpUveQH+1Bqd5rtcVnb/DuxV/UjDO4rA== + dependencies: + abab "^2.0.6" + acorn "^8.8.0" + acorn-globals "^7.0.0" + cssom "^0.5.0" + cssstyle "^2.3.0" + data-urls "^3.0.2" + decimal.js "^10.4.1" + domexception "^4.0.0" + escodegen "^2.0.0" + form-data "^4.0.0" + html-encoding-sniffer "^3.0.0" + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.1" + is-potential-custom-element-name "^1.0.1" + nwsapi "^2.2.2" + parse5 "^7.1.1" + saxes "^6.0.0" + symbol-tree "^3.2.4" + tough-cookie "^4.1.2" + w3c-xmlserializer "^3.0.0" + webidl-conversions "^7.0.0" + whatwg-encoding "^2.0.0" + whatwg-mimetype "^3.0.0" + whatwg-url "^11.0.0" + ws "^8.9.0" + xml-name-validator "^4.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json-stable-stringify@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz#e06f23128e0bbe342dc996ed5a19e28b57b580e0" + integrity sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g== + dependencies: + jsonify "^0.0.1" + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +json5@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" + integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== + +jsonify@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978" + integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg== + +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.2: + version "3.3.3" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea" + integrity sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw== + dependencies: + array-includes "^3.1.5" + object.assign "^4.1.3" + +keccak@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-2.1.0.tgz#734ea53f2edcfd0f42cdb8d5f4c358fef052752b" + integrity sha512-m1wbJRTo+gWbctZWay9i26v5fFnYkOn7D5PCxJ3fZUGUEb49dE1Pm4BREUYCt/aoO6di7jeoGmhvqN9Nzylm3Q== + dependencies: + bindings "^1.5.0" + inherits "^2.0.4" + nan "^2.14.0" + safe-buffer "^5.2.0" + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +language-subtag-registry@~0.3.2: + version "0.3.22" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" + integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== + +language-tags@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" + integrity sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ== + dependencies: + language-subtag-registry "~0.3.2" + +lcid@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" + integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== + dependencies: + invert-kv "^2.0.0" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +lilconfig@^2.0.5, lilconfig@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.6.tgz#32a384558bd58af3d4c6e077dd1ad1d397bc69d4" + integrity sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.memoize@4.x: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.padend@^4.6.1: + version "4.6.1" + resolved "https://registry.yarnpkg.com/lodash.padend/-/lodash.padend-4.6.1.tgz#53ccba047d06e158d311f45da625f4e49e6f166e" + integrity sha512-sOQs2aqGpbl27tmCS1QNZA09Uqp01ZzWfDUoD+xzTii0E7dSQfRKcRetFwa+uXaxaqL+TKm7CgD2JdKP7aZBSw== + +lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" + integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== + dependencies: + chalk "^4.0.0" + +loose-envify@^1.1.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +loupe@^2.3.1: + version "2.3.4" + resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.4.tgz#7e0b9bffc76f148f9be769cb1321d3dcf3cb25f3" + integrity sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ== + dependencies: + get-func-name "^2.0.0" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +lz-string@^1.4.4: + version "1.4.4" + resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26" + integrity sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ== + +magic-string@^0.22.4: + version "0.22.5" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.22.5.tgz#8e9cf5afddf44385c1da5bc2a6a0dbd10b03657e" + integrity sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w== + dependencies: + vlq "^0.2.2" + +make-dir@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +make-error@1.x, make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + +map-age-cleaner@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== + dependencies: + p-defer "^1.0.0" + +mem@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" + integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== + dependencies: + map-age-cleaner "^0.1.1" + mimic-fn "^2.0.0" + p-is-promise "^2.0.0" + +merge-source-map@1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.0.4.tgz#a5de46538dae84d4114cc5ea02b4772a6346701f" + integrity sha512-PGSmS0kfnTnMJCzJ16BLLCEe6oeYCamKFFdQKshi4BmM6FUwipjVOcBFGxqtQtirtAG4iZvHlqST9CpZKqlRjA== + dependencies: + source-map "^0.5.6" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + +mimic-fn@^2.0.0, mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +min-indent@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + +minimatch@3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7" + integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.1.3: + version "1.2.7" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" + integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== + +minimist@^1.2.0, minimist@^1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" + integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== + +mkdirp@^0.5.1: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mocha@^8.2.1: + version "8.4.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-8.4.0.tgz#677be88bf15980a3cae03a73e10a0fc3997f0cff" + integrity sha512-hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ== + dependencies: + "@ungap/promise-all-settled" "1.1.2" + ansi-colors "4.1.1" + browser-stdout "1.3.1" + chokidar "3.5.1" + debug "4.3.1" + diff "5.0.0" + escape-string-regexp "4.0.0" + find-up "5.0.0" + glob "7.1.6" + growl "1.10.5" + he "1.2.0" + js-yaml "4.0.0" + log-symbols "4.0.0" + minimatch "3.0.4" + ms "2.1.3" + nanoid "3.1.20" + serialize-javascript "5.0.1" + strip-json-comments "3.1.1" + supports-color "8.1.1" + which "2.0.2" + wide-align "1.1.3" + workerpool "6.1.0" + yargs "16.2.0" + yargs-parser "20.2.4" + yargs-unparser "2.0.0" + +moment@^2.22.1: + version "2.29.4" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" + integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== + +mri@^1.1.5: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" + integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== + +mrmime@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-1.0.1.tgz#5f90c825fad4bdd41dc914eff5d1a8cfdaf24f27" + integrity sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3, ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multimatch@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-4.0.0.tgz#8c3c0f6e3e8449ada0af3dd29efb491a375191b3" + integrity sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ== + dependencies: + "@types/minimatch" "^3.0.3" + array-differ "^3.0.0" + array-union "^2.1.0" + arrify "^2.0.1" + minimatch "^3.0.4" + +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ== + +nan@^2.14.0: + version "2.17.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" + integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== + +nanoid@3.1.20: + version "3.1.20" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788" + integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== + +nanoid@^3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" + integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +next@12.3.1: + version "12.3.1" + resolved "https://registry.yarnpkg.com/next/-/next-12.3.1.tgz#127b825ad2207faf869b33393ec8c75fe61e50f1" + integrity sha512-l7bvmSeIwX5lp07WtIiP9u2ytZMv7jIeB8iacR28PuUEFG5j0HGAPnMqyG5kbZNBG2H7tRsrQ4HCjuMOPnANZw== + dependencies: + "@next/env" "12.3.1" + "@swc/helpers" "0.4.11" + caniuse-lite "^1.0.30001406" + postcss "8.4.14" + styled-jsx "5.0.7" + use-sync-external-store "1.2.0" + optionalDependencies: + "@next/swc-android-arm-eabi" "12.3.1" + "@next/swc-android-arm64" "12.3.1" + "@next/swc-darwin-arm64" "12.3.1" + "@next/swc-darwin-x64" "12.3.1" + "@next/swc-freebsd-x64" "12.3.1" + "@next/swc-linux-arm-gnueabihf" "12.3.1" + "@next/swc-linux-arm64-gnu" "12.3.1" + "@next/swc-linux-arm64-musl" "12.3.1" + "@next/swc-linux-x64-gnu" "12.3.1" + "@next/swc-linux-x64-musl" "12.3.1" + "@next/swc-win32-arm64-msvc" "12.3.1" + "@next/swc-win32-ia32-msvc" "12.3.1" + "@next/swc-win32-x64-msvc" "12.3.1" + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +node-fetch@^1.0.1: + version "1.7.3" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" + integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== + dependencies: + encoding "^0.1.11" + is-stream "^1.0.1" + +node-fetch@^2.6.1: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== + +node-releases@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" + integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== + dependencies: + path-key "^2.0.0" + +npm-run-path@^4.0.0, npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== + +nwsapi@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.2.tgz#e5418863e7905df67d51ec95938d67bf801f0bb0" + integrity sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw== + +object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-hash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" + integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== + +object-inspect@^1.12.2, object-inspect@^1.9.0: + version "1.12.2" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" + integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== + +object-inspect@~1.4.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.4.1.tgz#37ffb10e71adaf3748d05f713b4c9452f402cbc4" + integrity sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw== + +object-is@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.3, object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +object.entries@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.5.tgz#e1acdd17c4de2cd96d5a08487cfb9db84d881861" + integrity sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +object.fromentries@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.5.tgz#7b37b205109c21e741e605727fe8b0ad5fa08251" + integrity sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +object.hasown@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.1.tgz#ad1eecc60d03f49460600430d97f23882cf592a3" + integrity sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A== + dependencies: + define-properties "^1.1.4" + es-abstract "^1.19.5" + +object.values@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" + integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ== + dependencies: + mimic-fn "^1.0.0" + +onetime@^5.1.0, onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +opener@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" + integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== + +optionator@^0.8.1, optionator@^0.8.2: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + +os-locale@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" + integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== + dependencies: + execa "^1.0.0" + lcid "^2.0.0" + mem "^4.0.0" + +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== + +p-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw== + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== + +p-is-promise@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" + integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== + +p-limit@^2.0.0, p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2, p-limit@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +pako@^0.2.5: + version "0.2.9" + resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" + integrity sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA== + +pako@^1.0.6: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-json@^5.0.0, parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse5@^7.0.0, parse5@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.1.tgz#4649f940ccfb95d8754f37f73078ea20afe0c746" + integrity sha512-kwpuwzB+px5WUg9pyK0IcK/shltJN5/OVhQagxhCQNtT9Y9QRZqNY2e1cmbu/paRh5LMnz/oVTVLBpjFmMZhSg== + dependencies: + entities "^4.4.0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w== + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pathval@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" + integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +pirates@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" + integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== + +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pluralize@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" + integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow== + +postcss-import@^14.1.0: + version "14.1.0" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-14.1.0.tgz#a7333ffe32f0b8795303ee9e40215dac922781f0" + integrity sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw== + dependencies: + postcss-value-parser "^4.0.0" + read-cache "^1.0.0" + resolve "^1.1.7" + +postcss-js@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.0.tgz#31db79889531b80dc7bc9b0ad283e418dce0ac00" + integrity sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ== + dependencies: + camelcase-css "^2.0.1" + +postcss-load-config@^3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.1.4.tgz#1ab2571faf84bb078877e1d07905eabe9ebda855" + integrity sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg== + dependencies: + lilconfig "^2.0.5" + yaml "^1.10.2" + +postcss-nested@5.0.6: + version "5.0.6" + resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-5.0.6.tgz#466343f7fc8d3d46af3e7dba3fcd47d052a945bc" + integrity sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA== + dependencies: + postcss-selector-parser "^6.0.6" + +postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.6: + version "6.0.10" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d" + integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@8.4.14: + version "8.4.14" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" + integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== + dependencies: + nanoid "^3.3.4" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +postcss@^8.4.14, postcss@^8.4.17: + version "8.4.17" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.17.tgz#f87863ec7cd353f81f7ab2dec5d67d861bbb1be5" + integrity sha512-UNxNOLQydcOFi41yHNMcKRZ39NeXlr8AxGuZJsdub8vIb12fHzcq37DTU/QtbI6WLxNg2gF9Z+8qtRwTj1UI1Q== + dependencies: + nanoid "^3.3.4" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== + +prettier@2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" + integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== + +pretty-format@^27.0.2: + version "27.5.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" + integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== + dependencies: + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^17.0.1" + +pretty-format@^29.0.0, pretty-format@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.3.1.tgz#1841cac822b02b4da8971dacb03e8a871b4722da" + integrity sha512-FyLnmb1cYJV8biEIiRyzRFvs2lry7PPIvOqKVe1GCUEYg4YGmlx1qG9EJNMxArYm7piII4qb8UV1Pncq5dxmcg== + dependencies: + "@jest/schemas" "^29.0.0" + ansi-styles "^5.0.0" + react-is "^18.0.0" + +pretty-quick@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/pretty-quick/-/pretty-quick-3.1.3.tgz#15281108c0ddf446675157ca40240099157b638e" + integrity sha512-kOCi2FJabvuh1as9enxYmrnBC6tVMoVOenMaBqRfsvBHB0cbpYHjdQEpSglpASDFEXVwplpcGR4CLEaisYAFcA== + dependencies: + chalk "^3.0.0" + execa "^4.0.0" + find-up "^4.1.0" + ignore "^5.1.4" + mri "^1.1.5" + multimatch "^4.0.0" + +process-nextick-args@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + integrity sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +prompts@^2.0.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +prop-types@^15.6.2, prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +psl@^1.1.33: + version "1.9.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + +quicktype@^15.1.0: + version "15.1.0" + resolved "https://registry.yarnpkg.com/quicktype/-/quicktype-15.1.0.tgz#710c8512eb64a86a37d9ccd4bca549442f019f15" + integrity sha512-hhOXV+XxOlA8UPmjRLEEjkfOcGvKiIXE5dlxv6byz+zx7BHXsYXKZGjgkDweJYf7ta0cGixKlo1qJdZSQOljiA== + dependencies: + "@mark.probst/typescript-json-schema" "~0.32.0" + "@mark.probst/unicode-properties" "~1.1.0" + browser-or-node "^1.2.1" + chalk "^2.4.1" + collection-utils "^1.0.1" + command-line-args "^4.0.6" + command-line-usage "^5.0.5" + graphql "^0.11.7" + is-url "^1.2.4" + isomorphic-fetch "^2.2.1" + js-base64 "^2.4.3" + lodash "^4.17.21" + moment "^2.22.1" + node-fetch "^2.6.1" + pako "^1.0.6" + pluralize "^7.0.0" + readable-stream "2.3.0" + stream-json "1.1.3" + string-to-stream "^1.1.0" + typescript "~3.2.1" + urijs "^1.19.6" + uuid "^3.2.1" + wordwrap "^1.0.0" + yaml "^1.5.0" + +quote-stream@^1.0.1, quote-stream@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/quote-stream/-/quote-stream-1.0.2.tgz#84963f8c9c26b942e153feeb53aae74652b7e0b2" + integrity sha512-kKr2uQ2AokadPjvTyKJQad9xELbZwYzWlNfI3Uz2j/ib5u6H9lDP7fUUR//rMycd0gv4Z5P1qXMfXR8YpIxrjQ== + dependencies: + buffer-equal "0.0.1" + minimist "^1.1.3" + through2 "^2.0.0" + +r1csfile@0.0.16: + version "0.0.16" + resolved "https://registry.yarnpkg.com/r1csfile/-/r1csfile-0.0.16.tgz#53c66a79b50eebc2d15a1048e39d548ce9da7ccd" + integrity sha512-A2jRVWzGgmXeG2lVAc0H4suJmzt50it5UvBnycJgBCpMXM3tH/M6RguP7nvs6suY/yYnkN6jX6iTScSiDUF3FA== + dependencies: + "@iden3/bigarray" "0.0.2" + fastfile "0.0.18" + ffjavascript "0.2.22" + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +react-dom@18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" + integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== + dependencies: + loose-envify "^1.1.0" + scheduler "^0.23.0" + +react-is@^16.13.1, react-is@^16.7.0: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^17.0.1: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + +react-is@^18.0.0, react-is@^18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== + +react-spinners@^0.13.6: + version "0.13.6" + resolved "https://registry.yarnpkg.com/react-spinners/-/react-spinners-0.13.6.tgz#f97df4f7fedea7a496b391cf952761e13256610b" + integrity sha512-+VoSs1wN6oMhJy7PzCPiHUt6zUi9fvnGQizem8q/NzXhGovbdXFDWNhspk6KEKXQEafInUtpvtDlp/zJ5sES/A== + +react-transition-group@^4.4.5: + version "4.4.5" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1" + integrity sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g== + dependencies: + "@babel/runtime" "^7.5.5" + dom-helpers "^5.0.1" + loose-envify "^1.4.0" + prop-types "^15.6.2" + +react@18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" + integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== + dependencies: + loose-envify "^1.1.0" + +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== + dependencies: + pify "^2.3.0" + +readable-stream@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.0.tgz#640f5dcda88c91a8dc60787145629170813a1ed2" + integrity sha512-c7KMXGd4b48nN3OJ1U9qOsn6pXNzf6kLd3kdZCkg2sxAcoiufInqF0XckwEnlrcwuaYwonlNK8GQUIOC/WC7sg== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + safe-buffer "~5.1.0" + string_decoder "~1.0.0" + util-deprecate "~1.0.1" + +readable-stream@^2.0.2, readable-stream@^2.1.0, readable-stream@^2.2.2, readable-stream@~2.3.3, readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readdirp@~3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" + integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== + dependencies: + picomatch "^2.2.1" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +redent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== + dependencies: + indent-string "^4.0.0" + strip-indent "^3.0.0" + +reduce-flatten@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-1.0.1.tgz#258c78efd153ddf93cb561237f61184f3696e327" + integrity sha512-j5WfFJfc9CoXv/WbwVLHq74i/hdTUpy+iNC534LxczMRP67vJeK3V9JOdnL0N1cIRbn9mYhE2yVjvvKXDxvNXQ== + +regenerator-runtime@^0.13.10: + version "0.13.10" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz#ed07b19616bcbec5da6274ebc75ae95634bfc2ee" + integrity sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw== + +regenerator-runtime@^0.13.4: + version "0.13.9" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" + integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== + +regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" + integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + functions-have-names "^1.2.2" + +regexpp@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" + integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== + +regexpp@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug== + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve.exports@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" + integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== + +resolve@^1.1.5, resolve@^1.1.7, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.22.1: + version "1.22.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@^2.0.0-next.3: + version "2.0.0-next.4" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" + integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q== + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +run-async@^2.2.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +rxjs@^6.4.0: + version "6.6.7" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" + integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== + dependencies: + tslib "^1.9.0" + +safe-buffer@^5.1.0, safe-buffer@^5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" + +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +saxes@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-6.0.0.tgz#fe5b4a4768df4f14a201b1ba6a65c1f3d9988cc5" + integrity sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA== + dependencies: + xmlchars "^2.2.0" + +scheduler@^0.23.0: + version "0.23.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" + integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== + dependencies: + loose-envify "^1.1.0" + +semver@7.x, semver@^7.3.5: + version "7.3.8" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" + integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== + dependencies: + lru-cache "^6.0.0" + +semver@^5.5.0, semver@^5.5.1: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@^6.0.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.3.7: + version "7.3.7" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" + integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== + dependencies: + lru-cache "^6.0.0" + +serialize-javascript@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" + integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== + dependencies: + randombytes "^2.1.0" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + +shallow-copy@~0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/shallow-copy/-/shallow-copy-0.0.1.tgz#415f42702d73d810330292cc5ee86eae1a11a170" + integrity sha512-b6i4ZpVuUxB9h5gfCxPiusKYkqTMOjEbBs4wMaFbkfia4yFv92UKZ6Df8WXcKbn08JNL/abvg3FnMAOfakDvUw== + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== + dependencies: + shebang-regex "^1.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +sirv@^1.0.7: + version "1.0.19" + resolved "https://registry.yarnpkg.com/sirv/-/sirv-1.0.19.tgz#1d73979b38c7fe91fcba49c85280daa9c2363b49" + integrity sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ== + dependencies: + "@polka/url" "^1.0.0-next.20" + mrmime "^1.0.0" + totalist "^1.0.0" + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + +snarkjs@0.1.16: + version "0.1.16" + resolved "https://registry.yarnpkg.com/snarkjs/-/snarkjs-0.1.16.tgz#d94545a1138e03547d7cab213949082106550a2c" + integrity sha512-BMWWNlPe5YtDHVjR3Yl7YuEQ44BtkuPUNtoCJaSQFKaoXOubhwVWGTYpdA2eQUaHg7eFivCSnEj2NI4u5C68ug== + dependencies: + big-integer "^1.6.43" + chai "^4.2.0" + escape-string-regexp "^1.0.5" + eslint "^5.16.0" + keccak "^2.0.0" + yargs "^12.0.5" + +source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +source-map-support@0.5.13: + version "0.5.13" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.5.6, source-map@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +stack-utils@^2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== + dependencies: + escape-string-regexp "^2.0.0" + +static-eval@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/static-eval/-/static-eval-2.1.0.tgz#a16dbe54522d7fa5ef1389129d813fd47b148014" + integrity sha512-agtxZ/kWSsCkI5E4QifRwsaPs0P0JmZV6dkLz6ILYfFYQGn+5plctanRN+IC8dJRiFkyXHrwEE3W9Wmx67uDbw== + dependencies: + escodegen "^1.11.1" + +static-module@^2.2.0: + version "2.2.5" + resolved "https://registry.yarnpkg.com/static-module/-/static-module-2.2.5.tgz#bd40abceae33da6b7afb84a0e4329ff8852bfbbf" + integrity sha512-D8vv82E/Kpmz3TXHKG8PPsCPg+RAX6cbCOyvjM6x04qZtQ47EtJFVwRsdov3n5d6/6ynrOY9XB4JkaZwB2xoRQ== + dependencies: + concat-stream "~1.6.0" + convert-source-map "^1.5.1" + duplexer2 "~0.1.4" + escodegen "~1.9.0" + falafel "^2.1.0" + has "^1.0.1" + magic-string "^0.22.4" + merge-source-map "1.0.4" + object-inspect "~1.4.0" + quote-stream "~1.0.2" + readable-stream "~2.3.3" + shallow-copy "~0.0.1" + static-eval "^2.0.0" + through2 "~2.0.3" + +stream-chain@^2.0.3: + version "2.2.5" + resolved "https://registry.yarnpkg.com/stream-chain/-/stream-chain-2.2.5.tgz#b30967e8f14ee033c5b9a19bbe8a2cba90ba0d09" + integrity sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA== + +stream-json@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/stream-json/-/stream-json-1.1.3.tgz#4ebef75590f3af2a7291726a8e2bb2ce06d2c166" + integrity sha512-y+ChhCov2A5nDqC2aZ6HKXs3OvDlvAp0Ps3BF1P/Iv8tUZJQQsMVaSzk0WryVTVoGITKv01UYahCXMpAs7I0lQ== + dependencies: + stream-chain "^2.0.3" + +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + +string-to-stream@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string-to-stream/-/string-to-stream-1.1.1.tgz#aba78f73e70661b130ee3e1c0192be4fef6cb599" + integrity sha512-QySF2+3Rwq0SdO3s7BAp4x+c3qsClpPQ6abAmb0DGViiSBAkT5kL6JT2iyzEVP+T1SmzHrQD1TwlP9QAHCc+Sw== + dependencies: + inherits "^2.0.1" + readable-stream "^2.1.0" + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string.prototype.matchall@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz#8e6ecb0d8a1fb1fda470d81acecb2dba057a481d" + integrity sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + get-intrinsic "^1.1.1" + has-symbols "^1.0.3" + internal-slot "^1.0.3" + regexp.prototype.flags "^1.4.1" + side-channel "^1.0.4" + +string.prototype.trimend@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0" + integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" + +string.prototype.trimstart@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef" + integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" + +string_decoder@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" + integrity sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ== + dependencies: + safe-buffer "~5.1.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + dependencies: + min-indent "^1.0.0" + +strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +strip-json-comments@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== + +styled-jsx@5.0.7: + version "5.0.7" + resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.0.7.tgz#be44afc53771b983769ac654d355ca8d019dff48" + integrity sha512-b3sUzamS086YLRuvnaDigdAewz1/EFYlHpYBP5mZovKEdQQOIIYq8lApylub3HHZ6xFjV051kkGU7cudJmrXEA== + +stylis@4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.1.3.tgz#fd2fbe79f5fed17c55269e16ed8da14c84d069f7" + integrity sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA== + +supports-color@8.1.1, supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +symbol-tree@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + +table-layout@^0.4.3: + version "0.4.5" + resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-0.4.5.tgz#d906de6a25fa09c0c90d1d08ecd833ecedcb7378" + integrity sha512-zTvf0mcggrGeTe/2jJ6ECkJHAQPIYEwDoqsiqBjI24mvRmQbInK5jq33fyypaCBxX08hMkfmdOqj6haT33EqWw== + dependencies: + array-back "^2.0.0" + deep-extend "~0.6.0" + lodash.padend "^4.6.1" + typical "^2.6.1" + wordwrapjs "^3.0.0" + +table@^5.2.3: + version "5.4.6" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" + integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== + dependencies: + ajv "^6.10.2" + lodash "^4.17.14" + slice-ansi "^2.1.0" + string-width "^3.0.0" + +tailwindcss@^3.1.8: + version "3.1.8" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.1.8.tgz#4f8520550d67a835d32f2f4021580f9fddb7b741" + integrity sha512-YSneUCZSFDYMwk+TGq8qYFdCA3yfBRdBlS7txSq0LUmzyeqRe3a8fBQzbz9M3WS/iFT4BNf/nmw9mEzrnSaC0g== + dependencies: + arg "^5.0.2" + chokidar "^3.5.3" + color-name "^1.1.4" + detective "^5.2.1" + didyoumean "^1.2.2" + dlv "^1.1.3" + fast-glob "^3.2.11" + glob-parent "^6.0.2" + is-glob "^4.0.3" + lilconfig "^2.0.6" + normalize-path "^3.0.0" + object-hash "^3.0.0" + picocolors "^1.0.0" + postcss "^8.4.14" + postcss-import "^14.1.0" + postcss-js "^4.0.0" + postcss-load-config "^3.1.4" + postcss-nested "5.0.6" + postcss-selector-parser "^6.0.10" + postcss-value-parser "^4.2.0" + quick-lru "^5.1.1" + resolve "^1.22.1" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + +test-value@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/test-value/-/test-value-2.1.0.tgz#11da6ff670f3471a73b625ca4f3fdcf7bb748291" + integrity sha512-+1epbAxtKeXttkGFMTX9H42oqzOTufR1ceCF+GYA5aOmvaPq9wd4PUS8329fn2RRLGNeUkgRLnVpycjx8DsO2w== + dependencies: + array-back "^1.0.3" + typical "^2.6.0" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +through2@^2.0.0, through2@~2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +tiny-inflate@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tiny-inflate/-/tiny-inflate-1.0.3.tgz#122715494913a1805166aaf7c93467933eea26c4" + integrity sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw== + +tmp-promise@^2.0.2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-2.1.1.tgz#eb97c038995af74efbfe8156f5e07fdd0c935539" + integrity sha512-Z048AOz/w9b6lCbJUpevIJpRpUztENl8zdv1bmAKVHimfqRFl92ROkmT9rp7TVBnrEw2gtMTol/2Cp2S2kJa4Q== + dependencies: + tmp "0.1.0" + +tmp@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.1.0.tgz#ee434a4e22543082e294ba6201dcc6eafefa2877" + integrity sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw== + dependencies: + rimraf "^2.6.3" + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +totalist@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/totalist/-/totalist-1.1.0.tgz#a4d65a3e546517701e3e5c37a47a70ac97fe56df" + integrity sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g== + +tough-cookie@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.2.tgz#e53e84b85f24e0b65dd526f46628db6c85f6b874" + integrity sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ== + dependencies: + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.2.0" + url-parse "^1.5.3" + +tr46@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9" + integrity sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA== + dependencies: + punycode "^2.1.1" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +ts-jest@^29.0.3: + version "29.0.3" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.0.3.tgz#63ea93c5401ab73595440733cefdba31fcf9cb77" + integrity sha512-Ibygvmuyq1qp/z3yTh9QTwVVAbFdDy/+4BtIQR2sp6baF2SJU/8CKK/hhnGIDY2L90Az2jIqTwZPnN2p+BweiQ== + dependencies: + bs-logger "0.x" + fast-json-stable-stringify "2.x" + jest-util "^29.0.0" + json5 "^2.2.1" + lodash.memoize "4.x" + make-error "1.x" + semver "7.x" + yargs-parser "^21.0.1" + +ts-node@^10.9.1: + version "10.9.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" + integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +tsconfig-paths@^3.14.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" + integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tslib@^1.8.1, tslib@^1.9.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== + dependencies: + prelude-ls "~1.1.2" + +type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.5: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== + +typescript@4.8.4: + version "4.8.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.4.tgz#c464abca159669597be5f96b8943500b238e60e6" + integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ== + +typescript@~3.2.1: + version "3.2.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.2.4.tgz#c585cb952912263d915b462726ce244ba510ef3d" + integrity sha512-0RNDbSdEokBeEAkgNbxJ+BLwSManFy9TeXz8uW+48j/xhEXv1ePME60olyzw2XzUqUBNAYFeJadIqAgNqIACwg== + +typical@^2.6.0, typical@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/typical/-/typical-2.6.1.tgz#5c080e5d661cbbe38259d2e70a3c7253e873881d" + integrity sha512-ofhi8kjIje6npGozTip9Fr8iecmYfEbS06i0JnIg+rh51KakryWF4+jX8lLKZVhy6N+ID45WYSFCxPOdTWCzNg== + +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + +unicode-trie@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/unicode-trie/-/unicode-trie-0.3.1.tgz#d671dddd89101a08bac37b6a5161010602052085" + integrity sha512-WgVuO0M2jDl7hVfbPgXv2LUrD81HM0bQj/bvLGiw6fJ4Zo8nNFnDrA0/hU2Te/wz6pjxCm5cxJwtLjo2eyV51Q== + dependencies: + pako "^0.2.5" + tiny-inflate "^1.0.0" + +universalify@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" + integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== + +update-browserslist-db@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz#2924d3927367a38d5c555413a7ce138fc95fcb18" + integrity sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +urijs@^1.19.6: + version "1.19.11" + resolved "https://registry.yarnpkg.com/urijs/-/urijs-1.19.11.tgz#204b0d6b605ae80bea54bea39280cdb7c9f923cc" + integrity sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ== + +url-parse@^1.5.3: + version "1.5.10" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +use-sync-external-store@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" + integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== + +util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +uuid@^3.2.1: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + +v8-to-istanbul@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz#b6f994b0b5d4ef255e17a0d17dc444a9f5132fa4" + integrity sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w== + dependencies: + "@jridgewell/trace-mapping" "^0.3.12" + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + +vlq@^0.2.2: + version "0.2.3" + resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" + integrity sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow== + +w3c-xmlserializer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz#06cdc3eefb7e4d0b20a560a5a3aeb0d2d9a65923" + integrity sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg== + dependencies: + xml-name-validator "^4.0.0" + +walker@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" + +wasmbuilder@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/wasmbuilder/-/wasmbuilder-0.0.10.tgz#b8298b2095ef9979d32f3881d1feef1705ec868a" + integrity sha512-zQSvZ7d74d9OvN+mCN6ucNne4QS5/cBBYTHldX0Oe+u9gStY21orapvuX1ajisA7RVIpuFhYg+ZgdySsPfeh0A== + dependencies: + big-integer "^1.6.48" + +wasmcurves@0.0.12: + version "0.0.12" + resolved "https://registry.yarnpkg.com/wasmcurves/-/wasmcurves-0.0.12.tgz#1496e2219ac07f9a420f527803ae13b1d7a89246" + integrity sha512-1Jl9mkatyHSNj80ILjf85SZUNuZQBCkTjJlhzqHnZQXUmIimCIWkugaVaYNjozLs1Gun4h/keZe1MBeBN0sRpg== + dependencies: + big-integer "^1.6.42" + blakejs "^1.1.0" + +wasmcurves@0.0.14: + version "0.0.14" + resolved "https://registry.yarnpkg.com/wasmcurves/-/wasmcurves-0.0.14.tgz#cbe0f19650d9554937154afdbed66b305bd2a348" + integrity sha512-G1iMkxlRaQSdqQ1JrwHcU+awLmwyH6kFKfT8g9obd8MWe+u5oSdFXrODB0zmSI5aGGvJPG+4cAmqCGYv9R+7qg== + dependencies: + big-integer "^1.6.42" + blakejs "^1.1.0" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +webidl-conversions@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" + integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== + +webpack-bundle-analyzer@4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.3.0.tgz#2f3c0ca9041d5ee47fa418693cf56b4a518b578b" + integrity sha512-J3TPm54bPARx6QG8z4cKBszahnUglcv70+N+8gUqv2I5KOFHJbzBiLx+pAp606so0X004fxM7hqRu10MLjJifA== + dependencies: + acorn "^8.0.4" + acorn-walk "^8.0.0" + chalk "^4.1.0" + commander "^6.2.0" + gzip-size "^6.0.0" + lodash "^4.17.20" + opener "^1.5.2" + sirv "^1.0.7" + ws "^7.3.1" + +whatwg-encoding@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" + integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg== + dependencies: + iconv-lite "0.6.3" + +whatwg-fetch@>=0.10.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" + integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== + +whatwg-mimetype@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" + integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== + +whatwg-url@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-11.0.0.tgz#0a849eebb5faf2119b901bb76fd795c2848d4018" + integrity sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ== + dependencies: + tr46 "^3.0.0" + webidl-conversions "^7.0.0" + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-collection@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" + integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== + dependencies: + is-map "^2.0.1" + is-set "^2.0.1" + is-weakmap "^2.0.1" + is-weakset "^2.0.1" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== + +which-typed-array@^1.1.8: + version "1.1.9" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" + integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + is-typed-array "^1.1.10" + +which@2.0.2, which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +which@^1.2.9: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +wide-align@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + +word-wrap@^1.2.3, word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== + +wordwrapjs@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-3.0.0.tgz#c94c372894cadc6feb1a66bff64e1d9af92c5d1e" + integrity sha512-mO8XtqyPvykVCsrwj5MlOVWvSnCdT+C+QVbm6blradR7JExAhbkZ7hZ9A+9NUtwzSqrlUo9a67ws0EiILrvRpw== + dependencies: + reduce-flatten "^1.0.1" + typical "^2.6.1" + +worker-threads@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/worker-threads/-/worker-threads-1.0.0.tgz#2b49ea7c9692ba737d9148f2c9b2be65e14e3470" + integrity sha512-vK6Hhvph8oLxocEJIlc3YfGAZhm210uGzjZsXSu+JYLAQ/s/w4Tqgl60JrdH58hW8NSGP4m3bp8a92qPXgX05w== + +workerpool@6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.1.0.tgz#a8e038b4c94569596852de7a8ea4228eefdeb37b" + integrity sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg== + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw== + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" + integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + +write@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" + integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== + dependencies: + mkdirp "^0.5.1" + +ws@^7.3.1: + version "7.5.9" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + +ws@^8.9.0: + version "8.11.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.11.0.tgz#6a0d36b8edfd9f96d8b25683db2f8d7de6e8e143" + integrity sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg== + +xml-name-validator@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" + integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== + +xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + +xtend@^4.0.2, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.10.0, yaml@^1.10.2, yaml@^1.5.0: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yargs-parser@20.2.4: + version "20.2.4" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== + +yargs-parser@^11.1.1: + version "11.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" + integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-parser@^21.0.1, yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs-unparser@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== + dependencies: + camelcase "^6.0.0" + decamelize "^4.0.0" + flat "^5.0.2" + is-plain-obj "^2.1.0" + +yargs@16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yargs@^12.0.5: + version "12.0.5" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" + integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== + dependencies: + cliui "^4.0.0" + decamelize "^1.2.0" + find-up "^3.0.0" + get-caller-file "^1.0.1" + os-locale "^3.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1 || ^4.0.0" + yargs-parser "^11.1.1" + +yargs@^15.3.1: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" + +yargs@^17.3.1: + version "17.6.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.6.2.tgz#2e23f2944e976339a1ee00f18c77fedee8332541" + integrity sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== diff --git a/zkrsa/package.json b/zkrsa/package.json new file mode 100644 index 000000000..6f190174f --- /dev/null +++ b/zkrsa/package.json @@ -0,0 +1,28 @@ +{ + "name": "zkrsa", + "version": "1.0.0", + "main": "index.js", + "repository": "git@github.com:dmpierre/zkrsa.git", + "license": "MIT", + "scripts": { + "sign": "yarn ts-node scripts/generateSignature $@", + "prepare": "husky install", + "test:circuit": "yarn tsc --outDir testCircuit" + }, + "devDependencies": { + "@types/mocha": "^10.0.1", + "@types/node": "^18.11.9", + "@types/node-forge": "^1.3.1", + "arraybuffer-to-string": "^1.0.2", + "big-integer": "^1.6.51", + "circom_tester": "^0.0.19", + "circomlib": "^2.0.5", + "husky": "^8.0.0", + "mocha": "^10.2.0", + "node-forge": "^1.3.1", + "node-signpdf": "^1.5.0", + "ts-node": "^10.9.1", + "typescript": "^4.8.4" + }, + "dependencies": {} +} diff --git a/zkrsa/scripts/generateSignature.ts b/zkrsa/scripts/generateSignature.ts new file mode 100644 index 000000000..d17948ca2 --- /dev/null +++ b/zkrsa/scripts/generateSignature.ts @@ -0,0 +1,49 @@ +import * as crypto from "crypto"; +import { exit } from "process"; +const bigInt = require("big-integer"); +const ab2str = require("arraybuffer-to-string"); + +async function main() { + const message = process.argv.slice(2, process.argv.length).join(" "); + const ec = new TextEncoder(); + + const { publicKey, privateKey } = await crypto.webcrypto.subtle.generateKey( + { + name: "RSASSA-PKCS1-v1_5", + modulusLength: 2048, + publicExponent: new Uint8Array([1, 0, 1]), + hash: "SHA-256", + }, + true, + ["sign", "verify"] + ); + + const pub = await crypto.webcrypto.subtle.exportKey("jwk", publicKey); + + const signature = await crypto.webcrypto.subtle.sign( + "RSASSA-PKCS1-v1_5", + privateKey, + ec.encode(message) + ); + const digest = await crypto.webcrypto.subtle.digest( + "SHA-256", + ec.encode(message) + ); + + const pubKey = bigInt( + Buffer.from(pub.n!, "base64").toString("hex"), + 16 + ).toString(); + + const digestDecimal = bigInt(ab2str(digest, "hex"), 16).toString(); + const signatureDecimal = bigInt(ab2str(signature, "hex"), 16).toString(); + + console.log({ + digestDecimal, + signatureDecimal, + pubKey, + }); + return; +} + +main().then(() => exit(0)); diff --git a/zkrsa/scripts/verifyx509pdf.ts b/zkrsa/scripts/verifyx509pdf.ts new file mode 100644 index 000000000..ccfa8e9d4 --- /dev/null +++ b/zkrsa/scripts/verifyx509pdf.ts @@ -0,0 +1,75 @@ +import { + createVerify, + createHash, + X509Certificate, + publicDecrypt, +} from "crypto"; +import fs from "fs"; +import { asn1 } from "node-forge"; +import * as forge from "node-forge"; +import { exit } from "process"; +import assert from "assert"; +//@ts-ignore +const { extractSignature } = require("node-signpdf"); +const bigInt = require("big-integer"); + +const main = () => { + const rsa = forge.pki.rsa; + + const pdf = fs.readFileSync("./adhaar.pdf"); + let pem = fs.readFileSync("./cert.pem"); + + // extract asn1 signature + const { ByteRange, signedData, signature } = extractSignature(pdf); + const x509 = new X509Certificate(pem); + const signatureASN1 = asn1.fromDer(signature).value as string; + const pubKey = x509.publicKey.export({ format: "jwk" }); + + // ensure signature is of correct format + const signatureLength = Buffer.from(signatureASN1, "binary").length; + assert( + signatureLength == 256, + `Signature is of incorrect length: ${signatureLength}; should be 256.` + ); + + // verify signature + const verifyAlgo = createVerify("RSA-SHA1"); + verifyAlgo.update(signedData); + const result = verifyAlgo.verify(x509.publicKey, signatureASN1, "binary"); + + assert(result); + + // manual check - additional example + const sha1 = createHash("SHA1"); + sha1.update(signedData); + const digest = sha1.digest(); + const decrypted = publicDecrypt( + x509.publicKey, + Buffer.from(signatureASN1, "binary") + ); + + /* + signed data is: SHA1_ID || M + where SHA1_ID is (0x)30 21 30 09 06 05 2b 0e 03 02 1a 05 00 04 14 + https://www.rfc-editor.org/rfc/rfc8017#section-9.2 (p. 46) + */ + assert(Buffer.compare(digest, decrypted.subarray(15, decrypted.length)) == 0); + + // values that can be input to circuit + console.log({ + derPaddedMsg: BigInt("0x" + decrypted.toString("hex")), + msg: BigInt("0x" + digest.toString("hex")), + sig: BigInt("0x" + Buffer.from(signatureASN1, "binary").toString("hex")), + mod: BigInt( + "0x" + + Buffer.from( + x509.publicKey.export({ format: "jwk" }).n!, + "base64" + ).toString("hex") + ), + }); + + return 0; +}; + +exit(main()); diff --git a/zkrsa/yarn.lock b/zkrsa/yarn.lock new file mode 100644 index 000000000..59d37bf9b --- /dev/null +++ b/zkrsa/yarn.lock @@ -0,0 +1,1085 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@iden3/bigarray@0.0.2": + version "0.0.2" + resolved "https://registry.yarnpkg.com/@iden3/bigarray/-/bigarray-0.0.2.tgz#6fc4ba5be18daf8a26ee393f2fb62b80d98c05e9" + integrity sha512-Xzdyxqm1bOFF6pdIsiHLLl3HkSLjbhqJHVyqaTxXt3RqXBEnmsUmEW47H7VOi/ak7TdkRpNkxjyK5Zbkm+y52g== + +"@iden3/binfileutils@0.0.11": + version "0.0.11" + resolved "https://registry.yarnpkg.com/@iden3/binfileutils/-/binfileutils-0.0.11.tgz#9ffbbcc1279f2b2182bb6dcff4eee8a5b2167911" + integrity sha512-LylnJoZ0CTdgErnKY8OxohvW4K+p6UHD3sxt+3P9AmMyBQjYR4IpoqoYZZ+9aMj89cmCQ21UvdhndAx04er3NA== + dependencies: + fastfile "0.0.20" + ffjavascript "^0.2.48" + +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@tsconfig/node10@^1.0.7": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" + integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" + integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== + +"@types/mocha@^10.0.1": + version "10.0.1" + resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-10.0.1.tgz#2f4f65bb08bc368ac39c96da7b2f09140b26851b" + integrity sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q== + +"@types/node-forge@^1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@types/node-forge/-/node-forge-1.3.1.tgz#49e44432c306970b4e900c3b214157c480af19fa" + integrity sha512-hvQ7Wav8I0j9amPXJtGqI/Yx70zeF62UKlAYq8JPm0nHzjKKzZvo9iR3YI2MiOghZRlOI+tQ2f6D+G6vVf4V2Q== + dependencies: + "@types/node" "*" + +"@types/node@*", "@types/node@^18.11.9": + version "18.11.15" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.15.tgz#de0e1fbd2b22b962d45971431e2ae696643d3f5d" + integrity sha512-VkhBbVo2+2oozlkdHXLrb3zjsRkpdnaU2bXmX8Wgle3PUi569eLRaHGlgETQHR7lLL1w7GiG3h9SnePhxNDecw== + +acorn-walk@^8.1.1: + version "8.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + +acorn@^8.4.1: + version "8.8.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" + integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== + +ansi-colors@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +arraybuffer-to-string@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/arraybuffer-to-string/-/arraybuffer-to-string-1.0.2.tgz#c373aa7bb0e6844d9a2bc9654c8889a9570a26e2" + integrity sha512-WbIYlLVmvIAyUBdQRRuyGOJRriOQy9OAsWcyURmsRQp9+g647hdMSS2VFKXbJLVw0daUu06hqwLXm9etVrXI9A== + +assertion-error@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== + +async@^3.2.3: + version "3.2.4" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== + +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + +b4a@^1.0.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/b4a/-/b4a-1.6.1.tgz#9effac93a469a868d024e16fd77162c653544cbd" + integrity sha512-AsKjNhz72yxteo/0EtQEiwkMUgk/tGmycXlbG4g3Ard2/ULtNLUykGOkeK0egmN27h0xMAhb76jYccW+XTBExA== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +bfj@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/bfj/-/bfj-7.0.2.tgz#1988ce76f3add9ac2913fd8ba47aad9e651bfbb2" + integrity sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw== + dependencies: + bluebird "^3.5.5" + check-types "^11.1.1" + hoopy "^0.1.4" + tryer "^1.0.1" + +big-integer@^1.6.51: + version "1.6.51" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" + integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +blake2b-wasm@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/blake2b-wasm/-/blake2b-wasm-2.4.0.tgz#9115649111edbbd87eb24ce7c04b427e4e2be5be" + integrity sha512-S1kwmW2ZhZFFFOghcx73+ZajEfKBqhP82JMssxtLVMxlaPea1p9uoLiUZ5WYyHn0KddwbLc+0vh4wR0KBNoT5w== + dependencies: + b4a "^1.0.1" + nanoassert "^2.0.0" + +bluebird@^3.5.5: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browser-stdout@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== + +call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +camelcase@^6.0.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +chai@^4.3.6: + version "4.3.7" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.7.tgz#ec63f6df01829088e8bf55fca839bcd464a8ec51" + integrity sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A== + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.2" + deep-eql "^4.1.2" + get-func-name "^2.0.0" + loupe "^2.3.1" + pathval "^1.1.1" + type-detect "^4.0.5" + +chalk@^4.0.2, chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +check-error@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" + integrity sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA== + +check-types@^11.1.1: + version "11.2.2" + resolved "https://registry.yarnpkg.com/check-types/-/check-types-11.2.2.tgz#7afc0b6a860d686885062f2dba888ba5710335b4" + integrity sha512-HBiYvXvn9Z70Z88XKjz3AEKd4HJhBXsa3j7xFnITAzoS8+q6eIGi8qDB8FKPBAjtuxjI/zFpwuiCb8oDtKOYrA== + +child_process@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/child_process/-/child_process-1.0.2.tgz#b1f7e7fc73d25e7fd1d455adc94e143830182b5a" + integrity sha512-Wmza/JzL0SiWz7kl6MhIKT5ceIlnFPJX+lwUGj7Clhy5MMldsSoJR0+uvRzOS5Kv45Mq7t1PoE8TsOA9bzvb6g== + +chokidar@3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +circom_runtime@0.1.21: + version "0.1.21" + resolved "https://registry.yarnpkg.com/circom_runtime/-/circom_runtime-0.1.21.tgz#0ee93bb798b5afb8ecec30725ed14d94587a999b" + integrity sha512-qTkud630B/GK8y76hnOaaS1aNuF6prfV0dTrkeRsiJKnlP1ryQbP2FWLgDOPqn6aKyaPlam+Z+DTbBhkEzh8dA== + dependencies: + ffjavascript "0.2.56" + +circom_tester@^0.0.19: + version "0.0.19" + resolved "https://registry.yarnpkg.com/circom_tester/-/circom_tester-0.0.19.tgz#e8bed494d080f8186bd0ac6571755d00ccec83bd" + integrity sha512-SNHaBsGxcBH6XsVWfsRbRPA7NF8m8AMKJI9dtJJCFGUtOTT2+zsoIqAwi50z6XCnO4TtjyXq7AeXa1PLHqT0tw== + dependencies: + chai "^4.3.6" + child_process "^1.0.2" + ffjavascript "^0.2.56" + fnv-plus "^1.3.1" + r1csfile "^0.0.41" + snarkjs "0.5.0" + tmp-promise "^3.0.3" + util "^0.12.4" + +circomlib@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/circomlib/-/circomlib-2.0.5.tgz#183c703e53ed7d011811842dbeeeb9819f4cc1d6" + integrity sha512-O7NQ8OS+J4eshBuoy36z/TwQU0YHw8W3zxZcs4hVwpEll3e4hDm3mgkIPqItN8FDeLEKZFK3YeT/+k8TiLF3/A== + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +debug@4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +decamelize@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" + integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== + +deep-eql@^4.1.2: + version "4.1.3" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d" + integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw== + dependencies: + type-detect "^4.0.0" + +diff@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" + integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +ejs@^3.1.6: + version "3.1.8" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b" + integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ== + dependencies: + jake "^10.8.5" + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-string-regexp@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +fastfile@0.0.20: + version "0.0.20" + resolved "https://registry.yarnpkg.com/fastfile/-/fastfile-0.0.20.tgz#794a143d58cfda2e24c298e5ef619c748c8a1879" + integrity sha512-r5ZDbgImvVWCP0lA/cGNgQcZqR+aYdFx3u+CtJqUE510pBUVGMn4ulL/iRTI4tACTYsNJ736uzFxEBXesPAktA== + +ffjavascript@0.2.56: + version "0.2.56" + resolved "https://registry.yarnpkg.com/ffjavascript/-/ffjavascript-0.2.56.tgz#3509f98fcbd3e44ea93cd23519071b76d6eae433" + integrity sha512-em6G5Lrj7ucIqj4TYEgyoHs/j99Urwwqa4+YxEVY2hggnpRimVj+noX5pZQTxI1pvtiekZI4rG65JBf0xraXrg== + dependencies: + wasmbuilder "0.0.16" + wasmcurves "0.2.0" + web-worker "^1.2.0" + +ffjavascript@^0.2.48, ffjavascript@^0.2.56: + version "0.2.57" + resolved "https://registry.yarnpkg.com/ffjavascript/-/ffjavascript-0.2.57.tgz#ba1be96015b2688192e49f2f4de2cc5150fd8594" + integrity sha512-V+vxZ/zPNcthrWmqfe/1YGgqdkTamJeXiED0tsk7B84g40DKlrTdx47IqZuiygqAVG6zMw4qYuvXftIJWsmfKQ== + dependencies: + wasmbuilder "0.0.16" + wasmcurves "0.2.0" + web-worker "^1.2.0" + +filelist@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== + dependencies: + minimatch "^5.0.1" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-up@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + +fnv-plus@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/fnv-plus/-/fnv-plus-1.3.1.tgz#c34cb4572565434acb08ba257e4044ce2b006d67" + integrity sha512-Gz1EvfOneuFfk4yG458dJ3TLJ7gV19q3OM/vVvvHf7eT02Hm1DleB4edsia6ahbKgAYxO9gvyQ1ioWZR+a00Yw== + +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-func-name@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" + integrity sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" + integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.3" + +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob@7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.1.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +he@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +hoopy@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" + integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== + +husky@^8.0.0: + version "8.0.2" + resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.2.tgz#5816a60db02650f1f22c8b69b928fd6bcd77a236" + integrity sha512-Tkv80jtvbnkK3mYWxPZePGFpQ/tT3HNSs/sasF9P2YfkMezDl3ON37YN6jUUI4eTg5LcyVynlb6r4eyvOmspvg== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +is-arguments@^1.0.4: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-callable@^1.1.3: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-function@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + +is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-typed-array@^1.1.10, is-typed-array@^1.1.3: + version "1.1.10" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" + integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +jake@^10.8.5: + version "10.8.5" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" + integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== + dependencies: + async "^3.2.3" + chalk "^4.0.2" + filelist "^1.0.1" + minimatch "^3.0.4" + +js-sha3@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== + +js-yaml@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +log-symbols@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +logplease@^1.2.15: + version "1.2.15" + resolved "https://registry.yarnpkg.com/logplease/-/logplease-1.2.15.tgz#3da442e93751a5992cc19010a826b08d0293c48a" + integrity sha512-jLlHnlsPSJjpwUfcNyUxXCl33AYg2cHhIf9QhGL2T4iPT0XPB+xP1LRKFPgIg1M/sg9kAJvy94w9CzBNrfnstA== + +loupe@^2.3.1: + version "2.3.6" + resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.6.tgz#76e4af498103c532d1ecc9be102036a21f787b53" + integrity sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA== + dependencies: + get-func-name "^2.0.0" + +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +minimatch@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" + integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^3.0.4, minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +mocha@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.2.0.tgz#1fd4a7c32ba5ac372e03a17eef435bd00e5c68b8" + integrity sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg== + dependencies: + ansi-colors "4.1.1" + browser-stdout "1.3.1" + chokidar "3.5.3" + debug "4.3.4" + diff "5.0.0" + escape-string-regexp "4.0.0" + find-up "5.0.0" + glob "7.2.0" + he "1.2.0" + js-yaml "4.1.0" + log-symbols "4.1.0" + minimatch "5.0.1" + ms "2.1.3" + nanoid "3.3.3" + serialize-javascript "6.0.0" + strip-json-comments "3.1.1" + supports-color "8.1.1" + workerpool "6.2.1" + yargs "16.2.0" + yargs-parser "20.2.4" + yargs-unparser "2.0.0" + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +nanoassert@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/nanoassert/-/nanoassert-2.0.0.tgz#a05f86de6c7a51618038a620f88878ed1e490c09" + integrity sha512-7vO7n28+aYO4J+8w96AzhmU8G+Y/xpPDJz/se19ICsqj/momRbb9mh9ZUtkoJ5X3nTnPdhEJyc0qnM6yAsHBaA== + +nanoid@3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" + integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== + +node-forge@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" + integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== + +node-signpdf@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/node-signpdf/-/node-signpdf-1.5.0.tgz#54e8969ac90c811d45a4b37d5c374143c9c3c530" + integrity sha512-zDOduHZGadYUpCGd1JUtOHgVn6QTW6t1feMKNe3NLexsGQXDWFjOr1mGTjqTq1UWXAp47T4ShllLnmhGu9GQsA== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +pathval@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" + integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== + +picomatch@^2.0.4, picomatch@^2.2.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +r1csfile@0.0.41, r1csfile@^0.0.41: + version "0.0.41" + resolved "https://registry.yarnpkg.com/r1csfile/-/r1csfile-0.0.41.tgz#e3d2709d36923156dd1fc2db9858987b30c92948" + integrity sha512-Q1WDF3u1vYeAwjHo4YuddkA8Aq0TulbKjmGm99+Atn13Lf5fTsMZBnBV9T741w8iSyPFG6Uh6sapQby77sREqA== + dependencies: + "@iden3/bigarray" "0.0.2" + "@iden3/binfileutils" "0.0.11" + fastfile "0.0.20" + ffjavascript "0.2.56" + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +rimraf@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +safe-buffer@^5.1.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +serialize-javascript@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== + dependencies: + randombytes "^2.1.0" + +snarkjs@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/snarkjs/-/snarkjs-0.5.0.tgz#cf26bf1d3835eb16b4b330a438bad9824837d6b0" + integrity sha512-KWz8mZ2Y+6wvn6GGkQo6/ZlKwETdAGohd40Lzpwp5TUZCn6N6O4Az1SuX1rw/qREGL6Im+ycb19suCFE8/xaKA== + dependencies: + "@iden3/binfileutils" "0.0.11" + bfj "^7.0.2" + blake2b-wasm "^2.4.0" + circom_runtime "0.1.21" + ejs "^3.1.6" + fastfile "0.0.20" + ffjavascript "0.2.56" + js-sha3 "^0.8.0" + logplease "^1.2.15" + r1csfile "0.0.41" + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-json-comments@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +supports-color@8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +tmp-promise@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-3.0.3.tgz#60a1a1cc98c988674fcbfd23b6e3367bdeac4ce7" + integrity sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ== + dependencies: + tmp "^0.2.0" + +tmp@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" + integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== + dependencies: + rimraf "^3.0.0" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +tryer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" + integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== + +ts-node@^10.9.1: + version "10.9.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" + integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +type-detect@^4.0.0, type-detect@^4.0.5: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +typescript@^4.8.4: + version "4.9.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.4.tgz#a2a3d2756c079abda241d75f149df9d561091e78" + integrity sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg== + +util@^0.12.4: + version "0.12.5" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" + integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + which-typed-array "^1.1.2" + +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + +wasmbuilder@0.0.16: + version "0.0.16" + resolved "https://registry.yarnpkg.com/wasmbuilder/-/wasmbuilder-0.0.16.tgz#f34c1f2c047d2f6e1065cbfec5603988f16d8549" + integrity sha512-Qx3lEFqaVvp1cEYW7Bfi+ebRJrOiwz2Ieu7ZG2l7YyeSJIok/reEQCQCuicj/Y32ITIJuGIM9xZQppGx5LrQdA== + +wasmcurves@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/wasmcurves/-/wasmcurves-0.2.0.tgz#ccfc5a7d3778b6e0768b82a9336c80054f9bc0cf" + integrity sha512-3e2rbxdujOwaod657gxgmdhZNn+i1qKdHO3Y/bK+8E7bV8ttV/fu5FO4/WLBACF375cK0QDLOP+65Na63qYuWA== + dependencies: + wasmbuilder "0.0.16" + +web-worker@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/web-worker/-/web-worker-1.2.0.tgz#5d85a04a7fbc1e7db58f66595d7a3ac7c9c180da" + integrity sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA== + +which-typed-array@^1.1.2: + version "1.1.9" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" + integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + is-typed-array "^1.1.10" + +workerpool@6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" + integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yargs-parser@20.2.4: + version "20.2.4" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== + +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-unparser@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== + dependencies: + camelcase "^6.0.0" + decamelize "^4.0.0" + flat "^5.0.2" + is-plain-obj "^2.1.0" + +yargs@16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==