@voctest/circomlibjs
Version:
Javascript library to work with circomlib
965 lines (897 loc) • 2.72 MB
JavaScript
'use strict';
var ffjavascript = require('ffjavascript');
var createBlakeHash = require('blake-hash');
var buffer = require('buffer');
var ethers = require('ethers');
var blake2b = require('blake2b');
var assert = require('assert');
async function buildBabyJub() {
const bn128 = await ffjavascript.getCurveFromName("bn128", true);
return new BabyJub(bn128.Fr);
}
class BabyJub {
constructor(F) {
this.F = F;
this.p = ffjavascript.Scalar.fromString("21888242871839275222246405745257275088548364400416034343698204186575808495617");
this.pm1d2 = ffjavascript.Scalar.div(ffjavascript.Scalar.sub(this.p, ffjavascript.Scalar.e(1)), ffjavascript.Scalar.e(2));
this.Generator = [
F.e("995203441582195749578291179787384436505546430278305826713579947235728471134"),
F.e("5472060717959818805561601436314318772137091100104008585924551046643952123905")
];
this.Base8 = [
F.e("5299619240641551281634865583518297030282874472190772894086521144482721001553"),
F.e("16950150798460657717958625567821834550301663161624707787222815936182638968203")
];
this.order = ffjavascript.Scalar.fromString("21888242871839275222246405745257275088614511777268538073601725287587578984328");
this.subOrder = ffjavascript.Scalar.shiftRight(this.order, 3);
this.A = F.e("168700");
this.D = F.e("168696");
}
addPoint(a,b) {
const F = this.F;
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(this.A, a[0])),
F.add(b[0], b[1])
);
const tau = F.mul(beta, gamma);
const dtau = F.mul(this.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(this.A,beta), gamma)),
F.sub(F.one, dtau)
);
return res;
}
mulPointEscalar(base, e) {
const F = this.F;
let res = [F.e("0"),F.e("1")];
let rem = e;
let exp = base;
while (! ffjavascript.Scalar.isZero(rem)) {
if (ffjavascript.Scalar.isOdd(rem)) {
res = this.addPoint(res, exp);
}
exp = this.addPoint(exp, exp);
rem = ffjavascript.Scalar.shiftRight(rem, 1);
}
return res;
}
inSubgroup(P) {
const F = this.F;
if (!this.inCurve(P)) return false;
const res= this.mulPointEscalar(P, this.subOrder);
return (F.isZero(res[0]) && F.eq(res[1], F.one));
}
inCurve(P) {
const F = this.F;
const x2 = F.square(P[0]);
const y2 = F.square(P[1]);
if (!F.eq(
F.add(F.mul(this.A, x2), y2),
F.add(F.one, F.mul(F.mul(x2, y2), this.D)))) return false;
return true;
}
packPoint(P) {
const F = this.F;
const buff = new Uint8Array(32);
F.toRprLE(buff, 0, P[1]);
const n = F.toObject(P[0]);
if (ffjavascript.Scalar.gt(n, this.pm1d2)) {
buff[31] = buff[31] | 0x80;
}
return buff;
}
unpackPoint(buff) {
const F = this.F;
let sign = false;
const P = new Array(2);
if (buff[31] & 0x80) {
sign = true;
buff[31] = buff[31] & 0x7F;
}
P[1] = F.fromRprLE(buff, 0);
if (ffjavascript.Scalar.gt(F.toObject(P[1]), this.p)) return null;
const y2 = F.square(P[1]);
const x2 = F.div(
F.sub(F.one, y2),
F.sub(this.A, F.mul(this.D, y2))
);
const x2h = F.exp(x2, F.half);
if (! F.eq(F.one, x2h)) return null;
let x = F.sqrt(x2);
if (x == null) return null;
if (sign) x = F.neg(x);
P[0] = x;
return P;
}
}
const SEED$1 = "mimc";
const NROUNDS$1 = 91;
async function buildMimc7() {
const bn128 = await ffjavascript.getCurveFromName("bn128", true);
return new Mimc7(bn128.Fr);
}
class Mimc7 {
constructor (F) {
this.F = F;
this.cts = this.getConstants(SEED$1, 91);
}
getIV(seed) {
const F = this.F;
if (typeof seed === "undefined") seed = SEED$1;
const c = ethers.ethers.utils.keccak256(ethers.ethers.utils.toUtf8Bytes(seed+"_iv"));
const cn = ffjavascript.Scalar.e(c);
const iv = ffjavascript.Scalar.mod(cn, F.p);
return iv;
};
getConstants(seed, nRounds) {
const F = this.F;
if (typeof nRounds === "undefined") nRounds = NROUNDS$1;
const cts = new Array(nRounds);
let c = ethers.ethers.utils.keccak256(ethers.ethers.utils.toUtf8Bytes(SEED$1));
for (let i=1; i<nRounds; i++) {
c = ethers.ethers.utils.keccak256(c);
cts[i] = F.e(c);
}
cts[0] = F.e(0);
return cts;
}
hash (_x_in, _k) {
const F = this.F;
const x_in = F.e(_x_in);
const k = F.e(_k);
let r;
for (let i=0; i<NROUNDS$1; i++) {
const c = this.cts[i];
const t = (i==0) ? F.add(x_in, k) : F.add(F.add(r, k), c);
const t2 = F.square(t);
const t4 = F.square(t2);
r = F.mul(F.mul(t4, t2), t);
}
return F.add(r, k);
}
multiHash(arr, key) {
const F = this.F;
let r;
if (typeof(key) === "undefined") {
r = F.zero;
} else {
r = F.e(key);
}
for (let i=0; i<arr.length; i++) {
r = F.add(
F.add(
r,
F.e(arr[i])
),
this.hash(F.e(arr[i]), r)
);
}
return r;
}
}
const SEED = "mimcsponge";
const NROUNDS = 220;
async function buildMimcSponge() {
const bn128 = await ffjavascript.getCurveFromName("bn128", true);
return new MimcSponge(bn128.Fr);
}
class MimcSponge {
constructor (F) {
this.F = F;
this.cts = this.getConstants(SEED, NROUNDS);
}
getIV (seed) {
const F = this.F;
if (typeof seed === "undefined") seed = SEED;
const c = ethers.ethers.utils.keccak256(ethers.ethers.utils.toUtf8Bytes(seed+"_iv"));
const cn = ffjavascript.Scalar.e(c);
const iv = cn.mod(F.p);
return iv;
};
getConstants (seed, nRounds) {
const F = this.F;
if (typeof nRounds === "undefined") nRounds = NROUNDS;
const cts = new Array(nRounds);
let c = ethers.ethers.utils.keccak256(ethers.ethers.utils.toUtf8Bytes(SEED)); for (let i=1; i<nRounds; i++) {
c = ethers.ethers.utils.keccak256(c);
cts[i] = F.e(c);
}
cts[0] = F.e(0);
cts[cts.length - 1] = F.e(0);
return cts;
};
hash(_xL_in, _xR_in, _k) {
const F = this.F;
let xL = F.e(_xL_in);
let xR = F.e(_xR_in);
const k = F.e(_k);
for (let i=0; i<NROUNDS; i++) {
const c = this.cts[i];
const t = (i==0) ? F.add(xL, k) : F.add(F.add(xL, k), c);
const t2 = F.square(t);
const t4 = F.square(t2);
const t5 = F.mul(t4, t);
const xR_tmp = F.e(xR);
if (i < (NROUNDS - 1)) {
xR = xL;
xL = F.add(xR_tmp, t5);
} else {
xR = F.add(xR_tmp, t5);
}
}
return {
xL: xL,
xR: xR
};
}
multiHash(arr, key, numOutputs) {
const F = this.F;
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<arr.length; i++) {
R = F.add(R, F.e(arr[i]));
const S = this.hash(R, C, key);
R = S.xL;
C = S.xR;
}
let outputs = [R];
for (let i=1; i < numOutputs; i++) {
const S = this.hash(R, C, key);
R = S.xL;
C = S.xR;
outputs.push(R);
}
if (numOutputs == 1) {
return outputs[0];
} else {
return outputs;
}
}
}
const GENPOINT_PREFIX = "PedersenGenerator";
const windowSize = 4;
const nWindowsPerSegment = 50;
async function buildPedersenHash() {
const babyJub = await buildBabyJub();
return new PedersenHash(babyJub);
}
class PedersenHash {
constructor(babyJub) {
this.babyJub = babyJub;
this.bases = [];
}
baseHash(type, S) {
if (type == "blake") {
return createBlakeHash("blake256").update(S).digest();
} else if (type == "blake2b") {
return Buffer.from(blake2b(32).update(Buffer.from(S)).digest());
}
}
hash(msg, options) {
options = options || {};
options.baseHash = options.baseHash || "blake";
const babyJub = this.babyJub;
const bitsPerSegment = windowSize*nWindowsPerSegment;
const bits = this.buffer2bits(msg);
const nSegments = Math.floor((bits.length - 1)/(windowSize*nWindowsPerSegment)) +1;
let accP = [babyJub.F.zero,babyJub.F.one];
for (let s=0; s<nSegments; s++) {
let nWindows;
if (s == nSegments-1) {
nWindows = Math.floor(((bits.length - (nSegments - 1)*bitsPerSegment) - 1) / windowSize) +1;
} else {
nWindows = nWindowsPerSegment;
}
let escalar = ffjavascript.Scalar.e(0);
let exp = ffjavascript.Scalar.e(1);
for (let w=0; w<nWindows; w++) {
let o = s*bitsPerSegment + w*windowSize;
let acc = ffjavascript.Scalar.e(1);
for (let b=0; ((b<windowSize-1)&&(o<bits.length)) ; b++) {
if (bits[o]) {
acc = ffjavascript.Scalar.add(acc, ffjavascript.Scalar.shl(ffjavascript.Scalar.e(1), b) );
}
o++;
}
if (o<bits.length) {
if (bits[o]) {
acc = ffjavascript.Scalar.neg(acc);
}
o++;
}
escalar = ffjavascript.Scalar.add(escalar, ffjavascript.Scalar.mul(acc, exp));
exp = ffjavascript.Scalar.shl(exp, windowSize+1);
}
if (ffjavascript.Scalar.lt(escalar, 0)) {
escalar = ffjavascript.Scalar.add( escalar, babyJub.subOrder);
}
accP = babyJub.addPoint(accP, babyJub.mulPointEscalar(this.getBasePoint(options.baseHash, s), escalar));
}
return babyJub.packPoint(accP);
}
getBasePoint(baseHashType, pointIdx) {
const babyJub = this.babyJub;
if (this.bases[pointIdx]) return this.bases[pointIdx];
let p= null;
let tryIdx = 0;
while (p==null) {
const S = GENPOINT_PREFIX + "_" + this.padLeftZeros(pointIdx, 32) + "_" + this.padLeftZeros(tryIdx, 32);
const h = this.baseHash(baseHashType, S);
h[31] = h[31] & 0xBF; // Set 255th bit to 0 (256th is the signal and 254th is the last possible bit to 1)
p = babyJub.unpackPoint(h);
tryIdx++;
}
const p8 = babyJub.mulPointEscalar(p, 8);
if (!babyJub.inSubgroup(p8)) {
throw new Error("Point not in curve");
}
this.bases[pointIdx] = p8;
return p8;
}
padLeftZeros(idx, n) {
let sidx = "" + idx;
while (sidx.length<n) sidx = "0"+sidx;
return sidx;
}
/*
Input a buffer
Returns an array of booleans. 0 is LSB of first byte and so on.
*/
buffer2bits(buff) {
const res = new Array(buff.length*8);
for (let i=0; i<buff.length; i++) {
const b = buff[i];
res[i*8] = (b & 0x01);
res[i*8+1] = (b & 0x02) >> 1;
res[i*8+2] = (b & 0x04) >> 2;
res[i*8+3] = (b & 0x08) >> 3;
res[i*8+4] = (b & 0x10) >> 4;
res[i*8+5] = (b & 0x20) >> 5;
res[i*8+6] = (b & 0x40) >> 6;
res[i*8+7] = (b & 0x80) >> 7;
}
return res;
}
}
var poseidonConstants$1 = {
"C": [
[
"0x9c46e9ec68e9bd4fe1faaba294cba38a71aa177534cdd1b6c7dc0dbd0abd7a7",
"0xc0356530896eec42a97ed937f3135cfc5142b3ae405b8343c1d83ffa604cb81",
"0x250f5116a417d76aaa422952fcc5b33329f7714fc26d56c0432507fc740a87c4",
"0x264065ad87572e016659626c33c8213f7a373b9b8225a384f458d850bb4a949f",
"0x2bb8e94ad8d8adca6ce909ff94b8750729b294e4400376da39e33fda24bd42af",
"0x19051065d05d861ec813c15291d46a328f6201b21ad5d239d4f85fbb09a5dbae",
"0x245bd0617aa449618f5bd4550aac7b8e08d4d1c017165943cdf4776cdff3434a",
"0x9fb1a1118074ff79d8acbf5b02131e048a1570155e0f2b1c36ad091d491a88f",
"0x234ab504bbae8198972741952f78b7eb018ea192f05e54c1484ab8973ff66d88",
"0x1f66e509b84c355ae3d4c3513a282fd48f9c8c6439f42a7835fbcfe0f2a324c",
"0x1b22f5d69d725e6002cf00dd9ee62d1a5af0efdc4910f54127a920ccc43f91fa",
"0x252b55edead135f852968b7f1c4f490fa659ecd5b47a78a7db91f65a6dfc23f",
"0x1773ae2e1637c92ad0677c2a047fea8eca4b53303f21871f6892a2c0487d7ff1",
"0x2d57b02906cd0ab82a79e76faeef6f87666eac093cf7715645d5ec9f7ac732f5",
"0xa16f3a62824b281e8b2ddb8fc391a498fb061317faffa03696f834596313d93",
"0x1666f525f7f4b6988d2a37834ab747eae0587757b788eb7f1e26b08e36a08591",
"0x5da44f8e0a3b8bb13231f0ca25b50b57f5c82128e1dfec3e541d912ebe17b76",
"0x9a39ba9993303ba191bac8bdb3e0144dbfb5f39624cdd9524dc7861633bc95a",
"0x6c0fb824a19202d30ee6b418c0029e100e85a6d158f9f2a828dfd2ed0920a68",
"0x387d8e056b2b176a9776b4492cb3b418adc660627e52bb3324283bf9522395d",
"0x147a1af82036ef5b28a7a37bea40d6ac3013cf1b62358396bf7156f5c2dc9684",
"0x3038d92060daeaaf1bd0482bd3f0613d88e8dff90a7a0525f9227e4cb7c6f81b",
"0x72940aa1d538a5a39a323f9e5d65616cf6c223339006f9789a97245532908f5",
"0x2d3d604949f4e14c70b8a879aedec49b3a367ba216af048f464ed6f15e2b9023",
"0x225b9e4f35c7549f80774c2b4d18309b2dcf7c7287b982e49746a176641e73c5",
"0x1ea781288fdf13b2190095a2344828e37dfe81c75a09709f0d139bbbf6c70414",
"0x8e96c3e7e8de4432b202405458468b90dc6890d4cee128b3502e5b6cb4aeeeb",
"0x5b43da7c8aa29af6dcaae57d070b49d29ce889a64a4ac183e85d55b366c805f",
"0xbec98a034e3b8af7ba4861f1ad5a48dcef7c996e7a51c7cdde724d8f610e52",
"0x2eb67ccfa29e2b422b9f84a5d0575fc435b30fcae303039480be384ee4ebe72a",
"0x102bbdc21a3f147bf04eedee5d70bd084a7105c631c86ecd2c4e8749a13915ca",
"0x274bc16c88721babfd5bbe8d8562c1bf127ae38915280fbb8e3115cad3582f79",
"0x185cece417549b25283de04511f769101c8850b409d4928ab831611351bd9938",
"0x13c73fb043f7e978bc9cfb55c7faacb4f4c823674abe17737059ac0a32c36007",
"0x24b3a1d83308742b360c9c60595673e201cdd4cef5a4145c933c4e5969481d70",
"0x18b5ae94df9ec97aaa2a8f0f42425bcccdc8266a070f866ef0f48d7a3744398b",
"0x20eb398cb958cc2ccc7cb1fac38501abbe38169b2d8522d9e5f099f2d5905cb4",
"0x1e588dd3ec8b0d252c2c7c0c78a02b22bbbad1f4dcaa2e78a8b8eef2f4e29344",
"0xf8bf3bd6c22ba3b1bf3ab2e3fb40818cd4217ffbaf294ca42331d4e3043a0a6",
"0x388c9fcf30fc2841d648f46bad01dd10bee9dc184d25eabc9f617021109cec3",
"0x2bb7f397c5941ac67befa8b232f15c8853dac263da793555441a90cec83b6454",
"0x17f389b52f9ea7a98874a4a31ef6a7beb43fb17db0e499250bb3f0181c59fb21",
"0x3a2090eacb897a31fb10561d560a9aeec24b7ad14d17b145f20c875a0b28c7c",
"0xc398534f0eb580f1fe4bf64553389e67cca4714399430e09619dcbee17ba099",
"0x7095ac9fda46afa7f181259e3635feffa7f11ee63f3ee777a5cebf4822328c4",
"0x2046f7cf1c8f13ef2b69cbc8bc0d5d809f82568abe2b33d1cd060958b1ced683",
"0x2c274136a5de2849de6e7f92f9097296501acb68d56138fbcb660c4cb0f69107",
"0x1c4d5178acb5c6b6eceef23afc6f16ec7b0383094cb6467e8d0f4507b3cf74c3",
"0x65b1447d0d64ceced116785b92c63a6a7dd9701507dcbe8b909325e28f7b8d3",
"0x2265d7e244881220c81a193d979330409c9bfa333438951340e023e7b72a1961",
"0x15b12b355af7e05637a1c76e67f9cec6fca8a6449b37669f6850502256b30aba",
"0x1a1522fecc6ae028e4d3e3029497b88f35c2b48c687af168ec2582d9075b4387",
"0x22f56e79e81b7496e472a641a053c414bcc53b0a9350e2589240803076f58f26",
"0x202ddb66d0988994e7aabad692ceac4e2324672a17ab8417d1ee278afd17fd0c",
"0x12b0701e8813c5b21a8e30208f8f1158b96cd428ae77bdea72f84510f73edfce",
"0x1e63fd20e706e1407c8838ceb26b84c9fe693fdde0eb1e1a9df7e84e53eeee7e",
"0x20a16c5a86256deffd15af174c39f9d9aa11500676ac7e570088280dd1896259",
"0x1c8f8bf8e153da55ad5aca2eaaee38da563e0435c0f2f37c27558fb9bae0a3eb",
"0xd7732687bb7bf5f3aabcfdcc4fbb67e159c1983213e416c3880124fddf187c9",
"0xcdd04475a86999a2edcbbbf8264b195e108b3b60b6475d835f6ccef9e2f6865",
"0x2fe65586cd4e754b4c63a88c2ed3f9ba0e3bfa43f547b41153560c214fe3cbcd",
"0x503cf963c8273604e659128ec29261f62399815d98c56dbf4f2837c727ad4d9",
"0x1ee48ea27839061b78379936f6d97ca9400b393ef5fdf38ef1475c8742cb334c",
"0x1a423f8d8fc892b22d7cd5bf0197c575c579e83563d04859d73b2c1c5c0413f9",
"0x69a0da50133e9952f00e61778972a7be0e8d8ab76c95616ae465636abb97ec7",
"0x1bf7879dd42f2cbb91c65a0976356f67964c2f94dfbf0e44cf2b9909165d8614",
"0x1b23dccf485822065c8fc0afe610be7164e25056267f6c4a805fffd4547a0b98",
"0x2ebe90d6f6fdca420e0c2e004ce5c5a4409e564c9c4f3671e3011f627bec7c2e",
"0x167cd6930535a816dfebe81d20c376e77687760f3a2fa0da290b2f4d6c6863f7",
"0x8865c10f4a633c54ccc8b68b79df285f19f1210374cc64e3c8a966d4f90264b",
"0x1de902fbc0bf01951ca25abb39d78894721b37e071851b03a72cc6b833b7893b",
"0xe3eca007699dd0f852eb22da642e495f67c988dd5bf0137676b16a31eab4667"
],
[
"0xee9a592ba9a9518d05986d656f40c2114c4993c11bb29938d21d47304cd8e6e",
"0xf1445235f2148c5986587169fc1bcd887b08d4d00868df5696fff40956e864",
"0x8dff3487e8ac99e1f29a058d0fa80b930c728730b7ab36ce879f3890ecf73f5",
"0x84d520e4e5bb469e1f9075cb7c490efa59565eedae2d00ca8ef88ceea2b0197",
"0x2d15d982d99577fa33da56722416fd734b3e667a2f9f15d8eb3e767ae0fd811e",
"0xed2538844aba161cf1578a43cf0364e91601f6536a5996d0efbe65632c41b6d",
"0x2600c27d879fbca186e739e6363c71cf804c877d829b735dcc3e3af02955e60a",
"0x28f8bd44a583cbaa475bd15396430e7ccb99a5517440dfd970058558282bf2c5",
"0x9cd7d4c380dc5488781aad012e7eaef1ed314d7f697a5572d030c55df153221",
"0x11bb6ee1291aabb206120ecaace460d24b6713febe82234951e2bee7d0f855f5",
"0x2d74e8fa0637d9853310f3c0e3fae1d06f171580f5b8fd05349cadeecfceb230",
"0x2735e4ec9d39bdffac9bef31bacba338b1a09559a511a18be4b4d316ed889033",
"0xf03c1e9e0895db1a5da6312faa78e971106c33f826e08dcf617e24213132dfd",
"0x17094cd297bf827caf92920205b719c18741090b8f777811848a7e9ead6778c4",
"0xdb8f419c21f92461fc2b3219465798348df90d4178042c81ba7d4b4d559e2b8",
"0x243443613f64ffa417427ed5933fcfbc66809db60b9ca1724a22709ceceeece2",
"0x22af49fbfd5d7e9fcd256c25c07d3dd8ecbbae6deecd03aa04bb191fada75411",
"0x14fbd37fa8ad6e4e0c78a20d93c7230c4677f797b4327323f7f7c097c19420e0",
"0x15a9298bbb882534d4b2c9fbc6e4ef4189420c4eb3f3e1ea22faa7e18b5ae625",
"0x2f7de75f23ddaaa5221323ebceb2f2ac83eef92e854e75434c2f1d90562232bc",
"0x36a4432a868283b78a315e84c4ae5aeca216f2ff9e9b2e623584f7479cd5c27",
"0x2180d7786a8cf810e277218ab14a11e5e39f3c962f11e860ae1c5682c797de5c",
"0xa268ef870736eebd0cb55be640d73ee3778990484cc03ce53572377eefff8e4",
"0x1eefefe11c0be4664f2999031f15994829e982e8c90e09069df9bae16809a5b2",
"0x27e87f033bd1e0a89ca596e8cb77fe3a4b8fb93d9a1129946571a3c3cf244c52",
"0x1498a3e6599fe243321f57d6c5435889979c4f9d2a3e184d21451809178ee39",
"0x27c0a41f4cb9fe67e9dd4d7ce33707f74d5d6bcc235bef108dea1bbebde507aa",
"0x1f75230908b141b46637238b120fc770f4f4ae825d5004c16a7c91fe1dae280f",
"0x25f99a9198e923167bba831b15fffd2d7b97b3a089808d4eb1f0a085bee21656",
"0x101bc318e9ea5920d0f6acdc2bb526593d3d56ec8ed14c67622974228ba900c6",
"0x1a175607067d517397c1334ecb019754ebc0c852a3cf091ec1ccc43207a83c76",
"0xf02f0e6d25f9ea3deb245f3e8c381ee6b2eb380ba4af5c1c4d89770155df37b",
"0x151d757acc8237af08d8a6677203ec9692565de456ae789ff358b3163b393bc9",
"0x256cd9577cea143049e0a1fe0068dd20084980ee5b757890a79d13a3a624fad4",
"0x513abaff6195ea48833b13da50e0884476682c3fbdd195497b8ae86e1937c61",
"0x1d9570dc70a205f36f610251ee6e2e8039246e84e4ac448386d19dbac4e4a655",
"0x18f1a5194755b8c5d5d7f1bf8aaa6f56effb012dd784cf5e044eec50b29fc9d4",
"0x266b53b615ef73ac866512c091e4a4f2fa4bb0af966ef420d88163238eebbca8",
"0x2d63234c9207438aa42b8de27644c02268304dfeb8c89a1a3f4fd6e8344ae0f7",
"0x2ab30fbe51ee49bc7b3adde219a6f0b5fbb976205ef8df7e0021daee6f55c693",
"0x1aee6d4b3ebe9366dcb9cce48969d4df1dc42abcd528b270068d9207fa6a45c9",
"0x1891aeab71e34b895a79452e5864ae1d11f57646c60bb34aa211d123f6095219",
"0x24492b5f95c0b0876437e94b4101c69118e16b2657771bd3a7caab01c818aa4b",
"0x1752161b3350f7e1b3b2c8663a0d642964628213d66c10ab2fddf71bcfde68f",
"0xab676935722e2f67cfb84938e614c6c2f445b8d148de54368cfb8f90a00f3a7",
"0xb0f72472b9a2f5f45bc730117ed9ae5683fc2e6e227e3d4fe0da1f7aa348189",
"0x16aa6f9273acd5631c201d1a52fc4f8acaf2b2152c3ae6df13a78a513edcd369",
"0x2f60b987e63614eb13c324c1d8716eb0bf62d9b155d23281a45c08d52435cd60",
"0x18d24ae01dde92fd7606bb7884554e9df1cb89b042f508fd9db76b7cc1b21212",
"0x4fc3bf76fe31e2f8d776373130df79d18c3185fdf1593960715d4724cffa586",
"0xd18f6b53fc69546cfdd670b41732bdf6dee9e06b21260c6b5d26270468dbf82",
"0xba4231a918f13acec11fbafa17c5223f1f70b4cdb045036fa5d7045bd10e24",
"0x7b458b2e00cd7c6100985301663e7ec33c826da0635ff1ebedd0dd86120b4c8",
"0x1c35c2d96db90f4f6058e76f15a0c8286bba24e2ed40b16cec39e9fd7baa5799",
"0x1d12bea3d8c32a5d766568f03dd1ecdb0a4f589abbef96945e0dde688e292050",
"0xd953e20022003270525f9a73526e9889c995bb62fdea94313db405a61300286",
"0x29f053ec388795d786a40bec4c875047f06ff0b610b4040a760e33506d2671e1",
"0x4188e33735f46b14a4952a98463bc12e264d5f446e0c3f64b9679caaae44fc2",
"0x149ec28846d4f438a84f1d0529431bb9e996a408b7e97eb3bf1735cdbe96f68f",
"0xde20fae0af5188bca24b5f63630bad47aeafd98e651922d148cce1c5fdddee8",
"0x12d650e8f790b1253ea94350e722ad2f7d836c234b8660edf449fba6984c6709",
"0x22ab53aa39f34ad30ea96717ba7446aafdadbc1a8abe28d78340dfc4babb8f6c",
"0x26503e8d4849bdf5450dabea7907bc3de0de109871dd776904a129db9149166c",
"0x1d5e7a0e2965dffa00f5454f5003c5c8ec34b23d897e7fc4c8064035b0d33850",
"0xee3d8daa098bee012d96b7ec48448c6bc9a6aefa544615b9cb3c7bbd07104cb",
"0x1bf282082a04979955d30754cd4d9056fa9ef7a7175703d91dc232b5f98ead00",
"0x7ae1344abfc6c2ce3e951bc316bee49971645f16b693733a0272173ee9ad461",
"0x217e3a247827c376ec21b131d511d7dbdc98a36b7a47d97a5c8e89762ee80488",
"0x215ffe584b0eb067a003d438e2fbe28babe1e50efc2894117509b616addc30ee",
"0x1e770fc8ecbfdc8692dcedc597c4ca0fbec19b84e33da57412a92d1d3ce3ec20",
"0x2f6243cda919bf4c9f1e3a8a6d66a05742914fc19338b3c0e50e828f69ff6d1f",
"0x246efddc3117ecd39595d0046f44ab303a195d0e9cc89345d3c03ff87a11b693",
"0x53e8d9b3ea5b8ed4fe006f139cbc4e0168b1c89a918dfbe602bc62cec6adf1",
"0x1b894a2f45cb96647d910f6a710d38b7eb4f261beefff135aec04c1abe59427b",
"0xaeb1554e266693d8212652479107d5fdc077abf88651f5a42553d54ec242cc0",
"0x16a735f6f7209d24e6888680d1781c7f04ba7d71bd4b7d0e11faf9da8d9ca28e",
"0x487b8b7fab5fc8fd7c13b4df0543cd260e4bcbb615b19374ff549dcf073d41b",
"0x1e75b9d2c2006307124bea26b0772493cfb5d512068c3ad677fdf51c92388793",
"0x5120e3d0e28003c253b46d5ff77d272ae46fa1e239d1c6c961dcb02da3b388f",
"0xda5feb534576492b822e8763240119ac0900a053b171823f890f5fd55d78372",
"0x2e211b39a023031a22acc1a1f5f3bb6d8c2666a6379d9d2c40cc8f78b7bd9abe"
],
[
"0x19b849f69450b06848da1d39bd5e4a4302bb86744edc26238b0878e269ed23e5",
"0x265ddfe127dd51bd7239347b758f0a1320eb2cc7450acc1dad47f80c8dcf34d6",
"0x199750ec472f1809e0f66a545e1e51624108ac845015c2aa3dfc36bab497d8aa",
"0x157ff3fe65ac7208110f06a5f74302b14d743ea25067f0ffd032f787c7f1cdf8",
"0x1b0f68f0726a0514a4d05b377b58aabc45945842e70183784a4ab5a32337b8f8",
"0x1228d2565787140430569d69342d374d85509dea4245db479fdef1a425e27526",
"0x17a8784ecdcdd6e550875c36a89610f7b8c1d245d52f53ff96eeb91283585e0b",
"0x9870a8b450722a2b2d5ee7ae865aaf0aa00adcfc31520a32e0ceaa250aaebaf",
"0x1e1d6aaa902574e3e4055c6b6f03a49b2bbdb7847f940ebc78c0a6d3f9372a64",
"0x2816c4fa6b085487e1eec1eefd92ee9fef40f30190ac61009103d03266550db2",
"0x17359fd88be36ba867000e83f76ffb46660634efbad15dcf4d4d502d427ff51c",
"0xe3004cb44ba455a3f16fefbd0c026404cbac203c0f236baad879610b8661022",
"0xa55f276af1ceb6ebc6c6820f334b26f11ca4af98c833bc1b496193d6b04a7ca",
"0x1ee4b0458adcd4c4861a27adc1404a5981d320b6b8e20e51d31b9b877e8346d",
"0x14315e2753e7fb94f70199f8645d78f87c194a4054e69872b3841da1b4f482f1",
"0x2b7b63ecffd55d95c660f435ad9e2e25f266cb57e17ebd1b6b0d75e88a6a56d6",
"0xbb56fa3e9fd48ab46d4e7295bbe1204b652ebe958221860f56e38db80d83c0",
"0x50653bf5dd59edd6d15fa6071f5005057218b33a8f92a58b9c2656081249f82",
"0x2c575423e24b522655c5a976c65d069287900c8d5825514098c5b13c86f1fcdc",
"0x2ff3a2ccdee91e09a32f74232b704cdd99f72c1f78557a2ce568b07e218071d7",
"0x1144734901a81c1543b8bc6fc9d365f50469eb89949491d3693dbe9c6238d90c",
"0x1eff9a954e24bcd4af20b6ab74d89e1cd38bc694a9e75ea6da217a98db80cd22",
"0x14707de7496c5638f97fe9bd7d485c20ead6bfdbfc0599791e49fad0301cd6df",
"0x13d0de341ba819f90fe3ef1f7ce0a54d8538acdd9b3ef840a91d48ee536042b8",
"0x26520ab1d20055daded712d59b07088458c18afbd0da58aee9f151a903372ba1",
"0x68cb4827ac485fc6e7537a3c0a06d08a4c2790f5c65d9866d75296999f7495f",
"0x7d6baaa2e587c21b03dfa0eb71136e2982cb389b438c8bc282748d0e674e89e",
"0x15b92d36db02cb16b831eeab2e6ed75d126ffbc274cc3362370851526de13d27",
"0x277b9ce89133de7b7918ad5fcfab7323ef5b9c1916b588cd7e5a0d814cbc3395",
"0x2ae847b66b3c5d73b70b733040aa86c51f737092d65c3492d529000fa1802b24",
"0x2fa3e8ae1fef974cded6aba6dc25cf567e16e0af29e675706643f21bf8efd651",
"0xb1d4b9508cec4d19aa53f4efe46c57952dbd368fcbcd454a8b1087bc18a2088",
"0x2d381014d01578b888b3273270babdc393ac392e7958be0478947fafa569bb0",
"0x2e79a827c85406242523a94431007021bc865a45cabcba4368c41d4486fefec8",
"0x207c99b7d594a5c61d7e60cc2365c4c0c804cd434098af6244f0a00c259b347",
"0x119c124086ea58ebb83f14f262c693424360e97e6fb42ae8596badbe9edb2dca",
"0x104ff38cca0f00173ccd0b68bddba09fc543f074f753bd8e413f8334f887a251",
"0x2f5b5377bd156f89845811eb262436638dc038b8cb10e147a87df4c0e2384253",
"0xf70e8e02d1d23968930a8e0db69b1c20204f3e3b4cecd101f81476d0b5ea996",
"0x1ac4653a51071ae722f90a03f006d8575814db782b7f19f607dae4d56ad586b3",
"0x12b12600e3bfd8e7bdfae5ef9c4f3805fa41e74acabf7de817823017a8b23db9",
"0x11b9d19908919dacb7e0f8d0ba77286d417529a18a1d89c405ed1c30289fdd28",
"0x2c350d245f4f75864744f88dbff8fe335b00f4fb688895c1363a7484ace820d3",
"0x16a7f76fd2b2147db6ef94c22c78bff782de17ef73e52da7df82603f422b461f",
"0x1d18d8024be1e96ec25626af06a139f6093545aa504033dac7e285d1cc3db3de",
"0xc8cab1ad5998072945b9b88228f53c295466819fb94d8f6a9ed449be8f7c18c",
"0x1a68d133d703cd406ca30041913ce3423c73b13384187ab1530109b756ad4f7a",
"0x24a58b9e86ce823ff4c45342941417ff23d03c80fcdef9498ca0d860855e01a9",
"0xe6315c93fbb89d38021148b6c35320fb793c41c6a4386d6aed6acfe2f952c57",
"0x2c3806d99a69ce63299e876f5f218c7295d87224795d7568d558696e34c692f8",
"0x59c893a771e94774d49a356494568dd376856ab89705dff25db8273860fa04e",
"0x1166d9819c4faae8982243d0deb1f8977027d5cc56bf52ce260bec5e27e8b0f5",
"0x12806fab3fcb09fc2b79406c3c203c4965fc7259112af2104312e1537327e0a3",
"0x172015e0e33736058f60aa33e82d3dd73dc3ead89f98ded0dba35dcc1d8bda2c",
"0x77ba18800d852d0a34f70ae8cfd68a080296bf9d47a1b40de7e6fd6392a0d30",
"0x2094ecd768bfa8f0df0d78d0d946e1aff4a2d38e029e41479d6e3c0fe79fa8b9",
"0xccebd302afe84c20ff774d3c1f650ca7cd0bca08baa1e261da9c7441a823f89",
"0x5b9303053bb40c73671f5d55b4052e0d5549871f1b5283f01485a6b568cd05",
"0x2527289084ab492275b4cd67d38311a2b816eaa68ee6bdb2389eeefd6ba4c721",
"0x2222f9738290d8d5f2a3eacdad95f12cd4e7417ed2661b012f6448c7503877f2",
"0x226c8208f26d69e6b7e02fe26557e6bd160fcbe27ee741fd1e581161c1789354",
"0x216b208c0261f3c91faf609e15f7a9d4853e40d9204496b2441115d73c2941c5",
"0xe0d660e046a259f3bad6829729b6ae3151fbcd75de33b122fe134ca3d5a4dd6",
"0x240f039d2026b3266f39ba5c4ec48ac6ace88aadaef991498cd52daaa0ffbba8",
"0x28c8cccf7b40a2c3cfd2eee0ec4d160a876a4dfeb408ffe333e92fa5e1ee4d79",
"0xd7f81b4b46d4f247c4243f045a852cc957d2b2923d28eb2fa77b5a9844efd69",
"0x2be432f87b2c5094a82c788457651dd8cdb0200ac3b42860cbf54475996b772f",
"0x13ea39f2d63d9adae187af14dd07b533d45a63435e0ea4e5e555d35e70d4016b",
"0x29e3b1afe1973be9cd1cf4b047325abfaa65cf2b98ff3aed47870461977ec921",
"0x8db7d684e6b841b5e9692498f95a1f950a1cf1eb638bb4e48f3bc1a3c571197",
"0xf4f1041a976aa05196da1c042124e3277ea1a28fb6eeeab4bec1243bd31618b",
"0x5a9d0526d6f18c86b255f00e86ec34e7f8a26c251b51c21fe4c12bdc4c0ff1d",
"0x284b0304dd6ce669bcf650c5ab85c89d4410d472aa6eb00df1b8d17e52f2f3ff",
"0x2363e9b01a0163598962ff86907002f95902e725049294ca7ab10cc7aa3f06ba",
"0x2c2db12647c4c0461dd3290a75c5f2fd8d7f115b3e040cb05dd7e3ad260d842",
"0x2e3c42f671431f9560f3d0863ac445052422d5b993e9fda6b81486b14ffe3a74",
"0x1d38441f228c0ce22ff2882560f5d7ee3b4c0caa101371cb7782ffd97af5fff1",
"0x268141b0e49c59eab1d573ead4e2e1f379364dd133f2cec574c25ade2c794287",
"0x2209cb2e187df1522810d3f28868da6cf52af9a65dbd7b806049f472d966374a",
"0xa5eb2510e6f804d1830d7974ac1677d082034e5388bfaee91a319eca7c1ffab",
"0x1cb2864c38800736f8f3ad98669d3ad7a9d5ee52138e96b8a7015e1089e36ae0",
"0x2af8ed05bfc8f8ada547ee9bc6c7c6c5e8c15c6c0d380a3f9aa277273321b54e",
"0xf85d1593b35be03f79b222885555a252bf1f0a3911d784132c49b1a96ac0f3c",
"0x29095192ec53e0b859eba456295d95bc4567d351a6dad391b8b89707855008c5",
"0x1a92efde1f5fa56aeb02b4c4b8f51ac80831f898c7843407113fbb6011177854",
"0x2a05e8deeea15e4377c080aa70fd6a86dc73f3fdfa6b55f5610614c184b0b02e",
"0x12119f3b019cc3fc46ecc80893e86f510b1dd4030b2ce28c9dadcd1e71ad4891",
"0x42b6ffe687bc23a2bf6b73317286a543c60ed122fc225aae742c3a1c2dd3a1d"
],
[
"0xeb544fee2815dda7f53e29ccac98ed7d889bb4ebd47c3864f3c2bd81a6da891",
"0x554d736315b8662f02fdba7dd737fbca197aeb12ea64713ba733f28475128cb",
"0x2f83b9df259b2b68bcd748056307c37754907df0c0fb0035f5087c58d5e8c2d4",
"0x2ca70e2e8d7f39a12447ac83052451b461f15f8b41a75ef31915208f5aba9683",
"0x1cb5f9319be6a45e91b04d7222271c94994196f12ed22c5d4ec719cb83ecfea9",
"0xa9c0b1916a8e41d360d02e6e2e5d1b98c34dfcec769429c851867e46e126fa3",
"0x1dd6ba3731e49d21e8d36e9d4d1edad245ebf9bdd9ebb60a252e4804a6390f6a",
"0x24ae2a67c3d521c11a11b7112abbdee30647107b808866a980837d0d7da4e3e0",
"0xd20c9310b5c14d9ef12866af5a45eae3ca9be16d200497066c8b2ee96781d70",
"0xe047c9821fe94d55d400d763a66c4c6169993abed543c7284b4a35430019445",
"0x29474ab799b1e13948eff41d2ce79bfad335d09110157076988ac207e10c81dd",
"0x3899f139d0dc4b281be3b74ab4c70789b7f41e7aca47ea2722a20d79afbca93",
"0x1866624f761ab8dd7a91c5f37af5e47639951d5acb6b1bbf3b96ca273f71029d",
"0x13c119f36718f7d5f09ad8541325a13acf6b34db6d9ee2af7ea06061240f3009",
"0xe4a1008158077402b11f13c08890b739643cc8e93fa44487b5a1575dd867fd7",
"0xef505fd44ac10a251b670dafe14cabd9ada9e3002210ac9c3876f37de4e7ad8",
"0x1d31e4e2a5978b7491c43d367470a5a5d1445b6b8129a5b9a6fd238405720de5",
"0xa979ad5428d481cb624d9d504524a9694ca5cb4421b5d1dc6af2c030fbeac39",
"0xf7fccd2ec8bc6ed9ce3682f38aa291deea9373f4995778bf762ade36d6ab2a0",
"0x2691b924dfa123005f7c078d9bf8706defe99c2ba99bd6ee53b153e9fec7bb80",
"0x2077df6510b4860e56b913bef3a80dbc464b0e4678add60dea7a9517463220b",
"0x29ee09d8af9d24ca49350ce2e0aa47d00a3dc21bafbfac1c9ba61c58e2993e8c",
"0x8b292c661d427506b9a01916624f3cde332aaced9f1a494a733cea6f25bfaad",
"0x2583699ce536a757b22e4713edfbb050092c84abc72c90ad87393a1da9a4cf90",
"0x1e3f1b660223d65ad88999475374f6e25fd4148eb8110a0b12cffa19657b0b66",
"0x20f3ecbb37c34aec79131455461259e59b222f0ee8e02f3194cf62a9ad4c3448",
"0xdf4f5088e4444fbf87d553ba62dbda95696d8b9cf6210b1c85513b1776fbc64",
"0x2b348effd4c9cef00a1cf4dd67dd664b2ffe361a807c589a252c63bcbfc6833",
"0x1ba1e522fcb153676cd8f20e82256f0327c000fa96b1b462fc84b556f26a86c7",
"0x294c44df8e68c96144e964c37bbc5766764ed3550aff80dbe9d3fa74419fe50",
"0x313716eec6dcd8a602ca040700498dc04c77dfe2194753c59bc818c1d2636a1",
"0x287dec74696d663e2359f68225de955384d960bbafb90967429a442e19e3ec61",
"0x25e42f72c6be0942311ba097cf365683db4962c8204fec9213f0f8f72c1946be",
"0x12b6881b96654fe1768c242acd5399b08639f081a94896f5ea6da70b6b475c91",
"0xdfc2b54546fd3267d7be55c716cb243ef18118ed9498c8270449bd9418afdb5",
"0x27dd55fe0d5c0ff56ad4890fa029c27c5f36d04cdc73899ab99b2872b28eedf0",
"0xc60962711aef16e7a2ce59f587443ec8b41ef8dcfccb38188adcbddd32f173f",
"0x2edc09feb267c6b586e62fffe32bf5f16c28b585986b81116684b7e8b40d42d2",
"0xaf8386859db252ff295a19466d8d100622c90502137aa1cd4c4bcc9656d11e2",
"0x121f218392f73d4c16abe382102a459e6c080b3ca4eda51a23e651a13a680550",
"0x1ea38273f5d59e65061f8c775c571ffc75ef67d29405b5e02913cb3019d56f8e",
"0x9bd2349005699bcc0ac35b627e2f8f08bfc3b0bf30b146f37742ac1556187fe",
"0x91c505b1e92448c11aea22aaac4d44f6a7f2132f89e91b7f55f9404696c1433",
"0xb316f1c29689d4f490f7fcdd5e9f2d256d443ba14cda4bb799b0573a931a99f",
"0x2049251919a8f3f4398188b81f99d2e2d0e3f5359cfa55bdf3aa75fdadf367e7",
"0x1fe7f9eb6788101908814168e3e4cf7a899a105bf9e584af0064188a4aac55bd",
"0x158e6579b0388153b0acd630ea94de8f6d966d529c2d01b9e9b1c67c1ec1d570",
"0x1994f82f27153afb9de2aa3f4be05c4b2c487e393dcedca2566aa6b7fbc3696b",
"0x1b6250553e8629a5a8a40b568432ce7dbd83c87603eeccc8dad572ccebef6e1d",
"0x20296940a7d1eded2ae79fd78fa2ac11abb2210bf24542feabee71f0d0d7c9e",
"0x2553943f9e0ffce9c297cd31c29f1fa5f01883cc9e504fded7a905032c170c89",
"0x1c56eb362896c2f00ad18faeaf04d577f5feb4db4e077965c38f2eaf5f7be08c",
"0xed8857205e0680055de7e822b6f7d62ac0f75fef67da1ff7b7735208885cf90",
"0x118f91185a09355f9d8c3f556367a2bebe79e7d9528a8d72a592681671aac75",
"0x2a71e6a67abdb25a78010fe6fe0a20d1d84e21cba75ad55937dc1834c13af0c5",
"0x2327dbc05997ce8575680e4b8929d4e9ed25fb9204277d603061986dbee57e0",
"0xe05235e01f21cc3f2971c382d18c14e41785a5ec8d447cd93d13281792e6d6e",
"0x98afa2ea7ff065b2adfc4ab00f3b04496c1e490eab264d2370b107e5a49204e",
"0x27bddb7bf06eaa63419adae44209dd25a4e35edcb863b009bd34ccc4905d204b",
"0x2704406bc806f4ccb19085cb9d3771b12ab5ce7aabf0601e9e06a2bc98837ade",
"0x21c75c54664b9fec86756aa9027261975244f42cf91c9cc0b33c2a62b756a3ef",
"0x2be84c1d84c16038ea5f933290699daaaa8164c5ea39a02bcbddc66cf69fe8ec",
"0x2c970e41d48649cf013c676c8c688ac165563720d1d5f32628ac5b239488a96e",
"0xe1ad2660a2e958daa1f2654b3a37fee60546ca0327150733070742edc806435",
"0x2060ee7fdf775fc7e389a55376374c9e35d5c8763d597f426304e236f577b829",
"0x1e0116818c843ed86f09daee0a581af10d52deeadad77656e736eac08e6f0f17",
"0xa89c1498ef25a383d886bb58424e6940ac399e3e557e9de951a697c54a7576c",
"0x303743d6f36d925e1097483350f5bd2cb297d4ec9239209f63c516b849a67e6",
"0x8cf44446d968430232df175d462b9c9b0e2e2c37e8406764cb96c7c3446018d",
"0x2419811cbaeb3f551b0a9232eee5d53e3769fbcf5239533074375f1b00777f16",
"0x4237c622626db376b774849dbbe876809082f1b13f5824f4c58369f27fe7b6",
"0x1e5b490c72eeb607e114a5cb87a8494b178937cdee34b9e8e947342c14454558",
"0x4265333e59e1a5ff749203cb4a5d1415a72862c61380b1c242d0f32ca15b97a",
"0x189deaf74258451ac4da682532be43d24a5c683293c1ff7486de26d35d982e86",
"0x4ec516b0fd42fa53a34905cfdedaad021b36399d03d8263ae08c46af3eca76f",
"0x2ce1c8a00845a82b3aa1b6642fc988578576cef86196525e6d595c7701ad700d",
"0x247816fd0d34f9d3b396917478605c94a1c052a6ed663bdc344e7aee9686b6b4",
"0xc676dbe6c494d5609c444de622bcf60cf555091a507fce86477019daea987d",
"0x1cb395ade530fc2407aa7b2148d2dfaee30f4ddf258fc149cce3c5cde80a85d5",
"0x190e1494e3cfdada3b9e65d8fe3c1ec769540da023f9ec2e56259f6a56890b0e",
"0x18f2941b2335138336c351a792343222a845ee0a2ea5a3b9160c1d6d9b229fe2",
"0x14ea23ce8b2312e07df57e0aece1da5d2c0e01f757e6a5c86ab5e403688544dc",
"0x2818ad1005f4efb5d554361a29f85ea10940d6e71f38e8369beff3563a660bbe",
"0x23ce3a9a522915a281793977b49054c37d65f90b841e0ca90817bab49d79db4a",
"0x6c2ed2be876309a9b3b44ece37b1c42382927dd04249658a3d41e3f38d5e022",
"0x18b6740f72d77ebcf642b945ca2ed6c8a9853a3749d7fab6051e4ca36f44fc42",
"0x1feacb9eb2a6878061374d069a9dae328369ee63e75a1b99cdb06a48b0d9976a",
"0x1a44ee4565a967647300c75ed2b2543d8d45d5477fd606a356d1073bd13831d2",
"0x41f3b3b5b1050c16bf3d62d87d5d273b067da484679103231ed65a18da9fe48",
"0x1fd958cc4fe0a290bd0fbfb8b8a513acb5898d63bc0d7e585b7d081c49eb5659",
"0x175daba07c5edbf84f09c87a8c34dd73325943a48fc12cb839dca47512561d2e",
"0x9cf0a4e6e31dc24dfd5a5a27a77833e477d5b2d92cff5fc5ccad9528c43ba78",
"0x12d49465bd4120cbf78e5a3414d44c6530bc963bd701c54d4c6418a6cebe80b1",
"0x101b2f2b675804d3b26b2bd1e07c7365af0bfc2edf010916eefb39e28215d44a",
"0x114fc65faba09a59749e0b5f111930783529a0638456216232cb7e5a339736aa",
"0x1dff99b52799afc802c2bbf9b67dd044d3cb51017dc4f88358ddd67366d3a9f5",
"0x290f4496a52dd4dda59edccd7325038bbdc0554ad3a9a0be7931c91062a67027",
"0x91e8704663c516c3b96721d2033d985089fb992dca48c8ddcb97d7d15c7e188",
"0x2dce22599de04196a0169fc211d0f9c8692643aa09728eadf6d50bb534c0e323",
"0x29a7ff0720e170c0e67efde72795328fecef66daada5f0e2ca858a8c6135fd48"
],
[
"0x1448614598e00f98e7ae7dea45fbd83bd968653ef8390cde2e86b706ad40c651",
"0xab7b291388e5c9e43c0dc1f591fb83ecdb65022e1b70af43b8a7b40c1dff7c3",
"0x2b7cbb217896f52c9a8c088e654af21e84cde754a3cef5b15c4d5466612d6adf",
"0x2bc6b0ddbe1d701b6570428bdc1ca1bf0da59ff3bbbb95fc2bc71c0c6e67a65c",
"0x123a55a31980384f3d20b2cecbc44ed60c38c11f7d20e9271efab9a905eefd3c",
"0x37501cc8c9dc819309a769f4df098e588b01858bc8eb7e279e2883be9fb8c53",
"0x15de231637a8ea3473c2499e1bee320c17c6a0a4f48a9b28ad1444d5351ddb36",
"0x1c9b1da36989206de9173b0ddfb539bdf07f89df055efc1cc489002da3f4b534",
"0x1f28ec9fdcb3854cb327e3e2fe3958550c37fd179198a41cf20a1a4c810654cb",
"0x2a0418e12dd26e796c091bc1fb1e50f8290263b3c80f68036e6593c2db2f83c6",
"0xdf6bc990dd688fabc1f8a5f8fa02a6a86f7a3a9ee452f5684d123eac1507890",
"0x24cd99ab301ee74e2382e238be9941d9876f320e9940481647fcbfbca7eb6a8c",
"0x1036eec6b3ab659a50c22ae3b357252e64641ce082e5c084bf61a4e61198ac85",
"0x21ece1030bf5ad5759f35ba96af936d82a64abe4f9bb2f50c28a488209286118",
"0x2e5d9059e62303d8d17fb509a60afdc4d8ee1d9137f8fff0d0c6e9135aaf66cb",
"0x2591d88c11580b75c4edf44dba6ba31c696f6789e22d3fa63bbaee71c6986857",
"0x1e647345c108005a7e2f870f01142223bb22ab44a03c7198852aaf6d765c3bdd",
"0x107e279d710e65358ef44f966e594d2ba04e3e15e37ca5aa5117adc71b441f09",
"0x173b298298adf659b3f695a02f51617ecca7e221f678375405f20405e377a44c",
"0x1228a0cd105946870acc7586969e7e3b3e8d4f5f46d450b14698202adb9ea1ce",
"0x778cb45d98c0ec68849bf203dc7b151840928cc9d7f40670bf7d48b3c661d68",
"0x72a7ff12706fa3b3400308feb33ef3ddeaeb9a5678bd4a17dff096fa99e9e64",
"0x2b0997b01165c2874503dc12fe77d6ab58a44c583b939c35d0805bb555cd09f3",
"0x80805129259af50e2e5f2d8efbde358132da1c19fcb7daf48985491c9d287b5",
"0x143e4e1f2af4def1b19038a0d6ac9606e33f40704799f0890b4aba0b2d6cb923",
"0x1c16b447df0a3026d5b9123abaf02d69076c59153052660df237b5221485da3d",
"0x2212763564a17c5b816703e5e52a7db0c5bfb668fe2e424cb251361426830b92",
"0x16dd30a48d96f76e9378f65bc341781e97cfb94af5a57091bf341342c0d7a6e",
"0xefae4a569514657f67e19ca11c01e2426ef0faa2bed48efe0711d338ea3b86b",
"0x281dcd532dc450be559536e252e0159ee21d5b91fbf9725f4a57dd870d80e779",
"0xfe4d11a8b3f24dc559b4a37118f15ab83dad5a74dfaed41637e994a81333f95",
"0x1857938e02790819328278a913222344640f200c51410456089768bfcea561a5",
"0x2007d043ddfc54fd999f6f4b63d4ca66c5f126951388cddb1dcde32944155675",
"0x23de66b927d576792c69a2c6e7df20d3fc745614f5202780bc2b4c2fb27e9e39",
"0x2bdfcbefe353fa2ffe79d2efd5a51c981345a2de40ef5c764bf90da86fedcfe3",
"0x26cffc0e5984933313e4f06dead07943880da66929d3aded77e0fa7f994244fe",
"0x21c532ad0d50674be3947ff2d4eb744eadbaa2812fc0fc25a41cb84c0fd3efb8",
"0x246ecf2ee4531862cc5a2d7842fe3c780b868ef445f70c9a1e2bff46149cc46d",
"0x397b3980a3cefa0fdc7339c4f9500b3643c54a3ee7a39600304741a2e772e90",
"0x144490957677636a9a7bf12b1ac99af955ea70999b2f972211552ac7562c6aef",
"0x4a96669777938cd9643ff257d5f56c5f4f1eb5adea49a678cec3ea17067f1d",
"0x2423a50871429a8c48ba13e4df938e6280d715b39af43449ff06030e346e3e2b",
"0x1ca50640e8f42c03c288014e8ef12b8014c3c40a62fc5856ee9b633146ec602a",
"0xa8335c2fa762d09bda1eb7e22b11cc117df788c0d023d6d8947727681a7a9eb",
"0x1c57af7a6796ed37bd964c33cd1bc9c89747ba21df6100209fc3df9f707f1cda",
"0x8f0ad5a6c01f0bde7d1a8e7d26848179f5ee31d6d59bb8e2c701e37a4cfbb22",
"0x50c7821c6e53eba185a6278fe04a5c1f2f28641bdc843c9fab2ac897e8a2466",
"0xbc5d445c5df52fb9b4b9d6954bc75763d53b0c2089832ebdca9605679f68d0e",
"0x10a6b2a07c472c2a32e9dc1f0501fbda5c9f05b861d1c78a5cff3594197b73d6",
"0x1a24448b3442479c7ac8191bfafc67d9c75e40200b318f7c72d0c2d908b3ddb3",
"0x5e230c7b91dc067802c6c9fead50897c03379389e2a7def370ef4c28e5671be",
"0x1eead685d9f3577f7e364da47f74d8ee2cf6cee31660055615d8f294a30294ac",
"0x4a22eaa10791b59b1bd8ad9626df74275535ebea301f8f912c521ef29c504b1",
"0x6377b60615b7b9a9f0eb2276786d028cca82fbce7db1cc27f50b8486c8806da",
"0xc76495da478bbdfd623fcac2f3b08d641c4c654738fad67b9e90ea0715714f",
"0x250ad6b94e1bd06817cfd2421423a95e18ba872b276c199e16a8fc650c5a9d61",
"0x1b2e0e66146fb5b1221c878286a0983e903e6a95390f57d298a50dce6f52ab47",
"0x18ca890aaeaef97c7c17cab2c3518fccf1180b8fbd134fbcbce38f786f2c0e03",
"0x1b5c3db94d9e0cd45571c1b88084186eb58930bceceb2c8f775b12f37961bea0",
"0x6294c72686a69b6069349a73a81542cb16a6ad71337b7c7ff5a5dfe06a260ae",
"0x2c18a25a8c2cae179b1a643e11159e8f5c9da448aaee3a44de48be3eca7bb253",
"0xfc45a2b9bd6f41901baa7afad40cc28d4479c304d101067c3567fe449332eb0",
"0x378bc3b5a32cf5ca088227c5b6f0a566e0b75733c704804619e6a979bc1d36f",
"0x255375346beabd092bfbfd7278b437bdd3c18bd951d7f4220cdc5013611fd9f",
"0x524853a2a9717af64500fec836c13807e5978be32886047bd3683a5a65b6859",
"0x1b3998553154fc26ce88f0488160c244e1dec648b930c132d077cb93997af5ea",
"0x12074b4d83e92f8e0ab92429aeb5270140338a97ee8e5c74f2b599d9577f25ff",
"0x1a40b1e01a096ea7ebce74c027536bc58778b45dcefb7cc056256dd07326a662",
"0xf5228bc094b9eec1967d778a2b7d6b4de58ede8e0f974165d37ab6f2336bee4",
"0x27314b961d2f96970977a33f2fac6823c043207e4b6a48a05537ea78d779c16f",
"0x2a78f5bdf98afa1da6dd45ab360b877703e1f9f0e797fecca45327ee4ab46595",
"0x2cfde59ca2f01a27fce554c265bc23fda32ddd9dff3dd0a2f1dfddd0764c20b4",
"0x1925a7d1cacee560010f843ef5fc9e7b0294667d871d49e3523a88fe0af56aa",
"0x199ff4bbaf94ee387560fbbec395db1af9eed9f50dd60dc3ca2cb92e92452263",
"0x26f7f91d959cdae91907b28fb2f149dbc275f13d55776da51a88200f8e7caf09",
"0x24cddd641b7ca3bc6c4d257832a5ae5e92126c3bd2e9f05e012731114d62d0c2",
"0x18547edf50bd77b2653c2a53284c999dce5dc69dd613804d10a0ee96bca55738",
"0x2b27178eca4b798ba72b2e6b566bdfeccb2a1e60d8504e4c8ec9192f2baebb",
"0x3020eb88ae7acfd6342709f3d3be45cf2c146bcdc906ee5795273ae4b6e7004a",
"0x54b81a6d3b1f002230c4cd623f77b0fb6eeca3afefafe694544eeeec1a170f",
"0x4d1e03c93510ba6fb49bd9ab51063d3b15e48e2ed449bda2765d03065f6cffc",
"0x2ca6a28e6b98b8c8220abc091a2fafe86f271eef1d93864b7b2bb5a160dd8d99",
"0x2a586600678651f144bf1e54de3d6f8fd519daaf4a4ad9a1f32233e89f9d6733",
"0xa94a9fb854a3c53411d736ce58dc82196b2cd13144a240a6fe173508a221d91",
"0x2d336c647cbb5478e3a72f20f41d135d35f96fbdd9b2b2884e6b23ec201e47fd",
"0x3dbe3f89948f9f4715c491a483dfbf6f6f9dcfb5853c5d3ced707f0050a218a",
"0x22466ec15338114c3b316b2d986c8c0d3d14800d82275a42f476b0ffdf9435b4",
"0x1c2d6c5b182f394e8d36999e91a9eee77da71f5490961fb783a4f8e6f842e687",
"0x4fc56515cf83247e370e48809d3bd245abb52638d86b48a1cb743167db2294d",
"0x1aaebc90617e5aa4b4f9036fcc5092da7edce9c110e3eaf00d7fd39b17aaed27",
"0x15f7dad928cb34e6858a2deb2f9d92c452a535a096c5d713f7319c0c577e413",
"0x60028307221323f46eb56773c5320fdaa2d7123875b420176e34b3ee079e972",
"0x157b288cec9b5356e60373bfa43e67511e2a7e62493650c8f38d819fc34e59d0",
"0x88dbe88f3fe8fdcbebc34ce3f00f07fda411d780ecff1da57660aebfd12ebfc",
"0x9f13c89213c82d5bfd38f8f8bcfe46fdf403d28e6d349ec0176e37df9c912fe",
"0x5bffad53722ac6c42236124c3200669abffa6dc923fbe5141c8e4157cd317a3",
"0x290a7829a4cef2e25d2f6f28421463344bfde52203d4cca736573537af33421e",
"0x9e7209dac7151697be17d3e3ac52b0ee6467929b878d814ae4cc2734b39348f",
"0x7629f5b7cd3dd536df6a866a071fb5df56352fafd0f097711cd1667ea344039",
"0x11641de0af5d033b442dce1f8334eafd4959f122304ea6c2177c377d55eae045",
"0x1021e806d83de4cbecb3c1650c761774e83cae4ecbbb0df13310150cbada88f4",
"0x4ae37e1e7676e1d3cf64285f704135c8cd640f70c895bdedd51ded260fbb69f",
"0x2a491d28b320ff77bf7221b59fcc2535c7cfc9c0f11a5fdc5e49c837a71f0239",
"0x2ba7c26958118f0b751444e8ea3524d45fccefd8744618e66e55679e42be29c6",
"0xc6516f4cbac8b8f29be9406c6c309df34e2da7d931133e4a34f29ec6283e9b3",
"0x2991acc7db5eb3159f8766c49d692079025b480a70656435ee70c5687daaeb0c",
"0x29d7605b413cddd192779b7325e1afb8e52ed3e97e92adf701c7a70c118c648d",
"0x2507bd3788f57cefee754d3ff5a92980dcf062ae4a3fad93ec0059eb2fe545ec"
],
[
"0x2197703fceb4cbf07c6dbf46c4ad93e7d14e554db66d09102ff84824743fe4e7",
"0x1322f0fffc7e4854bd8b5fc23e7106b51f59bd5061d8b565aca2fd3efe512f79",
"0x19e414f80380aa2d222133118c337d82a8c5894c2f88861ee46f448fa9d61359",
"0x22241199a4df9cb7d65249d9562cad6c65f16460e79a7939cbfdd6d7b9209d9a",
"0x301061735384dfcecf9a311c22ade327b51c78b211615f41c77f6d85e8a41b6",
"0x229e1d86c1f2810f4a2633b7b4b5bb61b7dc5d19ac95fd8d379548ff2b6850ee",
"0xe31dcf9c53209a817eeb292e989727c3f56bff65883afe5fdc28ac3dfbea675",
"0x68f917bb1b0805e5b5888b6a97824395baed195b5da0b71c42abd091c2ef54b",
"0x1d0bfb8bb90ac234002d837715613297802a5bbcb69aa2da8cfabd832f52d7b2",
"0xd67c182fbf41c18d5afcb48be20237413f02a64dbf09eaf71f23a14fb9e2103",
"0x3058909cb103557706304b9bb64d94aea4e504d8fda8b82313996f7962884886",
"0x4d06a80196e10e664adfefd075d0cca04961ee8a89f4fd6d601eeb9b60c8dbb",
"0xab062f8d4b5ed0ec21bdb42eb3fcb0a88fa13afcae4523d2386455228407b56",
"0x17380754792ad5f8195e327a5a63cd7570cd1994bd6a130e01c1fa1a173d4630",
"0x2d4f3780eef4ff99ac916f4b12dd575613cb9621bc5fa0980ed9a4ec8aade56c",
"0x2abbef481b368ca971e74dae04691439f845c10d1d57894269b275c196aaf9ee",
"0xf24324f82d68231dd9dd6f8c05f52d8eacb9ae01ccb1f3b30228222377d0e53",
"0x267617317f5146654295ef602b91250db010b45f4724ce7ec54884b29c404597",
"0x157f9e2f737498821bb01ab1001d715eb2c336dbdfcb867becf0a2bb6490c06",
"0xda7bec0cb98d337a52cdf0d66e8a97f24229671346848a552eac14c8a30c702",
"0x15fc820ef53302dca709f3ee480ba1371c91ade79f9f587fc7878d731c0596d1",
"0x845715adfca35c3e8057c0fcd4ce6a6128d0e8117d88f551d3ec6587d0f4296",
"0x422f744e2b736096bc8775a3906893a64cda874aa4457d2b442a9a771956d0f",
"0x15f421550bf6639d46ab5779fd26b1e11618e0497e05cc85c608b00faf3382a1",
"0x4f17cad2ba0ef6f8602e93f5b988d5f357e61ae5f3ec35066fcb4d1a7b720c8",
"0x1732ef5660d84ae50ca09c021eb0d77f1fb2a00cc7905b2479588c49c488673f",
"0x29b12501fa79e08bc25259985f730cdce9e2434192ec826e0f4b9d568bd351b2",
"0x207c8006aa78fc40a84db40ad82142d0f61b28dedf10e2201d815cf4f6274590",
"0xa25704ce4cb74a94d7bdcbdb5fa268abd589d88fe45b2f2c82f90326cd049a8",
"0x11211f3a71af30a00101c423ea40a9585a9eec75687725d7ee289f428f40efb2",
"0xe01e8bbf5ee611471380ce8bb8c34b932ac76e96faabcb7ad20be96187c2fa7",
"0x1c894a1430513df35523e22e4fe9f410a43de91dac73ae338c772fef1fb74363",
"0x2bee349392dfa0b5b4a08ee58ef54f002e06ab26834f94843d48ff0ced526d5c",
"0x84a60c1d70887d9f2d23a8c7713332829eb41cf3181149fb223b7abff4d7f0",
"0x23a4506c90c07f3ae176a0e2bf67f57f88d45898c97bcdebc8a8263ab602c7c5",
"0x1ab66896a1df95c0208b990e2c634707394a1110cb314bb82e0a2e2b4958aee7",
"0x2c6b842aabeb84ede49e559d8eea658293ff4bba9325b5a1d4cb649d317f4616",
"0x16321af63871328c2b88f46df432be9aa14b008b93f85cd971dd986dc16d2e35",
"0x13d647208d3dbcc9df10d1ee35b598e6c8ed85608f81ba6953088e7bc6db73ec",
"0x1c6aeda9e0fa69f5143e6f22e747b7e74e692b9254d55c61b890470cbd7f06b",
"0x287d74a5fa03a4ed65bd4a7c6daf033418f474c7dd9b957bf2b17965cac024b1",
"0x27a4327beb0b3e0cc219805b3f05e854bedcda1b7c93f11691ffd6bb76a5d0e9",
"0x271a03a000bf412e7fcfe8918baa689c6682417803f5b302f1ae30695c8e6770",
"0x1a4436200e4d0be65d2f0f4000157c957fee515e591c8b54bcd46c02d599235f",
"0x1bce9394a5dad0a4cee35b8e99b4b3c0cee058b8ae4fde301c3145a5a7a94c76",
"0x2b1b4ff2bc186b7dda9c3e05dd4932f38e6a7c04b0af0839441a5972125dc902",
"0x13c87d0e4bfa493cc2a197b1c9db49426979adfee4714048d865d4f6e95f699b",
"0xe861496d1b54e3530aa0dc64c6683ec0d01a4e3d1c69d50f4d6720b981ccd62",
"0xdb63bd46e06bcaffbcb03e5dd3faa88f26a0aaa728198c5d09a483fc4197100",
"0x2f8fca3a44bf9ea99452e1a055886af7c95850b716222ad89f0219054d45db87",
"0x5b7bb3e5a4e2946395d1d6ddd541bd9c166cfa1956d161713e7e350f5947d73",
"0x20e4e6c47a68be3175fcf5a7a3f8bf7b3b2198203b4552ed620b9593b66e5483",
"0x154a2a02379c7695ba4783e15d10a147560ee2b4d03a04a0b901dade72df4862",
"0x156f02cab5fb0e7e6fa0c743bfd64716e15e5e50e12774805b1c74dea89c5345",
"0x1d258218556d0152f0a3be042b1bd146774a616ffc7e7313e9519b5041318912",
"0x160a5da355d469412e5535804f99dfb8fa839d7ce2cb7afa50c1fd036219f4e8",
"0x1693c0c96b95f7037faf6a18289814c68237870edc94a72c883eb2c751d5ec43",
"0x2b0df0f463f69ca206ad5c4a115d1a6a83d5e0ac328bd468f35826a968d5708b",
"0x19cad23c14a9bed0e159f250bec8655c07149bba04161fe002f76954ca192b60",
"0x25857eae6be307b653c36a4090a3963d60842410e04c5722dfede28fa645f54e",
"0x29ac9714955b7a9c94e7959efbeba17c04839ad7bbabdc643b9840ae43155f72",
"0x2e637dbad876dd52a7284db266593aa85b2020bf340802625e74f45a2cdf962d",
"0x468d89779