tornado-withdraw/static/merkleTreeWorker.umd.js

102179 lines
4.6 MiB

globalThis.process = { browser: true, env: {}, };
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory();
else if(typeof define === 'function' && define.amd)
define([], factory);
else {
var a = factory();
for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
}
})(self, () => {
return /******/ (() => { // webpackBootstrap
/******/ var __webpack_modules__ = ({
/***/ 7736:
/***/ ((__unused_webpack_module, exports) => {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.BaseTree = void 0;
class BaseTree {
get capacity() {
return 2 ** this.levels;
}
get layers() {
return this._layers.slice();
}
get zeros() {
return this._zeros.slice();
}
get elements() {
return this._layers[0].slice();
}
get root() {
var _a;
return (_a = this._layers[this.levels][0]) !== null && _a !== void 0 ? _a : this._zeros[this.levels];
}
/**
* Find an element in the tree
* @param elements elements of tree
* @param element An element to find
* @param comparator A function that checks leaf value equality
* @param fromIndex The index to start the search at. If the index is greater than or equal to the array's length, -1 is returned
* @returns {number} Index if element is found, otherwise -1
*/
static indexOf(elements, element, fromIndex, comparator) {
if (comparator) {
return elements.findIndex((el) => comparator(element, el));
}
else {
return elements.indexOf(element, fromIndex);
}
}
/**
* Insert new element into the tree
* @param element Element to insert
*/
insert(element) {
if (this._layers[0].length >= this.capacity) {
throw new Error('Tree is full');
}
this.update(this._layers[0].length, element);
}
/*
* Insert multiple elements into the tree.
* @param {Array} elements Elements to insert
*/
bulkInsert(elements) {
if (!elements.length) {
return;
}
if (this._layers[0].length + elements.length > this.capacity) {
throw new Error('Tree is full');
}
// First we insert all elements except the last one
// updating only full subtree hashes (all layers where inserted element has odd index)
// the last element will update the full path to the root making the tree consistent again
for (let i = 0; i < elements.length - 1; i++) {
this._layers[0].push(elements[i]);
let level = 0;
let index = this._layers[0].length - 1;
while (index % 2 === 1) {
level++;
index >>= 1;
const left = this._layers[level - 1][index * 2];
const right = this._layers[level - 1][index * 2 + 1];
this._layers[level][index] = this._hashFn(left, right);
}
}
this.insert(elements[elements.length - 1]);
}
/**
* Change an element in the tree
* @param {number} index Index of element to change
* @param element Updated element value
*/
update(index, element) {
if (isNaN(Number(index)) || index < 0 || index > this._layers[0].length || index >= this.capacity) {
throw new Error('Insert index out of bounds: ' + index);
}
this._layers[0][index] = element;
this._processUpdate(index);
}
/**
* Get merkle path to a leaf
* @param {number} index Leaf index to generate path for
* @returns {{pathElements: Object[], pathIndex: number[]}} An object containing adjacent elements and left-right index
*/
path(index) {
if (isNaN(Number(index)) || index < 0 || index >= this._layers[0].length) {
throw new Error('Index out of bounds: ' + index);
}
let elIndex = +index;
const pathElements = [];
const pathIndices = [];
const pathPositions = [];
for (let level = 0; level < this.levels; level++) {
pathIndices[level] = elIndex % 2;
const leafIndex = elIndex ^ 1;
if (leafIndex < this._layers[level].length) {
pathElements[level] = this._layers[level][leafIndex];
pathPositions[level] = leafIndex;
}
else {
pathElements[level] = this._zeros[level];
pathPositions[level] = 0;
}
elIndex >>= 1;
}
return {
pathElements,
pathIndices,
pathPositions,
pathRoot: this.root,
};
}
_buildZeros() {
this._zeros = [this.zeroElement];
for (let i = 1; i <= this.levels; i++) {
this._zeros[i] = this._hashFn(this._zeros[i - 1], this._zeros[i - 1]);
}
}
_processNodes(nodes, layerIndex) {
const length = nodes.length;
let currentLength = Math.ceil(length / 2);
const currentLayer = new Array(currentLength);
currentLength--;
const starFrom = length - ((length % 2) ^ 1);
let j = 0;
for (let i = starFrom; i >= 0; i -= 2) {
if (nodes[i - 1] === undefined)
break;
const left = nodes[i - 1];
const right = (i === starFrom && length % 2 === 1) ? this._zeros[layerIndex - 1] : nodes[i];
currentLayer[currentLength - j] = this._hashFn(left, right);
j++;
}
return currentLayer;
}
_processUpdate(index) {
for (let level = 1; level <= this.levels; level++) {
index >>= 1;
const left = this._layers[level - 1][index * 2];
const right = index * 2 + 1 < this._layers[level - 1].length
? this._layers[level - 1][index * 2 + 1]
: this._zeros[level - 1];
this._layers[level][index] = this._hashFn(left, right);
}
}
}
exports.BaseTree = BaseTree;
/***/ }),
/***/ 9093:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
const simpleHash_1 = __importDefault(__webpack_require__(5319));
const BaseTree_1 = __webpack_require__(7736);
class MerkleTree extends BaseTree_1.BaseTree {
constructor(levels, elements = [], { hashFunction = simpleHash_1.default, zeroElement = 0, } = {}) {
super();
this.levels = levels;
if (elements.length > this.capacity) {
throw new Error('Tree is full');
}
this._hashFn = hashFunction;
this.zeroElement = zeroElement;
this._layers = [];
const leaves = elements.slice();
this._layers = [leaves];
this._buildZeros();
this._buildHashes();
}
_buildHashes() {
for (let layerIndex = 1; layerIndex <= this.levels; layerIndex++) {
const nodes = this._layers[layerIndex - 1];
this._layers[layerIndex] = this._processNodes(nodes, layerIndex);
}
}
/**
* Insert multiple elements into the tree.
* @param {Array} elements Elements to insert
*/
bulkInsert(elements) {
if (!elements.length) {
return;
}
if (this._layers[0].length + elements.length > this.capacity) {
throw new Error('Tree is full');
}
// First we insert all elements except the last one
// updating only full subtree hashes (all layers where inserted element has odd index)
// the last element will update the full path to the root making the tree consistent again
for (let i = 0; i < elements.length - 1; i++) {
this._layers[0].push(elements[i]);
let level = 0;
let index = this._layers[0].length - 1;
while (index % 2 === 1) {
level++;
index >>= 1;
this._layers[level][index] = this._hashFn(this._layers[level - 1][index * 2], this._layers[level - 1][index * 2 + 1]);
}
}
this.insert(elements[elements.length - 1]);
}
indexOf(element, comparator) {
return BaseTree_1.BaseTree.indexOf(this._layers[0], element, 0, comparator);
}
proof(element) {
const index = this.indexOf(element);
return this.path(index);
}
getTreeEdge(edgeIndex) {
const edgeElement = this._layers[0][edgeIndex];
if (edgeElement === undefined) {
throw new Error('Element not found');
}
const edgePath = this.path(edgeIndex);
return { edgePath, edgeElement, edgeIndex, edgeElementsCount: this._layers[0].length };
}
/**
* 🪓
* @param count
*/
getTreeSlices(count = 4) {
const length = this._layers[0].length;
let size = Math.ceil(length / count);
if (size % 2)
size++;
const slices = [];
for (let i = 0; i < length; i += size) {
const edgeLeft = i;
const edgeRight = i + size;
slices.push({ edge: this.getTreeEdge(edgeLeft), elements: this.elements.slice(edgeLeft, edgeRight) });
}
return slices;
}
/**
* Serialize entire tree state including intermediate layers into a plain object
* Deserializing it back will not require to recompute any hashes
* Elements are not converted to a plain type, this is responsibility of the caller
*/
serialize() {
return {
levels: this.levels,
_zeros: this._zeros,
_layers: this._layers,
};
}
/**
* Deserialize data into a MerkleTree instance
* Make sure to provide the same hashFunction as was used in the source tree,
* otherwise the tree state will be invalid
*/
static deserialize(data, hashFunction) {
const instance = Object.assign(Object.create(this.prototype), data);
instance._hashFn = hashFunction || simpleHash_1.default;
instance.zeroElement = instance._zeros[0];
return instance;
}
toString() {
return JSON.stringify(this.serialize());
}
}
exports["default"] = MerkleTree;
/***/ }),
/***/ 1230:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.PartialMerkleTree = void 0;
const simpleHash_1 = __importDefault(__webpack_require__(5319));
const BaseTree_1 = __webpack_require__(7736);
class PartialMerkleTree extends BaseTree_1.BaseTree {
constructor(levels, { edgePath, edgeElement, edgeIndex, edgeElementsCount, }, leaves, { hashFunction, zeroElement } = {}) {
super();
if (edgeIndex + leaves.length !== edgeElementsCount)
throw new Error('Invalid number of elements');
this._edgeLeafProof = edgePath;
this._initialRoot = edgePath.pathRoot;
this.zeroElement = zeroElement !== null && zeroElement !== void 0 ? zeroElement : 0;
this._edgeLeaf = { data: edgeElement, index: edgeIndex };
this._leavesAfterEdge = leaves;
this.levels = levels;
this._hashFn = hashFunction || simpleHash_1.default;
this._createProofMap();
this._buildTree();
}
get edgeIndex() {
return this._edgeLeaf.index;
}
get edgeElement() {
return this._edgeLeaf.data;
}
get edgeLeafProof() {
return this._edgeLeafProof;
}
_createProofMap() {
this._proofMap = this.edgeLeafProof.pathPositions.reduce((p, c, i) => {
p.set(i, [c, this.edgeLeafProof.pathElements[i]]);
return p;
}, new Map());
this._proofMap.set(this.levels, [0, this.edgeLeafProof.pathRoot]);
}
_buildTree() {
const edgeLeafIndex = this._edgeLeaf.index;
this._leaves = Array(edgeLeafIndex).concat(this._leavesAfterEdge);
if (this._proofMap.has(0)) {
const [proofPos, proofEl] = this._proofMap.get(0);
this._leaves[proofPos] = proofEl;
}
this._layers = [this._leaves];
this._buildZeros();
this._buildHashes();
}
_buildHashes() {
for (let layerIndex = 1; layerIndex <= this.levels; layerIndex++) {
const nodes = this._layers[layerIndex - 1];
const currentLayer = this._processNodes(nodes, layerIndex);
if (this._proofMap.has(layerIndex)) {
const [proofPos, proofEl] = this._proofMap.get(layerIndex);
if (!currentLayer[proofPos])
currentLayer[proofPos] = proofEl;
}
this._layers[layerIndex] = currentLayer;
}
}
/**
* Change an element in the tree
* @param {number} index Index of element to change
* @param element Updated element value
*/
update(index, element) {
if (isNaN(Number(index)) || index < 0 || index > this._layers[0].length || index >= this.capacity) {
throw new Error('Insert index out of bounds: ' + index);
}
if (index < this._edgeLeaf.index) {
throw new Error(`Index ${index} is below the edge: ${this._edgeLeaf.index}`);
}
this._layers[0][index] = element;
this._processUpdate(index);
}
path(index) {
var _a;
if (isNaN(Number(index)) || index < 0 || index >= this._layers[0].length) {
throw new Error('Index out of bounds: ' + index);
}
if (index < this._edgeLeaf.index) {
throw new Error(`Index ${index} is below the edge: ${this._edgeLeaf.index}`);
}
let elIndex = Number(index);
const pathElements = [];
const pathIndices = [];
const pathPositions = [];
for (let level = 0; level < this.levels; level++) {
pathIndices[level] = elIndex % 2;
const leafIndex = elIndex ^ 1;
if (leafIndex < this._layers[level].length) {
pathElements[level] = this._layers[level][leafIndex];
pathPositions[level] = leafIndex;
}
else {
pathElements[level] = this._zeros[level];
pathPositions[level] = 0;
}
const [proofPos, proofEl] = this._proofMap.get(level);
pathElements[level] = (_a = pathElements[level]) !== null && _a !== void 0 ? _a : (proofPos === leafIndex ? proofEl : this._zeros[level]);
elIndex >>= 1;
}
return {
pathElements,
pathIndices,
pathPositions,
pathRoot: this.root,
};
}
indexOf(element, comparator) {
return BaseTree_1.BaseTree.indexOf(this._layers[0], element, this.edgeIndex, comparator);
}
proof(element) {
const index = this.indexOf(element);
return this.path(index);
}
/**
* Shifts edge of tree to left
* @param edge new TreeEdge below current edge
* @param elements leaves between old and new edge
*/
shiftEdge(edge, elements) {
if (this._edgeLeaf.index <= edge.edgeIndex) {
throw new Error(`New edgeIndex should be smaller then ${this._edgeLeaf.index}`);
}
if (elements.length !== (this._edgeLeaf.index - edge.edgeIndex)) {
throw new Error(`Elements length should be ${this._edgeLeaf.index - edge.edgeIndex}`);
}
this._edgeLeafProof = edge.edgePath;
this._edgeLeaf = { index: edge.edgeIndex, data: edge.edgeElement };
this._leavesAfterEdge = [...elements, ...this._leavesAfterEdge];
this._createProofMap();
this._buildTree();
}
serialize() {
return {
_edgeLeafProof: this._edgeLeafProof,
_edgeLeaf: this._edgeLeaf,
_layers: this._layers,
_zeros: this._zeros,
levels: this.levels,
};
}
static deserialize(data, hashFunction) {
const instance = Object.assign(Object.create(this.prototype), data);
instance._hashFn = hashFunction || simpleHash_1.default;
instance._initialRoot = data._edgeLeafProof.pathRoot;
instance.zeroElement = instance._zeros[0];
instance._leavesAfterEdge = instance._layers[0].slice(data._edgeLeaf.index);
instance._createProofMap();
return instance;
}
toString() {
return JSON.stringify(this.serialize());
}
}
exports.PartialMerkleTree = PartialMerkleTree;
/***/ }),
/***/ 1217:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.MerkleTree = exports.simpleHash = exports.PartialMerkleTree = void 0;
const FixedMerkleTree_1 = __importDefault(__webpack_require__(9093));
Object.defineProperty(exports, "MerkleTree", ({ enumerable: true, get: function () { return FixedMerkleTree_1.default; } }));
var PartialMerkleTree_1 = __webpack_require__(1230);
Object.defineProperty(exports, "PartialMerkleTree", ({ enumerable: true, get: function () { return PartialMerkleTree_1.PartialMerkleTree; } }));
var simpleHash_1 = __webpack_require__(5319);
Object.defineProperty(exports, "simpleHash", ({ enumerable: true, get: function () { return simpleHash_1.simpleHash; } }));
exports["default"] = FixedMerkleTree_1.default;
/***/ }),
/***/ 5319:
/***/ ((__unused_webpack_module, exports) => {
"use strict";
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.simpleHash = void 0;
/***
* This is insecure hash function, just for example only
* @param data
* @param seed
* @param hashLength
*/
function simpleHash(data, seed, hashLength = 40) {
const str = data.join('');
let i, l, hval = seed !== null && seed !== void 0 ? seed : 0x811c9dcc5;
for (i = 0, l = str.length; i < l; i++) {
hval ^= str.charCodeAt(i);
hval += (hval << 1) + (hval << 4) + (hval << 6) + (hval << 8) + (hval << 24);
}
const hash = (hval >>> 0).toString(16);
return BigInt('0x' + hash.padEnd(hashLength - (hash.length - 1), '0')).toString(10);
}
exports.simpleHash = simpleHash;
exports["default"] = (left, right) => simpleHash([left, right]);
/***/ }),
/***/ 7568:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
var asn1 = exports;
asn1.bignum = __webpack_require__(2344);
asn1.define = (__webpack_require__(7363).define);
asn1.base = __webpack_require__(9673);
asn1.constants = __webpack_require__(2153);
asn1.decoders = __webpack_require__(2853);
asn1.encoders = __webpack_require__(4669);
/***/ }),
/***/ 7363:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
var asn1 = __webpack_require__(7568);
var inherits = __webpack_require__(6698);
var api = exports;
api.define = function define(name, body) {
return new Entity(name, body);
};
function Entity(name, body) {
this.name = name;
this.body = body;
this.decoders = {};
this.encoders = {};
};
Entity.prototype._createNamed = function createNamed(base) {
var named;
try {
named = (__webpack_require__(8961).runInThisContext)(
'(function ' + this.name + '(entity) {\n' +
' this._initNamed(entity);\n' +
'})'
);
} catch (e) {
named = function (entity) {
this._initNamed(entity);
};
}
inherits(named, base);
named.prototype._initNamed = function initnamed(entity) {
base.call(this, entity);
};
return new named(this);
};
Entity.prototype._getDecoder = function _getDecoder(enc) {
enc = enc || 'der';
// Lazily create decoder
if (!this.decoders.hasOwnProperty(enc))
this.decoders[enc] = this._createNamed(asn1.decoders[enc]);
return this.decoders[enc];
};
Entity.prototype.decode = function decode(data, enc, options) {
return this._getDecoder(enc).decode(data, options);
};
Entity.prototype._getEncoder = function _getEncoder(enc) {
enc = enc || 'der';
// Lazily create encoder
if (!this.encoders.hasOwnProperty(enc))
this.encoders[enc] = this._createNamed(asn1.encoders[enc]);
return this.encoders[enc];
};
Entity.prototype.encode = function encode(data, enc, /* internal */ reporter) {
return this._getEncoder(enc).encode(data, reporter);
};
/***/ }),
/***/ 7227:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
var inherits = __webpack_require__(6698);
var Reporter = (__webpack_require__(9673).Reporter);
var Buffer = (__webpack_require__(8287).Buffer);
function DecoderBuffer(base, options) {
Reporter.call(this, options);
if (!Buffer.isBuffer(base)) {
this.error('Input not Buffer');
return;
}
this.base = base;
this.offset = 0;
this.length = base.length;
}
inherits(DecoderBuffer, Reporter);
exports.t = DecoderBuffer;
DecoderBuffer.prototype.save = function save() {
return { offset: this.offset, reporter: Reporter.prototype.save.call(this) };
};
DecoderBuffer.prototype.restore = function restore(save) {
// Return skipped data
var res = new DecoderBuffer(this.base);
res.offset = save.offset;
res.length = this.offset;
this.offset = save.offset;
Reporter.prototype.restore.call(this, save.reporter);
return res;
};
DecoderBuffer.prototype.isEmpty = function isEmpty() {
return this.offset === this.length;
};
DecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {
if (this.offset + 1 <= this.length)
return this.base.readUInt8(this.offset++, true);
else
return this.error(fail || 'DecoderBuffer overrun');
}
DecoderBuffer.prototype.skip = function skip(bytes, fail) {
if (!(this.offset + bytes <= this.length))
return this.error(fail || 'DecoderBuffer overrun');
var res = new DecoderBuffer(this.base);
// Share reporter state
res._reporterState = this._reporterState;
res.offset = this.offset;
res.length = this.offset + bytes;
this.offset += bytes;
return res;
}
DecoderBuffer.prototype.raw = function raw(save) {
return this.base.slice(save ? save.offset : this.offset, this.length);
}
function EncoderBuffer(value, reporter) {
if (Array.isArray(value)) {
this.length = 0;
this.value = value.map(function(item) {
if (!(item instanceof EncoderBuffer))
item = new EncoderBuffer(item, reporter);
this.length += item.length;
return item;
}, this);
} else if (typeof value === 'number') {
if (!(0 <= value && value <= 0xff))
return reporter.error('non-byte EncoderBuffer value');
this.value = value;
this.length = 1;
} else if (typeof value === 'string') {
this.value = value;
this.length = Buffer.byteLength(value);
} else if (Buffer.isBuffer(value)) {
this.value = value;
this.length = value.length;
} else {
return reporter.error('Unsupported type: ' + typeof value);
}
}
exports.d = EncoderBuffer;
EncoderBuffer.prototype.join = function join(out, offset) {
if (!out)
out = new Buffer(this.length);
if (!offset)
offset = 0;
if (this.length === 0)
return out;
if (Array.isArray(this.value)) {
this.value.forEach(function(item) {
item.join(out, offset);
offset += item.length;
});
} else {
if (typeof this.value === 'number')
out[offset] = this.value;
else if (typeof this.value === 'string')
out.write(this.value, offset);
else if (Buffer.isBuffer(this.value))
this.value.copy(out, offset);
offset += this.length;
}
return out;
};
/***/ }),
/***/ 9673:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
var base = exports;
base.Reporter = (__webpack_require__(9220)/* .Reporter */ .a);
base.DecoderBuffer = (__webpack_require__(7227)/* .DecoderBuffer */ .t);
base.EncoderBuffer = (__webpack_require__(7227)/* .EncoderBuffer */ .d);
base.Node = __webpack_require__(993);
/***/ }),
/***/ 993:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var Reporter = (__webpack_require__(9673).Reporter);
var EncoderBuffer = (__webpack_require__(9673).EncoderBuffer);
var DecoderBuffer = (__webpack_require__(9673).DecoderBuffer);
var assert = __webpack_require__(3349);
// Supported tags
var tags = [
'seq', 'seqof', 'set', 'setof', 'objid', 'bool',
'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc',
'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str',
'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'
];
// Public methods list
var methods = [
'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice',
'any', 'contains'
].concat(tags);
// Overrided methods list
var overrided = [
'_peekTag', '_decodeTag', '_use',
'_decodeStr', '_decodeObjid', '_decodeTime',
'_decodeNull', '_decodeInt', '_decodeBool', '_decodeList',
'_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime',
'_encodeNull', '_encodeInt', '_encodeBool'
];
function Node(enc, parent) {
var state = {};
this._baseState = state;
state.enc = enc;
state.parent = parent || null;
state.children = null;
// State
state.tag = null;
state.args = null;
state.reverseArgs = null;
state.choice = null;
state.optional = false;
state.any = false;
state.obj = false;
state.use = null;
state.useDecoder = null;
state.key = null;
state['default'] = null;
state.explicit = null;
state.implicit = null;
state.contains = null;
// Should create new instance on each method
if (!state.parent) {
state.children = [];
this._wrap();
}
}
module.exports = Node;
var stateProps = [
'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice',
'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit',
'implicit', 'contains'
];
Node.prototype.clone = function clone() {
var state = this._baseState;
var cstate = {};
stateProps.forEach(function(prop) {
cstate[prop] = state[prop];
});
var res = new this.constructor(cstate.parent);
res._baseState = cstate;
return res;
};
Node.prototype._wrap = function wrap() {
var state = this._baseState;
methods.forEach(function(method) {
this[method] = function _wrappedMethod() {
var clone = new this.constructor(this);
state.children.push(clone);
return clone[method].apply(clone, arguments);
};
}, this);
};
Node.prototype._init = function init(body) {
var state = this._baseState;
assert(state.parent === null);
body.call(this);
// Filter children
state.children = state.children.filter(function(child) {
return child._baseState.parent === this;
}, this);
assert.equal(state.children.length, 1, 'Root node can have only one child');
};
Node.prototype._useArgs = function useArgs(args) {
var state = this._baseState;
// Filter children and args
var children = args.filter(function(arg) {
return arg instanceof this.constructor;
}, this);
args = args.filter(function(arg) {
return !(arg instanceof this.constructor);
}, this);
if (children.length !== 0) {
assert(state.children === null);
state.children = children;
// Replace parent to maintain backward link
children.forEach(function(child) {
child._baseState.parent = this;
}, this);
}
if (args.length !== 0) {
assert(state.args === null);
state.args = args;
state.reverseArgs = args.map(function(arg) {
if (typeof arg !== 'object' || arg.constructor !== Object)
return arg;
var res = {};
Object.keys(arg).forEach(function(key) {
if (key == (key | 0))
key |= 0;
var value = arg[key];
res[value] = key;
});
return res;
});
}
};
//
// Overrided methods
//
overrided.forEach(function(method) {
Node.prototype[method] = function _overrided() {
var state = this._baseState;
throw new Error(method + ' not implemented for encoding: ' + state.enc);
};
});
//
// Public methods
//
tags.forEach(function(tag) {
Node.prototype[tag] = function _tagMethod() {
var state = this._baseState;
var args = Array.prototype.slice.call(arguments);
assert(state.tag === null);
state.tag = tag;
this._useArgs(args);
return this;
};
});
Node.prototype.use = function use(item) {
assert(item);
var state = this._baseState;
assert(state.use === null);
state.use = item;
return this;
};
Node.prototype.optional = function optional() {
var state = this._baseState;
state.optional = true;
return this;
};
Node.prototype.def = function def(val) {
var state = this._baseState;
assert(state['default'] === null);
state['default'] = val;
state.optional = true;
return this;
};
Node.prototype.explicit = function explicit(num) {
var state = this._baseState;
assert(state.explicit === null && state.implicit === null);
state.explicit = num;
return this;
};
Node.prototype.implicit = function implicit(num) {
var state = this._baseState;
assert(state.explicit === null && state.implicit === null);
state.implicit = num;
return this;
};
Node.prototype.obj = function obj() {
var state = this._baseState;
var args = Array.prototype.slice.call(arguments);
state.obj = true;
if (args.length !== 0)
this._useArgs(args);
return this;
};
Node.prototype.key = function key(newKey) {
var state = this._baseState;
assert(state.key === null);
state.key = newKey;
return this;
};
Node.prototype.any = function any() {
var state = this._baseState;
state.any = true;
return this;
};
Node.prototype.choice = function choice(obj) {
var state = this._baseState;
assert(state.choice === null);
state.choice = obj;
this._useArgs(Object.keys(obj).map(function(key) {
return obj[key];
}));
return this;
};
Node.prototype.contains = function contains(item) {
var state = this._baseState;
assert(state.use === null);
state.contains = item;
return this;
};
//
// Decoding
//
Node.prototype._decode = function decode(input, options) {
var state = this._baseState;
// Decode root node
if (state.parent === null)
return input.wrapResult(state.children[0]._decode(input, options));
var result = state['default'];
var present = true;
var prevKey = null;
if (state.key !== null)
prevKey = input.enterKey(state.key);
// Check if tag is there
if (state.optional) {
var tag = null;
if (state.explicit !== null)
tag = state.explicit;
else if (state.implicit !== null)
tag = state.implicit;
else if (state.tag !== null)
tag = state.tag;
if (tag === null && !state.any) {
// Trial and Error
var save = input.save();
try {
if (state.choice === null)
this._decodeGeneric(state.tag, input, options);
else
this._decodeChoice(input, options);
present = true;
} catch (e) {
present = false;
}
input.restore(save);
} else {
present = this._peekTag(input, tag, state.any);
if (input.isError(present))
return present;
}
}
// Push object on stack
var prevObj;
if (state.obj && present)
prevObj = input.enterObject();
if (present) {
// Unwrap explicit values
if (state.explicit !== null) {
var explicit = this._decodeTag(input, state.explicit);
if (input.isError(explicit))
return explicit;
input = explicit;
}
var start = input.offset;
// Unwrap implicit and normal values
if (state.use === null && state.choice === null) {
if (state.any)
var save = input.save();
var body = this._decodeTag(
input,
state.implicit !== null ? state.implicit : state.tag,
state.any
);
if (input.isError(body))
return body;
if (state.any)
result = input.raw(save);
else
input = body;
}
if (options && options.track && state.tag !== null)
options.track(input.path(), start, input.length, 'tagged');
if (options && options.track && state.tag !== null)
options.track(input.path(), input.offset, input.length, 'content');
// Select proper method for tag
if (state.any)
result = result;
else if (state.choice === null)
result = this._decodeGeneric(state.tag, input, options);
else
result = this._decodeChoice(input, options);
if (input.isError(result))
return result;
// Decode children
if (!state.any && state.choice === null && state.children !== null) {
state.children.forEach(function decodeChildren(child) {
// NOTE: We are ignoring errors here, to let parser continue with other
// parts of encoded data
child._decode(input, options);
});
}
// Decode contained/encoded by schema, only in bit or octet strings
if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {
var data = new DecoderBuffer(result);
result = this._getUse(state.contains, input._reporterState.obj)
._decode(data, options);
}
}
// Pop object
if (state.obj && present)
result = input.leaveObject(prevObj);
// Set key
if (state.key !== null && (result !== null || present === true))
input.leaveKey(prevKey, state.key, result);
else if (prevKey !== null)
input.exitKey(prevKey);
return result;
};
Node.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {
var state = this._baseState;
if (tag === 'seq' || tag === 'set')
return null;
if (tag === 'seqof' || tag === 'setof')
return this._decodeList(input, tag, state.args[0], options);
else if (/str$/.test(tag))
return this._decodeStr(input, tag, options);
else if (tag === 'objid' && state.args)
return this._decodeObjid(input, state.args[0], state.args[1], options);
else if (tag === 'objid')
return this._decodeObjid(input, null, null, options);
else if (tag === 'gentime' || tag === 'utctime')
return this._decodeTime(input, tag, options);
else if (tag === 'null_')
return this._decodeNull(input, options);
else if (tag === 'bool')
return this._decodeBool(input, options);
else if (tag === 'objDesc')
return this._decodeStr(input, tag, options);
else if (tag === 'int' || tag === 'enum')
return this._decodeInt(input, state.args && state.args[0], options);
if (state.use !== null) {
return this._getUse(state.use, input._reporterState.obj)
._decode(input, options);
} else {
return input.error('unknown tag: ' + tag);
}
};
Node.prototype._getUse = function _getUse(entity, obj) {
var state = this._baseState;
// Create altered use decoder if implicit is set
state.useDecoder = this._use(entity, obj);
assert(state.useDecoder._baseState.parent === null);
state.useDecoder = state.useDecoder._baseState.children[0];
if (state.implicit !== state.useDecoder._baseState.implicit) {
state.useDecoder = state.useDecoder.clone();
state.useDecoder._baseState.implicit = state.implicit;
}
return state.useDecoder;
};
Node.prototype._decodeChoice = function decodeChoice(input, options) {
var state = this._baseState;
var result = null;
var match = false;
Object.keys(state.choice).some(function(key) {
var save = input.save();
var node = state.choice[key];
try {
var value = node._decode(input, options);
if (input.isError(value))
return false;
result = { type: key, value: value };
match = true;
} catch (e) {
input.restore(save);
return false;
}
return true;
}, this);
if (!match)
return input.error('Choice not matched');
return result;
};
//
// Encoding
//
Node.prototype._createEncoderBuffer = function createEncoderBuffer(data) {
return new EncoderBuffer(data, this.reporter);
};
Node.prototype._encode = function encode(data, reporter, parent) {
var state = this._baseState;
if (state['default'] !== null && state['default'] === data)
return;
var result = this._encodeValue(data, reporter, parent);
if (result === undefined)
return;
if (this._skipDefault(result, reporter, parent))
return;
return result;
};
Node.prototype._encodeValue = function encode(data, reporter, parent) {
var state = this._baseState;
// Decode root node
if (state.parent === null)
return state.children[0]._encode(data, reporter || new Reporter());
var result = null;
// Set reporter to share it with a child class
this.reporter = reporter;
// Check if data is there
if (state.optional && data === undefined) {
if (state['default'] !== null)
data = state['default']
else
return;
}
// Encode children first
var content = null;
var primitive = false;
if (state.any) {
// Anything that was given is translated to buffer
result = this._createEncoderBuffer(data);
} else if (state.choice) {
result = this._encodeChoice(data, reporter);
} else if (state.contains) {
content = this._getUse(state.contains, parent)._encode(data, reporter);
primitive = true;
} else if (state.children) {
content = state.children.map(function(child) {
if (child._baseState.tag === 'null_')
return child._encode(null, reporter, data);
if (child._baseState.key === null)
return reporter.error('Child should have a key');
var prevKey = reporter.enterKey(child._baseState.key);
if (typeof data !== 'object')
return reporter.error('Child expected, but input is not object');
var res = child._encode(data[child._baseState.key], reporter, data);
reporter.leaveKey(prevKey);
return res;
}, this).filter(function(child) {
return child;
});
content = this._createEncoderBuffer(content);
} else {
if (state.tag === 'seqof' || state.tag === 'setof') {
// TODO(indutny): this should be thrown on DSL level
if (!(state.args && state.args.length === 1))
return reporter.error('Too many args for : ' + state.tag);
if (!Array.isArray(data))
return reporter.error('seqof/setof, but data is not Array');
var child = this.clone();
child._baseState.implicit = null;
content = this._createEncoderBuffer(data.map(function(item) {
var state = this._baseState;
return this._getUse(state.args[0], data)._encode(item, reporter);
}, child));
} else if (state.use !== null) {
result = this._getUse(state.use, parent)._encode(data, reporter);
} else {
content = this._encodePrimitive(state.tag, data);
primitive = true;
}
}
// Encode data itself
var result;
if (!state.any && state.choice === null) {
var tag = state.implicit !== null ? state.implicit : state.tag;
var cls = state.implicit === null ? 'universal' : 'context';
if (tag === null) {
if (state.use === null)
reporter.error('Tag could be omitted only for .use()');
} else {
if (state.use === null)
result = this._encodeComposite(tag, primitive, cls, content);
}
}
// Wrap in explicit
if (state.explicit !== null)
result = this._encodeComposite(state.explicit, false, 'context', result);
return result;
};
Node.prototype._encodeChoice = function encodeChoice(data, reporter) {
var state = this._baseState;
var node = state.choice[data.type];
if (!node) {
assert(
false,
data.type + ' not found in ' +
JSON.stringify(Object.keys(state.choice)));
}
return node._encode(data.value, reporter);
};
Node.prototype._encodePrimitive = function encodePrimitive(tag, data) {
var state = this._baseState;
if (/str$/.test(tag))
return this._encodeStr(data, tag);
else if (tag === 'objid' && state.args)
return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);
else if (tag === 'objid')
return this._encodeObjid(data, null, null);
else if (tag === 'gentime' || tag === 'utctime')
return this._encodeTime(data, tag);
else if (tag === 'null_')
return this._encodeNull();
else if (tag === 'int' || tag === 'enum')
return this._encodeInt(data, state.args && state.reverseArgs[0]);
else if (tag === 'bool')
return this._encodeBool(data);
else if (tag === 'objDesc')
return this._encodeStr(data, tag);
else
throw new Error('Unsupported tag: ' + tag);
};
Node.prototype._isNumstr = function isNumstr(str) {
return /^[0-9 ]*$/.test(str);
};
Node.prototype._isPrintstr = function isPrintstr(str) {
return /^[A-Za-z0-9 '\(\)\+,\-\.\/:=\?]*$/.test(str);
};
/***/ }),
/***/ 9220:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
var inherits = __webpack_require__(6698);
function Reporter(options) {
this._reporterState = {
obj: null,
path: [],
options: options || {},
errors: []
};
}
exports.a = Reporter;
Reporter.prototype.isError = function isError(obj) {
return obj instanceof ReporterError;
};
Reporter.prototype.save = function save() {
var state = this._reporterState;
return { obj: state.obj, pathLen: state.path.length };
};
Reporter.prototype.restore = function restore(data) {
var state = this._reporterState;
state.obj = data.obj;
state.path = state.path.slice(0, data.pathLen);
};
Reporter.prototype.enterKey = function enterKey(key) {
return this._reporterState.path.push(key);
};
Reporter.prototype.exitKey = function exitKey(index) {
var state = this._reporterState;
state.path = state.path.slice(0, index - 1);
};
Reporter.prototype.leaveKey = function leaveKey(index, key, value) {
var state = this._reporterState;
this.exitKey(index);
if (state.obj !== null)
state.obj[key] = value;
};
Reporter.prototype.path = function path() {
return this._reporterState.path.join('/');
};
Reporter.prototype.enterObject = function enterObject() {
var state = this._reporterState;
var prev = state.obj;
state.obj = {};
return prev;
};
Reporter.prototype.leaveObject = function leaveObject(prev) {
var state = this._reporterState;
var now = state.obj;
state.obj = prev;
return now;
};
Reporter.prototype.error = function error(msg) {
var err;
var state = this._reporterState;
var inherited = msg instanceof ReporterError;
if (inherited) {
err = msg;
} else {
err = new ReporterError(state.path.map(function(elem) {
return '[' + JSON.stringify(elem) + ']';
}).join(''), msg.message || msg, msg.stack);
}
if (!state.options.partial)
throw err;
if (!inherited)
state.errors.push(err);
return err;
};
Reporter.prototype.wrapResult = function wrapResult(result) {
var state = this._reporterState;
if (!state.options.partial)
return result;
return {
result: this.isError(result) ? null : result,
errors: state.errors
};
};
function ReporterError(path, msg) {
this.path = path;
this.rethrow(msg);
};
inherits(ReporterError, Error);
ReporterError.prototype.rethrow = function rethrow(msg) {
this.message = msg + ' at: ' + (this.path || '(shallow)');
if (Error.captureStackTrace)
Error.captureStackTrace(this, ReporterError);
if (!this.stack) {
try {
// IE only adds stack when thrown
throw new Error(this.message);
} catch (e) {
this.stack = e.stack;
}
}
return this;
};
/***/ }),
/***/ 4598:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
var constants = __webpack_require__(2153);
exports.tagClass = {
0: 'universal',
1: 'application',
2: 'context',
3: 'private'
};
exports.tagClassByName = constants._reverse(exports.tagClass);
exports.tag = {
0x00: 'end',
0x01: 'bool',
0x02: 'int',
0x03: 'bitstr',
0x04: 'octstr',
0x05: 'null_',
0x06: 'objid',
0x07: 'objDesc',
0x08: 'external',
0x09: 'real',
0x0a: 'enum',
0x0b: 'embed',
0x0c: 'utf8str',
0x0d: 'relativeOid',
0x10: 'seq',
0x11: 'set',
0x12: 'numstr',
0x13: 'printstr',
0x14: 't61str',
0x15: 'videostr',
0x16: 'ia5str',
0x17: 'utctime',
0x18: 'gentime',
0x19: 'graphstr',
0x1a: 'iso646str',
0x1b: 'genstr',
0x1c: 'unistr',
0x1d: 'charstr',
0x1e: 'bmpstr'
};
exports.tagByName = constants._reverse(exports.tag);
/***/ }),
/***/ 2153:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
var constants = exports;
// Helper
constants._reverse = function reverse(map) {
var res = {};
Object.keys(map).forEach(function(key) {
// Convert key to integer if it is stringified
if ((key | 0) == key)
key = key | 0;
var value = map[key];
res[value] = key;
});
return res;
};
constants.der = __webpack_require__(4598);
/***/ }),
/***/ 2010:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var inherits = __webpack_require__(6698);
var asn1 = __webpack_require__(7568);
var base = asn1.base;
var bignum = asn1.bignum;
// Import DER constants
var der = asn1.constants.der;
function DERDecoder(entity) {
this.enc = 'der';
this.name = entity.name;
this.entity = entity;
// Construct base tree
this.tree = new DERNode();
this.tree._init(entity.body);
};
module.exports = DERDecoder;
DERDecoder.prototype.decode = function decode(data, options) {
if (!(data instanceof base.DecoderBuffer))
data = new base.DecoderBuffer(data, options);
return this.tree._decode(data, options);
};
// Tree methods
function DERNode(parent) {
base.Node.call(this, 'der', parent);
}
inherits(DERNode, base.Node);
DERNode.prototype._peekTag = function peekTag(buffer, tag, any) {
if (buffer.isEmpty())
return false;
var state = buffer.save();
var decodedTag = derDecodeTag(buffer, 'Failed to peek tag: "' + tag + '"');
if (buffer.isError(decodedTag))
return decodedTag;
buffer.restore(state);
return decodedTag.tag === tag || decodedTag.tagStr === tag ||
(decodedTag.tagStr + 'of') === tag || any;
};
DERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {
var decodedTag = derDecodeTag(buffer,
'Failed to decode tag of "' + tag + '"');
if (buffer.isError(decodedTag))
return decodedTag;
var len = derDecodeLen(buffer,
decodedTag.primitive,
'Failed to get length of "' + tag + '"');
// Failure
if (buffer.isError(len))
return len;
if (!any &&
decodedTag.tag !== tag &&
decodedTag.tagStr !== tag &&
decodedTag.tagStr + 'of' !== tag) {
return buffer.error('Failed to match tag: "' + tag + '"');
}
if (decodedTag.primitive || len !== null)
return buffer.skip(len, 'Failed to match body of: "' + tag + '"');
// Indefinite length... find END tag
var state = buffer.save();
var res = this._skipUntilEnd(
buffer,
'Failed to skip indefinite length body: "' + this.tag + '"');
if (buffer.isError(res))
return res;
len = buffer.offset - state.offset;
buffer.restore(state);
return buffer.skip(len, 'Failed to match body of: "' + tag + '"');
};
DERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {
while (true) {
var tag = derDecodeTag(buffer, fail);
if (buffer.isError(tag))
return tag;
var len = derDecodeLen(buffer, tag.primitive, fail);
if (buffer.isError(len))
return len;
var res;
if (tag.primitive || len !== null)
res = buffer.skip(len)
else
res = this._skipUntilEnd(buffer, fail);
// Failure
if (buffer.isError(res))
return res;
if (tag.tagStr === 'end')
break;
}
};
DERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,
options) {
var result = [];
while (!buffer.isEmpty()) {
var possibleEnd = this._peekTag(buffer, 'end');
if (buffer.isError(possibleEnd))
return possibleEnd;
var res = decoder.decode(buffer, 'der', options);
if (buffer.isError(res) && possibleEnd)
break;
result.push(res);
}
return result;
};
DERNode.prototype._decodeStr = function decodeStr(buffer, tag) {
if (tag === 'bitstr') {
var unused = buffer.readUInt8();
if (buffer.isError(unused))
return unused;
return { unused: unused, data: buffer.raw() };
} else if (tag === 'bmpstr') {
var raw = buffer.raw();
if (raw.length % 2 === 1)
return buffer.error('Decoding of string type: bmpstr length mismatch');
var str = '';
for (var i = 0; i < raw.length / 2; i++) {
str += String.fromCharCode(raw.readUInt16BE(i * 2));
}
return str;
} else if (tag === 'numstr') {
var numstr = buffer.raw().toString('ascii');
if (!this._isNumstr(numstr)) {
return buffer.error('Decoding of string type: ' +
'numstr unsupported characters');
}
return numstr;
} else if (tag === 'octstr') {
return buffer.raw();
} else if (tag === 'objDesc') {
return buffer.raw();
} else if (tag === 'printstr') {
var printstr = buffer.raw().toString('ascii');
if (!this._isPrintstr(printstr)) {
return buffer.error('Decoding of string type: ' +
'printstr unsupported characters');
}
return printstr;
} else if (/str$/.test(tag)) {
return buffer.raw().toString();
} else {
return buffer.error('Decoding of string type: ' + tag + ' unsupported');
}
};
DERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {
var result;
var identifiers = [];
var ident = 0;
while (!buffer.isEmpty()) {
var subident = buffer.readUInt8();
ident <<= 7;
ident |= subident & 0x7f;
if ((subident & 0x80) === 0) {
identifiers.push(ident);
ident = 0;
}
}
if (subident & 0x80)
identifiers.push(ident);
var first = (identifiers[0] / 40) | 0;
var second = identifiers[0] % 40;
if (relative)
result = identifiers;
else
result = [first, second].concat(identifiers.slice(1));
if (values) {
var tmp = values[result.join(' ')];
if (tmp === undefined)
tmp = values[result.join('.')];
if (tmp !== undefined)
result = tmp;
}
return result;
};
DERNode.prototype._decodeTime = function decodeTime(buffer, tag) {
var str = buffer.raw().toString();
if (tag === 'gentime') {
var year = str.slice(0, 4) | 0;
var mon = str.slice(4, 6) | 0;
var day = str.slice(6, 8) | 0;
var hour = str.slice(8, 10) | 0;
var min = str.slice(10, 12) | 0;
var sec = str.slice(12, 14) | 0;
} else if (tag === 'utctime') {
var year = str.slice(0, 2) | 0;
var mon = str.slice(2, 4) | 0;
var day = str.slice(4, 6) | 0;
var hour = str.slice(6, 8) | 0;
var min = str.slice(8, 10) | 0;
var sec = str.slice(10, 12) | 0;
if (year < 70)
year = 2000 + year;
else
year = 1900 + year;
} else {
return buffer.error('Decoding ' + tag + ' time is not supported yet');
}
return Date.UTC(year, mon - 1, day, hour, min, sec, 0);
};
DERNode.prototype._decodeNull = function decodeNull(buffer) {
return null;
};
DERNode.prototype._decodeBool = function decodeBool(buffer) {
var res = buffer.readUInt8();
if (buffer.isError(res))
return res;
else
return res !== 0;
};
DERNode.prototype._decodeInt = function decodeInt(buffer, values) {
// Bigint, return as it is (assume big endian)
var raw = buffer.raw();
var res = new bignum(raw);
if (values)
res = values[res.toString(10)] || res;
return res;
};
DERNode.prototype._use = function use(entity, obj) {
if (typeof entity === 'function')
entity = entity(obj);
return entity._getDecoder('der').tree;
};
// Utility methods
function derDecodeTag(buf, fail) {
var tag = buf.readUInt8(fail);
if (buf.isError(tag))
return tag;
var cls = der.tagClass[tag >> 6];
var primitive = (tag & 0x20) === 0;
// Multi-octet tag - load
if ((tag & 0x1f) === 0x1f) {
var oct = tag;
tag = 0;
while ((oct & 0x80) === 0x80) {
oct = buf.readUInt8(fail);
if (buf.isError(oct))
return oct;
tag <<= 7;
tag |= oct & 0x7f;
}
} else {
tag &= 0x1f;
}
var tagStr = der.tag[tag];
return {
cls: cls,
primitive: primitive,
tag: tag,
tagStr: tagStr
};
}
function derDecodeLen(buf, primitive, fail) {
var len = buf.readUInt8(fail);
if (buf.isError(len))
return len;
// Indefinite form
if (!primitive && len === 0x80)
return null;
// Definite form
if ((len & 0x80) === 0) {
// Short form
return len;
}
// Long form
var num = len & 0x7f;
if (num > 4)
return buf.error('length octect is too long');
len = 0;
for (var i = 0; i < num; i++) {
len <<= 8;
var j = buf.readUInt8(fail);
if (buf.isError(j))
return j;
len |= j;
}
return len;
}
/***/ }),
/***/ 2853:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
var decoders = exports;
decoders.der = __webpack_require__(2010);
decoders.pem = __webpack_require__(8903);
/***/ }),
/***/ 8903:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var inherits = __webpack_require__(6698);
var Buffer = (__webpack_require__(8287).Buffer);
var DERDecoder = __webpack_require__(2010);
function PEMDecoder(entity) {
DERDecoder.call(this, entity);
this.enc = 'pem';
};
inherits(PEMDecoder, DERDecoder);
module.exports = PEMDecoder;
PEMDecoder.prototype.decode = function decode(data, options) {
var lines = data.toString().split(/[\r\n]+/g);
var label = options.label.toUpperCase();
var re = /^-----(BEGIN|END) ([^-]+)-----$/;
var start = -1;
var end = -1;
for (var i = 0; i < lines.length; i++) {
var match = lines[i].match(re);
if (match === null)
continue;
if (match[2] !== label)
continue;
if (start === -1) {
if (match[1] !== 'BEGIN')
break;
start = i;
} else {
if (match[1] !== 'END')
break;
end = i;
break;
}
}
if (start === -1 || end === -1)
throw new Error('PEM section not found for: ' + label);
var base64 = lines.slice(start + 1, end).join('');
// Remove excessive symbols
base64.replace(/[^a-z0-9\+\/=]+/gi, '');
var input = new Buffer(base64, 'base64');
return DERDecoder.prototype.decode.call(this, input, options);
};
/***/ }),
/***/ 82:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var inherits = __webpack_require__(6698);
var Buffer = (__webpack_require__(8287).Buffer);
var asn1 = __webpack_require__(7568);
var base = asn1.base;
// Import DER constants
var der = asn1.constants.der;
function DEREncoder(entity) {
this.enc = 'der';
this.name = entity.name;
this.entity = entity;
// Construct base tree
this.tree = new DERNode();
this.tree._init(entity.body);
};
module.exports = DEREncoder;
DEREncoder.prototype.encode = function encode(data, reporter) {
return this.tree._encode(data, reporter).join();
};
// Tree methods
function DERNode(parent) {
base.Node.call(this, 'der', parent);
}
inherits(DERNode, base.Node);
DERNode.prototype._encodeComposite = function encodeComposite(tag,
primitive,
cls,
content) {
var encodedTag = encodeTag(tag, primitive, cls, this.reporter);
// Short form
if (content.length < 0x80) {
var header = new Buffer(2);
header[0] = encodedTag;
header[1] = content.length;
return this._createEncoderBuffer([ header, content ]);
}
// Long form
// Count octets required to store length
var lenOctets = 1;
for (var i = content.length; i >= 0x100; i >>= 8)
lenOctets++;
var header = new Buffer(1 + 1 + lenOctets);
header[0] = encodedTag;
header[1] = 0x80 | lenOctets;
for (var i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)
header[i] = j & 0xff;
return this._createEncoderBuffer([ header, content ]);
};
DERNode.prototype._encodeStr = function encodeStr(str, tag) {
if (tag === 'bitstr') {
return this._createEncoderBuffer([ str.unused | 0, str.data ]);
} else if (tag === 'bmpstr') {
var buf = new Buffer(str.length * 2);
for (var i = 0; i < str.length; i++) {
buf.writeUInt16BE(str.charCodeAt(i), i * 2);
}
return this._createEncoderBuffer(buf);
} else if (tag === 'numstr') {
if (!this._isNumstr(str)) {
return this.reporter.error('Encoding of string type: numstr supports ' +
'only digits and space');
}
return this._createEncoderBuffer(str);
} else if (tag === 'printstr') {
if (!this._isPrintstr(str)) {
return this.reporter.error('Encoding of string type: printstr supports ' +
'only latin upper and lower case letters, ' +
'digits, space, apostrophe, left and rigth ' +
'parenthesis, plus sign, comma, hyphen, ' +
'dot, slash, colon, equal sign, ' +
'question mark');
}
return this._createEncoderBuffer(str);
} else if (/str$/.test(tag)) {
return this._createEncoderBuffer(str);
} else if (tag === 'objDesc') {
return this._createEncoderBuffer(str);
} else {
return this.reporter.error('Encoding of string type: ' + tag +
' unsupported');
}
};
DERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {
if (typeof id === 'string') {
if (!values)
return this.reporter.error('string objid given, but no values map found');
if (!values.hasOwnProperty(id))
return this.reporter.error('objid not found in values map');
id = values[id].split(/[\s\.]+/g);
for (var i = 0; i < id.length; i++)
id[i] |= 0;
} else if (Array.isArray(id)) {
id = id.slice();
for (var i = 0; i < id.length; i++)
id[i] |= 0;
}
if (!Array.isArray(id)) {
return this.reporter.error('objid() should be either array or string, ' +
'got: ' + JSON.stringify(id));
}
if (!relative) {
if (id[1] >= 40)
return this.reporter.error('Second objid identifier OOB');
id.splice(0, 2, id[0] * 40 + id[1]);
}
// Count number of octets
var size = 0;
for (var i = 0; i < id.length; i++) {
var ident = id[i];
for (size++; ident >= 0x80; ident >>= 7)
size++;
}
var objid = new Buffer(size);
var offset = objid.length - 1;
for (var i = id.length - 1; i >= 0; i--) {
var ident = id[i];
objid[offset--] = ident & 0x7f;
while ((ident >>= 7) > 0)
objid[offset--] = 0x80 | (ident & 0x7f);
}
return this._createEncoderBuffer(objid);
};
function two(num) {
if (num < 10)
return '0' + num;
else
return num;
}
DERNode.prototype._encodeTime = function encodeTime(time, tag) {
var str;
var date = new Date(time);
if (tag === 'gentime') {
str = [
two(date.getFullYear()),
two(date.getUTCMonth() + 1),
two(date.getUTCDate()),
two(date.getUTCHours()),
two(date.getUTCMinutes()),
two(date.getUTCSeconds()),
'Z'
].join('');
} else if (tag === 'utctime') {
str = [
two(date.getFullYear() % 100),
two(date.getUTCMonth() + 1),
two(date.getUTCDate()),
two(date.getUTCHours()),
two(date.getUTCMinutes()),
two(date.getUTCSeconds()),
'Z'
].join('');
} else {
this.reporter.error('Encoding ' + tag + ' time is not supported yet');
}
return this._encodeStr(str, 'octstr');
};
DERNode.prototype._encodeNull = function encodeNull() {
return this._createEncoderBuffer('');
};
DERNode.prototype._encodeInt = function encodeInt(num, values) {
if (typeof num === 'string') {
if (!values)
return this.reporter.error('String int or enum given, but no values map');
if (!values.hasOwnProperty(num)) {
return this.reporter.error('Values map doesn\'t contain: ' +
JSON.stringify(num));
}
num = values[num];
}
// Bignum, assume big endian
if (typeof num !== 'number' && !Buffer.isBuffer(num)) {
var numArray = num.toArray();
if (!num.sign && numArray[0] & 0x80) {
numArray.unshift(0);
}
num = new Buffer(numArray);
}
if (Buffer.isBuffer(num)) {
var size = num.length;
if (num.length === 0)
size++;
var out = new Buffer(size);
num.copy(out);
if (num.length === 0)
out[0] = 0
return this._createEncoderBuffer(out);
}
if (num < 0x80)
return this._createEncoderBuffer(num);
if (num < 0x100)
return this._createEncoderBuffer([0, num]);
var size = 1;
for (var i = num; i >= 0x100; i >>= 8)
size++;
var out = new Array(size);
for (var i = out.length - 1; i >= 0; i--) {
out[i] = num & 0xff;
num >>= 8;
}
if(out[0] & 0x80) {
out.unshift(0);
}
return this._createEncoderBuffer(new Buffer(out));
};
DERNode.prototype._encodeBool = function encodeBool(value) {
return this._createEncoderBuffer(value ? 0xff : 0);
};
DERNode.prototype._use = function use(entity, obj) {
if (typeof entity === 'function')
entity = entity(obj);
return entity._getEncoder('der').tree;
};
DERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {
var state = this._baseState;
var i;
if (state['default'] === null)
return false;
var data = dataBuffer.join();
if (state.defaultBuffer === undefined)
state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();
if (data.length !== state.defaultBuffer.length)
return false;
for (i=0; i < data.length; i++)
if (data[i] !== state.defaultBuffer[i])
return false;
return true;
};
// Utility methods
function encodeTag(tag, primitive, cls, reporter) {
var res;
if (tag === 'seqof')
tag = 'seq';
else if (tag === 'setof')
tag = 'set';
if (der.tagByName.hasOwnProperty(tag))
res = der.tagByName[tag];
else if (typeof tag === 'number' && (tag | 0) === tag)
res = tag;
else
return reporter.error('Unknown tag: ' + tag);
if (res >= 0x1f)
return reporter.error('Multi-octet tag encoding unsupported');
if (!primitive)
res |= 0x20;
res |= (der.tagClassByName[cls || 'universal'] << 6);
return res;
}
/***/ }),
/***/ 4669:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
var encoders = exports;
encoders.der = __webpack_require__(82);
encoders.pem = __webpack_require__(735);
/***/ }),
/***/ 735:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var inherits = __webpack_require__(6698);
var DEREncoder = __webpack_require__(82);
function PEMEncoder(entity) {
DEREncoder.call(this, entity);
this.enc = 'pem';
};
inherits(PEMEncoder, DEREncoder);
module.exports = PEMEncoder;
PEMEncoder.prototype.encode = function encode(data, options) {
var buf = DEREncoder.prototype.encode.call(this, data);
var p = buf.toString('base64');
var out = [ '-----BEGIN ' + options.label + '-----' ];
for (var i = 0; i < p.length; i += 64)
out.push(p.slice(i, i + 64));
out.push('-----END ' + options.label + '-----');
return out.join('\n');
};
/***/ }),
/***/ 2344:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
/* module decorator */ module = __webpack_require__.nmd(module);
(function (module, exports) {
'use strict';
// Utils
function assert (val, msg) {
if (!val) throw new Error(msg || 'Assertion failed');
}
// Could use `inherits` module, but don't want to move from single file
// architecture yet.
function inherits (ctor, superCtor) {
ctor.super_ = superCtor;
var TempCtor = function () {};
TempCtor.prototype = superCtor.prototype;
ctor.prototype = new TempCtor();
ctor.prototype.constructor = ctor;
}
// BN
function BN (number, base, endian) {
if (BN.isBN(number)) {
return number;
}
this.negative = 0;
this.words = null;
this.length = 0;
// Reduction context
this.red = null;
if (number !== null) {
if (base === 'le' || base === 'be') {
endian = base;
base = 10;
}
this._init(number || 0, base || 10, endian || 'be');
}
}
if (typeof module === 'object') {
module.exports = BN;
} else {
exports.BN = BN;
}
BN.BN = BN;
BN.wordSize = 26;
var Buffer;
try {
if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {
Buffer = window.Buffer;
} else {
Buffer = (__webpack_require__(8982).Buffer);
}
} catch (e) {
}
BN.isBN = function isBN (num) {
if (num instanceof BN) {
return true;
}
return num !== null && typeof num === 'object' &&
num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);
};
BN.max = function max (left, right) {
if (left.cmp(right) > 0) return left;
return right;
};
BN.min = function min (left, right) {
if (left.cmp(right) < 0) return left;
return right;
};
BN.prototype._init = function init (number, base, endian) {
if (typeof number === 'number') {
return this._initNumber(number, base, endian);
}
if (typeof number === 'object') {
return this._initArray(number, base, endian);
}
if (base === 'hex') {
base = 16;
}
assert(base === (base | 0) && base >= 2 && base <= 36);
number = number.toString().replace(/\s+/g, '');
var start = 0;
if (number[0] === '-') {
start++;
this.negative = 1;
}
if (start < number.length) {
if (base === 16) {
this._parseHex(number, start, endian);
} else {
this._parseBase(number, base, start);
if (endian === 'le') {
this._initArray(this.toArray(), base, endian);
}
}
}
};
BN.prototype._initNumber = function _initNumber (number, base, endian) {
if (number < 0) {
this.negative = 1;
number = -number;
}
if (number < 0x4000000) {
this.words = [ number & 0x3ffffff ];
this.length = 1;
} else if (number < 0x10000000000000) {
this.words = [
number & 0x3ffffff,
(number / 0x4000000) & 0x3ffffff
];
this.length = 2;
} else {
assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)
this.words = [
number & 0x3ffffff,
(number / 0x4000000) & 0x3ffffff,
1
];
this.length = 3;
}
if (endian !== 'le') return;
// Reverse the bytes
this._initArray(this.toArray(), base, endian);
};
BN.prototype._initArray = function _initArray (number, base, endian) {
// Perhaps a Uint8Array
assert(typeof number.length === 'number');
if (number.length <= 0) {
this.words = [ 0 ];
this.length = 1;
return this;
}
this.length = Math.ceil(number.length / 3);
this.words = new Array(this.length);
for (var i = 0; i < this.length; i++) {
this.words[i] = 0;
}
var j, w;
var off = 0;
if (endian === 'be') {
for (i = number.length - 1, j = 0; i >= 0; i -= 3) {
w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);
this.words[j] |= (w << off) & 0x3ffffff;
this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
off += 24;
if (off >= 26) {
off -= 26;
j++;
}
}
} else if (endian === 'le') {
for (i = 0, j = 0; i < number.length; i += 3) {
w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);
this.words[j] |= (w << off) & 0x3ffffff;
this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
off += 24;
if (off >= 26) {
off -= 26;
j++;
}
}
}
return this.strip();
};
function parseHex4Bits (string, index) {
var c = string.charCodeAt(index);
// 'A' - 'F'
if (c >= 65 && c <= 70) {
return c - 55;
// 'a' - 'f'
} else if (c >= 97 && c <= 102) {
return c - 87;
// '0' - '9'
} else {
return (c - 48) & 0xf;
}
}
function parseHexByte (string, lowerBound, index) {
var r = parseHex4Bits(string, index);
if (index - 1 >= lowerBound) {
r |= parseHex4Bits(string, index - 1) << 4;
}
return r;
}
BN.prototype._parseHex = function _parseHex (number, start, endian) {
// Create possibly bigger array to ensure that it fits the number
this.length = Math.ceil((number.length - start) / 6);
this.words = new Array(this.length);
for (var i = 0; i < this.length; i++) {
this.words[i] = 0;
}
// 24-bits chunks
var off = 0;
var j = 0;
var w;
if (endian === 'be') {
for (i = number.length - 1; i >= start; i -= 2) {
w = parseHexByte(number, start, i) << off;
this.words[j] |= w & 0x3ffffff;
if (off >= 18) {
off -= 18;
j += 1;
this.words[j] |= w >>> 26;
} else {
off += 8;
}
}
} else {
var parseLength = number.length - start;
for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {
w = parseHexByte(number, start, i) << off;
this.words[j] |= w & 0x3ffffff;
if (off >= 18) {
off -= 18;
j += 1;
this.words[j] |= w >>> 26;
} else {
off += 8;
}
}
}
this.strip();
};
function parseBase (str, start, end, mul) {
var r = 0;
var len = Math.min(str.length, end);
for (var i = start; i < len; i++) {
var c = str.charCodeAt(i) - 48;
r *= mul;
// 'a'
if (c >= 49) {
r += c - 49 + 0xa;
// 'A'
} else if (c >= 17) {
r += c - 17 + 0xa;
// '0' - '9'
} else {
r += c;
}
}
return r;
}
BN.prototype._parseBase = function _parseBase (number, base, start) {
// Initialize as zero
this.words = [ 0 ];
this.length = 1;
// Find length of limb in base
for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {
limbLen++;
}
limbLen--;
limbPow = (limbPow / base) | 0;
var total = number.length - start;
var mod = total % limbLen;
var end = Math.min(total, total - mod) + start;
var word = 0;
for (var i = start; i < end; i += limbLen) {
word = parseBase(number, i, i + limbLen, base);
this.imuln(limbPow);
if (this.words[0] + word < 0x4000000) {
this.words[0] += word;
} else {
this._iaddn(word);
}
}
if (mod !== 0) {
var pow = 1;
word = parseBase(number, i, number.length, base);
for (i = 0; i < mod; i++) {
pow *= base;
}
this.imuln(pow);
if (this.words[0] + word < 0x4000000) {
this.words[0] += word;
} else {
this._iaddn(word);
}
}
this.strip();
};
BN.prototype.copy = function copy (dest) {
dest.words = new Array(this.length);
for (var i = 0; i < this.length; i++) {
dest.words[i] = this.words[i];
}
dest.length = this.length;
dest.negative = this.negative;
dest.red = this.red;
};
BN.prototype.clone = function clone () {
var r = new BN(null);
this.copy(r);
return r;
};
BN.prototype._expand = function _expand (size) {
while (this.length < size) {
this.words[this.length++] = 0;
}
return this;
};
// Remove leading `0` from `this`
BN.prototype.strip = function strip () {
while (this.length > 1 && this.words[this.length - 1] === 0) {
this.length--;
}
return this._normSign();
};
BN.prototype._normSign = function _normSign () {
// -0 = 0
if (this.length === 1 && this.words[0] === 0) {
this.negative = 0;
}
return this;
};
BN.prototype.inspect = function inspect () {
return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';
};
/*
var zeros = [];
var groupSizes = [];
var groupBases = [];
var s = '';
var i = -1;
while (++i < BN.wordSize) {
zeros[i] = s;
s += '0';
}
groupSizes[0] = 0;
groupSizes[1] = 0;
groupBases[0] = 0;
groupBases[1] = 0;
var base = 2 - 1;
while (++base < 36 + 1) {
var groupSize = 0;
var groupBase = 1;
while (groupBase < (1 << BN.wordSize) / base) {
groupBase *= base;
groupSize += 1;
}
groupSizes[base] = groupSize;
groupBases[base] = groupBase;
}
*/
var zeros = [
'',
'0',
'00',
'000',
'0000',
'00000',
'000000',
'0000000',
'00000000',
'000000000',
'0000000000',
'00000000000',
'000000000000',
'0000000000000',
'00000000000000',
'000000000000000',
'0000000000000000',
'00000000000000000',
'000000000000000000',
'0000000000000000000',
'00000000000000000000',
'000000000000000000000',
'0000000000000000000000',
'00000000000000000000000',
'000000000000000000000000',
'0000000000000000000000000'
];
var groupSizes = [
0, 0,
25, 16, 12, 11, 10, 9, 8,
8, 7, 7, 7, 7, 6, 6,
6, 6, 6, 6, 6, 5, 5,
5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5
];
var groupBases = [
0, 0,
33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,
43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,
16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,
6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,
24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176
];
BN.prototype.toString = function toString (base, padding) {
base = base || 10;
padding = padding | 0 || 1;
var out;
if (base === 16 || base === 'hex') {
out = '';
var off = 0;
var carry = 0;
for (var i = 0; i < this.length; i++) {
var w = this.words[i];
var word = (((w << off) | carry) & 0xffffff).toString(16);
carry = (w >>> (24 - off)) & 0xffffff;
if (carry !== 0 || i !== this.length - 1) {
out = zeros[6 - word.length] + word + out;
} else {
out = word + out;
}
off += 2;
if (off >= 26) {
off -= 26;
i--;
}
}
if (carry !== 0) {
out = carry.toString(16) + out;
}
while (out.length % padding !== 0) {
out = '0' + out;
}
if (this.negative !== 0) {
out = '-' + out;
}
return out;
}
if (base === (base | 0) && base >= 2 && base <= 36) {
// var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));
var groupSize = groupSizes[base];
// var groupBase = Math.pow(base, groupSize);
var groupBase = groupBases[base];
out = '';
var c = this.clone();
c.negative = 0;
while (!c.isZero()) {
var r = c.modn(groupBase).toString(base);
c = c.idivn(groupBase);
if (!c.isZero()) {
out = zeros[groupSize - r.length] + r + out;
} else {
out = r + out;
}
}
if (this.isZero()) {
out = '0' + out;
}
while (out.length % padding !== 0) {
out = '0' + out;
}
if (this.negative !== 0) {
out = '-' + out;
}
return out;
}
assert(false, 'Base should be between 2 and 36');
};
BN.prototype.toNumber = function toNumber () {
var ret = this.words[0];
if (this.length === 2) {
ret += this.words[1] * 0x4000000;
} else if (this.length === 3 && this.words[2] === 0x01) {
// NOTE: at this stage it is known that the top bit is set
ret += 0x10000000000000 + (this.words[1] * 0x4000000);
} else if (this.length > 2) {
assert(false, 'Number can only safely store up to 53 bits');
}
return (this.negative !== 0) ? -ret : ret;
};
BN.prototype.toJSON = function toJSON () {
return this.toString(16);
};
BN.prototype.toBuffer = function toBuffer (endian, length) {
assert(typeof Buffer !== 'undefined');
return this.toArrayLike(Buffer, endian, length);
};
BN.prototype.toArray = function toArray (endian, length) {
return this.toArrayLike(Array, endian, length);
};
BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {
var byteLength = this.byteLength();
var reqLength = length || Math.max(1, byteLength);
assert(byteLength <= reqLength, 'byte array longer than desired length');
assert(reqLength > 0, 'Requested array length <= 0');
this.strip();
var littleEndian = endian === 'le';
var res = new ArrayType(reqLength);
var b, i;
var q = this.clone();
if (!littleEndian) {
// Assume big-endian
for (i = 0; i < reqLength - byteLength; i++) {
res[i] = 0;
}
for (i = 0; !q.isZero(); i++) {
b = q.andln(0xff);
q.iushrn(8);
res[reqLength - i - 1] = b;
}
} else {
for (i = 0; !q.isZero(); i++) {
b = q.andln(0xff);
q.iushrn(8);
res[i] = b;
}
for (; i < reqLength; i++) {
res[i] = 0;
}
}
return res;
};
if (Math.clz32) {
BN.prototype._countBits = function _countBits (w) {
return 32 - Math.clz32(w);
};
} else {
BN.prototype._countBits = function _countBits (w) {
var t = w;
var r = 0;
if (t >= 0x1000) {
r += 13;
t >>>= 13;
}
if (t >= 0x40) {
r += 7;
t >>>= 7;
}
if (t >= 0x8) {
r += 4;
t >>>= 4;
}
if (t >= 0x02) {
r += 2;
t >>>= 2;
}
return r + t;
};
}
BN.prototype._zeroBits = function _zeroBits (w) {
// Short-cut
if (w === 0) return 26;
var t = w;
var r = 0;
if ((t & 0x1fff) === 0) {
r += 13;
t >>>= 13;
}
if ((t & 0x7f) === 0) {
r += 7;
t >>>= 7;
}
if ((t & 0xf) === 0) {
r += 4;
t >>>= 4;
}
if ((t & 0x3) === 0) {
r += 2;
t >>>= 2;
}
if ((t & 0x1) === 0) {
r++;
}
return r;
};
// Return number of used bits in a BN
BN.prototype.bitLength = function bitLength () {
var w = this.words[this.length - 1];
var hi = this._countBits(w);
return (this.length - 1) * 26 + hi;
};
function toBitArray (num) {
var w = new Array(num.bitLength());
for (var bit = 0; bit < w.length; bit++) {
var off = (bit / 26) | 0;
var wbit = bit % 26;
w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;
}
return w;
}
// Number of trailing zero bits
BN.prototype.zeroBits = function zeroBits () {
if (this.isZero()) return 0;
var r = 0;
for (var i = 0; i < this.length; i++) {
var b = this._zeroBits(this.words[i]);
r += b;
if (b !== 26) break;
}
return r;
};
BN.prototype.byteLength = function byteLength () {
return Math.ceil(this.bitLength() / 8);
};
BN.prototype.toTwos = function toTwos (width) {
if (this.negative !== 0) {
return this.abs().inotn(width).iaddn(1);
}
return this.clone();
};
BN.prototype.fromTwos = function fromTwos (width) {
if (this.testn(width - 1)) {
return this.notn(width).iaddn(1).ineg();
}
return this.clone();
};
BN.prototype.isNeg = function isNeg () {
return this.negative !== 0;
};
// Return negative clone of `this`
BN.prototype.neg = function neg () {
return this.clone().ineg();
};
BN.prototype.ineg = function ineg () {
if (!this.isZero()) {
this.negative ^= 1;
}
return this;
};
// Or `num` with `this` in-place
BN.prototype.iuor = function iuor (num) {
while (this.length < num.length) {
this.words[this.length++] = 0;
}
for (var i = 0; i < num.length; i++) {
this.words[i] = this.words[i] | num.words[i];
}
return this.strip();
};
BN.prototype.ior = function ior (num) {
assert((this.negative | num.negative) === 0);
return this.iuor(num);
};
// Or `num` with `this`
BN.prototype.or = function or (num) {
if (this.length > num.length) return this.clone().ior(num);
return num.clone().ior(this);
};
BN.prototype.uor = function uor (num) {
if (this.length > num.length) return this.clone().iuor(num);
return num.clone().iuor(this);
};
// And `num` with `this` in-place
BN.prototype.iuand = function iuand (num) {
// b = min-length(num, this)
var b;
if (this.length > num.length) {
b = num;
} else {
b = this;
}
for (var i = 0; i < b.length; i++) {
this.words[i] = this.words[i] & num.words[i];
}
this.length = b.length;
return this.strip();
};
BN.prototype.iand = function iand (num) {
assert((this.negative | num.negative) === 0);
return this.iuand(num);
};
// And `num` with `this`
BN.prototype.and = function and (num) {
if (this.length > num.length) return this.clone().iand(num);
return num.clone().iand(this);
};
BN.prototype.uand = function uand (num) {
if (this.length > num.length) return this.clone().iuand(num);
return num.clone().iuand(this);
};
// Xor `num` with `this` in-place
BN.prototype.iuxor = function iuxor (num) {
// a.length > b.length
var a;
var b;
if (this.length > num.length) {
a = this;
b = num;
} else {
a = num;
b = this;
}
for (var i = 0; i < b.length; i++) {
this.words[i] = a.words[i] ^ b.words[i];
}
if (this !== a) {
for (; i < a.length; i++) {
this.words[i] = a.words[i];
}
}
this.length = a.length;
return this.strip();
};
BN.prototype.ixor = function ixor (num) {
assert((this.negative | num.negative) === 0);
return this.iuxor(num);
};
// Xor `num` with `this`
BN.prototype.xor = function xor (num) {
if (this.length > num.length) return this.clone().ixor(num);
return num.clone().ixor(this);
};
BN.prototype.uxor = function uxor (num) {
if (this.length > num.length) return this.clone().iuxor(num);
return num.clone().iuxor(this);
};
// Not ``this`` with ``width`` bitwidth
BN.prototype.inotn = function inotn (width) {
assert(typeof width === 'number' && width >= 0);
var bytesNeeded = Math.ceil(width / 26) | 0;
var bitsLeft = width % 26;
// Extend the buffer with leading zeroes
this._expand(bytesNeeded);
if (bitsLeft > 0) {
bytesNeeded--;
}
// Handle complete words
for (var i = 0; i < bytesNeeded; i++) {
this.words[i] = ~this.words[i] & 0x3ffffff;
}
// Handle the residue
if (bitsLeft > 0) {
this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));
}
// And remove leading zeroes
return this.strip();
};
BN.prototype.notn = function notn (width) {
return this.clone().inotn(width);
};
// Set `bit` of `this`
BN.prototype.setn = function setn (bit, val) {
assert(typeof bit === 'number' && bit >= 0);
var off = (bit / 26) | 0;
var wbit = bit % 26;
this._expand(off + 1);
if (val) {
this.words[off] = this.words[off] | (1 << wbit);
} else {
this.words[off] = this.words[off] & ~(1 << wbit);
}
return this.strip();
};
// Add `num` to `this` in-place
BN.prototype.iadd = function iadd (num) {
var r;
// negative + positive
if (this.negative !== 0 && num.negative === 0) {
this.negative = 0;
r = this.isub(num);
this.negative ^= 1;
return this._normSign();
// positive + negative
} else if (this.negative === 0 && num.negative !== 0) {
num.negative = 0;
r = this.isub(num);
num.negative = 1;
return r._normSign();
}
// a.length > b.length
var a, b;
if (this.length > num.length) {
a = this;
b = num;
} else {
a = num;
b = this;
}
var carry = 0;
for (var i = 0; i < b.length; i++) {
r = (a.words[i] | 0) + (b.words[i] | 0) + carry;
this.words[i] = r & 0x3ffffff;
carry = r >>> 26;
}
for (; carry !== 0 && i < a.length; i++) {
r = (a.words[i] | 0) + carry;
this.words[i] = r & 0x3ffffff;
carry = r >>> 26;
}
this.length = a.length;
if (carry !== 0) {
this.words[this.length] = carry;
this.length++;
// Copy the rest of the words
} else if (a !== this) {
for (; i < a.length; i++) {
this.words[i] = a.words[i];
}
}
return this;
};
// Add `num` to `this`
BN.prototype.add = function add (num) {
var res;
if (num.negative !== 0 && this.negative === 0) {
num.negative = 0;
res = this.sub(num);
num.negative ^= 1;
return res;
} else if (num.negative === 0 && this.negative !== 0) {
this.negative = 0;
res = num.sub(this);
this.negative = 1;
return res;
}
if (this.length > num.length) return this.clone().iadd(num);
return num.clone().iadd(this);
};
// Subtract `num` from `this` in-place
BN.prototype.isub = function isub (num) {
// this - (-num) = this + num
if (num.negative !== 0) {
num.negative = 0;
var r = this.iadd(num);
num.negative = 1;
return r._normSign();
// -this - num = -(this + num)
} else if (this.negative !== 0) {
this.negative = 0;
this.iadd(num);
this.negative = 1;
return this._normSign();
}
// At this point both numbers are positive
var cmp = this.cmp(num);
// Optimization - zeroify
if (cmp === 0) {
this.negative = 0;
this.length = 1;
this.words[0] = 0;
return this;
}
// a > b
var a, b;
if (cmp > 0) {
a = this;
b = num;
} else {
a = num;
b = this;
}
var carry = 0;
for (var i = 0; i < b.length; i++) {
r = (a.words[i] | 0) - (b.words[i] | 0) + carry;
carry = r >> 26;
this.words[i] = r & 0x3ffffff;
}
for (; carry !== 0 && i < a.length; i++) {
r = (a.words[i] | 0) + carry;
carry = r >> 26;
this.words[i] = r & 0x3ffffff;
}
// Copy rest of the words
if (carry === 0 && i < a.length && a !== this) {
for (; i < a.length; i++) {
this.words[i] = a.words[i];
}
}
this.length = Math.max(this.length, i);
if (a !== this) {
this.negative = 1;
}
return this.strip();
};
// Subtract `num` from `this`
BN.prototype.sub = function sub (num) {
return this.clone().isub(num);
};
function smallMulTo (self, num, out) {
out.negative = num.negative ^ self.negative;
var len = (self.length + num.length) | 0;
out.length = len;
len = (len - 1) | 0;
// Peel one iteration (compiler can't do it, because of code complexity)
var a = self.words[0] | 0;
var b = num.words[0] | 0;
var r = a * b;
var lo = r & 0x3ffffff;
var carry = (r / 0x4000000) | 0;
out.words[0] = lo;
for (var k = 1; k < len; k++) {
// Sum all words with the same `i + j = k` and accumulate `ncarry`,
// note that ncarry could be >= 0x3ffffff
var ncarry = carry >>> 26;
var rword = carry & 0x3ffffff;
var maxJ = Math.min(k, num.length - 1);
for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
var i = (k - j) | 0;
a = self.words[i] | 0;
b = num.words[j] | 0;
r = a * b + rword;
ncarry += (r / 0x4000000) | 0;
rword = r & 0x3ffffff;
}
out.words[k] = rword | 0;
carry = ncarry | 0;
}
if (carry !== 0) {
out.words[k] = carry | 0;
} else {
out.length--;
}
return out.strip();
}
// TODO(indutny): it may be reasonable to omit it for users who don't need
// to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit
// multiplication (like elliptic secp256k1).
var comb10MulTo = function comb10MulTo (self, num, out) {
var a = self.words;
var b = num.words;
var o = out.words;
var c = 0;
var lo;
var mid;
var hi;
var a0 = a[0] | 0;
var al0 = a0 & 0x1fff;
var ah0 = a0 >>> 13;
var a1 = a[1] | 0;
var al1 = a1 & 0x1fff;
var ah1 = a1 >>> 13;
var a2 = a[2] | 0;
var al2 = a2 & 0x1fff;
var ah2 = a2 >>> 13;
var a3 = a[3] | 0;
var al3 = a3 & 0x1fff;
var ah3 = a3 >>> 13;
var a4 = a[4] | 0;
var al4 = a4 & 0x1fff;
var ah4 = a4 >>> 13;
var a5 = a[5] | 0;
var al5 = a5 & 0x1fff;
var ah5 = a5 >>> 13;
var a6 = a[6] | 0;
var al6 = a6 & 0x1fff;
var ah6 = a6 >>> 13;
var a7 = a[7] | 0;
var al7 = a7 & 0x1fff;
var ah7 = a7 >>> 13;
var a8 = a[8] | 0;
var al8 = a8 & 0x1fff;
var ah8 = a8 >>> 13;
var a9 = a[9] | 0;
var al9 = a9 & 0x1fff;
var ah9 = a9 >>> 13;
var b0 = b[0] | 0;
var bl0 = b0 & 0x1fff;
var bh0 = b0 >>> 13;
var b1 = b[1] | 0;
var bl1 = b1 & 0x1fff;
var bh1 = b1 >>> 13;
var b2 = b[2] | 0;
var bl2 = b2 & 0x1fff;
var bh2 = b2 >>> 13;
var b3 = b[3] | 0;
var bl3 = b3 & 0x1fff;
var bh3 = b3 >>> 13;
var b4 = b[4] | 0;
var bl4 = b4 & 0x1fff;
var bh4 = b4 >>> 13;
var b5 = b[5] | 0;
var bl5 = b5 & 0x1fff;
var bh5 = b5 >>> 13;
var b6 = b[6] | 0;
var bl6 = b6 & 0x1fff;
var bh6 = b6 >>> 13;
var b7 = b[7] | 0;
var bl7 = b7 & 0x1fff;
var bh7 = b7 >>> 13;
var b8 = b[8] | 0;
var bl8 = b8 & 0x1fff;
var bh8 = b8 >>> 13;
var b9 = b[9] | 0;
var bl9 = b9 & 0x1fff;
var bh9 = b9 >>> 13;
out.negative = self.negative ^ num.negative;
out.length = 19;
/* k = 0 */
lo = Math.imul(al0, bl0);
mid = Math.imul(al0, bh0);
mid = (mid + Math.imul(ah0, bl0)) | 0;
hi = Math.imul(ah0, bh0);
var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;
w0 &= 0x3ffffff;
/* k = 1 */
lo = Math.imul(al1, bl0);
mid = Math.imul(al1, bh0);
mid = (mid + Math.imul(ah1, bl0)) | 0;
hi = Math.imul(ah1, bh0);
lo = (lo + Math.imul(al0, bl1)) | 0;
mid = (mid + Math.imul(al0, bh1)) | 0;
mid = (mid + Math.imul(ah0, bl1)) | 0;
hi = (hi + Math.imul(ah0, bh1)) | 0;
var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;
w1 &= 0x3ffffff;
/* k = 2 */
lo = Math.imul(al2, bl0);
mid = Math.imul(al2, bh0);
mid = (mid + Math.imul(ah2, bl0)) | 0;
hi = Math.imul(ah2, bh0);
lo = (lo + Math.imul(al1, bl1)) | 0;
mid = (mid + Math.imul(al1, bh1)) | 0;
mid = (mid + Math.imul(ah1, bl1)) | 0;
hi = (hi + Math.imul(ah1, bh1)) | 0;
lo = (lo + Math.imul(al0, bl2)) | 0;
mid = (mid + Math.imul(al0, bh2)) | 0;
mid = (mid + Math.imul(ah0, bl2)) | 0;
hi = (hi + Math.imul(ah0, bh2)) | 0;
var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;
w2 &= 0x3ffffff;
/* k = 3 */
lo = Math.imul(al3, bl0);
mid = Math.imul(al3, bh0);
mid = (mid + Math.imul(ah3, bl0)) | 0;
hi = Math.imul(ah3, bh0);
lo = (lo + Math.imul(al2, bl1)) | 0;
mid = (mid + Math.imul(al2, bh1)) | 0;
mid = (mid + Math.imul(ah2, bl1)) | 0;
hi = (hi + Math.imul(ah2, bh1)) | 0;
lo = (lo + Math.imul(al1, bl2)) | 0;
mid = (mid + Math.imul(al1, bh2)) | 0;
mid = (mid + Math.imul(ah1, bl2)) | 0;
hi = (hi + Math.imul(ah1, bh2)) | 0;
lo = (lo + Math.imul(al0, bl3)) | 0;
mid = (mid + Math.imul(al0, bh3)) | 0;
mid = (mid + Math.imul(ah0, bl3)) | 0;
hi = (hi + Math.imul(ah0, bh3)) | 0;
var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;
w3 &= 0x3ffffff;
/* k = 4 */
lo = Math.imul(al4, bl0);
mid = Math.imul(al4, bh0);
mid = (mid + Math.imul(ah4, bl0)) | 0;
hi = Math.imul(ah4, bh0);
lo = (lo + Math.imul(al3, bl1)) | 0;
mid = (mid + Math.imul(al3, bh1)) | 0;
mid = (mid + Math.imul(ah3, bl1)) | 0;
hi = (hi + Math.imul(ah3, bh1)) | 0;
lo = (lo + Math.imul(al2, bl2)) | 0;
mid = (mid + Math.imul(al2, bh2)) | 0;
mid = (mid + Math.imul(ah2, bl2)) | 0;
hi = (hi + Math.imul(ah2, bh2)) | 0;
lo = (lo + Math.imul(al1, bl3)) | 0;
mid = (mid + Math.imul(al1, bh3)) | 0;
mid = (mid + Math.imul(ah1, bl3)) | 0;
hi = (hi + Math.imul(ah1, bh3)) | 0;
lo = (lo + Math.imul(al0, bl4)) | 0;
mid = (mid + Math.imul(al0, bh4)) | 0;
mid = (mid + Math.imul(ah0, bl4)) | 0;
hi = (hi + Math.imul(ah0, bh4)) | 0;
var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;
w4 &= 0x3ffffff;
/* k = 5 */
lo = Math.imul(al5, bl0);
mid = Math.imul(al5, bh0);
mid = (mid + Math.imul(ah5, bl0)) | 0;
hi = Math.imul(ah5, bh0);
lo = (lo + Math.imul(al4, bl1)) | 0;
mid = (mid + Math.imul(al4, bh1)) | 0;
mid = (mid + Math.imul(ah4, bl1)) | 0;
hi = (hi + Math.imul(ah4, bh1)) | 0;
lo = (lo + Math.imul(al3, bl2)) | 0;
mid = (mid + Math.imul(al3, bh2)) | 0;
mid = (mid + Math.imul(ah3, bl2)) | 0;
hi = (hi + Math.imul(ah3, bh2)) | 0;
lo = (lo + Math.imul(al2, bl3)) | 0;
mid = (mid + Math.imul(al2, bh3)) | 0;
mid = (mid + Math.imul(ah2, bl3)) | 0;
hi = (hi + Math.imul(ah2, bh3)) | 0;
lo = (lo + Math.imul(al1, bl4)) | 0;
mid = (mid + Math.imul(al1, bh4)) | 0;
mid = (mid + Math.imul(ah1, bl4)) | 0;
hi = (hi + Math.imul(ah1, bh4)) | 0;
lo = (lo + Math.imul(al0, bl5)) | 0;
mid = (mid + Math.imul(al0, bh5)) | 0;
mid = (mid + Math.imul(ah0, bl5)) | 0;
hi = (hi + Math.imul(ah0, bh5)) | 0;
var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;
w5 &= 0x3ffffff;
/* k = 6 */
lo = Math.imul(al6, bl0);
mid = Math.imul(al6, bh0);
mid = (mid + Math.imul(ah6, bl0)) | 0;
hi = Math.imul(ah6, bh0);
lo = (lo + Math.imul(al5, bl1)) | 0;
mid = (mid + Math.imul(al5, bh1)) | 0;
mid = (mid + Math.imul(ah5, bl1)) | 0;
hi = (hi + Math.imul(ah5, bh1)) | 0;
lo = (lo + Math.imul(al4, bl2)) | 0;
mid = (mid + Math.imul(al4, bh2)) | 0;
mid = (mid + Math.imul(ah4, bl2)) | 0;
hi = (hi + Math.imul(ah4, bh2)) | 0;
lo = (lo + Math.imul(al3, bl3)) | 0;
mid = (mid + Math.imul(al3, bh3)) | 0;
mid = (mid + Math.imul(ah3, bl3)) | 0;
hi = (hi + Math.imul(ah3, bh3)) | 0;
lo = (lo + Math.imul(al2, bl4)) | 0;
mid = (mid + Math.imul(al2, bh4)) | 0;
mid = (mid + Math.imul(ah2, bl4)) | 0;
hi = (hi + Math.imul(ah2, bh4)) | 0;
lo = (lo + Math.imul(al1, bl5)) | 0;
mid = (mid + Math.imul(al1, bh5)) | 0;
mid = (mid + Math.imul(ah1, bl5)) | 0;
hi = (hi + Math.imul(ah1, bh5)) | 0;
lo = (lo + Math.imul(al0, bl6)) | 0;
mid = (mid + Math.imul(al0, bh6)) | 0;
mid = (mid + Math.imul(ah0, bl6)) | 0;
hi = (hi + Math.imul(ah0, bh6)) | 0;
var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;
w6 &= 0x3ffffff;
/* k = 7 */
lo = Math.imul(al7, bl0);
mid = Math.imul(al7, bh0);
mid = (mid + Math.imul(ah7, bl0)) | 0;
hi = Math.imul(ah7, bh0);
lo = (lo + Math.imul(al6, bl1)) | 0;
mid = (mid + Math.imul(al6, bh1)) | 0;
mid = (mid + Math.imul(ah6, bl1)) | 0;
hi = (hi + Math.imul(ah6, bh1)) | 0;
lo = (lo + Math.imul(al5, bl2)) | 0;
mid = (mid + Math.imul(al5, bh2)) | 0;
mid = (mid + Math.imul(ah5, bl2)) | 0;
hi = (hi + Math.imul(ah5, bh2)) | 0;
lo = (lo + Math.imul(al4, bl3)) | 0;
mid = (mid + Math.imul(al4, bh3)) | 0;
mid = (mid + Math.imul(ah4, bl3)) | 0;
hi = (hi + Math.imul(ah4, bh3)) | 0;
lo = (lo + Math.imul(al3, bl4)) | 0;
mid = (mid + Math.imul(al3, bh4)) | 0;
mid = (mid + Math.imul(ah3, bl4)) | 0;
hi = (hi + Math.imul(ah3, bh4)) | 0;
lo = (lo + Math.imul(al2, bl5)) | 0;
mid = (mid + Math.imul(al2, bh5)) | 0;
mid = (mid + Math.imul(ah2, bl5)) | 0;
hi = (hi + Math.imul(ah2, bh5)) | 0;
lo = (lo + Math.imul(al1, bl6)) | 0;
mid = (mid + Math.imul(al1, bh6)) | 0;
mid = (mid + Math.imul(ah1, bl6)) | 0;
hi = (hi + Math.imul(ah1, bh6)) | 0;
lo = (lo + Math.imul(al0, bl7)) | 0;
mid = (mid + Math.imul(al0, bh7)) | 0;
mid = (mid + Math.imul(ah0, bl7)) | 0;
hi = (hi + Math.imul(ah0, bh7)) | 0;
var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;
w7 &= 0x3ffffff;
/* k = 8 */
lo = Math.imul(al8, bl0);
mid = Math.imul(al8, bh0);
mid = (mid + Math.imul(ah8, bl0)) | 0;
hi = Math.imul(ah8, bh0);
lo = (lo + Math.imul(al7, bl1)) | 0;
mid = (mid + Math.imul(al7, bh1)) | 0;
mid = (mid + Math.imul(ah7, bl1)) | 0;
hi = (hi + Math.imul(ah7, bh1)) | 0;
lo = (lo + Math.imul(al6, bl2)) | 0;
mid = (mid + Math.imul(al6, bh2)) | 0;
mid = (mid + Math.imul(ah6, bl2)) | 0;
hi = (hi + Math.imul(ah6, bh2)) | 0;
lo = (lo + Math.imul(al5, bl3)) | 0;
mid = (mid + Math.imul(al5, bh3)) | 0;
mid = (mid + Math.imul(ah5, bl3)) | 0;
hi = (hi + Math.imul(ah5, bh3)) | 0;
lo = (lo + Math.imul(al4, bl4)) | 0;
mid = (mid + Math.imul(al4, bh4)) | 0;
mid = (mid + Math.imul(ah4, bl4)) | 0;
hi = (hi + Math.imul(ah4, bh4)) | 0;
lo = (lo + Math.imul(al3, bl5)) | 0;
mid = (mid + Math.imul(al3, bh5)) | 0;
mid = (mid + Math.imul(ah3, bl5)) | 0;
hi = (hi + Math.imul(ah3, bh5)) | 0;
lo = (lo + Math.imul(al2, bl6)) | 0;
mid = (mid + Math.imul(al2, bh6)) | 0;
mid = (mid + Math.imul(ah2, bl6)) | 0;
hi = (hi + Math.imul(ah2, bh6)) | 0;
lo = (lo + Math.imul(al1, bl7)) | 0;
mid = (mid + Math.imul(al1, bh7)) | 0;
mid = (mid + Math.imul(ah1, bl7)) | 0;
hi = (hi + Math.imul(ah1, bh7)) | 0;
lo = (lo + Math.imul(al0, bl8)) | 0;
mid = (mid + Math.imul(al0, bh8)) | 0;
mid = (mid + Math.imul(ah0, bl8)) | 0;
hi = (hi + Math.imul(ah0, bh8)) | 0;
var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;
w8 &= 0x3ffffff;
/* k = 9 */
lo = Math.imul(al9, bl0);
mid = Math.imul(al9, bh0);
mid = (mid + Math.imul(ah9, bl0)) | 0;
hi = Math.imul(ah9, bh0);
lo = (lo + Math.imul(al8, bl1)) | 0;
mid = (mid + Math.imul(al8, bh1)) | 0;
mid = (mid + Math.imul(ah8, bl1)) | 0;
hi = (hi + Math.imul(ah8, bh1)) | 0;
lo = (lo + Math.imul(al7, bl2)) | 0;
mid = (mid + Math.imul(al7, bh2)) | 0;
mid = (mid + Math.imul(ah7, bl2)) | 0;
hi = (hi + Math.imul(ah7, bh2)) | 0;
lo = (lo + Math.imul(al6, bl3)) | 0;
mid = (mid + Math.imul(al6, bh3)) | 0;
mid = (mid + Math.imul(ah6, bl3)) | 0;
hi = (hi + Math.imul(ah6, bh3)) | 0;
lo = (lo + Math.imul(al5, bl4)) | 0;
mid = (mid + Math.imul(al5, bh4)) | 0;
mid = (mid + Math.imul(ah5, bl4)) | 0;
hi = (hi + Math.imul(ah5, bh4)) | 0;
lo = (lo + Math.imul(al4, bl5)) | 0;
mid = (mid + Math.imul(al4, bh5)) | 0;
mid = (mid + Math.imul(ah4, bl5)) | 0;
hi = (hi + Math.imul(ah4, bh5)) | 0;
lo = (lo + Math.imul(al3, bl6)) | 0;
mid = (mid + Math.imul(al3, bh6)) | 0;
mid = (mid + Math.imul(ah3, bl6)) | 0;
hi = (hi + Math.imul(ah3, bh6)) | 0;
lo = (lo + Math.imul(al2, bl7)) | 0;
mid = (mid + Math.imul(al2, bh7)) | 0;
mid = (mid + Math.imul(ah2, bl7)) | 0;
hi = (hi + Math.imul(ah2, bh7)) | 0;
lo = (lo + Math.imul(al1, bl8)) | 0;
mid = (mid + Math.imul(al1, bh8)) | 0;
mid = (mid + Math.imul(ah1, bl8)) | 0;
hi = (hi + Math.imul(ah1, bh8)) | 0;
lo = (lo + Math.imul(al0, bl9)) | 0;
mid = (mid + Math.imul(al0, bh9)) | 0;
mid = (mid + Math.imul(ah0, bl9)) | 0;
hi = (hi + Math.imul(ah0, bh9)) | 0;
var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;
w9 &= 0x3ffffff;
/* k = 10 */
lo = Math.imul(al9, bl1);
mid = Math.imul(al9, bh1);
mid = (mid + Math.imul(ah9, bl1)) | 0;
hi = Math.imul(ah9, bh1);
lo = (lo + Math.imul(al8, bl2)) | 0;
mid = (mid + Math.imul(al8, bh2)) | 0;
mid = (mid + Math.imul(ah8, bl2)) | 0;
hi = (hi + Math.imul(ah8, bh2)) | 0;
lo = (lo + Math.imul(al7, bl3)) | 0;
mid = (mid + Math.imul(al7, bh3)) | 0;
mid = (mid + Math.imul(ah7, bl3)) | 0;
hi = (hi + Math.imul(ah7, bh3)) | 0;
lo = (lo + Math.imul(al6, bl4)) | 0;
mid = (mid + Math.imul(al6, bh4)) | 0;
mid = (mid + Math.imul(ah6, bl4)) | 0;
hi = (hi + Math.imul(ah6, bh4)) | 0;
lo = (lo + Math.imul(al5, bl5)) | 0;
mid = (mid + Math.imul(al5, bh5)) | 0;
mid = (mid + Math.imul(ah5, bl5)) | 0;
hi = (hi + Math.imul(ah5, bh5)) | 0;
lo = (lo + Math.imul(al4, bl6)) | 0;
mid = (mid + Math.imul(al4, bh6)) | 0;
mid = (mid + Math.imul(ah4, bl6)) | 0;
hi = (hi + Math.imul(ah4, bh6)) | 0;
lo = (lo + Math.imul(al3, bl7)) | 0;
mid = (mid + Math.imul(al3, bh7)) | 0;
mid = (mid + Math.imul(ah3, bl7)) | 0;
hi = (hi + Math.imul(ah3, bh7)) | 0;
lo = (lo + Math.imul(al2, bl8)) | 0;
mid = (mid + Math.imul(al2, bh8)) | 0;
mid = (mid + Math.imul(ah2, bl8)) | 0;
hi = (hi + Math.imul(ah2, bh8)) | 0;
lo = (lo + Math.imul(al1, bl9)) | 0;
mid = (mid + Math.imul(al1, bh9)) | 0;
mid = (mid + Math.imul(ah1, bl9)) | 0;
hi = (hi + Math.imul(ah1, bh9)) | 0;
var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;
w10 &= 0x3ffffff;
/* k = 11 */
lo = Math.imul(al9, bl2);
mid = Math.imul(al9, bh2);
mid = (mid + Math.imul(ah9, bl2)) | 0;
hi = Math.imul(ah9, bh2);
lo = (lo + Math.imul(al8, bl3)) | 0;
mid = (mid + Math.imul(al8, bh3)) | 0;
mid = (mid + Math.imul(ah8, bl3)) | 0;
hi = (hi + Math.imul(ah8, bh3)) | 0;
lo = (lo + Math.imul(al7, bl4)) | 0;
mid = (mid + Math.imul(al7, bh4)) | 0;
mid = (mid + Math.imul(ah7, bl4)) | 0;
hi = (hi + Math.imul(ah7, bh4)) | 0;
lo = (lo + Math.imul(al6, bl5)) | 0;
mid = (mid + Math.imul(al6, bh5)) | 0;
mid = (mid + Math.imul(ah6, bl5)) | 0;
hi = (hi + Math.imul(ah6, bh5)) | 0;
lo = (lo + Math.imul(al5, bl6)) | 0;
mid = (mid + Math.imul(al5, bh6)) | 0;
mid = (mid + Math.imul(ah5, bl6)) | 0;
hi = (hi + Math.imul(ah5, bh6)) | 0;
lo = (lo + Math.imul(al4, bl7)) | 0;
mid = (mid + Math.imul(al4, bh7)) | 0;
mid = (mid + Math.imul(ah4, bl7)) | 0;
hi = (hi + Math.imul(ah4, bh7)) | 0;
lo = (lo + Math.imul(al3, bl8)) | 0;
mid = (mid + Math.imul(al3, bh8)) | 0;
mid = (mid + Math.imul(ah3, bl8)) | 0;
hi = (hi + Math.imul(ah3, bh8)) | 0;
lo = (lo + Math.imul(al2, bl9)) | 0;
mid = (mid + Math.imul(al2, bh9)) | 0;
mid = (mid + Math.imul(ah2, bl9)) | 0;
hi = (hi + Math.imul(ah2, bh9)) | 0;
var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;
w11 &= 0x3ffffff;
/* k = 12 */
lo = Math.imul(al9, bl3);
mid = Math.imul(al9, bh3);
mid = (mid + Math.imul(ah9, bl3)) | 0;
hi = Math.imul(ah9, bh3);
lo = (lo + Math.imul(al8, bl4)) | 0;
mid = (mid + Math.imul(al8, bh4)) | 0;
mid = (mid + Math.imul(ah8, bl4)) | 0;
hi = (hi + Math.imul(ah8, bh4)) | 0;
lo = (lo + Math.imul(al7, bl5)) | 0;
mid = (mid + Math.imul(al7, bh5)) | 0;
mid = (mid + Math.imul(ah7, bl5)) | 0;
hi = (hi + Math.imul(ah7, bh5)) | 0;
lo = (lo + Math.imul(al6, bl6)) | 0;
mid = (mid + Math.imul(al6, bh6)) | 0;
mid = (mid + Math.imul(ah6, bl6)) | 0;
hi = (hi + Math.imul(ah6, bh6)) | 0;
lo = (lo + Math.imul(al5, bl7)) | 0;
mid = (mid + Math.imul(al5, bh7)) | 0;
mid = (mid + Math.imul(ah5, bl7)) | 0;
hi = (hi + Math.imul(ah5, bh7)) | 0;
lo = (lo + Math.imul(al4, bl8)) | 0;
mid = (mid + Math.imul(al4, bh8)) | 0;
mid = (mid + Math.imul(ah4, bl8)) | 0;
hi = (hi + Math.imul(ah4, bh8)) | 0;
lo = (lo + Math.imul(al3, bl9)) | 0;
mid = (mid + Math.imul(al3, bh9)) | 0;
mid = (mid + Math.imul(ah3, bl9)) | 0;
hi = (hi + Math.imul(ah3, bh9)) | 0;
var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;
w12 &= 0x3ffffff;
/* k = 13 */
lo = Math.imul(al9, bl4);
mid = Math.imul(al9, bh4);
mid = (mid + Math.imul(ah9, bl4)) | 0;
hi = Math.imul(ah9, bh4);
lo = (lo + Math.imul(al8, bl5)) | 0;
mid = (mid + Math.imul(al8, bh5)) | 0;
mid = (mid + Math.imul(ah8, bl5)) | 0;
hi = (hi + Math.imul(ah8, bh5)) | 0;
lo = (lo + Math.imul(al7, bl6)) | 0;
mid = (mid + Math.imul(al7, bh6)) | 0;
mid = (mid + Math.imul(ah7, bl6)) | 0;
hi = (hi + Math.imul(ah7, bh6)) | 0;
lo = (lo + Math.imul(al6, bl7)) | 0;
mid = (mid + Math.imul(al6, bh7)) | 0;
mid = (mid + Math.imul(ah6, bl7)) | 0;
hi = (hi + Math.imul(ah6, bh7)) | 0;
lo = (lo + Math.imul(al5, bl8)) | 0;
mid = (mid + Math.imul(al5, bh8)) | 0;
mid = (mid + Math.imul(ah5, bl8)) | 0;
hi = (hi + Math.imul(ah5, bh8)) | 0;
lo = (lo + Math.imul(al4, bl9)) | 0;
mid = (mid + Math.imul(al4, bh9)) | 0;
mid = (mid + Math.imul(ah4, bl9)) | 0;
hi = (hi + Math.imul(ah4, bh9)) | 0;
var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;
w13 &= 0x3ffffff;
/* k = 14 */
lo = Math.imul(al9, bl5);
mid = Math.imul(al9, bh5);
mid = (mid + Math.imul(ah9, bl5)) | 0;
hi = Math.imul(ah9, bh5);
lo = (lo + Math.imul(al8, bl6)) | 0;
mid = (mid + Math.imul(al8, bh6)) | 0;
mid = (mid + Math.imul(ah8, bl6)) | 0;
hi = (hi + Math.imul(ah8, bh6)) | 0;
lo = (lo + Math.imul(al7, bl7)) | 0;
mid = (mid + Math.imul(al7, bh7)) | 0;
mid = (mid + Math.imul(ah7, bl7)) | 0;
hi = (hi + Math.imul(ah7, bh7)) | 0;
lo = (lo + Math.imul(al6, bl8)) | 0;
mid = (mid + Math.imul(al6, bh8)) | 0;
mid = (mid + Math.imul(ah6, bl8)) | 0;
hi = (hi + Math.imul(ah6, bh8)) | 0;
lo = (lo + Math.imul(al5, bl9)) | 0;
mid = (mid + Math.imul(al5, bh9)) | 0;
mid = (mid + Math.imul(ah5, bl9)) | 0;
hi = (hi + Math.imul(ah5, bh9)) | 0;
var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;
w14 &= 0x3ffffff;
/* k = 15 */
lo = Math.imul(al9, bl6);
mid = Math.imul(al9, bh6);
mid = (mid + Math.imul(ah9, bl6)) | 0;
hi = Math.imul(ah9, bh6);
lo = (lo + Math.imul(al8, bl7)) | 0;
mid = (mid + Math.imul(al8, bh7)) | 0;
mid = (mid + Math.imul(ah8, bl7)) | 0;
hi = (hi + Math.imul(ah8, bh7)) | 0;
lo = (lo + Math.imul(al7, bl8)) | 0;
mid = (mid + Math.imul(al7, bh8)) | 0;
mid = (mid + Math.imul(ah7, bl8)) | 0;
hi = (hi + Math.imul(ah7, bh8)) | 0;
lo = (lo + Math.imul(al6, bl9)) | 0;
mid = (mid + Math.imul(al6, bh9)) | 0;
mid = (mid + Math.imul(ah6, bl9)) | 0;
hi = (hi + Math.imul(ah6, bh9)) | 0;
var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;
w15 &= 0x3ffffff;
/* k = 16 */
lo = Math.imul(al9, bl7);
mid = Math.imul(al9, bh7);
mid = (mid + Math.imul(ah9, bl7)) | 0;
hi = Math.imul(ah9, bh7);
lo = (lo + Math.imul(al8, bl8)) | 0;
mid = (mid + Math.imul(al8, bh8)) | 0;
mid = (mid + Math.imul(ah8, bl8)) | 0;
hi = (hi + Math.imul(ah8, bh8)) | 0;
lo = (lo + Math.imul(al7, bl9)) | 0;
mid = (mid + Math.imul(al7, bh9)) | 0;
mid = (mid + Math.imul(ah7, bl9)) | 0;
hi = (hi + Math.imul(ah7, bh9)) | 0;
var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;
w16 &= 0x3ffffff;
/* k = 17 */
lo = Math.imul(al9, bl8);
mid = Math.imul(al9, bh8);
mid = (mid + Math.imul(ah9, bl8)) | 0;
hi = Math.imul(ah9, bh8);
lo = (lo + Math.imul(al8, bl9)) | 0;
mid = (mid + Math.imul(al8, bh9)) | 0;
mid = (mid + Math.imul(ah8, bl9)) | 0;
hi = (hi + Math.imul(ah8, bh9)) | 0;
var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;
w17 &= 0x3ffffff;
/* k = 18 */
lo = Math.imul(al9, bl9);
mid = Math.imul(al9, bh9);
mid = (mid + Math.imul(ah9, bl9)) | 0;
hi = Math.imul(ah9, bh9);
var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;
w18 &= 0x3ffffff;
o[0] = w0;
o[1] = w1;
o[2] = w2;
o[3] = w3;
o[4] = w4;
o[5] = w5;
o[6] = w6;
o[7] = w7;
o[8] = w8;
o[9] = w9;
o[10] = w10;
o[11] = w11;
o[12] = w12;
o[13] = w13;
o[14] = w14;
o[15] = w15;
o[16] = w16;
o[17] = w17;
o[18] = w18;
if (c !== 0) {
o[19] = c;
out.length++;
}
return out;
};
// Polyfill comb
if (!Math.imul) {
comb10MulTo = smallMulTo;
}
function bigMulTo (self, num, out) {
out.negative = num.negative ^ self.negative;
out.length = self.length + num.length;
var carry = 0;
var hncarry = 0;
for (var k = 0; k < out.length - 1; k++) {
// Sum all words with the same `i + j = k` and accumulate `ncarry`,
// note that ncarry could be >= 0x3ffffff
var ncarry = hncarry;
hncarry = 0;
var rword = carry & 0x3ffffff;
var maxJ = Math.min(k, num.length - 1);
for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
var i = k - j;
var a = self.words[i] | 0;
var b = num.words[j] | 0;
var r = a * b;
var lo = r & 0x3ffffff;
ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;
lo = (lo + rword) | 0;
rword = lo & 0x3ffffff;
ncarry = (ncarry + (lo >>> 26)) | 0;
hncarry += ncarry >>> 26;
ncarry &= 0x3ffffff;
}
out.words[k] = rword;
carry = ncarry;
ncarry = hncarry;
}
if (carry !== 0) {
out.words[k] = carry;
} else {
out.length--;
}
return out.strip();
}
function jumboMulTo (self, num, out) {
var fftm = new FFTM();
return fftm.mulp(self, num, out);
}
BN.prototype.mulTo = function mulTo (num, out) {
var res;
var len = this.length + num.length;
if (this.length === 10 && num.length === 10) {
res = comb10MulTo(this, num, out);
} else if (len < 63) {
res = smallMulTo(this, num, out);
} else if (len < 1024) {
res = bigMulTo(this, num, out);
} else {
res = jumboMulTo(this, num, out);
}
return res;
};
// Cooley-Tukey algorithm for FFT
// slightly revisited to rely on looping instead of recursion
function FFTM (x, y) {
this.x = x;
this.y = y;
}
FFTM.prototype.makeRBT = function makeRBT (N) {
var t = new Array(N);
var l = BN.prototype._countBits(N) - 1;
for (var i = 0; i < N; i++) {
t[i] = this.revBin(i, l, N);
}
return t;
};
// Returns binary-reversed representation of `x`
FFTM.prototype.revBin = function revBin (x, l, N) {
if (x === 0 || x === N - 1) return x;
var rb = 0;
for (var i = 0; i < l; i++) {
rb |= (x & 1) << (l - i - 1);
x >>= 1;
}
return rb;
};
// Performs "tweedling" phase, therefore 'emulating'
// behaviour of the recursive algorithm
FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {
for (var i = 0; i < N; i++) {
rtws[i] = rws[rbt[i]];
itws[i] = iws[rbt[i]];
}
};
FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {
this.permute(rbt, rws, iws, rtws, itws, N);
for (var s = 1; s < N; s <<= 1) {
var l = s << 1;
var rtwdf = Math.cos(2 * Math.PI / l);
var itwdf = Math.sin(2 * Math.PI / l);
for (var p = 0; p < N; p += l) {
var rtwdf_ = rtwdf;
var itwdf_ = itwdf;
for (var j = 0; j < s; j++) {
var re = rtws[p + j];
var ie = itws[p + j];
var ro = rtws[p + j + s];
var io = itws[p + j + s];
var rx = rtwdf_ * ro - itwdf_ * io;
io = rtwdf_ * io + itwdf_ * ro;
ro = rx;
rtws[p + j] = re + ro;
itws[p + j] = ie + io;
rtws[p + j + s] = re - ro;
itws[p + j + s] = ie - io;
/* jshint maxdepth : false */
if (j !== l) {
rx = rtwdf * rtwdf_ - itwdf * itwdf_;
itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;
rtwdf_ = rx;
}
}
}
}
};
FFTM.prototype.guessLen13b = function guessLen13b (n, m) {
var N = Math.max(m, n) | 1;
var odd = N & 1;
var i = 0;
for (N = N / 2 | 0; N; N = N >>> 1) {
i++;
}
return 1 << i + 1 + odd;
};
FFTM.prototype.conjugate = function conjugate (rws, iws, N) {
if (N <= 1) return;
for (var i = 0; i < N / 2; i++) {
var t = rws[i];
rws[i] = rws[N - i - 1];
rws[N - i - 1] = t;
t = iws[i];
iws[i] = -iws[N - i - 1];
iws[N - i - 1] = -t;
}
};
FFTM.prototype.normalize13b = function normalize13b (ws, N) {
var carry = 0;
for (var i = 0; i < N / 2; i++) {
var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +
Math.round(ws[2 * i] / N) +
carry;
ws[i] = w & 0x3ffffff;
if (w < 0x4000000) {
carry = 0;
} else {
carry = w / 0x4000000 | 0;
}
}
return ws;
};
FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {
var carry = 0;
for (var i = 0; i < len; i++) {
carry = carry + (ws[i] | 0);
rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;
rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;
}
// Pad with zeroes
for (i = 2 * len; i < N; ++i) {
rws[i] = 0;
}
assert(carry === 0);
assert((carry & ~0x1fff) === 0);
};
FFTM.prototype.stub = function stub (N) {
var ph = new Array(N);
for (var i = 0; i < N; i++) {
ph[i] = 0;
}
return ph;
};
FFTM.prototype.mulp = function mulp (x, y, out) {
var N = 2 * this.guessLen13b(x.length, y.length);
var rbt = this.makeRBT(N);
var _ = this.stub(N);
var rws = new Array(N);
var rwst = new Array(N);
var iwst = new Array(N);
var nrws = new Array(N);
var nrwst = new Array(N);
var niwst = new Array(N);
var rmws = out.words;
rmws.length = N;
this.convert13b(x.words, x.length, rws, N);
this.convert13b(y.words, y.length, nrws, N);
this.transform(rws, _, rwst, iwst, N, rbt);
this.transform(nrws, _, nrwst, niwst, N, rbt);
for (var i = 0; i < N; i++) {
var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];
iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];
rwst[i] = rx;
}
this.conjugate(rwst, iwst, N);
this.transform(rwst, iwst, rmws, _, N, rbt);
this.conjugate(rmws, _, N);
this.normalize13b(rmws, N);
out.negative = x.negative ^ y.negative;
out.length = x.length + y.length;
return out.strip();
};
// Multiply `this` by `num`
BN.prototype.mul = function mul (num) {
var out = new BN(null);
out.words = new Array(this.length + num.length);
return this.mulTo(num, out);
};
// Multiply employing FFT
BN.prototype.mulf = function mulf (num) {
var out = new BN(null);
out.words = new Array(this.length + num.length);
return jumboMulTo(this, num, out);
};
// In-place Multiplication
BN.prototype.imul = function imul (num) {
return this.clone().mulTo(num, this);
};
BN.prototype.imuln = function imuln (num) {
assert(typeof num === 'number');
assert(num < 0x4000000);
// Carry
var carry = 0;
for (var i = 0; i < this.length; i++) {
var w = (this.words[i] | 0) * num;
var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);
carry >>= 26;
carry += (w / 0x4000000) | 0;
// NOTE: lo is 27bit maximum
carry += lo >>> 26;
this.words[i] = lo & 0x3ffffff;
}
if (carry !== 0) {
this.words[i] = carry;
this.length++;
}
return this;
};
BN.prototype.muln = function muln (num) {
return this.clone().imuln(num);
};
// `this` * `this`
BN.prototype.sqr = function sqr () {
return this.mul(this);
};
// `this` * `this` in-place
BN.prototype.isqr = function isqr () {
return this.imul(this.clone());
};
// Math.pow(`this`, `num`)
BN.prototype.pow = function pow (num) {
var w = toBitArray(num);
if (w.length === 0) return new BN(1);
// Skip leading zeroes
var res = this;
for (var i = 0; i < w.length; i++, res = res.sqr()) {
if (w[i] !== 0) break;
}
if (++i < w.length) {
for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {
if (w[i] === 0) continue;
res = res.mul(q);
}
}
return res;
};
// Shift-left in-place
BN.prototype.iushln = function iushln (bits) {
assert(typeof bits === 'number' && bits >= 0);
var r = bits % 26;
var s = (bits - r) / 26;
var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);
var i;
if (r !== 0) {
var carry = 0;
for (i = 0; i < this.length; i++) {
var newCarry = this.words[i] & carryMask;
var c = ((this.words[i] | 0) - newCarry) << r;
this.words[i] = c | carry;
carry = newCarry >>> (26 - r);
}
if (carry) {
this.words[i] = carry;
this.length++;
}
}
if (s !== 0) {
for (i = this.length - 1; i >= 0; i--) {
this.words[i + s] = this.words[i];
}
for (i = 0; i < s; i++) {
this.words[i] = 0;
}
this.length += s;
}
return this.strip();
};
BN.prototype.ishln = function ishln (bits) {
// TODO(indutny): implement me
assert(this.negative === 0);
return this.iushln(bits);
};
// Shift-right in-place
// NOTE: `hint` is a lowest bit before trailing zeroes
// NOTE: if `extended` is present - it will be filled with destroyed bits
BN.prototype.iushrn = function iushrn (bits, hint, extended) {
assert(typeof bits === 'number' && bits >= 0);
var h;
if (hint) {
h = (hint - (hint % 26)) / 26;
} else {
h = 0;
}
var r = bits % 26;
var s = Math.min((bits - r) / 26, this.length);
var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
var maskedWords = extended;
h -= s;
h = Math.max(0, h);
// Extended mode, copy masked part
if (maskedWords) {
for (var i = 0; i < s; i++) {
maskedWords.words[i] = this.words[i];
}
maskedWords.length = s;
}
if (s === 0) {
// No-op, we should not move anything at all
} else if (this.length > s) {
this.length -= s;
for (i = 0; i < this.length; i++) {
this.words[i] = this.words[i + s];
}
} else {
this.words[0] = 0;
this.length = 1;
}
var carry = 0;
for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {
var word = this.words[i] | 0;
this.words[i] = (carry << (26 - r)) | (word >>> r);
carry = word & mask;
}
// Push carried bits as a mask
if (maskedWords && carry !== 0) {
maskedWords.words[maskedWords.length++] = carry;
}
if (this.length === 0) {
this.words[0] = 0;
this.length = 1;
}
return this.strip();
};
BN.prototype.ishrn = function ishrn (bits, hint, extended) {
// TODO(indutny): implement me
assert(this.negative === 0);
return this.iushrn(bits, hint, extended);
};
// Shift-left
BN.prototype.shln = function shln (bits) {
return this.clone().ishln(bits);
};
BN.prototype.ushln = function ushln (bits) {
return this.clone().iushln(bits);
};
// Shift-right
BN.prototype.shrn = function shrn (bits) {
return this.clone().ishrn(bits);
};
BN.prototype.ushrn = function ushrn (bits) {
return this.clone().iushrn(bits);
};
// Test if n bit is set
BN.prototype.testn = function testn (bit) {
assert(typeof bit === 'number' && bit >= 0);
var r = bit % 26;
var s = (bit - r) / 26;
var q = 1 << r;
// Fast case: bit is much higher than all existing words
if (this.length <= s) return false;
// Check bit and return
var w = this.words[s];
return !!(w & q);
};
// Return only lowers bits of number (in-place)
BN.prototype.imaskn = function imaskn (bits) {
assert(typeof bits === 'number' && bits >= 0);
var r = bits % 26;
var s = (bits - r) / 26;
assert(this.negative === 0, 'imaskn works only with positive numbers');
if (this.length <= s) {
return this;
}
if (r !== 0) {
s++;
}
this.length = Math.min(s, this.length);
if (r !== 0) {
var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
this.words[this.length - 1] &= mask;
}
return this.strip();
};
// Return only lowers bits of number
BN.prototype.maskn = function maskn (bits) {
return this.clone().imaskn(bits);
};
// Add plain number `num` to `this`
BN.prototype.iaddn = function iaddn (num) {
assert(typeof num === 'number');
assert(num < 0x4000000);
if (num < 0) return this.isubn(-num);
// Possible sign change
if (this.negative !== 0) {
if (this.length === 1 && (this.words[0] | 0) < num) {
this.words[0] = num - (this.words[0] | 0);
this.negative = 0;
return this;
}
this.negative = 0;
this.isubn(num);
this.negative = 1;
return this;
}
// Add without checks
return this._iaddn(num);
};
BN.prototype._iaddn = function _iaddn (num) {
this.words[0] += num;
// Carry
for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {
this.words[i] -= 0x4000000;
if (i === this.length - 1) {
this.words[i + 1] = 1;
} else {
this.words[i + 1]++;
}
}
this.length = Math.max(this.length, i + 1);
return this;
};
// Subtract plain number `num` from `this`
BN.prototype.isubn = function isubn (num) {
assert(typeof num === 'number');
assert(num < 0x4000000);
if (num < 0) return this.iaddn(-num);
if (this.negative !== 0) {
this.negative = 0;
this.iaddn(num);
this.negative = 1;
return this;
}
this.words[0] -= num;
if (this.length === 1 && this.words[0] < 0) {
this.words[0] = -this.words[0];
this.negative = 1;
} else {
// Carry
for (var i = 0; i < this.length && this.words[i] < 0; i++) {
this.words[i] += 0x4000000;
this.words[i + 1] -= 1;
}
}
return this.strip();
};
BN.prototype.addn = function addn (num) {
return this.clone().iaddn(num);
};
BN.prototype.subn = function subn (num) {
return this.clone().isubn(num);
};
BN.prototype.iabs = function iabs () {
this.negative = 0;
return this;
};
BN.prototype.abs = function abs () {
return this.clone().iabs();
};
BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {
var len = num.length + shift;
var i;
this._expand(len);
var w;
var carry = 0;
for (i = 0; i < num.length; i++) {
w = (this.words[i + shift] | 0) + carry;
var right = (num.words[i] | 0) * mul;
w -= right & 0x3ffffff;
carry = (w >> 26) - ((right / 0x4000000) | 0);
this.words[i + shift] = w & 0x3ffffff;
}
for (; i < this.length - shift; i++) {
w = (this.words[i + shift] | 0) + carry;
carry = w >> 26;
this.words[i + shift] = w & 0x3ffffff;
}
if (carry === 0) return this.strip();
// Subtraction overflow
assert(carry === -1);
carry = 0;
for (i = 0; i < this.length; i++) {
w = -(this.words[i] | 0) + carry;
carry = w >> 26;
this.words[i] = w & 0x3ffffff;
}
this.negative = 1;
return this.strip();
};
BN.prototype._wordDiv = function _wordDiv (num, mode) {
var shift = this.length - num.length;
var a = this.clone();
var b = num;
// Normalize
var bhi = b.words[b.length - 1] | 0;
var bhiBits = this._countBits(bhi);
shift = 26 - bhiBits;
if (shift !== 0) {
b = b.ushln(shift);
a.iushln(shift);
bhi = b.words[b.length - 1] | 0;
}
// Initialize quotient
var m = a.length - b.length;
var q;
if (mode !== 'mod') {
q = new BN(null);
q.length = m + 1;
q.words = new Array(q.length);
for (var i = 0; i < q.length; i++) {
q.words[i] = 0;
}
}
var diff = a.clone()._ishlnsubmul(b, 1, m);
if (diff.negative === 0) {
a = diff;
if (q) {
q.words[m] = 1;
}
}
for (var j = m - 1; j >= 0; j--) {
var qj = (a.words[b.length + j] | 0) * 0x4000000 +
(a.words[b.length + j - 1] | 0);
// NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max
// (0x7ffffff)
qj = Math.min((qj / bhi) | 0, 0x3ffffff);
a._ishlnsubmul(b, qj, j);
while (a.negative !== 0) {
qj--;
a.negative = 0;
a._ishlnsubmul(b, 1, j);
if (!a.isZero()) {
a.negative ^= 1;
}
}
if (q) {
q.words[j] = qj;
}
}
if (q) {
q.strip();
}
a.strip();
// Denormalize
if (mode !== 'div' && shift !== 0) {
a.iushrn(shift);
}
return {
div: q || null,
mod: a
};
};
// NOTE: 1) `mode` can be set to `mod` to request mod only,
// to `div` to request div only, or be absent to
// request both div & mod
// 2) `positive` is true if unsigned mod is requested
BN.prototype.divmod = function divmod (num, mode, positive) {
assert(!num.isZero());
if (this.isZero()) {
return {
div: new BN(0),
mod: new BN(0)
};
}
var div, mod, res;
if (this.negative !== 0 && num.negative === 0) {
res = this.neg().divmod(num, mode);
if (mode !== 'mod') {
div = res.div.neg();
}
if (mode !== 'div') {
mod = res.mod.neg();
if (positive && mod.negative !== 0) {
mod.iadd(num);
}
}
return {
div: div,
mod: mod
};
}
if (this.negative === 0 && num.negative !== 0) {
res = this.divmod(num.neg(), mode);
if (mode !== 'mod') {
div = res.div.neg();
}
return {
div: div,
mod: res.mod
};
}
if ((this.negative & num.negative) !== 0) {
res = this.neg().divmod(num.neg(), mode);
if (mode !== 'div') {
mod = res.mod.neg();
if (positive && mod.negative !== 0) {
mod.isub(num);
}
}
return {
div: res.div,
mod: mod
};
}
// Both numbers are positive at this point
// Strip both numbers to approximate shift value
if (num.length > this.length || this.cmp(num) < 0) {
return {
div: new BN(0),
mod: this
};
}
// Very short reduction
if (num.length === 1) {
if (mode === 'div') {
return {
div: this.divn(num.words[0]),
mod: null
};
}
if (mode === 'mod') {
return {
div: null,
mod: new BN(this.modn(num.words[0]))
};
}
return {
div: this.divn(num.words[0]),
mod: new BN(this.modn(num.words[0]))
};
}
return this._wordDiv(num, mode);
};
// Find `this` / `num`
BN.prototype.div = function div (num) {
return this.divmod(num, 'div', false).div;
};
// Find `this` % `num`
BN.prototype.mod = function mod (num) {
return this.divmod(num, 'mod', false).mod;
};
BN.prototype.umod = function umod (num) {
return this.divmod(num, 'mod', true).mod;
};
// Find Round(`this` / `num`)
BN.prototype.divRound = function divRound (num) {
var dm = this.divmod(num);
// Fast case - exact division
if (dm.mod.isZero()) return dm.div;
var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;
var half = num.ushrn(1);
var r2 = num.andln(1);
var cmp = mod.cmp(half);
// Round down
if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;
// Round up
return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);
};
BN.prototype.modn = function modn (num) {
assert(num <= 0x3ffffff);
var p = (1 << 26) % num;
var acc = 0;
for (var i = this.length - 1; i >= 0; i--) {
acc = (p * acc + (this.words[i] | 0)) % num;
}
return acc;
};
// In-place division by number
BN.prototype.idivn = function idivn (num) {
assert(num <= 0x3ffffff);
var carry = 0;
for (var i = this.length - 1; i >= 0; i--) {
var w = (this.words[i] | 0) + carry * 0x4000000;
this.words[i] = (w / num) | 0;
carry = w % num;
}
return this.strip();
};
BN.prototype.divn = function divn (num) {
return this.clone().idivn(num);
};
BN.prototype.egcd = function egcd (p) {
assert(p.negative === 0);
assert(!p.isZero());
var x = this;
var y = p.clone();
if (x.negative !== 0) {
x = x.umod(p);
} else {
x = x.clone();
}
// A * x + B * y = x
var A = new BN(1);
var B = new BN(0);
// C * x + D * y = y
var C = new BN(0);
var D = new BN(1);
var g = 0;
while (x.isEven() && y.isEven()) {
x.iushrn(1);
y.iushrn(1);
++g;
}
var yp = y.clone();
var xp = x.clone();
while (!x.isZero()) {
for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
if (i > 0) {
x.iushrn(i);
while (i-- > 0) {
if (A.isOdd() || B.isOdd()) {
A.iadd(yp);
B.isub(xp);
}
A.iushrn(1);
B.iushrn(1);
}
}
for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
if (j > 0) {
y.iushrn(j);
while (j-- > 0) {
if (C.isOdd() || D.isOdd()) {
C.iadd(yp);
D.isub(xp);
}
C.iushrn(1);
D.iushrn(1);
}
}
if (x.cmp(y) >= 0) {
x.isub(y);
A.isub(C);
B.isub(D);
} else {
y.isub(x);
C.isub(A);
D.isub(B);
}
}
return {
a: C,
b: D,
gcd: y.iushln(g)
};
};
// This is reduced incarnation of the binary EEA
// above, designated to invert members of the
// _prime_ fields F(p) at a maximal speed
BN.prototype._invmp = function _invmp (p) {
assert(p.negative === 0);
assert(!p.isZero());
var a = this;
var b = p.clone();
if (a.negative !== 0) {
a = a.umod(p);
} else {
a = a.clone();
}
var x1 = new BN(1);
var x2 = new BN(0);
var delta = b.clone();
while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {
for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
if (i > 0) {
a.iushrn(i);
while (i-- > 0) {
if (x1.isOdd()) {
x1.iadd(delta);
}
x1.iushrn(1);
}
}
for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
if (j > 0) {
b.iushrn(j);
while (j-- > 0) {
if (x2.isOdd()) {
x2.iadd(delta);
}
x2.iushrn(1);
}
}
if (a.cmp(b) >= 0) {
a.isub(b);
x1.isub(x2);
} else {
b.isub(a);
x2.isub(x1);
}
}
var res;
if (a.cmpn(1) === 0) {
res = x1;
} else {
res = x2;
}
if (res.cmpn(0) < 0) {
res.iadd(p);
}
return res;
};
BN.prototype.gcd = function gcd (num) {
if (this.isZero()) return num.abs();
if (num.isZero()) return this.abs();
var a = this.clone();
var b = num.clone();
a.negative = 0;
b.negative = 0;
// Remove common factor of two
for (var shift = 0; a.isEven() && b.isEven(); shift++) {
a.iushrn(1);
b.iushrn(1);
}
do {
while (a.isEven()) {
a.iushrn(1);
}
while (b.isEven()) {
b.iushrn(1);
}
var r = a.cmp(b);
if (r < 0) {
// Swap `a` and `b` to make `a` always bigger than `b`
var t = a;
a = b;
b = t;
} else if (r === 0 || b.cmpn(1) === 0) {
break;
}
a.isub(b);
} while (true);
return b.iushln(shift);
};
// Invert number in the field F(num)
BN.prototype.invm = function invm (num) {
return this.egcd(num).a.umod(num);
};
BN.prototype.isEven = function isEven () {
return (this.words[0] & 1) === 0;
};
BN.prototype.isOdd = function isOdd () {
return (this.words[0] & 1) === 1;
};
// And first word and num
BN.prototype.andln = function andln (num) {
return this.words[0] & num;
};
// Increment at the bit position in-line
BN.prototype.bincn = function bincn (bit) {
assert(typeof bit === 'number');
var r = bit % 26;
var s = (bit - r) / 26;
var q = 1 << r;
// Fast case: bit is much higher than all existing words
if (this.length <= s) {
this._expand(s + 1);
this.words[s] |= q;
return this;
}
// Add bit and propagate, if needed
var carry = q;
for (var i = s; carry !== 0 && i < this.length; i++) {
var w = this.words[i] | 0;
w += carry;
carry = w >>> 26;
w &= 0x3ffffff;
this.words[i] = w;
}
if (carry !== 0) {
this.words[i] = carry;
this.length++;
}
return this;
};
BN.prototype.isZero = function isZero () {
return this.length === 1 && this.words[0] === 0;
};
BN.prototype.cmpn = function cmpn (num) {
var negative = num < 0;
if (this.negative !== 0 && !negative) return -1;
if (this.negative === 0 && negative) return 1;
this.strip();
var res;
if (this.length > 1) {
res = 1;
} else {
if (negative) {
num = -num;
}
assert(num <= 0x3ffffff, 'Number is too big');
var w = this.words[0] | 0;
res = w === num ? 0 : w < num ? -1 : 1;
}
if (this.negative !== 0) return -res | 0;
return res;
};
// Compare two numbers and return:
// 1 - if `this` > `num`
// 0 - if `this` == `num`
// -1 - if `this` < `num`
BN.prototype.cmp = function cmp (num) {
if (this.negative !== 0 && num.negative === 0) return -1;
if (this.negative === 0 && num.negative !== 0) return 1;
var res = this.ucmp(num);
if (this.negative !== 0) return -res | 0;
return res;
};
// Unsigned comparison
BN.prototype.ucmp = function ucmp (num) {
// At this point both numbers have the same sign
if (this.length > num.length) return 1;
if (this.length < num.length) return -1;
var res = 0;
for (var i = this.length - 1; i >= 0; i--) {
var a = this.words[i] | 0;
var b = num.words[i] | 0;
if (a === b) continue;
if (a < b) {
res = -1;
} else if (a > b) {
res = 1;
}
break;
}
return res;
};
BN.prototype.gtn = function gtn (num) {
return this.cmpn(num) === 1;
};
BN.prototype.gt = function gt (num) {
return this.cmp(num) === 1;
};
BN.prototype.gten = function gten (num) {
return this.cmpn(num) >= 0;
};
BN.prototype.gte = function gte (num) {
return this.cmp(num) >= 0;
};
BN.prototype.ltn = function ltn (num) {
return this.cmpn(num) === -1;
};
BN.prototype.lt = function lt (num) {
return this.cmp(num) === -1;
};
BN.prototype.lten = function lten (num) {
return this.cmpn(num) <= 0;
};
BN.prototype.lte = function lte (num) {
return this.cmp(num) <= 0;
};
BN.prototype.eqn = function eqn (num) {
return this.cmpn(num) === 0;
};
BN.prototype.eq = function eq (num) {
return this.cmp(num) === 0;
};
//
// A reduce context, could be using montgomery or something better, depending
// on the `m` itself.
//
BN.red = function red (num) {
return new Red(num);
};
BN.prototype.toRed = function toRed (ctx) {
assert(!this.red, 'Already a number in reduction context');
assert(this.negative === 0, 'red works only with positives');
return ctx.convertTo(this)._forceRed(ctx);
};
BN.prototype.fromRed = function fromRed () {
assert(this.red, 'fromRed works only with numbers in reduction context');
return this.red.convertFrom(this);
};
BN.prototype._forceRed = function _forceRed (ctx) {
this.red = ctx;
return this;
};
BN.prototype.forceRed = function forceRed (ctx) {
assert(!this.red, 'Already a number in reduction context');
return this._forceRed(ctx);
};
BN.prototype.redAdd = function redAdd (num) {
assert(this.red, 'redAdd works only with red numbers');
return this.red.add(this, num);
};
BN.prototype.redIAdd = function redIAdd (num) {
assert(this.red, 'redIAdd works only with red numbers');
return this.red.iadd(this, num);
};
BN.prototype.redSub = function redSub (num) {
assert(this.red, 'redSub works only with red numbers');
return this.red.sub(this, num);
};
BN.prototype.redISub = function redISub (num) {
assert(this.red, 'redISub works only with red numbers');
return this.red.isub(this, num);
};
BN.prototype.redShl = function redShl (num) {
assert(this.red, 'redShl works only with red numbers');
return this.red.shl(this, num);
};
BN.prototype.redMul = function redMul (num) {
assert(this.red, 'redMul works only with red numbers');
this.red._verify2(this, num);
return this.red.mul(this, num);
};
BN.prototype.redIMul = function redIMul (num) {
assert(this.red, 'redMul works only with red numbers');
this.red._verify2(this, num);
return this.red.imul(this, num);
};
BN.prototype.redSqr = function redSqr () {
assert(this.red, 'redSqr works only with red numbers');
this.red._verify1(this);
return this.red.sqr(this);
};
BN.prototype.redISqr = function redISqr () {
assert(this.red, 'redISqr works only with red numbers');
this.red._verify1(this);
return this.red.isqr(this);
};
// Square root over p
BN.prototype.redSqrt = function redSqrt () {
assert(this.red, 'redSqrt works only with red numbers');
this.red._verify1(this);
return this.red.sqrt(this);
};
BN.prototype.redInvm = function redInvm () {
assert(this.red, 'redInvm works only with red numbers');
this.red._verify1(this);
return this.red.invm(this);
};
// Return negative clone of `this` % `red modulo`
BN.prototype.redNeg = function redNeg () {
assert(this.red, 'redNeg works only with red numbers');
this.red._verify1(this);
return this.red.neg(this);
};
BN.prototype.redPow = function redPow (num) {
assert(this.red && !num.red, 'redPow(normalNum)');
this.red._verify1(this);
return this.red.pow(this, num);
};
// Prime numbers with efficient reduction
var primes = {
k256: null,
p224: null,
p192: null,
p25519: null
};
// Pseudo-Mersenne prime
function MPrime (name, p) {
// P = 2 ^ N - K
this.name = name;
this.p = new BN(p, 16);
this.n = this.p.bitLength();
this.k = new BN(1).iushln(this.n).isub(this.p);
this.tmp = this._tmp();
}
MPrime.prototype._tmp = function _tmp () {
var tmp = new BN(null);
tmp.words = new Array(Math.ceil(this.n / 13));
return tmp;
};
MPrime.prototype.ireduce = function ireduce (num) {
// Assumes that `num` is less than `P^2`
// num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)
var r = num;
var rlen;
do {
this.split(r, this.tmp);
r = this.imulK(r);
r = r.iadd(this.tmp);
rlen = r.bitLength();
} while (rlen > this.n);
var cmp = rlen < this.n ? -1 : r.ucmp(this.p);
if (cmp === 0) {
r.words[0] = 0;
r.length = 1;
} else if (cmp > 0) {
r.isub(this.p);
} else {
if (r.strip !== undefined) {
// r is BN v4 instance
r.strip();
} else {
// r is BN v5 instance
r._strip();
}
}
return r;
};
MPrime.prototype.split = function split (input, out) {
input.iushrn(this.n, 0, out);
};
MPrime.prototype.imulK = function imulK (num) {
return num.imul(this.k);
};
function K256 () {
MPrime.call(
this,
'k256',
'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');
}
inherits(K256, MPrime);
K256.prototype.split = function split (input, output) {
// 256 = 9 * 26 + 22
var mask = 0x3fffff;
var outLen = Math.min(input.length, 9);
for (var i = 0; i < outLen; i++) {
output.words[i] = input.words[i];
}
output.length = outLen;
if (input.length <= 9) {
input.words[0] = 0;
input.length = 1;
return;
}
// Shift by 9 limbs
var prev = input.words[9];
output.words[output.length++] = prev & mask;
for (i = 10; i < input.length; i++) {
var next = input.words[i] | 0;
input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);
prev = next;
}
prev >>>= 22;
input.words[i - 10] = prev;
if (prev === 0 && input.length > 10) {
input.length -= 10;
} else {
input.length -= 9;
}
};
K256.prototype.imulK = function imulK (num) {
// K = 0x1000003d1 = [ 0x40, 0x3d1 ]
num.words[num.length] = 0;
num.words[num.length + 1] = 0;
num.length += 2;
// bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390
var lo = 0;
for (var i = 0; i < num.length; i++) {
var w = num.words[i] | 0;
lo += w * 0x3d1;
num.words[i] = lo & 0x3ffffff;
lo = w * 0x40 + ((lo / 0x4000000) | 0);
}
// Fast length reduction
if (num.words[num.length - 1] === 0) {
num.length--;
if (num.words[num.length - 1] === 0) {
num.length--;
}
}
return num;
};
function P224 () {
MPrime.call(
this,
'p224',
'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');
}
inherits(P224, MPrime);
function P192 () {
MPrime.call(
this,
'p192',
'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');
}
inherits(P192, MPrime);
function P25519 () {
// 2 ^ 255 - 19
MPrime.call(
this,
'25519',
'7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');
}
inherits(P25519, MPrime);
P25519.prototype.imulK = function imulK (num) {
// K = 0x13
var carry = 0;
for (var i = 0; i < num.length; i++) {
var hi = (num.words[i] | 0) * 0x13 + carry;
var lo = hi & 0x3ffffff;
hi >>>= 26;
num.words[i] = lo;
carry = hi;
}
if (carry !== 0) {
num.words[num.length++] = carry;
}
return num;
};
// Exported mostly for testing purposes, use plain name instead
BN._prime = function prime (name) {
// Cached version of prime
if (primes[name]) return primes[name];
var prime;
if (name === 'k256') {
prime = new K256();
} else if (name === 'p224') {
prime = new P224();
} else if (name === 'p192') {
prime = new P192();
} else if (name === 'p25519') {
prime = new P25519();
} else {
throw new Error('Unknown prime ' + name);
}
primes[name] = prime;
return prime;
};
//
// Base reduction engine
//
function Red (m) {
if (typeof m === 'string') {
var prime = BN._prime(m);
this.m = prime.p;
this.prime = prime;
} else {
assert(m.gtn(1), 'modulus must be greater than 1');
this.m = m;
this.prime = null;
}
}
Red.prototype._verify1 = function _verify1 (a) {
assert(a.negative === 0, 'red works only with positives');
assert(a.red, 'red works only with red numbers');
};
Red.prototype._verify2 = function _verify2 (a, b) {
assert((a.negative | b.negative) === 0, 'red works only with positives');
assert(a.red && a.red === b.red,
'red works only with red numbers');
};
Red.prototype.imod = function imod (a) {
if (this.prime) return this.prime.ireduce(a)._forceRed(this);
return a.umod(this.m)._forceRed(this);
};
Red.prototype.neg = function neg (a) {
if (a.isZero()) {
return a.clone();
}
return this.m.sub(a)._forceRed(this);
};
Red.prototype.add = function add (a, b) {
this._verify2(a, b);
var res = a.add(b);
if (res.cmp(this.m) >= 0) {
res.isub(this.m);
}
return res._forceRed(this);
};
Red.prototype.iadd = function iadd (a, b) {
this._verify2(a, b);
var res = a.iadd(b);
if (res.cmp(this.m) >= 0) {
res.isub(this.m);
}
return res;
};
Red.prototype.sub = function sub (a, b) {
this._verify2(a, b);
var res = a.sub(b);
if (res.cmpn(0) < 0) {
res.iadd(this.m);
}
return res._forceRed(this);
};
Red.prototype.isub = function isub (a, b) {
this._verify2(a, b);
var res = a.isub(b);
if (res.cmpn(0) < 0) {
res.iadd(this.m);
}
return res;
};
Red.prototype.shl = function shl (a, num) {
this._verify1(a);
return this.imod(a.ushln(num));
};
Red.prototype.imul = function imul (a, b) {
this._verify2(a, b);
return this.imod(a.imul(b));
};
Red.prototype.mul = function mul (a, b) {
this._verify2(a, b);
return this.imod(a.mul(b));
};
Red.prototype.isqr = function isqr (a) {
return this.imul(a, a.clone());
};
Red.prototype.sqr = function sqr (a) {
return this.mul(a, a);
};
Red.prototype.sqrt = function sqrt (a) {
if (a.isZero()) return a.clone();
var mod3 = this.m.andln(3);
assert(mod3 % 2 === 1);
// Fast case
if (mod3 === 3) {
var pow = this.m.add(new BN(1)).iushrn(2);
return this.pow(a, pow);
}
// Tonelli-Shanks algorithm (Totally unoptimized and slow)
//
// Find Q and S, that Q * 2 ^ S = (P - 1)
var q = this.m.subn(1);
var s = 0;
while (!q.isZero() && q.andln(1) === 0) {
s++;
q.iushrn(1);
}
assert(!q.isZero());
var one = new BN(1).toRed(this);
var nOne = one.redNeg();
// Find quadratic non-residue
// NOTE: Max is such because of generalized Riemann hypothesis.
var lpow = this.m.subn(1).iushrn(1);
var z = this.m.bitLength();
z = new BN(2 * z * z).toRed(this);
while (this.pow(z, lpow).cmp(nOne) !== 0) {
z.redIAdd(nOne);
}
var c = this.pow(z, q);
var r = this.pow(a, q.addn(1).iushrn(1));
var t = this.pow(a, q);
var m = s;
while (t.cmp(one) !== 0) {
var tmp = t;
for (var i = 0; tmp.cmp(one) !== 0; i++) {
tmp = tmp.redSqr();
}
assert(i < m);
var b = this.pow(c, new BN(1).iushln(m - i - 1));
r = r.redMul(b);
c = b.redSqr();
t = t.redMul(c);
m = i;
}
return r;
};
Red.prototype.invm = function invm (a) {
var inv = a._invmp(this.m);
if (inv.negative !== 0) {
inv.negative = 0;
return this.imod(inv).redNeg();
} else {
return this.imod(inv);
}
};
Red.prototype.pow = function pow (a, num) {
if (num.isZero()) return new BN(1).toRed(this);
if (num.cmpn(1) === 0) return a.clone();
var windowSize = 4;
var wnd = new Array(1 << windowSize);
wnd[0] = new BN(1).toRed(this);
wnd[1] = a;
for (var i = 2; i < wnd.length; i++) {
wnd[i] = this.mul(wnd[i - 1], a);
}
var res = wnd[0];
var current = 0;
var currentLen = 0;
var start = num.bitLength() % 26;
if (start === 0) {
start = 26;
}
for (i = num.length - 1; i >= 0; i--) {
var word = num.words[i];
for (var j = start - 1; j >= 0; j--) {
var bit = (word >> j) & 1;
if (res !== wnd[0]) {
res = this.sqr(res);
}
if (bit === 0 && current === 0) {
currentLen = 0;
continue;
}
current <<= 1;
current |= bit;
currentLen++;
if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;
res = this.mul(res, wnd[current]);
currentLen = 0;
current = 0;
}
start = 26;
}
return res;
};
Red.prototype.convertTo = function convertTo (num) {
var r = num.umod(this.m);
return r === num ? r.clone() : r;
};
Red.prototype.convertFrom = function convertFrom (num) {
var res = num.clone();
res.red = null;
return res;
};
//
// Montgomery method engine
//
BN.mont = function mont (num) {
return new Mont(num);
};
function Mont (m) {
Red.call(this, m);
this.shift = this.m.bitLength();
if (this.shift % 26 !== 0) {
this.shift += 26 - (this.shift % 26);
}
this.r = new BN(1).iushln(this.shift);
this.r2 = this.imod(this.r.sqr());
this.rinv = this.r._invmp(this.m);
this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);
this.minv = this.minv.umod(this.r);
this.minv = this.r.sub(this.minv);
}
inherits(Mont, Red);
Mont.prototype.convertTo = function convertTo (num) {
return this.imod(num.ushln(this.shift));
};
Mont.prototype.convertFrom = function convertFrom (num) {
var r = this.imod(num.mul(this.rinv));
r.red = null;
return r;
};
Mont.prototype.imul = function imul (a, b) {
if (a.isZero() || b.isZero()) {
a.words[0] = 0;
a.length = 1;
return a;
}
var t = a.imul(b);
var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
var u = t.isub(c).iushrn(this.shift);
var res = u;
if (u.cmp(this.m) >= 0) {
res = u.isub(this.m);
} else if (u.cmpn(0) < 0) {
res = u.iadd(this.m);
}
return res._forceRed(this);
};
Mont.prototype.mul = function mul (a, b) {
if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);
var t = a.mul(b);
var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
var u = t.isub(c).iushrn(this.shift);
var res = u;
if (u.cmp(this.m) >= 0) {
res = u.isub(this.m);
} else if (u.cmpn(0) < 0) {
res = u.iadd(this.m);
}
return res._forceRed(this);
};
Mont.prototype.invm = function invm (a) {
// (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R
var res = this.imod(a._invmp(this.m).mul(this.r2));
return res._forceRed(this);
};
})( false || module, this);
/***/ }),
/***/ 4148:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
// Currently in sync with Node.js lib/assert.js
// https://github.com/nodejs/node/commit/2a51ae424a513ec9a6aa3466baa0cc1d55dd4f3b
// Originally from narwhal.js (http://narwhaljs.org)
// Copyright (c) 2009 Thomas Robinson <280north.com>
//
// 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 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.
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var _require = __webpack_require__(9597),
_require$codes = _require.codes,
ERR_AMBIGUOUS_ARGUMENT = _require$codes.ERR_AMBIGUOUS_ARGUMENT,
ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,
ERR_INVALID_ARG_VALUE = _require$codes.ERR_INVALID_ARG_VALUE,
ERR_INVALID_RETURN_VALUE = _require$codes.ERR_INVALID_RETURN_VALUE,
ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS;
var AssertionError = __webpack_require__(3918);
var _require2 = __webpack_require__(537),
inspect = _require2.inspect;
var _require$types = (__webpack_require__(537).types),
isPromise = _require$types.isPromise,
isRegExp = _require$types.isRegExp;
var objectAssign = __webpack_require__(1514)();
var objectIs = __webpack_require__(9394)();
var RegExpPrototypeTest = __webpack_require__(8075)('RegExp.prototype.test');
var errorCache = new Map();
var isDeepEqual;
var isDeepStrictEqual;
var parseExpressionAt;
var findNodeAround;
var decoder;
function lazyLoadComparison() {
var comparison = __webpack_require__(2299);
isDeepEqual = comparison.isDeepEqual;
isDeepStrictEqual = comparison.isDeepStrictEqual;
}
// Escape control characters but not \n and \t to keep the line breaks and
// indentation intact.
// eslint-disable-next-line no-control-regex
var escapeSequencesRegExp = /[\x00-\x08\x0b\x0c\x0e-\x1f]/g;
var meta = (/* unused pure expression or super */ null && (["\\u0000", "\\u0001", "\\u0002", "\\u0003", "\\u0004", "\\u0005", "\\u0006", "\\u0007", '\\b', '', '', "\\u000b", '\\f', '', "\\u000e", "\\u000f", "\\u0010", "\\u0011", "\\u0012", "\\u0013", "\\u0014", "\\u0015", "\\u0016", "\\u0017", "\\u0018", "\\u0019", "\\u001a", "\\u001b", "\\u001c", "\\u001d", "\\u001e", "\\u001f"]));
var escapeFn = function escapeFn(str) {
return meta[str.charCodeAt(0)];
};
var warned = false;
// The assert module provides functions that throw
// AssertionError's when particular conditions are not met. The
// assert module must conform to the following interface.
var assert = module.exports = ok;
var NO_EXCEPTION_SENTINEL = {};
// All of the following functions must throw an AssertionError
// when a corresponding condition is not met, with a message that
// may be undefined if not provided. All assertion methods provide
// both the actual and expected values to the assertion error for
// display purposes.
function innerFail(obj) {
if (obj.message instanceof Error) throw obj.message;
throw new AssertionError(obj);
}
function fail(actual, expected, message, operator, stackStartFn) {
var argsLen = arguments.length;
var internalMessage;
if (argsLen === 0) {
internalMessage = 'Failed';
} else if (argsLen === 1) {
message = actual;
actual = undefined;
} else {
if (warned === false) {
warned = true;
var warn = process.emitWarning ? process.emitWarning : console.warn.bind(console);
warn('assert.fail() with more than one argument is deprecated. ' + 'Please use assert.strictEqual() instead or only pass a message.', 'DeprecationWarning', 'DEP0094');
}
if (argsLen === 2) operator = '!=';
}
if (message instanceof Error) throw message;
var errArgs = {
actual: actual,
expected: expected,
operator: operator === undefined ? 'fail' : operator,
stackStartFn: stackStartFn || fail
};
if (message !== undefined) {
errArgs.message = message;
}
var err = new AssertionError(errArgs);
if (internalMessage) {
err.message = internalMessage;
err.generatedMessage = true;
}
throw err;
}
assert.fail = fail;
// The AssertionError is defined in internal/error.
assert.AssertionError = AssertionError;
function innerOk(fn, argLen, value, message) {
if (!value) {
var generatedMessage = false;
if (argLen === 0) {
generatedMessage = true;
message = 'No value argument passed to `assert.ok()`';
} else if (message instanceof Error) {
throw message;
}
var err = new AssertionError({
actual: value,
expected: true,
message: message,
operator: '==',
stackStartFn: fn
});
err.generatedMessage = generatedMessage;
throw err;
}
}
// Pure assertion tests whether a value is truthy, as determined
// by !!value.
function ok() {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
innerOk.apply(void 0, [ok, args.length].concat(args));
}
assert.ok = ok;
// The equality assertion tests shallow, coercive equality with ==.
/* eslint-disable no-restricted-properties */
assert.equal = function equal(actual, expected, message) {
if (arguments.length < 2) {
throw new ERR_MISSING_ARGS('actual', 'expected');
}
// eslint-disable-next-line eqeqeq
if (actual != expected) {
innerFail({
actual: actual,
expected: expected,
message: message,
operator: '==',
stackStartFn: equal
});
}
};
// The non-equality assertion tests for whether two objects are not
// equal with !=.
assert.notEqual = function notEqual(actual, expected, message) {
if (arguments.length < 2) {
throw new ERR_MISSING_ARGS('actual', 'expected');
}
// eslint-disable-next-line eqeqeq
if (actual == expected) {
innerFail({
actual: actual,
expected: expected,
message: message,
operator: '!=',
stackStartFn: notEqual
});
}
};
// The equivalence assertion tests a deep equality relation.
assert.deepEqual = function deepEqual(actual, expected, message) {
if (arguments.length < 2) {
throw new ERR_MISSING_ARGS('actual', 'expected');
}
if (isDeepEqual === undefined) lazyLoadComparison();
if (!isDeepEqual(actual, expected)) {
innerFail({
actual: actual,
expected: expected,
message: message,
operator: 'deepEqual',
stackStartFn: deepEqual
});
}
};
// The non-equivalence assertion tests for any deep inequality.
assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
if (arguments.length < 2) {
throw new ERR_MISSING_ARGS('actual', 'expected');
}
if (isDeepEqual === undefined) lazyLoadComparison();
if (isDeepEqual(actual, expected)) {
innerFail({
actual: actual,
expected: expected,
message: message,
operator: 'notDeepEqual',
stackStartFn: notDeepEqual
});
}
};
/* eslint-enable */
assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {
if (arguments.length < 2) {
throw new ERR_MISSING_ARGS('actual', 'expected');
}
if (isDeepEqual === undefined) lazyLoadComparison();
if (!isDeepStrictEqual(actual, expected)) {
innerFail({
actual: actual,
expected: expected,
message: message,
operator: 'deepStrictEqual',
stackStartFn: deepStrictEqual
});
}
};
assert.notDeepStrictEqual = notDeepStrictEqual;
function notDeepStrictEqual(actual, expected, message) {
if (arguments.length < 2) {
throw new ERR_MISSING_ARGS('actual', 'expected');
}
if (isDeepEqual === undefined) lazyLoadComparison();
if (isDeepStrictEqual(actual, expected)) {
innerFail({
actual: actual,
expected: expected,
message: message,
operator: 'notDeepStrictEqual',
stackStartFn: notDeepStrictEqual
});
}
}
assert.strictEqual = function strictEqual(actual, expected, message) {
if (arguments.length < 2) {
throw new ERR_MISSING_ARGS('actual', 'expected');
}
if (!objectIs(actual, expected)) {
innerFail({
actual: actual,
expected: expected,
message: message,
operator: 'strictEqual',
stackStartFn: strictEqual
});
}
};
assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
if (arguments.length < 2) {
throw new ERR_MISSING_ARGS('actual', 'expected');
}
if (objectIs(actual, expected)) {
innerFail({
actual: actual,
expected: expected,
message: message,
operator: 'notStrictEqual',
stackStartFn: notStrictEqual
});
}
};
var Comparison = /*#__PURE__*/_createClass(function Comparison(obj, keys, actual) {
var _this = this;
_classCallCheck(this, Comparison);
keys.forEach(function (key) {
if (key in obj) {
if (actual !== undefined && typeof actual[key] === 'string' && isRegExp(obj[key]) && RegExpPrototypeTest(obj[key], actual[key])) {
_this[key] = actual[key];
} else {
_this[key] = obj[key];
}
}
});
});
function compareExceptionKey(actual, expected, key, message, keys, fn) {
if (!(key in actual) || !isDeepStrictEqual(actual[key], expected[key])) {
if (!message) {
// Create placeholder objects to create a nice output.
var a = new Comparison(actual, keys);
var b = new Comparison(expected, keys, actual);
var err = new AssertionError({
actual: a,
expected: b,
operator: 'deepStrictEqual',
stackStartFn: fn
});
err.actual = actual;
err.expected = expected;
err.operator = fn.name;
throw err;
}
innerFail({
actual: actual,
expected: expected,
message: message,
operator: fn.name,
stackStartFn: fn
});
}
}
function expectedException(actual, expected, msg, fn) {
if (typeof expected !== 'function') {
if (isRegExp(expected)) return RegExpPrototypeTest(expected, actual);
// assert.doesNotThrow does not accept objects.
if (arguments.length === 2) {
throw new ERR_INVALID_ARG_TYPE('expected', ['Function', 'RegExp'], expected);
}
// Handle primitives properly.
if (_typeof(actual) !== 'object' || actual === null) {
var err = new AssertionError({
actual: actual,
expected: expected,
message: msg,
operator: 'deepStrictEqual',
stackStartFn: fn
});
err.operator = fn.name;
throw err;
}
var keys = Object.keys(expected);
// Special handle errors to make sure the name and the message are compared
// as well.
if (expected instanceof Error) {
keys.push('name', 'message');
} else if (keys.length === 0) {
throw new ERR_INVALID_ARG_VALUE('error', expected, 'may not be an empty object');
}
if (isDeepEqual === undefined) lazyLoadComparison();
keys.forEach(function (key) {
if (typeof actual[key] === 'string' && isRegExp(expected[key]) && RegExpPrototypeTest(expected[key], actual[key])) {
return;
}
compareExceptionKey(actual, expected, key, msg, keys, fn);
});
return true;
}
// Guard instanceof against arrow functions as they don't have a prototype.
if (expected.prototype !== undefined && actual instanceof expected) {
return true;
}
if (Error.isPrototypeOf(expected)) {
return false;
}
return expected.call({}, actual) === true;
}
function getActual(fn) {
if (typeof fn !== 'function') {
throw new ERR_INVALID_ARG_TYPE('fn', 'Function', fn);
}
try {
fn();
} catch (e) {
return e;
}
return NO_EXCEPTION_SENTINEL;
}
function checkIsPromise(obj) {
// Accept native ES6 promises and promises that are implemented in a similar
// way. Do not accept thenables that use a function as `obj` and that have no
// `catch` handler.
// TODO: thenables are checked up until they have the correct methods,
// but according to documentation, the `then` method should receive
// the `fulfill` and `reject` arguments as well or it may be never resolved.
return isPromise(obj) || obj !== null && _typeof(obj) === 'object' && typeof obj.then === 'function' && typeof obj.catch === 'function';
}
function waitForActual(promiseFn) {
return Promise.resolve().then(function () {
var resultPromise;
if (typeof promiseFn === 'function') {
// Return a rejected promise if `promiseFn` throws synchronously.
resultPromise = promiseFn();
// Fail in case no promise is returned.
if (!checkIsPromise(resultPromise)) {
throw new ERR_INVALID_RETURN_VALUE('instance of Promise', 'promiseFn', resultPromise);
}
} else if (checkIsPromise(promiseFn)) {
resultPromise = promiseFn;
} else {
throw new ERR_INVALID_ARG_TYPE('promiseFn', ['Function', 'Promise'], promiseFn);
}
return Promise.resolve().then(function () {
return resultPromise;
}).then(function () {
return NO_EXCEPTION_SENTINEL;
}).catch(function (e) {
return e;
});
});
}
function expectsError(stackStartFn, actual, error, message) {
if (typeof error === 'string') {
if (arguments.length === 4) {
throw new ERR_INVALID_ARG_TYPE('error', ['Object', 'Error', 'Function', 'RegExp'], error);
}
if (_typeof(actual) === 'object' && actual !== null) {
if (actual.message === error) {
throw new ERR_AMBIGUOUS_ARGUMENT('error/message', "The error message \"".concat(actual.message, "\" is identical to the message."));
}
} else if (actual === error) {
throw new ERR_AMBIGUOUS_ARGUMENT('error/message', "The error \"".concat(actual, "\" is identical to the message."));
}
message = error;
error = undefined;
} else if (error != null && _typeof(error) !== 'object' && typeof error !== 'function') {
throw new ERR_INVALID_ARG_TYPE('error', ['Object', 'Error', 'Function', 'RegExp'], error);
}
if (actual === NO_EXCEPTION_SENTINEL) {
var details = '';
if (error && error.name) {
details += " (".concat(error.name, ")");
}
details += message ? ": ".concat(message) : '.';
var fnType = stackStartFn.name === 'rejects' ? 'rejection' : 'exception';
innerFail({
actual: undefined,
expected: error,
operator: stackStartFn.name,
message: "Missing expected ".concat(fnType).concat(details),
stackStartFn: stackStartFn
});
}
if (error && !expectedException(actual, error, message, stackStartFn)) {
throw actual;
}
}
function expectsNoError(stackStartFn, actual, error, message) {
if (actual === NO_EXCEPTION_SENTINEL) return;
if (typeof error === 'string') {
message = error;
error = undefined;
}
if (!error || expectedException(actual, error)) {
var details = message ? ": ".concat(message) : '.';
var fnType = stackStartFn.name === 'doesNotReject' ? 'rejection' : 'exception';
innerFail({
actual: actual,
expected: error,
operator: stackStartFn.name,
message: "Got unwanted ".concat(fnType).concat(details, "\n") + "Actual message: \"".concat(actual && actual.message, "\""),
stackStartFn: stackStartFn
});
}
throw actual;
}
assert.throws = function throws(promiseFn) {
for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
args[_key2 - 1] = arguments[_key2];
}
expectsError.apply(void 0, [throws, getActual(promiseFn)].concat(args));
};
assert.rejects = function rejects(promiseFn) {
for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
args[_key3 - 1] = arguments[_key3];
}
return waitForActual(promiseFn).then(function (result) {
return expectsError.apply(void 0, [rejects, result].concat(args));
});
};
assert.doesNotThrow = function doesNotThrow(fn) {
for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {
args[_key4 - 1] = arguments[_key4];
}
expectsNoError.apply(void 0, [doesNotThrow, getActual(fn)].concat(args));
};
assert.doesNotReject = function doesNotReject(fn) {
for (var _len5 = arguments.length, args = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {
args[_key5 - 1] = arguments[_key5];
}
return waitForActual(fn).then(function (result) {
return expectsNoError.apply(void 0, [doesNotReject, result].concat(args));
});
};
assert.ifError = function ifError(err) {
if (err !== null && err !== undefined) {
var message = 'ifError got unwanted exception: ';
if (_typeof(err) === 'object' && typeof err.message === 'string') {
if (err.message.length === 0 && err.constructor) {
message += err.constructor.name;
} else {
message += err.message;
}
} else {
message += inspect(err);
}
var newErr = new AssertionError({
actual: err,
expected: null,
operator: 'ifError',
message: message,
stackStartFn: ifError
});
// Make sure we actually have a stack trace!
var origStack = err.stack;
if (typeof origStack === 'string') {
// This will remove any duplicated frames from the error frames taken
// from within `ifError` and add the original error frames to the newly
// created ones.
var tmp2 = origStack.split('\n');
tmp2.shift();
// Filter all frames existing in err.stack.
var tmp1 = newErr.stack.split('\n');
for (var i = 0; i < tmp2.length; i++) {
// Find the first occurrence of the frame.
var pos = tmp1.indexOf(tmp2[i]);
if (pos !== -1) {
// Only keep new frames.
tmp1 = tmp1.slice(0, pos);
break;
}
}
newErr.stack = "".concat(tmp1.join('\n'), "\n").concat(tmp2.join('\n'));
}
throw newErr;
}
};
// Currently in sync with Node.js lib/assert.js
// https://github.com/nodejs/node/commit/2a871df3dfb8ea663ef5e1f8f62701ec51384ecb
function internalMatch(string, regexp, message, fn, fnName) {
if (!isRegExp(regexp)) {
throw new ERR_INVALID_ARG_TYPE('regexp', 'RegExp', regexp);
}
var match = fnName === 'match';
if (typeof string !== 'string' || RegExpPrototypeTest(regexp, string) !== match) {
if (message instanceof Error) {
throw message;
}
var generatedMessage = !message;
// 'The input was expected to not match the regular expression ' +
message = message || (typeof string !== 'string' ? 'The "string" argument must be of type string. Received type ' + "".concat(_typeof(string), " (").concat(inspect(string), ")") : (match ? 'The input did not match the regular expression ' : 'The input was expected to not match the regular expression ') + "".concat(inspect(regexp), ". Input:\n\n").concat(inspect(string), "\n"));
var err = new AssertionError({
actual: string,
expected: regexp,
message: message,
operator: fnName,
stackStartFn: fn
});
err.generatedMessage = generatedMessage;
throw err;
}
}
assert.match = function match(string, regexp, message) {
internalMatch(string, regexp, message, match, 'match');
};
assert.doesNotMatch = function doesNotMatch(string, regexp, message) {
internalMatch(string, regexp, message, doesNotMatch, 'doesNotMatch');
};
// Expose a strict only variant of assert
function strict() {
for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
args[_key6] = arguments[_key6];
}
innerOk.apply(void 0, [strict, args.length].concat(args));
}
assert.strict = objectAssign(strict, assert, {
equal: assert.strictEqual,
deepEqual: assert.deepStrictEqual,
notEqual: assert.notStrictEqual,
notDeepEqual: assert.notDeepStrictEqual
});
assert.strict.strict = assert.strict;
/***/ }),
/***/ 3918:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
// Currently in sync with Node.js lib/internal/assert/assertion_error.js
// https://github.com/nodejs/node/commit/0817840f775032169ddd70c85ac059f18ffcc81c
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
function _wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); } if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }
function _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct.bind(); } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
function _isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; }
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
var _require = __webpack_require__(537),
inspect = _require.inspect;
var _require2 = __webpack_require__(9597),
ERR_INVALID_ARG_TYPE = _require2.codes.ERR_INVALID_ARG_TYPE;
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith
function endsWith(str, search, this_len) {
if (this_len === undefined || this_len > str.length) {
this_len = str.length;
}
return str.substring(this_len - search.length, this_len) === search;
}
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat
function repeat(str, count) {
count = Math.floor(count);
if (str.length == 0 || count == 0) return '';
var maxCount = str.length * count;
count = Math.floor(Math.log(count) / Math.log(2));
while (count) {
str += str;
count--;
}
str += str.substring(0, maxCount - str.length);
return str;
}
var blue = '';
var green = '';
var red = '';
var white = '';
var kReadableOperator = {
deepStrictEqual: 'Expected values to be strictly deep-equal:',
strictEqual: 'Expected values to be strictly equal:',
strictEqualObject: 'Expected "actual" to be reference-equal to "expected":',
deepEqual: 'Expected values to be loosely deep-equal:',
equal: 'Expected values to be loosely equal:',
notDeepStrictEqual: 'Expected "actual" not to be strictly deep-equal to:',
notStrictEqual: 'Expected "actual" to be strictly unequal to:',
notStrictEqualObject: 'Expected "actual" not to be reference-equal to "expected":',
notDeepEqual: 'Expected "actual" not to be loosely deep-equal to:',
notEqual: 'Expected "actual" to be loosely unequal to:',
notIdentical: 'Values identical but not reference-equal:'
};
// Comparing short primitives should just show === / !== instead of using the
// diff.
var kMaxShortLength = 10;
function copyError(source) {
var keys = Object.keys(source);
var target = Object.create(Object.getPrototypeOf(source));
keys.forEach(function (key) {
target[key] = source[key];
});
Object.defineProperty(target, 'message', {
value: source.message
});
return target;
}
function inspectValue(val) {
// The util.inspect default values could be changed. This makes sure the
// error messages contain the necessary information nevertheless.
return inspect(val, {
compact: false,
customInspect: false,
depth: 1000,
maxArrayLength: Infinity,
// Assert compares only enumerable properties (with a few exceptions).
showHidden: false,
// Having a long line as error is better than wrapping the line for
// comparison for now.
// TODO(BridgeAR): `breakLength` should be limited as soon as soon as we
// have meta information about the inspected properties (i.e., know where
// in what line the property starts and ends).
breakLength: Infinity,
// Assert does not detect proxies currently.
showProxy: false,
sorted: true,
// Inspect getters as we also check them when comparing entries.
getters: true
});
}
function createErrDiff(actual, expected, operator) {
var other = '';
var res = '';
var lastPos = 0;
var end = '';
var skipped = false;
var actualInspected = inspectValue(actual);
var actualLines = actualInspected.split('\n');
var expectedLines = inspectValue(expected).split('\n');
var i = 0;
var indicator = '';
// In case both values are objects explicitly mark them as not reference equal
// for the `strictEqual` operator.
if (operator === 'strictEqual' && _typeof(actual) === 'object' && _typeof(expected) === 'object' && actual !== null && expected !== null) {
operator = 'strictEqualObject';
}
// If "actual" and "expected" fit on a single line and they are not strictly
// equal, check further special handling.
if (actualLines.length === 1 && expectedLines.length === 1 && actualLines[0] !== expectedLines[0]) {
var inputLength = actualLines[0].length + expectedLines[0].length;
// If the character length of "actual" and "expected" together is less than
// kMaxShortLength and if neither is an object and at least one of them is
// not `zero`, use the strict equal comparison to visualize the output.
if (inputLength <= kMaxShortLength) {
if ((_typeof(actual) !== 'object' || actual === null) && (_typeof(expected) !== 'object' || expected === null) && (actual !== 0 || expected !== 0)) {
// -0 === +0
return "".concat(kReadableOperator[operator], "\n\n") + "".concat(actualLines[0], " !== ").concat(expectedLines[0], "\n");
}
} else if (operator !== 'strictEqualObject') {
// If the stderr is a tty and the input length is lower than the current
// columns per line, add a mismatch indicator below the output. If it is
// not a tty, use a default value of 80 characters.
var maxLength = process.stderr && process.stderr.isTTY ? process.stderr.columns : 80;
if (inputLength < maxLength) {
while (actualLines[0][i] === expectedLines[0][i]) {
i++;
}
// Ignore the first characters.
if (i > 2) {
// Add position indicator for the first mismatch in case it is a
// single line and the input length is less than the column length.
indicator = "\n ".concat(repeat(' ', i), "^");
i = 0;
}
}
}
}
// Remove all ending lines that match (this optimizes the output for
// readability by reducing the number of total changed lines).
var a = actualLines[actualLines.length - 1];
var b = expectedLines[expectedLines.length - 1];
while (a === b) {
if (i++ < 2) {
end = "\n ".concat(a).concat(end);
} else {
other = a;
}
actualLines.pop();
expectedLines.pop();
if (actualLines.length === 0 || expectedLines.length === 0) break;
a = actualLines[actualLines.length - 1];
b = expectedLines[expectedLines.length - 1];
}
var maxLines = Math.max(actualLines.length, expectedLines.length);
// Strict equal with identical objects that are not identical by reference.
// E.g., assert.deepStrictEqual({ a: Symbol() }, { a: Symbol() })
if (maxLines === 0) {
// We have to get the result again. The lines were all removed before.
var _actualLines = actualInspected.split('\n');
// Only remove lines in case it makes sense to collapse those.
// TODO: Accept env to always show the full error.
if (_actualLines.length > 30) {
_actualLines[26] = "".concat(blue, "...").concat(white);
while (_actualLines.length > 27) {
_actualLines.pop();
}
}
return "".concat(kReadableOperator.notIdentical, "\n\n").concat(_actualLines.join('\n'), "\n");
}
if (i > 3) {
end = "\n".concat(blue, "...").concat(white).concat(end);
skipped = true;
}
if (other !== '') {
end = "\n ".concat(other).concat(end);
other = '';
}
var printedLines = 0;
var msg = kReadableOperator[operator] + "\n".concat(green, "+ actual").concat(white, " ").concat(red, "- expected").concat(white);
var skippedMsg = " ".concat(blue, "...").concat(white, " Lines skipped");
for (i = 0; i < maxLines; i++) {
// Only extra expected lines exist
var cur = i - lastPos;
if (actualLines.length < i + 1) {
// If the last diverging line is more than one line above and the
// current line is at least line three, add some of the former lines and
// also add dots to indicate skipped entries.
if (cur > 1 && i > 2) {
if (cur > 4) {
res += "\n".concat(blue, "...").concat(white);
skipped = true;
} else if (cur > 3) {
res += "\n ".concat(expectedLines[i - 2]);
printedLines++;
}
res += "\n ".concat(expectedLines[i - 1]);
printedLines++;
}
// Mark the current line as the last diverging one.
lastPos = i;
// Add the expected line to the cache.
other += "\n".concat(red, "-").concat(white, " ").concat(expectedLines[i]);
printedLines++;
// Only extra actual lines exist
} else if (expectedLines.length < i + 1) {
// If the last diverging line is more than one line above and the
// current line is at least line three, add some of the former lines and
// also add dots to indicate skipped entries.
if (cur > 1 && i > 2) {
if (cur > 4) {
res += "\n".concat(blue, "...").concat(white);
skipped = true;
} else if (cur > 3) {
res += "\n ".concat(actualLines[i - 2]);
printedLines++;
}
res += "\n ".concat(actualLines[i - 1]);
printedLines++;
}
// Mark the current line as the last diverging one.
lastPos = i;
// Add the actual line to the result.
res += "\n".concat(green, "+").concat(white, " ").concat(actualLines[i]);
printedLines++;
// Lines diverge
} else {
var expectedLine = expectedLines[i];
var actualLine = actualLines[i];
// If the lines diverge, specifically check for lines that only diverge by
// a trailing comma. In that case it is actually identical and we should
// mark it as such.
var divergingLines = actualLine !== expectedLine && (!endsWith(actualLine, ',') || actualLine.slice(0, -1) !== expectedLine);
// If the expected line has a trailing comma but is otherwise identical,
// add a comma at the end of the actual line. Otherwise the output could
// look weird as in:
//
// [
// 1 // No comma at the end!
// + 2
// ]
//
if (divergingLines && endsWith(expectedLine, ',') && expectedLine.slice(0, -1) === actualLine) {
divergingLines = false;
actualLine += ',';
}
if (divergingLines) {
// If the last diverging line is more than one line above and the
// current line is at least line three, add some of the former lines and
// also add dots to indicate skipped entries.
if (cur > 1 && i > 2) {
if (cur > 4) {
res += "\n".concat(blue, "...").concat(white);
skipped = true;
} else if (cur > 3) {
res += "\n ".concat(actualLines[i - 2]);
printedLines++;
}
res += "\n ".concat(actualLines[i - 1]);
printedLines++;
}
// Mark the current line as the last diverging one.
lastPos = i;
// Add the actual line to the result and cache the expected diverging
// line so consecutive diverging lines show up as +++--- and not +-+-+-.
res += "\n".concat(green, "+").concat(white, " ").concat(actualLine);
other += "\n".concat(red, "-").concat(white, " ").concat(expectedLine);
printedLines += 2;
// Lines are identical
} else {
// Add all cached information to the result before adding other things
// and reset the cache.
res += other;
other = '';
// If the last diverging line is exactly one line above or if it is the
// very first line, add the line to the result.
if (cur === 1 || i === 0) {
res += "\n ".concat(actualLine);
printedLines++;
}
}
}
// Inspected object to big (Show ~20 rows max)
if (printedLines > 20 && i < maxLines - 2) {
return "".concat(msg).concat(skippedMsg, "\n").concat(res, "\n").concat(blue, "...").concat(white).concat(other, "\n") + "".concat(blue, "...").concat(white);
}
}
return "".concat(msg).concat(skipped ? skippedMsg : '', "\n").concat(res).concat(other).concat(end).concat(indicator);
}
var AssertionError = /*#__PURE__*/function (_Error, _inspect$custom) {
_inherits(AssertionError, _Error);
var _super = _createSuper(AssertionError);
function AssertionError(options) {
var _this;
_classCallCheck(this, AssertionError);
if (_typeof(options) !== 'object' || options === null) {
throw new ERR_INVALID_ARG_TYPE('options', 'Object', options);
}
var message = options.message,
operator = options.operator,
stackStartFn = options.stackStartFn;
var actual = options.actual,
expected = options.expected;
var limit = Error.stackTraceLimit;
Error.stackTraceLimit = 0;
if (message != null) {
_this = _super.call(this, String(message));
} else {
if (process.stderr && process.stderr.isTTY) {
// Reset on each call to make sure we handle dynamically set environment
// variables correct.
if (process.stderr && process.stderr.getColorDepth && process.stderr.getColorDepth() !== 1) {
blue = "\x1B[34m";
green = "\x1B[32m";
white = "\x1B[39m";
red = "\x1B[31m";
} else {
blue = '';
green = '';
white = '';
red = '';
}
}
// Prevent the error stack from being visible by duplicating the error
// in a very close way to the original in case both sides are actually
// instances of Error.
if (_typeof(actual) === 'object' && actual !== null && _typeof(expected) === 'object' && expected !== null && 'stack' in actual && actual instanceof Error && 'stack' in expected && expected instanceof Error) {
actual = copyError(actual);
expected = copyError(expected);
}
if (operator === 'deepStrictEqual' || operator === 'strictEqual') {
_this = _super.call(this, createErrDiff(actual, expected, operator));
} else if (operator === 'notDeepStrictEqual' || operator === 'notStrictEqual') {
// In case the objects are equal but the operator requires unequal, show
// the first object and say A equals B
var base = kReadableOperator[operator];
var res = inspectValue(actual).split('\n');
// In case "actual" is an object, it should not be reference equal.
if (operator === 'notStrictEqual' && _typeof(actual) === 'object' && actual !== null) {
base = kReadableOperator.notStrictEqualObject;
}
// Only remove lines in case it makes sense to collapse those.
// TODO: Accept env to always show the full error.
if (res.length > 30) {
res[26] = "".concat(blue, "...").concat(white);
while (res.length > 27) {
res.pop();
}
}
// Only print a single input.
if (res.length === 1) {
_this = _super.call(this, "".concat(base, " ").concat(res[0]));
} else {
_this = _super.call(this, "".concat(base, "\n\n").concat(res.join('\n'), "\n"));
}
} else {
var _res = inspectValue(actual);
var other = '';
var knownOperators = kReadableOperator[operator];
if (operator === 'notDeepEqual' || operator === 'notEqual') {
_res = "".concat(kReadableOperator[operator], "\n\n").concat(_res);
if (_res.length > 1024) {
_res = "".concat(_res.slice(0, 1021), "...");
}
} else {
other = "".concat(inspectValue(expected));
if (_res.length > 512) {
_res = "".concat(_res.slice(0, 509), "...");
}
if (other.length > 512) {
other = "".concat(other.slice(0, 509), "...");
}
if (operator === 'deepEqual' || operator === 'equal') {
_res = "".concat(knownOperators, "\n\n").concat(_res, "\n\nshould equal\n\n");
} else {
other = " ".concat(operator, " ").concat(other);
}
}
_this = _super.call(this, "".concat(_res).concat(other));
}
}
Error.stackTraceLimit = limit;
_this.generatedMessage = !message;
Object.defineProperty(_assertThisInitialized(_this), 'name', {
value: 'AssertionError [ERR_ASSERTION]',
enumerable: false,
writable: true,
configurable: true
});
_this.code = 'ERR_ASSERTION';
_this.actual = actual;
_this.expected = expected;
_this.operator = operator;
if (Error.captureStackTrace) {
// eslint-disable-next-line no-restricted-syntax
Error.captureStackTrace(_assertThisInitialized(_this), stackStartFn);
}
// Create error message including the error code in the name.
_this.stack;
// Reset the name.
_this.name = 'AssertionError';
return _possibleConstructorReturn(_this);
}
_createClass(AssertionError, [{
key: "toString",
value: function toString() {
return "".concat(this.name, " [").concat(this.code, "]: ").concat(this.message);
}
}, {
key: _inspect$custom,
value: function value(recurseTimes, ctx) {
// This limits the `actual` and `expected` property default inspection to
// the minimum depth. Otherwise those values would be too verbose compared
// to the actual error message which contains a combined view of these two
// input values.
return inspect(this, _objectSpread(_objectSpread({}, ctx), {}, {
customInspect: false,
depth: 0
}));
}
}]);
return AssertionError;
}( /*#__PURE__*/_wrapNativeSuper(Error), inspect.custom);
module.exports = AssertionError;
/***/ }),
/***/ 9597:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
// Currently in sync with Node.js lib/internal/errors.js
// https://github.com/nodejs/node/commit/3b044962c48fe313905877a96b5d0894a5404f6f
/* eslint node-core/documented-errors: "error" */
/* eslint node-core/alphabetize-errors: "error" */
/* eslint node-core/prefer-util-format-errors: "error" */
// The whole point behind this internal module is to allow Node.js to no
// longer be forced to treat every error message change as a semver-major
// change. The NodeError classes here all expose a `code` property whose
// value statically and permanently identifies the error. While the error
// message may change, the code should not.
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
var codes = {};
// Lazy loaded
var assert;
var util;
function createErrorType(code, message, Base) {
if (!Base) {
Base = Error;
}
function getMessage(arg1, arg2, arg3) {
if (typeof message === 'string') {
return message;
} else {
return message(arg1, arg2, arg3);
}
}
var NodeError = /*#__PURE__*/function (_Base) {
_inherits(NodeError, _Base);
var _super = _createSuper(NodeError);
function NodeError(arg1, arg2, arg3) {
var _this;
_classCallCheck(this, NodeError);
_this = _super.call(this, getMessage(arg1, arg2, arg3));
_this.code = code;
return _this;
}
return _createClass(NodeError);
}(Base);
codes[code] = NodeError;
}
// https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js
function oneOf(expected, thing) {
if (Array.isArray(expected)) {
var len = expected.length;
expected = expected.map(function (i) {
return String(i);
});
if (len > 2) {
return "one of ".concat(thing, " ").concat(expected.slice(0, len - 1).join(', '), ", or ") + expected[len - 1];
} else if (len === 2) {
return "one of ".concat(thing, " ").concat(expected[0], " or ").concat(expected[1]);
} else {
return "of ".concat(thing, " ").concat(expected[0]);
}
} else {
return "of ".concat(thing, " ").concat(String(expected));
}
}
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith
function startsWith(str, search, pos) {
return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;
}
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith
function endsWith(str, search, this_len) {
if (this_len === undefined || this_len > str.length) {
this_len = str.length;
}
return str.substring(this_len - search.length, this_len) === search;
}
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes
function includes(str, search, start) {
if (typeof start !== 'number') {
start = 0;
}
if (start + search.length > str.length) {
return false;
} else {
return str.indexOf(search, start) !== -1;
}
}
createErrorType('ERR_AMBIGUOUS_ARGUMENT', 'The "%s" argument is ambiguous. %s', TypeError);
createErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {
if (assert === undefined) assert = __webpack_require__(4148);
assert(typeof name === 'string', "'name' must be a string");
// determiner: 'must be' or 'must not be'
var determiner;
if (typeof expected === 'string' && startsWith(expected, 'not ')) {
determiner = 'must not be';
expected = expected.replace(/^not /, '');
} else {
determiner = 'must be';
}
var msg;
if (endsWith(name, ' argument')) {
// For cases like 'first argument'
msg = "The ".concat(name, " ").concat(determiner, " ").concat(oneOf(expected, 'type'));
} else {
var type = includes(name, '.') ? 'property' : 'argument';
msg = "The \"".concat(name, "\" ").concat(type, " ").concat(determiner, " ").concat(oneOf(expected, 'type'));
}
// TODO(BridgeAR): Improve the output by showing `null` and similar.
msg += ". Received type ".concat(_typeof(actual));
return msg;
}, TypeError);
createErrorType('ERR_INVALID_ARG_VALUE', function (name, value) {
var reason = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'is invalid';
if (util === undefined) util = __webpack_require__(537);
var inspected = util.inspect(value);
if (inspected.length > 128) {
inspected = "".concat(inspected.slice(0, 128), "...");
}
return "The argument '".concat(name, "' ").concat(reason, ". Received ").concat(inspected);
}, TypeError, RangeError);
createErrorType('ERR_INVALID_RETURN_VALUE', function (input, name, value) {
var type;
if (value && value.constructor && value.constructor.name) {
type = "instance of ".concat(value.constructor.name);
} else {
type = "type ".concat(_typeof(value));
}
return "Expected ".concat(input, " to be returned from the \"").concat(name, "\"") + " function but got ".concat(type, ".");
}, TypeError);
createErrorType('ERR_MISSING_ARGS', function () {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
if (assert === undefined) assert = __webpack_require__(4148);
assert(args.length > 0, 'At least one arg needs to be specified');
var msg = 'The ';
var len = args.length;
args = args.map(function (a) {
return "\"".concat(a, "\"");
});
switch (len) {
case 1:
msg += "".concat(args[0], " argument");
break;
case 2:
msg += "".concat(args[0], " and ").concat(args[1], " arguments");
break;
default:
msg += args.slice(0, len - 1).join(', ');
msg += ", and ".concat(args[len - 1], " arguments");
break;
}
return "".concat(msg, " must be specified");
}, TypeError);
module.exports.codes = codes;
/***/ }),
/***/ 2299:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
// Currently in sync with Node.js lib/internal/util/comparisons.js
// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
var regexFlagsSupported = /a/g.flags !== undefined;
var arrayFromSet = function arrayFromSet(set) {
var array = [];
set.forEach(function (value) {
return array.push(value);
});
return array;
};
var arrayFromMap = function arrayFromMap(map) {
var array = [];
map.forEach(function (value, key) {
return array.push([key, value]);
});
return array;
};
var objectIs = Object.is ? Object.is : __webpack_require__(7653);
var objectGetOwnPropertySymbols = Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols : function () {
return [];
};
var numberIsNaN = Number.isNaN ? Number.isNaN : __webpack_require__(4133);
function uncurryThis(f) {
return f.call.bind(f);
}
var hasOwnProperty = uncurryThis(Object.prototype.hasOwnProperty);
var propertyIsEnumerable = uncurryThis(Object.prototype.propertyIsEnumerable);
var objectToString = uncurryThis(Object.prototype.toString);
var _require$types = (__webpack_require__(537).types),
isAnyArrayBuffer = _require$types.isAnyArrayBuffer,
isArrayBufferView = _require$types.isArrayBufferView,
isDate = _require$types.isDate,
isMap = _require$types.isMap,
isRegExp = _require$types.isRegExp,
isSet = _require$types.isSet,
isNativeError = _require$types.isNativeError,
isBoxedPrimitive = _require$types.isBoxedPrimitive,
isNumberObject = _require$types.isNumberObject,
isStringObject = _require$types.isStringObject,
isBooleanObject = _require$types.isBooleanObject,
isBigIntObject = _require$types.isBigIntObject,
isSymbolObject = _require$types.isSymbolObject,
isFloat32Array = _require$types.isFloat32Array,
isFloat64Array = _require$types.isFloat64Array;
function isNonIndex(key) {
if (key.length === 0 || key.length > 10) return true;
for (var i = 0; i < key.length; i++) {
var code = key.charCodeAt(i);
if (code < 48 || code > 57) return true;
}
// The maximum size for an array is 2 ** 32 -1.
return key.length === 10 && key >= Math.pow(2, 32);
}
function getOwnNonIndexProperties(value) {
return Object.keys(value).filter(isNonIndex).concat(objectGetOwnPropertySymbols(value).filter(Object.prototype.propertyIsEnumerable.bind(value)));
}
// Taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js
// original notice:
/*!
* The buffer module from node.js, for the browser.
*
* @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
* @license MIT
*/
function compare(a, b) {
if (a === b) {
return 0;
}
var x = a.length;
var y = b.length;
for (var i = 0, len = Math.min(x, y); i < len; ++i) {
if (a[i] !== b[i]) {
x = a[i];
y = b[i];
break;
}
}
if (x < y) {
return -1;
}
if (y < x) {
return 1;
}
return 0;
}
var ONLY_ENUMERABLE = undefined;
var kStrict = true;
var kLoose = false;
var kNoIterator = 0;
var kIsArray = 1;
var kIsSet = 2;
var kIsMap = 3;
// Check if they have the same source and flags
function areSimilarRegExps(a, b) {
return regexFlagsSupported ? a.source === b.source && a.flags === b.flags : RegExp.prototype.toString.call(a) === RegExp.prototype.toString.call(b);
}
function areSimilarFloatArrays(a, b) {
if (a.byteLength !== b.byteLength) {
return false;
}
for (var offset = 0; offset < a.byteLength; offset++) {
if (a[offset] !== b[offset]) {
return false;
}
}
return true;
}
function areSimilarTypedArrays(a, b) {
if (a.byteLength !== b.byteLength) {
return false;
}
return compare(new Uint8Array(a.buffer, a.byteOffset, a.byteLength), new Uint8Array(b.buffer, b.byteOffset, b.byteLength)) === 0;
}
function areEqualArrayBuffers(buf1, buf2) {
return buf1.byteLength === buf2.byteLength && compare(new Uint8Array(buf1), new Uint8Array(buf2)) === 0;
}
function isEqualBoxedPrimitive(val1, val2) {
if (isNumberObject(val1)) {
return isNumberObject(val2) && objectIs(Number.prototype.valueOf.call(val1), Number.prototype.valueOf.call(val2));
}
if (isStringObject(val1)) {
return isStringObject(val2) && String.prototype.valueOf.call(val1) === String.prototype.valueOf.call(val2);
}
if (isBooleanObject(val1)) {
return isBooleanObject(val2) && Boolean.prototype.valueOf.call(val1) === Boolean.prototype.valueOf.call(val2);
}
if (isBigIntObject(val1)) {
return isBigIntObject(val2) && BigInt.prototype.valueOf.call(val1) === BigInt.prototype.valueOf.call(val2);
}
return isSymbolObject(val2) && Symbol.prototype.valueOf.call(val1) === Symbol.prototype.valueOf.call(val2);
}
// Notes: Type tags are historical [[Class]] properties that can be set by
// FunctionTemplate::SetClassName() in C++ or Symbol.toStringTag in JS
// and retrieved using Object.prototype.toString.call(obj) in JS
// See https://tc39.github.io/ecma262/#sec-object.prototype.tostring
// for a list of tags pre-defined in the spec.
// There are some unspecified tags in the wild too (e.g. typed array tags).
// Since tags can be altered, they only serve fast failures
//
// Typed arrays and buffers are checked by comparing the content in their
// underlying ArrayBuffer. This optimization requires that it's
// reasonable to interpret their underlying memory in the same way,
// which is checked by comparing their type tags.
// (e.g. a Uint8Array and a Uint16Array with the same memory content
// could still be different because they will be interpreted differently).
//
// For strict comparison, objects should have
// a) The same built-in type tags
// b) The same prototypes.
function innerDeepEqual(val1, val2, strict, memos) {
// All identical values are equivalent, as determined by ===.
if (val1 === val2) {
if (val1 !== 0) return true;
return strict ? objectIs(val1, val2) : true;
}
// Check more closely if val1 and val2 are equal.
if (strict) {
if (_typeof(val1) !== 'object') {
return typeof val1 === 'number' && numberIsNaN(val1) && numberIsNaN(val2);
}
if (_typeof(val2) !== 'object' || val1 === null || val2 === null) {
return false;
}
if (Object.getPrototypeOf(val1) !== Object.getPrototypeOf(val2)) {
return false;
}
} else {
if (val1 === null || _typeof(val1) !== 'object') {
if (val2 === null || _typeof(val2) !== 'object') {
// eslint-disable-next-line eqeqeq
return val1 == val2;
}
return false;
}
if (val2 === null || _typeof(val2) !== 'object') {
return false;
}
}
var val1Tag = objectToString(val1);
var val2Tag = objectToString(val2);
if (val1Tag !== val2Tag) {
return false;
}
if (Array.isArray(val1)) {
// Check for sparse arrays and general fast path
if (val1.length !== val2.length) {
return false;
}
var keys1 = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE);
var keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE);
if (keys1.length !== keys2.length) {
return false;
}
return keyCheck(val1, val2, strict, memos, kIsArray, keys1);
}
// [browserify] This triggers on certain types in IE (Map/Set) so we don't
// wan't to early return out of the rest of the checks. However we can check
// if the second value is one of these values and the first isn't.
if (val1Tag === '[object Object]') {
// return keyCheck(val1, val2, strict, memos, kNoIterator);
if (!isMap(val1) && isMap(val2) || !isSet(val1) && isSet(val2)) {
return false;
}
}
if (isDate(val1)) {
if (!isDate(val2) || Date.prototype.getTime.call(val1) !== Date.prototype.getTime.call(val2)) {
return false;
}
} else if (isRegExp(val1)) {
if (!isRegExp(val2) || !areSimilarRegExps(val1, val2)) {
return false;
}
} else if (isNativeError(val1) || val1 instanceof Error) {
// Do not compare the stack as it might differ even though the error itself
// is otherwise identical.
if (val1.message !== val2.message || val1.name !== val2.name) {
return false;
}
} else if (isArrayBufferView(val1)) {
if (!strict && (isFloat32Array(val1) || isFloat64Array(val1))) {
if (!areSimilarFloatArrays(val1, val2)) {
return false;
}
} else if (!areSimilarTypedArrays(val1, val2)) {
return false;
}
// Buffer.compare returns true, so val1.length === val2.length. If they both
// only contain numeric keys, we don't need to exam further than checking
// the symbols.
var _keys = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE);
var _keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE);
if (_keys.length !== _keys2.length) {
return false;
}
return keyCheck(val1, val2, strict, memos, kNoIterator, _keys);
} else if (isSet(val1)) {
if (!isSet(val2) || val1.size !== val2.size) {
return false;
}
return keyCheck(val1, val2, strict, memos, kIsSet);
} else if (isMap(val1)) {
if (!isMap(val2) || val1.size !== val2.size) {
return false;
}
return keyCheck(val1, val2, strict, memos, kIsMap);
} else if (isAnyArrayBuffer(val1)) {
if (!areEqualArrayBuffers(val1, val2)) {
return false;
}
} else if (isBoxedPrimitive(val1) && !isEqualBoxedPrimitive(val1, val2)) {
return false;
}
return keyCheck(val1, val2, strict, memos, kNoIterator);
}
function getEnumerables(val, keys) {
return keys.filter(function (k) {
return propertyIsEnumerable(val, k);
});
}
function keyCheck(val1, val2, strict, memos, iterationType, aKeys) {
// For all remaining Object pairs, including Array, objects and Maps,
// equivalence is determined by having:
// a) The same number of owned enumerable properties
// b) The same set of keys/indexes (although not necessarily the same order)
// c) Equivalent values for every corresponding key/index
// d) For Sets and Maps, equal contents
// Note: this accounts for both named and indexed properties on Arrays.
if (arguments.length === 5) {
aKeys = Object.keys(val1);
var bKeys = Object.keys(val2);
// The pair must have the same number of owned properties.
if (aKeys.length !== bKeys.length) {
return false;
}
}
// Cheap key test
var i = 0;
for (; i < aKeys.length; i++) {
if (!hasOwnProperty(val2, aKeys[i])) {
return false;
}
}
if (strict && arguments.length === 5) {
var symbolKeysA = objectGetOwnPropertySymbols(val1);
if (symbolKeysA.length !== 0) {
var count = 0;
for (i = 0; i < symbolKeysA.length; i++) {
var key = symbolKeysA[i];
if (propertyIsEnumerable(val1, key)) {
if (!propertyIsEnumerable(val2, key)) {
return false;
}
aKeys.push(key);
count++;
} else if (propertyIsEnumerable(val2, key)) {
return false;
}
}
var symbolKeysB = objectGetOwnPropertySymbols(val2);
if (symbolKeysA.length !== symbolKeysB.length && getEnumerables(val2, symbolKeysB).length !== count) {
return false;
}
} else {
var _symbolKeysB = objectGetOwnPropertySymbols(val2);
if (_symbolKeysB.length !== 0 && getEnumerables(val2, _symbolKeysB).length !== 0) {
return false;
}
}
}
if (aKeys.length === 0 && (iterationType === kNoIterator || iterationType === kIsArray && val1.length === 0 || val1.size === 0)) {
return true;
}
// Use memos to handle cycles.
if (memos === undefined) {
memos = {
val1: new Map(),
val2: new Map(),
position: 0
};
} else {
// We prevent up to two map.has(x) calls by directly retrieving the value
// and checking for undefined. The map can only contain numbers, so it is
// safe to check for undefined only.
var val2MemoA = memos.val1.get(val1);
if (val2MemoA !== undefined) {
var val2MemoB = memos.val2.get(val2);
if (val2MemoB !== undefined) {
return val2MemoA === val2MemoB;
}
}
memos.position++;
}
memos.val1.set(val1, memos.position);
memos.val2.set(val2, memos.position);
var areEq = objEquiv(val1, val2, strict, aKeys, memos, iterationType);
memos.val1.delete(val1);
memos.val2.delete(val2);
return areEq;
}
function setHasEqualElement(set, val1, strict, memo) {
// Go looking.
var setValues = arrayFromSet(set);
for (var i = 0; i < setValues.length; i++) {
var val2 = setValues[i];
if (innerDeepEqual(val1, val2, strict, memo)) {
// Remove the matching element to make sure we do not check that again.
set.delete(val2);
return true;
}
}
return false;
}
// See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness#Loose_equality_using
// Sadly it is not possible to detect corresponding values properly in case the
// type is a string, number, bigint or boolean. The reason is that those values
// can match lots of different string values (e.g., 1n == '+00001').
function findLooseMatchingPrimitives(prim) {
switch (_typeof(prim)) {
case 'undefined':
return null;
case 'object':
// Only pass in null as object!
return undefined;
case 'symbol':
return false;
case 'string':
prim = +prim;
// Loose equal entries exist only if the string is possible to convert to
// a regular number and not NaN.
// Fall through
case 'number':
if (numberIsNaN(prim)) {
return false;
}
}
return true;
}
function setMightHaveLoosePrim(a, b, prim) {
var altValue = findLooseMatchingPrimitives(prim);
if (altValue != null) return altValue;
return b.has(altValue) && !a.has(altValue);
}
function mapMightHaveLoosePrim(a, b, prim, item, memo) {
var altValue = findLooseMatchingPrimitives(prim);
if (altValue != null) {
return altValue;
}
var curB = b.get(altValue);
if (curB === undefined && !b.has(altValue) || !innerDeepEqual(item, curB, false, memo)) {
return false;
}
return !a.has(altValue) && innerDeepEqual(item, curB, false, memo);
}
function setEquiv(a, b, strict, memo) {
// This is a lazily initiated Set of entries which have to be compared
// pairwise.
var set = null;
var aValues = arrayFromSet(a);
for (var i = 0; i < aValues.length; i++) {
var val = aValues[i];
// Note: Checking for the objects first improves the performance for object
// heavy sets but it is a minor slow down for primitives. As they are fast
// to check this improves the worst case scenario instead.
if (_typeof(val) === 'object' && val !== null) {
if (set === null) {
set = new Set();
}
// If the specified value doesn't exist in the second set its an not null
// object (or non strict only: a not matching primitive) we'll need to go
// hunting for something thats deep-(strict-)equal to it. To make this
// O(n log n) complexity we have to copy these values in a new set first.
set.add(val);
} else if (!b.has(val)) {
if (strict) return false;
// Fast path to detect missing string, symbol, undefined and null values.
if (!setMightHaveLoosePrim(a, b, val)) {
return false;
}
if (set === null) {
set = new Set();
}
set.add(val);
}
}
if (set !== null) {
var bValues = arrayFromSet(b);
for (var _i = 0; _i < bValues.length; _i++) {
var _val = bValues[_i];
// We have to check if a primitive value is already
// matching and only if it's not, go hunting for it.
if (_typeof(_val) === 'object' && _val !== null) {
if (!setHasEqualElement(set, _val, strict, memo)) return false;
} else if (!strict && !a.has(_val) && !setHasEqualElement(set, _val, strict, memo)) {
return false;
}
}
return set.size === 0;
}
return true;
}
function mapHasEqualEntry(set, map, key1, item1, strict, memo) {
// To be able to handle cases like:
// Map([[{}, 'a'], [{}, 'b']]) vs Map([[{}, 'b'], [{}, 'a']])
// ... we need to consider *all* matching keys, not just the first we find.
var setValues = arrayFromSet(set);
for (var i = 0; i < setValues.length; i++) {
var key2 = setValues[i];
if (innerDeepEqual(key1, key2, strict, memo) && innerDeepEqual(item1, map.get(key2), strict, memo)) {
set.delete(key2);
return true;
}
}
return false;
}
function mapEquiv(a, b, strict, memo) {
var set = null;
var aEntries = arrayFromMap(a);
for (var i = 0; i < aEntries.length; i++) {
var _aEntries$i = _slicedToArray(aEntries[i], 2),
key = _aEntries$i[0],
item1 = _aEntries$i[1];
if (_typeof(key) === 'object' && key !== null) {
if (set === null) {
set = new Set();
}
set.add(key);
} else {
// By directly retrieving the value we prevent another b.has(key) check in
// almost all possible cases.
var item2 = b.get(key);
if (item2 === undefined && !b.has(key) || !innerDeepEqual(item1, item2, strict, memo)) {
if (strict) return false;
// Fast path to detect missing string, symbol, undefined and null
// keys.
if (!mapMightHaveLoosePrim(a, b, key, item1, memo)) return false;
if (set === null) {
set = new Set();
}
set.add(key);
}
}
}
if (set !== null) {
var bEntries = arrayFromMap(b);
for (var _i2 = 0; _i2 < bEntries.length; _i2++) {
var _bEntries$_i = _slicedToArray(bEntries[_i2], 2),
_key = _bEntries$_i[0],
item = _bEntries$_i[1];
if (_typeof(_key) === 'object' && _key !== null) {
if (!mapHasEqualEntry(set, a, _key, item, strict, memo)) return false;
} else if (!strict && (!a.has(_key) || !innerDeepEqual(a.get(_key), item, false, memo)) && !mapHasEqualEntry(set, a, _key, item, false, memo)) {
return false;
}
}
return set.size === 0;
}
return true;
}
function objEquiv(a, b, strict, keys, memos, iterationType) {
// Sets and maps don't have their entries accessible via normal object
// properties.
var i = 0;
if (iterationType === kIsSet) {
if (!setEquiv(a, b, strict, memos)) {
return false;
}
} else if (iterationType === kIsMap) {
if (!mapEquiv(a, b, strict, memos)) {
return false;
}
} else if (iterationType === kIsArray) {
for (; i < a.length; i++) {
if (hasOwnProperty(a, i)) {
if (!hasOwnProperty(b, i) || !innerDeepEqual(a[i], b[i], strict, memos)) {
return false;
}
} else if (hasOwnProperty(b, i)) {
return false;
} else {
// Array is sparse.
var keysA = Object.keys(a);
for (; i < keysA.length; i++) {
var key = keysA[i];
if (!hasOwnProperty(b, key) || !innerDeepEqual(a[key], b[key], strict, memos)) {
return false;
}
}
if (keysA.length !== Object.keys(b).length) {
return false;
}
return true;
}
}
}
// The pair must have equivalent values for every corresponding key.
// Possibly expensive deep test:
for (i = 0; i < keys.length; i++) {
var _key2 = keys[i];
if (!innerDeepEqual(a[_key2], b[_key2], strict, memos)) {
return false;
}
}
return true;
}
function isDeepEqual(val1, val2) {
return innerDeepEqual(val1, val2, kLoose);
}
function isDeepStrictEqual(val1, val2) {
return innerDeepEqual(val1, val2, kStrict);
}
module.exports = {
isDeepEqual: isDeepEqual,
isDeepStrictEqual: isDeepStrictEqual
};
/***/ }),
/***/ 5682:
/***/ ((module, exports, __webpack_require__) => {
const ascii = __webpack_require__(6209)
const base64 = __webpack_require__(943)
const hex = __webpack_require__(1847)
const utf8 = __webpack_require__(6679)
const utf16le = __webpack_require__(5435)
const LE = new Uint8Array(Uint16Array.of(0xff).buffer)[0] === 0xff
function codecFor (encoding) {
switch (encoding) {
case 'ascii':
return ascii
case 'base64':
return base64
case 'hex':
return hex
case 'utf8':
case 'utf-8':
case undefined:
return utf8
case 'ucs2':
case 'ucs-2':
case 'utf16le':
case 'utf-16le':
return utf16le
default:
throw new Error(`Unknown encoding: ${encoding}`)
}
}
function isBuffer (value) {
return value instanceof Uint8Array
}
function isEncoding (encoding) {
try {
codecFor(encoding)
return true
} catch {
return false
}
}
function alloc (size, fill, encoding) {
const buffer = new Uint8Array(size)
if (fill !== undefined) exports.fill(buffer, fill, 0, buffer.byteLength, encoding)
return buffer
}
function allocUnsafe (size) {
return new Uint8Array(size)
}
function allocUnsafeSlow (size) {
return new Uint8Array(size)
}
function byteLength (string, encoding) {
return codecFor(encoding).byteLength(string)
}
function compare (a, b) {
if (a === b) return 0
const len = Math.min(a.byteLength, b.byteLength)
a = new DataView(a.buffer, a.byteOffset, a.byteLength)
b = new DataView(b.buffer, b.byteOffset, b.byteLength)
let i = 0
for (let n = len - (len % 4); i < n; i += 4) {
const x = a.getUint32(i, LE)
const y = b.getUint32(i, LE)
if (x !== y) break
}
for (; i < len; i++) {
const x = a.getUint8(i)
const y = b.getUint8(i)
if (x < y) return -1
if (x > y) return 1
}
return a.byteLength > b.byteLength ? 1 : a.byteLength < b.byteLength ? -1 : 0
}
function concat (buffers, totalLength) {
if (totalLength === undefined) {
totalLength = buffers.reduce((len, buffer) => len + buffer.byteLength, 0)
}
const result = new Uint8Array(totalLength)
let offset = 0
for (const buffer of buffers) {
if (offset + buffer.byteLength > result.byteLength) {
const sub = buffer.subarray(0, result.byteLength - offset)
result.set(sub, offset)
return result
}
result.set(buffer, offset)
offset += buffer.byteLength
}
return result
}
function copy (source, target, targetStart = 0, start = 0, end = source.byteLength) {
if (end > 0 && end < start) return 0
if (end === start) return 0
if (source.byteLength === 0 || target.byteLength === 0) return 0
if (targetStart < 0) throw new RangeError('targetStart is out of range')
if (start < 0 || start >= source.byteLength) throw new RangeError('sourceStart is out of range')
if (end < 0) throw new RangeError('sourceEnd is out of range')
if (targetStart >= target.byteLength) targetStart = target.byteLength
if (end > source.byteLength) end = source.byteLength
if (target.byteLength - targetStart < end - start) {
end = target.length - targetStart + start
}
const len = end - start
if (source === target) {
target.copyWithin(targetStart, start, end)
} else {
target.set(source.subarray(start, end), targetStart)
}
return len
}
function equals (a, b) {
if (a === b) return true
if (a.byteLength !== b.byteLength) return false
const len = a.byteLength
a = new DataView(a.buffer, a.byteOffset, a.byteLength)
b = new DataView(b.buffer, b.byteOffset, b.byteLength)
let i = 0
for (let n = len - (len % 4); i < n; i += 4) {
if (a.getUint32(i, LE) !== b.getUint32(i, LE)) return false
}
for (; i < len; i++) {
if (a.getUint8(i) !== b.getUint8(i)) return false
}
return true
}
function fill (buffer, value, offset, end, encoding) {
if (typeof value === 'string') {
// fill(buffer, string, encoding)
if (typeof offset === 'string') {
encoding = offset
offset = 0
end = buffer.byteLength
// fill(buffer, string, offset, encoding)
} else if (typeof end === 'string') {
encoding = end
end = buffer.byteLength
}
} else if (typeof value === 'number') {
value = value & 0xff
} else if (typeof value === 'boolean') {
value = +value
}
if (offset < 0 || buffer.byteLength < offset || buffer.byteLength < end) {
throw new RangeError('Out of range index')
}
if (offset === undefined) offset = 0
if (end === undefined) end = buffer.byteLength
if (end <= offset) return buffer
if (!value) value = 0
if (typeof value === 'number') {
for (let i = offset; i < end; ++i) {
buffer[i] = value
}
} else {
value = isBuffer(value) ? value : from(value, encoding)
const len = value.byteLength
for (let i = 0; i < end - offset; ++i) {
buffer[i + offset] = value[i % len]
}
}
return buffer
}
function from (value, encodingOrOffset, length) {
// from(string, encoding)
if (typeof value === 'string') return fromString(value, encodingOrOffset)
// from(array)
if (Array.isArray(value)) return fromArray(value)
// from(buffer)
if (ArrayBuffer.isView(value)) return fromBuffer(value)
// from(arrayBuffer[, byteOffset[, length]])
return fromArrayBuffer(value, encodingOrOffset, length)
}
function fromString (string, encoding) {
const codec = codecFor(encoding)
const buffer = new Uint8Array(codec.byteLength(string))
codec.write(buffer, string, 0, buffer.byteLength)
return buffer
}
function fromArray (array) {
const buffer = new Uint8Array(array.length)
buffer.set(array)
return buffer
}
function fromBuffer (buffer) {
const copy = new Uint8Array(buffer.byteLength)
copy.set(buffer)
return copy
}
function fromArrayBuffer (arrayBuffer, byteOffset, length) {
return new Uint8Array(arrayBuffer, byteOffset, length)
}
function includes (buffer, value, byteOffset, encoding) {
return indexOf(buffer, value, byteOffset, encoding) !== -1
}
function bidirectionalIndexOf (buffer, value, byteOffset, encoding, first) {
if (buffer.byteLength === 0) return -1
if (typeof byteOffset === 'string') {
encoding = byteOffset
byteOffset = 0
} else if (byteOffset === undefined) {
byteOffset = first ? 0 : (buffer.length - 1)
} else if (byteOffset < 0) {
byteOffset += buffer.byteLength
}
if (byteOffset >= buffer.byteLength) {
if (first) return -1
else byteOffset = buffer.byteLength - 1
} else if (byteOffset < 0) {
if (first) byteOffset = 0
else return -1
}
if (typeof value === 'string') {
value = from(value, encoding)
} else if (typeof value === 'number') {
value = value & 0xff
if (first) {
return buffer.indexOf(value, byteOffset)
} else {
return buffer.lastIndexOf(value, byteOffset)
}
}
if (value.byteLength === 0) return -1
if (first) {
let foundIndex = -1
for (let i = byteOffset; i < buffer.byteLength; i++) {
if (buffer[i] === value[foundIndex === -1 ? 0 : i - foundIndex]) {
if (foundIndex === -1) foundIndex = i
if (i - foundIndex + 1 === value.byteLength) return foundIndex
} else {
if (foundIndex !== -1) i -= i - foundIndex
foundIndex = -1
}
}
} else {
if (byteOffset + value.byteLength > buffer.byteLength) {
byteOffset = buffer.byteLength - value.byteLength
}
for (let i = byteOffset; i >= 0; i--) {
let found = true
for (let j = 0; j < value.byteLength; j++) {
if (buffer[i + j] !== value[j]) {
found = false
break
}
}
if (found) return i
}
}
return -1
}
function indexOf (buffer, value, byteOffset, encoding) {
return bidirectionalIndexOf(buffer, value, byteOffset, encoding, true /* first */)
}
function lastIndexOf (buffer, value, byteOffset, encoding) {
return bidirectionalIndexOf(buffer, value, byteOffset, encoding, false /* last */)
}
function swap (buffer, n, m) {
const i = buffer[n]
buffer[n] = buffer[m]
buffer[m] = i
}
function swap16 (buffer) {
const len = buffer.byteLength
if (len % 2 !== 0) throw new RangeError('Buffer size must be a multiple of 16-bits')
for (let i = 0; i < len; i += 2) swap(buffer, i, i + 1)
return buffer
}
function swap32 (buffer) {
const len = buffer.byteLength
if (len % 4 !== 0) throw new RangeError('Buffer size must be a multiple of 32-bits')
for (let i = 0; i < len; i += 4) {
swap(buffer, i, i + 3)
swap(buffer, i + 1, i + 2)
}
return buffer
}
function swap64 (buffer) {
const len = buffer.byteLength
if (len % 8 !== 0) throw new RangeError('Buffer size must be a multiple of 64-bits')
for (let i = 0; i < len; i += 8) {
swap(buffer, i, i + 7)
swap(buffer, i + 1, i + 6)
swap(buffer, i + 2, i + 5)
swap(buffer, i + 3, i + 4)
}
return buffer
}
function toBuffer (buffer) {
return buffer
}
function toString (buffer, encoding, start = 0, end = buffer.byteLength) {
const len = buffer.byteLength
if (start >= len) return ''
if (end <= start) return ''
if (start < 0) start = 0
if (end > len) end = len
if (start !== 0 || end < len) buffer = buffer.subarray(start, end)
return codecFor(encoding).toString(buffer)
}
function write (buffer, string, offset, length, encoding) {
// write(buffer, string)
if (offset === undefined) {
encoding = 'utf8'
// write(buffer, string, encoding)
} else if (length === undefined && typeof offset === 'string') {
encoding = offset
offset = undefined
// write(buffer, string, offset, encoding)
} else if (encoding === undefined && typeof length === 'string') {
encoding = length
length = undefined
}
return codecFor(encoding).write(buffer, string, offset, length)
}
function writeDoubleLE (buffer, value, offset) {
if (offset === undefined) offset = 0
const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength)
view.setFloat64(offset, value, true)
return offset + 8
}
function writeFloatLE (buffer, value, offset) {
if (offset === undefined) offset = 0
const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength)
view.setFloat32(offset, value, true)
return offset + 4
}
function writeUInt32LE (buffer, value, offset) {
if (offset === undefined) offset = 0
const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength)
view.setUint32(offset, value, true)
return offset + 4
}
function writeInt32LE (buffer, value, offset) {
if (offset === undefined) offset = 0
const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength)
view.setInt32(offset, value, true)
return offset + 4
}
function readDoubleLE (buffer, offset) {
if (offset === undefined) offset = 0
const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength)
return view.getFloat64(offset, true)
}
function readFloatLE (buffer, offset) {
if (offset === undefined) offset = 0
const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength)
return view.getFloat32(offset, true)
}
function readUInt32LE (buffer, offset) {
if (offset === undefined) offset = 0
const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength)
return view.getUint32(offset, true)
}
function readInt32LE (buffer, offset) {
if (offset === undefined) offset = 0
const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength)
return view.getInt32(offset, true)
}
module.exports = exports = {
isBuffer,
isEncoding,
alloc,
allocUnsafe,
allocUnsafeSlow,
byteLength,
compare,
concat,
copy,
equals,
fill,
from,
includes,
indexOf,
lastIndexOf,
swap16,
swap32,
swap64,
toBuffer,
toString,
write,
writeDoubleLE,
writeFloatLE,
writeUInt32LE,
writeInt32LE,
readDoubleLE,
readFloatLE,
readUInt32LE,
readInt32LE
}
/***/ }),
/***/ 6209:
/***/ ((module) => {
function byteLength (string) {
return string.length
}
function toString (buffer) {
const len = buffer.byteLength
let result = ''
for (let i = 0; i < len; i++) {
result += String.fromCharCode(buffer[i])
}
return result
}
function write (buffer, string, offset = 0, length = byteLength(string)) {
const len = Math.min(length, buffer.byteLength - offset)
for (let i = 0; i < len; i++) {
buffer[offset + i] = string.charCodeAt(i)
}
return len
}
module.exports = {
byteLength,
toString,
write
}
/***/ }),
/***/ 943:
/***/ ((module) => {
const alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
const codes = new Uint8Array(256)
for (let i = 0; i < alphabet.length; i++) {
codes[alphabet.charCodeAt(i)] = i
}
codes[/* - */ 0x2d] = 62
codes[/* _ */ 0x5f] = 63
function byteLength (string) {
let len = string.length
if (string.charCodeAt(len - 1) === 0x3d) len--
if (len > 1 && string.charCodeAt(len - 1) === 0x3d) len--
return (len * 3) >>> 2
}
function toString (buffer) {
const len = buffer.byteLength
let result = ''
for (let i = 0; i < len; i += 3) {
result += (
alphabet[buffer[i] >> 2] +
alphabet[((buffer[i] & 3) << 4) | (buffer[i + 1] >> 4)] +
alphabet[((buffer[i + 1] & 15) << 2) | (buffer[i + 2] >> 6)] +
alphabet[buffer[i + 2] & 63]
)
}
if (len % 3 === 2) {
result = result.substring(0, result.length - 1) + '='
} else if (len % 3 === 1) {
result = result.substring(0, result.length - 2) + '=='
}
return result
};
function write (buffer, string, offset = 0, length = byteLength(string)) {
const len = Math.min(length, buffer.byteLength - offset)
for (let i = 0, j = 0; j < len; i += 4) {
const a = codes[string.charCodeAt(i)]
const b = codes[string.charCodeAt(i + 1)]
const c = codes[string.charCodeAt(i + 2)]
const d = codes[string.charCodeAt(i + 3)]
buffer[j++] = (a << 2) | (b >> 4)
buffer[j++] = ((b & 15) << 4) | (c >> 2)
buffer[j++] = ((c & 3) << 6) | (d & 63)
}
return len
};
module.exports = {
byteLength,
toString,
write
}
/***/ }),
/***/ 1847:
/***/ ((module) => {
function byteLength (string) {
return string.length >>> 1
}
function toString (buffer) {
const len = buffer.byteLength
buffer = new DataView(buffer.buffer, buffer.byteOffset, len)
let result = ''
let i = 0
for (let n = len - (len % 4); i < n; i += 4) {
result += buffer.getUint32(i).toString(16).padStart(8, '0')
}
for (; i < len; i++) {
result += buffer.getUint8(i).toString(16).padStart(2, '0')
}
return result
}
function write (buffer, string, offset = 0, length = byteLength(string)) {
const len = Math.min(length, buffer.byteLength - offset)
for (let i = 0; i < len; i++) {
const a = hexValue(string.charCodeAt(i * 2))
const b = hexValue(string.charCodeAt(i * 2 + 1))
if (a === undefined || b === undefined) {
return buffer.subarray(0, i)
}
buffer[offset + i] = (a << 4) | b
}
return len
}
module.exports = {
byteLength,
toString,
write
}
function hexValue (char) {
if (char >= 0x30 && char <= 0x39) return char - 0x30
if (char >= 0x41 && char <= 0x46) return char - 0x41 + 10
if (char >= 0x61 && char <= 0x66) return char - 0x61 + 10
}
/***/ }),
/***/ 5435:
/***/ ((module) => {
function byteLength (string) {
return string.length * 2
}
function toString (buffer) {
const len = buffer.byteLength
let result = ''
for (let i = 0; i < len - 1; i += 2) {
result += String.fromCharCode(buffer[i] + (buffer[i + 1] * 256))
}
return result
}
function write (buffer, string, offset = 0, length = byteLength(string)) {
const len = Math.min(length, buffer.byteLength - offset)
let units = len
for (let i = 0; i < string.length; ++i) {
if ((units -= 2) < 0) break
const c = string.charCodeAt(i)
const hi = c >> 8
const lo = c % 256
buffer[offset + i * 2] = lo
buffer[offset + i * 2 + 1] = hi
}
return len
}
module.exports = {
byteLength,
toString,
write
}
/***/ }),
/***/ 6679:
/***/ ((module) => {
function byteLength (string) {
let length = 0
for (let i = 0, n = string.length; i < n; i++) {
const code = string.charCodeAt(i)
if (code >= 0xd800 && code <= 0xdbff && i + 1 < n) {
const code = string.charCodeAt(i + 1)
if (code >= 0xdc00 && code <= 0xdfff) {
length += 4
i++
continue
}
}
if (code <= 0x7f) length += 1
else if (code <= 0x7ff) length += 2
else length += 3
}
return length
}
let toString
if (typeof TextDecoder !== 'undefined') {
const decoder = new TextDecoder()
toString = function toString (buffer) {
return decoder.decode(buffer)
}
} else {
toString = function toString (buffer) {
const len = buffer.byteLength
let output = ''
let i = 0
while (i < len) {
let byte = buffer[i]
if (byte <= 0x7f) {
output += String.fromCharCode(byte)
i++
continue
}
let bytesNeeded = 0
let codePoint = 0
if (byte <= 0xdf) {
bytesNeeded = 1
codePoint = byte & 0x1f
} else if (byte <= 0xef) {
bytesNeeded = 2
codePoint = byte & 0x0f
} else if (byte <= 0xf4) {
bytesNeeded = 3
codePoint = byte & 0x07
}
if (len - i - bytesNeeded > 0) {
let k = 0
while (k < bytesNeeded) {
byte = buffer[i + k + 1]
codePoint = (codePoint << 6) | (byte & 0x3f)
k += 1
}
} else {
codePoint = 0xfffd
bytesNeeded = len - i
}
output += String.fromCodePoint(codePoint)
i += bytesNeeded + 1
}
return output
}
}
let write
if (typeof TextEncoder !== 'undefined') {
const encoder = new TextEncoder()
write = function write (buffer, string, offset = 0, length = byteLength(string)) {
const len = Math.min(length, buffer.byteLength - offset)
encoder.encodeInto(string, buffer.subarray(offset, offset + len))
return len
}
} else {
write = function write (buffer, string, offset = 0, length = byteLength(string)) {
const len = Math.min(length, buffer.byteLength - offset)
buffer = buffer.subarray(offset, offset + len)
let i = 0
let j = 0
while (i < string.length) {
const code = string.codePointAt(i)
if (code <= 0x7f) {
buffer[j++] = code
i++
continue
}
let count = 0
let bits = 0
if (code <= 0x7ff) {
count = 6
bits = 0xc0
} else if (code <= 0xffff) {
count = 12
bits = 0xe0
} else if (code <= 0x1fffff) {
count = 18
bits = 0xf0
}
buffer[j++] = bits | (code >> count)
count -= 6
while (count >= 0) {
buffer[j++] = 0x80 | ((code >> count) & 0x3f)
count -= 6
}
i += code >= 0x10000 ? 2 : 1
}
return len
}
}
module.exports = {
byteLength,
toString,
write
}
/***/ }),
/***/ 7526:
/***/ ((__unused_webpack_module, exports) => {
"use strict";
exports.byteLength = byteLength
exports.toByteArray = toByteArray
exports.fromByteArray = fromByteArray
var lookup = []
var revLookup = []
var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
for (var i = 0, len = code.length; i < len; ++i) {
lookup[i] = code[i]
revLookup[code.charCodeAt(i)] = i
}
// Support decoding URL-safe base64 strings, as Node.js does.
// See: https://en.wikipedia.org/wiki/Base64#URL_applications
revLookup['-'.charCodeAt(0)] = 62
revLookup['_'.charCodeAt(0)] = 63
function getLens (b64) {
var len = b64.length
if (len % 4 > 0) {
throw new Error('Invalid string. Length must be a multiple of 4')
}
// Trim off extra bytes after placeholder bytes are found
// See: https://github.com/beatgammit/base64-js/issues/42
var validLen = b64.indexOf('=')
if (validLen === -1) validLen = len
var placeHoldersLen = validLen === len
? 0
: 4 - (validLen % 4)
return [validLen, placeHoldersLen]
}
// base64 is 4/3 + up to two characters of the original data
function byteLength (b64) {
var lens = getLens(b64)
var validLen = lens[0]
var placeHoldersLen = lens[1]
return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
}
function _byteLength (b64, validLen, placeHoldersLen) {
return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
}
function toByteArray (b64) {
var tmp
var lens = getLens(b64)
var validLen = lens[0]
var placeHoldersLen = lens[1]
var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))
var curByte = 0
// if there are placeholders, only get up to the last complete 4 chars
var len = placeHoldersLen > 0
? validLen - 4
: validLen
var i
for (i = 0; i < len; i += 4) {
tmp =
(revLookup[b64.charCodeAt(i)] << 18) |
(revLookup[b64.charCodeAt(i + 1)] << 12) |
(revLookup[b64.charCodeAt(i + 2)] << 6) |
revLookup[b64.charCodeAt(i + 3)]
arr[curByte++] = (tmp >> 16) & 0xFF
arr[curByte++] = (tmp >> 8) & 0xFF
arr[curByte++] = tmp & 0xFF
}
if (placeHoldersLen === 2) {
tmp =
(revLookup[b64.charCodeAt(i)] << 2) |
(revLookup[b64.charCodeAt(i + 1)] >> 4)
arr[curByte++] = tmp & 0xFF
}
if (placeHoldersLen === 1) {
tmp =
(revLookup[b64.charCodeAt(i)] << 10) |
(revLookup[b64.charCodeAt(i + 1)] << 4) |
(revLookup[b64.charCodeAt(i + 2)] >> 2)
arr[curByte++] = (tmp >> 8) & 0xFF
arr[curByte++] = tmp & 0xFF
}
return arr
}
function tripletToBase64 (num) {
return lookup[num >> 18 & 0x3F] +
lookup[num >> 12 & 0x3F] +
lookup[num >> 6 & 0x3F] +
lookup[num & 0x3F]
}
function encodeChunk (uint8, start, end) {
var tmp
var output = []
for (var i = start; i < end; i += 3) {
tmp =
((uint8[i] << 16) & 0xFF0000) +
((uint8[i + 1] << 8) & 0xFF00) +
(uint8[i + 2] & 0xFF)
output.push(tripletToBase64(tmp))
}
return output.join('')
}
function fromByteArray (uint8) {
var tmp
var len = uint8.length
var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
var parts = []
var maxChunkLength = 16383 // must be multiple of 3
// go through the array every three bytes, we'll deal with trailing stuff later
for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
}
// pad the end with zeros, but make sure to not forget the extra bytes
if (extraBytes === 1) {
tmp = uint8[len - 1]
parts.push(
lookup[tmp >> 2] +
lookup[(tmp << 4) & 0x3F] +
'=='
)
} else if (extraBytes === 2) {
tmp = (uint8[len - 2] << 8) + uint8[len - 1]
parts.push(
lookup[tmp >> 10] +
lookup[(tmp >> 4) & 0x3F] +
lookup[(tmp << 2) & 0x3F] +
'='
)
}
return parts.join('')
}
/***/ }),
/***/ 654:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
module.exports = __webpack_require__(5702)(__webpack_require__(6989))
/***/ }),
/***/ 4315:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
/* provided dependency */ var Buffer = __webpack_require__(8287)["Buffer"];
const Transform = (__webpack_require__(8399).Transform)
module.exports = class Blake extends Transform {
constructor (engine, options) {
super(options)
this._engine = engine
this._finalized = false
}
_transform (chunk, encoding, callback) {
let error = null
try {
this.update(chunk, encoding)
} catch (err) {
error = err
}
callback(error)
}
_flush (callback) {
let error = null
try {
this.push(this.digest())
} catch (err) {
error = err
}
callback(error)
}
update (data, encoding) {
if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')
if (this._finalized) throw new Error('Digest already called')
if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)
this._engine.update(data)
return this
}
digest (encoding) {
if (this._finalized) throw new Error('Digest already called')
this._finalized = true
let digest = this._engine.digest()
if (encoding !== undefined) digest = digest.toString(encoding)
return digest
}
}
/***/ }),
/***/ 5702:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
const Blake = __webpack_require__(4315)
module.exports = (engines) => {
const getEngine = (algorithm) => {
const hash = typeof algorithm === 'string' ? algorithm.toLowerCase() : algorithm
switch (hash) {
case 'blake224': return engines.Blake224
case 'blake256': return engines.Blake256
case 'blake384': return engines.Blake384
case 'blake512': return engines.Blake512
default: throw new Error('Invald algorithm: ' + algorithm)
}
}
return (algorithm, options) => {
const Engine = getEngine(algorithm)
return new Blake(new Engine(), options)
}
}
/***/ }),
/***/ 4588:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
/* provided dependency */ var Buffer = __webpack_require__(8287)["Buffer"];
class Blake {
_lengthCarry (arr) {
for (let j = 0; j < arr.length; ++j) {
if (arr[j] < 0x0100000000) break
arr[j] -= 0x0100000000
arr[j + 1] += 1
}
}
update (data) {
const block = this._block
let offset = 0
while (this._blockOffset + data.length - offset >= block.length) {
for (let i = this._blockOffset; i < block.length;) block[i++] = data[offset++]
this._length[0] += block.length * 8
this._lengthCarry(this._length)
this._compress()
this._blockOffset = 0
}
while (offset < data.length) block[this._blockOffset++] = data[offset++]
}
}
Blake.sigma = [
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
[14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3],
[11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4],
[7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8],
[9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13],
[2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9],
[12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11],
[13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10],
[6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5],
[10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0],
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
[14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3],
[11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4],
[7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8],
[9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13],
[2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9]
]
Blake.u256 = [
0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344,
0xa4093822, 0x299f31d0, 0x082efa98, 0xec4e6c89,
0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c,
0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917
]
Blake.u512 = [
0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344,
0xa4093822, 0x299f31d0, 0x082efa98, 0xec4e6c89,
0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c,
0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917,
0x9216d5d9, 0x8979fb1b, 0xd1310ba6, 0x98dfb5ac,
0x2ffd72db, 0xd01adfb7, 0xb8e1afed, 0x6a267e96,
0xba7c9045, 0xf12c7f99, 0x24a19947, 0xb3916cf7,
0x0801f2e2, 0x858efc16, 0x636920d8, 0x71574e69
]
Blake.padding = Buffer.from([
0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
])
module.exports = Blake
/***/ }),
/***/ 8746:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
/* provided dependency */ var Buffer = __webpack_require__(8287)["Buffer"];
const Blake256 = __webpack_require__(3287)
const zo = Buffer.from([0x00])
const oo = Buffer.from([0x80])
module.exports = class Blake224 extends Blake256 {
constructor () {
super()
this._h = [
0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,
0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4
]
this._zo = zo
this._oo = oo
}
digest () {
this._padding()
const buffer = Buffer.alloc(28)
for (let i = 0; i < 7; ++i) buffer.writeUInt32BE(this._h[i], i * 4)
return buffer
}
}
/***/ }),
/***/ 3287:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
/* provided dependency */ var Buffer = __webpack_require__(8287)["Buffer"];
const Blake = __webpack_require__(4588)
const zo = Buffer.from([0x01])
const oo = Buffer.from([0x81])
const rot = (x, n) => ((x << (32 - n)) | (x >>> n)) >>> 0
function g (v, m, i, a, b, c, d, e) {
const sigma = Blake.sigma
const u256 = Blake.u256
v[a] = (v[a] + ((m[sigma[i][e]] ^ u256[sigma[i][e + 1]]) >>> 0) + v[b]) >>> 0
v[d] = rot(v[d] ^ v[a], 16)
v[c] = (v[c] + v[d]) >>> 0
v[b] = rot(v[b] ^ v[c], 12)
v[a] = (v[a] + ((m[sigma[i][e + 1]] ^ u256[sigma[i][e]]) >>> 0) + v[b]) >>> 0
v[d] = rot(v[d] ^ v[a], 8)
v[c] = (v[c] + v[d]) >>> 0
v[b] = rot(v[b] ^ v[c], 7)
}
module.exports = class Blake256 extends Blake {
constructor () {
super()
this._h = [
0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,
0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19
]
this._s = [0, 0, 0, 0]
this._block = Buffer.alloc(64)
this._blockOffset = 0
this._length = [0, 0]
this._nullt = false
this._zo = zo
this._oo = oo
}
_compress () {
const u256 = Blake.u256
const v = new Array(16)
const m = new Array(16)
let i
for (i = 0; i < 16; ++i) m[i] = this._block.readUInt32BE(i * 4)
for (i = 0; i < 8; ++i) v[i] = this._h[i] >>> 0
for (i = 8; i < 12; ++i) v[i] = (this._s[i - 8] ^ u256[i - 8]) >>> 0
for (i = 12; i < 16; ++i) v[i] = u256[i - 8]
if (!this._nullt) {
v[12] = (v[12] ^ this._length[0]) >>> 0
v[13] = (v[13] ^ this._length[0]) >>> 0
v[14] = (v[14] ^ this._length[1]) >>> 0
v[15] = (v[15] ^ this._length[1]) >>> 0
}
for (i = 0; i < 14; ++i) {
/* column step */
g(v, m, i, 0, 4, 8, 12, 0)
g(v, m, i, 1, 5, 9, 13, 2)
g(v, m, i, 2, 6, 10, 14, 4)
g(v, m, i, 3, 7, 11, 15, 6)
/* diagonal step */
g(v, m, i, 0, 5, 10, 15, 8)
g(v, m, i, 1, 6, 11, 12, 10)
g(v, m, i, 2, 7, 8, 13, 12)
g(v, m, i, 3, 4, 9, 14, 14)
}
for (i = 0; i < 16; ++i) this._h[i % 8] = (this._h[i % 8] ^ v[i]) >>> 0
for (i = 0; i < 8; ++i) this._h[i] = (this._h[i] ^ this._s[i % 4]) >>> 0
}
_padding () {
let lo = this._length[0] + this._blockOffset * 8
let hi = this._length[1]
if (lo >= 0x0100000000) {
lo -= 0x0100000000
hi += 1
}
const msglen = Buffer.alloc(8)
msglen.writeUInt32BE(hi, 0)
msglen.writeUInt32BE(lo, 4)
if (this._blockOffset === 55) {
this._length[0] -= 8
this.update(this._oo)
} else {
if (this._blockOffset < 55) {
if (this._blockOffset === 0) this._nullt = true
this._length[0] -= (55 - this._blockOffset) * 8
this.update(Blake.padding.slice(0, 55 - this._blockOffset))
} else {
this._length[0] -= (64 - this._blockOffset) * 8
this.update(Blake.padding.slice(0, 64 - this._blockOffset))
this._length[0] -= 55 * 8
this.update(Blake.padding.slice(1, 1 + 55))
this._nullt = true
}
this.update(this._zo)
this._length[0] -= 8
}
this._length[0] -= 64
this.update(msglen)
}
digest () {
this._padding()
const buffer = Buffer.alloc(32)
for (let i = 0; i < 8; ++i) buffer.writeUInt32BE(this._h[i], i * 4)
return buffer
}
}
/***/ }),
/***/ 399:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
/* provided dependency */ var Buffer = __webpack_require__(8287)["Buffer"];
const Blake512 = __webpack_require__(1070)
const zo = Buffer.from([0x00])
const oo = Buffer.from([0x80])
module.exports = class Blake384 extends Blake512 {
constructor () {
super()
this._h = [
0xcbbb9d5d, 0xc1059ed8, 0x629a292a, 0x367cd507,
0x9159015a, 0x3070dd17, 0x152fecd8, 0xf70e5939,
0x67332667, 0xffc00b31, 0x8eb44a87, 0x68581511,
0xdb0c2e0d, 0x64f98fa7, 0x47b5481d, 0xbefa4fa4
]
this._zo = zo
this._oo = oo
}
digest () {
this._padding()
const buffer = Buffer.alloc(48)
for (let i = 0; i < 12; ++i) buffer.writeUInt32BE(this._h[i], i * 4)
return buffer
}
}
/***/ }),
/***/ 1070:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
/* provided dependency */ var Buffer = __webpack_require__(8287)["Buffer"];
const Blake = __webpack_require__(4588)
const zo = Buffer.from([0x01])
const oo = Buffer.from([0x81])
function rot (v, i, j, n) {
let hi = v[i * 2] ^ v[j * 2]
let lo = v[i * 2 + 1] ^ v[j * 2 + 1]
if (n >= 32) {
lo = lo ^ hi
hi = lo ^ hi
lo = lo ^ hi
n -= 32
}
if (n === 0) {
v[i * 2] = hi >>> 0
v[i * 2 + 1] = lo >>> 0
} else {
v[i * 2] = ((hi >>> n) | (lo << (32 - n))) >>> 0
v[i * 2 + 1] = ((lo >>> n) | (hi << (32 - n))) >>> 0
}
}
function g (v, m, i, a, b, c, d, e) {
const sigma = Blake.sigma
const u512 = Blake.u512
let lo
// v[a] += (m[sigma[i][e]] ^ u512[sigma[i][e+1]]) + v[b];
lo = v[a * 2 + 1] + ((m[sigma[i][e] * 2 + 1] ^ u512[sigma[i][e + 1] * 2 + 1]) >>> 0) + v[b * 2 + 1]
v[a * 2] = (v[a * 2] + ((m[sigma[i][e] * 2] ^ u512[sigma[i][e + 1] * 2]) >>> 0) + v[b * 2] + ~~(lo / 0x0100000000)) >>> 0
v[a * 2 + 1] = lo >>> 0
// v[d] = ROT( v[d] ^ v[a],32);
rot(v, d, a, 32)
// v[c] += v[d];
lo = v[c * 2 + 1] + v[d * 2 + 1]
v[c * 2] = (v[c * 2] + v[d * 2] + ~~(lo / 0x0100000000)) >>> 0
v[c * 2 + 1] = lo >>> 0
// v[b] = ROT( v[b] ^ v[c],25);
rot(v, b, c, 25)
// v[a] += (m[sigma[i][e+1]] ^ u512[sigma[i][e]])+v[b];
lo = v[a * 2 + 1] + ((m[sigma[i][e + 1] * 2 + 1] ^ u512[sigma[i][e] * 2 + 1]) >>> 0) + v[b * 2 + 1]
v[a * 2] = (v[a * 2] + ((m[sigma[i][e + 1] * 2] ^ u512[sigma[i][e] * 2]) >>> 0) + v[b * 2] + ~~(lo / 0x0100000000)) >>> 0
v[a * 2 + 1] = lo >>> 0
// v[d] = ROT( v[d] ^ v[a],16);
rot(v, d, a, 16)
// v[c] += v[d];
lo = v[c * 2 + 1] + v[d * 2 + 1]
v[c * 2] = (v[c * 2] + v[d * 2] + ~~(lo / 0x0100000000)) >>> 0
v[c * 2 + 1] = lo >>> 0
// v[b] = ROT( v[b] ^ v[c],11)
rot(v, b, c, 11)
}
module.exports = class Blake512 extends Blake {
constructor () {
super()
this._h = [
0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b,
0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1,
0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f,
0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179
]
this._s = [0, 0, 0, 0, 0, 0, 0, 0]
this._block = Buffer.alloc(128)
this._blockOffset = 0
this._length = [0, 0, 0, 0]
this._nullt = false
this._zo = zo
this._oo = oo
}
_compress () {
const u512 = Blake.u512
const v = new Array(32)
const m = new Array(32)
let i
for (i = 0; i < 32; ++i) m[i] = this._block.readUInt32BE(i * 4)
for (i = 0; i < 16; ++i) v[i] = this._h[i] >>> 0
for (i = 16; i < 24; ++i) v[i] = (this._s[i - 16] ^ u512[i - 16]) >>> 0
for (i = 24; i < 32; ++i) v[i] = u512[i - 16]
if (!this._nullt) {
v[24] = (v[24] ^ this._length[1]) >>> 0
v[25] = (v[25] ^ this._length[0]) >>> 0
v[26] = (v[26] ^ this._length[1]) >>> 0
v[27] = (v[27] ^ this._length[0]) >>> 0
v[28] = (v[28] ^ this._length[3]) >>> 0
v[29] = (v[29] ^ this._length[2]) >>> 0
v[30] = (v[30] ^ this._length[3]) >>> 0
v[31] = (v[31] ^ this._length[2]) >>> 0
}
for (i = 0; i < 16; ++i) {
/* column step */
g(v, m, i, 0, 4, 8, 12, 0)
g(v, m, i, 1, 5, 9, 13, 2)
g(v, m, i, 2, 6, 10, 14, 4)
g(v, m, i, 3, 7, 11, 15, 6)
/* diagonal step */
g(v, m, i, 0, 5, 10, 15, 8)
g(v, m, i, 1, 6, 11, 12, 10)
g(v, m, i, 2, 7, 8, 13, 12)
g(v, m, i, 3, 4, 9, 14, 14)
}
for (i = 0; i < 16; ++i) {
this._h[(i % 8) * 2] = (this._h[(i % 8) * 2] ^ v[i * 2]) >>> 0
this._h[(i % 8) * 2 + 1] = (this._h[(i % 8) * 2 + 1] ^ v[i * 2 + 1]) >>> 0
}
for (i = 0; i < 8; ++i) {
this._h[i * 2] = (this._h[i * 2] ^ this._s[(i % 4) * 2]) >>> 0
this._h[i * 2 + 1] = (this._h[i * 2 + 1] ^ this._s[(i % 4) * 2 + 1]) >>> 0
}
}
_padding () {
const len = this._length.slice()
len[0] += this._blockOffset * 8
this._lengthCarry(len)
const msglen = Buffer.alloc(16)
for (let i = 0; i < 4; ++i) msglen.writeUInt32BE(len[3 - i], i * 4)
if (this._blockOffset === 111) {
this._length[0] -= 8
this.update(this._oo)
} else {
if (this._blockOffset < 111) {
if (this._blockOffset === 0) this._nullt = true
this._length[0] -= (111 - this._blockOffset) * 8
this.update(Blake.padding.slice(0, 111 - this._blockOffset))
} else {
this._length[0] -= (128 - this._blockOffset) * 8
this.update(Blake.padding.slice(0, 128 - this._blockOffset))
this._length[0] -= 111 * 8
this.update(Blake.padding.slice(1, 1 + 111))
this._nullt = true
}
this.update(this._zo)
this._length[0] -= 8
}
this._length[0] -= 128
this.update(msglen)
}
digest () {
this._padding()
const buffer = Buffer.alloc(64)
for (let i = 0; i < 16; ++i) buffer.writeUInt32BE(this._h[i], i * 4)
return buffer
}
}
/***/ }),
/***/ 6989:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
module.exports = {
Blake224: __webpack_require__(8746),
Blake256: __webpack_require__(3287),
Blake384: __webpack_require__(399),
Blake512: __webpack_require__(1070)
}
/***/ }),
/***/ 1892:
/***/ ((module) => {
var __commonJS = (cb, mod) => function __require() {
return mod || (0, cb[Object.keys(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
};
var __toBinary = /* @__PURE__ */ (() => {
var table = new Uint8Array(128);
for (var i = 0; i < 64; i++)
table[i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i * 4 - 205] = i;
return (base64) => {
var n = base64.length, bytes2 = new Uint8Array((n - (base64[n - 1] == "=") - (base64[n - 2] == "=")) * 3 / 4 | 0);
for (var i2 = 0, j = 0; i2 < n; ) {
var c0 = table[base64.charCodeAt(i2++)], c1 = table[base64.charCodeAt(i2++)];
var c2 = table[base64.charCodeAt(i2++)], c3 = table[base64.charCodeAt(i2++)];
bytes2[j++] = c0 << 2 | c1 >> 4;
bytes2[j++] = c1 << 4 | c2 >> 2;
bytes2[j++] = c2 << 6 | c3;
}
return bytes2;
};
})();
// wasm-binary:./blake2b.wat
var require_blake2b = __commonJS({
"wasm-binary:./blake2b.wat"(exports2, module2) {
module2.exports = __toBinary("AGFzbQEAAAABEANgAn9/AGADf39/AGABfwADBQQAAQICBQUBAQroBwdNBQZtZW1vcnkCAAxibGFrZTJiX2luaXQAAA5ibGFrZTJiX3VwZGF0ZQABDWJsYWtlMmJfZmluYWwAAhBibGFrZTJiX2NvbXByZXNzAAMKvz8EwAIAIABCADcDACAAQgA3AwggAEIANwMQIABCADcDGCAAQgA3AyAgAEIANwMoIABCADcDMCAAQgA3AzggAEIANwNAIABCADcDSCAAQgA3A1AgAEIANwNYIABCADcDYCAAQgA3A2ggAEIANwNwIABCADcDeCAAQoiS853/zPmE6gBBACkDAIU3A4ABIABCu86qptjQ67O7f0EIKQMAhTcDiAEgAEKr8NP0r+68tzxBECkDAIU3A5ABIABC8e30+KWn/aelf0EYKQMAhTcDmAEgAELRhZrv+s+Uh9EAQSApAwCFNwOgASAAQp/Y+dnCkdqCm39BKCkDAIU3A6gBIABC6/qG2r+19sEfQTApAwCFNwOwASAAQvnC+JuRo7Pw2wBBOCkDAIU3A7gBIABCADcDwAEgAEIANwPIASAAQgA3A9ABC20BA38gAEHAAWohAyAAQcgBaiEEIAQpAwCnIQUCQANAIAEgAkYNASAFQYABRgRAIAMgAykDACAFrXw3AwBBACEFIAAQAwsgACAFaiABLQAAOgAAIAVBAWohBSABQQFqIQEMAAsLIAQgBa03AwALYQEDfyAAQcABaiEBIABByAFqIQIgASABKQMAIAIpAwB8NwMAIABCfzcD0AEgAikDAKchAwJAA0AgA0GAAUYNASAAIANqQQA6AAAgA0EBaiEDDAALCyACIAOtNwMAIAAQAwuqOwIgfgl/IABBgAFqISEgAEGIAWohIiAAQZABaiEjIABBmAFqISQgAEGgAWohJSAAQagBaiEmIABBsAFqIScgAEG4AWohKCAhKQMAIQEgIikDACECICMpAwAhAyAkKQMAIQQgJSkDACEFICYpAwAhBiAnKQMAIQcgKCkDACEIQoiS853/zPmE6gAhCUK7zqqm2NDrs7t/IQpCq/DT9K/uvLc8IQtC8e30+KWn/aelfyEMQtGFmu/6z5SH0QAhDUKf2PnZwpHagpt/IQ5C6/qG2r+19sEfIQ9C+cL4m5Gjs/DbACEQIAApAwAhESAAKQMIIRIgACkDECETIAApAxghFCAAKQMgIRUgACkDKCEWIAApAzAhFyAAKQM4IRggACkDQCEZIAApA0ghGiAAKQNQIRsgACkDWCEcIAApA2AhHSAAKQNoIR4gACkDcCEfIAApA3ghICANIAApA8ABhSENIA8gACkD0AGFIQ8gASAFIBF8fCEBIA0gAYVCIIohDSAJIA18IQkgBSAJhUIYiiEFIAEgBSASfHwhASANIAGFQhCKIQ0gCSANfCEJIAUgCYVCP4ohBSACIAYgE3x8IQIgDiAChUIgiiEOIAogDnwhCiAGIAqFQhiKIQYgAiAGIBR8fCECIA4gAoVCEIohDiAKIA58IQogBiAKhUI/iiEGIAMgByAVfHwhAyAPIAOFQiCKIQ8gCyAPfCELIAcgC4VCGIohByADIAcgFnx8IQMgDyADhUIQiiEPIAsgD3whCyAHIAuFQj+KIQcgBCAIIBd8fCEEIBAgBIVCIIohECAMIBB8IQwgCCAMhUIYiiEIIAQgCCAYfHwhBCAQIASFQhCKIRAgDCAQfCEMIAggDIVCP4ohCCABIAYgGXx8IQEgECABhUIgiiEQIAsgEHwhCyAGIAuFQhiKIQYgASAGIBp8fCEBIBAgAYVCEIohECALIBB8IQsgBiALhUI/iiEGIAIgByAbfHwhAiANIAKFQiCKIQ0gDCANfCEMIAcgDIVCGIohByACIAcgHHx8IQIgDSAChUIQiiENIAwgDXwhDCAHIAyFQj+KIQcgAyAIIB18fCEDIA4gA4VCIIohDiAJIA58IQkgCCAJhUIYiiEIIAMgCCAefHwhAyAOIAOFQhCKIQ4gCSAOfCEJIAggCYVCP4ohCCAEIAUgH3x8IQQgDyAEhUIgiiEPIAogD3whCiAFIAqFQhiKIQUgBCAFICB8fCEEIA8gBIVCEIohDyAKIA98IQogBSAKhUI/iiEFIAEgBSAffHwhASANIAGFQiCKIQ0gCSANfCEJIAUgCYVCGIohBSABIAUgG3x8IQEgDSABhUIQiiENIAkgDXwhCSAFIAmFQj+KIQUgAiAGIBV8fCECIA4gAoVCIIohDiAKIA58IQogBiAKhUIYiiEGIAIgBiAZfHwhAiAOIAKFQhCKIQ4gCiAOfCEKIAYgCoVCP4ohBiADIAcgGnx8IQMgDyADhUIgiiEPIAsgD3whCyAHIAuFQhiKIQcgAyAHICB8fCEDIA8gA4VCEIohDyALIA98IQsgByALhUI/iiEHIAQgCCAefHwhBCAQIASFQiCKIRAgDCAQfCEMIAggDIVCGIohCCAEIAggF3x8IQQgECAEhUIQiiEQIAwgEHwhDCAIIAyFQj+KIQggASAGIBJ8fCEBIBAgAYVCIIohECALIBB8IQsgBiALhUIYiiEGIAEgBiAdfHwhASAQIAGFQhCKIRAgCyAQfCELIAYgC4VCP4ohBiACIAcgEXx8IQIgDSAChUIgiiENIAwgDXwhDCAHIAyFQhiKIQcgAiAHIBN8fCECIA0gAoVCEIohDSAMIA18IQwgByAMhUI/iiEHIAMgCCAcfHwhAyAOIAOFQiCKIQ4gCSAOfCEJIAggCYVCGIohCCADIAggGHx8IQMgDiADhUIQiiEOIAkgDnwhCSAIIAmFQj+KIQggBCAFIBZ8fCEEIA8gBIVCIIohDyAKIA98IQogBSAKhUIYiiEFIAQgBSAUfHwhBCAPIASFQhCKIQ8gCiAPfCEKIAUgCoVCP4ohBSABIAUgHHx8IQEgDSABhUIgiiENIAkgDXwhCSAFIAmFQhiKIQUgASAFIBl8fCEBIA0gAYVCEIohDSAJIA18IQkgBSAJhUI/iiEFIAIgBiAdfHwhAiAOIAKFQiCKIQ4gCiAOfCEKIAYgCoVCGIohBiACIAYgEXx8IQIgDiAChUIQiiEOIAogDnwhCiAGIAqFQj+KIQYgAyAHIBZ8fCEDIA8gA4VCIIohDyALIA98IQsgByALhUIYiiEHIAMgByATfHwhAyAPIAOFQhCKIQ8gCyAPfCELIAcgC4VCP4ohByAEIAggIHx8IQQgECAEhUIgiiEQIAwgEHwhDCAIIAyFQhiKIQggBCAIIB58fCEEIBAgBIVCEIohECAMIBB8IQwgCCAMhUI/iiEIIAEgBiAbfHwhASAQIAGFQiCKIRAgCyAQfCELIAYgC4VCGIohBiABIAYgH3x8IQEgECABhUIQiiEQIAsgEHwhCyAGIAuFQj+KIQYgAiAHIBR8fCECIA0gAoVCIIohDSAMIA18IQwgByAMhUIYiiEHIAIgByAXfHwhAiANIAKFQhCKIQ0gDCANfCEMIAcgDIVCP4ohByADIAggGHx8IQMgDiADhUIgiiEOIAkgDnwhCSAIIAmFQhiKIQggAyAIIBJ8fCEDIA4gA4VCEIohDiAJIA58IQkgCCAJhUI/iiEIIAQgBSAafHwhBCAPIASFQiCKIQ8gCiAPfCEKIAUgCoVCGIohBSAEIAUgFXx8IQQgDyAEhUIQiiEPIAogD3whCiAFIAqFQj+KIQUgASAFIBh8fCEBIA0gAYVCIIohDSAJIA18IQkgBSAJhUIYiiEFIAEgBSAafHwhASANIAGFQhCKIQ0gCSANfCEJIAUgCYVCP4ohBSACIAYgFHx8IQIgDiAChUIgiiEOIAogDnwhCiAGIAqFQhiKIQYgAiAGIBJ8fCECIA4gAoVCEIohDiAKIA58IQogBiAKhUI/iiEGIAMgByAefHwhAyAPIAOFQiCKIQ8gCyAPfCELIAcgC4VCGIohByADIAcgHXx8IQMgDyADhUIQiiEPIAsgD3whCyAHIAuFQj+KIQcgBCAIIBx8fCEEIBAgBIVCIIohECAMIBB8IQwgCCAMhUIYiiEIIAQgCCAffHwhBCAQIASFQhCKIRAgDCAQfCEMIAggDIVCP4ohCCABIAYgE3x8IQEgECABhUIgiiEQIAsgEHwhCyAGIAuFQhiKIQYgASAGIBd8fCEBIBAgAYVCEIohECALIBB8IQsgBiALhUI/iiEGIAIgByAWfHwhAiANIAKFQiCKIQ0gDCANfCEMIAcgDIVCGIohByACIAcgG3x8IQIgDSAChUIQiiENIAwgDXwhDCAHIAyFQj+KIQcgAyAIIBV8fCEDIA4gA4VCIIohDiAJIA58IQkgCCAJhUIYiiEIIAMgCCARfHwhAyAOIAOFQhCKIQ4gCSAOfCEJIAggCYVCP4ohCCAEIAUgIHx8IQQgDyAEhUIgiiEPIAogD3whCiAFIAqFQhiKIQUgBCAFIBl8fCEEIA8gBIVCEIohDyAKIA98IQogBSAKhUI/iiEFIAEgBSAafHwhASANIAGFQiCKIQ0gCSANfCEJIAUgCYVCGIohBSABIAUgEXx8IQEgDSABhUIQiiENIAkgDXwhCSAFIAmFQj+KIQUgAiAGIBZ8fCECIA4gAoVCIIohDiAKIA58IQogBiAKhUIYiiEGIAIgBiAYfHwhAiAOIAKFQhCKIQ4gCiAOfCEKIAYgCoVCP4ohBiADIAcgE3x8IQMgDyADhUIgiiEPIAsgD3whCyAHIAuFQhiKIQcgAyAHIBV8fCEDIA8gA4VCEIohDyALIA98IQsgByALhUI/iiEHIAQgCCAbfHwhBCAQIASFQiCKIRAgDCAQfCEMIAggDIVCGIohCCAEIAggIHx8IQQgECAEhUIQiiEQIAwgEHwhDCAIIAyFQj+KIQggASAGIB98fCEBIBAgAYVCIIohECALIBB8IQsgBiALhUIYiiEGIAEgBiASfHwhASAQIAGFQhCKIRAgCyAQfCELIAYgC4VCP4ohBiACIAcgHHx8IQIgDSAChUIgiiENIAwgDXwhDCAHIAyFQhiKIQcgAiAHIB18fCECIA0gAoVCEIohDSAMIA18IQwgByAMhUI/iiEHIAMgCCAXfHwhAyAOIAOFQiCKIQ4gCSAOfCEJIAggCYVCGIohCCADIAggGXx8IQMgDiADhUIQiiEOIAkgDnwhCSAIIAmFQj+KIQggBCAFIBR8fCEEIA8gBIVCIIohDyAKIA98IQogBSAKhUIYiiEFIAQgBSAefHwhBCAPIASFQhCKIQ8gCiAPfCEKIAUgCoVCP4ohBSABIAUgE3x8IQEgDSABhUIgiiENIAkgDXwhCSAFIAmFQhiKIQUgASAFIB18fCEBIA0gAYVCEIohDSAJIA18IQkgBSAJhUI/iiEFIAIgBiAXfHwhAiAOIAKFQiCKIQ4gCiAOfCEKIAYgCoVCGIohBiACIAYgG3x8IQIgDiAChUIQiiEOIAogDnwhCiAGIAqFQj+KIQYgAyAHIBF8fCEDIA8gA4VCIIohDyALIA98IQsgByALhUIYiiEHIAMgByAcfHwhAyAPIAOFQhCKIQ8gCyAPfCELIAcgC4VCP4ohByAEIAggGXx8IQQgECAEhUIgiiEQIAwgEHwhDCAIIAyFQhiKIQggBCAIIBR8fCEEIBAgBIVCEIohECAMIBB8IQwgCCAMhUI/iiEIIAEgBiAVfHwhASAQIAGFQiCKIRAgCyAQfCELIAYgC4VCGIohBiABIAYgHnx8IQEgECABhUIQiiEQIAsgEHwhCyAGIAuFQj+KIQYgAiAHIBh8fCECIA0gAoVCIIohDSAMIA18IQwgByAMhUIYiiEHIAIgByAWfHwhAiANIAKFQhCKIQ0gDCANfCEMIAcgDIVCP4ohByADIAggIHx8IQMgDiADhUIgiiEOIAkgDnwhCSAIIAmFQhiKIQggAyAIIB98fCEDIA4gA4VCEIohDiAJIA58IQkgCCAJhUI/iiEIIAQgBSASfHwhBCAPIASFQiCKIQ8gCiAPfCEKIAUgCoVCGIohBSAEIAUgGnx8IQQgDyAEhUIQiiEPIAogD3whCiAFIAqFQj+KIQUgASAFIB18fCEBIA0gAYVCIIohDSAJIA18IQkgBSAJhUIYiiEFIAEgBSAWfHwhASANIAGFQhCKIQ0gCSANfCEJIAUgCYVCP4ohBSACIAYgEnx8IQIgDiAChUIgiiEOIAogDnwhCiAGIAqFQhiKIQYgAiAGICB8fCECIA4gAoVCEIohDiAKIA58IQogBiAKhUI/iiEGIAMgByAffHwhAyAPIAOFQiCKIQ8gCyAPfCELIAcgC4VCGIohByADIAcgHnx8IQMgDyADhUIQiiEPIAsgD3whCyAHIAuFQj+KIQcgBCAIIBV8fCEEIBAgBIVCIIohECAMIBB8IQwgCCAMhUIYiiEIIAQgCCAbfHwhBCAQIASFQhCKIRAgDCAQfCEMIAggDIVCP4ohCCABIAYgEXx8IQEgECABhUIgiiEQIAsgEHwhCyAGIAuFQhiKIQYgASAGIBh8fCEBIBAgAYVCEIohECALIBB8IQsgBiALhUI/iiEGIAIgByAXfHwhAiANIAKFQiCKIQ0gDCANfCEMIAcgDIVCGIohByACIAcgFHx8IQIgDSAChUIQiiENIAwgDXwhDCAHIAyFQj+KIQcgAyAIIBp8fCEDIA4gA4VCIIohDiAJIA58IQkgCCAJhUIYiiEIIAMgCCATfHwhAyAOIAOFQhCKIQ4gCSAOfCEJIAggCYVCP4ohCCAEIAUgGXx8IQQgDyAEhUIgiiEPIAogD3whCiAFIAqFQhiKIQUgBCAFIBx8fCEEIA8gBIVCEIohDyAKIA98IQogBSAKhUI/iiEFIAEgBSAefHwhASANIAGFQiCKIQ0gCSANfCEJIAUgCYVCGIohBSABIAUgHHx8IQEgDSABhUIQiiENIAkgDXwhCSAFIAmFQj+KIQUgAiAGIBh8fCECIA4gAoVCIIohDiAKIA58IQogBiAKhUIYiiEGIAIgBiAffHwhAiAOIAKFQhCKIQ4gCiAOfCEKIAYgCoVCP4ohBiADIAcgHXx8IQMgDyADhUIgiiEPIAsgD3whCyAHIAuFQhiKIQcgAyAHIBJ8fCEDIA8gA4VCEIohDyALIA98IQsgByALhUI/iiEHIAQgCCAUfHwhBCAQIASFQiCKIRAgDCAQfCEMIAggDIVCGIohCCAEIAggGnx8IQQgECAEhUIQiiEQIAwgEHwhDCAIIAyFQj+KIQggASAGIBZ8fCEBIBAgAYVCIIohECALIBB8IQsgBiALhUIYiiEGIAEgBiARfHwhASAQIAGFQhCKIRAgCyAQfCELIAYgC4VCP4ohBiACIAcgIHx8IQIgDSAChUIgiiENIAwgDXwhDCAHIAyFQhiKIQcgAiAHIBV8fCECIA0gAoVCEIohDSAMIA18IQwgByAMhUI/iiEHIAMgCCAZfHwhAyAOIAOFQiCKIQ4gCSAOfCEJIAggCYVCGIohCCADIAggF3x8IQMgDiADhUIQiiEOIAkgDnwhCSAIIAmFQj+KIQggBCAFIBN8fCEEIA8gBIVCIIohDyAKIA98IQogBSAKhUIYiiEFIAQgBSAbfHwhBCAPIASFQhCKIQ8gCiAPfCEKIAUgCoVCP4ohBSABIAUgF3x8IQEgDSABhUIgiiENIAkgDXwhCSAFIAmFQhiKIQUgASAFICB8fCEBIA0gAYVCEIohDSAJIA18IQkgBSAJhUI/iiEFIAIgBiAffHwhAiAOIAKFQiCKIQ4gCiAOfCEKIAYgCoVCGIohBiACIAYgGnx8IQIgDiAChUIQiiEOIAogDnwhCiAGIAqFQj+KIQYgAyAHIBx8fCEDIA8gA4VCIIohDyALIA98IQsgByALhUIYiiEHIAMgByAUfHwhAyAPIAOFQhCKIQ8gCyAPfCELIAcgC4VCP4ohByAEIAggEXx8IQQgECAEhUIgiiEQIAwgEHwhDCAIIAyFQhiKIQggBCAIIBl8fCEEIBAgBIVCEIohECAMIBB8IQwgCCAMhUI/iiEIIAEgBiAdfHwhASAQIAGFQiCKIRAgCyAQfCELIAYgC4VCGIohBiABIAYgE3x8IQEgECABhUIQiiEQIAsgEHwhCyAGIAuFQj+KIQYgAiAHIB58fCECIA0gAoVCIIohDSAMIA18IQwgByAMhUIYiiEHIAIgByAYfHwhAiANIAKFQhCKIQ0gDCANfCEMIAcgDIVCP4ohByADIAggEnx8IQMgDiADhUIgiiEOIAkgDnwhCSAIIAmFQhiKIQggAyAIIBV8fCEDIA4gA4VCEIohDiAJIA58IQkgCCAJhUI/iiEIIAQgBSAbfHwhBCAPIASFQiCKIQ8gCiAPfCEKIAUgCoVCGIohBSAEIAUgFnx8IQQgDyAEhUIQiiEPIAogD3whCiAFIAqFQj+KIQUgASAFIBt8fCEBIA0gAYVCIIohDSAJIA18IQkgBSAJhUIYiiEFIAEgBSATfHwhASANIAGFQhCKIQ0gCSANfCEJIAUgCYVCP4ohBSACIAYgGXx8IQIgDiAChUIgiiEOIAogDnwhCiAGIAqFQhiKIQYgAiAGIBV8fCECIA4gAoVCEIohDiAKIA58IQogBiAKhUI/iiEGIAMgByAYfHwhAyAPIAOFQiCKIQ8gCyAPfCELIAcgC4VCGIohByADIAcgF3x8IQMgDyADhUIQiiEPIAsgD3whCyAHIAuFQj+KIQcgBCAIIBJ8fCEEIBAgBIVCIIohECAMIBB8IQwgCCAMhUIYiiEIIAQgCCAWfHwhBCAQIASFQhCKIRAgDCAQfCEMIAggDIVCP4ohCCABIAYgIHx8IQEgECABhUIgiiEQIAsgEHwhCyAGIAuFQhiKIQYgASAGIBx8fCEBIBAgAYVCEIohECALIBB8IQsgBiALhUI/iiEGIAIgByAafHwhAiANIAKFQiCKIQ0gDCANfCEMIAcgDIVCGIohByACIAcgH3x8IQIgDSAChUIQiiENIAwgDXwhDCAHIAyFQj+KIQcgAyAIIBR8fCEDIA4gA4VCIIohDiAJIA58IQkgCCAJhUIYiiEIIAMgCCAdfHwhAyAOIAOFQhCKIQ4gCSAOfCEJIAggCYVCP4ohCCAEIAUgHnx8IQQgDyAEhUIgiiEPIAogD3whCiAFIAqFQhiKIQUgBCAFIBF8fCEEIA8gBIVCEIohDyAKIA98IQogBSAKhUI/iiEFIAEgBSARfHwhASANIAGFQiCKIQ0gCSANfCEJIAUgCYVCGIohBSABIAUgEnx8IQEgDSABhUIQiiENIAkgDXwhCSAFIAmFQj+KIQUgAiAGIBN8fCECIA4gAoVCIIohDiAKIA58IQogBiAKhUIYiiEGIAIgBiAUfHwhAiAOIAKFQhCKIQ4gCiAOfCEKIAYgCoVCP4ohBiADIAcgFXx8IQMgDyADhUIgiiEPIAsgD3whCyAHIAuFQhiKIQcgAyAHIBZ8fCEDIA8gA4VCEIohDyALIA98IQsgByALhUI/iiEHIAQgCCAXfHwhBCAQIASFQiCKIRAgDCAQfCEMIAggDIVCGIohCCAEIAggGHx8IQQgECAEhUIQiiEQIAwgEHwhDCAIIAyFQj+KIQggASAGIBl8fCEBIBAgAYVCIIohECALIBB8IQsgBiALhUIYiiEGIAEgBiAafHwhASAQIAGFQhCKIRAgCyAQfCELIAYgC4VCP4ohBiACIAcgG3x8IQIgDSAChUIgiiENIAwgDXwhDCAHIAyFQhiKIQcgAiAHIBx8fCECIA0gAoVCEIohDSAMIA18IQwgByAMhUI/iiEHIAMgCCAdfHwhAyAOIAOFQiCKIQ4gCSAOfCEJIAggCYVCGIohCCADIAggHnx8IQMgDiADhUIQiiEOIAkgDnwhCSAIIAmFQj+KIQggBCAFIB98fCEEIA8gBIVCIIohDyAKIA98IQogBSAKhUIYiiEFIAQgBSAgfHwhBCAPIASFQhCKIQ8gCiAPfCEKIAUgCoVCP4ohBSABIAUgH3x8IQEgDSABhUIgiiENIAkgDXwhCSAFIAmFQhiKIQUgASAFIBt8fCEBIA0gAYVCEIohDSAJIA18IQkgBSAJhUI/iiEFIAIgBiAVfHwhAiAOIAKFQiCKIQ4gCiAOfCEKIAYgCoVCGIohBiACIAYgGXx8IQIgDiAChUIQiiEOIAogDnwhCiAGIAqFQj+KIQYgAyAHIBp8fCEDIA8gA4VCIIohDyALIA98IQsgByALhUIYiiEHIAMgByAgfHwhAyAPIAOFQhCKIQ8gCyAPfCELIAcgC4VCP4ohByAEIAggHnx8IQQgECAEhUIgiiEQIAwgEHwhDCAIIAyFQhiKIQggBCAIIBd8fCEEIBAgBIVCEIohECAMIBB8IQwgCCAMhUI/iiEIIAEgBiASfHwhASAQIAGFQiCKIRAgCyAQfCELIAYgC4VCGIohBiABIAYgHXx8IQEgECABhUIQiiEQIAsgEHwhCyAGIAuFQj+KIQYgAiAHIBF8fCECIA0gAoVCIIohDSAMIA18IQwgByAMhUIYiiEHIAIgByATfHwhAiANIAKFQhCKIQ0gDCANfCEMIAcgDIVCP4ohByADIAggHHx8IQMgDiADhUIgiiEOIAkgDnwhCSAIIAmFQhiKIQggAyAIIBh8fCEDIA4gA4VCEIohDiAJIA58IQkgCCAJhUI/iiEIIAQgBSAWfHwhBCAPIASFQiCKIQ8gCiAPfCEKIAUgCoVCGIohBSAEIAUgFHx8IQQgDyAEhUIQiiEPIAogD3whCiAFIAqFQj+KIQUgISAhKQMAIAEgCYWFNwMAICIgIikDACACIAqFhTcDACAjICMpAwAgAyALhYU3AwAgJCAkKQMAIAQgDIWFNwMAICUgJSkDACAFIA2FhTcDACAmICYpAwAgBiAOhYU3AwAgJyAnKQMAIAcgD4WFNwMAICggKCkDACAIIBCFhTcDAAs=");
}
});
// wasm-module:./blake2b.wat
var bytes = require_blake2b();
var compiled = WebAssembly.compile(bytes);
module.exports = async (imports) => {
const instance = await WebAssembly.instantiate(await compiled, imports);
return instance.exports;
};
/***/ }),
/***/ 1685:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var assert = __webpack_require__(6889)
var b4a = __webpack_require__(5682)
var wasm = null
var wasmPromise = typeof WebAssembly !== "undefined" && __webpack_require__(1892)().then(mod => {
wasm = mod
})
var head = 64
var freeList = []
module.exports = Blake2b
var BYTES_MIN = module.exports.BYTES_MIN = 16
var BYTES_MAX = module.exports.BYTES_MAX = 64
var BYTES = module.exports.BYTES = 32
var KEYBYTES_MIN = module.exports.KEYBYTES_MIN = 16
var KEYBYTES_MAX = module.exports.KEYBYTES_MAX = 64
var KEYBYTES = module.exports.KEYBYTES = 32
var SALTBYTES = module.exports.SALTBYTES = 16
var PERSONALBYTES = module.exports.PERSONALBYTES = 16
function Blake2b (digestLength, key, salt, personal, noAssert) {
if (!(this instanceof Blake2b)) return new Blake2b(digestLength, key, salt, personal, noAssert)
if (!wasm) throw new Error('WASM not loaded. Wait for Blake2b.ready(cb)')
if (!digestLength) digestLength = 32
if (noAssert !== true) {
assert(digestLength >= BYTES_MIN, 'digestLength must be at least ' + BYTES_MIN + ', was given ' + digestLength)
assert(digestLength <= BYTES_MAX, 'digestLength must be at most ' + BYTES_MAX + ', was given ' + digestLength)
if (key != null) {
assert(key instanceof Uint8Array, 'key must be Uint8Array or Buffer')
assert(key.length >= KEYBYTES_MIN, 'key must be at least ' + KEYBYTES_MIN + ', was given ' + key.length)
assert(key.length <= KEYBYTES_MAX, 'key must be at least ' + KEYBYTES_MAX + ', was given ' + key.length)
}
if (salt != null) {
assert(salt instanceof Uint8Array, 'salt must be Uint8Array or Buffer')
assert(salt.length === SALTBYTES, 'salt must be exactly ' + SALTBYTES + ', was given ' + salt.length)
}
if (personal != null) {
assert(personal instanceof Uint8Array, 'personal must be Uint8Array or Buffer')
assert(personal.length === PERSONALBYTES, 'personal must be exactly ' + PERSONALBYTES + ', was given ' + personal.length)
}
}
if (!freeList.length) {
freeList.push(head)
head += 216
}
this.digestLength = digestLength
this.finalized = false
this.pointer = freeList.pop()
this._memory = new Uint8Array(wasm.memory.buffer)
this._memory.fill(0, 0, 64)
this._memory[0] = this.digestLength
this._memory[1] = key ? key.length : 0
this._memory[2] = 1 // fanout
this._memory[3] = 1 // depth
if (salt) this._memory.set(salt, 32)
if (personal) this._memory.set(personal, 48)
if (this.pointer + 216 > this._memory.length) this._realloc(this.pointer + 216) // we need 216 bytes for the state
wasm.blake2b_init(this.pointer, this.digestLength)
if (key) {
this.update(key)
this._memory.fill(0, head, head + key.length) // whiteout key
this._memory[this.pointer + 200] = 128
}
}
Blake2b.prototype._realloc = function (size) {
wasm.memory.grow(Math.max(0, Math.ceil(Math.abs(size - this._memory.length) / 65536)))
this._memory = new Uint8Array(wasm.memory.buffer)
}
Blake2b.prototype.update = function (input) {
assert(this.finalized === false, 'Hash instance finalized')
assert(input instanceof Uint8Array, 'input must be Uint8Array or Buffer')
if (head + input.length > this._memory.length) this._realloc(head + input.length)
this._memory.set(input, head)
wasm.blake2b_update(this.pointer, head, head + input.length)
return this
}
Blake2b.prototype.digest = function (enc) {
assert(this.finalized === false, 'Hash instance finalized')
this.finalized = true
freeList.push(this.pointer)
wasm.blake2b_final(this.pointer)
if (!enc || enc === 'binary') {
return this._memory.slice(this.pointer + 128, this.pointer + 128 + this.digestLength)
}
if (typeof enc === 'string') {
return b4a.toString(this._memory, enc, this.pointer + 128, this.pointer + 128 + this.digestLength)
}
assert(enc instanceof Uint8Array && enc.length >= this.digestLength, 'input must be Uint8Array or Buffer')
for (var i = 0; i < this.digestLength; i++) {
enc[i] = this._memory[this.pointer + 128 + i]
}
return enc
}
// libsodium compat
Blake2b.prototype.final = Blake2b.prototype.digest
Blake2b.WASM = wasm
Blake2b.SUPPORTED = typeof WebAssembly !== 'undefined'
Blake2b.ready = function (cb) {
if (!cb) cb = noop
if (!wasmPromise) return cb(new Error('WebAssembly not supported'))
return wasmPromise.then(() => cb(), cb)
}
Blake2b.prototype.ready = Blake2b.ready
Blake2b.prototype.getPartialHash = function () {
return this._memory.slice(this.pointer, this.pointer + 216);
}
Blake2b.prototype.setPartialHash = function (ph) {
this._memory.set(ph, this.pointer);
}
function noop () {}
/***/ }),
/***/ 2206:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var assert = __webpack_require__(6889)
var b2wasm = __webpack_require__(1685)
// 64-bit unsigned addition
// Sets v[a,a+1] += v[b,b+1]
// v should be a Uint32Array
function ADD64AA (v, a, b) {
var o0 = v[a] + v[b]
var o1 = v[a + 1] + v[b + 1]
if (o0 >= 0x100000000) {
o1++
}
v[a] = o0
v[a + 1] = o1
}
// 64-bit unsigned addition
// Sets v[a,a+1] += b
// b0 is the low 32 bits of b, b1 represents the high 32 bits
function ADD64AC (v, a, b0, b1) {
var o0 = v[a] + b0
if (b0 < 0) {
o0 += 0x100000000
}
var o1 = v[a + 1] + b1
if (o0 >= 0x100000000) {
o1++
}
v[a] = o0
v[a + 1] = o1
}
// Little-endian byte access
function B2B_GET32 (arr, i) {
return (arr[i] ^
(arr[i + 1] << 8) ^
(arr[i + 2] << 16) ^
(arr[i + 3] << 24))
}
// G Mixing function
// The ROTRs are inlined for speed
function B2B_G (a, b, c, d, ix, iy) {
var x0 = m[ix]
var x1 = m[ix + 1]
var y0 = m[iy]
var y1 = m[iy + 1]
ADD64AA(v, a, b) // v[a,a+1] += v[b,b+1] ... in JS we must store a uint64 as two uint32s
ADD64AC(v, a, x0, x1) // v[a, a+1] += x ... x0 is the low 32 bits of x, x1 is the high 32 bits
// v[d,d+1] = (v[d,d+1] xor v[a,a+1]) rotated to the right by 32 bits
var xor0 = v[d] ^ v[a]
var xor1 = v[d + 1] ^ v[a + 1]
v[d] = xor1
v[d + 1] = xor0
ADD64AA(v, c, d)
// v[b,b+1] = (v[b,b+1] xor v[c,c+1]) rotated right by 24 bits
xor0 = v[b] ^ v[c]
xor1 = v[b + 1] ^ v[c + 1]
v[b] = (xor0 >>> 24) ^ (xor1 << 8)
v[b + 1] = (xor1 >>> 24) ^ (xor0 << 8)
ADD64AA(v, a, b)
ADD64AC(v, a, y0, y1)
// v[d,d+1] = (v[d,d+1] xor v[a,a+1]) rotated right by 16 bits
xor0 = v[d] ^ v[a]
xor1 = v[d + 1] ^ v[a + 1]
v[d] = (xor0 >>> 16) ^ (xor1 << 16)
v[d + 1] = (xor1 >>> 16) ^ (xor0 << 16)
ADD64AA(v, c, d)
// v[b,b+1] = (v[b,b+1] xor v[c,c+1]) rotated right by 63 bits
xor0 = v[b] ^ v[c]
xor1 = v[b + 1] ^ v[c + 1]
v[b] = (xor1 >>> 31) ^ (xor0 << 1)
v[b + 1] = (xor0 >>> 31) ^ (xor1 << 1)
}
// Initialization Vector
var BLAKE2B_IV32 = new Uint32Array([
0xF3BCC908, 0x6A09E667, 0x84CAA73B, 0xBB67AE85,
0xFE94F82B, 0x3C6EF372, 0x5F1D36F1, 0xA54FF53A,
0xADE682D1, 0x510E527F, 0x2B3E6C1F, 0x9B05688C,
0xFB41BD6B, 0x1F83D9AB, 0x137E2179, 0x5BE0CD19
])
var SIGMA8 = [
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3,
11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4,
7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8,
9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13,
2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9,
12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11,
13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10,
6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5,
10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0,
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3
]
// These are offsets into a uint64 buffer.
// Multiply them all by 2 to make them offsets into a uint32 buffer,
// because this is Javascript and we don't have uint64s
var SIGMA82 = new Uint8Array(SIGMA8.map(function (x) { return x * 2 }))
// Compression function. 'last' flag indicates last block.
// Note we're representing 16 uint64s as 32 uint32s
var v = new Uint32Array(32)
var m = new Uint32Array(32)
function blake2bCompress (ctx, last) {
var i = 0
// init work variables
for (i = 0; i < 16; i++) {
v[i] = ctx.h[i]
v[i + 16] = BLAKE2B_IV32[i]
}
// low 64 bits of offset
v[24] = v[24] ^ ctx.t
v[25] = v[25] ^ (ctx.t / 0x100000000)
// high 64 bits not supported, offset may not be higher than 2**53-1
// last block flag set ?
if (last) {
v[28] = ~v[28]
v[29] = ~v[29]
}
// get little-endian words
for (i = 0; i < 32; i++) {
m[i] = B2B_GET32(ctx.b, 4 * i)
}
// twelve rounds of mixing
for (i = 0; i < 12; i++) {
B2B_G(0, 8, 16, 24, SIGMA82[i * 16 + 0], SIGMA82[i * 16 + 1])
B2B_G(2, 10, 18, 26, SIGMA82[i * 16 + 2], SIGMA82[i * 16 + 3])
B2B_G(4, 12, 20, 28, SIGMA82[i * 16 + 4], SIGMA82[i * 16 + 5])
B2B_G(6, 14, 22, 30, SIGMA82[i * 16 + 6], SIGMA82[i * 16 + 7])
B2B_G(0, 10, 20, 30, SIGMA82[i * 16 + 8], SIGMA82[i * 16 + 9])
B2B_G(2, 12, 22, 24, SIGMA82[i * 16 + 10], SIGMA82[i * 16 + 11])
B2B_G(4, 14, 16, 26, SIGMA82[i * 16 + 12], SIGMA82[i * 16 + 13])
B2B_G(6, 8, 18, 28, SIGMA82[i * 16 + 14], SIGMA82[i * 16 + 15])
}
for (i = 0; i < 16; i++) {
ctx.h[i] = ctx.h[i] ^ v[i] ^ v[i + 16]
}
}
// reusable parameter_block
var parameter_block = new Uint8Array([
0, 0, 0, 0, // 0: outlen, keylen, fanout, depth
0, 0, 0, 0, // 4: leaf length, sequential mode
0, 0, 0, 0, // 8: node offset
0, 0, 0, 0, // 12: node offset
0, 0, 0, 0, // 16: node depth, inner length, rfu
0, 0, 0, 0, // 20: rfu
0, 0, 0, 0, // 24: rfu
0, 0, 0, 0, // 28: rfu
0, 0, 0, 0, // 32: salt
0, 0, 0, 0, // 36: salt
0, 0, 0, 0, // 40: salt
0, 0, 0, 0, // 44: salt
0, 0, 0, 0, // 48: personal
0, 0, 0, 0, // 52: personal
0, 0, 0, 0, // 56: personal
0, 0, 0, 0 // 60: personal
])
// Creates a BLAKE2b hashing context
// Requires an output length between 1 and 64 bytes
// Takes an optional Uint8Array key
function Blake2b (outlen, key, salt, personal) {
// zero out parameter_block before usage
parameter_block.fill(0)
// state, 'param block'
this.b = new Uint8Array(128)
this.h = new Uint32Array(16)
this.t = 0 // input count
this.c = 0 // pointer within buffer
this.outlen = outlen // output length in bytes
parameter_block[0] = outlen
if (key) parameter_block[1] = key.length
parameter_block[2] = 1 // fanout
parameter_block[3] = 1 // depth
if (salt) parameter_block.set(salt, 32)
if (personal) parameter_block.set(personal, 48)
// initialize hash state
for (var i = 0; i < 16; i++) {
this.h[i] = BLAKE2B_IV32[i] ^ B2B_GET32(parameter_block, i * 4)
}
// key the hash, if applicable
if (key) {
blake2bUpdate(this, key)
// at the end
this.c = 128
}
}
Blake2b.prototype.update = function (input) {
assert(input instanceof Uint8Array, 'input must be Uint8Array or Buffer')
blake2bUpdate(this, input)
return this
}
Blake2b.prototype.digest = function (out) {
var buf = (!out || out === 'binary' || out === 'hex') ? new Uint8Array(this.outlen) : out
assert(buf instanceof Uint8Array, 'out must be "binary", "hex", Uint8Array, or Buffer')
assert(buf.length >= this.outlen, 'out must have at least outlen bytes of space')
blake2bFinal(this, buf)
if (out === 'hex') return hexSlice(buf)
return buf
}
Blake2b.prototype.final = Blake2b.prototype.digest
Blake2b.ready = function (cb) {
b2wasm.ready(function () {
cb() // ignore the error
})
}
// Updates a BLAKE2b streaming hash
// Requires hash context and Uint8Array (byte array)
function blake2bUpdate (ctx, input) {
for (var i = 0; i < input.length; i++) {
if (ctx.c === 128) { // buffer full ?
ctx.t += ctx.c // add counters
blake2bCompress(ctx, false) // compress (not last)
ctx.c = 0 // counter to zero
}
ctx.b[ctx.c++] = input[i]
}
}
// Completes a BLAKE2b streaming hash
// Returns a Uint8Array containing the message digest
function blake2bFinal (ctx, out) {
ctx.t += ctx.c // mark last block offset
while (ctx.c < 128) { // fill up with zeros
ctx.b[ctx.c++] = 0
}
blake2bCompress(ctx, true) // final block flag = 1
for (var i = 0; i < ctx.outlen; i++) {
out[i] = ctx.h[i >> 2] >> (8 * (i & 3))
}
return out
}
function hexSlice (buf) {
var str = ''
for (var i = 0; i < buf.length; i++) str += toHex(buf[i])
return str
}
function toHex (n) {
if (n < 16) return '0' + n.toString(16)
return n.toString(16)
}
var Proto = Blake2b
module.exports = function createHash (outlen, key, salt, personal, noAssert) {
if (noAssert !== true) {
assert(outlen >= BYTES_MIN, 'outlen must be at least ' + BYTES_MIN + ', was given ' + outlen)
assert(outlen <= BYTES_MAX, 'outlen must be at most ' + BYTES_MAX + ', was given ' + outlen)
if (key != null) {
assert(key instanceof Uint8Array, 'key must be Uint8Array or Buffer')
assert(key.length >= KEYBYTES_MIN, 'key must be at least ' + KEYBYTES_MIN + ', was given ' + key.length)
assert(key.length <= KEYBYTES_MAX, 'key must be at most ' + KEYBYTES_MAX + ', was given ' + key.length)
}
if (salt != null) {
assert(salt instanceof Uint8Array, 'salt must be Uint8Array or Buffer')
assert(salt.length === SALTBYTES, 'salt must be exactly ' + SALTBYTES + ', was given ' + salt.length)
}
if (personal != null) {
assert(personal instanceof Uint8Array, 'personal must be Uint8Array or Buffer')
assert(personal.length === PERSONALBYTES, 'personal must be exactly ' + PERSONALBYTES + ', was given ' + personal.length)
}
}
return new Proto(outlen, key, salt, personal)
}
module.exports.ready = function (cb) {
b2wasm.ready(function () { // ignore errors
cb()
})
}
module.exports.WASM_SUPPORTED = b2wasm.SUPPORTED
module.exports.WASM_LOADED = false
var BYTES_MIN = module.exports.BYTES_MIN = 16
var BYTES_MAX = module.exports.BYTES_MAX = 64
var BYTES = module.exports.BYTES = 32
var KEYBYTES_MIN = module.exports.KEYBYTES_MIN = 16
var KEYBYTES_MAX = module.exports.KEYBYTES_MAX = 64
var KEYBYTES = module.exports.KEYBYTES = 32
var SALTBYTES = module.exports.SALTBYTES = 16
var PERSONALBYTES = module.exports.PERSONALBYTES = 16
b2wasm.ready(function (err) {
if (!err) {
module.exports.WASM_LOADED = true
module.exports = b2wasm
}
})
/***/ }),
/***/ 9404:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
/* module decorator */ module = __webpack_require__.nmd(module);
(function (module, exports) {
'use strict';
// Utils
function assert (val, msg) {
if (!val) throw new Error(msg || 'Assertion failed');
}
// Could use `inherits` module, but don't want to move from single file
// architecture yet.
function inherits (ctor, superCtor) {
ctor.super_ = superCtor;
var TempCtor = function () {};
TempCtor.prototype = superCtor.prototype;
ctor.prototype = new TempCtor();
ctor.prototype.constructor = ctor;
}
// BN
function BN (number, base, endian) {
if (BN.isBN(number)) {
return number;
}
this.negative = 0;
this.words = null;
this.length = 0;
// Reduction context
this.red = null;
if (number !== null) {
if (base === 'le' || base === 'be') {
endian = base;
base = 10;
}
this._init(number || 0, base || 10, endian || 'be');
}
}
if (typeof module === 'object') {
module.exports = BN;
} else {
exports.BN = BN;
}
BN.BN = BN;
BN.wordSize = 26;
var Buffer;
try {
if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {
Buffer = window.Buffer;
} else {
Buffer = (__webpack_require__(7790).Buffer);
}
} catch (e) {
}
BN.isBN = function isBN (num) {
if (num instanceof BN) {
return true;
}
return num !== null && typeof num === 'object' &&
num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);
};
BN.max = function max (left, right) {
if (left.cmp(right) > 0) return left;
return right;
};
BN.min = function min (left, right) {
if (left.cmp(right) < 0) return left;
return right;
};
BN.prototype._init = function init (number, base, endian) {
if (typeof number === 'number') {
return this._initNumber(number, base, endian);
}
if (typeof number === 'object') {
return this._initArray(number, base, endian);
}
if (base === 'hex') {
base = 16;
}
assert(base === (base | 0) && base >= 2 && base <= 36);
number = number.toString().replace(/\s+/g, '');
var start = 0;
if (number[0] === '-') {
start++;
this.negative = 1;
}
if (start < number.length) {
if (base === 16) {
this._parseHex(number, start, endian);
} else {
this._parseBase(number, base, start);
if (endian === 'le') {
this._initArray(this.toArray(), base, endian);
}
}
}
};
BN.prototype._initNumber = function _initNumber (number, base, endian) {
if (number < 0) {
this.negative = 1;
number = -number;
}
if (number < 0x4000000) {
this.words = [number & 0x3ffffff];
this.length = 1;
} else if (number < 0x10000000000000) {
this.words = [
number & 0x3ffffff,
(number / 0x4000000) & 0x3ffffff
];
this.length = 2;
} else {
assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)
this.words = [
number & 0x3ffffff,
(number / 0x4000000) & 0x3ffffff,
1
];
this.length = 3;
}
if (endian !== 'le') return;
// Reverse the bytes
this._initArray(this.toArray(), base, endian);
};
BN.prototype._initArray = function _initArray (number, base, endian) {
// Perhaps a Uint8Array
assert(typeof number.length === 'number');
if (number.length <= 0) {
this.words = [0];
this.length = 1;
return this;
}
this.length = Math.ceil(number.length / 3);
this.words = new Array(this.length);
for (var i = 0; i < this.length; i++) {
this.words[i] = 0;
}
var j, w;
var off = 0;
if (endian === 'be') {
for (i = number.length - 1, j = 0; i >= 0; i -= 3) {
w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);
this.words[j] |= (w << off) & 0x3ffffff;
this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
off += 24;
if (off >= 26) {
off -= 26;
j++;
}
}
} else if (endian === 'le') {
for (i = 0, j = 0; i < number.length; i += 3) {
w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);
this.words[j] |= (w << off) & 0x3ffffff;
this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
off += 24;
if (off >= 26) {
off -= 26;
j++;
}
}
}
return this._strip();
};
function parseHex4Bits (string, index) {
var c = string.charCodeAt(index);
// '0' - '9'
if (c >= 48 && c <= 57) {
return c - 48;
// 'A' - 'F'
} else if (c >= 65 && c <= 70) {
return c - 55;
// 'a' - 'f'
} else if (c >= 97 && c <= 102) {
return c - 87;
} else {
assert(false, 'Invalid character in ' + string);
}
}
function parseHexByte (string, lowerBound, index) {
var r = parseHex4Bits(string, index);
if (index - 1 >= lowerBound) {
r |= parseHex4Bits(string, index - 1) << 4;
}
return r;
}
BN.prototype._parseHex = function _parseHex (number, start, endian) {
// Create possibly bigger array to ensure that it fits the number
this.length = Math.ceil((number.length - start) / 6);
this.words = new Array(this.length);
for (var i = 0; i < this.length; i++) {
this.words[i] = 0;
}
// 24-bits chunks
var off = 0;
var j = 0;
var w;
if (endian === 'be') {
for (i = number.length - 1; i >= start; i -= 2) {
w = parseHexByte(number, start, i) << off;
this.words[j] |= w & 0x3ffffff;
if (off >= 18) {
off -= 18;
j += 1;
this.words[j] |= w >>> 26;
} else {
off += 8;
}
}
} else {
var parseLength = number.length - start;
for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {
w = parseHexByte(number, start, i) << off;
this.words[j] |= w & 0x3ffffff;
if (off >= 18) {
off -= 18;
j += 1;
this.words[j] |= w >>> 26;
} else {
off += 8;
}
}
}
this._strip();
};
function parseBase (str, start, end, mul) {
var r = 0;
var b = 0;
var len = Math.min(str.length, end);
for (var i = start; i < len; i++) {
var c = str.charCodeAt(i) - 48;
r *= mul;
// 'a'
if (c >= 49) {
b = c - 49 + 0xa;
// 'A'
} else if (c >= 17) {
b = c - 17 + 0xa;
// '0' - '9'
} else {
b = c;
}
assert(c >= 0 && b < mul, 'Invalid character');
r += b;
}
return r;
}
BN.prototype._parseBase = function _parseBase (number, base, start) {
// Initialize as zero
this.words = [0];
this.length = 1;
// Find length of limb in base
for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {
limbLen++;
}
limbLen--;
limbPow = (limbPow / base) | 0;
var total = number.length - start;
var mod = total % limbLen;
var end = Math.min(total, total - mod) + start;
var word = 0;
for (var i = start; i < end; i += limbLen) {
word = parseBase(number, i, i + limbLen, base);
this.imuln(limbPow);
if (this.words[0] + word < 0x4000000) {
this.words[0] += word;
} else {
this._iaddn(word);
}
}
if (mod !== 0) {
var pow = 1;
word = parseBase(number, i, number.length, base);
for (i = 0; i < mod; i++) {
pow *= base;
}
this.imuln(pow);
if (this.words[0] + word < 0x4000000) {
this.words[0] += word;
} else {
this._iaddn(word);
}
}
this._strip();
};
BN.prototype.copy = function copy (dest) {
dest.words = new Array(this.length);
for (var i = 0; i < this.length; i++) {
dest.words[i] = this.words[i];
}
dest.length = this.length;
dest.negative = this.negative;
dest.red = this.red;
};
function move (dest, src) {
dest.words = src.words;
dest.length = src.length;
dest.negative = src.negative;
dest.red = src.red;
}
BN.prototype._move = function _move (dest) {
move(dest, this);
};
BN.prototype.clone = function clone () {
var r = new BN(null);
this.copy(r);
return r;
};
BN.prototype._expand = function _expand (size) {
while (this.length < size) {
this.words[this.length++] = 0;
}
return this;
};
// Remove leading `0` from `this`
BN.prototype._strip = function strip () {
while (this.length > 1 && this.words[this.length - 1] === 0) {
this.length--;
}
return this._normSign();
};
BN.prototype._normSign = function _normSign () {
// -0 = 0
if (this.length === 1 && this.words[0] === 0) {
this.negative = 0;
}
return this;
};
// Check Symbol.for because not everywhere where Symbol defined
// See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility
if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {
try {
BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;
} catch (e) {
BN.prototype.inspect = inspect;
}
} else {
BN.prototype.inspect = inspect;
}
function inspect () {
return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';
}
/*
var zeros = [];
var groupSizes = [];
var groupBases = [];
var s = '';
var i = -1;
while (++i < BN.wordSize) {
zeros[i] = s;
s += '0';
}
groupSizes[0] = 0;
groupSizes[1] = 0;
groupBases[0] = 0;
groupBases[1] = 0;
var base = 2 - 1;
while (++base < 36 + 1) {
var groupSize = 0;
var groupBase = 1;
while (groupBase < (1 << BN.wordSize) / base) {
groupBase *= base;
groupSize += 1;
}
groupSizes[base] = groupSize;
groupBases[base] = groupBase;
}
*/
var zeros = [
'',
'0',
'00',
'000',
'0000',
'00000',
'000000',
'0000000',
'00000000',
'000000000',
'0000000000',
'00000000000',
'000000000000',
'0000000000000',
'00000000000000',
'000000000000000',
'0000000000000000',
'00000000000000000',
'000000000000000000',
'0000000000000000000',
'00000000000000000000',
'000000000000000000000',
'0000000000000000000000',
'00000000000000000000000',
'000000000000000000000000',
'0000000000000000000000000'
];
var groupSizes = [
0, 0,
25, 16, 12, 11, 10, 9, 8,
8, 7, 7, 7, 7, 6, 6,
6, 6, 6, 6, 6, 5, 5,
5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5
];
var groupBases = [
0, 0,
33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,
43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,
16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,
6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,
24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176
];
BN.prototype.toString = function toString (base, padding) {
base = base || 10;
padding = padding | 0 || 1;
var out;
if (base === 16 || base === 'hex') {
out = '';
var off = 0;
var carry = 0;
for (var i = 0; i < this.length; i++) {
var w = this.words[i];
var word = (((w << off) | carry) & 0xffffff).toString(16);
carry = (w >>> (24 - off)) & 0xffffff;
off += 2;
if (off >= 26) {
off -= 26;
i--;
}
if (carry !== 0 || i !== this.length - 1) {
out = zeros[6 - word.length] + word + out;
} else {
out = word + out;
}
}
if (carry !== 0) {
out = carry.toString(16) + out;
}
while (out.length % padding !== 0) {
out = '0' + out;
}
if (this.negative !== 0) {
out = '-' + out;
}
return out;
}
if (base === (base | 0) && base >= 2 && base <= 36) {
// var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));
var groupSize = groupSizes[base];
// var groupBase = Math.pow(base, groupSize);
var groupBase = groupBases[base];
out = '';
var c = this.clone();
c.negative = 0;
while (!c.isZero()) {
var r = c.modrn(groupBase).toString(base);
c = c.idivn(groupBase);
if (!c.isZero()) {
out = zeros[groupSize - r.length] + r + out;
} else {
out = r + out;
}
}
if (this.isZero()) {
out = '0' + out;
}
while (out.length % padding !== 0) {
out = '0' + out;
}
if (this.negative !== 0) {
out = '-' + out;
}
return out;
}
assert(false, 'Base should be between 2 and 36');
};
BN.prototype.toNumber = function toNumber () {
var ret = this.words[0];
if (this.length === 2) {
ret += this.words[1] * 0x4000000;
} else if (this.length === 3 && this.words[2] === 0x01) {
// NOTE: at this stage it is known that the top bit is set
ret += 0x10000000000000 + (this.words[1] * 0x4000000);
} else if (this.length > 2) {
assert(false, 'Number can only safely store up to 53 bits');
}
return (this.negative !== 0) ? -ret : ret;
};
BN.prototype.toJSON = function toJSON () {
return this.toString(16, 2);
};
if (Buffer) {
BN.prototype.toBuffer = function toBuffer (endian, length) {
return this.toArrayLike(Buffer, endian, length);
};
}
BN.prototype.toArray = function toArray (endian, length) {
return this.toArrayLike(Array, endian, length);
};
var allocate = function allocate (ArrayType, size) {
if (ArrayType.allocUnsafe) {
return ArrayType.allocUnsafe(size);
}
return new ArrayType(size);
};
BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {
this._strip();
var byteLength = this.byteLength();
var reqLength = length || Math.max(1, byteLength);
assert(byteLength <= reqLength, 'byte array longer than desired length');
assert(reqLength > 0, 'Requested array length <= 0');
var res = allocate(ArrayType, reqLength);
var postfix = endian === 'le' ? 'LE' : 'BE';
this['_toArrayLike' + postfix](res, byteLength);
return res;
};
BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {
var position = 0;
var carry = 0;
for (var i = 0, shift = 0; i < this.length; i++) {
var word = (this.words[i] << shift) | carry;
res[position++] = word & 0xff;
if (position < res.length) {
res[position++] = (word >> 8) & 0xff;
}
if (position < res.length) {
res[position++] = (word >> 16) & 0xff;
}
if (shift === 6) {
if (position < res.length) {
res[position++] = (word >> 24) & 0xff;
}
carry = 0;
shift = 0;
} else {
carry = word >>> 24;
shift += 2;
}
}
if (position < res.length) {
res[position++] = carry;
while (position < res.length) {
res[position++] = 0;
}
}
};
BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {
var position = res.length - 1;
var carry = 0;
for (var i = 0, shift = 0; i < this.length; i++) {
var word = (this.words[i] << shift) | carry;
res[position--] = word & 0xff;
if (position >= 0) {
res[position--] = (word >> 8) & 0xff;
}
if (position >= 0) {
res[position--] = (word >> 16) & 0xff;
}
if (shift === 6) {
if (position >= 0) {
res[position--] = (word >> 24) & 0xff;
}
carry = 0;
shift = 0;
} else {
carry = word >>> 24;
shift += 2;
}
}
if (position >= 0) {
res[position--] = carry;
while (position >= 0) {
res[position--] = 0;
}
}
};
if (Math.clz32) {
BN.prototype._countBits = function _countBits (w) {
return 32 - Math.clz32(w);
};
} else {
BN.prototype._countBits = function _countBits (w) {
var t = w;
var r = 0;
if (t >= 0x1000) {
r += 13;
t >>>= 13;
}
if (t >= 0x40) {
r += 7;
t >>>= 7;
}
if (t >= 0x8) {
r += 4;
t >>>= 4;
}
if (t >= 0x02) {
r += 2;
t >>>= 2;
}
return r + t;
};
}
BN.prototype._zeroBits = function _zeroBits (w) {
// Short-cut
if (w === 0) return 26;
var t = w;
var r = 0;
if ((t & 0x1fff) === 0) {
r += 13;
t >>>= 13;
}
if ((t & 0x7f) === 0) {
r += 7;
t >>>= 7;
}
if ((t & 0xf) === 0) {
r += 4;
t >>>= 4;
}
if ((t & 0x3) === 0) {
r += 2;
t >>>= 2;
}
if ((t & 0x1) === 0) {
r++;
}
return r;
};
// Return number of used bits in a BN
BN.prototype.bitLength = function bitLength () {
var w = this.words[this.length - 1];
var hi = this._countBits(w);
return (this.length - 1) * 26 + hi;
};
function toBitArray (num) {
var w = new Array(num.bitLength());
for (var bit = 0; bit < w.length; bit++) {
var off = (bit / 26) | 0;
var wbit = bit % 26;
w[bit] = (num.words[off] >>> wbit) & 0x01;
}
return w;
}
// Number of trailing zero bits
BN.prototype.zeroBits = function zeroBits () {
if (this.isZero()) return 0;
var r = 0;
for (var i = 0; i < this.length; i++) {
var b = this._zeroBits(this.words[i]);
r += b;
if (b !== 26) break;
}
return r;
};
BN.prototype.byteLength = function byteLength () {
return Math.ceil(this.bitLength() / 8);
};
BN.prototype.toTwos = function toTwos (width) {
if (this.negative !== 0) {
return this.abs().inotn(width).iaddn(1);
}
return this.clone();
};
BN.prototype.fromTwos = function fromTwos (width) {
if (this.testn(width - 1)) {
return this.notn(width).iaddn(1).ineg();
}
return this.clone();
};
BN.prototype.isNeg = function isNeg () {
return this.negative !== 0;
};
// Return negative clone of `this`
BN.prototype.neg = function neg () {
return this.clone().ineg();
};
BN.prototype.ineg = function ineg () {
if (!this.isZero()) {
this.negative ^= 1;
}
return this;
};
// Or `num` with `this` in-place
BN.prototype.iuor = function iuor (num) {
while (this.length < num.length) {
this.words[this.length++] = 0;
}
for (var i = 0; i < num.length; i++) {
this.words[i] = this.words[i] | num.words[i];
}
return this._strip();
};
BN.prototype.ior = function ior (num) {
assert((this.negative | num.negative) === 0);
return this.iuor(num);
};
// Or `num` with `this`
BN.prototype.or = function or (num) {
if (this.length > num.length) return this.clone().ior(num);
return num.clone().ior(this);
};
BN.prototype.uor = function uor (num) {
if (this.length > num.length) return this.clone().iuor(num);
return num.clone().iuor(this);
};
// And `num` with `this` in-place
BN.prototype.iuand = function iuand (num) {
// b = min-length(num, this)
var b;
if (this.length > num.length) {
b = num;
} else {
b = this;
}
for (var i = 0; i < b.length; i++) {
this.words[i] = this.words[i] & num.words[i];
}
this.length = b.length;
return this._strip();
};
BN.prototype.iand = function iand (num) {
assert((this.negative | num.negative) === 0);
return this.iuand(num);
};
// And `num` with `this`
BN.prototype.and = function and (num) {
if (this.length > num.length) return this.clone().iand(num);
return num.clone().iand(this);
};
BN.prototype.uand = function uand (num) {
if (this.length > num.length) return this.clone().iuand(num);
return num.clone().iuand(this);
};
// Xor `num` with `this` in-place
BN.prototype.iuxor = function iuxor (num) {
// a.length > b.length
var a;
var b;
if (this.length > num.length) {
a = this;
b = num;
} else {
a = num;
b = this;
}
for (var i = 0; i < b.length; i++) {
this.words[i] = a.words[i] ^ b.words[i];
}
if (this !== a) {
for (; i < a.length; i++) {
this.words[i] = a.words[i];
}
}
this.length = a.length;
return this._strip();
};
BN.prototype.ixor = function ixor (num) {
assert((this.negative | num.negative) === 0);
return this.iuxor(num);
};
// Xor `num` with `this`
BN.prototype.xor = function xor (num) {
if (this.length > num.length) return this.clone().ixor(num);
return num.clone().ixor(this);
};
BN.prototype.uxor = function uxor (num) {
if (this.length > num.length) return this.clone().iuxor(num);
return num.clone().iuxor(this);
};
// Not ``this`` with ``width`` bitwidth
BN.prototype.inotn = function inotn (width) {
assert(typeof width === 'number' && width >= 0);
var bytesNeeded = Math.ceil(width / 26) | 0;
var bitsLeft = width % 26;
// Extend the buffer with leading zeroes
this._expand(bytesNeeded);
if (bitsLeft > 0) {
bytesNeeded--;
}
// Handle complete words
for (var i = 0; i < bytesNeeded; i++) {
this.words[i] = ~this.words[i] & 0x3ffffff;
}
// Handle the residue
if (bitsLeft > 0) {
this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));
}
// And remove leading zeroes
return this._strip();
};
BN.prototype.notn = function notn (width) {
return this.clone().inotn(width);
};
// Set `bit` of `this`
BN.prototype.setn = function setn (bit, val) {
assert(typeof bit === 'number' && bit >= 0);
var off = (bit / 26) | 0;
var wbit = bit % 26;
this._expand(off + 1);
if (val) {
this.words[off] = this.words[off] | (1 << wbit);
} else {
this.words[off] = this.words[off] & ~(1 << wbit);
}
return this._strip();
};
// Add `num` to `this` in-place
BN.prototype.iadd = function iadd (num) {
var r;
// negative + positive
if (this.negative !== 0 && num.negative === 0) {
this.negative = 0;
r = this.isub(num);
this.negative ^= 1;
return this._normSign();
// positive + negative
} else if (this.negative === 0 && num.negative !== 0) {
num.negative = 0;
r = this.isub(num);
num.negative = 1;
return r._normSign();
}
// a.length > b.length
var a, b;
if (this.length > num.length) {
a = this;
b = num;
} else {
a = num;
b = this;
}
var carry = 0;
for (var i = 0; i < b.length; i++) {
r = (a.words[i] | 0) + (b.words[i] | 0) + carry;
this.words[i] = r & 0x3ffffff;
carry = r >>> 26;
}
for (; carry !== 0 && i < a.length; i++) {
r = (a.words[i] | 0) + carry;
this.words[i] = r & 0x3ffffff;
carry = r >>> 26;
}
this.length = a.length;
if (carry !== 0) {
this.words[this.length] = carry;
this.length++;
// Copy the rest of the words
} else if (a !== this) {
for (; i < a.length; i++) {
this.words[i] = a.words[i];
}
}
return this;
};
// Add `num` to `this`
BN.prototype.add = function add (num) {
var res;
if (num.negative !== 0 && this.negative === 0) {
num.negative = 0;
res = this.sub(num);
num.negative ^= 1;
return res;
} else if (num.negative === 0 && this.negative !== 0) {
this.negative = 0;
res = num.sub(this);
this.negative = 1;
return res;
}
if (this.length > num.length) return this.clone().iadd(num);
return num.clone().iadd(this);
};
// Subtract `num` from `this` in-place
BN.prototype.isub = function isub (num) {
// this - (-num) = this + num
if (num.negative !== 0) {
num.negative = 0;
var r = this.iadd(num);
num.negative = 1;
return r._normSign();
// -this - num = -(this + num)
} else if (this.negative !== 0) {
this.negative = 0;
this.iadd(num);
this.negative = 1;
return this._normSign();
}
// At this point both numbers are positive
var cmp = this.cmp(num);
// Optimization - zeroify
if (cmp === 0) {
this.negative = 0;
this.length = 1;
this.words[0] = 0;
return this;
}
// a > b
var a, b;
if (cmp > 0) {
a = this;
b = num;
} else {
a = num;
b = this;
}
var carry = 0;
for (var i = 0; i < b.length; i++) {
r = (a.words[i] | 0) - (b.words[i] | 0) + carry;
carry = r >> 26;
this.words[i] = r & 0x3ffffff;
}
for (; carry !== 0 && i < a.length; i++) {
r = (a.words[i] | 0) + carry;
carry = r >> 26;
this.words[i] = r & 0x3ffffff;
}
// Copy rest of the words
if (carry === 0 && i < a.length && a !== this) {
for (; i < a.length; i++) {
this.words[i] = a.words[i];
}
}
this.length = Math.max(this.length, i);
if (a !== this) {
this.negative = 1;
}
return this._strip();
};
// Subtract `num` from `this`
BN.prototype.sub = function sub (num) {
return this.clone().isub(num);
};
function smallMulTo (self, num, out) {
out.negative = num.negative ^ self.negative;
var len = (self.length + num.length) | 0;
out.length = len;
len = (len - 1) | 0;
// Peel one iteration (compiler can't do it, because of code complexity)
var a = self.words[0] | 0;
var b = num.words[0] | 0;
var r = a * b;
var lo = r & 0x3ffffff;
var carry = (r / 0x4000000) | 0;
out.words[0] = lo;
for (var k = 1; k < len; k++) {
// Sum all words with the same `i + j = k` and accumulate `ncarry`,
// note that ncarry could be >= 0x3ffffff
var ncarry = carry >>> 26;
var rword = carry & 0x3ffffff;
var maxJ = Math.min(k, num.length - 1);
for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
var i = (k - j) | 0;
a = self.words[i] | 0;
b = num.words[j] | 0;
r = a * b + rword;
ncarry += (r / 0x4000000) | 0;
rword = r & 0x3ffffff;
}
out.words[k] = rword | 0;
carry = ncarry | 0;
}
if (carry !== 0) {
out.words[k] = carry | 0;
} else {
out.length--;
}
return out._strip();
}
// TODO(indutny): it may be reasonable to omit it for users who don't need
// to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit
// multiplication (like elliptic secp256k1).
var comb10MulTo = function comb10MulTo (self, num, out) {
var a = self.words;
var b = num.words;
var o = out.words;
var c = 0;
var lo;
var mid;
var hi;
var a0 = a[0] | 0;
var al0 = a0 & 0x1fff;
var ah0 = a0 >>> 13;
var a1 = a[1] | 0;
var al1 = a1 & 0x1fff;
var ah1 = a1 >>> 13;
var a2 = a[2] | 0;
var al2 = a2 & 0x1fff;
var ah2 = a2 >>> 13;
var a3 = a[3] | 0;
var al3 = a3 & 0x1fff;
var ah3 = a3 >>> 13;
var a4 = a[4] | 0;
var al4 = a4 & 0x1fff;
var ah4 = a4 >>> 13;
var a5 = a[5] | 0;
var al5 = a5 & 0x1fff;
var ah5 = a5 >>> 13;
var a6 = a[6] | 0;
var al6 = a6 & 0x1fff;
var ah6 = a6 >>> 13;
var a7 = a[7] | 0;
var al7 = a7 & 0x1fff;
var ah7 = a7 >>> 13;
var a8 = a[8] | 0;
var al8 = a8 & 0x1fff;
var ah8 = a8 >>> 13;
var a9 = a[9] | 0;
var al9 = a9 & 0x1fff;
var ah9 = a9 >>> 13;
var b0 = b[0] | 0;
var bl0 = b0 & 0x1fff;
var bh0 = b0 >>> 13;
var b1 = b[1] | 0;
var bl1 = b1 & 0x1fff;
var bh1 = b1 >>> 13;
var b2 = b[2] | 0;
var bl2 = b2 & 0x1fff;
var bh2 = b2 >>> 13;
var b3 = b[3] | 0;
var bl3 = b3 & 0x1fff;
var bh3 = b3 >>> 13;
var b4 = b[4] | 0;
var bl4 = b4 & 0x1fff;
var bh4 = b4 >>> 13;
var b5 = b[5] | 0;
var bl5 = b5 & 0x1fff;
var bh5 = b5 >>> 13;
var b6 = b[6] | 0;
var bl6 = b6 & 0x1fff;
var bh6 = b6 >>> 13;
var b7 = b[7] | 0;
var bl7 = b7 & 0x1fff;
var bh7 = b7 >>> 13;
var b8 = b[8] | 0;
var bl8 = b8 & 0x1fff;
var bh8 = b8 >>> 13;
var b9 = b[9] | 0;
var bl9 = b9 & 0x1fff;
var bh9 = b9 >>> 13;
out.negative = self.negative ^ num.negative;
out.length = 19;
/* k = 0 */
lo = Math.imul(al0, bl0);
mid = Math.imul(al0, bh0);
mid = (mid + Math.imul(ah0, bl0)) | 0;
hi = Math.imul(ah0, bh0);
var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;
w0 &= 0x3ffffff;
/* k = 1 */
lo = Math.imul(al1, bl0);
mid = Math.imul(al1, bh0);
mid = (mid + Math.imul(ah1, bl0)) | 0;
hi = Math.imul(ah1, bh0);
lo = (lo + Math.imul(al0, bl1)) | 0;
mid = (mid + Math.imul(al0, bh1)) | 0;
mid = (mid + Math.imul(ah0, bl1)) | 0;
hi = (hi + Math.imul(ah0, bh1)) | 0;
var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;
w1 &= 0x3ffffff;
/* k = 2 */
lo = Math.imul(al2, bl0);
mid = Math.imul(al2, bh0);
mid = (mid + Math.imul(ah2, bl0)) | 0;
hi = Math.imul(ah2, bh0);
lo = (lo + Math.imul(al1, bl1)) | 0;
mid = (mid + Math.imul(al1, bh1)) | 0;
mid = (mid + Math.imul(ah1, bl1)) | 0;
hi = (hi + Math.imul(ah1, bh1)) | 0;
lo = (lo + Math.imul(al0, bl2)) | 0;
mid = (mid + Math.imul(al0, bh2)) | 0;
mid = (mid + Math.imul(ah0, bl2)) | 0;
hi = (hi + Math.imul(ah0, bh2)) | 0;
var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;
w2 &= 0x3ffffff;
/* k = 3 */
lo = Math.imul(al3, bl0);
mid = Math.imul(al3, bh0);
mid = (mid + Math.imul(ah3, bl0)) | 0;
hi = Math.imul(ah3, bh0);
lo = (lo + Math.imul(al2, bl1)) | 0;
mid = (mid + Math.imul(al2, bh1)) | 0;
mid = (mid + Math.imul(ah2, bl1)) | 0;
hi = (hi + Math.imul(ah2, bh1)) | 0;
lo = (lo + Math.imul(al1, bl2)) | 0;
mid = (mid + Math.imul(al1, bh2)) | 0;
mid = (mid + Math.imul(ah1, bl2)) | 0;
hi = (hi + Math.imul(ah1, bh2)) | 0;
lo = (lo + Math.imul(al0, bl3)) | 0;
mid = (mid + Math.imul(al0, bh3)) | 0;
mid = (mid + Math.imul(ah0, bl3)) | 0;
hi = (hi + Math.imul(ah0, bh3)) | 0;
var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;
w3 &= 0x3ffffff;
/* k = 4 */
lo = Math.imul(al4, bl0);
mid = Math.imul(al4, bh0);
mid = (mid + Math.imul(ah4, bl0)) | 0;
hi = Math.imul(ah4, bh0);
lo = (lo + Math.imul(al3, bl1)) | 0;
mid = (mid + Math.imul(al3, bh1)) | 0;
mid = (mid + Math.imul(ah3, bl1)) | 0;
hi = (hi + Math.imul(ah3, bh1)) | 0;
lo = (lo + Math.imul(al2, bl2)) | 0;
mid = (mid + Math.imul(al2, bh2)) | 0;
mid = (mid + Math.imul(ah2, bl2)) | 0;
hi = (hi + Math.imul(ah2, bh2)) | 0;
lo = (lo + Math.imul(al1, bl3)) | 0;
mid = (mid + Math.imul(al1, bh3)) | 0;
mid = (mid + Math.imul(ah1, bl3)) | 0;
hi = (hi + Math.imul(ah1, bh3)) | 0;
lo = (lo + Math.imul(al0, bl4)) | 0;
mid = (mid + Math.imul(al0, bh4)) | 0;
mid = (mid + Math.imul(ah0, bl4)) | 0;
hi = (hi + Math.imul(ah0, bh4)) | 0;
var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;
w4 &= 0x3ffffff;
/* k = 5 */
lo = Math.imul(al5, bl0);
mid = Math.imul(al5, bh0);
mid = (mid + Math.imul(ah5, bl0)) | 0;
hi = Math.imul(ah5, bh0);
lo = (lo + Math.imul(al4, bl1)) | 0;
mid = (mid + Math.imul(al4, bh1)) | 0;
mid = (mid + Math.imul(ah4, bl1)) | 0;
hi = (hi + Math.imul(ah4, bh1)) | 0;
lo = (lo + Math.imul(al3, bl2)) | 0;
mid = (mid + Math.imul(al3, bh2)) | 0;
mid = (mid + Math.imul(ah3, bl2)) | 0;
hi = (hi + Math.imul(ah3, bh2)) | 0;
lo = (lo + Math.imul(al2, bl3)) | 0;
mid = (mid + Math.imul(al2, bh3)) | 0;
mid = (mid + Math.imul(ah2, bl3)) | 0;
hi = (hi + Math.imul(ah2, bh3)) | 0;
lo = (lo + Math.imul(al1, bl4)) | 0;
mid = (mid + Math.imul(al1, bh4)) | 0;
mid = (mid + Math.imul(ah1, bl4)) | 0;
hi = (hi + Math.imul(ah1, bh4)) | 0;
lo = (lo + Math.imul(al0, bl5)) | 0;
mid = (mid + Math.imul(al0, bh5)) | 0;
mid = (mid + Math.imul(ah0, bl5)) | 0;
hi = (hi + Math.imul(ah0, bh5)) | 0;
var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;
w5 &= 0x3ffffff;
/* k = 6 */
lo = Math.imul(al6, bl0);
mid = Math.imul(al6, bh0);
mid = (mid + Math.imul(ah6, bl0)) | 0;
hi = Math.imul(ah6, bh0);
lo = (lo + Math.imul(al5, bl1)) | 0;
mid = (mid + Math.imul(al5, bh1)) | 0;
mid = (mid + Math.imul(ah5, bl1)) | 0;
hi = (hi + Math.imul(ah5, bh1)) | 0;
lo = (lo + Math.imul(al4, bl2)) | 0;
mid = (mid + Math.imul(al4, bh2)) | 0;
mid = (mid + Math.imul(ah4, bl2)) | 0;
hi = (hi + Math.imul(ah4, bh2)) | 0;
lo = (lo + Math.imul(al3, bl3)) | 0;
mid = (mid + Math.imul(al3, bh3)) | 0;
mid = (mid + Math.imul(ah3, bl3)) | 0;
hi = (hi + Math.imul(ah3, bh3)) | 0;
lo = (lo + Math.imul(al2, bl4)) | 0;
mid = (mid + Math.imul(al2, bh4)) | 0;
mid = (mid + Math.imul(ah2, bl4)) | 0;
hi = (hi + Math.imul(ah2, bh4)) | 0;
lo = (lo + Math.imul(al1, bl5)) | 0;
mid = (mid + Math.imul(al1, bh5)) | 0;
mid = (mid + Math.imul(ah1, bl5)) | 0;
hi = (hi + Math.imul(ah1, bh5)) | 0;
lo = (lo + Math.imul(al0, bl6)) | 0;
mid = (mid + Math.imul(al0, bh6)) | 0;
mid = (mid + Math.imul(ah0, bl6)) | 0;
hi = (hi + Math.imul(ah0, bh6)) | 0;
var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;
w6 &= 0x3ffffff;
/* k = 7 */
lo = Math.imul(al7, bl0);
mid = Math.imul(al7, bh0);
mid = (mid + Math.imul(ah7, bl0)) | 0;
hi = Math.imul(ah7, bh0);
lo = (lo + Math.imul(al6, bl1)) | 0;
mid = (mid + Math.imul(al6, bh1)) | 0;
mid = (mid + Math.imul(ah6, bl1)) | 0;
hi = (hi + Math.imul(ah6, bh1)) | 0;
lo = (lo + Math.imul(al5, bl2)) | 0;
mid = (mid + Math.imul(al5, bh2)) | 0;
mid = (mid + Math.imul(ah5, bl2)) | 0;
hi = (hi + Math.imul(ah5, bh2)) | 0;
lo = (lo + Math.imul(al4, bl3)) | 0;
mid = (mid + Math.imul(al4, bh3)) | 0;
mid = (mid + Math.imul(ah4, bl3)) | 0;
hi = (hi + Math.imul(ah4, bh3)) | 0;
lo = (lo + Math.imul(al3, bl4)) | 0;
mid = (mid + Math.imul(al3, bh4)) | 0;
mid = (mid + Math.imul(ah3, bl4)) | 0;
hi = (hi + Math.imul(ah3, bh4)) | 0;
lo = (lo + Math.imul(al2, bl5)) | 0;
mid = (mid + Math.imul(al2, bh5)) | 0;
mid = (mid + Math.imul(ah2, bl5)) | 0;
hi = (hi + Math.imul(ah2, bh5)) | 0;
lo = (lo + Math.imul(al1, bl6)) | 0;
mid = (mid + Math.imul(al1, bh6)) | 0;
mid = (mid + Math.imul(ah1, bl6)) | 0;
hi = (hi + Math.imul(ah1, bh6)) | 0;
lo = (lo + Math.imul(al0, bl7)) | 0;
mid = (mid + Math.imul(al0, bh7)) | 0;
mid = (mid + Math.imul(ah0, bl7)) | 0;
hi = (hi + Math.imul(ah0, bh7)) | 0;
var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;
w7 &= 0x3ffffff;
/* k = 8 */
lo = Math.imul(al8, bl0);
mid = Math.imul(al8, bh0);
mid = (mid + Math.imul(ah8, bl0)) | 0;
hi = Math.imul(ah8, bh0);
lo = (lo + Math.imul(al7, bl1)) | 0;
mid = (mid + Math.imul(al7, bh1)) | 0;
mid = (mid + Math.imul(ah7, bl1)) | 0;
hi = (hi + Math.imul(ah7, bh1)) | 0;
lo = (lo + Math.imul(al6, bl2)) | 0;
mid = (mid + Math.imul(al6, bh2)) | 0;
mid = (mid + Math.imul(ah6, bl2)) | 0;
hi = (hi + Math.imul(ah6, bh2)) | 0;
lo = (lo + Math.imul(al5, bl3)) | 0;
mid = (mid + Math.imul(al5, bh3)) | 0;
mid = (mid + Math.imul(ah5, bl3)) | 0;
hi = (hi + Math.imul(ah5, bh3)) | 0;
lo = (lo + Math.imul(al4, bl4)) | 0;
mid = (mid + Math.imul(al4, bh4)) | 0;
mid = (mid + Math.imul(ah4, bl4)) | 0;
hi = (hi + Math.imul(ah4, bh4)) | 0;
lo = (lo + Math.imul(al3, bl5)) | 0;
mid = (mid + Math.imul(al3, bh5)) | 0;
mid = (mid + Math.imul(ah3, bl5)) | 0;
hi = (hi + Math.imul(ah3, bh5)) | 0;
lo = (lo + Math.imul(al2, bl6)) | 0;
mid = (mid + Math.imul(al2, bh6)) | 0;
mid = (mid + Math.imul(ah2, bl6)) | 0;
hi = (hi + Math.imul(ah2, bh6)) | 0;
lo = (lo + Math.imul(al1, bl7)) | 0;
mid = (mid + Math.imul(al1, bh7)) | 0;
mid = (mid + Math.imul(ah1, bl7)) | 0;
hi = (hi + Math.imul(ah1, bh7)) | 0;
lo = (lo + Math.imul(al0, bl8)) | 0;
mid = (mid + Math.imul(al0, bh8)) | 0;
mid = (mid + Math.imul(ah0, bl8)) | 0;
hi = (hi + Math.imul(ah0, bh8)) | 0;
var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;
w8 &= 0x3ffffff;
/* k = 9 */
lo = Math.imul(al9, bl0);
mid = Math.imul(al9, bh0);
mid = (mid + Math.imul(ah9, bl0)) | 0;
hi = Math.imul(ah9, bh0);
lo = (lo + Math.imul(al8, bl1)) | 0;
mid = (mid + Math.imul(al8, bh1)) | 0;
mid = (mid + Math.imul(ah8, bl1)) | 0;
hi = (hi + Math.imul(ah8, bh1)) | 0;
lo = (lo + Math.imul(al7, bl2)) | 0;
mid = (mid + Math.imul(al7, bh2)) | 0;
mid = (mid + Math.imul(ah7, bl2)) | 0;
hi = (hi + Math.imul(ah7, bh2)) | 0;
lo = (lo + Math.imul(al6, bl3)) | 0;
mid = (mid + Math.imul(al6, bh3)) | 0;
mid = (mid + Math.imul(ah6, bl3)) | 0;
hi = (hi + Math.imul(ah6, bh3)) | 0;
lo = (lo + Math.imul(al5, bl4)) | 0;
mid = (mid + Math.imul(al5, bh4)) | 0;
mid = (mid + Math.imul(ah5, bl4)) | 0;
hi = (hi + Math.imul(ah5, bh4)) | 0;
lo = (lo + Math.imul(al4, bl5)) | 0;
mid = (mid + Math.imul(al4, bh5)) | 0;
mid = (mid + Math.imul(ah4, bl5)) | 0;
hi = (hi + Math.imul(ah4, bh5)) | 0;
lo = (lo + Math.imul(al3, bl6)) | 0;
mid = (mid + Math.imul(al3, bh6)) | 0;
mid = (mid + Math.imul(ah3, bl6)) | 0;
hi = (hi + Math.imul(ah3, bh6)) | 0;
lo = (lo + Math.imul(al2, bl7)) | 0;
mid = (mid + Math.imul(al2, bh7)) | 0;
mid = (mid + Math.imul(ah2, bl7)) | 0;
hi = (hi + Math.imul(ah2, bh7)) | 0;
lo = (lo + Math.imul(al1, bl8)) | 0;
mid = (mid + Math.imul(al1, bh8)) | 0;
mid = (mid + Math.imul(ah1, bl8)) | 0;
hi = (hi + Math.imul(ah1, bh8)) | 0;
lo = (lo + Math.imul(al0, bl9)) | 0;
mid = (mid + Math.imul(al0, bh9)) | 0;
mid = (mid + Math.imul(ah0, bl9)) | 0;
hi = (hi + Math.imul(ah0, bh9)) | 0;
var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;
w9 &= 0x3ffffff;
/* k = 10 */
lo = Math.imul(al9, bl1);
mid = Math.imul(al9, bh1);
mid = (mid + Math.imul(ah9, bl1)) | 0;
hi = Math.imul(ah9, bh1);
lo = (lo + Math.imul(al8, bl2)) | 0;
mid = (mid + Math.imul(al8, bh2)) | 0;
mid = (mid + Math.imul(ah8, bl2)) | 0;
hi = (hi + Math.imul(ah8, bh2)) | 0;
lo = (lo + Math.imul(al7, bl3)) | 0;
mid = (mid + Math.imul(al7, bh3)) | 0;
mid = (mid + Math.imul(ah7, bl3)) | 0;
hi = (hi + Math.imul(ah7, bh3)) | 0;
lo = (lo + Math.imul(al6, bl4)) | 0;
mid = (mid + Math.imul(al6, bh4)) | 0;
mid = (mid + Math.imul(ah6, bl4)) | 0;
hi = (hi + Math.imul(ah6, bh4)) | 0;
lo = (lo + Math.imul(al5, bl5)) | 0;
mid = (mid + Math.imul(al5, bh5)) | 0;
mid = (mid + Math.imul(ah5, bl5)) | 0;
hi = (hi + Math.imul(ah5, bh5)) | 0;
lo = (lo + Math.imul(al4, bl6)) | 0;
mid = (mid + Math.imul(al4, bh6)) | 0;
mid = (mid + Math.imul(ah4, bl6)) | 0;
hi = (hi + Math.imul(ah4, bh6)) | 0;
lo = (lo + Math.imul(al3, bl7)) | 0;
mid = (mid + Math.imul(al3, bh7)) | 0;
mid = (mid + Math.imul(ah3, bl7)) | 0;
hi = (hi + Math.imul(ah3, bh7)) | 0;
lo = (lo + Math.imul(al2, bl8)) | 0;
mid = (mid + Math.imul(al2, bh8)) | 0;
mid = (mid + Math.imul(ah2, bl8)) | 0;
hi = (hi + Math.imul(ah2, bh8)) | 0;
lo = (lo + Math.imul(al1, bl9)) | 0;
mid = (mid + Math.imul(al1, bh9)) | 0;
mid = (mid + Math.imul(ah1, bl9)) | 0;
hi = (hi + Math.imul(ah1, bh9)) | 0;
var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;
w10 &= 0x3ffffff;
/* k = 11 */
lo = Math.imul(al9, bl2);
mid = Math.imul(al9, bh2);
mid = (mid + Math.imul(ah9, bl2)) | 0;
hi = Math.imul(ah9, bh2);
lo = (lo + Math.imul(al8, bl3)) | 0;
mid = (mid + Math.imul(al8, bh3)) | 0;
mid = (mid + Math.imul(ah8, bl3)) | 0;
hi = (hi + Math.imul(ah8, bh3)) | 0;
lo = (lo + Math.imul(al7, bl4)) | 0;
mid = (mid + Math.imul(al7, bh4)) | 0;
mid = (mid + Math.imul(ah7, bl4)) | 0;
hi = (hi + Math.imul(ah7, bh4)) | 0;
lo = (lo + Math.imul(al6, bl5)) | 0;
mid = (mid + Math.imul(al6, bh5)) | 0;
mid = (mid + Math.imul(ah6, bl5)) | 0;
hi = (hi + Math.imul(ah6, bh5)) | 0;
lo = (lo + Math.imul(al5, bl6)) | 0;
mid = (mid + Math.imul(al5, bh6)) | 0;
mid = (mid + Math.imul(ah5, bl6)) | 0;
hi = (hi + Math.imul(ah5, bh6)) | 0;
lo = (lo + Math.imul(al4, bl7)) | 0;
mid = (mid + Math.imul(al4, bh7)) | 0;
mid = (mid + Math.imul(ah4, bl7)) | 0;
hi = (hi + Math.imul(ah4, bh7)) | 0;
lo = (lo + Math.imul(al3, bl8)) | 0;
mid = (mid + Math.imul(al3, bh8)) | 0;
mid = (mid + Math.imul(ah3, bl8)) | 0;
hi = (hi + Math.imul(ah3, bh8)) | 0;
lo = (lo + Math.imul(al2, bl9)) | 0;
mid = (mid + Math.imul(al2, bh9)) | 0;
mid = (mid + Math.imul(ah2, bl9)) | 0;
hi = (hi + Math.imul(ah2, bh9)) | 0;
var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;
w11 &= 0x3ffffff;
/* k = 12 */
lo = Math.imul(al9, bl3);
mid = Math.imul(al9, bh3);
mid = (mid + Math.imul(ah9, bl3)) | 0;
hi = Math.imul(ah9, bh3);
lo = (lo + Math.imul(al8, bl4)) | 0;
mid = (mid + Math.imul(al8, bh4)) | 0;
mid = (mid + Math.imul(ah8, bl4)) | 0;
hi = (hi + Math.imul(ah8, bh4)) | 0;
lo = (lo + Math.imul(al7, bl5)) | 0;
mid = (mid + Math.imul(al7, bh5)) | 0;
mid = (mid + Math.imul(ah7, bl5)) | 0;
hi = (hi + Math.imul(ah7, bh5)) | 0;
lo = (lo + Math.imul(al6, bl6)) | 0;
mid = (mid + Math.imul(al6, bh6)) | 0;
mid = (mid + Math.imul(ah6, bl6)) | 0;
hi = (hi + Math.imul(ah6, bh6)) | 0;
lo = (lo + Math.imul(al5, bl7)) | 0;
mid = (mid + Math.imul(al5, bh7)) | 0;
mid = (mid + Math.imul(ah5, bl7)) | 0;
hi = (hi + Math.imul(ah5, bh7)) | 0;
lo = (lo + Math.imul(al4, bl8)) | 0;
mid = (mid + Math.imul(al4, bh8)) | 0;
mid = (mid + Math.imul(ah4, bl8)) | 0;
hi = (hi + Math.imul(ah4, bh8)) | 0;
lo = (lo + Math.imul(al3, bl9)) | 0;
mid = (mid + Math.imul(al3, bh9)) | 0;
mid = (mid + Math.imul(ah3, bl9)) | 0;
hi = (hi + Math.imul(ah3, bh9)) | 0;
var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;
w12 &= 0x3ffffff;
/* k = 13 */
lo = Math.imul(al9, bl4);
mid = Math.imul(al9, bh4);
mid = (mid + Math.imul(ah9, bl4)) | 0;
hi = Math.imul(ah9, bh4);
lo = (lo + Math.imul(al8, bl5)) | 0;
mid = (mid + Math.imul(al8, bh5)) | 0;
mid = (mid + Math.imul(ah8, bl5)) | 0;
hi = (hi + Math.imul(ah8, bh5)) | 0;
lo = (lo + Math.imul(al7, bl6)) | 0;
mid = (mid + Math.imul(al7, bh6)) | 0;
mid = (mid + Math.imul(ah7, bl6)) | 0;
hi = (hi + Math.imul(ah7, bh6)) | 0;
lo = (lo + Math.imul(al6, bl7)) | 0;
mid = (mid + Math.imul(al6, bh7)) | 0;
mid = (mid + Math.imul(ah6, bl7)) | 0;
hi = (hi + Math.imul(ah6, bh7)) | 0;
lo = (lo + Math.imul(al5, bl8)) | 0;
mid = (mid + Math.imul(al5, bh8)) | 0;
mid = (mid + Math.imul(ah5, bl8)) | 0;
hi = (hi + Math.imul(ah5, bh8)) | 0;
lo = (lo + Math.imul(al4, bl9)) | 0;
mid = (mid + Math.imul(al4, bh9)) | 0;
mid = (mid + Math.imul(ah4, bl9)) | 0;
hi = (hi + Math.imul(ah4, bh9)) | 0;
var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;
w13 &= 0x3ffffff;
/* k = 14 */
lo = Math.imul(al9, bl5);
mid = Math.imul(al9, bh5);
mid = (mid + Math.imul(ah9, bl5)) | 0;
hi = Math.imul(ah9, bh5);
lo = (lo + Math.imul(al8, bl6)) | 0;
mid = (mid + Math.imul(al8, bh6)) | 0;
mid = (mid + Math.imul(ah8, bl6)) | 0;
hi = (hi + Math.imul(ah8, bh6)) | 0;
lo = (lo + Math.imul(al7, bl7)) | 0;
mid = (mid + Math.imul(al7, bh7)) | 0;
mid = (mid + Math.imul(ah7, bl7)) | 0;
hi = (hi + Math.imul(ah7, bh7)) | 0;
lo = (lo + Math.imul(al6, bl8)) | 0;
mid = (mid + Math.imul(al6, bh8)) | 0;
mid = (mid + Math.imul(ah6, bl8)) | 0;
hi = (hi + Math.imul(ah6, bh8)) | 0;
lo = (lo + Math.imul(al5, bl9)) | 0;
mid = (mid + Math.imul(al5, bh9)) | 0;
mid = (mid + Math.imul(ah5, bl9)) | 0;
hi = (hi + Math.imul(ah5, bh9)) | 0;
var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;
w14 &= 0x3ffffff;
/* k = 15 */
lo = Math.imul(al9, bl6);
mid = Math.imul(al9, bh6);
mid = (mid + Math.imul(ah9, bl6)) | 0;
hi = Math.imul(ah9, bh6);
lo = (lo + Math.imul(al8, bl7)) | 0;
mid = (mid + Math.imul(al8, bh7)) | 0;
mid = (mid + Math.imul(ah8, bl7)) | 0;
hi = (hi + Math.imul(ah8, bh7)) | 0;
lo = (lo + Math.imul(al7, bl8)) | 0;
mid = (mid + Math.imul(al7, bh8)) | 0;
mid = (mid + Math.imul(ah7, bl8)) | 0;
hi = (hi + Math.imul(ah7, bh8)) | 0;
lo = (lo + Math.imul(al6, bl9)) | 0;
mid = (mid + Math.imul(al6, bh9)) | 0;
mid = (mid + Math.imul(ah6, bl9)) | 0;
hi = (hi + Math.imul(ah6, bh9)) | 0;
var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;
w15 &= 0x3ffffff;
/* k = 16 */
lo = Math.imul(al9, bl7);
mid = Math.imul(al9, bh7);
mid = (mid + Math.imul(ah9, bl7)) | 0;
hi = Math.imul(ah9, bh7);
lo = (lo + Math.imul(al8, bl8)) | 0;
mid = (mid + Math.imul(al8, bh8)) | 0;
mid = (mid + Math.imul(ah8, bl8)) | 0;
hi = (hi + Math.imul(ah8, bh8)) | 0;
lo = (lo + Math.imul(al7, bl9)) | 0;
mid = (mid + Math.imul(al7, bh9)) | 0;
mid = (mid + Math.imul(ah7, bl9)) | 0;
hi = (hi + Math.imul(ah7, bh9)) | 0;
var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;
w16 &= 0x3ffffff;
/* k = 17 */
lo = Math.imul(al9, bl8);
mid = Math.imul(al9, bh8);
mid = (mid + Math.imul(ah9, bl8)) | 0;
hi = Math.imul(ah9, bh8);
lo = (lo + Math.imul(al8, bl9)) | 0;
mid = (mid + Math.imul(al8, bh9)) | 0;
mid = (mid + Math.imul(ah8, bl9)) | 0;
hi = (hi + Math.imul(ah8, bh9)) | 0;
var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;
w17 &= 0x3ffffff;
/* k = 18 */
lo = Math.imul(al9, bl9);
mid = Math.imul(al9, bh9);
mid = (mid + Math.imul(ah9, bl9)) | 0;
hi = Math.imul(ah9, bh9);
var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;
w18 &= 0x3ffffff;
o[0] = w0;
o[1] = w1;
o[2] = w2;
o[3] = w3;
o[4] = w4;
o[5] = w5;
o[6] = w6;
o[7] = w7;
o[8] = w8;
o[9] = w9;
o[10] = w10;
o[11] = w11;
o[12] = w12;
o[13] = w13;
o[14] = w14;
o[15] = w15;
o[16] = w16;
o[17] = w17;
o[18] = w18;
if (c !== 0) {
o[19] = c;
out.length++;
}
return out;
};
// Polyfill comb
if (!Math.imul) {
comb10MulTo = smallMulTo;
}
function bigMulTo (self, num, out) {
out.negative = num.negative ^ self.negative;
out.length = self.length + num.length;
var carry = 0;
var hncarry = 0;
for (var k = 0; k < out.length - 1; k++) {
// Sum all words with the same `i + j = k` and accumulate `ncarry`,
// note that ncarry could be >= 0x3ffffff
var ncarry = hncarry;
hncarry = 0;
var rword = carry & 0x3ffffff;
var maxJ = Math.min(k, num.length - 1);
for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
var i = k - j;
var a = self.words[i] | 0;
var b = num.words[j] | 0;
var r = a * b;
var lo = r & 0x3ffffff;
ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;
lo = (lo + rword) | 0;
rword = lo & 0x3ffffff;
ncarry = (ncarry + (lo >>> 26)) | 0;
hncarry += ncarry >>> 26;
ncarry &= 0x3ffffff;
}
out.words[k] = rword;
carry = ncarry;
ncarry = hncarry;
}
if (carry !== 0) {
out.words[k] = carry;
} else {
out.length--;
}
return out._strip();
}
function jumboMulTo (self, num, out) {
// Temporary disable, see https://github.com/indutny/bn.js/issues/211
// var fftm = new FFTM();
// return fftm.mulp(self, num, out);
return bigMulTo(self, num, out);
}
BN.prototype.mulTo = function mulTo (num, out) {
var res;
var len = this.length + num.length;
if (this.length === 10 && num.length === 10) {
res = comb10MulTo(this, num, out);
} else if (len < 63) {
res = smallMulTo(this, num, out);
} else if (len < 1024) {
res = bigMulTo(this, num, out);
} else {
res = jumboMulTo(this, num, out);
}
return res;
};
// Cooley-Tukey algorithm for FFT
// slightly revisited to rely on looping instead of recursion
function FFTM (x, y) {
this.x = x;
this.y = y;
}
FFTM.prototype.makeRBT = function makeRBT (N) {
var t = new Array(N);
var l = BN.prototype._countBits(N) - 1;
for (var i = 0; i < N; i++) {
t[i] = this.revBin(i, l, N);
}
return t;
};
// Returns binary-reversed representation of `x`
FFTM.prototype.revBin = function revBin (x, l, N) {
if (x === 0 || x === N - 1) return x;
var rb = 0;
for (var i = 0; i < l; i++) {
rb |= (x & 1) << (l - i - 1);
x >>= 1;
}
return rb;
};
// Performs "tweedling" phase, therefore 'emulating'
// behaviour of the recursive algorithm
FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {
for (var i = 0; i < N; i++) {
rtws[i] = rws[rbt[i]];
itws[i] = iws[rbt[i]];
}
};
FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {
this.permute(rbt, rws, iws, rtws, itws, N);
for (var s = 1; s < N; s <<= 1) {
var l = s << 1;
var rtwdf = Math.cos(2 * Math.PI / l);
var itwdf = Math.sin(2 * Math.PI / l);
for (var p = 0; p < N; p += l) {
var rtwdf_ = rtwdf;
var itwdf_ = itwdf;
for (var j = 0; j < s; j++) {
var re = rtws[p + j];
var ie = itws[p + j];
var ro = rtws[p + j + s];
var io = itws[p + j + s];
var rx = rtwdf_ * ro - itwdf_ * io;
io = rtwdf_ * io + itwdf_ * ro;
ro = rx;
rtws[p + j] = re + ro;
itws[p + j] = ie + io;
rtws[p + j + s] = re - ro;
itws[p + j + s] = ie - io;
/* jshint maxdepth : false */
if (j !== l) {
rx = rtwdf * rtwdf_ - itwdf * itwdf_;
itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;
rtwdf_ = rx;
}
}
}
}
};
FFTM.prototype.guessLen13b = function guessLen13b (n, m) {
var N = Math.max(m, n) | 1;
var odd = N & 1;
var i = 0;
for (N = N / 2 | 0; N; N = N >>> 1) {
i++;
}
return 1 << i + 1 + odd;
};
FFTM.prototype.conjugate = function conjugate (rws, iws, N) {
if (N <= 1) return;
for (var i = 0; i < N / 2; i++) {
var t = rws[i];
rws[i] = rws[N - i - 1];
rws[N - i - 1] = t;
t = iws[i];
iws[i] = -iws[N - i - 1];
iws[N - i - 1] = -t;
}
};
FFTM.prototype.normalize13b = function normalize13b (ws, N) {
var carry = 0;
for (var i = 0; i < N / 2; i++) {
var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +
Math.round(ws[2 * i] / N) +
carry;
ws[i] = w & 0x3ffffff;
if (w < 0x4000000) {
carry = 0;
} else {
carry = w / 0x4000000 | 0;
}
}
return ws;
};
FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {
var carry = 0;
for (var i = 0; i < len; i++) {
carry = carry + (ws[i] | 0);
rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;
rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;
}
// Pad with zeroes
for (i = 2 * len; i < N; ++i) {
rws[i] = 0;
}
assert(carry === 0);
assert((carry & ~0x1fff) === 0);
};
FFTM.prototype.stub = function stub (N) {
var ph = new Array(N);
for (var i = 0; i < N; i++) {
ph[i] = 0;
}
return ph;
};
FFTM.prototype.mulp = function mulp (x, y, out) {
var N = 2 * this.guessLen13b(x.length, y.length);
var rbt = this.makeRBT(N);
var _ = this.stub(N);
var rws = new Array(N);
var rwst = new Array(N);
var iwst = new Array(N);
var nrws = new Array(N);
var nrwst = new Array(N);
var niwst = new Array(N);
var rmws = out.words;
rmws.length = N;
this.convert13b(x.words, x.length, rws, N);
this.convert13b(y.words, y.length, nrws, N);
this.transform(rws, _, rwst, iwst, N, rbt);
this.transform(nrws, _, nrwst, niwst, N, rbt);
for (var i = 0; i < N; i++) {
var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];
iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];
rwst[i] = rx;
}
this.conjugate(rwst, iwst, N);
this.transform(rwst, iwst, rmws, _, N, rbt);
this.conjugate(rmws, _, N);
this.normalize13b(rmws, N);
out.negative = x.negative ^ y.negative;
out.length = x.length + y.length;
return out._strip();
};
// Multiply `this` by `num`
BN.prototype.mul = function mul (num) {
var out = new BN(null);
out.words = new Array(this.length + num.length);
return this.mulTo(num, out);
};
// Multiply employing FFT
BN.prototype.mulf = function mulf (num) {
var out = new BN(null);
out.words = new Array(this.length + num.length);
return jumboMulTo(this, num, out);
};
// In-place Multiplication
BN.prototype.imul = function imul (num) {
return this.clone().mulTo(num, this);
};
BN.prototype.imuln = function imuln (num) {
var isNegNum = num < 0;
if (isNegNum) num = -num;
assert(typeof num === 'number');
assert(num < 0x4000000);
// Carry
var carry = 0;
for (var i = 0; i < this.length; i++) {
var w = (this.words[i] | 0) * num;
var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);
carry >>= 26;
carry += (w / 0x4000000) | 0;
// NOTE: lo is 27bit maximum
carry += lo >>> 26;
this.words[i] = lo & 0x3ffffff;
}
if (carry !== 0) {
this.words[i] = carry;
this.length++;
}
return isNegNum ? this.ineg() : this;
};
BN.prototype.muln = function muln (num) {
return this.clone().imuln(num);
};
// `this` * `this`
BN.prototype.sqr = function sqr () {
return this.mul(this);
};
// `this` * `this` in-place
BN.prototype.isqr = function isqr () {
return this.imul(this.clone());
};
// Math.pow(`this`, `num`)
BN.prototype.pow = function pow (num) {
var w = toBitArray(num);
if (w.length === 0) return new BN(1);
// Skip leading zeroes
var res = this;
for (var i = 0; i < w.length; i++, res = res.sqr()) {
if (w[i] !== 0) break;
}
if (++i < w.length) {
for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {
if (w[i] === 0) continue;
res = res.mul(q);
}
}
return res;
};
// Shift-left in-place
BN.prototype.iushln = function iushln (bits) {
assert(typeof bits === 'number' && bits >= 0);
var r = bits % 26;
var s = (bits - r) / 26;
var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);
var i;
if (r !== 0) {
var carry = 0;
for (i = 0; i < this.length; i++) {
var newCarry = this.words[i] & carryMask;
var c = ((this.words[i] | 0) - newCarry) << r;
this.words[i] = c | carry;
carry = newCarry >>> (26 - r);
}
if (carry) {
this.words[i] = carry;
this.length++;
}
}
if (s !== 0) {
for (i = this.length - 1; i >= 0; i--) {
this.words[i + s] = this.words[i];
}
for (i = 0; i < s; i++) {
this.words[i] = 0;
}
this.length += s;
}
return this._strip();
};
BN.prototype.ishln = function ishln (bits) {
// TODO(indutny): implement me
assert(this.negative === 0);
return this.iushln(bits);
};
// Shift-right in-place
// NOTE: `hint` is a lowest bit before trailing zeroes
// NOTE: if `extended` is present - it will be filled with destroyed bits
BN.prototype.iushrn = function iushrn (bits, hint, extended) {
assert(typeof bits === 'number' && bits >= 0);
var h;
if (hint) {
h = (hint - (hint % 26)) / 26;
} else {
h = 0;
}
var r = bits % 26;
var s = Math.min((bits - r) / 26, this.length);
var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
var maskedWords = extended;
h -= s;
h = Math.max(0, h);
// Extended mode, copy masked part
if (maskedWords) {
for (var i = 0; i < s; i++) {
maskedWords.words[i] = this.words[i];
}
maskedWords.length = s;
}
if (s === 0) {
// No-op, we should not move anything at all
} else if (this.length > s) {
this.length -= s;
for (i = 0; i < this.length; i++) {
this.words[i] = this.words[i + s];
}
} else {
this.words[0] = 0;
this.length = 1;
}
var carry = 0;
for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {
var word = this.words[i] | 0;
this.words[i] = (carry << (26 - r)) | (word >>> r);
carry = word & mask;
}
// Push carried bits as a mask
if (maskedWords && carry !== 0) {
maskedWords.words[maskedWords.length++] = carry;
}
if (this.length === 0) {
this.words[0] = 0;
this.length = 1;
}
return this._strip();
};
BN.prototype.ishrn = function ishrn (bits, hint, extended) {
// TODO(indutny): implement me
assert(this.negative === 0);
return this.iushrn(bits, hint, extended);
};
// Shift-left
BN.prototype.shln = function shln (bits) {
return this.clone().ishln(bits);
};
BN.prototype.ushln = function ushln (bits) {
return this.clone().iushln(bits);
};
// Shift-right
BN.prototype.shrn = function shrn (bits) {
return this.clone().ishrn(bits);
};
BN.prototype.ushrn = function ushrn (bits) {
return this.clone().iushrn(bits);
};
// Test if n bit is set
BN.prototype.testn = function testn (bit) {
assert(typeof bit === 'number' && bit >= 0);
var r = bit % 26;
var s = (bit - r) / 26;
var q = 1 << r;
// Fast case: bit is much higher than all existing words
if (this.length <= s) return false;
// Check bit and return
var w = this.words[s];
return !!(w & q);
};
// Return only lowers bits of number (in-place)
BN.prototype.imaskn = function imaskn (bits) {
assert(typeof bits === 'number' && bits >= 0);
var r = bits % 26;
var s = (bits - r) / 26;
assert(this.negative === 0, 'imaskn works only with positive numbers');
if (this.length <= s) {
return this;
}
if (r !== 0) {
s++;
}
this.length = Math.min(s, this.length);
if (r !== 0) {
var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
this.words[this.length - 1] &= mask;
}
return this._strip();
};
// Return only lowers bits of number
BN.prototype.maskn = function maskn (bits) {
return this.clone().imaskn(bits);
};
// Add plain number `num` to `this`
BN.prototype.iaddn = function iaddn (num) {
assert(typeof num === 'number');
assert(num < 0x4000000);
if (num < 0) return this.isubn(-num);
// Possible sign change
if (this.negative !== 0) {
if (this.length === 1 && (this.words[0] | 0) <= num) {
this.words[0] = num - (this.words[0] | 0);
this.negative = 0;
return this;
}
this.negative = 0;
this.isubn(num);
this.negative = 1;
return this;
}
// Add without checks
return this._iaddn(num);
};
BN.prototype._iaddn = function _iaddn (num) {
this.words[0] += num;
// Carry
for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {
this.words[i] -= 0x4000000;
if (i === this.length - 1) {
this.words[i + 1] = 1;
} else {
this.words[i + 1]++;
}
}
this.length = Math.max(this.length, i + 1);
return this;
};
// Subtract plain number `num` from `this`
BN.prototype.isubn = function isubn (num) {
assert(typeof num === 'number');
assert(num < 0x4000000);
if (num < 0) return this.iaddn(-num);
if (this.negative !== 0) {
this.negative = 0;
this.iaddn(num);
this.negative = 1;
return this;
}
this.words[0] -= num;
if (this.length === 1 && this.words[0] < 0) {
this.words[0] = -this.words[0];
this.negative = 1;
} else {
// Carry
for (var i = 0; i < this.length && this.words[i] < 0; i++) {
this.words[i] += 0x4000000;
this.words[i + 1] -= 1;
}
}
return this._strip();
};
BN.prototype.addn = function addn (num) {
return this.clone().iaddn(num);
};
BN.prototype.subn = function subn (num) {
return this.clone().isubn(num);
};
BN.prototype.iabs = function iabs () {
this.negative = 0;
return this;
};
BN.prototype.abs = function abs () {
return this.clone().iabs();
};
BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {
var len = num.length + shift;
var i;
this._expand(len);
var w;
var carry = 0;
for (i = 0; i < num.length; i++) {
w = (this.words[i + shift] | 0) + carry;
var right = (num.words[i] | 0) * mul;
w -= right & 0x3ffffff;
carry = (w >> 26) - ((right / 0x4000000) | 0);
this.words[i + shift] = w & 0x3ffffff;
}
for (; i < this.length - shift; i++) {
w = (this.words[i + shift] | 0) + carry;
carry = w >> 26;
this.words[i + shift] = w & 0x3ffffff;
}
if (carry === 0) return this._strip();
// Subtraction overflow
assert(carry === -1);
carry = 0;
for (i = 0; i < this.length; i++) {
w = -(this.words[i] | 0) + carry;
carry = w >> 26;
this.words[i] = w & 0x3ffffff;
}
this.negative = 1;
return this._strip();
};
BN.prototype._wordDiv = function _wordDiv (num, mode) {
var shift = this.length - num.length;
var a = this.clone();
var b = num;
// Normalize
var bhi = b.words[b.length - 1] | 0;
var bhiBits = this._countBits(bhi);
shift = 26 - bhiBits;
if (shift !== 0) {
b = b.ushln(shift);
a.iushln(shift);
bhi = b.words[b.length - 1] | 0;
}
// Initialize quotient
var m = a.length - b.length;
var q;
if (mode !== 'mod') {
q = new BN(null);
q.length = m + 1;
q.words = new Array(q.length);
for (var i = 0; i < q.length; i++) {
q.words[i] = 0;
}
}
var diff = a.clone()._ishlnsubmul(b, 1, m);
if (diff.negative === 0) {
a = diff;
if (q) {
q.words[m] = 1;
}
}
for (var j = m - 1; j >= 0; j--) {
var qj = (a.words[b.length + j] | 0) * 0x4000000 +
(a.words[b.length + j - 1] | 0);
// NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max
// (0x7ffffff)
qj = Math.min((qj / bhi) | 0, 0x3ffffff);
a._ishlnsubmul(b, qj, j);
while (a.negative !== 0) {
qj--;
a.negative = 0;
a._ishlnsubmul(b, 1, j);
if (!a.isZero()) {
a.negative ^= 1;
}
}
if (q) {
q.words[j] = qj;
}
}
if (q) {
q._strip();
}
a._strip();
// Denormalize
if (mode !== 'div' && shift !== 0) {
a.iushrn(shift);
}
return {
div: q || null,
mod: a
};
};
// NOTE: 1) `mode` can be set to `mod` to request mod only,
// to `div` to request div only, or be absent to
// request both div & mod
// 2) `positive` is true if unsigned mod is requested
BN.prototype.divmod = function divmod (num, mode, positive) {
assert(!num.isZero());
if (this.isZero()) {
return {
div: new BN(0),
mod: new BN(0)
};
}
var div, mod, res;
if (this.negative !== 0 && num.negative === 0) {
res = this.neg().divmod(num, mode);
if (mode !== 'mod') {
div = res.div.neg();
}
if (mode !== 'div') {
mod = res.mod.neg();
if (positive && mod.negative !== 0) {
mod.iadd(num);
}
}
return {
div: div,
mod: mod
};
}
if (this.negative === 0 && num.negative !== 0) {
res = this.divmod(num.neg(), mode);
if (mode !== 'mod') {
div = res.div.neg();
}
return {
div: div,
mod: res.mod
};
}
if ((this.negative & num.negative) !== 0) {
res = this.neg().divmod(num.neg(), mode);
if (mode !== 'div') {
mod = res.mod.neg();
if (positive && mod.negative !== 0) {
mod.isub(num);
}
}
return {
div: res.div,
mod: mod
};
}
// Both numbers are positive at this point
// Strip both numbers to approximate shift value
if (num.length > this.length || this.cmp(num) < 0) {
return {
div: new BN(0),
mod: this
};
}
// Very short reduction
if (num.length === 1) {
if (mode === 'div') {
return {
div: this.divn(num.words[0]),
mod: null
};
}
if (mode === 'mod') {
return {
div: null,
mod: new BN(this.modrn(num.words[0]))
};
}
return {
div: this.divn(num.words[0]),
mod: new BN(this.modrn(num.words[0]))
};
}
return this._wordDiv(num, mode);
};
// Find `this` / `num`
BN.prototype.div = function div (num) {
return this.divmod(num, 'div', false).div;
};
// Find `this` % `num`
BN.prototype.mod = function mod (num) {
return this.divmod(num, 'mod', false).mod;
};
BN.prototype.umod = function umod (num) {
return this.divmod(num, 'mod', true).mod;
};
// Find Round(`this` / `num`)
BN.prototype.divRound = function divRound (num) {
var dm = this.divmod(num);
// Fast case - exact division
if (dm.mod.isZero()) return dm.div;
var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;
var half = num.ushrn(1);
var r2 = num.andln(1);
var cmp = mod.cmp(half);
// Round down
if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;
// Round up
return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);
};
BN.prototype.modrn = function modrn (num) {
var isNegNum = num < 0;
if (isNegNum) num = -num;
assert(num <= 0x3ffffff);
var p = (1 << 26) % num;
var acc = 0;
for (var i = this.length - 1; i >= 0; i--) {
acc = (p * acc + (this.words[i] | 0)) % num;
}
return isNegNum ? -acc : acc;
};
// WARNING: DEPRECATED
BN.prototype.modn = function modn (num) {
return this.modrn(num);
};
// In-place division by number
BN.prototype.idivn = function idivn (num) {
var isNegNum = num < 0;
if (isNegNum) num = -num;
assert(num <= 0x3ffffff);
var carry = 0;
for (var i = this.length - 1; i >= 0; i--) {
var w = (this.words[i] | 0) + carry * 0x4000000;
this.words[i] = (w / num) | 0;
carry = w % num;
}
this._strip();
return isNegNum ? this.ineg() : this;
};
BN.prototype.divn = function divn (num) {
return this.clone().idivn(num);
};
BN.prototype.egcd = function egcd (p) {
assert(p.negative === 0);
assert(!p.isZero());
var x = this;
var y = p.clone();
if (x.negative !== 0) {
x = x.umod(p);
} else {
x = x.clone();
}
// A * x + B * y = x
var A = new BN(1);
var B = new BN(0);
// C * x + D * y = y
var C = new BN(0);
var D = new BN(1);
var g = 0;
while (x.isEven() && y.isEven()) {
x.iushrn(1);
y.iushrn(1);
++g;
}
var yp = y.clone();
var xp = x.clone();
while (!x.isZero()) {
for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
if (i > 0) {
x.iushrn(i);
while (i-- > 0) {
if (A.isOdd() || B.isOdd()) {
A.iadd(yp);
B.isub(xp);
}
A.iushrn(1);
B.iushrn(1);
}
}
for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
if (j > 0) {
y.iushrn(j);
while (j-- > 0) {
if (C.isOdd() || D.isOdd()) {
C.iadd(yp);
D.isub(xp);
}
C.iushrn(1);
D.iushrn(1);
}
}
if (x.cmp(y) >= 0) {
x.isub(y);
A.isub(C);
B.isub(D);
} else {
y.isub(x);
C.isub(A);
D.isub(B);
}
}
return {
a: C,
b: D,
gcd: y.iushln(g)
};
};
// This is reduced incarnation of the binary EEA
// above, designated to invert members of the
// _prime_ fields F(p) at a maximal speed
BN.prototype._invmp = function _invmp (p) {
assert(p.negative === 0);
assert(!p.isZero());
var a = this;
var b = p.clone();
if (a.negative !== 0) {
a = a.umod(p);
} else {
a = a.clone();
}
var x1 = new BN(1);
var x2 = new BN(0);
var delta = b.clone();
while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {
for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
if (i > 0) {
a.iushrn(i);
while (i-- > 0) {
if (x1.isOdd()) {
x1.iadd(delta);
}
x1.iushrn(1);
}
}
for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
if (j > 0) {
b.iushrn(j);
while (j-- > 0) {
if (x2.isOdd()) {
x2.iadd(delta);
}
x2.iushrn(1);
}
}
if (a.cmp(b) >= 0) {
a.isub(b);
x1.isub(x2);
} else {
b.isub(a);
x2.isub(x1);
}
}
var res;
if (a.cmpn(1) === 0) {
res = x1;
} else {
res = x2;
}
if (res.cmpn(0) < 0) {
res.iadd(p);
}
return res;
};
BN.prototype.gcd = function gcd (num) {
if (this.isZero()) return num.abs();
if (num.isZero()) return this.abs();
var a = this.clone();
var b = num.clone();
a.negative = 0;
b.negative = 0;
// Remove common factor of two
for (var shift = 0; a.isEven() && b.isEven(); shift++) {
a.iushrn(1);
b.iushrn(1);
}
do {
while (a.isEven()) {
a.iushrn(1);
}
while (b.isEven()) {
b.iushrn(1);
}
var r = a.cmp(b);
if (r < 0) {
// Swap `a` and `b` to make `a` always bigger than `b`
var t = a;
a = b;
b = t;
} else if (r === 0 || b.cmpn(1) === 0) {
break;
}
a.isub(b);
} while (true);
return b.iushln(shift);
};
// Invert number in the field F(num)
BN.prototype.invm = function invm (num) {
return this.egcd(num).a.umod(num);
};
BN.prototype.isEven = function isEven () {
return (this.words[0] & 1) === 0;
};
BN.prototype.isOdd = function isOdd () {
return (this.words[0] & 1) === 1;
};
// And first word and num
BN.prototype.andln = function andln (num) {
return this.words[0] & num;
};
// Increment at the bit position in-line
BN.prototype.bincn = function bincn (bit) {
assert(typeof bit === 'number');
var r = bit % 26;
var s = (bit - r) / 26;
var q = 1 << r;
// Fast case: bit is much higher than all existing words
if (this.length <= s) {
this._expand(s + 1);
this.words[s] |= q;
return this;
}
// Add bit and propagate, if needed
var carry = q;
for (var i = s; carry !== 0 && i < this.length; i++) {
var w = this.words[i] | 0;
w += carry;
carry = w >>> 26;
w &= 0x3ffffff;
this.words[i] = w;
}
if (carry !== 0) {
this.words[i] = carry;
this.length++;
}
return this;
};
BN.prototype.isZero = function isZero () {
return this.length === 1 && this.words[0] === 0;
};
BN.prototype.cmpn = function cmpn (num) {
var negative = num < 0;
if (this.negative !== 0 && !negative) return -1;
if (this.negative === 0 && negative) return 1;
this._strip();
var res;
if (this.length > 1) {
res = 1;
} else {
if (negative) {
num = -num;
}
assert(num <= 0x3ffffff, 'Number is too big');
var w = this.words[0] | 0;
res = w === num ? 0 : w < num ? -1 : 1;
}
if (this.negative !== 0) return -res | 0;
return res;
};
// Compare two numbers and return:
// 1 - if `this` > `num`
// 0 - if `this` == `num`
// -1 - if `this` < `num`
BN.prototype.cmp = function cmp (num) {
if (this.negative !== 0 && num.negative === 0) return -1;
if (this.negative === 0 && num.negative !== 0) return 1;
var res = this.ucmp(num);
if (this.negative !== 0) return -res | 0;
return res;
};
// Unsigned comparison
BN.prototype.ucmp = function ucmp (num) {
// At this point both numbers have the same sign
if (this.length > num.length) return 1;
if (this.length < num.length) return -1;
var res = 0;
for (var i = this.length - 1; i >= 0; i--) {
var a = this.words[i] | 0;
var b = num.words[i] | 0;
if (a === b) continue;
if (a < b) {
res = -1;
} else if (a > b) {
res = 1;
}
break;
}
return res;
};
BN.prototype.gtn = function gtn (num) {
return this.cmpn(num) === 1;
};
BN.prototype.gt = function gt (num) {
return this.cmp(num) === 1;
};
BN.prototype.gten = function gten (num) {
return this.cmpn(num) >= 0;
};
BN.prototype.gte = function gte (num) {
return this.cmp(num) >= 0;
};
BN.prototype.ltn = function ltn (num) {
return this.cmpn(num) === -1;
};
BN.prototype.lt = function lt (num) {
return this.cmp(num) === -1;
};
BN.prototype.lten = function lten (num) {
return this.cmpn(num) <= 0;
};
BN.prototype.lte = function lte (num) {
return this.cmp(num) <= 0;
};
BN.prototype.eqn = function eqn (num) {
return this.cmpn(num) === 0;
};
BN.prototype.eq = function eq (num) {
return this.cmp(num) === 0;
};
//
// A reduce context, could be using montgomery or something better, depending
// on the `m` itself.
//
BN.red = function red (num) {
return new Red(num);
};
BN.prototype.toRed = function toRed (ctx) {
assert(!this.red, 'Already a number in reduction context');
assert(this.negative === 0, 'red works only with positives');
return ctx.convertTo(this)._forceRed(ctx);
};
BN.prototype.fromRed = function fromRed () {
assert(this.red, 'fromRed works only with numbers in reduction context');
return this.red.convertFrom(this);
};
BN.prototype._forceRed = function _forceRed (ctx) {
this.red = ctx;
return this;
};
BN.prototype.forceRed = function forceRed (ctx) {
assert(!this.red, 'Already a number in reduction context');
return this._forceRed(ctx);
};
BN.prototype.redAdd = function redAdd (num) {
assert(this.red, 'redAdd works only with red numbers');
return this.red.add(this, num);
};
BN.prototype.redIAdd = function redIAdd (num) {
assert(this.red, 'redIAdd works only with red numbers');
return this.red.iadd(this, num);
};
BN.prototype.redSub = function redSub (num) {
assert(this.red, 'redSub works only with red numbers');
return this.red.sub(this, num);
};
BN.prototype.redISub = function redISub (num) {
assert(this.red, 'redISub works only with red numbers');
return this.red.isub(this, num);
};
BN.prototype.redShl = function redShl (num) {
assert(this.red, 'redShl works only with red numbers');
return this.red.shl(this, num);
};
BN.prototype.redMul = function redMul (num) {
assert(this.red, 'redMul works only with red numbers');
this.red._verify2(this, num);
return this.red.mul(this, num);
};
BN.prototype.redIMul = function redIMul (num) {
assert(this.red, 'redMul works only with red numbers');
this.red._verify2(this, num);
return this.red.imul(this, num);
};
BN.prototype.redSqr = function redSqr () {
assert(this.red, 'redSqr works only with red numbers');
this.red._verify1(this);
return this.red.sqr(this);
};
BN.prototype.redISqr = function redISqr () {
assert(this.red, 'redISqr works only with red numbers');
this.red._verify1(this);
return this.red.isqr(this);
};
// Square root over p
BN.prototype.redSqrt = function redSqrt () {
assert(this.red, 'redSqrt works only with red numbers');
this.red._verify1(this);
return this.red.sqrt(this);
};
BN.prototype.redInvm = function redInvm () {
assert(this.red, 'redInvm works only with red numbers');
this.red._verify1(this);
return this.red.invm(this);
};
// Return negative clone of `this` % `red modulo`
BN.prototype.redNeg = function redNeg () {
assert(this.red, 'redNeg works only with red numbers');
this.red._verify1(this);
return this.red.neg(this);
};
BN.prototype.redPow = function redPow (num) {
assert(this.red && !num.red, 'redPow(normalNum)');
this.red._verify1(this);
return this.red.pow(this, num);
};
// Prime numbers with efficient reduction
var primes = {
k256: null,
p224: null,
p192: null,
p25519: null
};
// Pseudo-Mersenne prime
function MPrime (name, p) {
// P = 2 ^ N - K
this.name = name;
this.p = new BN(p, 16);
this.n = this.p.bitLength();
this.k = new BN(1).iushln(this.n).isub(this.p);
this.tmp = this._tmp();
}
MPrime.prototype._tmp = function _tmp () {
var tmp = new BN(null);
tmp.words = new Array(Math.ceil(this.n / 13));
return tmp;
};
MPrime.prototype.ireduce = function ireduce (num) {
// Assumes that `num` is less than `P^2`
// num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)
var r = num;
var rlen;
do {
this.split(r, this.tmp);
r = this.imulK(r);
r = r.iadd(this.tmp);
rlen = r.bitLength();
} while (rlen > this.n);
var cmp = rlen < this.n ? -1 : r.ucmp(this.p);
if (cmp === 0) {
r.words[0] = 0;
r.length = 1;
} else if (cmp > 0) {
r.isub(this.p);
} else {
if (r.strip !== undefined) {
// r is a BN v4 instance
r.strip();
} else {
// r is a BN v5 instance
r._strip();
}
}
return r;
};
MPrime.prototype.split = function split (input, out) {
input.iushrn(this.n, 0, out);
};
MPrime.prototype.imulK = function imulK (num) {
return num.imul(this.k);
};
function K256 () {
MPrime.call(
this,
'k256',
'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');
}
inherits(K256, MPrime);
K256.prototype.split = function split (input, output) {
// 256 = 9 * 26 + 22
var mask = 0x3fffff;
var outLen = Math.min(input.length, 9);
for (var i = 0; i < outLen; i++) {
output.words[i] = input.words[i];
}
output.length = outLen;
if (input.length <= 9) {
input.words[0] = 0;
input.length = 1;
return;
}
// Shift by 9 limbs
var prev = input.words[9];
output.words[output.length++] = prev & mask;
for (i = 10; i < input.length; i++) {
var next = input.words[i] | 0;
input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);
prev = next;
}
prev >>>= 22;
input.words[i - 10] = prev;
if (prev === 0 && input.length > 10) {
input.length -= 10;
} else {
input.length -= 9;
}
};
K256.prototype.imulK = function imulK (num) {
// K = 0x1000003d1 = [ 0x40, 0x3d1 ]
num.words[num.length] = 0;
num.words[num.length + 1] = 0;
num.length += 2;
// bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390
var lo = 0;
for (var i = 0; i < num.length; i++) {
var w = num.words[i] | 0;
lo += w * 0x3d1;
num.words[i] = lo & 0x3ffffff;
lo = w * 0x40 + ((lo / 0x4000000) | 0);
}
// Fast length reduction
if (num.words[num.length - 1] === 0) {
num.length--;
if (num.words[num.length - 1] === 0) {
num.length--;
}
}
return num;
};
function P224 () {
MPrime.call(
this,
'p224',
'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');
}
inherits(P224, MPrime);
function P192 () {
MPrime.call(
this,
'p192',
'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');
}
inherits(P192, MPrime);
function P25519 () {
// 2 ^ 255 - 19
MPrime.call(
this,
'25519',
'7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');
}
inherits(P25519, MPrime);
P25519.prototype.imulK = function imulK (num) {
// K = 0x13
var carry = 0;
for (var i = 0; i < num.length; i++) {
var hi = (num.words[i] | 0) * 0x13 + carry;
var lo = hi & 0x3ffffff;
hi >>>= 26;
num.words[i] = lo;
carry = hi;
}
if (carry !== 0) {
num.words[num.length++] = carry;
}
return num;
};
// Exported mostly for testing purposes, use plain name instead
BN._prime = function prime (name) {
// Cached version of prime
if (primes[name]) return primes[name];
var prime;
if (name === 'k256') {
prime = new K256();
} else if (name === 'p224') {
prime = new P224();
} else if (name === 'p192') {
prime = new P192();
} else if (name === 'p25519') {
prime = new P25519();
} else {
throw new Error('Unknown prime ' + name);
}
primes[name] = prime;
return prime;
};
//
// Base reduction engine
//
function Red (m) {
if (typeof m === 'string') {
var prime = BN._prime(m);
this.m = prime.p;
this.prime = prime;
} else {
assert(m.gtn(1), 'modulus must be greater than 1');
this.m = m;
this.prime = null;
}
}
Red.prototype._verify1 = function _verify1 (a) {
assert(a.negative === 0, 'red works only with positives');
assert(a.red, 'red works only with red numbers');
};
Red.prototype._verify2 = function _verify2 (a, b) {
assert((a.negative | b.negative) === 0, 'red works only with positives');
assert(a.red && a.red === b.red,
'red works only with red numbers');
};
Red.prototype.imod = function imod (a) {
if (this.prime) return this.prime.ireduce(a)._forceRed(this);
move(a, a.umod(this.m)._forceRed(this));
return a;
};
Red.prototype.neg = function neg (a) {
if (a.isZero()) {
return a.clone();
}
return this.m.sub(a)._forceRed(this);
};
Red.prototype.add = function add (a, b) {
this._verify2(a, b);
var res = a.add(b);
if (res.cmp(this.m) >= 0) {
res.isub(this.m);
}
return res._forceRed(this);
};
Red.prototype.iadd = function iadd (a, b) {
this._verify2(a, b);
var res = a.iadd(b);
if (res.cmp(this.m) >= 0) {
res.isub(this.m);
}
return res;
};
Red.prototype.sub = function sub (a, b) {
this._verify2(a, b);
var res = a.sub(b);
if (res.cmpn(0) < 0) {
res.iadd(this.m);
}
return res._forceRed(this);
};
Red.prototype.isub = function isub (a, b) {
this._verify2(a, b);
var res = a.isub(b);
if (res.cmpn(0) < 0) {
res.iadd(this.m);
}
return res;
};
Red.prototype.shl = function shl (a, num) {
this._verify1(a);
return this.imod(a.ushln(num));
};
Red.prototype.imul = function imul (a, b) {
this._verify2(a, b);
return this.imod(a.imul(b));
};
Red.prototype.mul = function mul (a, b) {
this._verify2(a, b);
return this.imod(a.mul(b));
};
Red.prototype.isqr = function isqr (a) {
return this.imul(a, a.clone());
};
Red.prototype.sqr = function sqr (a) {
return this.mul(a, a);
};
Red.prototype.sqrt = function sqrt (a) {
if (a.isZero()) return a.clone();
var mod3 = this.m.andln(3);
assert(mod3 % 2 === 1);
// Fast case
if (mod3 === 3) {
var pow = this.m.add(new BN(1)).iushrn(2);
return this.pow(a, pow);
}
// Tonelli-Shanks algorithm (Totally unoptimized and slow)
//
// Find Q and S, that Q * 2 ^ S = (P - 1)
var q = this.m.subn(1);
var s = 0;
while (!q.isZero() && q.andln(1) === 0) {
s++;
q.iushrn(1);
}
assert(!q.isZero());
var one = new BN(1).toRed(this);
var nOne = one.redNeg();
// Find quadratic non-residue
// NOTE: Max is such because of generalized Riemann hypothesis.
var lpow = this.m.subn(1).iushrn(1);
var z = this.m.bitLength();
z = new BN(2 * z * z).toRed(this);
while (this.pow(z, lpow).cmp(nOne) !== 0) {
z.redIAdd(nOne);
}
var c = this.pow(z, q);
var r = this.pow(a, q.addn(1).iushrn(1));
var t = this.pow(a, q);
var m = s;
while (t.cmp(one) !== 0) {
var tmp = t;
for (var i = 0; tmp.cmp(one) !== 0; i++) {
tmp = tmp.redSqr();
}
assert(i < m);
var b = this.pow(c, new BN(1).iushln(m - i - 1));
r = r.redMul(b);
c = b.redSqr();
t = t.redMul(c);
m = i;
}
return r;
};
Red.prototype.invm = function invm (a) {
var inv = a._invmp(this.m);
if (inv.negative !== 0) {
inv.negative = 0;
return this.imod(inv).redNeg();
} else {
return this.imod(inv);
}
};
Red.prototype.pow = function pow (a, num) {
if (num.isZero()) return new BN(1).toRed(this);
if (num.cmpn(1) === 0) return a.clone();
var windowSize = 4;
var wnd = new Array(1 << windowSize);
wnd[0] = new BN(1).toRed(this);
wnd[1] = a;
for (var i = 2; i < wnd.length; i++) {
wnd[i] = this.mul(wnd[i - 1], a);
}
var res = wnd[0];
var current = 0;
var currentLen = 0;
var start = num.bitLength() % 26;
if (start === 0) {
start = 26;
}
for (i = num.length - 1; i >= 0; i--) {
var word = num.words[i];
for (var j = start - 1; j >= 0; j--) {
var bit = (word >> j) & 1;
if (res !== wnd[0]) {
res = this.sqr(res);
}
if (bit === 0 && current === 0) {
currentLen = 0;
continue;
}
current <<= 1;
current |= bit;
currentLen++;
if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;
res = this.mul(res, wnd[current]);
currentLen = 0;
current = 0;
}
start = 26;
}
return res;
};
Red.prototype.convertTo = function convertTo (num) {
var r = num.umod(this.m);
return r === num ? r.clone() : r;
};
Red.prototype.convertFrom = function convertFrom (num) {
var res = num.clone();
res.red = null;
return res;
};
//
// Montgomery method engine
//
BN.mont = function mont (num) {
return new Mont(num);
};
function Mont (m) {
Red.call(this, m);
this.shift = this.m.bitLength();
if (this.shift % 26 !== 0) {
this.shift += 26 - (this.shift % 26);
}
this.r = new BN(1).iushln(this.shift);
this.r2 = this.imod(this.r.sqr());
this.rinv = this.r._invmp(this.m);
this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);
this.minv = this.minv.umod(this.r);
this.minv = this.r.sub(this.minv);
}
inherits(Mont, Red);
Mont.prototype.convertTo = function convertTo (num) {
return this.imod(num.ushln(this.shift));
};
Mont.prototype.convertFrom = function convertFrom (num) {
var r = this.imod(num.mul(this.rinv));
r.red = null;
return r;
};
Mont.prototype.imul = function imul (a, b) {
if (a.isZero() || b.isZero()) {
a.words[0] = 0;
a.length = 1;
return a;
}
var t = a.imul(b);
var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
var u = t.isub(c).iushrn(this.shift);
var res = u;
if (u.cmp(this.m) >= 0) {
res = u.isub(this.m);
} else if (u.cmpn(0) < 0) {
res = u.iadd(this.m);
}
return res._forceRed(this);
};
Mont.prototype.mul = function mul (a, b) {
if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);
var t = a.mul(b);
var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
var u = t.isub(c).iushrn(this.shift);
var res = u;
if (u.cmp(this.m) >= 0) {
res = u.isub(this.m);
} else if (u.cmpn(0) < 0) {
res = u.iadd(this.m);
}
return res._forceRed(this);
};
Mont.prototype.invm = function invm (a) {
// (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R
var res = this.imod(a._invmp(this.m).mul(this.r2));
return res._forceRed(this);
};
})( false || module, this);
/***/ }),
/***/ 5037:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var r;
module.exports = function rand(len) {
if (!r)
r = new Rand(null);
return r.generate(len);
};
function Rand(rand) {
this.rand = rand;
}
module.exports.Rand = Rand;
Rand.prototype.generate = function generate(len) {
return this._rand(len);
};
// Emulate crypto API using randy
Rand.prototype._rand = function _rand(n) {
if (this.rand.getBytes)
return this.rand.getBytes(n);
var res = new Uint8Array(n);
for (var i = 0; i < res.length; i++)
res[i] = this.rand.getByte();
return res;
};
if (typeof self === 'object') {
if (self.crypto && self.crypto.getRandomValues) {
// Modern browsers
Rand.prototype._rand = function _rand(n) {
var arr = new Uint8Array(n);
self.crypto.getRandomValues(arr);
return arr;
};
} else if (self.msCrypto && self.msCrypto.getRandomValues) {
// IE
Rand.prototype._rand = function _rand(n) {
var arr = new Uint8Array(n);
self.msCrypto.getRandomValues(arr);
return arr;
};
// Safari's WebWorkers do not have `crypto`
} else if (typeof window === 'object') {
// Old junk
Rand.prototype._rand = function() {
throw new Error('Not implemented yet');
};
}
} else {
// Node.js or Web worker with no crypto support
try {
var crypto = __webpack_require__(3776);
if (typeof crypto.randomBytes !== 'function')
throw new Error('Not supported');
Rand.prototype._rand = function _rand(n) {
return crypto.randomBytes(n);
};
} catch (e) {
}
}
/***/ }),
/***/ 462:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
// based on the aes implimentation in triple sec
// https://github.com/keybase/triplesec
// which is in turn based on the one from crypto-js
// https://code.google.com/p/crypto-js/
var Buffer = (__webpack_require__(2861).Buffer)
function asUInt32Array (buf) {
if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)
var len = (buf.length / 4) | 0
var out = new Array(len)
for (var i = 0; i < len; i++) {
out[i] = buf.readUInt32BE(i * 4)
}
return out
}
function scrubVec (v) {
for (var i = 0; i < v.length; v++) {
v[i] = 0
}
}
function cryptBlock (M, keySchedule, SUB_MIX, SBOX, nRounds) {
var SUB_MIX0 = SUB_MIX[0]
var SUB_MIX1 = SUB_MIX[1]
var SUB_MIX2 = SUB_MIX[2]
var SUB_MIX3 = SUB_MIX[3]
var s0 = M[0] ^ keySchedule[0]
var s1 = M[1] ^ keySchedule[1]
var s2 = M[2] ^ keySchedule[2]
var s3 = M[3] ^ keySchedule[3]
var t0, t1, t2, t3
var ksRow = 4
for (var round = 1; round < nRounds; round++) {
t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[(s1 >>> 16) & 0xff] ^ SUB_MIX2[(s2 >>> 8) & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++]
t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[(s2 >>> 16) & 0xff] ^ SUB_MIX2[(s3 >>> 8) & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++]
t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[(s3 >>> 16) & 0xff] ^ SUB_MIX2[(s0 >>> 8) & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++]
t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[(s0 >>> 16) & 0xff] ^ SUB_MIX2[(s1 >>> 8) & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++]
s0 = t0
s1 = t1
s2 = t2
s3 = t3
}
t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]
t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]
t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]
t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]
t0 = t0 >>> 0
t1 = t1 >>> 0
t2 = t2 >>> 0
t3 = t3 >>> 0
return [t0, t1, t2, t3]
}
// AES constants
var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]
var G = (function () {
// Compute double table
var d = new Array(256)
for (var j = 0; j < 256; j++) {
if (j < 128) {
d[j] = j << 1
} else {
d[j] = (j << 1) ^ 0x11b
}
}
var SBOX = []
var INV_SBOX = []
var SUB_MIX = [[], [], [], []]
var INV_SUB_MIX = [[], [], [], []]
// Walk GF(2^8)
var x = 0
var xi = 0
for (var i = 0; i < 256; ++i) {
// Compute sbox
var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)
sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63
SBOX[x] = sx
INV_SBOX[sx] = x
// Compute multiplication
var x2 = d[x]
var x4 = d[x2]
var x8 = d[x4]
// Compute sub bytes, mix columns tables
var t = (d[sx] * 0x101) ^ (sx * 0x1010100)
SUB_MIX[0][x] = (t << 24) | (t >>> 8)
SUB_MIX[1][x] = (t << 16) | (t >>> 16)
SUB_MIX[2][x] = (t << 8) | (t >>> 24)
SUB_MIX[3][x] = t
// Compute inv sub bytes, inv mix columns tables
t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)
INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)
INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)
INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)
INV_SUB_MIX[3][sx] = t
if (x === 0) {
x = xi = 1
} else {
x = x2 ^ d[d[d[x8 ^ x2]]]
xi ^= d[d[xi]]
}
}
return {
SBOX: SBOX,
INV_SBOX: INV_SBOX,
SUB_MIX: SUB_MIX,
INV_SUB_MIX: INV_SUB_MIX
}
})()
function AES (key) {
this._key = asUInt32Array(key)
this._reset()
}
AES.blockSize = 4 * 4
AES.keySize = 256 / 8
AES.prototype.blockSize = AES.blockSize
AES.prototype.keySize = AES.keySize
AES.prototype._reset = function () {
var keyWords = this._key
var keySize = keyWords.length
var nRounds = keySize + 6
var ksRows = (nRounds + 1) * 4
var keySchedule = []
for (var k = 0; k < keySize; k++) {
keySchedule[k] = keyWords[k]
}
for (k = keySize; k < ksRows; k++) {
var t = keySchedule[k - 1]
if (k % keySize === 0) {
t = (t << 8) | (t >>> 24)
t =
(G.SBOX[t >>> 24] << 24) |
(G.SBOX[(t >>> 16) & 0xff] << 16) |
(G.SBOX[(t >>> 8) & 0xff] << 8) |
(G.SBOX[t & 0xff])
t ^= RCON[(k / keySize) | 0] << 24
} else if (keySize > 6 && k % keySize === 4) {
t =
(G.SBOX[t >>> 24] << 24) |
(G.SBOX[(t >>> 16) & 0xff] << 16) |
(G.SBOX[(t >>> 8) & 0xff] << 8) |
(G.SBOX[t & 0xff])
}
keySchedule[k] = keySchedule[k - keySize] ^ t
}
var invKeySchedule = []
for (var ik = 0; ik < ksRows; ik++) {
var ksR = ksRows - ik
var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)]
if (ik < 4 || ksR <= 4) {
invKeySchedule[ik] = tt
} else {
invKeySchedule[ik] =
G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^
G.INV_SUB_MIX[1][G.SBOX[(tt >>> 16) & 0xff]] ^
G.INV_SUB_MIX[2][G.SBOX[(tt >>> 8) & 0xff]] ^
G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]]
}
}
this._nRounds = nRounds
this._keySchedule = keySchedule
this._invKeySchedule = invKeySchedule
}
AES.prototype.encryptBlockRaw = function (M) {
M = asUInt32Array(M)
return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds)
}
AES.prototype.encryptBlock = function (M) {
var out = this.encryptBlockRaw(M)
var buf = Buffer.allocUnsafe(16)
buf.writeUInt32BE(out[0], 0)
buf.writeUInt32BE(out[1], 4)
buf.writeUInt32BE(out[2], 8)
buf.writeUInt32BE(out[3], 12)
return buf
}
AES.prototype.decryptBlock = function (M) {
M = asUInt32Array(M)
// swap
var m1 = M[1]
M[1] = M[3]
M[3] = m1
var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds)
var buf = Buffer.allocUnsafe(16)
buf.writeUInt32BE(out[0], 0)
buf.writeUInt32BE(out[3], 4)
buf.writeUInt32BE(out[2], 8)
buf.writeUInt32BE(out[1], 12)
return buf
}
AES.prototype.scrub = function () {
scrubVec(this._keySchedule)
scrubVec(this._invKeySchedule)
scrubVec(this._key)
}
module.exports.AES = AES
/***/ }),
/***/ 2356:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var aes = __webpack_require__(462)
var Buffer = (__webpack_require__(2861).Buffer)
var Transform = __webpack_require__(6168)
var inherits = __webpack_require__(6698)
var GHASH = __webpack_require__(5892)
var xor = __webpack_require__(295)
var incr32 = __webpack_require__(5122)
function xorTest (a, b) {
var out = 0
if (a.length !== b.length) out++
var len = Math.min(a.length, b.length)
for (var i = 0; i < len; ++i) {
out += (a[i] ^ b[i])
}
return out
}
function calcIv (self, iv, ck) {
if (iv.length === 12) {
self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])])
return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])])
}
var ghash = new GHASH(ck)
var len = iv.length
var toPad = len % 16
ghash.update(iv)
if (toPad) {
toPad = 16 - toPad
ghash.update(Buffer.alloc(toPad, 0))
}
ghash.update(Buffer.alloc(8, 0))
var ivBits = len * 8
var tail = Buffer.alloc(8)
tail.writeUIntBE(ivBits, 0, 8)
ghash.update(tail)
self._finID = ghash.state
var out = Buffer.from(self._finID)
incr32(out)
return out
}
function StreamCipher (mode, key, iv, decrypt) {
Transform.call(this)
var h = Buffer.alloc(4, 0)
this._cipher = new aes.AES(key)
var ck = this._cipher.encryptBlock(h)
this._ghash = new GHASH(ck)
iv = calcIv(this, iv, ck)
this._prev = Buffer.from(iv)
this._cache = Buffer.allocUnsafe(0)
this._secCache = Buffer.allocUnsafe(0)
this._decrypt = decrypt
this._alen = 0
this._len = 0
this._mode = mode
this._authTag = null
this._called = false
}
inherits(StreamCipher, Transform)
StreamCipher.prototype._update = function (chunk) {
if (!this._called && this._alen) {
var rump = 16 - (this._alen % 16)
if (rump < 16) {
rump = Buffer.alloc(rump, 0)
this._ghash.update(rump)
}
}
this._called = true
var out = this._mode.encrypt(this, chunk)
if (this._decrypt) {
this._ghash.update(chunk)
} else {
this._ghash.update(out)
}
this._len += chunk.length
return out
}
StreamCipher.prototype._final = function () {
if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data')
var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID))
if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data')
this._authTag = tag
this._cipher.scrub()
}
StreamCipher.prototype.getAuthTag = function getAuthTag () {
if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state')
return this._authTag
}
StreamCipher.prototype.setAuthTag = function setAuthTag (tag) {
if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state')
this._authTag = tag
}
StreamCipher.prototype.setAAD = function setAAD (buf) {
if (this._called) throw new Error('Attempting to set AAD in unsupported state')
this._ghash.update(buf)
this._alen += buf.length
}
module.exports = StreamCipher
/***/ }),
/***/ 1241:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
var ciphers = __webpack_require__(5799)
var deciphers = __webpack_require__(6171)
var modes = __webpack_require__(3219)
function getCiphers () {
return Object.keys(modes)
}
exports.createCipher = exports.Cipher = ciphers.createCipher
exports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv
exports.createDecipher = exports.Decipher = deciphers.createDecipher
exports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv
exports.listCiphers = exports.getCiphers = getCiphers
/***/ }),
/***/ 6171:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
var AuthCipher = __webpack_require__(2356)
var Buffer = (__webpack_require__(2861).Buffer)
var MODES = __webpack_require__(530)
var StreamCipher = __webpack_require__(650)
var Transform = __webpack_require__(6168)
var aes = __webpack_require__(462)
var ebtk = __webpack_require__(8078)
var inherits = __webpack_require__(6698)
function Decipher (mode, key, iv) {
Transform.call(this)
this._cache = new Splitter()
this._last = void 0
this._cipher = new aes.AES(key)
this._prev = Buffer.from(iv)
this._mode = mode
this._autopadding = true
}
inherits(Decipher, Transform)
Decipher.prototype._update = function (data) {
this._cache.add(data)
var chunk
var thing
var out = []
while ((chunk = this._cache.get(this._autopadding))) {
thing = this._mode.decrypt(this, chunk)
out.push(thing)
}
return Buffer.concat(out)
}
Decipher.prototype._final = function () {
var chunk = this._cache.flush()
if (this._autopadding) {
return unpad(this._mode.decrypt(this, chunk))
} else if (chunk) {
throw new Error('data not multiple of block length')
}
}
Decipher.prototype.setAutoPadding = function (setTo) {
this._autopadding = !!setTo
return this
}
function Splitter () {
this.cache = Buffer.allocUnsafe(0)
}
Splitter.prototype.add = function (data) {
this.cache = Buffer.concat([this.cache, data])
}
Splitter.prototype.get = function (autoPadding) {
var out
if (autoPadding) {
if (this.cache.length > 16) {
out = this.cache.slice(0, 16)
this.cache = this.cache.slice(16)
return out
}
} else {
if (this.cache.length >= 16) {
out = this.cache.slice(0, 16)
this.cache = this.cache.slice(16)
return out
}
}
return null
}
Splitter.prototype.flush = function () {
if (this.cache.length) return this.cache
}
function unpad (last) {
var padded = last[15]
if (padded < 1 || padded > 16) {
throw new Error('unable to decrypt data')
}
var i = -1
while (++i < padded) {
if (last[(i + (16 - padded))] !== padded) {
throw new Error('unable to decrypt data')
}
}
if (padded === 16) return
return last.slice(0, 16 - padded)
}
function createDecipheriv (suite, password, iv) {
var config = MODES[suite.toLowerCase()]
if (!config) throw new TypeError('invalid suite type')
if (typeof iv === 'string') iv = Buffer.from(iv)
if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)
if (typeof password === 'string') password = Buffer.from(password)
if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)
if (config.type === 'stream') {
return new StreamCipher(config.module, password, iv, true)
} else if (config.type === 'auth') {
return new AuthCipher(config.module, password, iv, true)
}
return new Decipher(config.module, password, iv)
}
function createDecipher (suite, password) {
var config = MODES[suite.toLowerCase()]
if (!config) throw new TypeError('invalid suite type')
var keys = ebtk(password, false, config.key, config.iv)
return createDecipheriv(suite, keys.key, keys.iv)
}
exports.createDecipher = createDecipher
exports.createDecipheriv = createDecipheriv
/***/ }),
/***/ 5799:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
var MODES = __webpack_require__(530)
var AuthCipher = __webpack_require__(2356)
var Buffer = (__webpack_require__(2861).Buffer)
var StreamCipher = __webpack_require__(650)
var Transform = __webpack_require__(6168)
var aes = __webpack_require__(462)
var ebtk = __webpack_require__(8078)
var inherits = __webpack_require__(6698)
function Cipher (mode, key, iv) {
Transform.call(this)
this._cache = new Splitter()
this._cipher = new aes.AES(key)
this._prev = Buffer.from(iv)
this._mode = mode
this._autopadding = true
}
inherits(Cipher, Transform)
Cipher.prototype._update = function (data) {
this._cache.add(data)
var chunk
var thing
var out = []
while ((chunk = this._cache.get())) {
thing = this._mode.encrypt(this, chunk)
out.push(thing)
}
return Buffer.concat(out)
}
var PADDING = Buffer.alloc(16, 0x10)
Cipher.prototype._final = function () {
var chunk = this._cache.flush()
if (this._autopadding) {
chunk = this._mode.encrypt(this, chunk)
this._cipher.scrub()
return chunk
}
if (!chunk.equals(PADDING)) {
this._cipher.scrub()
throw new Error('data not multiple of block length')
}
}
Cipher.prototype.setAutoPadding = function (setTo) {
this._autopadding = !!setTo
return this
}
function Splitter () {
this.cache = Buffer.allocUnsafe(0)
}
Splitter.prototype.add = function (data) {
this.cache = Buffer.concat([this.cache, data])
}
Splitter.prototype.get = function () {
if (this.cache.length > 15) {
var out = this.cache.slice(0, 16)
this.cache = this.cache.slice(16)
return out
}
return null
}
Splitter.prototype.flush = function () {
var len = 16 - this.cache.length
var padBuff = Buffer.allocUnsafe(len)
var i = -1
while (++i < len) {
padBuff.writeUInt8(len, i)
}
return Buffer.concat([this.cache, padBuff])
}
function createCipheriv (suite, password, iv) {
var config = MODES[suite.toLowerCase()]
if (!config) throw new TypeError('invalid suite type')
if (typeof password === 'string') password = Buffer.from(password)
if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)
if (typeof iv === 'string') iv = Buffer.from(iv)
if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)
if (config.type === 'stream') {
return new StreamCipher(config.module, password, iv)
} else if (config.type === 'auth') {
return new AuthCipher(config.module, password, iv)
}
return new Cipher(config.module, password, iv)
}
function createCipher (suite, password) {
var config = MODES[suite.toLowerCase()]
if (!config) throw new TypeError('invalid suite type')
var keys = ebtk(password, false, config.key, config.iv)
return createCipheriv(suite, keys.key, keys.iv)
}
exports.createCipheriv = createCipheriv
exports.createCipher = createCipher
/***/ }),
/***/ 5892:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var Buffer = (__webpack_require__(2861).Buffer)
var ZEROES = Buffer.alloc(16, 0)
function toArray (buf) {
return [
buf.readUInt32BE(0),
buf.readUInt32BE(4),
buf.readUInt32BE(8),
buf.readUInt32BE(12)
]
}
function fromArray (out) {
var buf = Buffer.allocUnsafe(16)
buf.writeUInt32BE(out[0] >>> 0, 0)
buf.writeUInt32BE(out[1] >>> 0, 4)
buf.writeUInt32BE(out[2] >>> 0, 8)
buf.writeUInt32BE(out[3] >>> 0, 12)
return buf
}
function GHASH (key) {
this.h = key
this.state = Buffer.alloc(16, 0)
this.cache = Buffer.allocUnsafe(0)
}
// from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html
// by Juho Vähä-Herttua
GHASH.prototype.ghash = function (block) {
var i = -1
while (++i < block.length) {
this.state[i] ^= block[i]
}
this._multiply()
}
GHASH.prototype._multiply = function () {
var Vi = toArray(this.h)
var Zi = [0, 0, 0, 0]
var j, xi, lsbVi
var i = -1
while (++i < 128) {
xi = (this.state[~~(i / 8)] & (1 << (7 - (i % 8)))) !== 0
if (xi) {
// Z_i+1 = Z_i ^ V_i
Zi[0] ^= Vi[0]
Zi[1] ^= Vi[1]
Zi[2] ^= Vi[2]
Zi[3] ^= Vi[3]
}
// Store the value of LSB(V_i)
lsbVi = (Vi[3] & 1) !== 0
// V_i+1 = V_i >> 1
for (j = 3; j > 0; j--) {
Vi[j] = (Vi[j] >>> 1) | ((Vi[j - 1] & 1) << 31)
}
Vi[0] = Vi[0] >>> 1
// If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R
if (lsbVi) {
Vi[0] = Vi[0] ^ (0xe1 << 24)
}
}
this.state = fromArray(Zi)
}
GHASH.prototype.update = function (buf) {
this.cache = Buffer.concat([this.cache, buf])
var chunk
while (this.cache.length >= 16) {
chunk = this.cache.slice(0, 16)
this.cache = this.cache.slice(16)
this.ghash(chunk)
}
}
GHASH.prototype.final = function (abl, bl) {
if (this.cache.length) {
this.ghash(Buffer.concat([this.cache, ZEROES], 16))
}
this.ghash(fromArray([0, abl, 0, bl]))
return this.state
}
module.exports = GHASH
/***/ }),
/***/ 5122:
/***/ ((module) => {
function incr32 (iv) {
var len = iv.length
var item
while (len--) {
item = iv.readUInt8(len)
if (item === 255) {
iv.writeUInt8(0, len)
} else {
item++
iv.writeUInt8(item, len)
break
}
}
}
module.exports = incr32
/***/ }),
/***/ 2884:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
var xor = __webpack_require__(295)
exports.encrypt = function (self, block) {
var data = xor(block, self._prev)
self._prev = self._cipher.encryptBlock(data)
return self._prev
}
exports.decrypt = function (self, block) {
var pad = self._prev
self._prev = block
var out = self._cipher.decryptBlock(block)
return xor(out, pad)
}
/***/ }),
/***/ 6383:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
var Buffer = (__webpack_require__(2861).Buffer)
var xor = __webpack_require__(295)
function encryptStart (self, data, decrypt) {
var len = data.length
var out = xor(data, self._cache)
self._cache = self._cache.slice(len)
self._prev = Buffer.concat([self._prev, decrypt ? data : out])
return out
}
exports.encrypt = function (self, data, decrypt) {
var out = Buffer.allocUnsafe(0)
var len
while (data.length) {
if (self._cache.length === 0) {
self._cache = self._cipher.encryptBlock(self._prev)
self._prev = Buffer.allocUnsafe(0)
}
if (self._cache.length <= data.length) {
len = self._cache.length
out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)])
data = data.slice(len)
} else {
out = Buffer.concat([out, encryptStart(self, data, decrypt)])
break
}
}
return out
}
/***/ }),
/***/ 5264:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
var Buffer = (__webpack_require__(2861).Buffer)
function encryptByte (self, byteParam, decrypt) {
var pad
var i = -1
var len = 8
var out = 0
var bit, value
while (++i < len) {
pad = self._cipher.encryptBlock(self._prev)
bit = (byteParam & (1 << (7 - i))) ? 0x80 : 0
value = pad[0] ^ bit
out += ((value & 0x80) >> (i % 8))
self._prev = shiftIn(self._prev, decrypt ? bit : value)
}
return out
}
function shiftIn (buffer, value) {
var len = buffer.length
var i = -1
var out = Buffer.allocUnsafe(buffer.length)
buffer = Buffer.concat([buffer, Buffer.from([value])])
while (++i < len) {
out[i] = buffer[i] << 1 | buffer[i + 1] >> (7)
}
return out
}
exports.encrypt = function (self, chunk, decrypt) {
var len = chunk.length
var out = Buffer.allocUnsafe(len)
var i = -1
while (++i < len) {
out[i] = encryptByte(self, chunk[i], decrypt)
}
return out
}
/***/ }),
/***/ 6975:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
var Buffer = (__webpack_require__(2861).Buffer)
function encryptByte (self, byteParam, decrypt) {
var pad = self._cipher.encryptBlock(self._prev)
var out = pad[0] ^ byteParam
self._prev = Buffer.concat([
self._prev.slice(1),
Buffer.from([decrypt ? byteParam : out])
])
return out
}
exports.encrypt = function (self, chunk, decrypt) {
var len = chunk.length
var out = Buffer.allocUnsafe(len)
var i = -1
while (++i < len) {
out[i] = encryptByte(self, chunk[i], decrypt)
}
return out
}
/***/ }),
/***/ 3053:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
var xor = __webpack_require__(295)
var Buffer = (__webpack_require__(2861).Buffer)
var incr32 = __webpack_require__(5122)
function getBlock (self) {
var out = self._cipher.encryptBlockRaw(self._prev)
incr32(self._prev)
return out
}
var blockSize = 16
exports.encrypt = function (self, chunk) {
var chunkNum = Math.ceil(chunk.length / blockSize)
var start = self._cache.length
self._cache = Buffer.concat([
self._cache,
Buffer.allocUnsafe(chunkNum * blockSize)
])
for (var i = 0; i < chunkNum; i++) {
var out = getBlock(self)
var offset = start + i * blockSize
self._cache.writeUInt32BE(out[0], offset + 0)
self._cache.writeUInt32BE(out[1], offset + 4)
self._cache.writeUInt32BE(out[2], offset + 8)
self._cache.writeUInt32BE(out[3], offset + 12)
}
var pad = self._cache.slice(0, chunk.length)
self._cache = self._cache.slice(chunk.length)
return xor(chunk, pad)
}
/***/ }),
/***/ 2632:
/***/ ((__unused_webpack_module, exports) => {
exports.encrypt = function (self, block) {
return self._cipher.encryptBlock(block)
}
exports.decrypt = function (self, block) {
return self._cipher.decryptBlock(block)
}
/***/ }),
/***/ 530:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var modeModules = {
ECB: __webpack_require__(2632),
CBC: __webpack_require__(2884),
CFB: __webpack_require__(6383),
CFB8: __webpack_require__(6975),
CFB1: __webpack_require__(5264),
OFB: __webpack_require__(6843),
CTR: __webpack_require__(3053),
GCM: __webpack_require__(3053)
}
var modes = __webpack_require__(3219)
for (var key in modes) {
modes[key].module = modeModules[modes[key].mode]
}
module.exports = modes
/***/ }),
/***/ 6843:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
/* provided dependency */ var Buffer = __webpack_require__(8287)["Buffer"];
var xor = __webpack_require__(295)
function getBlock (self) {
self._prev = self._cipher.encryptBlock(self._prev)
return self._prev
}
exports.encrypt = function (self, chunk) {
while (self._cache.length < chunk.length) {
self._cache = Buffer.concat([self._cache, getBlock(self)])
}
var pad = self._cache.slice(0, chunk.length)
self._cache = self._cache.slice(chunk.length)
return xor(chunk, pad)
}
/***/ }),
/***/ 650:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var aes = __webpack_require__(462)
var Buffer = (__webpack_require__(2861).Buffer)
var Transform = __webpack_require__(6168)
var inherits = __webpack_require__(6698)
function StreamCipher (mode, key, iv, decrypt) {
Transform.call(this)
this._cipher = new aes.AES(key)
this._prev = Buffer.from(iv)
this._cache = Buffer.allocUnsafe(0)
this._secCache = Buffer.allocUnsafe(0)
this._decrypt = decrypt
this._mode = mode
}
inherits(StreamCipher, Transform)
StreamCipher.prototype._update = function (chunk) {
return this._mode.encrypt(this, chunk, this._decrypt)
}
StreamCipher.prototype._final = function () {
this._cipher.scrub()
}
module.exports = StreamCipher
/***/ }),
/***/ 125:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
var DES = __webpack_require__(4050)
var aes = __webpack_require__(1241)
var aesModes = __webpack_require__(530)
var desModes = __webpack_require__(2438)
var ebtk = __webpack_require__(8078)
function createCipher (suite, password) {
suite = suite.toLowerCase()
var keyLen, ivLen
if (aesModes[suite]) {
keyLen = aesModes[suite].key
ivLen = aesModes[suite].iv
} else if (desModes[suite]) {
keyLen = desModes[suite].key * 8
ivLen = desModes[suite].iv
} else {
throw new TypeError('invalid suite type')
}
var keys = ebtk(password, false, keyLen, ivLen)
return createCipheriv(suite, keys.key, keys.iv)
}
function createDecipher (suite, password) {
suite = suite.toLowerCase()
var keyLen, ivLen
if (aesModes[suite]) {
keyLen = aesModes[suite].key
ivLen = aesModes[suite].iv
} else if (desModes[suite]) {
keyLen = desModes[suite].key * 8
ivLen = desModes[suite].iv
} else {
throw new TypeError('invalid suite type')
}
var keys = ebtk(password, false, keyLen, ivLen)
return createDecipheriv(suite, keys.key, keys.iv)
}
function createCipheriv (suite, key, iv) {
suite = suite.toLowerCase()
if (aesModes[suite]) return aes.createCipheriv(suite, key, iv)
if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite })
throw new TypeError('invalid suite type')
}
function createDecipheriv (suite, key, iv) {
suite = suite.toLowerCase()
if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv)
if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite, decrypt: true })
throw new TypeError('invalid suite type')
}
function getCiphers () {
return Object.keys(desModes).concat(aes.getCiphers())
}
exports.createCipher = exports.Cipher = createCipher
exports.createCipheriv = exports.Cipheriv = createCipheriv
exports.createDecipher = exports.Decipher = createDecipher
exports.createDecipheriv = exports.Decipheriv = createDecipheriv
exports.listCiphers = exports.getCiphers = getCiphers
/***/ }),
/***/ 4050:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var CipherBase = __webpack_require__(6168)
var des = __webpack_require__(9560)
var inherits = __webpack_require__(6698)
var Buffer = (__webpack_require__(2861).Buffer)
var modes = {
'des-ede3-cbc': des.CBC.instantiate(des.EDE),
'des-ede3': des.EDE,
'des-ede-cbc': des.CBC.instantiate(des.EDE),
'des-ede': des.EDE,
'des-cbc': des.CBC.instantiate(des.DES),
'des-ecb': des.DES
}
modes.des = modes['des-cbc']
modes.des3 = modes['des-ede3-cbc']
module.exports = DES
inherits(DES, CipherBase)
function DES (opts) {
CipherBase.call(this)
var modeName = opts.mode.toLowerCase()
var mode = modes[modeName]
var type
if (opts.decrypt) {
type = 'decrypt'
} else {
type = 'encrypt'
}
var key = opts.key
if (!Buffer.isBuffer(key)) {
key = Buffer.from(key)
}
if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {
key = Buffer.concat([key, key.slice(0, 8)])
}
var iv = opts.iv
if (!Buffer.isBuffer(iv)) {
iv = Buffer.from(iv)
}
this._des = mode.create({
key: key,
iv: iv,
type: type
})
}
DES.prototype._update = function (data) {
return Buffer.from(this._des.update(data))
}
DES.prototype._final = function () {
return Buffer.from(this._des.final())
}
/***/ }),
/***/ 2438:
/***/ ((__unused_webpack_module, exports) => {
exports["des-ecb"] = {
key: 8,
iv: 0
}
exports["des-cbc"] = exports.des = {
key: 8,
iv: 8
}
exports["des-ede3-cbc"] = exports.des3 = {
key: 24,
iv: 8
}
exports["des-ede3"] = {
key: 24,
iv: 0
}
exports["des-ede-cbc"] = {
key: 16,
iv: 8
}
exports["des-ede"] = {
key: 16,
iv: 0
}
/***/ }),
/***/ 7332:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
/* provided dependency */ var Buffer = __webpack_require__(8287)["Buffer"];
var BN = __webpack_require__(9404)
var randomBytes = __webpack_require__(3209)
function blind (priv) {
var r = getr(priv)
var blinder = r.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed()
return { blinder: blinder, unblinder: r.invm(priv.modulus) }
}
function getr (priv) {
var len = priv.modulus.byteLength()
var r
do {
r = new BN(randomBytes(len))
} while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2))
return r
}
function crt (msg, priv) {
var blinds = blind(priv)
var len = priv.modulus.byteLength()
var blinded = new BN(msg).mul(blinds.blinder).umod(priv.modulus)
var c1 = blinded.toRed(BN.mont(priv.prime1))
var c2 = blinded.toRed(BN.mont(priv.prime2))
var qinv = priv.coefficient
var p = priv.prime1
var q = priv.prime2
var m1 = c1.redPow(priv.exponent1).fromRed()
var m2 = c2.redPow(priv.exponent2).fromRed()
var h = m1.isub(m2).imul(qinv).umod(p).imul(q)
return m2.iadd(h).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer, 'be', len)
}
crt.getr = getr
module.exports = crt
/***/ }),
/***/ 5715:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
module.exports = __webpack_require__(2951);
/***/ }),
/***/ 20:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var Buffer = (__webpack_require__(2861).Buffer);
var createHash = __webpack_require__(7108);
var stream = __webpack_require__(6737);
var inherits = __webpack_require__(6698);
var sign = __webpack_require__(5359);
var verify = __webpack_require__(4847);
var algorithms = __webpack_require__(2951);
Object.keys(algorithms).forEach(function (key) {
algorithms[key].id = Buffer.from(algorithms[key].id, 'hex');
algorithms[key.toLowerCase()] = algorithms[key];
});
function Sign(algorithm) {
stream.Writable.call(this);
var data = algorithms[algorithm];
if (!data) { throw new Error('Unknown message digest'); }
this._hashType = data.hash;
this._hash = createHash(data.hash);
this._tag = data.id;
this._signType = data.sign;
}
inherits(Sign, stream.Writable);
Sign.prototype._write = function _write(data, _, done) {
this._hash.update(data);
done();
};
Sign.prototype.update = function update(data, enc) {
this._hash.update(typeof data === 'string' ? Buffer.from(data, enc) : data);
return this;
};
Sign.prototype.sign = function signMethod(key, enc) {
this.end();
var hash = this._hash.digest();
var sig = sign(hash, key, this._hashType, this._signType, this._tag);
return enc ? sig.toString(enc) : sig;
};
function Verify(algorithm) {
stream.Writable.call(this);
var data = algorithms[algorithm];
if (!data) { throw new Error('Unknown message digest'); }
this._hash = createHash(data.hash);
this._tag = data.id;
this._signType = data.sign;
}
inherits(Verify, stream.Writable);
Verify.prototype._write = function _write(data, _, done) {
this._hash.update(data);
done();
};
Verify.prototype.update = function update(data, enc) {
this._hash.update(typeof data === 'string' ? Buffer.from(data, enc) : data);
return this;
};
Verify.prototype.verify = function verifyMethod(key, sig, enc) {
var sigBuffer = typeof sig === 'string' ? Buffer.from(sig, enc) : sig;
this.end();
var hash = this._hash.digest();
return verify(sigBuffer, hash, key, this._signType, this._tag);
};
function createSign(algorithm) {
return new Sign(algorithm);
}
function createVerify(algorithm) {
return new Verify(algorithm);
}
module.exports = {
Sign: createSign,
Verify: createVerify,
createSign: createSign,
createVerify: createVerify
};
/***/ }),
/***/ 5359:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js
var Buffer = (__webpack_require__(2861).Buffer);
var createHmac = __webpack_require__(3507);
var crt = __webpack_require__(7332);
var EC = (__webpack_require__(6729).ec);
var BN = __webpack_require__(9404);
var parseKeys = __webpack_require__(8170);
var curves = __webpack_require__(4589);
var RSA_PKCS1_PADDING = 1;
function sign(hash, key, hashType, signType, tag) {
var priv = parseKeys(key);
if (priv.curve) {
// rsa keys can be interpreted as ecdsa ones in openssl
if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') { throw new Error('wrong private key type'); }
return ecSign(hash, priv);
} else if (priv.type === 'dsa') {
if (signType !== 'dsa') { throw new Error('wrong private key type'); }
return dsaSign(hash, priv, hashType);
}
if (signType !== 'rsa' && signType !== 'ecdsa/rsa') { throw new Error('wrong private key type'); }
if (key.padding !== undefined && key.padding !== RSA_PKCS1_PADDING) { throw new Error('illegal or unsupported padding mode'); }
hash = Buffer.concat([tag, hash]);
var len = priv.modulus.byteLength();
var pad = [0, 1];
while (hash.length + pad.length + 1 < len) { pad.push(0xff); }
pad.push(0x00);
var i = -1;
while (++i < hash.length) { pad.push(hash[i]); }
var out = crt(pad, priv);
return out;
}
function ecSign(hash, priv) {
var curveId = curves[priv.curve.join('.')];
if (!curveId) { throw new Error('unknown curve ' + priv.curve.join('.')); }
var curve = new EC(curveId);
var key = curve.keyFromPrivate(priv.privateKey);
var out = key.sign(hash);
return Buffer.from(out.toDER());
}
function dsaSign(hash, priv, algo) {
var x = priv.params.priv_key;
var p = priv.params.p;
var q = priv.params.q;
var g = priv.params.g;
var r = new BN(0);
var k;
var H = bits2int(hash, q).mod(q);
var s = false;
var kv = getKey(x, q, hash, algo);
while (s === false) {
k = makeKey(q, kv, algo);
r = makeR(g, k, p, q);
s = k.invm(q).imul(H.add(x.mul(r))).mod(q);
if (s.cmpn(0) === 0) {
s = false;
r = new BN(0);
}
}
return toDER(r, s);
}
function toDER(r, s) {
r = r.toArray();
s = s.toArray();
// Pad values
if (r[0] & 0x80) { r = [0].concat(r); }
if (s[0] & 0x80) { s = [0].concat(s); }
var total = r.length + s.length + 4;
var res = [
0x30, total, 0x02, r.length
];
res = res.concat(r, [0x02, s.length], s);
return Buffer.from(res);
}
function getKey(x, q, hash, algo) {
x = Buffer.from(x.toArray());
if (x.length < q.byteLength()) {
var zeros = Buffer.alloc(q.byteLength() - x.length);
x = Buffer.concat([zeros, x]);
}
var hlen = hash.length;
var hbits = bits2octets(hash, q);
var v = Buffer.alloc(hlen);
v.fill(1);
var k = Buffer.alloc(hlen);
k = createHmac(algo, k).update(v).update(Buffer.from([0])).update(x).update(hbits).digest();
v = createHmac(algo, k).update(v).digest();
k = createHmac(algo, k).update(v).update(Buffer.from([1])).update(x).update(hbits).digest();
v = createHmac(algo, k).update(v).digest();
return { k: k, v: v };
}
function bits2int(obits, q) {
var bits = new BN(obits);
var shift = (obits.length << 3) - q.bitLength();
if (shift > 0) { bits.ishrn(shift); }
return bits;
}
function bits2octets(bits, q) {
bits = bits2int(bits, q);
bits = bits.mod(q);
var out = Buffer.from(bits.toArray());
if (out.length < q.byteLength()) {
var zeros = Buffer.alloc(q.byteLength() - out.length);
out = Buffer.concat([zeros, out]);
}
return out;
}
function makeKey(q, kv, algo) {
var t;
var k;
do {
t = Buffer.alloc(0);
while (t.length * 8 < q.bitLength()) {
kv.v = createHmac(algo, kv.k).update(kv.v).digest();
t = Buffer.concat([t, kv.v]);
}
k = bits2int(t, q);
kv.k = createHmac(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest();
kv.v = createHmac(algo, kv.k).update(kv.v).digest();
} while (k.cmp(q) !== -1);
return k;
}
function makeR(g, k, p, q) {
return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q);
}
module.exports = sign;
module.exports.getKey = getKey;
module.exports.makeKey = makeKey;
/***/ }),
/***/ 4847:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js
var Buffer = (__webpack_require__(2861).Buffer);
var BN = __webpack_require__(9404);
var EC = (__webpack_require__(6729).ec);
var parseKeys = __webpack_require__(8170);
var curves = __webpack_require__(4589);
function verify(sig, hash, key, signType, tag) {
var pub = parseKeys(key);
if (pub.type === 'ec') {
// rsa keys can be interpreted as ecdsa ones in openssl
if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') { throw new Error('wrong public key type'); }
return ecVerify(sig, hash, pub);
} else if (pub.type === 'dsa') {
if (signType !== 'dsa') { throw new Error('wrong public key type'); }
return dsaVerify(sig, hash, pub);
}
if (signType !== 'rsa' && signType !== 'ecdsa/rsa') { throw new Error('wrong public key type'); }
hash = Buffer.concat([tag, hash]);
var len = pub.modulus.byteLength();
var pad = [1];
var padNum = 0;
while (hash.length + pad.length + 2 < len) {
pad.push(0xff);
padNum += 1;
}
pad.push(0x00);
var i = -1;
while (++i < hash.length) {
pad.push(hash[i]);
}
pad = Buffer.from(pad);
var red = BN.mont(pub.modulus);
sig = new BN(sig).toRed(red);
sig = sig.redPow(new BN(pub.publicExponent));
sig = Buffer.from(sig.fromRed().toArray());
var out = padNum < 8 ? 1 : 0;
len = Math.min(sig.length, pad.length);
if (sig.length !== pad.length) { out = 1; }
i = -1;
while (++i < len) { out |= sig[i] ^ pad[i]; }
return out === 0;
}
function ecVerify(sig, hash, pub) {
var curveId = curves[pub.data.algorithm.curve.join('.')];
if (!curveId) { throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.')); }
var curve = new EC(curveId);
var pubkey = pub.data.subjectPrivateKey.data;
return curve.verify(hash, sig, pubkey);
}
function dsaVerify(sig, hash, pub) {
var p = pub.data.p;
var q = pub.data.q;
var g = pub.data.g;
var y = pub.data.pub_key;
var unpacked = parseKeys.signature.decode(sig, 'der');
var s = unpacked.s;
var r = unpacked.r;
checkValue(s, q);
checkValue(r, q);
var montp = BN.mont(p);
var w = s.invm(q);
var v = g.toRed(montp)
.redPow(new BN(hash).mul(w).mod(q))
.fromRed()
.mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed())
.mod(p)
.mod(q);
return v.cmp(r) === 0;
}
function checkValue(b, q) {
if (b.cmpn(0) <= 0) { throw new Error('invalid sig'); }
if (b.cmp(q) >= 0) { throw new Error('invalid sig'); }
}
module.exports = verify;
/***/ }),
/***/ 2240:
/***/ ((module) => {
var toString = {}.toString;
module.exports = Array.isArray || function (arr) {
return toString.call(arr) == '[object Array]';
};
/***/ }),
/***/ 6248:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
// Copyright Joyent, Inc. and other Node contributors.
//
// 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.
// a duplex stream is just a stream that is both readable and writable.
// Since JS doesn't have multiple prototypal inheritance, this class
// prototypally inherits from Readable, and then parasitically from
// Writable.
/*<replacement>*/
var pna = __webpack_require__(3225);
/*</replacement>*/
/*<replacement>*/
var objectKeys = Object.keys || function (obj) {
var keys = [];
for (var key in obj) {
keys.push(key);
}return keys;
};
/*</replacement>*/
module.exports = Duplex;
/*<replacement>*/
var util = Object.create(__webpack_require__(5622));
util.inherits = __webpack_require__(6698);
/*</replacement>*/
var Readable = __webpack_require__(206);
var Writable = __webpack_require__(7314);
util.inherits(Duplex, Readable);
{
// avoid scope creep, the keys array can then be collected
var keys = objectKeys(Writable.prototype);
for (var v = 0; v < keys.length; v++) {
var method = keys[v];
if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
}
}
function Duplex(options) {
if (!(this instanceof Duplex)) return new Duplex(options);
Readable.call(this, options);
Writable.call(this, options);
if (options && options.readable === false) this.readable = false;
if (options && options.writable === false) this.writable = false;
this.allowHalfOpen = true;
if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
this.once('end', onend);
}
Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', {
// making it explicit this property is not enumerable
// because otherwise some prototype manipulation in
// userland will fail
enumerable: false,
get: function () {
return this._writableState.highWaterMark;
}
});
// the no-half-open enforcer
function onend() {
// if we allow half-open state, or if the writable side ended,
// then we're ok.
if (this.allowHalfOpen || this._writableState.ended) return;
// no more data can be written.
// But allow more writes to happen in this tick.
pna.nextTick(onEndNT, this);
}
function onEndNT(self) {
self.end();
}
Object.defineProperty(Duplex.prototype, 'destroyed', {
get: function () {
if (this._readableState === undefined || this._writableState === undefined) {
return false;
}
return this._readableState.destroyed && this._writableState.destroyed;
},
set: function (value) {
// we ignore the value if the stream
// has not been initialized yet
if (this._readableState === undefined || this._writableState === undefined) {
return;
}
// backward compatibility, the user is explicitly
// managing destroyed
this._readableState.destroyed = value;
this._writableState.destroyed = value;
}
});
Duplex.prototype._destroy = function (err, cb) {
this.push(null);
this.end();
pna.nextTick(cb, err);
};
/***/ }),
/***/ 5242:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
// Copyright Joyent, Inc. and other Node contributors.
//
// 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.
// a passthrough stream.
// basically just the most minimal sort of Transform stream.
// Every written chunk gets output as-is.
module.exports = PassThrough;
var Transform = __webpack_require__(1816);
/*<replacement>*/
var util = Object.create(__webpack_require__(5622));
util.inherits = __webpack_require__(6698);
/*</replacement>*/
util.inherits(PassThrough, Transform);
function PassThrough(options) {
if (!(this instanceof PassThrough)) return new PassThrough(options);
Transform.call(this, options);
}
PassThrough.prototype._transform = function (chunk, encoding, cb) {
cb(null, chunk);
};
/***/ }),
/***/ 206:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
// Copyright Joyent, Inc. and other Node contributors.
//
// 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.
/*<replacement>*/
var pna = __webpack_require__(3225);
/*</replacement>*/
module.exports = Readable;
/*<replacement>*/
var isArray = __webpack_require__(2240);
/*</replacement>*/
/*<replacement>*/
var Duplex;
/*</replacement>*/
Readable.ReadableState = ReadableState;
/*<replacement>*/
var EE = (__webpack_require__(7007).EventEmitter);
var EElistenerCount = function (emitter, type) {
return emitter.listeners(type).length;
};
/*</replacement>*/
/*<replacement>*/
var Stream = __webpack_require__(5567);
/*</replacement>*/
/*<replacement>*/
var Buffer = (__webpack_require__(4116).Buffer);
var OurUint8Array = (typeof __webpack_require__.g !== 'undefined' ? __webpack_require__.g : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};
function _uint8ArrayToBuffer(chunk) {
return Buffer.from(chunk);
}
function _isUint8Array(obj) {
return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
}
/*</replacement>*/
/*<replacement>*/
var util = Object.create(__webpack_require__(5622));
util.inherits = __webpack_require__(6698);
/*</replacement>*/
/*<replacement>*/
var debugUtil = __webpack_require__(2668);
var debug = void 0;
if (debugUtil && debugUtil.debuglog) {
debug = debugUtil.debuglog('stream');
} else {
debug = function () {};
}
/*</replacement>*/
var BufferList = __webpack_require__(672);
var destroyImpl = __webpack_require__(6278);
var StringDecoder;
util.inherits(Readable, Stream);
var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];
function prependListener(emitter, event, fn) {
// Sadly this is not cacheable as some libraries bundle their own
// event emitter implementation with them.
if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);
// This is a hack to make sure that our error handler is attached before any
// userland ones. NEVER DO THIS. This is here only because this code needs
// to continue to work with older versions of Node.js that do not include
// the prependListener() method. The goal is to eventually remove this hack.
if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];
}
function ReadableState(options, stream) {
Duplex = Duplex || __webpack_require__(6248);
options = options || {};
// Duplex streams are both readable and writable, but share
// the same options object.
// However, some cases require setting options to different
// values for the readable and the writable sides of the duplex stream.
// These options can be provided separately as readableXXX and writableXXX.
var isDuplex = stream instanceof Duplex;
// object stream flag. Used to make read(n) ignore n and to
// make all the buffer merging and length checks go away
this.objectMode = !!options.objectMode;
if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
// the point at which it stops calling _read() to fill the buffer
// Note: 0 is a valid value, means "don't call _read preemptively ever"
var hwm = options.highWaterMark;
var readableHwm = options.readableHighWaterMark;
var defaultHwm = this.objectMode ? 16 : 16 * 1024;
if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;
// cast to ints.
this.highWaterMark = Math.floor(this.highWaterMark);
// A linked list is used to store data chunks instead of an array because the
// linked list can remove elements from the beginning faster than
// array.shift()
this.buffer = new BufferList();
this.length = 0;
this.pipes = null;
this.pipesCount = 0;
this.flowing = null;
this.ended = false;
this.endEmitted = false;
this.reading = false;
// a flag to be able to tell if the event 'readable'/'data' is emitted
// immediately, or on a later tick. We set this to true at first, because
// any actions that shouldn't happen until "later" should generally also
// not happen before the first read call.
this.sync = true;
// whenever we return null, then we set a flag to say
// that we're awaiting a 'readable' event emission.
this.needReadable = false;
this.emittedReadable = false;
this.readableListening = false;
this.resumeScheduled = false;
// has it been destroyed
this.destroyed = false;
// Crypto is kind of old and crusty. Historically, its default string
// encoding is 'binary' so we have to make this configurable.
// Everything else in the universe uses 'utf8', though.
this.defaultEncoding = options.defaultEncoding || 'utf8';
// the number of writers that are awaiting a drain event in .pipe()s
this.awaitDrain = 0;
// if true, a maybeReadMore has been scheduled
this.readingMore = false;
this.decoder = null;
this.encoding = null;
if (options.encoding) {
if (!StringDecoder) StringDecoder = (__webpack_require__(6427)/* .StringDecoder */ .I);
this.decoder = new StringDecoder(options.encoding);
this.encoding = options.encoding;
}
}
function Readable(options) {
Duplex = Duplex || __webpack_require__(6248);
if (!(this instanceof Readable)) return new Readable(options);
this._readableState = new ReadableState(options, this);
// legacy
this.readable = true;
if (options) {
if (typeof options.read === 'function') this._read = options.read;
if (typeof options.destroy === 'function') this._destroy = options.destroy;
}
Stream.call(this);
}
Object.defineProperty(Readable.prototype, 'destroyed', {
get: function () {
if (this._readableState === undefined) {
return false;
}
return this._readableState.destroyed;
},
set: function (value) {
// we ignore the value if the stream
// has not been initialized yet
if (!this._readableState) {
return;
}
// backward compatibility, the user is explicitly
// managing destroyed
this._readableState.destroyed = value;
}
});
Readable.prototype.destroy = destroyImpl.destroy;
Readable.prototype._undestroy = destroyImpl.undestroy;
Readable.prototype._destroy = function (err, cb) {
this.push(null);
cb(err);
};
// Manually shove something into the read() buffer.
// This returns true if the highWaterMark has not been hit yet,
// similar to how Writable.write() returns true if you should
// write() some more.
Readable.prototype.push = function (chunk, encoding) {
var state = this._readableState;
var skipChunkCheck;
if (!state.objectMode) {
if (typeof chunk === 'string') {
encoding = encoding || state.defaultEncoding;
if (encoding !== state.encoding) {
chunk = Buffer.from(chunk, encoding);
encoding = '';
}
skipChunkCheck = true;
}
} else {
skipChunkCheck = true;
}
return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);
};
// Unshift should *always* be something directly out of read()
Readable.prototype.unshift = function (chunk) {
return readableAddChunk(this, chunk, null, true, false);
};
function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {
var state = stream._readableState;
if (chunk === null) {
state.reading = false;
onEofChunk(stream, state);
} else {
var er;
if (!skipChunkCheck) er = chunkInvalid(state, chunk);
if (er) {
stream.emit('error', er);
} else if (state.objectMode || chunk && chunk.length > 0) {
if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {
chunk = _uint8ArrayToBuffer(chunk);
}
if (addToFront) {
if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);
} else if (state.ended) {
stream.emit('error', new Error('stream.push() after EOF'));
} else {
state.reading = false;
if (state.decoder && !encoding) {
chunk = state.decoder.write(chunk);
if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);
} else {
addChunk(stream, state, chunk, false);
}
}
} else if (!addToFront) {
state.reading = false;
}
}
return needMoreData(state);
}
function addChunk(stream, state, chunk, addToFront) {
if (state.flowing && state.length === 0 && !state.sync) {
stream.emit('data', chunk);
stream.read(0);
} else {
// update the buffer info.
state.length += state.objectMode ? 1 : chunk.length;
if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
if (state.needReadable) emitReadable(stream);
}
maybeReadMore(stream, state);
}
function chunkInvalid(state, chunk) {
var er;
if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
er = new TypeError('Invalid non-string/buffer chunk');
}
return er;
}
// if it's past the high water mark, we can push in some more.
// Also, if we have no data yet, we can stand some
// more bytes. This is to work around cases where hwm=0,
// such as the repl. Also, if the push() triggered a
// readable event, and the user called read(largeNumber) such that
// needReadable was set, then we ought to push more, so that another
// 'readable' event will be triggered.
function needMoreData(state) {
return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
}
Readable.prototype.isPaused = function () {
return this._readableState.flowing === false;
};
// backwards compatibility.
Readable.prototype.setEncoding = function (enc) {
if (!StringDecoder) StringDecoder = (__webpack_require__(6427)/* .StringDecoder */ .I);
this._readableState.decoder = new StringDecoder(enc);
this._readableState.encoding = enc;
return this;
};
// Don't raise the hwm > 8MB
var MAX_HWM = 0x800000;
function computeNewHighWaterMark(n) {
if (n >= MAX_HWM) {
n = MAX_HWM;
} else {
// Get the next highest power of 2 to prevent increasing hwm excessively in
// tiny amounts
n--;
n |= n >>> 1;
n |= n >>> 2;
n |= n >>> 4;
n |= n >>> 8;
n |= n >>> 16;
n++;
}
return n;
}
// This function is designed to be inlinable, so please take care when making
// changes to the function body.
function howMuchToRead(n, state) {
if (n <= 0 || state.length === 0 && state.ended) return 0;
if (state.objectMode) return 1;
if (n !== n) {
// Only flow one buffer at a time
if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
}
// If we're asking for more than the current hwm, then raise the hwm.
if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
if (n <= state.length) return n;
// Don't have enough
if (!state.ended) {
state.needReadable = true;
return 0;
}
return state.length;
}
// you can override either this method, or the async _read(n) below.
Readable.prototype.read = function (n) {
debug('read', n);
n = parseInt(n, 10);
var state = this._readableState;
var nOrig = n;
if (n !== 0) state.emittedReadable = false;
// if we're doing read(0) to trigger a readable event, but we
// already have a bunch of data in the buffer, then just trigger
// the 'readable' event and move on.
if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
debug('read: emitReadable', state.length, state.ended);
if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
return null;
}
n = howMuchToRead(n, state);
// if we've ended, and we're now clear, then finish it up.
if (n === 0 && state.ended) {
if (state.length === 0) endReadable(this);
return null;
}
// All the actual chunk generation logic needs to be
// *below* the call to _read. The reason is that in certain
// synthetic stream cases, such as passthrough streams, _read
// may be a completely synchronous operation which may change
// the state of the read buffer, providing enough data when
// before there was *not* enough.
//
// So, the steps are:
// 1. Figure out what the state of things will be after we do
// a read from the buffer.
//
// 2. If that resulting state will trigger a _read, then call _read.
// Note that this may be asynchronous, or synchronous. Yes, it is
// deeply ugly to write APIs this way, but that still doesn't mean
// that the Readable class should behave improperly, as streams are
// designed to be sync/async agnostic.
// Take note if the _read call is sync or async (ie, if the read call
// has returned yet), so that we know whether or not it's safe to emit
// 'readable' etc.
//
// 3. Actually pull the requested chunks out of the buffer and return.
// if we need a readable event, then we need to do some reading.
var doRead = state.needReadable;
debug('need readable', doRead);
// if we currently have less than the highWaterMark, then also read some
if (state.length === 0 || state.length - n < state.highWaterMark) {
doRead = true;
debug('length less than watermark', doRead);
}
// however, if we've ended, then there's no point, and if we're already
// reading, then it's unnecessary.
if (state.ended || state.reading) {
doRead = false;
debug('reading or ended', doRead);
} else if (doRead) {
debug('do read');
state.reading = true;
state.sync = true;
// if the length is currently zero, then we *need* a readable event.
if (state.length === 0) state.needReadable = true;
// call internal read method
this._read(state.highWaterMark);
state.sync = false;
// If _read pushed data synchronously, then `reading` will be false,
// and we need to re-evaluate how much data we can return to the user.
if (!state.reading) n = howMuchToRead(nOrig, state);
}
var ret;
if (n > 0) ret = fromList(n, state);else ret = null;
if (ret === null) {
state.needReadable = true;
n = 0;
} else {
state.length -= n;
}
if (state.length === 0) {
// If we have nothing in the buffer, then we want to know
// as soon as we *do* get something into the buffer.
if (!state.ended) state.needReadable = true;
// If we tried to read() past the EOF, then emit end on the next tick.
if (nOrig !== n && state.ended) endReadable(this);
}
if (ret !== null) this.emit('data', ret);
return ret;
};
function onEofChunk(stream, state) {
if (state.ended) return;
if (state.decoder) {
var chunk = state.decoder.end();
if (chunk && chunk.length) {
state.buffer.push(chunk);
state.length += state.objectMode ? 1 : chunk.length;
}
}
state.ended = true;
// emit 'readable' now to make sure it gets picked up.
emitReadable(stream);
}
// Don't emit readable right away in sync mode, because this can trigger
// another read() call => stack overflow. This way, it might trigger
// a nextTick recursion warning, but that's not so bad.
function emitReadable(stream) {
var state = stream._readableState;
state.needReadable = false;
if (!state.emittedReadable) {
debug('emitReadable', state.flowing);
state.emittedReadable = true;
if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);
}
}
function emitReadable_(stream) {
debug('emit readable');
stream.emit('readable');
flow(stream);
}
// at this point, the user has presumably seen the 'readable' event,
// and called read() to consume some data. that may have triggered
// in turn another _read(n) call, in which case reading = true if
// it's in progress.
// However, if we're not ended, or reading, and the length < hwm,
// then go ahead and try to read some more preemptively.
function maybeReadMore(stream, state) {
if (!state.readingMore) {
state.readingMore = true;
pna.nextTick(maybeReadMore_, stream, state);
}
}
function maybeReadMore_(stream, state) {
var len = state.length;
while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
debug('maybeReadMore read 0');
stream.read(0);
if (len === state.length)
// didn't get any data, stop spinning.
break;else len = state.length;
}
state.readingMore = false;
}
// abstract method. to be overridden in specific implementation classes.
// call cb(er, data) where data is <= n in length.
// for virtual (non-string, non-buffer) streams, "length" is somewhat
// arbitrary, and perhaps not very meaningful.
Readable.prototype._read = function (n) {
this.emit('error', new Error('_read() is not implemented'));
};
Readable.prototype.pipe = function (dest, pipeOpts) {
var src = this;
var state = this._readableState;
switch (state.pipesCount) {
case 0:
state.pipes = dest;
break;
case 1:
state.pipes = [state.pipes, dest];
break;
default:
state.pipes.push(dest);
break;
}
state.pipesCount += 1;
debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
var endFn = doEnd ? onend : unpipe;
if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);
dest.on('unpipe', onunpipe);
function onunpipe(readable, unpipeInfo) {
debug('onunpipe');
if (readable === src) {
if (unpipeInfo && unpipeInfo.hasUnpiped === false) {
unpipeInfo.hasUnpiped = true;
cleanup();
}
}
}
function onend() {
debug('onend');
dest.end();
}
// when the dest drains, it reduces the awaitDrain counter
// on the source. This would be more elegant with a .once()
// handler in flow(), but adding and removing repeatedly is
// too slow.
var ondrain = pipeOnDrain(src);
dest.on('drain', ondrain);
var cleanedUp = false;
function cleanup() {
debug('cleanup');
// cleanup event handlers once the pipe is broken
dest.removeListener('close', onclose);
dest.removeListener('finish', onfinish);
dest.removeListener('drain', ondrain);
dest.removeListener('error', onerror);
dest.removeListener('unpipe', onunpipe);
src.removeListener('end', onend);
src.removeListener('end', unpipe);
src.removeListener('data', ondata);
cleanedUp = true;
// if the reader is waiting for a drain event from this
// specific writer, then it would cause it to never start
// flowing again.
// So, if this is awaiting a drain, then we just call it now.
// If we don't know, then assume that we are waiting for one.
if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
}
// If the user pushes more data while we're writing to dest then we'll end up
// in ondata again. However, we only want to increase awaitDrain once because
// dest will only emit one 'drain' event for the multiple writes.
// => Introduce a guard on increasing awaitDrain.
var increasedAwaitDrain = false;
src.on('data', ondata);
function ondata(chunk) {
debug('ondata');
increasedAwaitDrain = false;
var ret = dest.write(chunk);
if (false === ret && !increasedAwaitDrain) {
// If the user unpiped during `dest.write()`, it is possible
// to get stuck in a permanently paused state if that write
// also returned false.
// => Check whether `dest` is still a piping destination.
if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
debug('false write response, pause', state.awaitDrain);
state.awaitDrain++;
increasedAwaitDrain = true;
}
src.pause();
}
}
// if the dest has an error, then stop piping into it.
// however, don't suppress the throwing behavior for this.
function onerror(er) {
debug('onerror', er);
unpipe();
dest.removeListener('error', onerror);
if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
}
// Make sure our error handler is attached before userland ones.
prependListener(dest, 'error', onerror);
// Both close and finish should trigger unpipe, but only once.
function onclose() {
dest.removeListener('finish', onfinish);
unpipe();
}
dest.once('close', onclose);
function onfinish() {
debug('onfinish');
dest.removeListener('close', onclose);
unpipe();
}
dest.once('finish', onfinish);
function unpipe() {
debug('unpipe');
src.unpipe(dest);
}
// tell the dest that it's being piped to
dest.emit('pipe', src);
// start the flow if it hasn't been started already.
if (!state.flowing) {
debug('pipe resume');
src.resume();
}
return dest;
};
function pipeOnDrain(src) {
return function () {
var state = src._readableState;
debug('pipeOnDrain', state.awaitDrain);
if (state.awaitDrain) state.awaitDrain--;
if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
state.flowing = true;
flow(src);
}
};
}
Readable.prototype.unpipe = function (dest) {
var state = this._readableState;
var unpipeInfo = { hasUnpiped: false };
// if we're not piping anywhere, then do nothing.
if (state.pipesCount === 0) return this;
// just one destination. most common case.
if (state.pipesCount === 1) {
// passed in one, but it's not the right one.
if (dest && dest !== state.pipes) return this;
if (!dest) dest = state.pipes;
// got a match.
state.pipes = null;
state.pipesCount = 0;
state.flowing = false;
if (dest) dest.emit('unpipe', this, unpipeInfo);
return this;
}
// slow case. multiple pipe destinations.
if (!dest) {
// remove all.
var dests = state.pipes;
var len = state.pipesCount;
state.pipes = null;
state.pipesCount = 0;
state.flowing = false;
for (var i = 0; i < len; i++) {
dests[i].emit('unpipe', this, { hasUnpiped: false });
}return this;
}
// try to find the right one.
var index = indexOf(state.pipes, dest);
if (index === -1) return this;
state.pipes.splice(index, 1);
state.pipesCount -= 1;
if (state.pipesCount === 1) state.pipes = state.pipes[0];
dest.emit('unpipe', this, unpipeInfo);
return this;
};
// set up data events if they are asked for
// Ensure readable listeners eventually get something
Readable.prototype.on = function (ev, fn) {
var res = Stream.prototype.on.call(this, ev, fn);
if (ev === 'data') {
// Start flowing on next tick if stream isn't explicitly paused
if (this._readableState.flowing !== false) this.resume();
} else if (ev === 'readable') {
var state = this._readableState;
if (!state.endEmitted && !state.readableListening) {
state.readableListening = state.needReadable = true;
state.emittedReadable = false;
if (!state.reading) {
pna.nextTick(nReadingNextTick, this);
} else if (state.length) {
emitReadable(this);
}
}
}
return res;
};
Readable.prototype.addListener = Readable.prototype.on;
function nReadingNextTick(self) {
debug('readable nexttick read 0');
self.read(0);
}
// pause() and resume() are remnants of the legacy readable stream API
// If the user uses them, then switch into old mode.
Readable.prototype.resume = function () {
var state = this._readableState;
if (!state.flowing) {
debug('resume');
state.flowing = true;
resume(this, state);
}
return this;
};
function resume(stream, state) {
if (!state.resumeScheduled) {
state.resumeScheduled = true;
pna.nextTick(resume_, stream, state);
}
}
function resume_(stream, state) {
if (!state.reading) {
debug('resume read 0');
stream.read(0);
}
state.resumeScheduled = false;
state.awaitDrain = 0;
stream.emit('resume');
flow(stream);
if (state.flowing && !state.reading) stream.read(0);
}
Readable.prototype.pause = function () {
debug('call pause flowing=%j', this._readableState.flowing);
if (false !== this._readableState.flowing) {
debug('pause');
this._readableState.flowing = false;
this.emit('pause');
}
return this;
};
function flow(stream) {
var state = stream._readableState;
debug('flow', state.flowing);
while (state.flowing && stream.read() !== null) {}
}
// wrap an old-style stream as the async data source.
// This is *not* part of the readable stream interface.
// It is an ugly unfortunate mess of history.
Readable.prototype.wrap = function (stream) {
var _this = this;
var state = this._readableState;
var paused = false;
stream.on('end', function () {
debug('wrapped end');
if (state.decoder && !state.ended) {
var chunk = state.decoder.end();
if (chunk && chunk.length) _this.push(chunk);
}
_this.push(null);
});
stream.on('data', function (chunk) {
debug('wrapped data');
if (state.decoder) chunk = state.decoder.write(chunk);
// don't skip over falsy values in objectMode
if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
var ret = _this.push(chunk);
if (!ret) {
paused = true;
stream.pause();
}
});
// proxy all the other methods.
// important when wrapping filters and duplexes.
for (var i in stream) {
if (this[i] === undefined && typeof stream[i] === 'function') {
this[i] = function (method) {
return function () {
return stream[method].apply(stream, arguments);
};
}(i);
}
}
// proxy certain important events.
for (var n = 0; n < kProxyEvents.length; n++) {
stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));
}
// when we try to consume some more bytes, simply unpause the
// underlying stream.
this._read = function (n) {
debug('wrapped _read', n);
if (paused) {
paused = false;
stream.resume();
}
};
return this;
};
Object.defineProperty(Readable.prototype, 'readableHighWaterMark', {
// making it explicit this property is not enumerable
// because otherwise some prototype manipulation in
// userland will fail
enumerable: false,
get: function () {
return this._readableState.highWaterMark;
}
});
// exposed for testing purposes only.
Readable._fromList = fromList;
// Pluck off n bytes from an array of buffers.
// Length is the combined lengths of all the buffers in the list.
// This function is designed to be inlinable, so please take care when making
// changes to the function body.
function fromList(n, state) {
// nothing buffered
if (state.length === 0) return null;
var ret;
if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
// read it all, truncate the list
if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);
state.buffer.clear();
} else {
// read part of list
ret = fromListPartial(n, state.buffer, state.decoder);
}
return ret;
}
// Extracts only enough buffered data to satisfy the amount requested.
// This function is designed to be inlinable, so please take care when making
// changes to the function body.
function fromListPartial(n, list, hasStrings) {
var ret;
if (n < list.head.data.length) {
// slice is the same for buffers and strings
ret = list.head.data.slice(0, n);
list.head.data = list.head.data.slice(n);
} else if (n === list.head.data.length) {
// first chunk is a perfect match
ret = list.shift();
} else {
// result spans more than one buffer
ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
}
return ret;
}
// Copies a specified amount of characters from the list of buffered data
// chunks.
// This function is designed to be inlinable, so please take care when making
// changes to the function body.
function copyFromBufferString(n, list) {
var p = list.head;
var c = 1;
var ret = p.data;
n -= ret.length;
while (p = p.next) {
var str = p.data;
var nb = n > str.length ? str.length : n;
if (nb === str.length) ret += str;else ret += str.slice(0, n);
n -= nb;
if (n === 0) {
if (nb === str.length) {
++c;
if (p.next) list.head = p.next;else list.head = list.tail = null;
} else {
list.head = p;
p.data = str.slice(nb);
}
break;
}
++c;
}
list.length -= c;
return ret;
}
// Copies a specified amount of bytes from the list of buffered data chunks.
// This function is designed to be inlinable, so please take care when making
// changes to the function body.
function copyFromBuffer(n, list) {
var ret = Buffer.allocUnsafe(n);
var p = list.head;
var c = 1;
p.data.copy(ret);
n -= p.data.length;
while (p = p.next) {
var buf = p.data;
var nb = n > buf.length ? buf.length : n;
buf.copy(ret, ret.length - n, 0, nb);
n -= nb;
if (n === 0) {
if (nb === buf.length) {
++c;
if (p.next) list.head = p.next;else list.head = list.tail = null;
} else {
list.head = p;
p.data = buf.slice(nb);
}
break;
}
++c;
}
list.length -= c;
return ret;
}
function endReadable(stream) {
var state = stream._readableState;
// If we get here before consuming all the bytes, then that is a
// bug in node. Should never happen.
if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
if (!state.endEmitted) {
state.ended = true;
pna.nextTick(endReadableNT, state, stream);
}
}
function endReadableNT(state, stream) {
// Check that we didn't get one last unshift.
if (!state.endEmitted && state.length === 0) {
state.endEmitted = true;
stream.readable = false;
stream.emit('end');
}
}
function indexOf(xs, x) {
for (var i = 0, l = xs.length; i < l; i++) {
if (xs[i] === x) return i;
}
return -1;
}
/***/ }),
/***/ 1816:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
// Copyright Joyent, Inc. and other Node contributors.
//
// 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.
// a transform stream is a readable/writable stream where you do
// something with the data. Sometimes it's called a "filter",
// but that's not a great name for it, since that implies a thing where
// some bits pass through, and others are simply ignored. (That would
// be a valid example of a transform, of course.)
//
// While the output is causally related to the input, it's not a
// necessarily symmetric or synchronous transformation. For example,
// a zlib stream might take multiple plain-text writes(), and then
// emit a single compressed chunk some time in the future.
//
// Here's how this works:
//
// The Transform stream has all the aspects of the readable and writable
// stream classes. When you write(chunk), that calls _write(chunk,cb)
// internally, and returns false if there's a lot of pending writes
// buffered up. When you call read(), that calls _read(n) until
// there's enough pending readable data buffered up.
//
// In a transform stream, the written data is placed in a buffer. When
// _read(n) is called, it transforms the queued up data, calling the
// buffered _write cb's as it consumes chunks. If consuming a single
// written chunk would result in multiple output chunks, then the first
// outputted bit calls the readcb, and subsequent chunks just go into
// the read buffer, and will cause it to emit 'readable' if necessary.
//
// This way, back-pressure is actually determined by the reading side,
// since _read has to be called to start processing a new chunk. However,
// a pathological inflate type of transform can cause excessive buffering
// here. For example, imagine a stream where every byte of input is
// interpreted as an integer from 0-255, and then results in that many
// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
// 1kb of data being output. In this case, you could write a very small
// amount of input, and end up with a very large amount of output. In
// such a pathological inflating mechanism, there'd be no way to tell
// the system to stop doing the transform. A single 4MB write could
// cause the system to run out of memory.
//
// However, even in such a pathological case, only a single written chunk
// would be consumed, and then the rest would wait (un-transformed) until
// the results of the previous transformed chunk were consumed.
module.exports = Transform;
var Duplex = __webpack_require__(6248);
/*<replacement>*/
var util = Object.create(__webpack_require__(5622));
util.inherits = __webpack_require__(6698);
/*</replacement>*/
util.inherits(Transform, Duplex);
function afterTransform(er, data) {
var ts = this._transformState;
ts.transforming = false;
var cb = ts.writecb;
if (!cb) {
return this.emit('error', new Error('write callback called multiple times'));
}
ts.writechunk = null;
ts.writecb = null;
if (data != null) // single equals check for both `null` and `undefined`
this.push(data);
cb(er);
var rs = this._readableState;
rs.reading = false;
if (rs.needReadable || rs.length < rs.highWaterMark) {
this._read(rs.highWaterMark);
}
}
function Transform(options) {
if (!(this instanceof Transform)) return new Transform(options);
Duplex.call(this, options);
this._transformState = {
afterTransform: afterTransform.bind(this),
needTransform: false,
transforming: false,
writecb: null,
writechunk: null,
writeencoding: null
};
// start out asking for a readable event once data is transformed.
this._readableState.needReadable = true;
// we have implemented the _read method, and done the other things
// that Readable wants before the first _read call, so unset the
// sync guard flag.
this._readableState.sync = false;
if (options) {
if (typeof options.transform === 'function') this._transform = options.transform;
if (typeof options.flush === 'function') this._flush = options.flush;
}
// When the writable side finishes, then flush out anything remaining.
this.on('prefinish', prefinish);
}
function prefinish() {
var _this = this;
if (typeof this._flush === 'function') {
this._flush(function (er, data) {
done(_this, er, data);
});
} else {
done(this, null, null);
}
}
Transform.prototype.push = function (chunk, encoding) {
this._transformState.needTransform = false;
return Duplex.prototype.push.call(this, chunk, encoding);
};
// This is the part where you do stuff!
// override this function in implementation classes.
// 'chunk' is an input chunk.
//
// Call `push(newChunk)` to pass along transformed output
// to the readable side. You may call 'push' zero or more times.
//
// Call `cb(err)` when you are done with this chunk. If you pass
// an error, then that'll put the hurt on the whole operation. If you
// never call cb(), then you'll never get another chunk.
Transform.prototype._transform = function (chunk, encoding, cb) {
throw new Error('_transform() is not implemented');
};
Transform.prototype._write = function (chunk, encoding, cb) {
var ts = this._transformState;
ts.writecb = cb;
ts.writechunk = chunk;
ts.writeencoding = encoding;
if (!ts.transforming) {
var rs = this._readableState;
if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
}
};
// Doesn't matter what the args are here.
// _transform does all the work.
// That we got here means that the readable side wants more data.
Transform.prototype._read = function (n) {
var ts = this._transformState;
if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
ts.transforming = true;
this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
} else {
// mark that we need a transform, so that any data that comes in
// will get processed, now that we've asked for it.
ts.needTransform = true;
}
};
Transform.prototype._destroy = function (err, cb) {
var _this2 = this;
Duplex.prototype._destroy.call(this, err, function (err2) {
cb(err2);
_this2.emit('close');
});
};
function done(stream, er, data) {
if (er) return stream.emit('error', er);
if (data != null) // single equals check for both `null` and `undefined`
stream.push(data);
// if there's nothing in the write buffer, then that means
// that nothing more will ever be provided
if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');
if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');
return stream.push(null);
}
/***/ }),
/***/ 7314:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
// Copyright Joyent, Inc. and other Node contributors.
//
// 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.
// A bit simpler than readable streams.
// Implement an async ._write(chunk, encoding, cb), and it'll handle all
// the drain event emission and buffering.
/*<replacement>*/
var pna = __webpack_require__(3225);
/*</replacement>*/
module.exports = Writable;
/* <replacement> */
function WriteReq(chunk, encoding, cb) {
this.chunk = chunk;
this.encoding = encoding;
this.callback = cb;
this.next = null;
}
// It seems a linked list but it is not
// there will be only 2 of these for each stream
function CorkedRequest(state) {
var _this = this;
this.next = null;
this.entry = null;
this.finish = function () {
onCorkedFinish(_this, state);
};
}
/* </replacement> */
/*<replacement>*/
var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;
/*</replacement>*/
/*<replacement>*/
var Duplex;
/*</replacement>*/
Writable.WritableState = WritableState;
/*<replacement>*/
var util = Object.create(__webpack_require__(5622));
util.inherits = __webpack_require__(6698);
/*</replacement>*/
/*<replacement>*/
var internalUtil = {
deprecate: __webpack_require__(4643)
};
/*</replacement>*/
/*<replacement>*/
var Stream = __webpack_require__(5567);
/*</replacement>*/
/*<replacement>*/
var Buffer = (__webpack_require__(4116).Buffer);
var OurUint8Array = (typeof __webpack_require__.g !== 'undefined' ? __webpack_require__.g : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};
function _uint8ArrayToBuffer(chunk) {
return Buffer.from(chunk);
}
function _isUint8Array(obj) {
return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
}
/*</replacement>*/
var destroyImpl = __webpack_require__(6278);
util.inherits(Writable, Stream);
function nop() {}
function WritableState(options, stream) {
Duplex = Duplex || __webpack_require__(6248);
options = options || {};
// Duplex streams are both readable and writable, but share
// the same options object.
// However, some cases require setting options to different
// values for the readable and the writable sides of the duplex stream.
// These options can be provided separately as readableXXX and writableXXX.
var isDuplex = stream instanceof Duplex;
// object stream flag to indicate whether or not this stream
// contains buffers or objects.
this.objectMode = !!options.objectMode;
if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
// the point at which write() starts returning false
// Note: 0 is a valid value, means that we always return false if
// the entire buffer is not flushed immediately on write()
var hwm = options.highWaterMark;
var writableHwm = options.writableHighWaterMark;
var defaultHwm = this.objectMode ? 16 : 16 * 1024;
if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;
// cast to ints.
this.highWaterMark = Math.floor(this.highWaterMark);
// if _final has been called
this.finalCalled = false;
// drain event flag.
this.needDrain = false;
// at the start of calling end()
this.ending = false;
// when end() has been called, and returned
this.ended = false;
// when 'finish' is emitted
this.finished = false;
// has it been destroyed
this.destroyed = false;
// should we decode strings into buffers before passing to _write?
// this is here so that some node-core streams can optimize string
// handling at a lower level.
var noDecode = options.decodeStrings === false;
this.decodeStrings = !noDecode;
// Crypto is kind of old and crusty. Historically, its default string
// encoding is 'binary' so we have to make this configurable.
// Everything else in the universe uses 'utf8', though.
this.defaultEncoding = options.defaultEncoding || 'utf8';
// not an actual buffer we keep track of, but a measurement
// of how much we're waiting to get pushed to some underlying
// socket or file.
this.length = 0;
// a flag to see when we're in the middle of a write.
this.writing = false;
// when true all writes will be buffered until .uncork() call
this.corked = 0;
// a flag to be able to tell if the onwrite cb is called immediately,
// or on a later tick. We set this to true at first, because any
// actions that shouldn't happen until "later" should generally also
// not happen before the first write call.
this.sync = true;
// a flag to know if we're processing previously buffered items, which
// may call the _write() callback in the same tick, so that we don't
// end up in an overlapped onwrite situation.
this.bufferProcessing = false;
// the callback that's passed to _write(chunk,cb)
this.onwrite = function (er) {
onwrite(stream, er);
};
// the callback that the user supplies to write(chunk,encoding,cb)
this.writecb = null;
// the amount that is being written when _write is called.
this.writelen = 0;
this.bufferedRequest = null;
this.lastBufferedRequest = null;
// number of pending user-supplied write callbacks
// this must be 0 before 'finish' can be emitted
this.pendingcb = 0;
// emit prefinish if the only thing we're waiting for is _write cbs
// This is relevant for synchronous Transform streams
this.prefinished = false;
// True if the error was already emitted and should not be thrown again
this.errorEmitted = false;
// count buffered requests
this.bufferedRequestCount = 0;
// allocate the first CorkedRequest, there is always
// one allocated and free to use, and we maintain at most two
this.corkedRequestsFree = new CorkedRequest(this);
}
WritableState.prototype.getBuffer = function getBuffer() {
var current = this.bufferedRequest;
var out = [];
while (current) {
out.push(current);
current = current.next;
}
return out;
};
(function () {
try {
Object.defineProperty(WritableState.prototype, 'buffer', {
get: internalUtil.deprecate(function () {
return this.getBuffer();
}, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')
});
} catch (_) {}
})();
// Test _writableState for inheritance to account for Duplex streams,
// whose prototype chain only points to Readable.
var realHasInstance;
if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
realHasInstance = Function.prototype[Symbol.hasInstance];
Object.defineProperty(Writable, Symbol.hasInstance, {
value: function (object) {
if (realHasInstance.call(this, object)) return true;
if (this !== Writable) return false;
return object && object._writableState instanceof WritableState;
}
});
} else {
realHasInstance = function (object) {
return object instanceof this;
};
}
function Writable(options) {
Duplex = Duplex || __webpack_require__(6248);
// Writable ctor is applied to Duplexes, too.
// `realHasInstance` is necessary because using plain `instanceof`
// would return false, as no `_writableState` property is attached.
// Trying to use the custom `instanceof` for Writable here will also break the
// Node.js LazyTransform implementation, which has a non-trivial getter for
// `_writableState` that would lead to infinite recursion.
if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
return new Writable(options);
}
this._writableState = new WritableState(options, this);
// legacy.
this.writable = true;
if (options) {
if (typeof options.write === 'function') this._write = options.write;
if (typeof options.writev === 'function') this._writev = options.writev;
if (typeof options.destroy === 'function') this._destroy = options.destroy;
if (typeof options.final === 'function') this._final = options.final;
}
Stream.call(this);
}
// Otherwise people can pipe Writable streams, which is just wrong.
Writable.prototype.pipe = function () {
this.emit('error', new Error('Cannot pipe, not readable'));
};
function writeAfterEnd(stream, cb) {
var er = new Error('write after end');
// TODO: defer error events consistently everywhere, not just the cb
stream.emit('error', er);
pna.nextTick(cb, er);
}
// Checks that a user-supplied chunk is valid, especially for the particular
// mode the stream is in. Currently this means that `null` is never accepted
// and undefined/non-string values are only allowed in object mode.
function validChunk(stream, state, chunk, cb) {
var valid = true;
var er = false;
if (chunk === null) {
er = new TypeError('May not write null values to stream');
} else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
er = new TypeError('Invalid non-string/buffer chunk');
}
if (er) {
stream.emit('error', er);
pna.nextTick(cb, er);
valid = false;
}
return valid;
}
Writable.prototype.write = function (chunk, encoding, cb) {
var state = this._writableState;
var ret = false;
var isBuf = !state.objectMode && _isUint8Array(chunk);
if (isBuf && !Buffer.isBuffer(chunk)) {
chunk = _uint8ArrayToBuffer(chunk);
}
if (typeof encoding === 'function') {
cb = encoding;
encoding = null;
}
if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
if (typeof cb !== 'function') cb = nop;
if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {
state.pendingcb++;
ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);
}
return ret;
};
Writable.prototype.cork = function () {
var state = this._writableState;
state.corked++;
};
Writable.prototype.uncork = function () {
var state = this._writableState;
if (state.corked) {
state.corked--;
if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
}
};
Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
// node::ParseEncoding() requires lower case.
if (typeof encoding === 'string') encoding = encoding.toLowerCase();
if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);
this._writableState.defaultEncoding = encoding;
return this;
};
function decodeChunk(state, chunk, encoding) {
if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
chunk = Buffer.from(chunk, encoding);
}
return chunk;
}
Object.defineProperty(Writable.prototype, 'writableHighWaterMark', {
// making it explicit this property is not enumerable
// because otherwise some prototype manipulation in
// userland will fail
enumerable: false,
get: function () {
return this._writableState.highWaterMark;
}
});
// if we're already writing something, then just put this
// in the queue, and wait our turn. Otherwise, call _write
// If we return false, then we need a drain event, so set that flag.
function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {
if (!isBuf) {
var newChunk = decodeChunk(state, chunk, encoding);
if (chunk !== newChunk) {
isBuf = true;
encoding = 'buffer';
chunk = newChunk;
}
}
var len = state.objectMode ? 1 : chunk.length;
state.length += len;
var ret = state.length < state.highWaterMark;
// we must ensure that previous needDrain will not be reset to false.
if (!ret) state.needDrain = true;
if (state.writing || state.corked) {
var last = state.lastBufferedRequest;
state.lastBufferedRequest = {
chunk: chunk,
encoding: encoding,
isBuf: isBuf,
callback: cb,
next: null
};
if (last) {
last.next = state.lastBufferedRequest;
} else {
state.bufferedRequest = state.lastBufferedRequest;
}
state.bufferedRequestCount += 1;
} else {
doWrite(stream, state, false, len, chunk, encoding, cb);
}
return ret;
}
function doWrite(stream, state, writev, len, chunk, encoding, cb) {
state.writelen = len;
state.writecb = cb;
state.writing = true;
state.sync = true;
if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
state.sync = false;
}
function onwriteError(stream, state, sync, er, cb) {
--state.pendingcb;
if (sync) {
// defer the callback if we are being called synchronously
// to avoid piling up things on the stack
pna.nextTick(cb, er);
// this can emit finish, and it will always happen
// after error
pna.nextTick(finishMaybe, stream, state);
stream._writableState.errorEmitted = true;
stream.emit('error', er);
} else {
// the caller expect this to happen before if
// it is async
cb(er);
stream._writableState.errorEmitted = true;
stream.emit('error', er);
// this can emit finish, but finish must
// always follow error
finishMaybe(stream, state);
}
}
function onwriteStateUpdate(state) {
state.writing = false;
state.writecb = null;
state.length -= state.writelen;
state.writelen = 0;
}
function onwrite(stream, er) {
var state = stream._writableState;
var sync = state.sync;
var cb = state.writecb;
onwriteStateUpdate(state);
if (er) onwriteError(stream, state, sync, er, cb);else {
// Check if we're actually ready to finish, but don't emit yet
var finished = needFinish(state);
if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
clearBuffer(stream, state);
}
if (sync) {
/*<replacement>*/
asyncWrite(afterWrite, stream, state, finished, cb);
/*</replacement>*/
} else {
afterWrite(stream, state, finished, cb);
}
}
}
function afterWrite(stream, state, finished, cb) {
if (!finished) onwriteDrain(stream, state);
state.pendingcb--;
cb();
finishMaybe(stream, state);
}
// Must force callback to be called on nextTick, so that we don't
// emit 'drain' before the write() consumer gets the 'false' return
// value, and has a chance to attach a 'drain' listener.
function onwriteDrain(stream, state) {
if (state.length === 0 && state.needDrain) {
state.needDrain = false;
stream.emit('drain');
}
}
// if there's something in the buffer waiting, then process it
function clearBuffer(stream, state) {
state.bufferProcessing = true;
var entry = state.bufferedRequest;
if (stream._writev && entry && entry.next) {
// Fast case, write everything using _writev()
var l = state.bufferedRequestCount;
var buffer = new Array(l);
var holder = state.corkedRequestsFree;
holder.entry = entry;
var count = 0;
var allBuffers = true;
while (entry) {
buffer[count] = entry;
if (!entry.isBuf) allBuffers = false;
entry = entry.next;
count += 1;
}
buffer.allBuffers = allBuffers;
doWrite(stream, state, true, state.length, buffer, '', holder.finish);
// doWrite is almost always async, defer these to save a bit of time
// as the hot path ends with doWrite
state.pendingcb++;
state.lastBufferedRequest = null;
if (holder.next) {
state.corkedRequestsFree = holder.next;
holder.next = null;
} else {
state.corkedRequestsFree = new CorkedRequest(state);
}
state.bufferedRequestCount = 0;
} else {
// Slow case, write chunks one-by-one
while (entry) {
var chunk = entry.chunk;
var encoding = entry.encoding;
var cb = entry.callback;
var len = state.objectMode ? 1 : chunk.length;
doWrite(stream, state, false, len, chunk, encoding, cb);
entry = entry.next;
state.bufferedRequestCount--;
// if we didn't call the onwrite immediately, then
// it means that we need to wait until it does.
// also, that means that the chunk and cb are currently
// being processed, so move the buffer counter past them.
if (state.writing) {
break;
}
}
if (entry === null) state.lastBufferedRequest = null;
}
state.bufferedRequest = entry;
state.bufferProcessing = false;
}
Writable.prototype._write = function (chunk, encoding, cb) {
cb(new Error('_write() is not implemented'));
};
Writable.prototype._writev = null;
Writable.prototype.end = function (chunk, encoding, cb) {
var state = this._writableState;
if (typeof chunk === 'function') {
cb = chunk;
chunk = null;
encoding = null;
} else if (typeof encoding === 'function') {
cb = encoding;
encoding = null;
}
if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
// .end() fully uncorks
if (state.corked) {
state.corked = 1;
this.uncork();
}
// ignore unnecessary end() calls.
if (!state.ending) endWritable(this, state, cb);
};
function needFinish(state) {
return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
}
function callFinal(stream, state) {
stream._final(function (err) {
state.pendingcb--;
if (err) {
stream.emit('error', err);
}
state.prefinished = true;
stream.emit('prefinish');
finishMaybe(stream, state);
});
}
function prefinish(stream, state) {
if (!state.prefinished && !state.finalCalled) {
if (typeof stream._final === 'function') {
state.pendingcb++;
state.finalCalled = true;
pna.nextTick(callFinal, stream, state);
} else {
state.prefinished = true;
stream.emit('prefinish');
}
}
}
function finishMaybe(stream, state) {
var need = needFinish(state);
if (need) {
prefinish(stream, state);
if (state.pendingcb === 0) {
state.finished = true;
stream.emit('finish');
}
}
return need;
}
function endWritable(stream, state, cb) {
state.ending = true;
finishMaybe(stream, state);
if (cb) {
if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);
}
state.ended = true;
stream.writable = false;
}
function onCorkedFinish(corkReq, state, err) {
var entry = corkReq.entry;
corkReq.entry = null;
while (entry) {
var cb = entry.callback;
state.pendingcb--;
cb(err);
entry = entry.next;
}
// reuse the free corkReq.
state.corkedRequestsFree.next = corkReq;
}
Object.defineProperty(Writable.prototype, 'destroyed', {
get: function () {
if (this._writableState === undefined) {
return false;
}
return this._writableState.destroyed;
},
set: function (value) {
// we ignore the value if the stream
// has not been initialized yet
if (!this._writableState) {
return;
}
// backward compatibility, the user is explicitly
// managing destroyed
this._writableState.destroyed = value;
}
});
Writable.prototype.destroy = destroyImpl.destroy;
Writable.prototype._undestroy = destroyImpl.undestroy;
Writable.prototype._destroy = function (err, cb) {
this.end();
cb(err);
};
/***/ }),
/***/ 672:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var Buffer = (__webpack_require__(4116).Buffer);
var util = __webpack_require__(1638);
function copyBuffer(src, target, offset) {
src.copy(target, offset);
}
module.exports = function () {
function BufferList() {
_classCallCheck(this, BufferList);
this.head = null;
this.tail = null;
this.length = 0;
}
BufferList.prototype.push = function push(v) {
var entry = { data: v, next: null };
if (this.length > 0) this.tail.next = entry;else this.head = entry;
this.tail = entry;
++this.length;
};
BufferList.prototype.unshift = function unshift(v) {
var entry = { data: v, next: this.head };
if (this.length === 0) this.tail = entry;
this.head = entry;
++this.length;
};
BufferList.prototype.shift = function shift() {
if (this.length === 0) return;
var ret = this.head.data;
if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
--this.length;
return ret;
};
BufferList.prototype.clear = function clear() {
this.head = this.tail = null;
this.length = 0;
};
BufferList.prototype.join = function join(s) {
if (this.length === 0) return '';
var p = this.head;
var ret = '' + p.data;
while (p = p.next) {
ret += s + p.data;
}return ret;
};
BufferList.prototype.concat = function concat(n) {
if (this.length === 0) return Buffer.alloc(0);
var ret = Buffer.allocUnsafe(n >>> 0);
var p = this.head;
var i = 0;
while (p) {
copyBuffer(p.data, ret, i);
i += p.data.length;
p = p.next;
}
return ret;
};
return BufferList;
}();
if (util && util.inspect && util.inspect.custom) {
module.exports.prototype[util.inspect.custom] = function () {
var obj = util.inspect({ length: this.length });
return this.constructor.name + ' ' + obj;
};
}
/***/ }),
/***/ 6278:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
/*<replacement>*/
var pna = __webpack_require__(3225);
/*</replacement>*/
// undocumented cb() API, needed for core, not for public API
function destroy(err, cb) {
var _this = this;
var readableDestroyed = this._readableState && this._readableState.destroyed;
var writableDestroyed = this._writableState && this._writableState.destroyed;
if (readableDestroyed || writableDestroyed) {
if (cb) {
cb(err);
} else if (err) {
if (!this._writableState) {
pna.nextTick(emitErrorNT, this, err);
} else if (!this._writableState.errorEmitted) {
this._writableState.errorEmitted = true;
pna.nextTick(emitErrorNT, this, err);
}
}
return this;
}
// we set destroyed to true before firing error callbacks in order
// to make it re-entrance safe in case destroy() is called within callbacks
if (this._readableState) {
this._readableState.destroyed = true;
}
// if this is a duplex stream mark the writable part as destroyed as well
if (this._writableState) {
this._writableState.destroyed = true;
}
this._destroy(err || null, function (err) {
if (!cb && err) {
if (!_this._writableState) {
pna.nextTick(emitErrorNT, _this, err);
} else if (!_this._writableState.errorEmitted) {
_this._writableState.errorEmitted = true;
pna.nextTick(emitErrorNT, _this, err);
}
} else if (cb) {
cb(err);
}
});
return this;
}
function undestroy() {
if (this._readableState) {
this._readableState.destroyed = false;
this._readableState.reading = false;
this._readableState.ended = false;
this._readableState.endEmitted = false;
}
if (this._writableState) {
this._writableState.destroyed = false;
this._writableState.ended = false;
this._writableState.ending = false;
this._writableState.finalCalled = false;
this._writableState.prefinished = false;
this._writableState.finished = false;
this._writableState.errorEmitted = false;
}
}
function emitErrorNT(self, err) {
self.emit('error', err);
}
module.exports = {
destroy: destroy,
undestroy: undestroy
};
/***/ }),
/***/ 5567:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
module.exports = __webpack_require__(7007).EventEmitter;
/***/ }),
/***/ 4116:
/***/ ((module, exports, __webpack_require__) => {
/* eslint-disable node/no-deprecated-api */
var buffer = __webpack_require__(8287)
var Buffer = buffer.Buffer
// alternative to using Object.keys for old browsers
function copyProps (src, dst) {
for (var key in src) {
dst[key] = src[key]
}
}
if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
module.exports = buffer
} else {
// Copy properties from require('buffer')
copyProps(buffer, exports)
exports.Buffer = SafeBuffer
}
function SafeBuffer (arg, encodingOrOffset, length) {
return Buffer(arg, encodingOrOffset, length)
}
// Copy static methods from Buffer
copyProps(Buffer, SafeBuffer)
SafeBuffer.from = function (arg, encodingOrOffset, length) {
if (typeof arg === 'number') {
throw new TypeError('Argument must not be a number')
}
return Buffer(arg, encodingOrOffset, length)
}
SafeBuffer.alloc = function (size, fill, encoding) {
if (typeof size !== 'number') {
throw new TypeError('Argument must be a number')
}
var buf = Buffer(size)
if (fill !== undefined) {
if (typeof encoding === 'string') {
buf.fill(fill, encoding)
} else {
buf.fill(fill)
}
} else {
buf.fill(0)
}
return buf
}
SafeBuffer.allocUnsafe = function (size) {
if (typeof size !== 'number') {
throw new TypeError('Argument must be a number')
}
return Buffer(size)
}
SafeBuffer.allocUnsafeSlow = function (size) {
if (typeof size !== 'number') {
throw new TypeError('Argument must be a number')
}
return buffer.SlowBuffer(size)
}
/***/ }),
/***/ 6737:
/***/ ((module, exports, __webpack_require__) => {
exports = module.exports = __webpack_require__(206);
exports.Stream = exports;
exports.Readable = exports;
exports.Writable = __webpack_require__(7314);
exports.Duplex = __webpack_require__(6248);
exports.Transform = __webpack_require__(1816);
exports.PassThrough = __webpack_require__(5242);
/***/ }),
/***/ 6427:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
// Copyright Joyent, Inc. and other Node contributors.
//
// 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.
/*<replacement>*/
var Buffer = (__webpack_require__(8393).Buffer);
/*</replacement>*/
var isEncoding = Buffer.isEncoding || function (encoding) {
encoding = '' + encoding;
switch (encoding && encoding.toLowerCase()) {
case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':
return true;
default:
return false;
}
};
function _normalizeEncoding(enc) {
if (!enc) return 'utf8';
var retried;
while (true) {
switch (enc) {
case 'utf8':
case 'utf-8':
return 'utf8';
case 'ucs2':
case 'ucs-2':
case 'utf16le':
case 'utf-16le':
return 'utf16le';
case 'latin1':
case 'binary':
return 'latin1';
case 'base64':
case 'ascii':
case 'hex':
return enc;
default:
if (retried) return; // undefined
enc = ('' + enc).toLowerCase();
retried = true;
}
}
};
// Do not cache `Buffer.isEncoding` when checking encoding names as some
// modules monkey-patch it to support additional encodings
function normalizeEncoding(enc) {
var nenc = _normalizeEncoding(enc);
if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);
return nenc || enc;
}
// StringDecoder provides an interface for efficiently splitting a series of
// buffers into a series of JS strings without breaking apart multi-byte
// characters.
exports.I = StringDecoder;
function StringDecoder(encoding) {
this.encoding = normalizeEncoding(encoding);
var nb;
switch (this.encoding) {
case 'utf16le':
this.text = utf16Text;
this.end = utf16End;
nb = 4;
break;
case 'utf8':
this.fillLast = utf8FillLast;
nb = 4;
break;
case 'base64':
this.text = base64Text;
this.end = base64End;
nb = 3;
break;
default:
this.write = simpleWrite;
this.end = simpleEnd;
return;
}
this.lastNeed = 0;
this.lastTotal = 0;
this.lastChar = Buffer.allocUnsafe(nb);
}
StringDecoder.prototype.write = function (buf) {
if (buf.length === 0) return '';
var r;
var i;
if (this.lastNeed) {
r = this.fillLast(buf);
if (r === undefined) return '';
i = this.lastNeed;
this.lastNeed = 0;
} else {
i = 0;
}
if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);
return r || '';
};
StringDecoder.prototype.end = utf8End;
// Returns only complete characters in a Buffer
StringDecoder.prototype.text = utf8Text;
// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer
StringDecoder.prototype.fillLast = function (buf) {
if (this.lastNeed <= buf.length) {
buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);
return this.lastChar.toString(this.encoding, 0, this.lastTotal);
}
buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);
this.lastNeed -= buf.length;
};
// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a
// continuation byte. If an invalid byte is detected, -2 is returned.
function utf8CheckByte(byte) {
if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;
return byte >> 6 === 0x02 ? -1 : -2;
}
// Checks at most 3 bytes at the end of a Buffer in order to detect an
// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)
// needed to complete the UTF-8 character (if applicable) are returned.
function utf8CheckIncomplete(self, buf, i) {
var j = buf.length - 1;
if (j < i) return 0;
var nb = utf8CheckByte(buf[j]);
if (nb >= 0) {
if (nb > 0) self.lastNeed = nb - 1;
return nb;
}
if (--j < i || nb === -2) return 0;
nb = utf8CheckByte(buf[j]);
if (nb >= 0) {
if (nb > 0) self.lastNeed = nb - 2;
return nb;
}
if (--j < i || nb === -2) return 0;
nb = utf8CheckByte(buf[j]);
if (nb >= 0) {
if (nb > 0) {
if (nb === 2) nb = 0;else self.lastNeed = nb - 3;
}
return nb;
}
return 0;
}
// Validates as many continuation bytes for a multi-byte UTF-8 character as
// needed or are available. If we see a non-continuation byte where we expect
// one, we "replace" the validated continuation bytes we've seen so far with
// a single UTF-8 replacement character ('\ufffd'), to match v8's UTF-8 decoding
// behavior. The continuation byte check is included three times in the case
// where all of the continuation bytes for a character exist in the same buffer.
// It is also done this way as a slight performance increase instead of using a
// loop.
function utf8CheckExtraBytes(self, buf, p) {
if ((buf[0] & 0xC0) !== 0x80) {
self.lastNeed = 0;
return '\ufffd';
}
if (self.lastNeed > 1 && buf.length > 1) {
if ((buf[1] & 0xC0) !== 0x80) {
self.lastNeed = 1;
return '\ufffd';
}
if (self.lastNeed > 2 && buf.length > 2) {
if ((buf[2] & 0xC0) !== 0x80) {
self.lastNeed = 2;
return '\ufffd';
}
}
}
}
// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.
function utf8FillLast(buf) {
var p = this.lastTotal - this.lastNeed;
var r = utf8CheckExtraBytes(this, buf, p);
if (r !== undefined) return r;
if (this.lastNeed <= buf.length) {
buf.copy(this.lastChar, p, 0, this.lastNeed);
return this.lastChar.toString(this.encoding, 0, this.lastTotal);
}
buf.copy(this.lastChar, p, 0, buf.length);
this.lastNeed -= buf.length;
}
// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a
// partial character, the character's bytes are buffered until the required
// number of bytes are available.
function utf8Text(buf, i) {
var total = utf8CheckIncomplete(this, buf, i);
if (!this.lastNeed) return buf.toString('utf8', i);
this.lastTotal = total;
var end = buf.length - (total - this.lastNeed);
buf.copy(this.lastChar, 0, end);
return buf.toString('utf8', i, end);
}
// For UTF-8, a replacement character is added when ending on a partial
// character.
function utf8End(buf) {
var r = buf && buf.length ? this.write(buf) : '';
if (this.lastNeed) return r + '\ufffd';
return r;
}
// UTF-16LE typically needs two bytes per character, but even if we have an even
// number of bytes available, we need to check if we end on a leading/high
// surrogate. In that case, we need to wait for the next two bytes in order to
// decode the last character properly.
function utf16Text(buf, i) {
if ((buf.length - i) % 2 === 0) {
var r = buf.toString('utf16le', i);
if (r) {
var c = r.charCodeAt(r.length - 1);
if (c >= 0xD800 && c <= 0xDBFF) {
this.lastNeed = 2;
this.lastTotal = 4;
this.lastChar[0] = buf[buf.length - 2];
this.lastChar[1] = buf[buf.length - 1];
return r.slice(0, -1);
}
}
return r;
}
this.lastNeed = 1;
this.lastTotal = 2;
this.lastChar[0] = buf[buf.length - 1];
return buf.toString('utf16le', i, buf.length - 1);
}
// For UTF-16LE we do not explicitly append special replacement characters if we
// end on a partial character, we simply let v8 handle that.
function utf16End(buf) {
var r = buf && buf.length ? this.write(buf) : '';
if (this.lastNeed) {
var end = this.lastTotal - this.lastNeed;
return r + this.lastChar.toString('utf16le', 0, end);
}
return r;
}
function base64Text(buf, i) {
var n = (buf.length - i) % 3;
if (n === 0) return buf.toString('base64', i);
this.lastNeed = 3 - n;
this.lastTotal = 3;
if (n === 1) {
this.lastChar[0] = buf[buf.length - 1];
} else {
this.lastChar[0] = buf[buf.length - 2];
this.lastChar[1] = buf[buf.length - 1];
}
return buf.toString('base64', i, buf.length - n);
}
function base64End(buf) {
var r = buf && buf.length ? this.write(buf) : '';
if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);
return r;
}
// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)
function simpleWrite(buf) {
return buf.toString(this.encoding);
}
function simpleEnd(buf) {
return buf && buf.length ? this.write(buf) : '';
}
/***/ }),
/***/ 8393:
/***/ ((module, exports, __webpack_require__) => {
/* eslint-disable node/no-deprecated-api */
var buffer = __webpack_require__(8287)
var Buffer = buffer.Buffer
// alternative to using Object.keys for old browsers
function copyProps (src, dst) {
for (var key in src) {
dst[key] = src[key]
}
}
if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
module.exports = buffer
} else {
// Copy properties from require('buffer')
copyProps(buffer, exports)
exports.Buffer = SafeBuffer
}
function SafeBuffer (arg, encodingOrOffset, length) {
return Buffer(arg, encodingOrOffset, length)
}
// Copy static methods from Buffer
copyProps(Buffer, SafeBuffer)
SafeBuffer.from = function (arg, encodingOrOffset, length) {
if (typeof arg === 'number') {
throw new TypeError('Argument must not be a number')
}
return Buffer(arg, encodingOrOffset, length)
}
SafeBuffer.alloc = function (size, fill, encoding) {
if (typeof size !== 'number') {
throw new TypeError('Argument must be a number')
}
var buf = Buffer(size)
if (fill !== undefined) {
if (typeof encoding === 'string') {
buf.fill(fill, encoding)
} else {
buf.fill(fill)
}
} else {
buf.fill(0)
}
return buf
}
SafeBuffer.allocUnsafe = function (size) {
if (typeof size !== 'number') {
throw new TypeError('Argument must be a number')
}
return Buffer(size)
}
SafeBuffer.allocUnsafeSlow = function (size) {
if (typeof size !== 'number') {
throw new TypeError('Argument must be a number')
}
return buffer.SlowBuffer(size)
}
/***/ }),
/***/ 295:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
/* provided dependency */ var Buffer = __webpack_require__(8287)["Buffer"];
module.exports = function xor (a, b) {
var length = Math.min(a.length, b.length)
var buffer = new Buffer(length)
for (var i = 0; i < length; ++i) {
buffer[i] = a[i] ^ b[i]
}
return buffer
}
/***/ }),
/***/ 8287:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
/*!
* The buffer module from node.js, for the browser.
*
* @author Feross Aboukhadijeh <https://feross.org>
* @license MIT
*/
/* eslint-disable no-proto */
const base64 = __webpack_require__(7526)
const ieee754 = __webpack_require__(251)
const customInspectSymbol =
(typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation
? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation
: null
exports.Buffer = Buffer
exports.SlowBuffer = SlowBuffer
exports.INSPECT_MAX_BYTES = 50
const K_MAX_LENGTH = 0x7fffffff
exports.kMaxLength = K_MAX_LENGTH
/**
* If `Buffer.TYPED_ARRAY_SUPPORT`:
* === true Use Uint8Array implementation (fastest)
* === false Print warning and recommend using `buffer` v4.x which has an Object
* implementation (most compatible, even IE6)
*
* Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
* Opera 11.6+, iOS 4.2+.
*
* We report that the browser does not support typed arrays if the are not subclassable
* using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
* (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
* for __proto__ and has a buggy typed array implementation.
*/
Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
typeof console.error === 'function') {
console.error(
'This browser lacks typed array (Uint8Array) support which is required by ' +
'`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
)
}
function typedArraySupport () {
// Can typed array instances can be augmented?
try {
const arr = new Uint8Array(1)
const proto = { foo: function () { return 42 } }
Object.setPrototypeOf(proto, Uint8Array.prototype)
Object.setPrototypeOf(arr, proto)
return arr.foo() === 42
} catch (e) {
return false
}
}
Object.defineProperty(Buffer.prototype, 'parent', {
enumerable: true,
get: function () {
if (!Buffer.isBuffer(this)) return undefined
return this.buffer
}
})
Object.defineProperty(Buffer.prototype, 'offset', {
enumerable: true,
get: function () {
if (!Buffer.isBuffer(this)) return undefined
return this.byteOffset
}
})
function createBuffer (length) {
if (length > K_MAX_LENGTH) {
throw new RangeError('The value "' + length + '" is invalid for option "size"')
}
// Return an augmented `Uint8Array` instance
const buf = new Uint8Array(length)
Object.setPrototypeOf(buf, Buffer.prototype)
return buf
}
/**
* The Buffer constructor returns instances of `Uint8Array` that have their
* prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
* `Uint8Array`, so the returned instances will have all the node `Buffer` methods
* and the `Uint8Array` methods. Square bracket notation works as expected -- it
* returns a single octet.
*
* The `Uint8Array` prototype remains unmodified.
*/
function Buffer (arg, encodingOrOffset, length) {
// Common case.
if (typeof arg === 'number') {
if (typeof encodingOrOffset === 'string') {
throw new TypeError(
'The "string" argument must be of type string. Received type number'
)
}
return allocUnsafe(arg)
}
return from(arg, encodingOrOffset, length)
}
Buffer.poolSize = 8192 // not used by this implementation
function from (value, encodingOrOffset, length) {
if (typeof value === 'string') {
return fromString(value, encodingOrOffset)
}
if (ArrayBuffer.isView(value)) {
return fromArrayView(value)
}
if (value == null) {
throw new TypeError(
'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +
'or Array-like Object. Received type ' + (typeof value)
)
}
if (isInstance(value, ArrayBuffer) ||
(value && isInstance(value.buffer, ArrayBuffer))) {
return fromArrayBuffer(value, encodingOrOffset, length)
}
if (typeof SharedArrayBuffer !== 'undefined' &&
(isInstance(value, SharedArrayBuffer) ||
(value && isInstance(value.buffer, SharedArrayBuffer)))) {
return fromArrayBuffer(value, encodingOrOffset, length)
}
if (typeof value === 'number') {
throw new TypeError(
'The "value" argument must not be of type number. Received type number'
)
}
const valueOf = value.valueOf && value.valueOf()
if (valueOf != null && valueOf !== value) {
return Buffer.from(valueOf, encodingOrOffset, length)
}
const b = fromObject(value)
if (b) return b
if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&
typeof value[Symbol.toPrimitive] === 'function') {
return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)
}
throw new TypeError(
'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +
'or Array-like Object. Received type ' + (typeof value)
)
}
/**
* Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
* if value is a number.
* Buffer.from(str[, encoding])
* Buffer.from(array)
* Buffer.from(buffer)
* Buffer.from(arrayBuffer[, byteOffset[, length]])
**/
Buffer.from = function (value, encodingOrOffset, length) {
return from(value, encodingOrOffset, length)
}
// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
// https://github.com/feross/buffer/pull/148
Object.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)
Object.setPrototypeOf(Buffer, Uint8Array)
function assertSize (size) {
if (typeof size !== 'number') {
throw new TypeError('"size" argument must be of type number')
} else if (size < 0) {
throw new RangeError('The value "' + size + '" is invalid for option "size"')
}
}
function alloc (size, fill, encoding) {
assertSize(size)
if (size <= 0) {
return createBuffer(size)
}
if (fill !== undefined) {
// Only pay attention to encoding if it's a string. This
// prevents accidentally sending in a number that would
// be interpreted as a start offset.
return typeof encoding === 'string'
? createBuffer(size).fill(fill, encoding)
: createBuffer(size).fill(fill)
}
return createBuffer(size)
}
/**
* Creates a new filled Buffer instance.
* alloc(size[, fill[, encoding]])
**/
Buffer.alloc = function (size, fill, encoding) {
return alloc(size, fill, encoding)
}
function allocUnsafe (size) {
assertSize(size)
return createBuffer(size < 0 ? 0 : checked(size) | 0)
}
/**
* Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
* */
Buffer.allocUnsafe = function (size) {
return allocUnsafe(size)
}
/**
* Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
*/
Buffer.allocUnsafeSlow = function (size) {
return allocUnsafe(size)
}
function fromString (string, encoding) {
if (typeof encoding !== 'string' || encoding === '') {
encoding = 'utf8'
}
if (!Buffer.isEncoding(encoding)) {
throw new TypeError('Unknown encoding: ' + encoding)
}
const length = byteLength(string, encoding) | 0
let buf = createBuffer(length)
const actual = buf.write(string, encoding)
if (actual !== length) {
// Writing a hex string, for example, that contains invalid characters will
// cause everything after the first invalid character to be ignored. (e.g.
// 'abxxcd' will be treated as 'ab')
buf = buf.slice(0, actual)
}
return buf
}
function fromArrayLike (array) {
const length = array.length < 0 ? 0 : checked(array.length) | 0
const buf = createBuffer(length)
for (let i = 0; i < length; i += 1) {
buf[i] = array[i] & 255
}
return buf
}
function fromArrayView (arrayView) {
if (isInstance(arrayView, Uint8Array)) {
const copy = new Uint8Array(arrayView)
return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)
}
return fromArrayLike(arrayView)
}
function fromArrayBuffer (array, byteOffset, length) {
if (byteOffset < 0 || array.byteLength < byteOffset) {
throw new RangeError('"offset" is outside of buffer bounds')
}
if (array.byteLength < byteOffset + (length || 0)) {
throw new RangeError('"length" is outside of buffer bounds')
}
let buf
if (byteOffset === undefined && length === undefined) {
buf = new Uint8Array(array)
} else if (length === undefined) {
buf = new Uint8Array(array, byteOffset)
} else {
buf = new Uint8Array(array, byteOffset, length)
}
// Return an augmented `Uint8Array` instance
Object.setPrototypeOf(buf, Buffer.prototype)
return buf
}
function fromObject (obj) {
if (Buffer.isBuffer(obj)) {
const len = checked(obj.length) | 0
const buf = createBuffer(len)
if (buf.length === 0) {
return buf
}
obj.copy(buf, 0, 0, len)
return buf
}
if (obj.length !== undefined) {
if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {
return createBuffer(0)
}
return fromArrayLike(obj)
}
if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
return fromArrayLike(obj.data)
}
}
function checked (length) {
// Note: cannot use `length < K_MAX_LENGTH` here because that fails when
// length is NaN (which is otherwise coerced to zero.)
if (length >= K_MAX_LENGTH) {
throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
}
return length | 0
}
function SlowBuffer (length) {
if (+length != length) { // eslint-disable-line eqeqeq
length = 0
}
return Buffer.alloc(+length)
}
Buffer.isBuffer = function isBuffer (b) {
return b != null && b._isBuffer === true &&
b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false
}
Buffer.compare = function compare (a, b) {
if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)
if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)
if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
throw new TypeError(
'The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array'
)
}
if (a === b) return 0
let x = a.length
let y = b.length
for (let i = 0, len = Math.min(x, y); i < len; ++i) {
if (a[i] !== b[i]) {
x = a[i]
y = b[i]
break
}
}
if (x < y) return -1
if (y < x) return 1
return 0
}
Buffer.isEncoding = function isEncoding (encoding) {
switch (String(encoding).toLowerCase()) {
case 'hex':
case 'utf8':
case 'utf-8':
case 'ascii':
case 'latin1':
case 'binary':
case 'base64':
case 'ucs2':
case 'ucs-2':
case 'utf16le':
case 'utf-16le':
return true
default:
return false
}
}
Buffer.concat = function concat (list, length) {
if (!Array.isArray(list)) {
throw new TypeError('"list" argument must be an Array of Buffers')
}
if (list.length === 0) {
return Buffer.alloc(0)
}
let i
if (length === undefined) {
length = 0
for (i = 0; i < list.length; ++i) {
length += list[i].length
}
}
const buffer = Buffer.allocUnsafe(length)
let pos = 0
for (i = 0; i < list.length; ++i) {
let buf = list[i]
if (isInstance(buf, Uint8Array)) {
if (pos + buf.length > buffer.length) {
if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)
buf.copy(buffer, pos)
} else {
Uint8Array.prototype.set.call(
buffer,
buf,
pos
)
}
} else if (!Buffer.isBuffer(buf)) {
throw new TypeError('"list" argument must be an Array of Buffers')
} else {
buf.copy(buffer, pos)
}
pos += buf.length
}
return buffer
}
function byteLength (string, encoding) {
if (Buffer.isBuffer(string)) {
return string.length
}
if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {
return string.byteLength
}
if (typeof string !== 'string') {
throw new TypeError(
'The "string" argument must be one of type string, Buffer, or ArrayBuffer. ' +
'Received type ' + typeof string
)
}
const len = string.length
const mustMatch = (arguments.length > 2 && arguments[2] === true)
if (!mustMatch && len === 0) return 0
// Use a for loop to avoid recursion
let loweredCase = false
for (;;) {
switch (encoding) {
case 'ascii':
case 'latin1':
case 'binary':
return len
case 'utf8':
case 'utf-8':
return utf8ToBytes(string).length
case 'ucs2':
case 'ucs-2':
case 'utf16le':
case 'utf-16le':
return len * 2
case 'hex':
return len >>> 1
case 'base64':
return base64ToBytes(string).length
default:
if (loweredCase) {
return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8
}
encoding = ('' + encoding).toLowerCase()
loweredCase = true
}
}
}
Buffer.byteLength = byteLength
function slowToString (encoding, start, end) {
let loweredCase = false
// No need to verify that "this.length <= MAX_UINT32" since it's a read-only
// property of a typed array.
// This behaves neither like String nor Uint8Array in that we set start/end
// to their upper/lower bounds if the value passed is out of range.
// undefined is handled specially as per ECMA-262 6th Edition,
// Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
if (start === undefined || start < 0) {
start = 0
}
// Return early if start > this.length. Done here to prevent potential uint32
// coercion fail below.
if (start > this.length) {
return ''
}
if (end === undefined || end > this.length) {
end = this.length
}
if (end <= 0) {
return ''
}
// Force coercion to uint32. This will also coerce falsey/NaN values to 0.
end >>>= 0
start >>>= 0
if (end <= start) {
return ''
}
if (!encoding) encoding = 'utf8'
while (true) {
switch (encoding) {
case 'hex':
return hexSlice(this, start, end)
case 'utf8':
case 'utf-8':
return utf8Slice(this, start, end)
case 'ascii':
return asciiSlice(this, start, end)
case 'latin1':
case 'binary':
return latin1Slice(this, start, end)
case 'base64':
return base64Slice(this, start, end)
case 'ucs2':
case 'ucs-2':
case 'utf16le':
case 'utf-16le':
return utf16leSlice(this, start, end)
default:
if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
encoding = (encoding + '').toLowerCase()
loweredCase = true
}
}
}
// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
// to detect a Buffer instance. It's not possible to use `instanceof Buffer`
// reliably in a browserify context because there could be multiple different
// copies of the 'buffer' package in use. This method works even for Buffer
// instances that were created from another copy of the `buffer` package.
// See: https://github.com/feross/buffer/issues/154
Buffer.prototype._isBuffer = true
function swap (b, n, m) {
const i = b[n]
b[n] = b[m]
b[m] = i
}
Buffer.prototype.swap16 = function swap16 () {
const len = this.length
if (len % 2 !== 0) {
throw new RangeError('Buffer size must be a multiple of 16-bits')
}
for (let i = 0; i < len; i += 2) {
swap(this, i, i + 1)
}
return this
}
Buffer.prototype.swap32 = function swap32 () {
const len = this.length
if (len % 4 !== 0) {
throw new RangeError('Buffer size must be a multiple of 32-bits')
}
for (let i = 0; i < len; i += 4) {
swap(this, i, i + 3)
swap(this, i + 1, i + 2)
}
return this
}
Buffer.prototype.swap64 = function swap64 () {
const len = this.length
if (len % 8 !== 0) {
throw new RangeError('Buffer size must be a multiple of 64-bits')
}
for (let i = 0; i < len; i += 8) {
swap(this, i, i + 7)
swap(this, i + 1, i + 6)
swap(this, i + 2, i + 5)
swap(this, i + 3, i + 4)
}
return this
}
Buffer.prototype.toString = function toString () {
const length = this.length
if (length === 0) return ''
if (arguments.length === 0) return utf8Slice(this, 0, length)
return slowToString.apply(this, arguments)
}
Buffer.prototype.toLocaleString = Buffer.prototype.toString
Buffer.prototype.equals = function equals (b) {
if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
if (this === b) return true
return Buffer.compare(this, b) === 0
}
Buffer.prototype.inspect = function inspect () {
let str = ''
const max = exports.INSPECT_MAX_BYTES
str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()
if (this.length > max) str += ' ... '
return '<Buffer ' + str + '>'
}
if (customInspectSymbol) {
Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect
}
Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
if (isInstance(target, Uint8Array)) {
target = Buffer.from(target, target.offset, target.byteLength)
}
if (!Buffer.isBuffer(target)) {
throw new TypeError(
'The "target" argument must be one of type Buffer or Uint8Array. ' +
'Received type ' + (typeof target)
)
}
if (start === undefined) {
start = 0
}
if (end === undefined) {
end = target ? target.length : 0
}
if (thisStart === undefined) {
thisStart = 0
}
if (thisEnd === undefined) {
thisEnd = this.length
}
if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
throw new RangeError('out of range index')
}
if (thisStart >= thisEnd && start >= end) {
return 0
}
if (thisStart >= thisEnd) {
return -1
}
if (start >= end) {
return 1
}
start >>>= 0
end >>>= 0
thisStart >>>= 0
thisEnd >>>= 0
if (this === target) return 0
let x = thisEnd - thisStart
let y = end - start
const len = Math.min(x, y)
const thisCopy = this.slice(thisStart, thisEnd)
const targetCopy = target.slice(start, end)
for (let i = 0; i < len; ++i) {
if (thisCopy[i] !== targetCopy[i]) {
x = thisCopy[i]
y = targetCopy[i]
break
}
}
if (x < y) return -1
if (y < x) return 1
return 0
}
// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
// OR the last index of `val` in `buffer` at offset <= `byteOffset`.
//
// Arguments:
// - buffer - a Buffer to search
// - val - a string, Buffer, or number
// - byteOffset - an index into `buffer`; will be clamped to an int32
// - encoding - an optional encoding, relevant is val is a string
// - dir - true for indexOf, false for lastIndexOf
function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
// Empty buffer means no match
if (buffer.length === 0) return -1
// Normalize byteOffset
if (typeof byteOffset === 'string') {
encoding = byteOffset
byteOffset = 0
} else if (byteOffset > 0x7fffffff) {
byteOffset = 0x7fffffff
} else if (byteOffset < -0x80000000) {
byteOffset = -0x80000000
}
byteOffset = +byteOffset // Coerce to Number.
if (numberIsNaN(byteOffset)) {
// byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
byteOffset = dir ? 0 : (buffer.length - 1)
}
// Normalize byteOffset: negative offsets start from the end of the buffer
if (byteOffset < 0) byteOffset = buffer.length + byteOffset
if (byteOffset >= buffer.length) {
if (dir) return -1
else byteOffset = buffer.length - 1
} else if (byteOffset < 0) {
if (dir) byteOffset = 0
else return -1
}
// Normalize val
if (typeof val === 'string') {
val = Buffer.from(val, encoding)
}
// Finally, search either indexOf (if dir is true) or lastIndexOf
if (Buffer.isBuffer(val)) {
// Special case: looking for empty string/buffer always fails
if (val.length === 0) {
return -1
}
return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
} else if (typeof val === 'number') {
val = val & 0xFF // Search for a byte value [0-255]
if (typeof Uint8Array.prototype.indexOf === 'function') {
if (dir) {
return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
} else {
return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
}
}
return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)
}
throw new TypeError('val must be string, number or Buffer')
}
function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
let indexSize = 1
let arrLength = arr.length
let valLength = val.length
if (encoding !== undefined) {
encoding = String(encoding).toLowerCase()
if (encoding === 'ucs2' || encoding === 'ucs-2' ||
encoding === 'utf16le' || encoding === 'utf-16le') {
if (arr.length < 2 || val.length < 2) {
return -1
}
indexSize = 2
arrLength /= 2
valLength /= 2
byteOffset /= 2
}
}
function read (buf, i) {
if (indexSize === 1) {
return buf[i]
} else {
return buf.readUInt16BE(i * indexSize)
}
}
let i
if (dir) {
let foundIndex = -1
for (i = byteOffset; i < arrLength; i++) {
if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
if (foundIndex === -1) foundIndex = i
if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
} else {
if (foundIndex !== -1) i -= i - foundIndex
foundIndex = -1
}
}
} else {
if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
for (i = byteOffset; i >= 0; i--) {
let found = true
for (let j = 0; j < valLength; j++) {
if (read(arr, i + j) !== read(val, j)) {
found = false
break
}
}
if (found) return i
}
}
return -1
}
Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
return this.indexOf(val, byteOffset, encoding) !== -1
}
Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
}
Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
}
function hexWrite (buf, string, offset, length) {
offset = Number(offset) || 0
const remaining = buf.length - offset
if (!length) {
length = remaining
} else {
length = Number(length)
if (length > remaining) {
length = remaining
}
}
const strLen = string.length
if (length > strLen / 2) {
length = strLen / 2
}
let i
for (i = 0; i < length; ++i) {
const parsed = parseInt(string.substr(i * 2, 2), 16)
if (numberIsNaN(parsed)) return i
buf[offset + i] = parsed
}
return i
}
function utf8Write (buf, string, offset, length) {
return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
}
function asciiWrite (buf, string, offset, length) {
return blitBuffer(asciiToBytes(string), buf, offset, length)
}
function base64Write (buf, string, offset, length) {
return blitBuffer(base64ToBytes(string), buf, offset, length)
}
function ucs2Write (buf, string, offset, length) {
return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
}
Buffer.prototype.write = function write (string, offset, length, encoding) {
// Buffer#write(string)
if (offset === undefined) {
encoding = 'utf8'
length = this.length
offset = 0
// Buffer#write(string, encoding)
} else if (length === undefined && typeof offset === 'string') {
encoding = offset
length = this.length
offset = 0
// Buffer#write(string, offset[, length][, encoding])
} else if (isFinite(offset)) {
offset = offset >>> 0
if (isFinite(length)) {
length = length >>> 0
if (encoding === undefined) encoding = 'utf8'
} else {
encoding = length
length = undefined
}
} else {
throw new Error(
'Buffer.write(string, encoding, offset[, length]) is no longer supported'
)
}
const remaining = this.length - offset
if (length === undefined || length > remaining) length = remaining
if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
throw new RangeError('Attempt to write outside buffer bounds')
}
if (!encoding) encoding = 'utf8'
let loweredCase = false
for (;;) {
switch (encoding) {
case 'hex':
return hexWrite(this, string, offset, length)
case 'utf8':
case 'utf-8':
return utf8Write(this, string, offset, length)
case 'ascii':
case 'latin1':
case 'binary':
return asciiWrite(this, string, offset, length)
case 'base64':
// Warning: maxLength not taken into account in base64Write
return base64Write(this, string, offset, length)
case 'ucs2':
case 'ucs-2':
case 'utf16le':
case 'utf-16le':
return ucs2Write(this, string, offset, length)
default:
if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
encoding = ('' + encoding).toLowerCase()
loweredCase = true
}
}
}
Buffer.prototype.toJSON = function toJSON () {
return {
type: 'Buffer',
data: Array.prototype.slice.call(this._arr || this, 0)
}
}
function base64Slice (buf, start, end) {
if (start === 0 && end === buf.length) {
return base64.fromByteArray(buf)
} else {
return base64.fromByteArray(buf.slice(start, end))
}
}
function utf8Slice (buf, start, end) {
end = Math.min(buf.length, end)
const res = []
let i = start
while (i < end) {
const firstByte = buf[i]
let codePoint = null
let bytesPerSequence = (firstByte > 0xEF)
? 4
: (firstByte > 0xDF)
? 3
: (firstByte > 0xBF)
? 2
: 1
if (i + bytesPerSequence <= end) {
let secondByte, thirdByte, fourthByte, tempCodePoint
switch (bytesPerSequence) {
case 1:
if (firstByte < 0x80) {
codePoint = firstByte
}
break
case 2:
secondByte = buf[i + 1]
if ((secondByte & 0xC0) === 0x80) {
tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
if (tempCodePoint > 0x7F) {
codePoint = tempCodePoint
}
}
break
case 3:
secondByte = buf[i + 1]
thirdByte = buf[i + 2]
if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
codePoint = tempCodePoint
}
}
break
case 4:
secondByte = buf[i + 1]
thirdByte = buf[i + 2]
fourthByte = buf[i + 3]
if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
codePoint = tempCodePoint
}
}
}
}
if (codePoint === null) {
// we did not generate a valid codePoint so insert a
// replacement char (U+FFFD) and advance only 1 byte
codePoint = 0xFFFD
bytesPerSequence = 1
} else if (codePoint > 0xFFFF) {
// encode to utf16 (surrogate pair dance)
codePoint -= 0x10000
res.push(codePoint >>> 10 & 0x3FF | 0xD800)
codePoint = 0xDC00 | codePoint & 0x3FF
}
res.push(codePoint)
i += bytesPerSequence
}
return decodeCodePointsArray(res)
}
// Based on http://stackoverflow.com/a/22747272/680742, the browser with
// the lowest limit is Chrome, with 0x10000 args.
// We go 1 magnitude less, for safety
const MAX_ARGUMENTS_LENGTH = 0x1000
function decodeCodePointsArray (codePoints) {
const len = codePoints.length
if (len <= MAX_ARGUMENTS_LENGTH) {
return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
}
// Decode in chunks to avoid "call stack size exceeded".
let res = ''
let i = 0
while (i < len) {
res += String.fromCharCode.apply(
String,
codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
)
}
return res
}
function asciiSlice (buf, start, end) {
let ret = ''
end = Math.min(buf.length, end)
for (let i = start; i < end; ++i) {
ret += String.fromCharCode(buf[i] & 0x7F)
}
return ret
}
function latin1Slice (buf, start, end) {
let ret = ''
end = Math.min(buf.length, end)
for (let i = start; i < end; ++i) {
ret += String.fromCharCode(buf[i])
}
return ret
}
function hexSlice (buf, start, end) {
const len = buf.length
if (!start || start < 0) start = 0
if (!end || end < 0 || end > len) end = len
let out = ''
for (let i = start; i < end; ++i) {
out += hexSliceLookupTable[buf[i]]
}
return out
}
function utf16leSlice (buf, start, end) {
const bytes = buf.slice(start, end)
let res = ''
// If bytes.length is odd, the last 8 bits must be ignored (same as node.js)
for (let i = 0; i < bytes.length - 1; i += 2) {
res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
}
return res
}
Buffer.prototype.slice = function slice (start, end) {
const len = this.length
start = ~~start
end = end === undefined ? len : ~~end
if (start < 0) {
start += len
if (start < 0) start = 0
} else if (start > len) {
start = len
}
if (end < 0) {
end += len
if (end < 0) end = 0
} else if (end > len) {
end = len
}
if (end < start) end = start
const newBuf = this.subarray(start, end)
// Return an augmented `Uint8Array` instance
Object.setPrototypeOf(newBuf, Buffer.prototype)
return newBuf
}
/*
* Need to make sure that buffer isn't trying to write out of bounds.
*/
function checkOffset (offset, ext, length) {
if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
}
Buffer.prototype.readUintLE =
Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
offset = offset >>> 0
byteLength = byteLength >>> 0
if (!noAssert) checkOffset(offset, byteLength, this.length)
let val = this[offset]
let mul = 1
let i = 0
while (++i < byteLength && (mul *= 0x100)) {
val += this[offset + i] * mul
}
return val
}
Buffer.prototype.readUintBE =
Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
offset = offset >>> 0
byteLength = byteLength >>> 0
if (!noAssert) {
checkOffset(offset, byteLength, this.length)
}
let val = this[offset + --byteLength]
let mul = 1
while (byteLength > 0 && (mul *= 0x100)) {
val += this[offset + --byteLength] * mul
}
return val
}
Buffer.prototype.readUint8 =
Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
offset = offset >>> 0
if (!noAssert) checkOffset(offset, 1, this.length)
return this[offset]
}
Buffer.prototype.readUint16LE =
Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
offset = offset >>> 0
if (!noAssert) checkOffset(offset, 2, this.length)
return this[offset] | (this[offset + 1] << 8)
}
Buffer.prototype.readUint16BE =
Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
offset = offset >>> 0
if (!noAssert) checkOffset(offset, 2, this.length)
return (this[offset] << 8) | this[offset + 1]
}
Buffer.prototype.readUint32LE =
Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
offset = offset >>> 0
if (!noAssert) checkOffset(offset, 4, this.length)
return ((this[offset]) |
(this[offset + 1] << 8) |
(this[offset + 2] << 16)) +
(this[offset + 3] * 0x1000000)
}
Buffer.prototype.readUint32BE =
Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
offset = offset >>> 0
if (!noAssert) checkOffset(offset, 4, this.length)
return (this[offset] * 0x1000000) +
((this[offset + 1] << 16) |
(this[offset + 2] << 8) |
this[offset + 3])
}
Buffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {
offset = offset >>> 0
validateNumber(offset, 'offset')
const first = this[offset]
const last = this[offset + 7]
if (first === undefined || last === undefined) {
boundsError(offset, this.length - 8)
}
const lo = first +
this[++offset] * 2 ** 8 +
this[++offset] * 2 ** 16 +
this[++offset] * 2 ** 24
const hi = this[++offset] +
this[++offset] * 2 ** 8 +
this[++offset] * 2 ** 16 +
last * 2 ** 24
return BigInt(lo) + (BigInt(hi) << BigInt(32))
})
Buffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {
offset = offset >>> 0
validateNumber(offset, 'offset')
const first = this[offset]
const last = this[offset + 7]
if (first === undefined || last === undefined) {
boundsError(offset, this.length - 8)
}
const hi = first * 2 ** 24 +
this[++offset] * 2 ** 16 +
this[++offset] * 2 ** 8 +
this[++offset]
const lo = this[++offset] * 2 ** 24 +
this[++offset] * 2 ** 16 +
this[++offset] * 2 ** 8 +
last
return (BigInt(hi) << BigInt(32)) + BigInt(lo)
})
Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
offset = offset >>> 0
byteLength = byteLength >>> 0
if (!noAssert) checkOffset(offset, byteLength, this.length)
let val = this[offset]
let mul = 1
let i = 0
while (++i < byteLength && (mul *= 0x100)) {
val += this[offset + i] * mul
}
mul *= 0x80
if (val >= mul) val -= Math.pow(2, 8 * byteLength)
return val
}
Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
offset = offset >>> 0
byteLength = byteLength >>> 0
if (!noAssert) checkOffset(offset, byteLength, this.length)
let i = byteLength
let mul = 1
let val = this[offset + --i]
while (i > 0 && (mul *= 0x100)) {
val += this[offset + --i] * mul
}
mul *= 0x80
if (val >= mul) val -= Math.pow(2, 8 * byteLength)
return val
}
Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
offset = offset >>> 0
if (!noAssert) checkOffset(offset, 1, this.length)
if (!(this[offset] & 0x80)) return (this[offset])
return ((0xff - this[offset] + 1) * -1)
}
Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
offset = offset >>> 0
if (!noAssert) checkOffset(offset, 2, this.length)
const val = this[offset] | (this[offset + 1] << 8)
return (val & 0x8000) ? val | 0xFFFF0000 : val
}
Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
offset = offset >>> 0
if (!noAssert) checkOffset(offset, 2, this.length)
const val = this[offset + 1] | (this[offset] << 8)
return (val & 0x8000) ? val | 0xFFFF0000 : val
}
Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
offset = offset >>> 0
if (!noAssert) checkOffset(offset, 4, this.length)
return (this[offset]) |
(this[offset + 1] << 8) |
(this[offset + 2] << 16) |
(this[offset + 3] << 24)
}
Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
offset = offset >>> 0
if (!noAssert) checkOffset(offset, 4, this.length)
return (this[offset] << 24) |
(this[offset + 1] << 16) |
(this[offset + 2] << 8) |
(this[offset + 3])
}
Buffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {
offset = offset >>> 0
validateNumber(offset, 'offset')
const first = this[offset]
const last = this[offset + 7]
if (first === undefined || last === undefined) {
boundsError(offset, this.length - 8)
}
const val = this[offset + 4] +
this[offset + 5] * 2 ** 8 +
this[offset + 6] * 2 ** 16 +
(last << 24) // Overflow
return (BigInt(val) << BigInt(32)) +
BigInt(first +
this[++offset] * 2 ** 8 +
this[++offset] * 2 ** 16 +
this[++offset] * 2 ** 24)
})
Buffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {
offset = offset >>> 0
validateNumber(offset, 'offset')
const first = this[offset]
const last = this[offset + 7]
if (first === undefined || last === undefined) {
boundsError(offset, this.length - 8)
}
const val = (first << 24) + // Overflow
this[++offset] * 2 ** 16 +
this[++offset] * 2 ** 8 +
this[++offset]
return (BigInt(val) << BigInt(32)) +
BigInt(this[++offset] * 2 ** 24 +
this[++offset] * 2 ** 16 +
this[++offset] * 2 ** 8 +
last)
})
Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
offset = offset >>> 0
if (!noAssert) checkOffset(offset, 4, this.length)
return ieee754.read(this, offset, true, 23, 4)
}
Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
offset = offset >>> 0
if (!noAssert) checkOffset(offset, 4, this.length)
return ieee754.read(this, offset, false, 23, 4)
}
Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
offset = offset >>> 0
if (!noAssert) checkOffset(offset, 8, this.length)
return ieee754.read(this, offset, true, 52, 8)
}
Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
offset = offset >>> 0
if (!noAssert) checkOffset(offset, 8, this.length)
return ieee754.read(this, offset, false, 52, 8)
}
function checkInt (buf, value, offset, ext, max, min) {
if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
if (offset + ext > buf.length) throw new RangeError('Index out of range')
}
Buffer.prototype.writeUintLE =
Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
value = +value
offset = offset >>> 0
byteLength = byteLength >>> 0
if (!noAssert) {
const maxBytes = Math.pow(2, 8 * byteLength) - 1
checkInt(this, value, offset, byteLength, maxBytes, 0)
}
let mul = 1
let i = 0
this[offset] = value & 0xFF
while (++i < byteLength && (mul *= 0x100)) {
this[offset + i] = (value / mul) & 0xFF
}
return offset + byteLength
}
Buffer.prototype.writeUintBE =
Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
value = +value
offset = offset >>> 0
byteLength = byteLength >>> 0
if (!noAssert) {
const maxBytes = Math.pow(2, 8 * byteLength) - 1
checkInt(this, value, offset, byteLength, maxBytes, 0)
}
let i = byteLength - 1
let mul = 1
this[offset + i] = value & 0xFF
while (--i >= 0 && (mul *= 0x100)) {
this[offset + i] = (value / mul) & 0xFF
}
return offset + byteLength
}
Buffer.prototype.writeUint8 =
Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
value = +value
offset = offset >>> 0
if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
this[offset] = (value & 0xff)
return offset + 1
}
Buffer.prototype.writeUint16LE =
Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
value = +value
offset = offset >>> 0
if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
this[offset] = (value & 0xff)
this[offset + 1] = (value >>> 8)
return offset + 2
}
Buffer.prototype.writeUint16BE =
Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
value = +value
offset = offset >>> 0
if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
this[offset] = (value >>> 8)
this[offset + 1] = (value & 0xff)
return offset + 2
}
Buffer.prototype.writeUint32LE =
Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
value = +value
offset = offset >>> 0
if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
this[offset + 3] = (value >>> 24)
this[offset + 2] = (value >>> 16)
this[offset + 1] = (value >>> 8)
this[offset] = (value & 0xff)
return offset + 4
}
Buffer.prototype.writeUint32BE =
Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
value = +value
offset = offset >>> 0
if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
this[offset] = (value >>> 24)
this[offset + 1] = (value >>> 16)
this[offset + 2] = (value >>> 8)
this[offset + 3] = (value & 0xff)
return offset + 4
}
function wrtBigUInt64LE (buf, value, offset, min, max) {
checkIntBI(value, min, max, buf, offset, 7)
let lo = Number(value & BigInt(0xffffffff))
buf[offset++] = lo
lo = lo >> 8
buf[offset++] = lo
lo = lo >> 8
buf[offset++] = lo
lo = lo >> 8
buf[offset++] = lo
let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))
buf[offset++] = hi
hi = hi >> 8
buf[offset++] = hi
hi = hi >> 8
buf[offset++] = hi
hi = hi >> 8
buf[offset++] = hi
return offset
}
function wrtBigUInt64BE (buf, value, offset, min, max) {
checkIntBI(value, min, max, buf, offset, 7)
let lo = Number(value & BigInt(0xffffffff))
buf[offset + 7] = lo
lo = lo >> 8
buf[offset + 6] = lo
lo = lo >> 8
buf[offset + 5] = lo
lo = lo >> 8
buf[offset + 4] = lo
let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))
buf[offset + 3] = hi
hi = hi >> 8
buf[offset + 2] = hi
hi = hi >> 8
buf[offset + 1] = hi
hi = hi >> 8
buf[offset] = hi
return offset + 8
}
Buffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {
return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))
})
Buffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {
return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))
})
Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
value = +value
offset = offset >>> 0
if (!noAssert) {
const limit = Math.pow(2, (8 * byteLength) - 1)
checkInt(this, value, offset, byteLength, limit - 1, -limit)
}
let i = 0
let mul = 1
let sub = 0
this[offset] = value & 0xFF
while (++i < byteLength && (mul *= 0x100)) {
if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
sub = 1
}
this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
}
return offset + byteLength
}
Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
value = +value
offset = offset >>> 0
if (!noAssert) {
const limit = Math.pow(2, (8 * byteLength) - 1)
checkInt(this, value, offset, byteLength, limit - 1, -limit)
}
let i = byteLength - 1
let mul = 1
let sub = 0
this[offset + i] = value & 0xFF
while (--i >= 0 && (mul *= 0x100)) {
if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
sub = 1
}
this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
}
return offset + byteLength
}
Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
value = +value
offset = offset >>> 0
if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
if (value < 0) value = 0xff + value + 1
this[offset] = (value & 0xff)
return offset + 1
}
Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
value = +value
offset = offset >>> 0
if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
this[offset] = (value & 0xff)
this[offset + 1] = (value >>> 8)
return offset + 2
}
Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
value = +value
offset = offset >>> 0
if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
this[offset] = (value >>> 8)
this[offset + 1] = (value & 0xff)
return offset + 2
}
Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
value = +value
offset = offset >>> 0
if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
this[offset] = (value & 0xff)
this[offset + 1] = (value >>> 8)
this[offset + 2] = (value >>> 16)
this[offset + 3] = (value >>> 24)
return offset + 4
}
Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
value = +value
offset = offset >>> 0
if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
if (value < 0) value = 0xffffffff + value + 1
this[offset] = (value >>> 24)
this[offset + 1] = (value >>> 16)
this[offset + 2] = (value >>> 8)
this[offset + 3] = (value & 0xff)
return offset + 4
}
Buffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {
return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))
})
Buffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {
return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))
})
function checkIEEE754 (buf, value, offset, ext, max, min) {
if (offset + ext > buf.length) throw new RangeError('Index out of range')
if (offset < 0) throw new RangeError('Index out of range')
}
function writeFloat (buf, value, offset, littleEndian, noAssert) {
value = +value
offset = offset >>> 0
if (!noAssert) {
checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
}
ieee754.write(buf, value, offset, littleEndian, 23, 4)
return offset + 4
}
Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
return writeFloat(this, value, offset, true, noAssert)
}
Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
return writeFloat(this, value, offset, false, noAssert)
}
function writeDouble (buf, value, offset, littleEndian, noAssert) {
value = +value
offset = offset >>> 0
if (!noAssert) {
checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
}
ieee754.write(buf, value, offset, littleEndian, 52, 8)
return offset + 8
}
Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
return writeDouble(this, value, offset, true, noAssert)
}
Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
return writeDouble(this, value, offset, false, noAssert)
}
// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
Buffer.prototype.copy = function copy (target, targetStart, start, end) {
if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')
if (!start) start = 0
if (!end && end !== 0) end = this.length
if (targetStart >= target.length) targetStart = target.length
if (!targetStart) targetStart = 0
if (end > 0 && end < start) end = start
// Copy 0 bytes; we're done
if (end === start) return 0
if (target.length === 0 || this.length === 0) return 0
// Fatal error conditions
if (targetStart < 0) {
throw new RangeError('targetStart out of bounds')
}
if (start < 0 || start >= this.length) throw new RangeError('Index out of range')
if (end < 0) throw new RangeError('sourceEnd out of bounds')
// Are we oob?
if (end > this.length) end = this.length
if (target.length - targetStart < end - start) {
end = target.length - targetStart + start
}
const len = end - start
if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {
// Use built-in when available, missing from IE11
this.copyWithin(targetStart, start, end)
} else {
Uint8Array.prototype.set.call(
target,
this.subarray(start, end),
targetStart
)
}
return len
}
// Usage:
// buffer.fill(number[, offset[, end]])
// buffer.fill(buffer[, offset[, end]])
// buffer.fill(string[, offset[, end]][, encoding])
Buffer.prototype.fill = function fill (val, start, end, encoding) {
// Handle string cases:
if (typeof val === 'string') {
if (typeof start === 'string') {
encoding = start
start = 0
end = this.length
} else if (typeof end === 'string') {
encoding = end
end = this.length
}
if (encoding !== undefined && typeof encoding !== 'string') {
throw new TypeError('encoding must be a string')
}
if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
throw new TypeError('Unknown encoding: ' + encoding)
}
if (val.length === 1) {
const code = val.charCodeAt(0)
if ((encoding === 'utf8' && code < 128) ||
encoding === 'latin1') {
// Fast path: If `val` fits into a single byte, use that numeric value.
val = code
}
}
} else if (typeof val === 'number') {
val = val & 255
} else if (typeof val === 'boolean') {
val = Number(val)
}
// Invalid ranges are not set to a default, so can range check early.
if (start < 0 || this.length < start || this.length < end) {
throw new RangeError('Out of range index')
}
if (end <= start) {
return this
}
start = start >>> 0
end = end === undefined ? this.length : end >>> 0
if (!val) val = 0
let i
if (typeof val === 'number') {
for (i = start; i < end; ++i) {
this[i] = val
}
} else {
const bytes = Buffer.isBuffer(val)
? val
: Buffer.from(val, encoding)
const len = bytes.length
if (len === 0) {
throw new TypeError('The value "' + val +
'" is invalid for argument "value"')
}
for (i = 0; i < end - start; ++i) {
this[i + start] = bytes[i % len]
}
}
return this
}
// CUSTOM ERRORS
// =============
// Simplified versions from Node, changed for Buffer-only usage
const errors = {}
function E (sym, getMessage, Base) {
errors[sym] = class NodeError extends Base {
constructor () {
super()
Object.defineProperty(this, 'message', {
value: getMessage.apply(this, arguments),
writable: true,
configurable: true
})
// Add the error code to the name to include it in the stack trace.
this.name = `${this.name} [${sym}]`
// Access the stack to generate the error message including the error code
// from the name.
this.stack // eslint-disable-line no-unused-expressions
// Reset the name to the actual name.
delete this.name
}
get code () {
return sym
}
set code (value) {
Object.defineProperty(this, 'code', {
configurable: true,
enumerable: true,
value,
writable: true
})
}
toString () {
return `${this.name} [${sym}]: ${this.message}`
}
}
}
E('ERR_BUFFER_OUT_OF_BOUNDS',
function (name) {
if (name) {
return `${name} is outside of buffer bounds`
}
return 'Attempt to access memory outside buffer bounds'
}, RangeError)
E('ERR_INVALID_ARG_TYPE',
function (name, actual) {
return `The "${name}" argument must be of type number. Received type ${typeof actual}`
}, TypeError)
E('ERR_OUT_OF_RANGE',
function (str, range, input) {
let msg = `The value of "${str}" is out of range.`
let received = input
if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {
received = addNumericalSeparator(String(input))
} else if (typeof input === 'bigint') {
received = String(input)
if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {
received = addNumericalSeparator(received)
}
received += 'n'
}
msg += ` It must be ${range}. Received ${received}`
return msg
}, RangeError)
function addNumericalSeparator (val) {
let res = ''
let i = val.length
const start = val[0] === '-' ? 1 : 0
for (; i >= start + 4; i -= 3) {
res = `_${val.slice(i - 3, i)}${res}`
}
return `${val.slice(0, i)}${res}`
}
// CHECK FUNCTIONS
// ===============
function checkBounds (buf, offset, byteLength) {
validateNumber(offset, 'offset')
if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {
boundsError(offset, buf.length - (byteLength + 1))
}
}
function checkIntBI (value, min, max, buf, offset, byteLength) {
if (value > max || value < min) {
const n = typeof min === 'bigint' ? 'n' : ''
let range
if (byteLength > 3) {
if (min === 0 || min === BigInt(0)) {
range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`
} else {
range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +
`${(byteLength + 1) * 8 - 1}${n}`
}
} else {
range = `>= ${min}${n} and <= ${max}${n}`
}
throw new errors.ERR_OUT_OF_RANGE('value', range, value)
}
checkBounds(buf, offset, byteLength)
}
function validateNumber (value, name) {
if (typeof value !== 'number') {
throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)
}
}
function boundsError (value, length, type) {
if (Math.floor(value) !== value) {
validateNumber(value, type)
throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)
}
if (length < 0) {
throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()
}
throw new errors.ERR_OUT_OF_RANGE(type || 'offset',
`>= ${type ? 1 : 0} and <= ${length}`,
value)
}
// HELPER FUNCTIONS
// ================
const INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
function base64clean (str) {
// Node takes equal signs as end of the Base64 encoding
str = str.split('=')[0]
// Node strips out invalid characters like \n and \t from the string, base64-js does not
str = str.trim().replace(INVALID_BASE64_RE, '')
// Node converts strings with length < 2 to ''
if (str.length < 2) return ''
// Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
while (str.length % 4 !== 0) {
str = str + '='
}
return str
}
function utf8ToBytes (string, units) {
units = units || Infinity
let codePoint
const length = string.length
let leadSurrogate = null
const bytes = []
for (let i = 0; i < length; ++i) {
codePoint = string.charCodeAt(i)
// is surrogate component
if (codePoint > 0xD7FF && codePoint < 0xE000) {
// last char was a lead
if (!leadSurrogate) {
// no lead yet
if (codePoint > 0xDBFF) {
// unexpected trail
if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
continue
} else if (i + 1 === length) {
// unpaired lead
if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
continue
}
// valid lead
leadSurrogate = codePoint
continue
}
// 2 leads in a row
if (codePoint < 0xDC00) {
if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
leadSurrogate = codePoint
continue
}
// valid surrogate pair
codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
} else if (leadSurrogate) {
// valid bmp char, but last char was a lead
if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
}
leadSurrogate = null
// encode utf8
if (codePoint < 0x80) {
if ((units -= 1) < 0) break
bytes.push(codePoint)
} else if (codePoint < 0x800) {
if ((units -= 2) < 0) break
bytes.push(
codePoint >> 0x6 | 0xC0,
codePoint & 0x3F | 0x80
)
} else if (codePoint < 0x10000) {
if ((units -= 3) < 0) break
bytes.push(
codePoint >> 0xC | 0xE0,
codePoint >> 0x6 & 0x3F | 0x80,
codePoint & 0x3F | 0x80
)
} else if (codePoint < 0x110000) {
if ((units -= 4) < 0) break
bytes.push(
codePoint >> 0x12 | 0xF0,
codePoint >> 0xC & 0x3F | 0x80,
codePoint >> 0x6 & 0x3F | 0x80,
codePoint & 0x3F | 0x80
)
} else {
throw new Error('Invalid code point')
}
}
return bytes
}
function asciiToBytes (str) {
const byteArray = []
for (let i = 0; i < str.length; ++i) {
// Node's code seems to be doing this and not & 0x7F..
byteArray.push(str.charCodeAt(i) & 0xFF)
}
return byteArray
}
function utf16leToBytes (str, units) {
let c, hi, lo
const byteArray = []
for (let i = 0; i < str.length; ++i) {
if ((units -= 2) < 0) break
c = str.charCodeAt(i)
hi = c >> 8
lo = c % 256
byteArray.push(lo)
byteArray.push(hi)
}
return byteArray
}
function base64ToBytes (str) {
return base64.toByteArray(base64clean(str))
}
function blitBuffer (src, dst, offset, length) {
let i
for (i = 0; i < length; ++i) {
if ((i + offset >= dst.length) || (i >= src.length)) break
dst[i + offset] = src[i]
}
return i
}
// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass
// the `instanceof` check but they should be treated as of that type.
// See: https://github.com/feross/buffer/issues/166
function isInstance (obj, type) {
return obj instanceof type ||
(obj != null && obj.constructor != null && obj.constructor.name != null &&
obj.constructor.name === type.name)
}
function numberIsNaN (obj) {
// For IE11 support
return obj !== obj // eslint-disable-line no-self-compare
}
// Create lookup table for `toString('hex')`
// See: https://github.com/feross/buffer/issues/219
const hexSliceLookupTable = (function () {
const alphabet = '0123456789abcdef'
const table = new Array(256)
for (let i = 0; i < 16; ++i) {
const i16 = i * 16
for (let j = 0; j < 16; ++j) {
table[i16 + j] = alphabet[i] + alphabet[j]
}
}
return table
})()
// Return not function with Error if BigInt not supported
function defineBigIntMethod (fn) {
return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn
}
function BufferBigIntNotDefined () {
throw new Error('BigInt not supported')
}
/***/ }),
/***/ 8075:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var GetIntrinsic = __webpack_require__(453);
var callBind = __webpack_require__(487);
var $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));
module.exports = function callBoundIntrinsic(name, allowMissing) {
var intrinsic = GetIntrinsic(name, !!allowMissing);
if (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {
return callBind(intrinsic);
}
return intrinsic;
};
/***/ }),
/***/ 487:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var bind = __webpack_require__(6743);
var GetIntrinsic = __webpack_require__(453);
var setFunctionLength = __webpack_require__(6897);
var $TypeError = __webpack_require__(9675);
var $apply = GetIntrinsic('%Function.prototype.apply%');
var $call = GetIntrinsic('%Function.prototype.call%');
var $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);
var $defineProperty = __webpack_require__(655);
var $max = GetIntrinsic('%Math.max%');
module.exports = function callBind(originalFunction) {
if (typeof originalFunction !== 'function') {
throw new $TypeError('a function is required');
}
var func = $reflectApply(bind, $call, arguments);
return setFunctionLength(
func,
1 + $max(0, originalFunction.length - (arguments.length - 1)),
true
);
};
var applyBind = function applyBind() {
return $reflectApply(bind, $apply, arguments);
};
if ($defineProperty) {
$defineProperty(module.exports, 'apply', { value: applyBind });
} else {
module.exports.apply = applyBind;
}
/***/ }),
/***/ 6168:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var Buffer = (__webpack_require__(2861).Buffer)
var Transform = (__webpack_require__(8310).Transform)
var StringDecoder = (__webpack_require__(3141)/* .StringDecoder */ .I)
var inherits = __webpack_require__(6698)
function CipherBase (hashMode) {
Transform.call(this)
this.hashMode = typeof hashMode === 'string'
if (this.hashMode) {
this[hashMode] = this._finalOrDigest
} else {
this.final = this._finalOrDigest
}
if (this._final) {
this.__final = this._final
this._final = null
}
this._decoder = null
this._encoding = null
}
inherits(CipherBase, Transform)
CipherBase.prototype.update = function (data, inputEnc, outputEnc) {
if (typeof data === 'string') {
data = Buffer.from(data, inputEnc)
}
var outData = this._update(data)
if (this.hashMode) return this
if (outputEnc) {
outData = this._toString(outData, outputEnc)
}
return outData
}
CipherBase.prototype.setAutoPadding = function () {}
CipherBase.prototype.getAuthTag = function () {
throw new Error('trying to get auth tag in unsupported state')
}
CipherBase.prototype.setAuthTag = function () {
throw new Error('trying to set auth tag in unsupported state')
}
CipherBase.prototype.setAAD = function () {
throw new Error('trying to set aad in unsupported state')
}
CipherBase.prototype._transform = function (data, _, next) {
var err
try {
if (this.hashMode) {
this._update(data)
} else {
this.push(this._update(data))
}
} catch (e) {
err = e
} finally {
next(err)
}
}
CipherBase.prototype._flush = function (done) {
var err
try {
this.push(this.__final())
} catch (e) {
err = e
}
done(err)
}
CipherBase.prototype._finalOrDigest = function (outputEnc) {
var outData = this.__final() || Buffer.alloc(0)
if (outputEnc) {
outData = this._toString(outData, outputEnc, true)
}
return outData
}
CipherBase.prototype._toString = function (value, enc, fin) {
if (!this._decoder) {
this._decoder = new StringDecoder(enc)
this._encoding = enc
}
if (this._encoding !== enc) throw new Error('can\'t switch encodings')
var out = this._decoder.write(value)
if (fin) {
out += this._decoder.end()
}
return out
}
module.exports = CipherBase
/***/ }),
/***/ 5622:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
// Copyright Joyent, Inc. and other Node contributors.
//
// 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.
// NOTE: These type checking functions intentionally don't use `instanceof`
// because it is fragile and can be easily faked with `Object.create()`.
function isArray(arg) {
if (Array.isArray) {
return Array.isArray(arg);
}
return objectToString(arg) === '[object Array]';
}
exports.isArray = isArray;
function isBoolean(arg) {
return typeof arg === 'boolean';
}
exports.isBoolean = isBoolean;
function isNull(arg) {
return arg === null;
}
exports.isNull = isNull;
function isNullOrUndefined(arg) {
return arg == null;
}
exports.isNullOrUndefined = isNullOrUndefined;
function isNumber(arg) {
return typeof arg === 'number';
}
exports.isNumber = isNumber;
function isString(arg) {
return typeof arg === 'string';
}
exports.isString = isString;
function isSymbol(arg) {
return typeof arg === 'symbol';
}
exports.isSymbol = isSymbol;
function isUndefined(arg) {
return arg === void 0;
}
exports.isUndefined = isUndefined;
function isRegExp(re) {
return objectToString(re) === '[object RegExp]';
}
exports.isRegExp = isRegExp;
function isObject(arg) {
return typeof arg === 'object' && arg !== null;
}
exports.isObject = isObject;
function isDate(d) {
return objectToString(d) === '[object Date]';
}
exports.isDate = isDate;
function isError(e) {
return (objectToString(e) === '[object Error]' || e instanceof Error);
}
exports.isError = isError;
function isFunction(arg) {
return typeof arg === 'function';
}
exports.isFunction = isFunction;
function isPrimitive(arg) {
return arg === null ||
typeof arg === 'boolean' ||
typeof arg === 'number' ||
typeof arg === 'string' ||
typeof arg === 'symbol' || // ES6 symbol
typeof arg === 'undefined';
}
exports.isPrimitive = isPrimitive;
exports.isBuffer = __webpack_require__(8287).Buffer.isBuffer;
function objectToString(o) {
return Object.prototype.toString.call(o);
}
/***/ }),
/***/ 1324:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
/* provided dependency */ var Buffer = __webpack_require__(8287)["Buffer"];
var elliptic = __webpack_require__(6729)
var BN = __webpack_require__(2801)
module.exports = function createECDH (curve) {
return new ECDH(curve)
}
var aliases = {
secp256k1: {
name: 'secp256k1',
byteLength: 32
},
secp224r1: {
name: 'p224',
byteLength: 28
},
prime256v1: {
name: 'p256',
byteLength: 32
},
prime192v1: {
name: 'p192',
byteLength: 24
},
ed25519: {
name: 'ed25519',
byteLength: 32
},
secp384r1: {
name: 'p384',
byteLength: 48
},
secp521r1: {
name: 'p521',
byteLength: 66
}
}
aliases.p224 = aliases.secp224r1
aliases.p256 = aliases.secp256r1 = aliases.prime256v1
aliases.p192 = aliases.secp192r1 = aliases.prime192v1
aliases.p384 = aliases.secp384r1
aliases.p521 = aliases.secp521r1
function ECDH (curve) {
this.curveType = aliases[curve]
if (!this.curveType) {
this.curveType = {
name: curve
}
}
this.curve = new elliptic.ec(this.curveType.name) // eslint-disable-line new-cap
this.keys = void 0
}
ECDH.prototype.generateKeys = function (enc, format) {
this.keys = this.curve.genKeyPair()
return this.getPublicKey(enc, format)
}
ECDH.prototype.computeSecret = function (other, inenc, enc) {
inenc = inenc || 'utf8'
if (!Buffer.isBuffer(other)) {
other = new Buffer(other, inenc)
}
var otherPub = this.curve.keyFromPublic(other).getPublic()
var out = otherPub.mul(this.keys.getPrivate()).getX()
return formatReturnValue(out, enc, this.curveType.byteLength)
}
ECDH.prototype.getPublicKey = function (enc, format) {
var key = this.keys.getPublic(format === 'compressed', true)
if (format === 'hybrid') {
if (key[key.length - 1] % 2) {
key[0] = 7
} else {
key[0] = 6
}
}
return formatReturnValue(key, enc)
}
ECDH.prototype.getPrivateKey = function (enc) {
return formatReturnValue(this.keys.getPrivate(), enc)
}
ECDH.prototype.setPublicKey = function (pub, enc) {
enc = enc || 'utf8'
if (!Buffer.isBuffer(pub)) {
pub = new Buffer(pub, enc)
}
this.keys._importPublic(pub)
return this
}
ECDH.prototype.setPrivateKey = function (priv, enc) {
enc = enc || 'utf8'
if (!Buffer.isBuffer(priv)) {
priv = new Buffer(priv, enc)
}
var _priv = new BN(priv)
_priv = _priv.toString(16)
this.keys = this.curve.genKeyPair()
this.keys._importPrivate(_priv)
return this
}
function formatReturnValue (bn, enc, len) {
if (!Array.isArray(bn)) {
bn = bn.toArray()
}
var buf = new Buffer(bn)
if (len && buf.length < len) {
var zeros = new Buffer(len - buf.length)
zeros.fill(0)
buf = Buffer.concat([zeros, buf])
}
if (!enc) {
return buf
} else {
return buf.toString(enc)
}
}
/***/ }),
/***/ 2801:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
/* module decorator */ module = __webpack_require__.nmd(module);
(function (module, exports) {
'use strict';
// Utils
function assert (val, msg) {
if (!val) throw new Error(msg || 'Assertion failed');
}
// Could use `inherits` module, but don't want to move from single file
// architecture yet.
function inherits (ctor, superCtor) {
ctor.super_ = superCtor;
var TempCtor = function () {};
TempCtor.prototype = superCtor.prototype;
ctor.prototype = new TempCtor();
ctor.prototype.constructor = ctor;
}
// BN
function BN (number, base, endian) {
if (BN.isBN(number)) {
return number;
}
this.negative = 0;
this.words = null;
this.length = 0;
// Reduction context
this.red = null;
if (number !== null) {
if (base === 'le' || base === 'be') {
endian = base;
base = 10;
}
this._init(number || 0, base || 10, endian || 'be');
}
}
if (typeof module === 'object') {
module.exports = BN;
} else {
exports.BN = BN;
}
BN.BN = BN;
BN.wordSize = 26;
var Buffer;
try {
if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {
Buffer = window.Buffer;
} else {
Buffer = (__webpack_require__(7965).Buffer);
}
} catch (e) {
}
BN.isBN = function isBN (num) {
if (num instanceof BN) {
return true;
}
return num !== null && typeof num === 'object' &&
num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);
};
BN.max = function max (left, right) {
if (left.cmp(right) > 0) return left;
return right;
};
BN.min = function min (left, right) {
if (left.cmp(right) < 0) return left;
return right;
};
BN.prototype._init = function init (number, base, endian) {
if (typeof number === 'number') {
return this._initNumber(number, base, endian);
}
if (typeof number === 'object') {
return this._initArray(number, base, endian);
}
if (base === 'hex') {
base = 16;
}
assert(base === (base | 0) && base >= 2 && base <= 36);
number = number.toString().replace(/\s+/g, '');
var start = 0;
if (number[0] === '-') {
start++;
this.negative = 1;
}
if (start < number.length) {
if (base === 16) {
this._parseHex(number, start, endian);
} else {
this._parseBase(number, base, start);
if (endian === 'le') {
this._initArray(this.toArray(), base, endian);
}
}
}
};
BN.prototype._initNumber = function _initNumber (number, base, endian) {
if (number < 0) {
this.negative = 1;
number = -number;
}
if (number < 0x4000000) {
this.words = [ number & 0x3ffffff ];
this.length = 1;
} else if (number < 0x10000000000000) {
this.words = [
number & 0x3ffffff,
(number / 0x4000000) & 0x3ffffff
];
this.length = 2;
} else {
assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)
this.words = [
number & 0x3ffffff,
(number / 0x4000000) & 0x3ffffff,
1
];
this.length = 3;
}
if (endian !== 'le') return;
// Reverse the bytes
this._initArray(this.toArray(), base, endian);
};
BN.prototype._initArray = function _initArray (number, base, endian) {
// Perhaps a Uint8Array
assert(typeof number.length === 'number');
if (number.length <= 0) {
this.words = [ 0 ];
this.length = 1;
return this;
}
this.length = Math.ceil(number.length / 3);
this.words = new Array(this.length);
for (var i = 0; i < this.length; i++) {
this.words[i] = 0;
}
var j, w;
var off = 0;
if (endian === 'be') {
for (i = number.length - 1, j = 0; i >= 0; i -= 3) {
w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);
this.words[j] |= (w << off) & 0x3ffffff;
this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
off += 24;
if (off >= 26) {
off -= 26;
j++;
}
}
} else if (endian === 'le') {
for (i = 0, j = 0; i < number.length; i += 3) {
w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);
this.words[j] |= (w << off) & 0x3ffffff;
this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
off += 24;
if (off >= 26) {
off -= 26;
j++;
}
}
}
return this.strip();
};
function parseHex4Bits (string, index) {
var c = string.charCodeAt(index);
// 'A' - 'F'
if (c >= 65 && c <= 70) {
return c - 55;
// 'a' - 'f'
} else if (c >= 97 && c <= 102) {
return c - 87;
// '0' - '9'
} else {
return (c - 48) & 0xf;
}
}
function parseHexByte (string, lowerBound, index) {
var r = parseHex4Bits(string, index);
if (index - 1 >= lowerBound) {
r |= parseHex4Bits(string, index - 1) << 4;
}
return r;
}
BN.prototype._parseHex = function _parseHex (number, start, endian) {
// Create possibly bigger array to ensure that it fits the number
this.length = Math.ceil((number.length - start) / 6);
this.words = new Array(this.length);
for (var i = 0; i < this.length; i++) {
this.words[i] = 0;
}
// 24-bits chunks
var off = 0;
var j = 0;
var w;
if (endian === 'be') {
for (i = number.length - 1; i >= start; i -= 2) {
w = parseHexByte(number, start, i) << off;
this.words[j] |= w & 0x3ffffff;
if (off >= 18) {
off -= 18;
j += 1;
this.words[j] |= w >>> 26;
} else {
off += 8;
}
}
} else {
var parseLength = number.length - start;
for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {
w = parseHexByte(number, start, i) << off;
this.words[j] |= w & 0x3ffffff;
if (off >= 18) {
off -= 18;
j += 1;
this.words[j] |= w >>> 26;
} else {
off += 8;
}
}
}
this.strip();
};
function parseBase (str, start, end, mul) {
var r = 0;
var len = Math.min(str.length, end);
for (var i = start; i < len; i++) {
var c = str.charCodeAt(i) - 48;
r *= mul;
// 'a'
if (c >= 49) {
r += c - 49 + 0xa;
// 'A'
} else if (c >= 17) {
r += c - 17 + 0xa;
// '0' - '9'
} else {
r += c;
}
}
return r;
}
BN.prototype._parseBase = function _parseBase (number, base, start) {
// Initialize as zero
this.words = [ 0 ];
this.length = 1;
// Find length of limb in base
for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {
limbLen++;
}
limbLen--;
limbPow = (limbPow / base) | 0;
var total = number.length - start;
var mod = total % limbLen;
var end = Math.min(total, total - mod) + start;
var word = 0;
for (var i = start; i < end; i += limbLen) {
word = parseBase(number, i, i + limbLen, base);
this.imuln(limbPow);
if (this.words[0] + word < 0x4000000) {
this.words[0] += word;
} else {
this._iaddn(word);
}
}
if (mod !== 0) {
var pow = 1;
word = parseBase(number, i, number.length, base);
for (i = 0; i < mod; i++) {
pow *= base;
}
this.imuln(pow);
if (this.words[0] + word < 0x4000000) {
this.words[0] += word;
} else {
this._iaddn(word);
}
}
this.strip();
};
BN.prototype.copy = function copy (dest) {
dest.words = new Array(this.length);
for (var i = 0; i < this.length; i++) {
dest.words[i] = this.words[i];
}
dest.length = this.length;
dest.negative = this.negative;
dest.red = this.red;
};
BN.prototype.clone = function clone () {
var r = new BN(null);
this.copy(r);
return r;
};
BN.prototype._expand = function _expand (size) {
while (this.length < size) {
this.words[this.length++] = 0;
}
return this;
};
// Remove leading `0` from `this`
BN.prototype.strip = function strip () {
while (this.length > 1 && this.words[this.length - 1] === 0) {
this.length--;
}
return this._normSign();
};
BN.prototype._normSign = function _normSign () {
// -0 = 0
if (this.length === 1 && this.words[0] === 0) {
this.negative = 0;
}
return this;
};
BN.prototype.inspect = function inspect () {
return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';
};
/*
var zeros = [];
var groupSizes = [];
var groupBases = [];
var s = '';
var i = -1;
while (++i < BN.wordSize) {
zeros[i] = s;
s += '0';
}
groupSizes[0] = 0;
groupSizes[1] = 0;
groupBases[0] = 0;
groupBases[1] = 0;
var base = 2 - 1;
while (++base < 36 + 1) {
var groupSize = 0;
var groupBase = 1;
while (groupBase < (1 << BN.wordSize) / base) {
groupBase *= base;
groupSize += 1;
}
groupSizes[base] = groupSize;
groupBases[base] = groupBase;
}
*/
var zeros = [
'',
'0',
'00',
'000',
'0000',
'00000',
'000000',
'0000000',
'00000000',
'000000000',
'0000000000',
'00000000000',
'000000000000',
'0000000000000',
'00000000000000',
'000000000000000',
'0000000000000000',
'00000000000000000',
'000000000000000000',
'0000000000000000000',
'00000000000000000000',
'000000000000000000000',
'0000000000000000000000',
'00000000000000000000000',
'000000000000000000000000',
'0000000000000000000000000'
];
var groupSizes = [
0, 0,
25, 16, 12, 11, 10, 9, 8,
8, 7, 7, 7, 7, 6, 6,
6, 6, 6, 6, 6, 5, 5,
5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5
];
var groupBases = [
0, 0,
33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,
43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,
16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,
6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,
24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176
];
BN.prototype.toString = function toString (base, padding) {
base = base || 10;
padding = padding | 0 || 1;
var out;
if (base === 16 || base === 'hex') {
out = '';
var off = 0;
var carry = 0;
for (var i = 0; i < this.length; i++) {
var w = this.words[i];
var word = (((w << off) | carry) & 0xffffff).toString(16);
carry = (w >>> (24 - off)) & 0xffffff;
if (carry !== 0 || i !== this.length - 1) {
out = zeros[6 - word.length] + word + out;
} else {
out = word + out;
}
off += 2;
if (off >= 26) {
off -= 26;
i--;
}
}
if (carry !== 0) {
out = carry.toString(16) + out;
}
while (out.length % padding !== 0) {
out = '0' + out;
}
if (this.negative !== 0) {
out = '-' + out;
}
return out;
}
if (base === (base | 0) && base >= 2 && base <= 36) {
// var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));
var groupSize = groupSizes[base];
// var groupBase = Math.pow(base, groupSize);
var groupBase = groupBases[base];
out = '';
var c = this.clone();
c.negative = 0;
while (!c.isZero()) {
var r = c.modn(groupBase).toString(base);
c = c.idivn(groupBase);
if (!c.isZero()) {
out = zeros[groupSize - r.length] + r + out;
} else {
out = r + out;
}
}
if (this.isZero()) {
out = '0' + out;
}
while (out.length % padding !== 0) {
out = '0' + out;
}
if (this.negative !== 0) {
out = '-' + out;
}
return out;
}
assert(false, 'Base should be between 2 and 36');
};
BN.prototype.toNumber = function toNumber () {
var ret = this.words[0];
if (this.length === 2) {
ret += this.words[1] * 0x4000000;
} else if (this.length === 3 && this.words[2] === 0x01) {
// NOTE: at this stage it is known that the top bit is set
ret += 0x10000000000000 + (this.words[1] * 0x4000000);
} else if (this.length > 2) {
assert(false, 'Number can only safely store up to 53 bits');
}
return (this.negative !== 0) ? -ret : ret;
};
BN.prototype.toJSON = function toJSON () {
return this.toString(16);
};
BN.prototype.toBuffer = function toBuffer (endian, length) {
assert(typeof Buffer !== 'undefined');
return this.toArrayLike(Buffer, endian, length);
};
BN.prototype.toArray = function toArray (endian, length) {
return this.toArrayLike(Array, endian, length);
};
BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {
var byteLength = this.byteLength();
var reqLength = length || Math.max(1, byteLength);
assert(byteLength <= reqLength, 'byte array longer than desired length');
assert(reqLength > 0, 'Requested array length <= 0');
this.strip();
var littleEndian = endian === 'le';
var res = new ArrayType(reqLength);
var b, i;
var q = this.clone();
if (!littleEndian) {
// Assume big-endian
for (i = 0; i < reqLength - byteLength; i++) {
res[i] = 0;
}
for (i = 0; !q.isZero(); i++) {
b = q.andln(0xff);
q.iushrn(8);
res[reqLength - i - 1] = b;
}
} else {
for (i = 0; !q.isZero(); i++) {
b = q.andln(0xff);
q.iushrn(8);
res[i] = b;
}
for (; i < reqLength; i++) {
res[i] = 0;
}
}
return res;
};
if (Math.clz32) {
BN.prototype._countBits = function _countBits (w) {
return 32 - Math.clz32(w);
};
} else {
BN.prototype._countBits = function _countBits (w) {
var t = w;
var r = 0;
if (t >= 0x1000) {
r += 13;
t >>>= 13;
}
if (t >= 0x40) {
r += 7;
t >>>= 7;
}
if (t >= 0x8) {
r += 4;
t >>>= 4;
}
if (t >= 0x02) {
r += 2;
t >>>= 2;
}
return r + t;
};
}
BN.prototype._zeroBits = function _zeroBits (w) {
// Short-cut
if (w === 0) return 26;
var t = w;
var r = 0;
if ((t & 0x1fff) === 0) {
r += 13;
t >>>= 13;
}
if ((t & 0x7f) === 0) {
r += 7;
t >>>= 7;
}
if ((t & 0xf) === 0) {
r += 4;
t >>>= 4;
}
if ((t & 0x3) === 0) {
r += 2;
t >>>= 2;
}
if ((t & 0x1) === 0) {
r++;
}
return r;
};
// Return number of used bits in a BN
BN.prototype.bitLength = function bitLength () {
var w = this.words[this.length - 1];
var hi = this._countBits(w);
return (this.length - 1) * 26 + hi;
};
function toBitArray (num) {
var w = new Array(num.bitLength());
for (var bit = 0; bit < w.length; bit++) {
var off = (bit / 26) | 0;
var wbit = bit % 26;
w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;
}
return w;
}
// Number of trailing zero bits
BN.prototype.zeroBits = function zeroBits () {
if (this.isZero()) return 0;
var r = 0;
for (var i = 0; i < this.length; i++) {
var b = this._zeroBits(this.words[i]);
r += b;
if (b !== 26) break;
}
return r;
};
BN.prototype.byteLength = function byteLength () {
return Math.ceil(this.bitLength() / 8);
};
BN.prototype.toTwos = function toTwos (width) {
if (this.negative !== 0) {
return this.abs().inotn(width).iaddn(1);
}
return this.clone();
};
BN.prototype.fromTwos = function fromTwos (width) {
if (this.testn(width - 1)) {
return this.notn(width).iaddn(1).ineg();
}
return this.clone();
};
BN.prototype.isNeg = function isNeg () {
return this.negative !== 0;
};
// Return negative clone of `this`
BN.prototype.neg = function neg () {
return this.clone().ineg();
};
BN.prototype.ineg = function ineg () {
if (!this.isZero()) {
this.negative ^= 1;
}
return this;
};
// Or `num` with `this` in-place
BN.prototype.iuor = function iuor (num) {
while (this.length < num.length) {
this.words[this.length++] = 0;
}
for (var i = 0; i < num.length; i++) {
this.words[i] = this.words[i] | num.words[i];
}
return this.strip();
};
BN.prototype.ior = function ior (num) {
assert((this.negative | num.negative) === 0);
return this.iuor(num);
};
// Or `num` with `this`
BN.prototype.or = function or (num) {
if (this.length > num.length) return this.clone().ior(num);
return num.clone().ior(this);
};
BN.prototype.uor = function uor (num) {
if (this.length > num.length) return this.clone().iuor(num);
return num.clone().iuor(this);
};
// And `num` with `this` in-place
BN.prototype.iuand = function iuand (num) {
// b = min-length(num, this)
var b;
if (this.length > num.length) {
b = num;
} else {
b = this;
}
for (var i = 0; i < b.length; i++) {
this.words[i] = this.words[i] & num.words[i];
}
this.length = b.length;
return this.strip();
};
BN.prototype.iand = function iand (num) {
assert((this.negative | num.negative) === 0);
return this.iuand(num);
};
// And `num` with `this`
BN.prototype.and = function and (num) {
if (this.length > num.length) return this.clone().iand(num);
return num.clone().iand(this);
};
BN.prototype.uand = function uand (num) {
if (this.length > num.length) return this.clone().iuand(num);
return num.clone().iuand(this);
};
// Xor `num` with `this` in-place
BN.prototype.iuxor = function iuxor (num) {
// a.length > b.length
var a;
var b;
if (this.length > num.length) {
a = this;
b = num;
} else {
a = num;
b = this;
}
for (var i = 0; i < b.length; i++) {
this.words[i] = a.words[i] ^ b.words[i];
}
if (this !== a) {
for (; i < a.length; i++) {
this.words[i] = a.words[i];
}
}
this.length = a.length;
return this.strip();
};
BN.prototype.ixor = function ixor (num) {
assert((this.negative | num.negative) === 0);
return this.iuxor(num);
};
// Xor `num` with `this`
BN.prototype.xor = function xor (num) {
if (this.length > num.length) return this.clone().ixor(num);
return num.clone().ixor(this);
};
BN.prototype.uxor = function uxor (num) {
if (this.length > num.length) return this.clone().iuxor(num);
return num.clone().iuxor(this);
};
// Not ``this`` with ``width`` bitwidth
BN.prototype.inotn = function inotn (width) {
assert(typeof width === 'number' && width >= 0);
var bytesNeeded = Math.ceil(width / 26) | 0;
var bitsLeft = width % 26;
// Extend the buffer with leading zeroes
this._expand(bytesNeeded);
if (bitsLeft > 0) {
bytesNeeded--;
}
// Handle complete words
for (var i = 0; i < bytesNeeded; i++) {
this.words[i] = ~this.words[i] & 0x3ffffff;
}
// Handle the residue
if (bitsLeft > 0) {
this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));
}
// And remove leading zeroes
return this.strip();
};
BN.prototype.notn = function notn (width) {
return this.clone().inotn(width);
};
// Set `bit` of `this`
BN.prototype.setn = function setn (bit, val) {
assert(typeof bit === 'number' && bit >= 0);
var off = (bit / 26) | 0;
var wbit = bit % 26;
this._expand(off + 1);
if (val) {
this.words[off] = this.words[off] | (1 << wbit);
} else {
this.words[off] = this.words[off] & ~(1 << wbit);
}
return this.strip();
};
// Add `num` to `this` in-place
BN.prototype.iadd = function iadd (num) {
var r;
// negative + positive
if (this.negative !== 0 && num.negative === 0) {
this.negative = 0;
r = this.isub(num);
this.negative ^= 1;
return this._normSign();
// positive + negative
} else if (this.negative === 0 && num.negative !== 0) {
num.negative = 0;
r = this.isub(num);
num.negative = 1;
return r._normSign();
}
// a.length > b.length
var a, b;
if (this.length > num.length) {
a = this;
b = num;
} else {
a = num;
b = this;
}
var carry = 0;
for (var i = 0; i < b.length; i++) {
r = (a.words[i] | 0) + (b.words[i] | 0) + carry;
this.words[i] = r & 0x3ffffff;
carry = r >>> 26;
}
for (; carry !== 0 && i < a.length; i++) {
r = (a.words[i] | 0) + carry;
this.words[i] = r & 0x3ffffff;
carry = r >>> 26;
}
this.length = a.length;
if (carry !== 0) {
this.words[this.length] = carry;
this.length++;
// Copy the rest of the words
} else if (a !== this) {
for (; i < a.length; i++) {
this.words[i] = a.words[i];
}
}
return this;
};
// Add `num` to `this`
BN.prototype.add = function add (num) {
var res;
if (num.negative !== 0 && this.negative === 0) {
num.negative = 0;
res = this.sub(num);
num.negative ^= 1;
return res;
} else if (num.negative === 0 && this.negative !== 0) {
this.negative = 0;
res = num.sub(this);
this.negative = 1;
return res;
}
if (this.length > num.length) return this.clone().iadd(num);
return num.clone().iadd(this);
};
// Subtract `num` from `this` in-place
BN.prototype.isub = function isub (num) {
// this - (-num) = this + num
if (num.negative !== 0) {
num.negative = 0;
var r = this.iadd(num);
num.negative = 1;
return r._normSign();
// -this - num = -(this + num)
} else if (this.negative !== 0) {
this.negative = 0;
this.iadd(num);
this.negative = 1;
return this._normSign();
}
// At this point both numbers are positive
var cmp = this.cmp(num);
// Optimization - zeroify
if (cmp === 0) {
this.negative = 0;
this.length = 1;
this.words[0] = 0;
return this;
}
// a > b
var a, b;
if (cmp > 0) {
a = this;
b = num;
} else {
a = num;
b = this;
}
var carry = 0;
for (var i = 0; i < b.length; i++) {
r = (a.words[i] | 0) - (b.words[i] | 0) + carry;
carry = r >> 26;
this.words[i] = r & 0x3ffffff;
}
for (; carry !== 0 && i < a.length; i++) {
r = (a.words[i] | 0) + carry;
carry = r >> 26;
this.words[i] = r & 0x3ffffff;
}
// Copy rest of the words
if (carry === 0 && i < a.length && a !== this) {
for (; i < a.length; i++) {
this.words[i] = a.words[i];
}
}
this.length = Math.max(this.length, i);
if (a !== this) {
this.negative = 1;
}
return this.strip();
};
// Subtract `num` from `this`
BN.prototype.sub = function sub (num) {
return this.clone().isub(num);
};
function smallMulTo (self, num, out) {
out.negative = num.negative ^ self.negative;
var len = (self.length + num.length) | 0;
out.length = len;
len = (len - 1) | 0;
// Peel one iteration (compiler can't do it, because of code complexity)
var a = self.words[0] | 0;
var b = num.words[0] | 0;
var r = a * b;
var lo = r & 0x3ffffff;
var carry = (r / 0x4000000) | 0;
out.words[0] = lo;
for (var k = 1; k < len; k++) {
// Sum all words with the same `i + j = k` and accumulate `ncarry`,
// note that ncarry could be >= 0x3ffffff
var ncarry = carry >>> 26;
var rword = carry & 0x3ffffff;
var maxJ = Math.min(k, num.length - 1);
for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
var i = (k - j) | 0;
a = self.words[i] | 0;
b = num.words[j] | 0;
r = a * b + rword;
ncarry += (r / 0x4000000) | 0;
rword = r & 0x3ffffff;
}
out.words[k] = rword | 0;
carry = ncarry | 0;
}
if (carry !== 0) {
out.words[k] = carry | 0;
} else {
out.length--;
}
return out.strip();
}
// TODO(indutny): it may be reasonable to omit it for users who don't need
// to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit
// multiplication (like elliptic secp256k1).
var comb10MulTo = function comb10MulTo (self, num, out) {
var a = self.words;
var b = num.words;
var o = out.words;
var c = 0;
var lo;
var mid;
var hi;
var a0 = a[0] | 0;
var al0 = a0 & 0x1fff;
var ah0 = a0 >>> 13;
var a1 = a[1] | 0;
var al1 = a1 & 0x1fff;
var ah1 = a1 >>> 13;
var a2 = a[2] | 0;
var al2 = a2 & 0x1fff;
var ah2 = a2 >>> 13;
var a3 = a[3] | 0;
var al3 = a3 & 0x1fff;
var ah3 = a3 >>> 13;
var a4 = a[4] | 0;
var al4 = a4 & 0x1fff;
var ah4 = a4 >>> 13;
var a5 = a[5] | 0;
var al5 = a5 & 0x1fff;
var ah5 = a5 >>> 13;
var a6 = a[6] | 0;
var al6 = a6 & 0x1fff;
var ah6 = a6 >>> 13;
var a7 = a[7] | 0;
var al7 = a7 & 0x1fff;
var ah7 = a7 >>> 13;
var a8 = a[8] | 0;
var al8 = a8 & 0x1fff;
var ah8 = a8 >>> 13;
var a9 = a[9] | 0;
var al9 = a9 & 0x1fff;
var ah9 = a9 >>> 13;
var b0 = b[0] | 0;
var bl0 = b0 & 0x1fff;
var bh0 = b0 >>> 13;
var b1 = b[1] | 0;
var bl1 = b1 & 0x1fff;
var bh1 = b1 >>> 13;
var b2 = b[2] | 0;
var bl2 = b2 & 0x1fff;
var bh2 = b2 >>> 13;
var b3 = b[3] | 0;
var bl3 = b3 & 0x1fff;
var bh3 = b3 >>> 13;
var b4 = b[4] | 0;
var bl4 = b4 & 0x1fff;
var bh4 = b4 >>> 13;
var b5 = b[5] | 0;
var bl5 = b5 & 0x1fff;
var bh5 = b5 >>> 13;
var b6 = b[6] | 0;
var bl6 = b6 & 0x1fff;
var bh6 = b6 >>> 13;
var b7 = b[7] | 0;
var bl7 = b7 & 0x1fff;
var bh7 = b7 >>> 13;
var b8 = b[8] | 0;
var bl8 = b8 & 0x1fff;
var bh8 = b8 >>> 13;
var b9 = b[9] | 0;
var bl9 = b9 & 0x1fff;
var bh9 = b9 >>> 13;
out.negative = self.negative ^ num.negative;
out.length = 19;
/* k = 0 */
lo = Math.imul(al0, bl0);
mid = Math.imul(al0, bh0);
mid = (mid + Math.imul(ah0, bl0)) | 0;
hi = Math.imul(ah0, bh0);
var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;
w0 &= 0x3ffffff;
/* k = 1 */
lo = Math.imul(al1, bl0);
mid = Math.imul(al1, bh0);
mid = (mid + Math.imul(ah1, bl0)) | 0;
hi = Math.imul(ah1, bh0);
lo = (lo + Math.imul(al0, bl1)) | 0;
mid = (mid + Math.imul(al0, bh1)) | 0;
mid = (mid + Math.imul(ah0, bl1)) | 0;
hi = (hi + Math.imul(ah0, bh1)) | 0;
var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;
w1 &= 0x3ffffff;
/* k = 2 */
lo = Math.imul(al2, bl0);
mid = Math.imul(al2, bh0);
mid = (mid + Math.imul(ah2, bl0)) | 0;
hi = Math.imul(ah2, bh0);
lo = (lo + Math.imul(al1, bl1)) | 0;
mid = (mid + Math.imul(al1, bh1)) | 0;
mid = (mid + Math.imul(ah1, bl1)) | 0;
hi = (hi + Math.imul(ah1, bh1)) | 0;
lo = (lo + Math.imul(al0, bl2)) | 0;
mid = (mid + Math.imul(al0, bh2)) | 0;
mid = (mid + Math.imul(ah0, bl2)) | 0;
hi = (hi + Math.imul(ah0, bh2)) | 0;
var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;
w2 &= 0x3ffffff;
/* k = 3 */
lo = Math.imul(al3, bl0);
mid = Math.imul(al3, bh0);
mid = (mid + Math.imul(ah3, bl0)) | 0;
hi = Math.imul(ah3, bh0);
lo = (lo + Math.imul(al2, bl1)) | 0;
mid = (mid + Math.imul(al2, bh1)) | 0;
mid = (mid + Math.imul(ah2, bl1)) | 0;
hi = (hi + Math.imul(ah2, bh1)) | 0;
lo = (lo + Math.imul(al1, bl2)) | 0;
mid = (mid + Math.imul(al1, bh2)) | 0;
mid = (mid + Math.imul(ah1, bl2)) | 0;
hi = (hi + Math.imul(ah1, bh2)) | 0;
lo = (lo + Math.imul(al0, bl3)) | 0;
mid = (mid + Math.imul(al0, bh3)) | 0;
mid = (mid + Math.imul(ah0, bl3)) | 0;
hi = (hi + Math.imul(ah0, bh3)) | 0;
var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;
w3 &= 0x3ffffff;
/* k = 4 */
lo = Math.imul(al4, bl0);
mid = Math.imul(al4, bh0);
mid = (mid + Math.imul(ah4, bl0)) | 0;
hi = Math.imul(ah4, bh0);
lo = (lo + Math.imul(al3, bl1)) | 0;
mid = (mid + Math.imul(al3, bh1)) | 0;
mid = (mid + Math.imul(ah3, bl1)) | 0;
hi = (hi + Math.imul(ah3, bh1)) | 0;
lo = (lo + Math.imul(al2, bl2)) | 0;
mid = (mid + Math.imul(al2, bh2)) | 0;
mid = (mid + Math.imul(ah2, bl2)) | 0;
hi = (hi + Math.imul(ah2, bh2)) | 0;
lo = (lo + Math.imul(al1, bl3)) | 0;
mid = (mid + Math.imul(al1, bh3)) | 0;
mid = (mid + Math.imul(ah1, bl3)) | 0;
hi = (hi + Math.imul(ah1, bh3)) | 0;
lo = (lo + Math.imul(al0, bl4)) | 0;
mid = (mid + Math.imul(al0, bh4)) | 0;
mid = (mid + Math.imul(ah0, bl4)) | 0;
hi = (hi + Math.imul(ah0, bh4)) | 0;
var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;
w4 &= 0x3ffffff;
/* k = 5 */
lo = Math.imul(al5, bl0);
mid = Math.imul(al5, bh0);
mid = (mid + Math.imul(ah5, bl0)) | 0;
hi = Math.imul(ah5, bh0);
lo = (lo + Math.imul(al4, bl1)) | 0;
mid = (mid + Math.imul(al4, bh1)) | 0;
mid = (mid + Math.imul(ah4, bl1)) | 0;
hi = (hi + Math.imul(ah4, bh1)) | 0;
lo = (lo + Math.imul(al3, bl2)) | 0;
mid = (mid + Math.imul(al3, bh2)) | 0;
mid = (mid + Math.imul(ah3, bl2)) | 0;
hi = (hi + Math.imul(ah3, bh2)) | 0;
lo = (lo + Math.imul(al2, bl3)) | 0;
mid = (mid + Math.imul(al2, bh3)) | 0;
mid = (mid + Math.imul(ah2, bl3)) | 0;
hi = (hi + Math.imul(ah2, bh3)) | 0;
lo = (lo + Math.imul(al1, bl4)) | 0;
mid = (mid + Math.imul(al1, bh4)) | 0;
mid = (mid + Math.imul(ah1, bl4)) | 0;
hi = (hi + Math.imul(ah1, bh4)) | 0;
lo = (lo + Math.imul(al0, bl5)) | 0;
mid = (mid + Math.imul(al0, bh5)) | 0;
mid = (mid + Math.imul(ah0, bl5)) | 0;
hi = (hi + Math.imul(ah0, bh5)) | 0;
var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;
w5 &= 0x3ffffff;
/* k = 6 */
lo = Math.imul(al6, bl0);
mid = Math.imul(al6, bh0);
mid = (mid + Math.imul(ah6, bl0)) | 0;
hi = Math.imul(ah6, bh0);
lo = (lo + Math.imul(al5, bl1)) | 0;
mid = (mid + Math.imul(al5, bh1)) | 0;
mid = (mid + Math.imul(ah5, bl1)) | 0;
hi = (hi + Math.imul(ah5, bh1)) | 0;
lo = (lo + Math.imul(al4, bl2)) | 0;
mid = (mid + Math.imul(al4, bh2)) | 0;
mid = (mid + Math.imul(ah4, bl2)) | 0;
hi = (hi + Math.imul(ah4, bh2)) | 0;
lo = (lo + Math.imul(al3, bl3)) | 0;
mid = (mid + Math.imul(al3, bh3)) | 0;
mid = (mid + Math.imul(ah3, bl3)) | 0;
hi = (hi + Math.imul(ah3, bh3)) | 0;
lo = (lo + Math.imul(al2, bl4)) | 0;
mid = (mid + Math.imul(al2, bh4)) | 0;
mid = (mid + Math.imul(ah2, bl4)) | 0;
hi = (hi + Math.imul(ah2, bh4)) | 0;
lo = (lo + Math.imul(al1, bl5)) | 0;
mid = (mid + Math.imul(al1, bh5)) | 0;
mid = (mid + Math.imul(ah1, bl5)) | 0;
hi = (hi + Math.imul(ah1, bh5)) | 0;
lo = (lo + Math.imul(al0, bl6)) | 0;
mid = (mid + Math.imul(al0, bh6)) | 0;
mid = (mid + Math.imul(ah0, bl6)) | 0;
hi = (hi + Math.imul(ah0, bh6)) | 0;
var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;
w6 &= 0x3ffffff;
/* k = 7 */
lo = Math.imul(al7, bl0);
mid = Math.imul(al7, bh0);
mid = (mid + Math.imul(ah7, bl0)) | 0;
hi = Math.imul(ah7, bh0);
lo = (lo + Math.imul(al6, bl1)) | 0;
mid = (mid + Math.imul(al6, bh1)) | 0;
mid = (mid + Math.imul(ah6, bl1)) | 0;
hi = (hi + Math.imul(ah6, bh1)) | 0;
lo = (lo + Math.imul(al5, bl2)) | 0;
mid = (mid + Math.imul(al5, bh2)) | 0;
mid = (mid + Math.imul(ah5, bl2)) | 0;
hi = (hi + Math.imul(ah5, bh2)) | 0;
lo = (lo + Math.imul(al4, bl3)) | 0;
mid = (mid + Math.imul(al4, bh3)) | 0;
mid = (mid + Math.imul(ah4, bl3)) | 0;
hi = (hi + Math.imul(ah4, bh3)) | 0;
lo = (lo + Math.imul(al3, bl4)) | 0;
mid = (mid + Math.imul(al3, bh4)) | 0;
mid = (mid + Math.imul(ah3, bl4)) | 0;
hi = (hi + Math.imul(ah3, bh4)) | 0;
lo = (lo + Math.imul(al2, bl5)) | 0;
mid = (mid + Math.imul(al2, bh5)) | 0;
mid = (mid + Math.imul(ah2, bl5)) | 0;
hi = (hi + Math.imul(ah2, bh5)) | 0;
lo = (lo + Math.imul(al1, bl6)) | 0;
mid = (mid + Math.imul(al1, bh6)) | 0;
mid = (mid + Math.imul(ah1, bl6)) | 0;
hi = (hi + Math.imul(ah1, bh6)) | 0;
lo = (lo + Math.imul(al0, bl7)) | 0;
mid = (mid + Math.imul(al0, bh7)) | 0;
mid = (mid + Math.imul(ah0, bl7)) | 0;
hi = (hi + Math.imul(ah0, bh7)) | 0;
var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;
w7 &= 0x3ffffff;
/* k = 8 */
lo = Math.imul(al8, bl0);
mid = Math.imul(al8, bh0);
mid = (mid + Math.imul(ah8, bl0)) | 0;
hi = Math.imul(ah8, bh0);
lo = (lo + Math.imul(al7, bl1)) | 0;
mid = (mid + Math.imul(al7, bh1)) | 0;
mid = (mid + Math.imul(ah7, bl1)) | 0;
hi = (hi + Math.imul(ah7, bh1)) | 0;
lo = (lo + Math.imul(al6, bl2)) | 0;
mid = (mid + Math.imul(al6, bh2)) | 0;
mid = (mid + Math.imul(ah6, bl2)) | 0;
hi = (hi + Math.imul(ah6, bh2)) | 0;
lo = (lo + Math.imul(al5, bl3)) | 0;
mid = (mid + Math.imul(al5, bh3)) | 0;
mid = (mid + Math.imul(ah5, bl3)) | 0;
hi = (hi + Math.imul(ah5, bh3)) | 0;
lo = (lo + Math.imul(al4, bl4)) | 0;
mid = (mid + Math.imul(al4, bh4)) | 0;
mid = (mid + Math.imul(ah4, bl4)) | 0;
hi = (hi + Math.imul(ah4, bh4)) | 0;
lo = (lo + Math.imul(al3, bl5)) | 0;
mid = (mid + Math.imul(al3, bh5)) | 0;
mid = (mid + Math.imul(ah3, bl5)) | 0;
hi = (hi + Math.imul(ah3, bh5)) | 0;
lo = (lo + Math.imul(al2, bl6)) | 0;
mid = (mid + Math.imul(al2, bh6)) | 0;
mid = (mid + Math.imul(ah2, bl6)) | 0;
hi = (hi + Math.imul(ah2, bh6)) | 0;
lo = (lo + Math.imul(al1, bl7)) | 0;
mid = (mid + Math.imul(al1, bh7)) | 0;
mid = (mid + Math.imul(ah1, bl7)) | 0;
hi = (hi + Math.imul(ah1, bh7)) | 0;
lo = (lo + Math.imul(al0, bl8)) | 0;
mid = (mid + Math.imul(al0, bh8)) | 0;
mid = (mid + Math.imul(ah0, bl8)) | 0;
hi = (hi + Math.imul(ah0, bh8)) | 0;
var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;
w8 &= 0x3ffffff;
/* k = 9 */
lo = Math.imul(al9, bl0);
mid = Math.imul(al9, bh0);
mid = (mid + Math.imul(ah9, bl0)) | 0;
hi = Math.imul(ah9, bh0);
lo = (lo + Math.imul(al8, bl1)) | 0;
mid = (mid + Math.imul(al8, bh1)) | 0;
mid = (mid + Math.imul(ah8, bl1)) | 0;
hi = (hi + Math.imul(ah8, bh1)) | 0;
lo = (lo + Math.imul(al7, bl2)) | 0;
mid = (mid + Math.imul(al7, bh2)) | 0;
mid = (mid + Math.imul(ah7, bl2)) | 0;
hi = (hi + Math.imul(ah7, bh2)) | 0;
lo = (lo + Math.imul(al6, bl3)) | 0;
mid = (mid + Math.imul(al6, bh3)) | 0;
mid = (mid + Math.imul(ah6, bl3)) | 0;
hi = (hi + Math.imul(ah6, bh3)) | 0;
lo = (lo + Math.imul(al5, bl4)) | 0;
mid = (mid + Math.imul(al5, bh4)) | 0;
mid = (mid + Math.imul(ah5, bl4)) | 0;
hi = (hi + Math.imul(ah5, bh4)) | 0;
lo = (lo + Math.imul(al4, bl5)) | 0;
mid = (mid + Math.imul(al4, bh5)) | 0;
mid = (mid + Math.imul(ah4, bl5)) | 0;
hi = (hi + Math.imul(ah4, bh5)) | 0;
lo = (lo + Math.imul(al3, bl6)) | 0;
mid = (mid + Math.imul(al3, bh6)) | 0;
mid = (mid + Math.imul(ah3, bl6)) | 0;
hi = (hi + Math.imul(ah3, bh6)) | 0;
lo = (lo + Math.imul(al2, bl7)) | 0;
mid = (mid + Math.imul(al2, bh7)) | 0;
mid = (mid + Math.imul(ah2, bl7)) | 0;
hi = (hi + Math.imul(ah2, bh7)) | 0;
lo = (lo + Math.imul(al1, bl8)) | 0;
mid = (mid + Math.imul(al1, bh8)) | 0;
mid = (mid + Math.imul(ah1, bl8)) | 0;
hi = (hi + Math.imul(ah1, bh8)) | 0;
lo = (lo + Math.imul(al0, bl9)) | 0;
mid = (mid + Math.imul(al0, bh9)) | 0;
mid = (mid + Math.imul(ah0, bl9)) | 0;
hi = (hi + Math.imul(ah0, bh9)) | 0;
var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;
w9 &= 0x3ffffff;
/* k = 10 */
lo = Math.imul(al9, bl1);
mid = Math.imul(al9, bh1);
mid = (mid + Math.imul(ah9, bl1)) | 0;
hi = Math.imul(ah9, bh1);
lo = (lo + Math.imul(al8, bl2)) | 0;
mid = (mid + Math.imul(al8, bh2)) | 0;
mid = (mid + Math.imul(ah8, bl2)) | 0;
hi = (hi + Math.imul(ah8, bh2)) | 0;
lo = (lo + Math.imul(al7, bl3)) | 0;
mid = (mid + Math.imul(al7, bh3)) | 0;
mid = (mid + Math.imul(ah7, bl3)) | 0;
hi = (hi + Math.imul(ah7, bh3)) | 0;
lo = (lo + Math.imul(al6, bl4)) | 0;
mid = (mid + Math.imul(al6, bh4)) | 0;
mid = (mid + Math.imul(ah6, bl4)) | 0;
hi = (hi + Math.imul(ah6, bh4)) | 0;
lo = (lo + Math.imul(al5, bl5)) | 0;
mid = (mid + Math.imul(al5, bh5)) | 0;
mid = (mid + Math.imul(ah5, bl5)) | 0;
hi = (hi + Math.imul(ah5, bh5)) | 0;
lo = (lo + Math.imul(al4, bl6)) | 0;
mid = (mid + Math.imul(al4, bh6)) | 0;
mid = (mid + Math.imul(ah4, bl6)) | 0;
hi = (hi + Math.imul(ah4, bh6)) | 0;
lo = (lo + Math.imul(al3, bl7)) | 0;
mid = (mid + Math.imul(al3, bh7)) | 0;
mid = (mid + Math.imul(ah3, bl7)) | 0;
hi = (hi + Math.imul(ah3, bh7)) | 0;
lo = (lo + Math.imul(al2, bl8)) | 0;
mid = (mid + Math.imul(al2, bh8)) | 0;
mid = (mid + Math.imul(ah2, bl8)) | 0;
hi = (hi + Math.imul(ah2, bh8)) | 0;
lo = (lo + Math.imul(al1, bl9)) | 0;
mid = (mid + Math.imul(al1, bh9)) | 0;
mid = (mid + Math.imul(ah1, bl9)) | 0;
hi = (hi + Math.imul(ah1, bh9)) | 0;
var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;
w10 &= 0x3ffffff;
/* k = 11 */
lo = Math.imul(al9, bl2);
mid = Math.imul(al9, bh2);
mid = (mid + Math.imul(ah9, bl2)) | 0;
hi = Math.imul(ah9, bh2);
lo = (lo + Math.imul(al8, bl3)) | 0;
mid = (mid + Math.imul(al8, bh3)) | 0;
mid = (mid + Math.imul(ah8, bl3)) | 0;
hi = (hi + Math.imul(ah8, bh3)) | 0;
lo = (lo + Math.imul(al7, bl4)) | 0;
mid = (mid + Math.imul(al7, bh4)) | 0;
mid = (mid + Math.imul(ah7, bl4)) | 0;
hi = (hi + Math.imul(ah7, bh4)) | 0;
lo = (lo + Math.imul(al6, bl5)) | 0;
mid = (mid + Math.imul(al6, bh5)) | 0;
mid = (mid + Math.imul(ah6, bl5)) | 0;
hi = (hi + Math.imul(ah6, bh5)) | 0;
lo = (lo + Math.imul(al5, bl6)) | 0;
mid = (mid + Math.imul(al5, bh6)) | 0;
mid = (mid + Math.imul(ah5, bl6)) | 0;
hi = (hi + Math.imul(ah5, bh6)) | 0;
lo = (lo + Math.imul(al4, bl7)) | 0;
mid = (mid + Math.imul(al4, bh7)) | 0;
mid = (mid + Math.imul(ah4, bl7)) | 0;
hi = (hi + Math.imul(ah4, bh7)) | 0;
lo = (lo + Math.imul(al3, bl8)) | 0;
mid = (mid + Math.imul(al3, bh8)) | 0;
mid = (mid + Math.imul(ah3, bl8)) | 0;
hi = (hi + Math.imul(ah3, bh8)) | 0;
lo = (lo + Math.imul(al2, bl9)) | 0;
mid = (mid + Math.imul(al2, bh9)) | 0;
mid = (mid + Math.imul(ah2, bl9)) | 0;
hi = (hi + Math.imul(ah2, bh9)) | 0;
var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;
w11 &= 0x3ffffff;
/* k = 12 */
lo = Math.imul(al9, bl3);
mid = Math.imul(al9, bh3);
mid = (mid + Math.imul(ah9, bl3)) | 0;
hi = Math.imul(ah9, bh3);
lo = (lo + Math.imul(al8, bl4)) | 0;
mid = (mid + Math.imul(al8, bh4)) | 0;
mid = (mid + Math.imul(ah8, bl4)) | 0;
hi = (hi + Math.imul(ah8, bh4)) | 0;
lo = (lo + Math.imul(al7, bl5)) | 0;
mid = (mid + Math.imul(al7, bh5)) | 0;
mid = (mid + Math.imul(ah7, bl5)) | 0;
hi = (hi + Math.imul(ah7, bh5)) | 0;
lo = (lo + Math.imul(al6, bl6)) | 0;
mid = (mid + Math.imul(al6, bh6)) | 0;
mid = (mid + Math.imul(ah6, bl6)) | 0;
hi = (hi + Math.imul(ah6, bh6)) | 0;
lo = (lo + Math.imul(al5, bl7)) | 0;
mid = (mid + Math.imul(al5, bh7)) | 0;
mid = (mid + Math.imul(ah5, bl7)) | 0;
hi = (hi + Math.imul(ah5, bh7)) | 0;
lo = (lo + Math.imul(al4, bl8)) | 0;
mid = (mid + Math.imul(al4, bh8)) | 0;
mid = (mid + Math.imul(ah4, bl8)) | 0;
hi = (hi + Math.imul(ah4, bh8)) | 0;
lo = (lo + Math.imul(al3, bl9)) | 0;
mid = (mid + Math.imul(al3, bh9)) | 0;
mid = (mid + Math.imul(ah3, bl9)) | 0;
hi = (hi + Math.imul(ah3, bh9)) | 0;
var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;
w12 &= 0x3ffffff;
/* k = 13 */
lo = Math.imul(al9, bl4);
mid = Math.imul(al9, bh4);
mid = (mid + Math.imul(ah9, bl4)) | 0;
hi = Math.imul(ah9, bh4);
lo = (lo + Math.imul(al8, bl5)) | 0;
mid = (mid + Math.imul(al8, bh5)) | 0;
mid = (mid + Math.imul(ah8, bl5)) | 0;
hi = (hi + Math.imul(ah8, bh5)) | 0;
lo = (lo + Math.imul(al7, bl6)) | 0;
mid = (mid + Math.imul(al7, bh6)) | 0;
mid = (mid + Math.imul(ah7, bl6)) | 0;
hi = (hi + Math.imul(ah7, bh6)) | 0;
lo = (lo + Math.imul(al6, bl7)) | 0;
mid = (mid + Math.imul(al6, bh7)) | 0;
mid = (mid + Math.imul(ah6, bl7)) | 0;
hi = (hi + Math.imul(ah6, bh7)) | 0;
lo = (lo + Math.imul(al5, bl8)) | 0;
mid = (mid + Math.imul(al5, bh8)) | 0;
mid = (mid + Math.imul(ah5, bl8)) | 0;
hi = (hi + Math.imul(ah5, bh8)) | 0;
lo = (lo + Math.imul(al4, bl9)) | 0;
mid = (mid + Math.imul(al4, bh9)) | 0;
mid = (mid + Math.imul(ah4, bl9)) | 0;
hi = (hi + Math.imul(ah4, bh9)) | 0;
var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;
w13 &= 0x3ffffff;
/* k = 14 */
lo = Math.imul(al9, bl5);
mid = Math.imul(al9, bh5);
mid = (mid + Math.imul(ah9, bl5)) | 0;
hi = Math.imul(ah9, bh5);
lo = (lo + Math.imul(al8, bl6)) | 0;
mid = (mid + Math.imul(al8, bh6)) | 0;
mid = (mid + Math.imul(ah8, bl6)) | 0;
hi = (hi + Math.imul(ah8, bh6)) | 0;
lo = (lo + Math.imul(al7, bl7)) | 0;
mid = (mid + Math.imul(al7, bh7)) | 0;
mid = (mid + Math.imul(ah7, bl7)) | 0;
hi = (hi + Math.imul(ah7, bh7)) | 0;
lo = (lo + Math.imul(al6, bl8)) | 0;
mid = (mid + Math.imul(al6, bh8)) | 0;
mid = (mid + Math.imul(ah6, bl8)) | 0;
hi = (hi + Math.imul(ah6, bh8)) | 0;
lo = (lo + Math.imul(al5, bl9)) | 0;
mid = (mid + Math.imul(al5, bh9)) | 0;
mid = (mid + Math.imul(ah5, bl9)) | 0;
hi = (hi + Math.imul(ah5, bh9)) | 0;
var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;
w14 &= 0x3ffffff;
/* k = 15 */
lo = Math.imul(al9, bl6);
mid = Math.imul(al9, bh6);
mid = (mid + Math.imul(ah9, bl6)) | 0;
hi = Math.imul(ah9, bh6);
lo = (lo + Math.imul(al8, bl7)) | 0;
mid = (mid + Math.imul(al8, bh7)) | 0;
mid = (mid + Math.imul(ah8, bl7)) | 0;
hi = (hi + Math.imul(ah8, bh7)) | 0;
lo = (lo + Math.imul(al7, bl8)) | 0;
mid = (mid + Math.imul(al7, bh8)) | 0;
mid = (mid + Math.imul(ah7, bl8)) | 0;
hi = (hi + Math.imul(ah7, bh8)) | 0;
lo = (lo + Math.imul(al6, bl9)) | 0;
mid = (mid + Math.imul(al6, bh9)) | 0;
mid = (mid + Math.imul(ah6, bl9)) | 0;
hi = (hi + Math.imul(ah6, bh9)) | 0;
var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;
w15 &= 0x3ffffff;
/* k = 16 */
lo = Math.imul(al9, bl7);
mid = Math.imul(al9, bh7);
mid = (mid + Math.imul(ah9, bl7)) | 0;
hi = Math.imul(ah9, bh7);
lo = (lo + Math.imul(al8, bl8)) | 0;
mid = (mid + Math.imul(al8, bh8)) | 0;
mid = (mid + Math.imul(ah8, bl8)) | 0;
hi = (hi + Math.imul(ah8, bh8)) | 0;
lo = (lo + Math.imul(al7, bl9)) | 0;
mid = (mid + Math.imul(al7, bh9)) | 0;
mid = (mid + Math.imul(ah7, bl9)) | 0;
hi = (hi + Math.imul(ah7, bh9)) | 0;
var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;
w16 &= 0x3ffffff;
/* k = 17 */
lo = Math.imul(al9, bl8);
mid = Math.imul(al9, bh8);
mid = (mid + Math.imul(ah9, bl8)) | 0;
hi = Math.imul(ah9, bh8);
lo = (lo + Math.imul(al8, bl9)) | 0;
mid = (mid + Math.imul(al8, bh9)) | 0;
mid = (mid + Math.imul(ah8, bl9)) | 0;
hi = (hi + Math.imul(ah8, bh9)) | 0;
var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;
w17 &= 0x3ffffff;
/* k = 18 */
lo = Math.imul(al9, bl9);
mid = Math.imul(al9, bh9);
mid = (mid + Math.imul(ah9, bl9)) | 0;
hi = Math.imul(ah9, bh9);
var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;
w18 &= 0x3ffffff;
o[0] = w0;
o[1] = w1;
o[2] = w2;
o[3] = w3;
o[4] = w4;
o[5] = w5;
o[6] = w6;
o[7] = w7;
o[8] = w8;
o[9] = w9;
o[10] = w10;
o[11] = w11;
o[12] = w12;
o[13] = w13;
o[14] = w14;
o[15] = w15;
o[16] = w16;
o[17] = w17;
o[18] = w18;
if (c !== 0) {
o[19] = c;
out.length++;
}
return out;
};
// Polyfill comb
if (!Math.imul) {
comb10MulTo = smallMulTo;
}
function bigMulTo (self, num, out) {
out.negative = num.negative ^ self.negative;
out.length = self.length + num.length;
var carry = 0;
var hncarry = 0;
for (var k = 0; k < out.length - 1; k++) {
// Sum all words with the same `i + j = k` and accumulate `ncarry`,
// note that ncarry could be >= 0x3ffffff
var ncarry = hncarry;
hncarry = 0;
var rword = carry & 0x3ffffff;
var maxJ = Math.min(k, num.length - 1);
for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
var i = k - j;
var a = self.words[i] | 0;
var b = num.words[j] | 0;
var r = a * b;
var lo = r & 0x3ffffff;
ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;
lo = (lo + rword) | 0;
rword = lo & 0x3ffffff;
ncarry = (ncarry + (lo >>> 26)) | 0;
hncarry += ncarry >>> 26;
ncarry &= 0x3ffffff;
}
out.words[k] = rword;
carry = ncarry;
ncarry = hncarry;
}
if (carry !== 0) {
out.words[k] = carry;
} else {
out.length--;
}
return out.strip();
}
function jumboMulTo (self, num, out) {
var fftm = new FFTM();
return fftm.mulp(self, num, out);
}
BN.prototype.mulTo = function mulTo (num, out) {
var res;
var len = this.length + num.length;
if (this.length === 10 && num.length === 10) {
res = comb10MulTo(this, num, out);
} else if (len < 63) {
res = smallMulTo(this, num, out);
} else if (len < 1024) {
res = bigMulTo(this, num, out);
} else {
res = jumboMulTo(this, num, out);
}
return res;
};
// Cooley-Tukey algorithm for FFT
// slightly revisited to rely on looping instead of recursion
function FFTM (x, y) {
this.x = x;
this.y = y;
}
FFTM.prototype.makeRBT = function makeRBT (N) {
var t = new Array(N);
var l = BN.prototype._countBits(N) - 1;
for (var i = 0; i < N; i++) {
t[i] = this.revBin(i, l, N);
}
return t;
};
// Returns binary-reversed representation of `x`
FFTM.prototype.revBin = function revBin (x, l, N) {
if (x === 0 || x === N - 1) return x;
var rb = 0;
for (var i = 0; i < l; i++) {
rb |= (x & 1) << (l - i - 1);
x >>= 1;
}
return rb;
};
// Performs "tweedling" phase, therefore 'emulating'
// behaviour of the recursive algorithm
FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {
for (var i = 0; i < N; i++) {
rtws[i] = rws[rbt[i]];
itws[i] = iws[rbt[i]];
}
};
FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {
this.permute(rbt, rws, iws, rtws, itws, N);
for (var s = 1; s < N; s <<= 1) {
var l = s << 1;
var rtwdf = Math.cos(2 * Math.PI / l);
var itwdf = Math.sin(2 * Math.PI / l);
for (var p = 0; p < N; p += l) {
var rtwdf_ = rtwdf;
var itwdf_ = itwdf;
for (var j = 0; j < s; j++) {
var re = rtws[p + j];
var ie = itws[p + j];
var ro = rtws[p + j + s];
var io = itws[p + j + s];
var rx = rtwdf_ * ro - itwdf_ * io;
io = rtwdf_ * io + itwdf_ * ro;
ro = rx;
rtws[p + j] = re + ro;
itws[p + j] = ie + io;
rtws[p + j + s] = re - ro;
itws[p + j + s] = ie - io;
/* jshint maxdepth : false */
if (j !== l) {
rx = rtwdf * rtwdf_ - itwdf * itwdf_;
itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;
rtwdf_ = rx;
}
}
}
}
};
FFTM.prototype.guessLen13b = function guessLen13b (n, m) {
var N = Math.max(m, n) | 1;
var odd = N & 1;
var i = 0;
for (N = N / 2 | 0; N; N = N >>> 1) {
i++;
}
return 1 << i + 1 + odd;
};
FFTM.prototype.conjugate = function conjugate (rws, iws, N) {
if (N <= 1) return;
for (var i = 0; i < N / 2; i++) {
var t = rws[i];
rws[i] = rws[N - i - 1];
rws[N - i - 1] = t;
t = iws[i];
iws[i] = -iws[N - i - 1];
iws[N - i - 1] = -t;
}
};
FFTM.prototype.normalize13b = function normalize13b (ws, N) {
var carry = 0;
for (var i = 0; i < N / 2; i++) {
var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +
Math.round(ws[2 * i] / N) +
carry;
ws[i] = w & 0x3ffffff;
if (w < 0x4000000) {
carry = 0;
} else {
carry = w / 0x4000000 | 0;
}
}
return ws;
};
FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {
var carry = 0;
for (var i = 0; i < len; i++) {
carry = carry + (ws[i] | 0);
rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;
rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;
}
// Pad with zeroes
for (i = 2 * len; i < N; ++i) {
rws[i] = 0;
}
assert(carry === 0);
assert((carry & ~0x1fff) === 0);
};
FFTM.prototype.stub = function stub (N) {
var ph = new Array(N);
for (var i = 0; i < N; i++) {
ph[i] = 0;
}
return ph;
};
FFTM.prototype.mulp = function mulp (x, y, out) {
var N = 2 * this.guessLen13b(x.length, y.length);
var rbt = this.makeRBT(N);
var _ = this.stub(N);
var rws = new Array(N);
var rwst = new Array(N);
var iwst = new Array(N);
var nrws = new Array(N);
var nrwst = new Array(N);
var niwst = new Array(N);
var rmws = out.words;
rmws.length = N;
this.convert13b(x.words, x.length, rws, N);
this.convert13b(y.words, y.length, nrws, N);
this.transform(rws, _, rwst, iwst, N, rbt);
this.transform(nrws, _, nrwst, niwst, N, rbt);
for (var i = 0; i < N; i++) {
var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];
iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];
rwst[i] = rx;
}
this.conjugate(rwst, iwst, N);
this.transform(rwst, iwst, rmws, _, N, rbt);
this.conjugate(rmws, _, N);
this.normalize13b(rmws, N);
out.negative = x.negative ^ y.negative;
out.length = x.length + y.length;
return out.strip();
};
// Multiply `this` by `num`
BN.prototype.mul = function mul (num) {
var out = new BN(null);
out.words = new Array(this.length + num.length);
return this.mulTo(num, out);
};
// Multiply employing FFT
BN.prototype.mulf = function mulf (num) {
var out = new BN(null);
out.words = new Array(this.length + num.length);
return jumboMulTo(this, num, out);
};
// In-place Multiplication
BN.prototype.imul = function imul (num) {
return this.clone().mulTo(num, this);
};
BN.prototype.imuln = function imuln (num) {
assert(typeof num === 'number');
assert(num < 0x4000000);
// Carry
var carry = 0;
for (var i = 0; i < this.length; i++) {
var w = (this.words[i] | 0) * num;
var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);
carry >>= 26;
carry += (w / 0x4000000) | 0;
// NOTE: lo is 27bit maximum
carry += lo >>> 26;
this.words[i] = lo & 0x3ffffff;
}
if (carry !== 0) {
this.words[i] = carry;
this.length++;
}
return this;
};
BN.prototype.muln = function muln (num) {
return this.clone().imuln(num);
};
// `this` * `this`
BN.prototype.sqr = function sqr () {
return this.mul(this);
};
// `this` * `this` in-place
BN.prototype.isqr = function isqr () {
return this.imul(this.clone());
};
// Math.pow(`this`, `num`)
BN.prototype.pow = function pow (num) {
var w = toBitArray(num);
if (w.length === 0) return new BN(1);
// Skip leading zeroes
var res = this;
for (var i = 0; i < w.length; i++, res = res.sqr()) {
if (w[i] !== 0) break;
}
if (++i < w.length) {
for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {
if (w[i] === 0) continue;
res = res.mul(q);
}
}
return res;
};
// Shift-left in-place
BN.prototype.iushln = function iushln (bits) {
assert(typeof bits === 'number' && bits >= 0);
var r = bits % 26;
var s = (bits - r) / 26;
var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);
var i;
if (r !== 0) {
var carry = 0;
for (i = 0; i < this.length; i++) {
var newCarry = this.words[i] & carryMask;
var c = ((this.words[i] | 0) - newCarry) << r;
this.words[i] = c | carry;
carry = newCarry >>> (26 - r);
}
if (carry) {
this.words[i] = carry;
this.length++;
}
}
if (s !== 0) {
for (i = this.length - 1; i >= 0; i--) {
this.words[i + s] = this.words[i];
}
for (i = 0; i < s; i++) {
this.words[i] = 0;
}
this.length += s;
}
return this.strip();
};
BN.prototype.ishln = function ishln (bits) {
// TODO(indutny): implement me
assert(this.negative === 0);
return this.iushln(bits);
};
// Shift-right in-place
// NOTE: `hint` is a lowest bit before trailing zeroes
// NOTE: if `extended` is present - it will be filled with destroyed bits
BN.prototype.iushrn = function iushrn (bits, hint, extended) {
assert(typeof bits === 'number' && bits >= 0);
var h;
if (hint) {
h = (hint - (hint % 26)) / 26;
} else {
h = 0;
}
var r = bits % 26;
var s = Math.min((bits - r) / 26, this.length);
var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
var maskedWords = extended;
h -= s;
h = Math.max(0, h);
// Extended mode, copy masked part
if (maskedWords) {
for (var i = 0; i < s; i++) {
maskedWords.words[i] = this.words[i];
}
maskedWords.length = s;
}
if (s === 0) {
// No-op, we should not move anything at all
} else if (this.length > s) {
this.length -= s;
for (i = 0; i < this.length; i++) {
this.words[i] = this.words[i + s];
}
} else {
this.words[0] = 0;
this.length = 1;
}
var carry = 0;
for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {
var word = this.words[i] | 0;
this.words[i] = (carry << (26 - r)) | (word >>> r);
carry = word & mask;
}
// Push carried bits as a mask
if (maskedWords && carry !== 0) {
maskedWords.words[maskedWords.length++] = carry;
}
if (this.length === 0) {
this.words[0] = 0;
this.length = 1;
}
return this.strip();
};
BN.prototype.ishrn = function ishrn (bits, hint, extended) {
// TODO(indutny): implement me
assert(this.negative === 0);
return this.iushrn(bits, hint, extended);
};
// Shift-left
BN.prototype.shln = function shln (bits) {
return this.clone().ishln(bits);
};
BN.prototype.ushln = function ushln (bits) {
return this.clone().iushln(bits);
};
// Shift-right
BN.prototype.shrn = function shrn (bits) {
return this.clone().ishrn(bits);
};
BN.prototype.ushrn = function ushrn (bits) {
return this.clone().iushrn(bits);
};
// Test if n bit is set
BN.prototype.testn = function testn (bit) {
assert(typeof bit === 'number' && bit >= 0);
var r = bit % 26;
var s = (bit - r) / 26;
var q = 1 << r;
// Fast case: bit is much higher than all existing words
if (this.length <= s) return false;
// Check bit and return
var w = this.words[s];
return !!(w & q);
};
// Return only lowers bits of number (in-place)
BN.prototype.imaskn = function imaskn (bits) {
assert(typeof bits === 'number' && bits >= 0);
var r = bits % 26;
var s = (bits - r) / 26;
assert(this.negative === 0, 'imaskn works only with positive numbers');
if (this.length <= s) {
return this;
}
if (r !== 0) {
s++;
}
this.length = Math.min(s, this.length);
if (r !== 0) {
var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
this.words[this.length - 1] &= mask;
}
return this.strip();
};
// Return only lowers bits of number
BN.prototype.maskn = function maskn (bits) {
return this.clone().imaskn(bits);
};
// Add plain number `num` to `this`
BN.prototype.iaddn = function iaddn (num) {
assert(typeof num === 'number');
assert(num < 0x4000000);
if (num < 0) return this.isubn(-num);
// Possible sign change
if (this.negative !== 0) {
if (this.length === 1 && (this.words[0] | 0) < num) {
this.words[0] = num - (this.words[0] | 0);
this.negative = 0;
return this;
}
this.negative = 0;
this.isubn(num);
this.negative = 1;
return this;
}
// Add without checks
return this._iaddn(num);
};
BN.prototype._iaddn = function _iaddn (num) {
this.words[0] += num;
// Carry
for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {
this.words[i] -= 0x4000000;
if (i === this.length - 1) {
this.words[i + 1] = 1;
} else {
this.words[i + 1]++;
}
}
this.length = Math.max(this.length, i + 1);
return this;
};
// Subtract plain number `num` from `this`
BN.prototype.isubn = function isubn (num) {
assert(typeof num === 'number');
assert(num < 0x4000000);
if (num < 0) return this.iaddn(-num);
if (this.negative !== 0) {
this.negative = 0;
this.iaddn(num);
this.negative = 1;
return this;
}
this.words[0] -= num;
if (this.length === 1 && this.words[0] < 0) {
this.words[0] = -this.words[0];
this.negative = 1;
} else {
// Carry
for (var i = 0; i < this.length && this.words[i] < 0; i++) {
this.words[i] += 0x4000000;
this.words[i + 1] -= 1;
}
}
return this.strip();
};
BN.prototype.addn = function addn (num) {
return this.clone().iaddn(num);
};
BN.prototype.subn = function subn (num) {
return this.clone().isubn(num);
};
BN.prototype.iabs = function iabs () {
this.negative = 0;
return this;
};
BN.prototype.abs = function abs () {
return this.clone().iabs();
};
BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {
var len = num.length + shift;
var i;
this._expand(len);
var w;
var carry = 0;
for (i = 0; i < num.length; i++) {
w = (this.words[i + shift] | 0) + carry;
var right = (num.words[i] | 0) * mul;
w -= right & 0x3ffffff;
carry = (w >> 26) - ((right / 0x4000000) | 0);
this.words[i + shift] = w & 0x3ffffff;
}
for (; i < this.length - shift; i++) {
w = (this.words[i + shift] | 0) + carry;
carry = w >> 26;
this.words[i + shift] = w & 0x3ffffff;
}
if (carry === 0) return this.strip();
// Subtraction overflow
assert(carry === -1);
carry = 0;
for (i = 0; i < this.length; i++) {
w = -(this.words[i] | 0) + carry;
carry = w >> 26;
this.words[i] = w & 0x3ffffff;
}
this.negative = 1;
return this.strip();
};
BN.prototype._wordDiv = function _wordDiv (num, mode) {
var shift = this.length - num.length;
var a = this.clone();
var b = num;
// Normalize
var bhi = b.words[b.length - 1] | 0;
var bhiBits = this._countBits(bhi);
shift = 26 - bhiBits;
if (shift !== 0) {
b = b.ushln(shift);
a.iushln(shift);
bhi = b.words[b.length - 1] | 0;
}
// Initialize quotient
var m = a.length - b.length;
var q;
if (mode !== 'mod') {
q = new BN(null);
q.length = m + 1;
q.words = new Array(q.length);
for (var i = 0; i < q.length; i++) {
q.words[i] = 0;
}
}
var diff = a.clone()._ishlnsubmul(b, 1, m);
if (diff.negative === 0) {
a = diff;
if (q) {
q.words[m] = 1;
}
}
for (var j = m - 1; j >= 0; j--) {
var qj = (a.words[b.length + j] | 0) * 0x4000000 +
(a.words[b.length + j - 1] | 0);
// NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max
// (0x7ffffff)
qj = Math.min((qj / bhi) | 0, 0x3ffffff);
a._ishlnsubmul(b, qj, j);
while (a.negative !== 0) {
qj--;
a.negative = 0;
a._ishlnsubmul(b, 1, j);
if (!a.isZero()) {
a.negative ^= 1;
}
}
if (q) {
q.words[j] = qj;
}
}
if (q) {
q.strip();
}
a.strip();
// Denormalize
if (mode !== 'div' && shift !== 0) {
a.iushrn(shift);
}
return {
div: q || null,
mod: a
};
};
// NOTE: 1) `mode` can be set to `mod` to request mod only,
// to `div` to request div only, or be absent to
// request both div & mod
// 2) `positive` is true if unsigned mod is requested
BN.prototype.divmod = function divmod (num, mode, positive) {
assert(!num.isZero());
if (this.isZero()) {
return {
div: new BN(0),
mod: new BN(0)
};
}
var div, mod, res;
if (this.negative !== 0 && num.negative === 0) {
res = this.neg().divmod(num, mode);
if (mode !== 'mod') {
div = res.div.neg();
}
if (mode !== 'div') {
mod = res.mod.neg();
if (positive && mod.negative !== 0) {
mod.iadd(num);
}
}
return {
div: div,
mod: mod
};
}
if (this.negative === 0 && num.negative !== 0) {
res = this.divmod(num.neg(), mode);
if (mode !== 'mod') {
div = res.div.neg();
}
return {
div: div,
mod: res.mod
};
}
if ((this.negative & num.negative) !== 0) {
res = this.neg().divmod(num.neg(), mode);
if (mode !== 'div') {
mod = res.mod.neg();
if (positive && mod.negative !== 0) {
mod.isub(num);
}
}
return {
div: res.div,
mod: mod
};
}
// Both numbers are positive at this point
// Strip both numbers to approximate shift value
if (num.length > this.length || this.cmp(num) < 0) {
return {
div: new BN(0),
mod: this
};
}
// Very short reduction
if (num.length === 1) {
if (mode === 'div') {
return {
div: this.divn(num.words[0]),
mod: null
};
}
if (mode === 'mod') {
return {
div: null,
mod: new BN(this.modn(num.words[0]))
};
}
return {
div: this.divn(num.words[0]),
mod: new BN(this.modn(num.words[0]))
};
}
return this._wordDiv(num, mode);
};
// Find `this` / `num`
BN.prototype.div = function div (num) {
return this.divmod(num, 'div', false).div;
};
// Find `this` % `num`
BN.prototype.mod = function mod (num) {
return this.divmod(num, 'mod', false).mod;
};
BN.prototype.umod = function umod (num) {
return this.divmod(num, 'mod', true).mod;
};
// Find Round(`this` / `num`)
BN.prototype.divRound = function divRound (num) {
var dm = this.divmod(num);
// Fast case - exact division
if (dm.mod.isZero()) return dm.div;
var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;
var half = num.ushrn(1);
var r2 = num.andln(1);
var cmp = mod.cmp(half);
// Round down
if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;
// Round up
return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);
};
BN.prototype.modn = function modn (num) {
assert(num <= 0x3ffffff);
var p = (1 << 26) % num;
var acc = 0;
for (var i = this.length - 1; i >= 0; i--) {
acc = (p * acc + (this.words[i] | 0)) % num;
}
return acc;
};
// In-place division by number
BN.prototype.idivn = function idivn (num) {
assert(num <= 0x3ffffff);
var carry = 0;
for (var i = this.length - 1; i >= 0; i--) {
var w = (this.words[i] | 0) + carry * 0x4000000;
this.words[i] = (w / num) | 0;
carry = w % num;
}
return this.strip();
};
BN.prototype.divn = function divn (num) {
return this.clone().idivn(num);
};
BN.prototype.egcd = function egcd (p) {
assert(p.negative === 0);
assert(!p.isZero());
var x = this;
var y = p.clone();
if (x.negative !== 0) {
x = x.umod(p);
} else {
x = x.clone();
}
// A * x + B * y = x
var A = new BN(1);
var B = new BN(0);
// C * x + D * y = y
var C = new BN(0);
var D = new BN(1);
var g = 0;
while (x.isEven() && y.isEven()) {
x.iushrn(1);
y.iushrn(1);
++g;
}
var yp = y.clone();
var xp = x.clone();
while (!x.isZero()) {
for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
if (i > 0) {
x.iushrn(i);
while (i-- > 0) {
if (A.isOdd() || B.isOdd()) {
A.iadd(yp);
B.isub(xp);
}
A.iushrn(1);
B.iushrn(1);
}
}
for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
if (j > 0) {
y.iushrn(j);
while (j-- > 0) {
if (C.isOdd() || D.isOdd()) {
C.iadd(yp);
D.isub(xp);
}
C.iushrn(1);
D.iushrn(1);
}
}
if (x.cmp(y) >= 0) {
x.isub(y);
A.isub(C);
B.isub(D);
} else {
y.isub(x);
C.isub(A);
D.isub(B);
}
}
return {
a: C,
b: D,
gcd: y.iushln(g)
};
};
// This is reduced incarnation of the binary EEA
// above, designated to invert members of the
// _prime_ fields F(p) at a maximal speed
BN.prototype._invmp = function _invmp (p) {
assert(p.negative === 0);
assert(!p.isZero());
var a = this;
var b = p.clone();
if (a.negative !== 0) {
a = a.umod(p);
} else {
a = a.clone();
}
var x1 = new BN(1);
var x2 = new BN(0);
var delta = b.clone();
while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {
for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
if (i > 0) {
a.iushrn(i);
while (i-- > 0) {
if (x1.isOdd()) {
x1.iadd(delta);
}
x1.iushrn(1);
}
}
for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
if (j > 0) {
b.iushrn(j);
while (j-- > 0) {
if (x2.isOdd()) {
x2.iadd(delta);
}
x2.iushrn(1);
}
}
if (a.cmp(b) >= 0) {
a.isub(b);
x1.isub(x2);
} else {
b.isub(a);
x2.isub(x1);
}
}
var res;
if (a.cmpn(1) === 0) {
res = x1;
} else {
res = x2;
}
if (res.cmpn(0) < 0) {
res.iadd(p);
}
return res;
};
BN.prototype.gcd = function gcd (num) {
if (this.isZero()) return num.abs();
if (num.isZero()) return this.abs();
var a = this.clone();
var b = num.clone();
a.negative = 0;
b.negative = 0;
// Remove common factor of two
for (var shift = 0; a.isEven() && b.isEven(); shift++) {
a.iushrn(1);
b.iushrn(1);
}
do {
while (a.isEven()) {
a.iushrn(1);
}
while (b.isEven()) {
b.iushrn(1);
}
var r = a.cmp(b);
if (r < 0) {
// Swap `a` and `b` to make `a` always bigger than `b`
var t = a;
a = b;
b = t;
} else if (r === 0 || b.cmpn(1) === 0) {
break;
}
a.isub(b);
} while (true);
return b.iushln(shift);
};
// Invert number in the field F(num)
BN.prototype.invm = function invm (num) {
return this.egcd(num).a.umod(num);
};
BN.prototype.isEven = function isEven () {
return (this.words[0] & 1) === 0;
};
BN.prototype.isOdd = function isOdd () {
return (this.words[0] & 1) === 1;
};
// And first word and num
BN.prototype.andln = function andln (num) {
return this.words[0] & num;
};
// Increment at the bit position in-line
BN.prototype.bincn = function bincn (bit) {
assert(typeof bit === 'number');
var r = bit % 26;
var s = (bit - r) / 26;
var q = 1 << r;
// Fast case: bit is much higher than all existing words
if (this.length <= s) {
this._expand(s + 1);
this.words[s] |= q;
return this;
}
// Add bit and propagate, if needed
var carry = q;
for (var i = s; carry !== 0 && i < this.length; i++) {
var w = this.words[i] | 0;
w += carry;
carry = w >>> 26;
w &= 0x3ffffff;
this.words[i] = w;
}
if (carry !== 0) {
this.words[i] = carry;
this.length++;
}
return this;
};
BN.prototype.isZero = function isZero () {
return this.length === 1 && this.words[0] === 0;
};
BN.prototype.cmpn = function cmpn (num) {
var negative = num < 0;
if (this.negative !== 0 && !negative) return -1;
if (this.negative === 0 && negative) return 1;
this.strip();
var res;
if (this.length > 1) {
res = 1;
} else {
if (negative) {
num = -num;
}
assert(num <= 0x3ffffff, 'Number is too big');
var w = this.words[0] | 0;
res = w === num ? 0 : w < num ? -1 : 1;
}
if (this.negative !== 0) return -res | 0;
return res;
};
// Compare two numbers and return:
// 1 - if `this` > `num`
// 0 - if `this` == `num`
// -1 - if `this` < `num`
BN.prototype.cmp = function cmp (num) {
if (this.negative !== 0 && num.negative === 0) return -1;
if (this.negative === 0 && num.negative !== 0) return 1;
var res = this.ucmp(num);
if (this.negative !== 0) return -res | 0;
return res;
};
// Unsigned comparison
BN.prototype.ucmp = function ucmp (num) {
// At this point both numbers have the same sign
if (this.length > num.length) return 1;
if (this.length < num.length) return -1;
var res = 0;
for (var i = this.length - 1; i >= 0; i--) {
var a = this.words[i] | 0;
var b = num.words[i] | 0;
if (a === b) continue;
if (a < b) {
res = -1;
} else if (a > b) {
res = 1;
}
break;
}
return res;
};
BN.prototype.gtn = function gtn (num) {
return this.cmpn(num) === 1;
};
BN.prototype.gt = function gt (num) {
return this.cmp(num) === 1;
};
BN.prototype.gten = function gten (num) {
return this.cmpn(num) >= 0;
};
BN.prototype.gte = function gte (num) {
return this.cmp(num) >= 0;
};
BN.prototype.ltn = function ltn (num) {
return this.cmpn(num) === -1;
};
BN.prototype.lt = function lt (num) {
return this.cmp(num) === -1;
};
BN.prototype.lten = function lten (num) {
return this.cmpn(num) <= 0;
};
BN.prototype.lte = function lte (num) {
return this.cmp(num) <= 0;
};
BN.prototype.eqn = function eqn (num) {
return this.cmpn(num) === 0;
};
BN.prototype.eq = function eq (num) {
return this.cmp(num) === 0;
};
//
// A reduce context, could be using montgomery or something better, depending
// on the `m` itself.
//
BN.red = function red (num) {
return new Red(num);
};
BN.prototype.toRed = function toRed (ctx) {
assert(!this.red, 'Already a number in reduction context');
assert(this.negative === 0, 'red works only with positives');
return ctx.convertTo(this)._forceRed(ctx);
};
BN.prototype.fromRed = function fromRed () {
assert(this.red, 'fromRed works only with numbers in reduction context');
return this.red.convertFrom(this);
};
BN.prototype._forceRed = function _forceRed (ctx) {
this.red = ctx;
return this;
};
BN.prototype.forceRed = function forceRed (ctx) {
assert(!this.red, 'Already a number in reduction context');
return this._forceRed(ctx);
};
BN.prototype.redAdd = function redAdd (num) {
assert(this.red, 'redAdd works only with red numbers');
return this.red.add(this, num);
};
BN.prototype.redIAdd = function redIAdd (num) {
assert(this.red, 'redIAdd works only with red numbers');
return this.red.iadd(this, num);
};
BN.prototype.redSub = function redSub (num) {
assert(this.red, 'redSub works only with red numbers');
return this.red.sub(this, num);
};
BN.prototype.redISub = function redISub (num) {
assert(this.red, 'redISub works only with red numbers');
return this.red.isub(this, num);
};
BN.prototype.redShl = function redShl (num) {
assert(this.red, 'redShl works only with red numbers');
return this.red.shl(this, num);
};
BN.prototype.redMul = function redMul (num) {
assert(this.red, 'redMul works only with red numbers');
this.red._verify2(this, num);
return this.red.mul(this, num);
};
BN.prototype.redIMul = function redIMul (num) {
assert(this.red, 'redMul works only with red numbers');
this.red._verify2(this, num);
return this.red.imul(this, num);
};
BN.prototype.redSqr = function redSqr () {
assert(this.red, 'redSqr works only with red numbers');
this.red._verify1(this);
return this.red.sqr(this);
};
BN.prototype.redISqr = function redISqr () {
assert(this.red, 'redISqr works only with red numbers');
this.red._verify1(this);
return this.red.isqr(this);
};
// Square root over p
BN.prototype.redSqrt = function redSqrt () {
assert(this.red, 'redSqrt works only with red numbers');
this.red._verify1(this);
return this.red.sqrt(this);
};
BN.prototype.redInvm = function redInvm () {
assert(this.red, 'redInvm works only with red numbers');
this.red._verify1(this);
return this.red.invm(this);
};
// Return negative clone of `this` % `red modulo`
BN.prototype.redNeg = function redNeg () {
assert(this.red, 'redNeg works only with red numbers');
this.red._verify1(this);
return this.red.neg(this);
};
BN.prototype.redPow = function redPow (num) {
assert(this.red && !num.red, 'redPow(normalNum)');
this.red._verify1(this);
return this.red.pow(this, num);
};
// Prime numbers with efficient reduction
var primes = {
k256: null,
p224: null,
p192: null,
p25519: null
};
// Pseudo-Mersenne prime
function MPrime (name, p) {
// P = 2 ^ N - K
this.name = name;
this.p = new BN(p, 16);
this.n = this.p.bitLength();
this.k = new BN(1).iushln(this.n).isub(this.p);
this.tmp = this._tmp();
}
MPrime.prototype._tmp = function _tmp () {
var tmp = new BN(null);
tmp.words = new Array(Math.ceil(this.n / 13));
return tmp;
};
MPrime.prototype.ireduce = function ireduce (num) {
// Assumes that `num` is less than `P^2`
// num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)
var r = num;
var rlen;
do {
this.split(r, this.tmp);
r = this.imulK(r);
r = r.iadd(this.tmp);
rlen = r.bitLength();
} while (rlen > this.n);
var cmp = rlen < this.n ? -1 : r.ucmp(this.p);
if (cmp === 0) {
r.words[0] = 0;
r.length = 1;
} else if (cmp > 0) {
r.isub(this.p);
} else {
if (r.strip !== undefined) {
// r is BN v4 instance
r.strip();
} else {
// r is BN v5 instance
r._strip();
}
}
return r;
};
MPrime.prototype.split = function split (input, out) {
input.iushrn(this.n, 0, out);
};
MPrime.prototype.imulK = function imulK (num) {
return num.imul(this.k);
};
function K256 () {
MPrime.call(
this,
'k256',
'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');
}
inherits(K256, MPrime);
K256.prototype.split = function split (input, output) {
// 256 = 9 * 26 + 22
var mask = 0x3fffff;
var outLen = Math.min(input.length, 9);
for (var i = 0; i < outLen; i++) {
output.words[i] = input.words[i];
}
output.length = outLen;
if (input.length <= 9) {
input.words[0] = 0;
input.length = 1;
return;
}
// Shift by 9 limbs
var prev = input.words[9];
output.words[output.length++] = prev & mask;
for (i = 10; i < input.length; i++) {
var next = input.words[i] | 0;
input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);
prev = next;
}
prev >>>= 22;
input.words[i - 10] = prev;
if (prev === 0 && input.length > 10) {
input.length -= 10;
} else {
input.length -= 9;
}
};
K256.prototype.imulK = function imulK (num) {
// K = 0x1000003d1 = [ 0x40, 0x3d1 ]
num.words[num.length] = 0;
num.words[num.length + 1] = 0;
num.length += 2;
// bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390
var lo = 0;
for (var i = 0; i < num.length; i++) {
var w = num.words[i] | 0;
lo += w * 0x3d1;
num.words[i] = lo & 0x3ffffff;
lo = w * 0x40 + ((lo / 0x4000000) | 0);
}
// Fast length reduction
if (num.words[num.length - 1] === 0) {
num.length--;
if (num.words[num.length - 1] === 0) {
num.length--;
}
}
return num;
};
function P224 () {
MPrime.call(
this,
'p224',
'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');
}
inherits(P224, MPrime);
function P192 () {
MPrime.call(
this,
'p192',
'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');
}
inherits(P192, MPrime);
function P25519 () {
// 2 ^ 255 - 19
MPrime.call(
this,
'25519',
'7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');
}
inherits(P25519, MPrime);
P25519.prototype.imulK = function imulK (num) {
// K = 0x13
var carry = 0;
for (var i = 0; i < num.length; i++) {
var hi = (num.words[i] | 0) * 0x13 + carry;
var lo = hi & 0x3ffffff;
hi >>>= 26;
num.words[i] = lo;
carry = hi;
}
if (carry !== 0) {
num.words[num.length++] = carry;
}
return num;
};
// Exported mostly for testing purposes, use plain name instead
BN._prime = function prime (name) {
// Cached version of prime
if (primes[name]) return primes[name];
var prime;
if (name === 'k256') {
prime = new K256();
} else if (name === 'p224') {
prime = new P224();
} else if (name === 'p192') {
prime = new P192();
} else if (name === 'p25519') {
prime = new P25519();
} else {
throw new Error('Unknown prime ' + name);
}
primes[name] = prime;
return prime;
};
//
// Base reduction engine
//
function Red (m) {
if (typeof m === 'string') {
var prime = BN._prime(m);
this.m = prime.p;
this.prime = prime;
} else {
assert(m.gtn(1), 'modulus must be greater than 1');
this.m = m;
this.prime = null;
}
}
Red.prototype._verify1 = function _verify1 (a) {
assert(a.negative === 0, 'red works only with positives');
assert(a.red, 'red works only with red numbers');
};
Red.prototype._verify2 = function _verify2 (a, b) {
assert((a.negative | b.negative) === 0, 'red works only with positives');
assert(a.red && a.red === b.red,
'red works only with red numbers');
};
Red.prototype.imod = function imod (a) {
if (this.prime) return this.prime.ireduce(a)._forceRed(this);
return a.umod(this.m)._forceRed(this);
};
Red.prototype.neg = function neg (a) {
if (a.isZero()) {
return a.clone();
}
return this.m.sub(a)._forceRed(this);
};
Red.prototype.add = function add (a, b) {
this._verify2(a, b);
var res = a.add(b);
if (res.cmp(this.m) >= 0) {
res.isub(this.m);
}
return res._forceRed(this);
};
Red.prototype.iadd = function iadd (a, b) {
this._verify2(a, b);
var res = a.iadd(b);
if (res.cmp(this.m) >= 0) {
res.isub(this.m);
}
return res;
};
Red.prototype.sub = function sub (a, b) {
this._verify2(a, b);
var res = a.sub(b);
if (res.cmpn(0) < 0) {
res.iadd(this.m);
}
return res._forceRed(this);
};
Red.prototype.isub = function isub (a, b) {
this._verify2(a, b);
var res = a.isub(b);
if (res.cmpn(0) < 0) {
res.iadd(this.m);
}
return res;
};
Red.prototype.shl = function shl (a, num) {
this._verify1(a);
return this.imod(a.ushln(num));
};
Red.prototype.imul = function imul (a, b) {
this._verify2(a, b);
return this.imod(a.imul(b));
};
Red.prototype.mul = function mul (a, b) {
this._verify2(a, b);
return this.imod(a.mul(b));
};
Red.prototype.isqr = function isqr (a) {
return this.imul(a, a.clone());
};
Red.prototype.sqr = function sqr (a) {
return this.mul(a, a);
};
Red.prototype.sqrt = function sqrt (a) {
if (a.isZero()) return a.clone();
var mod3 = this.m.andln(3);
assert(mod3 % 2 === 1);
// Fast case
if (mod3 === 3) {
var pow = this.m.add(new BN(1)).iushrn(2);
return this.pow(a, pow);
}
// Tonelli-Shanks algorithm (Totally unoptimized and slow)
//
// Find Q and S, that Q * 2 ^ S = (P - 1)
var q = this.m.subn(1);
var s = 0;
while (!q.isZero() && q.andln(1) === 0) {
s++;
q.iushrn(1);
}
assert(!q.isZero());
var one = new BN(1).toRed(this);
var nOne = one.redNeg();
// Find quadratic non-residue
// NOTE: Max is such because of generalized Riemann hypothesis.
var lpow = this.m.subn(1).iushrn(1);
var z = this.m.bitLength();
z = new BN(2 * z * z).toRed(this);
while (this.pow(z, lpow).cmp(nOne) !== 0) {
z.redIAdd(nOne);
}
var c = this.pow(z, q);
var r = this.pow(a, q.addn(1).iushrn(1));
var t = this.pow(a, q);
var m = s;
while (t.cmp(one) !== 0) {
var tmp = t;
for (var i = 0; tmp.cmp(one) !== 0; i++) {
tmp = tmp.redSqr();
}
assert(i < m);
var b = this.pow(c, new BN(1).iushln(m - i - 1));
r = r.redMul(b);
c = b.redSqr();
t = t.redMul(c);
m = i;
}
return r;
};
Red.prototype.invm = function invm (a) {
var inv = a._invmp(this.m);
if (inv.negative !== 0) {
inv.negative = 0;
return this.imod(inv).redNeg();
} else {
return this.imod(inv);
}
};
Red.prototype.pow = function pow (a, num) {
if (num.isZero()) return new BN(1).toRed(this);
if (num.cmpn(1) === 0) return a.clone();
var windowSize = 4;
var wnd = new Array(1 << windowSize);
wnd[0] = new BN(1).toRed(this);
wnd[1] = a;
for (var i = 2; i < wnd.length; i++) {
wnd[i] = this.mul(wnd[i - 1], a);
}
var res = wnd[0];
var current = 0;
var currentLen = 0;
var start = num.bitLength() % 26;
if (start === 0) {
start = 26;
}
for (i = num.length - 1; i >= 0; i--) {
var word = num.words[i];
for (var j = start - 1; j >= 0; j--) {
var bit = (word >> j) & 1;
if (res !== wnd[0]) {
res = this.sqr(res);
}
if (bit === 0 && current === 0) {
currentLen = 0;
continue;
}
current <<= 1;
current |= bit;
currentLen++;
if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;
res = this.mul(res, wnd[current]);
currentLen = 0;
current = 0;
}
start = 26;
}
return res;
};
Red.prototype.convertTo = function convertTo (num) {
var r = num.umod(this.m);
return r === num ? r.clone() : r;
};
Red.prototype.convertFrom = function convertFrom (num) {
var res = num.clone();
res.red = null;
return res;
};
//
// Montgomery method engine
//
BN.mont = function mont (num) {
return new Mont(num);
};
function Mont (m) {
Red.call(this, m);
this.shift = this.m.bitLength();
if (this.shift % 26 !== 0) {
this.shift += 26 - (this.shift % 26);
}
this.r = new BN(1).iushln(this.shift);
this.r2 = this.imod(this.r.sqr());
this.rinv = this.r._invmp(this.m);
this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);
this.minv = this.minv.umod(this.r);
this.minv = this.r.sub(this.minv);
}
inherits(Mont, Red);
Mont.prototype.convertTo = function convertTo (num) {
return this.imod(num.ushln(this.shift));
};
Mont.prototype.convertFrom = function convertFrom (num) {
var r = this.imod(num.mul(this.rinv));
r.red = null;
return r;
};
Mont.prototype.imul = function imul (a, b) {
if (a.isZero() || b.isZero()) {
a.words[0] = 0;
a.length = 1;
return a;
}
var t = a.imul(b);
var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
var u = t.isub(c).iushrn(this.shift);
var res = u;
if (u.cmp(this.m) >= 0) {
res = u.isub(this.m);
} else if (u.cmpn(0) < 0) {
res = u.iadd(this.m);
}
return res._forceRed(this);
};
Mont.prototype.mul = function mul (a, b) {
if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);
var t = a.mul(b);
var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
var u = t.isub(c).iushrn(this.shift);
var res = u;
if (u.cmp(this.m) >= 0) {
res = u.isub(this.m);
} else if (u.cmpn(0) < 0) {
res = u.iadd(this.m);
}
return res._forceRed(this);
};
Mont.prototype.invm = function invm (a) {
// (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R
var res = this.imod(a._invmp(this.m).mul(this.r2));
return res._forceRed(this);
};
})( false || module, this);
/***/ }),
/***/ 7108:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var inherits = __webpack_require__(6698)
var MD5 = __webpack_require__(8276)
var RIPEMD160 = __webpack_require__(6011)
var sha = __webpack_require__(2802)
var Base = __webpack_require__(6168)
function Hash (hash) {
Base.call(this, 'digest')
this._hash = hash
}
inherits(Hash, Base)
Hash.prototype._update = function (data) {
this._hash.update(data)
}
Hash.prototype._final = function () {
return this._hash.digest()
}
module.exports = function createHash (alg) {
alg = alg.toLowerCase()
if (alg === 'md5') return new MD5()
if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160()
return new Hash(sha(alg))
}
/***/ }),
/***/ 320:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var MD5 = __webpack_require__(8276)
module.exports = function (buffer) {
return new MD5().update(buffer).digest()
}
/***/ }),
/***/ 3507:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var inherits = __webpack_require__(6698)
var Legacy = __webpack_require__(1800)
var Base = __webpack_require__(6168)
var Buffer = (__webpack_require__(2861).Buffer)
var md5 = __webpack_require__(320)
var RIPEMD160 = __webpack_require__(6011)
var sha = __webpack_require__(2802)
var ZEROS = Buffer.alloc(128)
function Hmac (alg, key) {
Base.call(this, 'digest')
if (typeof key === 'string') {
key = Buffer.from(key)
}
var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64
this._alg = alg
this._key = key
if (key.length > blocksize) {
var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)
key = hash.update(key).digest()
} else if (key.length < blocksize) {
key = Buffer.concat([key, ZEROS], blocksize)
}
var ipad = this._ipad = Buffer.allocUnsafe(blocksize)
var opad = this._opad = Buffer.allocUnsafe(blocksize)
for (var i = 0; i < blocksize; i++) {
ipad[i] = key[i] ^ 0x36
opad[i] = key[i] ^ 0x5C
}
this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)
this._hash.update(ipad)
}
inherits(Hmac, Base)
Hmac.prototype._update = function (data) {
this._hash.update(data)
}
Hmac.prototype._final = function () {
var h = this._hash.digest()
var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)
return hash.update(this._opad).update(h).digest()
}
module.exports = function createHmac (alg, key) {
alg = alg.toLowerCase()
if (alg === 'rmd160' || alg === 'ripemd160') {
return new Hmac('rmd160', key)
}
if (alg === 'md5') {
return new Legacy(md5, key)
}
return new Hmac(alg, key)
}
/***/ }),
/***/ 1800:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var inherits = __webpack_require__(6698)
var Buffer = (__webpack_require__(2861).Buffer)
var Base = __webpack_require__(6168)
var ZEROS = Buffer.alloc(128)
var blocksize = 64
function Hmac (alg, key) {
Base.call(this, 'digest')
if (typeof key === 'string') {
key = Buffer.from(key)
}
this._alg = alg
this._key = key
if (key.length > blocksize) {
key = alg(key)
} else if (key.length < blocksize) {
key = Buffer.concat([key, ZEROS], blocksize)
}
var ipad = this._ipad = Buffer.allocUnsafe(blocksize)
var opad = this._opad = Buffer.allocUnsafe(blocksize)
for (var i = 0; i < blocksize; i++) {
ipad[i] = key[i] ^ 0x36
opad[i] = key[i] ^ 0x5C
}
this._hash = [ipad]
}
inherits(Hmac, Base)
Hmac.prototype._update = function (data) {
this._hash.push(data)
}
Hmac.prototype._final = function () {
var h = this._alg(Buffer.concat(this._hash))
return this._alg(Buffer.concat([this._opad, h]))
}
module.exports = Hmac
/***/ }),
/***/ 1565:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
var __webpack_unused_export__;
__webpack_unused_export__ = __webpack_unused_export__ = __webpack_unused_export__ = /* unused reexport */ __webpack_require__(3209)
__webpack_unused_export__ = /* unused reexport */ __webpack_require__(7108)
__webpack_unused_export__ = /* unused reexport */ __webpack_require__(3507)
var algos = __webpack_require__(5715)
var algoKeys = Object.keys(algos)
var hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys)
__webpack_unused_export__ = function () {
return hashes
}
var p = __webpack_require__(8396)
__webpack_unused_export__ = p.pbkdf2
__webpack_unused_export__ = p.pbkdf2Sync
var aes = __webpack_require__(125)
__webpack_unused_export__ = aes.Cipher
__webpack_unused_export__ = aes.createCipher
__webpack_unused_export__ = aes.Cipheriv
__webpack_unused_export__ = aes.createCipheriv
__webpack_unused_export__ = aes.Decipher
__webpack_unused_export__ = aes.createDecipher
__webpack_unused_export__ = aes.Decipheriv
__webpack_unused_export__ = aes.createDecipheriv
__webpack_unused_export__ = aes.getCiphers
__webpack_unused_export__ = aes.listCiphers
var dh = __webpack_require__(5380)
__webpack_unused_export__ = dh.DiffieHellmanGroup
__webpack_unused_export__ = dh.createDiffieHellmanGroup
__webpack_unused_export__ = dh.getDiffieHellman
__webpack_unused_export__ = dh.createDiffieHellman
__webpack_unused_export__ = dh.DiffieHellman
var sign = __webpack_require__(20)
__webpack_unused_export__ = sign.createSign
__webpack_unused_export__ = sign.Sign
__webpack_unused_export__ = sign.createVerify
__webpack_unused_export__ = sign.Verify
/* unused reexport */ __webpack_require__(1324)
var publicEncrypt = __webpack_require__(7168)
__webpack_unused_export__ = publicEncrypt.publicEncrypt
__webpack_unused_export__ = publicEncrypt.privateEncrypt
__webpack_unused_export__ = publicEncrypt.publicDecrypt
__webpack_unused_export__ = publicEncrypt.privateDecrypt
// the least I can do is make error messages for the rest of the node.js/crypto api.
// ;[
// 'createCredentials'
// ].forEach(function (name) {
// exports[name] = function () {
// throw new Error([
// 'sorry, ' + name + ' is not implemented yet',
// 'we accept pull requests',
// 'https://github.com/crypto-browserify/crypto-browserify'
// ].join('\n'))
// }
// })
var rf = __webpack_require__(6983)
__webpack_unused_export__ = rf.randomFill
__webpack_unused_export__ = rf.randomFillSync
__webpack_unused_export__ = function () {
throw new Error([
'sorry, createCredentials is not implemented yet',
'we accept pull requests',
'https://github.com/crypto-browserify/crypto-browserify'
].join('\n'))
}
__webpack_unused_export__ = {
'DH_CHECK_P_NOT_SAFE_PRIME': 2,
'DH_CHECK_P_NOT_PRIME': 1,
'DH_UNABLE_TO_CHECK_GENERATOR': 4,
'DH_NOT_SUITABLE_GENERATOR': 8,
'NPN_ENABLED': 1,
'ALPN_ENABLED': 1,
'RSA_PKCS1_PADDING': 1,
'RSA_SSLV23_PADDING': 2,
'RSA_NO_PADDING': 3,
'RSA_PKCS1_OAEP_PADDING': 4,
'RSA_X931_PADDING': 5,
'RSA_PKCS1_PSS_PADDING': 6,
'POINT_CONVERSION_COMPRESSED': 2,
'POINT_CONVERSION_UNCOMPRESSED': 4,
'POINT_CONVERSION_HYBRID': 6
}
/***/ }),
/***/ 41:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var $defineProperty = __webpack_require__(655);
var $SyntaxError = __webpack_require__(8068);
var $TypeError = __webpack_require__(9675);
var gopd = __webpack_require__(5795);
/** @type {import('.')} */
module.exports = function defineDataProperty(
obj,
property,
value
) {
if (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {
throw new $TypeError('`obj` must be an object or a function`');
}
if (typeof property !== 'string' && typeof property !== 'symbol') {
throw new $TypeError('`property` must be a string or a symbol`');
}
if (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {
throw new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');
}
if (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {
throw new $TypeError('`nonWritable`, if provided, must be a boolean or null');
}
if (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {
throw new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');
}
if (arguments.length > 6 && typeof arguments[6] !== 'boolean') {
throw new $TypeError('`loose`, if provided, must be a boolean');
}
var nonEnumerable = arguments.length > 3 ? arguments[3] : null;
var nonWritable = arguments.length > 4 ? arguments[4] : null;
var nonConfigurable = arguments.length > 5 ? arguments[5] : null;
var loose = arguments.length > 6 ? arguments[6] : false;
/* @type {false | TypedPropertyDescriptor<unknown>} */
var desc = !!gopd && gopd(obj, property);
if ($defineProperty) {
$defineProperty(obj, property, {
configurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,
enumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,
value: value,
writable: nonWritable === null && desc ? desc.writable : !nonWritable
});
} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {
// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable
obj[property] = value; // eslint-disable-line no-param-reassign
} else {
throw new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');
}
};
/***/ }),
/***/ 8452:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var keys = __webpack_require__(1189);
var hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';
var toStr = Object.prototype.toString;
var concat = Array.prototype.concat;
var defineDataProperty = __webpack_require__(41);
var isFunction = function (fn) {
return typeof fn === 'function' && toStr.call(fn) === '[object Function]';
};
var supportsDescriptors = __webpack_require__(592)();
var defineProperty = function (object, name, value, predicate) {
if (name in object) {
if (predicate === true) {
if (object[name] === value) {
return;
}
} else if (!isFunction(predicate) || !predicate()) {
return;
}
}
if (supportsDescriptors) {
defineDataProperty(object, name, value, true);
} else {
defineDataProperty(object, name, value);
}
};
var defineProperties = function (object, map) {
var predicates = arguments.length > 2 ? arguments[2] : {};
var props = keys(map);
if (hasSymbols) {
props = concat.call(props, Object.getOwnPropertySymbols(map));
}
for (var i = 0; i < props.length; i += 1) {
defineProperty(object, props[i], map[props[i]], predicates[props[i]]);
}
};
defineProperties.supportsDescriptors = !!supportsDescriptors;
module.exports = defineProperties;
/***/ }),
/***/ 9560:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
exports.utils = __webpack_require__(7626);
exports.Cipher = __webpack_require__(2808);
exports.DES = __webpack_require__(2211);
exports.CBC = __webpack_require__(3389);
exports.EDE = __webpack_require__(5279);
/***/ }),
/***/ 3389:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
var assert = __webpack_require__(3349);
var inherits = __webpack_require__(6698);
var proto = {};
function CBCState(iv) {
assert.equal(iv.length, 8, 'Invalid IV length');
this.iv = new Array(8);
for (var i = 0; i < this.iv.length; i++)
this.iv[i] = iv[i];
}
function instantiate(Base) {
function CBC(options) {
Base.call(this, options);
this._cbcInit();
}
inherits(CBC, Base);
var keys = Object.keys(proto);
for (var i = 0; i < keys.length; i++) {
var key = keys[i];
CBC.prototype[key] = proto[key];
}
CBC.create = function create(options) {
return new CBC(options);
};
return CBC;
}
exports.instantiate = instantiate;
proto._cbcInit = function _cbcInit() {
var state = new CBCState(this.options.iv);
this._cbcState = state;
};
proto._update = function _update(inp, inOff, out, outOff) {
var state = this._cbcState;
var superProto = this.constructor.super_.prototype;
var iv = state.iv;
if (this.type === 'encrypt') {
for (var i = 0; i < this.blockSize; i++)
iv[i] ^= inp[inOff + i];
superProto._update.call(this, iv, 0, out, outOff);
for (var i = 0; i < this.blockSize; i++)
iv[i] = out[outOff + i];
} else {
superProto._update.call(this, inp, inOff, out, outOff);
for (var i = 0; i < this.blockSize; i++)
out[outOff + i] ^= iv[i];
for (var i = 0; i < this.blockSize; i++)
iv[i] = inp[inOff + i];
}
};
/***/ }),
/***/ 2808:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var assert = __webpack_require__(3349);
function Cipher(options) {
this.options = options;
this.type = this.options.type;
this.blockSize = 8;
this._init();
this.buffer = new Array(this.blockSize);
this.bufferOff = 0;
this.padding = options.padding !== false
}
module.exports = Cipher;
Cipher.prototype._init = function _init() {
// Might be overrided
};
Cipher.prototype.update = function update(data) {
if (data.length === 0)
return [];
if (this.type === 'decrypt')
return this._updateDecrypt(data);
else
return this._updateEncrypt(data);
};
Cipher.prototype._buffer = function _buffer(data, off) {
// Append data to buffer
var min = Math.min(this.buffer.length - this.bufferOff, data.length - off);
for (var i = 0; i < min; i++)
this.buffer[this.bufferOff + i] = data[off + i];
this.bufferOff += min;
// Shift next
return min;
};
Cipher.prototype._flushBuffer = function _flushBuffer(out, off) {
this._update(this.buffer, 0, out, off);
this.bufferOff = 0;
return this.blockSize;
};
Cipher.prototype._updateEncrypt = function _updateEncrypt(data) {
var inputOff = 0;
var outputOff = 0;
var count = ((this.bufferOff + data.length) / this.blockSize) | 0;
var out = new Array(count * this.blockSize);
if (this.bufferOff !== 0) {
inputOff += this._buffer(data, inputOff);
if (this.bufferOff === this.buffer.length)
outputOff += this._flushBuffer(out, outputOff);
}
// Write blocks
var max = data.length - ((data.length - inputOff) % this.blockSize);
for (; inputOff < max; inputOff += this.blockSize) {
this._update(data, inputOff, out, outputOff);
outputOff += this.blockSize;
}
// Queue rest
for (; inputOff < data.length; inputOff++, this.bufferOff++)
this.buffer[this.bufferOff] = data[inputOff];
return out;
};
Cipher.prototype._updateDecrypt = function _updateDecrypt(data) {
var inputOff = 0;
var outputOff = 0;
var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;
var out = new Array(count * this.blockSize);
// TODO(indutny): optimize it, this is far from optimal
for (; count > 0; count--) {
inputOff += this._buffer(data, inputOff);
outputOff += this._flushBuffer(out, outputOff);
}
// Buffer rest of the input
inputOff += this._buffer(data, inputOff);
return out;
};
Cipher.prototype.final = function final(buffer) {
var first;
if (buffer)
first = this.update(buffer);
var last;
if (this.type === 'encrypt')
last = this._finalEncrypt();
else
last = this._finalDecrypt();
if (first)
return first.concat(last);
else
return last;
};
Cipher.prototype._pad = function _pad(buffer, off) {
if (off === 0)
return false;
while (off < buffer.length)
buffer[off++] = 0;
return true;
};
Cipher.prototype._finalEncrypt = function _finalEncrypt() {
if (!this._pad(this.buffer, this.bufferOff))
return [];
var out = new Array(this.blockSize);
this._update(this.buffer, 0, out, 0);
return out;
};
Cipher.prototype._unpad = function _unpad(buffer) {
return buffer;
};
Cipher.prototype._finalDecrypt = function _finalDecrypt() {
assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt');
var out = new Array(this.blockSize);
this._flushBuffer(out, 0);
return this._unpad(out);
};
/***/ }),
/***/ 2211:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var assert = __webpack_require__(3349);
var inherits = __webpack_require__(6698);
var utils = __webpack_require__(7626);
var Cipher = __webpack_require__(2808);
function DESState() {
this.tmp = new Array(2);
this.keys = null;
}
function DES(options) {
Cipher.call(this, options);
var state = new DESState();
this._desState = state;
this.deriveKeys(state, options.key);
}
inherits(DES, Cipher);
module.exports = DES;
DES.create = function create(options) {
return new DES(options);
};
var shiftTable = [
1, 1, 2, 2, 2, 2, 2, 2,
1, 2, 2, 2, 2, 2, 2, 1
];
DES.prototype.deriveKeys = function deriveKeys(state, key) {
state.keys = new Array(16 * 2);
assert.equal(key.length, this.blockSize, 'Invalid key length');
var kL = utils.readUInt32BE(key, 0);
var kR = utils.readUInt32BE(key, 4);
utils.pc1(kL, kR, state.tmp, 0);
kL = state.tmp[0];
kR = state.tmp[1];
for (var i = 0; i < state.keys.length; i += 2) {
var shift = shiftTable[i >>> 1];
kL = utils.r28shl(kL, shift);
kR = utils.r28shl(kR, shift);
utils.pc2(kL, kR, state.keys, i);
}
};
DES.prototype._update = function _update(inp, inOff, out, outOff) {
var state = this._desState;
var l = utils.readUInt32BE(inp, inOff);
var r = utils.readUInt32BE(inp, inOff + 4);
// Initial Permutation
utils.ip(l, r, state.tmp, 0);
l = state.tmp[0];
r = state.tmp[1];
if (this.type === 'encrypt')
this._encrypt(state, l, r, state.tmp, 0);
else
this._decrypt(state, l, r, state.tmp, 0);
l = state.tmp[0];
r = state.tmp[1];
utils.writeUInt32BE(out, l, outOff);
utils.writeUInt32BE(out, r, outOff + 4);
};
DES.prototype._pad = function _pad(buffer, off) {
if (this.padding === false) {
return false;
}
var value = buffer.length - off;
for (var i = off; i < buffer.length; i++)
buffer[i] = value;
return true;
};
DES.prototype._unpad = function _unpad(buffer) {
if (this.padding === false) {
return buffer;
}
var pad = buffer[buffer.length - 1];
for (var i = buffer.length - pad; i < buffer.length; i++)
assert.equal(buffer[i], pad);
return buffer.slice(0, buffer.length - pad);
};
DES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {
var l = lStart;
var r = rStart;
// Apply f() x16 times
for (var i = 0; i < state.keys.length; i += 2) {
var keyL = state.keys[i];
var keyR = state.keys[i + 1];
// f(r, k)
utils.expand(r, state.tmp, 0);
keyL ^= state.tmp[0];
keyR ^= state.tmp[1];
var s = utils.substitute(keyL, keyR);
var f = utils.permute(s);
var t = r;
r = (l ^ f) >>> 0;
l = t;
}
// Reverse Initial Permutation
utils.rip(r, l, out, off);
};
DES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {
var l = rStart;
var r = lStart;
// Apply f() x16 times
for (var i = state.keys.length - 2; i >= 0; i -= 2) {
var keyL = state.keys[i];
var keyR = state.keys[i + 1];
// f(r, k)
utils.expand(l, state.tmp, 0);
keyL ^= state.tmp[0];
keyR ^= state.tmp[1];
var s = utils.substitute(keyL, keyR);
var f = utils.permute(s);
var t = l;
l = (r ^ f) >>> 0;
r = t;
}
// Reverse Initial Permutation
utils.rip(l, r, out, off);
};
/***/ }),
/***/ 5279:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var assert = __webpack_require__(3349);
var inherits = __webpack_require__(6698);
var Cipher = __webpack_require__(2808);
var DES = __webpack_require__(2211);
function EDEState(type, key) {
assert.equal(key.length, 24, 'Invalid key length');
var k1 = key.slice(0, 8);
var k2 = key.slice(8, 16);
var k3 = key.slice(16, 24);
if (type === 'encrypt') {
this.ciphers = [
DES.create({ type: 'encrypt', key: k1 }),
DES.create({ type: 'decrypt', key: k2 }),
DES.create({ type: 'encrypt', key: k3 })
];
} else {
this.ciphers = [
DES.create({ type: 'decrypt', key: k3 }),
DES.create({ type: 'encrypt', key: k2 }),
DES.create({ type: 'decrypt', key: k1 })
];
}
}
function EDE(options) {
Cipher.call(this, options);
var state = new EDEState(this.type, this.options.key);
this._edeState = state;
}
inherits(EDE, Cipher);
module.exports = EDE;
EDE.create = function create(options) {
return new EDE(options);
};
EDE.prototype._update = function _update(inp, inOff, out, outOff) {
var state = this._edeState;
state.ciphers[0]._update(inp, inOff, out, outOff);
state.ciphers[1]._update(out, outOff, out, outOff);
state.ciphers[2]._update(out, outOff, out, outOff);
};
EDE.prototype._pad = DES.prototype._pad;
EDE.prototype._unpad = DES.prototype._unpad;
/***/ }),
/***/ 7626:
/***/ ((__unused_webpack_module, exports) => {
"use strict";
exports.readUInt32BE = function readUInt32BE(bytes, off) {
var res = (bytes[0 + off] << 24) |
(bytes[1 + off] << 16) |
(bytes[2 + off] << 8) |
bytes[3 + off];
return res >>> 0;
};
exports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {
bytes[0 + off] = value >>> 24;
bytes[1 + off] = (value >>> 16) & 0xff;
bytes[2 + off] = (value >>> 8) & 0xff;
bytes[3 + off] = value & 0xff;
};
exports.ip = function ip(inL, inR, out, off) {
var outL = 0;
var outR = 0;
for (var i = 6; i >= 0; i -= 2) {
for (var j = 0; j <= 24; j += 8) {
outL <<= 1;
outL |= (inR >>> (j + i)) & 1;
}
for (var j = 0; j <= 24; j += 8) {
outL <<= 1;
outL |= (inL >>> (j + i)) & 1;
}
}
for (var i = 6; i >= 0; i -= 2) {
for (var j = 1; j <= 25; j += 8) {
outR <<= 1;
outR |= (inR >>> (j + i)) & 1;
}
for (var j = 1; j <= 25; j += 8) {
outR <<= 1;
outR |= (inL >>> (j + i)) & 1;
}
}
out[off + 0] = outL >>> 0;
out[off + 1] = outR >>> 0;
};
exports.rip = function rip(inL, inR, out, off) {
var outL = 0;
var outR = 0;
for (var i = 0; i < 4; i++) {
for (var j = 24; j >= 0; j -= 8) {
outL <<= 1;
outL |= (inR >>> (j + i)) & 1;
outL <<= 1;
outL |= (inL >>> (j + i)) & 1;
}
}
for (var i = 4; i < 8; i++) {
for (var j = 24; j >= 0; j -= 8) {
outR <<= 1;
outR |= (inR >>> (j + i)) & 1;
outR <<= 1;
outR |= (inL >>> (j + i)) & 1;
}
}
out[off + 0] = outL >>> 0;
out[off + 1] = outR >>> 0;
};
exports.pc1 = function pc1(inL, inR, out, off) {
var outL = 0;
var outR = 0;
// 7, 15, 23, 31, 39, 47, 55, 63
// 6, 14, 22, 30, 39, 47, 55, 63
// 5, 13, 21, 29, 39, 47, 55, 63
// 4, 12, 20, 28
for (var i = 7; i >= 5; i--) {
for (var j = 0; j <= 24; j += 8) {
outL <<= 1;
outL |= (inR >> (j + i)) & 1;
}
for (var j = 0; j <= 24; j += 8) {
outL <<= 1;
outL |= (inL >> (j + i)) & 1;
}
}
for (var j = 0; j <= 24; j += 8) {
outL <<= 1;
outL |= (inR >> (j + i)) & 1;
}
// 1, 9, 17, 25, 33, 41, 49, 57
// 2, 10, 18, 26, 34, 42, 50, 58
// 3, 11, 19, 27, 35, 43, 51, 59
// 36, 44, 52, 60
for (var i = 1; i <= 3; i++) {
for (var j = 0; j <= 24; j += 8) {
outR <<= 1;
outR |= (inR >> (j + i)) & 1;
}
for (var j = 0; j <= 24; j += 8) {
outR <<= 1;
outR |= (inL >> (j + i)) & 1;
}
}
for (var j = 0; j <= 24; j += 8) {
outR <<= 1;
outR |= (inL >> (j + i)) & 1;
}
out[off + 0] = outL >>> 0;
out[off + 1] = outR >>> 0;
};
exports.r28shl = function r28shl(num, shift) {
return ((num << shift) & 0xfffffff) | (num >>> (28 - shift));
};
var pc2table = [
// inL => outL
14, 11, 17, 4, 27, 23, 25, 0,
13, 22, 7, 18, 5, 9, 16, 24,
2, 20, 12, 21, 1, 8, 15, 26,
// inR => outR
15, 4, 25, 19, 9, 1, 26, 16,
5, 11, 23, 8, 12, 7, 17, 0,
22, 3, 10, 14, 6, 20, 27, 24
];
exports.pc2 = function pc2(inL, inR, out, off) {
var outL = 0;
var outR = 0;
var len = pc2table.length >>> 1;
for (var i = 0; i < len; i++) {
outL <<= 1;
outL |= (inL >>> pc2table[i]) & 0x1;
}
for (var i = len; i < pc2table.length; i++) {
outR <<= 1;
outR |= (inR >>> pc2table[i]) & 0x1;
}
out[off + 0] = outL >>> 0;
out[off + 1] = outR >>> 0;
};
exports.expand = function expand(r, out, off) {
var outL = 0;
var outR = 0;
outL = ((r & 1) << 5) | (r >>> 27);
for (var i = 23; i >= 15; i -= 4) {
outL <<= 6;
outL |= (r >>> i) & 0x3f;
}
for (var i = 11; i >= 3; i -= 4) {
outR |= (r >>> i) & 0x3f;
outR <<= 6;
}
outR |= ((r & 0x1f) << 1) | (r >>> 31);
out[off + 0] = outL >>> 0;
out[off + 1] = outR >>> 0;
};
var sTable = [
14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,
3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,
4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,
15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13,
15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,
9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,
0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,
5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9,
10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,
1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,
13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,
11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12,
7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,
1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,
10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,
15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14,
2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,
8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,
4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,
15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3,
12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,
0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,
9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,
7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13,
4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,
3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,
1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,
10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12,
13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,
10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,
7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,
0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11
];
exports.substitute = function substitute(inL, inR) {
var out = 0;
for (var i = 0; i < 4; i++) {
var b = (inL >>> (18 - i * 6)) & 0x3f;
var sb = sTable[i * 0x40 + b];
out <<= 4;
out |= sb;
}
for (var i = 0; i < 4; i++) {
var b = (inR >>> (18 - i * 6)) & 0x3f;
var sb = sTable[4 * 0x40 + i * 0x40 + b];
out <<= 4;
out |= sb;
}
return out >>> 0;
};
var permuteTable = [
16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22,
30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7
];
exports.permute = function permute(num) {
var out = 0;
for (var i = 0; i < permuteTable.length; i++) {
out <<= 1;
out |= (num >>> permuteTable[i]) & 0x1;
}
return out >>> 0;
};
exports.padSplit = function padSplit(num, size, group) {
var str = num.toString(2);
while (str.length < size)
str = '0' + str;
var out = [];
for (var i = 0; i < size; i += group)
out.push(str.slice(i, i + group));
return out.join(' ');
};
/***/ }),
/***/ 5380:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
/* provided dependency */ var Buffer = __webpack_require__(8287)["Buffer"];
var generatePrime = __webpack_require__(4934)
var primes = __webpack_require__(3241)
var DH = __webpack_require__(4910)
function getDiffieHellman (mod) {
var prime = new Buffer(primes[mod].prime, 'hex')
var gen = new Buffer(primes[mod].gen, 'hex')
return new DH(prime, gen)
}
var ENCODINGS = {
'binary': true, 'hex': true, 'base64': true
}
function createDiffieHellman (prime, enc, generator, genc) {
if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {
return createDiffieHellman(prime, 'binary', enc, generator)
}
enc = enc || 'binary'
genc = genc || 'binary'
generator = generator || new Buffer([2])
if (!Buffer.isBuffer(generator)) {
generator = new Buffer(generator, genc)
}
if (typeof prime === 'number') {
return new DH(generatePrime(prime, generator), generator, true)
}
if (!Buffer.isBuffer(prime)) {
prime = new Buffer(prime, enc)
}
return new DH(prime, generator, true)
}
exports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman
exports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman
/***/ }),
/***/ 4910:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
/* provided dependency */ var Buffer = __webpack_require__(8287)["Buffer"];
var BN = __webpack_require__(6473);
var MillerRabin = __webpack_require__(2244);
var millerRabin = new MillerRabin();
var TWENTYFOUR = new BN(24);
var ELEVEN = new BN(11);
var TEN = new BN(10);
var THREE = new BN(3);
var SEVEN = new BN(7);
var primes = __webpack_require__(4934);
var randomBytes = __webpack_require__(3209);
module.exports = DH;
function setPublicKey(pub, enc) {
enc = enc || 'utf8';
if (!Buffer.isBuffer(pub)) {
pub = new Buffer(pub, enc);
}
this._pub = new BN(pub);
return this;
}
function setPrivateKey(priv, enc) {
enc = enc || 'utf8';
if (!Buffer.isBuffer(priv)) {
priv = new Buffer(priv, enc);
}
this._priv = new BN(priv);
return this;
}
var primeCache = {};
function checkPrime(prime, generator) {
var gen = generator.toString('hex');
var hex = [gen, prime.toString(16)].join('_');
if (hex in primeCache) {
return primeCache[hex];
}
var error = 0;
if (prime.isEven() ||
!primes.simpleSieve ||
!primes.fermatTest(prime) ||
!millerRabin.test(prime)) {
//not a prime so +1
error += 1;
if (gen === '02' || gen === '05') {
// we'd be able to check the generator
// it would fail so +8
error += 8;
} else {
//we wouldn't be able to test the generator
// so +4
error += 4;
}
primeCache[hex] = error;
return error;
}
if (!millerRabin.test(prime.shrn(1))) {
//not a safe prime
error += 2;
}
var rem;
switch (gen) {
case '02':
if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {
// unsuidable generator
error += 8;
}
break;
case '05':
rem = prime.mod(TEN);
if (rem.cmp(THREE) && rem.cmp(SEVEN)) {
// prime mod 10 needs to equal 3 or 7
error += 8;
}
break;
default:
error += 4;
}
primeCache[hex] = error;
return error;
}
function DH(prime, generator, malleable) {
this.setGenerator(generator);
this.__prime = new BN(prime);
this._prime = BN.mont(this.__prime);
this._primeLen = prime.length;
this._pub = undefined;
this._priv = undefined;
this._primeCode = undefined;
if (malleable) {
this.setPublicKey = setPublicKey;
this.setPrivateKey = setPrivateKey;
} else {
this._primeCode = 8;
}
}
Object.defineProperty(DH.prototype, 'verifyError', {
enumerable: true,
get: function () {
if (typeof this._primeCode !== 'number') {
this._primeCode = checkPrime(this.__prime, this.__gen);
}
return this._primeCode;
}
});
DH.prototype.generateKeys = function () {
if (!this._priv) {
this._priv = new BN(randomBytes(this._primeLen));
}
this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();
return this.getPublicKey();
};
DH.prototype.computeSecret = function (other) {
other = new BN(other);
other = other.toRed(this._prime);
var secret = other.redPow(this._priv).fromRed();
var out = new Buffer(secret.toArray());
var prime = this.getPrime();
if (out.length < prime.length) {
var front = new Buffer(prime.length - out.length);
front.fill(0);
out = Buffer.concat([front, out]);
}
return out;
};
DH.prototype.getPublicKey = function getPublicKey(enc) {
return formatReturnValue(this._pub, enc);
};
DH.prototype.getPrivateKey = function getPrivateKey(enc) {
return formatReturnValue(this._priv, enc);
};
DH.prototype.getPrime = function (enc) {
return formatReturnValue(this.__prime, enc);
};
DH.prototype.getGenerator = function (enc) {
return formatReturnValue(this._gen, enc);
};
DH.prototype.setGenerator = function (gen, enc) {
enc = enc || 'utf8';
if (!Buffer.isBuffer(gen)) {
gen = new Buffer(gen, enc);
}
this.__gen = gen;
this._gen = new BN(gen);
return this;
};
function formatReturnValue(bn, enc) {
var buf = new Buffer(bn.toArray());
if (!enc) {
return buf;
} else {
return buf.toString(enc);
}
}
/***/ }),
/***/ 4934:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var randomBytes = __webpack_require__(3209);
module.exports = findPrime;
findPrime.simpleSieve = simpleSieve;
findPrime.fermatTest = fermatTest;
var BN = __webpack_require__(6473);
var TWENTYFOUR = new BN(24);
var MillerRabin = __webpack_require__(2244);
var millerRabin = new MillerRabin();
var ONE = new BN(1);
var TWO = new BN(2);
var FIVE = new BN(5);
var SIXTEEN = new BN(16);
var EIGHT = new BN(8);
var TEN = new BN(10);
var THREE = new BN(3);
var SEVEN = new BN(7);
var ELEVEN = new BN(11);
var FOUR = new BN(4);
var TWELVE = new BN(12);
var primes = null;
function _getPrimes() {
if (primes !== null)
return primes;
var limit = 0x100000;
var res = [];
res[0] = 2;
for (var i = 1, k = 3; k < limit; k += 2) {
var sqrt = Math.ceil(Math.sqrt(k));
for (var j = 0; j < i && res[j] <= sqrt; j++)
if (k % res[j] === 0)
break;
if (i !== j && res[j] <= sqrt)
continue;
res[i++] = k;
}
primes = res;
return res;
}
function simpleSieve(p) {
var primes = _getPrimes();
for (var i = 0; i < primes.length; i++)
if (p.modn(primes[i]) === 0) {
if (p.cmpn(primes[i]) === 0) {
return true;
} else {
return false;
}
}
return true;
}
function fermatTest(p) {
var red = BN.mont(p);
return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0;
}
function findPrime(bits, gen) {
if (bits < 16) {
// this is what openssl does
if (gen === 2 || gen === 5) {
return new BN([0x8c, 0x7b]);
} else {
return new BN([0x8c, 0x27]);
}
}
gen = new BN(gen);
var num, n2;
while (true) {
num = new BN(randomBytes(Math.ceil(bits / 8)));
while (num.bitLength() > bits) {
num.ishrn(1);
}
if (num.isEven()) {
num.iadd(ONE);
}
if (!num.testn(1)) {
num.iadd(TWO);
}
if (!gen.cmp(TWO)) {
while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {
num.iadd(FOUR);
}
} else if (!gen.cmp(FIVE)) {
while (num.mod(TEN).cmp(THREE)) {
num.iadd(FOUR);
}
}
n2 = num.shrn(1);
if (simpleSieve(n2) && simpleSieve(num) &&
fermatTest(n2) && fermatTest(num) &&
millerRabin.test(n2) && millerRabin.test(num)) {
return num;
}
}
}
/***/ }),
/***/ 6473:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
/* module decorator */ module = __webpack_require__.nmd(module);
(function (module, exports) {
'use strict';
// Utils
function assert (val, msg) {
if (!val) throw new Error(msg || 'Assertion failed');
}
// Could use `inherits` module, but don't want to move from single file
// architecture yet.
function inherits (ctor, superCtor) {
ctor.super_ = superCtor;
var TempCtor = function () {};
TempCtor.prototype = superCtor.prototype;
ctor.prototype = new TempCtor();
ctor.prototype.constructor = ctor;
}
// BN
function BN (number, base, endian) {
if (BN.isBN(number)) {
return number;
}
this.negative = 0;
this.words = null;
this.length = 0;
// Reduction context
this.red = null;
if (number !== null) {
if (base === 'le' || base === 'be') {
endian = base;
base = 10;
}
this._init(number || 0, base || 10, endian || 'be');
}
}
if (typeof module === 'object') {
module.exports = BN;
} else {
exports.BN = BN;
}
BN.BN = BN;
BN.wordSize = 26;
var Buffer;
try {
if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {
Buffer = window.Buffer;
} else {
Buffer = (__webpack_require__(6089).Buffer);
}
} catch (e) {
}
BN.isBN = function isBN (num) {
if (num instanceof BN) {
return true;
}
return num !== null && typeof num === 'object' &&
num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);
};
BN.max = function max (left, right) {
if (left.cmp(right) > 0) return left;
return right;
};
BN.min = function min (left, right) {
if (left.cmp(right) < 0) return left;
return right;
};
BN.prototype._init = function init (number, base, endian) {
if (typeof number === 'number') {
return this._initNumber(number, base, endian);
}
if (typeof number === 'object') {
return this._initArray(number, base, endian);
}
if (base === 'hex') {
base = 16;
}
assert(base === (base | 0) && base >= 2 && base <= 36);
number = number.toString().replace(/\s+/g, '');
var start = 0;
if (number[0] === '-') {
start++;
this.negative = 1;
}
if (start < number.length) {
if (base === 16) {
this._parseHex(number, start, endian);
} else {
this._parseBase(number, base, start);
if (endian === 'le') {
this._initArray(this.toArray(), base, endian);
}
}
}
};
BN.prototype._initNumber = function _initNumber (number, base, endian) {
if (number < 0) {
this.negative = 1;
number = -number;
}
if (number < 0x4000000) {
this.words = [ number & 0x3ffffff ];
this.length = 1;
} else if (number < 0x10000000000000) {
this.words = [
number & 0x3ffffff,
(number / 0x4000000) & 0x3ffffff
];
this.length = 2;
} else {
assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)
this.words = [
number & 0x3ffffff,
(number / 0x4000000) & 0x3ffffff,
1
];
this.length = 3;
}
if (endian !== 'le') return;
// Reverse the bytes
this._initArray(this.toArray(), base, endian);
};
BN.prototype._initArray = function _initArray (number, base, endian) {
// Perhaps a Uint8Array
assert(typeof number.length === 'number');
if (number.length <= 0) {
this.words = [ 0 ];
this.length = 1;
return this;
}
this.length = Math.ceil(number.length / 3);
this.words = new Array(this.length);
for (var i = 0; i < this.length; i++) {
this.words[i] = 0;
}
var j, w;
var off = 0;
if (endian === 'be') {
for (i = number.length - 1, j = 0; i >= 0; i -= 3) {
w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);
this.words[j] |= (w << off) & 0x3ffffff;
this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
off += 24;
if (off >= 26) {
off -= 26;
j++;
}
}
} else if (endian === 'le') {
for (i = 0, j = 0; i < number.length; i += 3) {
w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);
this.words[j] |= (w << off) & 0x3ffffff;
this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
off += 24;
if (off >= 26) {
off -= 26;
j++;
}
}
}
return this.strip();
};
function parseHex4Bits (string, index) {
var c = string.charCodeAt(index);
// 'A' - 'F'
if (c >= 65 && c <= 70) {
return c - 55;
// 'a' - 'f'
} else if (c >= 97 && c <= 102) {
return c - 87;
// '0' - '9'
} else {
return (c - 48) & 0xf;
}
}
function parseHexByte (string, lowerBound, index) {
var r = parseHex4Bits(string, index);
if (index - 1 >= lowerBound) {
r |= parseHex4Bits(string, index - 1) << 4;
}
return r;
}
BN.prototype._parseHex = function _parseHex (number, start, endian) {
// Create possibly bigger array to ensure that it fits the number
this.length = Math.ceil((number.length - start) / 6);
this.words = new Array(this.length);
for (var i = 0; i < this.length; i++) {
this.words[i] = 0;
}
// 24-bits chunks
var off = 0;
var j = 0;
var w;
if (endian === 'be') {
for (i = number.length - 1; i >= start; i -= 2) {
w = parseHexByte(number, start, i) << off;
this.words[j] |= w & 0x3ffffff;
if (off >= 18) {
off -= 18;
j += 1;
this.words[j] |= w >>> 26;
} else {
off += 8;
}
}
} else {
var parseLength = number.length - start;
for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {
w = parseHexByte(number, start, i) << off;
this.words[j] |= w & 0x3ffffff;
if (off >= 18) {
off -= 18;
j += 1;
this.words[j] |= w >>> 26;
} else {
off += 8;
}
}
}
this.strip();
};
function parseBase (str, start, end, mul) {
var r = 0;
var len = Math.min(str.length, end);
for (var i = start; i < len; i++) {
var c = str.charCodeAt(i) - 48;
r *= mul;
// 'a'
if (c >= 49) {
r += c - 49 + 0xa;
// 'A'
} else if (c >= 17) {
r += c - 17 + 0xa;
// '0' - '9'
} else {
r += c;
}
}
return r;
}
BN.prototype._parseBase = function _parseBase (number, base, start) {
// Initialize as zero
this.words = [ 0 ];
this.length = 1;
// Find length of limb in base
for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {
limbLen++;
}
limbLen--;
limbPow = (limbPow / base) | 0;
var total = number.length - start;
var mod = total % limbLen;
var end = Math.min(total, total - mod) + start;
var word = 0;
for (var i = start; i < end; i += limbLen) {
word = parseBase(number, i, i + limbLen, base);
this.imuln(limbPow);
if (this.words[0] + word < 0x4000000) {
this.words[0] += word;
} else {
this._iaddn(word);
}
}
if (mod !== 0) {
var pow = 1;
word = parseBase(number, i, number.length, base);
for (i = 0; i < mod; i++) {
pow *= base;
}
this.imuln(pow);
if (this.words[0] + word < 0x4000000) {
this.words[0] += word;
} else {
this._iaddn(word);
}
}
this.strip();
};
BN.prototype.copy = function copy (dest) {
dest.words = new Array(this.length);
for (var i = 0; i < this.length; i++) {
dest.words[i] = this.words[i];
}
dest.length = this.length;
dest.negative = this.negative;
dest.red = this.red;
};
BN.prototype.clone = function clone () {
var r = new BN(null);
this.copy(r);
return r;
};
BN.prototype._expand = function _expand (size) {
while (this.length < size) {
this.words[this.length++] = 0;
}
return this;
};
// Remove leading `0` from `this`
BN.prototype.strip = function strip () {
while (this.length > 1 && this.words[this.length - 1] === 0) {
this.length--;
}
return this._normSign();
};
BN.prototype._normSign = function _normSign () {
// -0 = 0
if (this.length === 1 && this.words[0] === 0) {
this.negative = 0;
}
return this;
};
BN.prototype.inspect = function inspect () {
return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';
};
/*
var zeros = [];
var groupSizes = [];
var groupBases = [];
var s = '';
var i = -1;
while (++i < BN.wordSize) {
zeros[i] = s;
s += '0';
}
groupSizes[0] = 0;
groupSizes[1] = 0;
groupBases[0] = 0;
groupBases[1] = 0;
var base = 2 - 1;
while (++base < 36 + 1) {
var groupSize = 0;
var groupBase = 1;
while (groupBase < (1 << BN.wordSize) / base) {
groupBase *= base;
groupSize += 1;
}
groupSizes[base] = groupSize;
groupBases[base] = groupBase;
}
*/
var zeros = [
'',
'0',
'00',
'000',
'0000',
'00000',
'000000',
'0000000',
'00000000',
'000000000',
'0000000000',
'00000000000',
'000000000000',
'0000000000000',
'00000000000000',
'000000000000000',
'0000000000000000',
'00000000000000000',
'000000000000000000',
'0000000000000000000',
'00000000000000000000',
'000000000000000000000',
'0000000000000000000000',
'00000000000000000000000',
'000000000000000000000000',
'0000000000000000000000000'
];
var groupSizes = [
0, 0,
25, 16, 12, 11, 10, 9, 8,
8, 7, 7, 7, 7, 6, 6,
6, 6, 6, 6, 6, 5, 5,
5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5
];
var groupBases = [
0, 0,
33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,
43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,
16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,
6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,
24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176
];
BN.prototype.toString = function toString (base, padding) {
base = base || 10;
padding = padding | 0 || 1;
var out;
if (base === 16 || base === 'hex') {
out = '';
var off = 0;
var carry = 0;
for (var i = 0; i < this.length; i++) {
var w = this.words[i];
var word = (((w << off) | carry) & 0xffffff).toString(16);
carry = (w >>> (24 - off)) & 0xffffff;
if (carry !== 0 || i !== this.length - 1) {
out = zeros[6 - word.length] + word + out;
} else {
out = word + out;
}
off += 2;
if (off >= 26) {
off -= 26;
i--;
}
}
if (carry !== 0) {
out = carry.toString(16) + out;
}
while (out.length % padding !== 0) {
out = '0' + out;
}
if (this.negative !== 0) {
out = '-' + out;
}
return out;
}
if (base === (base | 0) && base >= 2 && base <= 36) {
// var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));
var groupSize = groupSizes[base];
// var groupBase = Math.pow(base, groupSize);
var groupBase = groupBases[base];
out = '';
var c = this.clone();
c.negative = 0;
while (!c.isZero()) {
var r = c.modn(groupBase).toString(base);
c = c.idivn(groupBase);
if (!c.isZero()) {
out = zeros[groupSize - r.length] + r + out;
} else {
out = r + out;
}
}
if (this.isZero()) {
out = '0' + out;
}
while (out.length % padding !== 0) {
out = '0' + out;
}
if (this.negative !== 0) {
out = '-' + out;
}
return out;
}
assert(false, 'Base should be between 2 and 36');
};
BN.prototype.toNumber = function toNumber () {
var ret = this.words[0];
if (this.length === 2) {
ret += this.words[1] * 0x4000000;
} else if (this.length === 3 && this.words[2] === 0x01) {
// NOTE: at this stage it is known that the top bit is set
ret += 0x10000000000000 + (this.words[1] * 0x4000000);
} else if (this.length > 2) {
assert(false, 'Number can only safely store up to 53 bits');
}
return (this.negative !== 0) ? -ret : ret;
};
BN.prototype.toJSON = function toJSON () {
return this.toString(16);
};
BN.prototype.toBuffer = function toBuffer (endian, length) {
assert(typeof Buffer !== 'undefined');
return this.toArrayLike(Buffer, endian, length);
};
BN.prototype.toArray = function toArray (endian, length) {
return this.toArrayLike(Array, endian, length);
};
BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {
var byteLength = this.byteLength();
var reqLength = length || Math.max(1, byteLength);
assert(byteLength <= reqLength, 'byte array longer than desired length');
assert(reqLength > 0, 'Requested array length <= 0');
this.strip();
var littleEndian = endian === 'le';
var res = new ArrayType(reqLength);
var b, i;
var q = this.clone();
if (!littleEndian) {
// Assume big-endian
for (i = 0; i < reqLength - byteLength; i++) {
res[i] = 0;
}
for (i = 0; !q.isZero(); i++) {
b = q.andln(0xff);
q.iushrn(8);
res[reqLength - i - 1] = b;
}
} else {
for (i = 0; !q.isZero(); i++) {
b = q.andln(0xff);
q.iushrn(8);
res[i] = b;
}
for (; i < reqLength; i++) {
res[i] = 0;
}
}
return res;
};
if (Math.clz32) {
BN.prototype._countBits = function _countBits (w) {
return 32 - Math.clz32(w);
};
} else {
BN.prototype._countBits = function _countBits (w) {
var t = w;
var r = 0;
if (t >= 0x1000) {
r += 13;
t >>>= 13;
}
if (t >= 0x40) {
r += 7;
t >>>= 7;
}
if (t >= 0x8) {
r += 4;
t >>>= 4;
}
if (t >= 0x02) {
r += 2;
t >>>= 2;
}
return r + t;
};
}
BN.prototype._zeroBits = function _zeroBits (w) {
// Short-cut
if (w === 0) return 26;
var t = w;
var r = 0;
if ((t & 0x1fff) === 0) {
r += 13;
t >>>= 13;
}
if ((t & 0x7f) === 0) {
r += 7;
t >>>= 7;
}
if ((t & 0xf) === 0) {
r += 4;
t >>>= 4;
}
if ((t & 0x3) === 0) {
r += 2;
t >>>= 2;
}
if ((t & 0x1) === 0) {
r++;
}
return r;
};
// Return number of used bits in a BN
BN.prototype.bitLength = function bitLength () {
var w = this.words[this.length - 1];
var hi = this._countBits(w);
return (this.length - 1) * 26 + hi;
};
function toBitArray (num) {
var w = new Array(num.bitLength());
for (var bit = 0; bit < w.length; bit++) {
var off = (bit / 26) | 0;
var wbit = bit % 26;
w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;
}
return w;
}
// Number of trailing zero bits
BN.prototype.zeroBits = function zeroBits () {
if (this.isZero()) return 0;
var r = 0;
for (var i = 0; i < this.length; i++) {
var b = this._zeroBits(this.words[i]);
r += b;
if (b !== 26) break;
}
return r;
};
BN.prototype.byteLength = function byteLength () {
return Math.ceil(this.bitLength() / 8);
};
BN.prototype.toTwos = function toTwos (width) {
if (this.negative !== 0) {
return this.abs().inotn(width).iaddn(1);
}
return this.clone();
};
BN.prototype.fromTwos = function fromTwos (width) {
if (this.testn(width - 1)) {
return this.notn(width).iaddn(1).ineg();
}
return this.clone();
};
BN.prototype.isNeg = function isNeg () {
return this.negative !== 0;
};
// Return negative clone of `this`
BN.prototype.neg = function neg () {
return this.clone().ineg();
};
BN.prototype.ineg = function ineg () {
if (!this.isZero()) {
this.negative ^= 1;
}
return this;
};
// Or `num` with `this` in-place
BN.prototype.iuor = function iuor (num) {
while (this.length < num.length) {
this.words[this.length++] = 0;
}
for (var i = 0; i < num.length; i++) {
this.words[i] = this.words[i] | num.words[i];
}
return this.strip();
};
BN.prototype.ior = function ior (num) {
assert((this.negative | num.negative) === 0);
return this.iuor(num);
};
// Or `num` with `this`
BN.prototype.or = function or (num) {
if (this.length > num.length) return this.clone().ior(num);
return num.clone().ior(this);
};
BN.prototype.uor = function uor (num) {
if (this.length > num.length) return this.clone().iuor(num);
return num.clone().iuor(this);
};
// And `num` with `this` in-place
BN.prototype.iuand = function iuand (num) {
// b = min-length(num, this)
var b;
if (this.length > num.length) {
b = num;
} else {
b = this;
}
for (var i = 0; i < b.length; i++) {
this.words[i] = this.words[i] & num.words[i];
}
this.length = b.length;
return this.strip();
};
BN.prototype.iand = function iand (num) {
assert((this.negative | num.negative) === 0);
return this.iuand(num);
};
// And `num` with `this`
BN.prototype.and = function and (num) {
if (this.length > num.length) return this.clone().iand(num);
return num.clone().iand(this);
};
BN.prototype.uand = function uand (num) {
if (this.length > num.length) return this.clone().iuand(num);
return num.clone().iuand(this);
};
// Xor `num` with `this` in-place
BN.prototype.iuxor = function iuxor (num) {
// a.length > b.length
var a;
var b;
if (this.length > num.length) {
a = this;
b = num;
} else {
a = num;
b = this;
}
for (var i = 0; i < b.length; i++) {
this.words[i] = a.words[i] ^ b.words[i];
}
if (this !== a) {
for (; i < a.length; i++) {
this.words[i] = a.words[i];
}
}
this.length = a.length;
return this.strip();
};
BN.prototype.ixor = function ixor (num) {
assert((this.negative | num.negative) === 0);
return this.iuxor(num);
};
// Xor `num` with `this`
BN.prototype.xor = function xor (num) {
if (this.length > num.length) return this.clone().ixor(num);
return num.clone().ixor(this);
};
BN.prototype.uxor = function uxor (num) {
if (this.length > num.length) return this.clone().iuxor(num);
return num.clone().iuxor(this);
};
// Not ``this`` with ``width`` bitwidth
BN.prototype.inotn = function inotn (width) {
assert(typeof width === 'number' && width >= 0);
var bytesNeeded = Math.ceil(width / 26) | 0;
var bitsLeft = width % 26;
// Extend the buffer with leading zeroes
this._expand(bytesNeeded);
if (bitsLeft > 0) {
bytesNeeded--;
}
// Handle complete words
for (var i = 0; i < bytesNeeded; i++) {
this.words[i] = ~this.words[i] & 0x3ffffff;
}
// Handle the residue
if (bitsLeft > 0) {
this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));
}
// And remove leading zeroes
return this.strip();
};
BN.prototype.notn = function notn (width) {
return this.clone().inotn(width);
};
// Set `bit` of `this`
BN.prototype.setn = function setn (bit, val) {
assert(typeof bit === 'number' && bit >= 0);
var off = (bit / 26) | 0;
var wbit = bit % 26;
this._expand(off + 1);
if (val) {
this.words[off] = this.words[off] | (1 << wbit);
} else {
this.words[off] = this.words[off] & ~(1 << wbit);
}
return this.strip();
};
// Add `num` to `this` in-place
BN.prototype.iadd = function iadd (num) {
var r;
// negative + positive
if (this.negative !== 0 && num.negative === 0) {
this.negative = 0;
r = this.isub(num);
this.negative ^= 1;
return this._normSign();
// positive + negative
} else if (this.negative === 0 && num.negative !== 0) {
num.negative = 0;
r = this.isub(num);
num.negative = 1;
return r._normSign();
}
// a.length > b.length
var a, b;
if (this.length > num.length) {
a = this;
b = num;
} else {
a = num;
b = this;
}
var carry = 0;
for (var i = 0; i < b.length; i++) {
r = (a.words[i] | 0) + (b.words[i] | 0) + carry;
this.words[i] = r & 0x3ffffff;
carry = r >>> 26;
}
for (; carry !== 0 && i < a.length; i++) {
r = (a.words[i] | 0) + carry;
this.words[i] = r & 0x3ffffff;
carry = r >>> 26;
}
this.length = a.length;
if (carry !== 0) {
this.words[this.length] = carry;
this.length++;
// Copy the rest of the words
} else if (a !== this) {
for (; i < a.length; i++) {
this.words[i] = a.words[i];
}
}
return this;
};
// Add `num` to `this`
BN.prototype.add = function add (num) {
var res;
if (num.negative !== 0 && this.negative === 0) {
num.negative = 0;
res = this.sub(num);
num.negative ^= 1;
return res;
} else if (num.negative === 0 && this.negative !== 0) {
this.negative = 0;
res = num.sub(this);
this.negative = 1;
return res;
}
if (this.length > num.length) return this.clone().iadd(num);
return num.clone().iadd(this);
};
// Subtract `num` from `this` in-place
BN.prototype.isub = function isub (num) {
// this - (-num) = this + num
if (num.negative !== 0) {
num.negative = 0;
var r = this.iadd(num);
num.negative = 1;
return r._normSign();
// -this - num = -(this + num)
} else if (this.negative !== 0) {
this.negative = 0;
this.iadd(num);
this.negative = 1;
return this._normSign();
}
// At this point both numbers are positive
var cmp = this.cmp(num);
// Optimization - zeroify
if (cmp === 0) {
this.negative = 0;
this.length = 1;
this.words[0] = 0;
return this;
}
// a > b
var a, b;
if (cmp > 0) {
a = this;
b = num;
} else {
a = num;
b = this;
}
var carry = 0;
for (var i = 0; i < b.length; i++) {
r = (a.words[i] | 0) - (b.words[i] | 0) + carry;
carry = r >> 26;
this.words[i] = r & 0x3ffffff;
}
for (; carry !== 0 && i < a.length; i++) {
r = (a.words[i] | 0) + carry;
carry = r >> 26;
this.words[i] = r & 0x3ffffff;
}
// Copy rest of the words
if (carry === 0 && i < a.length && a !== this) {
for (; i < a.length; i++) {
this.words[i] = a.words[i];
}
}
this.length = Math.max(this.length, i);
if (a !== this) {
this.negative = 1;
}
return this.strip();
};
// Subtract `num` from `this`
BN.prototype.sub = function sub (num) {
return this.clone().isub(num);
};
function smallMulTo (self, num, out) {
out.negative = num.negative ^ self.negative;
var len = (self.length + num.length) | 0;
out.length = len;
len = (len - 1) | 0;
// Peel one iteration (compiler can't do it, because of code complexity)
var a = self.words[0] | 0;
var b = num.words[0] | 0;
var r = a * b;
var lo = r & 0x3ffffff;
var carry = (r / 0x4000000) | 0;
out.words[0] = lo;
for (var k = 1; k < len; k++) {
// Sum all words with the same `i + j = k` and accumulate `ncarry`,
// note that ncarry could be >= 0x3ffffff
var ncarry = carry >>> 26;
var rword = carry & 0x3ffffff;
var maxJ = Math.min(k, num.length - 1);
for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
var i = (k - j) | 0;
a = self.words[i] | 0;
b = num.words[j] | 0;
r = a * b + rword;
ncarry += (r / 0x4000000) | 0;
rword = r & 0x3ffffff;
}
out.words[k] = rword | 0;
carry = ncarry | 0;
}
if (carry !== 0) {
out.words[k] = carry | 0;
} else {
out.length--;
}
return out.strip();
}
// TODO(indutny): it may be reasonable to omit it for users who don't need
// to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit
// multiplication (like elliptic secp256k1).
var comb10MulTo = function comb10MulTo (self, num, out) {
var a = self.words;
var b = num.words;
var o = out.words;
var c = 0;
var lo;
var mid;
var hi;
var a0 = a[0] | 0;
var al0 = a0 & 0x1fff;
var ah0 = a0 >>> 13;
var a1 = a[1] | 0;
var al1 = a1 & 0x1fff;
var ah1 = a1 >>> 13;
var a2 = a[2] | 0;
var al2 = a2 & 0x1fff;
var ah2 = a2 >>> 13;
var a3 = a[3] | 0;
var al3 = a3 & 0x1fff;
var ah3 = a3 >>> 13;
var a4 = a[4] | 0;
var al4 = a4 & 0x1fff;
var ah4 = a4 >>> 13;
var a5 = a[5] | 0;
var al5 = a5 & 0x1fff;
var ah5 = a5 >>> 13;
var a6 = a[6] | 0;
var al6 = a6 & 0x1fff;
var ah6 = a6 >>> 13;
var a7 = a[7] | 0;
var al7 = a7 & 0x1fff;
var ah7 = a7 >>> 13;
var a8 = a[8] | 0;
var al8 = a8 & 0x1fff;
var ah8 = a8 >>> 13;
var a9 = a[9] | 0;
var al9 = a9 & 0x1fff;
var ah9 = a9 >>> 13;
var b0 = b[0] | 0;
var bl0 = b0 & 0x1fff;
var bh0 = b0 >>> 13;
var b1 = b[1] | 0;
var bl1 = b1 & 0x1fff;
var bh1 = b1 >>> 13;
var b2 = b[2] | 0;
var bl2 = b2 & 0x1fff;
var bh2 = b2 >>> 13;
var b3 = b[3] | 0;
var bl3 = b3 & 0x1fff;
var bh3 = b3 >>> 13;
var b4 = b[4] | 0;
var bl4 = b4 & 0x1fff;
var bh4 = b4 >>> 13;
var b5 = b[5] | 0;
var bl5 = b5 & 0x1fff;
var bh5 = b5 >>> 13;
var b6 = b[6] | 0;
var bl6 = b6 & 0x1fff;
var bh6 = b6 >>> 13;
var b7 = b[7] | 0;
var bl7 = b7 & 0x1fff;
var bh7 = b7 >>> 13;
var b8 = b[8] | 0;
var bl8 = b8 & 0x1fff;
var bh8 = b8 >>> 13;
var b9 = b[9] | 0;
var bl9 = b9 & 0x1fff;
var bh9 = b9 >>> 13;
out.negative = self.negative ^ num.negative;
out.length = 19;
/* k = 0 */
lo = Math.imul(al0, bl0);
mid = Math.imul(al0, bh0);
mid = (mid + Math.imul(ah0, bl0)) | 0;
hi = Math.imul(ah0, bh0);
var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;
w0 &= 0x3ffffff;
/* k = 1 */
lo = Math.imul(al1, bl0);
mid = Math.imul(al1, bh0);
mid = (mid + Math.imul(ah1, bl0)) | 0;
hi = Math.imul(ah1, bh0);
lo = (lo + Math.imul(al0, bl1)) | 0;
mid = (mid + Math.imul(al0, bh1)) | 0;
mid = (mid + Math.imul(ah0, bl1)) | 0;
hi = (hi + Math.imul(ah0, bh1)) | 0;
var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;
w1 &= 0x3ffffff;
/* k = 2 */
lo = Math.imul(al2, bl0);
mid = Math.imul(al2, bh0);
mid = (mid + Math.imul(ah2, bl0)) | 0;
hi = Math.imul(ah2, bh0);
lo = (lo + Math.imul(al1, bl1)) | 0;
mid = (mid + Math.imul(al1, bh1)) | 0;
mid = (mid + Math.imul(ah1, bl1)) | 0;
hi = (hi + Math.imul(ah1, bh1)) | 0;
lo = (lo + Math.imul(al0, bl2)) | 0;
mid = (mid + Math.imul(al0, bh2)) | 0;
mid = (mid + Math.imul(ah0, bl2)) | 0;
hi = (hi + Math.imul(ah0, bh2)) | 0;
var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;
w2 &= 0x3ffffff;
/* k = 3 */
lo = Math.imul(al3, bl0);
mid = Math.imul(al3, bh0);
mid = (mid + Math.imul(ah3, bl0)) | 0;
hi = Math.imul(ah3, bh0);
lo = (lo + Math.imul(al2, bl1)) | 0;
mid = (mid + Math.imul(al2, bh1)) | 0;
mid = (mid + Math.imul(ah2, bl1)) | 0;
hi = (hi + Math.imul(ah2, bh1)) | 0;
lo = (lo + Math.imul(al1, bl2)) | 0;
mid = (mid + Math.imul(al1, bh2)) | 0;
mid = (mid + Math.imul(ah1, bl2)) | 0;
hi = (hi + Math.imul(ah1, bh2)) | 0;
lo = (lo + Math.imul(al0, bl3)) | 0;
mid = (mid + Math.imul(al0, bh3)) | 0;
mid = (mid + Math.imul(ah0, bl3)) | 0;
hi = (hi + Math.imul(ah0, bh3)) | 0;
var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;
w3 &= 0x3ffffff;
/* k = 4 */
lo = Math.imul(al4, bl0);
mid = Math.imul(al4, bh0);
mid = (mid + Math.imul(ah4, bl0)) | 0;
hi = Math.imul(ah4, bh0);
lo = (lo + Math.imul(al3, bl1)) | 0;
mid = (mid + Math.imul(al3, bh1)) | 0;
mid = (mid + Math.imul(ah3, bl1)) | 0;
hi = (hi + Math.imul(ah3, bh1)) | 0;
lo = (lo + Math.imul(al2, bl2)) | 0;
mid = (mid + Math.imul(al2, bh2)) | 0;
mid = (mid + Math.imul(ah2, bl2)) | 0;
hi = (hi + Math.imul(ah2, bh2)) | 0;
lo = (lo + Math.imul(al1, bl3)) | 0;
mid = (mid + Math.imul(al1, bh3)) | 0;
mid = (mid + Math.imul(ah1, bl3)) | 0;
hi = (hi + Math.imul(ah1, bh3)) | 0;
lo = (lo + Math.imul(al0, bl4)) | 0;
mid = (mid + Math.imul(al0, bh4)) | 0;
mid = (mid + Math.imul(ah0, bl4)) | 0;
hi = (hi + Math.imul(ah0, bh4)) | 0;
var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;
w4 &= 0x3ffffff;
/* k = 5 */
lo = Math.imul(al5, bl0);
mid = Math.imul(al5, bh0);
mid = (mid + Math.imul(ah5, bl0)) | 0;
hi = Math.imul(ah5, bh0);
lo = (lo + Math.imul(al4, bl1)) | 0;
mid = (mid + Math.imul(al4, bh1)) | 0;
mid = (mid + Math.imul(ah4, bl1)) | 0;
hi = (hi + Math.imul(ah4, bh1)) | 0;
lo = (lo + Math.imul(al3, bl2)) | 0;
mid = (mid + Math.imul(al3, bh2)) | 0;
mid = (mid + Math.imul(ah3, bl2)) | 0;
hi = (hi + Math.imul(ah3, bh2)) | 0;
lo = (lo + Math.imul(al2, bl3)) | 0;
mid = (mid + Math.imul(al2, bh3)) | 0;
mid = (mid + Math.imul(ah2, bl3)) | 0;
hi = (hi + Math.imul(ah2, bh3)) | 0;
lo = (lo + Math.imul(al1, bl4)) | 0;
mid = (mid + Math.imul(al1, bh4)) | 0;
mid = (mid + Math.imul(ah1, bl4)) | 0;
hi = (hi + Math.imul(ah1, bh4)) | 0;
lo = (lo + Math.imul(al0, bl5)) | 0;
mid = (mid + Math.imul(al0, bh5)) | 0;
mid = (mid + Math.imul(ah0, bl5)) | 0;
hi = (hi + Math.imul(ah0, bh5)) | 0;
var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;
w5 &= 0x3ffffff;
/* k = 6 */
lo = Math.imul(al6, bl0);
mid = Math.imul(al6, bh0);
mid = (mid + Math.imul(ah6, bl0)) | 0;
hi = Math.imul(ah6, bh0);
lo = (lo + Math.imul(al5, bl1)) | 0;
mid = (mid + Math.imul(al5, bh1)) | 0;
mid = (mid + Math.imul(ah5, bl1)) | 0;
hi = (hi + Math.imul(ah5, bh1)) | 0;
lo = (lo + Math.imul(al4, bl2)) | 0;
mid = (mid + Math.imul(al4, bh2)) | 0;
mid = (mid + Math.imul(ah4, bl2)) | 0;
hi = (hi + Math.imul(ah4, bh2)) | 0;
lo = (lo + Math.imul(al3, bl3)) | 0;
mid = (mid + Math.imul(al3, bh3)) | 0;
mid = (mid + Math.imul(ah3, bl3)) | 0;
hi = (hi + Math.imul(ah3, bh3)) | 0;
lo = (lo + Math.imul(al2, bl4)) | 0;
mid = (mid + Math.imul(al2, bh4)) | 0;
mid = (mid + Math.imul(ah2, bl4)) | 0;
hi = (hi + Math.imul(ah2, bh4)) | 0;
lo = (lo + Math.imul(al1, bl5)) | 0;
mid = (mid + Math.imul(al1, bh5)) | 0;
mid = (mid + Math.imul(ah1, bl5)) | 0;
hi = (hi + Math.imul(ah1, bh5)) | 0;
lo = (lo + Math.imul(al0, bl6)) | 0;
mid = (mid + Math.imul(al0, bh6)) | 0;
mid = (mid + Math.imul(ah0, bl6)) | 0;
hi = (hi + Math.imul(ah0, bh6)) | 0;
var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;
w6 &= 0x3ffffff;
/* k = 7 */
lo = Math.imul(al7, bl0);
mid = Math.imul(al7, bh0);
mid = (mid + Math.imul(ah7, bl0)) | 0;
hi = Math.imul(ah7, bh0);
lo = (lo + Math.imul(al6, bl1)) | 0;
mid = (mid + Math.imul(al6, bh1)) | 0;
mid = (mid + Math.imul(ah6, bl1)) | 0;
hi = (hi + Math.imul(ah6, bh1)) | 0;
lo = (lo + Math.imul(al5, bl2)) | 0;
mid = (mid + Math.imul(al5, bh2)) | 0;
mid = (mid + Math.imul(ah5, bl2)) | 0;
hi = (hi + Math.imul(ah5, bh2)) | 0;
lo = (lo + Math.imul(al4, bl3)) | 0;
mid = (mid + Math.imul(al4, bh3)) | 0;
mid = (mid + Math.imul(ah4, bl3)) | 0;
hi = (hi + Math.imul(ah4, bh3)) | 0;
lo = (lo + Math.imul(al3, bl4)) | 0;
mid = (mid + Math.imul(al3, bh4)) | 0;
mid = (mid + Math.imul(ah3, bl4)) | 0;
hi = (hi + Math.imul(ah3, bh4)) | 0;
lo = (lo + Math.imul(al2, bl5)) | 0;
mid = (mid + Math.imul(al2, bh5)) | 0;
mid = (mid + Math.imul(ah2, bl5)) | 0;
hi = (hi + Math.imul(ah2, bh5)) | 0;
lo = (lo + Math.imul(al1, bl6)) | 0;
mid = (mid + Math.imul(al1, bh6)) | 0;
mid = (mid + Math.imul(ah1, bl6)) | 0;
hi = (hi + Math.imul(ah1, bh6)) | 0;
lo = (lo + Math.imul(al0, bl7)) | 0;
mid = (mid + Math.imul(al0, bh7)) | 0;
mid = (mid + Math.imul(ah0, bl7)) | 0;
hi = (hi + Math.imul(ah0, bh7)) | 0;
var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;
w7 &= 0x3ffffff;
/* k = 8 */
lo = Math.imul(al8, bl0);
mid = Math.imul(al8, bh0);
mid = (mid + Math.imul(ah8, bl0)) | 0;
hi = Math.imul(ah8, bh0);
lo = (lo + Math.imul(al7, bl1)) | 0;
mid = (mid + Math.imul(al7, bh1)) | 0;
mid = (mid + Math.imul(ah7, bl1)) | 0;
hi = (hi + Math.imul(ah7, bh1)) | 0;
lo = (lo + Math.imul(al6, bl2)) | 0;
mid = (mid + Math.imul(al6, bh2)) | 0;
mid = (mid + Math.imul(ah6, bl2)) | 0;
hi = (hi + Math.imul(ah6, bh2)) | 0;
lo = (lo + Math.imul(al5, bl3)) | 0;
mid = (mid + Math.imul(al5, bh3)) | 0;
mid = (mid + Math.imul(ah5, bl3)) | 0;
hi = (hi + Math.imul(ah5, bh3)) | 0;
lo = (lo + Math.imul(al4, bl4)) | 0;
mid = (mid + Math.imul(al4, bh4)) | 0;
mid = (mid + Math.imul(ah4, bl4)) | 0;
hi = (hi + Math.imul(ah4, bh4)) | 0;
lo = (lo + Math.imul(al3, bl5)) | 0;
mid = (mid + Math.imul(al3, bh5)) | 0;
mid = (mid + Math.imul(ah3, bl5)) | 0;
hi = (hi + Math.imul(ah3, bh5)) | 0;
lo = (lo + Math.imul(al2, bl6)) | 0;
mid = (mid + Math.imul(al2, bh6)) | 0;
mid = (mid + Math.imul(ah2, bl6)) | 0;
hi = (hi + Math.imul(ah2, bh6)) | 0;
lo = (lo + Math.imul(al1, bl7)) | 0;
mid = (mid + Math.imul(al1, bh7)) | 0;
mid = (mid + Math.imul(ah1, bl7)) | 0;
hi = (hi + Math.imul(ah1, bh7)) | 0;
lo = (lo + Math.imul(al0, bl8)) | 0;
mid = (mid + Math.imul(al0, bh8)) | 0;
mid = (mid + Math.imul(ah0, bl8)) | 0;
hi = (hi + Math.imul(ah0, bh8)) | 0;
var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;
w8 &= 0x3ffffff;
/* k = 9 */
lo = Math.imul(al9, bl0);
mid = Math.imul(al9, bh0);
mid = (mid + Math.imul(ah9, bl0)) | 0;
hi = Math.imul(ah9, bh0);
lo = (lo + Math.imul(al8, bl1)) | 0;
mid = (mid + Math.imul(al8, bh1)) | 0;
mid = (mid + Math.imul(ah8, bl1)) | 0;
hi = (hi + Math.imul(ah8, bh1)) | 0;
lo = (lo + Math.imul(al7, bl2)) | 0;
mid = (mid + Math.imul(al7, bh2)) | 0;
mid = (mid + Math.imul(ah7, bl2)) | 0;
hi = (hi + Math.imul(ah7, bh2)) | 0;
lo = (lo + Math.imul(al6, bl3)) | 0;
mid = (mid + Math.imul(al6, bh3)) | 0;
mid = (mid + Math.imul(ah6, bl3)) | 0;
hi = (hi + Math.imul(ah6, bh3)) | 0;
lo = (lo + Math.imul(al5, bl4)) | 0;
mid = (mid + Math.imul(al5, bh4)) | 0;
mid = (mid + Math.imul(ah5, bl4)) | 0;
hi = (hi + Math.imul(ah5, bh4)) | 0;
lo = (lo + Math.imul(al4, bl5)) | 0;
mid = (mid + Math.imul(al4, bh5)) | 0;
mid = (mid + Math.imul(ah4, bl5)) | 0;
hi = (hi + Math.imul(ah4, bh5)) | 0;
lo = (lo + Math.imul(al3, bl6)) | 0;
mid = (mid + Math.imul(al3, bh6)) | 0;
mid = (mid + Math.imul(ah3, bl6)) | 0;
hi = (hi + Math.imul(ah3, bh6)) | 0;
lo = (lo + Math.imul(al2, bl7)) | 0;
mid = (mid + Math.imul(al2, bh7)) | 0;
mid = (mid + Math.imul(ah2, bl7)) | 0;
hi = (hi + Math.imul(ah2, bh7)) | 0;
lo = (lo + Math.imul(al1, bl8)) | 0;
mid = (mid + Math.imul(al1, bh8)) | 0;
mid = (mid + Math.imul(ah1, bl8)) | 0;
hi = (hi + Math.imul(ah1, bh8)) | 0;
lo = (lo + Math.imul(al0, bl9)) | 0;
mid = (mid + Math.imul(al0, bh9)) | 0;
mid = (mid + Math.imul(ah0, bl9)) | 0;
hi = (hi + Math.imul(ah0, bh9)) | 0;
var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;
w9 &= 0x3ffffff;
/* k = 10 */
lo = Math.imul(al9, bl1);
mid = Math.imul(al9, bh1);
mid = (mid + Math.imul(ah9, bl1)) | 0;
hi = Math.imul(ah9, bh1);
lo = (lo + Math.imul(al8, bl2)) | 0;
mid = (mid + Math.imul(al8, bh2)) | 0;
mid = (mid + Math.imul(ah8, bl2)) | 0;
hi = (hi + Math.imul(ah8, bh2)) | 0;
lo = (lo + Math.imul(al7, bl3)) | 0;
mid = (mid + Math.imul(al7, bh3)) | 0;
mid = (mid + Math.imul(ah7, bl3)) | 0;
hi = (hi + Math.imul(ah7, bh3)) | 0;
lo = (lo + Math.imul(al6, bl4)) | 0;
mid = (mid + Math.imul(al6, bh4)) | 0;
mid = (mid + Math.imul(ah6, bl4)) | 0;
hi = (hi + Math.imul(ah6, bh4)) | 0;
lo = (lo + Math.imul(al5, bl5)) | 0;
mid = (mid + Math.imul(al5, bh5)) | 0;
mid = (mid + Math.imul(ah5, bl5)) | 0;
hi = (hi + Math.imul(ah5, bh5)) | 0;
lo = (lo + Math.imul(al4, bl6)) | 0;
mid = (mid + Math.imul(al4, bh6)) | 0;
mid = (mid + Math.imul(ah4, bl6)) | 0;
hi = (hi + Math.imul(ah4, bh6)) | 0;
lo = (lo + Math.imul(al3, bl7)) | 0;
mid = (mid + Math.imul(al3, bh7)) | 0;
mid = (mid + Math.imul(ah3, bl7)) | 0;
hi = (hi + Math.imul(ah3, bh7)) | 0;
lo = (lo + Math.imul(al2, bl8)) | 0;
mid = (mid + Math.imul(al2, bh8)) | 0;
mid = (mid + Math.imul(ah2, bl8)) | 0;
hi = (hi + Math.imul(ah2, bh8)) | 0;
lo = (lo + Math.imul(al1, bl9)) | 0;
mid = (mid + Math.imul(al1, bh9)) | 0;
mid = (mid + Math.imul(ah1, bl9)) | 0;
hi = (hi + Math.imul(ah1, bh9)) | 0;
var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;
w10 &= 0x3ffffff;
/* k = 11 */
lo = Math.imul(al9, bl2);
mid = Math.imul(al9, bh2);
mid = (mid + Math.imul(ah9, bl2)) | 0;
hi = Math.imul(ah9, bh2);
lo = (lo + Math.imul(al8, bl3)) | 0;
mid = (mid + Math.imul(al8, bh3)) | 0;
mid = (mid + Math.imul(ah8, bl3)) | 0;
hi = (hi + Math.imul(ah8, bh3)) | 0;
lo = (lo + Math.imul(al7, bl4)) | 0;
mid = (mid + Math.imul(al7, bh4)) | 0;
mid = (mid + Math.imul(ah7, bl4)) | 0;
hi = (hi + Math.imul(ah7, bh4)) | 0;
lo = (lo + Math.imul(al6, bl5)) | 0;
mid = (mid + Math.imul(al6, bh5)) | 0;
mid = (mid + Math.imul(ah6, bl5)) | 0;
hi = (hi + Math.imul(ah6, bh5)) | 0;
lo = (lo + Math.imul(al5, bl6)) | 0;
mid = (mid + Math.imul(al5, bh6)) | 0;
mid = (mid + Math.imul(ah5, bl6)) | 0;
hi = (hi + Math.imul(ah5, bh6)) | 0;
lo = (lo + Math.imul(al4, bl7)) | 0;
mid = (mid + Math.imul(al4, bh7)) | 0;
mid = (mid + Math.imul(ah4, bl7)) | 0;
hi = (hi + Math.imul(ah4, bh7)) | 0;
lo = (lo + Math.imul(al3, bl8)) | 0;
mid = (mid + Math.imul(al3, bh8)) | 0;
mid = (mid + Math.imul(ah3, bl8)) | 0;
hi = (hi + Math.imul(ah3, bh8)) | 0;
lo = (lo + Math.imul(al2, bl9)) | 0;
mid = (mid + Math.imul(al2, bh9)) | 0;
mid = (mid + Math.imul(ah2, bl9)) | 0;
hi = (hi + Math.imul(ah2, bh9)) | 0;
var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;
w11 &= 0x3ffffff;
/* k = 12 */
lo = Math.imul(al9, bl3);
mid = Math.imul(al9, bh3);
mid = (mid + Math.imul(ah9, bl3)) | 0;
hi = Math.imul(ah9, bh3);
lo = (lo + Math.imul(al8, bl4)) | 0;
mid = (mid + Math.imul(al8, bh4)) | 0;
mid = (mid + Math.imul(ah8, bl4)) | 0;
hi = (hi + Math.imul(ah8, bh4)) | 0;
lo = (lo + Math.imul(al7, bl5)) | 0;
mid = (mid + Math.imul(al7, bh5)) | 0;
mid = (mid + Math.imul(ah7, bl5)) | 0;
hi = (hi + Math.imul(ah7, bh5)) | 0;
lo = (lo + Math.imul(al6, bl6)) | 0;
mid = (mid + Math.imul(al6, bh6)) | 0;
mid = (mid + Math.imul(ah6, bl6)) | 0;
hi = (hi + Math.imul(ah6, bh6)) | 0;
lo = (lo + Math.imul(al5, bl7)) | 0;
mid = (mid + Math.imul(al5, bh7)) | 0;
mid = (mid + Math.imul(ah5, bl7)) | 0;
hi = (hi + Math.imul(ah5, bh7)) | 0;
lo = (lo + Math.imul(al4, bl8)) | 0;
mid = (mid + Math.imul(al4, bh8)) | 0;
mid = (mid + Math.imul(ah4, bl8)) | 0;
hi = (hi + Math.imul(ah4, bh8)) | 0;
lo = (lo + Math.imul(al3, bl9)) | 0;
mid = (mid + Math.imul(al3, bh9)) | 0;
mid = (mid + Math.imul(ah3, bl9)) | 0;
hi = (hi + Math.imul(ah3, bh9)) | 0;
var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;
w12 &= 0x3ffffff;
/* k = 13 */
lo = Math.imul(al9, bl4);
mid = Math.imul(al9, bh4);
mid = (mid + Math.imul(ah9, bl4)) | 0;
hi = Math.imul(ah9, bh4);
lo = (lo + Math.imul(al8, bl5)) | 0;
mid = (mid + Math.imul(al8, bh5)) | 0;
mid = (mid + Math.imul(ah8, bl5)) | 0;
hi = (hi + Math.imul(ah8, bh5)) | 0;
lo = (lo + Math.imul(al7, bl6)) | 0;
mid = (mid + Math.imul(al7, bh6)) | 0;
mid = (mid + Math.imul(ah7, bl6)) | 0;
hi = (hi + Math.imul(ah7, bh6)) | 0;
lo = (lo + Math.imul(al6, bl7)) | 0;
mid = (mid + Math.imul(al6, bh7)) | 0;
mid = (mid + Math.imul(ah6, bl7)) | 0;
hi = (hi + Math.imul(ah6, bh7)) | 0;
lo = (lo + Math.imul(al5, bl8)) | 0;
mid = (mid + Math.imul(al5, bh8)) | 0;
mid = (mid + Math.imul(ah5, bl8)) | 0;
hi = (hi + Math.imul(ah5, bh8)) | 0;
lo = (lo + Math.imul(al4, bl9)) | 0;
mid = (mid + Math.imul(al4, bh9)) | 0;
mid = (mid + Math.imul(ah4, bl9)) | 0;
hi = (hi + Math.imul(ah4, bh9)) | 0;
var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;
w13 &= 0x3ffffff;
/* k = 14 */
lo = Math.imul(al9, bl5);
mid = Math.imul(al9, bh5);
mid = (mid + Math.imul(ah9, bl5)) | 0;
hi = Math.imul(ah9, bh5);
lo = (lo + Math.imul(al8, bl6)) | 0;
mid = (mid + Math.imul(al8, bh6)) | 0;
mid = (mid + Math.imul(ah8, bl6)) | 0;
hi = (hi + Math.imul(ah8, bh6)) | 0;
lo = (lo + Math.imul(al7, bl7)) | 0;
mid = (mid + Math.imul(al7, bh7)) | 0;
mid = (mid + Math.imul(ah7, bl7)) | 0;
hi = (hi + Math.imul(ah7, bh7)) | 0;
lo = (lo + Math.imul(al6, bl8)) | 0;
mid = (mid + Math.imul(al6, bh8)) | 0;
mid = (mid + Math.imul(ah6, bl8)) | 0;
hi = (hi + Math.imul(ah6, bh8)) | 0;
lo = (lo + Math.imul(al5, bl9)) | 0;
mid = (mid + Math.imul(al5, bh9)) | 0;
mid = (mid + Math.imul(ah5, bl9)) | 0;
hi = (hi + Math.imul(ah5, bh9)) | 0;
var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;
w14 &= 0x3ffffff;
/* k = 15 */
lo = Math.imul(al9, bl6);
mid = Math.imul(al9, bh6);
mid = (mid + Math.imul(ah9, bl6)) | 0;
hi = Math.imul(ah9, bh6);
lo = (lo + Math.imul(al8, bl7)) | 0;
mid = (mid + Math.imul(al8, bh7)) | 0;
mid = (mid + Math.imul(ah8, bl7)) | 0;
hi = (hi + Math.imul(ah8, bh7)) | 0;
lo = (lo + Math.imul(al7, bl8)) | 0;
mid = (mid + Math.imul(al7, bh8)) | 0;
mid = (mid + Math.imul(ah7, bl8)) | 0;
hi = (hi + Math.imul(ah7, bh8)) | 0;
lo = (lo + Math.imul(al6, bl9)) | 0;
mid = (mid + Math.imul(al6, bh9)) | 0;
mid = (mid + Math.imul(ah6, bl9)) | 0;
hi = (hi + Math.imul(ah6, bh9)) | 0;
var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;
w15 &= 0x3ffffff;
/* k = 16 */
lo = Math.imul(al9, bl7);
mid = Math.imul(al9, bh7);
mid = (mid + Math.imul(ah9, bl7)) | 0;
hi = Math.imul(ah9, bh7);
lo = (lo + Math.imul(al8, bl8)) | 0;
mid = (mid + Math.imul(al8, bh8)) | 0;
mid = (mid + Math.imul(ah8, bl8)) | 0;
hi = (hi + Math.imul(ah8, bh8)) | 0;
lo = (lo + Math.imul(al7, bl9)) | 0;
mid = (mid + Math.imul(al7, bh9)) | 0;
mid = (mid + Math.imul(ah7, bl9)) | 0;
hi = (hi + Math.imul(ah7, bh9)) | 0;
var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;
w16 &= 0x3ffffff;
/* k = 17 */
lo = Math.imul(al9, bl8);
mid = Math.imul(al9, bh8);
mid = (mid + Math.imul(ah9, bl8)) | 0;
hi = Math.imul(ah9, bh8);
lo = (lo + Math.imul(al8, bl9)) | 0;
mid = (mid + Math.imul(al8, bh9)) | 0;
mid = (mid + Math.imul(ah8, bl9)) | 0;
hi = (hi + Math.imul(ah8, bh9)) | 0;
var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;
w17 &= 0x3ffffff;
/* k = 18 */
lo = Math.imul(al9, bl9);
mid = Math.imul(al9, bh9);
mid = (mid + Math.imul(ah9, bl9)) | 0;
hi = Math.imul(ah9, bh9);
var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;
w18 &= 0x3ffffff;
o[0] = w0;
o[1] = w1;
o[2] = w2;
o[3] = w3;
o[4] = w4;
o[5] = w5;
o[6] = w6;
o[7] = w7;
o[8] = w8;
o[9] = w9;
o[10] = w10;
o[11] = w11;
o[12] = w12;
o[13] = w13;
o[14] = w14;
o[15] = w15;
o[16] = w16;
o[17] = w17;
o[18] = w18;
if (c !== 0) {
o[19] = c;
out.length++;
}
return out;
};
// Polyfill comb
if (!Math.imul) {
comb10MulTo = smallMulTo;
}
function bigMulTo (self, num, out) {
out.negative = num.negative ^ self.negative;
out.length = self.length + num.length;
var carry = 0;
var hncarry = 0;
for (var k = 0; k < out.length - 1; k++) {
// Sum all words with the same `i + j = k` and accumulate `ncarry`,
// note that ncarry could be >= 0x3ffffff
var ncarry = hncarry;
hncarry = 0;
var rword = carry & 0x3ffffff;
var maxJ = Math.min(k, num.length - 1);
for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
var i = k - j;
var a = self.words[i] | 0;
var b = num.words[j] | 0;
var r = a * b;
var lo = r & 0x3ffffff;
ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;
lo = (lo + rword) | 0;
rword = lo & 0x3ffffff;
ncarry = (ncarry + (lo >>> 26)) | 0;
hncarry += ncarry >>> 26;
ncarry &= 0x3ffffff;
}
out.words[k] = rword;
carry = ncarry;
ncarry = hncarry;
}
if (carry !== 0) {
out.words[k] = carry;
} else {
out.length--;
}
return out.strip();
}
function jumboMulTo (self, num, out) {
var fftm = new FFTM();
return fftm.mulp(self, num, out);
}
BN.prototype.mulTo = function mulTo (num, out) {
var res;
var len = this.length + num.length;
if (this.length === 10 && num.length === 10) {
res = comb10MulTo(this, num, out);
} else if (len < 63) {
res = smallMulTo(this, num, out);
} else if (len < 1024) {
res = bigMulTo(this, num, out);
} else {
res = jumboMulTo(this, num, out);
}
return res;
};
// Cooley-Tukey algorithm for FFT
// slightly revisited to rely on looping instead of recursion
function FFTM (x, y) {
this.x = x;
this.y = y;
}
FFTM.prototype.makeRBT = function makeRBT (N) {
var t = new Array(N);
var l = BN.prototype._countBits(N) - 1;
for (var i = 0; i < N; i++) {
t[i] = this.revBin(i, l, N);
}
return t;
};
// Returns binary-reversed representation of `x`
FFTM.prototype.revBin = function revBin (x, l, N) {
if (x === 0 || x === N - 1) return x;
var rb = 0;
for (var i = 0; i < l; i++) {
rb |= (x & 1) << (l - i - 1);
x >>= 1;
}
return rb;
};
// Performs "tweedling" phase, therefore 'emulating'
// behaviour of the recursive algorithm
FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {
for (var i = 0; i < N; i++) {
rtws[i] = rws[rbt[i]];
itws[i] = iws[rbt[i]];
}
};
FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {
this.permute(rbt, rws, iws, rtws, itws, N);
for (var s = 1; s < N; s <<= 1) {
var l = s << 1;
var rtwdf = Math.cos(2 * Math.PI / l);
var itwdf = Math.sin(2 * Math.PI / l);
for (var p = 0; p < N; p += l) {
var rtwdf_ = rtwdf;
var itwdf_ = itwdf;
for (var j = 0; j < s; j++) {
var re = rtws[p + j];
var ie = itws[p + j];
var ro = rtws[p + j + s];
var io = itws[p + j + s];
var rx = rtwdf_ * ro - itwdf_ * io;
io = rtwdf_ * io + itwdf_ * ro;
ro = rx;
rtws[p + j] = re + ro;
itws[p + j] = ie + io;
rtws[p + j + s] = re - ro;
itws[p + j + s] = ie - io;
/* jshint maxdepth : false */
if (j !== l) {
rx = rtwdf * rtwdf_ - itwdf * itwdf_;
itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;
rtwdf_ = rx;
}
}
}
}
};
FFTM.prototype.guessLen13b = function guessLen13b (n, m) {
var N = Math.max(m, n) | 1;
var odd = N & 1;
var i = 0;
for (N = N / 2 | 0; N; N = N >>> 1) {
i++;
}
return 1 << i + 1 + odd;
};
FFTM.prototype.conjugate = function conjugate (rws, iws, N) {
if (N <= 1) return;
for (var i = 0; i < N / 2; i++) {
var t = rws[i];
rws[i] = rws[N - i - 1];
rws[N - i - 1] = t;
t = iws[i];
iws[i] = -iws[N - i - 1];
iws[N - i - 1] = -t;
}
};
FFTM.prototype.normalize13b = function normalize13b (ws, N) {
var carry = 0;
for (var i = 0; i < N / 2; i++) {
var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +
Math.round(ws[2 * i] / N) +
carry;
ws[i] = w & 0x3ffffff;
if (w < 0x4000000) {
carry = 0;
} else {
carry = w / 0x4000000 | 0;
}
}
return ws;
};
FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {
var carry = 0;
for (var i = 0; i < len; i++) {
carry = carry + (ws[i] | 0);
rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;
rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;
}
// Pad with zeroes
for (i = 2 * len; i < N; ++i) {
rws[i] = 0;
}
assert(carry === 0);
assert((carry & ~0x1fff) === 0);
};
FFTM.prototype.stub = function stub (N) {
var ph = new Array(N);
for (var i = 0; i < N; i++) {
ph[i] = 0;
}
return ph;
};
FFTM.prototype.mulp = function mulp (x, y, out) {
var N = 2 * this.guessLen13b(x.length, y.length);
var rbt = this.makeRBT(N);
var _ = this.stub(N);
var rws = new Array(N);
var rwst = new Array(N);
var iwst = new Array(N);
var nrws = new Array(N);
var nrwst = new Array(N);
var niwst = new Array(N);
var rmws = out.words;
rmws.length = N;
this.convert13b(x.words, x.length, rws, N);
this.convert13b(y.words, y.length, nrws, N);
this.transform(rws, _, rwst, iwst, N, rbt);
this.transform(nrws, _, nrwst, niwst, N, rbt);
for (var i = 0; i < N; i++) {
var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];
iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];
rwst[i] = rx;
}
this.conjugate(rwst, iwst, N);
this.transform(rwst, iwst, rmws, _, N, rbt);
this.conjugate(rmws, _, N);
this.normalize13b(rmws, N);
out.negative = x.negative ^ y.negative;
out.length = x.length + y.length;
return out.strip();
};
// Multiply `this` by `num`
BN.prototype.mul = function mul (num) {
var out = new BN(null);
out.words = new Array(this.length + num.length);
return this.mulTo(num, out);
};
// Multiply employing FFT
BN.prototype.mulf = function mulf (num) {
var out = new BN(null);
out.words = new Array(this.length + num.length);
return jumboMulTo(this, num, out);
};
// In-place Multiplication
BN.prototype.imul = function imul (num) {
return this.clone().mulTo(num, this);
};
BN.prototype.imuln = function imuln (num) {
assert(typeof num === 'number');
assert(num < 0x4000000);
// Carry
var carry = 0;
for (var i = 0; i < this.length; i++) {
var w = (this.words[i] | 0) * num;
var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);
carry >>= 26;
carry += (w / 0x4000000) | 0;
// NOTE: lo is 27bit maximum
carry += lo >>> 26;
this.words[i] = lo & 0x3ffffff;
}
if (carry !== 0) {
this.words[i] = carry;
this.length++;
}
return this;
};
BN.prototype.muln = function muln (num) {
return this.clone().imuln(num);
};
// `this` * `this`
BN.prototype.sqr = function sqr () {
return this.mul(this);
};
// `this` * `this` in-place
BN.prototype.isqr = function isqr () {
return this.imul(this.clone());
};
// Math.pow(`this`, `num`)
BN.prototype.pow = function pow (num) {
var w = toBitArray(num);
if (w.length === 0) return new BN(1);
// Skip leading zeroes
var res = this;
for (var i = 0; i < w.length; i++, res = res.sqr()) {
if (w[i] !== 0) break;
}
if (++i < w.length) {
for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {
if (w[i] === 0) continue;
res = res.mul(q);
}
}
return res;
};
// Shift-left in-place
BN.prototype.iushln = function iushln (bits) {
assert(typeof bits === 'number' && bits >= 0);
var r = bits % 26;
var s = (bits - r) / 26;
var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);
var i;
if (r !== 0) {
var carry = 0;
for (i = 0; i < this.length; i++) {
var newCarry = this.words[i] & carryMask;
var c = ((this.words[i] | 0) - newCarry) << r;
this.words[i] = c | carry;
carry = newCarry >>> (26 - r);
}
if (carry) {
this.words[i] = carry;
this.length++;
}
}
if (s !== 0) {
for (i = this.length - 1; i >= 0; i--) {
this.words[i + s] = this.words[i];
}
for (i = 0; i < s; i++) {
this.words[i] = 0;
}
this.length += s;
}
return this.strip();
};
BN.prototype.ishln = function ishln (bits) {
// TODO(indutny): implement me
assert(this.negative === 0);
return this.iushln(bits);
};
// Shift-right in-place
// NOTE: `hint` is a lowest bit before trailing zeroes
// NOTE: if `extended` is present - it will be filled with destroyed bits
BN.prototype.iushrn = function iushrn (bits, hint, extended) {
assert(typeof bits === 'number' && bits >= 0);
var h;
if (hint) {
h = (hint - (hint % 26)) / 26;
} else {
h = 0;
}
var r = bits % 26;
var s = Math.min((bits - r) / 26, this.length);
var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
var maskedWords = extended;
h -= s;
h = Math.max(0, h);
// Extended mode, copy masked part
if (maskedWords) {
for (var i = 0; i < s; i++) {
maskedWords.words[i] = this.words[i];
}
maskedWords.length = s;
}
if (s === 0) {
// No-op, we should not move anything at all
} else if (this.length > s) {
this.length -= s;
for (i = 0; i < this.length; i++) {
this.words[i] = this.words[i + s];
}
} else {
this.words[0] = 0;
this.length = 1;
}
var carry = 0;
for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {
var word = this.words[i] | 0;
this.words[i] = (carry << (26 - r)) | (word >>> r);
carry = word & mask;
}
// Push carried bits as a mask
if (maskedWords && carry !== 0) {
maskedWords.words[maskedWords.length++] = carry;
}
if (this.length === 0) {
this.words[0] = 0;
this.length = 1;
}
return this.strip();
};
BN.prototype.ishrn = function ishrn (bits, hint, extended) {
// TODO(indutny): implement me
assert(this.negative === 0);
return this.iushrn(bits, hint, extended);
};
// Shift-left
BN.prototype.shln = function shln (bits) {
return this.clone().ishln(bits);
};
BN.prototype.ushln = function ushln (bits) {
return this.clone().iushln(bits);
};
// Shift-right
BN.prototype.shrn = function shrn (bits) {
return this.clone().ishrn(bits);
};
BN.prototype.ushrn = function ushrn (bits) {
return this.clone().iushrn(bits);
};
// Test if n bit is set
BN.prototype.testn = function testn (bit) {
assert(typeof bit === 'number' && bit >= 0);
var r = bit % 26;
var s = (bit - r) / 26;
var q = 1 << r;
// Fast case: bit is much higher than all existing words
if (this.length <= s) return false;
// Check bit and return
var w = this.words[s];
return !!(w & q);
};
// Return only lowers bits of number (in-place)
BN.prototype.imaskn = function imaskn (bits) {
assert(typeof bits === 'number' && bits >= 0);
var r = bits % 26;
var s = (bits - r) / 26;
assert(this.negative === 0, 'imaskn works only with positive numbers');
if (this.length <= s) {
return this;
}
if (r !== 0) {
s++;
}
this.length = Math.min(s, this.length);
if (r !== 0) {
var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
this.words[this.length - 1] &= mask;
}
return this.strip();
};
// Return only lowers bits of number
BN.prototype.maskn = function maskn (bits) {
return this.clone().imaskn(bits);
};
// Add plain number `num` to `this`
BN.prototype.iaddn = function iaddn (num) {
assert(typeof num === 'number');
assert(num < 0x4000000);
if (num < 0) return this.isubn(-num);
// Possible sign change
if (this.negative !== 0) {
if (this.length === 1 && (this.words[0] | 0) < num) {
this.words[0] = num - (this.words[0] | 0);
this.negative = 0;
return this;
}
this.negative = 0;
this.isubn(num);
this.negative = 1;
return this;
}
// Add without checks
return this._iaddn(num);
};
BN.prototype._iaddn = function _iaddn (num) {
this.words[0] += num;
// Carry
for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {
this.words[i] -= 0x4000000;
if (i === this.length - 1) {
this.words[i + 1] = 1;
} else {
this.words[i + 1]++;
}
}
this.length = Math.max(this.length, i + 1);
return this;
};
// Subtract plain number `num` from `this`
BN.prototype.isubn = function isubn (num) {
assert(typeof num === 'number');
assert(num < 0x4000000);
if (num < 0) return this.iaddn(-num);
if (this.negative !== 0) {
this.negative = 0;
this.iaddn(num);
this.negative = 1;
return this;
}
this.words[0] -= num;
if (this.length === 1 && this.words[0] < 0) {
this.words[0] = -this.words[0];
this.negative = 1;
} else {
// Carry
for (var i = 0; i < this.length && this.words[i] < 0; i++) {
this.words[i] += 0x4000000;
this.words[i + 1] -= 1;
}
}
return this.strip();
};
BN.prototype.addn = function addn (num) {
return this.clone().iaddn(num);
};
BN.prototype.subn = function subn (num) {
return this.clone().isubn(num);
};
BN.prototype.iabs = function iabs () {
this.negative = 0;
return this;
};
BN.prototype.abs = function abs () {
return this.clone().iabs();
};
BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {
var len = num.length + shift;
var i;
this._expand(len);
var w;
var carry = 0;
for (i = 0; i < num.length; i++) {
w = (this.words[i + shift] | 0) + carry;
var right = (num.words[i] | 0) * mul;
w -= right & 0x3ffffff;
carry = (w >> 26) - ((right / 0x4000000) | 0);
this.words[i + shift] = w & 0x3ffffff;
}
for (; i < this.length - shift; i++) {
w = (this.words[i + shift] | 0) + carry;
carry = w >> 26;
this.words[i + shift] = w & 0x3ffffff;
}
if (carry === 0) return this.strip();
// Subtraction overflow
assert(carry === -1);
carry = 0;
for (i = 0; i < this.length; i++) {
w = -(this.words[i] | 0) + carry;
carry = w >> 26;
this.words[i] = w & 0x3ffffff;
}
this.negative = 1;
return this.strip();
};
BN.prototype._wordDiv = function _wordDiv (num, mode) {
var shift = this.length - num.length;
var a = this.clone();
var b = num;
// Normalize
var bhi = b.words[b.length - 1] | 0;
var bhiBits = this._countBits(bhi);
shift = 26 - bhiBits;
if (shift !== 0) {
b = b.ushln(shift);
a.iushln(shift);
bhi = b.words[b.length - 1] | 0;
}
// Initialize quotient
var m = a.length - b.length;
var q;
if (mode !== 'mod') {
q = new BN(null);
q.length = m + 1;
q.words = new Array(q.length);
for (var i = 0; i < q.length; i++) {
q.words[i] = 0;
}
}
var diff = a.clone()._ishlnsubmul(b, 1, m);
if (diff.negative === 0) {
a = diff;
if (q) {
q.words[m] = 1;
}
}
for (var j = m - 1; j >= 0; j--) {
var qj = (a.words[b.length + j] | 0) * 0x4000000 +
(a.words[b.length + j - 1] | 0);
// NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max
// (0x7ffffff)
qj = Math.min((qj / bhi) | 0, 0x3ffffff);
a._ishlnsubmul(b, qj, j);
while (a.negative !== 0) {
qj--;
a.negative = 0;
a._ishlnsubmul(b, 1, j);
if (!a.isZero()) {
a.negative ^= 1;
}
}
if (q) {
q.words[j] = qj;
}
}
if (q) {
q.strip();
}
a.strip();
// Denormalize
if (mode !== 'div' && shift !== 0) {
a.iushrn(shift);
}
return {
div: q || null,
mod: a
};
};
// NOTE: 1) `mode` can be set to `mod` to request mod only,
// to `div` to request div only, or be absent to
// request both div & mod
// 2) `positive` is true if unsigned mod is requested
BN.prototype.divmod = function divmod (num, mode, positive) {
assert(!num.isZero());
if (this.isZero()) {
return {
div: new BN(0),
mod: new BN(0)
};
}
var div, mod, res;
if (this.negative !== 0 && num.negative === 0) {
res = this.neg().divmod(num, mode);
if (mode !== 'mod') {
div = res.div.neg();
}
if (mode !== 'div') {
mod = res.mod.neg();
if (positive && mod.negative !== 0) {
mod.iadd(num);
}
}
return {
div: div,
mod: mod
};
}
if (this.negative === 0 && num.negative !== 0) {
res = this.divmod(num.neg(), mode);
if (mode !== 'mod') {
div = res.div.neg();
}
return {
div: div,
mod: res.mod
};
}
if ((this.negative & num.negative) !== 0) {
res = this.neg().divmod(num.neg(), mode);
if (mode !== 'div') {
mod = res.mod.neg();
if (positive && mod.negative !== 0) {
mod.isub(num);
}
}
return {
div: res.div,
mod: mod
};
}
// Both numbers are positive at this point
// Strip both numbers to approximate shift value
if (num.length > this.length || this.cmp(num) < 0) {
return {
div: new BN(0),
mod: this
};
}
// Very short reduction
if (num.length === 1) {
if (mode === 'div') {
return {
div: this.divn(num.words[0]),
mod: null
};
}
if (mode === 'mod') {
return {
div: null,
mod: new BN(this.modn(num.words[0]))
};
}
return {
div: this.divn(num.words[0]),
mod: new BN(this.modn(num.words[0]))
};
}
return this._wordDiv(num, mode);
};
// Find `this` / `num`
BN.prototype.div = function div (num) {
return this.divmod(num, 'div', false).div;
};
// Find `this` % `num`
BN.prototype.mod = function mod (num) {
return this.divmod(num, 'mod', false).mod;
};
BN.prototype.umod = function umod (num) {
return this.divmod(num, 'mod', true).mod;
};
// Find Round(`this` / `num`)
BN.prototype.divRound = function divRound (num) {
var dm = this.divmod(num);
// Fast case - exact division
if (dm.mod.isZero()) return dm.div;
var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;
var half = num.ushrn(1);
var r2 = num.andln(1);
var cmp = mod.cmp(half);
// Round down
if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;
// Round up
return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);
};
BN.prototype.modn = function modn (num) {
assert(num <= 0x3ffffff);
var p = (1 << 26) % num;
var acc = 0;
for (var i = this.length - 1; i >= 0; i--) {
acc = (p * acc + (this.words[i] | 0)) % num;
}
return acc;
};
// In-place division by number
BN.prototype.idivn = function idivn (num) {
assert(num <= 0x3ffffff);
var carry = 0;
for (var i = this.length - 1; i >= 0; i--) {
var w = (this.words[i] | 0) + carry * 0x4000000;
this.words[i] = (w / num) | 0;
carry = w % num;
}
return this.strip();
};
BN.prototype.divn = function divn (num) {
return this.clone().idivn(num);
};
BN.prototype.egcd = function egcd (p) {
assert(p.negative === 0);
assert(!p.isZero());
var x = this;
var y = p.clone();
if (x.negative !== 0) {
x = x.umod(p);
} else {
x = x.clone();
}
// A * x + B * y = x
var A = new BN(1);
var B = new BN(0);
// C * x + D * y = y
var C = new BN(0);
var D = new BN(1);
var g = 0;
while (x.isEven() && y.isEven()) {
x.iushrn(1);
y.iushrn(1);
++g;
}
var yp = y.clone();
var xp = x.clone();
while (!x.isZero()) {
for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
if (i > 0) {
x.iushrn(i);
while (i-- > 0) {
if (A.isOdd() || B.isOdd()) {
A.iadd(yp);
B.isub(xp);
}
A.iushrn(1);
B.iushrn(1);
}
}
for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
if (j > 0) {
y.iushrn(j);
while (j-- > 0) {
if (C.isOdd() || D.isOdd()) {
C.iadd(yp);
D.isub(xp);
}
C.iushrn(1);
D.iushrn(1);
}
}
if (x.cmp(y) >= 0) {
x.isub(y);
A.isub(C);
B.isub(D);
} else {
y.isub(x);
C.isub(A);
D.isub(B);
}
}
return {
a: C,
b: D,
gcd: y.iushln(g)
};
};
// This is reduced incarnation of the binary EEA
// above, designated to invert members of the
// _prime_ fields F(p) at a maximal speed
BN.prototype._invmp = function _invmp (p) {
assert(p.negative === 0);
assert(!p.isZero());
var a = this;
var b = p.clone();
if (a.negative !== 0) {
a = a.umod(p);
} else {
a = a.clone();
}
var x1 = new BN(1);
var x2 = new BN(0);
var delta = b.clone();
while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {
for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
if (i > 0) {
a.iushrn(i);
while (i-- > 0) {
if (x1.isOdd()) {
x1.iadd(delta);
}
x1.iushrn(1);
}
}
for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
if (j > 0) {
b.iushrn(j);
while (j-- > 0) {
if (x2.isOdd()) {
x2.iadd(delta);
}
x2.iushrn(1);
}
}
if (a.cmp(b) >= 0) {
a.isub(b);
x1.isub(x2);
} else {
b.isub(a);
x2.isub(x1);
}
}
var res;
if (a.cmpn(1) === 0) {
res = x1;
} else {
res = x2;
}
if (res.cmpn(0) < 0) {
res.iadd(p);
}
return res;
};
BN.prototype.gcd = function gcd (num) {
if (this.isZero()) return num.abs();
if (num.isZero()) return this.abs();
var a = this.clone();
var b = num.clone();
a.negative = 0;
b.negative = 0;
// Remove common factor of two
for (var shift = 0; a.isEven() && b.isEven(); shift++) {
a.iushrn(1);
b.iushrn(1);
}
do {
while (a.isEven()) {
a.iushrn(1);
}
while (b.isEven()) {
b.iushrn(1);
}
var r = a.cmp(b);
if (r < 0) {
// Swap `a` and `b` to make `a` always bigger than `b`
var t = a;
a = b;
b = t;
} else if (r === 0 || b.cmpn(1) === 0) {
break;
}
a.isub(b);
} while (true);
return b.iushln(shift);
};
// Invert number in the field F(num)
BN.prototype.invm = function invm (num) {
return this.egcd(num).a.umod(num);
};
BN.prototype.isEven = function isEven () {
return (this.words[0] & 1) === 0;
};
BN.prototype.isOdd = function isOdd () {
return (this.words[0] & 1) === 1;
};
// And first word and num
BN.prototype.andln = function andln (num) {
return this.words[0] & num;
};
// Increment at the bit position in-line
BN.prototype.bincn = function bincn (bit) {
assert(typeof bit === 'number');
var r = bit % 26;
var s = (bit - r) / 26;
var q = 1 << r;
// Fast case: bit is much higher than all existing words
if (this.length <= s) {
this._expand(s + 1);
this.words[s] |= q;
return this;
}
// Add bit and propagate, if needed
var carry = q;
for (var i = s; carry !== 0 && i < this.length; i++) {
var w = this.words[i] | 0;
w += carry;
carry = w >>> 26;
w &= 0x3ffffff;
this.words[i] = w;
}
if (carry !== 0) {
this.words[i] = carry;
this.length++;
}
return this;
};
BN.prototype.isZero = function isZero () {
return this.length === 1 && this.words[0] === 0;
};
BN.prototype.cmpn = function cmpn (num) {
var negative = num < 0;
if (this.negative !== 0 && !negative) return -1;
if (this.negative === 0 && negative) return 1;
this.strip();
var res;
if (this.length > 1) {
res = 1;
} else {
if (negative) {
num = -num;
}
assert(num <= 0x3ffffff, 'Number is too big');
var w = this.words[0] | 0;
res = w === num ? 0 : w < num ? -1 : 1;
}
if (this.negative !== 0) return -res | 0;
return res;
};
// Compare two numbers and return:
// 1 - if `this` > `num`
// 0 - if `this` == `num`
// -1 - if `this` < `num`
BN.prototype.cmp = function cmp (num) {
if (this.negative !== 0 && num.negative === 0) return -1;
if (this.negative === 0 && num.negative !== 0) return 1;
var res = this.ucmp(num);
if (this.negative !== 0) return -res | 0;
return res;
};
// Unsigned comparison
BN.prototype.ucmp = function ucmp (num) {
// At this point both numbers have the same sign
if (this.length > num.length) return 1;
if (this.length < num.length) return -1;
var res = 0;
for (var i = this.length - 1; i >= 0; i--) {
var a = this.words[i] | 0;
var b = num.words[i] | 0;
if (a === b) continue;
if (a < b) {
res = -1;
} else if (a > b) {
res = 1;
}
break;
}
return res;
};
BN.prototype.gtn = function gtn (num) {
return this.cmpn(num) === 1;
};
BN.prototype.gt = function gt (num) {
return this.cmp(num) === 1;
};
BN.prototype.gten = function gten (num) {
return this.cmpn(num) >= 0;
};
BN.prototype.gte = function gte (num) {
return this.cmp(num) >= 0;
};
BN.prototype.ltn = function ltn (num) {
return this.cmpn(num) === -1;
};
BN.prototype.lt = function lt (num) {
return this.cmp(num) === -1;
};
BN.prototype.lten = function lten (num) {
return this.cmpn(num) <= 0;
};
BN.prototype.lte = function lte (num) {
return this.cmp(num) <= 0;
};
BN.prototype.eqn = function eqn (num) {
return this.cmpn(num) === 0;
};
BN.prototype.eq = function eq (num) {
return this.cmp(num) === 0;
};
//
// A reduce context, could be using montgomery or something better, depending
// on the `m` itself.
//
BN.red = function red (num) {
return new Red(num);
};
BN.prototype.toRed = function toRed (ctx) {
assert(!this.red, 'Already a number in reduction context');
assert(this.negative === 0, 'red works only with positives');
return ctx.convertTo(this)._forceRed(ctx);
};
BN.prototype.fromRed = function fromRed () {
assert(this.red, 'fromRed works only with numbers in reduction context');
return this.red.convertFrom(this);
};
BN.prototype._forceRed = function _forceRed (ctx) {
this.red = ctx;
return this;
};
BN.prototype.forceRed = function forceRed (ctx) {
assert(!this.red, 'Already a number in reduction context');
return this._forceRed(ctx);
};
BN.prototype.redAdd = function redAdd (num) {
assert(this.red, 'redAdd works only with red numbers');
return this.red.add(this, num);
};
BN.prototype.redIAdd = function redIAdd (num) {
assert(this.red, 'redIAdd works only with red numbers');
return this.red.iadd(this, num);
};
BN.prototype.redSub = function redSub (num) {
assert(this.red, 'redSub works only with red numbers');
return this.red.sub(this, num);
};
BN.prototype.redISub = function redISub (num) {
assert(this.red, 'redISub works only with red numbers');
return this.red.isub(this, num);
};
BN.prototype.redShl = function redShl (num) {
assert(this.red, 'redShl works only with red numbers');
return this.red.shl(this, num);
};
BN.prototype.redMul = function redMul (num) {
assert(this.red, 'redMul works only with red numbers');
this.red._verify2(this, num);
return this.red.mul(this, num);
};
BN.prototype.redIMul = function redIMul (num) {
assert(this.red, 'redMul works only with red numbers');
this.red._verify2(this, num);
return this.red.imul(this, num);
};
BN.prototype.redSqr = function redSqr () {
assert(this.red, 'redSqr works only with red numbers');
this.red._verify1(this);
return this.red.sqr(this);
};
BN.prototype.redISqr = function redISqr () {
assert(this.red, 'redISqr works only with red numbers');
this.red._verify1(this);
return this.red.isqr(this);
};
// Square root over p
BN.prototype.redSqrt = function redSqrt () {
assert(this.red, 'redSqrt works only with red numbers');
this.red._verify1(this);
return this.red.sqrt(this);
};
BN.prototype.redInvm = function redInvm () {
assert(this.red, 'redInvm works only with red numbers');
this.red._verify1(this);
return this.red.invm(this);
};
// Return negative clone of `this` % `red modulo`
BN.prototype.redNeg = function redNeg () {
assert(this.red, 'redNeg works only with red numbers');
this.red._verify1(this);
return this.red.neg(this);
};
BN.prototype.redPow = function redPow (num) {
assert(this.red && !num.red, 'redPow(normalNum)');
this.red._verify1(this);
return this.red.pow(this, num);
};
// Prime numbers with efficient reduction
var primes = {
k256: null,
p224: null,
p192: null,
p25519: null
};
// Pseudo-Mersenne prime
function MPrime (name, p) {
// P = 2 ^ N - K
this.name = name;
this.p = new BN(p, 16);
this.n = this.p.bitLength();
this.k = new BN(1).iushln(this.n).isub(this.p);
this.tmp = this._tmp();
}
MPrime.prototype._tmp = function _tmp () {
var tmp = new BN(null);
tmp.words = new Array(Math.ceil(this.n / 13));
return tmp;
};
MPrime.prototype.ireduce = function ireduce (num) {
// Assumes that `num` is less than `P^2`
// num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)
var r = num;
var rlen;
do {
this.split(r, this.tmp);
r = this.imulK(r);
r = r.iadd(this.tmp);
rlen = r.bitLength();
} while (rlen > this.n);
var cmp = rlen < this.n ? -1 : r.ucmp(this.p);
if (cmp === 0) {
r.words[0] = 0;
r.length = 1;
} else if (cmp > 0) {
r.isub(this.p);
} else {
if (r.strip !== undefined) {
// r is BN v4 instance
r.strip();
} else {
// r is BN v5 instance
r._strip();
}
}
return r;
};
MPrime.prototype.split = function split (input, out) {
input.iushrn(this.n, 0, out);
};
MPrime.prototype.imulK = function imulK (num) {
return num.imul(this.k);
};
function K256 () {
MPrime.call(
this,
'k256',
'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');
}
inherits(K256, MPrime);
K256.prototype.split = function split (input, output) {
// 256 = 9 * 26 + 22
var mask = 0x3fffff;
var outLen = Math.min(input.length, 9);
for (var i = 0; i < outLen; i++) {
output.words[i] = input.words[i];
}
output.length = outLen;
if (input.length <= 9) {
input.words[0] = 0;
input.length = 1;
return;
}
// Shift by 9 limbs
var prev = input.words[9];
output.words[output.length++] = prev & mask;
for (i = 10; i < input.length; i++) {
var next = input.words[i] | 0;
input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);
prev = next;
}
prev >>>= 22;
input.words[i - 10] = prev;
if (prev === 0 && input.length > 10) {
input.length -= 10;
} else {
input.length -= 9;
}
};
K256.prototype.imulK = function imulK (num) {
// K = 0x1000003d1 = [ 0x40, 0x3d1 ]
num.words[num.length] = 0;
num.words[num.length + 1] = 0;
num.length += 2;
// bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390
var lo = 0;
for (var i = 0; i < num.length; i++) {
var w = num.words[i] | 0;
lo += w * 0x3d1;
num.words[i] = lo & 0x3ffffff;
lo = w * 0x40 + ((lo / 0x4000000) | 0);
}
// Fast length reduction
if (num.words[num.length - 1] === 0) {
num.length--;
if (num.words[num.length - 1] === 0) {
num.length--;
}
}
return num;
};
function P224 () {
MPrime.call(
this,
'p224',
'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');
}
inherits(P224, MPrime);
function P192 () {
MPrime.call(
this,
'p192',
'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');
}
inherits(P192, MPrime);
function P25519 () {
// 2 ^ 255 - 19
MPrime.call(
this,
'25519',
'7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');
}
inherits(P25519, MPrime);
P25519.prototype.imulK = function imulK (num) {
// K = 0x13
var carry = 0;
for (var i = 0; i < num.length; i++) {
var hi = (num.words[i] | 0) * 0x13 + carry;
var lo = hi & 0x3ffffff;
hi >>>= 26;
num.words[i] = lo;
carry = hi;
}
if (carry !== 0) {
num.words[num.length++] = carry;
}
return num;
};
// Exported mostly for testing purposes, use plain name instead
BN._prime = function prime (name) {
// Cached version of prime
if (primes[name]) return primes[name];
var prime;
if (name === 'k256') {
prime = new K256();
} else if (name === 'p224') {
prime = new P224();
} else if (name === 'p192') {
prime = new P192();
} else if (name === 'p25519') {
prime = new P25519();
} else {
throw new Error('Unknown prime ' + name);
}
primes[name] = prime;
return prime;
};
//
// Base reduction engine
//
function Red (m) {
if (typeof m === 'string') {
var prime = BN._prime(m);
this.m = prime.p;
this.prime = prime;
} else {
assert(m.gtn(1), 'modulus must be greater than 1');
this.m = m;
this.prime = null;
}
}
Red.prototype._verify1 = function _verify1 (a) {
assert(a.negative === 0, 'red works only with positives');
assert(a.red, 'red works only with red numbers');
};
Red.prototype._verify2 = function _verify2 (a, b) {
assert((a.negative | b.negative) === 0, 'red works only with positives');
assert(a.red && a.red === b.red,
'red works only with red numbers');
};
Red.prototype.imod = function imod (a) {
if (this.prime) return this.prime.ireduce(a)._forceRed(this);
return a.umod(this.m)._forceRed(this);
};
Red.prototype.neg = function neg (a) {
if (a.isZero()) {
return a.clone();
}
return this.m.sub(a)._forceRed(this);
};
Red.prototype.add = function add (a, b) {
this._verify2(a, b);
var res = a.add(b);
if (res.cmp(this.m) >= 0) {
res.isub(this.m);
}
return res._forceRed(this);
};
Red.prototype.iadd = function iadd (a, b) {
this._verify2(a, b);
var res = a.iadd(b);
if (res.cmp(this.m) >= 0) {
res.isub(this.m);
}
return res;
};
Red.prototype.sub = function sub (a, b) {
this._verify2(a, b);
var res = a.sub(b);
if (res.cmpn(0) < 0) {
res.iadd(this.m);
}
return res._forceRed(this);
};
Red.prototype.isub = function isub (a, b) {
this._verify2(a, b);
var res = a.isub(b);
if (res.cmpn(0) < 0) {
res.iadd(this.m);
}
return res;
};
Red.prototype.shl = function shl (a, num) {
this._verify1(a);
return this.imod(a.ushln(num));
};
Red.prototype.imul = function imul (a, b) {
this._verify2(a, b);
return this.imod(a.imul(b));
};
Red.prototype.mul = function mul (a, b) {
this._verify2(a, b);
return this.imod(a.mul(b));
};
Red.prototype.isqr = function isqr (a) {
return this.imul(a, a.clone());
};
Red.prototype.sqr = function sqr (a) {
return this.mul(a, a);
};
Red.prototype.sqrt = function sqrt (a) {
if (a.isZero()) return a.clone();
var mod3 = this.m.andln(3);
assert(mod3 % 2 === 1);
// Fast case
if (mod3 === 3) {
var pow = this.m.add(new BN(1)).iushrn(2);
return this.pow(a, pow);
}
// Tonelli-Shanks algorithm (Totally unoptimized and slow)
//
// Find Q and S, that Q * 2 ^ S = (P - 1)
var q = this.m.subn(1);
var s = 0;
while (!q.isZero() && q.andln(1) === 0) {
s++;
q.iushrn(1);
}
assert(!q.isZero());
var one = new BN(1).toRed(this);
var nOne = one.redNeg();
// Find quadratic non-residue
// NOTE: Max is such because of generalized Riemann hypothesis.
var lpow = this.m.subn(1).iushrn(1);
var z = this.m.bitLength();
z = new BN(2 * z * z).toRed(this);
while (this.pow(z, lpow).cmp(nOne) !== 0) {
z.redIAdd(nOne);
}
var c = this.pow(z, q);
var r = this.pow(a, q.addn(1).iushrn(1));
var t = this.pow(a, q);
var m = s;
while (t.cmp(one) !== 0) {
var tmp = t;
for (var i = 0; tmp.cmp(one) !== 0; i++) {
tmp = tmp.redSqr();
}
assert(i < m);
var b = this.pow(c, new BN(1).iushln(m - i - 1));
r = r.redMul(b);
c = b.redSqr();
t = t.redMul(c);
m = i;
}
return r;
};
Red.prototype.invm = function invm (a) {
var inv = a._invmp(this.m);
if (inv.negative !== 0) {
inv.negative = 0;
return this.imod(inv).redNeg();
} else {
return this.imod(inv);
}
};
Red.prototype.pow = function pow (a, num) {
if (num.isZero()) return new BN(1).toRed(this);
if (num.cmpn(1) === 0) return a.clone();
var windowSize = 4;
var wnd = new Array(1 << windowSize);
wnd[0] = new BN(1).toRed(this);
wnd[1] = a;
for (var i = 2; i < wnd.length; i++) {
wnd[i] = this.mul(wnd[i - 1], a);
}
var res = wnd[0];
var current = 0;
var currentLen = 0;
var start = num.bitLength() % 26;
if (start === 0) {
start = 26;
}
for (i = num.length - 1; i >= 0; i--) {
var word = num.words[i];
for (var j = start - 1; j >= 0; j--) {
var bit = (word >> j) & 1;
if (res !== wnd[0]) {
res = this.sqr(res);
}
if (bit === 0 && current === 0) {
currentLen = 0;
continue;
}
current <<= 1;
current |= bit;
currentLen++;
if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;
res = this.mul(res, wnd[current]);
currentLen = 0;
current = 0;
}
start = 26;
}
return res;
};
Red.prototype.convertTo = function convertTo (num) {
var r = num.umod(this.m);
return r === num ? r.clone() : r;
};
Red.prototype.convertFrom = function convertFrom (num) {
var res = num.clone();
res.red = null;
return res;
};
//
// Montgomery method engine
//
BN.mont = function mont (num) {
return new Mont(num);
};
function Mont (m) {
Red.call(this, m);
this.shift = this.m.bitLength();
if (this.shift % 26 !== 0) {
this.shift += 26 - (this.shift % 26);
}
this.r = new BN(1).iushln(this.shift);
this.r2 = this.imod(this.r.sqr());
this.rinv = this.r._invmp(this.m);
this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);
this.minv = this.minv.umod(this.r);
this.minv = this.r.sub(this.minv);
}
inherits(Mont, Red);
Mont.prototype.convertTo = function convertTo (num) {
return this.imod(num.ushln(this.shift));
};
Mont.prototype.convertFrom = function convertFrom (num) {
var r = this.imod(num.mul(this.rinv));
r.red = null;
return r;
};
Mont.prototype.imul = function imul (a, b) {
if (a.isZero() || b.isZero()) {
a.words[0] = 0;
a.length = 1;
return a;
}
var t = a.imul(b);
var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
var u = t.isub(c).iushrn(this.shift);
var res = u;
if (u.cmp(this.m) >= 0) {
res = u.isub(this.m);
} else if (u.cmpn(0) < 0) {
res = u.iadd(this.m);
}
return res._forceRed(this);
};
Mont.prototype.mul = function mul (a, b) {
if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);
var t = a.mul(b);
var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
var u = t.isub(c).iushrn(this.shift);
var res = u;
if (u.cmp(this.m) >= 0) {
res = u.isub(this.m);
} else if (u.cmpn(0) < 0) {
res = u.iadd(this.m);
}
return res._forceRed(this);
};
Mont.prototype.invm = function invm (a) {
// (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R
var res = this.imod(a._invmp(this.m).mul(this.r2));
return res._forceRed(this);
};
})( false || module, this);
/***/ }),
/***/ 6729:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
var elliptic = exports;
elliptic.version = (__webpack_require__(1636)/* .version */ .rE);
elliptic.utils = __webpack_require__(7011);
elliptic.rand = __webpack_require__(5037);
elliptic.curve = __webpack_require__(894);
elliptic.curves = __webpack_require__(480);
// Protocols
elliptic.ec = __webpack_require__(7447);
elliptic.eddsa = __webpack_require__(8650);
/***/ }),
/***/ 6677:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var BN = __webpack_require__(8490);
var utils = __webpack_require__(7011);
var getNAF = utils.getNAF;
var getJSF = utils.getJSF;
var assert = utils.assert;
function BaseCurve(type, conf) {
this.type = type;
this.p = new BN(conf.p, 16);
// Use Montgomery, when there is no fast reduction for the prime
this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);
// Useful for many curves
this.zero = new BN(0).toRed(this.red);
this.one = new BN(1).toRed(this.red);
this.two = new BN(2).toRed(this.red);
// Curve configuration, optional
this.n = conf.n && new BN(conf.n, 16);
this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);
// Temporary arrays
this._wnafT1 = new Array(4);
this._wnafT2 = new Array(4);
this._wnafT3 = new Array(4);
this._wnafT4 = new Array(4);
this._bitLength = this.n ? this.n.bitLength() : 0;
// Generalized Greg Maxwell's trick
var adjustCount = this.n && this.p.div(this.n);
if (!adjustCount || adjustCount.cmpn(100) > 0) {
this.redN = null;
} else {
this._maxwellTrick = true;
this.redN = this.n.toRed(this.red);
}
}
module.exports = BaseCurve;
BaseCurve.prototype.point = function point() {
throw new Error('Not implemented');
};
BaseCurve.prototype.validate = function validate() {
throw new Error('Not implemented');
};
BaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {
assert(p.precomputed);
var doubles = p._getDoubles();
var naf = getNAF(k, 1, this._bitLength);
var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);
I /= 3;
// Translate into more windowed form
var repr = [];
var j;
var nafW;
for (j = 0; j < naf.length; j += doubles.step) {
nafW = 0;
for (var l = j + doubles.step - 1; l >= j; l--)
nafW = (nafW << 1) + naf[l];
repr.push(nafW);
}
var a = this.jpoint(null, null, null);
var b = this.jpoint(null, null, null);
for (var i = I; i > 0; i--) {
for (j = 0; j < repr.length; j++) {
nafW = repr[j];
if (nafW === i)
b = b.mixedAdd(doubles.points[j]);
else if (nafW === -i)
b = b.mixedAdd(doubles.points[j].neg());
}
a = a.add(b);
}
return a.toP();
};
BaseCurve.prototype._wnafMul = function _wnafMul(p, k) {
var w = 4;
// Precompute window
var nafPoints = p._getNAFPoints(w);
w = nafPoints.wnd;
var wnd = nafPoints.points;
// Get NAF form
var naf = getNAF(k, w, this._bitLength);
// Add `this`*(N+1) for every w-NAF index
var acc = this.jpoint(null, null, null);
for (var i = naf.length - 1; i >= 0; i--) {
// Count zeroes
for (var l = 0; i >= 0 && naf[i] === 0; i--)
l++;
if (i >= 0)
l++;
acc = acc.dblp(l);
if (i < 0)
break;
var z = naf[i];
assert(z !== 0);
if (p.type === 'affine') {
// J +- P
if (z > 0)
acc = acc.mixedAdd(wnd[(z - 1) >> 1]);
else
acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());
} else {
// J +- J
if (z > 0)
acc = acc.add(wnd[(z - 1) >> 1]);
else
acc = acc.add(wnd[(-z - 1) >> 1].neg());
}
}
return p.type === 'affine' ? acc.toP() : acc;
};
BaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,
points,
coeffs,
len,
jacobianResult) {
var wndWidth = this._wnafT1;
var wnd = this._wnafT2;
var naf = this._wnafT3;
// Fill all arrays
var max = 0;
var i;
var j;
var p;
for (i = 0; i < len; i++) {
p = points[i];
var nafPoints = p._getNAFPoints(defW);
wndWidth[i] = nafPoints.wnd;
wnd[i] = nafPoints.points;
}
// Comb small window NAFs
for (i = len - 1; i >= 1; i -= 2) {
var a = i - 1;
var b = i;
if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {
naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);
naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);
max = Math.max(naf[a].length, max);
max = Math.max(naf[b].length, max);
continue;
}
var comb = [
points[a], /* 1 */
null, /* 3 */
null, /* 5 */
points[b], /* 7 */
];
// Try to avoid Projective points, if possible
if (points[a].y.cmp(points[b].y) === 0) {
comb[1] = points[a].add(points[b]);
comb[2] = points[a].toJ().mixedAdd(points[b].neg());
} else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {
comb[1] = points[a].toJ().mixedAdd(points[b]);
comb[2] = points[a].add(points[b].neg());
} else {
comb[1] = points[a].toJ().mixedAdd(points[b]);
comb[2] = points[a].toJ().mixedAdd(points[b].neg());
}
var index = [
-3, /* -1 -1 */
-1, /* -1 0 */
-5, /* -1 1 */
-7, /* 0 -1 */
0, /* 0 0 */
7, /* 0 1 */
5, /* 1 -1 */
1, /* 1 0 */
3, /* 1 1 */
];
var jsf = getJSF(coeffs[a], coeffs[b]);
max = Math.max(jsf[0].length, max);
naf[a] = new Array(max);
naf[b] = new Array(max);
for (j = 0; j < max; j++) {
var ja = jsf[0][j] | 0;
var jb = jsf[1][j] | 0;
naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];
naf[b][j] = 0;
wnd[a] = comb;
}
}
var acc = this.jpoint(null, null, null);
var tmp = this._wnafT4;
for (i = max; i >= 0; i--) {
var k = 0;
while (i >= 0) {
var zero = true;
for (j = 0; j < len; j++) {
tmp[j] = naf[j][i] | 0;
if (tmp[j] !== 0)
zero = false;
}
if (!zero)
break;
k++;
i--;
}
if (i >= 0)
k++;
acc = acc.dblp(k);
if (i < 0)
break;
for (j = 0; j < len; j++) {
var z = tmp[j];
p;
if (z === 0)
continue;
else if (z > 0)
p = wnd[j][(z - 1) >> 1];
else if (z < 0)
p = wnd[j][(-z - 1) >> 1].neg();
if (p.type === 'affine')
acc = acc.mixedAdd(p);
else
acc = acc.add(p);
}
}
// Zeroify references
for (i = 0; i < len; i++)
wnd[i] = null;
if (jacobianResult)
return acc;
else
return acc.toP();
};
function BasePoint(curve, type) {
this.curve = curve;
this.type = type;
this.precomputed = null;
}
BaseCurve.BasePoint = BasePoint;
BasePoint.prototype.eq = function eq(/*other*/) {
throw new Error('Not implemented');
};
BasePoint.prototype.validate = function validate() {
return this.curve.validate(this);
};
BaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
bytes = utils.toArray(bytes, enc);
var len = this.p.byteLength();
// uncompressed, hybrid-odd, hybrid-even
if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&
bytes.length - 1 === 2 * len) {
if (bytes[0] === 0x06)
assert(bytes[bytes.length - 1] % 2 === 0);
else if (bytes[0] === 0x07)
assert(bytes[bytes.length - 1] % 2 === 1);
var res = this.point(bytes.slice(1, 1 + len),
bytes.slice(1 + len, 1 + 2 * len));
return res;
} else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&
bytes.length - 1 === len) {
return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);
}
throw new Error('Unknown point format');
};
BasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {
return this.encode(enc, true);
};
BasePoint.prototype._encode = function _encode(compact) {
var len = this.curve.p.byteLength();
var x = this.getX().toArray('be', len);
if (compact)
return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);
return [ 0x04 ].concat(x, this.getY().toArray('be', len));
};
BasePoint.prototype.encode = function encode(enc, compact) {
return utils.encode(this._encode(compact), enc);
};
BasePoint.prototype.precompute = function precompute(power) {
if (this.precomputed)
return this;
var precomputed = {
doubles: null,
naf: null,
beta: null,
};
precomputed.naf = this._getNAFPoints(8);
precomputed.doubles = this._getDoubles(4, power);
precomputed.beta = this._getBeta();
this.precomputed = precomputed;
return this;
};
BasePoint.prototype._hasDoubles = function _hasDoubles(k) {
if (!this.precomputed)
return false;
var doubles = this.precomputed.doubles;
if (!doubles)
return false;
return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);
};
BasePoint.prototype._getDoubles = function _getDoubles(step, power) {
if (this.precomputed && this.precomputed.doubles)
return this.precomputed.doubles;
var doubles = [ this ];
var acc = this;
for (var i = 0; i < power; i += step) {
for (var j = 0; j < step; j++)
acc = acc.dbl();
doubles.push(acc);
}
return {
step: step,
points: doubles,
};
};
BasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {
if (this.precomputed && this.precomputed.naf)
return this.precomputed.naf;
var res = [ this ];
var max = (1 << wnd) - 1;
var dbl = max === 1 ? null : this.dbl();
for (var i = 1; i < max; i++)
res[i] = res[i - 1].add(dbl);
return {
wnd: wnd,
points: res,
};
};
BasePoint.prototype._getBeta = function _getBeta() {
return null;
};
BasePoint.prototype.dblp = function dblp(k) {
var r = this;
for (var i = 0; i < k; i++)
r = r.dbl();
return r;
};
/***/ }),
/***/ 1298:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var utils = __webpack_require__(7011);
var BN = __webpack_require__(8490);
var inherits = __webpack_require__(6698);
var Base = __webpack_require__(6677);
var assert = utils.assert;
function EdwardsCurve(conf) {
// NOTE: Important as we are creating point in Base.call()
this.twisted = (conf.a | 0) !== 1;
this.mOneA = this.twisted && (conf.a | 0) === -1;
this.extended = this.mOneA;
Base.call(this, 'edwards', conf);
this.a = new BN(conf.a, 16).umod(this.red.m);
this.a = this.a.toRed(this.red);
this.c = new BN(conf.c, 16).toRed(this.red);
this.c2 = this.c.redSqr();
this.d = new BN(conf.d, 16).toRed(this.red);
this.dd = this.d.redAdd(this.d);
assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);
this.oneC = (conf.c | 0) === 1;
}
inherits(EdwardsCurve, Base);
module.exports = EdwardsCurve;
EdwardsCurve.prototype._mulA = function _mulA(num) {
if (this.mOneA)
return num.redNeg();
else
return this.a.redMul(num);
};
EdwardsCurve.prototype._mulC = function _mulC(num) {
if (this.oneC)
return num;
else
return this.c.redMul(num);
};
// Just for compatibility with Short curve
EdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {
return this.point(x, y, z, t);
};
EdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {
x = new BN(x, 16);
if (!x.red)
x = x.toRed(this.red);
var x2 = x.redSqr();
var rhs = this.c2.redSub(this.a.redMul(x2));
var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));
var y2 = rhs.redMul(lhs.redInvm());
var y = y2.redSqrt();
if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)
throw new Error('invalid point');
var isOdd = y.fromRed().isOdd();
if (odd && !isOdd || !odd && isOdd)
y = y.redNeg();
return this.point(x, y);
};
EdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {
y = new BN(y, 16);
if (!y.red)
y = y.toRed(this.red);
// x^2 = (y^2 - c^2) / (c^2 d y^2 - a)
var y2 = y.redSqr();
var lhs = y2.redSub(this.c2);
var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);
var x2 = lhs.redMul(rhs.redInvm());
if (x2.cmp(this.zero) === 0) {
if (odd)
throw new Error('invalid point');
else
return this.point(this.zero, y);
}
var x = x2.redSqrt();
if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)
throw new Error('invalid point');
if (x.fromRed().isOdd() !== odd)
x = x.redNeg();
return this.point(x, y);
};
EdwardsCurve.prototype.validate = function validate(point) {
if (point.isInfinity())
return true;
// Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)
point.normalize();
var x2 = point.x.redSqr();
var y2 = point.y.redSqr();
var lhs = x2.redMul(this.a).redAdd(y2);
var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));
return lhs.cmp(rhs) === 0;
};
function Point(curve, x, y, z, t) {
Base.BasePoint.call(this, curve, 'projective');
if (x === null && y === null && z === null) {
this.x = this.curve.zero;
this.y = this.curve.one;
this.z = this.curve.one;
this.t = this.curve.zero;
this.zOne = true;
} else {
this.x = new BN(x, 16);
this.y = new BN(y, 16);
this.z = z ? new BN(z, 16) : this.curve.one;
this.t = t && new BN(t, 16);
if (!this.x.red)
this.x = this.x.toRed(this.curve.red);
if (!this.y.red)
this.y = this.y.toRed(this.curve.red);
if (!this.z.red)
this.z = this.z.toRed(this.curve.red);
if (this.t && !this.t.red)
this.t = this.t.toRed(this.curve.red);
this.zOne = this.z === this.curve.one;
// Use extended coordinates
if (this.curve.extended && !this.t) {
this.t = this.x.redMul(this.y);
if (!this.zOne)
this.t = this.t.redMul(this.z.redInvm());
}
}
}
inherits(Point, Base.BasePoint);
EdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
return Point.fromJSON(this, obj);
};
EdwardsCurve.prototype.point = function point(x, y, z, t) {
return new Point(this, x, y, z, t);
};
Point.fromJSON = function fromJSON(curve, obj) {
return new Point(curve, obj[0], obj[1], obj[2]);
};
Point.prototype.inspect = function inspect() {
if (this.isInfinity())
return '<EC Point Infinity>';
return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
' y: ' + this.y.fromRed().toString(16, 2) +
' z: ' + this.z.fromRed().toString(16, 2) + '>';
};
Point.prototype.isInfinity = function isInfinity() {
// XXX This code assumes that zero is always zero in red
return this.x.cmpn(0) === 0 &&
(this.y.cmp(this.z) === 0 ||
(this.zOne && this.y.cmp(this.curve.c) === 0));
};
Point.prototype._extDbl = function _extDbl() {
// hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html
// #doubling-dbl-2008-hwcd
// 4M + 4S
// A = X1^2
var a = this.x.redSqr();
// B = Y1^2
var b = this.y.redSqr();
// C = 2 * Z1^2
var c = this.z.redSqr();
c = c.redIAdd(c);
// D = a * A
var d = this.curve._mulA(a);
// E = (X1 + Y1)^2 - A - B
var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);
// G = D + B
var g = d.redAdd(b);
// F = G - C
var f = g.redSub(c);
// H = D - B
var h = d.redSub(b);
// X3 = E * F
var nx = e.redMul(f);
// Y3 = G * H
var ny = g.redMul(h);
// T3 = E * H
var nt = e.redMul(h);
// Z3 = F * G
var nz = f.redMul(g);
return this.curve.point(nx, ny, nz, nt);
};
Point.prototype._projDbl = function _projDbl() {
// hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
// #doubling-dbl-2008-bbjlp
// #doubling-dbl-2007-bl
// and others
// Generally 3M + 4S or 2M + 4S
// B = (X1 + Y1)^2
var b = this.x.redAdd(this.y).redSqr();
// C = X1^2
var c = this.x.redSqr();
// D = Y1^2
var d = this.y.redSqr();
var nx;
var ny;
var nz;
var e;
var h;
var j;
if (this.curve.twisted) {
// E = a * C
e = this.curve._mulA(c);
// F = E + D
var f = e.redAdd(d);
if (this.zOne) {
// X3 = (B - C - D) * (F - 2)
nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));
// Y3 = F * (E - D)
ny = f.redMul(e.redSub(d));
// Z3 = F^2 - 2 * F
nz = f.redSqr().redSub(f).redSub(f);
} else {
// H = Z1^2
h = this.z.redSqr();
// J = F - 2 * H
j = f.redSub(h).redISub(h);
// X3 = (B-C-D)*J
nx = b.redSub(c).redISub(d).redMul(j);
// Y3 = F * (E - D)
ny = f.redMul(e.redSub(d));
// Z3 = F * J
nz = f.redMul(j);
}
} else {
// E = C + D
e = c.redAdd(d);
// H = (c * Z1)^2
h = this.curve._mulC(this.z).redSqr();
// J = E - 2 * H
j = e.redSub(h).redSub(h);
// X3 = c * (B - E) * J
nx = this.curve._mulC(b.redISub(e)).redMul(j);
// Y3 = c * E * (C - D)
ny = this.curve._mulC(e).redMul(c.redISub(d));
// Z3 = E * J
nz = e.redMul(j);
}
return this.curve.point(nx, ny, nz);
};
Point.prototype.dbl = function dbl() {
if (this.isInfinity())
return this;
// Double in extended coordinates
if (this.curve.extended)
return this._extDbl();
else
return this._projDbl();
};
Point.prototype._extAdd = function _extAdd(p) {
// hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html
// #addition-add-2008-hwcd-3
// 8M
// A = (Y1 - X1) * (Y2 - X2)
var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));
// B = (Y1 + X1) * (Y2 + X2)
var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));
// C = T1 * k * T2
var c = this.t.redMul(this.curve.dd).redMul(p.t);
// D = Z1 * 2 * Z2
var d = this.z.redMul(p.z.redAdd(p.z));
// E = B - A
var e = b.redSub(a);
// F = D - C
var f = d.redSub(c);
// G = D + C
var g = d.redAdd(c);
// H = B + A
var h = b.redAdd(a);
// X3 = E * F
var nx = e.redMul(f);
// Y3 = G * H
var ny = g.redMul(h);
// T3 = E * H
var nt = e.redMul(h);
// Z3 = F * G
var nz = f.redMul(g);
return this.curve.point(nx, ny, nz, nt);
};
Point.prototype._projAdd = function _projAdd(p) {
// hyperelliptic.org/EFD/g1p/auto-twisted-projective.html
// #addition-add-2008-bbjlp
// #addition-add-2007-bl
// 10M + 1S
// A = Z1 * Z2
var a = this.z.redMul(p.z);
// B = A^2
var b = a.redSqr();
// C = X1 * X2
var c = this.x.redMul(p.x);
// D = Y1 * Y2
var d = this.y.redMul(p.y);
// E = d * C * D
var e = this.curve.d.redMul(c).redMul(d);
// F = B - E
var f = b.redSub(e);
// G = B + E
var g = b.redAdd(e);
// X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)
var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);
var nx = a.redMul(f).redMul(tmp);
var ny;
var nz;
if (this.curve.twisted) {
// Y3 = A * G * (D - a * C)
ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));
// Z3 = F * G
nz = f.redMul(g);
} else {
// Y3 = A * G * (D - C)
ny = a.redMul(g).redMul(d.redSub(c));
// Z3 = c * F * G
nz = this.curve._mulC(f).redMul(g);
}
return this.curve.point(nx, ny, nz);
};
Point.prototype.add = function add(p) {
if (this.isInfinity())
return p;
if (p.isInfinity())
return this;
if (this.curve.extended)
return this._extAdd(p);
else
return this._projAdd(p);
};
Point.prototype.mul = function mul(k) {
if (this._hasDoubles(k))
return this.curve._fixedNafMul(this, k);
else
return this.curve._wnafMul(this, k);
};
Point.prototype.mulAdd = function mulAdd(k1, p, k2) {
return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);
};
Point.prototype.jmulAdd = function jmulAdd(k1, p, k2) {
return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);
};
Point.prototype.normalize = function normalize() {
if (this.zOne)
return this;
// Normalize coordinates
var zi = this.z.redInvm();
this.x = this.x.redMul(zi);
this.y = this.y.redMul(zi);
if (this.t)
this.t = this.t.redMul(zi);
this.z = this.curve.one;
this.zOne = true;
return this;
};
Point.prototype.neg = function neg() {
return this.curve.point(this.x.redNeg(),
this.y,
this.z,
this.t && this.t.redNeg());
};
Point.prototype.getX = function getX() {
this.normalize();
return this.x.fromRed();
};
Point.prototype.getY = function getY() {
this.normalize();
return this.y.fromRed();
};
Point.prototype.eq = function eq(other) {
return this === other ||
this.getX().cmp(other.getX()) === 0 &&
this.getY().cmp(other.getY()) === 0;
};
Point.prototype.eqXToP = function eqXToP(x) {
var rx = x.toRed(this.curve.red).redMul(this.z);
if (this.x.cmp(rx) === 0)
return true;
var xc = x.clone();
var t = this.curve.redN.redMul(this.z);
for (;;) {
xc.iadd(this.curve.n);
if (xc.cmp(this.curve.p) >= 0)
return false;
rx.redIAdd(t);
if (this.x.cmp(rx) === 0)
return true;
}
};
// Compatibility with BaseCurve
Point.prototype.toP = Point.prototype.normalize;
Point.prototype.mixedAdd = Point.prototype.add;
/***/ }),
/***/ 894:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
var curve = exports;
curve.base = __webpack_require__(6677);
curve.short = __webpack_require__(9188);
curve.mont = __webpack_require__(370);
curve.edwards = __webpack_require__(1298);
/***/ }),
/***/ 370:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var BN = __webpack_require__(8490);
var inherits = __webpack_require__(6698);
var Base = __webpack_require__(6677);
var utils = __webpack_require__(7011);
function MontCurve(conf) {
Base.call(this, 'mont', conf);
this.a = new BN(conf.a, 16).toRed(this.red);
this.b = new BN(conf.b, 16).toRed(this.red);
this.i4 = new BN(4).toRed(this.red).redInvm();
this.two = new BN(2).toRed(this.red);
this.a24 = this.i4.redMul(this.a.redAdd(this.two));
}
inherits(MontCurve, Base);
module.exports = MontCurve;
MontCurve.prototype.validate = function validate(point) {
var x = point.normalize().x;
var x2 = x.redSqr();
var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);
var y = rhs.redSqrt();
return y.redSqr().cmp(rhs) === 0;
};
function Point(curve, x, z) {
Base.BasePoint.call(this, curve, 'projective');
if (x === null && z === null) {
this.x = this.curve.one;
this.z = this.curve.zero;
} else {
this.x = new BN(x, 16);
this.z = new BN(z, 16);
if (!this.x.red)
this.x = this.x.toRed(this.curve.red);
if (!this.z.red)
this.z = this.z.toRed(this.curve.red);
}
}
inherits(Point, Base.BasePoint);
MontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {
return this.point(utils.toArray(bytes, enc), 1);
};
MontCurve.prototype.point = function point(x, z) {
return new Point(this, x, z);
};
MontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {
return Point.fromJSON(this, obj);
};
Point.prototype.precompute = function precompute() {
// No-op
};
Point.prototype._encode = function _encode() {
return this.getX().toArray('be', this.curve.p.byteLength());
};
Point.fromJSON = function fromJSON(curve, obj) {
return new Point(curve, obj[0], obj[1] || curve.one);
};
Point.prototype.inspect = function inspect() {
if (this.isInfinity())
return '<EC Point Infinity>';
return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
' z: ' + this.z.fromRed().toString(16, 2) + '>';
};
Point.prototype.isInfinity = function isInfinity() {
// XXX This code assumes that zero is always zero in red
return this.z.cmpn(0) === 0;
};
Point.prototype.dbl = function dbl() {
// http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3
// 2M + 2S + 4A
// A = X1 + Z1
var a = this.x.redAdd(this.z);
// AA = A^2
var aa = a.redSqr();
// B = X1 - Z1
var b = this.x.redSub(this.z);
// BB = B^2
var bb = b.redSqr();
// C = AA - BB
var c = aa.redSub(bb);
// X3 = AA * BB
var nx = aa.redMul(bb);
// Z3 = C * (BB + A24 * C)
var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));
return this.curve.point(nx, nz);
};
Point.prototype.add = function add() {
throw new Error('Not supported on Montgomery curve');
};
Point.prototype.diffAdd = function diffAdd(p, diff) {
// http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3
// 4M + 2S + 6A
// A = X2 + Z2
var a = this.x.redAdd(this.z);
// B = X2 - Z2
var b = this.x.redSub(this.z);
// C = X3 + Z3
var c = p.x.redAdd(p.z);
// D = X3 - Z3
var d = p.x.redSub(p.z);
// DA = D * A
var da = d.redMul(a);
// CB = C * B
var cb = c.redMul(b);
// X5 = Z1 * (DA + CB)^2
var nx = diff.z.redMul(da.redAdd(cb).redSqr());
// Z5 = X1 * (DA - CB)^2
var nz = diff.x.redMul(da.redISub(cb).redSqr());
return this.curve.point(nx, nz);
};
Point.prototype.mul = function mul(k) {
var t = k.clone();
var a = this; // (N / 2) * Q + Q
var b = this.curve.point(null, null); // (N / 2) * Q
var c = this; // Q
for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))
bits.push(t.andln(1));
for (var i = bits.length - 1; i >= 0; i--) {
if (bits[i] === 0) {
// N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q
a = a.diffAdd(b, c);
// N * Q = 2 * ((N / 2) * Q + Q))
b = b.dbl();
} else {
// N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)
b = a.diffAdd(b, c);
// N * Q + Q = 2 * ((N / 2) * Q + Q)
a = a.dbl();
}
}
return b;
};
Point.prototype.mulAdd = function mulAdd() {
throw new Error('Not supported on Montgomery curve');
};
Point.prototype.jumlAdd = function jumlAdd() {
throw new Error('Not supported on Montgomery curve');
};
Point.prototype.eq = function eq(other) {
return this.getX().cmp(other.getX()) === 0;
};
Point.prototype.normalize = function normalize() {
this.x = this.x.redMul(this.z.redInvm());
this.z = this.curve.one;
return this;
};
Point.prototype.getX = function getX() {
// Normalize coordinates
this.normalize();
return this.x.fromRed();
};
/***/ }),
/***/ 9188:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var utils = __webpack_require__(7011);
var BN = __webpack_require__(8490);
var inherits = __webpack_require__(6698);
var Base = __webpack_require__(6677);
var assert = utils.assert;
function ShortCurve(conf) {
Base.call(this, 'short', conf);
this.a = new BN(conf.a, 16).toRed(this.red);
this.b = new BN(conf.b, 16).toRed(this.red);
this.tinv = this.two.redInvm();
this.zeroA = this.a.fromRed().cmpn(0) === 0;
this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;
// If the curve is endomorphic, precalculate beta and lambda
this.endo = this._getEndomorphism(conf);
this._endoWnafT1 = new Array(4);
this._endoWnafT2 = new Array(4);
}
inherits(ShortCurve, Base);
module.exports = ShortCurve;
ShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {
// No efficient endomorphism
if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)
return;
// Compute beta and lambda, that lambda * P = (beta * Px; Py)
var beta;
var lambda;
if (conf.beta) {
beta = new BN(conf.beta, 16).toRed(this.red);
} else {
var betas = this._getEndoRoots(this.p);
// Choose the smallest beta
beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];
beta = beta.toRed(this.red);
}
if (conf.lambda) {
lambda = new BN(conf.lambda, 16);
} else {
// Choose the lambda that is matching selected beta
var lambdas = this._getEndoRoots(this.n);
if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {
lambda = lambdas[0];
} else {
lambda = lambdas[1];
assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);
}
}
// Get basis vectors, used for balanced length-two representation
var basis;
if (conf.basis) {
basis = conf.basis.map(function(vec) {
return {
a: new BN(vec.a, 16),
b: new BN(vec.b, 16),
};
});
} else {
basis = this._getEndoBasis(lambda);
}
return {
beta: beta,
lambda: lambda,
basis: basis,
};
};
ShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {
// Find roots of for x^2 + x + 1 in F
// Root = (-1 +- Sqrt(-3)) / 2
//
var red = num === this.p ? this.red : BN.mont(num);
var tinv = new BN(2).toRed(red).redInvm();
var ntinv = tinv.redNeg();
var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);
var l1 = ntinv.redAdd(s).fromRed();
var l2 = ntinv.redSub(s).fromRed();
return [ l1, l2 ];
};
ShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {
// aprxSqrt >= sqrt(this.n)
var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));
// 3.74
// Run EGCD, until r(L + 1) < aprxSqrt
var u = lambda;
var v = this.n.clone();
var x1 = new BN(1);
var y1 = new BN(0);
var x2 = new BN(0);
var y2 = new BN(1);
// NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)
var a0;
var b0;
// First vector
var a1;
var b1;
// Second vector
var a2;
var b2;
var prevR;
var i = 0;
var r;
var x;
while (u.cmpn(0) !== 0) {
var q = v.div(u);
r = v.sub(q.mul(u));
x = x2.sub(q.mul(x1));
var y = y2.sub(q.mul(y1));
if (!a1 && r.cmp(aprxSqrt) < 0) {
a0 = prevR.neg();
b0 = x1;
a1 = r.neg();
b1 = x;
} else if (a1 && ++i === 2) {
break;
}
prevR = r;
v = u;
u = r;
x2 = x1;
x1 = x;
y2 = y1;
y1 = y;
}
a2 = r.neg();
b2 = x;
var len1 = a1.sqr().add(b1.sqr());
var len2 = a2.sqr().add(b2.sqr());
if (len2.cmp(len1) >= 0) {
a2 = a0;
b2 = b0;
}
// Normalize signs
if (a1.negative) {
a1 = a1.neg();
b1 = b1.neg();
}
if (a2.negative) {
a2 = a2.neg();
b2 = b2.neg();
}
return [
{ a: a1, b: b1 },
{ a: a2, b: b2 },
];
};
ShortCurve.prototype._endoSplit = function _endoSplit(k) {
var basis = this.endo.basis;
var v1 = basis[0];
var v2 = basis[1];
var c1 = v2.b.mul(k).divRound(this.n);
var c2 = v1.b.neg().mul(k).divRound(this.n);
var p1 = c1.mul(v1.a);
var p2 = c2.mul(v2.a);
var q1 = c1.mul(v1.b);
var q2 = c2.mul(v2.b);
// Calculate answer
var k1 = k.sub(p1).sub(p2);
var k2 = q1.add(q2).neg();
return { k1: k1, k2: k2 };
};
ShortCurve.prototype.pointFromX = function pointFromX(x, odd) {
x = new BN(x, 16);
if (!x.red)
x = x.toRed(this.red);
var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);
var y = y2.redSqrt();
if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)
throw new Error('invalid point');
// XXX Is there any way to tell if the number is odd without converting it
// to non-red form?
var isOdd = y.fromRed().isOdd();
if (odd && !isOdd || !odd && isOdd)
y = y.redNeg();
return this.point(x, y);
};
ShortCurve.prototype.validate = function validate(point) {
if (point.inf)
return true;
var x = point.x;
var y = point.y;
var ax = this.a.redMul(x);
var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);
return y.redSqr().redISub(rhs).cmpn(0) === 0;
};
ShortCurve.prototype._endoWnafMulAdd =
function _endoWnafMulAdd(points, coeffs, jacobianResult) {
var npoints = this._endoWnafT1;
var ncoeffs = this._endoWnafT2;
for (var i = 0; i < points.length; i++) {
var split = this._endoSplit(coeffs[i]);
var p = points[i];
var beta = p._getBeta();
if (split.k1.negative) {
split.k1.ineg();
p = p.neg(true);
}
if (split.k2.negative) {
split.k2.ineg();
beta = beta.neg(true);
}
npoints[i * 2] = p;
npoints[i * 2 + 1] = beta;
ncoeffs[i * 2] = split.k1;
ncoeffs[i * 2 + 1] = split.k2;
}
var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);
// Clean-up references to points and coefficients
for (var j = 0; j < i * 2; j++) {
npoints[j] = null;
ncoeffs[j] = null;
}
return res;
};
function Point(curve, x, y, isRed) {
Base.BasePoint.call(this, curve, 'affine');
if (x === null && y === null) {
this.x = null;
this.y = null;
this.inf = true;
} else {
this.x = new BN(x, 16);
this.y = new BN(y, 16);
// Force redgomery representation when loading from JSON
if (isRed) {
this.x.forceRed(this.curve.red);
this.y.forceRed(this.curve.red);
}
if (!this.x.red)
this.x = this.x.toRed(this.curve.red);
if (!this.y.red)
this.y = this.y.toRed(this.curve.red);
this.inf = false;
}
}
inherits(Point, Base.BasePoint);
ShortCurve.prototype.point = function point(x, y, isRed) {
return new Point(this, x, y, isRed);
};
ShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {
return Point.fromJSON(this, obj, red);
};
Point.prototype._getBeta = function _getBeta() {
if (!this.curve.endo)
return;
var pre = this.precomputed;
if (pre && pre.beta)
return pre.beta;
var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);
if (pre) {
var curve = this.curve;
var endoMul = function(p) {
return curve.point(p.x.redMul(curve.endo.beta), p.y);
};
pre.beta = beta;
beta.precomputed = {
beta: null,
naf: pre.naf && {
wnd: pre.naf.wnd,
points: pre.naf.points.map(endoMul),
},
doubles: pre.doubles && {
step: pre.doubles.step,
points: pre.doubles.points.map(endoMul),
},
};
}
return beta;
};
Point.prototype.toJSON = function toJSON() {
if (!this.precomputed)
return [ this.x, this.y ];
return [ this.x, this.y, this.precomputed && {
doubles: this.precomputed.doubles && {
step: this.precomputed.doubles.step,
points: this.precomputed.doubles.points.slice(1),
},
naf: this.precomputed.naf && {
wnd: this.precomputed.naf.wnd,
points: this.precomputed.naf.points.slice(1),
},
} ];
};
Point.fromJSON = function fromJSON(curve, obj, red) {
if (typeof obj === 'string')
obj = JSON.parse(obj);
var res = curve.point(obj[0], obj[1], red);
if (!obj[2])
return res;
function obj2point(obj) {
return curve.point(obj[0], obj[1], red);
}
var pre = obj[2];
res.precomputed = {
beta: null,
doubles: pre.doubles && {
step: pre.doubles.step,
points: [ res ].concat(pre.doubles.points.map(obj2point)),
},
naf: pre.naf && {
wnd: pre.naf.wnd,
points: [ res ].concat(pre.naf.points.map(obj2point)),
},
};
return res;
};
Point.prototype.inspect = function inspect() {
if (this.isInfinity())
return '<EC Point Infinity>';
return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +
' y: ' + this.y.fromRed().toString(16, 2) + '>';
};
Point.prototype.isInfinity = function isInfinity() {
return this.inf;
};
Point.prototype.add = function add(p) {
// O + P = P
if (this.inf)
return p;
// P + O = P
if (p.inf)
return this;
// P + P = 2P
if (this.eq(p))
return this.dbl();
// P + (-P) = O
if (this.neg().eq(p))
return this.curve.point(null, null);
// P + Q = O
if (this.x.cmp(p.x) === 0)
return this.curve.point(null, null);
var c = this.y.redSub(p.y);
if (c.cmpn(0) !== 0)
c = c.redMul(this.x.redSub(p.x).redInvm());
var nx = c.redSqr().redISub(this.x).redISub(p.x);
var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
return this.curve.point(nx, ny);
};
Point.prototype.dbl = function dbl() {
if (this.inf)
return this;
// 2P = O
var ys1 = this.y.redAdd(this.y);
if (ys1.cmpn(0) === 0)
return this.curve.point(null, null);
var a = this.curve.a;
var x2 = this.x.redSqr();
var dyinv = ys1.redInvm();
var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);
var nx = c.redSqr().redISub(this.x.redAdd(this.x));
var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);
return this.curve.point(nx, ny);
};
Point.prototype.getX = function getX() {
return this.x.fromRed();
};
Point.prototype.getY = function getY() {
return this.y.fromRed();
};
Point.prototype.mul = function mul(k) {
k = new BN(k, 16);
if (this.isInfinity())
return this;
else if (this._hasDoubles(k))
return this.curve._fixedNafMul(this, k);
else if (this.curve.endo)
return this.curve._endoWnafMulAdd([ this ], [ k ]);
else
return this.curve._wnafMul(this, k);
};
Point.prototype.mulAdd = function mulAdd(k1, p2, k2) {
var points = [ this, p2 ];
var coeffs = [ k1, k2 ];
if (this.curve.endo)
return this.curve._endoWnafMulAdd(points, coeffs);
else
return this.curve._wnafMulAdd(1, points, coeffs, 2);
};
Point.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {
var points = [ this, p2 ];
var coeffs = [ k1, k2 ];
if (this.curve.endo)
return this.curve._endoWnafMulAdd(points, coeffs, true);
else
return this.curve._wnafMulAdd(1, points, coeffs, 2, true);
};
Point.prototype.eq = function eq(p) {
return this === p ||
this.inf === p.inf &&
(this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);
};
Point.prototype.neg = function neg(_precompute) {
if (this.inf)
return this;
var res = this.curve.point(this.x, this.y.redNeg());
if (_precompute && this.precomputed) {
var pre = this.precomputed;
var negate = function(p) {
return p.neg();
};
res.precomputed = {
naf: pre.naf && {
wnd: pre.naf.wnd,
points: pre.naf.points.map(negate),
},
doubles: pre.doubles && {
step: pre.doubles.step,
points: pre.doubles.points.map(negate),
},
};
}
return res;
};
Point.prototype.toJ = function toJ() {
if (this.inf)
return this.curve.jpoint(null, null, null);
var res = this.curve.jpoint(this.x, this.y, this.curve.one);
return res;
};
function JPoint(curve, x, y, z) {
Base.BasePoint.call(this, curve, 'jacobian');
if (x === null && y === null && z === null) {
this.x = this.curve.one;
this.y = this.curve.one;
this.z = new BN(0);
} else {
this.x = new BN(x, 16);
this.y = new BN(y, 16);
this.z = new BN(z, 16);
}
if (!this.x.red)
this.x = this.x.toRed(this.curve.red);
if (!this.y.red)
this.y = this.y.toRed(this.curve.red);
if (!this.z.red)
this.z = this.z.toRed(this.curve.red);
this.zOne = this.z === this.curve.one;
}
inherits(JPoint, Base.BasePoint);
ShortCurve.prototype.jpoint = function jpoint(x, y, z) {
return new JPoint(this, x, y, z);
};
JPoint.prototype.toP = function toP() {
if (this.isInfinity())
return this.curve.point(null, null);
var zinv = this.z.redInvm();
var zinv2 = zinv.redSqr();
var ax = this.x.redMul(zinv2);
var ay = this.y.redMul(zinv2).redMul(zinv);
return this.curve.point(ax, ay);
};
JPoint.prototype.neg = function neg() {
return this.curve.jpoint(this.x, this.y.redNeg(), this.z);
};
JPoint.prototype.add = function add(p) {
// O + P = P
if (this.isInfinity())
return p;
// P + O = P
if (p.isInfinity())
return this;
// 12M + 4S + 7A
var pz2 = p.z.redSqr();
var z2 = this.z.redSqr();
var u1 = this.x.redMul(pz2);
var u2 = p.x.redMul(z2);
var s1 = this.y.redMul(pz2.redMul(p.z));
var s2 = p.y.redMul(z2.redMul(this.z));
var h = u1.redSub(u2);
var r = s1.redSub(s2);
if (h.cmpn(0) === 0) {
if (r.cmpn(0) !== 0)
return this.curve.jpoint(null, null, null);
else
return this.dbl();
}
var h2 = h.redSqr();
var h3 = h2.redMul(h);
var v = u1.redMul(h2);
var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
var nz = this.z.redMul(p.z).redMul(h);
return this.curve.jpoint(nx, ny, nz);
};
JPoint.prototype.mixedAdd = function mixedAdd(p) {
// O + P = P
if (this.isInfinity())
return p.toJ();
// P + O = P
if (p.isInfinity())
return this;
// 8M + 3S + 7A
var z2 = this.z.redSqr();
var u1 = this.x;
var u2 = p.x.redMul(z2);
var s1 = this.y;
var s2 = p.y.redMul(z2).redMul(this.z);
var h = u1.redSub(u2);
var r = s1.redSub(s2);
if (h.cmpn(0) === 0) {
if (r.cmpn(0) !== 0)
return this.curve.jpoint(null, null, null);
else
return this.dbl();
}
var h2 = h.redSqr();
var h3 = h2.redMul(h);
var v = u1.redMul(h2);
var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);
var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));
var nz = this.z.redMul(h);
return this.curve.jpoint(nx, ny, nz);
};
JPoint.prototype.dblp = function dblp(pow) {
if (pow === 0)
return this;
if (this.isInfinity())
return this;
if (!pow)
return this.dbl();
var i;
if (this.curve.zeroA || this.curve.threeA) {
var r = this;
for (i = 0; i < pow; i++)
r = r.dbl();
return r;
}
// 1M + 2S + 1A + N * (4S + 5M + 8A)
// N = 1 => 6M + 6S + 9A
var a = this.curve.a;
var tinv = this.curve.tinv;
var jx = this.x;
var jy = this.y;
var jz = this.z;
var jz4 = jz.redSqr().redSqr();
// Reuse results
var jyd = jy.redAdd(jy);
for (i = 0; i < pow; i++) {
var jx2 = jx.redSqr();
var jyd2 = jyd.redSqr();
var jyd4 = jyd2.redSqr();
var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
var t1 = jx.redMul(jyd2);
var nx = c.redSqr().redISub(t1.redAdd(t1));
var t2 = t1.redISub(nx);
var dny = c.redMul(t2);
dny = dny.redIAdd(dny).redISub(jyd4);
var nz = jyd.redMul(jz);
if (i + 1 < pow)
jz4 = jz4.redMul(jyd4);
jx = nx;
jz = nz;
jyd = dny;
}
return this.curve.jpoint(jx, jyd.redMul(tinv), jz);
};
JPoint.prototype.dbl = function dbl() {
if (this.isInfinity())
return this;
if (this.curve.zeroA)
return this._zeroDbl();
else if (this.curve.threeA)
return this._threeDbl();
else
return this._dbl();
};
JPoint.prototype._zeroDbl = function _zeroDbl() {
var nx;
var ny;
var nz;
// Z = 1
if (this.zOne) {
// hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html
// #doubling-mdbl-2007-bl
// 1M + 5S + 14A
// XX = X1^2
var xx = this.x.redSqr();
// YY = Y1^2
var yy = this.y.redSqr();
// YYYY = YY^2
var yyyy = yy.redSqr();
// S = 2 * ((X1 + YY)^2 - XX - YYYY)
var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
s = s.redIAdd(s);
// M = 3 * XX + a; a = 0
var m = xx.redAdd(xx).redIAdd(xx);
// T = M ^ 2 - 2*S
var t = m.redSqr().redISub(s).redISub(s);
// 8 * YYYY
var yyyy8 = yyyy.redIAdd(yyyy);
yyyy8 = yyyy8.redIAdd(yyyy8);
yyyy8 = yyyy8.redIAdd(yyyy8);
// X3 = T
nx = t;
// Y3 = M * (S - T) - 8 * YYYY
ny = m.redMul(s.redISub(t)).redISub(yyyy8);
// Z3 = 2*Y1
nz = this.y.redAdd(this.y);
} else {
// hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html
// #doubling-dbl-2009-l
// 2M + 5S + 13A
// A = X1^2
var a = this.x.redSqr();
// B = Y1^2
var b = this.y.redSqr();
// C = B^2
var c = b.redSqr();
// D = 2 * ((X1 + B)^2 - A - C)
var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);
d = d.redIAdd(d);
// E = 3 * A
var e = a.redAdd(a).redIAdd(a);
// F = E^2
var f = e.redSqr();
// 8 * C
var c8 = c.redIAdd(c);
c8 = c8.redIAdd(c8);
c8 = c8.redIAdd(c8);
// X3 = F - 2 * D
nx = f.redISub(d).redISub(d);
// Y3 = E * (D - X3) - 8 * C
ny = e.redMul(d.redISub(nx)).redISub(c8);
// Z3 = 2 * Y1 * Z1
nz = this.y.redMul(this.z);
nz = nz.redIAdd(nz);
}
return this.curve.jpoint(nx, ny, nz);
};
JPoint.prototype._threeDbl = function _threeDbl() {
var nx;
var ny;
var nz;
// Z = 1
if (this.zOne) {
// hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html
// #doubling-mdbl-2007-bl
// 1M + 5S + 15A
// XX = X1^2
var xx = this.x.redSqr();
// YY = Y1^2
var yy = this.y.redSqr();
// YYYY = YY^2
var yyyy = yy.redSqr();
// S = 2 * ((X1 + YY)^2 - XX - YYYY)
var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
s = s.redIAdd(s);
// M = 3 * XX + a
var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);
// T = M^2 - 2 * S
var t = m.redSqr().redISub(s).redISub(s);
// X3 = T
nx = t;
// Y3 = M * (S - T) - 8 * YYYY
var yyyy8 = yyyy.redIAdd(yyyy);
yyyy8 = yyyy8.redIAdd(yyyy8);
yyyy8 = yyyy8.redIAdd(yyyy8);
ny = m.redMul(s.redISub(t)).redISub(yyyy8);
// Z3 = 2 * Y1
nz = this.y.redAdd(this.y);
} else {
// hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b
// 3M + 5S
// delta = Z1^2
var delta = this.z.redSqr();
// gamma = Y1^2
var gamma = this.y.redSqr();
// beta = X1 * gamma
var beta = this.x.redMul(gamma);
// alpha = 3 * (X1 - delta) * (X1 + delta)
var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));
alpha = alpha.redAdd(alpha).redIAdd(alpha);
// X3 = alpha^2 - 8 * beta
var beta4 = beta.redIAdd(beta);
beta4 = beta4.redIAdd(beta4);
var beta8 = beta4.redAdd(beta4);
nx = alpha.redSqr().redISub(beta8);
// Z3 = (Y1 + Z1)^2 - gamma - delta
nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);
// Y3 = alpha * (4 * beta - X3) - 8 * gamma^2
var ggamma8 = gamma.redSqr();
ggamma8 = ggamma8.redIAdd(ggamma8);
ggamma8 = ggamma8.redIAdd(ggamma8);
ggamma8 = ggamma8.redIAdd(ggamma8);
ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);
}
return this.curve.jpoint(nx, ny, nz);
};
JPoint.prototype._dbl = function _dbl() {
var a = this.curve.a;
// 4M + 6S + 10A
var jx = this.x;
var jy = this.y;
var jz = this.z;
var jz4 = jz.redSqr().redSqr();
var jx2 = jx.redSqr();
var jy2 = jy.redSqr();
var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));
var jxd4 = jx.redAdd(jx);
jxd4 = jxd4.redIAdd(jxd4);
var t1 = jxd4.redMul(jy2);
var nx = c.redSqr().redISub(t1.redAdd(t1));
var t2 = t1.redISub(nx);
var jyd8 = jy2.redSqr();
jyd8 = jyd8.redIAdd(jyd8);
jyd8 = jyd8.redIAdd(jyd8);
jyd8 = jyd8.redIAdd(jyd8);
var ny = c.redMul(t2).redISub(jyd8);
var nz = jy.redAdd(jy).redMul(jz);
return this.curve.jpoint(nx, ny, nz);
};
JPoint.prototype.trpl = function trpl() {
if (!this.curve.zeroA)
return this.dbl().add(this);
// hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl
// 5M + 10S + ...
// XX = X1^2
var xx = this.x.redSqr();
// YY = Y1^2
var yy = this.y.redSqr();
// ZZ = Z1^2
var zz = this.z.redSqr();
// YYYY = YY^2
var yyyy = yy.redSqr();
// M = 3 * XX + a * ZZ2; a = 0
var m = xx.redAdd(xx).redIAdd(xx);
// MM = M^2
var mm = m.redSqr();
// E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM
var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);
e = e.redIAdd(e);
e = e.redAdd(e).redIAdd(e);
e = e.redISub(mm);
// EE = E^2
var ee = e.redSqr();
// T = 16*YYYY
var t = yyyy.redIAdd(yyyy);
t = t.redIAdd(t);
t = t.redIAdd(t);
t = t.redIAdd(t);
// U = (M + E)^2 - MM - EE - T
var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);
// X3 = 4 * (X1 * EE - 4 * YY * U)
var yyu4 = yy.redMul(u);
yyu4 = yyu4.redIAdd(yyu4);
yyu4 = yyu4.redIAdd(yyu4);
var nx = this.x.redMul(ee).redISub(yyu4);
nx = nx.redIAdd(nx);
nx = nx.redIAdd(nx);
// Y3 = 8 * Y1 * (U * (T - U) - E * EE)
var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));
ny = ny.redIAdd(ny);
ny = ny.redIAdd(ny);
ny = ny.redIAdd(ny);
// Z3 = (Z1 + E)^2 - ZZ - EE
var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);
return this.curve.jpoint(nx, ny, nz);
};
JPoint.prototype.mul = function mul(k, kbase) {
k = new BN(k, kbase);
return this.curve._wnafMul(this, k);
};
JPoint.prototype.eq = function eq(p) {
if (p.type === 'affine')
return this.eq(p.toJ());
if (this === p)
return true;
// x1 * z2^2 == x2 * z1^2
var z2 = this.z.redSqr();
var pz2 = p.z.redSqr();
if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)
return false;
// y1 * z2^3 == y2 * z1^3
var z3 = z2.redMul(this.z);
var pz3 = pz2.redMul(p.z);
return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;
};
JPoint.prototype.eqXToP = function eqXToP(x) {
var zs = this.z.redSqr();
var rx = x.toRed(this.curve.red).redMul(zs);
if (this.x.cmp(rx) === 0)
return true;
var xc = x.clone();
var t = this.curve.redN.redMul(zs);
for (;;) {
xc.iadd(this.curve.n);
if (xc.cmp(this.curve.p) >= 0)
return false;
rx.redIAdd(t);
if (this.x.cmp(rx) === 0)
return true;
}
};
JPoint.prototype.inspect = function inspect() {
if (this.isInfinity())
return '<EC JPoint Infinity>';
return '<EC JPoint x: ' + this.x.toString(16, 2) +
' y: ' + this.y.toString(16, 2) +
' z: ' + this.z.toString(16, 2) + '>';
};
JPoint.prototype.isInfinity = function isInfinity() {
// XXX This code assumes that zero is always zero in red
return this.z.cmpn(0) === 0;
};
/***/ }),
/***/ 480:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
var curves = exports;
var hash = __webpack_require__(7952);
var curve = __webpack_require__(894);
var utils = __webpack_require__(7011);
var assert = utils.assert;
function PresetCurve(options) {
if (options.type === 'short')
this.curve = new curve.short(options);
else if (options.type === 'edwards')
this.curve = new curve.edwards(options);
else
this.curve = new curve.mont(options);
this.g = this.curve.g;
this.n = this.curve.n;
this.hash = options.hash;
assert(this.g.validate(), 'Invalid curve');
assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');
}
curves.PresetCurve = PresetCurve;
function defineCurve(name, options) {
Object.defineProperty(curves, name, {
configurable: true,
enumerable: true,
get: function() {
var curve = new PresetCurve(options);
Object.defineProperty(curves, name, {
configurable: true,
enumerable: true,
value: curve,
});
return curve;
},
});
}
defineCurve('p192', {
type: 'short',
prime: 'p192',
p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',
a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',
b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',
n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',
hash: hash.sha256,
gRed: false,
g: [
'188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',
'07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',
],
});
defineCurve('p224', {
type: 'short',
prime: 'p224',
p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',
a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',
b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',
n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',
hash: hash.sha256,
gRed: false,
g: [
'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',
'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',
],
});
defineCurve('p256', {
type: 'short',
prime: null,
p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',
a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',
b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',
n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',
hash: hash.sha256,
gRed: false,
g: [
'6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',
'4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',
],
});
defineCurve('p384', {
type: 'short',
prime: null,
p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
'fffffffe ffffffff 00000000 00000000 ffffffff',
a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
'fffffffe ffffffff 00000000 00000000 fffffffc',
b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +
'5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',
n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +
'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',
hash: hash.sha384,
gRed: false,
g: [
'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +
'5502f25d bf55296c 3a545e38 72760ab7',
'3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +
'0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',
],
});
defineCurve('p521', {
type: 'short',
prime: null,
p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
'ffffffff ffffffff ffffffff ffffffff ffffffff',
a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
'ffffffff ffffffff ffffffff ffffffff fffffffc',
b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +
'99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +
'3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',
n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +
'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +
'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',
hash: hash.sha512,
gRed: false,
g: [
'000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +
'053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +
'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',
'00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +
'579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +
'3fad0761 353c7086 a272c240 88be9476 9fd16650',
],
});
defineCurve('curve25519', {
type: 'mont',
prime: 'p25519',
p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
a: '76d06',
b: '1',
n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',
hash: hash.sha256,
gRed: false,
g: [
'9',
],
});
defineCurve('ed25519', {
type: 'edwards',
prime: 'p25519',
p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
a: '-1',
c: '1',
// -121665 * (121666^(-1)) (mod P)
d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',
n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',
hash: hash.sha256,
gRed: false,
g: [
'216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',
// 4/5
'6666666666666666666666666666666666666666666666666666666666666658',
],
});
var pre;
try {
pre = __webpack_require__(4011);
} catch (e) {
pre = undefined;
}
defineCurve('secp256k1', {
type: 'short',
prime: 'k256',
p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',
a: '0',
b: '7',
n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',
h: '1',
hash: hash.sha256,
// Precomputed endomorphism
beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',
lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',
basis: [
{
a: '3086d221a7d46bcde86c90e49284eb15',
b: '-e4437ed6010e88286f547fa90abfe4c3',
},
{
a: '114ca50f7a8e2f3f657c1108d9d44cfd8',
b: '3086d221a7d46bcde86c90e49284eb15',
},
],
gRed: false,
g: [
'79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',
'483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',
pre,
],
});
/***/ }),
/***/ 7447:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var BN = __webpack_require__(8490);
var HmacDRBG = __webpack_require__(2723);
var utils = __webpack_require__(7011);
var curves = __webpack_require__(480);
var rand = __webpack_require__(5037);
var assert = utils.assert;
var KeyPair = __webpack_require__(1200);
var Signature = __webpack_require__(8545);
function EC(options) {
if (!(this instanceof EC))
return new EC(options);
// Shortcut `elliptic.ec(curve-name)`
if (typeof options === 'string') {
assert(Object.prototype.hasOwnProperty.call(curves, options),
'Unknown curve ' + options);
options = curves[options];
}
// Shortcut for `elliptic.ec(elliptic.curves.curveName)`
if (options instanceof curves.PresetCurve)
options = { curve: options };
this.curve = options.curve.curve;
this.n = this.curve.n;
this.nh = this.n.ushrn(1);
this.g = this.curve.g;
// Point on curve
this.g = options.curve.g;
this.g.precompute(options.curve.n.bitLength() + 1);
// Hash for function for DRBG
this.hash = options.hash || options.curve.hash;
}
module.exports = EC;
EC.prototype.keyPair = function keyPair(options) {
return new KeyPair(this, options);
};
EC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {
return KeyPair.fromPrivate(this, priv, enc);
};
EC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {
return KeyPair.fromPublic(this, pub, enc);
};
EC.prototype.genKeyPair = function genKeyPair(options) {
if (!options)
options = {};
// Instantiate Hmac_DRBG
var drbg = new HmacDRBG({
hash: this.hash,
pers: options.pers,
persEnc: options.persEnc || 'utf8',
entropy: options.entropy || rand(this.hash.hmacStrength),
entropyEnc: options.entropy && options.entropyEnc || 'utf8',
nonce: this.n.toArray(),
});
var bytes = this.n.byteLength();
var ns2 = this.n.sub(new BN(2));
for (;;) {
var priv = new BN(drbg.generate(bytes));
if (priv.cmp(ns2) > 0)
continue;
priv.iaddn(1);
return this.keyFromPrivate(priv);
}
};
EC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {
var delta = msg.byteLength() * 8 - this.n.bitLength();
if (delta > 0)
msg = msg.ushrn(delta);
if (!truncOnly && msg.cmp(this.n) >= 0)
return msg.sub(this.n);
else
return msg;
};
EC.prototype.sign = function sign(msg, key, enc, options) {
if (typeof enc === 'object') {
options = enc;
enc = null;
}
if (!options)
options = {};
key = this.keyFromPrivate(key, enc);
msg = this._truncateToN(new BN(msg, 16));
// Zero-extend key to provide enough entropy
var bytes = this.n.byteLength();
var bkey = key.getPrivate().toArray('be', bytes);
// Zero-extend nonce to have the same byte size as N
var nonce = msg.toArray('be', bytes);
// Instantiate Hmac_DRBG
var drbg = new HmacDRBG({
hash: this.hash,
entropy: bkey,
nonce: nonce,
pers: options.pers,
persEnc: options.persEnc || 'utf8',
});
// Number of bytes to generate
var ns1 = this.n.sub(new BN(1));
for (var iter = 0; ; iter++) {
var k = options.k ?
options.k(iter) :
new BN(drbg.generate(this.n.byteLength()));
k = this._truncateToN(k, true);
if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)
continue;
var kp = this.g.mul(k);
if (kp.isInfinity())
continue;
var kpX = kp.getX();
var r = kpX.umod(this.n);
if (r.cmpn(0) === 0)
continue;
var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));
s = s.umod(this.n);
if (s.cmpn(0) === 0)
continue;
var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |
(kpX.cmp(r) !== 0 ? 2 : 0);
// Use complement of `s`, if it is > `n / 2`
if (options.canonical && s.cmp(this.nh) > 0) {
s = this.n.sub(s);
recoveryParam ^= 1;
}
return new Signature({ r: r, s: s, recoveryParam: recoveryParam });
}
};
EC.prototype.verify = function verify(msg, signature, key, enc) {
msg = this._truncateToN(new BN(msg, 16));
key = this.keyFromPublic(key, enc);
signature = new Signature(signature, 'hex');
// Perform primitive values validation
var r = signature.r;
var s = signature.s;
if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)
return false;
if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)
return false;
// Validate signature
var sinv = s.invm(this.n);
var u1 = sinv.mul(msg).umod(this.n);
var u2 = sinv.mul(r).umod(this.n);
var p;
if (!this.curve._maxwellTrick) {
p = this.g.mulAdd(u1, key.getPublic(), u2);
if (p.isInfinity())
return false;
return p.getX().umod(this.n).cmp(r) === 0;
}
// NOTE: Greg Maxwell's trick, inspired by:
// https://git.io/vad3K
p = this.g.jmulAdd(u1, key.getPublic(), u2);
if (p.isInfinity())
return false;
// Compare `p.x` of Jacobian point with `r`,
// this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the
// inverse of `p.z^2`
return p.eqXToP(r);
};
EC.prototype.recoverPubKey = function(msg, signature, j, enc) {
assert((3 & j) === j, 'The recovery param is more than two bits');
signature = new Signature(signature, enc);
var n = this.n;
var e = new BN(msg);
var r = signature.r;
var s = signature.s;
// A set LSB signifies that the y-coordinate is odd
var isYOdd = j & 1;
var isSecondKey = j >> 1;
if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)
throw new Error('Unable to find sencond key candinate');
// 1.1. Let x = r + jn.
if (isSecondKey)
r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);
else
r = this.curve.pointFromX(r, isYOdd);
var rInv = signature.r.invm(n);
var s1 = n.sub(e).mul(rInv).umod(n);
var s2 = s.mul(rInv).umod(n);
// 1.6.1 Compute Q = r^-1 (sR - eG)
// Q = r^-1 (sR + -eG)
return this.g.mulAdd(s1, r, s2);
};
EC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {
signature = new Signature(signature, enc);
if (signature.recoveryParam !== null)
return signature.recoveryParam;
for (var i = 0; i < 4; i++) {
var Qprime;
try {
Qprime = this.recoverPubKey(e, signature, i);
} catch (e) {
continue;
}
if (Qprime.eq(Q))
return i;
}
throw new Error('Unable to find valid recovery factor');
};
/***/ }),
/***/ 1200:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var BN = __webpack_require__(8490);
var utils = __webpack_require__(7011);
var assert = utils.assert;
function KeyPair(ec, options) {
this.ec = ec;
this.priv = null;
this.pub = null;
// KeyPair(ec, { priv: ..., pub: ... })
if (options.priv)
this._importPrivate(options.priv, options.privEnc);
if (options.pub)
this._importPublic(options.pub, options.pubEnc);
}
module.exports = KeyPair;
KeyPair.fromPublic = function fromPublic(ec, pub, enc) {
if (pub instanceof KeyPair)
return pub;
return new KeyPair(ec, {
pub: pub,
pubEnc: enc,
});
};
KeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {
if (priv instanceof KeyPair)
return priv;
return new KeyPair(ec, {
priv: priv,
privEnc: enc,
});
};
KeyPair.prototype.validate = function validate() {
var pub = this.getPublic();
if (pub.isInfinity())
return { result: false, reason: 'Invalid public key' };
if (!pub.validate())
return { result: false, reason: 'Public key is not a point' };
if (!pub.mul(this.ec.curve.n).isInfinity())
return { result: false, reason: 'Public key * N != O' };
return { result: true, reason: null };
};
KeyPair.prototype.getPublic = function getPublic(compact, enc) {
// compact is optional argument
if (typeof compact === 'string') {
enc = compact;
compact = null;
}
if (!this.pub)
this.pub = this.ec.g.mul(this.priv);
if (!enc)
return this.pub;
return this.pub.encode(enc, compact);
};
KeyPair.prototype.getPrivate = function getPrivate(enc) {
if (enc === 'hex')
return this.priv.toString(16, 2);
else
return this.priv;
};
KeyPair.prototype._importPrivate = function _importPrivate(key, enc) {
this.priv = new BN(key, enc || 16);
// Ensure that the priv won't be bigger than n, otherwise we may fail
// in fixed multiplication method
this.priv = this.priv.umod(this.ec.curve.n);
};
KeyPair.prototype._importPublic = function _importPublic(key, enc) {
if (key.x || key.y) {
// Montgomery points only have an `x` coordinate.
// Weierstrass/Edwards points on the other hand have both `x` and
// `y` coordinates.
if (this.ec.curve.type === 'mont') {
assert(key.x, 'Need x coordinate');
} else if (this.ec.curve.type === 'short' ||
this.ec.curve.type === 'edwards') {
assert(key.x && key.y, 'Need both x and y coordinate');
}
this.pub = this.ec.curve.point(key.x, key.y);
return;
}
this.pub = this.ec.curve.decodePoint(key, enc);
};
// ECDH
KeyPair.prototype.derive = function derive(pub) {
if(!pub.validate()) {
assert(pub.validate(), 'public point not validated');
}
return pub.mul(this.priv).getX();
};
// ECDSA
KeyPair.prototype.sign = function sign(msg, enc, options) {
return this.ec.sign(msg, this, enc, options);
};
KeyPair.prototype.verify = function verify(msg, signature) {
return this.ec.verify(msg, signature, this);
};
KeyPair.prototype.inspect = function inspect() {
return '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) +
' pub: ' + (this.pub && this.pub.inspect()) + ' >';
};
/***/ }),
/***/ 8545:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var BN = __webpack_require__(8490);
var utils = __webpack_require__(7011);
var assert = utils.assert;
function Signature(options, enc) {
if (options instanceof Signature)
return options;
if (this._importDER(options, enc))
return;
assert(options.r && options.s, 'Signature without r or s');
this.r = new BN(options.r, 16);
this.s = new BN(options.s, 16);
if (options.recoveryParam === undefined)
this.recoveryParam = null;
else
this.recoveryParam = options.recoveryParam;
}
module.exports = Signature;
function Position() {
this.place = 0;
}
function getLength(buf, p) {
var initial = buf[p.place++];
if (!(initial & 0x80)) {
return initial;
}
var octetLen = initial & 0xf;
// Indefinite length or overflow
if (octetLen === 0 || octetLen > 4) {
return false;
}
if(buf[p.place] === 0x00) {
return false;
}
var val = 0;
for (var i = 0, off = p.place; i < octetLen; i++, off++) {
val <<= 8;
val |= buf[off];
val >>>= 0;
}
// Leading zeroes
if (val <= 0x7f) {
return false;
}
p.place = off;
return val;
}
function rmPadding(buf) {
var i = 0;
var len = buf.length - 1;
while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {
i++;
}
if (i === 0) {
return buf;
}
return buf.slice(i);
}
Signature.prototype._importDER = function _importDER(data, enc) {
data = utils.toArray(data, enc);
var p = new Position();
if (data[p.place++] !== 0x30) {
return false;
}
var len = getLength(data, p);
if (len === false) {
return false;
}
if ((len + p.place) !== data.length) {
return false;
}
if (data[p.place++] !== 0x02) {
return false;
}
var rlen = getLength(data, p);
if (rlen === false) {
return false;
}
if ((data[p.place] & 128) !== 0) {
return false;
}
var r = data.slice(p.place, rlen + p.place);
p.place += rlen;
if (data[p.place++] !== 0x02) {
return false;
}
var slen = getLength(data, p);
if (slen === false) {
return false;
}
if (data.length !== slen + p.place) {
return false;
}
if ((data[p.place] & 128) !== 0) {
return false;
}
var s = data.slice(p.place, slen + p.place);
if (r[0] === 0) {
if (r[1] & 0x80) {
r = r.slice(1);
} else {
// Leading zeroes
return false;
}
}
if (s[0] === 0) {
if (s[1] & 0x80) {
s = s.slice(1);
} else {
// Leading zeroes
return false;
}
}
this.r = new BN(r);
this.s = new BN(s);
this.recoveryParam = null;
return true;
};
function constructLength(arr, len) {
if (len < 0x80) {
arr.push(len);
return;
}
var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);
arr.push(octets | 0x80);
while (--octets) {
arr.push((len >>> (octets << 3)) & 0xff);
}
arr.push(len);
}
Signature.prototype.toDER = function toDER(enc) {
var r = this.r.toArray();
var s = this.s.toArray();
// Pad values
if (r[0] & 0x80)
r = [ 0 ].concat(r);
// Pad values
if (s[0] & 0x80)
s = [ 0 ].concat(s);
r = rmPadding(r);
s = rmPadding(s);
while (!s[0] && !(s[1] & 0x80)) {
s = s.slice(1);
}
var arr = [ 0x02 ];
constructLength(arr, r.length);
arr = arr.concat(r);
arr.push(0x02);
constructLength(arr, s.length);
var backHalf = arr.concat(s);
var res = [ 0x30 ];
constructLength(res, backHalf.length);
res = res.concat(backHalf);
return utils.encode(res, enc);
};
/***/ }),
/***/ 8650:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var hash = __webpack_require__(7952);
var curves = __webpack_require__(480);
var utils = __webpack_require__(7011);
var assert = utils.assert;
var parseBytes = utils.parseBytes;
var KeyPair = __webpack_require__(6661);
var Signature = __webpack_require__(220);
function EDDSA(curve) {
assert(curve === 'ed25519', 'only tested with ed25519 so far');
if (!(this instanceof EDDSA))
return new EDDSA(curve);
curve = curves[curve].curve;
this.curve = curve;
this.g = curve.g;
this.g.precompute(curve.n.bitLength() + 1);
this.pointClass = curve.point().constructor;
this.encodingLength = Math.ceil(curve.n.bitLength() / 8);
this.hash = hash.sha512;
}
module.exports = EDDSA;
/**
* @param {Array|String} message - message bytes
* @param {Array|String|KeyPair} secret - secret bytes or a keypair
* @returns {Signature} - signature
*/
EDDSA.prototype.sign = function sign(message, secret) {
message = parseBytes(message);
var key = this.keyFromSecret(secret);
var r = this.hashInt(key.messagePrefix(), message);
var R = this.g.mul(r);
var Rencoded = this.encodePoint(R);
var s_ = this.hashInt(Rencoded, key.pubBytes(), message)
.mul(key.priv());
var S = r.add(s_).umod(this.curve.n);
return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });
};
/**
* @param {Array} message - message bytes
* @param {Array|String|Signature} sig - sig bytes
* @param {Array|String|Point|KeyPair} pub - public key
* @returns {Boolean} - true if public key matches sig of message
*/
EDDSA.prototype.verify = function verify(message, sig, pub) {
message = parseBytes(message);
sig = this.makeSignature(sig);
if (sig.S().gte(sig.eddsa.curve.n) || sig.S().isNeg()) {
return false;
}
var key = this.keyFromPublic(pub);
var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);
var SG = this.g.mul(sig.S());
var RplusAh = sig.R().add(key.pub().mul(h));
return RplusAh.eq(SG);
};
EDDSA.prototype.hashInt = function hashInt() {
var hash = this.hash();
for (var i = 0; i < arguments.length; i++)
hash.update(arguments[i]);
return utils.intFromLE(hash.digest()).umod(this.curve.n);
};
EDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {
return KeyPair.fromPublic(this, pub);
};
EDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {
return KeyPair.fromSecret(this, secret);
};
EDDSA.prototype.makeSignature = function makeSignature(sig) {
if (sig instanceof Signature)
return sig;
return new Signature(this, sig);
};
/**
* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2
*
* EDDSA defines methods for encoding and decoding points and integers. These are
* helper convenience methods, that pass along to utility functions implied
* parameters.
*
*/
EDDSA.prototype.encodePoint = function encodePoint(point) {
var enc = point.getY().toArray('le', this.encodingLength);
enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;
return enc;
};
EDDSA.prototype.decodePoint = function decodePoint(bytes) {
bytes = utils.parseBytes(bytes);
var lastIx = bytes.length - 1;
var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);
var xIsOdd = (bytes[lastIx] & 0x80) !== 0;
var y = utils.intFromLE(normed);
return this.curve.pointFromY(y, xIsOdd);
};
EDDSA.prototype.encodeInt = function encodeInt(num) {
return num.toArray('le', this.encodingLength);
};
EDDSA.prototype.decodeInt = function decodeInt(bytes) {
return utils.intFromLE(bytes);
};
EDDSA.prototype.isPoint = function isPoint(val) {
return val instanceof this.pointClass;
};
/***/ }),
/***/ 6661:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var utils = __webpack_require__(7011);
var assert = utils.assert;
var parseBytes = utils.parseBytes;
var cachedProperty = utils.cachedProperty;
/**
* @param {EDDSA} eddsa - instance
* @param {Object} params - public/private key parameters
*
* @param {Array<Byte>} [params.secret] - secret seed bytes
* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)
* @param {Array<Byte>} [params.pub] - public key point encoded as bytes
*
*/
function KeyPair(eddsa, params) {
this.eddsa = eddsa;
this._secret = parseBytes(params.secret);
if (eddsa.isPoint(params.pub))
this._pub = params.pub;
else
this._pubBytes = parseBytes(params.pub);
}
KeyPair.fromPublic = function fromPublic(eddsa, pub) {
if (pub instanceof KeyPair)
return pub;
return new KeyPair(eddsa, { pub: pub });
};
KeyPair.fromSecret = function fromSecret(eddsa, secret) {
if (secret instanceof KeyPair)
return secret;
return new KeyPair(eddsa, { secret: secret });
};
KeyPair.prototype.secret = function secret() {
return this._secret;
};
cachedProperty(KeyPair, 'pubBytes', function pubBytes() {
return this.eddsa.encodePoint(this.pub());
});
cachedProperty(KeyPair, 'pub', function pub() {
if (this._pubBytes)
return this.eddsa.decodePoint(this._pubBytes);
return this.eddsa.g.mul(this.priv());
});
cachedProperty(KeyPair, 'privBytes', function privBytes() {
var eddsa = this.eddsa;
var hash = this.hash();
var lastIx = eddsa.encodingLength - 1;
var a = hash.slice(0, eddsa.encodingLength);
a[0] &= 248;
a[lastIx] &= 127;
a[lastIx] |= 64;
return a;
});
cachedProperty(KeyPair, 'priv', function priv() {
return this.eddsa.decodeInt(this.privBytes());
});
cachedProperty(KeyPair, 'hash', function hash() {
return this.eddsa.hash().update(this.secret()).digest();
});
cachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {
return this.hash().slice(this.eddsa.encodingLength);
});
KeyPair.prototype.sign = function sign(message) {
assert(this._secret, 'KeyPair can only verify');
return this.eddsa.sign(message, this);
};
KeyPair.prototype.verify = function verify(message, sig) {
return this.eddsa.verify(message, sig, this);
};
KeyPair.prototype.getSecret = function getSecret(enc) {
assert(this._secret, 'KeyPair is public only');
return utils.encode(this.secret(), enc);
};
KeyPair.prototype.getPublic = function getPublic(enc) {
return utils.encode(this.pubBytes(), enc);
};
module.exports = KeyPair;
/***/ }),
/***/ 220:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var BN = __webpack_require__(8490);
var utils = __webpack_require__(7011);
var assert = utils.assert;
var cachedProperty = utils.cachedProperty;
var parseBytes = utils.parseBytes;
/**
* @param {EDDSA} eddsa - eddsa instance
* @param {Array<Bytes>|Object} sig -
* @param {Array<Bytes>|Point} [sig.R] - R point as Point or bytes
* @param {Array<Bytes>|bn} [sig.S] - S scalar as bn or bytes
* @param {Array<Bytes>} [sig.Rencoded] - R point encoded
* @param {Array<Bytes>} [sig.Sencoded] - S scalar encoded
*/
function Signature(eddsa, sig) {
this.eddsa = eddsa;
if (typeof sig !== 'object')
sig = parseBytes(sig);
if (Array.isArray(sig)) {
assert(sig.length === eddsa.encodingLength * 2, 'Signature has invalid size');
sig = {
R: sig.slice(0, eddsa.encodingLength),
S: sig.slice(eddsa.encodingLength),
};
}
assert(sig.R && sig.S, 'Signature without R or S');
if (eddsa.isPoint(sig.R))
this._R = sig.R;
if (sig.S instanceof BN)
this._S = sig.S;
this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;
this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;
}
cachedProperty(Signature, 'S', function S() {
return this.eddsa.decodeInt(this.Sencoded());
});
cachedProperty(Signature, 'R', function R() {
return this.eddsa.decodePoint(this.Rencoded());
});
cachedProperty(Signature, 'Rencoded', function Rencoded() {
return this.eddsa.encodePoint(this.R());
});
cachedProperty(Signature, 'Sencoded', function Sencoded() {
return this.eddsa.encodeInt(this.S());
});
Signature.prototype.toBytes = function toBytes() {
return this.Rencoded().concat(this.Sencoded());
};
Signature.prototype.toHex = function toHex() {
return utils.encode(this.toBytes(), 'hex').toUpperCase();
};
module.exports = Signature;
/***/ }),
/***/ 4011:
/***/ ((module) => {
module.exports = {
doubles: {
step: 4,
points: [
[
'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',
'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',
],
[
'8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',
'11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',
],
[
'175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',
'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',
],
[
'363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',
'4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',
],
[
'8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',
'4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',
],
[
'723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',
'96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',
],
[
'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',
'5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',
],
[
'100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',
'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',
],
[
'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',
'9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',
],
[
'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',
'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',
],
[
'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',
'9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',
],
[
'53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',
'5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',
],
[
'8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',
'10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',
],
[
'385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',
'283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',
],
[
'6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',
'7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',
],
[
'3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',
'56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',
],
[
'85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',
'7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',
],
[
'948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',
'53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',
],
[
'6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',
'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',
],
[
'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',
'4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',
],
[
'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',
'7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',
],
[
'213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',
'4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',
],
[
'4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',
'17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',
],
[
'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',
'6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',
],
[
'76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',
'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',
],
[
'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',
'893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',
],
[
'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',
'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',
],
[
'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',
'2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',
],
[
'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',
'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',
],
[
'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',
'7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',
],
[
'90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',
'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',
],
[
'8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',
'662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',
],
[
'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',
'1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',
],
[
'8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',
'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',
],
[
'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',
'2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',
],
[
'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',
'67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',
],
[
'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',
'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',
],
[
'324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',
'648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',
],
[
'4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',
'35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',
],
[
'9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',
'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',
],
[
'6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',
'9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',
],
[
'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',
'40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',
],
[
'7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',
'34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',
],
[
'928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',
'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',
],
[
'85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',
'1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',
],
[
'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',
'493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',
],
[
'827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',
'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',
],
[
'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',
'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',
],
[
'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',
'4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',
],
[
'1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',
'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',
],
[
'146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',
'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',
],
[
'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',
'6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',
],
[
'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',
'8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',
],
[
'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',
'7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',
],
[
'174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',
'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',
],
[
'959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',
'2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',
],
[
'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',
'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',
],
[
'64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',
'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',
],
[
'8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',
'38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',
],
[
'13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',
'69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',
],
[
'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',
'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',
],
[
'8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',
'40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',
],
[
'8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',
'620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',
],
[
'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',
'7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',
],
[
'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',
'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',
],
],
},
naf: {
wnd: 7,
points: [
[
'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',
'388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',
],
[
'2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',
'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',
],
[
'5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',
'6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',
],
[
'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',
'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',
],
[
'774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',
'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',
],
[
'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',
'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',
],
[
'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',
'581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',
],
[
'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',
'4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',
],
[
'2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',
'85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',
],
[
'352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',
'321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',
],
[
'2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',
'2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',
],
[
'9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',
'73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',
],
[
'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',
'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',
],
[
'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',
'2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',
],
[
'6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',
'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',
],
[
'1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',
'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',
],
[
'605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',
'2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',
],
[
'62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',
'80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',
],
[
'80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',
'1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',
],
[
'7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',
'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',
],
[
'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',
'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',
],
[
'49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',
'758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',
],
[
'77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',
'958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',
],
[
'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',
'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',
],
[
'463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',
'5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',
],
[
'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',
'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',
],
[
'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',
'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',
],
[
'2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',
'4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',
],
[
'7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',
'91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',
],
[
'754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',
'673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',
],
[
'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',
'59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',
],
[
'186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',
'3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',
],
[
'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',
'55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',
],
[
'5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',
'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',
],
[
'290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',
'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',
],
[
'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',
'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',
],
[
'766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',
'744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',
],
[
'59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',
'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',
],
[
'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',
'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',
],
[
'7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',
'30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',
],
[
'948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',
'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',
],
[
'7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',
'100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',
],
[
'3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',
'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',
],
[
'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',
'8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',
],
[
'1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',
'68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',
],
[
'733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',
'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',
],
[
'15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',
'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',
],
[
'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',
'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',
],
[
'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',
'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',
],
[
'311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',
'66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',
],
[
'34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',
'9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',
],
[
'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',
'4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',
],
[
'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',
'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',
],
[
'32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',
'5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',
],
[
'7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',
'8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',
],
[
'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',
'8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',
],
[
'16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',
'5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',
],
[
'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',
'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',
],
[
'78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',
'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',
],
[
'494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',
'42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',
],
[
'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',
'204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',
],
[
'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',
'4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',
],
[
'841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',
'73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',
],
[
'5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',
'39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',
],
[
'36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',
'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',
],
[
'336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',
'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',
],
[
'8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',
'6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',
],
[
'1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',
'60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',
],
[
'85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',
'3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',
],
[
'29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',
'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',
],
[
'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',
'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',
],
[
'4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',
'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',
],
[
'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',
'6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',
],
[
'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',
'322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',
],
[
'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',
'6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',
],
[
'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',
'2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',
],
[
'591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',
'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',
],
[
'11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',
'998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',
],
[
'3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',
'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',
],
[
'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',
'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',
],
[
'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',
'6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',
],
[
'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',
'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',
],
[
'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',
'21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',
],
[
'347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',
'60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',
],
[
'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',
'49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',
],
[
'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',
'5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',
],
[
'4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',
'7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',
],
[
'3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',
'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',
],
[
'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',
'8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',
],
[
'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',
'39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',
],
[
'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',
'62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',
],
[
'48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',
'25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',
],
[
'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',
'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',
],
[
'6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',
'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',
],
[
'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',
'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',
],
[
'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',
'6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',
],
[
'13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',
'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',
],
[
'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',
'1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',
],
[
'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',
'5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',
],
[
'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',
'438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',
],
[
'8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',
'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',
],
[
'52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',
'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',
],
[
'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',
'6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',
],
[
'7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',
'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',
],
[
'5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',
'9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',
],
[
'32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',
'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',
],
[
'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',
'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',
],
[
'8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',
'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',
],
[
'4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',
'67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',
],
[
'3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',
'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',
],
[
'674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',
'299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',
],
[
'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',
'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',
],
[
'30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',
'462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',
],
[
'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',
'62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',
],
[
'93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',
'7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',
],
[
'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',
'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',
],
[
'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',
'4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',
],
[
'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',
'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',
],
[
'463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',
'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',
],
[
'7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',
'603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',
],
[
'74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',
'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',
],
[
'30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',
'553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',
],
[
'9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',
'712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',
],
[
'176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',
'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',
],
[
'75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',
'9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',
],
[
'809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',
'9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',
],
[
'1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',
'4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',
],
],
},
};
/***/ }),
/***/ 7011:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
var utils = exports;
var BN = __webpack_require__(8490);
var minAssert = __webpack_require__(3349);
var minUtils = __webpack_require__(4367);
utils.assert = minAssert;
utils.toArray = minUtils.toArray;
utils.zero2 = minUtils.zero2;
utils.toHex = minUtils.toHex;
utils.encode = minUtils.encode;
// Represent num in a w-NAF form
function getNAF(num, w, bits) {
var naf = new Array(Math.max(num.bitLength(), bits) + 1);
var i;
for (i = 0; i < naf.length; i += 1) {
naf[i] = 0;
}
var ws = 1 << (w + 1);
var k = num.clone();
for (i = 0; i < naf.length; i++) {
var z;
var mod = k.andln(ws - 1);
if (k.isOdd()) {
if (mod > (ws >> 1) - 1)
z = (ws >> 1) - mod;
else
z = mod;
k.isubn(z);
} else {
z = 0;
}
naf[i] = z;
k.iushrn(1);
}
return naf;
}
utils.getNAF = getNAF;
// Represent k1, k2 in a Joint Sparse Form
function getJSF(k1, k2) {
var jsf = [
[],
[],
];
k1 = k1.clone();
k2 = k2.clone();
var d1 = 0;
var d2 = 0;
var m8;
while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {
// First phase
var m14 = (k1.andln(3) + d1) & 3;
var m24 = (k2.andln(3) + d2) & 3;
if (m14 === 3)
m14 = -1;
if (m24 === 3)
m24 = -1;
var u1;
if ((m14 & 1) === 0) {
u1 = 0;
} else {
m8 = (k1.andln(7) + d1) & 7;
if ((m8 === 3 || m8 === 5) && m24 === 2)
u1 = -m14;
else
u1 = m14;
}
jsf[0].push(u1);
var u2;
if ((m24 & 1) === 0) {
u2 = 0;
} else {
m8 = (k2.andln(7) + d2) & 7;
if ((m8 === 3 || m8 === 5) && m14 === 2)
u2 = -m24;
else
u2 = m24;
}
jsf[1].push(u2);
// Second phase
if (2 * d1 === u1 + 1)
d1 = 1 - d1;
if (2 * d2 === u2 + 1)
d2 = 1 - d2;
k1.iushrn(1);
k2.iushrn(1);
}
return jsf;
}
utils.getJSF = getJSF;
function cachedProperty(obj, name, computer) {
var key = '_' + name;
obj.prototype[name] = function cachedProperty() {
return this[key] !== undefined ? this[key] :
this[key] = computer.call(this);
};
}
utils.cachedProperty = cachedProperty;
function parseBytes(bytes) {
return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :
bytes;
}
utils.parseBytes = parseBytes;
function intFromLE(bytes) {
return new BN(bytes, 'hex', 'le');
}
utils.intFromLE = intFromLE;
/***/ }),
/***/ 8490:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
/* module decorator */ module = __webpack_require__.nmd(module);
(function (module, exports) {
'use strict';
// Utils
function assert (val, msg) {
if (!val) throw new Error(msg || 'Assertion failed');
}
// Could use `inherits` module, but don't want to move from single file
// architecture yet.
function inherits (ctor, superCtor) {
ctor.super_ = superCtor;
var TempCtor = function () {};
TempCtor.prototype = superCtor.prototype;
ctor.prototype = new TempCtor();
ctor.prototype.constructor = ctor;
}
// BN
function BN (number, base, endian) {
if (BN.isBN(number)) {
return number;
}
this.negative = 0;
this.words = null;
this.length = 0;
// Reduction context
this.red = null;
if (number !== null) {
if (base === 'le' || base === 'be') {
endian = base;
base = 10;
}
this._init(number || 0, base || 10, endian || 'be');
}
}
if (typeof module === 'object') {
module.exports = BN;
} else {
exports.BN = BN;
}
BN.BN = BN;
BN.wordSize = 26;
var Buffer;
try {
if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {
Buffer = window.Buffer;
} else {
Buffer = (__webpack_require__(9368).Buffer);
}
} catch (e) {
}
BN.isBN = function isBN (num) {
if (num instanceof BN) {
return true;
}
return num !== null && typeof num === 'object' &&
num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);
};
BN.max = function max (left, right) {
if (left.cmp(right) > 0) return left;
return right;
};
BN.min = function min (left, right) {
if (left.cmp(right) < 0) return left;
return right;
};
BN.prototype._init = function init (number, base, endian) {
if (typeof number === 'number') {
return this._initNumber(number, base, endian);
}
if (typeof number === 'object') {
return this._initArray(number, base, endian);
}
if (base === 'hex') {
base = 16;
}
assert(base === (base | 0) && base >= 2 && base <= 36);
number = number.toString().replace(/\s+/g, '');
var start = 0;
if (number[0] === '-') {
start++;
this.negative = 1;
}
if (start < number.length) {
if (base === 16) {
this._parseHex(number, start, endian);
} else {
this._parseBase(number, base, start);
if (endian === 'le') {
this._initArray(this.toArray(), base, endian);
}
}
}
};
BN.prototype._initNumber = function _initNumber (number, base, endian) {
if (number < 0) {
this.negative = 1;
number = -number;
}
if (number < 0x4000000) {
this.words = [ number & 0x3ffffff ];
this.length = 1;
} else if (number < 0x10000000000000) {
this.words = [
number & 0x3ffffff,
(number / 0x4000000) & 0x3ffffff
];
this.length = 2;
} else {
assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)
this.words = [
number & 0x3ffffff,
(number / 0x4000000) & 0x3ffffff,
1
];
this.length = 3;
}
if (endian !== 'le') return;
// Reverse the bytes
this._initArray(this.toArray(), base, endian);
};
BN.prototype._initArray = function _initArray (number, base, endian) {
// Perhaps a Uint8Array
assert(typeof number.length === 'number');
if (number.length <= 0) {
this.words = [ 0 ];
this.length = 1;
return this;
}
this.length = Math.ceil(number.length / 3);
this.words = new Array(this.length);
for (var i = 0; i < this.length; i++) {
this.words[i] = 0;
}
var j, w;
var off = 0;
if (endian === 'be') {
for (i = number.length - 1, j = 0; i >= 0; i -= 3) {
w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);
this.words[j] |= (w << off) & 0x3ffffff;
this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
off += 24;
if (off >= 26) {
off -= 26;
j++;
}
}
} else if (endian === 'le') {
for (i = 0, j = 0; i < number.length; i += 3) {
w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);
this.words[j] |= (w << off) & 0x3ffffff;
this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
off += 24;
if (off >= 26) {
off -= 26;
j++;
}
}
}
return this.strip();
};
function parseHex4Bits (string, index) {
var c = string.charCodeAt(index);
// 'A' - 'F'
if (c >= 65 && c <= 70) {
return c - 55;
// 'a' - 'f'
} else if (c >= 97 && c <= 102) {
return c - 87;
// '0' - '9'
} else {
return (c - 48) & 0xf;
}
}
function parseHexByte (string, lowerBound, index) {
var r = parseHex4Bits(string, index);
if (index - 1 >= lowerBound) {
r |= parseHex4Bits(string, index - 1) << 4;
}
return r;
}
BN.prototype._parseHex = function _parseHex (number, start, endian) {
// Create possibly bigger array to ensure that it fits the number
this.length = Math.ceil((number.length - start) / 6);
this.words = new Array(this.length);
for (var i = 0; i < this.length; i++) {
this.words[i] = 0;
}
// 24-bits chunks
var off = 0;
var j = 0;
var w;
if (endian === 'be') {
for (i = number.length - 1; i >= start; i -= 2) {
w = parseHexByte(number, start, i) << off;
this.words[j] |= w & 0x3ffffff;
if (off >= 18) {
off -= 18;
j += 1;
this.words[j] |= w >>> 26;
} else {
off += 8;
}
}
} else {
var parseLength = number.length - start;
for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {
w = parseHexByte(number, start, i) << off;
this.words[j] |= w & 0x3ffffff;
if (off >= 18) {
off -= 18;
j += 1;
this.words[j] |= w >>> 26;
} else {
off += 8;
}
}
}
this.strip();
};
function parseBase (str, start, end, mul) {
var r = 0;
var len = Math.min(str.length, end);
for (var i = start; i < len; i++) {
var c = str.charCodeAt(i) - 48;
r *= mul;
// 'a'
if (c >= 49) {
r += c - 49 + 0xa;
// 'A'
} else if (c >= 17) {
r += c - 17 + 0xa;
// '0' - '9'
} else {
r += c;
}
}
return r;
}
BN.prototype._parseBase = function _parseBase (number, base, start) {
// Initialize as zero
this.words = [ 0 ];
this.length = 1;
// Find length of limb in base
for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {
limbLen++;
}
limbLen--;
limbPow = (limbPow / base) | 0;
var total = number.length - start;
var mod = total % limbLen;
var end = Math.min(total, total - mod) + start;
var word = 0;
for (var i = start; i < end; i += limbLen) {
word = parseBase(number, i, i + limbLen, base);
this.imuln(limbPow);
if (this.words[0] + word < 0x4000000) {
this.words[0] += word;
} else {
this._iaddn(word);
}
}
if (mod !== 0) {
var pow = 1;
word = parseBase(number, i, number.length, base);
for (i = 0; i < mod; i++) {
pow *= base;
}
this.imuln(pow);
if (this.words[0] + word < 0x4000000) {
this.words[0] += word;
} else {
this._iaddn(word);
}
}
this.strip();
};
BN.prototype.copy = function copy (dest) {
dest.words = new Array(this.length);
for (var i = 0; i < this.length; i++) {
dest.words[i] = this.words[i];
}
dest.length = this.length;
dest.negative = this.negative;
dest.red = this.red;
};
BN.prototype.clone = function clone () {
var r = new BN(null);
this.copy(r);
return r;
};
BN.prototype._expand = function _expand (size) {
while (this.length < size) {
this.words[this.length++] = 0;
}
return this;
};
// Remove leading `0` from `this`
BN.prototype.strip = function strip () {
while (this.length > 1 && this.words[this.length - 1] === 0) {
this.length--;
}
return this._normSign();
};
BN.prototype._normSign = function _normSign () {
// -0 = 0
if (this.length === 1 && this.words[0] === 0) {
this.negative = 0;
}
return this;
};
BN.prototype.inspect = function inspect () {
return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';
};
/*
var zeros = [];
var groupSizes = [];
var groupBases = [];
var s = '';
var i = -1;
while (++i < BN.wordSize) {
zeros[i] = s;
s += '0';
}
groupSizes[0] = 0;
groupSizes[1] = 0;
groupBases[0] = 0;
groupBases[1] = 0;
var base = 2 - 1;
while (++base < 36 + 1) {
var groupSize = 0;
var groupBase = 1;
while (groupBase < (1 << BN.wordSize) / base) {
groupBase *= base;
groupSize += 1;
}
groupSizes[base] = groupSize;
groupBases[base] = groupBase;
}
*/
var zeros = [
'',
'0',
'00',
'000',
'0000',
'00000',
'000000',
'0000000',
'00000000',
'000000000',
'0000000000',
'00000000000',
'000000000000',
'0000000000000',
'00000000000000',
'000000000000000',
'0000000000000000',
'00000000000000000',
'000000000000000000',
'0000000000000000000',
'00000000000000000000',
'000000000000000000000',
'0000000000000000000000',
'00000000000000000000000',
'000000000000000000000000',
'0000000000000000000000000'
];
var groupSizes = [
0, 0,
25, 16, 12, 11, 10, 9, 8,
8, 7, 7, 7, 7, 6, 6,
6, 6, 6, 6, 6, 5, 5,
5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5
];
var groupBases = [
0, 0,
33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,
43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,
16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,
6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,
24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176
];
BN.prototype.toString = function toString (base, padding) {
base = base || 10;
padding = padding | 0 || 1;
var out;
if (base === 16 || base === 'hex') {
out = '';
var off = 0;
var carry = 0;
for (var i = 0; i < this.length; i++) {
var w = this.words[i];
var word = (((w << off) | carry) & 0xffffff).toString(16);
carry = (w >>> (24 - off)) & 0xffffff;
if (carry !== 0 || i !== this.length - 1) {
out = zeros[6 - word.length] + word + out;
} else {
out = word + out;
}
off += 2;
if (off >= 26) {
off -= 26;
i--;
}
}
if (carry !== 0) {
out = carry.toString(16) + out;
}
while (out.length % padding !== 0) {
out = '0' + out;
}
if (this.negative !== 0) {
out = '-' + out;
}
return out;
}
if (base === (base | 0) && base >= 2 && base <= 36) {
// var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));
var groupSize = groupSizes[base];
// var groupBase = Math.pow(base, groupSize);
var groupBase = groupBases[base];
out = '';
var c = this.clone();
c.negative = 0;
while (!c.isZero()) {
var r = c.modn(groupBase).toString(base);
c = c.idivn(groupBase);
if (!c.isZero()) {
out = zeros[groupSize - r.length] + r + out;
} else {
out = r + out;
}
}
if (this.isZero()) {
out = '0' + out;
}
while (out.length % padding !== 0) {
out = '0' + out;
}
if (this.negative !== 0) {
out = '-' + out;
}
return out;
}
assert(false, 'Base should be between 2 and 36');
};
BN.prototype.toNumber = function toNumber () {
var ret = this.words[0];
if (this.length === 2) {
ret += this.words[1] * 0x4000000;
} else if (this.length === 3 && this.words[2] === 0x01) {
// NOTE: at this stage it is known that the top bit is set
ret += 0x10000000000000 + (this.words[1] * 0x4000000);
} else if (this.length > 2) {
assert(false, 'Number can only safely store up to 53 bits');
}
return (this.negative !== 0) ? -ret : ret;
};
BN.prototype.toJSON = function toJSON () {
return this.toString(16);
};
BN.prototype.toBuffer = function toBuffer (endian, length) {
assert(typeof Buffer !== 'undefined');
return this.toArrayLike(Buffer, endian, length);
};
BN.prototype.toArray = function toArray (endian, length) {
return this.toArrayLike(Array, endian, length);
};
BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {
var byteLength = this.byteLength();
var reqLength = length || Math.max(1, byteLength);
assert(byteLength <= reqLength, 'byte array longer than desired length');
assert(reqLength > 0, 'Requested array length <= 0');
this.strip();
var littleEndian = endian === 'le';
var res = new ArrayType(reqLength);
var b, i;
var q = this.clone();
if (!littleEndian) {
// Assume big-endian
for (i = 0; i < reqLength - byteLength; i++) {
res[i] = 0;
}
for (i = 0; !q.isZero(); i++) {
b = q.andln(0xff);
q.iushrn(8);
res[reqLength - i - 1] = b;
}
} else {
for (i = 0; !q.isZero(); i++) {
b = q.andln(0xff);
q.iushrn(8);
res[i] = b;
}
for (; i < reqLength; i++) {
res[i] = 0;
}
}
return res;
};
if (Math.clz32) {
BN.prototype._countBits = function _countBits (w) {
return 32 - Math.clz32(w);
};
} else {
BN.prototype._countBits = function _countBits (w) {
var t = w;
var r = 0;
if (t >= 0x1000) {
r += 13;
t >>>= 13;
}
if (t >= 0x40) {
r += 7;
t >>>= 7;
}
if (t >= 0x8) {
r += 4;
t >>>= 4;
}
if (t >= 0x02) {
r += 2;
t >>>= 2;
}
return r + t;
};
}
BN.prototype._zeroBits = function _zeroBits (w) {
// Short-cut
if (w === 0) return 26;
var t = w;
var r = 0;
if ((t & 0x1fff) === 0) {
r += 13;
t >>>= 13;
}
if ((t & 0x7f) === 0) {
r += 7;
t >>>= 7;
}
if ((t & 0xf) === 0) {
r += 4;
t >>>= 4;
}
if ((t & 0x3) === 0) {
r += 2;
t >>>= 2;
}
if ((t & 0x1) === 0) {
r++;
}
return r;
};
// Return number of used bits in a BN
BN.prototype.bitLength = function bitLength () {
var w = this.words[this.length - 1];
var hi = this._countBits(w);
return (this.length - 1) * 26 + hi;
};
function toBitArray (num) {
var w = new Array(num.bitLength());
for (var bit = 0; bit < w.length; bit++) {
var off = (bit / 26) | 0;
var wbit = bit % 26;
w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;
}
return w;
}
// Number of trailing zero bits
BN.prototype.zeroBits = function zeroBits () {
if (this.isZero()) return 0;
var r = 0;
for (var i = 0; i < this.length; i++) {
var b = this._zeroBits(this.words[i]);
r += b;
if (b !== 26) break;
}
return r;
};
BN.prototype.byteLength = function byteLength () {
return Math.ceil(this.bitLength() / 8);
};
BN.prototype.toTwos = function toTwos (width) {
if (this.negative !== 0) {
return this.abs().inotn(width).iaddn(1);
}
return this.clone();
};
BN.prototype.fromTwos = function fromTwos (width) {
if (this.testn(width - 1)) {
return this.notn(width).iaddn(1).ineg();
}
return this.clone();
};
BN.prototype.isNeg = function isNeg () {
return this.negative !== 0;
};
// Return negative clone of `this`
BN.prototype.neg = function neg () {
return this.clone().ineg();
};
BN.prototype.ineg = function ineg () {
if (!this.isZero()) {
this.negative ^= 1;
}
return this;
};
// Or `num` with `this` in-place
BN.prototype.iuor = function iuor (num) {
while (this.length < num.length) {
this.words[this.length++] = 0;
}
for (var i = 0; i < num.length; i++) {
this.words[i] = this.words[i] | num.words[i];
}
return this.strip();
};
BN.prototype.ior = function ior (num) {
assert((this.negative | num.negative) === 0);
return this.iuor(num);
};
// Or `num` with `this`
BN.prototype.or = function or (num) {
if (this.length > num.length) return this.clone().ior(num);
return num.clone().ior(this);
};
BN.prototype.uor = function uor (num) {
if (this.length > num.length) return this.clone().iuor(num);
return num.clone().iuor(this);
};
// And `num` with `this` in-place
BN.prototype.iuand = function iuand (num) {
// b = min-length(num, this)
var b;
if (this.length > num.length) {
b = num;
} else {
b = this;
}
for (var i = 0; i < b.length; i++) {
this.words[i] = this.words[i] & num.words[i];
}
this.length = b.length;
return this.strip();
};
BN.prototype.iand = function iand (num) {
assert((this.negative | num.negative) === 0);
return this.iuand(num);
};
// And `num` with `this`
BN.prototype.and = function and (num) {
if (this.length > num.length) return this.clone().iand(num);
return num.clone().iand(this);
};
BN.prototype.uand = function uand (num) {
if (this.length > num.length) return this.clone().iuand(num);
return num.clone().iuand(this);
};
// Xor `num` with `this` in-place
BN.prototype.iuxor = function iuxor (num) {
// a.length > b.length
var a;
var b;
if (this.length > num.length) {
a = this;
b = num;
} else {
a = num;
b = this;
}
for (var i = 0; i < b.length; i++) {
this.words[i] = a.words[i] ^ b.words[i];
}
if (this !== a) {
for (; i < a.length; i++) {
this.words[i] = a.words[i];
}
}
this.length = a.length;
return this.strip();
};
BN.prototype.ixor = function ixor (num) {
assert((this.negative | num.negative) === 0);
return this.iuxor(num);
};
// Xor `num` with `this`
BN.prototype.xor = function xor (num) {
if (this.length > num.length) return this.clone().ixor(num);
return num.clone().ixor(this);
};
BN.prototype.uxor = function uxor (num) {
if (this.length > num.length) return this.clone().iuxor(num);
return num.clone().iuxor(this);
};
// Not ``this`` with ``width`` bitwidth
BN.prototype.inotn = function inotn (width) {
assert(typeof width === 'number' && width >= 0);
var bytesNeeded = Math.ceil(width / 26) | 0;
var bitsLeft = width % 26;
// Extend the buffer with leading zeroes
this._expand(bytesNeeded);
if (bitsLeft > 0) {
bytesNeeded--;
}
// Handle complete words
for (var i = 0; i < bytesNeeded; i++) {
this.words[i] = ~this.words[i] & 0x3ffffff;
}
// Handle the residue
if (bitsLeft > 0) {
this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));
}
// And remove leading zeroes
return this.strip();
};
BN.prototype.notn = function notn (width) {
return this.clone().inotn(width);
};
// Set `bit` of `this`
BN.prototype.setn = function setn (bit, val) {
assert(typeof bit === 'number' && bit >= 0);
var off = (bit / 26) | 0;
var wbit = bit % 26;
this._expand(off + 1);
if (val) {
this.words[off] = this.words[off] | (1 << wbit);
} else {
this.words[off] = this.words[off] & ~(1 << wbit);
}
return this.strip();
};
// Add `num` to `this` in-place
BN.prototype.iadd = function iadd (num) {
var r;
// negative + positive
if (this.negative !== 0 && num.negative === 0) {
this.negative = 0;
r = this.isub(num);
this.negative ^= 1;
return this._normSign();
// positive + negative
} else if (this.negative === 0 && num.negative !== 0) {
num.negative = 0;
r = this.isub(num);
num.negative = 1;
return r._normSign();
}
// a.length > b.length
var a, b;
if (this.length > num.length) {
a = this;
b = num;
} else {
a = num;
b = this;
}
var carry = 0;
for (var i = 0; i < b.length; i++) {
r = (a.words[i] | 0) + (b.words[i] | 0) + carry;
this.words[i] = r & 0x3ffffff;
carry = r >>> 26;
}
for (; carry !== 0 && i < a.length; i++) {
r = (a.words[i] | 0) + carry;
this.words[i] = r & 0x3ffffff;
carry = r >>> 26;
}
this.length = a.length;
if (carry !== 0) {
this.words[this.length] = carry;
this.length++;
// Copy the rest of the words
} else if (a !== this) {
for (; i < a.length; i++) {
this.words[i] = a.words[i];
}
}
return this;
};
// Add `num` to `this`
BN.prototype.add = function add (num) {
var res;
if (num.negative !== 0 && this.negative === 0) {
num.negative = 0;
res = this.sub(num);
num.negative ^= 1;
return res;
} else if (num.negative === 0 && this.negative !== 0) {
this.negative = 0;
res = num.sub(this);
this.negative = 1;
return res;
}
if (this.length > num.length) return this.clone().iadd(num);
return num.clone().iadd(this);
};
// Subtract `num` from `this` in-place
BN.prototype.isub = function isub (num) {
// this - (-num) = this + num
if (num.negative !== 0) {
num.negative = 0;
var r = this.iadd(num);
num.negative = 1;
return r._normSign();
// -this - num = -(this + num)
} else if (this.negative !== 0) {
this.negative = 0;
this.iadd(num);
this.negative = 1;
return this._normSign();
}
// At this point both numbers are positive
var cmp = this.cmp(num);
// Optimization - zeroify
if (cmp === 0) {
this.negative = 0;
this.length = 1;
this.words[0] = 0;
return this;
}
// a > b
var a, b;
if (cmp > 0) {
a = this;
b = num;
} else {
a = num;
b = this;
}
var carry = 0;
for (var i = 0; i < b.length; i++) {
r = (a.words[i] | 0) - (b.words[i] | 0) + carry;
carry = r >> 26;
this.words[i] = r & 0x3ffffff;
}
for (; carry !== 0 && i < a.length; i++) {
r = (a.words[i] | 0) + carry;
carry = r >> 26;
this.words[i] = r & 0x3ffffff;
}
// Copy rest of the words
if (carry === 0 && i < a.length && a !== this) {
for (; i < a.length; i++) {
this.words[i] = a.words[i];
}
}
this.length = Math.max(this.length, i);
if (a !== this) {
this.negative = 1;
}
return this.strip();
};
// Subtract `num` from `this`
BN.prototype.sub = function sub (num) {
return this.clone().isub(num);
};
function smallMulTo (self, num, out) {
out.negative = num.negative ^ self.negative;
var len = (self.length + num.length) | 0;
out.length = len;
len = (len - 1) | 0;
// Peel one iteration (compiler can't do it, because of code complexity)
var a = self.words[0] | 0;
var b = num.words[0] | 0;
var r = a * b;
var lo = r & 0x3ffffff;
var carry = (r / 0x4000000) | 0;
out.words[0] = lo;
for (var k = 1; k < len; k++) {
// Sum all words with the same `i + j = k` and accumulate `ncarry`,
// note that ncarry could be >= 0x3ffffff
var ncarry = carry >>> 26;
var rword = carry & 0x3ffffff;
var maxJ = Math.min(k, num.length - 1);
for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
var i = (k - j) | 0;
a = self.words[i] | 0;
b = num.words[j] | 0;
r = a * b + rword;
ncarry += (r / 0x4000000) | 0;
rword = r & 0x3ffffff;
}
out.words[k] = rword | 0;
carry = ncarry | 0;
}
if (carry !== 0) {
out.words[k] = carry | 0;
} else {
out.length--;
}
return out.strip();
}
// TODO(indutny): it may be reasonable to omit it for users who don't need
// to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit
// multiplication (like elliptic secp256k1).
var comb10MulTo = function comb10MulTo (self, num, out) {
var a = self.words;
var b = num.words;
var o = out.words;
var c = 0;
var lo;
var mid;
var hi;
var a0 = a[0] | 0;
var al0 = a0 & 0x1fff;
var ah0 = a0 >>> 13;
var a1 = a[1] | 0;
var al1 = a1 & 0x1fff;
var ah1 = a1 >>> 13;
var a2 = a[2] | 0;
var al2 = a2 & 0x1fff;
var ah2 = a2 >>> 13;
var a3 = a[3] | 0;
var al3 = a3 & 0x1fff;
var ah3 = a3 >>> 13;
var a4 = a[4] | 0;
var al4 = a4 & 0x1fff;
var ah4 = a4 >>> 13;
var a5 = a[5] | 0;
var al5 = a5 & 0x1fff;
var ah5 = a5 >>> 13;
var a6 = a[6] | 0;
var al6 = a6 & 0x1fff;
var ah6 = a6 >>> 13;
var a7 = a[7] | 0;
var al7 = a7 & 0x1fff;
var ah7 = a7 >>> 13;
var a8 = a[8] | 0;
var al8 = a8 & 0x1fff;
var ah8 = a8 >>> 13;
var a9 = a[9] | 0;
var al9 = a9 & 0x1fff;
var ah9 = a9 >>> 13;
var b0 = b[0] | 0;
var bl0 = b0 & 0x1fff;
var bh0 = b0 >>> 13;
var b1 = b[1] | 0;
var bl1 = b1 & 0x1fff;
var bh1 = b1 >>> 13;
var b2 = b[2] | 0;
var bl2 = b2 & 0x1fff;
var bh2 = b2 >>> 13;
var b3 = b[3] | 0;
var bl3 = b3 & 0x1fff;
var bh3 = b3 >>> 13;
var b4 = b[4] | 0;
var bl4 = b4 & 0x1fff;
var bh4 = b4 >>> 13;
var b5 = b[5] | 0;
var bl5 = b5 & 0x1fff;
var bh5 = b5 >>> 13;
var b6 = b[6] | 0;
var bl6 = b6 & 0x1fff;
var bh6 = b6 >>> 13;
var b7 = b[7] | 0;
var bl7 = b7 & 0x1fff;
var bh7 = b7 >>> 13;
var b8 = b[8] | 0;
var bl8 = b8 & 0x1fff;
var bh8 = b8 >>> 13;
var b9 = b[9] | 0;
var bl9 = b9 & 0x1fff;
var bh9 = b9 >>> 13;
out.negative = self.negative ^ num.negative;
out.length = 19;
/* k = 0 */
lo = Math.imul(al0, bl0);
mid = Math.imul(al0, bh0);
mid = (mid + Math.imul(ah0, bl0)) | 0;
hi = Math.imul(ah0, bh0);
var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;
w0 &= 0x3ffffff;
/* k = 1 */
lo = Math.imul(al1, bl0);
mid = Math.imul(al1, bh0);
mid = (mid + Math.imul(ah1, bl0)) | 0;
hi = Math.imul(ah1, bh0);
lo = (lo + Math.imul(al0, bl1)) | 0;
mid = (mid + Math.imul(al0, bh1)) | 0;
mid = (mid + Math.imul(ah0, bl1)) | 0;
hi = (hi + Math.imul(ah0, bh1)) | 0;
var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;
w1 &= 0x3ffffff;
/* k = 2 */
lo = Math.imul(al2, bl0);
mid = Math.imul(al2, bh0);
mid = (mid + Math.imul(ah2, bl0)) | 0;
hi = Math.imul(ah2, bh0);
lo = (lo + Math.imul(al1, bl1)) | 0;
mid = (mid + Math.imul(al1, bh1)) | 0;
mid = (mid + Math.imul(ah1, bl1)) | 0;
hi = (hi + Math.imul(ah1, bh1)) | 0;
lo = (lo + Math.imul(al0, bl2)) | 0;
mid = (mid + Math.imul(al0, bh2)) | 0;
mid = (mid + Math.imul(ah0, bl2)) | 0;
hi = (hi + Math.imul(ah0, bh2)) | 0;
var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;
w2 &= 0x3ffffff;
/* k = 3 */
lo = Math.imul(al3, bl0);
mid = Math.imul(al3, bh0);
mid = (mid + Math.imul(ah3, bl0)) | 0;
hi = Math.imul(ah3, bh0);
lo = (lo + Math.imul(al2, bl1)) | 0;
mid = (mid + Math.imul(al2, bh1)) | 0;
mid = (mid + Math.imul(ah2, bl1)) | 0;
hi = (hi + Math.imul(ah2, bh1)) | 0;
lo = (lo + Math.imul(al1, bl2)) | 0;
mid = (mid + Math.imul(al1, bh2)) | 0;
mid = (mid + Math.imul(ah1, bl2)) | 0;
hi = (hi + Math.imul(ah1, bh2)) | 0;
lo = (lo + Math.imul(al0, bl3)) | 0;
mid = (mid + Math.imul(al0, bh3)) | 0;
mid = (mid + Math.imul(ah0, bl3)) | 0;
hi = (hi + Math.imul(ah0, bh3)) | 0;
var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;
w3 &= 0x3ffffff;
/* k = 4 */
lo = Math.imul(al4, bl0);
mid = Math.imul(al4, bh0);
mid = (mid + Math.imul(ah4, bl0)) | 0;
hi = Math.imul(ah4, bh0);
lo = (lo + Math.imul(al3, bl1)) | 0;
mid = (mid + Math.imul(al3, bh1)) | 0;
mid = (mid + Math.imul(ah3, bl1)) | 0;
hi = (hi + Math.imul(ah3, bh1)) | 0;
lo = (lo + Math.imul(al2, bl2)) | 0;
mid = (mid + Math.imul(al2, bh2)) | 0;
mid = (mid + Math.imul(ah2, bl2)) | 0;
hi = (hi + Math.imul(ah2, bh2)) | 0;
lo = (lo + Math.imul(al1, bl3)) | 0;
mid = (mid + Math.imul(al1, bh3)) | 0;
mid = (mid + Math.imul(ah1, bl3)) | 0;
hi = (hi + Math.imul(ah1, bh3)) | 0;
lo = (lo + Math.imul(al0, bl4)) | 0;
mid = (mid + Math.imul(al0, bh4)) | 0;
mid = (mid + Math.imul(ah0, bl4)) | 0;
hi = (hi + Math.imul(ah0, bh4)) | 0;
var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;
w4 &= 0x3ffffff;
/* k = 5 */
lo = Math.imul(al5, bl0);
mid = Math.imul(al5, bh0);
mid = (mid + Math.imul(ah5, bl0)) | 0;
hi = Math.imul(ah5, bh0);
lo = (lo + Math.imul(al4, bl1)) | 0;
mid = (mid + Math.imul(al4, bh1)) | 0;
mid = (mid + Math.imul(ah4, bl1)) | 0;
hi = (hi + Math.imul(ah4, bh1)) | 0;
lo = (lo + Math.imul(al3, bl2)) | 0;
mid = (mid + Math.imul(al3, bh2)) | 0;
mid = (mid + Math.imul(ah3, bl2)) | 0;
hi = (hi + Math.imul(ah3, bh2)) | 0;
lo = (lo + Math.imul(al2, bl3)) | 0;
mid = (mid + Math.imul(al2, bh3)) | 0;
mid = (mid + Math.imul(ah2, bl3)) | 0;
hi = (hi + Math.imul(ah2, bh3)) | 0;
lo = (lo + Math.imul(al1, bl4)) | 0;
mid = (mid + Math.imul(al1, bh4)) | 0;
mid = (mid + Math.imul(ah1, bl4)) | 0;
hi = (hi + Math.imul(ah1, bh4)) | 0;
lo = (lo + Math.imul(al0, bl5)) | 0;
mid = (mid + Math.imul(al0, bh5)) | 0;
mid = (mid + Math.imul(ah0, bl5)) | 0;
hi = (hi + Math.imul(ah0, bh5)) | 0;
var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;
w5 &= 0x3ffffff;
/* k = 6 */
lo = Math.imul(al6, bl0);
mid = Math.imul(al6, bh0);
mid = (mid + Math.imul(ah6, bl0)) | 0;
hi = Math.imul(ah6, bh0);
lo = (lo + Math.imul(al5, bl1)) | 0;
mid = (mid + Math.imul(al5, bh1)) | 0;
mid = (mid + Math.imul(ah5, bl1)) | 0;
hi = (hi + Math.imul(ah5, bh1)) | 0;
lo = (lo + Math.imul(al4, bl2)) | 0;
mid = (mid + Math.imul(al4, bh2)) | 0;
mid = (mid + Math.imul(ah4, bl2)) | 0;
hi = (hi + Math.imul(ah4, bh2)) | 0;
lo = (lo + Math.imul(al3, bl3)) | 0;
mid = (mid + Math.imul(al3, bh3)) | 0;
mid = (mid + Math.imul(ah3, bl3)) | 0;
hi = (hi + Math.imul(ah3, bh3)) | 0;
lo = (lo + Math.imul(al2, bl4)) | 0;
mid = (mid + Math.imul(al2, bh4)) | 0;
mid = (mid + Math.imul(ah2, bl4)) | 0;
hi = (hi + Math.imul(ah2, bh4)) | 0;
lo = (lo + Math.imul(al1, bl5)) | 0;
mid = (mid + Math.imul(al1, bh5)) | 0;
mid = (mid + Math.imul(ah1, bl5)) | 0;
hi = (hi + Math.imul(ah1, bh5)) | 0;
lo = (lo + Math.imul(al0, bl6)) | 0;
mid = (mid + Math.imul(al0, bh6)) | 0;
mid = (mid + Math.imul(ah0, bl6)) | 0;
hi = (hi + Math.imul(ah0, bh6)) | 0;
var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;
w6 &= 0x3ffffff;
/* k = 7 */
lo = Math.imul(al7, bl0);
mid = Math.imul(al7, bh0);
mid = (mid + Math.imul(ah7, bl0)) | 0;
hi = Math.imul(ah7, bh0);
lo = (lo + Math.imul(al6, bl1)) | 0;
mid = (mid + Math.imul(al6, bh1)) | 0;
mid = (mid + Math.imul(ah6, bl1)) | 0;
hi = (hi + Math.imul(ah6, bh1)) | 0;
lo = (lo + Math.imul(al5, bl2)) | 0;
mid = (mid + Math.imul(al5, bh2)) | 0;
mid = (mid + Math.imul(ah5, bl2)) | 0;
hi = (hi + Math.imul(ah5, bh2)) | 0;
lo = (lo + Math.imul(al4, bl3)) | 0;
mid = (mid + Math.imul(al4, bh3)) | 0;
mid = (mid + Math.imul(ah4, bl3)) | 0;
hi = (hi + Math.imul(ah4, bh3)) | 0;
lo = (lo + Math.imul(al3, bl4)) | 0;
mid = (mid + Math.imul(al3, bh4)) | 0;
mid = (mid + Math.imul(ah3, bl4)) | 0;
hi = (hi + Math.imul(ah3, bh4)) | 0;
lo = (lo + Math.imul(al2, bl5)) | 0;
mid = (mid + Math.imul(al2, bh5)) | 0;
mid = (mid + Math.imul(ah2, bl5)) | 0;
hi = (hi + Math.imul(ah2, bh5)) | 0;
lo = (lo + Math.imul(al1, bl6)) | 0;
mid = (mid + Math.imul(al1, bh6)) | 0;
mid = (mid + Math.imul(ah1, bl6)) | 0;
hi = (hi + Math.imul(ah1, bh6)) | 0;
lo = (lo + Math.imul(al0, bl7)) | 0;
mid = (mid + Math.imul(al0, bh7)) | 0;
mid = (mid + Math.imul(ah0, bl7)) | 0;
hi = (hi + Math.imul(ah0, bh7)) | 0;
var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;
w7 &= 0x3ffffff;
/* k = 8 */
lo = Math.imul(al8, bl0);
mid = Math.imul(al8, bh0);
mid = (mid + Math.imul(ah8, bl0)) | 0;
hi = Math.imul(ah8, bh0);
lo = (lo + Math.imul(al7, bl1)) | 0;
mid = (mid + Math.imul(al7, bh1)) | 0;
mid = (mid + Math.imul(ah7, bl1)) | 0;
hi = (hi + Math.imul(ah7, bh1)) | 0;
lo = (lo + Math.imul(al6, bl2)) | 0;
mid = (mid + Math.imul(al6, bh2)) | 0;
mid = (mid + Math.imul(ah6, bl2)) | 0;
hi = (hi + Math.imul(ah6, bh2)) | 0;
lo = (lo + Math.imul(al5, bl3)) | 0;
mid = (mid + Math.imul(al5, bh3)) | 0;
mid = (mid + Math.imul(ah5, bl3)) | 0;
hi = (hi + Math.imul(ah5, bh3)) | 0;
lo = (lo + Math.imul(al4, bl4)) | 0;
mid = (mid + Math.imul(al4, bh4)) | 0;
mid = (mid + Math.imul(ah4, bl4)) | 0;
hi = (hi + Math.imul(ah4, bh4)) | 0;
lo = (lo + Math.imul(al3, bl5)) | 0;
mid = (mid + Math.imul(al3, bh5)) | 0;
mid = (mid + Math.imul(ah3, bl5)) | 0;
hi = (hi + Math.imul(ah3, bh5)) | 0;
lo = (lo + Math.imul(al2, bl6)) | 0;
mid = (mid + Math.imul(al2, bh6)) | 0;
mid = (mid + Math.imul(ah2, bl6)) | 0;
hi = (hi + Math.imul(ah2, bh6)) | 0;
lo = (lo + Math.imul(al1, bl7)) | 0;
mid = (mid + Math.imul(al1, bh7)) | 0;
mid = (mid + Math.imul(ah1, bl7)) | 0;
hi = (hi + Math.imul(ah1, bh7)) | 0;
lo = (lo + Math.imul(al0, bl8)) | 0;
mid = (mid + Math.imul(al0, bh8)) | 0;
mid = (mid + Math.imul(ah0, bl8)) | 0;
hi = (hi + Math.imul(ah0, bh8)) | 0;
var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;
w8 &= 0x3ffffff;
/* k = 9 */
lo = Math.imul(al9, bl0);
mid = Math.imul(al9, bh0);
mid = (mid + Math.imul(ah9, bl0)) | 0;
hi = Math.imul(ah9, bh0);
lo = (lo + Math.imul(al8, bl1)) | 0;
mid = (mid + Math.imul(al8, bh1)) | 0;
mid = (mid + Math.imul(ah8, bl1)) | 0;
hi = (hi + Math.imul(ah8, bh1)) | 0;
lo = (lo + Math.imul(al7, bl2)) | 0;
mid = (mid + Math.imul(al7, bh2)) | 0;
mid = (mid + Math.imul(ah7, bl2)) | 0;
hi = (hi + Math.imul(ah7, bh2)) | 0;
lo = (lo + Math.imul(al6, bl3)) | 0;
mid = (mid + Math.imul(al6, bh3)) | 0;
mid = (mid + Math.imul(ah6, bl3)) | 0;
hi = (hi + Math.imul(ah6, bh3)) | 0;
lo = (lo + Math.imul(al5, bl4)) | 0;
mid = (mid + Math.imul(al5, bh4)) | 0;
mid = (mid + Math.imul(ah5, bl4)) | 0;
hi = (hi + Math.imul(ah5, bh4)) | 0;
lo = (lo + Math.imul(al4, bl5)) | 0;
mid = (mid + Math.imul(al4, bh5)) | 0;
mid = (mid + Math.imul(ah4, bl5)) | 0;
hi = (hi + Math.imul(ah4, bh5)) | 0;
lo = (lo + Math.imul(al3, bl6)) | 0;
mid = (mid + Math.imul(al3, bh6)) | 0;
mid = (mid + Math.imul(ah3, bl6)) | 0;
hi = (hi + Math.imul(ah3, bh6)) | 0;
lo = (lo + Math.imul(al2, bl7)) | 0;
mid = (mid + Math.imul(al2, bh7)) | 0;
mid = (mid + Math.imul(ah2, bl7)) | 0;
hi = (hi + Math.imul(ah2, bh7)) | 0;
lo = (lo + Math.imul(al1, bl8)) | 0;
mid = (mid + Math.imul(al1, bh8)) | 0;
mid = (mid + Math.imul(ah1, bl8)) | 0;
hi = (hi + Math.imul(ah1, bh8)) | 0;
lo = (lo + Math.imul(al0, bl9)) | 0;
mid = (mid + Math.imul(al0, bh9)) | 0;
mid = (mid + Math.imul(ah0, bl9)) | 0;
hi = (hi + Math.imul(ah0, bh9)) | 0;
var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;
w9 &= 0x3ffffff;
/* k = 10 */
lo = Math.imul(al9, bl1);
mid = Math.imul(al9, bh1);
mid = (mid + Math.imul(ah9, bl1)) | 0;
hi = Math.imul(ah9, bh1);
lo = (lo + Math.imul(al8, bl2)) | 0;
mid = (mid + Math.imul(al8, bh2)) | 0;
mid = (mid + Math.imul(ah8, bl2)) | 0;
hi = (hi + Math.imul(ah8, bh2)) | 0;
lo = (lo + Math.imul(al7, bl3)) | 0;
mid = (mid + Math.imul(al7, bh3)) | 0;
mid = (mid + Math.imul(ah7, bl3)) | 0;
hi = (hi + Math.imul(ah7, bh3)) | 0;
lo = (lo + Math.imul(al6, bl4)) | 0;
mid = (mid + Math.imul(al6, bh4)) | 0;
mid = (mid + Math.imul(ah6, bl4)) | 0;
hi = (hi + Math.imul(ah6, bh4)) | 0;
lo = (lo + Math.imul(al5, bl5)) | 0;
mid = (mid + Math.imul(al5, bh5)) | 0;
mid = (mid + Math.imul(ah5, bl5)) | 0;
hi = (hi + Math.imul(ah5, bh5)) | 0;
lo = (lo + Math.imul(al4, bl6)) | 0;
mid = (mid + Math.imul(al4, bh6)) | 0;
mid = (mid + Math.imul(ah4, bl6)) | 0;
hi = (hi + Math.imul(ah4, bh6)) | 0;
lo = (lo + Math.imul(al3, bl7)) | 0;
mid = (mid + Math.imul(al3, bh7)) | 0;
mid = (mid + Math.imul(ah3, bl7)) | 0;
hi = (hi + Math.imul(ah3, bh7)) | 0;
lo = (lo + Math.imul(al2, bl8)) | 0;
mid = (mid + Math.imul(al2, bh8)) | 0;
mid = (mid + Math.imul(ah2, bl8)) | 0;
hi = (hi + Math.imul(ah2, bh8)) | 0;
lo = (lo + Math.imul(al1, bl9)) | 0;
mid = (mid + Math.imul(al1, bh9)) | 0;
mid = (mid + Math.imul(ah1, bl9)) | 0;
hi = (hi + Math.imul(ah1, bh9)) | 0;
var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;
w10 &= 0x3ffffff;
/* k = 11 */
lo = Math.imul(al9, bl2);
mid = Math.imul(al9, bh2);
mid = (mid + Math.imul(ah9, bl2)) | 0;
hi = Math.imul(ah9, bh2);
lo = (lo + Math.imul(al8, bl3)) | 0;
mid = (mid + Math.imul(al8, bh3)) | 0;
mid = (mid + Math.imul(ah8, bl3)) | 0;
hi = (hi + Math.imul(ah8, bh3)) | 0;
lo = (lo + Math.imul(al7, bl4)) | 0;
mid = (mid + Math.imul(al7, bh4)) | 0;
mid = (mid + Math.imul(ah7, bl4)) | 0;
hi = (hi + Math.imul(ah7, bh4)) | 0;
lo = (lo + Math.imul(al6, bl5)) | 0;
mid = (mid + Math.imul(al6, bh5)) | 0;
mid = (mid + Math.imul(ah6, bl5)) | 0;
hi = (hi + Math.imul(ah6, bh5)) | 0;
lo = (lo + Math.imul(al5, bl6)) | 0;
mid = (mid + Math.imul(al5, bh6)) | 0;
mid = (mid + Math.imul(ah5, bl6)) | 0;
hi = (hi + Math.imul(ah5, bh6)) | 0;
lo = (lo + Math.imul(al4, bl7)) | 0;
mid = (mid + Math.imul(al4, bh7)) | 0;
mid = (mid + Math.imul(ah4, bl7)) | 0;
hi = (hi + Math.imul(ah4, bh7)) | 0;
lo = (lo + Math.imul(al3, bl8)) | 0;
mid = (mid + Math.imul(al3, bh8)) | 0;
mid = (mid + Math.imul(ah3, bl8)) | 0;
hi = (hi + Math.imul(ah3, bh8)) | 0;
lo = (lo + Math.imul(al2, bl9)) | 0;
mid = (mid + Math.imul(al2, bh9)) | 0;
mid = (mid + Math.imul(ah2, bl9)) | 0;
hi = (hi + Math.imul(ah2, bh9)) | 0;
var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;
w11 &= 0x3ffffff;
/* k = 12 */
lo = Math.imul(al9, bl3);
mid = Math.imul(al9, bh3);
mid = (mid + Math.imul(ah9, bl3)) | 0;
hi = Math.imul(ah9, bh3);
lo = (lo + Math.imul(al8, bl4)) | 0;
mid = (mid + Math.imul(al8, bh4)) | 0;
mid = (mid + Math.imul(ah8, bl4)) | 0;
hi = (hi + Math.imul(ah8, bh4)) | 0;
lo = (lo + Math.imul(al7, bl5)) | 0;
mid = (mid + Math.imul(al7, bh5)) | 0;
mid = (mid + Math.imul(ah7, bl5)) | 0;
hi = (hi + Math.imul(ah7, bh5)) | 0;
lo = (lo + Math.imul(al6, bl6)) | 0;
mid = (mid + Math.imul(al6, bh6)) | 0;
mid = (mid + Math.imul(ah6, bl6)) | 0;
hi = (hi + Math.imul(ah6, bh6)) | 0;
lo = (lo + Math.imul(al5, bl7)) | 0;
mid = (mid + Math.imul(al5, bh7)) | 0;
mid = (mid + Math.imul(ah5, bl7)) | 0;
hi = (hi + Math.imul(ah5, bh7)) | 0;
lo = (lo + Math.imul(al4, bl8)) | 0;
mid = (mid + Math.imul(al4, bh8)) | 0;
mid = (mid + Math.imul(ah4, bl8)) | 0;
hi = (hi + Math.imul(ah4, bh8)) | 0;
lo = (lo + Math.imul(al3, bl9)) | 0;
mid = (mid + Math.imul(al3, bh9)) | 0;
mid = (mid + Math.imul(ah3, bl9)) | 0;
hi = (hi + Math.imul(ah3, bh9)) | 0;
var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;
w12 &= 0x3ffffff;
/* k = 13 */
lo = Math.imul(al9, bl4);
mid = Math.imul(al9, bh4);
mid = (mid + Math.imul(ah9, bl4)) | 0;
hi = Math.imul(ah9, bh4);
lo = (lo + Math.imul(al8, bl5)) | 0;
mid = (mid + Math.imul(al8, bh5)) | 0;
mid = (mid + Math.imul(ah8, bl5)) | 0;
hi = (hi + Math.imul(ah8, bh5)) | 0;
lo = (lo + Math.imul(al7, bl6)) | 0;
mid = (mid + Math.imul(al7, bh6)) | 0;
mid = (mid + Math.imul(ah7, bl6)) | 0;
hi = (hi + Math.imul(ah7, bh6)) | 0;
lo = (lo + Math.imul(al6, bl7)) | 0;
mid = (mid + Math.imul(al6, bh7)) | 0;
mid = (mid + Math.imul(ah6, bl7)) | 0;
hi = (hi + Math.imul(ah6, bh7)) | 0;
lo = (lo + Math.imul(al5, bl8)) | 0;
mid = (mid + Math.imul(al5, bh8)) | 0;
mid = (mid + Math.imul(ah5, bl8)) | 0;
hi = (hi + Math.imul(ah5, bh8)) | 0;
lo = (lo + Math.imul(al4, bl9)) | 0;
mid = (mid + Math.imul(al4, bh9)) | 0;
mid = (mid + Math.imul(ah4, bl9)) | 0;
hi = (hi + Math.imul(ah4, bh9)) | 0;
var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;
w13 &= 0x3ffffff;
/* k = 14 */
lo = Math.imul(al9, bl5);
mid = Math.imul(al9, bh5);
mid = (mid + Math.imul(ah9, bl5)) | 0;
hi = Math.imul(ah9, bh5);
lo = (lo + Math.imul(al8, bl6)) | 0;
mid = (mid + Math.imul(al8, bh6)) | 0;
mid = (mid + Math.imul(ah8, bl6)) | 0;
hi = (hi + Math.imul(ah8, bh6)) | 0;
lo = (lo + Math.imul(al7, bl7)) | 0;
mid = (mid + Math.imul(al7, bh7)) | 0;
mid = (mid + Math.imul(ah7, bl7)) | 0;
hi = (hi + Math.imul(ah7, bh7)) | 0;
lo = (lo + Math.imul(al6, bl8)) | 0;
mid = (mid + Math.imul(al6, bh8)) | 0;
mid = (mid + Math.imul(ah6, bl8)) | 0;
hi = (hi + Math.imul(ah6, bh8)) | 0;
lo = (lo + Math.imul(al5, bl9)) | 0;
mid = (mid + Math.imul(al5, bh9)) | 0;
mid = (mid + Math.imul(ah5, bl9)) | 0;
hi = (hi + Math.imul(ah5, bh9)) | 0;
var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;
w14 &= 0x3ffffff;
/* k = 15 */
lo = Math.imul(al9, bl6);
mid = Math.imul(al9, bh6);
mid = (mid + Math.imul(ah9, bl6)) | 0;
hi = Math.imul(ah9, bh6);
lo = (lo + Math.imul(al8, bl7)) | 0;
mid = (mid + Math.imul(al8, bh7)) | 0;
mid = (mid + Math.imul(ah8, bl7)) | 0;
hi = (hi + Math.imul(ah8, bh7)) | 0;
lo = (lo + Math.imul(al7, bl8)) | 0;
mid = (mid + Math.imul(al7, bh8)) | 0;
mid = (mid + Math.imul(ah7, bl8)) | 0;
hi = (hi + Math.imul(ah7, bh8)) | 0;
lo = (lo + Math.imul(al6, bl9)) | 0;
mid = (mid + Math.imul(al6, bh9)) | 0;
mid = (mid + Math.imul(ah6, bl9)) | 0;
hi = (hi + Math.imul(ah6, bh9)) | 0;
var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;
w15 &= 0x3ffffff;
/* k = 16 */
lo = Math.imul(al9, bl7);
mid = Math.imul(al9, bh7);
mid = (mid + Math.imul(ah9, bl7)) | 0;
hi = Math.imul(ah9, bh7);
lo = (lo + Math.imul(al8, bl8)) | 0;
mid = (mid + Math.imul(al8, bh8)) | 0;
mid = (mid + Math.imul(ah8, bl8)) | 0;
hi = (hi + Math.imul(ah8, bh8)) | 0;
lo = (lo + Math.imul(al7, bl9)) | 0;
mid = (mid + Math.imul(al7, bh9)) | 0;
mid = (mid + Math.imul(ah7, bl9)) | 0;
hi = (hi + Math.imul(ah7, bh9)) | 0;
var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;
w16 &= 0x3ffffff;
/* k = 17 */
lo = Math.imul(al9, bl8);
mid = Math.imul(al9, bh8);
mid = (mid + Math.imul(ah9, bl8)) | 0;
hi = Math.imul(ah9, bh8);
lo = (lo + Math.imul(al8, bl9)) | 0;
mid = (mid + Math.imul(al8, bh9)) | 0;
mid = (mid + Math.imul(ah8, bl9)) | 0;
hi = (hi + Math.imul(ah8, bh9)) | 0;
var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;
w17 &= 0x3ffffff;
/* k = 18 */
lo = Math.imul(al9, bl9);
mid = Math.imul(al9, bh9);
mid = (mid + Math.imul(ah9, bl9)) | 0;
hi = Math.imul(ah9, bh9);
var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;
w18 &= 0x3ffffff;
o[0] = w0;
o[1] = w1;
o[2] = w2;
o[3] = w3;
o[4] = w4;
o[5] = w5;
o[6] = w6;
o[7] = w7;
o[8] = w8;
o[9] = w9;
o[10] = w10;
o[11] = w11;
o[12] = w12;
o[13] = w13;
o[14] = w14;
o[15] = w15;
o[16] = w16;
o[17] = w17;
o[18] = w18;
if (c !== 0) {
o[19] = c;
out.length++;
}
return out;
};
// Polyfill comb
if (!Math.imul) {
comb10MulTo = smallMulTo;
}
function bigMulTo (self, num, out) {
out.negative = num.negative ^ self.negative;
out.length = self.length + num.length;
var carry = 0;
var hncarry = 0;
for (var k = 0; k < out.length - 1; k++) {
// Sum all words with the same `i + j = k` and accumulate `ncarry`,
// note that ncarry could be >= 0x3ffffff
var ncarry = hncarry;
hncarry = 0;
var rword = carry & 0x3ffffff;
var maxJ = Math.min(k, num.length - 1);
for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
var i = k - j;
var a = self.words[i] | 0;
var b = num.words[j] | 0;
var r = a * b;
var lo = r & 0x3ffffff;
ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;
lo = (lo + rword) | 0;
rword = lo & 0x3ffffff;
ncarry = (ncarry + (lo >>> 26)) | 0;
hncarry += ncarry >>> 26;
ncarry &= 0x3ffffff;
}
out.words[k] = rword;
carry = ncarry;
ncarry = hncarry;
}
if (carry !== 0) {
out.words[k] = carry;
} else {
out.length--;
}
return out.strip();
}
function jumboMulTo (self, num, out) {
var fftm = new FFTM();
return fftm.mulp(self, num, out);
}
BN.prototype.mulTo = function mulTo (num, out) {
var res;
var len = this.length + num.length;
if (this.length === 10 && num.length === 10) {
res = comb10MulTo(this, num, out);
} else if (len < 63) {
res = smallMulTo(this, num, out);
} else if (len < 1024) {
res = bigMulTo(this, num, out);
} else {
res = jumboMulTo(this, num, out);
}
return res;
};
// Cooley-Tukey algorithm for FFT
// slightly revisited to rely on looping instead of recursion
function FFTM (x, y) {
this.x = x;
this.y = y;
}
FFTM.prototype.makeRBT = function makeRBT (N) {
var t = new Array(N);
var l = BN.prototype._countBits(N) - 1;
for (var i = 0; i < N; i++) {
t[i] = this.revBin(i, l, N);
}
return t;
};
// Returns binary-reversed representation of `x`
FFTM.prototype.revBin = function revBin (x, l, N) {
if (x === 0 || x === N - 1) return x;
var rb = 0;
for (var i = 0; i < l; i++) {
rb |= (x & 1) << (l - i - 1);
x >>= 1;
}
return rb;
};
// Performs "tweedling" phase, therefore 'emulating'
// behaviour of the recursive algorithm
FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {
for (var i = 0; i < N; i++) {
rtws[i] = rws[rbt[i]];
itws[i] = iws[rbt[i]];
}
};
FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {
this.permute(rbt, rws, iws, rtws, itws, N);
for (var s = 1; s < N; s <<= 1) {
var l = s << 1;
var rtwdf = Math.cos(2 * Math.PI / l);
var itwdf = Math.sin(2 * Math.PI / l);
for (var p = 0; p < N; p += l) {
var rtwdf_ = rtwdf;
var itwdf_ = itwdf;
for (var j = 0; j < s; j++) {
var re = rtws[p + j];
var ie = itws[p + j];
var ro = rtws[p + j + s];
var io = itws[p + j + s];
var rx = rtwdf_ * ro - itwdf_ * io;
io = rtwdf_ * io + itwdf_ * ro;
ro = rx;
rtws[p + j] = re + ro;
itws[p + j] = ie + io;
rtws[p + j + s] = re - ro;
itws[p + j + s] = ie - io;
/* jshint maxdepth : false */
if (j !== l) {
rx = rtwdf * rtwdf_ - itwdf * itwdf_;
itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;
rtwdf_ = rx;
}
}
}
}
};
FFTM.prototype.guessLen13b = function guessLen13b (n, m) {
var N = Math.max(m, n) | 1;
var odd = N & 1;
var i = 0;
for (N = N / 2 | 0; N; N = N >>> 1) {
i++;
}
return 1 << i + 1 + odd;
};
FFTM.prototype.conjugate = function conjugate (rws, iws, N) {
if (N <= 1) return;
for (var i = 0; i < N / 2; i++) {
var t = rws[i];
rws[i] = rws[N - i - 1];
rws[N - i - 1] = t;
t = iws[i];
iws[i] = -iws[N - i - 1];
iws[N - i - 1] = -t;
}
};
FFTM.prototype.normalize13b = function normalize13b (ws, N) {
var carry = 0;
for (var i = 0; i < N / 2; i++) {
var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +
Math.round(ws[2 * i] / N) +
carry;
ws[i] = w & 0x3ffffff;
if (w < 0x4000000) {
carry = 0;
} else {
carry = w / 0x4000000 | 0;
}
}
return ws;
};
FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {
var carry = 0;
for (var i = 0; i < len; i++) {
carry = carry + (ws[i] | 0);
rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;
rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;
}
// Pad with zeroes
for (i = 2 * len; i < N; ++i) {
rws[i] = 0;
}
assert(carry === 0);
assert((carry & ~0x1fff) === 0);
};
FFTM.prototype.stub = function stub (N) {
var ph = new Array(N);
for (var i = 0; i < N; i++) {
ph[i] = 0;
}
return ph;
};
FFTM.prototype.mulp = function mulp (x, y, out) {
var N = 2 * this.guessLen13b(x.length, y.length);
var rbt = this.makeRBT(N);
var _ = this.stub(N);
var rws = new Array(N);
var rwst = new Array(N);
var iwst = new Array(N);
var nrws = new Array(N);
var nrwst = new Array(N);
var niwst = new Array(N);
var rmws = out.words;
rmws.length = N;
this.convert13b(x.words, x.length, rws, N);
this.convert13b(y.words, y.length, nrws, N);
this.transform(rws, _, rwst, iwst, N, rbt);
this.transform(nrws, _, nrwst, niwst, N, rbt);
for (var i = 0; i < N; i++) {
var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];
iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];
rwst[i] = rx;
}
this.conjugate(rwst, iwst, N);
this.transform(rwst, iwst, rmws, _, N, rbt);
this.conjugate(rmws, _, N);
this.normalize13b(rmws, N);
out.negative = x.negative ^ y.negative;
out.length = x.length + y.length;
return out.strip();
};
// Multiply `this` by `num`
BN.prototype.mul = function mul (num) {
var out = new BN(null);
out.words = new Array(this.length + num.length);
return this.mulTo(num, out);
};
// Multiply employing FFT
BN.prototype.mulf = function mulf (num) {
var out = new BN(null);
out.words = new Array(this.length + num.length);
return jumboMulTo(this, num, out);
};
// In-place Multiplication
BN.prototype.imul = function imul (num) {
return this.clone().mulTo(num, this);
};
BN.prototype.imuln = function imuln (num) {
assert(typeof num === 'number');
assert(num < 0x4000000);
// Carry
var carry = 0;
for (var i = 0; i < this.length; i++) {
var w = (this.words[i] | 0) * num;
var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);
carry >>= 26;
carry += (w / 0x4000000) | 0;
// NOTE: lo is 27bit maximum
carry += lo >>> 26;
this.words[i] = lo & 0x3ffffff;
}
if (carry !== 0) {
this.words[i] = carry;
this.length++;
}
return this;
};
BN.prototype.muln = function muln (num) {
return this.clone().imuln(num);
};
// `this` * `this`
BN.prototype.sqr = function sqr () {
return this.mul(this);
};
// `this` * `this` in-place
BN.prototype.isqr = function isqr () {
return this.imul(this.clone());
};
// Math.pow(`this`, `num`)
BN.prototype.pow = function pow (num) {
var w = toBitArray(num);
if (w.length === 0) return new BN(1);
// Skip leading zeroes
var res = this;
for (var i = 0; i < w.length; i++, res = res.sqr()) {
if (w[i] !== 0) break;
}
if (++i < w.length) {
for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {
if (w[i] === 0) continue;
res = res.mul(q);
}
}
return res;
};
// Shift-left in-place
BN.prototype.iushln = function iushln (bits) {
assert(typeof bits === 'number' && bits >= 0);
var r = bits % 26;
var s = (bits - r) / 26;
var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);
var i;
if (r !== 0) {
var carry = 0;
for (i = 0; i < this.length; i++) {
var newCarry = this.words[i] & carryMask;
var c = ((this.words[i] | 0) - newCarry) << r;
this.words[i] = c | carry;
carry = newCarry >>> (26 - r);
}
if (carry) {
this.words[i] = carry;
this.length++;
}
}
if (s !== 0) {
for (i = this.length - 1; i >= 0; i--) {
this.words[i + s] = this.words[i];
}
for (i = 0; i < s; i++) {
this.words[i] = 0;
}
this.length += s;
}
return this.strip();
};
BN.prototype.ishln = function ishln (bits) {
// TODO(indutny): implement me
assert(this.negative === 0);
return this.iushln(bits);
};
// Shift-right in-place
// NOTE: `hint` is a lowest bit before trailing zeroes
// NOTE: if `extended` is present - it will be filled with destroyed bits
BN.prototype.iushrn = function iushrn (bits, hint, extended) {
assert(typeof bits === 'number' && bits >= 0);
var h;
if (hint) {
h = (hint - (hint % 26)) / 26;
} else {
h = 0;
}
var r = bits % 26;
var s = Math.min((bits - r) / 26, this.length);
var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
var maskedWords = extended;
h -= s;
h = Math.max(0, h);
// Extended mode, copy masked part
if (maskedWords) {
for (var i = 0; i < s; i++) {
maskedWords.words[i] = this.words[i];
}
maskedWords.length = s;
}
if (s === 0) {
// No-op, we should not move anything at all
} else if (this.length > s) {
this.length -= s;
for (i = 0; i < this.length; i++) {
this.words[i] = this.words[i + s];
}
} else {
this.words[0] = 0;
this.length = 1;
}
var carry = 0;
for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {
var word = this.words[i] | 0;
this.words[i] = (carry << (26 - r)) | (word >>> r);
carry = word & mask;
}
// Push carried bits as a mask
if (maskedWords && carry !== 0) {
maskedWords.words[maskedWords.length++] = carry;
}
if (this.length === 0) {
this.words[0] = 0;
this.length = 1;
}
return this.strip();
};
BN.prototype.ishrn = function ishrn (bits, hint, extended) {
// TODO(indutny): implement me
assert(this.negative === 0);
return this.iushrn(bits, hint, extended);
};
// Shift-left
BN.prototype.shln = function shln (bits) {
return this.clone().ishln(bits);
};
BN.prototype.ushln = function ushln (bits) {
return this.clone().iushln(bits);
};
// Shift-right
BN.prototype.shrn = function shrn (bits) {
return this.clone().ishrn(bits);
};
BN.prototype.ushrn = function ushrn (bits) {
return this.clone().iushrn(bits);
};
// Test if n bit is set
BN.prototype.testn = function testn (bit) {
assert(typeof bit === 'number' && bit >= 0);
var r = bit % 26;
var s = (bit - r) / 26;
var q = 1 << r;
// Fast case: bit is much higher than all existing words
if (this.length <= s) return false;
// Check bit and return
var w = this.words[s];
return !!(w & q);
};
// Return only lowers bits of number (in-place)
BN.prototype.imaskn = function imaskn (bits) {
assert(typeof bits === 'number' && bits >= 0);
var r = bits % 26;
var s = (bits - r) / 26;
assert(this.negative === 0, 'imaskn works only with positive numbers');
if (this.length <= s) {
return this;
}
if (r !== 0) {
s++;
}
this.length = Math.min(s, this.length);
if (r !== 0) {
var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
this.words[this.length - 1] &= mask;
}
return this.strip();
};
// Return only lowers bits of number
BN.prototype.maskn = function maskn (bits) {
return this.clone().imaskn(bits);
};
// Add plain number `num` to `this`
BN.prototype.iaddn = function iaddn (num) {
assert(typeof num === 'number');
assert(num < 0x4000000);
if (num < 0) return this.isubn(-num);
// Possible sign change
if (this.negative !== 0) {
if (this.length === 1 && (this.words[0] | 0) < num) {
this.words[0] = num - (this.words[0] | 0);
this.negative = 0;
return this;
}
this.negative = 0;
this.isubn(num);
this.negative = 1;
return this;
}
// Add without checks
return this._iaddn(num);
};
BN.prototype._iaddn = function _iaddn (num) {
this.words[0] += num;
// Carry
for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {
this.words[i] -= 0x4000000;
if (i === this.length - 1) {
this.words[i + 1] = 1;
} else {
this.words[i + 1]++;
}
}
this.length = Math.max(this.length, i + 1);
return this;
};
// Subtract plain number `num` from `this`
BN.prototype.isubn = function isubn (num) {
assert(typeof num === 'number');
assert(num < 0x4000000);
if (num < 0) return this.iaddn(-num);
if (this.negative !== 0) {
this.negative = 0;
this.iaddn(num);
this.negative = 1;
return this;
}
this.words[0] -= num;
if (this.length === 1 && this.words[0] < 0) {
this.words[0] = -this.words[0];
this.negative = 1;
} else {
// Carry
for (var i = 0; i < this.length && this.words[i] < 0; i++) {
this.words[i] += 0x4000000;
this.words[i + 1] -= 1;
}
}
return this.strip();
};
BN.prototype.addn = function addn (num) {
return this.clone().iaddn(num);
};
BN.prototype.subn = function subn (num) {
return this.clone().isubn(num);
};
BN.prototype.iabs = function iabs () {
this.negative = 0;
return this;
};
BN.prototype.abs = function abs () {
return this.clone().iabs();
};
BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {
var len = num.length + shift;
var i;
this._expand(len);
var w;
var carry = 0;
for (i = 0; i < num.length; i++) {
w = (this.words[i + shift] | 0) + carry;
var right = (num.words[i] | 0) * mul;
w -= right & 0x3ffffff;
carry = (w >> 26) - ((right / 0x4000000) | 0);
this.words[i + shift] = w & 0x3ffffff;
}
for (; i < this.length - shift; i++) {
w = (this.words[i + shift] | 0) + carry;
carry = w >> 26;
this.words[i + shift] = w & 0x3ffffff;
}
if (carry === 0) return this.strip();
// Subtraction overflow
assert(carry === -1);
carry = 0;
for (i = 0; i < this.length; i++) {
w = -(this.words[i] | 0) + carry;
carry = w >> 26;
this.words[i] = w & 0x3ffffff;
}
this.negative = 1;
return this.strip();
};
BN.prototype._wordDiv = function _wordDiv (num, mode) {
var shift = this.length - num.length;
var a = this.clone();
var b = num;
// Normalize
var bhi = b.words[b.length - 1] | 0;
var bhiBits = this._countBits(bhi);
shift = 26 - bhiBits;
if (shift !== 0) {
b = b.ushln(shift);
a.iushln(shift);
bhi = b.words[b.length - 1] | 0;
}
// Initialize quotient
var m = a.length - b.length;
var q;
if (mode !== 'mod') {
q = new BN(null);
q.length = m + 1;
q.words = new Array(q.length);
for (var i = 0; i < q.length; i++) {
q.words[i] = 0;
}
}
var diff = a.clone()._ishlnsubmul(b, 1, m);
if (diff.negative === 0) {
a = diff;
if (q) {
q.words[m] = 1;
}
}
for (var j = m - 1; j >= 0; j--) {
var qj = (a.words[b.length + j] | 0) * 0x4000000 +
(a.words[b.length + j - 1] | 0);
// NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max
// (0x7ffffff)
qj = Math.min((qj / bhi) | 0, 0x3ffffff);
a._ishlnsubmul(b, qj, j);
while (a.negative !== 0) {
qj--;
a.negative = 0;
a._ishlnsubmul(b, 1, j);
if (!a.isZero()) {
a.negative ^= 1;
}
}
if (q) {
q.words[j] = qj;
}
}
if (q) {
q.strip();
}
a.strip();
// Denormalize
if (mode !== 'div' && shift !== 0) {
a.iushrn(shift);
}
return {
div: q || null,
mod: a
};
};
// NOTE: 1) `mode` can be set to `mod` to request mod only,
// to `div` to request div only, or be absent to
// request both div & mod
// 2) `positive` is true if unsigned mod is requested
BN.prototype.divmod = function divmod (num, mode, positive) {
assert(!num.isZero());
if (this.isZero()) {
return {
div: new BN(0),
mod: new BN(0)
};
}
var div, mod, res;
if (this.negative !== 0 && num.negative === 0) {
res = this.neg().divmod(num, mode);
if (mode !== 'mod') {
div = res.div.neg();
}
if (mode !== 'div') {
mod = res.mod.neg();
if (positive && mod.negative !== 0) {
mod.iadd(num);
}
}
return {
div: div,
mod: mod
};
}
if (this.negative === 0 && num.negative !== 0) {
res = this.divmod(num.neg(), mode);
if (mode !== 'mod') {
div = res.div.neg();
}
return {
div: div,
mod: res.mod
};
}
if ((this.negative & num.negative) !== 0) {
res = this.neg().divmod(num.neg(), mode);
if (mode !== 'div') {
mod = res.mod.neg();
if (positive && mod.negative !== 0) {
mod.isub(num);
}
}
return {
div: res.div,
mod: mod
};
}
// Both numbers are positive at this point
// Strip both numbers to approximate shift value
if (num.length > this.length || this.cmp(num) < 0) {
return {
div: new BN(0),
mod: this
};
}
// Very short reduction
if (num.length === 1) {
if (mode === 'div') {
return {
div: this.divn(num.words[0]),
mod: null
};
}
if (mode === 'mod') {
return {
div: null,
mod: new BN(this.modn(num.words[0]))
};
}
return {
div: this.divn(num.words[0]),
mod: new BN(this.modn(num.words[0]))
};
}
return this._wordDiv(num, mode);
};
// Find `this` / `num`
BN.prototype.div = function div (num) {
return this.divmod(num, 'div', false).div;
};
// Find `this` % `num`
BN.prototype.mod = function mod (num) {
return this.divmod(num, 'mod', false).mod;
};
BN.prototype.umod = function umod (num) {
return this.divmod(num, 'mod', true).mod;
};
// Find Round(`this` / `num`)
BN.prototype.divRound = function divRound (num) {
var dm = this.divmod(num);
// Fast case - exact division
if (dm.mod.isZero()) return dm.div;
var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;
var half = num.ushrn(1);
var r2 = num.andln(1);
var cmp = mod.cmp(half);
// Round down
if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;
// Round up
return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);
};
BN.prototype.modn = function modn (num) {
assert(num <= 0x3ffffff);
var p = (1 << 26) % num;
var acc = 0;
for (var i = this.length - 1; i >= 0; i--) {
acc = (p * acc + (this.words[i] | 0)) % num;
}
return acc;
};
// In-place division by number
BN.prototype.idivn = function idivn (num) {
assert(num <= 0x3ffffff);
var carry = 0;
for (var i = this.length - 1; i >= 0; i--) {
var w = (this.words[i] | 0) + carry * 0x4000000;
this.words[i] = (w / num) | 0;
carry = w % num;
}
return this.strip();
};
BN.prototype.divn = function divn (num) {
return this.clone().idivn(num);
};
BN.prototype.egcd = function egcd (p) {
assert(p.negative === 0);
assert(!p.isZero());
var x = this;
var y = p.clone();
if (x.negative !== 0) {
x = x.umod(p);
} else {
x = x.clone();
}
// A * x + B * y = x
var A = new BN(1);
var B = new BN(0);
// C * x + D * y = y
var C = new BN(0);
var D = new BN(1);
var g = 0;
while (x.isEven() && y.isEven()) {
x.iushrn(1);
y.iushrn(1);
++g;
}
var yp = y.clone();
var xp = x.clone();
while (!x.isZero()) {
for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
if (i > 0) {
x.iushrn(i);
while (i-- > 0) {
if (A.isOdd() || B.isOdd()) {
A.iadd(yp);
B.isub(xp);
}
A.iushrn(1);
B.iushrn(1);
}
}
for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
if (j > 0) {
y.iushrn(j);
while (j-- > 0) {
if (C.isOdd() || D.isOdd()) {
C.iadd(yp);
D.isub(xp);
}
C.iushrn(1);
D.iushrn(1);
}
}
if (x.cmp(y) >= 0) {
x.isub(y);
A.isub(C);
B.isub(D);
} else {
y.isub(x);
C.isub(A);
D.isub(B);
}
}
return {
a: C,
b: D,
gcd: y.iushln(g)
};
};
// This is reduced incarnation of the binary EEA
// above, designated to invert members of the
// _prime_ fields F(p) at a maximal speed
BN.prototype._invmp = function _invmp (p) {
assert(p.negative === 0);
assert(!p.isZero());
var a = this;
var b = p.clone();
if (a.negative !== 0) {
a = a.umod(p);
} else {
a = a.clone();
}
var x1 = new BN(1);
var x2 = new BN(0);
var delta = b.clone();
while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {
for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
if (i > 0) {
a.iushrn(i);
while (i-- > 0) {
if (x1.isOdd()) {
x1.iadd(delta);
}
x1.iushrn(1);
}
}
for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
if (j > 0) {
b.iushrn(j);
while (j-- > 0) {
if (x2.isOdd()) {
x2.iadd(delta);
}
x2.iushrn(1);
}
}
if (a.cmp(b) >= 0) {
a.isub(b);
x1.isub(x2);
} else {
b.isub(a);
x2.isub(x1);
}
}
var res;
if (a.cmpn(1) === 0) {
res = x1;
} else {
res = x2;
}
if (res.cmpn(0) < 0) {
res.iadd(p);
}
return res;
};
BN.prototype.gcd = function gcd (num) {
if (this.isZero()) return num.abs();
if (num.isZero()) return this.abs();
var a = this.clone();
var b = num.clone();
a.negative = 0;
b.negative = 0;
// Remove common factor of two
for (var shift = 0; a.isEven() && b.isEven(); shift++) {
a.iushrn(1);
b.iushrn(1);
}
do {
while (a.isEven()) {
a.iushrn(1);
}
while (b.isEven()) {
b.iushrn(1);
}
var r = a.cmp(b);
if (r < 0) {
// Swap `a` and `b` to make `a` always bigger than `b`
var t = a;
a = b;
b = t;
} else if (r === 0 || b.cmpn(1) === 0) {
break;
}
a.isub(b);
} while (true);
return b.iushln(shift);
};
// Invert number in the field F(num)
BN.prototype.invm = function invm (num) {
return this.egcd(num).a.umod(num);
};
BN.prototype.isEven = function isEven () {
return (this.words[0] & 1) === 0;
};
BN.prototype.isOdd = function isOdd () {
return (this.words[0] & 1) === 1;
};
// And first word and num
BN.prototype.andln = function andln (num) {
return this.words[0] & num;
};
// Increment at the bit position in-line
BN.prototype.bincn = function bincn (bit) {
assert(typeof bit === 'number');
var r = bit % 26;
var s = (bit - r) / 26;
var q = 1 << r;
// Fast case: bit is much higher than all existing words
if (this.length <= s) {
this._expand(s + 1);
this.words[s] |= q;
return this;
}
// Add bit and propagate, if needed
var carry = q;
for (var i = s; carry !== 0 && i < this.length; i++) {
var w = this.words[i] | 0;
w += carry;
carry = w >>> 26;
w &= 0x3ffffff;
this.words[i] = w;
}
if (carry !== 0) {
this.words[i] = carry;
this.length++;
}
return this;
};
BN.prototype.isZero = function isZero () {
return this.length === 1 && this.words[0] === 0;
};
BN.prototype.cmpn = function cmpn (num) {
var negative = num < 0;
if (this.negative !== 0 && !negative) return -1;
if (this.negative === 0 && negative) return 1;
this.strip();
var res;
if (this.length > 1) {
res = 1;
} else {
if (negative) {
num = -num;
}
assert(num <= 0x3ffffff, 'Number is too big');
var w = this.words[0] | 0;
res = w === num ? 0 : w < num ? -1 : 1;
}
if (this.negative !== 0) return -res | 0;
return res;
};
// Compare two numbers and return:
// 1 - if `this` > `num`
// 0 - if `this` == `num`
// -1 - if `this` < `num`
BN.prototype.cmp = function cmp (num) {
if (this.negative !== 0 && num.negative === 0) return -1;
if (this.negative === 0 && num.negative !== 0) return 1;
var res = this.ucmp(num);
if (this.negative !== 0) return -res | 0;
return res;
};
// Unsigned comparison
BN.prototype.ucmp = function ucmp (num) {
// At this point both numbers have the same sign
if (this.length > num.length) return 1;
if (this.length < num.length) return -1;
var res = 0;
for (var i = this.length - 1; i >= 0; i--) {
var a = this.words[i] | 0;
var b = num.words[i] | 0;
if (a === b) continue;
if (a < b) {
res = -1;
} else if (a > b) {
res = 1;
}
break;
}
return res;
};
BN.prototype.gtn = function gtn (num) {
return this.cmpn(num) === 1;
};
BN.prototype.gt = function gt (num) {
return this.cmp(num) === 1;
};
BN.prototype.gten = function gten (num) {
return this.cmpn(num) >= 0;
};
BN.prototype.gte = function gte (num) {
return this.cmp(num) >= 0;
};
BN.prototype.ltn = function ltn (num) {
return this.cmpn(num) === -1;
};
BN.prototype.lt = function lt (num) {
return this.cmp(num) === -1;
};
BN.prototype.lten = function lten (num) {
return this.cmpn(num) <= 0;
};
BN.prototype.lte = function lte (num) {
return this.cmp(num) <= 0;
};
BN.prototype.eqn = function eqn (num) {
return this.cmpn(num) === 0;
};
BN.prototype.eq = function eq (num) {
return this.cmp(num) === 0;
};
//
// A reduce context, could be using montgomery or something better, depending
// on the `m` itself.
//
BN.red = function red (num) {
return new Red(num);
};
BN.prototype.toRed = function toRed (ctx) {
assert(!this.red, 'Already a number in reduction context');
assert(this.negative === 0, 'red works only with positives');
return ctx.convertTo(this)._forceRed(ctx);
};
BN.prototype.fromRed = function fromRed () {
assert(this.red, 'fromRed works only with numbers in reduction context');
return this.red.convertFrom(this);
};
BN.prototype._forceRed = function _forceRed (ctx) {
this.red = ctx;
return this;
};
BN.prototype.forceRed = function forceRed (ctx) {
assert(!this.red, 'Already a number in reduction context');
return this._forceRed(ctx);
};
BN.prototype.redAdd = function redAdd (num) {
assert(this.red, 'redAdd works only with red numbers');
return this.red.add(this, num);
};
BN.prototype.redIAdd = function redIAdd (num) {
assert(this.red, 'redIAdd works only with red numbers');
return this.red.iadd(this, num);
};
BN.prototype.redSub = function redSub (num) {
assert(this.red, 'redSub works only with red numbers');
return this.red.sub(this, num);
};
BN.prototype.redISub = function redISub (num) {
assert(this.red, 'redISub works only with red numbers');
return this.red.isub(this, num);
};
BN.prototype.redShl = function redShl (num) {
assert(this.red, 'redShl works only with red numbers');
return this.red.shl(this, num);
};
BN.prototype.redMul = function redMul (num) {
assert(this.red, 'redMul works only with red numbers');
this.red._verify2(this, num);
return this.red.mul(this, num);
};
BN.prototype.redIMul = function redIMul (num) {
assert(this.red, 'redMul works only with red numbers');
this.red._verify2(this, num);
return this.red.imul(this, num);
};
BN.prototype.redSqr = function redSqr () {
assert(this.red, 'redSqr works only with red numbers');
this.red._verify1(this);
return this.red.sqr(this);
};
BN.prototype.redISqr = function redISqr () {
assert(this.red, 'redISqr works only with red numbers');
this.red._verify1(this);
return this.red.isqr(this);
};
// Square root over p
BN.prototype.redSqrt = function redSqrt () {
assert(this.red, 'redSqrt works only with red numbers');
this.red._verify1(this);
return this.red.sqrt(this);
};
BN.prototype.redInvm = function redInvm () {
assert(this.red, 'redInvm works only with red numbers');
this.red._verify1(this);
return this.red.invm(this);
};
// Return negative clone of `this` % `red modulo`
BN.prototype.redNeg = function redNeg () {
assert(this.red, 'redNeg works only with red numbers');
this.red._verify1(this);
return this.red.neg(this);
};
BN.prototype.redPow = function redPow (num) {
assert(this.red && !num.red, 'redPow(normalNum)');
this.red._verify1(this);
return this.red.pow(this, num);
};
// Prime numbers with efficient reduction
var primes = {
k256: null,
p224: null,
p192: null,
p25519: null
};
// Pseudo-Mersenne prime
function MPrime (name, p) {
// P = 2 ^ N - K
this.name = name;
this.p = new BN(p, 16);
this.n = this.p.bitLength();
this.k = new BN(1).iushln(this.n).isub(this.p);
this.tmp = this._tmp();
}
MPrime.prototype._tmp = function _tmp () {
var tmp = new BN(null);
tmp.words = new Array(Math.ceil(this.n / 13));
return tmp;
};
MPrime.prototype.ireduce = function ireduce (num) {
// Assumes that `num` is less than `P^2`
// num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)
var r = num;
var rlen;
do {
this.split(r, this.tmp);
r = this.imulK(r);
r = r.iadd(this.tmp);
rlen = r.bitLength();
} while (rlen > this.n);
var cmp = rlen < this.n ? -1 : r.ucmp(this.p);
if (cmp === 0) {
r.words[0] = 0;
r.length = 1;
} else if (cmp > 0) {
r.isub(this.p);
} else {
if (r.strip !== undefined) {
// r is BN v4 instance
r.strip();
} else {
// r is BN v5 instance
r._strip();
}
}
return r;
};
MPrime.prototype.split = function split (input, out) {
input.iushrn(this.n, 0, out);
};
MPrime.prototype.imulK = function imulK (num) {
return num.imul(this.k);
};
function K256 () {
MPrime.call(
this,
'k256',
'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');
}
inherits(K256, MPrime);
K256.prototype.split = function split (input, output) {
// 256 = 9 * 26 + 22
var mask = 0x3fffff;
var outLen = Math.min(input.length, 9);
for (var i = 0; i < outLen; i++) {
output.words[i] = input.words[i];
}
output.length = outLen;
if (input.length <= 9) {
input.words[0] = 0;
input.length = 1;
return;
}
// Shift by 9 limbs
var prev = input.words[9];
output.words[output.length++] = prev & mask;
for (i = 10; i < input.length; i++) {
var next = input.words[i] | 0;
input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);
prev = next;
}
prev >>>= 22;
input.words[i - 10] = prev;
if (prev === 0 && input.length > 10) {
input.length -= 10;
} else {
input.length -= 9;
}
};
K256.prototype.imulK = function imulK (num) {
// K = 0x1000003d1 = [ 0x40, 0x3d1 ]
num.words[num.length] = 0;
num.words[num.length + 1] = 0;
num.length += 2;
// bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390
var lo = 0;
for (var i = 0; i < num.length; i++) {
var w = num.words[i] | 0;
lo += w * 0x3d1;
num.words[i] = lo & 0x3ffffff;
lo = w * 0x40 + ((lo / 0x4000000) | 0);
}
// Fast length reduction
if (num.words[num.length - 1] === 0) {
num.length--;
if (num.words[num.length - 1] === 0) {
num.length--;
}
}
return num;
};
function P224 () {
MPrime.call(
this,
'p224',
'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');
}
inherits(P224, MPrime);
function P192 () {
MPrime.call(
this,
'p192',
'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');
}
inherits(P192, MPrime);
function P25519 () {
// 2 ^ 255 - 19
MPrime.call(
this,
'25519',
'7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');
}
inherits(P25519, MPrime);
P25519.prototype.imulK = function imulK (num) {
// K = 0x13
var carry = 0;
for (var i = 0; i < num.length; i++) {
var hi = (num.words[i] | 0) * 0x13 + carry;
var lo = hi & 0x3ffffff;
hi >>>= 26;
num.words[i] = lo;
carry = hi;
}
if (carry !== 0) {
num.words[num.length++] = carry;
}
return num;
};
// Exported mostly for testing purposes, use plain name instead
BN._prime = function prime (name) {
// Cached version of prime
if (primes[name]) return primes[name];
var prime;
if (name === 'k256') {
prime = new K256();
} else if (name === 'p224') {
prime = new P224();
} else if (name === 'p192') {
prime = new P192();
} else if (name === 'p25519') {
prime = new P25519();
} else {
throw new Error('Unknown prime ' + name);
}
primes[name] = prime;
return prime;
};
//
// Base reduction engine
//
function Red (m) {
if (typeof m === 'string') {
var prime = BN._prime(m);
this.m = prime.p;
this.prime = prime;
} else {
assert(m.gtn(1), 'modulus must be greater than 1');
this.m = m;
this.prime = null;
}
}
Red.prototype._verify1 = function _verify1 (a) {
assert(a.negative === 0, 'red works only with positives');
assert(a.red, 'red works only with red numbers');
};
Red.prototype._verify2 = function _verify2 (a, b) {
assert((a.negative | b.negative) === 0, 'red works only with positives');
assert(a.red && a.red === b.red,
'red works only with red numbers');
};
Red.prototype.imod = function imod (a) {
if (this.prime) return this.prime.ireduce(a)._forceRed(this);
return a.umod(this.m)._forceRed(this);
};
Red.prototype.neg = function neg (a) {
if (a.isZero()) {
return a.clone();
}
return this.m.sub(a)._forceRed(this);
};
Red.prototype.add = function add (a, b) {
this._verify2(a, b);
var res = a.add(b);
if (res.cmp(this.m) >= 0) {
res.isub(this.m);
}
return res._forceRed(this);
};
Red.prototype.iadd = function iadd (a, b) {
this._verify2(a, b);
var res = a.iadd(b);
if (res.cmp(this.m) >= 0) {
res.isub(this.m);
}
return res;
};
Red.prototype.sub = function sub (a, b) {
this._verify2(a, b);
var res = a.sub(b);
if (res.cmpn(0) < 0) {
res.iadd(this.m);
}
return res._forceRed(this);
};
Red.prototype.isub = function isub (a, b) {
this._verify2(a, b);
var res = a.isub(b);
if (res.cmpn(0) < 0) {
res.iadd(this.m);
}
return res;
};
Red.prototype.shl = function shl (a, num) {
this._verify1(a);
return this.imod(a.ushln(num));
};
Red.prototype.imul = function imul (a, b) {
this._verify2(a, b);
return this.imod(a.imul(b));
};
Red.prototype.mul = function mul (a, b) {
this._verify2(a, b);
return this.imod(a.mul(b));
};
Red.prototype.isqr = function isqr (a) {
return this.imul(a, a.clone());
};
Red.prototype.sqr = function sqr (a) {
return this.mul(a, a);
};
Red.prototype.sqrt = function sqrt (a) {
if (a.isZero()) return a.clone();
var mod3 = this.m.andln(3);
assert(mod3 % 2 === 1);
// Fast case
if (mod3 === 3) {
var pow = this.m.add(new BN(1)).iushrn(2);
return this.pow(a, pow);
}
// Tonelli-Shanks algorithm (Totally unoptimized and slow)
//
// Find Q and S, that Q * 2 ^ S = (P - 1)
var q = this.m.subn(1);
var s = 0;
while (!q.isZero() && q.andln(1) === 0) {
s++;
q.iushrn(1);
}
assert(!q.isZero());
var one = new BN(1).toRed(this);
var nOne = one.redNeg();
// Find quadratic non-residue
// NOTE: Max is such because of generalized Riemann hypothesis.
var lpow = this.m.subn(1).iushrn(1);
var z = this.m.bitLength();
z = new BN(2 * z * z).toRed(this);
while (this.pow(z, lpow).cmp(nOne) !== 0) {
z.redIAdd(nOne);
}
var c = this.pow(z, q);
var r = this.pow(a, q.addn(1).iushrn(1));
var t = this.pow(a, q);
var m = s;
while (t.cmp(one) !== 0) {
var tmp = t;
for (var i = 0; tmp.cmp(one) !== 0; i++) {
tmp = tmp.redSqr();
}
assert(i < m);
var b = this.pow(c, new BN(1).iushln(m - i - 1));
r = r.redMul(b);
c = b.redSqr();
t = t.redMul(c);
m = i;
}
return r;
};
Red.prototype.invm = function invm (a) {
var inv = a._invmp(this.m);
if (inv.negative !== 0) {
inv.negative = 0;
return this.imod(inv).redNeg();
} else {
return this.imod(inv);
}
};
Red.prototype.pow = function pow (a, num) {
if (num.isZero()) return new BN(1).toRed(this);
if (num.cmpn(1) === 0) return a.clone();
var windowSize = 4;
var wnd = new Array(1 << windowSize);
wnd[0] = new BN(1).toRed(this);
wnd[1] = a;
for (var i = 2; i < wnd.length; i++) {
wnd[i] = this.mul(wnd[i - 1], a);
}
var res = wnd[0];
var current = 0;
var currentLen = 0;
var start = num.bitLength() % 26;
if (start === 0) {
start = 26;
}
for (i = num.length - 1; i >= 0; i--) {
var word = num.words[i];
for (var j = start - 1; j >= 0; j--) {
var bit = (word >> j) & 1;
if (res !== wnd[0]) {
res = this.sqr(res);
}
if (bit === 0 && current === 0) {
currentLen = 0;
continue;
}
current <<= 1;
current |= bit;
currentLen++;
if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;
res = this.mul(res, wnd[current]);
currentLen = 0;
current = 0;
}
start = 26;
}
return res;
};
Red.prototype.convertTo = function convertTo (num) {
var r = num.umod(this.m);
return r === num ? r.clone() : r;
};
Red.prototype.convertFrom = function convertFrom (num) {
var res = num.clone();
res.red = null;
return res;
};
//
// Montgomery method engine
//
BN.mont = function mont (num) {
return new Mont(num);
};
function Mont (m) {
Red.call(this, m);
this.shift = this.m.bitLength();
if (this.shift % 26 !== 0) {
this.shift += 26 - (this.shift % 26);
}
this.r = new BN(1).iushln(this.shift);
this.r2 = this.imod(this.r.sqr());
this.rinv = this.r._invmp(this.m);
this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);
this.minv = this.minv.umod(this.r);
this.minv = this.r.sub(this.minv);
}
inherits(Mont, Red);
Mont.prototype.convertTo = function convertTo (num) {
return this.imod(num.ushln(this.shift));
};
Mont.prototype.convertFrom = function convertFrom (num) {
var r = this.imod(num.mul(this.rinv));
r.red = null;
return r;
};
Mont.prototype.imul = function imul (a, b) {
if (a.isZero() || b.isZero()) {
a.words[0] = 0;
a.length = 1;
return a;
}
var t = a.imul(b);
var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
var u = t.isub(c).iushrn(this.shift);
var res = u;
if (u.cmp(this.m) >= 0) {
res = u.isub(this.m);
} else if (u.cmpn(0) < 0) {
res = u.iadd(this.m);
}
return res._forceRed(this);
};
Mont.prototype.mul = function mul (a, b) {
if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);
var t = a.mul(b);
var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
var u = t.isub(c).iushrn(this.shift);
var res = u;
if (u.cmp(this.m) >= 0) {
res = u.isub(this.m);
} else if (u.cmpn(0) < 0) {
res = u.iadd(this.m);
}
return res._forceRed(this);
};
Mont.prototype.invm = function invm (a) {
// (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R
var res = this.imod(a._invmp(this.m).mul(this.r2));
return res._forceRed(this);
};
})( false || module, this);
/***/ }),
/***/ 655:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var GetIntrinsic = __webpack_require__(453);
/** @type {import('.')} */
var $defineProperty = GetIntrinsic('%Object.defineProperty%', true) || false;
if ($defineProperty) {
try {
$defineProperty({}, 'a', { value: 1 });
} catch (e) {
// IE 8 has a broken defineProperty
$defineProperty = false;
}
}
module.exports = $defineProperty;
/***/ }),
/***/ 1237:
/***/ ((module) => {
"use strict";
/** @type {import('./eval')} */
module.exports = EvalError;
/***/ }),
/***/ 9383:
/***/ ((module) => {
"use strict";
/** @type {import('.')} */
module.exports = Error;
/***/ }),
/***/ 9290:
/***/ ((module) => {
"use strict";
/** @type {import('./range')} */
module.exports = RangeError;
/***/ }),
/***/ 9538:
/***/ ((module) => {
"use strict";
/** @type {import('./ref')} */
module.exports = ReferenceError;
/***/ }),
/***/ 8068:
/***/ ((module) => {
"use strict";
/** @type {import('./syntax')} */
module.exports = SyntaxError;
/***/ }),
/***/ 9675:
/***/ ((module) => {
"use strict";
/** @type {import('./type')} */
module.exports = TypeError;
/***/ }),
/***/ 5345:
/***/ ((module) => {
"use strict";
/** @type {import('./uri')} */
module.exports = URIError;
/***/ }),
/***/ 7007:
/***/ ((module) => {
"use strict";
// Copyright Joyent, Inc. and other Node contributors.
//
// 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.
var R = typeof Reflect === 'object' ? Reflect : null
var ReflectApply = R && typeof R.apply === 'function'
? R.apply
: function ReflectApply(target, receiver, args) {
return Function.prototype.apply.call(target, receiver, args);
}
var ReflectOwnKeys
if (R && typeof R.ownKeys === 'function') {
ReflectOwnKeys = R.ownKeys
} else if (Object.getOwnPropertySymbols) {
ReflectOwnKeys = function ReflectOwnKeys(target) {
return Object.getOwnPropertyNames(target)
.concat(Object.getOwnPropertySymbols(target));
};
} else {
ReflectOwnKeys = function ReflectOwnKeys(target) {
return Object.getOwnPropertyNames(target);
};
}
function ProcessEmitWarning(warning) {
if (console && console.warn) console.warn(warning);
}
var NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {
return value !== value;
}
function EventEmitter() {
EventEmitter.init.call(this);
}
module.exports = EventEmitter;
module.exports.once = once;
// Backwards-compat with node 0.10.x
EventEmitter.EventEmitter = EventEmitter;
EventEmitter.prototype._events = undefined;
EventEmitter.prototype._eventsCount = 0;
EventEmitter.prototype._maxListeners = undefined;
// By default EventEmitters will print a warning if more than 10 listeners are
// added to it. This is a useful default which helps finding memory leaks.
var defaultMaxListeners = 10;
function checkListener(listener) {
if (typeof listener !== 'function') {
throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener);
}
}
Object.defineProperty(EventEmitter, 'defaultMaxListeners', {
enumerable: true,
get: function() {
return defaultMaxListeners;
},
set: function(arg) {
if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {
throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + '.');
}
defaultMaxListeners = arg;
}
});
EventEmitter.init = function() {
if (this._events === undefined ||
this._events === Object.getPrototypeOf(this)._events) {
this._events = Object.create(null);
this._eventsCount = 0;
}
this._maxListeners = this._maxListeners || undefined;
};
// Obviously not all Emitters should be limited to 10. This function allows
// that to be increased. Set to zero for unlimited.
EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {
if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {
throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + '.');
}
this._maxListeners = n;
return this;
};
function _getMaxListeners(that) {
if (that._maxListeners === undefined)
return EventEmitter.defaultMaxListeners;
return that._maxListeners;
}
EventEmitter.prototype.getMaxListeners = function getMaxListeners() {
return _getMaxListeners(this);
};
EventEmitter.prototype.emit = function emit(type) {
var args = [];
for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);
var doError = (type === 'error');
var events = this._events;
if (events !== undefined)
doError = (doError && events.error === undefined);
else if (!doError)
return false;
// If there is no 'error' event listener then throw.
if (doError) {
var er;
if (args.length > 0)
er = args[0];
if (er instanceof Error) {
// Note: The comments on the `throw` lines are intentional, they show
// up in Node's output if this results in an unhandled exception.
throw er; // Unhandled 'error' event
}
// At least give some kind of context to the user
var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));
err.context = er;
throw err; // Unhandled 'error' event
}
var handler = events[type];
if (handler === undefined)
return false;
if (typeof handler === 'function') {
ReflectApply(handler, this, args);
} else {
var len = handler.length;
var listeners = arrayClone(handler, len);
for (var i = 0; i < len; ++i)
ReflectApply(listeners[i], this, args);
}
return true;
};
function _addListener(target, type, listener, prepend) {
var m;
var events;
var existing;
checkListener(listener);
events = target._events;
if (events === undefined) {
events = target._events = Object.create(null);
target._eventsCount = 0;
} else {
// To avoid recursion in the case that type === "newListener"! Before
// adding it to the listeners, first emit "newListener".
if (events.newListener !== undefined) {
target.emit('newListener', type,
listener.listener ? listener.listener : listener);
// Re-assign `events` because a newListener handler could have caused the
// this._events to be assigned to a new object
events = target._events;
}
existing = events[type];
}
if (existing === undefined) {
// Optimize the case of one listener. Don't need the extra array object.
existing = events[type] = listener;
++target._eventsCount;
} else {
if (typeof existing === 'function') {
// Adding the second element, need to change to array.
existing = events[type] =
prepend ? [listener, existing] : [existing, listener];
// If we've already got an array, just append.
} else if (prepend) {
existing.unshift(listener);
} else {
existing.push(listener);
}
// Check for listener leak
m = _getMaxListeners(target);
if (m > 0 && existing.length > m && !existing.warned) {
existing.warned = true;
// No error code for this since it is a Warning
// eslint-disable-next-line no-restricted-syntax
var w = new Error('Possible EventEmitter memory leak detected. ' +
existing.length + ' ' + String(type) + ' listeners ' +
'added. Use emitter.setMaxListeners() to ' +
'increase limit');
w.name = 'MaxListenersExceededWarning';
w.emitter = target;
w.type = type;
w.count = existing.length;
ProcessEmitWarning(w);
}
}
return target;
}
EventEmitter.prototype.addListener = function addListener(type, listener) {
return _addListener(this, type, listener, false);
};
EventEmitter.prototype.on = EventEmitter.prototype.addListener;
EventEmitter.prototype.prependListener =
function prependListener(type, listener) {
return _addListener(this, type, listener, true);
};
function onceWrapper() {
if (!this.fired) {
this.target.removeListener(this.type, this.wrapFn);
this.fired = true;
if (arguments.length === 0)
return this.listener.call(this.target);
return this.listener.apply(this.target, arguments);
}
}
function _onceWrap(target, type, listener) {
var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };
var wrapped = onceWrapper.bind(state);
wrapped.listener = listener;
state.wrapFn = wrapped;
return wrapped;
}
EventEmitter.prototype.once = function once(type, listener) {
checkListener(listener);
this.on(type, _onceWrap(this, type, listener));
return this;
};
EventEmitter.prototype.prependOnceListener =
function prependOnceListener(type, listener) {
checkListener(listener);
this.prependListener(type, _onceWrap(this, type, listener));
return this;
};
// Emits a 'removeListener' event if and only if the listener was removed.
EventEmitter.prototype.removeListener =
function removeListener(type, listener) {
var list, events, position, i, originalListener;
checkListener(listener);
events = this._events;
if (events === undefined)
return this;
list = events[type];
if (list === undefined)
return this;
if (list === listener || list.listener === listener) {
if (--this._eventsCount === 0)
this._events = Object.create(null);
else {
delete events[type];
if (events.removeListener)
this.emit('removeListener', type, list.listener || listener);
}
} else if (typeof list !== 'function') {
position = -1;
for (i = list.length - 1; i >= 0; i--) {
if (list[i] === listener || list[i].listener === listener) {
originalListener = list[i].listener;
position = i;
break;
}
}
if (position < 0)
return this;
if (position === 0)
list.shift();
else {
spliceOne(list, position);
}
if (list.length === 1)
events[type] = list[0];
if (events.removeListener !== undefined)
this.emit('removeListener', type, originalListener || listener);
}
return this;
};
EventEmitter.prototype.off = EventEmitter.prototype.removeListener;
EventEmitter.prototype.removeAllListeners =
function removeAllListeners(type) {
var listeners, events, i;
events = this._events;
if (events === undefined)
return this;
// not listening for removeListener, no need to emit
if (events.removeListener === undefined) {
if (arguments.length === 0) {
this._events = Object.create(null);
this._eventsCount = 0;
} else if (events[type] !== undefined) {
if (--this._eventsCount === 0)
this._events = Object.create(null);
else
delete events[type];
}
return this;
}
// emit removeListener for all listeners on all events
if (arguments.length === 0) {
var keys = Object.keys(events);
var key;
for (i = 0; i < keys.length; ++i) {
key = keys[i];
if (key === 'removeListener') continue;
this.removeAllListeners(key);
}
this.removeAllListeners('removeListener');
this._events = Object.create(null);
this._eventsCount = 0;
return this;
}
listeners = events[type];
if (typeof listeners === 'function') {
this.removeListener(type, listeners);
} else if (listeners !== undefined) {
// LIFO order
for (i = listeners.length - 1; i >= 0; i--) {
this.removeListener(type, listeners[i]);
}
}
return this;
};
function _listeners(target, type, unwrap) {
var events = target._events;
if (events === undefined)
return [];
var evlistener = events[type];
if (evlistener === undefined)
return [];
if (typeof evlistener === 'function')
return unwrap ? [evlistener.listener || evlistener] : [evlistener];
return unwrap ?
unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);
}
EventEmitter.prototype.listeners = function listeners(type) {
return _listeners(this, type, true);
};
EventEmitter.prototype.rawListeners = function rawListeners(type) {
return _listeners(this, type, false);
};
EventEmitter.listenerCount = function(emitter, type) {
if (typeof emitter.listenerCount === 'function') {
return emitter.listenerCount(type);
} else {
return listenerCount.call(emitter, type);
}
};
EventEmitter.prototype.listenerCount = listenerCount;
function listenerCount(type) {
var events = this._events;
if (events !== undefined) {
var evlistener = events[type];
if (typeof evlistener === 'function') {
return 1;
} else if (evlistener !== undefined) {
return evlistener.length;
}
}
return 0;
}
EventEmitter.prototype.eventNames = function eventNames() {
return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];
};
function arrayClone(arr, n) {
var copy = new Array(n);
for (var i = 0; i < n; ++i)
copy[i] = arr[i];
return copy;
}
function spliceOne(list, index) {
for (; index + 1 < list.length; index++)
list[index] = list[index + 1];
list.pop();
}
function unwrapListeners(arr) {
var ret = new Array(arr.length);
for (var i = 0; i < ret.length; ++i) {
ret[i] = arr[i].listener || arr[i];
}
return ret;
}
function once(emitter, name) {
return new Promise(function (resolve, reject) {
function errorListener(err) {
emitter.removeListener(name, resolver);
reject(err);
}
function resolver() {
if (typeof emitter.removeListener === 'function') {
emitter.removeListener('error', errorListener);
}
resolve([].slice.call(arguments));
};
eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });
if (name !== 'error') {
addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });
}
});
}
function addErrorHandlerIfEventEmitter(emitter, handler, flags) {
if (typeof emitter.on === 'function') {
eventTargetAgnosticAddListener(emitter, 'error', handler, flags);
}
}
function eventTargetAgnosticAddListener(emitter, name, listener, flags) {
if (typeof emitter.on === 'function') {
if (flags.once) {
emitter.once(name, listener);
} else {
emitter.on(name, listener);
}
} else if (typeof emitter.addEventListener === 'function') {
// EventTarget does not have `error` event semantics like Node
// EventEmitters, we do not listen for `error` events here.
emitter.addEventListener(name, function wrapListener(arg) {
// IE does not have builtin `{ once: true }` support so we
// have to do it manually.
if (flags.once) {
emitter.removeEventListener(name, wrapListener);
}
listener(arg);
});
} else {
throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof emitter);
}
}
/***/ }),
/***/ 8078:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var Buffer = (__webpack_require__(2861).Buffer)
var MD5 = __webpack_require__(8276)
/* eslint-disable camelcase */
function EVP_BytesToKey (password, salt, keyBits, ivLen) {
if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary')
if (salt) {
if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, 'binary')
if (salt.length !== 8) throw new RangeError('salt should be Buffer with 8 byte length')
}
var keyLen = keyBits / 8
var key = Buffer.alloc(keyLen)
var iv = Buffer.alloc(ivLen || 0)
var tmp = Buffer.alloc(0)
while (keyLen > 0 || ivLen > 0) {
var hash = new MD5()
hash.update(tmp)
hash.update(password)
if (salt) hash.update(salt)
tmp = hash.digest()
var used = 0
if (keyLen > 0) {
var keyStart = key.length - keyLen
used = Math.min(keyLen, tmp.length)
tmp.copy(key, keyStart, 0, used)
keyLen -= used
}
if (used < tmp.length && ivLen > 0) {
var ivStart = iv.length - ivLen
var length = Math.min(ivLen, tmp.length - used)
tmp.copy(iv, ivStart, used, used + length)
ivLen -= length
}
}
tmp.fill(0)
return { key: key, iv: iv }
}
module.exports = EVP_BytesToKey
/***/ }),
/***/ 2682:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var isCallable = __webpack_require__(9600);
var toStr = Object.prototype.toString;
var hasOwnProperty = Object.prototype.hasOwnProperty;
var forEachArray = function forEachArray(array, iterator, receiver) {
for (var i = 0, len = array.length; i < len; i++) {
if (hasOwnProperty.call(array, i)) {
if (receiver == null) {
iterator(array[i], i, array);
} else {
iterator.call(receiver, array[i], i, array);
}
}
}
};
var forEachString = function forEachString(string, iterator, receiver) {
for (var i = 0, len = string.length; i < len; i++) {
// no such thing as a sparse string.
if (receiver == null) {
iterator(string.charAt(i), i, string);
} else {
iterator.call(receiver, string.charAt(i), i, string);
}
}
};
var forEachObject = function forEachObject(object, iterator, receiver) {
for (var k in object) {
if (hasOwnProperty.call(object, k)) {
if (receiver == null) {
iterator(object[k], k, object);
} else {
iterator.call(receiver, object[k], k, object);
}
}
}
};
var forEach = function forEach(list, iterator, thisArg) {
if (!isCallable(iterator)) {
throw new TypeError('iterator must be a function');
}
var receiver;
if (arguments.length >= 3) {
receiver = thisArg;
}
if (toStr.call(list) === '[object Array]') {
forEachArray(list, iterator, receiver);
} else if (typeof list === 'string') {
forEachString(list, iterator, receiver);
} else {
forEachObject(list, iterator, receiver);
}
};
module.exports = forEach;
/***/ }),
/***/ 9353:
/***/ ((module) => {
"use strict";
/* eslint no-invalid-this: 1 */
var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';
var toStr = Object.prototype.toString;
var max = Math.max;
var funcType = '[object Function]';
var concatty = function concatty(a, b) {
var arr = [];
for (var i = 0; i < a.length; i += 1) {
arr[i] = a[i];
}
for (var j = 0; j < b.length; j += 1) {
arr[j + a.length] = b[j];
}
return arr;
};
var slicy = function slicy(arrLike, offset) {
var arr = [];
for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {
arr[j] = arrLike[i];
}
return arr;
};
var joiny = function (arr, joiner) {
var str = '';
for (var i = 0; i < arr.length; i += 1) {
str += arr[i];
if (i + 1 < arr.length) {
str += joiner;
}
}
return str;
};
module.exports = function bind(that) {
var target = this;
if (typeof target !== 'function' || toStr.apply(target) !== funcType) {
throw new TypeError(ERROR_MESSAGE + target);
}
var args = slicy(arguments, 1);
var bound;
var binder = function () {
if (this instanceof bound) {
var result = target.apply(
this,
concatty(args, arguments)
);
if (Object(result) === result) {
return result;
}
return this;
}
return target.apply(
that,
concatty(args, arguments)
);
};
var boundLength = max(0, target.length - args.length);
var boundArgs = [];
for (var i = 0; i < boundLength; i++) {
boundArgs[i] = '$' + i;
}
bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);
if (target.prototype) {
var Empty = function Empty() {};
Empty.prototype = target.prototype;
bound.prototype = new Empty();
Empty.prototype = null;
}
return bound;
};
/***/ }),
/***/ 6743:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var implementation = __webpack_require__(9353);
module.exports = Function.prototype.bind || implementation;
/***/ }),
/***/ 453:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var undefined;
var $Error = __webpack_require__(9383);
var $EvalError = __webpack_require__(1237);
var $RangeError = __webpack_require__(9290);
var $ReferenceError = __webpack_require__(9538);
var $SyntaxError = __webpack_require__(8068);
var $TypeError = __webpack_require__(9675);
var $URIError = __webpack_require__(5345);
var $Function = Function;
// eslint-disable-next-line consistent-return
var getEvalledConstructor = function (expressionSyntax) {
try {
return $Function('"use strict"; return (' + expressionSyntax + ').constructor;')();
} catch (e) {}
};
var $gOPD = Object.getOwnPropertyDescriptor;
if ($gOPD) {
try {
$gOPD({}, '');
} catch (e) {
$gOPD = null; // this is IE 8, which has a broken gOPD
}
}
var throwTypeError = function () {
throw new $TypeError();
};
var ThrowTypeError = $gOPD
? (function () {
try {
// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties
arguments.callee; // IE 8 does not throw here
return throwTypeError;
} catch (calleeThrows) {
try {
// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')
return $gOPD(arguments, 'callee').get;
} catch (gOPDthrows) {
return throwTypeError;
}
}
}())
: throwTypeError;
var hasSymbols = __webpack_require__(4039)();
var hasProto = __webpack_require__(24)();
var getProto = Object.getPrototypeOf || (
hasProto
? function (x) { return x.__proto__; } // eslint-disable-line no-proto
: null
);
var needsEval = {};
var TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);
var INTRINSICS = {
__proto__: null,
'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,
'%Array%': Array,
'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,
'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,
'%AsyncFromSyncIteratorPrototype%': undefined,
'%AsyncFunction%': needsEval,
'%AsyncGenerator%': needsEval,
'%AsyncGeneratorFunction%': needsEval,
'%AsyncIteratorPrototype%': needsEval,
'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,
'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,
'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,
'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,
'%Boolean%': Boolean,
'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,
'%Date%': Date,
'%decodeURI%': decodeURI,
'%decodeURIComponent%': decodeURIComponent,
'%encodeURI%': encodeURI,
'%encodeURIComponent%': encodeURIComponent,
'%Error%': $Error,
'%eval%': eval, // eslint-disable-line no-eval
'%EvalError%': $EvalError,
'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,
'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,
'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,
'%Function%': $Function,
'%GeneratorFunction%': needsEval,
'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,
'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,
'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,
'%isFinite%': isFinite,
'%isNaN%': isNaN,
'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,
'%JSON%': typeof JSON === 'object' ? JSON : undefined,
'%Map%': typeof Map === 'undefined' ? undefined : Map,
'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),
'%Math%': Math,
'%Number%': Number,
'%Object%': Object,
'%parseFloat%': parseFloat,
'%parseInt%': parseInt,
'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,
'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,
'%RangeError%': $RangeError,
'%ReferenceError%': $ReferenceError,
'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,
'%RegExp%': RegExp,
'%Set%': typeof Set === 'undefined' ? undefined : Set,
'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),
'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,
'%String%': String,
'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,
'%Symbol%': hasSymbols ? Symbol : undefined,
'%SyntaxError%': $SyntaxError,
'%ThrowTypeError%': ThrowTypeError,
'%TypedArray%': TypedArray,
'%TypeError%': $TypeError,
'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,
'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,
'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,
'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,
'%URIError%': $URIError,
'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,
'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,
'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet
};
if (getProto) {
try {
null.error; // eslint-disable-line no-unused-expressions
} catch (e) {
// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229
var errorProto = getProto(getProto(e));
INTRINSICS['%Error.prototype%'] = errorProto;
}
}
var doEval = function doEval(name) {
var value;
if (name === '%AsyncFunction%') {
value = getEvalledConstructor('async function () {}');
} else if (name === '%GeneratorFunction%') {
value = getEvalledConstructor('function* () {}');
} else if (name === '%AsyncGeneratorFunction%') {
value = getEvalledConstructor('async function* () {}');
} else if (name === '%AsyncGenerator%') {
var fn = doEval('%AsyncGeneratorFunction%');
if (fn) {
value = fn.prototype;
}
} else if (name === '%AsyncIteratorPrototype%') {
var gen = doEval('%AsyncGenerator%');
if (gen && getProto) {
value = getProto(gen.prototype);
}
}
INTRINSICS[name] = value;
return value;
};
var LEGACY_ALIASES = {
__proto__: null,
'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],
'%ArrayPrototype%': ['Array', 'prototype'],
'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],
'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],
'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],
'%ArrayProto_values%': ['Array', 'prototype', 'values'],
'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],
'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],
'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],
'%BooleanPrototype%': ['Boolean', 'prototype'],
'%DataViewPrototype%': ['DataView', 'prototype'],
'%DatePrototype%': ['Date', 'prototype'],
'%ErrorPrototype%': ['Error', 'prototype'],
'%EvalErrorPrototype%': ['EvalError', 'prototype'],
'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],
'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],
'%FunctionPrototype%': ['Function', 'prototype'],
'%Generator%': ['GeneratorFunction', 'prototype'],
'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],
'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],
'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],
'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],
'%JSONParse%': ['JSON', 'parse'],
'%JSONStringify%': ['JSON', 'stringify'],
'%MapPrototype%': ['Map', 'prototype'],
'%NumberPrototype%': ['Number', 'prototype'],
'%ObjectPrototype%': ['Object', 'prototype'],
'%ObjProto_toString%': ['Object', 'prototype', 'toString'],
'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],
'%PromisePrototype%': ['Promise', 'prototype'],
'%PromiseProto_then%': ['Promise', 'prototype', 'then'],
'%Promise_all%': ['Promise', 'all'],
'%Promise_reject%': ['Promise', 'reject'],
'%Promise_resolve%': ['Promise', 'resolve'],
'%RangeErrorPrototype%': ['RangeError', 'prototype'],
'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],
'%RegExpPrototype%': ['RegExp', 'prototype'],
'%SetPrototype%': ['Set', 'prototype'],
'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],
'%StringPrototype%': ['String', 'prototype'],
'%SymbolPrototype%': ['Symbol', 'prototype'],
'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],
'%TypedArrayPrototype%': ['TypedArray', 'prototype'],
'%TypeErrorPrototype%': ['TypeError', 'prototype'],
'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],
'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],
'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],
'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],
'%URIErrorPrototype%': ['URIError', 'prototype'],
'%WeakMapPrototype%': ['WeakMap', 'prototype'],
'%WeakSetPrototype%': ['WeakSet', 'prototype']
};
var bind = __webpack_require__(6743);
var hasOwn = __webpack_require__(9957);
var $concat = bind.call(Function.call, Array.prototype.concat);
var $spliceApply = bind.call(Function.apply, Array.prototype.splice);
var $replace = bind.call(Function.call, String.prototype.replace);
var $strSlice = bind.call(Function.call, String.prototype.slice);
var $exec = bind.call(Function.call, RegExp.prototype.exec);
/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */
var rePropName = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g;
var reEscapeChar = /\\(\\)?/g; /** Used to match backslashes in property paths. */
var stringToPath = function stringToPath(string) {
var first = $strSlice(string, 0, 1);
var last = $strSlice(string, -1);
if (first === '%' && last !== '%') {
throw new $SyntaxError('invalid intrinsic syntax, expected closing `%`');
} else if (last === '%' && first !== '%') {
throw new $SyntaxError('invalid intrinsic syntax, expected opening `%`');
}
var result = [];
$replace(string, rePropName, function (match, number, quote, subString) {
result[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;
});
return result;
};
/* end adaptation */
var getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {
var intrinsicName = name;
var alias;
if (hasOwn(LEGACY_ALIASES, intrinsicName)) {
alias = LEGACY_ALIASES[intrinsicName];
intrinsicName = '%' + alias[0] + '%';
}
if (hasOwn(INTRINSICS, intrinsicName)) {
var value = INTRINSICS[intrinsicName];
if (value === needsEval) {
value = doEval(intrinsicName);
}
if (typeof value === 'undefined' && !allowMissing) {
throw new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');
}
return {
alias: alias,
name: intrinsicName,
value: value
};
}
throw new $SyntaxError('intrinsic ' + name + ' does not exist!');
};
module.exports = function GetIntrinsic(name, allowMissing) {
if (typeof name !== 'string' || name.length === 0) {
throw new $TypeError('intrinsic name must be a non-empty string');
}
if (arguments.length > 1 && typeof allowMissing !== 'boolean') {
throw new $TypeError('"allowMissing" argument must be a boolean');
}
if ($exec(/^%?[^%]*%?$/, name) === null) {
throw new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');
}
var parts = stringToPath(name);
var intrinsicBaseName = parts.length > 0 ? parts[0] : '';
var intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);
var intrinsicRealName = intrinsic.name;
var value = intrinsic.value;
var skipFurtherCaching = false;
var alias = intrinsic.alias;
if (alias) {
intrinsicBaseName = alias[0];
$spliceApply(parts, $concat([0, 1], alias));
}
for (var i = 1, isOwn = true; i < parts.length; i += 1) {
var part = parts[i];
var first = $strSlice(part, 0, 1);
var last = $strSlice(part, -1);
if (
(
(first === '"' || first === "'" || first === '`')
|| (last === '"' || last === "'" || last === '`')
)
&& first !== last
) {
throw new $SyntaxError('property names with quotes must have matching quotes');
}
if (part === 'constructor' || !isOwn) {
skipFurtherCaching = true;
}
intrinsicBaseName += '.' + part;
intrinsicRealName = '%' + intrinsicBaseName + '%';
if (hasOwn(INTRINSICS, intrinsicRealName)) {
value = INTRINSICS[intrinsicRealName];
} else if (value != null) {
if (!(part in value)) {
if (!allowMissing) {
throw new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');
}
return void undefined;
}
if ($gOPD && (i + 1) >= parts.length) {
var desc = $gOPD(value, part);
isOwn = !!desc;
// By convention, when a data property is converted to an accessor
// property to emulate a data property that does not suffer from
// the override mistake, that accessor's getter is marked with
// an `originalValue` property. Here, when we detect this, we
// uphold the illusion by pretending to see that original data
// property, i.e., returning the value rather than the getter
// itself.
if (isOwn && 'get' in desc && !('originalValue' in desc.get)) {
value = desc.get;
} else {
value = value[part];
}
} else {
isOwn = hasOwn(value, part);
value = value[part];
}
if (isOwn && !skipFurtherCaching) {
INTRINSICS[intrinsicRealName] = value;
}
}
}
return value;
};
/***/ }),
/***/ 5795:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var GetIntrinsic = __webpack_require__(453);
var $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);
if ($gOPD) {
try {
$gOPD([], 'length');
} catch (e) {
// IE 8 has a broken gOPD
$gOPD = null;
}
}
module.exports = $gOPD;
/***/ }),
/***/ 592:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var $defineProperty = __webpack_require__(655);
var hasPropertyDescriptors = function hasPropertyDescriptors() {
return !!$defineProperty;
};
hasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {
// node v0.6 has a bug where array lengths can be Set but not Defined
if (!$defineProperty) {
return null;
}
try {
return $defineProperty([], 'length', { value: 1 }).length !== 1;
} catch (e) {
// In Firefox 4-22, defining length on an array throws an exception.
return true;
}
};
module.exports = hasPropertyDescriptors;
/***/ }),
/***/ 24:
/***/ ((module) => {
"use strict";
var test = {
__proto__: null,
foo: {}
};
var $Object = Object;
/** @type {import('.')} */
module.exports = function hasProto() {
// @ts-expect-error: TS errors on an inherited property for some reason
return { __proto__: test }.foo === test.foo
&& !(test instanceof $Object);
};
/***/ }),
/***/ 4039:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var origSymbol = typeof Symbol !== 'undefined' && Symbol;
var hasSymbolSham = __webpack_require__(1333);
module.exports = function hasNativeSymbols() {
if (typeof origSymbol !== 'function') { return false; }
if (typeof Symbol !== 'function') { return false; }
if (typeof origSymbol('foo') !== 'symbol') { return false; }
if (typeof Symbol('bar') !== 'symbol') { return false; }
return hasSymbolSham();
};
/***/ }),
/***/ 1333:
/***/ ((module) => {
"use strict";
/* eslint complexity: [2, 18], max-statements: [2, 33] */
module.exports = function hasSymbols() {
if (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }
if (typeof Symbol.iterator === 'symbol') { return true; }
var obj = {};
var sym = Symbol('test');
var symObj = Object(sym);
if (typeof sym === 'string') { return false; }
if (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }
if (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }
// temp disabled per https://github.com/ljharb/object.assign/issues/17
// if (sym instanceof Symbol) { return false; }
// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4
// if (!(symObj instanceof Symbol)) { return false; }
// if (typeof Symbol.prototype.toString !== 'function') { return false; }
// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }
var symVal = 42;
obj[sym] = symVal;
for (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop
if (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }
if (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }
var syms = Object.getOwnPropertySymbols(obj);
if (syms.length !== 1 || syms[0] !== sym) { return false; }
if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }
if (typeof Object.getOwnPropertyDescriptor === 'function') {
var descriptor = Object.getOwnPropertyDescriptor(obj, sym);
if (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }
}
return true;
};
/***/ }),
/***/ 9092:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var hasSymbols = __webpack_require__(1333);
/** @type {import('.')} */
module.exports = function hasToStringTagShams() {
return hasSymbols() && !!Symbol.toStringTag;
};
/***/ }),
/***/ 7952:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
var hash = exports;
hash.utils = __webpack_require__(7426);
hash.common = __webpack_require__(6166);
hash.sha = __webpack_require__(6229);
hash.ripemd = __webpack_require__(6784);
hash.hmac = __webpack_require__(8948);
// Proxy hash functions to the main object
hash.sha1 = hash.sha.sha1;
hash.sha256 = hash.sha.sha256;
hash.sha224 = hash.sha.sha224;
hash.sha384 = hash.sha.sha384;
hash.sha512 = hash.sha.sha512;
hash.ripemd160 = hash.ripemd.ripemd160;
/***/ }),
/***/ 6166:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
var utils = __webpack_require__(7426);
var assert = __webpack_require__(3349);
function BlockHash() {
this.pending = null;
this.pendingTotal = 0;
this.blockSize = this.constructor.blockSize;
this.outSize = this.constructor.outSize;
this.hmacStrength = this.constructor.hmacStrength;
this.padLength = this.constructor.padLength / 8;
this.endian = 'big';
this._delta8 = this.blockSize / 8;
this._delta32 = this.blockSize / 32;
}
exports.BlockHash = BlockHash;
BlockHash.prototype.update = function update(msg, enc) {
// Convert message to array, pad it, and join into 32bit blocks
msg = utils.toArray(msg, enc);
if (!this.pending)
this.pending = msg;
else
this.pending = this.pending.concat(msg);
this.pendingTotal += msg.length;
// Enough data, try updating
if (this.pending.length >= this._delta8) {
msg = this.pending;
// Process pending data in blocks
var r = msg.length % this._delta8;
this.pending = msg.slice(msg.length - r, msg.length);
if (this.pending.length === 0)
this.pending = null;
msg = utils.join32(msg, 0, msg.length - r, this.endian);
for (var i = 0; i < msg.length; i += this._delta32)
this._update(msg, i, i + this._delta32);
}
return this;
};
BlockHash.prototype.digest = function digest(enc) {
this.update(this._pad());
assert(this.pending === null);
return this._digest(enc);
};
BlockHash.prototype._pad = function pad() {
var len = this.pendingTotal;
var bytes = this._delta8;
var k = bytes - ((len + this.padLength) % bytes);
var res = new Array(k + this.padLength);
res[0] = 0x80;
for (var i = 1; i < k; i++)
res[i] = 0;
// Append length
len <<= 3;
if (this.endian === 'big') {
for (var t = 8; t < this.padLength; t++)
res[i++] = 0;
res[i++] = 0;
res[i++] = 0;
res[i++] = 0;
res[i++] = 0;
res[i++] = (len >>> 24) & 0xff;
res[i++] = (len >>> 16) & 0xff;
res[i++] = (len >>> 8) & 0xff;
res[i++] = len & 0xff;
} else {
res[i++] = len & 0xff;
res[i++] = (len >>> 8) & 0xff;
res[i++] = (len >>> 16) & 0xff;
res[i++] = (len >>> 24) & 0xff;
res[i++] = 0;
res[i++] = 0;
res[i++] = 0;
res[i++] = 0;
for (t = 8; t < this.padLength; t++)
res[i++] = 0;
}
return res;
};
/***/ }),
/***/ 8948:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var utils = __webpack_require__(7426);
var assert = __webpack_require__(3349);
function Hmac(hash, key, enc) {
if (!(this instanceof Hmac))
return new Hmac(hash, key, enc);
this.Hash = hash;
this.blockSize = hash.blockSize / 8;
this.outSize = hash.outSize / 8;
this.inner = null;
this.outer = null;
this._init(utils.toArray(key, enc));
}
module.exports = Hmac;
Hmac.prototype._init = function init(key) {
// Shorten key, if needed
if (key.length > this.blockSize)
key = new this.Hash().update(key).digest();
assert(key.length <= this.blockSize);
// Add padding to key
for (var i = key.length; i < this.blockSize; i++)
key.push(0);
for (i = 0; i < key.length; i++)
key[i] ^= 0x36;
this.inner = new this.Hash().update(key);
// 0x36 ^ 0x5c = 0x6a
for (i = 0; i < key.length; i++)
key[i] ^= 0x6a;
this.outer = new this.Hash().update(key);
};
Hmac.prototype.update = function update(msg, enc) {
this.inner.update(msg, enc);
return this;
};
Hmac.prototype.digest = function digest(enc) {
this.outer.update(this.inner.digest());
return this.outer.digest(enc);
};
/***/ }),
/***/ 6784:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
var utils = __webpack_require__(7426);
var common = __webpack_require__(6166);
var rotl32 = utils.rotl32;
var sum32 = utils.sum32;
var sum32_3 = utils.sum32_3;
var sum32_4 = utils.sum32_4;
var BlockHash = common.BlockHash;
function RIPEMD160() {
if (!(this instanceof RIPEMD160))
return new RIPEMD160();
BlockHash.call(this);
this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];
this.endian = 'little';
}
utils.inherits(RIPEMD160, BlockHash);
exports.ripemd160 = RIPEMD160;
RIPEMD160.blockSize = 512;
RIPEMD160.outSize = 160;
RIPEMD160.hmacStrength = 192;
RIPEMD160.padLength = 64;
RIPEMD160.prototype._update = function update(msg, start) {
var A = this.h[0];
var B = this.h[1];
var C = this.h[2];
var D = this.h[3];
var E = this.h[4];
var Ah = A;
var Bh = B;
var Ch = C;
var Dh = D;
var Eh = E;
for (var j = 0; j < 80; j++) {
var T = sum32(
rotl32(
sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),
s[j]),
E);
A = E;
E = D;
D = rotl32(C, 10);
C = B;
B = T;
T = sum32(
rotl32(
sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),
sh[j]),
Eh);
Ah = Eh;
Eh = Dh;
Dh = rotl32(Ch, 10);
Ch = Bh;
Bh = T;
}
T = sum32_3(this.h[1], C, Dh);
this.h[1] = sum32_3(this.h[2], D, Eh);
this.h[2] = sum32_3(this.h[3], E, Ah);
this.h[3] = sum32_3(this.h[4], A, Bh);
this.h[4] = sum32_3(this.h[0], B, Ch);
this.h[0] = T;
};
RIPEMD160.prototype._digest = function digest(enc) {
if (enc === 'hex')
return utils.toHex32(this.h, 'little');
else
return utils.split32(this.h, 'little');
};
function f(j, x, y, z) {
if (j <= 15)
return x ^ y ^ z;
else if (j <= 31)
return (x & y) | ((~x) & z);
else if (j <= 47)
return (x | (~y)) ^ z;
else if (j <= 63)
return (x & z) | (y & (~z));
else
return x ^ (y | (~z));
}
function K(j) {
if (j <= 15)
return 0x00000000;
else if (j <= 31)
return 0x5a827999;
else if (j <= 47)
return 0x6ed9eba1;
else if (j <= 63)
return 0x8f1bbcdc;
else
return 0xa953fd4e;
}
function Kh(j) {
if (j <= 15)
return 0x50a28be6;
else if (j <= 31)
return 0x5c4dd124;
else if (j <= 47)
return 0x6d703ef3;
else if (j <= 63)
return 0x7a6d76e9;
else
return 0x00000000;
}
var r = [
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
];
var rh = [
5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
];
var s = [
11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
];
var sh = [
8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
];
/***/ }),
/***/ 6229:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
exports.sha1 = __webpack_require__(3917);
exports.sha224 = __webpack_require__(7714);
exports.sha256 = __webpack_require__(2287);
exports.sha384 = __webpack_require__(1911);
exports.sha512 = __webpack_require__(7766);
/***/ }),
/***/ 3917:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var utils = __webpack_require__(7426);
var common = __webpack_require__(6166);
var shaCommon = __webpack_require__(6225);
var rotl32 = utils.rotl32;
var sum32 = utils.sum32;
var sum32_5 = utils.sum32_5;
var ft_1 = shaCommon.ft_1;
var BlockHash = common.BlockHash;
var sha1_K = [
0x5A827999, 0x6ED9EBA1,
0x8F1BBCDC, 0xCA62C1D6
];
function SHA1() {
if (!(this instanceof SHA1))
return new SHA1();
BlockHash.call(this);
this.h = [
0x67452301, 0xefcdab89, 0x98badcfe,
0x10325476, 0xc3d2e1f0 ];
this.W = new Array(80);
}
utils.inherits(SHA1, BlockHash);
module.exports = SHA1;
SHA1.blockSize = 512;
SHA1.outSize = 160;
SHA1.hmacStrength = 80;
SHA1.padLength = 64;
SHA1.prototype._update = function _update(msg, start) {
var W = this.W;
for (var i = 0; i < 16; i++)
W[i] = msg[start + i];
for(; i < W.length; i++)
W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);
var a = this.h[0];
var b = this.h[1];
var c = this.h[2];
var d = this.h[3];
var e = this.h[4];
for (i = 0; i < W.length; i++) {
var s = ~~(i / 20);
var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);
e = d;
d = c;
c = rotl32(b, 30);
b = a;
a = t;
}
this.h[0] = sum32(this.h[0], a);
this.h[1] = sum32(this.h[1], b);
this.h[2] = sum32(this.h[2], c);
this.h[3] = sum32(this.h[3], d);
this.h[4] = sum32(this.h[4], e);
};
SHA1.prototype._digest = function digest(enc) {
if (enc === 'hex')
return utils.toHex32(this.h, 'big');
else
return utils.split32(this.h, 'big');
};
/***/ }),
/***/ 7714:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var utils = __webpack_require__(7426);
var SHA256 = __webpack_require__(2287);
function SHA224() {
if (!(this instanceof SHA224))
return new SHA224();
SHA256.call(this);
this.h = [
0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,
0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];
}
utils.inherits(SHA224, SHA256);
module.exports = SHA224;
SHA224.blockSize = 512;
SHA224.outSize = 224;
SHA224.hmacStrength = 192;
SHA224.padLength = 64;
SHA224.prototype._digest = function digest(enc) {
// Just truncate output
if (enc === 'hex')
return utils.toHex32(this.h.slice(0, 7), 'big');
else
return utils.split32(this.h.slice(0, 7), 'big');
};
/***/ }),
/***/ 2287:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var utils = __webpack_require__(7426);
var common = __webpack_require__(6166);
var shaCommon = __webpack_require__(6225);
var assert = __webpack_require__(3349);
var sum32 = utils.sum32;
var sum32_4 = utils.sum32_4;
var sum32_5 = utils.sum32_5;
var ch32 = shaCommon.ch32;
var maj32 = shaCommon.maj32;
var s0_256 = shaCommon.s0_256;
var s1_256 = shaCommon.s1_256;
var g0_256 = shaCommon.g0_256;
var g1_256 = shaCommon.g1_256;
var BlockHash = common.BlockHash;
var sha256_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
];
function SHA256() {
if (!(this instanceof SHA256))
return new SHA256();
BlockHash.call(this);
this.h = [
0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,
0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19
];
this.k = sha256_K;
this.W = new Array(64);
}
utils.inherits(SHA256, BlockHash);
module.exports = SHA256;
SHA256.blockSize = 512;
SHA256.outSize = 256;
SHA256.hmacStrength = 192;
SHA256.padLength = 64;
SHA256.prototype._update = function _update(msg, start) {
var W = this.W;
for (var i = 0; i < 16; i++)
W[i] = msg[start + i];
for (; i < W.length; i++)
W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);
var a = this.h[0];
var b = this.h[1];
var c = this.h[2];
var d = this.h[3];
var e = this.h[4];
var f = this.h[5];
var g = this.h[6];
var h = this.h[7];
assert(this.k.length === W.length);
for (i = 0; i < W.length; i++) {
var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);
var T2 = sum32(s0_256(a), maj32(a, b, c));
h = g;
g = f;
f = e;
e = sum32(d, T1);
d = c;
c = b;
b = a;
a = sum32(T1, T2);
}
this.h[0] = sum32(this.h[0], a);
this.h[1] = sum32(this.h[1], b);
this.h[2] = sum32(this.h[2], c);
this.h[3] = sum32(this.h[3], d);
this.h[4] = sum32(this.h[4], e);
this.h[5] = sum32(this.h[5], f);
this.h[6] = sum32(this.h[6], g);
this.h[7] = sum32(this.h[7], h);
};
SHA256.prototype._digest = function digest(enc) {
if (enc === 'hex')
return utils.toHex32(this.h, 'big');
else
return utils.split32(this.h, 'big');
};
/***/ }),
/***/ 1911:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var utils = __webpack_require__(7426);
var SHA512 = __webpack_require__(7766);
function SHA384() {
if (!(this instanceof SHA384))
return new SHA384();
SHA512.call(this);
this.h = [
0xcbbb9d5d, 0xc1059ed8,
0x629a292a, 0x367cd507,
0x9159015a, 0x3070dd17,
0x152fecd8, 0xf70e5939,
0x67332667, 0xffc00b31,
0x8eb44a87, 0x68581511,
0xdb0c2e0d, 0x64f98fa7,
0x47b5481d, 0xbefa4fa4 ];
}
utils.inherits(SHA384, SHA512);
module.exports = SHA384;
SHA384.blockSize = 1024;
SHA384.outSize = 384;
SHA384.hmacStrength = 192;
SHA384.padLength = 128;
SHA384.prototype._digest = function digest(enc) {
if (enc === 'hex')
return utils.toHex32(this.h.slice(0, 12), 'big');
else
return utils.split32(this.h.slice(0, 12), 'big');
};
/***/ }),
/***/ 7766:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var utils = __webpack_require__(7426);
var common = __webpack_require__(6166);
var assert = __webpack_require__(3349);
var rotr64_hi = utils.rotr64_hi;
var rotr64_lo = utils.rotr64_lo;
var shr64_hi = utils.shr64_hi;
var shr64_lo = utils.shr64_lo;
var sum64 = utils.sum64;
var sum64_hi = utils.sum64_hi;
var sum64_lo = utils.sum64_lo;
var sum64_4_hi = utils.sum64_4_hi;
var sum64_4_lo = utils.sum64_4_lo;
var sum64_5_hi = utils.sum64_5_hi;
var sum64_5_lo = utils.sum64_5_lo;
var BlockHash = common.BlockHash;
var sha512_K = [
0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
];
function SHA512() {
if (!(this instanceof SHA512))
return new SHA512();
BlockHash.call(this);
this.h = [
0x6a09e667, 0xf3bcc908,
0xbb67ae85, 0x84caa73b,
0x3c6ef372, 0xfe94f82b,
0xa54ff53a, 0x5f1d36f1,
0x510e527f, 0xade682d1,
0x9b05688c, 0x2b3e6c1f,
0x1f83d9ab, 0xfb41bd6b,
0x5be0cd19, 0x137e2179 ];
this.k = sha512_K;
this.W = new Array(160);
}
utils.inherits(SHA512, BlockHash);
module.exports = SHA512;
SHA512.blockSize = 1024;
SHA512.outSize = 512;
SHA512.hmacStrength = 192;
SHA512.padLength = 128;
SHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {
var W = this.W;
// 32 x 32bit words
for (var i = 0; i < 32; i++)
W[i] = msg[start + i];
for (; i < W.length; i += 2) {
var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2
var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);
var c1_hi = W[i - 14]; // i - 7
var c1_lo = W[i - 13];
var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15
var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);
var c3_hi = W[i - 32]; // i - 16
var c3_lo = W[i - 31];
W[i] = sum64_4_hi(
c0_hi, c0_lo,
c1_hi, c1_lo,
c2_hi, c2_lo,
c3_hi, c3_lo);
W[i + 1] = sum64_4_lo(
c0_hi, c0_lo,
c1_hi, c1_lo,
c2_hi, c2_lo,
c3_hi, c3_lo);
}
};
SHA512.prototype._update = function _update(msg, start) {
this._prepareBlock(msg, start);
var W = this.W;
var ah = this.h[0];
var al = this.h[1];
var bh = this.h[2];
var bl = this.h[3];
var ch = this.h[4];
var cl = this.h[5];
var dh = this.h[6];
var dl = this.h[7];
var eh = this.h[8];
var el = this.h[9];
var fh = this.h[10];
var fl = this.h[11];
var gh = this.h[12];
var gl = this.h[13];
var hh = this.h[14];
var hl = this.h[15];
assert(this.k.length === W.length);
for (var i = 0; i < W.length; i += 2) {
var c0_hi = hh;
var c0_lo = hl;
var c1_hi = s1_512_hi(eh, el);
var c1_lo = s1_512_lo(eh, el);
var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);
var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);
var c3_hi = this.k[i];
var c3_lo = this.k[i + 1];
var c4_hi = W[i];
var c4_lo = W[i + 1];
var T1_hi = sum64_5_hi(
c0_hi, c0_lo,
c1_hi, c1_lo,
c2_hi, c2_lo,
c3_hi, c3_lo,
c4_hi, c4_lo);
var T1_lo = sum64_5_lo(
c0_hi, c0_lo,
c1_hi, c1_lo,
c2_hi, c2_lo,
c3_hi, c3_lo,
c4_hi, c4_lo);
c0_hi = s0_512_hi(ah, al);
c0_lo = s0_512_lo(ah, al);
c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);
c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);
var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);
var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);
hh = gh;
hl = gl;
gh = fh;
gl = fl;
fh = eh;
fl = el;
eh = sum64_hi(dh, dl, T1_hi, T1_lo);
el = sum64_lo(dl, dl, T1_hi, T1_lo);
dh = ch;
dl = cl;
ch = bh;
cl = bl;
bh = ah;
bl = al;
ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);
al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);
}
sum64(this.h, 0, ah, al);
sum64(this.h, 2, bh, bl);
sum64(this.h, 4, ch, cl);
sum64(this.h, 6, dh, dl);
sum64(this.h, 8, eh, el);
sum64(this.h, 10, fh, fl);
sum64(this.h, 12, gh, gl);
sum64(this.h, 14, hh, hl);
};
SHA512.prototype._digest = function digest(enc) {
if (enc === 'hex')
return utils.toHex32(this.h, 'big');
else
return utils.split32(this.h, 'big');
};
function ch64_hi(xh, xl, yh, yl, zh) {
var r = (xh & yh) ^ ((~xh) & zh);
if (r < 0)
r += 0x100000000;
return r;
}
function ch64_lo(xh, xl, yh, yl, zh, zl) {
var r = (xl & yl) ^ ((~xl) & zl);
if (r < 0)
r += 0x100000000;
return r;
}
function maj64_hi(xh, xl, yh, yl, zh) {
var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);
if (r < 0)
r += 0x100000000;
return r;
}
function maj64_lo(xh, xl, yh, yl, zh, zl) {
var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);
if (r < 0)
r += 0x100000000;
return r;
}
function s0_512_hi(xh, xl) {
var c0_hi = rotr64_hi(xh, xl, 28);
var c1_hi = rotr64_hi(xl, xh, 2); // 34
var c2_hi = rotr64_hi(xl, xh, 7); // 39
var r = c0_hi ^ c1_hi ^ c2_hi;
if (r < 0)
r += 0x100000000;
return r;
}
function s0_512_lo(xh, xl) {
var c0_lo = rotr64_lo(xh, xl, 28);
var c1_lo = rotr64_lo(xl, xh, 2); // 34
var c2_lo = rotr64_lo(xl, xh, 7); // 39
var r = c0_lo ^ c1_lo ^ c2_lo;
if (r < 0)
r += 0x100000000;
return r;
}
function s1_512_hi(xh, xl) {
var c0_hi = rotr64_hi(xh, xl, 14);
var c1_hi = rotr64_hi(xh, xl, 18);
var c2_hi = rotr64_hi(xl, xh, 9); // 41
var r = c0_hi ^ c1_hi ^ c2_hi;
if (r < 0)
r += 0x100000000;
return r;
}
function s1_512_lo(xh, xl) {
var c0_lo = rotr64_lo(xh, xl, 14);
var c1_lo = rotr64_lo(xh, xl, 18);
var c2_lo = rotr64_lo(xl, xh, 9); // 41
var r = c0_lo ^ c1_lo ^ c2_lo;
if (r < 0)
r += 0x100000000;
return r;
}
function g0_512_hi(xh, xl) {
var c0_hi = rotr64_hi(xh, xl, 1);
var c1_hi = rotr64_hi(xh, xl, 8);
var c2_hi = shr64_hi(xh, xl, 7);
var r = c0_hi ^ c1_hi ^ c2_hi;
if (r < 0)
r += 0x100000000;
return r;
}
function g0_512_lo(xh, xl) {
var c0_lo = rotr64_lo(xh, xl, 1);
var c1_lo = rotr64_lo(xh, xl, 8);
var c2_lo = shr64_lo(xh, xl, 7);
var r = c0_lo ^ c1_lo ^ c2_lo;
if (r < 0)
r += 0x100000000;
return r;
}
function g1_512_hi(xh, xl) {
var c0_hi = rotr64_hi(xh, xl, 19);
var c1_hi = rotr64_hi(xl, xh, 29); // 61
var c2_hi = shr64_hi(xh, xl, 6);
var r = c0_hi ^ c1_hi ^ c2_hi;
if (r < 0)
r += 0x100000000;
return r;
}
function g1_512_lo(xh, xl) {
var c0_lo = rotr64_lo(xh, xl, 19);
var c1_lo = rotr64_lo(xl, xh, 29); // 61
var c2_lo = shr64_lo(xh, xl, 6);
var r = c0_lo ^ c1_lo ^ c2_lo;
if (r < 0)
r += 0x100000000;
return r;
}
/***/ }),
/***/ 6225:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
var utils = __webpack_require__(7426);
var rotr32 = utils.rotr32;
function ft_1(s, x, y, z) {
if (s === 0)
return ch32(x, y, z);
if (s === 1 || s === 3)
return p32(x, y, z);
if (s === 2)
return maj32(x, y, z);
}
exports.ft_1 = ft_1;
function ch32(x, y, z) {
return (x & y) ^ ((~x) & z);
}
exports.ch32 = ch32;
function maj32(x, y, z) {
return (x & y) ^ (x & z) ^ (y & z);
}
exports.maj32 = maj32;
function p32(x, y, z) {
return x ^ y ^ z;
}
exports.p32 = p32;
function s0_256(x) {
return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);
}
exports.s0_256 = s0_256;
function s1_256(x) {
return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);
}
exports.s1_256 = s1_256;
function g0_256(x) {
return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);
}
exports.g0_256 = g0_256;
function g1_256(x) {
return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);
}
exports.g1_256 = g1_256;
/***/ }),
/***/ 7426:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
var assert = __webpack_require__(3349);
var inherits = __webpack_require__(6698);
exports.inherits = inherits;
function isSurrogatePair(msg, i) {
if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {
return false;
}
if (i < 0 || i + 1 >= msg.length) {
return false;
}
return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;
}
function toArray(msg, enc) {
if (Array.isArray(msg))
return msg.slice();
if (!msg)
return [];
var res = [];
if (typeof msg === 'string') {
if (!enc) {
// Inspired by stringToUtf8ByteArray() in closure-library by Google
// https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143
// Apache License 2.0
// https://github.com/google/closure-library/blob/master/LICENSE
var p = 0;
for (var i = 0; i < msg.length; i++) {
var c = msg.charCodeAt(i);
if (c < 128) {
res[p++] = c;
} else if (c < 2048) {
res[p++] = (c >> 6) | 192;
res[p++] = (c & 63) | 128;
} else if (isSurrogatePair(msg, i)) {
c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);
res[p++] = (c >> 18) | 240;
res[p++] = ((c >> 12) & 63) | 128;
res[p++] = ((c >> 6) & 63) | 128;
res[p++] = (c & 63) | 128;
} else {
res[p++] = (c >> 12) | 224;
res[p++] = ((c >> 6) & 63) | 128;
res[p++] = (c & 63) | 128;
}
}
} else if (enc === 'hex') {
msg = msg.replace(/[^a-z0-9]+/ig, '');
if (msg.length % 2 !== 0)
msg = '0' + msg;
for (i = 0; i < msg.length; i += 2)
res.push(parseInt(msg[i] + msg[i + 1], 16));
}
} else {
for (i = 0; i < msg.length; i++)
res[i] = msg[i] | 0;
}
return res;
}
exports.toArray = toArray;
function toHex(msg) {
var res = '';
for (var i = 0; i < msg.length; i++)
res += zero2(msg[i].toString(16));
return res;
}
exports.toHex = toHex;
function htonl(w) {
var res = (w >>> 24) |
((w >>> 8) & 0xff00) |
((w << 8) & 0xff0000) |
((w & 0xff) << 24);
return res >>> 0;
}
exports.htonl = htonl;
function toHex32(msg, endian) {
var res = '';
for (var i = 0; i < msg.length; i++) {
var w = msg[i];
if (endian === 'little')
w = htonl(w);
res += zero8(w.toString(16));
}
return res;
}
exports.toHex32 = toHex32;
function zero2(word) {
if (word.length === 1)
return '0' + word;
else
return word;
}
exports.zero2 = zero2;
function zero8(word) {
if (word.length === 7)
return '0' + word;
else if (word.length === 6)
return '00' + word;
else if (word.length === 5)
return '000' + word;
else if (word.length === 4)
return '0000' + word;
else if (word.length === 3)
return '00000' + word;
else if (word.length === 2)
return '000000' + word;
else if (word.length === 1)
return '0000000' + word;
else
return word;
}
exports.zero8 = zero8;
function join32(msg, start, end, endian) {
var len = end - start;
assert(len % 4 === 0);
var res = new Array(len / 4);
for (var i = 0, k = start; i < res.length; i++, k += 4) {
var w;
if (endian === 'big')
w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];
else
w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];
res[i] = w >>> 0;
}
return res;
}
exports.join32 = join32;
function split32(msg, endian) {
var res = new Array(msg.length * 4);
for (var i = 0, k = 0; i < msg.length; i++, k += 4) {
var m = msg[i];
if (endian === 'big') {
res[k] = m >>> 24;
res[k + 1] = (m >>> 16) & 0xff;
res[k + 2] = (m >>> 8) & 0xff;
res[k + 3] = m & 0xff;
} else {
res[k + 3] = m >>> 24;
res[k + 2] = (m >>> 16) & 0xff;
res[k + 1] = (m >>> 8) & 0xff;
res[k] = m & 0xff;
}
}
return res;
}
exports.split32 = split32;
function rotr32(w, b) {
return (w >>> b) | (w << (32 - b));
}
exports.rotr32 = rotr32;
function rotl32(w, b) {
return (w << b) | (w >>> (32 - b));
}
exports.rotl32 = rotl32;
function sum32(a, b) {
return (a + b) >>> 0;
}
exports.sum32 = sum32;
function sum32_3(a, b, c) {
return (a + b + c) >>> 0;
}
exports.sum32_3 = sum32_3;
function sum32_4(a, b, c, d) {
return (a + b + c + d) >>> 0;
}
exports.sum32_4 = sum32_4;
function sum32_5(a, b, c, d, e) {
return (a + b + c + d + e) >>> 0;
}
exports.sum32_5 = sum32_5;
function sum64(buf, pos, ah, al) {
var bh = buf[pos];
var bl = buf[pos + 1];
var lo = (al + bl) >>> 0;
var hi = (lo < al ? 1 : 0) + ah + bh;
buf[pos] = hi >>> 0;
buf[pos + 1] = lo;
}
exports.sum64 = sum64;
function sum64_hi(ah, al, bh, bl) {
var lo = (al + bl) >>> 0;
var hi = (lo < al ? 1 : 0) + ah + bh;
return hi >>> 0;
}
exports.sum64_hi = sum64_hi;
function sum64_lo(ah, al, bh, bl) {
var lo = al + bl;
return lo >>> 0;
}
exports.sum64_lo = sum64_lo;
function sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {
var carry = 0;
var lo = al;
lo = (lo + bl) >>> 0;
carry += lo < al ? 1 : 0;
lo = (lo + cl) >>> 0;
carry += lo < cl ? 1 : 0;
lo = (lo + dl) >>> 0;
carry += lo < dl ? 1 : 0;
var hi = ah + bh + ch + dh + carry;
return hi >>> 0;
}
exports.sum64_4_hi = sum64_4_hi;
function sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {
var lo = al + bl + cl + dl;
return lo >>> 0;
}
exports.sum64_4_lo = sum64_4_lo;
function sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
var carry = 0;
var lo = al;
lo = (lo + bl) >>> 0;
carry += lo < al ? 1 : 0;
lo = (lo + cl) >>> 0;
carry += lo < cl ? 1 : 0;
lo = (lo + dl) >>> 0;
carry += lo < dl ? 1 : 0;
lo = (lo + el) >>> 0;
carry += lo < el ? 1 : 0;
var hi = ah + bh + ch + dh + eh + carry;
return hi >>> 0;
}
exports.sum64_5_hi = sum64_5_hi;
function sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {
var lo = al + bl + cl + dl + el;
return lo >>> 0;
}
exports.sum64_5_lo = sum64_5_lo;
function rotr64_hi(ah, al, num) {
var r = (al << (32 - num)) | (ah >>> num);
return r >>> 0;
}
exports.rotr64_hi = rotr64_hi;
function rotr64_lo(ah, al, num) {
var r = (ah << (32 - num)) | (al >>> num);
return r >>> 0;
}
exports.rotr64_lo = rotr64_lo;
function shr64_hi(ah, al, num) {
return ah >>> num;
}
exports.shr64_hi = shr64_hi;
function shr64_lo(ah, al, num) {
var r = (ah << (32 - num)) | (al >>> num);
return r >>> 0;
}
exports.shr64_lo = shr64_lo;
/***/ }),
/***/ 9957:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var call = Function.prototype.call;
var $hasOwn = Object.prototype.hasOwnProperty;
var bind = __webpack_require__(6743);
/** @type {import('.')} */
module.exports = bind.call(call, $hasOwn);
/***/ }),
/***/ 2723:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var hash = __webpack_require__(7952);
var utils = __webpack_require__(4367);
var assert = __webpack_require__(3349);
function HmacDRBG(options) {
if (!(this instanceof HmacDRBG))
return new HmacDRBG(options);
this.hash = options.hash;
this.predResist = !!options.predResist;
this.outLen = this.hash.outSize;
this.minEntropy = options.minEntropy || this.hash.hmacStrength;
this._reseed = null;
this.reseedInterval = null;
this.K = null;
this.V = null;
var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');
var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');
var pers = utils.toArray(options.pers, options.persEnc || 'hex');
assert(entropy.length >= (this.minEntropy / 8),
'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
this._init(entropy, nonce, pers);
}
module.exports = HmacDRBG;
HmacDRBG.prototype._init = function init(entropy, nonce, pers) {
var seed = entropy.concat(nonce).concat(pers);
this.K = new Array(this.outLen / 8);
this.V = new Array(this.outLen / 8);
for (var i = 0; i < this.V.length; i++) {
this.K[i] = 0x00;
this.V[i] = 0x01;
}
this._update(seed);
this._reseed = 1;
this.reseedInterval = 0x1000000000000; // 2^48
};
HmacDRBG.prototype._hmac = function hmac() {
return new hash.hmac(this.hash, this.K);
};
HmacDRBG.prototype._update = function update(seed) {
var kmac = this._hmac()
.update(this.V)
.update([ 0x00 ]);
if (seed)
kmac = kmac.update(seed);
this.K = kmac.digest();
this.V = this._hmac().update(this.V).digest();
if (!seed)
return;
this.K = this._hmac()
.update(this.V)
.update([ 0x01 ])
.update(seed)
.digest();
this.V = this._hmac().update(this.V).digest();
};
HmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {
// Optional entropy enc
if (typeof entropyEnc !== 'string') {
addEnc = add;
add = entropyEnc;
entropyEnc = null;
}
entropy = utils.toArray(entropy, entropyEnc);
add = utils.toArray(add, addEnc);
assert(entropy.length >= (this.minEntropy / 8),
'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');
this._update(entropy.concat(add || []));
this._reseed = 1;
};
HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {
if (this._reseed > this.reseedInterval)
throw new Error('Reseed is required');
// Optional encoding
if (typeof enc !== 'string') {
addEnc = add;
add = enc;
enc = null;
}
// Optional additional data
if (add) {
add = utils.toArray(add, addEnc || 'hex');
this._update(add);
}
var temp = [];
while (temp.length < len) {
this.V = this._hmac().update(this.V).digest();
temp = temp.concat(this.V);
}
var res = temp.slice(0, len);
this._update(add);
this._reseed++;
return utils.encode(res, enc);
};
/***/ }),
/***/ 251:
/***/ ((__unused_webpack_module, exports) => {
/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */
exports.read = function (buffer, offset, isLE, mLen, nBytes) {
var e, m
var eLen = (nBytes * 8) - mLen - 1
var eMax = (1 << eLen) - 1
var eBias = eMax >> 1
var nBits = -7
var i = isLE ? (nBytes - 1) : 0
var d = isLE ? -1 : 1
var s = buffer[offset + i]
i += d
e = s & ((1 << (-nBits)) - 1)
s >>= (-nBits)
nBits += eLen
for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}
m = e & ((1 << (-nBits)) - 1)
e >>= (-nBits)
nBits += mLen
for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}
if (e === 0) {
e = 1 - eBias
} else if (e === eMax) {
return m ? NaN : ((s ? -1 : 1) * Infinity)
} else {
m = m + Math.pow(2, mLen)
e = e - eBias
}
return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
}
exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
var e, m, c
var eLen = (nBytes * 8) - mLen - 1
var eMax = (1 << eLen) - 1
var eBias = eMax >> 1
var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
var i = isLE ? 0 : (nBytes - 1)
var d = isLE ? 1 : -1
var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
value = Math.abs(value)
if (isNaN(value) || value === Infinity) {
m = isNaN(value) ? 1 : 0
e = eMax
} else {
e = Math.floor(Math.log(value) / Math.LN2)
if (value * (c = Math.pow(2, -e)) < 1) {
e--
c *= 2
}
if (e + eBias >= 1) {
value += rt / c
} else {
value += rt * Math.pow(2, 1 - eBias)
}
if (value * c >= 2) {
e++
c /= 2
}
if (e + eBias >= eMax) {
m = 0
e = eMax
} else if (e + eBias >= 1) {
m = ((value * c) - 1) * Math.pow(2, mLen)
e = e + eBias
} else {
m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
e = 0
}
}
for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
e = (e << mLen) | m
eLen += mLen
for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
buffer[offset + i - d] |= s * 128
}
/***/ }),
/***/ 6698:
/***/ ((module) => {
if (typeof Object.create === 'function') {
// implementation from standard node.js 'util' module
module.exports = function inherits(ctor, superCtor) {
if (superCtor) {
ctor.super_ = superCtor
ctor.prototype = Object.create(superCtor.prototype, {
constructor: {
value: ctor,
enumerable: false,
writable: true,
configurable: true
}
})
}
};
} else {
// old school shim for old browsers
module.exports = function inherits(ctor, superCtor) {
if (superCtor) {
ctor.super_ = superCtor
var TempCtor = function () {}
TempCtor.prototype = superCtor.prototype
ctor.prototype = new TempCtor()
ctor.prototype.constructor = ctor
}
}
}
/***/ }),
/***/ 7244:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var hasToStringTag = __webpack_require__(9092)();
var callBound = __webpack_require__(8075);
var $toString = callBound('Object.prototype.toString');
var isStandardArguments = function isArguments(value) {
if (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {
return false;
}
return $toString(value) === '[object Arguments]';
};
var isLegacyArguments = function isArguments(value) {
if (isStandardArguments(value)) {
return true;
}
return value !== null &&
typeof value === 'object' &&
typeof value.length === 'number' &&
value.length >= 0 &&
$toString(value) !== '[object Array]' &&
$toString(value.callee) === '[object Function]';
};
var supportsStandardArguments = (function () {
return isStandardArguments(arguments);
}());
isStandardArguments.isLegacyArguments = isLegacyArguments; // for tests
module.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;
/***/ }),
/***/ 9600:
/***/ ((module) => {
"use strict";
var fnToStr = Function.prototype.toString;
var reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;
var badArrayLike;
var isCallableMarker;
if (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {
try {
badArrayLike = Object.defineProperty({}, 'length', {
get: function () {
throw isCallableMarker;
}
});
isCallableMarker = {};
// eslint-disable-next-line no-throw-literal
reflectApply(function () { throw 42; }, null, badArrayLike);
} catch (_) {
if (_ !== isCallableMarker) {
reflectApply = null;
}
}
} else {
reflectApply = null;
}
var constructorRegex = /^\s*class\b/;
var isES6ClassFn = function isES6ClassFunction(value) {
try {
var fnStr = fnToStr.call(value);
return constructorRegex.test(fnStr);
} catch (e) {
return false; // not a function
}
};
var tryFunctionObject = function tryFunctionToStr(value) {
try {
if (isES6ClassFn(value)) { return false; }
fnToStr.call(value);
return true;
} catch (e) {
return false;
}
};
var toStr = Object.prototype.toString;
var objectClass = '[object Object]';
var fnClass = '[object Function]';
var genClass = '[object GeneratorFunction]';
var ddaClass = '[object HTMLAllCollection]'; // IE 11
var ddaClass2 = '[object HTML document.all class]';
var ddaClass3 = '[object HTMLCollection]'; // IE 9-10
var hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`
var isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing
var isDDA = function isDocumentDotAll() { return false; };
if (typeof document === 'object') {
// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly
var all = document.all;
if (toStr.call(all) === toStr.call(document.all)) {
isDDA = function isDocumentDotAll(value) {
/* globals document: false */
// in IE 6-8, typeof document.all is "object" and it's truthy
if ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {
try {
var str = toStr.call(value);
return (
str === ddaClass
|| str === ddaClass2
|| str === ddaClass3 // opera 12.16
|| str === objectClass // IE 6-8
) && value('') == null; // eslint-disable-line eqeqeq
} catch (e) { /**/ }
}
return false;
};
}
}
module.exports = reflectApply
? function isCallable(value) {
if (isDDA(value)) { return true; }
if (!value) { return false; }
if (typeof value !== 'function' && typeof value !== 'object') { return false; }
try {
reflectApply(value, null, badArrayLike);
} catch (e) {
if (e !== isCallableMarker) { return false; }
}
return !isES6ClassFn(value) && tryFunctionObject(value);
}
: function isCallable(value) {
if (isDDA(value)) { return true; }
if (!value) { return false; }
if (typeof value !== 'function' && typeof value !== 'object') { return false; }
if (hasToStringTag) { return tryFunctionObject(value); }
if (isES6ClassFn(value)) { return false; }
var strClass = toStr.call(value);
if (strClass !== fnClass && strClass !== genClass && !(/^\[object HTML/).test(strClass)) { return false; }
return tryFunctionObject(value);
};
/***/ }),
/***/ 8184:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var toStr = Object.prototype.toString;
var fnToStr = Function.prototype.toString;
var isFnRegex = /^\s*(?:function)?\*/;
var hasToStringTag = __webpack_require__(9092)();
var getProto = Object.getPrototypeOf;
var getGeneratorFunc = function () { // eslint-disable-line consistent-return
if (!hasToStringTag) {
return false;
}
try {
return Function('return function*() {}')();
} catch (e) {
}
};
var GeneratorFunction;
module.exports = function isGeneratorFunction(fn) {
if (typeof fn !== 'function') {
return false;
}
if (isFnRegex.test(fnToStr.call(fn))) {
return true;
}
if (!hasToStringTag) {
var str = toStr.call(fn);
return str === '[object GeneratorFunction]';
}
if (!getProto) {
return false;
}
if (typeof GeneratorFunction === 'undefined') {
var generatorFunc = getGeneratorFunc();
GeneratorFunction = generatorFunc ? getProto(generatorFunc) : false;
}
return getProto(fn) === GeneratorFunction;
};
/***/ }),
/***/ 3003:
/***/ ((module) => {
"use strict";
/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */
module.exports = function isNaN(value) {
return value !== value;
};
/***/ }),
/***/ 4133:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var callBind = __webpack_require__(487);
var define = __webpack_require__(8452);
var implementation = __webpack_require__(3003);
var getPolyfill = __webpack_require__(6642);
var shim = __webpack_require__(2464);
var polyfill = callBind(getPolyfill(), Number);
/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */
define(polyfill, {
getPolyfill: getPolyfill,
implementation: implementation,
shim: shim
});
module.exports = polyfill;
/***/ }),
/***/ 6642:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var implementation = __webpack_require__(3003);
module.exports = function getPolyfill() {
if (Number.isNaN && Number.isNaN(NaN) && !Number.isNaN('a')) {
return Number.isNaN;
}
return implementation;
};
/***/ }),
/***/ 2464:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var define = __webpack_require__(8452);
var getPolyfill = __webpack_require__(6642);
/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */
module.exports = function shimNumberIsNaN() {
var polyfill = getPolyfill();
define(Number, { isNaN: polyfill }, {
isNaN: function testIsNaN() {
return Number.isNaN !== polyfill;
}
});
return polyfill;
};
/***/ }),
/***/ 5680:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var whichTypedArray = __webpack_require__(5767);
/** @type {import('.')} */
module.exports = function isTypedArray(value) {
return !!whichTypedArray(value);
};
/***/ }),
/***/ 1176:
/***/ ((module, exports, __webpack_require__) => {
var __WEBPACK_AMD_DEFINE_RESULT__;/**
* [js-sha3]{@link https://github.com/emn178/js-sha3}
*
* @version 0.8.0
* @author Chen, Yi-Cyuan [emn178@gmail.com]
* @copyright Chen, Yi-Cyuan 2015-2018
* @license MIT
*/
/*jslint bitwise: true */
(function () {
'use strict';
var INPUT_ERROR = 'input is invalid type';
var FINALIZE_ERROR = 'finalize already called';
var WINDOW = typeof window === 'object';
var root = WINDOW ? window : {};
if (root.JS_SHA3_NO_WINDOW) {
WINDOW = false;
}
var WEB_WORKER = !WINDOW && typeof self === 'object';
var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;
if (NODE_JS) {
root = __webpack_require__.g;
} else if (WEB_WORKER) {
root = self;
}
var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && "object" === 'object' && module.exports;
var AMD = true && __webpack_require__.amdO;
var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';
var HEX_CHARS = '0123456789abcdef'.split('');
var SHAKE_PADDING = [31, 7936, 2031616, 520093696];
var CSHAKE_PADDING = [4, 1024, 262144, 67108864];
var KECCAK_PADDING = [1, 256, 65536, 16777216];
var PADDING = [6, 1536, 393216, 100663296];
var SHIFT = [0, 8, 16, 24];
var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,
0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,
2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,
2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,
2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];
var BITS = [224, 256, 384, 512];
var SHAKE_BITS = [128, 256];
var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];
var CSHAKE_BYTEPAD = {
'128': 168,
'256': 136
};
if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {
Array.isArray = function (obj) {
return Object.prototype.toString.call(obj) === '[object Array]';
};
}
if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {
ArrayBuffer.isView = function (obj) {
return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;
};
}
var createOutputMethod = function (bits, padding, outputType) {
return function (message) {
return new Keccak(bits, padding, bits).update(message)[outputType]();
};
};
var createShakeOutputMethod = function (bits, padding, outputType) {
return function (message, outputBits) {
return new Keccak(bits, padding, outputBits).update(message)[outputType]();
};
};
var createCshakeOutputMethod = function (bits, padding, outputType) {
return function (message, outputBits, n, s) {
return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();
};
};
var createKmacOutputMethod = function (bits, padding, outputType) {
return function (key, message, outputBits, s) {
return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();
};
};
var createOutputMethods = function (method, createMethod, bits, padding) {
for (var i = 0; i < OUTPUT_TYPES.length; ++i) {
var type = OUTPUT_TYPES[i];
method[type] = createMethod(bits, padding, type);
}
return method;
};
var createMethod = function (bits, padding) {
var method = createOutputMethod(bits, padding, 'hex');
method.create = function () {
return new Keccak(bits, padding, bits);
};
method.update = function (message) {
return method.create().update(message);
};
return createOutputMethods(method, createOutputMethod, bits, padding);
};
var createShakeMethod = function (bits, padding) {
var method = createShakeOutputMethod(bits, padding, 'hex');
method.create = function (outputBits) {
return new Keccak(bits, padding, outputBits);
};
method.update = function (message, outputBits) {
return method.create(outputBits).update(message);
};
return createOutputMethods(method, createShakeOutputMethod, bits, padding);
};
var createCshakeMethod = function (bits, padding) {
var w = CSHAKE_BYTEPAD[bits];
var method = createCshakeOutputMethod(bits, padding, 'hex');
method.create = function (outputBits, n, s) {
if (!n && !s) {
return methods['shake' + bits].create(outputBits);
} else {
return new Keccak(bits, padding, outputBits).bytepad([n, s], w);
}
};
method.update = function (message, outputBits, n, s) {
return method.create(outputBits, n, s).update(message);
};
return createOutputMethods(method, createCshakeOutputMethod, bits, padding);
};
var createKmacMethod = function (bits, padding) {
var w = CSHAKE_BYTEPAD[bits];
var method = createKmacOutputMethod(bits, padding, 'hex');
method.create = function (key, outputBits, s) {
return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);
};
method.update = function (key, message, outputBits, s) {
return method.create(key, outputBits, s).update(message);
};
return createOutputMethods(method, createKmacOutputMethod, bits, padding);
};
var algorithms = [
{ name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },
{ name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },
{ name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },
{ name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },
{ name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }
];
var methods = {}, methodNames = [];
for (var i = 0; i < algorithms.length; ++i) {
var algorithm = algorithms[i];
var bits = algorithm.bits;
for (var j = 0; j < bits.length; ++j) {
var methodName = algorithm.name + '_' + bits[j];
methodNames.push(methodName);
methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);
if (algorithm.name !== 'sha3') {
var newMethodName = algorithm.name + bits[j];
methodNames.push(newMethodName);
methods[newMethodName] = methods[methodName];
}
}
}
function Keccak(bits, padding, outputBits) {
this.blocks = [];
this.s = [];
this.padding = padding;
this.outputBits = outputBits;
this.reset = true;
this.finalized = false;
this.block = 0;
this.start = 0;
this.blockCount = (1600 - (bits << 1)) >> 5;
this.byteCount = this.blockCount << 2;
this.outputBlocks = outputBits >> 5;
this.extraBytes = (outputBits & 31) >> 3;
for (var i = 0; i < 50; ++i) {
this.s[i] = 0;
}
}
Keccak.prototype.update = function (message) {
if (this.finalized) {
throw new Error(FINALIZE_ERROR);
}
var notString, type = typeof message;
if (type !== 'string') {
if (type === 'object') {
if (message === null) {
throw new Error(INPUT_ERROR);
} else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {
message = new Uint8Array(message);
} else if (!Array.isArray(message)) {
if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {
throw new Error(INPUT_ERROR);
}
}
} else {
throw new Error(INPUT_ERROR);
}
notString = true;
}
var blocks = this.blocks, byteCount = this.byteCount, length = message.length,
blockCount = this.blockCount, index = 0, s = this.s, i, code;
while (index < length) {
if (this.reset) {
this.reset = false;
blocks[0] = this.block;
for (i = 1; i < blockCount + 1; ++i) {
blocks[i] = 0;
}
}
if (notString) {
for (i = this.start; index < length && i < byteCount; ++index) {
blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];
}
} else {
for (i = this.start; index < length && i < byteCount; ++index) {
code = message.charCodeAt(index);
if (code < 0x80) {
blocks[i >> 2] |= code << SHIFT[i++ & 3];
} else if (code < 0x800) {
blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];
blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];
} else if (code < 0xd800 || code >= 0xe000) {
blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];
blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];
blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];
} else {
code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));
blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];
blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];
blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];
blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];
}
}
}
this.lastByteIndex = i;
if (i >= byteCount) {
this.start = i - byteCount;
this.block = blocks[blockCount];
for (i = 0; i < blockCount; ++i) {
s[i] ^= blocks[i];
}
f(s);
this.reset = true;
} else {
this.start = i;
}
}
return this;
};
Keccak.prototype.encode = function (x, right) {
var o = x & 255, n = 1;
var bytes = [o];
x = x >> 8;
o = x & 255;
while (o > 0) {
bytes.unshift(o);
x = x >> 8;
o = x & 255;
++n;
}
if (right) {
bytes.push(n);
} else {
bytes.unshift(n);
}
this.update(bytes);
return bytes.length;
};
Keccak.prototype.encodeString = function (str) {
var notString, type = typeof str;
if (type !== 'string') {
if (type === 'object') {
if (str === null) {
throw new Error(INPUT_ERROR);
} else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {
str = new Uint8Array(str);
} else if (!Array.isArray(str)) {
if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {
throw new Error(INPUT_ERROR);
}
}
} else {
throw new Error(INPUT_ERROR);
}
notString = true;
}
var bytes = 0, length = str.length;
if (notString) {
bytes = length;
} else {
for (var i = 0; i < str.length; ++i) {
var code = str.charCodeAt(i);
if (code < 0x80) {
bytes += 1;
} else if (code < 0x800) {
bytes += 2;
} else if (code < 0xd800 || code >= 0xe000) {
bytes += 3;
} else {
code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));
bytes += 4;
}
}
}
bytes += this.encode(bytes * 8);
this.update(str);
return bytes;
};
Keccak.prototype.bytepad = function (strs, w) {
var bytes = this.encode(w);
for (var i = 0; i < strs.length; ++i) {
bytes += this.encodeString(strs[i]);
}
var paddingBytes = w - bytes % w;
var zeros = [];
zeros.length = paddingBytes;
this.update(zeros);
return this;
};
Keccak.prototype.finalize = function () {
if (this.finalized) {
return;
}
this.finalized = true;
var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;
blocks[i >> 2] |= this.padding[i & 3];
if (this.lastByteIndex === this.byteCount) {
blocks[0] = blocks[blockCount];
for (i = 1; i < blockCount + 1; ++i) {
blocks[i] = 0;
}
}
blocks[blockCount - 1] |= 0x80000000;
for (i = 0; i < blockCount; ++i) {
s[i] ^= blocks[i];
}
f(s);
};
Keccak.prototype.toString = Keccak.prototype.hex = function () {
this.finalize();
var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,
extraBytes = this.extraBytes, i = 0, j = 0;
var hex = '', block;
while (j < outputBlocks) {
for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {
block = s[i];
hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +
HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +
HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +
HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];
}
if (j % blockCount === 0) {
f(s);
i = 0;
}
}
if (extraBytes) {
block = s[i];
hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];
if (extraBytes > 1) {
hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];
}
if (extraBytes > 2) {
hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];
}
}
return hex;
};
Keccak.prototype.arrayBuffer = function () {
this.finalize();
var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,
extraBytes = this.extraBytes, i = 0, j = 0;
var bytes = this.outputBits >> 3;
var buffer;
if (extraBytes) {
buffer = new ArrayBuffer((outputBlocks + 1) << 2);
} else {
buffer = new ArrayBuffer(bytes);
}
var array = new Uint32Array(buffer);
while (j < outputBlocks) {
for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {
array[j] = s[i];
}
if (j % blockCount === 0) {
f(s);
}
}
if (extraBytes) {
array[i] = s[i];
buffer = buffer.slice(0, bytes);
}
return buffer;
};
Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;
Keccak.prototype.digest = Keccak.prototype.array = function () {
this.finalize();
var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,
extraBytes = this.extraBytes, i = 0, j = 0;
var array = [], offset, block;
while (j < outputBlocks) {
for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {
offset = j << 2;
block = s[i];
array[offset] = block & 0xFF;
array[offset + 1] = (block >> 8) & 0xFF;
array[offset + 2] = (block >> 16) & 0xFF;
array[offset + 3] = (block >> 24) & 0xFF;
}
if (j % blockCount === 0) {
f(s);
}
}
if (extraBytes) {
offset = j << 2;
block = s[i];
array[offset] = block & 0xFF;
if (extraBytes > 1) {
array[offset + 1] = (block >> 8) & 0xFF;
}
if (extraBytes > 2) {
array[offset + 2] = (block >> 16) & 0xFF;
}
}
return array;
};
function Kmac(bits, padding, outputBits) {
Keccak.call(this, bits, padding, outputBits);
}
Kmac.prototype = new Keccak();
Kmac.prototype.finalize = function () {
this.encode(this.outputBits, true);
return Keccak.prototype.finalize.call(this);
};
var f = function (s) {
var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,
b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,
b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,
b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;
for (n = 0; n < 48; n += 2) {
c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];
c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];
c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];
c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];
c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];
c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];
c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];
c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];
c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];
c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];
h = c8 ^ ((c2 << 1) | (c3 >>> 31));
l = c9 ^ ((c3 << 1) | (c2 >>> 31));
s[0] ^= h;
s[1] ^= l;
s[10] ^= h;
s[11] ^= l;
s[20] ^= h;
s[21] ^= l;
s[30] ^= h;
s[31] ^= l;
s[40] ^= h;
s[41] ^= l;
h = c0 ^ ((c4 << 1) | (c5 >>> 31));
l = c1 ^ ((c5 << 1) | (c4 >>> 31));
s[2] ^= h;
s[3] ^= l;
s[12] ^= h;
s[13] ^= l;
s[22] ^= h;
s[23] ^= l;
s[32] ^= h;
s[33] ^= l;
s[42] ^= h;
s[43] ^= l;
h = c2 ^ ((c6 << 1) | (c7 >>> 31));
l = c3 ^ ((c7 << 1) | (c6 >>> 31));
s[4] ^= h;
s[5] ^= l;
s[14] ^= h;
s[15] ^= l;
s[24] ^= h;
s[25] ^= l;
s[34] ^= h;
s[35] ^= l;
s[44] ^= h;
s[45] ^= l;
h = c4 ^ ((c8 << 1) | (c9 >>> 31));
l = c5 ^ ((c9 << 1) | (c8 >>> 31));
s[6] ^= h;
s[7] ^= l;
s[16] ^= h;
s[17] ^= l;
s[26] ^= h;
s[27] ^= l;
s[36] ^= h;
s[37] ^= l;
s[46] ^= h;
s[47] ^= l;
h = c6 ^ ((c0 << 1) | (c1 >>> 31));
l = c7 ^ ((c1 << 1) | (c0 >>> 31));
s[8] ^= h;
s[9] ^= l;
s[18] ^= h;
s[19] ^= l;
s[28] ^= h;
s[29] ^= l;
s[38] ^= h;
s[39] ^= l;
s[48] ^= h;
s[49] ^= l;
b0 = s[0];
b1 = s[1];
b32 = (s[11] << 4) | (s[10] >>> 28);
b33 = (s[10] << 4) | (s[11] >>> 28);
b14 = (s[20] << 3) | (s[21] >>> 29);
b15 = (s[21] << 3) | (s[20] >>> 29);
b46 = (s[31] << 9) | (s[30] >>> 23);
b47 = (s[30] << 9) | (s[31] >>> 23);
b28 = (s[40] << 18) | (s[41] >>> 14);
b29 = (s[41] << 18) | (s[40] >>> 14);
b20 = (s[2] << 1) | (s[3] >>> 31);
b21 = (s[3] << 1) | (s[2] >>> 31);
b2 = (s[13] << 12) | (s[12] >>> 20);
b3 = (s[12] << 12) | (s[13] >>> 20);
b34 = (s[22] << 10) | (s[23] >>> 22);
b35 = (s[23] << 10) | (s[22] >>> 22);
b16 = (s[33] << 13) | (s[32] >>> 19);
b17 = (s[32] << 13) | (s[33] >>> 19);
b48 = (s[42] << 2) | (s[43] >>> 30);
b49 = (s[43] << 2) | (s[42] >>> 30);
b40 = (s[5] << 30) | (s[4] >>> 2);
b41 = (s[4] << 30) | (s[5] >>> 2);
b22 = (s[14] << 6) | (s[15] >>> 26);
b23 = (s[15] << 6) | (s[14] >>> 26);
b4 = (s[25] << 11) | (s[24] >>> 21);
b5 = (s[24] << 11) | (s[25] >>> 21);
b36 = (s[34] << 15) | (s[35] >>> 17);
b37 = (s[35] << 15) | (s[34] >>> 17);
b18 = (s[45] << 29) | (s[44] >>> 3);
b19 = (s[44] << 29) | (s[45] >>> 3);
b10 = (s[6] << 28) | (s[7] >>> 4);
b11 = (s[7] << 28) | (s[6] >>> 4);
b42 = (s[17] << 23) | (s[16] >>> 9);
b43 = (s[16] << 23) | (s[17] >>> 9);
b24 = (s[26] << 25) | (s[27] >>> 7);
b25 = (s[27] << 25) | (s[26] >>> 7);
b6 = (s[36] << 21) | (s[37] >>> 11);
b7 = (s[37] << 21) | (s[36] >>> 11);
b38 = (s[47] << 24) | (s[46] >>> 8);
b39 = (s[46] << 24) | (s[47] >>> 8);
b30 = (s[8] << 27) | (s[9] >>> 5);
b31 = (s[9] << 27) | (s[8] >>> 5);
b12 = (s[18] << 20) | (s[19] >>> 12);
b13 = (s[19] << 20) | (s[18] >>> 12);
b44 = (s[29] << 7) | (s[28] >>> 25);
b45 = (s[28] << 7) | (s[29] >>> 25);
b26 = (s[38] << 8) | (s[39] >>> 24);
b27 = (s[39] << 8) | (s[38] >>> 24);
b8 = (s[48] << 14) | (s[49] >>> 18);
b9 = (s[49] << 14) | (s[48] >>> 18);
s[0] = b0 ^ (~b2 & b4);
s[1] = b1 ^ (~b3 & b5);
s[10] = b10 ^ (~b12 & b14);
s[11] = b11 ^ (~b13 & b15);
s[20] = b20 ^ (~b22 & b24);
s[21] = b21 ^ (~b23 & b25);
s[30] = b30 ^ (~b32 & b34);
s[31] = b31 ^ (~b33 & b35);
s[40] = b40 ^ (~b42 & b44);
s[41] = b41 ^ (~b43 & b45);
s[2] = b2 ^ (~b4 & b6);
s[3] = b3 ^ (~b5 & b7);
s[12] = b12 ^ (~b14 & b16);
s[13] = b13 ^ (~b15 & b17);
s[22] = b22 ^ (~b24 & b26);
s[23] = b23 ^ (~b25 & b27);
s[32] = b32 ^ (~b34 & b36);
s[33] = b33 ^ (~b35 & b37);
s[42] = b42 ^ (~b44 & b46);
s[43] = b43 ^ (~b45 & b47);
s[4] = b4 ^ (~b6 & b8);
s[5] = b5 ^ (~b7 & b9);
s[14] = b14 ^ (~b16 & b18);
s[15] = b15 ^ (~b17 & b19);
s[24] = b24 ^ (~b26 & b28);
s[25] = b25 ^ (~b27 & b29);
s[34] = b34 ^ (~b36 & b38);
s[35] = b35 ^ (~b37 & b39);
s[44] = b44 ^ (~b46 & b48);
s[45] = b45 ^ (~b47 & b49);
s[6] = b6 ^ (~b8 & b0);
s[7] = b7 ^ (~b9 & b1);
s[16] = b16 ^ (~b18 & b10);
s[17] = b17 ^ (~b19 & b11);
s[26] = b26 ^ (~b28 & b20);
s[27] = b27 ^ (~b29 & b21);
s[36] = b36 ^ (~b38 & b30);
s[37] = b37 ^ (~b39 & b31);
s[46] = b46 ^ (~b48 & b40);
s[47] = b47 ^ (~b49 & b41);
s[8] = b8 ^ (~b0 & b2);
s[9] = b9 ^ (~b1 & b3);
s[18] = b18 ^ (~b10 & b12);
s[19] = b19 ^ (~b11 & b13);
s[28] = b28 ^ (~b20 & b22);
s[29] = b29 ^ (~b21 & b23);
s[38] = b38 ^ (~b30 & b32);
s[39] = b39 ^ (~b31 & b33);
s[48] = b48 ^ (~b40 & b42);
s[49] = b49 ^ (~b41 & b43);
s[0] ^= RC[n];
s[1] ^= RC[n + 1];
}
};
if (COMMON_JS) {
module.exports = methods;
} else {
for (i = 0; i < methodNames.length; ++i) {
root[methodNames[i]] = methods[methodNames[i]];
}
if (AMD) {
!(__WEBPACK_AMD_DEFINE_RESULT__ = (function () {
return methods;
}).call(exports, __webpack_require__, exports, module),
__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
}
}
})();
/***/ }),
/***/ 8276:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var inherits = __webpack_require__(6698)
var HashBase = __webpack_require__(3726)
var Buffer = (__webpack_require__(2861).Buffer)
var ARRAY16 = new Array(16)
function MD5 () {
HashBase.call(this, 64)
// state
this._a = 0x67452301
this._b = 0xefcdab89
this._c = 0x98badcfe
this._d = 0x10325476
}
inherits(MD5, HashBase)
MD5.prototype._update = function () {
var M = ARRAY16
for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)
var a = this._a
var b = this._b
var c = this._c
var d = this._d
a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)
d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)
c = fnF(c, d, a, b, M[2], 0x242070db, 17)
b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)
a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)
d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)
c = fnF(c, d, a, b, M[6], 0xa8304613, 17)
b = fnF(b, c, d, a, M[7], 0xfd469501, 22)
a = fnF(a, b, c, d, M[8], 0x698098d8, 7)
d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)
c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)
b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)
a = fnF(a, b, c, d, M[12], 0x6b901122, 7)
d = fnF(d, a, b, c, M[13], 0xfd987193, 12)
c = fnF(c, d, a, b, M[14], 0xa679438e, 17)
b = fnF(b, c, d, a, M[15], 0x49b40821, 22)
a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)
d = fnG(d, a, b, c, M[6], 0xc040b340, 9)
c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)
b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)
a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)
d = fnG(d, a, b, c, M[10], 0x02441453, 9)
c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)
b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)
a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)
d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)
c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)
b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)
a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)
d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)
c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)
b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)
a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)
d = fnH(d, a, b, c, M[8], 0x8771f681, 11)
c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)
b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)
a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)
d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)
c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)
b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)
a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)
d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)
c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)
b = fnH(b, c, d, a, M[6], 0x04881d05, 23)
a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)
d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)
c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)
b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)
a = fnI(a, b, c, d, M[0], 0xf4292244, 6)
d = fnI(d, a, b, c, M[7], 0x432aff97, 10)
c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)
b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)
a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)
d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)
c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)
b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)
a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)
d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)
c = fnI(c, d, a, b, M[6], 0xa3014314, 15)
b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)
a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)
d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)
c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)
b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)
this._a = (this._a + a) | 0
this._b = (this._b + b) | 0
this._c = (this._c + c) | 0
this._d = (this._d + d) | 0
}
MD5.prototype._digest = function () {
// create padding and handle blocks
this._block[this._blockOffset++] = 0x80
if (this._blockOffset > 56) {
this._block.fill(0, this._blockOffset, 64)
this._update()
this._blockOffset = 0
}
this._block.fill(0, this._blockOffset, 56)
this._block.writeUInt32LE(this._length[0], 56)
this._block.writeUInt32LE(this._length[1], 60)
this._update()
// produce result
var buffer = Buffer.allocUnsafe(16)
buffer.writeInt32LE(this._a, 0)
buffer.writeInt32LE(this._b, 4)
buffer.writeInt32LE(this._c, 8)
buffer.writeInt32LE(this._d, 12)
return buffer
}
function rotl (x, n) {
return (x << n) | (x >>> (32 - n))
}
function fnF (a, b, c, d, m, k, s) {
return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0
}
function fnG (a, b, c, d, m, k, s) {
return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0
}
function fnH (a, b, c, d, m, k, s) {
return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0
}
function fnI (a, b, c, d, m, k, s) {
return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0
}
module.exports = MD5
/***/ }),
/***/ 3726:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var Buffer = (__webpack_require__(2861).Buffer)
var Transform = (__webpack_require__(8399).Transform)
var inherits = __webpack_require__(6698)
function throwIfNotStringOrBuffer (val, prefix) {
if (!Buffer.isBuffer(val) && typeof val !== 'string') {
throw new TypeError(prefix + ' must be a string or a buffer')
}
}
function HashBase (blockSize) {
Transform.call(this)
this._block = Buffer.allocUnsafe(blockSize)
this._blockSize = blockSize
this._blockOffset = 0
this._length = [0, 0, 0, 0]
this._finalized = false
}
inherits(HashBase, Transform)
HashBase.prototype._transform = function (chunk, encoding, callback) {
var error = null
try {
this.update(chunk, encoding)
} catch (err) {
error = err
}
callback(error)
}
HashBase.prototype._flush = function (callback) {
var error = null
try {
this.push(this.digest())
} catch (err) {
error = err
}
callback(error)
}
HashBase.prototype.update = function (data, encoding) {
throwIfNotStringOrBuffer(data, 'Data')
if (this._finalized) throw new Error('Digest already called')
if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)
// consume data
var block = this._block
var offset = 0
while (this._blockOffset + data.length - offset >= this._blockSize) {
for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]
this._update()
this._blockOffset = 0
}
while (offset < data.length) block[this._blockOffset++] = data[offset++]
// update length
for (var j = 0, carry = data.length * 8; carry > 0; ++j) {
this._length[j] += carry
carry = (this._length[j] / 0x0100000000) | 0
if (carry > 0) this._length[j] -= 0x0100000000 * carry
}
return this
}
HashBase.prototype._update = function () {
throw new Error('_update is not implemented')
}
HashBase.prototype.digest = function (encoding) {
if (this._finalized) throw new Error('Digest already called')
this._finalized = true
var digest = this._digest()
if (encoding !== undefined) digest = digest.toString(encoding)
// reset state
this._block.fill(0)
this._blockOffset = 0
for (var i = 0; i < 4; ++i) this._length[i] = 0
return digest
}
HashBase.prototype._digest = function () {
throw new Error('_digest is not implemented')
}
module.exports = HashBase
/***/ }),
/***/ 2244:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var bn = __webpack_require__(1158);
var brorand = __webpack_require__(5037);
function MillerRabin(rand) {
this.rand = rand || new brorand.Rand();
}
module.exports = MillerRabin;
MillerRabin.create = function create(rand) {
return new MillerRabin(rand);
};
MillerRabin.prototype._randbelow = function _randbelow(n) {
var len = n.bitLength();
var min_bytes = Math.ceil(len / 8);
// Generage random bytes until a number less than n is found.
// This ensures that 0..n-1 have an equal probability of being selected.
do
var a = new bn(this.rand.generate(min_bytes));
while (a.cmp(n) >= 0);
return a;
};
MillerRabin.prototype._randrange = function _randrange(start, stop) {
// Generate a random number greater than or equal to start and less than stop.
var size = stop.sub(start);
return start.add(this._randbelow(size));
};
MillerRabin.prototype.test = function test(n, k, cb) {
var len = n.bitLength();
var red = bn.mont(n);
var rone = new bn(1).toRed(red);
if (!k)
k = Math.max(1, (len / 48) | 0);
// Find d and s, (n - 1) = (2 ^ s) * d;
var n1 = n.subn(1);
for (var s = 0; !n1.testn(s); s++) {}
var d = n.shrn(s);
var rn1 = n1.toRed(red);
var prime = true;
for (; k > 0; k--) {
var a = this._randrange(new bn(2), n1);
if (cb)
cb(a);
var x = a.toRed(red).redPow(d);
if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)
continue;
for (var i = 1; i < s; i++) {
x = x.redSqr();
if (x.cmp(rone) === 0)
return false;
if (x.cmp(rn1) === 0)
break;
}
if (i === s)
return false;
}
return prime;
};
MillerRabin.prototype.getDivisor = function getDivisor(n, k) {
var len = n.bitLength();
var red = bn.mont(n);
var rone = new bn(1).toRed(red);
if (!k)
k = Math.max(1, (len / 48) | 0);
// Find d and s, (n - 1) = (2 ^ s) * d;
var n1 = n.subn(1);
for (var s = 0; !n1.testn(s); s++) {}
var d = n.shrn(s);
var rn1 = n1.toRed(red);
for (; k > 0; k--) {
var a = this._randrange(new bn(2), n1);
var g = n.gcd(a);
if (g.cmpn(1) !== 0)
return g;
var x = a.toRed(red).redPow(d);
if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)
continue;
for (var i = 1; i < s; i++) {
x = x.redSqr();
if (x.cmp(rone) === 0)
return x.fromRed().subn(1).gcd(n);
if (x.cmp(rn1) === 0)
break;
}
if (i === s) {
x = x.redSqr();
return x.fromRed().subn(1).gcd(n);
}
}
return false;
};
/***/ }),
/***/ 1158:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
/* module decorator */ module = __webpack_require__.nmd(module);
(function (module, exports) {
'use strict';
// Utils
function assert (val, msg) {
if (!val) throw new Error(msg || 'Assertion failed');
}
// Could use `inherits` module, but don't want to move from single file
// architecture yet.
function inherits (ctor, superCtor) {
ctor.super_ = superCtor;
var TempCtor = function () {};
TempCtor.prototype = superCtor.prototype;
ctor.prototype = new TempCtor();
ctor.prototype.constructor = ctor;
}
// BN
function BN (number, base, endian) {
if (BN.isBN(number)) {
return number;
}
this.negative = 0;
this.words = null;
this.length = 0;
// Reduction context
this.red = null;
if (number !== null) {
if (base === 'le' || base === 'be') {
endian = base;
base = 10;
}
this._init(number || 0, base || 10, endian || 'be');
}
}
if (typeof module === 'object') {
module.exports = BN;
} else {
exports.BN = BN;
}
BN.BN = BN;
BN.wordSize = 26;
var Buffer;
try {
if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {
Buffer = window.Buffer;
} else {
Buffer = (__webpack_require__(4688).Buffer);
}
} catch (e) {
}
BN.isBN = function isBN (num) {
if (num instanceof BN) {
return true;
}
return num !== null && typeof num === 'object' &&
num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);
};
BN.max = function max (left, right) {
if (left.cmp(right) > 0) return left;
return right;
};
BN.min = function min (left, right) {
if (left.cmp(right) < 0) return left;
return right;
};
BN.prototype._init = function init (number, base, endian) {
if (typeof number === 'number') {
return this._initNumber(number, base, endian);
}
if (typeof number === 'object') {
return this._initArray(number, base, endian);
}
if (base === 'hex') {
base = 16;
}
assert(base === (base | 0) && base >= 2 && base <= 36);
number = number.toString().replace(/\s+/g, '');
var start = 0;
if (number[0] === '-') {
start++;
this.negative = 1;
}
if (start < number.length) {
if (base === 16) {
this._parseHex(number, start, endian);
} else {
this._parseBase(number, base, start);
if (endian === 'le') {
this._initArray(this.toArray(), base, endian);
}
}
}
};
BN.prototype._initNumber = function _initNumber (number, base, endian) {
if (number < 0) {
this.negative = 1;
number = -number;
}
if (number < 0x4000000) {
this.words = [ number & 0x3ffffff ];
this.length = 1;
} else if (number < 0x10000000000000) {
this.words = [
number & 0x3ffffff,
(number / 0x4000000) & 0x3ffffff
];
this.length = 2;
} else {
assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)
this.words = [
number & 0x3ffffff,
(number / 0x4000000) & 0x3ffffff,
1
];
this.length = 3;
}
if (endian !== 'le') return;
// Reverse the bytes
this._initArray(this.toArray(), base, endian);
};
BN.prototype._initArray = function _initArray (number, base, endian) {
// Perhaps a Uint8Array
assert(typeof number.length === 'number');
if (number.length <= 0) {
this.words = [ 0 ];
this.length = 1;
return this;
}
this.length = Math.ceil(number.length / 3);
this.words = new Array(this.length);
for (var i = 0; i < this.length; i++) {
this.words[i] = 0;
}
var j, w;
var off = 0;
if (endian === 'be') {
for (i = number.length - 1, j = 0; i >= 0; i -= 3) {
w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);
this.words[j] |= (w << off) & 0x3ffffff;
this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
off += 24;
if (off >= 26) {
off -= 26;
j++;
}
}
} else if (endian === 'le') {
for (i = 0, j = 0; i < number.length; i += 3) {
w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);
this.words[j] |= (w << off) & 0x3ffffff;
this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
off += 24;
if (off >= 26) {
off -= 26;
j++;
}
}
}
return this.strip();
};
function parseHex4Bits (string, index) {
var c = string.charCodeAt(index);
// 'A' - 'F'
if (c >= 65 && c <= 70) {
return c - 55;
// 'a' - 'f'
} else if (c >= 97 && c <= 102) {
return c - 87;
// '0' - '9'
} else {
return (c - 48) & 0xf;
}
}
function parseHexByte (string, lowerBound, index) {
var r = parseHex4Bits(string, index);
if (index - 1 >= lowerBound) {
r |= parseHex4Bits(string, index - 1) << 4;
}
return r;
}
BN.prototype._parseHex = function _parseHex (number, start, endian) {
// Create possibly bigger array to ensure that it fits the number
this.length = Math.ceil((number.length - start) / 6);
this.words = new Array(this.length);
for (var i = 0; i < this.length; i++) {
this.words[i] = 0;
}
// 24-bits chunks
var off = 0;
var j = 0;
var w;
if (endian === 'be') {
for (i = number.length - 1; i >= start; i -= 2) {
w = parseHexByte(number, start, i) << off;
this.words[j] |= w & 0x3ffffff;
if (off >= 18) {
off -= 18;
j += 1;
this.words[j] |= w >>> 26;
} else {
off += 8;
}
}
} else {
var parseLength = number.length - start;
for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {
w = parseHexByte(number, start, i) << off;
this.words[j] |= w & 0x3ffffff;
if (off >= 18) {
off -= 18;
j += 1;
this.words[j] |= w >>> 26;
} else {
off += 8;
}
}
}
this.strip();
};
function parseBase (str, start, end, mul) {
var r = 0;
var len = Math.min(str.length, end);
for (var i = start; i < len; i++) {
var c = str.charCodeAt(i) - 48;
r *= mul;
// 'a'
if (c >= 49) {
r += c - 49 + 0xa;
// 'A'
} else if (c >= 17) {
r += c - 17 + 0xa;
// '0' - '9'
} else {
r += c;
}
}
return r;
}
BN.prototype._parseBase = function _parseBase (number, base, start) {
// Initialize as zero
this.words = [ 0 ];
this.length = 1;
// Find length of limb in base
for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {
limbLen++;
}
limbLen--;
limbPow = (limbPow / base) | 0;
var total = number.length - start;
var mod = total % limbLen;
var end = Math.min(total, total - mod) + start;
var word = 0;
for (var i = start; i < end; i += limbLen) {
word = parseBase(number, i, i + limbLen, base);
this.imuln(limbPow);
if (this.words[0] + word < 0x4000000) {
this.words[0] += word;
} else {
this._iaddn(word);
}
}
if (mod !== 0) {
var pow = 1;
word = parseBase(number, i, number.length, base);
for (i = 0; i < mod; i++) {
pow *= base;
}
this.imuln(pow);
if (this.words[0] + word < 0x4000000) {
this.words[0] += word;
} else {
this._iaddn(word);
}
}
this.strip();
};
BN.prototype.copy = function copy (dest) {
dest.words = new Array(this.length);
for (var i = 0; i < this.length; i++) {
dest.words[i] = this.words[i];
}
dest.length = this.length;
dest.negative = this.negative;
dest.red = this.red;
};
BN.prototype.clone = function clone () {
var r = new BN(null);
this.copy(r);
return r;
};
BN.prototype._expand = function _expand (size) {
while (this.length < size) {
this.words[this.length++] = 0;
}
return this;
};
// Remove leading `0` from `this`
BN.prototype.strip = function strip () {
while (this.length > 1 && this.words[this.length - 1] === 0) {
this.length--;
}
return this._normSign();
};
BN.prototype._normSign = function _normSign () {
// -0 = 0
if (this.length === 1 && this.words[0] === 0) {
this.negative = 0;
}
return this;
};
BN.prototype.inspect = function inspect () {
return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';
};
/*
var zeros = [];
var groupSizes = [];
var groupBases = [];
var s = '';
var i = -1;
while (++i < BN.wordSize) {
zeros[i] = s;
s += '0';
}
groupSizes[0] = 0;
groupSizes[1] = 0;
groupBases[0] = 0;
groupBases[1] = 0;
var base = 2 - 1;
while (++base < 36 + 1) {
var groupSize = 0;
var groupBase = 1;
while (groupBase < (1 << BN.wordSize) / base) {
groupBase *= base;
groupSize += 1;
}
groupSizes[base] = groupSize;
groupBases[base] = groupBase;
}
*/
var zeros = [
'',
'0',
'00',
'000',
'0000',
'00000',
'000000',
'0000000',
'00000000',
'000000000',
'0000000000',
'00000000000',
'000000000000',
'0000000000000',
'00000000000000',
'000000000000000',
'0000000000000000',
'00000000000000000',
'000000000000000000',
'0000000000000000000',
'00000000000000000000',
'000000000000000000000',
'0000000000000000000000',
'00000000000000000000000',
'000000000000000000000000',
'0000000000000000000000000'
];
var groupSizes = [
0, 0,
25, 16, 12, 11, 10, 9, 8,
8, 7, 7, 7, 7, 6, 6,
6, 6, 6, 6, 6, 5, 5,
5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5
];
var groupBases = [
0, 0,
33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,
43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,
16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,
6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,
24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176
];
BN.prototype.toString = function toString (base, padding) {
base = base || 10;
padding = padding | 0 || 1;
var out;
if (base === 16 || base === 'hex') {
out = '';
var off = 0;
var carry = 0;
for (var i = 0; i < this.length; i++) {
var w = this.words[i];
var word = (((w << off) | carry) & 0xffffff).toString(16);
carry = (w >>> (24 - off)) & 0xffffff;
if (carry !== 0 || i !== this.length - 1) {
out = zeros[6 - word.length] + word + out;
} else {
out = word + out;
}
off += 2;
if (off >= 26) {
off -= 26;
i--;
}
}
if (carry !== 0) {
out = carry.toString(16) + out;
}
while (out.length % padding !== 0) {
out = '0' + out;
}
if (this.negative !== 0) {
out = '-' + out;
}
return out;
}
if (base === (base | 0) && base >= 2 && base <= 36) {
// var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));
var groupSize = groupSizes[base];
// var groupBase = Math.pow(base, groupSize);
var groupBase = groupBases[base];
out = '';
var c = this.clone();
c.negative = 0;
while (!c.isZero()) {
var r = c.modn(groupBase).toString(base);
c = c.idivn(groupBase);
if (!c.isZero()) {
out = zeros[groupSize - r.length] + r + out;
} else {
out = r + out;
}
}
if (this.isZero()) {
out = '0' + out;
}
while (out.length % padding !== 0) {
out = '0' + out;
}
if (this.negative !== 0) {
out = '-' + out;
}
return out;
}
assert(false, 'Base should be between 2 and 36');
};
BN.prototype.toNumber = function toNumber () {
var ret = this.words[0];
if (this.length === 2) {
ret += this.words[1] * 0x4000000;
} else if (this.length === 3 && this.words[2] === 0x01) {
// NOTE: at this stage it is known that the top bit is set
ret += 0x10000000000000 + (this.words[1] * 0x4000000);
} else if (this.length > 2) {
assert(false, 'Number can only safely store up to 53 bits');
}
return (this.negative !== 0) ? -ret : ret;
};
BN.prototype.toJSON = function toJSON () {
return this.toString(16);
};
BN.prototype.toBuffer = function toBuffer (endian, length) {
assert(typeof Buffer !== 'undefined');
return this.toArrayLike(Buffer, endian, length);
};
BN.prototype.toArray = function toArray (endian, length) {
return this.toArrayLike(Array, endian, length);
};
BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {
var byteLength = this.byteLength();
var reqLength = length || Math.max(1, byteLength);
assert(byteLength <= reqLength, 'byte array longer than desired length');
assert(reqLength > 0, 'Requested array length <= 0');
this.strip();
var littleEndian = endian === 'le';
var res = new ArrayType(reqLength);
var b, i;
var q = this.clone();
if (!littleEndian) {
// Assume big-endian
for (i = 0; i < reqLength - byteLength; i++) {
res[i] = 0;
}
for (i = 0; !q.isZero(); i++) {
b = q.andln(0xff);
q.iushrn(8);
res[reqLength - i - 1] = b;
}
} else {
for (i = 0; !q.isZero(); i++) {
b = q.andln(0xff);
q.iushrn(8);
res[i] = b;
}
for (; i < reqLength; i++) {
res[i] = 0;
}
}
return res;
};
if (Math.clz32) {
BN.prototype._countBits = function _countBits (w) {
return 32 - Math.clz32(w);
};
} else {
BN.prototype._countBits = function _countBits (w) {
var t = w;
var r = 0;
if (t >= 0x1000) {
r += 13;
t >>>= 13;
}
if (t >= 0x40) {
r += 7;
t >>>= 7;
}
if (t >= 0x8) {
r += 4;
t >>>= 4;
}
if (t >= 0x02) {
r += 2;
t >>>= 2;
}
return r + t;
};
}
BN.prototype._zeroBits = function _zeroBits (w) {
// Short-cut
if (w === 0) return 26;
var t = w;
var r = 0;
if ((t & 0x1fff) === 0) {
r += 13;
t >>>= 13;
}
if ((t & 0x7f) === 0) {
r += 7;
t >>>= 7;
}
if ((t & 0xf) === 0) {
r += 4;
t >>>= 4;
}
if ((t & 0x3) === 0) {
r += 2;
t >>>= 2;
}
if ((t & 0x1) === 0) {
r++;
}
return r;
};
// Return number of used bits in a BN
BN.prototype.bitLength = function bitLength () {
var w = this.words[this.length - 1];
var hi = this._countBits(w);
return (this.length - 1) * 26 + hi;
};
function toBitArray (num) {
var w = new Array(num.bitLength());
for (var bit = 0; bit < w.length; bit++) {
var off = (bit / 26) | 0;
var wbit = bit % 26;
w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;
}
return w;
}
// Number of trailing zero bits
BN.prototype.zeroBits = function zeroBits () {
if (this.isZero()) return 0;
var r = 0;
for (var i = 0; i < this.length; i++) {
var b = this._zeroBits(this.words[i]);
r += b;
if (b !== 26) break;
}
return r;
};
BN.prototype.byteLength = function byteLength () {
return Math.ceil(this.bitLength() / 8);
};
BN.prototype.toTwos = function toTwos (width) {
if (this.negative !== 0) {
return this.abs().inotn(width).iaddn(1);
}
return this.clone();
};
BN.prototype.fromTwos = function fromTwos (width) {
if (this.testn(width - 1)) {
return this.notn(width).iaddn(1).ineg();
}
return this.clone();
};
BN.prototype.isNeg = function isNeg () {
return this.negative !== 0;
};
// Return negative clone of `this`
BN.prototype.neg = function neg () {
return this.clone().ineg();
};
BN.prototype.ineg = function ineg () {
if (!this.isZero()) {
this.negative ^= 1;
}
return this;
};
// Or `num` with `this` in-place
BN.prototype.iuor = function iuor (num) {
while (this.length < num.length) {
this.words[this.length++] = 0;
}
for (var i = 0; i < num.length; i++) {
this.words[i] = this.words[i] | num.words[i];
}
return this.strip();
};
BN.prototype.ior = function ior (num) {
assert((this.negative | num.negative) === 0);
return this.iuor(num);
};
// Or `num` with `this`
BN.prototype.or = function or (num) {
if (this.length > num.length) return this.clone().ior(num);
return num.clone().ior(this);
};
BN.prototype.uor = function uor (num) {
if (this.length > num.length) return this.clone().iuor(num);
return num.clone().iuor(this);
};
// And `num` with `this` in-place
BN.prototype.iuand = function iuand (num) {
// b = min-length(num, this)
var b;
if (this.length > num.length) {
b = num;
} else {
b = this;
}
for (var i = 0; i < b.length; i++) {
this.words[i] = this.words[i] & num.words[i];
}
this.length = b.length;
return this.strip();
};
BN.prototype.iand = function iand (num) {
assert((this.negative | num.negative) === 0);
return this.iuand(num);
};
// And `num` with `this`
BN.prototype.and = function and (num) {
if (this.length > num.length) return this.clone().iand(num);
return num.clone().iand(this);
};
BN.prototype.uand = function uand (num) {
if (this.length > num.length) return this.clone().iuand(num);
return num.clone().iuand(this);
};
// Xor `num` with `this` in-place
BN.prototype.iuxor = function iuxor (num) {
// a.length > b.length
var a;
var b;
if (this.length > num.length) {
a = this;
b = num;
} else {
a = num;
b = this;
}
for (var i = 0; i < b.length; i++) {
this.words[i] = a.words[i] ^ b.words[i];
}
if (this !== a) {
for (; i < a.length; i++) {
this.words[i] = a.words[i];
}
}
this.length = a.length;
return this.strip();
};
BN.prototype.ixor = function ixor (num) {
assert((this.negative | num.negative) === 0);
return this.iuxor(num);
};
// Xor `num` with `this`
BN.prototype.xor = function xor (num) {
if (this.length > num.length) return this.clone().ixor(num);
return num.clone().ixor(this);
};
BN.prototype.uxor = function uxor (num) {
if (this.length > num.length) return this.clone().iuxor(num);
return num.clone().iuxor(this);
};
// Not ``this`` with ``width`` bitwidth
BN.prototype.inotn = function inotn (width) {
assert(typeof width === 'number' && width >= 0);
var bytesNeeded = Math.ceil(width / 26) | 0;
var bitsLeft = width % 26;
// Extend the buffer with leading zeroes
this._expand(bytesNeeded);
if (bitsLeft > 0) {
bytesNeeded--;
}
// Handle complete words
for (var i = 0; i < bytesNeeded; i++) {
this.words[i] = ~this.words[i] & 0x3ffffff;
}
// Handle the residue
if (bitsLeft > 0) {
this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));
}
// And remove leading zeroes
return this.strip();
};
BN.prototype.notn = function notn (width) {
return this.clone().inotn(width);
};
// Set `bit` of `this`
BN.prototype.setn = function setn (bit, val) {
assert(typeof bit === 'number' && bit >= 0);
var off = (bit / 26) | 0;
var wbit = bit % 26;
this._expand(off + 1);
if (val) {
this.words[off] = this.words[off] | (1 << wbit);
} else {
this.words[off] = this.words[off] & ~(1 << wbit);
}
return this.strip();
};
// Add `num` to `this` in-place
BN.prototype.iadd = function iadd (num) {
var r;
// negative + positive
if (this.negative !== 0 && num.negative === 0) {
this.negative = 0;
r = this.isub(num);
this.negative ^= 1;
return this._normSign();
// positive + negative
} else if (this.negative === 0 && num.negative !== 0) {
num.negative = 0;
r = this.isub(num);
num.negative = 1;
return r._normSign();
}
// a.length > b.length
var a, b;
if (this.length > num.length) {
a = this;
b = num;
} else {
a = num;
b = this;
}
var carry = 0;
for (var i = 0; i < b.length; i++) {
r = (a.words[i] | 0) + (b.words[i] | 0) + carry;
this.words[i] = r & 0x3ffffff;
carry = r >>> 26;
}
for (; carry !== 0 && i < a.length; i++) {
r = (a.words[i] | 0) + carry;
this.words[i] = r & 0x3ffffff;
carry = r >>> 26;
}
this.length = a.length;
if (carry !== 0) {
this.words[this.length] = carry;
this.length++;
// Copy the rest of the words
} else if (a !== this) {
for (; i < a.length; i++) {
this.words[i] = a.words[i];
}
}
return this;
};
// Add `num` to `this`
BN.prototype.add = function add (num) {
var res;
if (num.negative !== 0 && this.negative === 0) {
num.negative = 0;
res = this.sub(num);
num.negative ^= 1;
return res;
} else if (num.negative === 0 && this.negative !== 0) {
this.negative = 0;
res = num.sub(this);
this.negative = 1;
return res;
}
if (this.length > num.length) return this.clone().iadd(num);
return num.clone().iadd(this);
};
// Subtract `num` from `this` in-place
BN.prototype.isub = function isub (num) {
// this - (-num) = this + num
if (num.negative !== 0) {
num.negative = 0;
var r = this.iadd(num);
num.negative = 1;
return r._normSign();
// -this - num = -(this + num)
} else if (this.negative !== 0) {
this.negative = 0;
this.iadd(num);
this.negative = 1;
return this._normSign();
}
// At this point both numbers are positive
var cmp = this.cmp(num);
// Optimization - zeroify
if (cmp === 0) {
this.negative = 0;
this.length = 1;
this.words[0] = 0;
return this;
}
// a > b
var a, b;
if (cmp > 0) {
a = this;
b = num;
} else {
a = num;
b = this;
}
var carry = 0;
for (var i = 0; i < b.length; i++) {
r = (a.words[i] | 0) - (b.words[i] | 0) + carry;
carry = r >> 26;
this.words[i] = r & 0x3ffffff;
}
for (; carry !== 0 && i < a.length; i++) {
r = (a.words[i] | 0) + carry;
carry = r >> 26;
this.words[i] = r & 0x3ffffff;
}
// Copy rest of the words
if (carry === 0 && i < a.length && a !== this) {
for (; i < a.length; i++) {
this.words[i] = a.words[i];
}
}
this.length = Math.max(this.length, i);
if (a !== this) {
this.negative = 1;
}
return this.strip();
};
// Subtract `num` from `this`
BN.prototype.sub = function sub (num) {
return this.clone().isub(num);
};
function smallMulTo (self, num, out) {
out.negative = num.negative ^ self.negative;
var len = (self.length + num.length) | 0;
out.length = len;
len = (len - 1) | 0;
// Peel one iteration (compiler can't do it, because of code complexity)
var a = self.words[0] | 0;
var b = num.words[0] | 0;
var r = a * b;
var lo = r & 0x3ffffff;
var carry = (r / 0x4000000) | 0;
out.words[0] = lo;
for (var k = 1; k < len; k++) {
// Sum all words with the same `i + j = k` and accumulate `ncarry`,
// note that ncarry could be >= 0x3ffffff
var ncarry = carry >>> 26;
var rword = carry & 0x3ffffff;
var maxJ = Math.min(k, num.length - 1);
for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
var i = (k - j) | 0;
a = self.words[i] | 0;
b = num.words[j] | 0;
r = a * b + rword;
ncarry += (r / 0x4000000) | 0;
rword = r & 0x3ffffff;
}
out.words[k] = rword | 0;
carry = ncarry | 0;
}
if (carry !== 0) {
out.words[k] = carry | 0;
} else {
out.length--;
}
return out.strip();
}
// TODO(indutny): it may be reasonable to omit it for users who don't need
// to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit
// multiplication (like elliptic secp256k1).
var comb10MulTo = function comb10MulTo (self, num, out) {
var a = self.words;
var b = num.words;
var o = out.words;
var c = 0;
var lo;
var mid;
var hi;
var a0 = a[0] | 0;
var al0 = a0 & 0x1fff;
var ah0 = a0 >>> 13;
var a1 = a[1] | 0;
var al1 = a1 & 0x1fff;
var ah1 = a1 >>> 13;
var a2 = a[2] | 0;
var al2 = a2 & 0x1fff;
var ah2 = a2 >>> 13;
var a3 = a[3] | 0;
var al3 = a3 & 0x1fff;
var ah3 = a3 >>> 13;
var a4 = a[4] | 0;
var al4 = a4 & 0x1fff;
var ah4 = a4 >>> 13;
var a5 = a[5] | 0;
var al5 = a5 & 0x1fff;
var ah5 = a5 >>> 13;
var a6 = a[6] | 0;
var al6 = a6 & 0x1fff;
var ah6 = a6 >>> 13;
var a7 = a[7] | 0;
var al7 = a7 & 0x1fff;
var ah7 = a7 >>> 13;
var a8 = a[8] | 0;
var al8 = a8 & 0x1fff;
var ah8 = a8 >>> 13;
var a9 = a[9] | 0;
var al9 = a9 & 0x1fff;
var ah9 = a9 >>> 13;
var b0 = b[0] | 0;
var bl0 = b0 & 0x1fff;
var bh0 = b0 >>> 13;
var b1 = b[1] | 0;
var bl1 = b1 & 0x1fff;
var bh1 = b1 >>> 13;
var b2 = b[2] | 0;
var bl2 = b2 & 0x1fff;
var bh2 = b2 >>> 13;
var b3 = b[3] | 0;
var bl3 = b3 & 0x1fff;
var bh3 = b3 >>> 13;
var b4 = b[4] | 0;
var bl4 = b4 & 0x1fff;
var bh4 = b4 >>> 13;
var b5 = b[5] | 0;
var bl5 = b5 & 0x1fff;
var bh5 = b5 >>> 13;
var b6 = b[6] | 0;
var bl6 = b6 & 0x1fff;
var bh6 = b6 >>> 13;
var b7 = b[7] | 0;
var bl7 = b7 & 0x1fff;
var bh7 = b7 >>> 13;
var b8 = b[8] | 0;
var bl8 = b8 & 0x1fff;
var bh8 = b8 >>> 13;
var b9 = b[9] | 0;
var bl9 = b9 & 0x1fff;
var bh9 = b9 >>> 13;
out.negative = self.negative ^ num.negative;
out.length = 19;
/* k = 0 */
lo = Math.imul(al0, bl0);
mid = Math.imul(al0, bh0);
mid = (mid + Math.imul(ah0, bl0)) | 0;
hi = Math.imul(ah0, bh0);
var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;
w0 &= 0x3ffffff;
/* k = 1 */
lo = Math.imul(al1, bl0);
mid = Math.imul(al1, bh0);
mid = (mid + Math.imul(ah1, bl0)) | 0;
hi = Math.imul(ah1, bh0);
lo = (lo + Math.imul(al0, bl1)) | 0;
mid = (mid + Math.imul(al0, bh1)) | 0;
mid = (mid + Math.imul(ah0, bl1)) | 0;
hi = (hi + Math.imul(ah0, bh1)) | 0;
var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;
w1 &= 0x3ffffff;
/* k = 2 */
lo = Math.imul(al2, bl0);
mid = Math.imul(al2, bh0);
mid = (mid + Math.imul(ah2, bl0)) | 0;
hi = Math.imul(ah2, bh0);
lo = (lo + Math.imul(al1, bl1)) | 0;
mid = (mid + Math.imul(al1, bh1)) | 0;
mid = (mid + Math.imul(ah1, bl1)) | 0;
hi = (hi + Math.imul(ah1, bh1)) | 0;
lo = (lo + Math.imul(al0, bl2)) | 0;
mid = (mid + Math.imul(al0, bh2)) | 0;
mid = (mid + Math.imul(ah0, bl2)) | 0;
hi = (hi + Math.imul(ah0, bh2)) | 0;
var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;
w2 &= 0x3ffffff;
/* k = 3 */
lo = Math.imul(al3, bl0);
mid = Math.imul(al3, bh0);
mid = (mid + Math.imul(ah3, bl0)) | 0;
hi = Math.imul(ah3, bh0);
lo = (lo + Math.imul(al2, bl1)) | 0;
mid = (mid + Math.imul(al2, bh1)) | 0;
mid = (mid + Math.imul(ah2, bl1)) | 0;
hi = (hi + Math.imul(ah2, bh1)) | 0;
lo = (lo + Math.imul(al1, bl2)) | 0;
mid = (mid + Math.imul(al1, bh2)) | 0;
mid = (mid + Math.imul(ah1, bl2)) | 0;
hi = (hi + Math.imul(ah1, bh2)) | 0;
lo = (lo + Math.imul(al0, bl3)) | 0;
mid = (mid + Math.imul(al0, bh3)) | 0;
mid = (mid + Math.imul(ah0, bl3)) | 0;
hi = (hi + Math.imul(ah0, bh3)) | 0;
var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;
w3 &= 0x3ffffff;
/* k = 4 */
lo = Math.imul(al4, bl0);
mid = Math.imul(al4, bh0);
mid = (mid + Math.imul(ah4, bl0)) | 0;
hi = Math.imul(ah4, bh0);
lo = (lo + Math.imul(al3, bl1)) | 0;
mid = (mid + Math.imul(al3, bh1)) | 0;
mid = (mid + Math.imul(ah3, bl1)) | 0;
hi = (hi + Math.imul(ah3, bh1)) | 0;
lo = (lo + Math.imul(al2, bl2)) | 0;
mid = (mid + Math.imul(al2, bh2)) | 0;
mid = (mid + Math.imul(ah2, bl2)) | 0;
hi = (hi + Math.imul(ah2, bh2)) | 0;
lo = (lo + Math.imul(al1, bl3)) | 0;
mid = (mid + Math.imul(al1, bh3)) | 0;
mid = (mid + Math.imul(ah1, bl3)) | 0;
hi = (hi + Math.imul(ah1, bh3)) | 0;
lo = (lo + Math.imul(al0, bl4)) | 0;
mid = (mid + Math.imul(al0, bh4)) | 0;
mid = (mid + Math.imul(ah0, bl4)) | 0;
hi = (hi + Math.imul(ah0, bh4)) | 0;
var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;
w4 &= 0x3ffffff;
/* k = 5 */
lo = Math.imul(al5, bl0);
mid = Math.imul(al5, bh0);
mid = (mid + Math.imul(ah5, bl0)) | 0;
hi = Math.imul(ah5, bh0);
lo = (lo + Math.imul(al4, bl1)) | 0;
mid = (mid + Math.imul(al4, bh1)) | 0;
mid = (mid + Math.imul(ah4, bl1)) | 0;
hi = (hi + Math.imul(ah4, bh1)) | 0;
lo = (lo + Math.imul(al3, bl2)) | 0;
mid = (mid + Math.imul(al3, bh2)) | 0;
mid = (mid + Math.imul(ah3, bl2)) | 0;
hi = (hi + Math.imul(ah3, bh2)) | 0;
lo = (lo + Math.imul(al2, bl3)) | 0;
mid = (mid + Math.imul(al2, bh3)) | 0;
mid = (mid + Math.imul(ah2, bl3)) | 0;
hi = (hi + Math.imul(ah2, bh3)) | 0;
lo = (lo + Math.imul(al1, bl4)) | 0;
mid = (mid + Math.imul(al1, bh4)) | 0;
mid = (mid + Math.imul(ah1, bl4)) | 0;
hi = (hi + Math.imul(ah1, bh4)) | 0;
lo = (lo + Math.imul(al0, bl5)) | 0;
mid = (mid + Math.imul(al0, bh5)) | 0;
mid = (mid + Math.imul(ah0, bl5)) | 0;
hi = (hi + Math.imul(ah0, bh5)) | 0;
var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;
w5 &= 0x3ffffff;
/* k = 6 */
lo = Math.imul(al6, bl0);
mid = Math.imul(al6, bh0);
mid = (mid + Math.imul(ah6, bl0)) | 0;
hi = Math.imul(ah6, bh0);
lo = (lo + Math.imul(al5, bl1)) | 0;
mid = (mid + Math.imul(al5, bh1)) | 0;
mid = (mid + Math.imul(ah5, bl1)) | 0;
hi = (hi + Math.imul(ah5, bh1)) | 0;
lo = (lo + Math.imul(al4, bl2)) | 0;
mid = (mid + Math.imul(al4, bh2)) | 0;
mid = (mid + Math.imul(ah4, bl2)) | 0;
hi = (hi + Math.imul(ah4, bh2)) | 0;
lo = (lo + Math.imul(al3, bl3)) | 0;
mid = (mid + Math.imul(al3, bh3)) | 0;
mid = (mid + Math.imul(ah3, bl3)) | 0;
hi = (hi + Math.imul(ah3, bh3)) | 0;
lo = (lo + Math.imul(al2, bl4)) | 0;
mid = (mid + Math.imul(al2, bh4)) | 0;
mid = (mid + Math.imul(ah2, bl4)) | 0;
hi = (hi + Math.imul(ah2, bh4)) | 0;
lo = (lo + Math.imul(al1, bl5)) | 0;
mid = (mid + Math.imul(al1, bh5)) | 0;
mid = (mid + Math.imul(ah1, bl5)) | 0;
hi = (hi + Math.imul(ah1, bh5)) | 0;
lo = (lo + Math.imul(al0, bl6)) | 0;
mid = (mid + Math.imul(al0, bh6)) | 0;
mid = (mid + Math.imul(ah0, bl6)) | 0;
hi = (hi + Math.imul(ah0, bh6)) | 0;
var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;
w6 &= 0x3ffffff;
/* k = 7 */
lo = Math.imul(al7, bl0);
mid = Math.imul(al7, bh0);
mid = (mid + Math.imul(ah7, bl0)) | 0;
hi = Math.imul(ah7, bh0);
lo = (lo + Math.imul(al6, bl1)) | 0;
mid = (mid + Math.imul(al6, bh1)) | 0;
mid = (mid + Math.imul(ah6, bl1)) | 0;
hi = (hi + Math.imul(ah6, bh1)) | 0;
lo = (lo + Math.imul(al5, bl2)) | 0;
mid = (mid + Math.imul(al5, bh2)) | 0;
mid = (mid + Math.imul(ah5, bl2)) | 0;
hi = (hi + Math.imul(ah5, bh2)) | 0;
lo = (lo + Math.imul(al4, bl3)) | 0;
mid = (mid + Math.imul(al4, bh3)) | 0;
mid = (mid + Math.imul(ah4, bl3)) | 0;
hi = (hi + Math.imul(ah4, bh3)) | 0;
lo = (lo + Math.imul(al3, bl4)) | 0;
mid = (mid + Math.imul(al3, bh4)) | 0;
mid = (mid + Math.imul(ah3, bl4)) | 0;
hi = (hi + Math.imul(ah3, bh4)) | 0;
lo = (lo + Math.imul(al2, bl5)) | 0;
mid = (mid + Math.imul(al2, bh5)) | 0;
mid = (mid + Math.imul(ah2, bl5)) | 0;
hi = (hi + Math.imul(ah2, bh5)) | 0;
lo = (lo + Math.imul(al1, bl6)) | 0;
mid = (mid + Math.imul(al1, bh6)) | 0;
mid = (mid + Math.imul(ah1, bl6)) | 0;
hi = (hi + Math.imul(ah1, bh6)) | 0;
lo = (lo + Math.imul(al0, bl7)) | 0;
mid = (mid + Math.imul(al0, bh7)) | 0;
mid = (mid + Math.imul(ah0, bl7)) | 0;
hi = (hi + Math.imul(ah0, bh7)) | 0;
var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;
w7 &= 0x3ffffff;
/* k = 8 */
lo = Math.imul(al8, bl0);
mid = Math.imul(al8, bh0);
mid = (mid + Math.imul(ah8, bl0)) | 0;
hi = Math.imul(ah8, bh0);
lo = (lo + Math.imul(al7, bl1)) | 0;
mid = (mid + Math.imul(al7, bh1)) | 0;
mid = (mid + Math.imul(ah7, bl1)) | 0;
hi = (hi + Math.imul(ah7, bh1)) | 0;
lo = (lo + Math.imul(al6, bl2)) | 0;
mid = (mid + Math.imul(al6, bh2)) | 0;
mid = (mid + Math.imul(ah6, bl2)) | 0;
hi = (hi + Math.imul(ah6, bh2)) | 0;
lo = (lo + Math.imul(al5, bl3)) | 0;
mid = (mid + Math.imul(al5, bh3)) | 0;
mid = (mid + Math.imul(ah5, bl3)) | 0;
hi = (hi + Math.imul(ah5, bh3)) | 0;
lo = (lo + Math.imul(al4, bl4)) | 0;
mid = (mid + Math.imul(al4, bh4)) | 0;
mid = (mid + Math.imul(ah4, bl4)) | 0;
hi = (hi + Math.imul(ah4, bh4)) | 0;
lo = (lo + Math.imul(al3, bl5)) | 0;
mid = (mid + Math.imul(al3, bh5)) | 0;
mid = (mid + Math.imul(ah3, bl5)) | 0;
hi = (hi + Math.imul(ah3, bh5)) | 0;
lo = (lo + Math.imul(al2, bl6)) | 0;
mid = (mid + Math.imul(al2, bh6)) | 0;
mid = (mid + Math.imul(ah2, bl6)) | 0;
hi = (hi + Math.imul(ah2, bh6)) | 0;
lo = (lo + Math.imul(al1, bl7)) | 0;
mid = (mid + Math.imul(al1, bh7)) | 0;
mid = (mid + Math.imul(ah1, bl7)) | 0;
hi = (hi + Math.imul(ah1, bh7)) | 0;
lo = (lo + Math.imul(al0, bl8)) | 0;
mid = (mid + Math.imul(al0, bh8)) | 0;
mid = (mid + Math.imul(ah0, bl8)) | 0;
hi = (hi + Math.imul(ah0, bh8)) | 0;
var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;
w8 &= 0x3ffffff;
/* k = 9 */
lo = Math.imul(al9, bl0);
mid = Math.imul(al9, bh0);
mid = (mid + Math.imul(ah9, bl0)) | 0;
hi = Math.imul(ah9, bh0);
lo = (lo + Math.imul(al8, bl1)) | 0;
mid = (mid + Math.imul(al8, bh1)) | 0;
mid = (mid + Math.imul(ah8, bl1)) | 0;
hi = (hi + Math.imul(ah8, bh1)) | 0;
lo = (lo + Math.imul(al7, bl2)) | 0;
mid = (mid + Math.imul(al7, bh2)) | 0;
mid = (mid + Math.imul(ah7, bl2)) | 0;
hi = (hi + Math.imul(ah7, bh2)) | 0;
lo = (lo + Math.imul(al6, bl3)) | 0;
mid = (mid + Math.imul(al6, bh3)) | 0;
mid = (mid + Math.imul(ah6, bl3)) | 0;
hi = (hi + Math.imul(ah6, bh3)) | 0;
lo = (lo + Math.imul(al5, bl4)) | 0;
mid = (mid + Math.imul(al5, bh4)) | 0;
mid = (mid + Math.imul(ah5, bl4)) | 0;
hi = (hi + Math.imul(ah5, bh4)) | 0;
lo = (lo + Math.imul(al4, bl5)) | 0;
mid = (mid + Math.imul(al4, bh5)) | 0;
mid = (mid + Math.imul(ah4, bl5)) | 0;
hi = (hi + Math.imul(ah4, bh5)) | 0;
lo = (lo + Math.imul(al3, bl6)) | 0;
mid = (mid + Math.imul(al3, bh6)) | 0;
mid = (mid + Math.imul(ah3, bl6)) | 0;
hi = (hi + Math.imul(ah3, bh6)) | 0;
lo = (lo + Math.imul(al2, bl7)) | 0;
mid = (mid + Math.imul(al2, bh7)) | 0;
mid = (mid + Math.imul(ah2, bl7)) | 0;
hi = (hi + Math.imul(ah2, bh7)) | 0;
lo = (lo + Math.imul(al1, bl8)) | 0;
mid = (mid + Math.imul(al1, bh8)) | 0;
mid = (mid + Math.imul(ah1, bl8)) | 0;
hi = (hi + Math.imul(ah1, bh8)) | 0;
lo = (lo + Math.imul(al0, bl9)) | 0;
mid = (mid + Math.imul(al0, bh9)) | 0;
mid = (mid + Math.imul(ah0, bl9)) | 0;
hi = (hi + Math.imul(ah0, bh9)) | 0;
var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;
w9 &= 0x3ffffff;
/* k = 10 */
lo = Math.imul(al9, bl1);
mid = Math.imul(al9, bh1);
mid = (mid + Math.imul(ah9, bl1)) | 0;
hi = Math.imul(ah9, bh1);
lo = (lo + Math.imul(al8, bl2)) | 0;
mid = (mid + Math.imul(al8, bh2)) | 0;
mid = (mid + Math.imul(ah8, bl2)) | 0;
hi = (hi + Math.imul(ah8, bh2)) | 0;
lo = (lo + Math.imul(al7, bl3)) | 0;
mid = (mid + Math.imul(al7, bh3)) | 0;
mid = (mid + Math.imul(ah7, bl3)) | 0;
hi = (hi + Math.imul(ah7, bh3)) | 0;
lo = (lo + Math.imul(al6, bl4)) | 0;
mid = (mid + Math.imul(al6, bh4)) | 0;
mid = (mid + Math.imul(ah6, bl4)) | 0;
hi = (hi + Math.imul(ah6, bh4)) | 0;
lo = (lo + Math.imul(al5, bl5)) | 0;
mid = (mid + Math.imul(al5, bh5)) | 0;
mid = (mid + Math.imul(ah5, bl5)) | 0;
hi = (hi + Math.imul(ah5, bh5)) | 0;
lo = (lo + Math.imul(al4, bl6)) | 0;
mid = (mid + Math.imul(al4, bh6)) | 0;
mid = (mid + Math.imul(ah4, bl6)) | 0;
hi = (hi + Math.imul(ah4, bh6)) | 0;
lo = (lo + Math.imul(al3, bl7)) | 0;
mid = (mid + Math.imul(al3, bh7)) | 0;
mid = (mid + Math.imul(ah3, bl7)) | 0;
hi = (hi + Math.imul(ah3, bh7)) | 0;
lo = (lo + Math.imul(al2, bl8)) | 0;
mid = (mid + Math.imul(al2, bh8)) | 0;
mid = (mid + Math.imul(ah2, bl8)) | 0;
hi = (hi + Math.imul(ah2, bh8)) | 0;
lo = (lo + Math.imul(al1, bl9)) | 0;
mid = (mid + Math.imul(al1, bh9)) | 0;
mid = (mid + Math.imul(ah1, bl9)) | 0;
hi = (hi + Math.imul(ah1, bh9)) | 0;
var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;
w10 &= 0x3ffffff;
/* k = 11 */
lo = Math.imul(al9, bl2);
mid = Math.imul(al9, bh2);
mid = (mid + Math.imul(ah9, bl2)) | 0;
hi = Math.imul(ah9, bh2);
lo = (lo + Math.imul(al8, bl3)) | 0;
mid = (mid + Math.imul(al8, bh3)) | 0;
mid = (mid + Math.imul(ah8, bl3)) | 0;
hi = (hi + Math.imul(ah8, bh3)) | 0;
lo = (lo + Math.imul(al7, bl4)) | 0;
mid = (mid + Math.imul(al7, bh4)) | 0;
mid = (mid + Math.imul(ah7, bl4)) | 0;
hi = (hi + Math.imul(ah7, bh4)) | 0;
lo = (lo + Math.imul(al6, bl5)) | 0;
mid = (mid + Math.imul(al6, bh5)) | 0;
mid = (mid + Math.imul(ah6, bl5)) | 0;
hi = (hi + Math.imul(ah6, bh5)) | 0;
lo = (lo + Math.imul(al5, bl6)) | 0;
mid = (mid + Math.imul(al5, bh6)) | 0;
mid = (mid + Math.imul(ah5, bl6)) | 0;
hi = (hi + Math.imul(ah5, bh6)) | 0;
lo = (lo + Math.imul(al4, bl7)) | 0;
mid = (mid + Math.imul(al4, bh7)) | 0;
mid = (mid + Math.imul(ah4, bl7)) | 0;
hi = (hi + Math.imul(ah4, bh7)) | 0;
lo = (lo + Math.imul(al3, bl8)) | 0;
mid = (mid + Math.imul(al3, bh8)) | 0;
mid = (mid + Math.imul(ah3, bl8)) | 0;
hi = (hi + Math.imul(ah3, bh8)) | 0;
lo = (lo + Math.imul(al2, bl9)) | 0;
mid = (mid + Math.imul(al2, bh9)) | 0;
mid = (mid + Math.imul(ah2, bl9)) | 0;
hi = (hi + Math.imul(ah2, bh9)) | 0;
var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;
w11 &= 0x3ffffff;
/* k = 12 */
lo = Math.imul(al9, bl3);
mid = Math.imul(al9, bh3);
mid = (mid + Math.imul(ah9, bl3)) | 0;
hi = Math.imul(ah9, bh3);
lo = (lo + Math.imul(al8, bl4)) | 0;
mid = (mid + Math.imul(al8, bh4)) | 0;
mid = (mid + Math.imul(ah8, bl4)) | 0;
hi = (hi + Math.imul(ah8, bh4)) | 0;
lo = (lo + Math.imul(al7, bl5)) | 0;
mid = (mid + Math.imul(al7, bh5)) | 0;
mid = (mid + Math.imul(ah7, bl5)) | 0;
hi = (hi + Math.imul(ah7, bh5)) | 0;
lo = (lo + Math.imul(al6, bl6)) | 0;
mid = (mid + Math.imul(al6, bh6)) | 0;
mid = (mid + Math.imul(ah6, bl6)) | 0;
hi = (hi + Math.imul(ah6, bh6)) | 0;
lo = (lo + Math.imul(al5, bl7)) | 0;
mid = (mid + Math.imul(al5, bh7)) | 0;
mid = (mid + Math.imul(ah5, bl7)) | 0;
hi = (hi + Math.imul(ah5, bh7)) | 0;
lo = (lo + Math.imul(al4, bl8)) | 0;
mid = (mid + Math.imul(al4, bh8)) | 0;
mid = (mid + Math.imul(ah4, bl8)) | 0;
hi = (hi + Math.imul(ah4, bh8)) | 0;
lo = (lo + Math.imul(al3, bl9)) | 0;
mid = (mid + Math.imul(al3, bh9)) | 0;
mid = (mid + Math.imul(ah3, bl9)) | 0;
hi = (hi + Math.imul(ah3, bh9)) | 0;
var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;
w12 &= 0x3ffffff;
/* k = 13 */
lo = Math.imul(al9, bl4);
mid = Math.imul(al9, bh4);
mid = (mid + Math.imul(ah9, bl4)) | 0;
hi = Math.imul(ah9, bh4);
lo = (lo + Math.imul(al8, bl5)) | 0;
mid = (mid + Math.imul(al8, bh5)) | 0;
mid = (mid + Math.imul(ah8, bl5)) | 0;
hi = (hi + Math.imul(ah8, bh5)) | 0;
lo = (lo + Math.imul(al7, bl6)) | 0;
mid = (mid + Math.imul(al7, bh6)) | 0;
mid = (mid + Math.imul(ah7, bl6)) | 0;
hi = (hi + Math.imul(ah7, bh6)) | 0;
lo = (lo + Math.imul(al6, bl7)) | 0;
mid = (mid + Math.imul(al6, bh7)) | 0;
mid = (mid + Math.imul(ah6, bl7)) | 0;
hi = (hi + Math.imul(ah6, bh7)) | 0;
lo = (lo + Math.imul(al5, bl8)) | 0;
mid = (mid + Math.imul(al5, bh8)) | 0;
mid = (mid + Math.imul(ah5, bl8)) | 0;
hi = (hi + Math.imul(ah5, bh8)) | 0;
lo = (lo + Math.imul(al4, bl9)) | 0;
mid = (mid + Math.imul(al4, bh9)) | 0;
mid = (mid + Math.imul(ah4, bl9)) | 0;
hi = (hi + Math.imul(ah4, bh9)) | 0;
var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;
w13 &= 0x3ffffff;
/* k = 14 */
lo = Math.imul(al9, bl5);
mid = Math.imul(al9, bh5);
mid = (mid + Math.imul(ah9, bl5)) | 0;
hi = Math.imul(ah9, bh5);
lo = (lo + Math.imul(al8, bl6)) | 0;
mid = (mid + Math.imul(al8, bh6)) | 0;
mid = (mid + Math.imul(ah8, bl6)) | 0;
hi = (hi + Math.imul(ah8, bh6)) | 0;
lo = (lo + Math.imul(al7, bl7)) | 0;
mid = (mid + Math.imul(al7, bh7)) | 0;
mid = (mid + Math.imul(ah7, bl7)) | 0;
hi = (hi + Math.imul(ah7, bh7)) | 0;
lo = (lo + Math.imul(al6, bl8)) | 0;
mid = (mid + Math.imul(al6, bh8)) | 0;
mid = (mid + Math.imul(ah6, bl8)) | 0;
hi = (hi + Math.imul(ah6, bh8)) | 0;
lo = (lo + Math.imul(al5, bl9)) | 0;
mid = (mid + Math.imul(al5, bh9)) | 0;
mid = (mid + Math.imul(ah5, bl9)) | 0;
hi = (hi + Math.imul(ah5, bh9)) | 0;
var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;
w14 &= 0x3ffffff;
/* k = 15 */
lo = Math.imul(al9, bl6);
mid = Math.imul(al9, bh6);
mid = (mid + Math.imul(ah9, bl6)) | 0;
hi = Math.imul(ah9, bh6);
lo = (lo + Math.imul(al8, bl7)) | 0;
mid = (mid + Math.imul(al8, bh7)) | 0;
mid = (mid + Math.imul(ah8, bl7)) | 0;
hi = (hi + Math.imul(ah8, bh7)) | 0;
lo = (lo + Math.imul(al7, bl8)) | 0;
mid = (mid + Math.imul(al7, bh8)) | 0;
mid = (mid + Math.imul(ah7, bl8)) | 0;
hi = (hi + Math.imul(ah7, bh8)) | 0;
lo = (lo + Math.imul(al6, bl9)) | 0;
mid = (mid + Math.imul(al6, bh9)) | 0;
mid = (mid + Math.imul(ah6, bl9)) | 0;
hi = (hi + Math.imul(ah6, bh9)) | 0;
var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;
w15 &= 0x3ffffff;
/* k = 16 */
lo = Math.imul(al9, bl7);
mid = Math.imul(al9, bh7);
mid = (mid + Math.imul(ah9, bl7)) | 0;
hi = Math.imul(ah9, bh7);
lo = (lo + Math.imul(al8, bl8)) | 0;
mid = (mid + Math.imul(al8, bh8)) | 0;
mid = (mid + Math.imul(ah8, bl8)) | 0;
hi = (hi + Math.imul(ah8, bh8)) | 0;
lo = (lo + Math.imul(al7, bl9)) | 0;
mid = (mid + Math.imul(al7, bh9)) | 0;
mid = (mid + Math.imul(ah7, bl9)) | 0;
hi = (hi + Math.imul(ah7, bh9)) | 0;
var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;
w16 &= 0x3ffffff;
/* k = 17 */
lo = Math.imul(al9, bl8);
mid = Math.imul(al9, bh8);
mid = (mid + Math.imul(ah9, bl8)) | 0;
hi = Math.imul(ah9, bh8);
lo = (lo + Math.imul(al8, bl9)) | 0;
mid = (mid + Math.imul(al8, bh9)) | 0;
mid = (mid + Math.imul(ah8, bl9)) | 0;
hi = (hi + Math.imul(ah8, bh9)) | 0;
var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;
w17 &= 0x3ffffff;
/* k = 18 */
lo = Math.imul(al9, bl9);
mid = Math.imul(al9, bh9);
mid = (mid + Math.imul(ah9, bl9)) | 0;
hi = Math.imul(ah9, bh9);
var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;
w18 &= 0x3ffffff;
o[0] = w0;
o[1] = w1;
o[2] = w2;
o[3] = w3;
o[4] = w4;
o[5] = w5;
o[6] = w6;
o[7] = w7;
o[8] = w8;
o[9] = w9;
o[10] = w10;
o[11] = w11;
o[12] = w12;
o[13] = w13;
o[14] = w14;
o[15] = w15;
o[16] = w16;
o[17] = w17;
o[18] = w18;
if (c !== 0) {
o[19] = c;
out.length++;
}
return out;
};
// Polyfill comb
if (!Math.imul) {
comb10MulTo = smallMulTo;
}
function bigMulTo (self, num, out) {
out.negative = num.negative ^ self.negative;
out.length = self.length + num.length;
var carry = 0;
var hncarry = 0;
for (var k = 0; k < out.length - 1; k++) {
// Sum all words with the same `i + j = k` and accumulate `ncarry`,
// note that ncarry could be >= 0x3ffffff
var ncarry = hncarry;
hncarry = 0;
var rword = carry & 0x3ffffff;
var maxJ = Math.min(k, num.length - 1);
for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
var i = k - j;
var a = self.words[i] | 0;
var b = num.words[j] | 0;
var r = a * b;
var lo = r & 0x3ffffff;
ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;
lo = (lo + rword) | 0;
rword = lo & 0x3ffffff;
ncarry = (ncarry + (lo >>> 26)) | 0;
hncarry += ncarry >>> 26;
ncarry &= 0x3ffffff;
}
out.words[k] = rword;
carry = ncarry;
ncarry = hncarry;
}
if (carry !== 0) {
out.words[k] = carry;
} else {
out.length--;
}
return out.strip();
}
function jumboMulTo (self, num, out) {
var fftm = new FFTM();
return fftm.mulp(self, num, out);
}
BN.prototype.mulTo = function mulTo (num, out) {
var res;
var len = this.length + num.length;
if (this.length === 10 && num.length === 10) {
res = comb10MulTo(this, num, out);
} else if (len < 63) {
res = smallMulTo(this, num, out);
} else if (len < 1024) {
res = bigMulTo(this, num, out);
} else {
res = jumboMulTo(this, num, out);
}
return res;
};
// Cooley-Tukey algorithm for FFT
// slightly revisited to rely on looping instead of recursion
function FFTM (x, y) {
this.x = x;
this.y = y;
}
FFTM.prototype.makeRBT = function makeRBT (N) {
var t = new Array(N);
var l = BN.prototype._countBits(N) - 1;
for (var i = 0; i < N; i++) {
t[i] = this.revBin(i, l, N);
}
return t;
};
// Returns binary-reversed representation of `x`
FFTM.prototype.revBin = function revBin (x, l, N) {
if (x === 0 || x === N - 1) return x;
var rb = 0;
for (var i = 0; i < l; i++) {
rb |= (x & 1) << (l - i - 1);
x >>= 1;
}
return rb;
};
// Performs "tweedling" phase, therefore 'emulating'
// behaviour of the recursive algorithm
FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {
for (var i = 0; i < N; i++) {
rtws[i] = rws[rbt[i]];
itws[i] = iws[rbt[i]];
}
};
FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {
this.permute(rbt, rws, iws, rtws, itws, N);
for (var s = 1; s < N; s <<= 1) {
var l = s << 1;
var rtwdf = Math.cos(2 * Math.PI / l);
var itwdf = Math.sin(2 * Math.PI / l);
for (var p = 0; p < N; p += l) {
var rtwdf_ = rtwdf;
var itwdf_ = itwdf;
for (var j = 0; j < s; j++) {
var re = rtws[p + j];
var ie = itws[p + j];
var ro = rtws[p + j + s];
var io = itws[p + j + s];
var rx = rtwdf_ * ro - itwdf_ * io;
io = rtwdf_ * io + itwdf_ * ro;
ro = rx;
rtws[p + j] = re + ro;
itws[p + j] = ie + io;
rtws[p + j + s] = re - ro;
itws[p + j + s] = ie - io;
/* jshint maxdepth : false */
if (j !== l) {
rx = rtwdf * rtwdf_ - itwdf * itwdf_;
itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;
rtwdf_ = rx;
}
}
}
}
};
FFTM.prototype.guessLen13b = function guessLen13b (n, m) {
var N = Math.max(m, n) | 1;
var odd = N & 1;
var i = 0;
for (N = N / 2 | 0; N; N = N >>> 1) {
i++;
}
return 1 << i + 1 + odd;
};
FFTM.prototype.conjugate = function conjugate (rws, iws, N) {
if (N <= 1) return;
for (var i = 0; i < N / 2; i++) {
var t = rws[i];
rws[i] = rws[N - i - 1];
rws[N - i - 1] = t;
t = iws[i];
iws[i] = -iws[N - i - 1];
iws[N - i - 1] = -t;
}
};
FFTM.prototype.normalize13b = function normalize13b (ws, N) {
var carry = 0;
for (var i = 0; i < N / 2; i++) {
var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +
Math.round(ws[2 * i] / N) +
carry;
ws[i] = w & 0x3ffffff;
if (w < 0x4000000) {
carry = 0;
} else {
carry = w / 0x4000000 | 0;
}
}
return ws;
};
FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {
var carry = 0;
for (var i = 0; i < len; i++) {
carry = carry + (ws[i] | 0);
rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;
rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;
}
// Pad with zeroes
for (i = 2 * len; i < N; ++i) {
rws[i] = 0;
}
assert(carry === 0);
assert((carry & ~0x1fff) === 0);
};
FFTM.prototype.stub = function stub (N) {
var ph = new Array(N);
for (var i = 0; i < N; i++) {
ph[i] = 0;
}
return ph;
};
FFTM.prototype.mulp = function mulp (x, y, out) {
var N = 2 * this.guessLen13b(x.length, y.length);
var rbt = this.makeRBT(N);
var _ = this.stub(N);
var rws = new Array(N);
var rwst = new Array(N);
var iwst = new Array(N);
var nrws = new Array(N);
var nrwst = new Array(N);
var niwst = new Array(N);
var rmws = out.words;
rmws.length = N;
this.convert13b(x.words, x.length, rws, N);
this.convert13b(y.words, y.length, nrws, N);
this.transform(rws, _, rwst, iwst, N, rbt);
this.transform(nrws, _, nrwst, niwst, N, rbt);
for (var i = 0; i < N; i++) {
var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];
iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];
rwst[i] = rx;
}
this.conjugate(rwst, iwst, N);
this.transform(rwst, iwst, rmws, _, N, rbt);
this.conjugate(rmws, _, N);
this.normalize13b(rmws, N);
out.negative = x.negative ^ y.negative;
out.length = x.length + y.length;
return out.strip();
};
// Multiply `this` by `num`
BN.prototype.mul = function mul (num) {
var out = new BN(null);
out.words = new Array(this.length + num.length);
return this.mulTo(num, out);
};
// Multiply employing FFT
BN.prototype.mulf = function mulf (num) {
var out = new BN(null);
out.words = new Array(this.length + num.length);
return jumboMulTo(this, num, out);
};
// In-place Multiplication
BN.prototype.imul = function imul (num) {
return this.clone().mulTo(num, this);
};
BN.prototype.imuln = function imuln (num) {
assert(typeof num === 'number');
assert(num < 0x4000000);
// Carry
var carry = 0;
for (var i = 0; i < this.length; i++) {
var w = (this.words[i] | 0) * num;
var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);
carry >>= 26;
carry += (w / 0x4000000) | 0;
// NOTE: lo is 27bit maximum
carry += lo >>> 26;
this.words[i] = lo & 0x3ffffff;
}
if (carry !== 0) {
this.words[i] = carry;
this.length++;
}
return this;
};
BN.prototype.muln = function muln (num) {
return this.clone().imuln(num);
};
// `this` * `this`
BN.prototype.sqr = function sqr () {
return this.mul(this);
};
// `this` * `this` in-place
BN.prototype.isqr = function isqr () {
return this.imul(this.clone());
};
// Math.pow(`this`, `num`)
BN.prototype.pow = function pow (num) {
var w = toBitArray(num);
if (w.length === 0) return new BN(1);
// Skip leading zeroes
var res = this;
for (var i = 0; i < w.length; i++, res = res.sqr()) {
if (w[i] !== 0) break;
}
if (++i < w.length) {
for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {
if (w[i] === 0) continue;
res = res.mul(q);
}
}
return res;
};
// Shift-left in-place
BN.prototype.iushln = function iushln (bits) {
assert(typeof bits === 'number' && bits >= 0);
var r = bits % 26;
var s = (bits - r) / 26;
var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);
var i;
if (r !== 0) {
var carry = 0;
for (i = 0; i < this.length; i++) {
var newCarry = this.words[i] & carryMask;
var c = ((this.words[i] | 0) - newCarry) << r;
this.words[i] = c | carry;
carry = newCarry >>> (26 - r);
}
if (carry) {
this.words[i] = carry;
this.length++;
}
}
if (s !== 0) {
for (i = this.length - 1; i >= 0; i--) {
this.words[i + s] = this.words[i];
}
for (i = 0; i < s; i++) {
this.words[i] = 0;
}
this.length += s;
}
return this.strip();
};
BN.prototype.ishln = function ishln (bits) {
// TODO(indutny): implement me
assert(this.negative === 0);
return this.iushln(bits);
};
// Shift-right in-place
// NOTE: `hint` is a lowest bit before trailing zeroes
// NOTE: if `extended` is present - it will be filled with destroyed bits
BN.prototype.iushrn = function iushrn (bits, hint, extended) {
assert(typeof bits === 'number' && bits >= 0);
var h;
if (hint) {
h = (hint - (hint % 26)) / 26;
} else {
h = 0;
}
var r = bits % 26;
var s = Math.min((bits - r) / 26, this.length);
var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
var maskedWords = extended;
h -= s;
h = Math.max(0, h);
// Extended mode, copy masked part
if (maskedWords) {
for (var i = 0; i < s; i++) {
maskedWords.words[i] = this.words[i];
}
maskedWords.length = s;
}
if (s === 0) {
// No-op, we should not move anything at all
} else if (this.length > s) {
this.length -= s;
for (i = 0; i < this.length; i++) {
this.words[i] = this.words[i + s];
}
} else {
this.words[0] = 0;
this.length = 1;
}
var carry = 0;
for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {
var word = this.words[i] | 0;
this.words[i] = (carry << (26 - r)) | (word >>> r);
carry = word & mask;
}
// Push carried bits as a mask
if (maskedWords && carry !== 0) {
maskedWords.words[maskedWords.length++] = carry;
}
if (this.length === 0) {
this.words[0] = 0;
this.length = 1;
}
return this.strip();
};
BN.prototype.ishrn = function ishrn (bits, hint, extended) {
// TODO(indutny): implement me
assert(this.negative === 0);
return this.iushrn(bits, hint, extended);
};
// Shift-left
BN.prototype.shln = function shln (bits) {
return this.clone().ishln(bits);
};
BN.prototype.ushln = function ushln (bits) {
return this.clone().iushln(bits);
};
// Shift-right
BN.prototype.shrn = function shrn (bits) {
return this.clone().ishrn(bits);
};
BN.prototype.ushrn = function ushrn (bits) {
return this.clone().iushrn(bits);
};
// Test if n bit is set
BN.prototype.testn = function testn (bit) {
assert(typeof bit === 'number' && bit >= 0);
var r = bit % 26;
var s = (bit - r) / 26;
var q = 1 << r;
// Fast case: bit is much higher than all existing words
if (this.length <= s) return false;
// Check bit and return
var w = this.words[s];
return !!(w & q);
};
// Return only lowers bits of number (in-place)
BN.prototype.imaskn = function imaskn (bits) {
assert(typeof bits === 'number' && bits >= 0);
var r = bits % 26;
var s = (bits - r) / 26;
assert(this.negative === 0, 'imaskn works only with positive numbers');
if (this.length <= s) {
return this;
}
if (r !== 0) {
s++;
}
this.length = Math.min(s, this.length);
if (r !== 0) {
var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
this.words[this.length - 1] &= mask;
}
return this.strip();
};
// Return only lowers bits of number
BN.prototype.maskn = function maskn (bits) {
return this.clone().imaskn(bits);
};
// Add plain number `num` to `this`
BN.prototype.iaddn = function iaddn (num) {
assert(typeof num === 'number');
assert(num < 0x4000000);
if (num < 0) return this.isubn(-num);
// Possible sign change
if (this.negative !== 0) {
if (this.length === 1 && (this.words[0] | 0) < num) {
this.words[0] = num - (this.words[0] | 0);
this.negative = 0;
return this;
}
this.negative = 0;
this.isubn(num);
this.negative = 1;
return this;
}
// Add without checks
return this._iaddn(num);
};
BN.prototype._iaddn = function _iaddn (num) {
this.words[0] += num;
// Carry
for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {
this.words[i] -= 0x4000000;
if (i === this.length - 1) {
this.words[i + 1] = 1;
} else {
this.words[i + 1]++;
}
}
this.length = Math.max(this.length, i + 1);
return this;
};
// Subtract plain number `num` from `this`
BN.prototype.isubn = function isubn (num) {
assert(typeof num === 'number');
assert(num < 0x4000000);
if (num < 0) return this.iaddn(-num);
if (this.negative !== 0) {
this.negative = 0;
this.iaddn(num);
this.negative = 1;
return this;
}
this.words[0] -= num;
if (this.length === 1 && this.words[0] < 0) {
this.words[0] = -this.words[0];
this.negative = 1;
} else {
// Carry
for (var i = 0; i < this.length && this.words[i] < 0; i++) {
this.words[i] += 0x4000000;
this.words[i + 1] -= 1;
}
}
return this.strip();
};
BN.prototype.addn = function addn (num) {
return this.clone().iaddn(num);
};
BN.prototype.subn = function subn (num) {
return this.clone().isubn(num);
};
BN.prototype.iabs = function iabs () {
this.negative = 0;
return this;
};
BN.prototype.abs = function abs () {
return this.clone().iabs();
};
BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {
var len = num.length + shift;
var i;
this._expand(len);
var w;
var carry = 0;
for (i = 0; i < num.length; i++) {
w = (this.words[i + shift] | 0) + carry;
var right = (num.words[i] | 0) * mul;
w -= right & 0x3ffffff;
carry = (w >> 26) - ((right / 0x4000000) | 0);
this.words[i + shift] = w & 0x3ffffff;
}
for (; i < this.length - shift; i++) {
w = (this.words[i + shift] | 0) + carry;
carry = w >> 26;
this.words[i + shift] = w & 0x3ffffff;
}
if (carry === 0) return this.strip();
// Subtraction overflow
assert(carry === -1);
carry = 0;
for (i = 0; i < this.length; i++) {
w = -(this.words[i] | 0) + carry;
carry = w >> 26;
this.words[i] = w & 0x3ffffff;
}
this.negative = 1;
return this.strip();
};
BN.prototype._wordDiv = function _wordDiv (num, mode) {
var shift = this.length - num.length;
var a = this.clone();
var b = num;
// Normalize
var bhi = b.words[b.length - 1] | 0;
var bhiBits = this._countBits(bhi);
shift = 26 - bhiBits;
if (shift !== 0) {
b = b.ushln(shift);
a.iushln(shift);
bhi = b.words[b.length - 1] | 0;
}
// Initialize quotient
var m = a.length - b.length;
var q;
if (mode !== 'mod') {
q = new BN(null);
q.length = m + 1;
q.words = new Array(q.length);
for (var i = 0; i < q.length; i++) {
q.words[i] = 0;
}
}
var diff = a.clone()._ishlnsubmul(b, 1, m);
if (diff.negative === 0) {
a = diff;
if (q) {
q.words[m] = 1;
}
}
for (var j = m - 1; j >= 0; j--) {
var qj = (a.words[b.length + j] | 0) * 0x4000000 +
(a.words[b.length + j - 1] | 0);
// NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max
// (0x7ffffff)
qj = Math.min((qj / bhi) | 0, 0x3ffffff);
a._ishlnsubmul(b, qj, j);
while (a.negative !== 0) {
qj--;
a.negative = 0;
a._ishlnsubmul(b, 1, j);
if (!a.isZero()) {
a.negative ^= 1;
}
}
if (q) {
q.words[j] = qj;
}
}
if (q) {
q.strip();
}
a.strip();
// Denormalize
if (mode !== 'div' && shift !== 0) {
a.iushrn(shift);
}
return {
div: q || null,
mod: a
};
};
// NOTE: 1) `mode` can be set to `mod` to request mod only,
// to `div` to request div only, or be absent to
// request both div & mod
// 2) `positive` is true if unsigned mod is requested
BN.prototype.divmod = function divmod (num, mode, positive) {
assert(!num.isZero());
if (this.isZero()) {
return {
div: new BN(0),
mod: new BN(0)
};
}
var div, mod, res;
if (this.negative !== 0 && num.negative === 0) {
res = this.neg().divmod(num, mode);
if (mode !== 'mod') {
div = res.div.neg();
}
if (mode !== 'div') {
mod = res.mod.neg();
if (positive && mod.negative !== 0) {
mod.iadd(num);
}
}
return {
div: div,
mod: mod
};
}
if (this.negative === 0 && num.negative !== 0) {
res = this.divmod(num.neg(), mode);
if (mode !== 'mod') {
div = res.div.neg();
}
return {
div: div,
mod: res.mod
};
}
if ((this.negative & num.negative) !== 0) {
res = this.neg().divmod(num.neg(), mode);
if (mode !== 'div') {
mod = res.mod.neg();
if (positive && mod.negative !== 0) {
mod.isub(num);
}
}
return {
div: res.div,
mod: mod
};
}
// Both numbers are positive at this point
// Strip both numbers to approximate shift value
if (num.length > this.length || this.cmp(num) < 0) {
return {
div: new BN(0),
mod: this
};
}
// Very short reduction
if (num.length === 1) {
if (mode === 'div') {
return {
div: this.divn(num.words[0]),
mod: null
};
}
if (mode === 'mod') {
return {
div: null,
mod: new BN(this.modn(num.words[0]))
};
}
return {
div: this.divn(num.words[0]),
mod: new BN(this.modn(num.words[0]))
};
}
return this._wordDiv(num, mode);
};
// Find `this` / `num`
BN.prototype.div = function div (num) {
return this.divmod(num, 'div', false).div;
};
// Find `this` % `num`
BN.prototype.mod = function mod (num) {
return this.divmod(num, 'mod', false).mod;
};
BN.prototype.umod = function umod (num) {
return this.divmod(num, 'mod', true).mod;
};
// Find Round(`this` / `num`)
BN.prototype.divRound = function divRound (num) {
var dm = this.divmod(num);
// Fast case - exact division
if (dm.mod.isZero()) return dm.div;
var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;
var half = num.ushrn(1);
var r2 = num.andln(1);
var cmp = mod.cmp(half);
// Round down
if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;
// Round up
return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);
};
BN.prototype.modn = function modn (num) {
assert(num <= 0x3ffffff);
var p = (1 << 26) % num;
var acc = 0;
for (var i = this.length - 1; i >= 0; i--) {
acc = (p * acc + (this.words[i] | 0)) % num;
}
return acc;
};
// In-place division by number
BN.prototype.idivn = function idivn (num) {
assert(num <= 0x3ffffff);
var carry = 0;
for (var i = this.length - 1; i >= 0; i--) {
var w = (this.words[i] | 0) + carry * 0x4000000;
this.words[i] = (w / num) | 0;
carry = w % num;
}
return this.strip();
};
BN.prototype.divn = function divn (num) {
return this.clone().idivn(num);
};
BN.prototype.egcd = function egcd (p) {
assert(p.negative === 0);
assert(!p.isZero());
var x = this;
var y = p.clone();
if (x.negative !== 0) {
x = x.umod(p);
} else {
x = x.clone();
}
// A * x + B * y = x
var A = new BN(1);
var B = new BN(0);
// C * x + D * y = y
var C = new BN(0);
var D = new BN(1);
var g = 0;
while (x.isEven() && y.isEven()) {
x.iushrn(1);
y.iushrn(1);
++g;
}
var yp = y.clone();
var xp = x.clone();
while (!x.isZero()) {
for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
if (i > 0) {
x.iushrn(i);
while (i-- > 0) {
if (A.isOdd() || B.isOdd()) {
A.iadd(yp);
B.isub(xp);
}
A.iushrn(1);
B.iushrn(1);
}
}
for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
if (j > 0) {
y.iushrn(j);
while (j-- > 0) {
if (C.isOdd() || D.isOdd()) {
C.iadd(yp);
D.isub(xp);
}
C.iushrn(1);
D.iushrn(1);
}
}
if (x.cmp(y) >= 0) {
x.isub(y);
A.isub(C);
B.isub(D);
} else {
y.isub(x);
C.isub(A);
D.isub(B);
}
}
return {
a: C,
b: D,
gcd: y.iushln(g)
};
};
// This is reduced incarnation of the binary EEA
// above, designated to invert members of the
// _prime_ fields F(p) at a maximal speed
BN.prototype._invmp = function _invmp (p) {
assert(p.negative === 0);
assert(!p.isZero());
var a = this;
var b = p.clone();
if (a.negative !== 0) {
a = a.umod(p);
} else {
a = a.clone();
}
var x1 = new BN(1);
var x2 = new BN(0);
var delta = b.clone();
while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {
for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
if (i > 0) {
a.iushrn(i);
while (i-- > 0) {
if (x1.isOdd()) {
x1.iadd(delta);
}
x1.iushrn(1);
}
}
for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
if (j > 0) {
b.iushrn(j);
while (j-- > 0) {
if (x2.isOdd()) {
x2.iadd(delta);
}
x2.iushrn(1);
}
}
if (a.cmp(b) >= 0) {
a.isub(b);
x1.isub(x2);
} else {
b.isub(a);
x2.isub(x1);
}
}
var res;
if (a.cmpn(1) === 0) {
res = x1;
} else {
res = x2;
}
if (res.cmpn(0) < 0) {
res.iadd(p);
}
return res;
};
BN.prototype.gcd = function gcd (num) {
if (this.isZero()) return num.abs();
if (num.isZero()) return this.abs();
var a = this.clone();
var b = num.clone();
a.negative = 0;
b.negative = 0;
// Remove common factor of two
for (var shift = 0; a.isEven() && b.isEven(); shift++) {
a.iushrn(1);
b.iushrn(1);
}
do {
while (a.isEven()) {
a.iushrn(1);
}
while (b.isEven()) {
b.iushrn(1);
}
var r = a.cmp(b);
if (r < 0) {
// Swap `a` and `b` to make `a` always bigger than `b`
var t = a;
a = b;
b = t;
} else if (r === 0 || b.cmpn(1) === 0) {
break;
}
a.isub(b);
} while (true);
return b.iushln(shift);
};
// Invert number in the field F(num)
BN.prototype.invm = function invm (num) {
return this.egcd(num).a.umod(num);
};
BN.prototype.isEven = function isEven () {
return (this.words[0] & 1) === 0;
};
BN.prototype.isOdd = function isOdd () {
return (this.words[0] & 1) === 1;
};
// And first word and num
BN.prototype.andln = function andln (num) {
return this.words[0] & num;
};
// Increment at the bit position in-line
BN.prototype.bincn = function bincn (bit) {
assert(typeof bit === 'number');
var r = bit % 26;
var s = (bit - r) / 26;
var q = 1 << r;
// Fast case: bit is much higher than all existing words
if (this.length <= s) {
this._expand(s + 1);
this.words[s] |= q;
return this;
}
// Add bit and propagate, if needed
var carry = q;
for (var i = s; carry !== 0 && i < this.length; i++) {
var w = this.words[i] | 0;
w += carry;
carry = w >>> 26;
w &= 0x3ffffff;
this.words[i] = w;
}
if (carry !== 0) {
this.words[i] = carry;
this.length++;
}
return this;
};
BN.prototype.isZero = function isZero () {
return this.length === 1 && this.words[0] === 0;
};
BN.prototype.cmpn = function cmpn (num) {
var negative = num < 0;
if (this.negative !== 0 && !negative) return -1;
if (this.negative === 0 && negative) return 1;
this.strip();
var res;
if (this.length > 1) {
res = 1;
} else {
if (negative) {
num = -num;
}
assert(num <= 0x3ffffff, 'Number is too big');
var w = this.words[0] | 0;
res = w === num ? 0 : w < num ? -1 : 1;
}
if (this.negative !== 0) return -res | 0;
return res;
};
// Compare two numbers and return:
// 1 - if `this` > `num`
// 0 - if `this` == `num`
// -1 - if `this` < `num`
BN.prototype.cmp = function cmp (num) {
if (this.negative !== 0 && num.negative === 0) return -1;
if (this.negative === 0 && num.negative !== 0) return 1;
var res = this.ucmp(num);
if (this.negative !== 0) return -res | 0;
return res;
};
// Unsigned comparison
BN.prototype.ucmp = function ucmp (num) {
// At this point both numbers have the same sign
if (this.length > num.length) return 1;
if (this.length < num.length) return -1;
var res = 0;
for (var i = this.length - 1; i >= 0; i--) {
var a = this.words[i] | 0;
var b = num.words[i] | 0;
if (a === b) continue;
if (a < b) {
res = -1;
} else if (a > b) {
res = 1;
}
break;
}
return res;
};
BN.prototype.gtn = function gtn (num) {
return this.cmpn(num) === 1;
};
BN.prototype.gt = function gt (num) {
return this.cmp(num) === 1;
};
BN.prototype.gten = function gten (num) {
return this.cmpn(num) >= 0;
};
BN.prototype.gte = function gte (num) {
return this.cmp(num) >= 0;
};
BN.prototype.ltn = function ltn (num) {
return this.cmpn(num) === -1;
};
BN.prototype.lt = function lt (num) {
return this.cmp(num) === -1;
};
BN.prototype.lten = function lten (num) {
return this.cmpn(num) <= 0;
};
BN.prototype.lte = function lte (num) {
return this.cmp(num) <= 0;
};
BN.prototype.eqn = function eqn (num) {
return this.cmpn(num) === 0;
};
BN.prototype.eq = function eq (num) {
return this.cmp(num) === 0;
};
//
// A reduce context, could be using montgomery or something better, depending
// on the `m` itself.
//
BN.red = function red (num) {
return new Red(num);
};
BN.prototype.toRed = function toRed (ctx) {
assert(!this.red, 'Already a number in reduction context');
assert(this.negative === 0, 'red works only with positives');
return ctx.convertTo(this)._forceRed(ctx);
};
BN.prototype.fromRed = function fromRed () {
assert(this.red, 'fromRed works only with numbers in reduction context');
return this.red.convertFrom(this);
};
BN.prototype._forceRed = function _forceRed (ctx) {
this.red = ctx;
return this;
};
BN.prototype.forceRed = function forceRed (ctx) {
assert(!this.red, 'Already a number in reduction context');
return this._forceRed(ctx);
};
BN.prototype.redAdd = function redAdd (num) {
assert(this.red, 'redAdd works only with red numbers');
return this.red.add(this, num);
};
BN.prototype.redIAdd = function redIAdd (num) {
assert(this.red, 'redIAdd works only with red numbers');
return this.red.iadd(this, num);
};
BN.prototype.redSub = function redSub (num) {
assert(this.red, 'redSub works only with red numbers');
return this.red.sub(this, num);
};
BN.prototype.redISub = function redISub (num) {
assert(this.red, 'redISub works only with red numbers');
return this.red.isub(this, num);
};
BN.prototype.redShl = function redShl (num) {
assert(this.red, 'redShl works only with red numbers');
return this.red.shl(this, num);
};
BN.prototype.redMul = function redMul (num) {
assert(this.red, 'redMul works only with red numbers');
this.red._verify2(this, num);
return this.red.mul(this, num);
};
BN.prototype.redIMul = function redIMul (num) {
assert(this.red, 'redMul works only with red numbers');
this.red._verify2(this, num);
return this.red.imul(this, num);
};
BN.prototype.redSqr = function redSqr () {
assert(this.red, 'redSqr works only with red numbers');
this.red._verify1(this);
return this.red.sqr(this);
};
BN.prototype.redISqr = function redISqr () {
assert(this.red, 'redISqr works only with red numbers');
this.red._verify1(this);
return this.red.isqr(this);
};
// Square root over p
BN.prototype.redSqrt = function redSqrt () {
assert(this.red, 'redSqrt works only with red numbers');
this.red._verify1(this);
return this.red.sqrt(this);
};
BN.prototype.redInvm = function redInvm () {
assert(this.red, 'redInvm works only with red numbers');
this.red._verify1(this);
return this.red.invm(this);
};
// Return negative clone of `this` % `red modulo`
BN.prototype.redNeg = function redNeg () {
assert(this.red, 'redNeg works only with red numbers');
this.red._verify1(this);
return this.red.neg(this);
};
BN.prototype.redPow = function redPow (num) {
assert(this.red && !num.red, 'redPow(normalNum)');
this.red._verify1(this);
return this.red.pow(this, num);
};
// Prime numbers with efficient reduction
var primes = {
k256: null,
p224: null,
p192: null,
p25519: null
};
// Pseudo-Mersenne prime
function MPrime (name, p) {
// P = 2 ^ N - K
this.name = name;
this.p = new BN(p, 16);
this.n = this.p.bitLength();
this.k = new BN(1).iushln(this.n).isub(this.p);
this.tmp = this._tmp();
}
MPrime.prototype._tmp = function _tmp () {
var tmp = new BN(null);
tmp.words = new Array(Math.ceil(this.n / 13));
return tmp;
};
MPrime.prototype.ireduce = function ireduce (num) {
// Assumes that `num` is less than `P^2`
// num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)
var r = num;
var rlen;
do {
this.split(r, this.tmp);
r = this.imulK(r);
r = r.iadd(this.tmp);
rlen = r.bitLength();
} while (rlen > this.n);
var cmp = rlen < this.n ? -1 : r.ucmp(this.p);
if (cmp === 0) {
r.words[0] = 0;
r.length = 1;
} else if (cmp > 0) {
r.isub(this.p);
} else {
if (r.strip !== undefined) {
// r is BN v4 instance
r.strip();
} else {
// r is BN v5 instance
r._strip();
}
}
return r;
};
MPrime.prototype.split = function split (input, out) {
input.iushrn(this.n, 0, out);
};
MPrime.prototype.imulK = function imulK (num) {
return num.imul(this.k);
};
function K256 () {
MPrime.call(
this,
'k256',
'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');
}
inherits(K256, MPrime);
K256.prototype.split = function split (input, output) {
// 256 = 9 * 26 + 22
var mask = 0x3fffff;
var outLen = Math.min(input.length, 9);
for (var i = 0; i < outLen; i++) {
output.words[i] = input.words[i];
}
output.length = outLen;
if (input.length <= 9) {
input.words[0] = 0;
input.length = 1;
return;
}
// Shift by 9 limbs
var prev = input.words[9];
output.words[output.length++] = prev & mask;
for (i = 10; i < input.length; i++) {
var next = input.words[i] | 0;
input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);
prev = next;
}
prev >>>= 22;
input.words[i - 10] = prev;
if (prev === 0 && input.length > 10) {
input.length -= 10;
} else {
input.length -= 9;
}
};
K256.prototype.imulK = function imulK (num) {
// K = 0x1000003d1 = [ 0x40, 0x3d1 ]
num.words[num.length] = 0;
num.words[num.length + 1] = 0;
num.length += 2;
// bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390
var lo = 0;
for (var i = 0; i < num.length; i++) {
var w = num.words[i] | 0;
lo += w * 0x3d1;
num.words[i] = lo & 0x3ffffff;
lo = w * 0x40 + ((lo / 0x4000000) | 0);
}
// Fast length reduction
if (num.words[num.length - 1] === 0) {
num.length--;
if (num.words[num.length - 1] === 0) {
num.length--;
}
}
return num;
};
function P224 () {
MPrime.call(
this,
'p224',
'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');
}
inherits(P224, MPrime);
function P192 () {
MPrime.call(
this,
'p192',
'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');
}
inherits(P192, MPrime);
function P25519 () {
// 2 ^ 255 - 19
MPrime.call(
this,
'25519',
'7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');
}
inherits(P25519, MPrime);
P25519.prototype.imulK = function imulK (num) {
// K = 0x13
var carry = 0;
for (var i = 0; i < num.length; i++) {
var hi = (num.words[i] | 0) * 0x13 + carry;
var lo = hi & 0x3ffffff;
hi >>>= 26;
num.words[i] = lo;
carry = hi;
}
if (carry !== 0) {
num.words[num.length++] = carry;
}
return num;
};
// Exported mostly for testing purposes, use plain name instead
BN._prime = function prime (name) {
// Cached version of prime
if (primes[name]) return primes[name];
var prime;
if (name === 'k256') {
prime = new K256();
} else if (name === 'p224') {
prime = new P224();
} else if (name === 'p192') {
prime = new P192();
} else if (name === 'p25519') {
prime = new P25519();
} else {
throw new Error('Unknown prime ' + name);
}
primes[name] = prime;
return prime;
};
//
// Base reduction engine
//
function Red (m) {
if (typeof m === 'string') {
var prime = BN._prime(m);
this.m = prime.p;
this.prime = prime;
} else {
assert(m.gtn(1), 'modulus must be greater than 1');
this.m = m;
this.prime = null;
}
}
Red.prototype._verify1 = function _verify1 (a) {
assert(a.negative === 0, 'red works only with positives');
assert(a.red, 'red works only with red numbers');
};
Red.prototype._verify2 = function _verify2 (a, b) {
assert((a.negative | b.negative) === 0, 'red works only with positives');
assert(a.red && a.red === b.red,
'red works only with red numbers');
};
Red.prototype.imod = function imod (a) {
if (this.prime) return this.prime.ireduce(a)._forceRed(this);
return a.umod(this.m)._forceRed(this);
};
Red.prototype.neg = function neg (a) {
if (a.isZero()) {
return a.clone();
}
return this.m.sub(a)._forceRed(this);
};
Red.prototype.add = function add (a, b) {
this._verify2(a, b);
var res = a.add(b);
if (res.cmp(this.m) >= 0) {
res.isub(this.m);
}
return res._forceRed(this);
};
Red.prototype.iadd = function iadd (a, b) {
this._verify2(a, b);
var res = a.iadd(b);
if (res.cmp(this.m) >= 0) {
res.isub(this.m);
}
return res;
};
Red.prototype.sub = function sub (a, b) {
this._verify2(a, b);
var res = a.sub(b);
if (res.cmpn(0) < 0) {
res.iadd(this.m);
}
return res._forceRed(this);
};
Red.prototype.isub = function isub (a, b) {
this._verify2(a, b);
var res = a.isub(b);
if (res.cmpn(0) < 0) {
res.iadd(this.m);
}
return res;
};
Red.prototype.shl = function shl (a, num) {
this._verify1(a);
return this.imod(a.ushln(num));
};
Red.prototype.imul = function imul (a, b) {
this._verify2(a, b);
return this.imod(a.imul(b));
};
Red.prototype.mul = function mul (a, b) {
this._verify2(a, b);
return this.imod(a.mul(b));
};
Red.prototype.isqr = function isqr (a) {
return this.imul(a, a.clone());
};
Red.prototype.sqr = function sqr (a) {
return this.mul(a, a);
};
Red.prototype.sqrt = function sqrt (a) {
if (a.isZero()) return a.clone();
var mod3 = this.m.andln(3);
assert(mod3 % 2 === 1);
// Fast case
if (mod3 === 3) {
var pow = this.m.add(new BN(1)).iushrn(2);
return this.pow(a, pow);
}
// Tonelli-Shanks algorithm (Totally unoptimized and slow)
//
// Find Q and S, that Q * 2 ^ S = (P - 1)
var q = this.m.subn(1);
var s = 0;
while (!q.isZero() && q.andln(1) === 0) {
s++;
q.iushrn(1);
}
assert(!q.isZero());
var one = new BN(1).toRed(this);
var nOne = one.redNeg();
// Find quadratic non-residue
// NOTE: Max is such because of generalized Riemann hypothesis.
var lpow = this.m.subn(1).iushrn(1);
var z = this.m.bitLength();
z = new BN(2 * z * z).toRed(this);
while (this.pow(z, lpow).cmp(nOne) !== 0) {
z.redIAdd(nOne);
}
var c = this.pow(z, q);
var r = this.pow(a, q.addn(1).iushrn(1));
var t = this.pow(a, q);
var m = s;
while (t.cmp(one) !== 0) {
var tmp = t;
for (var i = 0; tmp.cmp(one) !== 0; i++) {
tmp = tmp.redSqr();
}
assert(i < m);
var b = this.pow(c, new BN(1).iushln(m - i - 1));
r = r.redMul(b);
c = b.redSqr();
t = t.redMul(c);
m = i;
}
return r;
};
Red.prototype.invm = function invm (a) {
var inv = a._invmp(this.m);
if (inv.negative !== 0) {
inv.negative = 0;
return this.imod(inv).redNeg();
} else {
return this.imod(inv);
}
};
Red.prototype.pow = function pow (a, num) {
if (num.isZero()) return new BN(1).toRed(this);
if (num.cmpn(1) === 0) return a.clone();
var windowSize = 4;
var wnd = new Array(1 << windowSize);
wnd[0] = new BN(1).toRed(this);
wnd[1] = a;
for (var i = 2; i < wnd.length; i++) {
wnd[i] = this.mul(wnd[i - 1], a);
}
var res = wnd[0];
var current = 0;
var currentLen = 0;
var start = num.bitLength() % 26;
if (start === 0) {
start = 26;
}
for (i = num.length - 1; i >= 0; i--) {
var word = num.words[i];
for (var j = start - 1; j >= 0; j--) {
var bit = (word >> j) & 1;
if (res !== wnd[0]) {
res = this.sqr(res);
}
if (bit === 0 && current === 0) {
currentLen = 0;
continue;
}
current <<= 1;
current |= bit;
currentLen++;
if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;
res = this.mul(res, wnd[current]);
currentLen = 0;
current = 0;
}
start = 26;
}
return res;
};
Red.prototype.convertTo = function convertTo (num) {
var r = num.umod(this.m);
return r === num ? r.clone() : r;
};
Red.prototype.convertFrom = function convertFrom (num) {
var res = num.clone();
res.red = null;
return res;
};
//
// Montgomery method engine
//
BN.mont = function mont (num) {
return new Mont(num);
};
function Mont (m) {
Red.call(this, m);
this.shift = this.m.bitLength();
if (this.shift % 26 !== 0) {
this.shift += 26 - (this.shift % 26);
}
this.r = new BN(1).iushln(this.shift);
this.r2 = this.imod(this.r.sqr());
this.rinv = this.r._invmp(this.m);
this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);
this.minv = this.minv.umod(this.r);
this.minv = this.r.sub(this.minv);
}
inherits(Mont, Red);
Mont.prototype.convertTo = function convertTo (num) {
return this.imod(num.ushln(this.shift));
};
Mont.prototype.convertFrom = function convertFrom (num) {
var r = this.imod(num.mul(this.rinv));
r.red = null;
return r;
};
Mont.prototype.imul = function imul (a, b) {
if (a.isZero() || b.isZero()) {
a.words[0] = 0;
a.length = 1;
return a;
}
var t = a.imul(b);
var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
var u = t.isub(c).iushrn(this.shift);
var res = u;
if (u.cmp(this.m) >= 0) {
res = u.isub(this.m);
} else if (u.cmpn(0) < 0) {
res = u.iadd(this.m);
}
return res._forceRed(this);
};
Mont.prototype.mul = function mul (a, b) {
if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);
var t = a.mul(b);
var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
var u = t.isub(c).iushrn(this.shift);
var res = u;
if (u.cmp(this.m) >= 0) {
res = u.isub(this.m);
} else if (u.cmpn(0) < 0) {
res = u.iadd(this.m);
}
return res._forceRed(this);
};
Mont.prototype.invm = function invm (a) {
// (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R
var res = this.imod(a._invmp(this.m).mul(this.r2));
return res._forceRed(this);
};
})( false || module, this);
/***/ }),
/***/ 3349:
/***/ ((module) => {
module.exports = assert;
function assert(val, msg) {
if (!val)
throw new Error(msg || 'Assertion failed');
}
assert.equal = function assertEqual(l, r, msg) {
if (l != r)
throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));
};
/***/ }),
/***/ 4367:
/***/ ((__unused_webpack_module, exports) => {
"use strict";
var utils = exports;
function toArray(msg, enc) {
if (Array.isArray(msg))
return msg.slice();
if (!msg)
return [];
var res = [];
if (typeof msg !== 'string') {
for (var i = 0; i < msg.length; i++)
res[i] = msg[i] | 0;
return res;
}
if (enc === 'hex') {
msg = msg.replace(/[^a-z0-9]+/ig, '');
if (msg.length % 2 !== 0)
msg = '0' + msg;
for (var i = 0; i < msg.length; i += 2)
res.push(parseInt(msg[i] + msg[i + 1], 16));
} else {
for (var i = 0; i < msg.length; i++) {
var c = msg.charCodeAt(i);
var hi = c >> 8;
var lo = c & 0xff;
if (hi)
res.push(hi, lo);
else
res.push(lo);
}
}
return res;
}
utils.toArray = toArray;
function zero2(word) {
if (word.length === 1)
return '0' + word;
else
return word;
}
utils.zero2 = zero2;
function toHex(msg) {
var res = '';
for (var i = 0; i < msg.length; i++)
res += zero2(msg[i].toString(16));
return res;
}
utils.toHex = toHex;
utils.encode = function encode(arr, enc) {
if (enc === 'hex')
return toHex(arr);
else
return arr;
};
/***/ }),
/***/ 6889:
/***/ ((module) => {
module.exports = assert
class AssertionError extends Error {}
AssertionError.prototype.name = 'AssertionError'
/**
* Minimal assert function
* @param {any} t Value to check if falsy
* @param {string=} m Optional assertion error message
* @throws {AssertionError}
*/
function assert (t, m) {
if (!t) {
var err = new AssertionError(m)
if (Error.captureStackTrace) Error.captureStackTrace(err, assert)
throw err
}
}
/***/ }),
/***/ 9211:
/***/ ((module) => {
"use strict";
var numberIsNaN = function (value) {
return value !== value;
};
module.exports = function is(a, b) {
if (a === 0 && b === 0) {
return 1 / a === 1 / b;
}
if (a === b) {
return true;
}
if (numberIsNaN(a) && numberIsNaN(b)) {
return true;
}
return false;
};
/***/ }),
/***/ 7653:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var define = __webpack_require__(8452);
var callBind = __webpack_require__(487);
var implementation = __webpack_require__(9211);
var getPolyfill = __webpack_require__(9394);
var shim = __webpack_require__(6576);
var polyfill = callBind(getPolyfill(), Object);
define(polyfill, {
getPolyfill: getPolyfill,
implementation: implementation,
shim: shim
});
module.exports = polyfill;
/***/ }),
/***/ 9394:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var implementation = __webpack_require__(9211);
module.exports = function getPolyfill() {
return typeof Object.is === 'function' ? Object.is : implementation;
};
/***/ }),
/***/ 6576:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var getPolyfill = __webpack_require__(9394);
var define = __webpack_require__(8452);
module.exports = function shimObjectIs() {
var polyfill = getPolyfill();
define(Object, { is: polyfill }, {
is: function testObjectIs() {
return Object.is !== polyfill;
}
});
return polyfill;
};
/***/ }),
/***/ 8875:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var keysShim;
if (!Object.keys) {
// modified from https://github.com/es-shims/es5-shim
var has = Object.prototype.hasOwnProperty;
var toStr = Object.prototype.toString;
var isArgs = __webpack_require__(1093); // eslint-disable-line global-require
var isEnumerable = Object.prototype.propertyIsEnumerable;
var hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');
var hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');
var dontEnums = [
'toString',
'toLocaleString',
'valueOf',
'hasOwnProperty',
'isPrototypeOf',
'propertyIsEnumerable',
'constructor'
];
var equalsConstructorPrototype = function (o) {
var ctor = o.constructor;
return ctor && ctor.prototype === o;
};
var excludedKeys = {
$applicationCache: true,
$console: true,
$external: true,
$frame: true,
$frameElement: true,
$frames: true,
$innerHeight: true,
$innerWidth: true,
$onmozfullscreenchange: true,
$onmozfullscreenerror: true,
$outerHeight: true,
$outerWidth: true,
$pageXOffset: true,
$pageYOffset: true,
$parent: true,
$scrollLeft: true,
$scrollTop: true,
$scrollX: true,
$scrollY: true,
$self: true,
$webkitIndexedDB: true,
$webkitStorageInfo: true,
$window: true
};
var hasAutomationEqualityBug = (function () {
/* global window */
if (typeof window === 'undefined') { return false; }
for (var k in window) {
try {
if (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {
try {
equalsConstructorPrototype(window[k]);
} catch (e) {
return true;
}
}
} catch (e) {
return true;
}
}
return false;
}());
var equalsConstructorPrototypeIfNotBuggy = function (o) {
/* global window */
if (typeof window === 'undefined' || !hasAutomationEqualityBug) {
return equalsConstructorPrototype(o);
}
try {
return equalsConstructorPrototype(o);
} catch (e) {
return false;
}
};
keysShim = function keys(object) {
var isObject = object !== null && typeof object === 'object';
var isFunction = toStr.call(object) === '[object Function]';
var isArguments = isArgs(object);
var isString = isObject && toStr.call(object) === '[object String]';
var theKeys = [];
if (!isObject && !isFunction && !isArguments) {
throw new TypeError('Object.keys called on a non-object');
}
var skipProto = hasProtoEnumBug && isFunction;
if (isString && object.length > 0 && !has.call(object, 0)) {
for (var i = 0; i < object.length; ++i) {
theKeys.push(String(i));
}
}
if (isArguments && object.length > 0) {
for (var j = 0; j < object.length; ++j) {
theKeys.push(String(j));
}
} else {
for (var name in object) {
if (!(skipProto && name === 'prototype') && has.call(object, name)) {
theKeys.push(String(name));
}
}
}
if (hasDontEnumBug) {
var skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);
for (var k = 0; k < dontEnums.length; ++k) {
if (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {
theKeys.push(dontEnums[k]);
}
}
}
return theKeys;
};
}
module.exports = keysShim;
/***/ }),
/***/ 1189:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var slice = Array.prototype.slice;
var isArgs = __webpack_require__(1093);
var origKeys = Object.keys;
var keysShim = origKeys ? function keys(o) { return origKeys(o); } : __webpack_require__(8875);
var originalKeys = Object.keys;
keysShim.shim = function shimObjectKeys() {
if (Object.keys) {
var keysWorksWithArguments = (function () {
// Safari 5.0 bug
var args = Object.keys(arguments);
return args && args.length === arguments.length;
}(1, 2));
if (!keysWorksWithArguments) {
Object.keys = function keys(object) { // eslint-disable-line func-name-matching
if (isArgs(object)) {
return originalKeys(slice.call(object));
}
return originalKeys(object);
};
}
} else {
Object.keys = keysShim;
}
return Object.keys || keysShim;
};
module.exports = keysShim;
/***/ }),
/***/ 1093:
/***/ ((module) => {
"use strict";
var toStr = Object.prototype.toString;
module.exports = function isArguments(value) {
var str = toStr.call(value);
var isArgs = str === '[object Arguments]';
if (!isArgs) {
isArgs = str !== '[object Array]' &&
value !== null &&
typeof value === 'object' &&
typeof value.length === 'number' &&
value.length >= 0 &&
toStr.call(value.callee) === '[object Function]';
}
return isArgs;
};
/***/ }),
/***/ 8403:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
// modified from https://github.com/es-shims/es6-shim
var objectKeys = __webpack_require__(1189);
var hasSymbols = __webpack_require__(1333)();
var callBound = __webpack_require__(8075);
var toObject = Object;
var $push = callBound('Array.prototype.push');
var $propIsEnumerable = callBound('Object.prototype.propertyIsEnumerable');
var originalGetSymbols = hasSymbols ? Object.getOwnPropertySymbols : null;
// eslint-disable-next-line no-unused-vars
module.exports = function assign(target, source1) {
if (target == null) { throw new TypeError('target must be an object'); }
var to = toObject(target); // step 1
if (arguments.length === 1) {
return to; // step 2
}
for (var s = 1; s < arguments.length; ++s) {
var from = toObject(arguments[s]); // step 3.a.i
// step 3.a.ii:
var keys = objectKeys(from);
var getSymbols = hasSymbols && (Object.getOwnPropertySymbols || originalGetSymbols);
if (getSymbols) {
var syms = getSymbols(from);
for (var j = 0; j < syms.length; ++j) {
var key = syms[j];
if ($propIsEnumerable(from, key)) {
$push(keys, key);
}
}
}
// step 3.a.iii:
for (var i = 0; i < keys.length; ++i) {
var nextKey = keys[i];
if ($propIsEnumerable(from, nextKey)) { // step 3.a.iii.2
var propValue = from[nextKey]; // step 3.a.iii.2.a
to[nextKey] = propValue; // step 3.a.iii.2.b
}
}
}
return to; // step 4
};
/***/ }),
/***/ 1514:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var implementation = __webpack_require__(8403);
var lacksProperEnumerationOrder = function () {
if (!Object.assign) {
return false;
}
/*
* v8, specifically in node 4.x, has a bug with incorrect property enumeration order
* note: this does not detect the bug unless there's 20 characters
*/
var str = 'abcdefghijklmnopqrst';
var letters = str.split('');
var map = {};
for (var i = 0; i < letters.length; ++i) {
map[letters[i]] = letters[i];
}
var obj = Object.assign({}, map);
var actual = '';
for (var k in obj) {
actual += k;
}
return str !== actual;
};
var assignHasPendingExceptions = function () {
if (!Object.assign || !Object.preventExtensions) {
return false;
}
/*
* Firefox 37 still has "pending exception" logic in its Object.assign implementation,
* which is 72% slower than our shim, and Firefox 40's native implementation.
*/
var thrower = Object.preventExtensions({ 1: 2 });
try {
Object.assign(thrower, 'xy');
} catch (e) {
return thrower[1] === 'y';
}
return false;
};
module.exports = function getPolyfill() {
if (!Object.assign) {
return implementation;
}
if (lacksProperEnumerationOrder()) {
return implementation;
}
if (assignHasPendingExceptions()) {
return implementation;
}
return Object.assign;
};
/***/ }),
/***/ 1137:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
// from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js
// Fedor, you are amazing.
var asn1 = __webpack_require__(7568);
exports.certificate = __webpack_require__(6413);
var RSAPrivateKey = asn1.define('RSAPrivateKey', function () {
this.seq().obj(
this.key('version')['int'](),
this.key('modulus')['int'](),
this.key('publicExponent')['int'](),
this.key('privateExponent')['int'](),
this.key('prime1')['int'](),
this.key('prime2')['int'](),
this.key('exponent1')['int'](),
this.key('exponent2')['int'](),
this.key('coefficient')['int']()
);
});
exports.RSAPrivateKey = RSAPrivateKey;
var RSAPublicKey = asn1.define('RSAPublicKey', function () {
this.seq().obj(
this.key('modulus')['int'](),
this.key('publicExponent')['int']()
);
});
exports.RSAPublicKey = RSAPublicKey;
var AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () {
this.seq().obj(
this.key('algorithm').objid(),
this.key('none').null_().optional(),
this.key('curve').objid().optional(),
this.key('params').seq().obj(
this.key('p')['int'](),
this.key('q')['int'](),
this.key('g')['int']()
).optional()
);
});
var PublicKey = asn1.define('SubjectPublicKeyInfo', function () {
this.seq().obj(
this.key('algorithm').use(AlgorithmIdentifier),
this.key('subjectPublicKey').bitstr()
);
});
exports.PublicKey = PublicKey;
var PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () {
this.seq().obj(
this.key('version')['int'](),
this.key('algorithm').use(AlgorithmIdentifier),
this.key('subjectPrivateKey').octstr()
);
});
exports.PrivateKey = PrivateKeyInfo;
var EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () {
this.seq().obj(
this.key('algorithm').seq().obj(
this.key('id').objid(),
this.key('decrypt').seq().obj(
this.key('kde').seq().obj(
this.key('id').objid(),
this.key('kdeparams').seq().obj(
this.key('salt').octstr(),
this.key('iters')['int']()
)
),
this.key('cipher').seq().obj(
this.key('algo').objid(),
this.key('iv').octstr()
)
)
),
this.key('subjectPrivateKey').octstr()
);
});
exports.EncryptedPrivateKey = EncryptedPrivateKeyInfo;
var DSAPrivateKey = asn1.define('DSAPrivateKey', function () {
this.seq().obj(
this.key('version')['int'](),
this.key('p')['int'](),
this.key('q')['int'](),
this.key('g')['int'](),
this.key('pub_key')['int'](),
this.key('priv_key')['int']()
);
});
exports.DSAPrivateKey = DSAPrivateKey;
exports.DSAparam = asn1.define('DSAparam', function () {
this['int']();
});
var ECParameters = asn1.define('ECParameters', function () {
this.choice({
namedCurve: this.objid()
});
});
var ECPrivateKey = asn1.define('ECPrivateKey', function () {
this.seq().obj(
this.key('version')['int'](),
this.key('privateKey').octstr(),
this.key('parameters').optional().explicit(0).use(ECParameters),
this.key('publicKey').optional().explicit(1).bitstr()
);
});
exports.ECPrivateKey = ECPrivateKey;
exports.signature = asn1.define('signature', function () {
this.seq().obj(
this.key('r')['int'](),
this.key('s')['int']()
);
});
/***/ }),
/***/ 6413:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js
// thanks to @Rantanen
var asn = __webpack_require__(7568);
var Time = asn.define('Time', function () {
this.choice({
utcTime: this.utctime(),
generalTime: this.gentime()
});
});
var AttributeTypeValue = asn.define('AttributeTypeValue', function () {
this.seq().obj(
this.key('type').objid(),
this.key('value').any()
);
});
var AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () {
this.seq().obj(
this.key('algorithm').objid(),
this.key('parameters').optional(),
this.key('curve').objid().optional()
);
});
var SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () {
this.seq().obj(
this.key('algorithm').use(AlgorithmIdentifier),
this.key('subjectPublicKey').bitstr()
);
});
var RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () {
this.setof(AttributeTypeValue);
});
var RDNSequence = asn.define('RDNSequence', function () {
this.seqof(RelativeDistinguishedName);
});
var Name = asn.define('Name', function () {
this.choice({
rdnSequence: this.use(RDNSequence)
});
});
var Validity = asn.define('Validity', function () {
this.seq().obj(
this.key('notBefore').use(Time),
this.key('notAfter').use(Time)
);
});
var Extension = asn.define('Extension', function () {
this.seq().obj(
this.key('extnID').objid(),
this.key('critical').bool().def(false),
this.key('extnValue').octstr()
);
});
var TBSCertificate = asn.define('TBSCertificate', function () {
this.seq().obj(
this.key('version').explicit(0)['int']().optional(),
this.key('serialNumber')['int'](),
this.key('signature').use(AlgorithmIdentifier),
this.key('issuer').use(Name),
this.key('validity').use(Validity),
this.key('subject').use(Name),
this.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo),
this.key('issuerUniqueID').implicit(1).bitstr().optional(),
this.key('subjectUniqueID').implicit(2).bitstr().optional(),
this.key('extensions').explicit(3).seqof(Extension).optional()
);
});
var X509Certificate = asn.define('X509Certificate', function () {
this.seq().obj(
this.key('tbsCertificate').use(TBSCertificate),
this.key('signatureAlgorithm').use(AlgorithmIdentifier),
this.key('signatureValue').bitstr()
);
});
module.exports = X509Certificate;
/***/ }),
/***/ 4101:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
// adapted from https://github.com/apatil/pemstrip
var findProc = /Proc-Type: 4,ENCRYPTED[\n\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\n\r]+([0-9A-z\n\r+/=]+)[\n\r]+/m;
var startRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m;
var fullRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\n\r+/=]+)-----END \1-----$/m;
var evp = __webpack_require__(8078);
var ciphers = __webpack_require__(1241);
var Buffer = (__webpack_require__(2861).Buffer);
module.exports = function (okey, password) {
var key = okey.toString();
var match = key.match(findProc);
var decrypted;
if (!match) {
var match2 = key.match(fullRegex);
decrypted = Buffer.from(match2[2].replace(/[\r\n]/g, ''), 'base64');
} else {
var suite = 'aes' + match[1];
var iv = Buffer.from(match[2], 'hex');
var cipherText = Buffer.from(match[3].replace(/[\r\n]/g, ''), 'base64');
var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key;
var out = [];
var cipher = ciphers.createDecipheriv(suite, cipherKey, iv);
out.push(cipher.update(cipherText));
out.push(cipher['final']());
decrypted = Buffer.concat(out);
}
var tag = key.match(startRegex)[1];
return {
tag: tag,
data: decrypted
};
};
/***/ }),
/***/ 8170:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var asn1 = __webpack_require__(1137);
var aesid = __webpack_require__(5579);
var fixProc = __webpack_require__(4101);
var ciphers = __webpack_require__(1241);
var compat = __webpack_require__(8396);
var Buffer = (__webpack_require__(2861).Buffer);
function decrypt(data, password) {
var salt = data.algorithm.decrypt.kde.kdeparams.salt;
var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10);
var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')];
var iv = data.algorithm.decrypt.cipher.iv;
var cipherText = data.subjectPrivateKey;
var keylen = parseInt(algo.split('-')[1], 10) / 8;
var key = compat.pbkdf2Sync(password, salt, iters, keylen, 'sha1');
var cipher = ciphers.createDecipheriv(algo, key, iv);
var out = [];
out.push(cipher.update(cipherText));
out.push(cipher['final']());
return Buffer.concat(out);
}
function parseKeys(buffer) {
var password;
if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {
password = buffer.passphrase;
buffer = buffer.key;
}
if (typeof buffer === 'string') {
buffer = Buffer.from(buffer);
}
var stripped = fixProc(buffer, password);
var type = stripped.tag;
var data = stripped.data;
var subtype, ndata;
switch (type) {
case 'CERTIFICATE':
ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo;
// falls through
case 'PUBLIC KEY':
if (!ndata) {
ndata = asn1.PublicKey.decode(data, 'der');
}
subtype = ndata.algorithm.algorithm.join('.');
switch (subtype) {
case '1.2.840.113549.1.1.1':
return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der');
case '1.2.840.10045.2.1':
ndata.subjectPrivateKey = ndata.subjectPublicKey;
return {
type: 'ec',
data: ndata
};
case '1.2.840.10040.4.1':
ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der');
return {
type: 'dsa',
data: ndata.algorithm.params
};
default: throw new Error('unknown key id ' + subtype);
}
// throw new Error('unknown key type ' + type)
case 'ENCRYPTED PRIVATE KEY':
data = asn1.EncryptedPrivateKey.decode(data, 'der');
data = decrypt(data, password);
// falls through
case 'PRIVATE KEY':
ndata = asn1.PrivateKey.decode(data, 'der');
subtype = ndata.algorithm.algorithm.join('.');
switch (subtype) {
case '1.2.840.113549.1.1.1':
return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der');
case '1.2.840.10045.2.1':
return {
curve: ndata.algorithm.curve,
privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey
};
case '1.2.840.10040.4.1':
ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der');
return {
type: 'dsa',
params: ndata.algorithm.params
};
default: throw new Error('unknown key id ' + subtype);
}
// throw new Error('unknown key type ' + type)
case 'RSA PUBLIC KEY':
return asn1.RSAPublicKey.decode(data, 'der');
case 'RSA PRIVATE KEY':
return asn1.RSAPrivateKey.decode(data, 'der');
case 'DSA PRIVATE KEY':
return {
type: 'dsa',
params: asn1.DSAPrivateKey.decode(data, 'der')
};
case 'EC PRIVATE KEY':
data = asn1.ECPrivateKey.decode(data, 'der');
return {
curve: data.parameters.value,
privateKey: data.privateKey
};
default: throw new Error('unknown key type ' + type);
}
}
parseKeys.signature = asn1.signature;
module.exports = parseKeys;
/***/ }),
/***/ 8396:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
exports.pbkdf2 = __webpack_require__(3832)
exports.pbkdf2Sync = __webpack_require__(1352)
/***/ }),
/***/ 3832:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var Buffer = (__webpack_require__(2861).Buffer)
var checkParameters = __webpack_require__(4196)
var defaultEncoding = __webpack_require__(2455)
var sync = __webpack_require__(1352)
var toBuffer = __webpack_require__(3382)
var ZERO_BUF
var subtle = __webpack_require__.g.crypto && __webpack_require__.g.crypto.subtle
var toBrowser = {
sha: 'SHA-1',
'sha-1': 'SHA-1',
sha1: 'SHA-1',
sha256: 'SHA-256',
'sha-256': 'SHA-256',
sha384: 'SHA-384',
'sha-384': 'SHA-384',
'sha-512': 'SHA-512',
sha512: 'SHA-512'
}
var checks = []
function checkNative (algo) {
if (__webpack_require__.g.process && !__webpack_require__.g.process.browser) {
return Promise.resolve(false)
}
if (!subtle || !subtle.importKey || !subtle.deriveBits) {
return Promise.resolve(false)
}
if (checks[algo] !== undefined) {
return checks[algo]
}
ZERO_BUF = ZERO_BUF || Buffer.alloc(8)
var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo)
.then(function () {
return true
}).catch(function () {
return false
})
checks[algo] = prom
return prom
}
var nextTick
function getNextTick () {
if (nextTick) {
return nextTick
}
if (__webpack_require__.g.process && __webpack_require__.g.process.nextTick) {
nextTick = __webpack_require__.g.process.nextTick
} else if (__webpack_require__.g.queueMicrotask) {
nextTick = __webpack_require__.g.queueMicrotask
} else if (__webpack_require__.g.setImmediate) {
nextTick = __webpack_require__.g.setImmediate
} else {
nextTick = __webpack_require__.g.setTimeout
}
return nextTick
}
function browserPbkdf2 (password, salt, iterations, length, algo) {
return subtle.importKey(
'raw', password, { name: 'PBKDF2' }, false, ['deriveBits']
).then(function (key) {
return subtle.deriveBits({
name: 'PBKDF2',
salt: salt,
iterations: iterations,
hash: {
name: algo
}
}, key, length << 3)
}).then(function (res) {
return Buffer.from(res)
})
}
function resolvePromise (promise, callback) {
promise.then(function (out) {
getNextTick()(function () {
callback(null, out)
})
}, function (e) {
getNextTick()(function () {
callback(e)
})
})
}
module.exports = function (password, salt, iterations, keylen, digest, callback) {
if (typeof digest === 'function') {
callback = digest
digest = undefined
}
digest = digest || 'sha1'
var algo = toBrowser[digest.toLowerCase()]
if (!algo || typeof __webpack_require__.g.Promise !== 'function') {
getNextTick()(function () {
var out
try {
out = sync(password, salt, iterations, keylen, digest)
} catch (e) {
return callback(e)
}
callback(null, out)
})
return
}
checkParameters(iterations, keylen)
password = toBuffer(password, defaultEncoding, 'Password')
salt = toBuffer(salt, defaultEncoding, 'Salt')
if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2')
resolvePromise(checkNative(algo).then(function (resp) {
if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo)
return sync(password, salt, iterations, keylen, digest)
}), callback)
}
/***/ }),
/***/ 2455:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var defaultEncoding
/* istanbul ignore next */
if (__webpack_require__.g.process && __webpack_require__.g.process.browser) {
defaultEncoding = 'utf-8'
} else if (__webpack_require__.g.process && __webpack_require__.g.process.version) {
var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10)
defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'
} else {
defaultEncoding = 'utf-8'
}
module.exports = defaultEncoding
/***/ }),
/***/ 4196:
/***/ ((module) => {
var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs
module.exports = function (iterations, keylen) {
if (typeof iterations !== 'number') {
throw new TypeError('Iterations not a number')
}
if (iterations < 0) {
throw new TypeError('Bad iterations')
}
if (typeof keylen !== 'number') {
throw new TypeError('Key length not a number')
}
if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */
throw new TypeError('Bad key length')
}
}
/***/ }),
/***/ 1352:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var md5 = __webpack_require__(320)
var RIPEMD160 = __webpack_require__(6011)
var sha = __webpack_require__(2802)
var Buffer = (__webpack_require__(2861).Buffer)
var checkParameters = __webpack_require__(4196)
var defaultEncoding = __webpack_require__(2455)
var toBuffer = __webpack_require__(3382)
var ZEROS = Buffer.alloc(128)
var sizes = {
md5: 16,
sha1: 20,
sha224: 28,
sha256: 32,
sha384: 48,
sha512: 64,
rmd160: 20,
ripemd160: 20
}
function Hmac (alg, key, saltLen) {
var hash = getDigest(alg)
var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64
if (key.length > blocksize) {
key = hash(key)
} else if (key.length < blocksize) {
key = Buffer.concat([key, ZEROS], blocksize)
}
var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])
var opad = Buffer.allocUnsafe(blocksize + sizes[alg])
for (var i = 0; i < blocksize; i++) {
ipad[i] = key[i] ^ 0x36
opad[i] = key[i] ^ 0x5C
}
var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)
ipad.copy(ipad1, 0, 0, blocksize)
this.ipad1 = ipad1
this.ipad2 = ipad
this.opad = opad
this.alg = alg
this.blocksize = blocksize
this.hash = hash
this.size = sizes[alg]
}
Hmac.prototype.run = function (data, ipad) {
data.copy(ipad, this.blocksize)
var h = this.hash(ipad)
h.copy(this.opad, this.blocksize)
return this.hash(this.opad)
}
function getDigest (alg) {
function shaFunc (data) {
return sha(alg).update(data).digest()
}
function rmd160Func (data) {
return new RIPEMD160().update(data).digest()
}
if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func
if (alg === 'md5') return md5
return shaFunc
}
function pbkdf2 (password, salt, iterations, keylen, digest) {
checkParameters(iterations, keylen)
password = toBuffer(password, defaultEncoding, 'Password')
salt = toBuffer(salt, defaultEncoding, 'Salt')
digest = digest || 'sha1'
var hmac = new Hmac(digest, password, salt.length)
var DK = Buffer.allocUnsafe(keylen)
var block1 = Buffer.allocUnsafe(salt.length + 4)
salt.copy(block1, 0, 0, salt.length)
var destPos = 0
var hLen = sizes[digest]
var l = Math.ceil(keylen / hLen)
for (var i = 1; i <= l; i++) {
block1.writeUInt32BE(i, salt.length)
var T = hmac.run(block1, hmac.ipad1)
var U = T
for (var j = 1; j < iterations; j++) {
U = hmac.run(U, hmac.ipad2)
for (var k = 0; k < hLen; k++) T[k] ^= U[k]
}
T.copy(DK, destPos)
destPos += hLen
}
return DK
}
module.exports = pbkdf2
/***/ }),
/***/ 3382:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var Buffer = (__webpack_require__(2861).Buffer)
module.exports = function (thing, encoding, name) {
if (Buffer.isBuffer(thing)) {
return thing
} else if (typeof thing === 'string') {
return Buffer.from(thing, encoding)
} else if (ArrayBuffer.isView(thing)) {
return Buffer.from(thing.buffer)
} else {
throw new TypeError(name + ' must be a string, a Buffer, a typed array or a DataView')
}
}
/***/ }),
/***/ 6578:
/***/ ((module) => {
"use strict";
/** @type {import('.')} */
module.exports = [
'Float32Array',
'Float64Array',
'Int8Array',
'Int16Array',
'Int32Array',
'Uint8Array',
'Uint8ClampedArray',
'Uint16Array',
'Uint32Array',
'BigInt64Array',
'BigUint64Array'
];
/***/ }),
/***/ 3225:
/***/ ((module) => {
"use strict";
if (typeof process === 'undefined' ||
!process.version ||
process.version.indexOf('v0.') === 0 ||
process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
module.exports = { nextTick: nextTick };
} else {
module.exports = process
}
function nextTick(fn, arg1, arg2, arg3) {
if (typeof fn !== 'function') {
throw new TypeError('"callback" argument must be a function');
}
var len = arguments.length;
var args, i;
switch (len) {
case 0:
case 1:
return process.nextTick(fn);
case 2:
return process.nextTick(function afterTickOne() {
fn.call(null, arg1);
});
case 3:
return process.nextTick(function afterTickTwo() {
fn.call(null, arg1, arg2);
});
case 4:
return process.nextTick(function afterTickThree() {
fn.call(null, arg1, arg2, arg3);
});
default:
args = new Array(len - 1);
i = 0;
while (i < args.length) {
args[i++] = arguments[i];
}
return process.nextTick(function afterTick() {
fn.apply(null, args);
});
}
}
/***/ }),
/***/ 7168:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
exports.publicEncrypt = __webpack_require__(8902)
exports.privateDecrypt = __webpack_require__(7362)
exports.privateEncrypt = function privateEncrypt (key, buf) {
return exports.publicEncrypt(key, buf, true)
}
exports.publicDecrypt = function publicDecrypt (key, buf) {
return exports.privateDecrypt(key, buf, true)
}
/***/ }),
/***/ 8206:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var createHash = __webpack_require__(7108)
var Buffer = (__webpack_require__(2861).Buffer)
module.exports = function (seed, len) {
var t = Buffer.alloc(0)
var i = 0
var c
while (t.length < len) {
c = i2ops(i++)
t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()])
}
return t.slice(0, len)
}
function i2ops (c) {
var out = Buffer.allocUnsafe(4)
out.writeUInt32BE(c, 0)
return out
}
/***/ }),
/***/ 2509:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
/* module decorator */ module = __webpack_require__.nmd(module);
(function (module, exports) {
'use strict';
// Utils
function assert (val, msg) {
if (!val) throw new Error(msg || 'Assertion failed');
}
// Could use `inherits` module, but don't want to move from single file
// architecture yet.
function inherits (ctor, superCtor) {
ctor.super_ = superCtor;
var TempCtor = function () {};
TempCtor.prototype = superCtor.prototype;
ctor.prototype = new TempCtor();
ctor.prototype.constructor = ctor;
}
// BN
function BN (number, base, endian) {
if (BN.isBN(number)) {
return number;
}
this.negative = 0;
this.words = null;
this.length = 0;
// Reduction context
this.red = null;
if (number !== null) {
if (base === 'le' || base === 'be') {
endian = base;
base = 10;
}
this._init(number || 0, base || 10, endian || 'be');
}
}
if (typeof module === 'object') {
module.exports = BN;
} else {
exports.BN = BN;
}
BN.BN = BN;
BN.wordSize = 26;
var Buffer;
try {
if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {
Buffer = window.Buffer;
} else {
Buffer = (__webpack_require__(1069).Buffer);
}
} catch (e) {
}
BN.isBN = function isBN (num) {
if (num instanceof BN) {
return true;
}
return num !== null && typeof num === 'object' &&
num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);
};
BN.max = function max (left, right) {
if (left.cmp(right) > 0) return left;
return right;
};
BN.min = function min (left, right) {
if (left.cmp(right) < 0) return left;
return right;
};
BN.prototype._init = function init (number, base, endian) {
if (typeof number === 'number') {
return this._initNumber(number, base, endian);
}
if (typeof number === 'object') {
return this._initArray(number, base, endian);
}
if (base === 'hex') {
base = 16;
}
assert(base === (base | 0) && base >= 2 && base <= 36);
number = number.toString().replace(/\s+/g, '');
var start = 0;
if (number[0] === '-') {
start++;
this.negative = 1;
}
if (start < number.length) {
if (base === 16) {
this._parseHex(number, start, endian);
} else {
this._parseBase(number, base, start);
if (endian === 'le') {
this._initArray(this.toArray(), base, endian);
}
}
}
};
BN.prototype._initNumber = function _initNumber (number, base, endian) {
if (number < 0) {
this.negative = 1;
number = -number;
}
if (number < 0x4000000) {
this.words = [ number & 0x3ffffff ];
this.length = 1;
} else if (number < 0x10000000000000) {
this.words = [
number & 0x3ffffff,
(number / 0x4000000) & 0x3ffffff
];
this.length = 2;
} else {
assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)
this.words = [
number & 0x3ffffff,
(number / 0x4000000) & 0x3ffffff,
1
];
this.length = 3;
}
if (endian !== 'le') return;
// Reverse the bytes
this._initArray(this.toArray(), base, endian);
};
BN.prototype._initArray = function _initArray (number, base, endian) {
// Perhaps a Uint8Array
assert(typeof number.length === 'number');
if (number.length <= 0) {
this.words = [ 0 ];
this.length = 1;
return this;
}
this.length = Math.ceil(number.length / 3);
this.words = new Array(this.length);
for (var i = 0; i < this.length; i++) {
this.words[i] = 0;
}
var j, w;
var off = 0;
if (endian === 'be') {
for (i = number.length - 1, j = 0; i >= 0; i -= 3) {
w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);
this.words[j] |= (w << off) & 0x3ffffff;
this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
off += 24;
if (off >= 26) {
off -= 26;
j++;
}
}
} else if (endian === 'le') {
for (i = 0, j = 0; i < number.length; i += 3) {
w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);
this.words[j] |= (w << off) & 0x3ffffff;
this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;
off += 24;
if (off >= 26) {
off -= 26;
j++;
}
}
}
return this.strip();
};
function parseHex4Bits (string, index) {
var c = string.charCodeAt(index);
// 'A' - 'F'
if (c >= 65 && c <= 70) {
return c - 55;
// 'a' - 'f'
} else if (c >= 97 && c <= 102) {
return c - 87;
// '0' - '9'
} else {
return (c - 48) & 0xf;
}
}
function parseHexByte (string, lowerBound, index) {
var r = parseHex4Bits(string, index);
if (index - 1 >= lowerBound) {
r |= parseHex4Bits(string, index - 1) << 4;
}
return r;
}
BN.prototype._parseHex = function _parseHex (number, start, endian) {
// Create possibly bigger array to ensure that it fits the number
this.length = Math.ceil((number.length - start) / 6);
this.words = new Array(this.length);
for (var i = 0; i < this.length; i++) {
this.words[i] = 0;
}
// 24-bits chunks
var off = 0;
var j = 0;
var w;
if (endian === 'be') {
for (i = number.length - 1; i >= start; i -= 2) {
w = parseHexByte(number, start, i) << off;
this.words[j] |= w & 0x3ffffff;
if (off >= 18) {
off -= 18;
j += 1;
this.words[j] |= w >>> 26;
} else {
off += 8;
}
}
} else {
var parseLength = number.length - start;
for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {
w = parseHexByte(number, start, i) << off;
this.words[j] |= w & 0x3ffffff;
if (off >= 18) {
off -= 18;
j += 1;
this.words[j] |= w >>> 26;
} else {
off += 8;
}
}
}
this.strip();
};
function parseBase (str, start, end, mul) {
var r = 0;
var len = Math.min(str.length, end);
for (var i = start; i < len; i++) {
var c = str.charCodeAt(i) - 48;
r *= mul;
// 'a'
if (c >= 49) {
r += c - 49 + 0xa;
// 'A'
} else if (c >= 17) {
r += c - 17 + 0xa;
// '0' - '9'
} else {
r += c;
}
}
return r;
}
BN.prototype._parseBase = function _parseBase (number, base, start) {
// Initialize as zero
this.words = [ 0 ];
this.length = 1;
// Find length of limb in base
for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {
limbLen++;
}
limbLen--;
limbPow = (limbPow / base) | 0;
var total = number.length - start;
var mod = total % limbLen;
var end = Math.min(total, total - mod) + start;
var word = 0;
for (var i = start; i < end; i += limbLen) {
word = parseBase(number, i, i + limbLen, base);
this.imuln(limbPow);
if (this.words[0] + word < 0x4000000) {
this.words[0] += word;
} else {
this._iaddn(word);
}
}
if (mod !== 0) {
var pow = 1;
word = parseBase(number, i, number.length, base);
for (i = 0; i < mod; i++) {
pow *= base;
}
this.imuln(pow);
if (this.words[0] + word < 0x4000000) {
this.words[0] += word;
} else {
this._iaddn(word);
}
}
this.strip();
};
BN.prototype.copy = function copy (dest) {
dest.words = new Array(this.length);
for (var i = 0; i < this.length; i++) {
dest.words[i] = this.words[i];
}
dest.length = this.length;
dest.negative = this.negative;
dest.red = this.red;
};
BN.prototype.clone = function clone () {
var r = new BN(null);
this.copy(r);
return r;
};
BN.prototype._expand = function _expand (size) {
while (this.length < size) {
this.words[this.length++] = 0;
}
return this;
};
// Remove leading `0` from `this`
BN.prototype.strip = function strip () {
while (this.length > 1 && this.words[this.length - 1] === 0) {
this.length--;
}
return this._normSign();
};
BN.prototype._normSign = function _normSign () {
// -0 = 0
if (this.length === 1 && this.words[0] === 0) {
this.negative = 0;
}
return this;
};
BN.prototype.inspect = function inspect () {
return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';
};
/*
var zeros = [];
var groupSizes = [];
var groupBases = [];
var s = '';
var i = -1;
while (++i < BN.wordSize) {
zeros[i] = s;
s += '0';
}
groupSizes[0] = 0;
groupSizes[1] = 0;
groupBases[0] = 0;
groupBases[1] = 0;
var base = 2 - 1;
while (++base < 36 + 1) {
var groupSize = 0;
var groupBase = 1;
while (groupBase < (1 << BN.wordSize) / base) {
groupBase *= base;
groupSize += 1;
}
groupSizes[base] = groupSize;
groupBases[base] = groupBase;
}
*/
var zeros = [
'',
'0',
'00',
'000',
'0000',
'00000',
'000000',
'0000000',
'00000000',
'000000000',
'0000000000',
'00000000000',
'000000000000',
'0000000000000',
'00000000000000',
'000000000000000',
'0000000000000000',
'00000000000000000',
'000000000000000000',
'0000000000000000000',
'00000000000000000000',
'000000000000000000000',
'0000000000000000000000',
'00000000000000000000000',
'000000000000000000000000',
'0000000000000000000000000'
];
var groupSizes = [
0, 0,
25, 16, 12, 11, 10, 9, 8,
8, 7, 7, 7, 7, 6, 6,
6, 6, 6, 6, 6, 5, 5,
5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5
];
var groupBases = [
0, 0,
33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,
43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,
16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,
6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,
24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176
];
BN.prototype.toString = function toString (base, padding) {
base = base || 10;
padding = padding | 0 || 1;
var out;
if (base === 16 || base === 'hex') {
out = '';
var off = 0;
var carry = 0;
for (var i = 0; i < this.length; i++) {
var w = this.words[i];
var word = (((w << off) | carry) & 0xffffff).toString(16);
carry = (w >>> (24 - off)) & 0xffffff;
if (carry !== 0 || i !== this.length - 1) {
out = zeros[6 - word.length] + word + out;
} else {
out = word + out;
}
off += 2;
if (off >= 26) {
off -= 26;
i--;
}
}
if (carry !== 0) {
out = carry.toString(16) + out;
}
while (out.length % padding !== 0) {
out = '0' + out;
}
if (this.negative !== 0) {
out = '-' + out;
}
return out;
}
if (base === (base | 0) && base >= 2 && base <= 36) {
// var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));
var groupSize = groupSizes[base];
// var groupBase = Math.pow(base, groupSize);
var groupBase = groupBases[base];
out = '';
var c = this.clone();
c.negative = 0;
while (!c.isZero()) {
var r = c.modn(groupBase).toString(base);
c = c.idivn(groupBase);
if (!c.isZero()) {
out = zeros[groupSize - r.length] + r + out;
} else {
out = r + out;
}
}
if (this.isZero()) {
out = '0' + out;
}
while (out.length % padding !== 0) {
out = '0' + out;
}
if (this.negative !== 0) {
out = '-' + out;
}
return out;
}
assert(false, 'Base should be between 2 and 36');
};
BN.prototype.toNumber = function toNumber () {
var ret = this.words[0];
if (this.length === 2) {
ret += this.words[1] * 0x4000000;
} else if (this.length === 3 && this.words[2] === 0x01) {
// NOTE: at this stage it is known that the top bit is set
ret += 0x10000000000000 + (this.words[1] * 0x4000000);
} else if (this.length > 2) {
assert(false, 'Number can only safely store up to 53 bits');
}
return (this.negative !== 0) ? -ret : ret;
};
BN.prototype.toJSON = function toJSON () {
return this.toString(16);
};
BN.prototype.toBuffer = function toBuffer (endian, length) {
assert(typeof Buffer !== 'undefined');
return this.toArrayLike(Buffer, endian, length);
};
BN.prototype.toArray = function toArray (endian, length) {
return this.toArrayLike(Array, endian, length);
};
BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {
var byteLength = this.byteLength();
var reqLength = length || Math.max(1, byteLength);
assert(byteLength <= reqLength, 'byte array longer than desired length');
assert(reqLength > 0, 'Requested array length <= 0');
this.strip();
var littleEndian = endian === 'le';
var res = new ArrayType(reqLength);
var b, i;
var q = this.clone();
if (!littleEndian) {
// Assume big-endian
for (i = 0; i < reqLength - byteLength; i++) {
res[i] = 0;
}
for (i = 0; !q.isZero(); i++) {
b = q.andln(0xff);
q.iushrn(8);
res[reqLength - i - 1] = b;
}
} else {
for (i = 0; !q.isZero(); i++) {
b = q.andln(0xff);
q.iushrn(8);
res[i] = b;
}
for (; i < reqLength; i++) {
res[i] = 0;
}
}
return res;
};
if (Math.clz32) {
BN.prototype._countBits = function _countBits (w) {
return 32 - Math.clz32(w);
};
} else {
BN.prototype._countBits = function _countBits (w) {
var t = w;
var r = 0;
if (t >= 0x1000) {
r += 13;
t >>>= 13;
}
if (t >= 0x40) {
r += 7;
t >>>= 7;
}
if (t >= 0x8) {
r += 4;
t >>>= 4;
}
if (t >= 0x02) {
r += 2;
t >>>= 2;
}
return r + t;
};
}
BN.prototype._zeroBits = function _zeroBits (w) {
// Short-cut
if (w === 0) return 26;
var t = w;
var r = 0;
if ((t & 0x1fff) === 0) {
r += 13;
t >>>= 13;
}
if ((t & 0x7f) === 0) {
r += 7;
t >>>= 7;
}
if ((t & 0xf) === 0) {
r += 4;
t >>>= 4;
}
if ((t & 0x3) === 0) {
r += 2;
t >>>= 2;
}
if ((t & 0x1) === 0) {
r++;
}
return r;
};
// Return number of used bits in a BN
BN.prototype.bitLength = function bitLength () {
var w = this.words[this.length - 1];
var hi = this._countBits(w);
return (this.length - 1) * 26 + hi;
};
function toBitArray (num) {
var w = new Array(num.bitLength());
for (var bit = 0; bit < w.length; bit++) {
var off = (bit / 26) | 0;
var wbit = bit % 26;
w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;
}
return w;
}
// Number of trailing zero bits
BN.prototype.zeroBits = function zeroBits () {
if (this.isZero()) return 0;
var r = 0;
for (var i = 0; i < this.length; i++) {
var b = this._zeroBits(this.words[i]);
r += b;
if (b !== 26) break;
}
return r;
};
BN.prototype.byteLength = function byteLength () {
return Math.ceil(this.bitLength() / 8);
};
BN.prototype.toTwos = function toTwos (width) {
if (this.negative !== 0) {
return this.abs().inotn(width).iaddn(1);
}
return this.clone();
};
BN.prototype.fromTwos = function fromTwos (width) {
if (this.testn(width - 1)) {
return this.notn(width).iaddn(1).ineg();
}
return this.clone();
};
BN.prototype.isNeg = function isNeg () {
return this.negative !== 0;
};
// Return negative clone of `this`
BN.prototype.neg = function neg () {
return this.clone().ineg();
};
BN.prototype.ineg = function ineg () {
if (!this.isZero()) {
this.negative ^= 1;
}
return this;
};
// Or `num` with `this` in-place
BN.prototype.iuor = function iuor (num) {
while (this.length < num.length) {
this.words[this.length++] = 0;
}
for (var i = 0; i < num.length; i++) {
this.words[i] = this.words[i] | num.words[i];
}
return this.strip();
};
BN.prototype.ior = function ior (num) {
assert((this.negative | num.negative) === 0);
return this.iuor(num);
};
// Or `num` with `this`
BN.prototype.or = function or (num) {
if (this.length > num.length) return this.clone().ior(num);
return num.clone().ior(this);
};
BN.prototype.uor = function uor (num) {
if (this.length > num.length) return this.clone().iuor(num);
return num.clone().iuor(this);
};
// And `num` with `this` in-place
BN.prototype.iuand = function iuand (num) {
// b = min-length(num, this)
var b;
if (this.length > num.length) {
b = num;
} else {
b = this;
}
for (var i = 0; i < b.length; i++) {
this.words[i] = this.words[i] & num.words[i];
}
this.length = b.length;
return this.strip();
};
BN.prototype.iand = function iand (num) {
assert((this.negative | num.negative) === 0);
return this.iuand(num);
};
// And `num` with `this`
BN.prototype.and = function and (num) {
if (this.length > num.length) return this.clone().iand(num);
return num.clone().iand(this);
};
BN.prototype.uand = function uand (num) {
if (this.length > num.length) return this.clone().iuand(num);
return num.clone().iuand(this);
};
// Xor `num` with `this` in-place
BN.prototype.iuxor = function iuxor (num) {
// a.length > b.length
var a;
var b;
if (this.length > num.length) {
a = this;
b = num;
} else {
a = num;
b = this;
}
for (var i = 0; i < b.length; i++) {
this.words[i] = a.words[i] ^ b.words[i];
}
if (this !== a) {
for (; i < a.length; i++) {
this.words[i] = a.words[i];
}
}
this.length = a.length;
return this.strip();
};
BN.prototype.ixor = function ixor (num) {
assert((this.negative | num.negative) === 0);
return this.iuxor(num);
};
// Xor `num` with `this`
BN.prototype.xor = function xor (num) {
if (this.length > num.length) return this.clone().ixor(num);
return num.clone().ixor(this);
};
BN.prototype.uxor = function uxor (num) {
if (this.length > num.length) return this.clone().iuxor(num);
return num.clone().iuxor(this);
};
// Not ``this`` with ``width`` bitwidth
BN.prototype.inotn = function inotn (width) {
assert(typeof width === 'number' && width >= 0);
var bytesNeeded = Math.ceil(width / 26) | 0;
var bitsLeft = width % 26;
// Extend the buffer with leading zeroes
this._expand(bytesNeeded);
if (bitsLeft > 0) {
bytesNeeded--;
}
// Handle complete words
for (var i = 0; i < bytesNeeded; i++) {
this.words[i] = ~this.words[i] & 0x3ffffff;
}
// Handle the residue
if (bitsLeft > 0) {
this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));
}
// And remove leading zeroes
return this.strip();
};
BN.prototype.notn = function notn (width) {
return this.clone().inotn(width);
};
// Set `bit` of `this`
BN.prototype.setn = function setn (bit, val) {
assert(typeof bit === 'number' && bit >= 0);
var off = (bit / 26) | 0;
var wbit = bit % 26;
this._expand(off + 1);
if (val) {
this.words[off] = this.words[off] | (1 << wbit);
} else {
this.words[off] = this.words[off] & ~(1 << wbit);
}
return this.strip();
};
// Add `num` to `this` in-place
BN.prototype.iadd = function iadd (num) {
var r;
// negative + positive
if (this.negative !== 0 && num.negative === 0) {
this.negative = 0;
r = this.isub(num);
this.negative ^= 1;
return this._normSign();
// positive + negative
} else if (this.negative === 0 && num.negative !== 0) {
num.negative = 0;
r = this.isub(num);
num.negative = 1;
return r._normSign();
}
// a.length > b.length
var a, b;
if (this.length > num.length) {
a = this;
b = num;
} else {
a = num;
b = this;
}
var carry = 0;
for (var i = 0; i < b.length; i++) {
r = (a.words[i] | 0) + (b.words[i] | 0) + carry;
this.words[i] = r & 0x3ffffff;
carry = r >>> 26;
}
for (; carry !== 0 && i < a.length; i++) {
r = (a.words[i] | 0) + carry;
this.words[i] = r & 0x3ffffff;
carry = r >>> 26;
}
this.length = a.length;
if (carry !== 0) {
this.words[this.length] = carry;
this.length++;
// Copy the rest of the words
} else if (a !== this) {
for (; i < a.length; i++) {
this.words[i] = a.words[i];
}
}
return this;
};
// Add `num` to `this`
BN.prototype.add = function add (num) {
var res;
if (num.negative !== 0 && this.negative === 0) {
num.negative = 0;
res = this.sub(num);
num.negative ^= 1;
return res;
} else if (num.negative === 0 && this.negative !== 0) {
this.negative = 0;
res = num.sub(this);
this.negative = 1;
return res;
}
if (this.length > num.length) return this.clone().iadd(num);
return num.clone().iadd(this);
};
// Subtract `num` from `this` in-place
BN.prototype.isub = function isub (num) {
// this - (-num) = this + num
if (num.negative !== 0) {
num.negative = 0;
var r = this.iadd(num);
num.negative = 1;
return r._normSign();
// -this - num = -(this + num)
} else if (this.negative !== 0) {
this.negative = 0;
this.iadd(num);
this.negative = 1;
return this._normSign();
}
// At this point both numbers are positive
var cmp = this.cmp(num);
// Optimization - zeroify
if (cmp === 0) {
this.negative = 0;
this.length = 1;
this.words[0] = 0;
return this;
}
// a > b
var a, b;
if (cmp > 0) {
a = this;
b = num;
} else {
a = num;
b = this;
}
var carry = 0;
for (var i = 0; i < b.length; i++) {
r = (a.words[i] | 0) - (b.words[i] | 0) + carry;
carry = r >> 26;
this.words[i] = r & 0x3ffffff;
}
for (; carry !== 0 && i < a.length; i++) {
r = (a.words[i] | 0) + carry;
carry = r >> 26;
this.words[i] = r & 0x3ffffff;
}
// Copy rest of the words
if (carry === 0 && i < a.length && a !== this) {
for (; i < a.length; i++) {
this.words[i] = a.words[i];
}
}
this.length = Math.max(this.length, i);
if (a !== this) {
this.negative = 1;
}
return this.strip();
};
// Subtract `num` from `this`
BN.prototype.sub = function sub (num) {
return this.clone().isub(num);
};
function smallMulTo (self, num, out) {
out.negative = num.negative ^ self.negative;
var len = (self.length + num.length) | 0;
out.length = len;
len = (len - 1) | 0;
// Peel one iteration (compiler can't do it, because of code complexity)
var a = self.words[0] | 0;
var b = num.words[0] | 0;
var r = a * b;
var lo = r & 0x3ffffff;
var carry = (r / 0x4000000) | 0;
out.words[0] = lo;
for (var k = 1; k < len; k++) {
// Sum all words with the same `i + j = k` and accumulate `ncarry`,
// note that ncarry could be >= 0x3ffffff
var ncarry = carry >>> 26;
var rword = carry & 0x3ffffff;
var maxJ = Math.min(k, num.length - 1);
for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
var i = (k - j) | 0;
a = self.words[i] | 0;
b = num.words[j] | 0;
r = a * b + rword;
ncarry += (r / 0x4000000) | 0;
rword = r & 0x3ffffff;
}
out.words[k] = rword | 0;
carry = ncarry | 0;
}
if (carry !== 0) {
out.words[k] = carry | 0;
} else {
out.length--;
}
return out.strip();
}
// TODO(indutny): it may be reasonable to omit it for users who don't need
// to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit
// multiplication (like elliptic secp256k1).
var comb10MulTo = function comb10MulTo (self, num, out) {
var a = self.words;
var b = num.words;
var o = out.words;
var c = 0;
var lo;
var mid;
var hi;
var a0 = a[0] | 0;
var al0 = a0 & 0x1fff;
var ah0 = a0 >>> 13;
var a1 = a[1] | 0;
var al1 = a1 & 0x1fff;
var ah1 = a1 >>> 13;
var a2 = a[2] | 0;
var al2 = a2 & 0x1fff;
var ah2 = a2 >>> 13;
var a3 = a[3] | 0;
var al3 = a3 & 0x1fff;
var ah3 = a3 >>> 13;
var a4 = a[4] | 0;
var al4 = a4 & 0x1fff;
var ah4 = a4 >>> 13;
var a5 = a[5] | 0;
var al5 = a5 & 0x1fff;
var ah5 = a5 >>> 13;
var a6 = a[6] | 0;
var al6 = a6 & 0x1fff;
var ah6 = a6 >>> 13;
var a7 = a[7] | 0;
var al7 = a7 & 0x1fff;
var ah7 = a7 >>> 13;
var a8 = a[8] | 0;
var al8 = a8 & 0x1fff;
var ah8 = a8 >>> 13;
var a9 = a[9] | 0;
var al9 = a9 & 0x1fff;
var ah9 = a9 >>> 13;
var b0 = b[0] | 0;
var bl0 = b0 & 0x1fff;
var bh0 = b0 >>> 13;
var b1 = b[1] | 0;
var bl1 = b1 & 0x1fff;
var bh1 = b1 >>> 13;
var b2 = b[2] | 0;
var bl2 = b2 & 0x1fff;
var bh2 = b2 >>> 13;
var b3 = b[3] | 0;
var bl3 = b3 & 0x1fff;
var bh3 = b3 >>> 13;
var b4 = b[4] | 0;
var bl4 = b4 & 0x1fff;
var bh4 = b4 >>> 13;
var b5 = b[5] | 0;
var bl5 = b5 & 0x1fff;
var bh5 = b5 >>> 13;
var b6 = b[6] | 0;
var bl6 = b6 & 0x1fff;
var bh6 = b6 >>> 13;
var b7 = b[7] | 0;
var bl7 = b7 & 0x1fff;
var bh7 = b7 >>> 13;
var b8 = b[8] | 0;
var bl8 = b8 & 0x1fff;
var bh8 = b8 >>> 13;
var b9 = b[9] | 0;
var bl9 = b9 & 0x1fff;
var bh9 = b9 >>> 13;
out.negative = self.negative ^ num.negative;
out.length = 19;
/* k = 0 */
lo = Math.imul(al0, bl0);
mid = Math.imul(al0, bh0);
mid = (mid + Math.imul(ah0, bl0)) | 0;
hi = Math.imul(ah0, bh0);
var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;
w0 &= 0x3ffffff;
/* k = 1 */
lo = Math.imul(al1, bl0);
mid = Math.imul(al1, bh0);
mid = (mid + Math.imul(ah1, bl0)) | 0;
hi = Math.imul(ah1, bh0);
lo = (lo + Math.imul(al0, bl1)) | 0;
mid = (mid + Math.imul(al0, bh1)) | 0;
mid = (mid + Math.imul(ah0, bl1)) | 0;
hi = (hi + Math.imul(ah0, bh1)) | 0;
var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;
w1 &= 0x3ffffff;
/* k = 2 */
lo = Math.imul(al2, bl0);
mid = Math.imul(al2, bh0);
mid = (mid + Math.imul(ah2, bl0)) | 0;
hi = Math.imul(ah2, bh0);
lo = (lo + Math.imul(al1, bl1)) | 0;
mid = (mid + Math.imul(al1, bh1)) | 0;
mid = (mid + Math.imul(ah1, bl1)) | 0;
hi = (hi + Math.imul(ah1, bh1)) | 0;
lo = (lo + Math.imul(al0, bl2)) | 0;
mid = (mid + Math.imul(al0, bh2)) | 0;
mid = (mid + Math.imul(ah0, bl2)) | 0;
hi = (hi + Math.imul(ah0, bh2)) | 0;
var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;
w2 &= 0x3ffffff;
/* k = 3 */
lo = Math.imul(al3, bl0);
mid = Math.imul(al3, bh0);
mid = (mid + Math.imul(ah3, bl0)) | 0;
hi = Math.imul(ah3, bh0);
lo = (lo + Math.imul(al2, bl1)) | 0;
mid = (mid + Math.imul(al2, bh1)) | 0;
mid = (mid + Math.imul(ah2, bl1)) | 0;
hi = (hi + Math.imul(ah2, bh1)) | 0;
lo = (lo + Math.imul(al1, bl2)) | 0;
mid = (mid + Math.imul(al1, bh2)) | 0;
mid = (mid + Math.imul(ah1, bl2)) | 0;
hi = (hi + Math.imul(ah1, bh2)) | 0;
lo = (lo + Math.imul(al0, bl3)) | 0;
mid = (mid + Math.imul(al0, bh3)) | 0;
mid = (mid + Math.imul(ah0, bl3)) | 0;
hi = (hi + Math.imul(ah0, bh3)) | 0;
var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;
w3 &= 0x3ffffff;
/* k = 4 */
lo = Math.imul(al4, bl0);
mid = Math.imul(al4, bh0);
mid = (mid + Math.imul(ah4, bl0)) | 0;
hi = Math.imul(ah4, bh0);
lo = (lo + Math.imul(al3, bl1)) | 0;
mid = (mid + Math.imul(al3, bh1)) | 0;
mid = (mid + Math.imul(ah3, bl1)) | 0;
hi = (hi + Math.imul(ah3, bh1)) | 0;
lo = (lo + Math.imul(al2, bl2)) | 0;
mid = (mid + Math.imul(al2, bh2)) | 0;
mid = (mid + Math.imul(ah2, bl2)) | 0;
hi = (hi + Math.imul(ah2, bh2)) | 0;
lo = (lo + Math.imul(al1, bl3)) | 0;
mid = (mid + Math.imul(al1, bh3)) | 0;
mid = (mid + Math.imul(ah1, bl3)) | 0;
hi = (hi + Math.imul(ah1, bh3)) | 0;
lo = (lo + Math.imul(al0, bl4)) | 0;
mid = (mid + Math.imul(al0, bh4)) | 0;
mid = (mid + Math.imul(ah0, bl4)) | 0;
hi = (hi + Math.imul(ah0, bh4)) | 0;
var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;
w4 &= 0x3ffffff;
/* k = 5 */
lo = Math.imul(al5, bl0);
mid = Math.imul(al5, bh0);
mid = (mid + Math.imul(ah5, bl0)) | 0;
hi = Math.imul(ah5, bh0);
lo = (lo + Math.imul(al4, bl1)) | 0;
mid = (mid + Math.imul(al4, bh1)) | 0;
mid = (mid + Math.imul(ah4, bl1)) | 0;
hi = (hi + Math.imul(ah4, bh1)) | 0;
lo = (lo + Math.imul(al3, bl2)) | 0;
mid = (mid + Math.imul(al3, bh2)) | 0;
mid = (mid + Math.imul(ah3, bl2)) | 0;
hi = (hi + Math.imul(ah3, bh2)) | 0;
lo = (lo + Math.imul(al2, bl3)) | 0;
mid = (mid + Math.imul(al2, bh3)) | 0;
mid = (mid + Math.imul(ah2, bl3)) | 0;
hi = (hi + Math.imul(ah2, bh3)) | 0;
lo = (lo + Math.imul(al1, bl4)) | 0;
mid = (mid + Math.imul(al1, bh4)) | 0;
mid = (mid + Math.imul(ah1, bl4)) | 0;
hi = (hi + Math.imul(ah1, bh4)) | 0;
lo = (lo + Math.imul(al0, bl5)) | 0;
mid = (mid + Math.imul(al0, bh5)) | 0;
mid = (mid + Math.imul(ah0, bl5)) | 0;
hi = (hi + Math.imul(ah0, bh5)) | 0;
var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;
w5 &= 0x3ffffff;
/* k = 6 */
lo = Math.imul(al6, bl0);
mid = Math.imul(al6, bh0);
mid = (mid + Math.imul(ah6, bl0)) | 0;
hi = Math.imul(ah6, bh0);
lo = (lo + Math.imul(al5, bl1)) | 0;
mid = (mid + Math.imul(al5, bh1)) | 0;
mid = (mid + Math.imul(ah5, bl1)) | 0;
hi = (hi + Math.imul(ah5, bh1)) | 0;
lo = (lo + Math.imul(al4, bl2)) | 0;
mid = (mid + Math.imul(al4, bh2)) | 0;
mid = (mid + Math.imul(ah4, bl2)) | 0;
hi = (hi + Math.imul(ah4, bh2)) | 0;
lo = (lo + Math.imul(al3, bl3)) | 0;
mid = (mid + Math.imul(al3, bh3)) | 0;
mid = (mid + Math.imul(ah3, bl3)) | 0;
hi = (hi + Math.imul(ah3, bh3)) | 0;
lo = (lo + Math.imul(al2, bl4)) | 0;
mid = (mid + Math.imul(al2, bh4)) | 0;
mid = (mid + Math.imul(ah2, bl4)) | 0;
hi = (hi + Math.imul(ah2, bh4)) | 0;
lo = (lo + Math.imul(al1, bl5)) | 0;
mid = (mid + Math.imul(al1, bh5)) | 0;
mid = (mid + Math.imul(ah1, bl5)) | 0;
hi = (hi + Math.imul(ah1, bh5)) | 0;
lo = (lo + Math.imul(al0, bl6)) | 0;
mid = (mid + Math.imul(al0, bh6)) | 0;
mid = (mid + Math.imul(ah0, bl6)) | 0;
hi = (hi + Math.imul(ah0, bh6)) | 0;
var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;
w6 &= 0x3ffffff;
/* k = 7 */
lo = Math.imul(al7, bl0);
mid = Math.imul(al7, bh0);
mid = (mid + Math.imul(ah7, bl0)) | 0;
hi = Math.imul(ah7, bh0);
lo = (lo + Math.imul(al6, bl1)) | 0;
mid = (mid + Math.imul(al6, bh1)) | 0;
mid = (mid + Math.imul(ah6, bl1)) | 0;
hi = (hi + Math.imul(ah6, bh1)) | 0;
lo = (lo + Math.imul(al5, bl2)) | 0;
mid = (mid + Math.imul(al5, bh2)) | 0;
mid = (mid + Math.imul(ah5, bl2)) | 0;
hi = (hi + Math.imul(ah5, bh2)) | 0;
lo = (lo + Math.imul(al4, bl3)) | 0;
mid = (mid + Math.imul(al4, bh3)) | 0;
mid = (mid + Math.imul(ah4, bl3)) | 0;
hi = (hi + Math.imul(ah4, bh3)) | 0;
lo = (lo + Math.imul(al3, bl4)) | 0;
mid = (mid + Math.imul(al3, bh4)) | 0;
mid = (mid + Math.imul(ah3, bl4)) | 0;
hi = (hi + Math.imul(ah3, bh4)) | 0;
lo = (lo + Math.imul(al2, bl5)) | 0;
mid = (mid + Math.imul(al2, bh5)) | 0;
mid = (mid + Math.imul(ah2, bl5)) | 0;
hi = (hi + Math.imul(ah2, bh5)) | 0;
lo = (lo + Math.imul(al1, bl6)) | 0;
mid = (mid + Math.imul(al1, bh6)) | 0;
mid = (mid + Math.imul(ah1, bl6)) | 0;
hi = (hi + Math.imul(ah1, bh6)) | 0;
lo = (lo + Math.imul(al0, bl7)) | 0;
mid = (mid + Math.imul(al0, bh7)) | 0;
mid = (mid + Math.imul(ah0, bl7)) | 0;
hi = (hi + Math.imul(ah0, bh7)) | 0;
var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;
w7 &= 0x3ffffff;
/* k = 8 */
lo = Math.imul(al8, bl0);
mid = Math.imul(al8, bh0);
mid = (mid + Math.imul(ah8, bl0)) | 0;
hi = Math.imul(ah8, bh0);
lo = (lo + Math.imul(al7, bl1)) | 0;
mid = (mid + Math.imul(al7, bh1)) | 0;
mid = (mid + Math.imul(ah7, bl1)) | 0;
hi = (hi + Math.imul(ah7, bh1)) | 0;
lo = (lo + Math.imul(al6, bl2)) | 0;
mid = (mid + Math.imul(al6, bh2)) | 0;
mid = (mid + Math.imul(ah6, bl2)) | 0;
hi = (hi + Math.imul(ah6, bh2)) | 0;
lo = (lo + Math.imul(al5, bl3)) | 0;
mid = (mid + Math.imul(al5, bh3)) | 0;
mid = (mid + Math.imul(ah5, bl3)) | 0;
hi = (hi + Math.imul(ah5, bh3)) | 0;
lo = (lo + Math.imul(al4, bl4)) | 0;
mid = (mid + Math.imul(al4, bh4)) | 0;
mid = (mid + Math.imul(ah4, bl4)) | 0;
hi = (hi + Math.imul(ah4, bh4)) | 0;
lo = (lo + Math.imul(al3, bl5)) | 0;
mid = (mid + Math.imul(al3, bh5)) | 0;
mid = (mid + Math.imul(ah3, bl5)) | 0;
hi = (hi + Math.imul(ah3, bh5)) | 0;
lo = (lo + Math.imul(al2, bl6)) | 0;
mid = (mid + Math.imul(al2, bh6)) | 0;
mid = (mid + Math.imul(ah2, bl6)) | 0;
hi = (hi + Math.imul(ah2, bh6)) | 0;
lo = (lo + Math.imul(al1, bl7)) | 0;
mid = (mid + Math.imul(al1, bh7)) | 0;
mid = (mid + Math.imul(ah1, bl7)) | 0;
hi = (hi + Math.imul(ah1, bh7)) | 0;
lo = (lo + Math.imul(al0, bl8)) | 0;
mid = (mid + Math.imul(al0, bh8)) | 0;
mid = (mid + Math.imul(ah0, bl8)) | 0;
hi = (hi + Math.imul(ah0, bh8)) | 0;
var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;
w8 &= 0x3ffffff;
/* k = 9 */
lo = Math.imul(al9, bl0);
mid = Math.imul(al9, bh0);
mid = (mid + Math.imul(ah9, bl0)) | 0;
hi = Math.imul(ah9, bh0);
lo = (lo + Math.imul(al8, bl1)) | 0;
mid = (mid + Math.imul(al8, bh1)) | 0;
mid = (mid + Math.imul(ah8, bl1)) | 0;
hi = (hi + Math.imul(ah8, bh1)) | 0;
lo = (lo + Math.imul(al7, bl2)) | 0;
mid = (mid + Math.imul(al7, bh2)) | 0;
mid = (mid + Math.imul(ah7, bl2)) | 0;
hi = (hi + Math.imul(ah7, bh2)) | 0;
lo = (lo + Math.imul(al6, bl3)) | 0;
mid = (mid + Math.imul(al6, bh3)) | 0;
mid = (mid + Math.imul(ah6, bl3)) | 0;
hi = (hi + Math.imul(ah6, bh3)) | 0;
lo = (lo + Math.imul(al5, bl4)) | 0;
mid = (mid + Math.imul(al5, bh4)) | 0;
mid = (mid + Math.imul(ah5, bl4)) | 0;
hi = (hi + Math.imul(ah5, bh4)) | 0;
lo = (lo + Math.imul(al4, bl5)) | 0;
mid = (mid + Math.imul(al4, bh5)) | 0;
mid = (mid + Math.imul(ah4, bl5)) | 0;
hi = (hi + Math.imul(ah4, bh5)) | 0;
lo = (lo + Math.imul(al3, bl6)) | 0;
mid = (mid + Math.imul(al3, bh6)) | 0;
mid = (mid + Math.imul(ah3, bl6)) | 0;
hi = (hi + Math.imul(ah3, bh6)) | 0;
lo = (lo + Math.imul(al2, bl7)) | 0;
mid = (mid + Math.imul(al2, bh7)) | 0;
mid = (mid + Math.imul(ah2, bl7)) | 0;
hi = (hi + Math.imul(ah2, bh7)) | 0;
lo = (lo + Math.imul(al1, bl8)) | 0;
mid = (mid + Math.imul(al1, bh8)) | 0;
mid = (mid + Math.imul(ah1, bl8)) | 0;
hi = (hi + Math.imul(ah1, bh8)) | 0;
lo = (lo + Math.imul(al0, bl9)) | 0;
mid = (mid + Math.imul(al0, bh9)) | 0;
mid = (mid + Math.imul(ah0, bl9)) | 0;
hi = (hi + Math.imul(ah0, bh9)) | 0;
var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;
w9 &= 0x3ffffff;
/* k = 10 */
lo = Math.imul(al9, bl1);
mid = Math.imul(al9, bh1);
mid = (mid + Math.imul(ah9, bl1)) | 0;
hi = Math.imul(ah9, bh1);
lo = (lo + Math.imul(al8, bl2)) | 0;
mid = (mid + Math.imul(al8, bh2)) | 0;
mid = (mid + Math.imul(ah8, bl2)) | 0;
hi = (hi + Math.imul(ah8, bh2)) | 0;
lo = (lo + Math.imul(al7, bl3)) | 0;
mid = (mid + Math.imul(al7, bh3)) | 0;
mid = (mid + Math.imul(ah7, bl3)) | 0;
hi = (hi + Math.imul(ah7, bh3)) | 0;
lo = (lo + Math.imul(al6, bl4)) | 0;
mid = (mid + Math.imul(al6, bh4)) | 0;
mid = (mid + Math.imul(ah6, bl4)) | 0;
hi = (hi + Math.imul(ah6, bh4)) | 0;
lo = (lo + Math.imul(al5, bl5)) | 0;
mid = (mid + Math.imul(al5, bh5)) | 0;
mid = (mid + Math.imul(ah5, bl5)) | 0;
hi = (hi + Math.imul(ah5, bh5)) | 0;
lo = (lo + Math.imul(al4, bl6)) | 0;
mid = (mid + Math.imul(al4, bh6)) | 0;
mid = (mid + Math.imul(ah4, bl6)) | 0;
hi = (hi + Math.imul(ah4, bh6)) | 0;
lo = (lo + Math.imul(al3, bl7)) | 0;
mid = (mid + Math.imul(al3, bh7)) | 0;
mid = (mid + Math.imul(ah3, bl7)) | 0;
hi = (hi + Math.imul(ah3, bh7)) | 0;
lo = (lo + Math.imul(al2, bl8)) | 0;
mid = (mid + Math.imul(al2, bh8)) | 0;
mid = (mid + Math.imul(ah2, bl8)) | 0;
hi = (hi + Math.imul(ah2, bh8)) | 0;
lo = (lo + Math.imul(al1, bl9)) | 0;
mid = (mid + Math.imul(al1, bh9)) | 0;
mid = (mid + Math.imul(ah1, bl9)) | 0;
hi = (hi + Math.imul(ah1, bh9)) | 0;
var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;
w10 &= 0x3ffffff;
/* k = 11 */
lo = Math.imul(al9, bl2);
mid = Math.imul(al9, bh2);
mid = (mid + Math.imul(ah9, bl2)) | 0;
hi = Math.imul(ah9, bh2);
lo = (lo + Math.imul(al8, bl3)) | 0;
mid = (mid + Math.imul(al8, bh3)) | 0;
mid = (mid + Math.imul(ah8, bl3)) | 0;
hi = (hi + Math.imul(ah8, bh3)) | 0;
lo = (lo + Math.imul(al7, bl4)) | 0;
mid = (mid + Math.imul(al7, bh4)) | 0;
mid = (mid + Math.imul(ah7, bl4)) | 0;
hi = (hi + Math.imul(ah7, bh4)) | 0;
lo = (lo + Math.imul(al6, bl5)) | 0;
mid = (mid + Math.imul(al6, bh5)) | 0;
mid = (mid + Math.imul(ah6, bl5)) | 0;
hi = (hi + Math.imul(ah6, bh5)) | 0;
lo = (lo + Math.imul(al5, bl6)) | 0;
mid = (mid + Math.imul(al5, bh6)) | 0;
mid = (mid + Math.imul(ah5, bl6)) | 0;
hi = (hi + Math.imul(ah5, bh6)) | 0;
lo = (lo + Math.imul(al4, bl7)) | 0;
mid = (mid + Math.imul(al4, bh7)) | 0;
mid = (mid + Math.imul(ah4, bl7)) | 0;
hi = (hi + Math.imul(ah4, bh7)) | 0;
lo = (lo + Math.imul(al3, bl8)) | 0;
mid = (mid + Math.imul(al3, bh8)) | 0;
mid = (mid + Math.imul(ah3, bl8)) | 0;
hi = (hi + Math.imul(ah3, bh8)) | 0;
lo = (lo + Math.imul(al2, bl9)) | 0;
mid = (mid + Math.imul(al2, bh9)) | 0;
mid = (mid + Math.imul(ah2, bl9)) | 0;
hi = (hi + Math.imul(ah2, bh9)) | 0;
var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;
w11 &= 0x3ffffff;
/* k = 12 */
lo = Math.imul(al9, bl3);
mid = Math.imul(al9, bh3);
mid = (mid + Math.imul(ah9, bl3)) | 0;
hi = Math.imul(ah9, bh3);
lo = (lo + Math.imul(al8, bl4)) | 0;
mid = (mid + Math.imul(al8, bh4)) | 0;
mid = (mid + Math.imul(ah8, bl4)) | 0;
hi = (hi + Math.imul(ah8, bh4)) | 0;
lo = (lo + Math.imul(al7, bl5)) | 0;
mid = (mid + Math.imul(al7, bh5)) | 0;
mid = (mid + Math.imul(ah7, bl5)) | 0;
hi = (hi + Math.imul(ah7, bh5)) | 0;
lo = (lo + Math.imul(al6, bl6)) | 0;
mid = (mid + Math.imul(al6, bh6)) | 0;
mid = (mid + Math.imul(ah6, bl6)) | 0;
hi = (hi + Math.imul(ah6, bh6)) | 0;
lo = (lo + Math.imul(al5, bl7)) | 0;
mid = (mid + Math.imul(al5, bh7)) | 0;
mid = (mid + Math.imul(ah5, bl7)) | 0;
hi = (hi + Math.imul(ah5, bh7)) | 0;
lo = (lo + Math.imul(al4, bl8)) | 0;
mid = (mid + Math.imul(al4, bh8)) | 0;
mid = (mid + Math.imul(ah4, bl8)) | 0;
hi = (hi + Math.imul(ah4, bh8)) | 0;
lo = (lo + Math.imul(al3, bl9)) | 0;
mid = (mid + Math.imul(al3, bh9)) | 0;
mid = (mid + Math.imul(ah3, bl9)) | 0;
hi = (hi + Math.imul(ah3, bh9)) | 0;
var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;
w12 &= 0x3ffffff;
/* k = 13 */
lo = Math.imul(al9, bl4);
mid = Math.imul(al9, bh4);
mid = (mid + Math.imul(ah9, bl4)) | 0;
hi = Math.imul(ah9, bh4);
lo = (lo + Math.imul(al8, bl5)) | 0;
mid = (mid + Math.imul(al8, bh5)) | 0;
mid = (mid + Math.imul(ah8, bl5)) | 0;
hi = (hi + Math.imul(ah8, bh5)) | 0;
lo = (lo + Math.imul(al7, bl6)) | 0;
mid = (mid + Math.imul(al7, bh6)) | 0;
mid = (mid + Math.imul(ah7, bl6)) | 0;
hi = (hi + Math.imul(ah7, bh6)) | 0;
lo = (lo + Math.imul(al6, bl7)) | 0;
mid = (mid + Math.imul(al6, bh7)) | 0;
mid = (mid + Math.imul(ah6, bl7)) | 0;
hi = (hi + Math.imul(ah6, bh7)) | 0;
lo = (lo + Math.imul(al5, bl8)) | 0;
mid = (mid + Math.imul(al5, bh8)) | 0;
mid = (mid + Math.imul(ah5, bl8)) | 0;
hi = (hi + Math.imul(ah5, bh8)) | 0;
lo = (lo + Math.imul(al4, bl9)) | 0;
mid = (mid + Math.imul(al4, bh9)) | 0;
mid = (mid + Math.imul(ah4, bl9)) | 0;
hi = (hi + Math.imul(ah4, bh9)) | 0;
var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;
w13 &= 0x3ffffff;
/* k = 14 */
lo = Math.imul(al9, bl5);
mid = Math.imul(al9, bh5);
mid = (mid + Math.imul(ah9, bl5)) | 0;
hi = Math.imul(ah9, bh5);
lo = (lo + Math.imul(al8, bl6)) | 0;
mid = (mid + Math.imul(al8, bh6)) | 0;
mid = (mid + Math.imul(ah8, bl6)) | 0;
hi = (hi + Math.imul(ah8, bh6)) | 0;
lo = (lo + Math.imul(al7, bl7)) | 0;
mid = (mid + Math.imul(al7, bh7)) | 0;
mid = (mid + Math.imul(ah7, bl7)) | 0;
hi = (hi + Math.imul(ah7, bh7)) | 0;
lo = (lo + Math.imul(al6, bl8)) | 0;
mid = (mid + Math.imul(al6, bh8)) | 0;
mid = (mid + Math.imul(ah6, bl8)) | 0;
hi = (hi + Math.imul(ah6, bh8)) | 0;
lo = (lo + Math.imul(al5, bl9)) | 0;
mid = (mid + Math.imul(al5, bh9)) | 0;
mid = (mid + Math.imul(ah5, bl9)) | 0;
hi = (hi + Math.imul(ah5, bh9)) | 0;
var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;
w14 &= 0x3ffffff;
/* k = 15 */
lo = Math.imul(al9, bl6);
mid = Math.imul(al9, bh6);
mid = (mid + Math.imul(ah9, bl6)) | 0;
hi = Math.imul(ah9, bh6);
lo = (lo + Math.imul(al8, bl7)) | 0;
mid = (mid + Math.imul(al8, bh7)) | 0;
mid = (mid + Math.imul(ah8, bl7)) | 0;
hi = (hi + Math.imul(ah8, bh7)) | 0;
lo = (lo + Math.imul(al7, bl8)) | 0;
mid = (mid + Math.imul(al7, bh8)) | 0;
mid = (mid + Math.imul(ah7, bl8)) | 0;
hi = (hi + Math.imul(ah7, bh8)) | 0;
lo = (lo + Math.imul(al6, bl9)) | 0;
mid = (mid + Math.imul(al6, bh9)) | 0;
mid = (mid + Math.imul(ah6, bl9)) | 0;
hi = (hi + Math.imul(ah6, bh9)) | 0;
var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;
w15 &= 0x3ffffff;
/* k = 16 */
lo = Math.imul(al9, bl7);
mid = Math.imul(al9, bh7);
mid = (mid + Math.imul(ah9, bl7)) | 0;
hi = Math.imul(ah9, bh7);
lo = (lo + Math.imul(al8, bl8)) | 0;
mid = (mid + Math.imul(al8, bh8)) | 0;
mid = (mid + Math.imul(ah8, bl8)) | 0;
hi = (hi + Math.imul(ah8, bh8)) | 0;
lo = (lo + Math.imul(al7, bl9)) | 0;
mid = (mid + Math.imul(al7, bh9)) | 0;
mid = (mid + Math.imul(ah7, bl9)) | 0;
hi = (hi + Math.imul(ah7, bh9)) | 0;
var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;
w16 &= 0x3ffffff;
/* k = 17 */
lo = Math.imul(al9, bl8);
mid = Math.imul(al9, bh8);
mid = (mid + Math.imul(ah9, bl8)) | 0;
hi = Math.imul(ah9, bh8);
lo = (lo + Math.imul(al8, bl9)) | 0;
mid = (mid + Math.imul(al8, bh9)) | 0;
mid = (mid + Math.imul(ah8, bl9)) | 0;
hi = (hi + Math.imul(ah8, bh9)) | 0;
var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;
w17 &= 0x3ffffff;
/* k = 18 */
lo = Math.imul(al9, bl9);
mid = Math.imul(al9, bh9);
mid = (mid + Math.imul(ah9, bl9)) | 0;
hi = Math.imul(ah9, bh9);
var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;
c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;
w18 &= 0x3ffffff;
o[0] = w0;
o[1] = w1;
o[2] = w2;
o[3] = w3;
o[4] = w4;
o[5] = w5;
o[6] = w6;
o[7] = w7;
o[8] = w8;
o[9] = w9;
o[10] = w10;
o[11] = w11;
o[12] = w12;
o[13] = w13;
o[14] = w14;
o[15] = w15;
o[16] = w16;
o[17] = w17;
o[18] = w18;
if (c !== 0) {
o[19] = c;
out.length++;
}
return out;
};
// Polyfill comb
if (!Math.imul) {
comb10MulTo = smallMulTo;
}
function bigMulTo (self, num, out) {
out.negative = num.negative ^ self.negative;
out.length = self.length + num.length;
var carry = 0;
var hncarry = 0;
for (var k = 0; k < out.length - 1; k++) {
// Sum all words with the same `i + j = k` and accumulate `ncarry`,
// note that ncarry could be >= 0x3ffffff
var ncarry = hncarry;
hncarry = 0;
var rword = carry & 0x3ffffff;
var maxJ = Math.min(k, num.length - 1);
for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
var i = k - j;
var a = self.words[i] | 0;
var b = num.words[j] | 0;
var r = a * b;
var lo = r & 0x3ffffff;
ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;
lo = (lo + rword) | 0;
rword = lo & 0x3ffffff;
ncarry = (ncarry + (lo >>> 26)) | 0;
hncarry += ncarry >>> 26;
ncarry &= 0x3ffffff;
}
out.words[k] = rword;
carry = ncarry;
ncarry = hncarry;
}
if (carry !== 0) {
out.words[k] = carry;
} else {
out.length--;
}
return out.strip();
}
function jumboMulTo (self, num, out) {
var fftm = new FFTM();
return fftm.mulp(self, num, out);
}
BN.prototype.mulTo = function mulTo (num, out) {
var res;
var len = this.length + num.length;
if (this.length === 10 && num.length === 10) {
res = comb10MulTo(this, num, out);
} else if (len < 63) {
res = smallMulTo(this, num, out);
} else if (len < 1024) {
res = bigMulTo(this, num, out);
} else {
res = jumboMulTo(this, num, out);
}
return res;
};
// Cooley-Tukey algorithm for FFT
// slightly revisited to rely on looping instead of recursion
function FFTM (x, y) {
this.x = x;
this.y = y;
}
FFTM.prototype.makeRBT = function makeRBT (N) {
var t = new Array(N);
var l = BN.prototype._countBits(N) - 1;
for (var i = 0; i < N; i++) {
t[i] = this.revBin(i, l, N);
}
return t;
};
// Returns binary-reversed representation of `x`
FFTM.prototype.revBin = function revBin (x, l, N) {
if (x === 0 || x === N - 1) return x;
var rb = 0;
for (var i = 0; i < l; i++) {
rb |= (x & 1) << (l - i - 1);
x >>= 1;
}
return rb;
};
// Performs "tweedling" phase, therefore 'emulating'
// behaviour of the recursive algorithm
FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {
for (var i = 0; i < N; i++) {
rtws[i] = rws[rbt[i]];
itws[i] = iws[rbt[i]];
}
};
FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {
this.permute(rbt, rws, iws, rtws, itws, N);
for (var s = 1; s < N; s <<= 1) {
var l = s << 1;
var rtwdf = Math.cos(2 * Math.PI / l);
var itwdf = Math.sin(2 * Math.PI / l);
for (var p = 0; p < N; p += l) {
var rtwdf_ = rtwdf;
var itwdf_ = itwdf;
for (var j = 0; j < s; j++) {
var re = rtws[p + j];
var ie = itws[p + j];
var ro = rtws[p + j + s];
var io = itws[p + j + s];
var rx = rtwdf_ * ro - itwdf_ * io;
io = rtwdf_ * io + itwdf_ * ro;
ro = rx;
rtws[p + j] = re + ro;
itws[p + j] = ie + io;
rtws[p + j + s] = re - ro;
itws[p + j + s] = ie - io;
/* jshint maxdepth : false */
if (j !== l) {
rx = rtwdf * rtwdf_ - itwdf * itwdf_;
itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;
rtwdf_ = rx;
}
}
}
}
};
FFTM.prototype.guessLen13b = function guessLen13b (n, m) {
var N = Math.max(m, n) | 1;
var odd = N & 1;
var i = 0;
for (N = N / 2 | 0; N; N = N >>> 1) {
i++;
}
return 1 << i + 1 + odd;
};
FFTM.prototype.conjugate = function conjugate (rws, iws, N) {
if (N <= 1) return;
for (var i = 0; i < N / 2; i++) {
var t = rws[i];
rws[i] = rws[N - i - 1];
rws[N - i - 1] = t;
t = iws[i];
iws[i] = -iws[N - i - 1];
iws[N - i - 1] = -t;
}
};
FFTM.prototype.normalize13b = function normalize13b (ws, N) {
var carry = 0;
for (var i = 0; i < N / 2; i++) {
var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +
Math.round(ws[2 * i] / N) +
carry;
ws[i] = w & 0x3ffffff;
if (w < 0x4000000) {
carry = 0;
} else {
carry = w / 0x4000000 | 0;
}
}
return ws;
};
FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {
var carry = 0;
for (var i = 0; i < len; i++) {
carry = carry + (ws[i] | 0);
rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;
rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;
}
// Pad with zeroes
for (i = 2 * len; i < N; ++i) {
rws[i] = 0;
}
assert(carry === 0);
assert((carry & ~0x1fff) === 0);
};
FFTM.prototype.stub = function stub (N) {
var ph = new Array(N);
for (var i = 0; i < N; i++) {
ph[i] = 0;
}
return ph;
};
FFTM.prototype.mulp = function mulp (x, y, out) {
var N = 2 * this.guessLen13b(x.length, y.length);
var rbt = this.makeRBT(N);
var _ = this.stub(N);
var rws = new Array(N);
var rwst = new Array(N);
var iwst = new Array(N);
var nrws = new Array(N);
var nrwst = new Array(N);
var niwst = new Array(N);
var rmws = out.words;
rmws.length = N;
this.convert13b(x.words, x.length, rws, N);
this.convert13b(y.words, y.length, nrws, N);
this.transform(rws, _, rwst, iwst, N, rbt);
this.transform(nrws, _, nrwst, niwst, N, rbt);
for (var i = 0; i < N; i++) {
var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];
iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];
rwst[i] = rx;
}
this.conjugate(rwst, iwst, N);
this.transform(rwst, iwst, rmws, _, N, rbt);
this.conjugate(rmws, _, N);
this.normalize13b(rmws, N);
out.negative = x.negative ^ y.negative;
out.length = x.length + y.length;
return out.strip();
};
// Multiply `this` by `num`
BN.prototype.mul = function mul (num) {
var out = new BN(null);
out.words = new Array(this.length + num.length);
return this.mulTo(num, out);
};
// Multiply employing FFT
BN.prototype.mulf = function mulf (num) {
var out = new BN(null);
out.words = new Array(this.length + num.length);
return jumboMulTo(this, num, out);
};
// In-place Multiplication
BN.prototype.imul = function imul (num) {
return this.clone().mulTo(num, this);
};
BN.prototype.imuln = function imuln (num) {
assert(typeof num === 'number');
assert(num < 0x4000000);
// Carry
var carry = 0;
for (var i = 0; i < this.length; i++) {
var w = (this.words[i] | 0) * num;
var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);
carry >>= 26;
carry += (w / 0x4000000) | 0;
// NOTE: lo is 27bit maximum
carry += lo >>> 26;
this.words[i] = lo & 0x3ffffff;
}
if (carry !== 0) {
this.words[i] = carry;
this.length++;
}
return this;
};
BN.prototype.muln = function muln (num) {
return this.clone().imuln(num);
};
// `this` * `this`
BN.prototype.sqr = function sqr () {
return this.mul(this);
};
// `this` * `this` in-place
BN.prototype.isqr = function isqr () {
return this.imul(this.clone());
};
// Math.pow(`this`, `num`)
BN.prototype.pow = function pow (num) {
var w = toBitArray(num);
if (w.length === 0) return new BN(1);
// Skip leading zeroes
var res = this;
for (var i = 0; i < w.length; i++, res = res.sqr()) {
if (w[i] !== 0) break;
}
if (++i < w.length) {
for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {
if (w[i] === 0) continue;
res = res.mul(q);
}
}
return res;
};
// Shift-left in-place
BN.prototype.iushln = function iushln (bits) {
assert(typeof bits === 'number' && bits >= 0);
var r = bits % 26;
var s = (bits - r) / 26;
var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);
var i;
if (r !== 0) {
var carry = 0;
for (i = 0; i < this.length; i++) {
var newCarry = this.words[i] & carryMask;
var c = ((this.words[i] | 0) - newCarry) << r;
this.words[i] = c | carry;
carry = newCarry >>> (26 - r);
}
if (carry) {
this.words[i] = carry;
this.length++;
}
}
if (s !== 0) {
for (i = this.length - 1; i >= 0; i--) {
this.words[i + s] = this.words[i];
}
for (i = 0; i < s; i++) {
this.words[i] = 0;
}
this.length += s;
}
return this.strip();
};
BN.prototype.ishln = function ishln (bits) {
// TODO(indutny): implement me
assert(this.negative === 0);
return this.iushln(bits);
};
// Shift-right in-place
// NOTE: `hint` is a lowest bit before trailing zeroes
// NOTE: if `extended` is present - it will be filled with destroyed bits
BN.prototype.iushrn = function iushrn (bits, hint, extended) {
assert(typeof bits === 'number' && bits >= 0);
var h;
if (hint) {
h = (hint - (hint % 26)) / 26;
} else {
h = 0;
}
var r = bits % 26;
var s = Math.min((bits - r) / 26, this.length);
var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
var maskedWords = extended;
h -= s;
h = Math.max(0, h);
// Extended mode, copy masked part
if (maskedWords) {
for (var i = 0; i < s; i++) {
maskedWords.words[i] = this.words[i];
}
maskedWords.length = s;
}
if (s === 0) {
// No-op, we should not move anything at all
} else if (this.length > s) {
this.length -= s;
for (i = 0; i < this.length; i++) {
this.words[i] = this.words[i + s];
}
} else {
this.words[0] = 0;
this.length = 1;
}
var carry = 0;
for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {
var word = this.words[i] | 0;
this.words[i] = (carry << (26 - r)) | (word >>> r);
carry = word & mask;
}
// Push carried bits as a mask
if (maskedWords && carry !== 0) {
maskedWords.words[maskedWords.length++] = carry;
}
if (this.length === 0) {
this.words[0] = 0;
this.length = 1;
}
return this.strip();
};
BN.prototype.ishrn = function ishrn (bits, hint, extended) {
// TODO(indutny): implement me
assert(this.negative === 0);
return this.iushrn(bits, hint, extended);
};
// Shift-left
BN.prototype.shln = function shln (bits) {
return this.clone().ishln(bits);
};
BN.prototype.ushln = function ushln (bits) {
return this.clone().iushln(bits);
};
// Shift-right
BN.prototype.shrn = function shrn (bits) {
return this.clone().ishrn(bits);
};
BN.prototype.ushrn = function ushrn (bits) {
return this.clone().iushrn(bits);
};
// Test if n bit is set
BN.prototype.testn = function testn (bit) {
assert(typeof bit === 'number' && bit >= 0);
var r = bit % 26;
var s = (bit - r) / 26;
var q = 1 << r;
// Fast case: bit is much higher than all existing words
if (this.length <= s) return false;
// Check bit and return
var w = this.words[s];
return !!(w & q);
};
// Return only lowers bits of number (in-place)
BN.prototype.imaskn = function imaskn (bits) {
assert(typeof bits === 'number' && bits >= 0);
var r = bits % 26;
var s = (bits - r) / 26;
assert(this.negative === 0, 'imaskn works only with positive numbers');
if (this.length <= s) {
return this;
}
if (r !== 0) {
s++;
}
this.length = Math.min(s, this.length);
if (r !== 0) {
var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);
this.words[this.length - 1] &= mask;
}
return this.strip();
};
// Return only lowers bits of number
BN.prototype.maskn = function maskn (bits) {
return this.clone().imaskn(bits);
};
// Add plain number `num` to `this`
BN.prototype.iaddn = function iaddn (num) {
assert(typeof num === 'number');
assert(num < 0x4000000);
if (num < 0) return this.isubn(-num);
// Possible sign change
if (this.negative !== 0) {
if (this.length === 1 && (this.words[0] | 0) < num) {
this.words[0] = num - (this.words[0] | 0);
this.negative = 0;
return this;
}
this.negative = 0;
this.isubn(num);
this.negative = 1;
return this;
}
// Add without checks
return this._iaddn(num);
};
BN.prototype._iaddn = function _iaddn (num) {
this.words[0] += num;
// Carry
for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {
this.words[i] -= 0x4000000;
if (i === this.length - 1) {
this.words[i + 1] = 1;
} else {
this.words[i + 1]++;
}
}
this.length = Math.max(this.length, i + 1);
return this;
};
// Subtract plain number `num` from `this`
BN.prototype.isubn = function isubn (num) {
assert(typeof num === 'number');
assert(num < 0x4000000);
if (num < 0) return this.iaddn(-num);
if (this.negative !== 0) {
this.negative = 0;
this.iaddn(num);
this.negative = 1;
return this;
}
this.words[0] -= num;
if (this.length === 1 && this.words[0] < 0) {
this.words[0] = -this.words[0];
this.negative = 1;
} else {
// Carry
for (var i = 0; i < this.length && this.words[i] < 0; i++) {
this.words[i] += 0x4000000;
this.words[i + 1] -= 1;
}
}
return this.strip();
};
BN.prototype.addn = function addn (num) {
return this.clone().iaddn(num);
};
BN.prototype.subn = function subn (num) {
return this.clone().isubn(num);
};
BN.prototype.iabs = function iabs () {
this.negative = 0;
return this;
};
BN.prototype.abs = function abs () {
return this.clone().iabs();
};
BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {
var len = num.length + shift;
var i;
this._expand(len);
var w;
var carry = 0;
for (i = 0; i < num.length; i++) {
w = (this.words[i + shift] | 0) + carry;
var right = (num.words[i] | 0) * mul;
w -= right & 0x3ffffff;
carry = (w >> 26) - ((right / 0x4000000) | 0);
this.words[i + shift] = w & 0x3ffffff;
}
for (; i < this.length - shift; i++) {
w = (this.words[i + shift] | 0) + carry;
carry = w >> 26;
this.words[i + shift] = w & 0x3ffffff;
}
if (carry === 0) return this.strip();
// Subtraction overflow
assert(carry === -1);
carry = 0;
for (i = 0; i < this.length; i++) {
w = -(this.words[i] | 0) + carry;
carry = w >> 26;
this.words[i] = w & 0x3ffffff;
}
this.negative = 1;
return this.strip();
};
BN.prototype._wordDiv = function _wordDiv (num, mode) {
var shift = this.length - num.length;
var a = this.clone();
var b = num;
// Normalize
var bhi = b.words[b.length - 1] | 0;
var bhiBits = this._countBits(bhi);
shift = 26 - bhiBits;
if (shift !== 0) {
b = b.ushln(shift);
a.iushln(shift);
bhi = b.words[b.length - 1] | 0;
}
// Initialize quotient
var m = a.length - b.length;
var q;
if (mode !== 'mod') {
q = new BN(null);
q.length = m + 1;
q.words = new Array(q.length);
for (var i = 0; i < q.length; i++) {
q.words[i] = 0;
}
}
var diff = a.clone()._ishlnsubmul(b, 1, m);
if (diff.negative === 0) {
a = diff;
if (q) {
q.words[m] = 1;
}
}
for (var j = m - 1; j >= 0; j--) {
var qj = (a.words[b.length + j] | 0) * 0x4000000 +
(a.words[b.length + j - 1] | 0);
// NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max
// (0x7ffffff)
qj = Math.min((qj / bhi) | 0, 0x3ffffff);
a._ishlnsubmul(b, qj, j);
while (a.negative !== 0) {
qj--;
a.negative = 0;
a._ishlnsubmul(b, 1, j);
if (!a.isZero()) {
a.negative ^= 1;
}
}
if (q) {
q.words[j] = qj;
}
}
if (q) {
q.strip();
}
a.strip();
// Denormalize
if (mode !== 'div' && shift !== 0) {
a.iushrn(shift);
}
return {
div: q || null,
mod: a
};
};
// NOTE: 1) `mode` can be set to `mod` to request mod only,
// to `div` to request div only, or be absent to
// request both div & mod
// 2) `positive` is true if unsigned mod is requested
BN.prototype.divmod = function divmod (num, mode, positive) {
assert(!num.isZero());
if (this.isZero()) {
return {
div: new BN(0),
mod: new BN(0)
};
}
var div, mod, res;
if (this.negative !== 0 && num.negative === 0) {
res = this.neg().divmod(num, mode);
if (mode !== 'mod') {
div = res.div.neg();
}
if (mode !== 'div') {
mod = res.mod.neg();
if (positive && mod.negative !== 0) {
mod.iadd(num);
}
}
return {
div: div,
mod: mod
};
}
if (this.negative === 0 && num.negative !== 0) {
res = this.divmod(num.neg(), mode);
if (mode !== 'mod') {
div = res.div.neg();
}
return {
div: div,
mod: res.mod
};
}
if ((this.negative & num.negative) !== 0) {
res = this.neg().divmod(num.neg(), mode);
if (mode !== 'div') {
mod = res.mod.neg();
if (positive && mod.negative !== 0) {
mod.isub(num);
}
}
return {
div: res.div,
mod: mod
};
}
// Both numbers are positive at this point
// Strip both numbers to approximate shift value
if (num.length > this.length || this.cmp(num) < 0) {
return {
div: new BN(0),
mod: this
};
}
// Very short reduction
if (num.length === 1) {
if (mode === 'div') {
return {
div: this.divn(num.words[0]),
mod: null
};
}
if (mode === 'mod') {
return {
div: null,
mod: new BN(this.modn(num.words[0]))
};
}
return {
div: this.divn(num.words[0]),
mod: new BN(this.modn(num.words[0]))
};
}
return this._wordDiv(num, mode);
};
// Find `this` / `num`
BN.prototype.div = function div (num) {
return this.divmod(num, 'div', false).div;
};
// Find `this` % `num`
BN.prototype.mod = function mod (num) {
return this.divmod(num, 'mod', false).mod;
};
BN.prototype.umod = function umod (num) {
return this.divmod(num, 'mod', true).mod;
};
// Find Round(`this` / `num`)
BN.prototype.divRound = function divRound (num) {
var dm = this.divmod(num);
// Fast case - exact division
if (dm.mod.isZero()) return dm.div;
var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;
var half = num.ushrn(1);
var r2 = num.andln(1);
var cmp = mod.cmp(half);
// Round down
if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;
// Round up
return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);
};
BN.prototype.modn = function modn (num) {
assert(num <= 0x3ffffff);
var p = (1 << 26) % num;
var acc = 0;
for (var i = this.length - 1; i >= 0; i--) {
acc = (p * acc + (this.words[i] | 0)) % num;
}
return acc;
};
// In-place division by number
BN.prototype.idivn = function idivn (num) {
assert(num <= 0x3ffffff);
var carry = 0;
for (var i = this.length - 1; i >= 0; i--) {
var w = (this.words[i] | 0) + carry * 0x4000000;
this.words[i] = (w / num) | 0;
carry = w % num;
}
return this.strip();
};
BN.prototype.divn = function divn (num) {
return this.clone().idivn(num);
};
BN.prototype.egcd = function egcd (p) {
assert(p.negative === 0);
assert(!p.isZero());
var x = this;
var y = p.clone();
if (x.negative !== 0) {
x = x.umod(p);
} else {
x = x.clone();
}
// A * x + B * y = x
var A = new BN(1);
var B = new BN(0);
// C * x + D * y = y
var C = new BN(0);
var D = new BN(1);
var g = 0;
while (x.isEven() && y.isEven()) {
x.iushrn(1);
y.iushrn(1);
++g;
}
var yp = y.clone();
var xp = x.clone();
while (!x.isZero()) {
for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
if (i > 0) {
x.iushrn(i);
while (i-- > 0) {
if (A.isOdd() || B.isOdd()) {
A.iadd(yp);
B.isub(xp);
}
A.iushrn(1);
B.iushrn(1);
}
}
for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
if (j > 0) {
y.iushrn(j);
while (j-- > 0) {
if (C.isOdd() || D.isOdd()) {
C.iadd(yp);
D.isub(xp);
}
C.iushrn(1);
D.iushrn(1);
}
}
if (x.cmp(y) >= 0) {
x.isub(y);
A.isub(C);
B.isub(D);
} else {
y.isub(x);
C.isub(A);
D.isub(B);
}
}
return {
a: C,
b: D,
gcd: y.iushln(g)
};
};
// This is reduced incarnation of the binary EEA
// above, designated to invert members of the
// _prime_ fields F(p) at a maximal speed
BN.prototype._invmp = function _invmp (p) {
assert(p.negative === 0);
assert(!p.isZero());
var a = this;
var b = p.clone();
if (a.negative !== 0) {
a = a.umod(p);
} else {
a = a.clone();
}
var x1 = new BN(1);
var x2 = new BN(0);
var delta = b.clone();
while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {
for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
if (i > 0) {
a.iushrn(i);
while (i-- > 0) {
if (x1.isOdd()) {
x1.iadd(delta);
}
x1.iushrn(1);
}
}
for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
if (j > 0) {
b.iushrn(j);
while (j-- > 0) {
if (x2.isOdd()) {
x2.iadd(delta);
}
x2.iushrn(1);
}
}
if (a.cmp(b) >= 0) {
a.isub(b);
x1.isub(x2);
} else {
b.isub(a);
x2.isub(x1);
}
}
var res;
if (a.cmpn(1) === 0) {
res = x1;
} else {
res = x2;
}
if (res.cmpn(0) < 0) {
res.iadd(p);
}
return res;
};
BN.prototype.gcd = function gcd (num) {
if (this.isZero()) return num.abs();
if (num.isZero()) return this.abs();
var a = this.clone();
var b = num.clone();
a.negative = 0;
b.negative = 0;
// Remove common factor of two
for (var shift = 0; a.isEven() && b.isEven(); shift++) {
a.iushrn(1);
b.iushrn(1);
}
do {
while (a.isEven()) {
a.iushrn(1);
}
while (b.isEven()) {
b.iushrn(1);
}
var r = a.cmp(b);
if (r < 0) {
// Swap `a` and `b` to make `a` always bigger than `b`
var t = a;
a = b;
b = t;
} else if (r === 0 || b.cmpn(1) === 0) {
break;
}
a.isub(b);
} while (true);
return b.iushln(shift);
};
// Invert number in the field F(num)
BN.prototype.invm = function invm (num) {
return this.egcd(num).a.umod(num);
};
BN.prototype.isEven = function isEven () {
return (this.words[0] & 1) === 0;
};
BN.prototype.isOdd = function isOdd () {
return (this.words[0] & 1) === 1;
};
// And first word and num
BN.prototype.andln = function andln (num) {
return this.words[0] & num;
};
// Increment at the bit position in-line
BN.prototype.bincn = function bincn (bit) {
assert(typeof bit === 'number');
var r = bit % 26;
var s = (bit - r) / 26;
var q = 1 << r;
// Fast case: bit is much higher than all existing words
if (this.length <= s) {
this._expand(s + 1);
this.words[s] |= q;
return this;
}
// Add bit and propagate, if needed
var carry = q;
for (var i = s; carry !== 0 && i < this.length; i++) {
var w = this.words[i] | 0;
w += carry;
carry = w >>> 26;
w &= 0x3ffffff;
this.words[i] = w;
}
if (carry !== 0) {
this.words[i] = carry;
this.length++;
}
return this;
};
BN.prototype.isZero = function isZero () {
return this.length === 1 && this.words[0] === 0;
};
BN.prototype.cmpn = function cmpn (num) {
var negative = num < 0;
if (this.negative !== 0 && !negative) return -1;
if (this.negative === 0 && negative) return 1;
this.strip();
var res;
if (this.length > 1) {
res = 1;
} else {
if (negative) {
num = -num;
}
assert(num <= 0x3ffffff, 'Number is too big');
var w = this.words[0] | 0;
res = w === num ? 0 : w < num ? -1 : 1;
}
if (this.negative !== 0) return -res | 0;
return res;
};
// Compare two numbers and return:
// 1 - if `this` > `num`
// 0 - if `this` == `num`
// -1 - if `this` < `num`
BN.prototype.cmp = function cmp (num) {
if (this.negative !== 0 && num.negative === 0) return -1;
if (this.negative === 0 && num.negative !== 0) return 1;
var res = this.ucmp(num);
if (this.negative !== 0) return -res | 0;
return res;
};
// Unsigned comparison
BN.prototype.ucmp = function ucmp (num) {
// At this point both numbers have the same sign
if (this.length > num.length) return 1;
if (this.length < num.length) return -1;
var res = 0;
for (var i = this.length - 1; i >= 0; i--) {
var a = this.words[i] | 0;
var b = num.words[i] | 0;
if (a === b) continue;
if (a < b) {
res = -1;
} else if (a > b) {
res = 1;
}
break;
}
return res;
};
BN.prototype.gtn = function gtn (num) {
return this.cmpn(num) === 1;
};
BN.prototype.gt = function gt (num) {
return this.cmp(num) === 1;
};
BN.prototype.gten = function gten (num) {
return this.cmpn(num) >= 0;
};
BN.prototype.gte = function gte (num) {
return this.cmp(num) >= 0;
};
BN.prototype.ltn = function ltn (num) {
return this.cmpn(num) === -1;
};
BN.prototype.lt = function lt (num) {
return this.cmp(num) === -1;
};
BN.prototype.lten = function lten (num) {
return this.cmpn(num) <= 0;
};
BN.prototype.lte = function lte (num) {
return this.cmp(num) <= 0;
};
BN.prototype.eqn = function eqn (num) {
return this.cmpn(num) === 0;
};
BN.prototype.eq = function eq (num) {
return this.cmp(num) === 0;
};
//
// A reduce context, could be using montgomery or something better, depending
// on the `m` itself.
//
BN.red = function red (num) {
return new Red(num);
};
BN.prototype.toRed = function toRed (ctx) {
assert(!this.red, 'Already a number in reduction context');
assert(this.negative === 0, 'red works only with positives');
return ctx.convertTo(this)._forceRed(ctx);
};
BN.prototype.fromRed = function fromRed () {
assert(this.red, 'fromRed works only with numbers in reduction context');
return this.red.convertFrom(this);
};
BN.prototype._forceRed = function _forceRed (ctx) {
this.red = ctx;
return this;
};
BN.prototype.forceRed = function forceRed (ctx) {
assert(!this.red, 'Already a number in reduction context');
return this._forceRed(ctx);
};
BN.prototype.redAdd = function redAdd (num) {
assert(this.red, 'redAdd works only with red numbers');
return this.red.add(this, num);
};
BN.prototype.redIAdd = function redIAdd (num) {
assert(this.red, 'redIAdd works only with red numbers');
return this.red.iadd(this, num);
};
BN.prototype.redSub = function redSub (num) {
assert(this.red, 'redSub works only with red numbers');
return this.red.sub(this, num);
};
BN.prototype.redISub = function redISub (num) {
assert(this.red, 'redISub works only with red numbers');
return this.red.isub(this, num);
};
BN.prototype.redShl = function redShl (num) {
assert(this.red, 'redShl works only with red numbers');
return this.red.shl(this, num);
};
BN.prototype.redMul = function redMul (num) {
assert(this.red, 'redMul works only with red numbers');
this.red._verify2(this, num);
return this.red.mul(this, num);
};
BN.prototype.redIMul = function redIMul (num) {
assert(this.red, 'redMul works only with red numbers');
this.red._verify2(this, num);
return this.red.imul(this, num);
};
BN.prototype.redSqr = function redSqr () {
assert(this.red, 'redSqr works only with red numbers');
this.red._verify1(this);
return this.red.sqr(this);
};
BN.prototype.redISqr = function redISqr () {
assert(this.red, 'redISqr works only with red numbers');
this.red._verify1(this);
return this.red.isqr(this);
};
// Square root over p
BN.prototype.redSqrt = function redSqrt () {
assert(this.red, 'redSqrt works only with red numbers');
this.red._verify1(this);
return this.red.sqrt(this);
};
BN.prototype.redInvm = function redInvm () {
assert(this.red, 'redInvm works only with red numbers');
this.red._verify1(this);
return this.red.invm(this);
};
// Return negative clone of `this` % `red modulo`
BN.prototype.redNeg = function redNeg () {
assert(this.red, 'redNeg works only with red numbers');
this.red._verify1(this);
return this.red.neg(this);
};
BN.prototype.redPow = function redPow (num) {
assert(this.red && !num.red, 'redPow(normalNum)');
this.red._verify1(this);
return this.red.pow(this, num);
};
// Prime numbers with efficient reduction
var primes = {
k256: null,
p224: null,
p192: null,
p25519: null
};
// Pseudo-Mersenne prime
function MPrime (name, p) {
// P = 2 ^ N - K
this.name = name;
this.p = new BN(p, 16);
this.n = this.p.bitLength();
this.k = new BN(1).iushln(this.n).isub(this.p);
this.tmp = this._tmp();
}
MPrime.prototype._tmp = function _tmp () {
var tmp = new BN(null);
tmp.words = new Array(Math.ceil(this.n / 13));
return tmp;
};
MPrime.prototype.ireduce = function ireduce (num) {
// Assumes that `num` is less than `P^2`
// num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)
var r = num;
var rlen;
do {
this.split(r, this.tmp);
r = this.imulK(r);
r = r.iadd(this.tmp);
rlen = r.bitLength();
} while (rlen > this.n);
var cmp = rlen < this.n ? -1 : r.ucmp(this.p);
if (cmp === 0) {
r.words[0] = 0;
r.length = 1;
} else if (cmp > 0) {
r.isub(this.p);
} else {
if (r.strip !== undefined) {
// r is BN v4 instance
r.strip();
} else {
// r is BN v5 instance
r._strip();
}
}
return r;
};
MPrime.prototype.split = function split (input, out) {
input.iushrn(this.n, 0, out);
};
MPrime.prototype.imulK = function imulK (num) {
return num.imul(this.k);
};
function K256 () {
MPrime.call(
this,
'k256',
'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');
}
inherits(K256, MPrime);
K256.prototype.split = function split (input, output) {
// 256 = 9 * 26 + 22
var mask = 0x3fffff;
var outLen = Math.min(input.length, 9);
for (var i = 0; i < outLen; i++) {
output.words[i] = input.words[i];
}
output.length = outLen;
if (input.length <= 9) {
input.words[0] = 0;
input.length = 1;
return;
}
// Shift by 9 limbs
var prev = input.words[9];
output.words[output.length++] = prev & mask;
for (i = 10; i < input.length; i++) {
var next = input.words[i] | 0;
input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);
prev = next;
}
prev >>>= 22;
input.words[i - 10] = prev;
if (prev === 0 && input.length > 10) {
input.length -= 10;
} else {
input.length -= 9;
}
};
K256.prototype.imulK = function imulK (num) {
// K = 0x1000003d1 = [ 0x40, 0x3d1 ]
num.words[num.length] = 0;
num.words[num.length + 1] = 0;
num.length += 2;
// bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390
var lo = 0;
for (var i = 0; i < num.length; i++) {
var w = num.words[i] | 0;
lo += w * 0x3d1;
num.words[i] = lo & 0x3ffffff;
lo = w * 0x40 + ((lo / 0x4000000) | 0);
}
// Fast length reduction
if (num.words[num.length - 1] === 0) {
num.length--;
if (num.words[num.length - 1] === 0) {
num.length--;
}
}
return num;
};
function P224 () {
MPrime.call(
this,
'p224',
'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');
}
inherits(P224, MPrime);
function P192 () {
MPrime.call(
this,
'p192',
'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');
}
inherits(P192, MPrime);
function P25519 () {
// 2 ^ 255 - 19
MPrime.call(
this,
'25519',
'7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');
}
inherits(P25519, MPrime);
P25519.prototype.imulK = function imulK (num) {
// K = 0x13
var carry = 0;
for (var i = 0; i < num.length; i++) {
var hi = (num.words[i] | 0) * 0x13 + carry;
var lo = hi & 0x3ffffff;
hi >>>= 26;
num.words[i] = lo;
carry = hi;
}
if (carry !== 0) {
num.words[num.length++] = carry;
}
return num;
};
// Exported mostly for testing purposes, use plain name instead
BN._prime = function prime (name) {
// Cached version of prime
if (primes[name]) return primes[name];
var prime;
if (name === 'k256') {
prime = new K256();
} else if (name === 'p224') {
prime = new P224();
} else if (name === 'p192') {
prime = new P192();
} else if (name === 'p25519') {
prime = new P25519();
} else {
throw new Error('Unknown prime ' + name);
}
primes[name] = prime;
return prime;
};
//
// Base reduction engine
//
function Red (m) {
if (typeof m === 'string') {
var prime = BN._prime(m);
this.m = prime.p;
this.prime = prime;
} else {
assert(m.gtn(1), 'modulus must be greater than 1');
this.m = m;
this.prime = null;
}
}
Red.prototype._verify1 = function _verify1 (a) {
assert(a.negative === 0, 'red works only with positives');
assert(a.red, 'red works only with red numbers');
};
Red.prototype._verify2 = function _verify2 (a, b) {
assert((a.negative | b.negative) === 0, 'red works only with positives');
assert(a.red && a.red === b.red,
'red works only with red numbers');
};
Red.prototype.imod = function imod (a) {
if (this.prime) return this.prime.ireduce(a)._forceRed(this);
return a.umod(this.m)._forceRed(this);
};
Red.prototype.neg = function neg (a) {
if (a.isZero()) {
return a.clone();
}
return this.m.sub(a)._forceRed(this);
};
Red.prototype.add = function add (a, b) {
this._verify2(a, b);
var res = a.add(b);
if (res.cmp(this.m) >= 0) {
res.isub(this.m);
}
return res._forceRed(this);
};
Red.prototype.iadd = function iadd (a, b) {
this._verify2(a, b);
var res = a.iadd(b);
if (res.cmp(this.m) >= 0) {
res.isub(this.m);
}
return res;
};
Red.prototype.sub = function sub (a, b) {
this._verify2(a, b);
var res = a.sub(b);
if (res.cmpn(0) < 0) {
res.iadd(this.m);
}
return res._forceRed(this);
};
Red.prototype.isub = function isub (a, b) {
this._verify2(a, b);
var res = a.isub(b);
if (res.cmpn(0) < 0) {
res.iadd(this.m);
}
return res;
};
Red.prototype.shl = function shl (a, num) {
this._verify1(a);
return this.imod(a.ushln(num));
};
Red.prototype.imul = function imul (a, b) {
this._verify2(a, b);
return this.imod(a.imul(b));
};
Red.prototype.mul = function mul (a, b) {
this._verify2(a, b);
return this.imod(a.mul(b));
};
Red.prototype.isqr = function isqr (a) {
return this.imul(a, a.clone());
};
Red.prototype.sqr = function sqr (a) {
return this.mul(a, a);
};
Red.prototype.sqrt = function sqrt (a) {
if (a.isZero()) return a.clone();
var mod3 = this.m.andln(3);
assert(mod3 % 2 === 1);
// Fast case
if (mod3 === 3) {
var pow = this.m.add(new BN(1)).iushrn(2);
return this.pow(a, pow);
}
// Tonelli-Shanks algorithm (Totally unoptimized and slow)
//
// Find Q and S, that Q * 2 ^ S = (P - 1)
var q = this.m.subn(1);
var s = 0;
while (!q.isZero() && q.andln(1) === 0) {
s++;
q.iushrn(1);
}
assert(!q.isZero());
var one = new BN(1).toRed(this);
var nOne = one.redNeg();
// Find quadratic non-residue
// NOTE: Max is such because of generalized Riemann hypothesis.
var lpow = this.m.subn(1).iushrn(1);
var z = this.m.bitLength();
z = new BN(2 * z * z).toRed(this);
while (this.pow(z, lpow).cmp(nOne) !== 0) {
z.redIAdd(nOne);
}
var c = this.pow(z, q);
var r = this.pow(a, q.addn(1).iushrn(1));
var t = this.pow(a, q);
var m = s;
while (t.cmp(one) !== 0) {
var tmp = t;
for (var i = 0; tmp.cmp(one) !== 0; i++) {
tmp = tmp.redSqr();
}
assert(i < m);
var b = this.pow(c, new BN(1).iushln(m - i - 1));
r = r.redMul(b);
c = b.redSqr();
t = t.redMul(c);
m = i;
}
return r;
};
Red.prototype.invm = function invm (a) {
var inv = a._invmp(this.m);
if (inv.negative !== 0) {
inv.negative = 0;
return this.imod(inv).redNeg();
} else {
return this.imod(inv);
}
};
Red.prototype.pow = function pow (a, num) {
if (num.isZero()) return new BN(1).toRed(this);
if (num.cmpn(1) === 0) return a.clone();
var windowSize = 4;
var wnd = new Array(1 << windowSize);
wnd[0] = new BN(1).toRed(this);
wnd[1] = a;
for (var i = 2; i < wnd.length; i++) {
wnd[i] = this.mul(wnd[i - 1], a);
}
var res = wnd[0];
var current = 0;
var currentLen = 0;
var start = num.bitLength() % 26;
if (start === 0) {
start = 26;
}
for (i = num.length - 1; i >= 0; i--) {
var word = num.words[i];
for (var j = start - 1; j >= 0; j--) {
var bit = (word >> j) & 1;
if (res !== wnd[0]) {
res = this.sqr(res);
}
if (bit === 0 && current === 0) {
currentLen = 0;
continue;
}
current <<= 1;
current |= bit;
currentLen++;
if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;
res = this.mul(res, wnd[current]);
currentLen = 0;
current = 0;
}
start = 26;
}
return res;
};
Red.prototype.convertTo = function convertTo (num) {
var r = num.umod(this.m);
return r === num ? r.clone() : r;
};
Red.prototype.convertFrom = function convertFrom (num) {
var res = num.clone();
res.red = null;
return res;
};
//
// Montgomery method engine
//
BN.mont = function mont (num) {
return new Mont(num);
};
function Mont (m) {
Red.call(this, m);
this.shift = this.m.bitLength();
if (this.shift % 26 !== 0) {
this.shift += 26 - (this.shift % 26);
}
this.r = new BN(1).iushln(this.shift);
this.r2 = this.imod(this.r.sqr());
this.rinv = this.r._invmp(this.m);
this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);
this.minv = this.minv.umod(this.r);
this.minv = this.r.sub(this.minv);
}
inherits(Mont, Red);
Mont.prototype.convertTo = function convertTo (num) {
return this.imod(num.ushln(this.shift));
};
Mont.prototype.convertFrom = function convertFrom (num) {
var r = this.imod(num.mul(this.rinv));
r.red = null;
return r;
};
Mont.prototype.imul = function imul (a, b) {
if (a.isZero() || b.isZero()) {
a.words[0] = 0;
a.length = 1;
return a;
}
var t = a.imul(b);
var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
var u = t.isub(c).iushrn(this.shift);
var res = u;
if (u.cmp(this.m) >= 0) {
res = u.isub(this.m);
} else if (u.cmpn(0) < 0) {
res = u.iadd(this.m);
}
return res._forceRed(this);
};
Mont.prototype.mul = function mul (a, b) {
if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);
var t = a.mul(b);
var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
var u = t.isub(c).iushrn(this.shift);
var res = u;
if (u.cmp(this.m) >= 0) {
res = u.isub(this.m);
} else if (u.cmpn(0) < 0) {
res = u.iadd(this.m);
}
return res._forceRed(this);
};
Mont.prototype.invm = function invm (a) {
// (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R
var res = this.imod(a._invmp(this.m).mul(this.r2));
return res._forceRed(this);
};
})( false || module, this);
/***/ }),
/***/ 7362:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var parseKeys = __webpack_require__(8170)
var mgf = __webpack_require__(8206)
var xor = __webpack_require__(2061)
var BN = __webpack_require__(2509)
var crt = __webpack_require__(7332)
var createHash = __webpack_require__(7108)
var withPublic = __webpack_require__(9247)
var Buffer = (__webpack_require__(2861).Buffer)
module.exports = function privateDecrypt (privateKey, enc, reverse) {
var padding
if (privateKey.padding) {
padding = privateKey.padding
} else if (reverse) {
padding = 1
} else {
padding = 4
}
var key = parseKeys(privateKey)
var k = key.modulus.byteLength()
if (enc.length > k || new BN(enc).cmp(key.modulus) >= 0) {
throw new Error('decryption error')
}
var msg
if (reverse) {
msg = withPublic(new BN(enc), key)
} else {
msg = crt(enc, key)
}
var zBuffer = Buffer.alloc(k - msg.length)
msg = Buffer.concat([zBuffer, msg], k)
if (padding === 4) {
return oaep(key, msg)
} else if (padding === 1) {
return pkcs1(key, msg, reverse)
} else if (padding === 3) {
return msg
} else {
throw new Error('unknown padding')
}
}
function oaep (key, msg) {
var k = key.modulus.byteLength()
var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()
var hLen = iHash.length
if (msg[0] !== 0) {
throw new Error('decryption error')
}
var maskedSeed = msg.slice(1, hLen + 1)
var maskedDb = msg.slice(hLen + 1)
var seed = xor(maskedSeed, mgf(maskedDb, hLen))
var db = xor(maskedDb, mgf(seed, k - hLen - 1))
if (compare(iHash, db.slice(0, hLen))) {
throw new Error('decryption error')
}
var i = hLen
while (db[i] === 0) {
i++
}
if (db[i++] !== 1) {
throw new Error('decryption error')
}
return db.slice(i)
}
function pkcs1 (key, msg, reverse) {
var p1 = msg.slice(0, 2)
var i = 2
var status = 0
while (msg[i++] !== 0) {
if (i >= msg.length) {
status++
break
}
}
var ps = msg.slice(2, i - 1)
if ((p1.toString('hex') !== '0002' && !reverse) || (p1.toString('hex') !== '0001' && reverse)) {
status++
}
if (ps.length < 8) {
status++
}
if (status) {
throw new Error('decryption error')
}
return msg.slice(i)
}
function compare (a, b) {
a = Buffer.from(a)
b = Buffer.from(b)
var dif = 0
var len = a.length
if (a.length !== b.length) {
dif++
len = Math.min(a.length, b.length)
}
var i = -1
while (++i < len) {
dif += (a[i] ^ b[i])
}
return dif
}
/***/ }),
/***/ 8902:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var parseKeys = __webpack_require__(8170)
var randomBytes = __webpack_require__(3209)
var createHash = __webpack_require__(7108)
var mgf = __webpack_require__(8206)
var xor = __webpack_require__(2061)
var BN = __webpack_require__(2509)
var withPublic = __webpack_require__(9247)
var crt = __webpack_require__(7332)
var Buffer = (__webpack_require__(2861).Buffer)
module.exports = function publicEncrypt (publicKey, msg, reverse) {
var padding
if (publicKey.padding) {
padding = publicKey.padding
} else if (reverse) {
padding = 1
} else {
padding = 4
}
var key = parseKeys(publicKey)
var paddedMsg
if (padding === 4) {
paddedMsg = oaep(key, msg)
} else if (padding === 1) {
paddedMsg = pkcs1(key, msg, reverse)
} else if (padding === 3) {
paddedMsg = new BN(msg)
if (paddedMsg.cmp(key.modulus) >= 0) {
throw new Error('data too long for modulus')
}
} else {
throw new Error('unknown padding')
}
if (reverse) {
return crt(paddedMsg, key)
} else {
return withPublic(paddedMsg, key)
}
}
function oaep (key, msg) {
var k = key.modulus.byteLength()
var mLen = msg.length
var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()
var hLen = iHash.length
var hLen2 = 2 * hLen
if (mLen > k - hLen2 - 2) {
throw new Error('message too long')
}
var ps = Buffer.alloc(k - mLen - hLen2 - 2)
var dblen = k - hLen - 1
var seed = randomBytes(hLen)
var maskedDb = xor(Buffer.concat([iHash, ps, Buffer.alloc(1, 1), msg], dblen), mgf(seed, dblen))
var maskedSeed = xor(seed, mgf(maskedDb, hLen))
return new BN(Buffer.concat([Buffer.alloc(1), maskedSeed, maskedDb], k))
}
function pkcs1 (key, msg, reverse) {
var mLen = msg.length
var k = key.modulus.byteLength()
if (mLen > k - 11) {
throw new Error('message too long')
}
var ps
if (reverse) {
ps = Buffer.alloc(k - mLen - 3, 0xff)
} else {
ps = nonZero(k - mLen - 3)
}
return new BN(Buffer.concat([Buffer.from([0, reverse ? 1 : 2]), ps, Buffer.alloc(1), msg], k))
}
function nonZero (len) {
var out = Buffer.allocUnsafe(len)
var i = 0
var cache = randomBytes(len * 2)
var cur = 0
var num
while (i < len) {
if (cur === cache.length) {
cache = randomBytes(len * 2)
cur = 0
}
num = cache[cur++]
if (num) {
out[i++] = num
}
}
return out
}
/***/ }),
/***/ 9247:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var BN = __webpack_require__(2509)
var Buffer = (__webpack_require__(2861).Buffer)
function withPublic (paddedMsg, key) {
return Buffer.from(paddedMsg
.toRed(BN.mont(key.modulus))
.redPow(new BN(key.publicExponent))
.fromRed()
.toArray())
}
module.exports = withPublic
/***/ }),
/***/ 2061:
/***/ ((module) => {
module.exports = function xor (a, b) {
var len = a.length
var i = -1
while (++i < len) {
a[i] ^= b[i]
}
return a
}
/***/ }),
/***/ 3209:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
// limit of Crypto.getRandomValues()
// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues
var MAX_BYTES = 65536
// Node supports requesting up to this number of bytes
// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48
var MAX_UINT32 = 4294967295
function oldBrowser () {
throw new Error('Secure random number generation is not supported by this browser.\nUse Chrome, Firefox or Internet Explorer 11')
}
var Buffer = (__webpack_require__(2861).Buffer)
var crypto = __webpack_require__.g.crypto || __webpack_require__.g.msCrypto
if (crypto && crypto.getRandomValues) {
module.exports = randomBytes
} else {
module.exports = oldBrowser
}
function randomBytes (size, cb) {
// phantomjs needs to throw
if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')
var bytes = Buffer.allocUnsafe(size)
if (size > 0) { // getRandomValues fails on IE if size == 0
if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues
// can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues
for (var generated = 0; generated < size; generated += MAX_BYTES) {
// buffer.slice automatically checks if the end is past the end of
// the buffer so we don't have to here
crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))
}
} else {
crypto.getRandomValues(bytes)
}
}
if (typeof cb === 'function') {
return process.nextTick(function () {
cb(null, bytes)
})
}
return bytes
}
/***/ }),
/***/ 6983:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
function oldBrowser () {
throw new Error('secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11')
}
var safeBuffer = __webpack_require__(2861)
var randombytes = __webpack_require__(3209)
var Buffer = safeBuffer.Buffer
var kBufferMaxLength = safeBuffer.kMaxLength
var crypto = __webpack_require__.g.crypto || __webpack_require__.g.msCrypto
var kMaxUint32 = Math.pow(2, 32) - 1
function assertOffset (offset, length) {
if (typeof offset !== 'number' || offset !== offset) { // eslint-disable-line no-self-compare
throw new TypeError('offset must be a number')
}
if (offset > kMaxUint32 || offset < 0) {
throw new TypeError('offset must be a uint32')
}
if (offset > kBufferMaxLength || offset > length) {
throw new RangeError('offset out of range')
}
}
function assertSize (size, offset, length) {
if (typeof size !== 'number' || size !== size) { // eslint-disable-line no-self-compare
throw new TypeError('size must be a number')
}
if (size > kMaxUint32 || size < 0) {
throw new TypeError('size must be a uint32')
}
if (size + offset > length || size > kBufferMaxLength) {
throw new RangeError('buffer too small')
}
}
if ((crypto && crypto.getRandomValues) || !process.browser) {
exports.randomFill = randomFill
exports.randomFillSync = randomFillSync
} else {
exports.randomFill = oldBrowser
exports.randomFillSync = oldBrowser
}
function randomFill (buf, offset, size, cb) {
if (!Buffer.isBuffer(buf) && !(buf instanceof __webpack_require__.g.Uint8Array)) {
throw new TypeError('"buf" argument must be a Buffer or Uint8Array')
}
if (typeof offset === 'function') {
cb = offset
offset = 0
size = buf.length
} else if (typeof size === 'function') {
cb = size
size = buf.length - offset
} else if (typeof cb !== 'function') {
throw new TypeError('"cb" argument must be a function')
}
assertOffset(offset, buf.length)
assertSize(size, offset, buf.length)
return actualFill(buf, offset, size, cb)
}
function actualFill (buf, offset, size, cb) {
if (process.browser) {
var ourBuf = buf.buffer
var uint = new Uint8Array(ourBuf, offset, size)
crypto.getRandomValues(uint)
if (cb) {
process.nextTick(function () {
cb(null, buf)
})
return
}
return buf
}
if (cb) {
randombytes(size, function (err, bytes) {
if (err) {
return cb(err)
}
bytes.copy(buf, offset)
cb(null, buf)
})
return
}
var bytes = randombytes(size)
bytes.copy(buf, offset)
return buf
}
function randomFillSync (buf, offset, size) {
if (typeof offset === 'undefined') {
offset = 0
}
if (!Buffer.isBuffer(buf) && !(buf instanceof __webpack_require__.g.Uint8Array)) {
throw new TypeError('"buf" argument must be a Buffer or Uint8Array')
}
assertOffset(offset, buf.length)
if (size === undefined) size = buf.length - offset
assertSize(size, offset, buf.length)
return actualFill(buf, offset, size)
}
/***/ }),
/***/ 6048:
/***/ ((module) => {
"use strict";
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
var codes = {};
function createErrorType(code, message, Base) {
if (!Base) {
Base = Error;
}
function getMessage(arg1, arg2, arg3) {
if (typeof message === 'string') {
return message;
} else {
return message(arg1, arg2, arg3);
}
}
var NodeError =
/*#__PURE__*/
function (_Base) {
_inheritsLoose(NodeError, _Base);
function NodeError(arg1, arg2, arg3) {
return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;
}
return NodeError;
}(Base);
NodeError.prototype.name = Base.name;
NodeError.prototype.code = code;
codes[code] = NodeError;
} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js
function oneOf(expected, thing) {
if (Array.isArray(expected)) {
var len = expected.length;
expected = expected.map(function (i) {
return String(i);
});
if (len > 2) {
return "one of ".concat(thing, " ").concat(expected.slice(0, len - 1).join(', '), ", or ") + expected[len - 1];
} else if (len === 2) {
return "one of ".concat(thing, " ").concat(expected[0], " or ").concat(expected[1]);
} else {
return "of ".concat(thing, " ").concat(expected[0]);
}
} else {
return "of ".concat(thing, " ").concat(String(expected));
}
} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith
function startsWith(str, search, pos) {
return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;
} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith
function endsWith(str, search, this_len) {
if (this_len === undefined || this_len > str.length) {
this_len = str.length;
}
return str.substring(this_len - search.length, this_len) === search;
} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes
function includes(str, search, start) {
if (typeof start !== 'number') {
start = 0;
}
if (start + search.length > str.length) {
return false;
} else {
return str.indexOf(search, start) !== -1;
}
}
createErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {
return 'The value "' + value + '" is invalid for option "' + name + '"';
}, TypeError);
createErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {
// determiner: 'must be' or 'must not be'
var determiner;
if (typeof expected === 'string' && startsWith(expected, 'not ')) {
determiner = 'must not be';
expected = expected.replace(/^not /, '');
} else {
determiner = 'must be';
}
var msg;
if (endsWith(name, ' argument')) {
// For cases like 'first argument'
msg = "The ".concat(name, " ").concat(determiner, " ").concat(oneOf(expected, 'type'));
} else {
var type = includes(name, '.') ? 'property' : 'argument';
msg = "The \"".concat(name, "\" ").concat(type, " ").concat(determiner, " ").concat(oneOf(expected, 'type'));
}
msg += ". Received type ".concat(typeof actual);
return msg;
}, TypeError);
createErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');
createErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {
return 'The ' + name + ' method is not implemented';
});
createErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');
createErrorType('ERR_STREAM_DESTROYED', function (name) {
return 'Cannot call ' + name + ' after a stream was destroyed';
});
createErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');
createErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');
createErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');
createErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);
createErrorType('ERR_UNKNOWN_ENCODING', function (arg) {
return 'Unknown encoding: ' + arg;
}, TypeError);
createErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');
module.exports.F = codes;
/***/ }),
/***/ 5382:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
// Copyright Joyent, Inc. and other Node contributors.
//
// 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.
// a duplex stream is just a stream that is both readable and writable.
// Since JS doesn't have multiple prototypal inheritance, this class
// prototypally inherits from Readable, and then parasitically from
// Writable.
/*<replacement>*/
var objectKeys = Object.keys || function (obj) {
var keys = [];
for (var key in obj) keys.push(key);
return keys;
};
/*</replacement>*/
module.exports = Duplex;
var Readable = __webpack_require__(5412);
var Writable = __webpack_require__(6708);
__webpack_require__(6698)(Duplex, Readable);
{
// Allow the keys array to be GC'ed.
var keys = objectKeys(Writable.prototype);
for (var v = 0; v < keys.length; v++) {
var method = keys[v];
if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
}
}
function Duplex(options) {
if (!(this instanceof Duplex)) return new Duplex(options);
Readable.call(this, options);
Writable.call(this, options);
this.allowHalfOpen = true;
if (options) {
if (options.readable === false) this.readable = false;
if (options.writable === false) this.writable = false;
if (options.allowHalfOpen === false) {
this.allowHalfOpen = false;
this.once('end', onend);
}
}
}
Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', {
// making it explicit this property is not enumerable
// because otherwise some prototype manipulation in
// userland will fail
enumerable: false,
get: function get() {
return this._writableState.highWaterMark;
}
});
Object.defineProperty(Duplex.prototype, 'writableBuffer', {
// making it explicit this property is not enumerable
// because otherwise some prototype manipulation in
// userland will fail
enumerable: false,
get: function get() {
return this._writableState && this._writableState.getBuffer();
}
});
Object.defineProperty(Duplex.prototype, 'writableLength', {
// making it explicit this property is not enumerable
// because otherwise some prototype manipulation in
// userland will fail
enumerable: false,
get: function get() {
return this._writableState.length;
}
});
// the no-half-open enforcer
function onend() {
// If the writable side ended, then we're ok.
if (this._writableState.ended) return;
// no more data can be written.
// But allow more writes to happen in this tick.
process.nextTick(onEndNT, this);
}
function onEndNT(self) {
self.end();
}
Object.defineProperty(Duplex.prototype, 'destroyed', {
// making it explicit this property is not enumerable
// because otherwise some prototype manipulation in
// userland will fail
enumerable: false,
get: function get() {
if (this._readableState === undefined || this._writableState === undefined) {
return false;
}
return this._readableState.destroyed && this._writableState.destroyed;
},
set: function set(value) {
// we ignore the value if the stream
// has not been initialized yet
if (this._readableState === undefined || this._writableState === undefined) {
return;
}
// backward compatibility, the user is explicitly
// managing destroyed
this._readableState.destroyed = value;
this._writableState.destroyed = value;
}
});
/***/ }),
/***/ 3600:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
// Copyright Joyent, Inc. and other Node contributors.
//
// 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.
// a passthrough stream.
// basically just the most minimal sort of Transform stream.
// Every written chunk gets output as-is.
module.exports = PassThrough;
var Transform = __webpack_require__(4610);
__webpack_require__(6698)(PassThrough, Transform);
function PassThrough(options) {
if (!(this instanceof PassThrough)) return new PassThrough(options);
Transform.call(this, options);
}
PassThrough.prototype._transform = function (chunk, encoding, cb) {
cb(null, chunk);
};
/***/ }),
/***/ 5412:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
// Copyright Joyent, Inc. and other Node contributors.
//
// 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.
module.exports = Readable;
/*<replacement>*/
var Duplex;
/*</replacement>*/
Readable.ReadableState = ReadableState;
/*<replacement>*/
var EE = (__webpack_require__(7007).EventEmitter);
var EElistenerCount = function EElistenerCount(emitter, type) {
return emitter.listeners(type).length;
};
/*</replacement>*/
/*<replacement>*/
var Stream = __webpack_require__(345);
/*</replacement>*/
var Buffer = (__webpack_require__(8287).Buffer);
var OurUint8Array = (typeof __webpack_require__.g !== 'undefined' ? __webpack_require__.g : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};
function _uint8ArrayToBuffer(chunk) {
return Buffer.from(chunk);
}
function _isUint8Array(obj) {
return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
}
/*<replacement>*/
var debugUtil = __webpack_require__(9838);
var debug;
if (debugUtil && debugUtil.debuglog) {
debug = debugUtil.debuglog('stream');
} else {
debug = function debug() {};
}
/*</replacement>*/
var BufferList = __webpack_require__(2726);
var destroyImpl = __webpack_require__(5896);
var _require = __webpack_require__(5291),
getHighWaterMark = _require.getHighWaterMark;
var _require$codes = (__webpack_require__(6048)/* .codes */ .F),
ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,
ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,
ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,
ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;
// Lazy loaded to improve the startup performance.
var StringDecoder;
var createReadableStreamAsyncIterator;
var from;
__webpack_require__(6698)(Readable, Stream);
var errorOrDestroy = destroyImpl.errorOrDestroy;
var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];
function prependListener(emitter, event, fn) {
// Sadly this is not cacheable as some libraries bundle their own
// event emitter implementation with them.
if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);
// This is a hack to make sure that our error handler is attached before any
// userland ones. NEVER DO THIS. This is here only because this code needs
// to continue to work with older versions of Node.js that do not include
// the prependListener() method. The goal is to eventually remove this hack.
if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];
}
function ReadableState(options, stream, isDuplex) {
Duplex = Duplex || __webpack_require__(5382);
options = options || {};
// Duplex streams are both readable and writable, but share
// the same options object.
// However, some cases require setting options to different
// values for the readable and the writable sides of the duplex stream.
// These options can be provided separately as readableXXX and writableXXX.
if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;
// object stream flag. Used to make read(n) ignore n and to
// make all the buffer merging and length checks go away
this.objectMode = !!options.objectMode;
if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
// the point at which it stops calling _read() to fill the buffer
// Note: 0 is a valid value, means "don't call _read preemptively ever"
this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);
// A linked list is used to store data chunks instead of an array because the
// linked list can remove elements from the beginning faster than
// array.shift()
this.buffer = new BufferList();
this.length = 0;
this.pipes = null;
this.pipesCount = 0;
this.flowing = null;
this.ended = false;
this.endEmitted = false;
this.reading = false;
// a flag to be able to tell if the event 'readable'/'data' is emitted
// immediately, or on a later tick. We set this to true at first, because
// any actions that shouldn't happen until "later" should generally also
// not happen before the first read call.
this.sync = true;
// whenever we return null, then we set a flag to say
// that we're awaiting a 'readable' event emission.
this.needReadable = false;
this.emittedReadable = false;
this.readableListening = false;
this.resumeScheduled = false;
this.paused = true;
// Should close be emitted on destroy. Defaults to true.
this.emitClose = options.emitClose !== false;
// Should .destroy() be called after 'end' (and potentially 'finish')
this.autoDestroy = !!options.autoDestroy;
// has it been destroyed
this.destroyed = false;
// Crypto is kind of old and crusty. Historically, its default string
// encoding is 'binary' so we have to make this configurable.
// Everything else in the universe uses 'utf8', though.
this.defaultEncoding = options.defaultEncoding || 'utf8';
// the number of writers that are awaiting a drain event in .pipe()s
this.awaitDrain = 0;
// if true, a maybeReadMore has been scheduled
this.readingMore = false;
this.decoder = null;
this.encoding = null;
if (options.encoding) {
if (!StringDecoder) StringDecoder = (__webpack_require__(3141)/* .StringDecoder */ .I);
this.decoder = new StringDecoder(options.encoding);
this.encoding = options.encoding;
}
}
function Readable(options) {
Duplex = Duplex || __webpack_require__(5382);
if (!(this instanceof Readable)) return new Readable(options);
// Checking for a Stream.Duplex instance is faster here instead of inside
// the ReadableState constructor, at least with V8 6.5
var isDuplex = this instanceof Duplex;
this._readableState = new ReadableState(options, this, isDuplex);
// legacy
this.readable = true;
if (options) {
if (typeof options.read === 'function') this._read = options.read;
if (typeof options.destroy === 'function') this._destroy = options.destroy;
}
Stream.call(this);
}
Object.defineProperty(Readable.prototype, 'destroyed', {
// making it explicit this property is not enumerable
// because otherwise some prototype manipulation in
// userland will fail
enumerable: false,
get: function get() {
if (this._readableState === undefined) {
return false;
}
return this._readableState.destroyed;
},
set: function set(value) {
// we ignore the value if the stream
// has not been initialized yet
if (!this._readableState) {
return;
}
// backward compatibility, the user is explicitly
// managing destroyed
this._readableState.destroyed = value;
}
});
Readable.prototype.destroy = destroyImpl.destroy;
Readable.prototype._undestroy = destroyImpl.undestroy;
Readable.prototype._destroy = function (err, cb) {
cb(err);
};
// Manually shove something into the read() buffer.
// This returns true if the highWaterMark has not been hit yet,
// similar to how Writable.write() returns true if you should
// write() some more.
Readable.prototype.push = function (chunk, encoding) {
var state = this._readableState;
var skipChunkCheck;
if (!state.objectMode) {
if (typeof chunk === 'string') {
encoding = encoding || state.defaultEncoding;
if (encoding !== state.encoding) {
chunk = Buffer.from(chunk, encoding);
encoding = '';
}
skipChunkCheck = true;
}
} else {
skipChunkCheck = true;
}
return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);
};
// Unshift should *always* be something directly out of read()
Readable.prototype.unshift = function (chunk) {
return readableAddChunk(this, chunk, null, true, false);
};
function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {
debug('readableAddChunk', chunk);
var state = stream._readableState;
if (chunk === null) {
state.reading = false;
onEofChunk(stream, state);
} else {
var er;
if (!skipChunkCheck) er = chunkInvalid(state, chunk);
if (er) {
errorOrDestroy(stream, er);
} else if (state.objectMode || chunk && chunk.length > 0) {
if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {
chunk = _uint8ArrayToBuffer(chunk);
}
if (addToFront) {
if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);
} else if (state.ended) {
errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());
} else if (state.destroyed) {
return false;
} else {
state.reading = false;
if (state.decoder && !encoding) {
chunk = state.decoder.write(chunk);
if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);
} else {
addChunk(stream, state, chunk, false);
}
}
} else if (!addToFront) {
state.reading = false;
maybeReadMore(stream, state);
}
}
// We can push more data if we are below the highWaterMark.
// Also, if we have no data yet, we can stand some more bytes.
// This is to work around cases where hwm=0, such as the repl.
return !state.ended && (state.length < state.highWaterMark || state.length === 0);
}
function addChunk(stream, state, chunk, addToFront) {
if (state.flowing && state.length === 0 && !state.sync) {
state.awaitDrain = 0;
stream.emit('data', chunk);
} else {
// update the buffer info.
state.length += state.objectMode ? 1 : chunk.length;
if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
if (state.needReadable) emitReadable(stream);
}
maybeReadMore(stream, state);
}
function chunkInvalid(state, chunk) {
var er;
if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);
}
return er;
}
Readable.prototype.isPaused = function () {
return this._readableState.flowing === false;
};
// backwards compatibility.
Readable.prototype.setEncoding = function (enc) {
if (!StringDecoder) StringDecoder = (__webpack_require__(3141)/* .StringDecoder */ .I);
var decoder = new StringDecoder(enc);
this._readableState.decoder = decoder;
// If setEncoding(null), decoder.encoding equals utf8
this._readableState.encoding = this._readableState.decoder.encoding;
// Iterate over current buffer to convert already stored Buffers:
var p = this._readableState.buffer.head;
var content = '';
while (p !== null) {
content += decoder.write(p.data);
p = p.next;
}
this._readableState.buffer.clear();
if (content !== '') this._readableState.buffer.push(content);
this._readableState.length = content.length;
return this;
};
// Don't raise the hwm > 1GB
var MAX_HWM = 0x40000000;
function computeNewHighWaterMark(n) {
if (n >= MAX_HWM) {
// TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.
n = MAX_HWM;
} else {
// Get the next highest power of 2 to prevent increasing hwm excessively in
// tiny amounts
n--;
n |= n >>> 1;
n |= n >>> 2;
n |= n >>> 4;
n |= n >>> 8;
n |= n >>> 16;
n++;
}
return n;
}
// This function is designed to be inlinable, so please take care when making
// changes to the function body.
function howMuchToRead(n, state) {
if (n <= 0 || state.length === 0 && state.ended) return 0;
if (state.objectMode) return 1;
if (n !== n) {
// Only flow one buffer at a time
if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
}
// If we're asking for more than the current hwm, then raise the hwm.
if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
if (n <= state.length) return n;
// Don't have enough
if (!state.ended) {
state.needReadable = true;
return 0;
}
return state.length;
}
// you can override either this method, or the async _read(n) below.
Readable.prototype.read = function (n) {
debug('read', n);
n = parseInt(n, 10);
var state = this._readableState;
var nOrig = n;
if (n !== 0) state.emittedReadable = false;
// if we're doing read(0) to trigger a readable event, but we
// already have a bunch of data in the buffer, then just trigger
// the 'readable' event and move on.
if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {
debug('read: emitReadable', state.length, state.ended);
if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
return null;
}
n = howMuchToRead(n, state);
// if we've ended, and we're now clear, then finish it up.
if (n === 0 && state.ended) {
if (state.length === 0) endReadable(this);
return null;
}
// All the actual chunk generation logic needs to be
// *below* the call to _read. The reason is that in certain
// synthetic stream cases, such as passthrough streams, _read
// may be a completely synchronous operation which may change
// the state of the read buffer, providing enough data when
// before there was *not* enough.
//
// So, the steps are:
// 1. Figure out what the state of things will be after we do
// a read from the buffer.
//
// 2. If that resulting state will trigger a _read, then call _read.
// Note that this may be asynchronous, or synchronous. Yes, it is
// deeply ugly to write APIs this way, but that still doesn't mean
// that the Readable class should behave improperly, as streams are
// designed to be sync/async agnostic.
// Take note if the _read call is sync or async (ie, if the read call
// has returned yet), so that we know whether or not it's safe to emit
// 'readable' etc.
//
// 3. Actually pull the requested chunks out of the buffer and return.
// if we need a readable event, then we need to do some reading.
var doRead = state.needReadable;
debug('need readable', doRead);
// if we currently have less than the highWaterMark, then also read some
if (state.length === 0 || state.length - n < state.highWaterMark) {
doRead = true;
debug('length less than watermark', doRead);
}
// however, if we've ended, then there's no point, and if we're already
// reading, then it's unnecessary.
if (state.ended || state.reading) {
doRead = false;
debug('reading or ended', doRead);
} else if (doRead) {
debug('do read');
state.reading = true;
state.sync = true;
// if the length is currently zero, then we *need* a readable event.
if (state.length === 0) state.needReadable = true;
// call internal read method
this._read(state.highWaterMark);
state.sync = false;
// If _read pushed data synchronously, then `reading` will be false,
// and we need to re-evaluate how much data we can return to the user.
if (!state.reading) n = howMuchToRead(nOrig, state);
}
var ret;
if (n > 0) ret = fromList(n, state);else ret = null;
if (ret === null) {
state.needReadable = state.length <= state.highWaterMark;
n = 0;
} else {
state.length -= n;
state.awaitDrain = 0;
}
if (state.length === 0) {
// If we have nothing in the buffer, then we want to know
// as soon as we *do* get something into the buffer.
if (!state.ended) state.needReadable = true;
// If we tried to read() past the EOF, then emit end on the next tick.
if (nOrig !== n && state.ended) endReadable(this);
}
if (ret !== null) this.emit('data', ret);
return ret;
};
function onEofChunk(stream, state) {
debug('onEofChunk');
if (state.ended) return;
if (state.decoder) {
var chunk = state.decoder.end();
if (chunk && chunk.length) {
state.buffer.push(chunk);
state.length += state.objectMode ? 1 : chunk.length;
}
}
state.ended = true;
if (state.sync) {
// if we are sync, wait until next tick to emit the data.
// Otherwise we risk emitting data in the flow()
// the readable code triggers during a read() call
emitReadable(stream);
} else {
// emit 'readable' now to make sure it gets picked up.
state.needReadable = false;
if (!state.emittedReadable) {
state.emittedReadable = true;
emitReadable_(stream);
}
}
}
// Don't emit readable right away in sync mode, because this can trigger
// another read() call => stack overflow. This way, it might trigger
// a nextTick recursion warning, but that's not so bad.
function emitReadable(stream) {
var state = stream._readableState;
debug('emitReadable', state.needReadable, state.emittedReadable);
state.needReadable = false;
if (!state.emittedReadable) {
debug('emitReadable', state.flowing);
state.emittedReadable = true;
process.nextTick(emitReadable_, stream);
}
}
function emitReadable_(stream) {
var state = stream._readableState;
debug('emitReadable_', state.destroyed, state.length, state.ended);
if (!state.destroyed && (state.length || state.ended)) {
stream.emit('readable');
state.emittedReadable = false;
}
// The stream needs another readable event if
// 1. It is not flowing, as the flow mechanism will take
// care of it.
// 2. It is not ended.
// 3. It is below the highWaterMark, so we can schedule
// another readable later.
state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;
flow(stream);
}
// at this point, the user has presumably seen the 'readable' event,
// and called read() to consume some data. that may have triggered
// in turn another _read(n) call, in which case reading = true if
// it's in progress.
// However, if we're not ended, or reading, and the length < hwm,
// then go ahead and try to read some more preemptively.
function maybeReadMore(stream, state) {
if (!state.readingMore) {
state.readingMore = true;
process.nextTick(maybeReadMore_, stream, state);
}
}
function maybeReadMore_(stream, state) {
// Attempt to read more data if we should.
//
// The conditions for reading more data are (one of):
// - Not enough data buffered (state.length < state.highWaterMark). The loop
// is responsible for filling the buffer with enough data if such data
// is available. If highWaterMark is 0 and we are not in the flowing mode
// we should _not_ attempt to buffer any extra data. We'll get more data
// when the stream consumer calls read() instead.
// - No data in the buffer, and the stream is in flowing mode. In this mode
// the loop below is responsible for ensuring read() is called. Failing to
// call read here would abort the flow and there's no other mechanism for
// continuing the flow if the stream consumer has just subscribed to the
// 'data' event.
//
// In addition to the above conditions to keep reading data, the following
// conditions prevent the data from being read:
// - The stream has ended (state.ended).
// - There is already a pending 'read' operation (state.reading). This is a
// case where the the stream has called the implementation defined _read()
// method, but they are processing the call asynchronously and have _not_
// called push() with new data. In this case we skip performing more
// read()s. The execution ends in this method again after the _read() ends
// up calling push() with more data.
while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {
var len = state.length;
debug('maybeReadMore read 0');
stream.read(0);
if (len === state.length)
// didn't get any data, stop spinning.
break;
}
state.readingMore = false;
}
// abstract method. to be overridden in specific implementation classes.
// call cb(er, data) where data is <= n in length.
// for virtual (non-string, non-buffer) streams, "length" is somewhat
// arbitrary, and perhaps not very meaningful.
Readable.prototype._read = function (n) {
errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));
};
Readable.prototype.pipe = function (dest, pipeOpts) {
var src = this;
var state = this._readableState;
switch (state.pipesCount) {
case 0:
state.pipes = dest;
break;
case 1:
state.pipes = [state.pipes, dest];
break;
default:
state.pipes.push(dest);
break;
}
state.pipesCount += 1;
debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
var endFn = doEnd ? onend : unpipe;
if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);
dest.on('unpipe', onunpipe);
function onunpipe(readable, unpipeInfo) {
debug('onunpipe');
if (readable === src) {
if (unpipeInfo && unpipeInfo.hasUnpiped === false) {
unpipeInfo.hasUnpiped = true;
cleanup();
}
}
}
function onend() {
debug('onend');
dest.end();
}
// when the dest drains, it reduces the awaitDrain counter
// on the source. This would be more elegant with a .once()
// handler in flow(), but adding and removing repeatedly is
// too slow.
var ondrain = pipeOnDrain(src);
dest.on('drain', ondrain);
var cleanedUp = false;
function cleanup() {
debug('cleanup');
// cleanup event handlers once the pipe is broken
dest.removeListener('close', onclose);
dest.removeListener('finish', onfinish);
dest.removeListener('drain', ondrain);
dest.removeListener('error', onerror);
dest.removeListener('unpipe', onunpipe);
src.removeListener('end', onend);
src.removeListener('end', unpipe);
src.removeListener('data', ondata);
cleanedUp = true;
// if the reader is waiting for a drain event from this
// specific writer, then it would cause it to never start
// flowing again.
// So, if this is awaiting a drain, then we just call it now.
// If we don't know, then assume that we are waiting for one.
if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
}
src.on('data', ondata);
function ondata(chunk) {
debug('ondata');
var ret = dest.write(chunk);
debug('dest.write', ret);
if (ret === false) {
// If the user unpiped during `dest.write()`, it is possible
// to get stuck in a permanently paused state if that write
// also returned false.
// => Check whether `dest` is still a piping destination.
if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
debug('false write response, pause', state.awaitDrain);
state.awaitDrain++;
}
src.pause();
}
}
// if the dest has an error, then stop piping into it.
// however, don't suppress the throwing behavior for this.
function onerror(er) {
debug('onerror', er);
unpipe();
dest.removeListener('error', onerror);
if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);
}
// Make sure our error handler is attached before userland ones.
prependListener(dest, 'error', onerror);
// Both close and finish should trigger unpipe, but only once.
function onclose() {
dest.removeListener('finish', onfinish);
unpipe();
}
dest.once('close', onclose);
function onfinish() {
debug('onfinish');
dest.removeListener('close', onclose);
unpipe();
}
dest.once('finish', onfinish);
function unpipe() {
debug('unpipe');
src.unpipe(dest);
}
// tell the dest that it's being piped to
dest.emit('pipe', src);
// start the flow if it hasn't been started already.
if (!state.flowing) {
debug('pipe resume');
src.resume();
}
return dest;
};
function pipeOnDrain(src) {
return function pipeOnDrainFunctionResult() {
var state = src._readableState;
debug('pipeOnDrain', state.awaitDrain);
if (state.awaitDrain) state.awaitDrain--;
if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
state.flowing = true;
flow(src);
}
};
}
Readable.prototype.unpipe = function (dest) {
var state = this._readableState;
var unpipeInfo = {
hasUnpiped: false
};
// if we're not piping anywhere, then do nothing.
if (state.pipesCount === 0) return this;
// just one destination. most common case.
if (state.pipesCount === 1) {
// passed in one, but it's not the right one.
if (dest && dest !== state.pipes) return this;
if (!dest) dest = state.pipes;
// got a match.
state.pipes = null;
state.pipesCount = 0;
state.flowing = false;
if (dest) dest.emit('unpipe', this, unpipeInfo);
return this;
}
// slow case. multiple pipe destinations.
if (!dest) {
// remove all.
var dests = state.pipes;
var len = state.pipesCount;
state.pipes = null;
state.pipesCount = 0;
state.flowing = false;
for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {
hasUnpiped: false
});
return this;
}
// try to find the right one.
var index = indexOf(state.pipes, dest);
if (index === -1) return this;
state.pipes.splice(index, 1);
state.pipesCount -= 1;
if (state.pipesCount === 1) state.pipes = state.pipes[0];
dest.emit('unpipe', this, unpipeInfo);
return this;
};
// set up data events if they are asked for
// Ensure readable listeners eventually get something
Readable.prototype.on = function (ev, fn) {
var res = Stream.prototype.on.call(this, ev, fn);
var state = this._readableState;
if (ev === 'data') {
// update readableListening so that resume() may be a no-op
// a few lines down. This is needed to support once('readable').
state.readableListening = this.listenerCount('readable') > 0;
// Try start flowing on next tick if stream isn't explicitly paused
if (state.flowing !== false) this.resume();
} else if (ev === 'readable') {
if (!state.endEmitted && !state.readableListening) {
state.readableListening = state.needReadable = true;
state.flowing = false;
state.emittedReadable = false;
debug('on readable', state.length, state.reading);
if (state.length) {
emitReadable(this);
} else if (!state.reading) {
process.nextTick(nReadingNextTick, this);
}
}
}
return res;
};
Readable.prototype.addListener = Readable.prototype.on;
Readable.prototype.removeListener = function (ev, fn) {
var res = Stream.prototype.removeListener.call(this, ev, fn);
if (ev === 'readable') {
// We need to check if there is someone still listening to
// readable and reset the state. However this needs to happen
// after readable has been emitted but before I/O (nextTick) to
// support once('readable', fn) cycles. This means that calling
// resume within the same tick will have no
// effect.
process.nextTick(updateReadableListening, this);
}
return res;
};
Readable.prototype.removeAllListeners = function (ev) {
var res = Stream.prototype.removeAllListeners.apply(this, arguments);
if (ev === 'readable' || ev === undefined) {
// We need to check if there is someone still listening to
// readable and reset the state. However this needs to happen
// after readable has been emitted but before I/O (nextTick) to
// support once('readable', fn) cycles. This means that calling
// resume within the same tick will have no
// effect.
process.nextTick(updateReadableListening, this);
}
return res;
};
function updateReadableListening(self) {
var state = self._readableState;
state.readableListening = self.listenerCount('readable') > 0;
if (state.resumeScheduled && !state.paused) {
// flowing needs to be set to true now, otherwise
// the upcoming resume will not flow.
state.flowing = true;
// crude way to check if we should resume
} else if (self.listenerCount('data') > 0) {
self.resume();
}
}
function nReadingNextTick(self) {
debug('readable nexttick read 0');
self.read(0);
}
// pause() and resume() are remnants of the legacy readable stream API
// If the user uses them, then switch into old mode.
Readable.prototype.resume = function () {
var state = this._readableState;
if (!state.flowing) {
debug('resume');
// we flow only if there is no one listening
// for readable, but we still have to call
// resume()
state.flowing = !state.readableListening;
resume(this, state);
}
state.paused = false;
return this;
};
function resume(stream, state) {
if (!state.resumeScheduled) {
state.resumeScheduled = true;
process.nextTick(resume_, stream, state);
}
}
function resume_(stream, state) {
debug('resume', state.reading);
if (!state.reading) {
stream.read(0);
}
state.resumeScheduled = false;
stream.emit('resume');
flow(stream);
if (state.flowing && !state.reading) stream.read(0);
}
Readable.prototype.pause = function () {
debug('call pause flowing=%j', this._readableState.flowing);
if (this._readableState.flowing !== false) {
debug('pause');
this._readableState.flowing = false;
this.emit('pause');
}
this._readableState.paused = true;
return this;
};
function flow(stream) {
var state = stream._readableState;
debug('flow', state.flowing);
while (state.flowing && stream.read() !== null);
}
// wrap an old-style stream as the async data source.
// This is *not* part of the readable stream interface.
// It is an ugly unfortunate mess of history.
Readable.prototype.wrap = function (stream) {
var _this = this;
var state = this._readableState;
var paused = false;
stream.on('end', function () {
debug('wrapped end');
if (state.decoder && !state.ended) {
var chunk = state.decoder.end();
if (chunk && chunk.length) _this.push(chunk);
}
_this.push(null);
});
stream.on('data', function (chunk) {
debug('wrapped data');
if (state.decoder) chunk = state.decoder.write(chunk);
// don't skip over falsy values in objectMode
if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
var ret = _this.push(chunk);
if (!ret) {
paused = true;
stream.pause();
}
});
// proxy all the other methods.
// important when wrapping filters and duplexes.
for (var i in stream) {
if (this[i] === undefined && typeof stream[i] === 'function') {
this[i] = function methodWrap(method) {
return function methodWrapReturnFunction() {
return stream[method].apply(stream, arguments);
};
}(i);
}
}
// proxy certain important events.
for (var n = 0; n < kProxyEvents.length; n++) {
stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));
}
// when we try to consume some more bytes, simply unpause the
// underlying stream.
this._read = function (n) {
debug('wrapped _read', n);
if (paused) {
paused = false;
stream.resume();
}
};
return this;
};
if (typeof Symbol === 'function') {
Readable.prototype[Symbol.asyncIterator] = function () {
if (createReadableStreamAsyncIterator === undefined) {
createReadableStreamAsyncIterator = __webpack_require__(2955);
}
return createReadableStreamAsyncIterator(this);
};
}
Object.defineProperty(Readable.prototype, 'readableHighWaterMark', {
// making it explicit this property is not enumerable
// because otherwise some prototype manipulation in
// userland will fail
enumerable: false,
get: function get() {
return this._readableState.highWaterMark;
}
});
Object.defineProperty(Readable.prototype, 'readableBuffer', {
// making it explicit this property is not enumerable
// because otherwise some prototype manipulation in
// userland will fail
enumerable: false,
get: function get() {
return this._readableState && this._readableState.buffer;
}
});
Object.defineProperty(Readable.prototype, 'readableFlowing', {
// making it explicit this property is not enumerable
// because otherwise some prototype manipulation in
// userland will fail
enumerable: false,
get: function get() {
return this._readableState.flowing;
},
set: function set(state) {
if (this._readableState) {
this._readableState.flowing = state;
}
}
});
// exposed for testing purposes only.
Readable._fromList = fromList;
Object.defineProperty(Readable.prototype, 'readableLength', {
// making it explicit this property is not enumerable
// because otherwise some prototype manipulation in
// userland will fail
enumerable: false,
get: function get() {
return this._readableState.length;
}
});
// Pluck off n bytes from an array of buffers.
// Length is the combined lengths of all the buffers in the list.
// This function is designed to be inlinable, so please take care when making
// changes to the function body.
function fromList(n, state) {
// nothing buffered
if (state.length === 0) return null;
var ret;
if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
// read it all, truncate the list
if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);
state.buffer.clear();
} else {
// read part of list
ret = state.buffer.consume(n, state.decoder);
}
return ret;
}
function endReadable(stream) {
var state = stream._readableState;
debug('endReadable', state.endEmitted);
if (!state.endEmitted) {
state.ended = true;
process.nextTick(endReadableNT, state, stream);
}
}
function endReadableNT(state, stream) {
debug('endReadableNT', state.endEmitted, state.length);
// Check that we didn't get one last unshift.
if (!state.endEmitted && state.length === 0) {
state.endEmitted = true;
stream.readable = false;
stream.emit('end');
if (state.autoDestroy) {
// In case of duplex streams we need a way to detect
// if the writable side is ready for autoDestroy as well
var wState = stream._writableState;
if (!wState || wState.autoDestroy && wState.finished) {
stream.destroy();
}
}
}
}
if (typeof Symbol === 'function') {
Readable.from = function (iterable, opts) {
if (from === undefined) {
from = __webpack_require__(5157);
}
return from(Readable, iterable, opts);
};
}
function indexOf(xs, x) {
for (var i = 0, l = xs.length; i < l; i++) {
if (xs[i] === x) return i;
}
return -1;
}
/***/ }),
/***/ 4610:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
// Copyright Joyent, Inc. and other Node contributors.
//
// 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.
// a transform stream is a readable/writable stream where you do
// something with the data. Sometimes it's called a "filter",
// but that's not a great name for it, since that implies a thing where
// some bits pass through, and others are simply ignored. (That would
// be a valid example of a transform, of course.)
//
// While the output is causally related to the input, it's not a
// necessarily symmetric or synchronous transformation. For example,
// a zlib stream might take multiple plain-text writes(), and then
// emit a single compressed chunk some time in the future.
//
// Here's how this works:
//
// The Transform stream has all the aspects of the readable and writable
// stream classes. When you write(chunk), that calls _write(chunk,cb)
// internally, and returns false if there's a lot of pending writes
// buffered up. When you call read(), that calls _read(n) until
// there's enough pending readable data buffered up.
//
// In a transform stream, the written data is placed in a buffer. When
// _read(n) is called, it transforms the queued up data, calling the
// buffered _write cb's as it consumes chunks. If consuming a single
// written chunk would result in multiple output chunks, then the first
// outputted bit calls the readcb, and subsequent chunks just go into
// the read buffer, and will cause it to emit 'readable' if necessary.
//
// This way, back-pressure is actually determined by the reading side,
// since _read has to be called to start processing a new chunk. However,
// a pathological inflate type of transform can cause excessive buffering
// here. For example, imagine a stream where every byte of input is
// interpreted as an integer from 0-255, and then results in that many
// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
// 1kb of data being output. In this case, you could write a very small
// amount of input, and end up with a very large amount of output. In
// such a pathological inflating mechanism, there'd be no way to tell
// the system to stop doing the transform. A single 4MB write could
// cause the system to run out of memory.
//
// However, even in such a pathological case, only a single written chunk
// would be consumed, and then the rest would wait (un-transformed) until
// the results of the previous transformed chunk were consumed.
module.exports = Transform;
var _require$codes = (__webpack_require__(6048)/* .codes */ .F),
ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,
ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,
ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,
ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;
var Duplex = __webpack_require__(5382);
__webpack_require__(6698)(Transform, Duplex);
function afterTransform(er, data) {
var ts = this._transformState;
ts.transforming = false;
var cb = ts.writecb;
if (cb === null) {
return this.emit('error', new ERR_MULTIPLE_CALLBACK());
}
ts.writechunk = null;
ts.writecb = null;
if (data != null)
// single equals check for both `null` and `undefined`
this.push(data);
cb(er);
var rs = this._readableState;
rs.reading = false;
if (rs.needReadable || rs.length < rs.highWaterMark) {
this._read(rs.highWaterMark);
}
}
function Transform(options) {
if (!(this instanceof Transform)) return new Transform(options);
Duplex.call(this, options);
this._transformState = {
afterTransform: afterTransform.bind(this),
needTransform: false,
transforming: false,
writecb: null,
writechunk: null,
writeencoding: null
};
// start out asking for a readable event once data is transformed.
this._readableState.needReadable = true;
// we have implemented the _read method, and done the other things
// that Readable wants before the first _read call, so unset the
// sync guard flag.
this._readableState.sync = false;
if (options) {
if (typeof options.transform === 'function') this._transform = options.transform;
if (typeof options.flush === 'function') this._flush = options.flush;
}
// When the writable side finishes, then flush out anything remaining.
this.on('prefinish', prefinish);
}
function prefinish() {
var _this = this;
if (typeof this._flush === 'function' && !this._readableState.destroyed) {
this._flush(function (er, data) {
done(_this, er, data);
});
} else {
done(this, null, null);
}
}
Transform.prototype.push = function (chunk, encoding) {
this._transformState.needTransform = false;
return Duplex.prototype.push.call(this, chunk, encoding);
};
// This is the part where you do stuff!
// override this function in implementation classes.
// 'chunk' is an input chunk.
//
// Call `push(newChunk)` to pass along transformed output
// to the readable side. You may call 'push' zero or more times.
//
// Call `cb(err)` when you are done with this chunk. If you pass
// an error, then that'll put the hurt on the whole operation. If you
// never call cb(), then you'll never get another chunk.
Transform.prototype._transform = function (chunk, encoding, cb) {
cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));
};
Transform.prototype._write = function (chunk, encoding, cb) {
var ts = this._transformState;
ts.writecb = cb;
ts.writechunk = chunk;
ts.writeencoding = encoding;
if (!ts.transforming) {
var rs = this._readableState;
if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
}
};
// Doesn't matter what the args are here.
// _transform does all the work.
// That we got here means that the readable side wants more data.
Transform.prototype._read = function (n) {
var ts = this._transformState;
if (ts.writechunk !== null && !ts.transforming) {
ts.transforming = true;
this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
} else {
// mark that we need a transform, so that any data that comes in
// will get processed, now that we've asked for it.
ts.needTransform = true;
}
};
Transform.prototype._destroy = function (err, cb) {
Duplex.prototype._destroy.call(this, err, function (err2) {
cb(err2);
});
};
function done(stream, er, data) {
if (er) return stream.emit('error', er);
if (data != null)
// single equals check for both `null` and `undefined`
stream.push(data);
// TODO(BridgeAR): Write a test for these two error cases
// if there's nothing in the write buffer, then that means
// that nothing more will ever be provided
if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();
if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();
return stream.push(null);
}
/***/ }),
/***/ 6708:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
// Copyright Joyent, Inc. and other Node contributors.
//
// 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.
// A bit simpler than readable streams.
// Implement an async ._write(chunk, encoding, cb), and it'll handle all
// the drain event emission and buffering.
module.exports = Writable;
/* <replacement> */
function WriteReq(chunk, encoding, cb) {
this.chunk = chunk;
this.encoding = encoding;
this.callback = cb;
this.next = null;
}
// It seems a linked list but it is not
// there will be only 2 of these for each stream
function CorkedRequest(state) {
var _this = this;
this.next = null;
this.entry = null;
this.finish = function () {
onCorkedFinish(_this, state);
};
}
/* </replacement> */
/*<replacement>*/
var Duplex;
/*</replacement>*/
Writable.WritableState = WritableState;
/*<replacement>*/
var internalUtil = {
deprecate: __webpack_require__(4643)
};
/*</replacement>*/
/*<replacement>*/
var Stream = __webpack_require__(345);
/*</replacement>*/
var Buffer = (__webpack_require__(8287).Buffer);
var OurUint8Array = (typeof __webpack_require__.g !== 'undefined' ? __webpack_require__.g : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};
function _uint8ArrayToBuffer(chunk) {
return Buffer.from(chunk);
}
function _isUint8Array(obj) {
return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
}
var destroyImpl = __webpack_require__(5896);
var _require = __webpack_require__(5291),
getHighWaterMark = _require.getHighWaterMark;
var _require$codes = (__webpack_require__(6048)/* .codes */ .F),
ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,
ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,
ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,
ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,
ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,
ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,
ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,
ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;
var errorOrDestroy = destroyImpl.errorOrDestroy;
__webpack_require__(6698)(Writable, Stream);
function nop() {}
function WritableState(options, stream, isDuplex) {
Duplex = Duplex || __webpack_require__(5382);
options = options || {};
// Duplex streams are both readable and writable, but share
// the same options object.
// However, some cases require setting options to different
// values for the readable and the writable sides of the duplex stream,
// e.g. options.readableObjectMode vs. options.writableObjectMode, etc.
if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;
// object stream flag to indicate whether or not this stream
// contains buffers or objects.
this.objectMode = !!options.objectMode;
if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
// the point at which write() starts returning false
// Note: 0 is a valid value, means that we always return false if
// the entire buffer is not flushed immediately on write()
this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);
// if _final has been called
this.finalCalled = false;
// drain event flag.
this.needDrain = false;
// at the start of calling end()
this.ending = false;
// when end() has been called, and returned
this.ended = false;
// when 'finish' is emitted
this.finished = false;
// has it been destroyed
this.destroyed = false;
// should we decode strings into buffers before passing to _write?
// this is here so that some node-core streams can optimize string
// handling at a lower level.
var noDecode = options.decodeStrings === false;
this.decodeStrings = !noDecode;
// Crypto is kind of old and crusty. Historically, its default string
// encoding is 'binary' so we have to make this configurable.
// Everything else in the universe uses 'utf8', though.
this.defaultEncoding = options.defaultEncoding || 'utf8';
// not an actual buffer we keep track of, but a measurement
// of how much we're waiting to get pushed to some underlying
// socket or file.
this.length = 0;
// a flag to see when we're in the middle of a write.
this.writing = false;
// when true all writes will be buffered until .uncork() call
this.corked = 0;
// a flag to be able to tell if the onwrite cb is called immediately,
// or on a later tick. We set this to true at first, because any
// actions that shouldn't happen until "later" should generally also
// not happen before the first write call.
this.sync = true;
// a flag to know if we're processing previously buffered items, which
// may call the _write() callback in the same tick, so that we don't
// end up in an overlapped onwrite situation.
this.bufferProcessing = false;
// the callback that's passed to _write(chunk,cb)
this.onwrite = function (er) {
onwrite(stream, er);
};
// the callback that the user supplies to write(chunk,encoding,cb)
this.writecb = null;
// the amount that is being written when _write is called.
this.writelen = 0;
this.bufferedRequest = null;
this.lastBufferedRequest = null;
// number of pending user-supplied write callbacks
// this must be 0 before 'finish' can be emitted
this.pendingcb = 0;
// emit prefinish if the only thing we're waiting for is _write cbs
// This is relevant for synchronous Transform streams
this.prefinished = false;
// True if the error was already emitted and should not be thrown again
this.errorEmitted = false;
// Should close be emitted on destroy. Defaults to true.
this.emitClose = options.emitClose !== false;
// Should .destroy() be called after 'finish' (and potentially 'end')
this.autoDestroy = !!options.autoDestroy;
// count buffered requests
this.bufferedRequestCount = 0;
// allocate the first CorkedRequest, there is always
// one allocated and free to use, and we maintain at most two
this.corkedRequestsFree = new CorkedRequest(this);
}
WritableState.prototype.getBuffer = function getBuffer() {
var current = this.bufferedRequest;
var out = [];
while (current) {
out.push(current);
current = current.next;
}
return out;
};
(function () {
try {
Object.defineProperty(WritableState.prototype, 'buffer', {
get: internalUtil.deprecate(function writableStateBufferGetter() {
return this.getBuffer();
}, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')
});
} catch (_) {}
})();
// Test _writableState for inheritance to account for Duplex streams,
// whose prototype chain only points to Readable.
var realHasInstance;
if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
realHasInstance = Function.prototype[Symbol.hasInstance];
Object.defineProperty(Writable, Symbol.hasInstance, {
value: function value(object) {
if (realHasInstance.call(this, object)) return true;
if (this !== Writable) return false;
return object && object._writableState instanceof WritableState;
}
});
} else {
realHasInstance = function realHasInstance(object) {
return object instanceof this;
};
}
function Writable(options) {
Duplex = Duplex || __webpack_require__(5382);
// Writable ctor is applied to Duplexes, too.
// `realHasInstance` is necessary because using plain `instanceof`
// would return false, as no `_writableState` property is attached.
// Trying to use the custom `instanceof` for Writable here will also break the
// Node.js LazyTransform implementation, which has a non-trivial getter for
// `_writableState` that would lead to infinite recursion.
// Checking for a Stream.Duplex instance is faster here instead of inside
// the WritableState constructor, at least with V8 6.5
var isDuplex = this instanceof Duplex;
if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);
this._writableState = new WritableState(options, this, isDuplex);
// legacy.
this.writable = true;
if (options) {
if (typeof options.write === 'function') this._write = options.write;
if (typeof options.writev === 'function') this._writev = options.writev;
if (typeof options.destroy === 'function') this._destroy = options.destroy;
if (typeof options.final === 'function') this._final = options.final;
}
Stream.call(this);
}
// Otherwise people can pipe Writable streams, which is just wrong.
Writable.prototype.pipe = function () {
errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());
};
function writeAfterEnd(stream, cb) {
var er = new ERR_STREAM_WRITE_AFTER_END();
// TODO: defer error events consistently everywhere, not just the cb
errorOrDestroy(stream, er);
process.nextTick(cb, er);
}
// Checks that a user-supplied chunk is valid, especially for the particular
// mode the stream is in. Currently this means that `null` is never accepted
// and undefined/non-string values are only allowed in object mode.
function validChunk(stream, state, chunk, cb) {
var er;
if (chunk === null) {
er = new ERR_STREAM_NULL_VALUES();
} else if (typeof chunk !== 'string' && !state.objectMode) {
er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);
}
if (er) {
errorOrDestroy(stream, er);
process.nextTick(cb, er);
return false;
}
return true;
}
Writable.prototype.write = function (chunk, encoding, cb) {
var state = this._writableState;
var ret = false;
var isBuf = !state.objectMode && _isUint8Array(chunk);
if (isBuf && !Buffer.isBuffer(chunk)) {
chunk = _uint8ArrayToBuffer(chunk);
}
if (typeof encoding === 'function') {
cb = encoding;
encoding = null;
}
if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
if (typeof cb !== 'function') cb = nop;
if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {
state.pendingcb++;
ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);
}
return ret;
};
Writable.prototype.cork = function () {
this._writableState.corked++;
};
Writable.prototype.uncork = function () {
var state = this._writableState;
if (state.corked) {
state.corked--;
if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
}
};
Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
// node::ParseEncoding() requires lower case.
if (typeof encoding === 'string') encoding = encoding.toLowerCase();
if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);
this._writableState.defaultEncoding = encoding;
return this;
};
Object.defineProperty(Writable.prototype, 'writableBuffer', {
// making it explicit this property is not enumerable
// because otherwise some prototype manipulation in
// userland will fail
enumerable: false,
get: function get() {
return this._writableState && this._writableState.getBuffer();
}
});
function decodeChunk(state, chunk, encoding) {
if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
chunk = Buffer.from(chunk, encoding);
}
return chunk;
}
Object.defineProperty(Writable.prototype, 'writableHighWaterMark', {
// making it explicit this property is not enumerable
// because otherwise some prototype manipulation in
// userland will fail
enumerable: false,
get: function get() {
return this._writableState.highWaterMark;
}
});
// if we're already writing something, then just put this
// in the queue, and wait our turn. Otherwise, call _write
// If we return false, then we need a drain event, so set that flag.
function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {
if (!isBuf) {
var newChunk = decodeChunk(state, chunk, encoding);
if (chunk !== newChunk) {
isBuf = true;
encoding = 'buffer';
chunk = newChunk;
}
}
var len = state.objectMode ? 1 : chunk.length;
state.length += len;
var ret = state.length < state.highWaterMark;
// we must ensure that previous needDrain will not be reset to false.
if (!ret) state.needDrain = true;
if (state.writing || state.corked) {
var last = state.lastBufferedRequest;
state.lastBufferedRequest = {
chunk: chunk,
encoding: encoding,
isBuf: isBuf,
callback: cb,
next: null
};
if (last) {
last.next = state.lastBufferedRequest;
} else {
state.bufferedRequest = state.lastBufferedRequest;
}
state.bufferedRequestCount += 1;
} else {
doWrite(stream, state, false, len, chunk, encoding, cb);
}
return ret;
}
function doWrite(stream, state, writev, len, chunk, encoding, cb) {
state.writelen = len;
state.writecb = cb;
state.writing = true;
state.sync = true;
if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
state.sync = false;
}
function onwriteError(stream, state, sync, er, cb) {
--state.pendingcb;
if (sync) {
// defer the callback if we are being called synchronously
// to avoid piling up things on the stack
process.nextTick(cb, er);
// this can emit finish, and it will always happen
// after error
process.nextTick(finishMaybe, stream, state);
stream._writableState.errorEmitted = true;
errorOrDestroy(stream, er);
} else {
// the caller expect this to happen before if
// it is async
cb(er);
stream._writableState.errorEmitted = true;
errorOrDestroy(stream, er);
// this can emit finish, but finish must
// always follow error
finishMaybe(stream, state);
}
}
function onwriteStateUpdate(state) {
state.writing = false;
state.writecb = null;
state.length -= state.writelen;
state.writelen = 0;
}
function onwrite(stream, er) {
var state = stream._writableState;
var sync = state.sync;
var cb = state.writecb;
if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();
onwriteStateUpdate(state);
if (er) onwriteError(stream, state, sync, er, cb);else {
// Check if we're actually ready to finish, but don't emit yet
var finished = needFinish(state) || stream.destroyed;
if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
clearBuffer(stream, state);
}
if (sync) {
process.nextTick(afterWrite, stream, state, finished, cb);
} else {
afterWrite(stream, state, finished, cb);
}
}
}
function afterWrite(stream, state, finished, cb) {
if (!finished) onwriteDrain(stream, state);
state.pendingcb--;
cb();
finishMaybe(stream, state);
}
// Must force callback to be called on nextTick, so that we don't
// emit 'drain' before the write() consumer gets the 'false' return
// value, and has a chance to attach a 'drain' listener.
function onwriteDrain(stream, state) {
if (state.length === 0 && state.needDrain) {
state.needDrain = false;
stream.emit('drain');
}
}
// if there's something in the buffer waiting, then process it
function clearBuffer(stream, state) {
state.bufferProcessing = true;
var entry = state.bufferedRequest;
if (stream._writev && entry && entry.next) {
// Fast case, write everything using _writev()
var l = state.bufferedRequestCount;
var buffer = new Array(l);
var holder = state.corkedRequestsFree;
holder.entry = entry;
var count = 0;
var allBuffers = true;
while (entry) {
buffer[count] = entry;
if (!entry.isBuf) allBuffers = false;
entry = entry.next;
count += 1;
}
buffer.allBuffers = allBuffers;
doWrite(stream, state, true, state.length, buffer, '', holder.finish);
// doWrite is almost always async, defer these to save a bit of time
// as the hot path ends with doWrite
state.pendingcb++;
state.lastBufferedRequest = null;
if (holder.next) {
state.corkedRequestsFree = holder.next;
holder.next = null;
} else {
state.corkedRequestsFree = new CorkedRequest(state);
}
state.bufferedRequestCount = 0;
} else {
// Slow case, write chunks one-by-one
while (entry) {
var chunk = entry.chunk;
var encoding = entry.encoding;
var cb = entry.callback;
var len = state.objectMode ? 1 : chunk.length;
doWrite(stream, state, false, len, chunk, encoding, cb);
entry = entry.next;
state.bufferedRequestCount--;
// if we didn't call the onwrite immediately, then
// it means that we need to wait until it does.
// also, that means that the chunk and cb are currently
// being processed, so move the buffer counter past them.
if (state.writing) {
break;
}
}
if (entry === null) state.lastBufferedRequest = null;
}
state.bufferedRequest = entry;
state.bufferProcessing = false;
}
Writable.prototype._write = function (chunk, encoding, cb) {
cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));
};
Writable.prototype._writev = null;
Writable.prototype.end = function (chunk, encoding, cb) {
var state = this._writableState;
if (typeof chunk === 'function') {
cb = chunk;
chunk = null;
encoding = null;
} else if (typeof encoding === 'function') {
cb = encoding;
encoding = null;
}
if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
// .end() fully uncorks
if (state.corked) {
state.corked = 1;
this.uncork();
}
// ignore unnecessary end() calls.
if (!state.ending) endWritable(this, state, cb);
return this;
};
Object.defineProperty(Writable.prototype, 'writableLength', {
// making it explicit this property is not enumerable
// because otherwise some prototype manipulation in
// userland will fail
enumerable: false,
get: function get() {
return this._writableState.length;
}
});
function needFinish(state) {
return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
}
function callFinal(stream, state) {
stream._final(function (err) {
state.pendingcb--;
if (err) {
errorOrDestroy(stream, err);
}
state.prefinished = true;
stream.emit('prefinish');
finishMaybe(stream, state);
});
}
function prefinish(stream, state) {
if (!state.prefinished && !state.finalCalled) {
if (typeof stream._final === 'function' && !state.destroyed) {
state.pendingcb++;
state.finalCalled = true;
process.nextTick(callFinal, stream, state);
} else {
state.prefinished = true;
stream.emit('prefinish');
}
}
}
function finishMaybe(stream, state) {
var need = needFinish(state);
if (need) {
prefinish(stream, state);
if (state.pendingcb === 0) {
state.finished = true;
stream.emit('finish');
if (state.autoDestroy) {
// In case of duplex streams we need a way to detect
// if the readable side is ready for autoDestroy as well
var rState = stream._readableState;
if (!rState || rState.autoDestroy && rState.endEmitted) {
stream.destroy();
}
}
}
}
return need;
}
function endWritable(stream, state, cb) {
state.ending = true;
finishMaybe(stream, state);
if (cb) {
if (state.finished) process.nextTick(cb);else stream.once('finish', cb);
}
state.ended = true;
stream.writable = false;
}
function onCorkedFinish(corkReq, state, err) {
var entry = corkReq.entry;
corkReq.entry = null;
while (entry) {
var cb = entry.callback;
state.pendingcb--;
cb(err);
entry = entry.next;
}
// reuse the free corkReq.
state.corkedRequestsFree.next = corkReq;
}
Object.defineProperty(Writable.prototype, 'destroyed', {
// making it explicit this property is not enumerable
// because otherwise some prototype manipulation in
// userland will fail
enumerable: false,
get: function get() {
if (this._writableState === undefined) {
return false;
}
return this._writableState.destroyed;
},
set: function set(value) {
// we ignore the value if the stream
// has not been initialized yet
if (!this._writableState) {
return;
}
// backward compatibility, the user is explicitly
// managing destroyed
this._writableState.destroyed = value;
}
});
Writable.prototype.destroy = destroyImpl.destroy;
Writable.prototype._undestroy = destroyImpl.undestroy;
Writable.prototype._destroy = function (err, cb) {
cb(err);
};
/***/ }),
/***/ 2955:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var _Object$setPrototypeO;
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
var finished = __webpack_require__(6238);
var kLastResolve = Symbol('lastResolve');
var kLastReject = Symbol('lastReject');
var kError = Symbol('error');
var kEnded = Symbol('ended');
var kLastPromise = Symbol('lastPromise');
var kHandlePromise = Symbol('handlePromise');
var kStream = Symbol('stream');
function createIterResult(value, done) {
return {
value: value,
done: done
};
}
function readAndResolve(iter) {
var resolve = iter[kLastResolve];
if (resolve !== null) {
var data = iter[kStream].read();
// we defer if data is null
// we can be expecting either 'end' or
// 'error'
if (data !== null) {
iter[kLastPromise] = null;
iter[kLastResolve] = null;
iter[kLastReject] = null;
resolve(createIterResult(data, false));
}
}
}
function onReadable(iter) {
// we wait for the next tick, because it might
// emit an error with process.nextTick
process.nextTick(readAndResolve, iter);
}
function wrapForNext(lastPromise, iter) {
return function (resolve, reject) {
lastPromise.then(function () {
if (iter[kEnded]) {
resolve(createIterResult(undefined, true));
return;
}
iter[kHandlePromise](resolve, reject);
}, reject);
};
}
var AsyncIteratorPrototype = Object.getPrototypeOf(function () {});
var ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {
get stream() {
return this[kStream];
},
next: function next() {
var _this = this;
// if we have detected an error in the meanwhile
// reject straight away
var error = this[kError];
if (error !== null) {
return Promise.reject(error);
}
if (this[kEnded]) {
return Promise.resolve(createIterResult(undefined, true));
}
if (this[kStream].destroyed) {
// We need to defer via nextTick because if .destroy(err) is
// called, the error will be emitted via nextTick, and
// we cannot guarantee that there is no error lingering around
// waiting to be emitted.
return new Promise(function (resolve, reject) {
process.nextTick(function () {
if (_this[kError]) {
reject(_this[kError]);
} else {
resolve(createIterResult(undefined, true));
}
});
});
}
// if we have multiple next() calls
// we will wait for the previous Promise to finish
// this logic is optimized to support for await loops,
// where next() is only called once at a time
var lastPromise = this[kLastPromise];
var promise;
if (lastPromise) {
promise = new Promise(wrapForNext(lastPromise, this));
} else {
// fast path needed to support multiple this.push()
// without triggering the next() queue
var data = this[kStream].read();
if (data !== null) {
return Promise.resolve(createIterResult(data, false));
}
promise = new Promise(this[kHandlePromise]);
}
this[kLastPromise] = promise;
return promise;
}
}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {
return this;
}), _defineProperty(_Object$setPrototypeO, "return", function _return() {
var _this2 = this;
// destroy(err, cb) is a private API
// we can guarantee we have that here, because we control the
// Readable class this is attached to
return new Promise(function (resolve, reject) {
_this2[kStream].destroy(null, function (err) {
if (err) {
reject(err);
return;
}
resolve(createIterResult(undefined, true));
});
});
}), _Object$setPrototypeO), AsyncIteratorPrototype);
var createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {
var _Object$create;
var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {
value: stream,
writable: true
}), _defineProperty(_Object$create, kLastResolve, {
value: null,
writable: true
}), _defineProperty(_Object$create, kLastReject, {
value: null,
writable: true
}), _defineProperty(_Object$create, kError, {
value: null,
writable: true
}), _defineProperty(_Object$create, kEnded, {
value: stream._readableState.endEmitted,
writable: true
}), _defineProperty(_Object$create, kHandlePromise, {
value: function value(resolve, reject) {
var data = iterator[kStream].read();
if (data) {
iterator[kLastPromise] = null;
iterator[kLastResolve] = null;
iterator[kLastReject] = null;
resolve(createIterResult(data, false));
} else {
iterator[kLastResolve] = resolve;
iterator[kLastReject] = reject;
}
},
writable: true
}), _Object$create));
iterator[kLastPromise] = null;
finished(stream, function (err) {
if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {
var reject = iterator[kLastReject];
// reject if we are waiting for data in the Promise
// returned by next() and store the error
if (reject !== null) {
iterator[kLastPromise] = null;
iterator[kLastResolve] = null;
iterator[kLastReject] = null;
reject(err);
}
iterator[kError] = err;
return;
}
var resolve = iterator[kLastResolve];
if (resolve !== null) {
iterator[kLastPromise] = null;
iterator[kLastResolve] = null;
iterator[kLastReject] = null;
resolve(createIterResult(undefined, true));
}
iterator[kEnded] = true;
});
stream.on('readable', onReadable.bind(null, iterator));
return iterator;
};
module.exports = createReadableStreamAsyncIterator;
/***/ }),
/***/ 2726:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
var _require = __webpack_require__(8287),
Buffer = _require.Buffer;
var _require2 = __webpack_require__(5340),
inspect = _require2.inspect;
var custom = inspect && inspect.custom || 'inspect';
function copyBuffer(src, target, offset) {
Buffer.prototype.copy.call(src, target, offset);
}
module.exports = /*#__PURE__*/function () {
function BufferList() {
_classCallCheck(this, BufferList);
this.head = null;
this.tail = null;
this.length = 0;
}
_createClass(BufferList, [{
key: "push",
value: function push(v) {
var entry = {
data: v,
next: null
};
if (this.length > 0) this.tail.next = entry;else this.head = entry;
this.tail = entry;
++this.length;
}
}, {
key: "unshift",
value: function unshift(v) {
var entry = {
data: v,
next: this.head
};
if (this.length === 0) this.tail = entry;
this.head = entry;
++this.length;
}
}, {
key: "shift",
value: function shift() {
if (this.length === 0) return;
var ret = this.head.data;
if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
--this.length;
return ret;
}
}, {
key: "clear",
value: function clear() {
this.head = this.tail = null;
this.length = 0;
}
}, {
key: "join",
value: function join(s) {
if (this.length === 0) return '';
var p = this.head;
var ret = '' + p.data;
while (p = p.next) ret += s + p.data;
return ret;
}
}, {
key: "concat",
value: function concat(n) {
if (this.length === 0) return Buffer.alloc(0);
var ret = Buffer.allocUnsafe(n >>> 0);
var p = this.head;
var i = 0;
while (p) {
copyBuffer(p.data, ret, i);
i += p.data.length;
p = p.next;
}
return ret;
}
// Consumes a specified amount of bytes or characters from the buffered data.
}, {
key: "consume",
value: function consume(n, hasStrings) {
var ret;
if (n < this.head.data.length) {
// `slice` is the same for buffers and strings.
ret = this.head.data.slice(0, n);
this.head.data = this.head.data.slice(n);
} else if (n === this.head.data.length) {
// First chunk is a perfect match.
ret = this.shift();
} else {
// Result spans more than one buffer.
ret = hasStrings ? this._getString(n) : this._getBuffer(n);
}
return ret;
}
}, {
key: "first",
value: function first() {
return this.head.data;
}
// Consumes a specified amount of characters from the buffered data.
}, {
key: "_getString",
value: function _getString(n) {
var p = this.head;
var c = 1;
var ret = p.data;
n -= ret.length;
while (p = p.next) {
var str = p.data;
var nb = n > str.length ? str.length : n;
if (nb === str.length) ret += str;else ret += str.slice(0, n);
n -= nb;
if (n === 0) {
if (nb === str.length) {
++c;
if (p.next) this.head = p.next;else this.head = this.tail = null;
} else {
this.head = p;
p.data = str.slice(nb);
}
break;
}
++c;
}
this.length -= c;
return ret;
}
// Consumes a specified amount of bytes from the buffered data.
}, {
key: "_getBuffer",
value: function _getBuffer(n) {
var ret = Buffer.allocUnsafe(n);
var p = this.head;
var c = 1;
p.data.copy(ret);
n -= p.data.length;
while (p = p.next) {
var buf = p.data;
var nb = n > buf.length ? buf.length : n;
buf.copy(ret, ret.length - n, 0, nb);
n -= nb;
if (n === 0) {
if (nb === buf.length) {
++c;
if (p.next) this.head = p.next;else this.head = this.tail = null;
} else {
this.head = p;
p.data = buf.slice(nb);
}
break;
}
++c;
}
this.length -= c;
return ret;
}
// Make sure the linked list only shows the minimal necessary information.
}, {
key: custom,
value: function value(_, options) {
return inspect(this, _objectSpread(_objectSpread({}, options), {}, {
// Only inspect one level.
depth: 0,
// It should not recurse.
customInspect: false
}));
}
}]);
return BufferList;
}();
/***/ }),
/***/ 5896:
/***/ ((module) => {
"use strict";
// undocumented cb() API, needed for core, not for public API
function destroy(err, cb) {
var _this = this;
var readableDestroyed = this._readableState && this._readableState.destroyed;
var writableDestroyed = this._writableState && this._writableState.destroyed;
if (readableDestroyed || writableDestroyed) {
if (cb) {
cb(err);
} else if (err) {
if (!this._writableState) {
process.nextTick(emitErrorNT, this, err);
} else if (!this._writableState.errorEmitted) {
this._writableState.errorEmitted = true;
process.nextTick(emitErrorNT, this, err);
}
}
return this;
}
// we set destroyed to true before firing error callbacks in order
// to make it re-entrance safe in case destroy() is called within callbacks
if (this._readableState) {
this._readableState.destroyed = true;
}
// if this is a duplex stream mark the writable part as destroyed as well
if (this._writableState) {
this._writableState.destroyed = true;
}
this._destroy(err || null, function (err) {
if (!cb && err) {
if (!_this._writableState) {
process.nextTick(emitErrorAndCloseNT, _this, err);
} else if (!_this._writableState.errorEmitted) {
_this._writableState.errorEmitted = true;
process.nextTick(emitErrorAndCloseNT, _this, err);
} else {
process.nextTick(emitCloseNT, _this);
}
} else if (cb) {
process.nextTick(emitCloseNT, _this);
cb(err);
} else {
process.nextTick(emitCloseNT, _this);
}
});
return this;
}
function emitErrorAndCloseNT(self, err) {
emitErrorNT(self, err);
emitCloseNT(self);
}
function emitCloseNT(self) {
if (self._writableState && !self._writableState.emitClose) return;
if (self._readableState && !self._readableState.emitClose) return;
self.emit('close');
}
function undestroy() {
if (this._readableState) {
this._readableState.destroyed = false;
this._readableState.reading = false;
this._readableState.ended = false;
this._readableState.endEmitted = false;
}
if (this._writableState) {
this._writableState.destroyed = false;
this._writableState.ended = false;
this._writableState.ending = false;
this._writableState.finalCalled = false;
this._writableState.prefinished = false;
this._writableState.finished = false;
this._writableState.errorEmitted = false;
}
}
function emitErrorNT(self, err) {
self.emit('error', err);
}
function errorOrDestroy(stream, err) {
// We have tests that rely on errors being emitted
// in the same tick, so changing this is semver major.
// For now when you opt-in to autoDestroy we allow
// the error to be emitted nextTick. In a future
// semver major update we should change the default to this.
var rState = stream._readableState;
var wState = stream._writableState;
if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);
}
module.exports = {
destroy: destroy,
undestroy: undestroy,
errorOrDestroy: errorOrDestroy
};
/***/ }),
/***/ 6238:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
// Ported from https://github.com/mafintosh/end-of-stream with
// permission from the author, Mathias Buus (@mafintosh).
var ERR_STREAM_PREMATURE_CLOSE = (__webpack_require__(6048)/* .codes */ .F).ERR_STREAM_PREMATURE_CLOSE;
function once(callback) {
var called = false;
return function () {
if (called) return;
called = true;
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
callback.apply(this, args);
};
}
function noop() {}
function isRequest(stream) {
return stream.setHeader && typeof stream.abort === 'function';
}
function eos(stream, opts, callback) {
if (typeof opts === 'function') return eos(stream, null, opts);
if (!opts) opts = {};
callback = once(callback || noop);
var readable = opts.readable || opts.readable !== false && stream.readable;
var writable = opts.writable || opts.writable !== false && stream.writable;
var onlegacyfinish = function onlegacyfinish() {
if (!stream.writable) onfinish();
};
var writableEnded = stream._writableState && stream._writableState.finished;
var onfinish = function onfinish() {
writable = false;
writableEnded = true;
if (!readable) callback.call(stream);
};
var readableEnded = stream._readableState && stream._readableState.endEmitted;
var onend = function onend() {
readable = false;
readableEnded = true;
if (!writable) callback.call(stream);
};
var onerror = function onerror(err) {
callback.call(stream, err);
};
var onclose = function onclose() {
var err;
if (readable && !readableEnded) {
if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();
return callback.call(stream, err);
}
if (writable && !writableEnded) {
if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();
return callback.call(stream, err);
}
};
var onrequest = function onrequest() {
stream.req.on('finish', onfinish);
};
if (isRequest(stream)) {
stream.on('complete', onfinish);
stream.on('abort', onclose);
if (stream.req) onrequest();else stream.on('request', onrequest);
} else if (writable && !stream._writableState) {
// legacy streams
stream.on('end', onlegacyfinish);
stream.on('close', onlegacyfinish);
}
stream.on('end', onend);
stream.on('finish', onfinish);
if (opts.error !== false) stream.on('error', onerror);
stream.on('close', onclose);
return function () {
stream.removeListener('complete', onfinish);
stream.removeListener('abort', onclose);
stream.removeListener('request', onrequest);
if (stream.req) stream.req.removeListener('finish', onfinish);
stream.removeListener('end', onlegacyfinish);
stream.removeListener('close', onlegacyfinish);
stream.removeListener('finish', onfinish);
stream.removeListener('end', onend);
stream.removeListener('error', onerror);
stream.removeListener('close', onclose);
};
}
module.exports = eos;
/***/ }),
/***/ 5157:
/***/ ((module) => {
module.exports = function () {
throw new Error('Readable.from is not available in the browser')
};
/***/ }),
/***/ 7758:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
// Ported from https://github.com/mafintosh/pump with
// permission from the author, Mathias Buus (@mafintosh).
var eos;
function once(callback) {
var called = false;
return function () {
if (called) return;
called = true;
callback.apply(void 0, arguments);
};
}
var _require$codes = (__webpack_require__(6048)/* .codes */ .F),
ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,
ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;
function noop(err) {
// Rethrow the error if it exists to avoid swallowing it
if (err) throw err;
}
function isRequest(stream) {
return stream.setHeader && typeof stream.abort === 'function';
}
function destroyer(stream, reading, writing, callback) {
callback = once(callback);
var closed = false;
stream.on('close', function () {
closed = true;
});
if (eos === undefined) eos = __webpack_require__(6238);
eos(stream, {
readable: reading,
writable: writing
}, function (err) {
if (err) return callback(err);
closed = true;
callback();
});
var destroyed = false;
return function (err) {
if (closed) return;
if (destroyed) return;
destroyed = true;
// request.destroy just do .end - .abort is what we want
if (isRequest(stream)) return stream.abort();
if (typeof stream.destroy === 'function') return stream.destroy();
callback(err || new ERR_STREAM_DESTROYED('pipe'));
};
}
function call(fn) {
fn();
}
function pipe(from, to) {
return from.pipe(to);
}
function popCallback(streams) {
if (!streams.length) return noop;
if (typeof streams[streams.length - 1] !== 'function') return noop;
return streams.pop();
}
function pipeline() {
for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {
streams[_key] = arguments[_key];
}
var callback = popCallback(streams);
if (Array.isArray(streams[0])) streams = streams[0];
if (streams.length < 2) {
throw new ERR_MISSING_ARGS('streams');
}
var error;
var destroys = streams.map(function (stream, i) {
var reading = i < streams.length - 1;
var writing = i > 0;
return destroyer(stream, reading, writing, function (err) {
if (!error) error = err;
if (err) destroys.forEach(call);
if (reading) return;
destroys.forEach(call);
callback(error);
});
});
return streams.reduce(pipe);
}
module.exports = pipeline;
/***/ }),
/***/ 5291:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var ERR_INVALID_OPT_VALUE = (__webpack_require__(6048)/* .codes */ .F).ERR_INVALID_OPT_VALUE;
function highWaterMarkFrom(options, isDuplex, duplexKey) {
return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;
}
function getHighWaterMark(state, options, duplexKey, isDuplex) {
var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);
if (hwm != null) {
if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {
var name = isDuplex ? duplexKey : 'highWaterMark';
throw new ERR_INVALID_OPT_VALUE(name, hwm);
}
return Math.floor(hwm);
}
// Default value
return state.objectMode ? 16 : 16 * 1024;
}
module.exports = {
getHighWaterMark: getHighWaterMark
};
/***/ }),
/***/ 345:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
module.exports = __webpack_require__(7007).EventEmitter;
/***/ }),
/***/ 8399:
/***/ ((module, exports, __webpack_require__) => {
exports = module.exports = __webpack_require__(5412);
exports.Stream = exports;
exports.Readable = exports;
exports.Writable = __webpack_require__(6708);
exports.Duplex = __webpack_require__(5382);
exports.Transform = __webpack_require__(4610);
exports.PassThrough = __webpack_require__(3600);
exports.finished = __webpack_require__(6238);
exports.pipeline = __webpack_require__(7758);
/***/ }),
/***/ 6011:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var Buffer = (__webpack_require__(8287).Buffer)
var inherits = __webpack_require__(6698)
var HashBase = __webpack_require__(1147)
var ARRAY16 = new Array(16)
var zl = [
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,
3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,
1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
]
var zr = [
5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,
6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,
15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,
8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,
12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
]
var sl = [
11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,
7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,
11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,
11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,
9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
]
var sr = [
8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,
9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,
9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,
15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,
8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
]
var hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]
var hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]
function RIPEMD160 () {
HashBase.call(this, 64)
// state
this._a = 0x67452301
this._b = 0xefcdab89
this._c = 0x98badcfe
this._d = 0x10325476
this._e = 0xc3d2e1f0
}
inherits(RIPEMD160, HashBase)
RIPEMD160.prototype._update = function () {
var words = ARRAY16
for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)
var al = this._a | 0
var bl = this._b | 0
var cl = this._c | 0
var dl = this._d | 0
var el = this._e | 0
var ar = this._a | 0
var br = this._b | 0
var cr = this._c | 0
var dr = this._d | 0
var er = this._e | 0
// computation
for (var i = 0; i < 80; i += 1) {
var tl
var tr
if (i < 16) {
tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])
tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])
} else if (i < 32) {
tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])
tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])
} else if (i < 48) {
tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])
tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])
} else if (i < 64) {
tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])
tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])
} else { // if (i<80) {
tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])
tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])
}
al = el
el = dl
dl = rotl(cl, 10)
cl = bl
bl = tl
ar = er
er = dr
dr = rotl(cr, 10)
cr = br
br = tr
}
// update state
var t = (this._b + cl + dr) | 0
this._b = (this._c + dl + er) | 0
this._c = (this._d + el + ar) | 0
this._d = (this._e + al + br) | 0
this._e = (this._a + bl + cr) | 0
this._a = t
}
RIPEMD160.prototype._digest = function () {
// create padding and handle blocks
this._block[this._blockOffset++] = 0x80
if (this._blockOffset > 56) {
this._block.fill(0, this._blockOffset, 64)
this._update()
this._blockOffset = 0
}
this._block.fill(0, this._blockOffset, 56)
this._block.writeUInt32LE(this._length[0], 56)
this._block.writeUInt32LE(this._length[1], 60)
this._update()
// produce result
var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)
buffer.writeInt32LE(this._a, 0)
buffer.writeInt32LE(this._b, 4)
buffer.writeInt32LE(this._c, 8)
buffer.writeInt32LE(this._d, 12)
buffer.writeInt32LE(this._e, 16)
return buffer
}
function rotl (x, n) {
return (x << n) | (x >>> (32 - n))
}
function fn1 (a, b, c, d, e, m, k, s) {
return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0
}
function fn2 (a, b, c, d, e, m, k, s) {
return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0
}
function fn3 (a, b, c, d, e, m, k, s) {
return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0
}
function fn4 (a, b, c, d, e, m, k, s) {
return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0
}
function fn5 (a, b, c, d, e, m, k, s) {
return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0
}
module.exports = RIPEMD160
/***/ }),
/***/ 1147:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var Buffer = (__webpack_require__(2861).Buffer)
var Transform = (__webpack_require__(8399).Transform)
var inherits = __webpack_require__(6698)
function throwIfNotStringOrBuffer (val, prefix) {
if (!Buffer.isBuffer(val) && typeof val !== 'string') {
throw new TypeError(prefix + ' must be a string or a buffer')
}
}
function HashBase (blockSize) {
Transform.call(this)
this._block = Buffer.allocUnsafe(blockSize)
this._blockSize = blockSize
this._blockOffset = 0
this._length = [0, 0, 0, 0]
this._finalized = false
}
inherits(HashBase, Transform)
HashBase.prototype._transform = function (chunk, encoding, callback) {
var error = null
try {
this.update(chunk, encoding)
} catch (err) {
error = err
}
callback(error)
}
HashBase.prototype._flush = function (callback) {
var error = null
try {
this.push(this.digest())
} catch (err) {
error = err
}
callback(error)
}
HashBase.prototype.update = function (data, encoding) {
throwIfNotStringOrBuffer(data, 'Data')
if (this._finalized) throw new Error('Digest already called')
if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)
// consume data
var block = this._block
var offset = 0
while (this._blockOffset + data.length - offset >= this._blockSize) {
for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]
this._update()
this._blockOffset = 0
}
while (offset < data.length) block[this._blockOffset++] = data[offset++]
// update length
for (var j = 0, carry = data.length * 8; carry > 0; ++j) {
this._length[j] += carry
carry = (this._length[j] / 0x0100000000) | 0
if (carry > 0) this._length[j] -= 0x0100000000 * carry
}
return this
}
HashBase.prototype._update = function () {
throw new Error('_update is not implemented')
}
HashBase.prototype.digest = function (encoding) {
if (this._finalized) throw new Error('Digest already called')
this._finalized = true
var digest = this._digest()
if (encoding !== undefined) digest = digest.toString(encoding)
// reset state
this._block.fill(0)
this._blockOffset = 0
for (var i = 0; i < 4; ++i) this._length[i] = 0
return digest
}
HashBase.prototype._digest = function () {
throw new Error('_digest is not implemented')
}
module.exports = HashBase
/***/ }),
/***/ 2861:
/***/ ((module, exports, __webpack_require__) => {
/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
/* eslint-disable node/no-deprecated-api */
var buffer = __webpack_require__(8287)
var Buffer = buffer.Buffer
// alternative to using Object.keys for old browsers
function copyProps (src, dst) {
for (var key in src) {
dst[key] = src[key]
}
}
if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
module.exports = buffer
} else {
// Copy properties from require('buffer')
copyProps(buffer, exports)
exports.Buffer = SafeBuffer
}
function SafeBuffer (arg, encodingOrOffset, length) {
return Buffer(arg, encodingOrOffset, length)
}
SafeBuffer.prototype = Object.create(Buffer.prototype)
// Copy static methods from Buffer
copyProps(Buffer, SafeBuffer)
SafeBuffer.from = function (arg, encodingOrOffset, length) {
if (typeof arg === 'number') {
throw new TypeError('Argument must not be a number')
}
return Buffer(arg, encodingOrOffset, length)
}
SafeBuffer.alloc = function (size, fill, encoding) {
if (typeof size !== 'number') {
throw new TypeError('Argument must be a number')
}
var buf = Buffer(size)
if (fill !== undefined) {
if (typeof encoding === 'string') {
buf.fill(fill, encoding)
} else {
buf.fill(fill)
}
} else {
buf.fill(0)
}
return buf
}
SafeBuffer.allocUnsafe = function (size) {
if (typeof size !== 'number') {
throw new TypeError('Argument must be a number')
}
return Buffer(size)
}
SafeBuffer.allocUnsafeSlow = function (size) {
if (typeof size !== 'number') {
throw new TypeError('Argument must be a number')
}
return buffer.SlowBuffer(size)
}
/***/ }),
/***/ 6897:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var GetIntrinsic = __webpack_require__(453);
var define = __webpack_require__(41);
var hasDescriptors = __webpack_require__(592)();
var gOPD = __webpack_require__(5795);
var $TypeError = __webpack_require__(9675);
var $floor = GetIntrinsic('%Math.floor%');
/** @type {import('.')} */
module.exports = function setFunctionLength(fn, length) {
if (typeof fn !== 'function') {
throw new $TypeError('`fn` is not a function');
}
if (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {
throw new $TypeError('`length` must be a positive 32-bit integer');
}
var loose = arguments.length > 2 && !!arguments[2];
var functionLengthIsConfigurable = true;
var functionLengthIsWritable = true;
if ('length' in fn && gOPD) {
var desc = gOPD(fn, 'length');
if (desc && !desc.configurable) {
functionLengthIsConfigurable = false;
}
if (desc && !desc.writable) {
functionLengthIsWritable = false;
}
}
if (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {
if (hasDescriptors) {
define(/** @type {Parameters<define>[0]} */ (fn), 'length', length, true, true);
} else {
define(/** @type {Parameters<define>[0]} */ (fn), 'length', length);
}
}
return fn;
};
/***/ }),
/***/ 392:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var Buffer = (__webpack_require__(2861).Buffer)
// prototype class for hash functions
function Hash (blockSize, finalSize) {
this._block = Buffer.alloc(blockSize)
this._finalSize = finalSize
this._blockSize = blockSize
this._len = 0
}
Hash.prototype.update = function (data, enc) {
if (typeof data === 'string') {
enc = enc || 'utf8'
data = Buffer.from(data, enc)
}
var block = this._block
var blockSize = this._blockSize
var length = data.length
var accum = this._len
for (var offset = 0; offset < length;) {
var assigned = accum % blockSize
var remainder = Math.min(length - offset, blockSize - assigned)
for (var i = 0; i < remainder; i++) {
block[assigned + i] = data[offset + i]
}
accum += remainder
offset += remainder
if ((accum % blockSize) === 0) {
this._update(block)
}
}
this._len += length
return this
}
Hash.prototype.digest = function (enc) {
var rem = this._len % this._blockSize
this._block[rem] = 0x80
// zero (rem + 1) trailing bits, where (rem + 1) is the smallest
// non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize
this._block.fill(0, rem + 1)
if (rem >= this._finalSize) {
this._update(this._block)
this._block.fill(0)
}
var bits = this._len * 8
// uint32
if (bits <= 0xffffffff) {
this._block.writeUInt32BE(bits, this._blockSize - 4)
// uint64
} else {
var lowBits = (bits & 0xffffffff) >>> 0
var highBits = (bits - lowBits) / 0x100000000
this._block.writeUInt32BE(highBits, this._blockSize - 8)
this._block.writeUInt32BE(lowBits, this._blockSize - 4)
}
this._update(this._block)
var hash = this._hash()
return enc ? hash.toString(enc) : hash
}
Hash.prototype._update = function () {
throw new Error('_update must be implemented by subclass')
}
module.exports = Hash
/***/ }),
/***/ 2802:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var exports = module.exports = function SHA (algorithm) {
algorithm = algorithm.toLowerCase()
var Algorithm = exports[algorithm]
if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')
return new Algorithm()
}
exports.sha = __webpack_require__(7816)
exports.sha1 = __webpack_require__(3737)
exports.sha224 = __webpack_require__(6710)
exports.sha256 = __webpack_require__(4107)
exports.sha384 = __webpack_require__(2827)
exports.sha512 = __webpack_require__(2890)
/***/ }),
/***/ 7816:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
/*
* A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined
* in FIPS PUB 180-1
* This source code is derived from sha1.js of the same repository.
* The difference between SHA-0 and SHA-1 is just a bitwise rotate left
* operation was added.
*/
var inherits = __webpack_require__(6698)
var Hash = __webpack_require__(392)
var Buffer = (__webpack_require__(2861).Buffer)
var K = [
0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
]
var W = new Array(80)
function Sha () {
this.init()
this._w = W
Hash.call(this, 64, 56)
}
inherits(Sha, Hash)
Sha.prototype.init = function () {
this._a = 0x67452301
this._b = 0xefcdab89
this._c = 0x98badcfe
this._d = 0x10325476
this._e = 0xc3d2e1f0
return this
}
function rotl5 (num) {
return (num << 5) | (num >>> 27)
}
function rotl30 (num) {
return (num << 30) | (num >>> 2)
}
function ft (s, b, c, d) {
if (s === 0) return (b & c) | ((~b) & d)
if (s === 2) return (b & c) | (b & d) | (c & d)
return b ^ c ^ d
}
Sha.prototype._update = function (M) {
var W = this._w
var a = this._a | 0
var b = this._b | 0
var c = this._c | 0
var d = this._d | 0
var e = this._e | 0
for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]
for (var j = 0; j < 80; ++j) {
var s = ~~(j / 20)
var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
e = d
d = c
c = rotl30(b)
b = a
a = t
}
this._a = (a + this._a) | 0
this._b = (b + this._b) | 0
this._c = (c + this._c) | 0
this._d = (d + this._d) | 0
this._e = (e + this._e) | 0
}
Sha.prototype._hash = function () {
var H = Buffer.allocUnsafe(20)
H.writeInt32BE(this._a | 0, 0)
H.writeInt32BE(this._b | 0, 4)
H.writeInt32BE(this._c | 0, 8)
H.writeInt32BE(this._d | 0, 12)
H.writeInt32BE(this._e | 0, 16)
return H
}
module.exports = Sha
/***/ }),
/***/ 3737:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
/*
* A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
* in FIPS PUB 180-1
* Version 2.1a Copyright Paul Johnston 2000 - 2002.
* Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
* Distributed under the BSD License
* See http://pajhome.org.uk/crypt/md5 for details.
*/
var inherits = __webpack_require__(6698)
var Hash = __webpack_require__(392)
var Buffer = (__webpack_require__(2861).Buffer)
var K = [
0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0
]
var W = new Array(80)
function Sha1 () {
this.init()
this._w = W
Hash.call(this, 64, 56)
}
inherits(Sha1, Hash)
Sha1.prototype.init = function () {
this._a = 0x67452301
this._b = 0xefcdab89
this._c = 0x98badcfe
this._d = 0x10325476
this._e = 0xc3d2e1f0
return this
}
function rotl1 (num) {
return (num << 1) | (num >>> 31)
}
function rotl5 (num) {
return (num << 5) | (num >>> 27)
}
function rotl30 (num) {
return (num << 30) | (num >>> 2)
}
function ft (s, b, c, d) {
if (s === 0) return (b & c) | ((~b) & d)
if (s === 2) return (b & c) | (b & d) | (c & d)
return b ^ c ^ d
}
Sha1.prototype._update = function (M) {
var W = this._w
var a = this._a | 0
var b = this._b | 0
var c = this._c | 0
var d = this._d | 0
var e = this._e | 0
for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])
for (var j = 0; j < 80; ++j) {
var s = ~~(j / 20)
var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0
e = d
d = c
c = rotl30(b)
b = a
a = t
}
this._a = (a + this._a) | 0
this._b = (b + this._b) | 0
this._c = (c + this._c) | 0
this._d = (d + this._d) | 0
this._e = (e + this._e) | 0
}
Sha1.prototype._hash = function () {
var H = Buffer.allocUnsafe(20)
H.writeInt32BE(this._a | 0, 0)
H.writeInt32BE(this._b | 0, 4)
H.writeInt32BE(this._c | 0, 8)
H.writeInt32BE(this._d | 0, 12)
H.writeInt32BE(this._e | 0, 16)
return H
}
module.exports = Sha1
/***/ }),
/***/ 6710:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
/**
* A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
* in FIPS 180-2
* Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
* Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
*
*/
var inherits = __webpack_require__(6698)
var Sha256 = __webpack_require__(4107)
var Hash = __webpack_require__(392)
var Buffer = (__webpack_require__(2861).Buffer)
var W = new Array(64)
function Sha224 () {
this.init()
this._w = W // new Array(64)
Hash.call(this, 64, 56)
}
inherits(Sha224, Sha256)
Sha224.prototype.init = function () {
this._a = 0xc1059ed8
this._b = 0x367cd507
this._c = 0x3070dd17
this._d = 0xf70e5939
this._e = 0xffc00b31
this._f = 0x68581511
this._g = 0x64f98fa7
this._h = 0xbefa4fa4
return this
}
Sha224.prototype._hash = function () {
var H = Buffer.allocUnsafe(28)
H.writeInt32BE(this._a, 0)
H.writeInt32BE(this._b, 4)
H.writeInt32BE(this._c, 8)
H.writeInt32BE(this._d, 12)
H.writeInt32BE(this._e, 16)
H.writeInt32BE(this._f, 20)
H.writeInt32BE(this._g, 24)
return H
}
module.exports = Sha224
/***/ }),
/***/ 4107:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
/**
* A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined
* in FIPS 180-2
* Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.
* Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
*
*/
var inherits = __webpack_require__(6698)
var Hash = __webpack_require__(392)
var Buffer = (__webpack_require__(2861).Buffer)
var 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
]
var W = new Array(64)
function Sha256 () {
this.init()
this._w = W // new Array(64)
Hash.call(this, 64, 56)
}
inherits(Sha256, Hash)
Sha256.prototype.init = function () {
this._a = 0x6a09e667
this._b = 0xbb67ae85
this._c = 0x3c6ef372
this._d = 0xa54ff53a
this._e = 0x510e527f
this._f = 0x9b05688c
this._g = 0x1f83d9ab
this._h = 0x5be0cd19
return this
}
function ch (x, y, z) {
return z ^ (x & (y ^ z))
}
function maj (x, y, z) {
return (x & y) | (z & (x | y))
}
function sigma0 (x) {
return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)
}
function sigma1 (x) {
return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)
}
function gamma0 (x) {
return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)
}
function gamma1 (x) {
return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)
}
Sha256.prototype._update = function (M) {
var W = this._w
var a = this._a | 0
var b = this._b | 0
var c = this._c | 0
var d = this._d | 0
var e = this._e | 0
var f = this._f | 0
var g = this._g | 0
var h = this._h | 0
for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)
for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0
for (var j = 0; j < 64; ++j) {
var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0
var T2 = (sigma0(a) + maj(a, b, c)) | 0
h = g
g = f
f = e
e = (d + T1) | 0
d = c
c = b
b = a
a = (T1 + T2) | 0
}
this._a = (a + this._a) | 0
this._b = (b + this._b) | 0
this._c = (c + this._c) | 0
this._d = (d + this._d) | 0
this._e = (e + this._e) | 0
this._f = (f + this._f) | 0
this._g = (g + this._g) | 0
this._h = (h + this._h) | 0
}
Sha256.prototype._hash = function () {
var H = Buffer.allocUnsafe(32)
H.writeInt32BE(this._a, 0)
H.writeInt32BE(this._b, 4)
H.writeInt32BE(this._c, 8)
H.writeInt32BE(this._d, 12)
H.writeInt32BE(this._e, 16)
H.writeInt32BE(this._f, 20)
H.writeInt32BE(this._g, 24)
H.writeInt32BE(this._h, 28)
return H
}
module.exports = Sha256
/***/ }),
/***/ 2827:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var inherits = __webpack_require__(6698)
var SHA512 = __webpack_require__(2890)
var Hash = __webpack_require__(392)
var Buffer = (__webpack_require__(2861).Buffer)
var W = new Array(160)
function Sha384 () {
this.init()
this._w = W
Hash.call(this, 128, 112)
}
inherits(Sha384, SHA512)
Sha384.prototype.init = function () {
this._ah = 0xcbbb9d5d
this._bh = 0x629a292a
this._ch = 0x9159015a
this._dh = 0x152fecd8
this._eh = 0x67332667
this._fh = 0x8eb44a87
this._gh = 0xdb0c2e0d
this._hh = 0x47b5481d
this._al = 0xc1059ed8
this._bl = 0x367cd507
this._cl = 0x3070dd17
this._dl = 0xf70e5939
this._el = 0xffc00b31
this._fl = 0x68581511
this._gl = 0x64f98fa7
this._hl = 0xbefa4fa4
return this
}
Sha384.prototype._hash = function () {
var H = Buffer.allocUnsafe(48)
function writeInt64BE (h, l, offset) {
H.writeInt32BE(h, offset)
H.writeInt32BE(l, offset + 4)
}
writeInt64BE(this._ah, this._al, 0)
writeInt64BE(this._bh, this._bl, 8)
writeInt64BE(this._ch, this._cl, 16)
writeInt64BE(this._dh, this._dl, 24)
writeInt64BE(this._eh, this._el, 32)
writeInt64BE(this._fh, this._fl, 40)
return H
}
module.exports = Sha384
/***/ }),
/***/ 2890:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var inherits = __webpack_require__(6698)
var Hash = __webpack_require__(392)
var Buffer = (__webpack_require__(2861).Buffer)
var K = [
0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,
0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,
0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,
0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,
0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,
0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,
0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,
0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,
0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,
0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,
0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,
0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,
0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,
0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,
0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,
0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,
0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,
0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,
0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,
0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,
0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,
0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,
0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,
0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,
0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,
0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,
0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,
0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,
0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,
0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,
0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,
0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,
0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,
0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,
0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,
0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,
0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,
0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,
0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,
0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817
]
var W = new Array(160)
function Sha512 () {
this.init()
this._w = W
Hash.call(this, 128, 112)
}
inherits(Sha512, Hash)
Sha512.prototype.init = function () {
this._ah = 0x6a09e667
this._bh = 0xbb67ae85
this._ch = 0x3c6ef372
this._dh = 0xa54ff53a
this._eh = 0x510e527f
this._fh = 0x9b05688c
this._gh = 0x1f83d9ab
this._hh = 0x5be0cd19
this._al = 0xf3bcc908
this._bl = 0x84caa73b
this._cl = 0xfe94f82b
this._dl = 0x5f1d36f1
this._el = 0xade682d1
this._fl = 0x2b3e6c1f
this._gl = 0xfb41bd6b
this._hl = 0x137e2179
return this
}
function Ch (x, y, z) {
return z ^ (x & (y ^ z))
}
function maj (x, y, z) {
return (x & y) | (z & (x | y))
}
function sigma0 (x, xl) {
return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)
}
function sigma1 (x, xl) {
return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)
}
function Gamma0 (x, xl) {
return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)
}
function Gamma0l (x, xl) {
return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)
}
function Gamma1 (x, xl) {
return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)
}
function Gamma1l (x, xl) {
return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)
}
function getCarry (a, b) {
return (a >>> 0) < (b >>> 0) ? 1 : 0
}
Sha512.prototype._update = function (M) {
var W = this._w
var ah = this._ah | 0
var bh = this._bh | 0
var ch = this._ch | 0
var dh = this._dh | 0
var eh = this._eh | 0
var fh = this._fh | 0
var gh = this._gh | 0
var hh = this._hh | 0
var al = this._al | 0
var bl = this._bl | 0
var cl = this._cl | 0
var dl = this._dl | 0
var el = this._el | 0
var fl = this._fl | 0
var gl = this._gl | 0
var hl = this._hl | 0
for (var i = 0; i < 32; i += 2) {
W[i] = M.readInt32BE(i * 4)
W[i + 1] = M.readInt32BE(i * 4 + 4)
}
for (; i < 160; i += 2) {
var xh = W[i - 15 * 2]
var xl = W[i - 15 * 2 + 1]
var gamma0 = Gamma0(xh, xl)
var gamma0l = Gamma0l(xl, xh)
xh = W[i - 2 * 2]
xl = W[i - 2 * 2 + 1]
var gamma1 = Gamma1(xh, xl)
var gamma1l = Gamma1l(xl, xh)
// W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]
var Wi7h = W[i - 7 * 2]
var Wi7l = W[i - 7 * 2 + 1]
var Wi16h = W[i - 16 * 2]
var Wi16l = W[i - 16 * 2 + 1]
var Wil = (gamma0l + Wi7l) | 0
var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0
Wil = (Wil + gamma1l) | 0
Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0
Wil = (Wil + Wi16l) | 0
Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0
W[i] = Wih
W[i + 1] = Wil
}
for (var j = 0; j < 160; j += 2) {
Wih = W[j]
Wil = W[j + 1]
var majh = maj(ah, bh, ch)
var majl = maj(al, bl, cl)
var sigma0h = sigma0(ah, al)
var sigma0l = sigma0(al, ah)
var sigma1h = sigma1(eh, el)
var sigma1l = sigma1(el, eh)
// t1 = h + sigma1 + ch + K[j] + W[j]
var Kih = K[j]
var Kil = K[j + 1]
var chh = Ch(eh, fh, gh)
var chl = Ch(el, fl, gl)
var t1l = (hl + sigma1l) | 0
var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0
t1l = (t1l + chl) | 0
t1h = (t1h + chh + getCarry(t1l, chl)) | 0
t1l = (t1l + Kil) | 0
t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0
t1l = (t1l + Wil) | 0
t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0
// t2 = sigma0 + maj
var t2l = (sigma0l + majl) | 0
var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0
hh = gh
hl = gl
gh = fh
gl = fl
fh = eh
fl = el
el = (dl + t1l) | 0
eh = (dh + t1h + getCarry(el, dl)) | 0
dh = ch
dl = cl
ch = bh
cl = bl
bh = ah
bl = al
al = (t1l + t2l) | 0
ah = (t1h + t2h + getCarry(al, t1l)) | 0
}
this._al = (this._al + al) | 0
this._bl = (this._bl + bl) | 0
this._cl = (this._cl + cl) | 0
this._dl = (this._dl + dl) | 0
this._el = (this._el + el) | 0
this._fl = (this._fl + fl) | 0
this._gl = (this._gl + gl) | 0
this._hl = (this._hl + hl) | 0
this._ah = (this._ah + ah + getCarry(this._al, al)) | 0
this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0
this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0
this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0
this._eh = (this._eh + eh + getCarry(this._el, el)) | 0
this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0
this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0
this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0
}
Sha512.prototype._hash = function () {
var H = Buffer.allocUnsafe(64)
function writeInt64BE (h, l, offset) {
H.writeInt32BE(h, offset)
H.writeInt32BE(l, offset + 4)
}
writeInt64BE(this._ah, this._al, 0)
writeInt64BE(this._bh, this._bl, 8)
writeInt64BE(this._ch, this._cl, 16)
writeInt64BE(this._dh, this._dl, 24)
writeInt64BE(this._eh, this._el, 32)
writeInt64BE(this._fh, this._fl, 40)
writeInt64BE(this._gh, this._gl, 48)
writeInt64BE(this._hh, this._hl, 56)
return H
}
module.exports = Sha512
/***/ }),
/***/ 8310:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
// Copyright Joyent, Inc. and other Node contributors.
//
// 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.
module.exports = Stream;
var EE = (__webpack_require__(7007).EventEmitter);
var inherits = __webpack_require__(6698);
inherits(Stream, EE);
Stream.Readable = __webpack_require__(5412);
Stream.Writable = __webpack_require__(6708);
Stream.Duplex = __webpack_require__(5382);
Stream.Transform = __webpack_require__(4610);
Stream.PassThrough = __webpack_require__(3600);
Stream.finished = __webpack_require__(6238)
Stream.pipeline = __webpack_require__(7758)
// Backwards-compat with node 0.4.x
Stream.Stream = Stream;
// old-style streams. Note that the pipe method (the only relevant
// part of this class) is overridden in the Readable class.
function Stream() {
EE.call(this);
}
Stream.prototype.pipe = function(dest, options) {
var source = this;
function ondata(chunk) {
if (dest.writable) {
if (false === dest.write(chunk) && source.pause) {
source.pause();
}
}
}
source.on('data', ondata);
function ondrain() {
if (source.readable && source.resume) {
source.resume();
}
}
dest.on('drain', ondrain);
// If the 'end' option is not supplied, dest.end() will be called when
// source gets the 'end' or 'close' events. Only dest.end() once.
if (!dest._isStdio && (!options || options.end !== false)) {
source.on('end', onend);
source.on('close', onclose);
}
var didOnEnd = false;
function onend() {
if (didOnEnd) return;
didOnEnd = true;
dest.end();
}
function onclose() {
if (didOnEnd) return;
didOnEnd = true;
if (typeof dest.destroy === 'function') dest.destroy();
}
// don't leave dangling pipes when there are errors.
function onerror(er) {
cleanup();
if (EE.listenerCount(this, 'error') === 0) {
throw er; // Unhandled stream error in pipe.
}
}
source.on('error', onerror);
dest.on('error', onerror);
// remove all the event listeners that were added.
function cleanup() {
source.removeListener('data', ondata);
dest.removeListener('drain', ondrain);
source.removeListener('end', onend);
source.removeListener('close', onclose);
source.removeListener('error', onerror);
dest.removeListener('error', onerror);
source.removeListener('end', cleanup);
source.removeListener('close', cleanup);
dest.removeListener('close', cleanup);
}
source.on('end', cleanup);
source.on('close', cleanup);
dest.on('close', cleanup);
dest.emit('pipe', source);
// Allow for unix-like usage: A.pipe(B).pipe(C)
return dest;
};
/***/ }),
/***/ 3141:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
// Copyright Joyent, Inc. and other Node contributors.
//
// 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.
/*<replacement>*/
var Buffer = (__webpack_require__(2861).Buffer);
/*</replacement>*/
var isEncoding = Buffer.isEncoding || function (encoding) {
encoding = '' + encoding;
switch (encoding && encoding.toLowerCase()) {
case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':
return true;
default:
return false;
}
};
function _normalizeEncoding(enc) {
if (!enc) return 'utf8';
var retried;
while (true) {
switch (enc) {
case 'utf8':
case 'utf-8':
return 'utf8';
case 'ucs2':
case 'ucs-2':
case 'utf16le':
case 'utf-16le':
return 'utf16le';
case 'latin1':
case 'binary':
return 'latin1';
case 'base64':
case 'ascii':
case 'hex':
return enc;
default:
if (retried) return; // undefined
enc = ('' + enc).toLowerCase();
retried = true;
}
}
};
// Do not cache `Buffer.isEncoding` when checking encoding names as some
// modules monkey-patch it to support additional encodings
function normalizeEncoding(enc) {
var nenc = _normalizeEncoding(enc);
if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);
return nenc || enc;
}
// StringDecoder provides an interface for efficiently splitting a series of
// buffers into a series of JS strings without breaking apart multi-byte
// characters.
exports.I = StringDecoder;
function StringDecoder(encoding) {
this.encoding = normalizeEncoding(encoding);
var nb;
switch (this.encoding) {
case 'utf16le':
this.text = utf16Text;
this.end = utf16End;
nb = 4;
break;
case 'utf8':
this.fillLast = utf8FillLast;
nb = 4;
break;
case 'base64':
this.text = base64Text;
this.end = base64End;
nb = 3;
break;
default:
this.write = simpleWrite;
this.end = simpleEnd;
return;
}
this.lastNeed = 0;
this.lastTotal = 0;
this.lastChar = Buffer.allocUnsafe(nb);
}
StringDecoder.prototype.write = function (buf) {
if (buf.length === 0) return '';
var r;
var i;
if (this.lastNeed) {
r = this.fillLast(buf);
if (r === undefined) return '';
i = this.lastNeed;
this.lastNeed = 0;
} else {
i = 0;
}
if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);
return r || '';
};
StringDecoder.prototype.end = utf8End;
// Returns only complete characters in a Buffer
StringDecoder.prototype.text = utf8Text;
// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer
StringDecoder.prototype.fillLast = function (buf) {
if (this.lastNeed <= buf.length) {
buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);
return this.lastChar.toString(this.encoding, 0, this.lastTotal);
}
buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);
this.lastNeed -= buf.length;
};
// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a
// continuation byte. If an invalid byte is detected, -2 is returned.
function utf8CheckByte(byte) {
if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;
return byte >> 6 === 0x02 ? -1 : -2;
}
// Checks at most 3 bytes at the end of a Buffer in order to detect an
// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)
// needed to complete the UTF-8 character (if applicable) are returned.
function utf8CheckIncomplete(self, buf, i) {
var j = buf.length - 1;
if (j < i) return 0;
var nb = utf8CheckByte(buf[j]);
if (nb >= 0) {
if (nb > 0) self.lastNeed = nb - 1;
return nb;
}
if (--j < i || nb === -2) return 0;
nb = utf8CheckByte(buf[j]);
if (nb >= 0) {
if (nb > 0) self.lastNeed = nb - 2;
return nb;
}
if (--j < i || nb === -2) return 0;
nb = utf8CheckByte(buf[j]);
if (nb >= 0) {
if (nb > 0) {
if (nb === 2) nb = 0;else self.lastNeed = nb - 3;
}
return nb;
}
return 0;
}
// Validates as many continuation bytes for a multi-byte UTF-8 character as
// needed or are available. If we see a non-continuation byte where we expect
// one, we "replace" the validated continuation bytes we've seen so far with
// a single UTF-8 replacement character ('\ufffd'), to match v8's UTF-8 decoding
// behavior. The continuation byte check is included three times in the case
// where all of the continuation bytes for a character exist in the same buffer.
// It is also done this way as a slight performance increase instead of using a
// loop.
function utf8CheckExtraBytes(self, buf, p) {
if ((buf[0] & 0xC0) !== 0x80) {
self.lastNeed = 0;
return '\ufffd';
}
if (self.lastNeed > 1 && buf.length > 1) {
if ((buf[1] & 0xC0) !== 0x80) {
self.lastNeed = 1;
return '\ufffd';
}
if (self.lastNeed > 2 && buf.length > 2) {
if ((buf[2] & 0xC0) !== 0x80) {
self.lastNeed = 2;
return '\ufffd';
}
}
}
}
// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.
function utf8FillLast(buf) {
var p = this.lastTotal - this.lastNeed;
var r = utf8CheckExtraBytes(this, buf, p);
if (r !== undefined) return r;
if (this.lastNeed <= buf.length) {
buf.copy(this.lastChar, p, 0, this.lastNeed);
return this.lastChar.toString(this.encoding, 0, this.lastTotal);
}
buf.copy(this.lastChar, p, 0, buf.length);
this.lastNeed -= buf.length;
}
// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a
// partial character, the character's bytes are buffered until the required
// number of bytes are available.
function utf8Text(buf, i) {
var total = utf8CheckIncomplete(this, buf, i);
if (!this.lastNeed) return buf.toString('utf8', i);
this.lastTotal = total;
var end = buf.length - (total - this.lastNeed);
buf.copy(this.lastChar, 0, end);
return buf.toString('utf8', i, end);
}
// For UTF-8, a replacement character is added when ending on a partial
// character.
function utf8End(buf) {
var r = buf && buf.length ? this.write(buf) : '';
if (this.lastNeed) return r + '\ufffd';
return r;
}
// UTF-16LE typically needs two bytes per character, but even if we have an even
// number of bytes available, we need to check if we end on a leading/high
// surrogate. In that case, we need to wait for the next two bytes in order to
// decode the last character properly.
function utf16Text(buf, i) {
if ((buf.length - i) % 2 === 0) {
var r = buf.toString('utf16le', i);
if (r) {
var c = r.charCodeAt(r.length - 1);
if (c >= 0xD800 && c <= 0xDBFF) {
this.lastNeed = 2;
this.lastTotal = 4;
this.lastChar[0] = buf[buf.length - 2];
this.lastChar[1] = buf[buf.length - 1];
return r.slice(0, -1);
}
}
return r;
}
this.lastNeed = 1;
this.lastTotal = 2;
this.lastChar[0] = buf[buf.length - 1];
return buf.toString('utf16le', i, buf.length - 1);
}
// For UTF-16LE we do not explicitly append special replacement characters if we
// end on a partial character, we simply let v8 handle that.
function utf16End(buf) {
var r = buf && buf.length ? this.write(buf) : '';
if (this.lastNeed) {
var end = this.lastTotal - this.lastNeed;
return r + this.lastChar.toString('utf16le', 0, end);
}
return r;
}
function base64Text(buf, i) {
var n = (buf.length - i) % 3;
if (n === 0) return buf.toString('base64', i);
this.lastNeed = 3 - n;
this.lastTotal = 3;
if (n === 1) {
this.lastChar[0] = buf[buf.length - 1];
} else {
this.lastChar[0] = buf[buf.length - 2];
this.lastChar[1] = buf[buf.length - 1];
}
return buf.toString('base64', i, buf.length - n);
}
function base64End(buf) {
var r = buf && buf.length ? this.write(buf) : '';
if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);
return r;
}
// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)
function simpleWrite(buf) {
return buf.toString(this.encoding);
}
function simpleEnd(buf) {
return buf && buf.length ? this.write(buf) : '';
}
/***/ }),
/***/ 4643:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
/**
* Module exports.
*/
module.exports = deprecate;
/**
* Mark that a method should not be used.
* Returns a modified function which warns once by default.
*
* If `localStorage.noDeprecation = true` is set, then it is a no-op.
*
* If `localStorage.throwDeprecation = true` is set, then deprecated functions
* will throw an Error when invoked.
*
* If `localStorage.traceDeprecation = true` is set, then deprecated functions
* will invoke `console.trace()` instead of `console.error()`.
*
* @param {Function} fn - the function to deprecate
* @param {String} msg - the string to print to the console when `fn` is invoked
* @returns {Function} a new "deprecated" version of `fn`
* @api public
*/
function deprecate (fn, msg) {
if (config('noDeprecation')) {
return fn;
}
var warned = false;
function deprecated() {
if (!warned) {
if (config('throwDeprecation')) {
throw new Error(msg);
} else if (config('traceDeprecation')) {
console.trace(msg);
} else {
console.warn(msg);
}
warned = true;
}
return fn.apply(this, arguments);
}
return deprecated;
}
/**
* Checks `localStorage` for boolean values for the given `name`.
*
* @param {String} name
* @returns {Boolean}
* @api private
*/
function config (name) {
// accessing global.localStorage can trigger a DOMException in sandboxed iframes
try {
if (!__webpack_require__.g.localStorage) return false;
} catch (_) {
return false;
}
var val = __webpack_require__.g.localStorage[name];
if (null == val) return false;
return String(val).toLowerCase() === 'true';
}
/***/ }),
/***/ 1135:
/***/ ((module) => {
module.exports = function isBuffer(arg) {
return arg && typeof arg === 'object'
&& typeof arg.copy === 'function'
&& typeof arg.fill === 'function'
&& typeof arg.readUInt8 === 'function';
}
/***/ }),
/***/ 9032:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
// Currently in sync with Node.js lib/internal/util/types.js
// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9
var isArgumentsObject = __webpack_require__(7244);
var isGeneratorFunction = __webpack_require__(8184);
var whichTypedArray = __webpack_require__(5767);
var isTypedArray = __webpack_require__(5680);
function uncurryThis(f) {
return f.call.bind(f);
}
var BigIntSupported = typeof BigInt !== 'undefined';
var SymbolSupported = typeof Symbol !== 'undefined';
var ObjectToString = uncurryThis(Object.prototype.toString);
var numberValue = uncurryThis(Number.prototype.valueOf);
var stringValue = uncurryThis(String.prototype.valueOf);
var booleanValue = uncurryThis(Boolean.prototype.valueOf);
if (BigIntSupported) {
var bigIntValue = uncurryThis(BigInt.prototype.valueOf);
}
if (SymbolSupported) {
var symbolValue = uncurryThis(Symbol.prototype.valueOf);
}
function checkBoxedPrimitive(value, prototypeValueOf) {
if (typeof value !== 'object') {
return false;
}
try {
prototypeValueOf(value);
return true;
} catch(e) {
return false;
}
}
exports.isArgumentsObject = isArgumentsObject;
exports.isGeneratorFunction = isGeneratorFunction;
exports.isTypedArray = isTypedArray;
// Taken from here and modified for better browser support
// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js
function isPromise(input) {
return (
(
typeof Promise !== 'undefined' &&
input instanceof Promise
) ||
(
input !== null &&
typeof input === 'object' &&
typeof input.then === 'function' &&
typeof input.catch === 'function'
)
);
}
exports.isPromise = isPromise;
function isArrayBufferView(value) {
if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {
return ArrayBuffer.isView(value);
}
return (
isTypedArray(value) ||
isDataView(value)
);
}
exports.isArrayBufferView = isArrayBufferView;
function isUint8Array(value) {
return whichTypedArray(value) === 'Uint8Array';
}
exports.isUint8Array = isUint8Array;
function isUint8ClampedArray(value) {
return whichTypedArray(value) === 'Uint8ClampedArray';
}
exports.isUint8ClampedArray = isUint8ClampedArray;
function isUint16Array(value) {
return whichTypedArray(value) === 'Uint16Array';
}
exports.isUint16Array = isUint16Array;
function isUint32Array(value) {
return whichTypedArray(value) === 'Uint32Array';
}
exports.isUint32Array = isUint32Array;
function isInt8Array(value) {
return whichTypedArray(value) === 'Int8Array';
}
exports.isInt8Array = isInt8Array;
function isInt16Array(value) {
return whichTypedArray(value) === 'Int16Array';
}
exports.isInt16Array = isInt16Array;
function isInt32Array(value) {
return whichTypedArray(value) === 'Int32Array';
}
exports.isInt32Array = isInt32Array;
function isFloat32Array(value) {
return whichTypedArray(value) === 'Float32Array';
}
exports.isFloat32Array = isFloat32Array;
function isFloat64Array(value) {
return whichTypedArray(value) === 'Float64Array';
}
exports.isFloat64Array = isFloat64Array;
function isBigInt64Array(value) {
return whichTypedArray(value) === 'BigInt64Array';
}
exports.isBigInt64Array = isBigInt64Array;
function isBigUint64Array(value) {
return whichTypedArray(value) === 'BigUint64Array';
}
exports.isBigUint64Array = isBigUint64Array;
function isMapToString(value) {
return ObjectToString(value) === '[object Map]';
}
isMapToString.working = (
typeof Map !== 'undefined' &&
isMapToString(new Map())
);
function isMap(value) {
if (typeof Map === 'undefined') {
return false;
}
return isMapToString.working
? isMapToString(value)
: value instanceof Map;
}
exports.isMap = isMap;
function isSetToString(value) {
return ObjectToString(value) === '[object Set]';
}
isSetToString.working = (
typeof Set !== 'undefined' &&
isSetToString(new Set())
);
function isSet(value) {
if (typeof Set === 'undefined') {
return false;
}
return isSetToString.working
? isSetToString(value)
: value instanceof Set;
}
exports.isSet = isSet;
function isWeakMapToString(value) {
return ObjectToString(value) === '[object WeakMap]';
}
isWeakMapToString.working = (
typeof WeakMap !== 'undefined' &&
isWeakMapToString(new WeakMap())
);
function isWeakMap(value) {
if (typeof WeakMap === 'undefined') {
return false;
}
return isWeakMapToString.working
? isWeakMapToString(value)
: value instanceof WeakMap;
}
exports.isWeakMap = isWeakMap;
function isWeakSetToString(value) {
return ObjectToString(value) === '[object WeakSet]';
}
isWeakSetToString.working = (
typeof WeakSet !== 'undefined' &&
isWeakSetToString(new WeakSet())
);
function isWeakSet(value) {
return isWeakSetToString(value);
}
exports.isWeakSet = isWeakSet;
function isArrayBufferToString(value) {
return ObjectToString(value) === '[object ArrayBuffer]';
}
isArrayBufferToString.working = (
typeof ArrayBuffer !== 'undefined' &&
isArrayBufferToString(new ArrayBuffer())
);
function isArrayBuffer(value) {
if (typeof ArrayBuffer === 'undefined') {
return false;
}
return isArrayBufferToString.working
? isArrayBufferToString(value)
: value instanceof ArrayBuffer;
}
exports.isArrayBuffer = isArrayBuffer;
function isDataViewToString(value) {
return ObjectToString(value) === '[object DataView]';
}
isDataViewToString.working = (
typeof ArrayBuffer !== 'undefined' &&
typeof DataView !== 'undefined' &&
isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))
);
function isDataView(value) {
if (typeof DataView === 'undefined') {
return false;
}
return isDataViewToString.working
? isDataViewToString(value)
: value instanceof DataView;
}
exports.isDataView = isDataView;
// Store a copy of SharedArrayBuffer in case it's deleted elsewhere
var SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined;
function isSharedArrayBufferToString(value) {
return ObjectToString(value) === '[object SharedArrayBuffer]';
}
function isSharedArrayBuffer(value) {
if (typeof SharedArrayBufferCopy === 'undefined') {
return false;
}
if (typeof isSharedArrayBufferToString.working === 'undefined') {
isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());
}
return isSharedArrayBufferToString.working
? isSharedArrayBufferToString(value)
: value instanceof SharedArrayBufferCopy;
}
exports.isSharedArrayBuffer = isSharedArrayBuffer;
function isAsyncFunction(value) {
return ObjectToString(value) === '[object AsyncFunction]';
}
exports.isAsyncFunction = isAsyncFunction;
function isMapIterator(value) {
return ObjectToString(value) === '[object Map Iterator]';
}
exports.isMapIterator = isMapIterator;
function isSetIterator(value) {
return ObjectToString(value) === '[object Set Iterator]';
}
exports.isSetIterator = isSetIterator;
function isGeneratorObject(value) {
return ObjectToString(value) === '[object Generator]';
}
exports.isGeneratorObject = isGeneratorObject;
function isWebAssemblyCompiledModule(value) {
return ObjectToString(value) === '[object WebAssembly.Module]';
}
exports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;
function isNumberObject(value) {
return checkBoxedPrimitive(value, numberValue);
}
exports.isNumberObject = isNumberObject;
function isStringObject(value) {
return checkBoxedPrimitive(value, stringValue);
}
exports.isStringObject = isStringObject;
function isBooleanObject(value) {
return checkBoxedPrimitive(value, booleanValue);
}
exports.isBooleanObject = isBooleanObject;
function isBigIntObject(value) {
return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);
}
exports.isBigIntObject = isBigIntObject;
function isSymbolObject(value) {
return SymbolSupported && checkBoxedPrimitive(value, symbolValue);
}
exports.isSymbolObject = isSymbolObject;
function isBoxedPrimitive(value) {
return (
isNumberObject(value) ||
isStringObject(value) ||
isBooleanObject(value) ||
isBigIntObject(value) ||
isSymbolObject(value)
);
}
exports.isBoxedPrimitive = isBoxedPrimitive;
function isAnyArrayBuffer(value) {
return typeof Uint8Array !== 'undefined' && (
isArrayBuffer(value) ||
isSharedArrayBuffer(value)
);
}
exports.isAnyArrayBuffer = isAnyArrayBuffer;
['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {
Object.defineProperty(exports, method, {
enumerable: false,
value: function() {
throw new Error(method + ' is not supported in userland');
}
});
});
/***/ }),
/***/ 537:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
// Copyright Joyent, Inc. and other Node contributors.
//
// 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.
var getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||
function getOwnPropertyDescriptors(obj) {
var keys = Object.keys(obj);
var descriptors = {};
for (var i = 0; i < keys.length; i++) {
descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);
}
return descriptors;
};
var formatRegExp = /%[sdj%]/g;
exports.format = function(f) {
if (!isString(f)) {
var objects = [];
for (var i = 0; i < arguments.length; i++) {
objects.push(inspect(arguments[i]));
}
return objects.join(' ');
}
var i = 1;
var args = arguments;
var len = args.length;
var str = String(f).replace(formatRegExp, function(x) {
if (x === '%%') return '%';
if (i >= len) return x;
switch (x) {
case '%s': return String(args[i++]);
case '%d': return Number(args[i++]);
case '%j':
try {
return JSON.stringify(args[i++]);
} catch (_) {
return '[Circular]';
}
default:
return x;
}
});
for (var x = args[i]; i < len; x = args[++i]) {
if (isNull(x) || !isObject(x)) {
str += ' ' + x;
} else {
str += ' ' + inspect(x);
}
}
return str;
};
// Mark that a method should not be used.
// Returns a modified function which warns once by default.
// If --no-deprecation is set, then it is a no-op.
exports.deprecate = function(fn, msg) {
if (typeof process !== 'undefined' && process.noDeprecation === true) {
return fn;
}
// Allow for deprecating things in the process of starting up.
if (typeof process === 'undefined') {
return function() {
return exports.deprecate(fn, msg).apply(this, arguments);
};
}
var warned = false;
function deprecated() {
if (!warned) {
if (process.throwDeprecation) {
throw new Error(msg);
} else if (process.traceDeprecation) {
console.trace(msg);
} else {
console.error(msg);
}
warned = true;
}
return fn.apply(this, arguments);
}
return deprecated;
};
var debugs = {};
var debugEnvRegex = /^$/;
if (process.env.NODE_DEBUG) {
var debugEnv = process.env.NODE_DEBUG;
debugEnv = debugEnv.replace(/[|\\{}()[\]^$+?.]/g, '\\$&')
.replace(/\*/g, '.*')
.replace(/,/g, '$|^')
.toUpperCase();
debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');
}
exports.debuglog = function(set) {
set = set.toUpperCase();
if (!debugs[set]) {
if (debugEnvRegex.test(set)) {
var pid = process.pid;
debugs[set] = function() {
var msg = exports.format.apply(exports, arguments);
console.error('%s %d: %s', set, pid, msg);
};
} else {
debugs[set] = function() {};
}
}
return debugs[set];
};
/**
* Echos the value of a value. Trys to print the value out
* in the best way possible given the different types.
*
* @param {Object} obj The object to print out.
* @param {Object} opts Optional options object that alters the output.
*/
/* legacy: obj, showHidden, depth, colors*/
function inspect(obj, opts) {
// default options
var ctx = {
seen: [],
stylize: stylizeNoColor
};
// legacy...
if (arguments.length >= 3) ctx.depth = arguments[2];
if (arguments.length >= 4) ctx.colors = arguments[3];
if (isBoolean(opts)) {
// legacy...
ctx.showHidden = opts;
} else if (opts) {
// got an "options" object
exports._extend(ctx, opts);
}
// set default options
if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
if (isUndefined(ctx.depth)) ctx.depth = 2;
if (isUndefined(ctx.colors)) ctx.colors = false;
if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
if (ctx.colors) ctx.stylize = stylizeWithColor;
return formatValue(ctx, obj, ctx.depth);
}
exports.inspect = inspect;
// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
inspect.colors = {
'bold' : [1, 22],
'italic' : [3, 23],
'underline' : [4, 24],
'inverse' : [7, 27],
'white' : [37, 39],
'grey' : [90, 39],
'black' : [30, 39],
'blue' : [34, 39],
'cyan' : [36, 39],
'green' : [32, 39],
'magenta' : [35, 39],
'red' : [31, 39],
'yellow' : [33, 39]
};
// Don't use 'blue' not visible on cmd.exe
inspect.styles = {
'special': 'cyan',
'number': 'yellow',
'boolean': 'yellow',
'undefined': 'grey',
'null': 'bold',
'string': 'green',
'date': 'magenta',
// "name": intentionally not styling
'regexp': 'red'
};
function stylizeWithColor(str, styleType) {
var style = inspect.styles[styleType];
if (style) {
return '\u001b[' + inspect.colors[style][0] + 'm' + str +
'\u001b[' + inspect.colors[style][1] + 'm';
} else {
return str;
}
}
function stylizeNoColor(str, styleType) {
return str;
}
function arrayToHash(array) {
var hash = {};
array.forEach(function(val, idx) {
hash[val] = true;
});
return hash;
}
function formatValue(ctx, value, recurseTimes) {
// Provide a hook for user-specified inspect functions.
// Check that value is an object with an inspect function on it
if (ctx.customInspect &&
value &&
isFunction(value.inspect) &&
// Filter out the util module, it's inspect function is special
value.inspect !== exports.inspect &&
// Also filter out any prototype objects using the circular check.
!(value.constructor && value.constructor.prototype === value)) {
var ret = value.inspect(recurseTimes, ctx);
if (!isString(ret)) {
ret = formatValue(ctx, ret, recurseTimes);
}
return ret;
}
// Primitive types cannot have properties
var primitive = formatPrimitive(ctx, value);
if (primitive) {
return primitive;
}
// Look up the keys of the object.
var keys = Object.keys(value);
var visibleKeys = arrayToHash(keys);
if (ctx.showHidden) {
keys = Object.getOwnPropertyNames(value);
}
// IE doesn't make error fields non-enumerable
// http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
if (isError(value)
&& (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
return formatError(value);
}
// Some type of object without properties can be shortcutted.
if (keys.length === 0) {
if (isFunction(value)) {
var name = value.name ? ': ' + value.name : '';
return ctx.stylize('[Function' + name + ']', 'special');
}
if (isRegExp(value)) {
return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
}
if (isDate(value)) {
return ctx.stylize(Date.prototype.toString.call(value), 'date');
}
if (isError(value)) {
return formatError(value);
}
}
var base = '', array = false, braces = ['{', '}'];
// Make Array say that they are Array
if (isArray(value)) {
array = true;
braces = ['[', ']'];
}
// Make functions say that they are functions
if (isFunction(value)) {
var n = value.name ? ': ' + value.name : '';
base = ' [Function' + n + ']';
}
// Make RegExps say that they are RegExps
if (isRegExp(value)) {
base = ' ' + RegExp.prototype.toString.call(value);
}
// Make dates with properties first say the date
if (isDate(value)) {
base = ' ' + Date.prototype.toUTCString.call(value);
}
// Make error with message first say the error
if (isError(value)) {
base = ' ' + formatError(value);
}
if (keys.length === 0 && (!array || value.length == 0)) {
return braces[0] + base + braces[1];
}
if (recurseTimes < 0) {
if (isRegExp(value)) {
return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
} else {
return ctx.stylize('[Object]', 'special');
}
}
ctx.seen.push(value);
var output;
if (array) {
output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
} else {
output = keys.map(function(key) {
return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
});
}
ctx.seen.pop();
return reduceToSingleString(output, base, braces);
}
function formatPrimitive(ctx, value) {
if (isUndefined(value))
return ctx.stylize('undefined', 'undefined');
if (isString(value)) {
var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
.replace(/'/g, "\\'")
.replace(/\\"/g, '"') + '\'';
return ctx.stylize(simple, 'string');
}
if (isNumber(value))
return ctx.stylize('' + value, 'number');
if (isBoolean(value))
return ctx.stylize('' + value, 'boolean');
// For some reason typeof null is "object", so special case here.
if (isNull(value))
return ctx.stylize('null', 'null');
}
function formatError(value) {
return '[' + Error.prototype.toString.call(value) + ']';
}
function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
var output = [];
for (var i = 0, l = value.length; i < l; ++i) {
if (hasOwnProperty(value, String(i))) {
output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
String(i), true));
} else {
output.push('');
}
}
keys.forEach(function(key) {
if (!key.match(/^\d+$/)) {
output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
key, true));
}
});
return output;
}
function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
var name, str, desc;
desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
if (desc.get) {
if (desc.set) {
str = ctx.stylize('[Getter/Setter]', 'special');
} else {
str = ctx.stylize('[Getter]', 'special');
}
} else {
if (desc.set) {
str = ctx.stylize('[Setter]', 'special');
}
}
if (!hasOwnProperty(visibleKeys, key)) {
name = '[' + key + ']';
}
if (!str) {
if (ctx.seen.indexOf(desc.value) < 0) {
if (isNull(recurseTimes)) {
str = formatValue(ctx, desc.value, null);
} else {
str = formatValue(ctx, desc.value, recurseTimes - 1);
}
if (str.indexOf('\n') > -1) {
if (array) {
str = str.split('\n').map(function(line) {
return ' ' + line;
}).join('\n').slice(2);
} else {
str = '\n' + str.split('\n').map(function(line) {
return ' ' + line;
}).join('\n');
}
}
} else {
str = ctx.stylize('[Circular]', 'special');
}
}
if (isUndefined(name)) {
if (array && key.match(/^\d+$/)) {
return str;
}
name = JSON.stringify('' + key);
if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
name = name.slice(1, -1);
name = ctx.stylize(name, 'name');
} else {
name = name.replace(/'/g, "\\'")
.replace(/\\"/g, '"')
.replace(/(^"|"$)/g, "'");
name = ctx.stylize(name, 'string');
}
}
return name + ': ' + str;
}
function reduceToSingleString(output, base, braces) {
var numLinesEst = 0;
var length = output.reduce(function(prev, cur) {
numLinesEst++;
if (cur.indexOf('\n') >= 0) numLinesEst++;
return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
}, 0);
if (length > 60) {
return braces[0] +
(base === '' ? '' : base + '\n ') +
' ' +
output.join(',\n ') +
' ' +
braces[1];
}
return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
}
// NOTE: These type checking functions intentionally don't use `instanceof`
// because it is fragile and can be easily faked with `Object.create()`.
exports.types = __webpack_require__(9032);
function isArray(ar) {
return Array.isArray(ar);
}
exports.isArray = isArray;
function isBoolean(arg) {
return typeof arg === 'boolean';
}
exports.isBoolean = isBoolean;
function isNull(arg) {
return arg === null;
}
exports.isNull = isNull;
function isNullOrUndefined(arg) {
return arg == null;
}
exports.isNullOrUndefined = isNullOrUndefined;
function isNumber(arg) {
return typeof arg === 'number';
}
exports.isNumber = isNumber;
function isString(arg) {
return typeof arg === 'string';
}
exports.isString = isString;
function isSymbol(arg) {
return typeof arg === 'symbol';
}
exports.isSymbol = isSymbol;
function isUndefined(arg) {
return arg === void 0;
}
exports.isUndefined = isUndefined;
function isRegExp(re) {
return isObject(re) && objectToString(re) === '[object RegExp]';
}
exports.isRegExp = isRegExp;
exports.types.isRegExp = isRegExp;
function isObject(arg) {
return typeof arg === 'object' && arg !== null;
}
exports.isObject = isObject;
function isDate(d) {
return isObject(d) && objectToString(d) === '[object Date]';
}
exports.isDate = isDate;
exports.types.isDate = isDate;
function isError(e) {
return isObject(e) &&
(objectToString(e) === '[object Error]' || e instanceof Error);
}
exports.isError = isError;
exports.types.isNativeError = isError;
function isFunction(arg) {
return typeof arg === 'function';
}
exports.isFunction = isFunction;
function isPrimitive(arg) {
return arg === null ||
typeof arg === 'boolean' ||
typeof arg === 'number' ||
typeof arg === 'string' ||
typeof arg === 'symbol' || // ES6 symbol
typeof arg === 'undefined';
}
exports.isPrimitive = isPrimitive;
exports.isBuffer = __webpack_require__(1135);
function objectToString(o) {
return Object.prototype.toString.call(o);
}
function pad(n) {
return n < 10 ? '0' + n.toString(10) : n.toString(10);
}
var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
'Oct', 'Nov', 'Dec'];
// 26 Feb 16:19:34
function timestamp() {
var d = new Date();
var time = [pad(d.getHours()),
pad(d.getMinutes()),
pad(d.getSeconds())].join(':');
return [d.getDate(), months[d.getMonth()], time].join(' ');
}
// log is just a thin wrapper to console.log that prepends a timestamp
exports.log = function() {
console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
};
/**
* Inherit the prototype methods from one constructor into another.
*
* The Function.prototype.inherits from lang.js rewritten as a standalone
* function (not on Function.prototype). NOTE: If this file is to be loaded
* during bootstrapping this function needs to be rewritten using some native
* functions as prototype setup using normal JavaScript does not work as
* expected during bootstrapping (see mirror.js in r114903).
*
* @param {function} ctor Constructor function which needs to inherit the
* prototype.
* @param {function} superCtor Constructor function to inherit prototype from.
*/
exports.inherits = __webpack_require__(6698);
exports._extend = function(origin, add) {
// Don't do anything if add isn't an object
if (!add || !isObject(add)) return origin;
var keys = Object.keys(add);
var i = keys.length;
while (i--) {
origin[keys[i]] = add[keys[i]];
}
return origin;
};
function hasOwnProperty(obj, prop) {
return Object.prototype.hasOwnProperty.call(obj, prop);
}
var kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;
exports.promisify = function promisify(original) {
if (typeof original !== 'function')
throw new TypeError('The "original" argument must be of type Function');
if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {
var fn = original[kCustomPromisifiedSymbol];
if (typeof fn !== 'function') {
throw new TypeError('The "util.promisify.custom" argument must be of type Function');
}
Object.defineProperty(fn, kCustomPromisifiedSymbol, {
value: fn, enumerable: false, writable: false, configurable: true
});
return fn;
}
function fn() {
var promiseResolve, promiseReject;
var promise = new Promise(function (resolve, reject) {
promiseResolve = resolve;
promiseReject = reject;
});
var args = [];
for (var i = 0; i < arguments.length; i++) {
args.push(arguments[i]);
}
args.push(function (err, value) {
if (err) {
promiseReject(err);
} else {
promiseResolve(value);
}
});
try {
original.apply(this, args);
} catch (err) {
promiseReject(err);
}
return promise;
}
Object.setPrototypeOf(fn, Object.getPrototypeOf(original));
if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {
value: fn, enumerable: false, writable: false, configurable: true
});
return Object.defineProperties(
fn,
getOwnPropertyDescriptors(original)
);
}
exports.promisify.custom = kCustomPromisifiedSymbol
function callbackifyOnRejected(reason, cb) {
// `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).
// Because `null` is a special error value in callbacks which means "no error
// occurred", we error-wrap so the callback consumer can distinguish between
// "the promise rejected with null" or "the promise fulfilled with undefined".
if (!reason) {
var newReason = new Error('Promise was rejected with a falsy value');
newReason.reason = reason;
reason = newReason;
}
return cb(reason);
}
function callbackify(original) {
if (typeof original !== 'function') {
throw new TypeError('The "original" argument must be of type Function');
}
// We DO NOT return the promise as it gives the user a false sense that
// the promise is actually somehow related to the callback's execution
// and that the callback throwing will reject the promise.
function callbackified() {
var args = [];
for (var i = 0; i < arguments.length; i++) {
args.push(arguments[i]);
}
var maybeCb = args.pop();
if (typeof maybeCb !== 'function') {
throw new TypeError('The last argument must be of type Function');
}
var self = this;
var cb = function() {
return maybeCb.apply(self, arguments);
};
// In true node style we process the callback on `nextTick` with all the
// implications (stack, `uncaughtException`, `async_hooks`)
original.apply(this, args)
.then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },
function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });
}
Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));
Object.defineProperties(callbackified,
getOwnPropertyDescriptors(original));
return callbackified;
}
exports.callbackify = callbackify;
/***/ }),
/***/ 8961:
/***/ ((__unused_webpack_module, exports) => {
var indexOf = function (xs, item) {
if (xs.indexOf) return xs.indexOf(item);
else for (var i = 0; i < xs.length; i++) {
if (xs[i] === item) return i;
}
return -1;
};
var Object_keys = function (obj) {
if (Object.keys) return Object.keys(obj)
else {
var res = [];
for (var key in obj) res.push(key)
return res;
}
};
var forEach = function (xs, fn) {
if (xs.forEach) return xs.forEach(fn)
else for (var i = 0; i < xs.length; i++) {
fn(xs[i], i, xs);
}
};
var defineProp = (function() {
try {
Object.defineProperty({}, '_', {});
return function(obj, name, value) {
Object.defineProperty(obj, name, {
writable: true,
enumerable: false,
configurable: true,
value: value
})
};
} catch(e) {
return function(obj, name, value) {
obj[name] = value;
};
}
}());
var globals = ['Array', 'Boolean', 'Date', 'Error', 'EvalError', 'Function',
'Infinity', 'JSON', 'Math', 'NaN', 'Number', 'Object', 'RangeError',
'ReferenceError', 'RegExp', 'String', 'SyntaxError', 'TypeError', 'URIError',
'decodeURI', 'decodeURIComponent', 'encodeURI', 'encodeURIComponent', 'escape',
'eval', 'isFinite', 'isNaN', 'parseFloat', 'parseInt', 'undefined', 'unescape'];
function Context() {}
Context.prototype = {};
var Script = exports.Script = function NodeScript (code) {
if (!(this instanceof Script)) return new Script(code);
this.code = code;
};
Script.prototype.runInContext = function (context) {
if (!(context instanceof Context)) {
throw new TypeError("needs a 'context' argument.");
}
var iframe = document.createElement('iframe');
if (!iframe.style) iframe.style = {};
iframe.style.display = 'none';
document.body.appendChild(iframe);
var win = iframe.contentWindow;
var wEval = win.eval, wExecScript = win.execScript;
if (!wEval && wExecScript) {
// win.eval() magically appears when this is called in IE:
wExecScript.call(win, 'null');
wEval = win.eval;
}
forEach(Object_keys(context), function (key) {
win[key] = context[key];
});
forEach(globals, function (key) {
if (context[key]) {
win[key] = context[key];
}
});
var winKeys = Object_keys(win);
var res = wEval.call(win, this.code);
forEach(Object_keys(win), function (key) {
// Avoid copying circular objects like `top` and `window` by only
// updating existing context properties or new properties in the `win`
// that was only introduced after the eval.
if (key in context || indexOf(winKeys, key) === -1) {
context[key] = win[key];
}
});
forEach(globals, function (key) {
if (!(key in context)) {
defineProp(context, key, win[key]);
}
});
document.body.removeChild(iframe);
return res;
};
Script.prototype.runInThisContext = function () {
return eval(this.code); // maybe...
};
Script.prototype.runInNewContext = function (context) {
var ctx = Script.createContext(context);
var res = this.runInContext(ctx);
if (context) {
forEach(Object_keys(ctx), function (key) {
context[key] = ctx[key];
});
}
return res;
};
forEach(Object_keys(Script.prototype), function (name) {
exports[name] = Script[name] = function (code) {
var s = Script(code);
return s[name].apply(s, [].slice.call(arguments, 1));
};
});
exports.isContext = function (context) {
return context instanceof Context;
};
exports.createScript = function (code) {
return exports.Script(code);
};
exports.createContext = Script.createContext = function (context) {
var copy = new Context();
if(typeof context === 'object') {
forEach(Object_keys(context), function (key) {
copy[key] = context[key];
});
}
return copy;
};
/***/ }),
/***/ 5767:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var forEach = __webpack_require__(2682);
var availableTypedArrays = __webpack_require__(9209);
var callBind = __webpack_require__(487);
var callBound = __webpack_require__(8075);
var gOPD = __webpack_require__(5795);
/** @type {(O: object) => string} */
var $toString = callBound('Object.prototype.toString');
var hasToStringTag = __webpack_require__(9092)();
var g = typeof globalThis === 'undefined' ? __webpack_require__.g : globalThis;
var typedArrays = availableTypedArrays();
var $slice = callBound('String.prototype.slice');
var getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');
/** @type {<T = unknown>(array: readonly T[], value: unknown) => number} */
var $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {
for (var i = 0; i < array.length; i += 1) {
if (array[i] === value) {
return i;
}
}
return -1;
};
/** @typedef {(receiver: import('.').TypedArray) => string | typeof Uint8Array.prototype.slice.call | typeof Uint8Array.prototype.set.call} Getter */
/** @type {{ [k in `\$${import('.').TypedArrayName}`]?: Getter } & { __proto__: null }} */
var cache = { __proto__: null };
if (hasToStringTag && gOPD && getPrototypeOf) {
forEach(typedArrays, function (typedArray) {
var arr = new g[typedArray]();
if (Symbol.toStringTag in arr) {
var proto = getPrototypeOf(arr);
// @ts-expect-error TS won't narrow inside a closure
var descriptor = gOPD(proto, Symbol.toStringTag);
if (!descriptor) {
var superProto = getPrototypeOf(proto);
// @ts-expect-error TS won't narrow inside a closure
descriptor = gOPD(superProto, Symbol.toStringTag);
}
// @ts-expect-error TODO: fix
cache['$' + typedArray] = callBind(descriptor.get);
}
});
} else {
forEach(typedArrays, function (typedArray) {
var arr = new g[typedArray]();
var fn = arr.slice || arr.set;
if (fn) {
// @ts-expect-error TODO: fix
cache['$' + typedArray] = callBind(fn);
}
});
}
/** @type {(value: object) => false | import('.').TypedArrayName} */
var tryTypedArrays = function tryAllTypedArrays(value) {
/** @type {ReturnType<typeof tryAllTypedArrays>} */ var found = false;
forEach(
// eslint-disable-next-line no-extra-parens
/** @type {Record<`\$${TypedArrayName}`, Getter>} */ /** @type {any} */ (cache),
/** @type {(getter: Getter, name: `\$${import('.').TypedArrayName}`) => void} */
function (getter, typedArray) {
if (!found) {
try {
// @ts-expect-error TODO: fix
if ('$' + getter(value) === typedArray) {
found = $slice(typedArray, 1);
}
} catch (e) { /**/ }
}
}
);
return found;
};
/** @type {(value: object) => false | import('.').TypedArrayName} */
var trySlices = function tryAllSlices(value) {
/** @type {ReturnType<typeof tryAllSlices>} */ var found = false;
forEach(
// eslint-disable-next-line no-extra-parens
/** @type {Record<`\$${TypedArrayName}`, Getter>} */ /** @type {any} */ (cache),
/** @type {(getter: typeof cache, name: `\$${import('.').TypedArrayName}`) => void} */ function (getter, name) {
if (!found) {
try {
// @ts-expect-error TODO: fix
getter(value);
found = $slice(name, 1);
} catch (e) { /**/ }
}
}
);
return found;
};
/** @type {import('.')} */
module.exports = function whichTypedArray(value) {
if (!value || typeof value !== 'object') { return false; }
if (!hasToStringTag) {
/** @type {string} */
var tag = $slice($toString(value), 8, -1);
if ($indexOf(typedArrays, tag) > -1) {
return tag;
}
if (tag !== 'Object') {
return false;
}
// node < 0.6 hits here on real Typed Arrays
return trySlices(value);
}
if (!gOPD) { return null; } // unknown engine
return tryTypedArrays(value);
};
/***/ }),
/***/ 8982:
/***/ (() => {
/* (ignored) */
/***/ }),
/***/ 7790:
/***/ (() => {
/* (ignored) */
/***/ }),
/***/ 3776:
/***/ (() => {
/* (ignored) */
/***/ }),
/***/ 1638:
/***/ (() => {
/* (ignored) */
/***/ }),
/***/ 2668:
/***/ (() => {
/* (ignored) */
/***/ }),
/***/ 7965:
/***/ (() => {
/* (ignored) */
/***/ }),
/***/ 6089:
/***/ (() => {
/* (ignored) */
/***/ }),
/***/ 9368:
/***/ (() => {
/* (ignored) */
/***/ }),
/***/ 4688:
/***/ (() => {
/* (ignored) */
/***/ }),
/***/ 1069:
/***/ (() => {
/* (ignored) */
/***/ }),
/***/ 5340:
/***/ (() => {
/* (ignored) */
/***/ }),
/***/ 9838:
/***/ (() => {
/* (ignored) */
/***/ }),
/***/ 7882:
/***/ (() => {
/* (ignored) */
/***/ }),
/***/ 9209:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var possibleNames = __webpack_require__(6578);
var g = typeof globalThis === 'undefined' ? __webpack_require__.g : globalThis;
/** @type {import('.')} */
module.exports = function availableTypedArrays() {
var /** @type {ReturnType<typeof availableTypedArrays>} */ out = [];
for (var i = 0; i < possibleNames.length; i++) {
if (typeof g[possibleNames[i]] === 'function') {
// @ts-expect-error
out[out.length] = possibleNames[i];
}
}
return out;
};
/***/ }),
/***/ 3219:
/***/ ((module) => {
"use strict";
module.exports = /*#__PURE__*/JSON.parse('{"aes-128-ecb":{"cipher":"AES","key":128,"iv":0,"mode":"ECB","type":"block"},"aes-192-ecb":{"cipher":"AES","key":192,"iv":0,"mode":"ECB","type":"block"},"aes-256-ecb":{"cipher":"AES","key":256,"iv":0,"mode":"ECB","type":"block"},"aes-128-cbc":{"cipher":"AES","key":128,"iv":16,"mode":"CBC","type":"block"},"aes-192-cbc":{"cipher":"AES","key":192,"iv":16,"mode":"CBC","type":"block"},"aes-256-cbc":{"cipher":"AES","key":256,"iv":16,"mode":"CBC","type":"block"},"aes128":{"cipher":"AES","key":128,"iv":16,"mode":"CBC","type":"block"},"aes192":{"cipher":"AES","key":192,"iv":16,"mode":"CBC","type":"block"},"aes256":{"cipher":"AES","key":256,"iv":16,"mode":"CBC","type":"block"},"aes-128-cfb":{"cipher":"AES","key":128,"iv":16,"mode":"CFB","type":"stream"},"aes-192-cfb":{"cipher":"AES","key":192,"iv":16,"mode":"CFB","type":"stream"},"aes-256-cfb":{"cipher":"AES","key":256,"iv":16,"mode":"CFB","type":"stream"},"aes-128-cfb8":{"cipher":"AES","key":128,"iv":16,"mode":"CFB8","type":"stream"},"aes-192-cfb8":{"cipher":"AES","key":192,"iv":16,"mode":"CFB8","type":"stream"},"aes-256-cfb8":{"cipher":"AES","key":256,"iv":16,"mode":"CFB8","type":"stream"},"aes-128-cfb1":{"cipher":"AES","key":128,"iv":16,"mode":"CFB1","type":"stream"},"aes-192-cfb1":{"cipher":"AES","key":192,"iv":16,"mode":"CFB1","type":"stream"},"aes-256-cfb1":{"cipher":"AES","key":256,"iv":16,"mode":"CFB1","type":"stream"},"aes-128-ofb":{"cipher":"AES","key":128,"iv":16,"mode":"OFB","type":"stream"},"aes-192-ofb":{"cipher":"AES","key":192,"iv":16,"mode":"OFB","type":"stream"},"aes-256-ofb":{"cipher":"AES","key":256,"iv":16,"mode":"OFB","type":"stream"},"aes-128-ctr":{"cipher":"AES","key":128,"iv":16,"mode":"CTR","type":"stream"},"aes-192-ctr":{"cipher":"AES","key":192,"iv":16,"mode":"CTR","type":"stream"},"aes-256-ctr":{"cipher":"AES","key":256,"iv":16,"mode":"CTR","type":"stream"},"aes-128-gcm":{"cipher":"AES","key":128,"iv":12,"mode":"GCM","type":"auth"},"aes-192-gcm":{"cipher":"AES","key":192,"iv":12,"mode":"GCM","type":"auth"},"aes-256-gcm":{"cipher":"AES","key":256,"iv":12,"mode":"GCM","type":"auth"}}');
/***/ }),
/***/ 2951:
/***/ ((module) => {
"use strict";
module.exports = /*#__PURE__*/JSON.parse('{"sha224WithRSAEncryption":{"sign":"rsa","hash":"sha224","id":"302d300d06096086480165030402040500041c"},"RSA-SHA224":{"sign":"ecdsa/rsa","hash":"sha224","id":"302d300d06096086480165030402040500041c"},"sha256WithRSAEncryption":{"sign":"rsa","hash":"sha256","id":"3031300d060960864801650304020105000420"},"RSA-SHA256":{"sign":"ecdsa/rsa","hash":"sha256","id":"3031300d060960864801650304020105000420"},"sha384WithRSAEncryption":{"sign":"rsa","hash":"sha384","id":"3041300d060960864801650304020205000430"},"RSA-SHA384":{"sign":"ecdsa/rsa","hash":"sha384","id":"3041300d060960864801650304020205000430"},"sha512WithRSAEncryption":{"sign":"rsa","hash":"sha512","id":"3051300d060960864801650304020305000440"},"RSA-SHA512":{"sign":"ecdsa/rsa","hash":"sha512","id":"3051300d060960864801650304020305000440"},"RSA-SHA1":{"sign":"rsa","hash":"sha1","id":"3021300906052b0e03021a05000414"},"ecdsa-with-SHA1":{"sign":"ecdsa","hash":"sha1","id":""},"sha256":{"sign":"ecdsa","hash":"sha256","id":""},"sha224":{"sign":"ecdsa","hash":"sha224","id":""},"sha384":{"sign":"ecdsa","hash":"sha384","id":""},"sha512":{"sign":"ecdsa","hash":"sha512","id":""},"DSA-SHA":{"sign":"dsa","hash":"sha1","id":""},"DSA-SHA1":{"sign":"dsa","hash":"sha1","id":""},"DSA":{"sign":"dsa","hash":"sha1","id":""},"DSA-WITH-SHA224":{"sign":"dsa","hash":"sha224","id":""},"DSA-SHA224":{"sign":"dsa","hash":"sha224","id":""},"DSA-WITH-SHA256":{"sign":"dsa","hash":"sha256","id":""},"DSA-SHA256":{"sign":"dsa","hash":"sha256","id":""},"DSA-WITH-SHA384":{"sign":"dsa","hash":"sha384","id":""},"DSA-SHA384":{"sign":"dsa","hash":"sha384","id":""},"DSA-WITH-SHA512":{"sign":"dsa","hash":"sha512","id":""},"DSA-SHA512":{"sign":"dsa","hash":"sha512","id":""},"DSA-RIPEMD160":{"sign":"dsa","hash":"rmd160","id":""},"ripemd160WithRSA":{"sign":"rsa","hash":"rmd160","id":"3021300906052b2403020105000414"},"RSA-RIPEMD160":{"sign":"rsa","hash":"rmd160","id":"3021300906052b2403020105000414"},"md5WithRSAEncryption":{"sign":"rsa","hash":"md5","id":"3020300c06082a864886f70d020505000410"},"RSA-MD5":{"sign":"rsa","hash":"md5","id":"3020300c06082a864886f70d020505000410"}}');
/***/ }),
/***/ 4589:
/***/ ((module) => {
"use strict";
module.exports = /*#__PURE__*/JSON.parse('{"1.3.132.0.10":"secp256k1","1.3.132.0.33":"p224","1.2.840.10045.3.1.1":"p192","1.2.840.10045.3.1.7":"p256","1.3.132.0.34":"p384","1.3.132.0.35":"p521"}');
/***/ }),
/***/ 3241:
/***/ ((module) => {
"use strict";
module.exports = /*#__PURE__*/JSON.parse('{"modp1":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},"modp2":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},"modp5":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},"modp14":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},"modp15":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},"modp16":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},"modp17":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},"modp18":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}');
/***/ }),
/***/ 1636:
/***/ ((module) => {
"use strict";
module.exports = {"rE":"6.5.7"};
/***/ }),
/***/ 5579:
/***/ ((module) => {
"use strict";
module.exports = /*#__PURE__*/JSON.parse('{"2.16.840.1.101.3.4.1.1":"aes-128-ecb","2.16.840.1.101.3.4.1.2":"aes-128-cbc","2.16.840.1.101.3.4.1.3":"aes-128-ofb","2.16.840.1.101.3.4.1.4":"aes-128-cfb","2.16.840.1.101.3.4.1.21":"aes-192-ecb","2.16.840.1.101.3.4.1.22":"aes-192-cbc","2.16.840.1.101.3.4.1.23":"aes-192-ofb","2.16.840.1.101.3.4.1.24":"aes-192-cfb","2.16.840.1.101.3.4.1.41":"aes-256-ecb","2.16.840.1.101.3.4.1.42":"aes-256-cbc","2.16.840.1.101.3.4.1.43":"aes-256-ofb","2.16.840.1.101.3.4.1.44":"aes-256-cfb"}');
/***/ })
/******/ });
/************************************************************************/
/******/ // The module cache
/******/ var __webpack_module_cache__ = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ var cachedModule = __webpack_module_cache__[moduleId];
/******/ if (cachedModule !== undefined) {
/******/ return cachedModule.exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = __webpack_module_cache__[moduleId] = {
/******/ id: moduleId,
/******/ loaded: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.loaded = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/************************************************************************/
/******/ /* webpack/runtime/amd options */
/******/ (() => {
/******/ __webpack_require__.amdO = {};
/******/ })();
/******/
/******/ /* webpack/runtime/compat get default export */
/******/ (() => {
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = (module) => {
/******/ var getter = module && module.__esModule ?
/******/ () => (module['default']) :
/******/ () => (module);
/******/ __webpack_require__.d(getter, { a: getter });
/******/ return getter;
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/define property getters */
/******/ (() => {
/******/ // define getter functions for harmony exports
/******/ __webpack_require__.d = (exports, definition) => {
/******/ for(var key in definition) {
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ }
/******/ }
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/global */
/******/ (() => {
/******/ __webpack_require__.g = (function() {
/******/ if (typeof globalThis === 'object') return globalThis;
/******/ try {
/******/ return this || new Function('return this')();
/******/ } catch (e) {
/******/ if (typeof window === 'object') return window;
/******/ }
/******/ })();
/******/ })();
/******/
/******/ /* webpack/runtime/hasOwnProperty shorthand */
/******/ (() => {
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
/******/ })();
/******/
/******/ /* webpack/runtime/node module decorator */
/******/ (() => {
/******/ __webpack_require__.nmd = (module) => {
/******/ module.paths = [];
/******/ if (!module.children) module.children = [];
/******/ return module;
/******/ };
/******/ })();
/******/
/************************************************************************/
var __webpack_exports__ = {};
// This entry need to be wrapped in an IIFE because it need to be in strict mode.
(() => {
"use strict";
// EXTERNAL MODULE: worker_threads (ignored)
var worker_threads_ignored_ = __webpack_require__(7882);
var worker_threads_ignored_default = /*#__PURE__*/__webpack_require__.n(worker_threads_ignored_);
// EXTERNAL MODULE: ./node_modules/@tornado/fixed-merkle-tree/lib/index.js
var lib = __webpack_require__(1217);
;// ./node_modules/circomlibjs/node_modules/ffjavascript/build/browser.esm.js
/* global BigInt */
const hexLen = [ 0, 1, 2, 2, 3, 3, 3, 3, 4 ,4 ,4 ,4 ,4 ,4 ,4 ,4];
function fromString(s, radix) {
if ((!radix)||(radix==10)) {
return BigInt(s);
} else if (radix==16) {
if (s.slice(0,2) == "0x") {
return BigInt(s);
} else {
return BigInt("0x"+s);
}
}
}
const e = fromString;
function fromArray(a, radix) {
let acc =BigInt(0);
radix = BigInt(radix);
for (let i=0; i<a.length; i++) {
acc = acc*radix + BigInt(a[i]);
}
return acc;
}
function bitLength$6(a) {
const aS =a.toString(16);
return (aS.length-1)*4 +hexLen[parseInt(aS[0], 16)];
}
function isNegative$4(a) {
return BigInt(a) < BigInt(0);
}
function isZero$1(a) {
return !a;
}
function shiftLeft(a, n) {
return BigInt(a) << BigInt(n);
}
function shiftRight(a, n) {
return BigInt(a) >> BigInt(n);
}
const shl = shiftLeft;
const shr = shiftRight;
function isOdd$5(a) {
return (BigInt(a) & BigInt(1)) == BigInt(1);
}
function naf(n) {
let E = BigInt(n);
const res = [];
while (E) {
if (E & BigInt(1)) {
const z = 2 - Number(E % BigInt(4));
res.push( z );
E = E - BigInt(z);
} else {
res.push( 0 );
}
E = E >> BigInt(1);
}
return res;
}
function bits(n) {
let E = BigInt(n);
const res = [];
while (E) {
if (E & BigInt(1)) {
res.push(1);
} else {
res.push( 0 );
}
E = E >> BigInt(1);
}
return res;
}
function toNumber$1(s) {
if (s>BigInt(Number.MAX_SAFE_INTEGER )) {
throw new Error("Number too big");
}
return Number(s);
}
function toArray(s, radix) {
const res = [];
let rem = BigInt(s);
radix = BigInt(radix);
while (rem) {
res.unshift( Number(rem % radix));
rem = rem / radix;
}
return res;
}
function add(a, b) {
return BigInt(a) + BigInt(b);
}
function sub(a, b) {
return BigInt(a) - BigInt(b);
}
function neg(a) {
return -BigInt(a);
}
function mul(a, b) {
return BigInt(a) * BigInt(b);
}
function square$2(a) {
return BigInt(a) * BigInt(a);
}
function pow(a, b) {
return BigInt(a) ** BigInt(b);
}
function exp$1(a, b) {
return BigInt(a) ** BigInt(b);
}
function abs$1(a) {
return BigInt(a) >= 0 ? BigInt(a) : -BigInt(a);
}
function div(a, b) {
return BigInt(a) / BigInt(b);
}
function mod(a, b) {
return BigInt(a) % BigInt(b);
}
function eq(a, b) {
return BigInt(a) == BigInt(b);
}
function neq(a, b) {
return BigInt(a) != BigInt(b);
}
function lt(a, b) {
return BigInt(a) < BigInt(b);
}
function gt(a, b) {
return BigInt(a) > BigInt(b);
}
function leq(a, b) {
return BigInt(a) <= BigInt(b);
}
function geq(a, b) {
return BigInt(a) >= BigInt(b);
}
function band(a, b) {
return BigInt(a) & BigInt(b);
}
function bor(a, b) {
return BigInt(a) | BigInt(b);
}
function bxor(a, b) {
return BigInt(a) ^ BigInt(b);
}
function land(a, b) {
return BigInt(a) && BigInt(b);
}
function lor(a, b) {
return BigInt(a) || BigInt(b);
}
function lnot(a) {
return !BigInt(a);
}
// Returns a buffer with Little Endian Representation
function toRprLE(buff, o, e, n8) {
const s = "0000000" + e.toString(16);
const v = new Uint32Array(buff.buffer, buff.byteOffset + o, n8/4);
const l = (((s.length-7)*4 - 1) >> 5)+1; // Number of 32bit words;
for (let i=0; i<l; i++) v[i] = parseInt(s.substring(s.length-8*i-8, s.length-8*i), 16);
for (let i=l; i<v.length; i++) v[i] = 0;
for (let i=v.length*4; i<n8; i++) buff[i] = toNumber$1(band(shiftRight(e, i*8), 0xFF));
}
// Returns a buffer with Big Endian Representation
function toRprBE(buff, o, e, n8) {
const s = "0000000" + e.toString(16);
const v = new DataView(buff.buffer, buff.byteOffset + o, n8);
const l = (((s.length-7)*4 - 1) >> 5)+1; // Number of 32bit words;
for (let i=0; i<l; i++) v.setUint32(n8-i*4 -4, parseInt(s.substring(s.length-8*i-8, s.length-8*i), 16), false);
for (let i=0; i<n8/4-l; i++) v[i] = 0;
}
// Pases a buffer with Little Endian Representation
function fromRprLE(buff, o, n8) {
n8 = n8 || buff.byteLength;
o = o || 0;
const v = new Uint32Array(buff.buffer, buff.byteOffset + o, n8/4);
const a = new Array(n8/4);
v.forEach( (ch,i) => a[a.length-i-1] = ch.toString(16).padStart(8,"0") );
return fromString(a.join(""), 16);
}
// Pases a buffer with Big Endian Representation
function fromRprBE(buff, o, n8) {
n8 = n8 || buff.byteLength;
o = o || 0;
const v = new DataView(buff.buffer, buff.byteOffset + o, n8);
const a = new Array(n8/4);
for (let i=0; i<n8/4; i++) {
a[i] = v.getUint32(i*4, false).toString(16).padStart(8, "0");
}
return fromString(a.join(""), 16);
}
function browser_esm_toString(a, radix) {
return a.toString(radix);
}
function toLEBuff(a) {
const buff = new Uint8Array(Math.floor((bitLength$6(a) - 1) / 8) +1);
toRprLE(buff, 0, a, buff.byteLength);
return buff;
}
const zero = e(0);
const one = e(1);
var _Scalar = /*#__PURE__*/Object.freeze({
__proto__: null,
abs: abs$1,
add: add,
band: band,
bitLength: bitLength$6,
bits: bits,
bor: bor,
bxor: bxor,
div: div,
e: e,
eq: eq,
exp: exp$1,
fromArray: fromArray,
fromRprBE: fromRprBE,
fromRprLE: fromRprLE,
fromString: fromString,
geq: geq,
gt: gt,
isNegative: isNegative$4,
isOdd: isOdd$5,
isZero: isZero$1,
land: land,
leq: leq,
lnot: lnot,
lor: lor,
lt: lt,
mod: mod,
mul: mul,
naf: naf,
neg: neg,
neq: neq,
one: one,
pow: pow,
shiftLeft: shiftLeft,
shiftRight: shiftRight,
shl: shl,
shr: shr,
square: square$2,
sub: sub,
toArray: toArray,
toLEBuff: toLEBuff,
toNumber: toNumber$1,
toRprBE: toRprBE,
toRprLE: toRprLE,
toString: browser_esm_toString,
zero: zero
});
/*
Copyright 2018 0kims association.
This file is part of snarkjs.
snarkjs 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.
snarkjs 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
snarkjs. If not, see <https://www.gnu.org/licenses/>.
*/
/*
This library does operations on polynomials with coefficients in a field F.
A polynomial P(x) = p0 + p1 * x + p2 * x^2 + ... + pn * x^n is represented
by the array [ p0, p1, p2, ... , pn ].
*/
class PolField {
constructor (F) {
this.F = F;
let rem = F.sqrt_t;
let s = F.sqrt_s;
const five = this.F.add(this.F.add(this.F.two, this.F.two), this.F.one);
this.w = new Array(s+1);
this.wi = new Array(s+1);
this.w[s] = this.F.pow(five, rem);
this.wi[s] = this.F.inv(this.w[s]);
let n=s-1;
while (n>=0) {
this.w[n] = this.F.square(this.w[n+1]);
this.wi[n] = this.F.square(this.wi[n+1]);
n--;
}
this.roots = [];
/* for (let i=0; i<16; i++) {
let r = this.F.one;
n = 1 << i;
const rootsi = new Array(n);
for (let j=0; j<n; j++) {
rootsi[j] = r;
r = this.F.mul(r, this.w[i]);
}
this.roots.push(rootsi);
}
*/
this._setRoots(15);
}
_setRoots(n) {
if (n > this.F.sqrt_s) n = this.s;
for (let i=n; (i>=0) && (!this.roots[i]); i--) {
let r = this.F.one;
const nroots = 1 << i;
const rootsi = new Array(nroots);
for (let j=0; j<nroots; j++) {
rootsi[j] = r;
r = this.F.mul(r, this.w[i]);
}
this.roots[i] = rootsi;
}
}
add(a, b) {
const m = Math.max(a.length, b.length);
const res = new Array(m);
for (let i=0; i<m; i++) {
res[i] = this.F.add(a[i] || this.F.zero, b[i] || this.F.zero);
}
return this.reduce(res);
}
double(a) {
return this.add(a,a);
}
sub(a, b) {
const m = Math.max(a.length, b.length);
const res = new Array(m);
for (let i=0; i<m; i++) {
res[i] = this.F.sub(a[i] || this.F.zero, b[i] || this.F.zero);
}
return this.reduce(res);
}
mulScalar(p, b) {
if (this.F.eq(b, this.F.zero)) return [];
if (this.F.eq(b, this.F.one)) return p;
const res = new Array(p.length);
for (let i=0; i<p.length; i++) {
res[i] = this.F.mul(p[i], b);
}
return res;
}
mul(a, b) {
if (a.length == 0) return [];
if (b.length == 0) return [];
if (a.length == 1) return this.mulScalar(b, a[0]);
if (b.length == 1) return this.mulScalar(a, b[0]);
if (b.length > a.length) {
[b, a] = [a, b];
}
if ((b.length <= 2) || (b.length < log2$2(a.length))) {
return this.mulNormal(a,b);
} else {
return this.mulFFT(a,b);
}
}
mulNormal(a, b) {
let res = [];
for (let i=0; i<b.length; i++) {
res = this.add(res, this.scaleX(this.mulScalar(a, b[i]), i) );
}
return res;
}
mulFFT(a,b) {
const longestN = Math.max(a.length, b.length);
const bitsResult = log2$2(longestN-1)+2;
this._setRoots(bitsResult);
const m = 1 << bitsResult;
const ea = this.extend(a,m);
const eb = this.extend(b,m);
const ta = __fft$1(this, ea, bitsResult, 0, 1);
const tb = __fft$1(this, eb, bitsResult, 0, 1);
const tres = new Array(m);
for (let i=0; i<m; i++) {
tres[i] = this.F.mul(ta[i], tb[i]);
}
const res = __fft$1(this, tres, bitsResult, 0, 1);
const twoinvm = this.F.inv( this.F.mulScalar(this.F.one, m) );
const resn = new Array(m);
for (let i=0; i<m; i++) {
resn[i] = this.F.mul(res[(m-i)%m], twoinvm);
}
return this.reduce(resn);
}
square(a) {
return this.mul(a,a);
}
scaleX(p, n) {
if (n==0) {
return p;
} else if (n>0) {
const z = new Array(n).fill(this.F.zero);
return z.concat(p);
} else {
if (-n >= p.length) return [];
return p.slice(-n);
}
}
eval2(p, x) {
let v = this.F.zero;
let ix = this.F.one;
for (let i=0; i<p.length; i++) {
v = this.F.add(v, this.F.mul(p[i], ix));
ix = this.F.mul(ix, x);
}
return v;
}
eval(p,x) {
const F = this.F;
if (p.length == 0) return F.zero;
const m = this._next2Power(p.length);
const ep = this.extend(p, m);
return _eval(ep, x, 0, 1, m);
function _eval(p, x, offset, step, n) {
if (n==1) return p[offset];
const newX = F.square(x);
const res= F.add(
_eval(p, newX, offset, step << 1, n >> 1),
F.mul(
x,
_eval(p, newX, offset+step , step << 1, n >> 1)));
return res;
}
}
lagrange(points) {
let roots = [this.F.one];
for (let i=0; i<points.length; i++) {
roots = this.mul(roots, [this.F.neg(points[i][0]), this.F.one]);
}
let sum = [];
for (let i=0; i<points.length; i++) {
let mpol = this.ruffini(roots, points[i][0]);
const factor =
this.F.mul(
this.F.inv(this.eval(mpol, points[i][0])),
points[i][1]);
mpol = this.mulScalar(mpol, factor);
sum = this.add(sum, mpol);
}
return sum;
}
fft(p) {
if (p.length <= 1) return p;
const bits = log2$2(p.length-1)+1;
this._setRoots(bits);
const m = 1 << bits;
const ep = this.extend(p, m);
const res = __fft$1(this, ep, bits, 0, 1);
return res;
}
fft2(p) {
if (p.length <= 1) return p;
const bits = log2$2(p.length-1)+1;
this._setRoots(bits);
const m = 1 << bits;
const ep = this.extend(p, m);
__bitReverse(ep, bits);
const res = __fft2(this, ep, bits);
return res;
}
ifft(p) {
if (p.length <= 1) return p;
const bits = log2$2(p.length-1)+1;
this._setRoots(bits);
const m = 1 << bits;
const ep = this.extend(p, m);
const res = __fft$1(this, ep, bits, 0, 1);
const twoinvm = this.F.inv( this.F.mulScalar(this.F.one, m) );
const resn = new Array(m);
for (let i=0; i<m; i++) {
resn[i] = this.F.mul(res[(m-i)%m], twoinvm);
}
return resn;
}
ifft2(p) {
if (p.length <= 1) return p;
const bits = log2$2(p.length-1)+1;
this._setRoots(bits);
const m = 1 << bits;
const ep = this.extend(p, m);
__bitReverse(ep, bits);
const res = __fft2(this, ep, bits);
const twoinvm = this.F.inv( this.F.mulScalar(this.F.one, m) );
const resn = new Array(m);
for (let i=0; i<m; i++) {
resn[i] = this.F.mul(res[(m-i)%m], twoinvm);
}
return resn;
}
_fft(pall, bits, offset, step) {
const n = 1 << bits;
if (n==1) {
return [ pall[offset] ];
}
const ndiv2 = n >> 1;
const p1 = this._fft(pall, bits-1, offset, step*2);
const p2 = this._fft(pall, bits-1, offset+step, step*2);
const out = new Array(n);
let m= this.F.one;
for (let i=0; i<ndiv2; i++) {
out[i] = this.F.add(p1[i], this.F.mul(m, p2[i]));
out[i+ndiv2] = this.F.sub(p1[i], this.F.mul(m, p2[i]));
m = this.F.mul(m, this.w[bits]);
}
return out;
}
extend(p, e) {
if (e == p.length) return p;
const z = new Array(e-p.length).fill(this.F.zero);
return p.concat(z);
}
reduce(p) {
if (p.length == 0) return p;
if (! this.F.eq(p[p.length-1], this.F.zero) ) return p;
let i=p.length-1;
while( i>0 && this.F.eq(p[i], this.F.zero) ) i--;
return p.slice(0, i+1);
}
eq(a, b) {
const pa = this.reduce(a);
const pb = this.reduce(b);
if (pa.length != pb.length) return false;
for (let i=0; i<pb.length; i++) {
if (!this.F.eq(pa[i], pb[i])) return false;
}
return true;
}
ruffini(p, r) {
const res = new Array(p.length-1);
res[res.length-1] = p[p.length-1];
for (let i = res.length-2; i>=0; i--) {
res[i] = this.F.add(this.F.mul(res[i+1], r), p[i+1]);
}
return res;
}
_next2Power(v) {
v--;
v |= v >> 1;
v |= v >> 2;
v |= v >> 4;
v |= v >> 8;
v |= v >> 16;
v++;
return v;
}
toString(p) {
const ap = this.normalize(p);
let S = "";
for (let i=ap.length-1; i>=0; i--) {
if (!this.F.eq(p[i], this.F.zero)) {
if (S!="") S += " + ";
S = S + p[i].toString(10);
if (i>0) {
S = S + "x";
if (i>1) {
S = S + "^" +i;
}
}
}
}
return S;
}
normalize(p) {
const res = new Array(p.length);
for (let i=0; i<p.length; i++) {
res[i] = this.F.normalize(p[i]);
}
return res;
}
_reciprocal(p, bits) {
const k = 1 << bits;
if (k==1) {
return [ this.F.inv(p[0]) ];
}
const np = this.scaleX(p, -k/2);
const q = this._reciprocal(np, bits-1);
const a = this.scaleX(this.double(q), 3*k/2-2);
const b = this.mul( this.square(q), p);
return this.scaleX(this.sub(a,b), -(k-2));
}
// divides x^m / v
_div2(m, v) {
const kbits = log2$2(v.length-1)+1;
const k = 1 << kbits;
const scaleV = k - v.length;
// rec = x^(k - 2) / v* x^scaleV =>
// rec = x^(k-2-scaleV)/ v
//
// res = x^m/v = x^(m + (2*k-2 - scaleV) - (2*k-2 - scaleV)) /v =>
// res = rec * x^(m - (2*k-2 - scaleV)) =>
// res = rec * x^(m - 2*k + 2 + scaleV)
const rec = this._reciprocal(this.scaleX(v, scaleV), kbits);
const res = this.scaleX(rec, m - 2*k + 2 + scaleV);
return res;
}
div(_u, _v) {
if (_u.length < _v.length) return [];
const kbits = log2$2(_v.length-1)+1;
const k = 1 << kbits;
const u = this.scaleX(_u, k-_v.length);
const v = this.scaleX(_v, k-_v.length);
const n = v.length-1;
let m = u.length-1;
const s = this._reciprocal(v, kbits);
let t;
if (m>2*n) {
t = this.sub(this.scaleX([this.F.one], 2*n), this.mul(s, v));
}
let q = [];
let rem = u;
let us, ut;
let finish = false;
while (!finish) {
us = this.mul(rem, s);
q = this.add(q, this.scaleX(us, -2*n));
if ( m > 2*n ) {
ut = this.mul(rem, t);
rem = this.scaleX(ut, -2*n);
m = rem.length-1;
} else {
finish = true;
}
}
return q;
}
// returns the ith nth-root of one
oneRoot(n, i) {
let nbits = log2$2(n-1)+1;
let res = this.F.one;
let r = i;
if(i>=n) {
throw new Error("Given 'i' should be lower than 'n'");
}
else if (1<<nbits !== n) {
throw new Error(`Internal errlr: ${n} should equal ${1<<nbits}`);
}
while (r>0) {
if (r & 1 == 1) {
res = this.F.mul(res, this.w[nbits]);
}
r = r >> 1;
nbits --;
}
return res;
}
computeVanishingPolinomial(bits, t) {
const m = 1 << bits;
return this.F.sub(this.F.pow(t, m), this.F.one);
}
evaluateLagrangePolynomials(bits, t) {
const m= 1 << bits;
const tm = this.F.pow(t, m);
const u= new Array(m).fill(this.F.zero);
this._setRoots(bits);
const omega = this.w[bits];
if (this.F.eq(tm, this.F.one)) {
for (let i = 0; i < m; i++) {
if (this.F.eq(this.roots[bits][0],t)) { // i.e., t equals omega^i
u[i] = this.F.one;
return u;
}
}
}
const z = this.F.sub(tm, this.F.one);
// let l = this.F.mul(z, this.F.pow(this.F.twoinv, m));
let l = this.F.mul(z, this.F.inv(this.F.e(m)));
for (let i = 0; i < m; i++) {
u[i] = this.F.mul(l, this.F.inv(this.F.sub(t,this.roots[bits][i])));
l = this.F.mul(l, omega);
}
return u;
}
log2(V) {
return log2$2(V);
}
}
function log2$2( V )
{
return( ( ( V & 0xFFFF0000 ) !== 0 ? ( V &= 0xFFFF0000, 16 ) : 0 ) | ( ( V & 0xFF00FF00 ) !== 0 ? ( V &= 0xFF00FF00, 8 ) : 0 ) | ( ( V & 0xF0F0F0F0 ) !== 0 ? ( V &= 0xF0F0F0F0, 4 ) : 0 ) | ( ( V & 0xCCCCCCCC ) !== 0 ? ( V &= 0xCCCCCCCC, 2 ) : 0 ) | ( ( V & 0xAAAAAAAA ) !== 0 ) );
}
function __fft$1(PF, pall, bits, offset, step) {
const n = 1 << bits;
if (n==1) {
return [ pall[offset] ];
} else if (n==2) {
return [
PF.F.add(pall[offset], pall[offset + step]),
PF.F.sub(pall[offset], pall[offset + step])];
}
const ndiv2 = n >> 1;
const p1 = __fft$1(PF, pall, bits-1, offset, step*2);
const p2 = __fft$1(PF, pall, bits-1, offset+step, step*2);
const out = new Array(n);
for (let i=0; i<ndiv2; i++) {
out[i] = PF.F.add(p1[i], PF.F.mul(PF.roots[bits][i], p2[i]));
out[i+ndiv2] = PF.F.sub(p1[i], PF.F.mul(PF.roots[bits][i], p2[i]));
}
return out;
}
function __fft2(PF, pall, bits) {
const n = 1 << bits;
if (n==1) {
return [ pall[0] ];
}
const ndiv2 = n >> 1;
const p1 = __fft2(PF, pall.slice(0, ndiv2), bits-1);
const p2 = __fft2(PF, pall.slice(ndiv2), bits-1);
const out = new Array(n);
for (let i=0; i<ndiv2; i++) {
out[i] = PF.F.add(p1[i], PF.F.mul(PF.roots[bits][i], p2[i]));
out[i+ndiv2] = PF.F.sub(p1[i], PF.F.mul(PF.roots[bits][i], p2[i]));
}
return out;
}
const _revTable$1 = [];
for (let i=0; i<256; i++) {
_revTable$1[i] = _revSlow$1(i, 8);
}
function _revSlow$1(idx, bits) {
let res =0;
let a = idx;
for (let i=0; i<bits; i++) {
res <<= 1;
res = res | (a &1);
a >>=1;
}
return res;
}
function rev(idx, bits) {
return (
_revTable$1[idx >>> 24] |
(_revTable$1[(idx >>> 16) & 0xFF] << 8) |
(_revTable$1[(idx >>> 8) & 0xFF] << 16) |
(_revTable$1[idx & 0xFF] << 24)
) >>> (32-bits);
}
function __bitReverse(p, bits) {
for (let k=0; k<p.length; k++) {
const r = rev(k, bits);
if (r>k) {
const tmp= p[k];
p[k] = p[r];
p[r] = tmp;
}
}
}
/*
Copyright 2018 0kims association.
This file is part of snarkjs.
snarkjs 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.
snarkjs 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
snarkjs. If not, see <https://www.gnu.org/licenses/>.
*/
function mulScalar(F, base, e) {
let res;
if (isZero$1(e)) return F.zero;
const n = naf(e);
if (n[n.length-1] == 1) {
res = base;
} else if (n[n.length-1] == -1) {
res = F.neg(base);
} else {
throw new Error("invlaud NAF");
}
for (let i=n.length-2; i>=0; i--) {
res = F.double(res);
if (n[i] == 1) {
res = F.add(res, base);
} else if (n[i] == -1) {
res = F.sub(res, base);
}
}
return res;
}
/*
exports.mulScalar = (F, base, e) =>{
let res = F.zero;
let rem = bigInt(e);
let exp = base;
while (! rem.eq(bigInt.zero)) {
if (rem.and(bigInt.one).eq(bigInt.one)) {
res = F.add(res, exp);
}
exp = F.double(exp);
rem = rem.shiftRight(1);
}
return res;
};
*/
function exp(F, base, e) {
if (isZero$1(e)) return F.one;
const n = bits(e);
if (n.length==0) return F.one;
let res = base;
for (let i=n.length-2; i>=0; i--) {
res = F.square(res);
if (n[i]) {
res = F.mul(res, base);
}
}
return res;
}
// Check here: https://eprint.iacr.org/2012/685.pdf
function buildSqrt (F) {
if ((F.m % 2) == 1) {
if (eq(mod(F.p, 4), 1 )) {
if (eq(mod(F.p, 8), 1 )) {
if (eq(mod(F.p, 16), 1 )) {
// alg7_muller(F);
alg5_tonelliShanks(F);
} else if (eq(mod(F.p, 16), 9 )) {
alg4_kong(F);
} else {
throw new Error("Field withot sqrt");
}
} else if (eq(mod(F.p, 8), 5 )) {
alg3_atkin(F);
} else {
throw new Error("Field withot sqrt");
}
} else if (eq(mod(F.p, 4), 3 )) {
alg2_shanks(F);
}
} else {
const pm2mod4 = mod(pow(F.p, F.m/2), 4);
if (pm2mod4 == 1) {
alg10_adj(F);
} else if (pm2mod4 == 3) {
alg9_adj(F);
} else {
alg8_complex(F);
}
}
}
function alg5_tonelliShanks(F) {
F.sqrt_q = pow(F.p, F.m);
F.sqrt_s = 0;
F.sqrt_t = sub(F.sqrt_q, 1);
while (!isOdd$5(F.sqrt_t)) {
F.sqrt_s = F.sqrt_s + 1;
F.sqrt_t = div(F.sqrt_t, 2);
}
let c0 = F.one;
while (F.eq(c0, F.one)) {
const c = F.random();
F.sqrt_z = F.pow(c, F.sqrt_t);
c0 = F.pow(F.sqrt_z, 2 ** (F.sqrt_s-1) );
}
F.sqrt_tm1d2 = div(sub(F.sqrt_t, 1),2);
F.sqrt = function(a) {
const F=this;
if (F.isZero(a)) return F.zero;
let w = F.pow(a, F.sqrt_tm1d2);
const a0 = F.pow( F.mul(F.square(w), a), 2 ** (F.sqrt_s-1) );
if (F.eq(a0, F.negone)) return null;
let v = F.sqrt_s;
let x = F.mul(a, w);
let b = F.mul(x, w);
let z = F.sqrt_z;
while (!F.eq(b, F.one)) {
let b2k = F.square(b);
let k=1;
while (!F.eq(b2k, F.one)) {
b2k = F.square(b2k);
k++;
}
w = z;
for (let i=0; i<v-k-1; i++) {
w = F.square(w);
}
z = F.square(w);
b = F.mul(b, z);
x = F.mul(x, w);
v = k;
}
return F.geq(x, F.zero) ? x : F.neg(x);
};
}
function alg4_kong(F) {
F.sqrt = function() {
throw new Error("Sqrt alg 4 not implemented");
};
}
function alg3_atkin(F) {
F.sqrt = function() {
throw new Error("Sqrt alg 3 not implemented");
};
}
function alg2_shanks(F) {
F.sqrt_q = pow(F.p, F.m);
F.sqrt_e1 = div( sub(F.sqrt_q, 3) , 4);
F.sqrt = function(a) {
if (this.isZero(a)) return this.zero;
// Test that have solution
const a1 = this.pow(a, this.sqrt_e1);
const a0 = this.mul(this.square(a1), a);
if ( this.eq(a0, this.negone) ) return null;
const x = this.mul(a1, a);
return F.geq(x, F.zero) ? x : F.neg(x);
};
}
function alg10_adj(F) {
F.sqrt = function() {
throw new Error("Sqrt alg 10 not implemented");
};
}
function alg9_adj(F) {
F.sqrt_q = pow(F.p, F.m/2);
F.sqrt_e34 = div( sub(F.sqrt_q, 3) , 4);
F.sqrt_e12 = div( sub(F.sqrt_q, 1) , 2);
F.frobenius = function(n, x) {
if ((n%2) == 1) {
return F.conjugate(x);
} else {
return x;
}
};
F.sqrt = function(a) {
const F = this;
const a1 = F.pow(a, F.sqrt_e34);
const alfa = F.mul(F.square(a1), a);
const a0 = F.mul(F.frobenius(1, alfa), alfa);
if (F.eq(a0, F.negone)) return null;
const x0 = F.mul(a1, a);
let x;
if (F.eq(alfa, F.negone)) {
x = F.mul(x0, [F.F.zero, F.F.one]);
} else {
const b = F.pow(F.add(F.one, alfa), F.sqrt_e12);
x = F.mul(b, x0);
}
return F.geq(x, F.zero) ? x : F.neg(x);
};
}
function alg8_complex(F) {
F.sqrt = function() {
throw new Error("Sqrt alg 8 not implemented");
};
}
function quarterRound(st, a, b, c, d) {
st[a] = (st[a] + st[b]) >>> 0;
st[d] = (st[d] ^ st[a]) >>> 0;
st[d] = ((st[d] << 16) | ((st[d]>>>16) & 0xFFFF)) >>> 0;
st[c] = (st[c] + st[d]) >>> 0;
st[b] = (st[b] ^ st[c]) >>> 0;
st[b] = ((st[b] << 12) | ((st[b]>>>20) & 0xFFF)) >>> 0;
st[a] = (st[a] + st[b]) >>> 0;
st[d] = (st[d] ^ st[a]) >>> 0;
st[d] = ((st[d] << 8) | ((st[d]>>>24) & 0xFF)) >>> 0;
st[c] = (st[c] + st[d]) >>> 0;
st[b] = (st[b] ^ st[c]) >>> 0;
st[b] = ((st[b] << 7) | ((st[b]>>>25) & 0x7F)) >>> 0;
}
function doubleRound(st) {
quarterRound(st, 0, 4, 8,12);
quarterRound(st, 1, 5, 9,13);
quarterRound(st, 2, 6,10,14);
quarterRound(st, 3, 7,11,15);
quarterRound(st, 0, 5,10,15);
quarterRound(st, 1, 6,11,12);
quarterRound(st, 2, 7, 8,13);
quarterRound(st, 3, 4, 9,14);
}
class ChaCha {
constructor(seed) {
seed = seed || [0,0,0,0,0,0,0,0];
this.state = [
0x61707865,
0x3320646E,
0x79622D32,
0x6B206574,
seed[0],
seed[1],
seed[2],
seed[3],
seed[4],
seed[5],
seed[6],
seed[7],
0,
0,
0,
0
];
this.idx = 16;
this.buff = new Array(16);
}
nextU32() {
if (this.idx == 16) this.update();
return this.buff[this.idx++];
}
nextU64() {
return add(mul(this.nextU32(), 0x100000000), this.nextU32());
}
nextBool() {
return (this.nextU32() & 1) == 1;
}
update() {
// Copy the state
for (let i=0; i<16; i++) this.buff[i] = this.state[i];
// Apply the rounds
for (let i=0; i<10; i++) doubleRound(this.buff);
// Add to the initial
for (let i=0; i<16; i++) this.buff[i] = (this.buff[i] + this.state[i]) >>> 0;
this.idx = 0;
this.state[12] = (this.state[12] + 1) >>> 0;
if (this.state[12] != 0) return;
this.state[13] = (this.state[13] + 1) >>> 0;
if (this.state[13] != 0) return;
this.state[14] = (this.state[14] + 1) >>> 0;
if (this.state[14] != 0) return;
this.state[15] = (this.state[15] + 1) >>> 0;
}
}
function getRandomBytes(n) {
let array = new Uint8Array(n);
{ // Browser
if (typeof globalThis.crypto !== "undefined") { // Supported
globalThis.crypto.getRandomValues(array);
} else { // fallback
for (let i=0; i<n; i++) {
array[i] = (Math.random()*4294967296)>>>0;
}
}
}
return array;
}
function getRandomSeed() {
const arr = getRandomBytes(32);
const arrV = new Uint32Array(arr.buffer);
const seed = [];
for (let i=0; i<8; i++) {
seed.push(arrV[i]);
}
return seed;
}
let threadRng = null;
function getThreadRng() {
if (threadRng) return threadRng;
threadRng = new ChaCha(getRandomSeed());
return threadRng;
}
/*
Copyright 2018 0kims association.
This file is part of snarkjs.
snarkjs 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.
snarkjs 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
snarkjs. If not, see <https://www.gnu.org/licenses/>.
*/
/*
This library does operations on polynomials with coefficients in a field F.
A polynomial P(x) = p0 + p1 * x + p2 * x^2 + ... + pn * x^n is represented
by the array [ p0, p1, p2, ... , pn ].
*/
class FFT {
constructor (G, F, opMulGF) {
this.F = F;
this.G = G;
this.opMulGF = opMulGF;
let rem = F.sqrt_t || F.t;
let s = F.sqrt_s || F.s;
let nqr = F.one;
while (F.eq(F.pow(nqr, F.half), F.one)) nqr = F.add(nqr, F.one);
this.w = new Array(s+1);
this.wi = new Array(s+1);
this.w[s] = this.F.pow(nqr, rem);
this.wi[s] = this.F.inv(this.w[s]);
let n=s-1;
while (n>=0) {
this.w[n] = this.F.square(this.w[n+1]);
this.wi[n] = this.F.square(this.wi[n+1]);
n--;
}
this.roots = [];
/*
for (let i=0; i<16; i++) {
let r = this.F.one;
n = 1 << i;
const rootsi = new Array(n);
for (let j=0; j<n; j++) {
rootsi[j] = r;
r = this.F.mul(r, this.w[i]);
}
this.roots.push(rootsi);
}
*/
this._setRoots(Math.min(s, 15));
}
_setRoots(n) {
for (let i=n; (i>=0) && (!this.roots[i]); i--) {
let r = this.F.one;
const nroots = 1 << i;
const rootsi = new Array(nroots);
for (let j=0; j<nroots; j++) {
rootsi[j] = r;
r = this.F.mul(r, this.w[i]);
}
this.roots[i] = rootsi;
}
}
fft(p) {
if (p.length <= 1) return p;
const bits = log2$1(p.length-1)+1;
this._setRoots(bits);
const m = 1 << bits;
if (p.length != m) {
throw new Error("Size must be multiple of 2");
}
const res = __fft(this, p, bits, 0, 1);
return res;
}
ifft(p) {
if (p.length <= 1) return p;
const bits = log2$1(p.length-1)+1;
this._setRoots(bits);
const m = 1 << bits;
if (p.length != m) {
throw new Error("Size must be multiple of 2");
}
const res = __fft(this, p, bits, 0, 1);
const twoinvm = this.F.inv( this.F.mulScalar(this.F.one, m) );
const resn = new Array(m);
for (let i=0; i<m; i++) {
resn[i] = this.opMulGF(res[(m-i)%m], twoinvm);
}
return resn;
}
}
function log2$1( V )
{
return( ( ( V & 0xFFFF0000 ) !== 0 ? ( V &= 0xFFFF0000, 16 ) : 0 ) | ( ( V & 0xFF00FF00 ) !== 0 ? ( V &= 0xFF00FF00, 8 ) : 0 ) | ( ( V & 0xF0F0F0F0 ) !== 0 ? ( V &= 0xF0F0F0F0, 4 ) : 0 ) | ( ( V & 0xCCCCCCCC ) !== 0 ? ( V &= 0xCCCCCCCC, 2 ) : 0 ) | ( ( V & 0xAAAAAAAA ) !== 0 ) );
}
function __fft(PF, pall, bits, offset, step) {
const n = 1 << bits;
if (n==1) {
return [ pall[offset] ];
} else if (n==2) {
return [
PF.G.add(pall[offset], pall[offset + step]),
PF.G.sub(pall[offset], pall[offset + step])];
}
const ndiv2 = n >> 1;
const p1 = __fft(PF, pall, bits-1, offset, step*2);
const p2 = __fft(PF, pall, bits-1, offset+step, step*2);
const out = new Array(n);
for (let i=0; i<ndiv2; i++) {
out[i] = PF.G.add(p1[i], PF.opMulGF(p2[i], PF.roots[bits][i]));
out[i+ndiv2] = PF.G.sub(p1[i], PF.opMulGF(p2[i], PF.roots[bits][i]));
}
return out;
}
/* global BigInt */
class ZqField {
constructor(p) {
this.type="F1";
this.one = BigInt(1);
this.zero = BigInt(0);
this.p = BigInt(p);
this.m = 1;
this.negone = this.p-this.one;
this.two = BigInt(2);
this.half = this.p >> this.one;
this.bitLength = bitLength$6(this.p);
this.mask = (this.one << BigInt(this.bitLength)) - this.one;
this.n64 = Math.floor((this.bitLength - 1) / 64)+1;
this.n32 = this.n64*2;
this.n8 = this.n64*8;
this.R = this.e(this.one << BigInt(this.n64*64));
this.Ri = this.inv(this.R);
const e = this.negone >> this.one;
this.nqr = this.two;
let r = this.pow(this.nqr, e);
while (!this.eq(r, this.negone)) {
this.nqr = this.nqr + this.one;
r = this.pow(this.nqr, e);
}
this.s = 0;
this.t = this.negone;
while ((this.t & this.one) == this.zero) {
this.s = this.s + 1;
this.t = this.t >> this.one;
}
this.nqr_to_t = this.pow(this.nqr, this.t);
buildSqrt(this);
this.FFT = new FFT(this, this, this.mul.bind(this));
this.fft = this.FFT.fft.bind(this.FFT);
this.ifft = this.FFT.ifft.bind(this.FFT);
this.w = this.FFT.w;
this.wi = this.FFT.wi;
this.shift = this.square(this.nqr);
this.k = this.exp(this.nqr, 2**this.s);
}
e(a,b) {
let res;
if (!b) {
res = BigInt(a);
} else if (b==16) {
res = BigInt("0x"+a);
}
if (res < 0) {
let nres = -res;
if (nres >= this.p) nres = nres % this.p;
return this.p - nres;
} else {
return (res>= this.p) ? res%this.p : res;
}
}
add(a, b) {
const res = a + b;
return res >= this.p ? res-this.p : res;
}
sub(a, b) {
return (a >= b) ? a-b : this.p-b+a;
}
neg(a) {
return a ? this.p-a : a;
}
mul(a, b) {
return (a*b)%this.p;
}
mulScalar(base, s) {
return (base * this.e(s)) % this.p;
}
square(a) {
return (a*a) % this.p;
}
eq(a, b) {
return a==b;
}
neq(a, b) {
return a!=b;
}
lt(a, b) {
const aa = (a > this.half) ? a - this.p : a;
const bb = (b > this.half) ? b - this.p : b;
return aa < bb;
}
gt(a, b) {
const aa = (a > this.half) ? a - this.p : a;
const bb = (b > this.half) ? b - this.p : b;
return aa > bb;
}
leq(a, b) {
const aa = (a > this.half) ? a - this.p : a;
const bb = (b > this.half) ? b - this.p : b;
return aa <= bb;
}
geq(a, b) {
const aa = (a > this.half) ? a - this.p : a;
const bb = (b > this.half) ? b - this.p : b;
return aa >= bb;
}
div(a, b) {
return this.mul(a, this.inv(b));
}
idiv(a, b) {
if (!b) throw new Error("Division by zero");
return a / b;
}
inv(a) {
if (!a) throw new Error("Division by zero");
let t = this.zero;
let r = this.p;
let newt = this.one;
let newr = a % this.p;
while (newr) {
let q = r/newr;
[t, newt] = [newt, t-q*newt];
[r, newr] = [newr, r-q*newr];
}
if (t<this.zero) t += this.p;
return t;
}
mod(a, b) {
return a % b;
}
pow(b, e) {
return exp(this, b, e);
}
exp(b, e) {
return exp(this, b, e);
}
band(a, b) {
const res = ((a & b) & this.mask);
return res >= this.p ? res-this.p : res;
}
bor(a, b) {
const res = ((a | b) & this.mask);
return res >= this.p ? res-this.p : res;
}
bxor(a, b) {
const res = ((a ^ b) & this.mask);
return res >= this.p ? res-this.p : res;
}
bnot(a) {
const res = a ^ this.mask;
return res >= this.p ? res-this.p : res;
}
shl(a, b) {
if (Number(b) < this.bitLength) {
const res = (a << b) & this.mask;
return res >= this.p ? res-this.p : res;
} else {
const nb = this.p - b;
if (Number(nb) < this.bitLength) {
return a >> nb;
} else {
return this.zero;
}
}
}
shr(a, b) {
if (Number(b) < this.bitLength) {
return a >> b;
} else {
const nb = this.p - b;
if (Number(nb) < this.bitLength) {
const res = (a << nb) & this.mask;
return res >= this.p ? res-this.p : res;
} else {
return 0;
}
}
}
land(a, b) {
return (a && b) ? this.one : this.zero;
}
lor(a, b) {
return (a || b) ? this.one : this.zero;
}
lnot(a) {
return (a) ? this.zero : this.one;
}
sqrt_old(n) {
if (n == this.zero) return this.zero;
// Test that have solution
const res = this.pow(n, this.negone >> this.one);
if ( res != this.one ) return null;
let m = this.s;
let c = this.nqr_to_t;
let t = this.pow(n, this.t);
let r = this.pow(n, this.add(this.t, this.one) >> this.one );
while ( t != this.one ) {
let sq = this.square(t);
let i = 1;
while (sq != this.one ) {
i++;
sq = this.square(sq);
}
// b = c ^ m-i-1
let b = c;
for (let j=0; j< m-i-1; j ++) b = this.square(b);
m = i;
c = this.square(b);
t = this.mul(t, c);
r = this.mul(r, b);
}
if (r > (this.p >> this.one)) {
r = this.neg(r);
}
return r;
}
normalize(a, b) {
a = BigInt(a,b);
if (a < 0) {
let na = -a;
if (na >= this.p) na = na % this.p;
return this.p - na;
} else {
return (a>= this.p) ? a%this.p : a;
}
}
random() {
const nBytes = (this.bitLength*2 / 8);
let res =this.zero;
for (let i=0; i<nBytes; i++) {
res = (res << BigInt(8)) + BigInt(getRandomBytes(1)[0]);
}
return res % this.p;
}
toString(a, base) {
base = base || 10;
let vs;
if ((a > this.half)&&(base == 10)) {
const v = this.p-a;
vs = "-"+v.toString(base);
} else {
vs = a.toString(base);
}
return vs;
}
isZero(a) {
return a == this.zero;
}
fromRng(rng) {
let v;
do {
v=this.zero;
for (let i=0; i<this.n64; i++) {
v += rng.nextU64() << BigInt(64 *i);
}
v &= this.mask;
} while (v >= this.p);
v = (v * this.Ri) % this.p; // Convert from montgomery
return v;
}
fft(a) {
return this.FFT.fft(a);
}
ifft(a) {
return this.FFT.ifft(a);
}
// Returns a buffer with Little Endian Representation
toRprLE(buff, o, e) {
toRprLE(buff, o, e, this.n64*8);
}
// Returns a buffer with Big Endian Representation
toRprBE(buff, o, e) {
toRprBE(buff, o, e, this.n64*8);
}
// Returns a buffer with Big Endian Montgomery Representation
toRprBEM(buff, o, e) {
return this.toRprBE(buff, o, this.mul(this.R, e));
}
toRprLEM(buff, o, e) {
return this.toRprLE(buff, o, this.mul(this.R, e));
}
// Pases a buffer with Little Endian Representation
fromRprLE(buff, o) {
return fromRprLE(buff, o, this.n8);
}
// Pases a buffer with Big Endian Representation
fromRprBE(buff, o) {
return fromRprBE(buff, o, this.n8);
}
fromRprLEM(buff, o) {
return this.mul(this.fromRprLE(buff, o), this.Ri);
}
fromRprBEM(buff, o) {
return this.mul(this.fromRprBE(buff, o), this.Ri);
}
toObject(a) {
return a;
}
}
/*
Copyright 2018 0kims association.
This file is part of snarkjs.
snarkjs 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.
snarkjs 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
snarkjs. If not, see <https://www.gnu.org/licenses/>.
*/
class F2Field {
constructor(F, nonResidue) {
this.type="F2";
this.F = F;
this.zero = [this.F.zero, this.F.zero];
this.one = [this.F.one, this.F.zero];
this.negone = this.neg(this.one);
this.nonResidue = nonResidue;
this.m = F.m*2;
this.p = F.p;
this.n64 = F.n64*2;
this.n32 = this.n64*2;
this.n8 = this.n64*8;
buildSqrt(this);
}
_mulByNonResidue(a) {
return this.F.mul(this.nonResidue, a);
}
copy(a) {
return [this.F.copy(a[0]), this.F.copy(a[1])];
}
add(a, b) {
return [
this.F.add(a[0], b[0]),
this.F.add(a[1], b[1])
];
}
double(a) {
return this.add(a,a);
}
sub(a, b) {
return [
this.F.sub(a[0], b[0]),
this.F.sub(a[1], b[1])
];
}
neg(a) {
return this.sub(this.zero, a);
}
conjugate(a) {
return [
a[0],
this.F.neg(a[1])
];
}
mul(a, b) {
const aA = this.F.mul(a[0] , b[0]);
const bB = this.F.mul(a[1] , b[1]);
return [
this.F.add( aA , this._mulByNonResidue(bB)),
this.F.sub(
this.F.mul(
this.F.add(a[0], a[1]),
this.F.add(b[0], b[1])),
this.F.add(aA, bB))];
}
inv(a) {
const t0 = this.F.square(a[0]);
const t1 = this.F.square(a[1]);
const t2 = this.F.sub(t0, this._mulByNonResidue(t1));
const t3 = this.F.inv(t2);
return [
this.F.mul(a[0], t3),
this.F.neg(this.F.mul( a[1], t3)) ];
}
div(a, b) {
return this.mul(a, this.inv(b));
}
square(a) {
const ab = this.F.mul(a[0] , a[1]);
/*
[
(a + b) * (a + non_residue * b) - ab - non_residue * ab,
ab + ab
];
*/
return [
this.F.sub(
this.F.mul(
this.F.add(a[0], a[1]) ,
this.F.add(
a[0] ,
this._mulByNonResidue(a[1]))),
this.F.add(
ab,
this._mulByNonResidue(ab))),
this.F.add(ab, ab)
];
}
isZero(a) {
return this.F.isZero(a[0]) && this.F.isZero(a[1]);
}
eq(a, b) {
return this.F.eq(a[0], b[0]) && this.F.eq(a[1], b[1]);
}
mulScalar(base, e) {
return mulScalar(this, base, e);
}
pow(base, e) {
return exp(this, base, e);
}
exp(base, e) {
return exp(this, base, e);
}
toString(a) {
return `[ ${this.F.toString(a[0])} , ${this.F.toString(a[1])} ]`;
}
fromRng(rng) {
const c0 = this.F.fromRng(rng);
const c1 = this.F.fromRng(rng);
return [c0, c1];
}
gt(a, b) {
if (this.F.gt(a[0], b[0])) return true;
if (this.F.gt(b[0], a[0])) return false;
if (this.F.gt(a[1], b[1])) return true;
return false;
}
geq(a, b) {
return this.gt(a, b) || this.eq(a, b);
}
lt(a, b) {
return !this.geq(a,b);
}
leq(a, b) {
return !this.gt(a,b);
}
neq(a, b) {
return !this.eq(a,b);
}
random() {
return [this.F.random(), this.F.random()];
}
toRprLE(buff, o, e) {
this.F.toRprLE(buff, o, e[0]);
this.F.toRprLE(buff, o+this.F.n8, e[1]);
}
toRprBE(buff, o, e) {
this.F.toRprBE(buff, o, e[1]);
this.F.toRprBE(buff, o+this.F.n8, e[0]);
}
toRprLEM(buff, o, e) {
this.F.toRprLEM(buff, o, e[0]);
this.F.toRprLEM(buff, o+this.F.n8, e[1]);
}
toRprBEM(buff, o, e) {
this.F.toRprBEM(buff, o, e[1]);
this.F.toRprBEM(buff, o+this.F.n8, e[0]);
}
fromRprLE(buff, o) {
o = o || 0;
const c0 = this.F.fromRprLE(buff, o);
const c1 = this.F.fromRprLE(buff, o+this.F.n8);
return [c0, c1];
}
fromRprBE(buff, o) {
o = o || 0;
const c1 = this.F.fromRprBE(buff, o);
const c0 = this.F.fromRprBE(buff, o+this.F.n8);
return [c0, c1];
}
fromRprLEM(buff, o) {
o = o || 0;
const c0 = this.F.fromRprLEM(buff, o);
const c1 = this.F.fromRprLEM(buff, o+this.F.n8);
return [c0, c1];
}
fromRprBEM(buff, o) {
o = o || 0;
const c1 = this.F.fromRprBEM(buff, o);
const c0 = this.F.fromRprBEM(buff, o+this.F.n8);
return [c0, c1];
}
toObject(a) {
return a;
}
}
/*
Copyright 2018 0kims association.
This file is part of snarkjs.
snarkjs 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.
snarkjs 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
snarkjs. If not, see <https://www.gnu.org/licenses/>.
*/
class F3Field {
constructor(F, nonResidue) {
this.type="F3";
this.F = F;
this.zero = [this.F.zero, this.F.zero, this.F.zero];
this.one = [this.F.one, this.F.zero, this.F.zero];
this.negone = this.neg(this.one);
this.nonResidue = nonResidue;
this.m = F.m*3;
this.p = F.p;
this.n64 = F.n64*3;
this.n32 = this.n64*2;
this.n8 = this.n64*8;
}
_mulByNonResidue(a) {
return this.F.mul(this.nonResidue, a);
}
copy(a) {
return [this.F.copy(a[0]), this.F.copy(a[1]), this.F.copy(a[2])];
}
add(a, b) {
return [
this.F.add(a[0], b[0]),
this.F.add(a[1], b[1]),
this.F.add(a[2], b[2])
];
}
double(a) {
return this.add(a,a);
}
sub(a, b) {
return [
this.F.sub(a[0], b[0]),
this.F.sub(a[1], b[1]),
this.F.sub(a[2], b[2])
];
}
neg(a) {
return this.sub(this.zero, a);
}
mul(a, b) {
const aA = this.F.mul(a[0] , b[0]);
const bB = this.F.mul(a[1] , b[1]);
const cC = this.F.mul(a[2] , b[2]);
return [
this.F.add(
aA,
this._mulByNonResidue(
this.F.sub(
this.F.mul(
this.F.add(a[1], a[2]),
this.F.add(b[1], b[2])),
this.F.add(bB, cC)))), // aA + non_residue*((b+c)*(B+C)-bB-cC),
this.F.add(
this.F.sub(
this.F.mul(
this.F.add(a[0], a[1]),
this.F.add(b[0], b[1])),
this.F.add(aA, bB)),
this._mulByNonResidue( cC)), // (a+b)*(A+B)-aA-bB+non_residue*cC
this.F.add(
this.F.sub(
this.F.mul(
this.F.add(a[0], a[2]),
this.F.add(b[0], b[2])),
this.F.add(aA, cC)),
bB)]; // (a+c)*(A+C)-aA+bB-cC)
}
inv(a) {
const t0 = this.F.square(a[0]); // t0 = a^2 ;
const t1 = this.F.square(a[1]); // t1 = b^2 ;
const t2 = this.F.square(a[2]); // t2 = c^2;
const t3 = this.F.mul(a[0],a[1]); // t3 = ab
const t4 = this.F.mul(a[0],a[2]); // t4 = ac
const t5 = this.F.mul(a[1],a[2]); // t5 = bc;
// c0 = t0 - non_residue * t5;
const c0 = this.F.sub(t0, this._mulByNonResidue(t5));
// c1 = non_residue * t2 - t3;
const c1 = this.F.sub(this._mulByNonResidue(t2), t3);
const c2 = this.F.sub(t1, t4); // c2 = t1-t4
// t6 = (a * c0 + non_residue * (c * c1 + b * c2)).inv();
const t6 =
this.F.inv(
this.F.add(
this.F.mul(a[0], c0),
this._mulByNonResidue(
this.F.add(
this.F.mul(a[2], c1),
this.F.mul(a[1], c2)))));
return [
this.F.mul(t6, c0), // t6*c0
this.F.mul(t6, c1), // t6*c1
this.F.mul(t6, c2)]; // t6*c2
}
div(a, b) {
return this.mul(a, this.inv(b));
}
square(a) {
const s0 = this.F.square(a[0]); // s0 = a^2
const ab = this.F.mul(a[0], a[1]); // ab = a*b
const s1 = this.F.add(ab, ab); // s1 = 2ab;
const s2 = this.F.square(
this.F.add(this.F.sub(a[0],a[1]), a[2])); // s2 = (a - b + c)^2;
const bc = this.F.mul(a[1],a[2]); // bc = b*c
const s3 = this.F.add(bc, bc); // s3 = 2*bc
const s4 = this.F.square(a[2]); // s4 = c^2
return [
this.F.add(
s0,
this._mulByNonResidue(s3)), // s0 + non_residue * s3,
this.F.add(
s1,
this._mulByNonResidue(s4)), // s1 + non_residue * s4,
this.F.sub(
this.F.add( this.F.add(s1, s2) , s3 ),
this.F.add(s0, s4))]; // s1 + s2 + s3 - s0 - s4
}
isZero(a) {
return this.F.isZero(a[0]) && this.F.isZero(a[1]) && this.F.isZero(a[2]);
}
eq(a, b) {
return this.F.eq(a[0], b[0]) && this.F.eq(a[1], b[1]) && this.F.eq(a[2], b[2]);
}
affine(a) {
return [this.F.affine(a[0]), this.F.affine(a[1]), this.F.affine(a[2])];
}
mulScalar(base, e) {
return mulScalar(this, base, e);
}
pow(base, e) {
return exp(this, base, e);
}
exp(base, e) {
return exp(this, base, e);
}
toString(a) {
return `[ ${this.F.toString(a[0])} , ${this.F.toString(a[1])}, ${this.F.toString(a[2])} ]`;
}
fromRng(rng) {
const c0 = this.F.fromRng(rng);
const c1 = this.F.fromRng(rng);
const c2 = this.F.fromRng(rng);
return [c0, c1, c2];
}
gt(a, b) {
if (this.F.gt(a[0], b[0])) return true;
if (this.F.gt(b[0], a[0])) return false;
if (this.F.gt(a[1], b[1])) return true;
if (this.F.gt(b[1], a[1])) return false;
if (this.F.gt(a[2], b[2])) return true;
return false;
}
geq(a, b) {
return this.gt(a, b) || this.eq(a, b);
}
lt(a, b) {
return !this.geq(a,b);
}
leq(a, b) {
return !this.gt(a,b);
}
neq(a, b) {
return !this.eq(a,b);
}
random() {
return [this.F.random(), this.F.random(), this.F.random()];
}
toRprLE(buff, o, e) {
this.F.toRprLE(buff, o, e[0]);
this.F.toRprLE(buff, o+this.F.n8, e[1]);
this.F.toRprLE(buff, o+this.F.n8*2, e[2]);
}
toRprBE(buff, o, e) {
this.F.toRprBE(buff, o, e[2]);
this.F.toRprBE(buff, o+this.F.n8, e[1]);
this.F.toRprBE(buff, o+this.F.n8*2, e[0]);
}
toRprLEM(buff, o, e) {
this.F.toRprLEM(buff, o, e[0]);
this.F.toRprLEM(buff, o+this.F.n8, e[1]);
this.F.toRprLEM(buff, o+this.F.n8*2, e[2]);
}
toRprBEM(buff, o, e) {
this.F.toRprBEM(buff, o, e[2]);
this.F.toRprBEM(buff, o+this.F.n8, e[1]);
this.F.toRprBEM(buff, o+this.F.n8*2, e[0]);
}
fromRprLE(buff, o) {
o = o || 0;
const c0 = this.F.fromRprLE(buff, o);
const c1 = this.F.fromRprLE(buff, o+this.n8);
const c2 = this.F.fromRprLE(buff, o+this.n8*2);
return [c0, c1, c2];
}
fromRprBE(buff, o) {
o = o || 0;
const c2 = this.F.fromRprBE(buff, o);
const c1 = this.F.fromRprBE(buff, o+this.n8);
const c0 = this.F.fromRprBE(buff, o+this.n8*2);
return [c0, c1, c2];
}
fromRprLEM(buff, o) {
o = o || 0;
const c0 = this.F.fromRprLEM(buff, o);
const c1 = this.F.fromRprLEM(buff, o+this.n8);
const c2 = this.F.fromRprLEM(buff, o+this.n8*2);
return [c0, c1, c2];
}
fromRprBEM(buff, o) {
o = o || 0;
const c2 = this.F.fromRprBEM(buff, o);
const c1 = this.F.fromRprBEM(buff, o+this.n8);
const c0 = this.F.fromRprBEM(buff, o+this.n8*2);
return [c0, c1, c2];
}
toObject(a) {
return a;
}
}
/*
Copyright 2018 0kims association.
This file is part of snarkjs.
snarkjs 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.
snarkjs 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
snarkjs. If not, see <https://www.gnu.org/licenses/>.
*/
function isGreatest(F, a) {
if (Array.isArray(a)) {
for (let i=a.length-1; i>=0; i--) {
if (!F.F.isZero(a[i])) {
return isGreatest(F.F, a[i]);
}
}
return 0;
} else {
const na = F.neg(a);
return gt(a, na);
}
}
class EC {
constructor(F, g) {
this.F = F;
this.g = g;
if (this.g.length == 2) this.g[2] = this.F.one;
this.zero = [this.F.zero, this.F.one, this.F.zero];
}
add(p1, p2) {
const F = this.F;
if (this.eq(p1, this.zero)) return p2;
if (this.eq(p2, this.zero)) return p1;
const res = new Array(3);
const Z1Z1 = F.square( p1[2] );
const Z2Z2 = F.square( p2[2] );
const U1 = F.mul( p1[0] , Z2Z2 ); // U1 = X1 * Z2Z2
const U2 = F.mul( p2[0] , Z1Z1 ); // U2 = X2 * Z1Z1
const Z1_cubed = F.mul( p1[2] , Z1Z1);
const Z2_cubed = F.mul( p2[2] , Z2Z2);
const S1 = F.mul( p1[1] , Z2_cubed); // S1 = Y1 * Z2 * Z2Z2
const S2 = F.mul( p2[1] , Z1_cubed); // S2 = Y2 * Z1 * Z1Z1
if (F.eq(U1,U2) && F.eq(S1,S2)) {
return this.double(p1);
}
const H = F.sub( U2 , U1 ); // H = U2-U1
const S2_minus_S1 = F.sub( S2 , S1 );
const I = F.square( F.add(H,H) ); // I = (2 * H)^2
const J = F.mul( H , I ); // J = H * I
const r = F.add( S2_minus_S1 , S2_minus_S1 ); // r = 2 * (S2-S1)
const V = F.mul( U1 , I ); // V = U1 * I
res[0] =
F.sub(
F.sub( F.square(r) , J ),
F.add( V , V )); // X3 = r^2 - J - 2 * V
const S1_J = F.mul( S1 , J );
res[1] =
F.sub(
F.mul( r , F.sub(V,res[0])),
F.add( S1_J,S1_J )); // Y3 = r * (V-X3)-2 S1 J
res[2] =
F.mul(
H,
F.sub(
F.square( F.add(p1[2],p2[2]) ),
F.add( Z1Z1 , Z2Z2 ))); // Z3 = ((Z1+Z2)^2-Z1Z1-Z2Z2) * H
return res;
}
neg(p) {
return [p[0], this.F.neg(p[1]), p[2]];
}
sub(a, b) {
return this.add(a, this.neg(b));
}
double(p) {
const F = this.F;
const res = new Array(3);
if (this.eq(p, this.zero)) return p;
const A = F.square( p[0] ); // A = X1^2
const B = F.square( p[1] ); // B = Y1^2
const C = F.square( B ); // C = B^2
let D =
F.sub(
F.square( F.add(p[0] , B )),
F.add( A , C));
D = F.add(D,D); // D = 2 * ((X1 + B)^2 - A - C)
const E = F.add( F.add(A,A), A); // E = 3 * A
const FF =F.square( E ); // F = E^2
res[0] = F.sub( FF , F.add(D,D) ); // X3 = F - 2 D
let eightC = F.add( C , C );
eightC = F.add( eightC , eightC );
eightC = F.add( eightC , eightC );
res[1] =
F.sub(
F.mul(
E,
F.sub( D, res[0] )),
eightC); // Y3 = E * (D - X3) - 8 * C
const Y1Z1 = F.mul( p[1] , p[2] );
res[2] = F.add( Y1Z1 , Y1Z1 ); // Z3 = 2 * Y1 * Z1
return res;
}
timesScalar(base, e) {
return mulScalar(this, base, e);
}
mulScalar(base, e) {
return mulScalar(this, base, e);
}
affine(p) {
const F = this.F;
if (this.isZero(p)) {
return this.zero;
} else if (F.eq(p[2], F.one)) {
return p;
} else {
const Z_inv = F.inv(p[2]);
const Z2_inv = F.square(Z_inv);
const Z3_inv = F.mul(Z2_inv, Z_inv);
const res = new Array(3);
res[0] = F.mul(p[0],Z2_inv);
res[1] = F.mul(p[1],Z3_inv);
res[2] = F.one;
return res;
}
}
multiAffine(arr) {
const keys = Object.keys(arr);
const F = this.F;
const accMul = new Array(keys.length+1);
accMul[0] = F.one;
for (let i = 0; i< keys.length; i++) {
if (F.eq(arr[keys[i]][2], F.zero)) {
accMul[i+1] = accMul[i];
} else {
accMul[i+1] = F.mul(accMul[i], arr[keys[i]][2]);
}
}
accMul[keys.length] = F.inv(accMul[keys.length]);
for (let i = keys.length-1; i>=0; i--) {
if (F.eq(arr[keys[i]][2], F.zero)) {
accMul[i] = accMul[i+1];
arr[keys[i]] = this.zero;
} else {
const Z_inv = F.mul(accMul[i], accMul[i+1]);
accMul[i] = F.mul(arr[keys[i]][2], accMul[i+1]);
const Z2_inv = F.square(Z_inv);
const Z3_inv = F.mul(Z2_inv, Z_inv);
arr[keys[i]][0] = F.mul(arr[keys[i]][0],Z2_inv);
arr[keys[i]][1] = F.mul(arr[keys[i]][1],Z3_inv);
arr[keys[i]][2] = F.one;
}
}
}
eq(p1, p2) {
const F = this.F;
if (this.F.eq(p1[2], this.F.zero)) return this.F.eq(p2[2], this.F.zero);
if (this.F.eq(p2[2], this.F.zero)) return false;
const Z1Z1 = F.square( p1[2] );
const Z2Z2 = F.square( p2[2] );
const U1 = F.mul( p1[0] , Z2Z2 );
const U2 = F.mul( p2[0] , Z1Z1 );
const Z1_cubed = F.mul( p1[2] , Z1Z1);
const Z2_cubed = F.mul( p2[2] , Z2Z2);
const S1 = F.mul( p1[1] , Z2_cubed);
const S2 = F.mul( p2[1] , Z1_cubed);
return (F.eq(U1,U2) && F.eq(S1,S2));
}
isZero(p) {
return this.F.isZero(p[2]);
}
toString(p) {
const cp = this.affine(p);
return `[ ${this.F.toString(cp[0])} , ${this.F.toString(cp[1])} ]`;
}
fromRng(rng) {
const F = this.F;
let P = [];
let greatest;
do {
P[0] = F.fromRng(rng);
greatest = rng.nextBool();
const x3b = F.add(F.mul(F.square(P[0]), P[0]), this.b);
P[1] = F.sqrt(x3b);
} while ((P[1] == null)||(F.isZero[P]));
const s = isGreatest(F, P[1]);
if (greatest ^ s) P[1] = F.neg(P[1]);
P[2] = F.one;
if (this.cofactor) {
P = this.mulScalar(P, this.cofactor);
}
P = this.affine(P);
return P;
}
toRprLE(buff, o, p) {
p = this.affine(p);
if (this.isZero(p)) {
const BuffV = new Uint8Array(buff, o, this.F.n8*2);
BuffV.fill(0);
return;
}
this.F.toRprLE(buff, o, p[0]);
this.F.toRprLE(buff, o+this.F.n8, p[1]);
}
toRprBE(buff, o, p) {
p = this.affine(p);
if (this.isZero(p)) {
const BuffV = new Uint8Array(buff, o, this.F.n8*2);
BuffV.fill(0);
return;
}
this.F.toRprBE(buff, o, p[0]);
this.F.toRprBE(buff, o+this.F.n8, p[1]);
}
toRprLEM(buff, o, p) {
p = this.affine(p);
if (this.isZero(p)) {
const BuffV = new Uint8Array(buff, o, this.F.n8*2);
BuffV.fill(0);
return;
}
this.F.toRprLEM(buff, o, p[0]);
this.F.toRprLEM(buff, o+this.F.n8, p[1]);
}
toRprLEJM(buff, o, p) {
p = this.affine(p);
if (this.isZero(p)) {
const BuffV = new Uint8Array(buff, o, this.F.n8*2);
BuffV.fill(0);
return;
}
this.F.toRprLEM(buff, o, p[0]);
this.F.toRprLEM(buff, o+this.F.n8, p[1]);
this.F.toRprLEM(buff, o+2*this.F.n8, p[2]);
}
toRprBEM(buff, o, p) {
p = this.affine(p);
if (this.isZero(p)) {
const BuffV = new Uint8Array(buff, o, this.F.n8*2);
BuffV.fill(0);
return;
}
this.F.toRprBEM(buff, o, p[0]);
this.F.toRprBEM(buff, o+this.F.n8, p[1]);
}
fromRprLE(buff, o) {
o = o || 0;
const x = this.F.fromRprLE(buff, o);
const y = this.F.fromRprLE(buff, o+this.F.n8);
if (this.F.isZero(x) && this.F.isZero(y)) {
return this.zero;
}
return [x, y, this.F.one];
}
fromRprBE(buff, o) {
o = o || 0;
const x = this.F.fromRprBE(buff, o);
const y = this.F.fromRprBE(buff, o+this.F.n8);
if (this.F.isZero(x) && this.F.isZero(y)) {
return this.zero;
}
return [x, y, this.F.one];
}
fromRprLEM(buff, o) {
o = o || 0;
const x = this.F.fromRprLEM(buff, o);
const y = this.F.fromRprLEM(buff, o+this.F.n8);
if (this.F.isZero(x) && this.F.isZero(y)) {
return this.zero;
}
return [x, y, this.F.one];
}
fromRprLEJM(buff, o) {
o = o || 0;
const x = this.F.fromRprLEM(buff, o);
const y = this.F.fromRprLEM(buff, o+this.F.n8);
const z = this.F.fromRprLEM(buff, o+this.F.n8*2);
if (this.F.isZero(x) && this.F.isZero(y)) {
return this.zero;
}
return [x, y, z];
}
fromRprBEM(buff, o) {
o = o || 0;
const x = this.F.fromRprBEM(buff, o);
const y = this.F.fromRprBEM(buff, o+this.F.n8);
if (this.F.isZero(x) && this.F.isZero(y)) {
return this.zero;
}
return [x, y, this.F.one];
}
fromRprCompressed(buff, o) {
const F = this.F;
const v = new Uint8Array(buff.buffer, o, F.n8);
if (v[0] & 0x40) return this.zero;
const P = new Array(3);
const greatest = ((v[0] & 0x80) != 0);
v[0] = v[0] & 0x7F;
P[0] = F.fromRprBE(buff, o);
if (greatest) v[0] = v[0] | 0x80; // set back again the old value
const x3b = F.add(F.mul(F.square(P[0]), P[0]), this.b);
P[1] = F.sqrt(x3b);
if (P[1] === null) {
throw new Error("Invalid Point!");
}
const s = isGreatest(F, P[1]);
if (greatest ^ s) P[1] = F.neg(P[1]);
P[2] = F.one;
return P;
}
toRprCompressed(buff, o, p) {
p = this.affine(p);
const v = new Uint8Array(buff.buffer, o, this.F.n8);
if (this.isZero(p)) {
v.fill(0);
v[0] = 0x40;
return;
}
this.F.toRprBE(buff, o, p[0]);
if (isGreatest(this.F, p[1])) {
v[0] = v[0] | 0x80;
}
}
fromRprUncompressed(buff, o) {
if (buff[0] & 0x40) return this.zero;
return this.fromRprBE(buff, o);
}
toRprUncompressed(buff, o, p) {
this.toRprBE(buff, o, p);
if (this.isZero(p)) {
buff[o] = buff[o] | 0x40;
}
}
}
function getDefaultExportFromCjs (x) {
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
}
var utils$6 = {};
/*
Copyright 2019 0KIMS association.
This file is part of wasmsnark (Web Assembly zkSnark Prover).
wasmsnark 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.
wasmsnark 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 wasmsnark. If not, see <https://www.gnu.org/licenses/>.
*/
utils$6.bigInt2BytesLE = function bigInt2BytesLE(_a, len) {
const b = Array(len);
let v = BigInt(_a);
for (let i=0; i<len; i++) {
b[i] = Number(v & 0xFFn);
v = v >> 8n;
}
return b;
};
utils$6.bigInt2U32LE = function bigInt2BytesLE(_a, len) {
const b = Array(len);
let v = BigInt(_a);
for (let i=0; i<len; i++) {
b[i] = Number(v & 0xFFFFFFFFn);
v = v >> 32n;
}
return b;
};
utils$6.isOcamNum = function(a) {
if (!Array.isArray(a)) return false;
if (a.length != 3) return false;
if (typeof a[0] !== "number") return false;
if (typeof a[1] !== "number") return false;
if (!Array.isArray(a[2])) return false;
return true;
};
/*
Copyright 2019 0KIMS association.
This file is part of wasmsnark (Web Assembly zkSnark Prover).
wasmsnark 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.
wasmsnark 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 wasmsnark. If not, see <https://www.gnu.org/licenses/>.
*/
var build_int = function buildInt(module, n64, _prefix) {
const prefix = _prefix || "int";
if (module.modules[prefix]) return prefix; // already builded
module.modules[prefix] = {};
const n32 = n64*2;
const n8 = n64*8;
function buildCopy() {
const f = module.addFunction(prefix+"_copy");
f.addParam("px", "i32");
f.addParam("pr", "i32");
const c = f.getCodeBuilder();
for (let i=0; i<n64; i++) {
f.addCode(
c.i64_store(
c.getLocal("pr"),
i*8,
c.i64_load(
c.getLocal("px"),
i*8
)
)
);
}
}
function buildZero() {
const f = module.addFunction(prefix+"_zero");
f.addParam("pr", "i32");
const c = f.getCodeBuilder();
for (let i=0; i<n64; i++) {
f.addCode(
c.i64_store(
c.getLocal("pr"),
i*8,
c.i64_const(0)
)
);
}
}
function buildOne() {
const f = module.addFunction(prefix+"_one");
f.addParam("pr", "i32");
const c = f.getCodeBuilder();
f.addCode(
c.i64_store(
c.getLocal("pr"),
0,
c.i64_const(1)
)
);
for (let i=1; i<n64; i++) {
f.addCode(
c.i64_store(
c.getLocal("pr"),
i*8,
c.i64_const(0)
)
);
}
}
function buildIsZero() {
const f = module.addFunction(prefix+"_isZero");
f.addParam("px", "i32");
f.setReturnType("i32");
const c = f.getCodeBuilder();
function getCompCode(n) {
if (n==0) {
return c.ret(c.i64_eqz(
c.i64_load(c.getLocal("px"))
));
}
return c.if(
c.i64_eqz(
c.i64_load(c.getLocal("px"), n*8 )
),
getCompCode(n-1),
c.ret(c.i32_const(0))
);
}
f.addCode(getCompCode(n64-1));
f.addCode(c.ret(c.i32_const(0)));
}
function buildEq() {
const f = module.addFunction(prefix+"_eq");
f.addParam("px", "i32");
f.addParam("py", "i32");
f.setReturnType("i32");
const c = f.getCodeBuilder();
function getCompCode(n) {
if (n==0) {
return c.ret(c.i64_eq(
c.i64_load(c.getLocal("px")),
c.i64_load(c.getLocal("py"))
));
}
return c.if(
c.i64_eq(
c.i64_load(c.getLocal("px"), n*8 ),
c.i64_load(c.getLocal("py"), n*8 )
),
getCompCode(n-1),
c.ret(c.i32_const(0))
);
}
f.addCode(getCompCode(n64-1));
f.addCode(c.ret(c.i32_const(0)));
}
function buildGte() {
const f = module.addFunction(prefix+"_gte");
f.addParam("px", "i32");
f.addParam("py", "i32");
f.setReturnType("i32");
const c = f.getCodeBuilder();
function getCompCode(n) {
if (n==0) {
return c.ret(c.i64_ge_u(
c.i64_load(c.getLocal("px")),
c.i64_load(c.getLocal("py"))
));
}
return c.if(
c.i64_lt_u(
c.i64_load(c.getLocal("px"), n*8 ),
c.i64_load(c.getLocal("py"), n*8 )
),
c.ret(c.i32_const(0)),
c.if(
c.i64_gt_u(
c.i64_load(c.getLocal("px"), n*8 ),
c.i64_load(c.getLocal("py"), n*8 )
),
c.ret(c.i32_const(1)),
getCompCode(n-1)
)
);
}
f.addCode(getCompCode(n64-1));
f.addCode(c.ret(c.i32_const(0)));
}
function buildAdd() {
const f = module.addFunction(prefix+"_add");
f.addParam("x", "i32");
f.addParam("y", "i32");
f.addParam("r", "i32");
f.setReturnType("i32");
f.addLocal("c", "i64");
const c = f.getCodeBuilder();
f.addCode(c.setLocal(
"c",
c.i64_add(
c.i64_load32_u(c.getLocal("x")),
c.i64_load32_u(c.getLocal("y"))
)
));
f.addCode(c.i64_store32(
c.getLocal("r"),
c.getLocal("c"),
));
for (let i=1; i<n32; i++) {
f.addCode(c.setLocal( "c",
c.i64_add(
c.i64_add(
c.i64_load32_u(c.getLocal("x"), 4*i),
c.i64_load32_u(c.getLocal("y"), 4*i)
),
c.i64_shr_u (c.getLocal("c"), c.i64_const(32))
)
));
f.addCode(c.i64_store32(
c.getLocal("r"),
i*4,
c.getLocal("c")
));
}
f.addCode(c.i32_wrap_i64(c.i64_shr_u (c.getLocal("c"), c.i64_const(32))));
}
function buildSub() {
const f = module.addFunction(prefix+"_sub");
f.addParam("x", "i32");
f.addParam("y", "i32");
f.addParam("r", "i32");
f.setReturnType("i32");
f.addLocal("c", "i64");
const c = f.getCodeBuilder();
f.addCode(c.setLocal(
"c",
c.i64_sub(
c.i64_load32_u(c.getLocal("x")),
c.i64_load32_u(c.getLocal("y"))
)
));
f.addCode(c.i64_store32(
c.getLocal("r"),
c.i64_and(
c.getLocal("c"),
c.i64_const("0xFFFFFFFF")
)
));
for (let i=1; i<n32; i++) {
f.addCode(c.setLocal( "c",
c.i64_add(
c.i64_sub(
c.i64_load32_u(c.getLocal("x"), 4*i),
c.i64_load32_u(c.getLocal("y"), 4*i)
),
c.i64_shr_s (c.getLocal("c"), c.i64_const(32))
)
));
f.addCode(c.i64_store32(
c.getLocal("r"),
i*4,
c.i64_and( c.getLocal("c"), c.i64_const("0xFFFFFFFF"))
));
}
f.addCode(c.i32_wrap_i64 ( c.i64_shr_s (c.getLocal("c"), c.i64_const(32))));
}
function buildMul() {
const f = module.addFunction(prefix+"_mul");
f.addParam("x", "i32");
f.addParam("y", "i32");
f.addParam("r", "i32");
f.addLocal("c0", "i64");
f.addLocal("c1", "i64");
for (let i=0;i<n32; i++) {
f.addLocal("x"+i, "i64");
f.addLocal("y"+i, "i64");
}
const c = f.getCodeBuilder();
const loadX = [];
const loadY = [];
function mulij(i, j) {
let X,Y;
if (!loadX[i]) {
X = c.teeLocal("x"+i, c.i64_load32_u( c.getLocal("x"), i*4));
loadX[i] = true;
} else {
X = c.getLocal("x"+i);
}
if (!loadY[j]) {
Y = c.teeLocal("y"+j, c.i64_load32_u( c.getLocal("y"), j*4));
loadY[j] = true;
} else {
Y = c.getLocal("y"+j);
}
return c.i64_mul( X, Y );
}
let c0 = "c0";
let c1 = "c1";
for (let k=0; k<n32*2-1; k++) {
for (let i=Math.max(0, k-n32+1); (i<=k)&&(i<n32); i++) {
const j= k-i;
f.addCode(
c.setLocal(c0,
c.i64_add(
c.i64_and(
c.getLocal(c0),
c.i64_const(0xFFFFFFFF)
),
mulij(i,j)
)
)
);
f.addCode(
c.setLocal(c1,
c.i64_add(
c.getLocal(c1),
c.i64_shr_u(
c.getLocal(c0),
c.i64_const(32)
)
)
)
);
}
f.addCode(
c.i64_store32(
c.getLocal("r"),
k*4,
c.getLocal(c0)
)
);
[c0, c1] = [c1, c0];
f.addCode(
c.setLocal(c1,
c.i64_shr_u(
c.getLocal(c0),
c.i64_const(32)
)
)
);
}
f.addCode(
c.i64_store32(
c.getLocal("r"),
n32*4*2-4,
c.getLocal(c0)
)
);
}
function buildSquare() {
const f = module.addFunction(prefix+"_square");
f.addParam("x", "i32");
f.addParam("r", "i32");
f.addLocal("c0", "i64");
f.addLocal("c1", "i64");
f.addLocal("c0_old", "i64");
f.addLocal("c1_old", "i64");
for (let i=0;i<n32; i++) {
f.addLocal("x"+i, "i64");
}
const c = f.getCodeBuilder();
const loadX = [];
function mulij(i, j) {
let X,Y;
if (!loadX[i]) {
X = c.teeLocal("x"+i, c.i64_load32_u( c.getLocal("x"), i*4));
loadX[i] = true;
} else {
X = c.getLocal("x"+i);
}
if (!loadX[j]) {
Y = c.teeLocal("x"+j, c.i64_load32_u( c.getLocal("x"), j*4));
loadX[j] = true;
} else {
Y = c.getLocal("x"+j);
}
return c.i64_mul( X, Y );
}
let c0 = "c0";
let c1 = "c1";
let c0_old = "c0_old";
let c1_old = "c1_old";
for (let k=0; k<n32*2-1; k++) {
f.addCode(
c.setLocal(c0, c.i64_const(0)),
c.setLocal(c1, c.i64_const(0)),
);
for (let i=Math.max(0, k-n32+1); (i<((k+1)>>1) )&&(i<n32); i++) {
const j= k-i;
f.addCode(
c.setLocal(c0,
c.i64_add(
c.i64_and(
c.getLocal(c0),
c.i64_const(0xFFFFFFFF)
),
mulij(i,j)
)
)
);
f.addCode(
c.setLocal(c1,
c.i64_add(
c.getLocal(c1),
c.i64_shr_u(
c.getLocal(c0),
c.i64_const(32)
)
)
)
);
}
// Multiply by 2
f.addCode(
c.setLocal(c0,
c.i64_shl(
c.i64_and(
c.getLocal(c0),
c.i64_const(0xFFFFFFFF)
),
c.i64_const(1)
)
)
);
f.addCode(
c.setLocal(c1,
c.i64_add(
c.i64_shl(
c.getLocal(c1),
c.i64_const(1)
),
c.i64_shr_u(
c.getLocal(c0),
c.i64_const(32)
)
)
)
);
if (k%2 == 0) {
f.addCode(
c.setLocal(c0,
c.i64_add(
c.i64_and(
c.getLocal(c0),
c.i64_const(0xFFFFFFFF)
),
mulij(k>>1, k>>1)
)
)
);
f.addCode(
c.setLocal(c1,
c.i64_add(
c.getLocal(c1),
c.i64_shr_u(
c.getLocal(c0),
c.i64_const(32)
)
)
)
);
}
// Add the old carry
if (k>0) {
f.addCode(
c.setLocal(c0,
c.i64_add(
c.i64_and(
c.getLocal(c0),
c.i64_const(0xFFFFFFFF)
),
c.i64_and(
c.getLocal(c0_old),
c.i64_const(0xFFFFFFFF)
),
)
)
);
f.addCode(
c.setLocal(c1,
c.i64_add(
c.i64_add(
c.getLocal(c1),
c.i64_shr_u(
c.getLocal(c0),
c.i64_const(32)
)
),
c.getLocal(c1_old)
)
)
);
}
f.addCode(
c.i64_store32(
c.getLocal("r"),
k*4,
c.getLocal(c0)
)
);
f.addCode(
c.setLocal(
c0_old,
c.getLocal(c1)
),
c.setLocal(
c1_old,
c.i64_shr_u(
c.getLocal(c0_old),
c.i64_const(32)
)
)
);
}
f.addCode(
c.i64_store32(
c.getLocal("r"),
n32*4*2-4,
c.getLocal(c0_old)
)
);
}
function buildSquareOld() {
const f = module.addFunction(prefix+"_squareOld");
f.addParam("x", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
f.addCode(c.call(prefix + "_mul", c.getLocal("x"), c.getLocal("x"), c.getLocal("r")));
}
function _buildMul1() {
const f = module.addFunction(prefix+"__mul1");
f.addParam("px", "i32");
f.addParam("y", "i64");
f.addParam("pr", "i32");
f.addLocal("c", "i64");
const c = f.getCodeBuilder();
f.addCode(c.setLocal(
"c",
c.i64_mul(
c.i64_load32_u(c.getLocal("px"), 0, 0),
c.getLocal("y")
)
));
f.addCode(c.i64_store32(
c.getLocal("pr"),
0,
0,
c.getLocal("c"),
));
for (let i=1; i<n32; i++) {
f.addCode(c.setLocal( "c",
c.i64_add(
c.i64_mul(
c.i64_load32_u(c.getLocal("px"), 4*i, 0),
c.getLocal("y")
),
c.i64_shr_u (c.getLocal("c"), c.i64_const(32))
)
));
f.addCode(c.i64_store32(
c.getLocal("pr"),
i*4,
0,
c.getLocal("c")
));
}
}
function _buildAdd1() {
const f = module.addFunction(prefix+"__add1");
f.addParam("x", "i32");
f.addParam("y", "i64");
f.addLocal("c", "i64");
f.addLocal("px", "i32");
const c = f.getCodeBuilder();
f.addCode(c.setLocal("px", c.getLocal("x")));
f.addCode(c.setLocal(
"c",
c.i64_add(
c.i64_load32_u(c.getLocal("px"), 0, 0),
c.getLocal("y")
)
));
f.addCode(c.i64_store32(
c.getLocal("px"),
0,
0,
c.getLocal("c"),
));
f.addCode(c.setLocal(
"c",
c.i64_shr_u(
c.getLocal("c"),
c.i64_const(32)
)
));
f.addCode(c.block(c.loop(
c.br_if(
1,
c.i64_eqz(c.getLocal("c"))
),
c.setLocal(
"px",
c.i32_add(
c.getLocal("px"),
c.i32_const(4)
)
),
c.setLocal(
"c",
c.i64_add(
c.i64_load32_u(c.getLocal("px"), 0, 0),
c.getLocal("c")
)
),
c.i64_store32(
c.getLocal("px"),
0,
0,
c.getLocal("c"),
),
c.setLocal(
"c",
c.i64_shr_u(
c.getLocal("c"),
c.i64_const(32)
)
),
c.br(0)
)));
}
function buildDiv() {
_buildMul1();
_buildAdd1();
const f = module.addFunction(prefix+"_div");
f.addParam("x", "i32");
f.addParam("y", "i32");
f.addParam("c", "i32");
f.addParam("r", "i32");
f.addLocal("rr", "i32");
f.addLocal("cc", "i32");
f.addLocal("eX", "i32");
f.addLocal("eY", "i32");
f.addLocal("sy", "i64");
f.addLocal("sx", "i64");
f.addLocal("ec", "i32");
const c = f.getCodeBuilder();
const Y = c.i32_const(module.alloc(n8));
const Caux = c.i32_const(module.alloc(n8));
const Raux = c.i32_const(module.alloc(n8));
const C = c.getLocal("cc");
const R = c.getLocal("rr");
const pr1 = module.alloc(n8*2);
const R1 = c.i32_const(pr1);
const R2 = c.i32_const(pr1+n8);
// Ic c is 0 then store it in an auxiliary buffer
f.addCode(c.if(
c.getLocal("c"),
c.setLocal("cc", c.getLocal("c")),
c.setLocal("cc", Caux)
));
// Ic r is 0 then store it in an auxiliary buffer
f.addCode(c.if(
c.getLocal("r"),
c.setLocal("rr", c.getLocal("r")),
c.setLocal("rr", Raux)
));
// Copy
f.addCode(c.call(prefix + "_copy", c.getLocal("x"), R));
f.addCode(c.call(prefix + "_copy", c.getLocal("y"), Y));
f.addCode(c.call(prefix + "_zero", C));
f.addCode(c.call(prefix + "_zero", R1));
f.addCode(c.setLocal("eX", c.i32_const(n8-1)));
f.addCode(c.setLocal("eY", c.i32_const(n8-1)));
// while (eY>3)&&(Y[eY]==0) ey--;
f.addCode(c.block(c.loop(
c.br_if(
1,
c.i32_or(
c.i32_load8_u(
c.i32_add(Y , c.getLocal("eY")),
0,
0
),
c.i32_eq(
c.getLocal("eY"),
c.i32_const(3)
)
)
),
c.setLocal("eY", c.i32_sub(c.getLocal("eY"), c.i32_const(1))),
c.br(0)
)));
f.addCode(
c.setLocal(
"sy",
c.i64_add(
c.i64_load32_u(
c.i32_sub(
c.i32_add( Y, c.getLocal("eY")),
c.i32_const(3)
),
0,
0
),
c.i64_const(1)
)
)
);
// Force a divide by 0 if quotien is 0
f.addCode(
c.if(
c.i64_eq(
c.getLocal("sy"),
c.i64_const(1)
),
c.drop(c.i64_div_u(c.i64_const(0), c.i64_const(0)))
)
);
f.addCode(c.block(c.loop(
// while (eX>7)&&(Y[eX]==0) ex--;
c.block(c.loop(
c.br_if(
1,
c.i32_or(
c.i32_load8_u(
c.i32_add(R , c.getLocal("eX")),
0,
0
),
c.i32_eq(
c.getLocal("eX"),
c.i32_const(7)
)
)
),
c.setLocal("eX", c.i32_sub(c.getLocal("eX"), c.i32_const(1))),
c.br(0)
)),
c.setLocal(
"sx",
c.i64_load(
c.i32_sub(
c.i32_add( R, c.getLocal("eX")),
c.i32_const(7)
),
0,
0
)
),
c.setLocal(
"sx",
c.i64_div_u(
c.getLocal("sx"),
c.getLocal("sy")
)
),
c.setLocal(
"ec",
c.i32_sub(
c.i32_sub(
c.getLocal("eX"),
c.getLocal("eY")
),
c.i32_const(4)
)
),
// While greater than 32 bits or ec is neg, shr and inc exp
c.block(c.loop(
c.br_if(
1,
c.i32_and(
c.i64_eqz(
c.i64_and(
c.getLocal("sx"),
c.i64_const("0xFFFFFFFF00000000")
)
),
c.i32_ge_s(
c.getLocal("ec"),
c.i32_const(0)
)
)
),
c.setLocal(
"sx",
c.i64_shr_u(
c.getLocal("sx"),
c.i64_const(8)
)
),
c.setLocal(
"ec",
c.i32_add(
c.getLocal("ec"),
c.i32_const(1)
)
),
c.br(0)
)),
c.if(
c.i64_eqz(c.getLocal("sx")),
[
...c.br_if(
2,
c.i32_eqz(c.call(prefix + "_gte", R, Y))
),
...c.setLocal("sx", c.i64_const(1)),
...c.setLocal("ec", c.i32_const(0))
]
),
c.call(prefix + "__mul1", Y, c.getLocal("sx"), R2),
c.drop(c.call(
prefix + "_sub",
R,
c.i32_sub(R2, c.getLocal("ec")),
R
)),
c.call(
prefix + "__add1",
c.i32_add(C, c.getLocal("ec")),
c.getLocal("sx")
),
c.br(0)
)));
}
function buildInverseMod() {
const f = module.addFunction(prefix+"_inverseMod");
f.addParam("px", "i32");
f.addParam("pm", "i32");
f.addParam("pr", "i32");
f.addLocal("t", "i32");
f.addLocal("newt", "i32");
f.addLocal("r", "i32");
f.addLocal("qq", "i32");
f.addLocal("qr", "i32");
f.addLocal("newr", "i32");
f.addLocal("swp", "i32");
f.addLocal("x", "i32");
f.addLocal("signt", "i32");
f.addLocal("signnewt", "i32");
f.addLocal("signx", "i32");
const c = f.getCodeBuilder();
const aux1 = c.i32_const(module.alloc(n8));
const aux2 = c.i32_const(module.alloc(n8));
const aux3 = c.i32_const(module.alloc(n8));
const aux4 = c.i32_const(module.alloc(n8));
const aux5 = c.i32_const(module.alloc(n8));
const aux6 = c.i32_const(module.alloc(n8));
const mulBuff = c.i32_const(module.alloc(n8*2));
const aux7 = c.i32_const(module.alloc(n8));
f.addCode(
c.setLocal("t", aux1),
c.call(prefix + "_zero", aux1),
c.setLocal("signt", c.i32_const(0)),
);
f.addCode(
c.setLocal("r", aux2),
c.call(prefix + "_copy", c.getLocal("pm"), aux2)
);
f.addCode(
c.setLocal("newt", aux3),
c.call(prefix + "_one", aux3),
c.setLocal("signnewt", c.i32_const(0)),
);
f.addCode(
c.setLocal("newr", aux4),
c.call(prefix + "_copy", c.getLocal("px"), aux4)
);
f.addCode(c.setLocal("qq", aux5));
f.addCode(c.setLocal("qr", aux6));
f.addCode(c.setLocal("x", aux7));
f.addCode(c.block(c.loop(
c.br_if(
1,
c.call(prefix + "_isZero", c.getLocal("newr") )
),
c.call(prefix + "_div", c.getLocal("r"), c.getLocal("newr"), c.getLocal("qq"), c.getLocal("qr")),
c.call(prefix + "_mul", c.getLocal("qq"), c.getLocal("newt"), mulBuff),
c.if(
c.getLocal("signt"),
c.if(
c.getLocal("signnewt"),
c.if (
c.call(prefix + "_gte", mulBuff, c.getLocal("t")),
[
...c.drop(c.call(prefix + "_sub", mulBuff, c.getLocal("t"), c.getLocal("x"))),
...c.setLocal("signx", c.i32_const(0))
],
[
...c.drop(c.call(prefix + "_sub", c.getLocal("t"), mulBuff, c.getLocal("x"))),
...c.setLocal("signx", c.i32_const(1))
],
),
[
...c.drop(c.call(prefix + "_add", mulBuff, c.getLocal("t"), c.getLocal("x"))),
...c.setLocal("signx", c.i32_const(1))
]
),
c.if(
c.getLocal("signnewt"),
[
...c.drop(c.call(prefix + "_add", mulBuff, c.getLocal("t"), c.getLocal("x"))),
...c.setLocal("signx", c.i32_const(0))
],
c.if (
c.call(prefix + "_gte", c.getLocal("t"), mulBuff),
[
...c.drop(c.call(prefix + "_sub", c.getLocal("t"), mulBuff, c.getLocal("x"))),
...c.setLocal("signx", c.i32_const(0))
],
[
...c.drop(c.call(prefix + "_sub", mulBuff, c.getLocal("t"), c.getLocal("x"))),
...c.setLocal("signx", c.i32_const(1))
]
)
)
),
c.setLocal("swp", c.getLocal("t")),
c.setLocal("t", c.getLocal("newt")),
c.setLocal("newt", c.getLocal("x")),
c.setLocal("x", c.getLocal("swp")),
c.setLocal("signt", c.getLocal("signnewt")),
c.setLocal("signnewt", c.getLocal("signx")),
c.setLocal("swp", c.getLocal("r")),
c.setLocal("r", c.getLocal("newr")),
c.setLocal("newr", c.getLocal("qr")),
c.setLocal("qr", c.getLocal("swp")),
c.br(0)
)));
f.addCode(c.if(
c.getLocal("signt"),
c.drop(c.call(prefix + "_sub", c.getLocal("pm"), c.getLocal("t"), c.getLocal("pr"))),
c.call(prefix + "_copy", c.getLocal("t"), c.getLocal("pr"))
));
}
buildCopy();
buildZero();
buildIsZero();
buildOne();
buildEq();
buildGte();
buildAdd();
buildSub();
buildMul();
buildSquare();
buildSquareOld();
buildDiv();
buildInverseMod();
module.exportFunction(prefix+"_copy");
module.exportFunction(prefix+"_zero");
module.exportFunction(prefix+"_one");
module.exportFunction(prefix+"_isZero");
module.exportFunction(prefix+"_eq");
module.exportFunction(prefix+"_gte");
module.exportFunction(prefix+"_add");
module.exportFunction(prefix+"_sub");
module.exportFunction(prefix+"_mul");
module.exportFunction(prefix+"_square");
module.exportFunction(prefix+"_squareOld");
module.exportFunction(prefix+"_div");
module.exportFunction(prefix+"_inverseMod");
return prefix;
};
/*
Copyright 2019 0KIMS association.
This file is part of wasmsnark (Web Assembly zkSnark Prover).
wasmsnark 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.
wasmsnark 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 wasmsnark. If not, see <https://www.gnu.org/licenses/>.
*/
var build_timesscalar = function buildTimesScalar(module, fnName, elementLen, opAB, opAA, opCopy, opInit) {
const f = module.addFunction(fnName);
f.addParam("base", "i32");
f.addParam("scalar", "i32");
f.addParam("scalarLength", "i32");
f.addParam("r", "i32");
f.addLocal("i", "i32");
f.addLocal("b", "i32");
const c = f.getCodeBuilder();
const aux = c.i32_const(module.alloc(elementLen));
f.addCode(
c.if(
c.i32_eqz(c.getLocal("scalarLength")),
[
...c.call(opInit, c.getLocal("r")),
...c.ret([])
]
)
);
f.addCode(c.call(opCopy, c.getLocal("base"), aux));
f.addCode(c.call(opInit, c.getLocal("r")));
f.addCode(c.setLocal("i", c.getLocal("scalarLength")));
f.addCode(c.block(c.loop(
c.setLocal("i", c.i32_sub(c.getLocal("i"), c.i32_const(1))),
c.setLocal(
"b",
c.i32_load8_u(
c.i32_add(
c.getLocal("scalar"),
c.getLocal("i")
)
)
),
...innerLoop(),
c.br_if(1, c.i32_eqz ( c.getLocal("i") )),
c.br(0)
)));
function innerLoop() {
const code = [];
for (let i=0; i<8; i++) {
code.push(
...c.call(opAA, c.getLocal("r"), c.getLocal("r")),
...c.if(
c.i32_ge_u( c.getLocal("b"), c.i32_const(0x80 >> i)),
[
...c.setLocal(
"b",
c.i32_sub(
c.getLocal("b"),
c.i32_const(0x80 >> i)
)
),
...c.call(opAB, c.getLocal("r"),aux, c.getLocal("r"))
]
)
);
}
return code;
}
};
var build_batchinverse = buildBatchInverse$3;
function buildBatchInverse$3(module, prefix) {
const n8 = module.modules[prefix].n64*8;
const f = module.addFunction(prefix+"_batchInverse");
f.addParam("pIn", "i32");
f.addParam("inStep", "i32");
f.addParam("n", "i32");
f.addParam("pOut", "i32");
f.addParam("outStep", "i32");
f.addLocal("itAux", "i32");
f.addLocal("itIn", "i32");
f.addLocal("itOut","i32");
f.addLocal("i","i32");
const c = f.getCodeBuilder();
const AUX = c.i32_const(module.alloc(n8));
// Alloc Working space for accumulated umltiplications
f.addCode(
c.setLocal("itAux", c.i32_load( c.i32_const(0) )),
c.i32_store(
c.i32_const(0),
c.i32_add(
c.getLocal("itAux"),
c.i32_mul(
c.i32_add(
c.getLocal("n"),
c.i32_const(1)
),
c.i32_const(n8)
)
)
)
);
f.addCode(
// aux[0] = a;
c.call(prefix+"_one", c.getLocal("itAux")),
// for (i=0;i<n;i++) aux[i] = aux[i-1]*in[i]
c.setLocal("itIn", c.getLocal("pIn")),
c.setLocal("itAux", c.i32_add(c.getLocal("itAux"), c.i32_const(n8))),
c.setLocal("i", c.i32_const(0)),
c.block(c.loop(
c.br_if(1, c.i32_eq ( c.getLocal("i"), c.getLocal("n") )),
c.if(
c.call(prefix+"_isZero", c.getLocal("itIn")),
c.call(
prefix + "_copy",
c.i32_sub(c.getLocal("itAux"), c.i32_const(n8)),
c.getLocal("itAux")
),
c.call(
prefix+"_mul",
c.getLocal("itIn"),
c.i32_sub(c.getLocal("itAux"), c.i32_const(n8)),
c.getLocal("itAux")
)
),
c.setLocal("itIn", c.i32_add(c.getLocal("itIn"), c.getLocal("inStep"))),
c.setLocal("itAux", c.i32_add(c.getLocal("itAux"), c.i32_const(n8))),
c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))),
c.br(0)
)),
// point to the last
c.setLocal("itIn", c.i32_sub(c.getLocal("itIn"), c.getLocal("inStep"))),
c.setLocal("itAux", c.i32_sub(c.getLocal("itAux"), c.i32_const(n8))),
// itOut = pOut + (n-1)*stepOut // Point to the last
c.setLocal(
"itOut",
c.i32_add(
c.getLocal("pOut"),
c.i32_mul(
c.i32_sub(c.getLocal("n"), c.i32_const(1)),
c.getLocal("outStep"),
)
)
),
// aux[n-1] = 1/aux[n-1]
c.call(prefix+"_inverse", c.getLocal("itAux"), c.getLocal("itAux") ),
c.block(c.loop(
c.br_if(1, c.i32_eqz( c.getLocal("i"))),
c.if(
c.call(prefix+"_isZero", c.getLocal("itIn")),
[
...c.call(
prefix + "_copy",
c.getLocal("itAux"),
c.i32_sub(c.getLocal("itAux"), c.i32_const(n8)),
),
...c.call(
prefix + "_zero",
c.getLocal("itOut")
)
],[
...c.call(prefix + "_copy", c.i32_sub(c.getLocal("itAux"), c.i32_const(n8)), AUX),
...c.call(
prefix+"_mul",
c.getLocal("itAux"),
c.getLocal("itIn"),
c.i32_sub(c.getLocal("itAux"), c.i32_const(n8)),
),
...c.call(
prefix+"_mul",
c.getLocal("itAux"),
AUX,
c.getLocal("itOut")
)
]
),
c.setLocal("itIn", c.i32_sub(c.getLocal("itIn"), c.getLocal("inStep"))),
c.setLocal("itOut", c.i32_sub(c.getLocal("itOut"), c.getLocal("outStep"))),
c.setLocal("itAux", c.i32_sub(c.getLocal("itAux"), c.i32_const(n8))),
c.setLocal("i", c.i32_sub(c.getLocal("i"), c.i32_const(1))),
c.br(0)
))
);
// Recover Old memory
f.addCode(
c.i32_store(
c.i32_const(0),
c.getLocal("itAux")
)
);
}
var build_batchconvertion = buildBatchConvertion$3;
function buildBatchConvertion$3(module, fnName, internalFnName, sizeIn, sizeOut, reverse) {
if (typeof reverse === "undefined") {
// Set the reverse in a way that allows to use the same buffer as in/out.
if (sizeIn < sizeOut) {
reverse = true;
} else {
reverse = false;
}
}
const f = module.addFunction(fnName);
f.addParam("pIn", "i32");
f.addParam("n", "i32");
f.addParam("pOut", "i32");
f.addLocal("i", "i32");
f.addLocal("itIn", "i32");
f.addLocal("itOut", "i32");
const c = f.getCodeBuilder();
if (reverse) {
f.addCode(
c.setLocal("itIn",
c.i32_add(
c.getLocal("pIn"),
c.i32_mul(
c.i32_sub(
c.getLocal("n"),
c.i32_const(1)
),
c.i32_const(sizeIn)
)
)
),
c.setLocal("itOut",
c.i32_add(
c.getLocal("pOut"),
c.i32_mul(
c.i32_sub(
c.getLocal("n"),
c.i32_const(1)
),
c.i32_const(sizeOut)
)
)
),
c.setLocal("i", c.i32_const(0)),
c.block(c.loop(
c.br_if(1, c.i32_eq ( c.getLocal("i"), c.getLocal("n") )),
c.call(internalFnName, c.getLocal("itIn"), c.getLocal("itOut")),
c.setLocal("itIn", c.i32_sub(c.getLocal("itIn"), c.i32_const(sizeIn))),
c.setLocal("itOut", c.i32_sub(c.getLocal("itOut"), c.i32_const(sizeOut))),
c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))),
c.br(0)
)),
);
} else {
f.addCode(
c.setLocal("itIn", c.getLocal("pIn")),
c.setLocal("itOut", c.getLocal("pOut")),
c.setLocal("i", c.i32_const(0)),
c.block(c.loop(
c.br_if(1, c.i32_eq ( c.getLocal("i"), c.getLocal("n") )),
c.call(internalFnName, c.getLocal("itIn"), c.getLocal("itOut")),
c.setLocal("itIn", c.i32_add(c.getLocal("itIn"), c.i32_const(sizeIn))),
c.setLocal("itOut", c.i32_add(c.getLocal("itOut"), c.i32_const(sizeOut))),
c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))),
c.br(0)
)),
);
}
}
var build_batchop = buildBatchConvertion$2;
function buildBatchConvertion$2(module, fnName, internalFnName, sizeIn, sizeOut, reverse) {
if (typeof reverse === "undefined") {
// Set the reverse in a way that allows to use the same buffer as in/out.
if (sizeIn < sizeOut) {
reverse = true;
} else {
reverse = false;
}
}
const f = module.addFunction(fnName);
f.addParam("pIn1", "i32");
f.addParam("pIn2", "i32");
f.addParam("n", "i32");
f.addParam("pOut", "i32");
f.addLocal("i", "i32");
f.addLocal("itIn1", "i32");
f.addLocal("itIn2", "i32");
f.addLocal("itOut", "i32");
const c = f.getCodeBuilder();
if (reverse) {
f.addCode(
c.setLocal("itIn1",
c.i32_add(
c.getLocal("pIn1"),
c.i32_mul(
c.i32_sub(
c.getLocal("n"),
c.i32_const(1)
),
c.i32_const(sizeIn)
)
)
),
c.setLocal("itIn2",
c.i32_add(
c.getLocal("pIn2"),
c.i32_mul(
c.i32_sub(
c.getLocal("n"),
c.i32_const(1)
),
c.i32_const(sizeIn)
)
)
),
c.setLocal("itOut",
c.i32_add(
c.getLocal("pOut"),
c.i32_mul(
c.i32_sub(
c.getLocal("n"),
c.i32_const(1)
),
c.i32_const(sizeOut)
)
)
),
c.setLocal("i", c.i32_const(0)),
c.block(c.loop(
c.br_if(1, c.i32_eq ( c.getLocal("i"), c.getLocal("n") )),
c.call(internalFnName, c.getLocal("itIn1"), c.getLocal("itIn2"), c.getLocal("itOut")),
c.setLocal("itIn1", c.i32_sub(c.getLocal("itIn1"), c.i32_const(sizeIn))),
c.setLocal("itIn2", c.i32_sub(c.getLocal("itIn2"), c.i32_const(sizeIn))),
c.setLocal("itOut", c.i32_sub(c.getLocal("itOut"), c.i32_const(sizeOut))),
c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))),
c.br(0)
)),
);
} else {
f.addCode(
c.setLocal("itIn1", c.getLocal("pIn1")),
c.setLocal("itIn2", c.getLocal("pIn2")),
c.setLocal("itOut", c.getLocal("pOut")),
c.setLocal("i", c.i32_const(0)),
c.block(c.loop(
c.br_if(1, c.i32_eq ( c.getLocal("i"), c.getLocal("n") )),
c.call(internalFnName, c.getLocal("itIn1"), c.getLocal("itIn2"), c.getLocal("itOut")),
c.setLocal("itIn1", c.i32_add(c.getLocal("itIn1"), c.i32_const(sizeIn))),
c.setLocal("itIn2", c.i32_add(c.getLocal("itIn2"), c.i32_const(sizeIn))),
c.setLocal("itOut", c.i32_add(c.getLocal("itOut"), c.i32_const(sizeOut))),
c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))),
c.br(0)
)),
);
}
}
var bigint = {};
// Many of these utilities are from the `big-integer` library,
// but adjusted to only work with native BigInt type
// Ref https://github.com/peterolson/BigInteger.js/blob/e5d2154d3c417069c51e7116bafc3b91d0b9fe41/BigInteger.js
// Originally licensed The Unlicense
function compare(a, b) {
return a === b ? 0 : a > b ? 1 : -1;
}
function square$1(n) {
return n * n;
}
function isOdd$4(n) {
return n % 2n !== 0n;
}
function isEven(n) {
return n % 2n === 0n;
}
function isNegative$3(n) {
return n < 0n;
}
function isPositive(n) {
return n > 0n;
}
function bitLength$5(n) {
if (isNegative$3(n)) {
return n.toString(2).length - 1; // discard the - sign
} else {
return n.toString(2).length;
}
}
function abs(n) {
return n < 0n ? -n : n;
}
function isUnit(n) {
return abs(n) === 1n;
}
function modInv$3(a, n) {
var t = 0n, newT = 1n, r = n, newR = abs(a), q, lastT, lastR;
while (newR !== 0n) {
q = r / newR;
lastT = t;
lastR = r;
t = newT;
r = newR;
newT = lastT - (q * newT);
newR = lastR - (q * newR);
}
if (!isUnit(r)) throw new Error(a.toString() + " and " + n.toString() + " are not co-prime");
if (compare(t, 0n) === -1) {
t = t + n;
}
if (isNegative$3(a)) {
return -t;
}
return t;
}
function modPow$2(n, exp, mod) {
if (mod === 0n) throw new Error("Cannot take modPow with modulus 0");
var r = 1n,
base = n % mod;
if (isNegative$3(exp)) {
exp = exp * -1n;
base = modInv$3(base, mod);
}
while (isPositive(exp)) {
if (base === 0n) return 0n;
if (isOdd$4(exp)) r = r * base % mod;
exp = exp / 2n;
base = square$1(base) % mod;
}
return r;
}
function compareAbs(a, b) {
a = a >= 0n ? a : -a;
b = b >= 0n ? b : -b;
return a === b ? 0 : a > b ? 1 : -1;
}
function isDivisibleBy(a, n) {
if (n === 0n) return false;
if (isUnit(n)) return true;
if (compareAbs(n, 2n) === 0) return isEven(a);
return a % n === 0n;
}
function isBasicPrime(v) {
var n = abs(v);
if (isUnit(n)) return false;
if (n === 2n || n === 3n || n === 5n) return true;
if (isEven(n) || isDivisibleBy(n, 3n) || isDivisibleBy(n, 5n)) return false;
if (n < 49n) return true;
// we don't know if it's prime: let the other functions figure it out
}
function prev(n) {
return n - 1n;
}
function millerRabinTest(n, a) {
var nPrev = prev(n),
b = nPrev,
r = 0,
d, i, x;
while (isEven(b)) b = b / 2n, r++;
next: for (i = 0; i < a.length; i++) {
if (n < a[i]) continue;
x = modPow$2(BigInt(a[i]), b, n);
if (isUnit(x) || x === nPrev) continue;
for (d = r - 1; d != 0; d--) {
x = square$1(x) % n;
if (isUnit(x)) return false;
if (x === nPrev) continue next;
}
return false;
}
return true;
}
function isPrime$1(p) {
var isPrime = isBasicPrime(p);
if (isPrime !== undefined) return isPrime;
var n = abs(p);
var bits = bitLength$5(n);
if (bits <= 64)
return millerRabinTest(n, [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37]);
var logN = Math.log(2) * Number(bits);
var t = Math.ceil(logN);
for (var a = [], i = 0; i < t; i++) {
a.push(BigInt(i + 2));
}
return millerRabinTest(n, a);
}
bigint.bitLength = bitLength$5;
bigint.isOdd = isOdd$4;
bigint.isNegative = isNegative$3;
bigint.abs = abs;
bigint.isUnit = isUnit;
bigint.compare = compare;
bigint.modInv = modInv$3;
bigint.modPow = modPow$2;
bigint.isPrime = isPrime$1;
bigint.square = square$1;
/*
Copyright 2019 0KIMS association.
This file is part of wasmsnark (Web Assembly zkSnark Prover).
wasmsnark 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.
wasmsnark 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 wasmsnark. If not, see <https://www.gnu.org/licenses/>.
*/
const buildInt = build_int;
const utils$5 = utils$6;
const buildExp$2 = build_timesscalar;
const buildBatchInverse$2 = build_batchinverse;
const buildBatchConvertion$1 = build_batchconvertion;
const buildBatchOp = build_batchop;
const { bitLength: bitLength$4, modInv: modInv$2, modPow: modPow$1, isPrime, isOdd: isOdd$3, square } = bigint;
var build_f1m = function buildF1m(module, _q, _prefix, _intPrefix) {
const q = BigInt(_q);
const n64 = Math.floor((bitLength$4(q - 1n) - 1)/64) +1;
const n32 = n64*2;
const n8 = n64*8;
const prefix = _prefix || "f1m";
if (module.modules[prefix]) return prefix; // already builded
const intPrefix = buildInt(module, n64, _intPrefix);
const pq = module.alloc(n8, utils$5.bigInt2BytesLE(q, n8));
const pR2 = module.alloc(utils$5.bigInt2BytesLE(square(1n << BigInt(n64*64)) % q, n8));
const pOne = module.alloc(utils$5.bigInt2BytesLE((1n << BigInt(n64*64)) % q, n8));
const pZero = module.alloc(utils$5.bigInt2BytesLE(0n, n8));
const _minusOne = q - 1n;
const _e = _minusOne >> 1n; // e = (p-1)/2
const pe = module.alloc(n8, utils$5.bigInt2BytesLE(_e, n8));
const _ePlusOne = _e + 1n; // e = (p-1)/2
const pePlusOne = module.alloc(n8, utils$5.bigInt2BytesLE(_ePlusOne, n8));
module.modules[prefix] = {
pq: pq,
pR2: pR2,
n64: n64,
q: q,
pOne: pOne,
pZero: pZero,
pePlusOne: pePlusOne
};
function buildOne() {
const f = module.addFunction(prefix+"_one");
f.addParam("pr", "i32");
const c = f.getCodeBuilder();
f.addCode(c.call(intPrefix + "_copy", c.i32_const(pOne), c.getLocal("pr")));
}
function buildAdd() {
const f = module.addFunction(prefix+"_add");
f.addParam("x", "i32");
f.addParam("y", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
f.addCode(
c.if(
c.call(intPrefix+"_add", c.getLocal("x"), c.getLocal("y"), c.getLocal("r")),
c.drop(c.call(intPrefix+"_sub", c.getLocal("r"), c.i32_const(pq), c.getLocal("r"))),
c.if(
c.call(intPrefix+"_gte", c.getLocal("r"), c.i32_const(pq) ),
c.drop(c.call(intPrefix+"_sub", c.getLocal("r"), c.i32_const(pq), c.getLocal("r"))),
)
)
);
}
function buildSub() {
const f = module.addFunction(prefix+"_sub");
f.addParam("x", "i32");
f.addParam("y", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
f.addCode(
c.if(
c.call(intPrefix+"_sub", c.getLocal("x"), c.getLocal("y"), c.getLocal("r")),
c.drop(c.call(intPrefix+"_add", c.getLocal("r"), c.i32_const(pq), c.getLocal("r")))
)
);
}
function buildNeg() {
const f = module.addFunction(prefix+"_neg");
f.addParam("x", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
f.addCode(
c.call(prefix + "_sub", c.i32_const(pZero), c.getLocal("x"), c.getLocal("r"))
);
}
function buildIsNegative() {
const f = module.addFunction(prefix+"_isNegative");
f.addParam("x", "i32");
f.setReturnType("i32");
const c = f.getCodeBuilder();
const AUX = c.i32_const(module.alloc(n8));
f.addCode(
c.call(prefix + "_fromMontgomery", c.getLocal("x"), AUX),
c.call(intPrefix + "_gte", AUX, c.i32_const(pePlusOne) )
);
}
function buildSign() {
const f = module.addFunction(prefix+"_sign");
f.addParam("x", "i32");
f.setReturnType("i32");
const c = f.getCodeBuilder();
const AUX = c.i32_const(module.alloc(n8));
f.addCode(
c.if (
c.call(intPrefix + "_isZero", c.getLocal("x")),
c.ret(c.i32_const(0))
),
c.call(prefix + "_fromMontgomery", c.getLocal("x"), AUX),
c.if(
c.call(intPrefix + "_gte", AUX, c.i32_const(pePlusOne)),
c.ret(c.i32_const(-1))
),
c.ret(c.i32_const(1))
);
}
function buildMReduct() {
const carries = module.alloc(n32*n32*8);
const f = module.addFunction(prefix+"_mReduct");
f.addParam("t", "i32");
f.addParam("r", "i32");
f.addLocal("np32", "i64");
f.addLocal("c", "i64");
f.addLocal("m", "i64");
const c = f.getCodeBuilder();
const np32 = Number(0x100000000n - modInv$2(q, 0x100000000n));
f.addCode(c.setLocal("np32", c.i64_const(np32)));
for (let i=0; i<n32; i++) {
f.addCode(c.setLocal("c", c.i64_const(0)));
f.addCode(
c.setLocal(
"m",
c.i64_and(
c.i64_mul(
c.i64_load32_u(c.getLocal("t"), i*4),
c.getLocal("np32")
),
c.i64_const("0xFFFFFFFF")
)
)
);
for (let j=0; j<n32; j++) {
f.addCode(
c.setLocal("c",
c.i64_add(
c.i64_add(
c.i64_load32_u(c.getLocal("t"), (i+j)*4),
c.i64_shr_u(c.getLocal("c"), c.i64_const(32))
),
c.i64_mul(
c.i64_load32_u(c.i32_const(pq), j*4),
c.getLocal("m")
)
)
)
);
f.addCode(
c.i64_store32(
c.getLocal("t"),
(i+j)*4,
c.getLocal("c")
)
);
}
f.addCode(
c.i64_store32(
c.i32_const(carries),
i*4,
c.i64_shr_u(c.getLocal("c"), c.i64_const(32))
)
);
}
f.addCode(
c.call(
prefix+"_add",
c.i32_const(carries),
c.i32_add(
c.getLocal("t"),
c.i32_const(n32*4)
),
c.getLocal("r")
)
);
}
function buildMul() {
const f = module.addFunction(prefix+"_mul");
f.addParam("x", "i32");
f.addParam("y", "i32");
f.addParam("r", "i32");
f.addLocal("c0", "i64");
f.addLocal("c1", "i64");
f.addLocal("np32", "i64");
for (let i=0;i<n32; i++) {
f.addLocal("x"+i, "i64");
f.addLocal("y"+i, "i64");
f.addLocal("m"+i, "i64");
f.addLocal("q"+i, "i64");
}
const c = f.getCodeBuilder();
const np32 = Number(0x100000000n - modInv$2(q, 0x100000000n));
f.addCode(c.setLocal("np32", c.i64_const(np32)));
const loadX = [];
const loadY = [];
const loadQ = [];
function mulij(i, j) {
let X,Y;
if (!loadX[i]) {
X = c.teeLocal("x"+i, c.i64_load32_u( c.getLocal("x"), i*4));
loadX[i] = true;
} else {
X = c.getLocal("x"+i);
}
if (!loadY[j]) {
Y = c.teeLocal("y"+j, c.i64_load32_u( c.getLocal("y"), j*4));
loadY[j] = true;
} else {
Y = c.getLocal("y"+j);
}
return c.i64_mul( X, Y );
}
function mulqm(i, j) {
let Q,M;
if (!loadQ[i]) {
Q = c.teeLocal("q"+i, c.i64_load32_u(c.i32_const(0), pq+i*4 ));
loadQ[i] = true;
} else {
Q = c.getLocal("q"+i);
}
M = c.getLocal("m"+j);
return c.i64_mul( Q, M );
}
let c0 = "c0";
let c1 = "c1";
for (let k=0; k<n32*2-1; k++) {
for (let i=Math.max(0, k-n32+1); (i<=k)&&(i<n32); i++) {
const j= k-i;
f.addCode(
c.setLocal(c0,
c.i64_add(
c.i64_and(
c.getLocal(c0),
c.i64_const(0xFFFFFFFF)
),
mulij(i,j)
)
)
);
f.addCode(
c.setLocal(c1,
c.i64_add(
c.getLocal(c1),
c.i64_shr_u(
c.getLocal(c0),
c.i64_const(32)
)
)
)
);
}
for (let i=Math.max(1, k-n32+1); (i<=k)&&(i<n32); i++) {
const j= k-i;
f.addCode(
c.setLocal(c0,
c.i64_add(
c.i64_and(
c.getLocal(c0),
c.i64_const(0xFFFFFFFF)
),
mulqm(i,j)
)
)
);
f.addCode(
c.setLocal(c1,
c.i64_add(
c.getLocal(c1),
c.i64_shr_u(
c.getLocal(c0),
c.i64_const(32)
)
)
)
);
}
if (k<n32) {
f.addCode(
c.setLocal(
"m"+k,
c.i64_and(
c.i64_mul(
c.i64_and(
c.getLocal(c0),
c.i64_const(0xFFFFFFFF)
),
c.getLocal("np32")
),
c.i64_const("0xFFFFFFFF")
)
)
);
f.addCode(
c.setLocal(c0,
c.i64_add(
c.i64_and(
c.getLocal(c0),
c.i64_const(0xFFFFFFFF)
),
mulqm(0,k)
)
)
);
f.addCode(
c.setLocal(c1,
c.i64_add(
c.getLocal(c1),
c.i64_shr_u(
c.getLocal(c0),
c.i64_const(32)
)
)
)
);
}
if (k>=n32) {
f.addCode(
c.i64_store32(
c.getLocal("r"),
(k-n32)*4,
c.getLocal(c0)
)
);
}
[c0, c1] = [c1, c0];
f.addCode(
c.setLocal(c1,
c.i64_shr_u(
c.getLocal(c0),
c.i64_const(32)
)
)
);
}
f.addCode(
c.i64_store32(
c.getLocal("r"),
n32*4-4,
c.getLocal(c0)
)
);
f.addCode(
c.if(
c.i32_wrap_i64(c.getLocal(c1)),
c.drop(c.call(intPrefix+"_sub", c.getLocal("r"), c.i32_const(pq), c.getLocal("r"))),
c.if(
c.call(intPrefix+"_gte", c.getLocal("r"), c.i32_const(pq) ),
c.drop(c.call(intPrefix+"_sub", c.getLocal("r"), c.i32_const(pq), c.getLocal("r"))),
)
)
);
}
function buildSquare() {
const f = module.addFunction(prefix+"_square");
f.addParam("x", "i32");
f.addParam("r", "i32");
f.addLocal("c0", "i64");
f.addLocal("c1", "i64");
f.addLocal("c0_old", "i64");
f.addLocal("c1_old", "i64");
f.addLocal("np32", "i64");
for (let i=0;i<n32; i++) {
f.addLocal("x"+i, "i64");
f.addLocal("m"+i, "i64");
f.addLocal("q"+i, "i64");
}
const c = f.getCodeBuilder();
const np32 = Number(0x100000000n - modInv$2(q, 0x100000000n));
f.addCode(c.setLocal("np32", c.i64_const(np32)));
const loadX = [];
const loadQ = [];
function mulij(i, j) {
let X,Y;
if (!loadX[i]) {
X = c.teeLocal("x"+i, c.i64_load32_u( c.getLocal("x"), i*4));
loadX[i] = true;
} else {
X = c.getLocal("x"+i);
}
if (!loadX[j]) {
Y = c.teeLocal("x"+j, c.i64_load32_u( c.getLocal("x"), j*4));
loadX[j] = true;
} else {
Y = c.getLocal("x"+j);
}
return c.i64_mul( X, Y );
}
function mulqm(i, j) {
let Q,M;
if (!loadQ[i]) {
Q = c.teeLocal("q"+i, c.i64_load32_u(c.i32_const(0), pq+i*4 ));
loadQ[i] = true;
} else {
Q = c.getLocal("q"+i);
}
M = c.getLocal("m"+j);
return c.i64_mul( Q, M );
}
let c0 = "c0";
let c1 = "c1";
let c0_old = "c0_old";
let c1_old = "c1_old";
for (let k=0; k<n32*2-1; k++) {
f.addCode(
c.setLocal(c0, c.i64_const(0)),
c.setLocal(c1, c.i64_const(0)),
);
for (let i=Math.max(0, k-n32+1); (i<((k+1)>>1) )&&(i<n32); i++) {
const j= k-i;
f.addCode(
c.setLocal(c0,
c.i64_add(
c.i64_and(
c.getLocal(c0),
c.i64_const(0xFFFFFFFF)
),
mulij(i,j)
)
)
);
f.addCode(
c.setLocal(c1,
c.i64_add(
c.getLocal(c1),
c.i64_shr_u(
c.getLocal(c0),
c.i64_const(32)
)
)
)
);
}
// Multiply by 2
f.addCode(
c.setLocal(c0,
c.i64_shl(
c.i64_and(
c.getLocal(c0),
c.i64_const(0xFFFFFFFF)
),
c.i64_const(1)
)
)
);
f.addCode(
c.setLocal(c1,
c.i64_add(
c.i64_shl(
c.getLocal(c1),
c.i64_const(1)
),
c.i64_shr_u(
c.getLocal(c0),
c.i64_const(32)
)
)
)
);
if (k%2 == 0) {
f.addCode(
c.setLocal(c0,
c.i64_add(
c.i64_and(
c.getLocal(c0),
c.i64_const(0xFFFFFFFF)
),
mulij(k>>1, k>>1)
)
)
);
f.addCode(
c.setLocal(c1,
c.i64_add(
c.getLocal(c1),
c.i64_shr_u(
c.getLocal(c0),
c.i64_const(32)
)
)
)
);
}
// Add the old carry
if (k>0) {
f.addCode(
c.setLocal(c0,
c.i64_add(
c.i64_and(
c.getLocal(c0),
c.i64_const(0xFFFFFFFF)
),
c.i64_and(
c.getLocal(c0_old),
c.i64_const(0xFFFFFFFF)
),
)
)
);
f.addCode(
c.setLocal(c1,
c.i64_add(
c.i64_add(
c.getLocal(c1),
c.i64_shr_u(
c.getLocal(c0),
c.i64_const(32)
)
),
c.getLocal(c1_old)
)
)
);
}
for (let i=Math.max(1, k-n32+1); (i<=k)&&(i<n32); i++) {
const j= k-i;
f.addCode(
c.setLocal(c0,
c.i64_add(
c.i64_and(
c.getLocal(c0),
c.i64_const(0xFFFFFFFF)
),
mulqm(i,j)
)
)
);
f.addCode(
c.setLocal(c1,
c.i64_add(
c.getLocal(c1),
c.i64_shr_u(
c.getLocal(c0),
c.i64_const(32)
)
)
)
);
}
if (k<n32) {
f.addCode(
c.setLocal(
"m"+k,
c.i64_and(
c.i64_mul(
c.i64_and(
c.getLocal(c0),
c.i64_const(0xFFFFFFFF)
),
c.getLocal("np32")
),
c.i64_const("0xFFFFFFFF")
)
)
);
f.addCode(
c.setLocal(c0,
c.i64_add(
c.i64_and(
c.getLocal(c0),
c.i64_const(0xFFFFFFFF)
),
mulqm(0,k)
)
)
);
f.addCode(
c.setLocal(c1,
c.i64_add(
c.getLocal(c1),
c.i64_shr_u(
c.getLocal(c0),
c.i64_const(32)
)
)
)
);
}
if (k>=n32) {
f.addCode(
c.i64_store32(
c.getLocal("r"),
(k-n32)*4,
c.getLocal(c0)
)
);
}
f.addCode(
c.setLocal(
c0_old,
c.getLocal(c1)
),
c.setLocal(
c1_old,
c.i64_shr_u(
c.getLocal(c0_old),
c.i64_const(32)
)
)
);
}
f.addCode(
c.i64_store32(
c.getLocal("r"),
n32*4-4,
c.getLocal(c0_old)
)
);
f.addCode(
c.if(
c.i32_wrap_i64(c.getLocal(c1_old)),
c.drop(c.call(intPrefix+"_sub", c.getLocal("r"), c.i32_const(pq), c.getLocal("r"))),
c.if(
c.call(intPrefix+"_gte", c.getLocal("r"), c.i32_const(pq) ),
c.drop(c.call(intPrefix+"_sub", c.getLocal("r"), c.i32_const(pq), c.getLocal("r"))),
)
)
);
}
function buildSquareOld() {
const f = module.addFunction(prefix+"_squareOld");
f.addParam("x", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
f.addCode(c.call(prefix + "_mul", c.getLocal("x"), c.getLocal("x"), c.getLocal("r")));
}
function buildToMontgomery() {
const f = module.addFunction(prefix+"_toMontgomery");
f.addParam("x", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
f.addCode(c.call(prefix+"_mul", c.getLocal("x"), c.i32_const(pR2), c.getLocal("r")));
}
function buildFromMontgomery() {
const pAux2 = module.alloc(n8*2);
const f = module.addFunction(prefix+"_fromMontgomery");
f.addParam("x", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
f.addCode(c.call(intPrefix + "_copy", c.getLocal("x"), c.i32_const(pAux2) ));
f.addCode(c.call(intPrefix + "_zero", c.i32_const(pAux2 + n8) ));
f.addCode(c.call(prefix+"_mReduct", c.i32_const(pAux2), c.getLocal("r")));
}
function buildInverse() {
const f = module.addFunction(prefix+ "_inverse");
f.addParam("x", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
f.addCode(c.call(prefix + "_fromMontgomery", c.getLocal("x"), c.getLocal("r")));
f.addCode(c.call(intPrefix + "_inverseMod", c.getLocal("r"), c.i32_const(pq), c.getLocal("r")));
f.addCode(c.call(prefix + "_toMontgomery", c.getLocal("r"), c.getLocal("r")));
}
// Calculate various valuse needed for sqrt
let _nqr = 2n;
if (isPrime(q)) {
while (modPow$1(_nqr, _e, q) !== _minusOne) _nqr = _nqr + 1n;
}
let s2 = 0;
let _t = _minusOne;
while ((!isOdd$3(_t))&&(_t !== 0n)) {
s2++;
_t = _t >> 1n;
}
const pt = module.alloc(n8, utils$5.bigInt2BytesLE(_t, n8));
const _nqrToT = modPow$1(_nqr, _t, q);
const pNqrToT = module.alloc(utils$5.bigInt2BytesLE((_nqrToT << BigInt(n64*64)) % q, n8));
const _tPlusOneOver2 = (_t + 1n) >> 1n;
const ptPlusOneOver2 = module.alloc(n8, utils$5.bigInt2BytesLE(_tPlusOneOver2, n8));
function buildSqrt() {
const f = module.addFunction(prefix+ "_sqrt");
f.addParam("n", "i32");
f.addParam("r", "i32");
f.addLocal("m", "i32");
f.addLocal("i", "i32");
f.addLocal("j", "i32");
const c = f.getCodeBuilder();
const ONE = c.i32_const(pOne);
const C = c.i32_const(module.alloc(n8));
const T = c.i32_const(module.alloc(n8));
const R = c.i32_const(module.alloc(n8));
const SQ = c.i32_const(module.alloc(n8));
const B = c.i32_const(module.alloc(n8));
f.addCode(
// If (n==0) return 0
c.if(
c.call(prefix + "_isZero", c.getLocal("n")),
c.ret(
c.call(prefix + "_zero", c.getLocal("r"))
)
),
c.setLocal("m", c.i32_const(s2)),
c.call(prefix + "_copy", c.i32_const(pNqrToT), C),
c.call(prefix + "_exp", c.getLocal("n"), c.i32_const(pt), c.i32_const(n8), T),
c.call(prefix + "_exp", c.getLocal("n"), c.i32_const(ptPlusOneOver2), c.i32_const(n8), R),
c.block(c.loop(
c.br_if(1, c.call(prefix + "_eq", T, ONE)),
c.call(prefix + "_square", T, SQ),
c.setLocal("i", c.i32_const(1)),
c.block(c.loop(
c.br_if(1, c.call(prefix + "_eq", SQ, ONE)),
c.call(prefix + "_square", SQ, SQ),
c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))),
c.br(0)
)),
c.call(prefix + "_copy", C, B),
c.setLocal("j", c.i32_sub(c.i32_sub( c.getLocal("m"), c.getLocal("i")), c.i32_const(1)) ),
c.block(c.loop(
c.br_if(1, c.i32_eqz(c.getLocal("j"))),
c.call(prefix + "_square", B, B),
c.setLocal("j", c.i32_sub(c.getLocal("j"), c.i32_const(1))),
c.br(0)
)),
c.setLocal("m", c.getLocal("i")),
c.call(prefix + "_square", B, C),
c.call(prefix + "_mul", T, C, T),
c.call(prefix + "_mul", R, B, R),
c.br(0)
)),
c.if(
c.call(prefix + "_isNegative", R),
c.call(prefix + "_neg", R, c.getLocal("r")),
c.call(prefix + "_copy", R, c.getLocal("r")),
)
);
}
function buildIsSquare() {
const f = module.addFunction(prefix+"_isSquare");
f.addParam("n", "i32");
f.setReturnType("i32");
const c = f.getCodeBuilder();
const ONE = c.i32_const(pOne);
const AUX = c.i32_const(module.alloc(n8));
f.addCode(
c.if(
c.call(prefix + "_isZero", c.getLocal("n")),
c.ret(c.i32_const(1))
),
c.call(prefix + "_exp", c.getLocal("n"), c.i32_const(pe), c.i32_const(n8), AUX),
c.call(prefix + "_eq", AUX, ONE)
);
}
function buildLoad() {
const f = module.addFunction(prefix+"_load");
f.addParam("scalar", "i32");
f.addParam("scalarLen", "i32");
f.addParam("r", "i32");
f.addLocal("p", "i32");
f.addLocal("l", "i32");
f.addLocal("i", "i32");
f.addLocal("j", "i32");
const c = f.getCodeBuilder();
const R = c.i32_const(module.alloc(n8));
const pAux = module.alloc(n8);
const AUX = c.i32_const(pAux);
f.addCode(
c.call(intPrefix + "_zero", c.getLocal("r")),
c.setLocal("i", c.i32_const(n8)),
c.setLocal("p", c.getLocal("scalar")),
c.block(c.loop(
c.br_if(1, c.i32_gt_u(c.getLocal("i"), c.getLocal("scalarLen"))),
c.if(
c.i32_eq(c.getLocal("i"), c.i32_const(n8)),
c.call(prefix + "_one", R),
c.call(prefix + "_mul", R, c.i32_const(pR2), R)
),
c.call(prefix + "_mul", c.getLocal("p"), R, AUX),
c.call(prefix + "_add", c.getLocal("r"), AUX, c.getLocal("r")),
c.setLocal("p", c.i32_add(c.getLocal("p"), c.i32_const(n8))),
c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(n8))),
c.br(0)
)),
c.setLocal("l", c.i32_rem_u( c.getLocal("scalarLen"), c.i32_const(n8))),
c.if(c.i32_eqz(c.getLocal("l")), c.ret([])),
c.call(intPrefix + "_zero", AUX),
c.setLocal("j", c.i32_const(0)),
c.block(c.loop(
c.br_if(1, c.i32_eq(c.getLocal("j"), c.getLocal("l"))),
c.i32_store8(
c.getLocal("j"),
pAux,
c.i32_load8_u(c.getLocal("p")),
),
c.setLocal("p", c.i32_add(c.getLocal("p"), c.i32_const(1))),
c.setLocal("j", c.i32_add(c.getLocal("j"), c.i32_const(1))),
c.br(0)
)),
c.if(
c.i32_eq(c.getLocal("i"), c.i32_const(n8)),
c.call(prefix + "_one", R),
c.call(prefix + "_mul", R, c.i32_const(pR2), R)
),
c.call(prefix + "_mul", AUX, R, AUX),
c.call(prefix + "_add", c.getLocal("r"), AUX, c.getLocal("r")),
);
}
function buildTimesScalar() {
const f = module.addFunction(prefix+"_timesScalar");
f.addParam("x", "i32");
f.addParam("scalar", "i32");
f.addParam("scalarLen", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
const AUX = c.i32_const(module.alloc(n8));
f.addCode(
c.call(prefix + "_load", c.getLocal("scalar"), c.getLocal("scalarLen"), AUX),
c.call(prefix + "_toMontgomery", AUX, AUX),
c.call(prefix + "_mul", c.getLocal("x"), AUX, c.getLocal("r")),
);
}
function buildIsOne() {
const f = module.addFunction(prefix+"_isOne");
f.addParam("x", "i32");
f.setReturnType("i32");
const c = f.getCodeBuilder();
f.addCode(
c.ret(c.call(intPrefix + "_eq", c.getLocal("x"), c.i32_const(pOne)))
);
}
module.exportFunction(intPrefix + "_copy", prefix+"_copy");
module.exportFunction(intPrefix + "_zero", prefix+"_zero");
module.exportFunction(intPrefix + "_isZero", prefix+"_isZero");
module.exportFunction(intPrefix + "_eq", prefix+"_eq");
buildIsOne();
buildAdd();
buildSub();
buildNeg();
buildMReduct();
buildMul();
buildSquare();
buildSquareOld();
buildToMontgomery();
buildFromMontgomery();
buildIsNegative();
buildSign();
buildInverse();
buildOne();
buildLoad();
buildTimesScalar();
buildBatchInverse$2(module, prefix);
buildBatchConvertion$1(module, prefix + "_batchToMontgomery", prefix + "_toMontgomery", n8, n8);
buildBatchConvertion$1(module, prefix + "_batchFromMontgomery", prefix + "_fromMontgomery", n8, n8);
buildBatchConvertion$1(module, prefix + "_batchNeg", prefix + "_neg", n8, n8);
buildBatchOp(module, prefix + "_batchAdd", prefix + "_add", n8, n8);
buildBatchOp(module, prefix + "_batchSub", prefix + "_sub", n8, n8);
buildBatchOp(module, prefix + "_batchMul", prefix + "_mul", n8, n8);
module.exportFunction(prefix + "_add");
module.exportFunction(prefix + "_sub");
module.exportFunction(prefix + "_neg");
module.exportFunction(prefix + "_isNegative");
module.exportFunction(prefix + "_isOne");
module.exportFunction(prefix + "_sign");
module.exportFunction(prefix + "_mReduct");
module.exportFunction(prefix + "_mul");
module.exportFunction(prefix + "_square");
module.exportFunction(prefix + "_squareOld");
module.exportFunction(prefix + "_fromMontgomery");
module.exportFunction(prefix + "_toMontgomery");
module.exportFunction(prefix + "_inverse");
module.exportFunction(prefix + "_one");
module.exportFunction(prefix + "_load");
module.exportFunction(prefix + "_timesScalar");
buildExp$2(
module,
prefix + "_exp",
n8,
prefix + "_mul",
prefix + "_square",
intPrefix + "_copy",
prefix + "_one",
);
module.exportFunction(prefix + "_exp");
module.exportFunction(prefix + "_batchInverse");
if (isPrime(q)) {
buildSqrt();
buildIsSquare();
module.exportFunction(prefix + "_sqrt");
module.exportFunction(prefix + "_isSquare");
}
module.exportFunction(prefix + "_batchToMontgomery");
module.exportFunction(prefix + "_batchFromMontgomery");
// console.log(module.functionIdxByName);
return prefix;
};
/*
Copyright 2019 0KIMS association.
This file is part of wasmsnark (Web Assembly zkSnark Prover).
wasmsnark 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.
wasmsnark 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 wasmsnark. If not, see <https://www.gnu.org/licenses/>.
*/
const buildF1m$2 =build_f1m;
const { bitLength: bitLength$3 } = bigint;
var build_f1 = function buildF1(module, _q, _prefix, _f1mPrefix, _intPrefix) {
const q = BigInt(_q);
const n64 = Math.floor((bitLength$3(q - 1n) - 1)/64) +1;
const n8 = n64*8;
const prefix = _prefix || "f1";
if (module.modules[prefix]) return prefix; // already builded
module.modules[prefix] = {
n64: n64
};
const intPrefix = _intPrefix || "int";
const f1mPrefix = buildF1m$2(module, q, _f1mPrefix, intPrefix);
const pR2 = module.modules[f1mPrefix].pR2;
const pq = module.modules[f1mPrefix].pq;
const pePlusOne = module.modules[f1mPrefix].pePlusOne;
function buildMul() {
const pAux1 = module.alloc(n8);
const f = module.addFunction(prefix+ "_mul");
f.addParam("x", "i32");
f.addParam("y", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
f.addCode(c.call(f1mPrefix + "_mul", c.getLocal("x"), c.getLocal("y"), c.i32_const(pAux1)));
f.addCode(c.call(f1mPrefix + "_mul", c.i32_const(pAux1), c.i32_const(pR2), c.getLocal("r")));
}
function buildSquare() {
const f = module.addFunction(prefix+"_square");
f.addParam("x", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
f.addCode(c.call(prefix + "_mul", c.getLocal("x"), c.getLocal("x"), c.getLocal("r")));
}
function buildInverse() {
const f = module.addFunction(prefix+ "_inverse");
f.addParam("x", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
f.addCode(c.call(intPrefix + "_inverseMod", c.getLocal("x"), c.i32_const(pq), c.getLocal("r")));
}
function buildIsNegative() {
const f = module.addFunction(prefix+"_isNegative");
f.addParam("x", "i32");
f.setReturnType("i32");
const c = f.getCodeBuilder();
f.addCode(
c.call(intPrefix + "_gte", c.getLocal("x"), c.i32_const(pePlusOne) )
);
}
buildMul();
buildSquare();
buildInverse();
buildIsNegative();
module.exportFunction(f1mPrefix + "_add", prefix + "_add");
module.exportFunction(f1mPrefix + "_sub", prefix + "_sub");
module.exportFunction(f1mPrefix + "_neg", prefix + "_neg");
module.exportFunction(prefix + "_mul");
module.exportFunction(prefix + "_square");
module.exportFunction(prefix + "_inverse");
module.exportFunction(prefix + "_isNegative");
module.exportFunction(f1mPrefix + "_copy", prefix+"_copy");
module.exportFunction(f1mPrefix + "_zero", prefix+"_zero");
module.exportFunction(f1mPrefix + "_one", prefix+"_one");
module.exportFunction(f1mPrefix + "_isZero", prefix+"_isZero");
module.exportFunction(f1mPrefix + "_eq", prefix+"_eq");
return prefix;
};
/*
Copyright 2019 0KIMS association.
This file is part of wasmsnark (Web Assembly zkSnark Prover).
wasmsnark 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.
wasmsnark 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 wasmsnark. If not, see <https://www.gnu.org/licenses/>.
*/
const buildExp$1 = build_timesscalar;
const buildBatchInverse$1 = build_batchinverse;
const utils$4 = utils$6;
var build_f2m = function buildF2m(module, mulNonResidueFn, prefix, f1mPrefix) {
if (module.modules[prefix]) return prefix; // already builded
const f1n8 = module.modules[f1mPrefix].n64*8;
const q = module.modules[f1mPrefix].q;
module.modules[prefix] = {
n64: module.modules[f1mPrefix].n64*2
};
function buildAdd() {
const f = module.addFunction(prefix+"_add");
f.addParam("x", "i32");
f.addParam("y", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
const x0 = c.getLocal("x");
const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
const y0 = c.getLocal("y");
const y1 = c.i32_add(c.getLocal("y"), c.i32_const(f1n8));
const r0 = c.getLocal("r");
const r1 = c.i32_add(c.getLocal("r"), c.i32_const(f1n8));
f.addCode(
c.call(f1mPrefix+"_add", x0, y0, r0),
c.call(f1mPrefix+"_add", x1, y1, r1),
);
}
function buildTimesScalar() {
const f = module.addFunction(prefix+"_timesScalar");
f.addParam("x", "i32");
f.addParam("scalar", "i32");
f.addParam("scalarLen", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
const x0 = c.getLocal("x");
const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
const r0 = c.getLocal("r");
const r1 = c.i32_add(c.getLocal("r"), c.i32_const(f1n8));
f.addCode(
c.call(f1mPrefix+"_timesScalar", x0, c.getLocal("scalar"), c.getLocal("scalarLen"), r0),
c.call(f1mPrefix+"_timesScalar", x1, c.getLocal("scalar"), c.getLocal("scalarLen"), r1),
);
}
function buildSub() {
const f = module.addFunction(prefix+"_sub");
f.addParam("x", "i32");
f.addParam("y", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
const x0 = c.getLocal("x");
const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
const y0 = c.getLocal("y");
const y1 = c.i32_add(c.getLocal("y"), c.i32_const(f1n8));
const r0 = c.getLocal("r");
const r1 = c.i32_add(c.getLocal("r"), c.i32_const(f1n8));
f.addCode(
c.call(f1mPrefix+"_sub", x0, y0, r0),
c.call(f1mPrefix+"_sub", x1, y1, r1),
);
}
function buildNeg() {
const f = module.addFunction(prefix+"_neg");
f.addParam("x", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
const x0 = c.getLocal("x");
const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
const r0 = c.getLocal("r");
const r1 = c.i32_add(c.getLocal("r"), c.i32_const(f1n8));
f.addCode(
c.call(f1mPrefix+"_neg", x0, r0),
c.call(f1mPrefix+"_neg", x1, r1),
);
}
function buildConjugate() {
const f = module.addFunction(prefix+"_conjugate");
f.addParam("x", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
const x0 = c.getLocal("x");
const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
const r0 = c.getLocal("r");
const r1 = c.i32_add(c.getLocal("r"), c.i32_const(f1n8));
f.addCode(
c.call(f1mPrefix+"_copy", x0, r0),
c.call(f1mPrefix+"_neg", x1, r1),
);
}
function buildIsNegative() {
const f = module.addFunction(prefix+"_isNegative");
f.addParam("x", "i32");
f.setReturnType("i32");
const c = f.getCodeBuilder();
const x0 = c.getLocal("x");
const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
f.addCode(
c.if(
c.call(f1mPrefix+"_isZero", x1),
c.ret(c.call(f1mPrefix+"_isNegative", x0))
),
c.ret(c.call(f1mPrefix+"_isNegative", x1))
);
}
function buildMul() {
const f = module.addFunction(prefix+"_mul");
f.addParam("x", "i32");
f.addParam("y", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
const x0 = c.getLocal("x");
const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
const y0 = c.getLocal("y");
const y1 = c.i32_add(c.getLocal("y"), c.i32_const(f1n8));
const r0 = c.getLocal("r");
const r1 = c.i32_add(c.getLocal("r"), c.i32_const(f1n8));
const A = c.i32_const(module.alloc(f1n8));
const B = c.i32_const(module.alloc(f1n8));
const C = c.i32_const(module.alloc(f1n8));
const D = c.i32_const(module.alloc(f1n8));
f.addCode(
c.call(f1mPrefix + "_mul", x0, y0, A), // A = x0*y0
c.call(f1mPrefix + "_mul", x1, y1, B), // B = x1*y1
c.call(f1mPrefix + "_add", x0, x1, C), // C = x0 + x1
c.call(f1mPrefix + "_add", y0, y1, D), // D = y0 + y1
c.call(f1mPrefix + "_mul", C, D, C), // C = (x0 + x1)*(y0 + y1) = x0*y0+x0*y1+x1*y0+x1*y1
// c.call(f1mPrefix + "_mul", B, c.i32_const(pNonResidue), r0), // r0 = nr*(x1*y1)
c.call(mulNonResidueFn, B, r0), // r0 = nr*(x1*y1)
c.call(f1mPrefix + "_add", A, r0, r0), // r0 = x0*y0 + nr*(x1*y1)
c.call(f1mPrefix + "_add", A, B, r1), // r1 = x0*y0+x1*y1
c.call(f1mPrefix + "_sub", C, r1, r1) // r1 = x0*y0+x0*y1+x1*y0+x1*y1 - x0*y0+x1*y1 = x0*y1+x1*y0
);
}
function buildMul1() {
const f = module.addFunction(prefix+"_mul1");
f.addParam("x", "i32");
f.addParam("y", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
const x0 = c.getLocal("x");
const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
const y = c.getLocal("y");
const r0 = c.getLocal("r");
const r1 = c.i32_add(c.getLocal("r"), c.i32_const(f1n8));
f.addCode(
c.call(f1mPrefix + "_mul", x0, y, r0), // A = x0*y
c.call(f1mPrefix + "_mul", x1, y, r1), // B = x1*y
);
}
function buildSquare() {
const f = module.addFunction(prefix+"_square");
f.addParam("x", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
const x0 = c.getLocal("x");
const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
const r0 = c.getLocal("r");
const r1 = c.i32_add(c.getLocal("r"), c.i32_const(f1n8));
const AB = c.i32_const(module.alloc(f1n8));
const APB = c.i32_const(module.alloc(f1n8));
const APNB = c.i32_const(module.alloc(f1n8));
const ABPNAB = c.i32_const(module.alloc(f1n8));
f.addCode(
// AB = x0*y1
c.call(f1mPrefix + "_mul", x0, x1, AB),
// APB = x0+y1
c.call(f1mPrefix + "_add", x0, x1, APB),
// APBN0 = x0 + nr*x1
c.call(mulNonResidueFn, x1, APNB),
c.call(f1mPrefix + "_add", x0, APNB, APNB),
// ABPNAB = ab + nr*ab
c.call(mulNonResidueFn, AB, ABPNAB),
c.call(f1mPrefix + "_add", ABPNAB, AB, ABPNAB),
// r0 = APB * APNB - ABPNAB
c.call(f1mPrefix + "_mul", APB, APNB, r0),
c.call(f1mPrefix + "_sub", r0, ABPNAB, r0),
// r1 = AB + AB
c.call(f1mPrefix + "_add", AB, AB, r1),
);
}
function buildToMontgomery() {
const f = module.addFunction(prefix+"_toMontgomery");
f.addParam("x", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
const x0 = c.getLocal("x");
const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
const r0 = c.getLocal("r");
const r1 = c.i32_add(c.getLocal("r"), c.i32_const(f1n8));
f.addCode(
c.call(f1mPrefix+"_toMontgomery", x0, r0),
c.call(f1mPrefix+"_toMontgomery", x1, r1)
);
}
function buildFromMontgomery() {
const f = module.addFunction(prefix+"_fromMontgomery");
f.addParam("x", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
const x0 = c.getLocal("x");
const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
const r0 = c.getLocal("r");
const r1 = c.i32_add(c.getLocal("r"), c.i32_const(f1n8));
f.addCode(
c.call(f1mPrefix+"_fromMontgomery", x0, r0),
c.call(f1mPrefix+"_fromMontgomery", x1, r1)
);
}
function buildCopy() {
const f = module.addFunction(prefix+"_copy");
f.addParam("x", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
const x0 = c.getLocal("x");
const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
const r0 = c.getLocal("r");
const r1 = c.i32_add(c.getLocal("r"), c.i32_const(f1n8));
f.addCode(
c.call(f1mPrefix+"_copy", x0, r0),
c.call(f1mPrefix+"_copy", x1, r1)
);
}
function buildZero() {
const f = module.addFunction(prefix+"_zero");
f.addParam("x", "i32");
const c = f.getCodeBuilder();
const x0 = c.getLocal("x");
const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
f.addCode(
c.call(f1mPrefix+"_zero", x0),
c.call(f1mPrefix+"_zero", x1)
);
}
function buildOne() {
const f = module.addFunction(prefix+"_one");
f.addParam("x", "i32");
const c = f.getCodeBuilder();
const x0 = c.getLocal("x");
const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
f.addCode(
c.call(f1mPrefix+"_one", x0),
c.call(f1mPrefix+"_zero", x1)
);
}
function buildEq() {
const f = module.addFunction(prefix+"_eq");
f.addParam("x", "i32");
f.addParam("y", "i32");
f.setReturnType("i32");
const c = f.getCodeBuilder();
const x0 = c.getLocal("x");
const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
const y0 = c.getLocal("y");
const y1 = c.i32_add(c.getLocal("y"), c.i32_const(f1n8));
f.addCode(
c.i32_and(
c.call(f1mPrefix+"_eq", x0, y0),
c.call(f1mPrefix+"_eq", x1, y1)
)
);
}
function buildIsZero() {
const f = module.addFunction(prefix+"_isZero");
f.addParam("x", "i32");
f.setReturnType("i32");
const c = f.getCodeBuilder();
const x0 = c.getLocal("x");
const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
f.addCode(
c.i32_and(
c.call(f1mPrefix+"_isZero", x0),
c.call(f1mPrefix+"_isZero", x1)
)
);
}
function buildInverse() {
const f = module.addFunction(prefix+"_inverse");
f.addParam("x", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
const x0 = c.getLocal("x");
const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
const r0 = c.getLocal("r");
const r1 = c.i32_add(c.getLocal("r"), c.i32_const(f1n8));
const t0 = c.i32_const(module.alloc(f1n8));
const t1 = c.i32_const(module.alloc(f1n8));
const t2 = c.i32_const(module.alloc(f1n8));
const t3 = c.i32_const(module.alloc(f1n8));
f.addCode(
c.call(f1mPrefix+"_square", x0, t0),
c.call(f1mPrefix+"_square", x1, t1),
// c.call(f1mPrefix+"_mul", t1, c.i32_const(pNonResidue), t2),
c.call(mulNonResidueFn, t1, t2),
c.call(f1mPrefix+"_sub", t0, t2, t2),
c.call(f1mPrefix+"_inverse", t2, t3),
c.call(f1mPrefix+"_mul", x0, t3, r0),
c.call(f1mPrefix+"_mul", x1, t3, r1),
c.call(f1mPrefix+"_neg", r1, r1),
);
}
function buildSign() {
const f = module.addFunction(prefix+"_sign");
f.addParam("x", "i32");
f.addLocal("s", "i32");
f.setReturnType("i32");
const c = f.getCodeBuilder();
const x0 = c.getLocal("x");
const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
f.addCode(
c.setLocal("s" , c.call( f1mPrefix + "_sign", x1)),
c.if(
c.getLocal("s"),
c.ret(c.getLocal("s"))
),
c.ret(c.call( f1mPrefix + "_sign", x0))
);
}
function buildIsOne() {
const f = module.addFunction(prefix+"_isOne");
f.addParam("x", "i32");
f.setReturnType("i32");
const c = f.getCodeBuilder();
const x0 = c.getLocal("x");
const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
f.addCode(
c.ret(c.i32_and(
c.call(f1mPrefix + "_isOne", x0),
c.call(f1mPrefix + "_isZero", x1),
))
);
}
// Check here: https://eprint.iacr.org/2012/685.pdf
// Alg 9adj
function buildSqrt() {
const f = module.addFunction(prefix+"_sqrt");
f.addParam("a", "i32");
f.addParam("pr", "i32");
const c = f.getCodeBuilder();
// BigInt can't take `undefined` so we use `|| 0`
const e34 = c.i32_const(module.alloc(utils$4.bigInt2BytesLE((BigInt(q || 0) - 3n) / 4n, f1n8 )));
// BigInt can't take `undefined` so we use `|| 0`
const e12 = c.i32_const(module.alloc(utils$4.bigInt2BytesLE((BigInt(q || 0) - 1n) / 2n, f1n8 )));
const a = c.getLocal("a");
const a1 = c.i32_const(module.alloc(f1n8*2));
const alpha = c.i32_const(module.alloc(f1n8*2));
const a0 = c.i32_const(module.alloc(f1n8*2));
const pn1 = module.alloc(f1n8*2);
const n1 = c.i32_const(pn1);
const n1a = c.i32_const(pn1);
const n1b = c.i32_const(pn1+f1n8);
const x0 = c.i32_const(module.alloc(f1n8*2));
const b = c.i32_const(module.alloc(f1n8*2));
f.addCode(
c.call(prefix + "_one", n1),
c.call(prefix + "_neg", n1, n1),
// const a1 = F.pow(a, F.sqrt_e34);
c.call(prefix + "_exp", a, e34, c.i32_const(f1n8), a1),
// const a1 = F.pow(a, F.sqrt_e34);
c.call(prefix + "_square", a1, alpha),
c.call(prefix + "_mul", a, alpha, alpha),
// const a0 = F.mul(F.frobenius(1, alfa), alfa);
c.call(prefix + "_conjugate", alpha, a0),
c.call(prefix + "_mul", a0, alpha, a0),
// if (F.eq(a0, F.negone)) return null;
c.if(c.call(prefix + "_eq",a0,n1), c.unreachable() ),
// const x0 = F.mul(a1, a);
c.call(prefix + "_mul", a1, a, x0),
// if (F.eq(alfa, F.negone)) {
c.if(
c.call(prefix + "_eq", alpha, n1),
[
// x = F.mul(x0, [F.F.zero, F.F.one]);
...c.call(f1mPrefix + "_zero", n1a),
...c.call(f1mPrefix + "_one", n1b),
...c.call(prefix + "_mul", n1, x0, c.getLocal("pr")),
],
[
// const b = F.pow(F.add(F.one, alfa), F.sqrt_e12);
...c.call(prefix + "_one", b),
...c.call(prefix + "_add", b, alpha, b),
...c.call(prefix + "_exp", b, e12, c.i32_const(f1n8), b),
// x = F.mul(b, x0);
...c.call(prefix + "_mul", b, x0, c.getLocal("pr")),
]
)
);
}
function buildIsSquare() {
const f = module.addFunction(prefix+"_isSquare");
f.addParam("a", "i32");
f.setReturnType("i32");
const c = f.getCodeBuilder();
// BigInt can't take `undefined` so we use `|| 0`
const e34 = c.i32_const(module.alloc(utils$4.bigInt2BytesLE((BigInt(q || 0) - 3n) / 4n, f1n8 )));
const a = c.getLocal("a");
const a1 = c.i32_const(module.alloc(f1n8*2));
const alpha = c.i32_const(module.alloc(f1n8*2));
const a0 = c.i32_const(module.alloc(f1n8*2));
const pn1 = module.alloc(f1n8*2);
const n1 = c.i32_const(pn1);
f.addCode(
c.call(prefix + "_one", n1),
c.call(prefix + "_neg", n1, n1),
// const a1 = F.pow(a, F.sqrt_e34);
c.call(prefix + "_exp", a, e34, c.i32_const(f1n8), a1),
// const a1 = F.pow(a, F.sqrt_e34);
c.call(prefix + "_square", a1, alpha),
c.call(prefix + "_mul", a, alpha, alpha),
// const a0 = F.mul(F.frobenius(1, alfa), alfa);
c.call(prefix + "_conjugate", alpha, a0),
c.call(prefix + "_mul", a0, alpha, a0),
// if (F.eq(a0, F.negone)) return null;
c.if(
c.call(
prefix + "_eq",
a0,
n1
),
c.ret(c.i32_const(0))
),
c.ret(c.i32_const(1))
);
}
buildIsZero();
buildIsOne();
buildZero();
buildOne();
buildCopy();
buildMul();
buildMul1();
buildSquare();
buildAdd();
buildSub();
buildNeg();
buildConjugate();
buildToMontgomery();
buildFromMontgomery();
buildEq();
buildInverse();
buildTimesScalar();
buildSign();
buildIsNegative();
module.exportFunction(prefix + "_isZero");
module.exportFunction(prefix + "_isOne");
module.exportFunction(prefix + "_zero");
module.exportFunction(prefix + "_one");
module.exportFunction(prefix + "_copy");
module.exportFunction(prefix + "_mul");
module.exportFunction(prefix + "_mul1");
module.exportFunction(prefix + "_square");
module.exportFunction(prefix + "_add");
module.exportFunction(prefix + "_sub");
module.exportFunction(prefix + "_neg");
module.exportFunction(prefix + "_sign");
module.exportFunction(prefix + "_conjugate");
module.exportFunction(prefix + "_fromMontgomery");
module.exportFunction(prefix + "_toMontgomery");
module.exportFunction(prefix + "_eq");
module.exportFunction(prefix + "_inverse");
buildBatchInverse$1(module, prefix);
buildExp$1(
module,
prefix + "_exp",
f1n8*2,
prefix + "_mul",
prefix + "_square",
prefix + "_copy",
prefix + "_one",
);
buildSqrt();
buildIsSquare();
module.exportFunction(prefix + "_exp");
module.exportFunction(prefix + "_timesScalar");
module.exportFunction(prefix + "_batchInverse");
module.exportFunction(prefix + "_sqrt");
module.exportFunction(prefix + "_isSquare");
module.exportFunction(prefix + "_isNegative");
return prefix;
};
/*
Copyright 2019 0KIMS association.
This file is part of wasmsnark (Web Assembly zkSnark Prover).
wasmsnark 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.
wasmsnark 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 wasmsnark. If not, see <https://www.gnu.org/licenses/>.
*/
const buildExp = build_timesscalar;
const buildBatchInverse = build_batchinverse;
var build_f3m = function buildF3m(module, mulNonResidueFn, prefix, f1mPrefix) {
if (module.modules[prefix]) return prefix; // already builded
const f1n8 = module.modules[f1mPrefix].n64*8;
module.modules[prefix] = {
n64: module.modules[f1mPrefix].n64*3
};
function buildAdd() {
const f = module.addFunction(prefix+"_add");
f.addParam("x", "i32");
f.addParam("y", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
const x0 = c.getLocal("x");
const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
const x2 = c.i32_add(c.getLocal("x"), c.i32_const(2*f1n8));
const y0 = c.getLocal("y");
const y1 = c.i32_add(c.getLocal("y"), c.i32_const(f1n8));
const y2 = c.i32_add(c.getLocal("y"), c.i32_const(2*f1n8));
const r0 = c.getLocal("r");
const r1 = c.i32_add(c.getLocal("r"), c.i32_const(f1n8));
const r2 = c.i32_add(c.getLocal("r"), c.i32_const(2*f1n8));
f.addCode(
c.call(f1mPrefix+"_add", x0, y0, r0),
c.call(f1mPrefix+"_add", x1, y1, r1),
c.call(f1mPrefix+"_add", x2, y2, r2),
);
}
function buildTimesScalar() {
const f = module.addFunction(prefix+"_timesScalar");
f.addParam("x", "i32");
f.addParam("scalar", "i32");
f.addParam("scalarLen", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
const x0 = c.getLocal("x");
const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
const x2 = c.i32_add(c.getLocal("x"), c.i32_const(2*f1n8));
const r0 = c.getLocal("r");
const r1 = c.i32_add(c.getLocal("r"), c.i32_const(f1n8));
const r2 = c.i32_add(c.getLocal("r"), c.i32_const(2*f1n8));
f.addCode(
c.call(f1mPrefix+"_timesScalar", x0, c.getLocal("scalar"), c.getLocal("scalarLen"), r0),
c.call(f1mPrefix+"_timesScalar", x1, c.getLocal("scalar"), c.getLocal("scalarLen"), r1),
c.call(f1mPrefix+"_timesScalar", x2, c.getLocal("scalar"), c.getLocal("scalarLen"), r2),
);
}
function buildSub() {
const f = module.addFunction(prefix+"_sub");
f.addParam("x", "i32");
f.addParam("y", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
const x0 = c.getLocal("x");
const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
const x2 = c.i32_add(c.getLocal("x"), c.i32_const(2*f1n8));
const y0 = c.getLocal("y");
const y1 = c.i32_add(c.getLocal("y"), c.i32_const(f1n8));
const y2 = c.i32_add(c.getLocal("y"), c.i32_const(2*f1n8));
const r0 = c.getLocal("r");
const r1 = c.i32_add(c.getLocal("r"), c.i32_const(f1n8));
const r2 = c.i32_add(c.getLocal("r"), c.i32_const(2*f1n8));
f.addCode(
c.call(f1mPrefix+"_sub", x0, y0, r0),
c.call(f1mPrefix+"_sub", x1, y1, r1),
c.call(f1mPrefix+"_sub", x2, y2, r2),
);
}
function buildNeg() {
const f = module.addFunction(prefix+"_neg");
f.addParam("x", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
const x0 = c.getLocal("x");
const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
const x2 = c.i32_add(c.getLocal("x"), c.i32_const(2*f1n8));
const r0 = c.getLocal("r");
const r1 = c.i32_add(c.getLocal("r"), c.i32_const(f1n8));
const r2 = c.i32_add(c.getLocal("r"), c.i32_const(2*f1n8));
f.addCode(
c.call(f1mPrefix+"_neg", x0, r0),
c.call(f1mPrefix+"_neg", x1, r1),
c.call(f1mPrefix+"_neg", x2, r2),
);
}
function buildIsNegative() {
const f = module.addFunction(prefix+"_isNegative");
f.addParam("x", "i32");
f.setReturnType("i32");
const c = f.getCodeBuilder();
const x0 = c.getLocal("x");
const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
const x2 = c.i32_add(c.getLocal("x"), c.i32_const(2*f1n8));
f.addCode(
c.if(
c.call(f1mPrefix+"_isZero", x2),
c.if(
c.call(f1mPrefix+"_isZero", x1),
c.ret(c.call(f1mPrefix+"_isNegative", x0)),
c.ret(c.call(f1mPrefix+"_isNegative", x1))
)
),
c.ret(c.call(f1mPrefix+"_isNegative", x2))
);
}
function buildMul() {
const f = module.addFunction(prefix+"_mul");
f.addParam("x", "i32");
f.addParam("y", "i32");
f.addParam("r", "i32");
const cd = f.getCodeBuilder();
const a = cd.getLocal("x");
const b = cd.i32_add(cd.getLocal("x"), cd.i32_const(f1n8));
const c = cd.i32_add(cd.getLocal("x"), cd.i32_const(2*f1n8));
const A = cd.getLocal("y");
const B = cd.i32_add(cd.getLocal("y"), cd.i32_const(f1n8));
const C = cd.i32_add(cd.getLocal("y"), cd.i32_const(2*f1n8));
const r0 = cd.getLocal("r");
const r1 = cd.i32_add(cd.getLocal("r"), cd.i32_const(f1n8));
const r2 = cd.i32_add(cd.getLocal("r"), cd.i32_const(2*f1n8));
const aA = cd.i32_const(module.alloc(f1n8));
const bB = cd.i32_const(module.alloc(f1n8));
const cC = cd.i32_const(module.alloc(f1n8));
const a_b = cd.i32_const(module.alloc(f1n8));
const A_B = cd.i32_const(module.alloc(f1n8));
const a_c = cd.i32_const(module.alloc(f1n8));
const A_C = cd.i32_const(module.alloc(f1n8));
const b_c = cd.i32_const(module.alloc(f1n8));
const B_C = cd.i32_const(module.alloc(f1n8));
const aA_bB = cd.i32_const(module.alloc(f1n8));
const aA_cC = cd.i32_const(module.alloc(f1n8));
const bB_cC = cd.i32_const(module.alloc(f1n8));
const AUX = cd.i32_const(module.alloc(f1n8));
f.addCode(
cd.call(f1mPrefix + "_mul", a, A, aA),
cd.call(f1mPrefix + "_mul", b, B, bB),
cd.call(f1mPrefix + "_mul", c, C, cC),
cd.call(f1mPrefix + "_add", a, b, a_b),
cd.call(f1mPrefix + "_add", A, B, A_B),
cd.call(f1mPrefix + "_add", a, c, a_c),
cd.call(f1mPrefix + "_add", A, C, A_C),
cd.call(f1mPrefix + "_add", b, c, b_c),
cd.call(f1mPrefix + "_add", B, C, B_C),
cd.call(f1mPrefix + "_add", aA, bB, aA_bB),
cd.call(f1mPrefix + "_add", aA, cC, aA_cC),
cd.call(f1mPrefix + "_add", bB, cC, bB_cC),
cd.call(f1mPrefix + "_mul", b_c, B_C, r0),
cd.call(f1mPrefix + "_sub", r0, bB_cC, r0),
cd.call(mulNonResidueFn, r0, r0),
cd.call(f1mPrefix + "_add", aA, r0, r0),
cd.call(f1mPrefix + "_mul", a_b, A_B, r1),
cd.call(f1mPrefix + "_sub", r1, aA_bB, r1),
cd.call(mulNonResidueFn, cC, AUX),
cd.call(f1mPrefix + "_add", r1, AUX, r1),
cd.call(f1mPrefix + "_mul", a_c, A_C, r2),
cd.call(f1mPrefix + "_sub", r2, aA_cC, r2),
cd.call(f1mPrefix + "_add", r2, bB, r2),
);
}
function buildSquare() {
const f = module.addFunction(prefix+"_square");
f.addParam("x", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
const A = c.getLocal("x");
const B = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
const C = c.i32_add(c.getLocal("x"), c.i32_const(2*f1n8));
const r0 = c.getLocal("r");
const r1 = c.i32_add(c.getLocal("r"), c.i32_const(f1n8));
const r2 = c.i32_add(c.getLocal("r"), c.i32_const(2*f1n8));
const s0 = c.i32_const(module.alloc(f1n8));
const ab = c.i32_const(module.alloc(f1n8));
const s1 = c.i32_const(module.alloc(f1n8));
const s2 = c.i32_const(module.alloc(f1n8));
const bc = c.i32_const(module.alloc(f1n8));
const s3 = c.i32_const(module.alloc(f1n8));
const s4 = c.i32_const(module.alloc(f1n8));
f.addCode(
c.call(f1mPrefix + "_square", A, s0),
c.call(f1mPrefix + "_mul", A, B, ab),
c.call(f1mPrefix + "_add", ab, ab, s1),
c.call(f1mPrefix + "_sub", A, B, s2),
c.call(f1mPrefix + "_add", s2, C, s2),
c.call(f1mPrefix + "_square", s2, s2),
c.call(f1mPrefix + "_mul", B, C, bc),
c.call(f1mPrefix + "_add", bc, bc, s3),
c.call(f1mPrefix + "_square", C, s4),
c.call(mulNonResidueFn, s3, r0),
c.call(f1mPrefix + "_add", s0, r0, r0),
c.call(mulNonResidueFn, s4, r1),
c.call(f1mPrefix + "_add", s1, r1, r1),
c.call(f1mPrefix + "_add", s0, s4, r2),
c.call(f1mPrefix + "_sub", s3, r2, r2),
c.call(f1mPrefix + "_add", s2, r2, r2),
c.call(f1mPrefix + "_add", s1, r2, r2),
);
}
function buildToMontgomery() {
const f = module.addFunction(prefix+"_toMontgomery");
f.addParam("x", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
const x0 = c.getLocal("x");
const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
const x2 = c.i32_add(c.getLocal("x"), c.i32_const(2*f1n8));
const r0 = c.getLocal("r");
const r1 = c.i32_add(c.getLocal("r"), c.i32_const(f1n8));
const r2 = c.i32_add(c.getLocal("r"), c.i32_const(2*f1n8));
f.addCode(
c.call(f1mPrefix+"_toMontgomery", x0, r0),
c.call(f1mPrefix+"_toMontgomery", x1, r1),
c.call(f1mPrefix+"_toMontgomery", x2, r2)
);
}
function buildFromMontgomery() {
const f = module.addFunction(prefix+"_fromMontgomery");
f.addParam("x", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
const x0 = c.getLocal("x");
const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
const x2 = c.i32_add(c.getLocal("x"), c.i32_const(2*f1n8));
const r0 = c.getLocal("r");
const r1 = c.i32_add(c.getLocal("r"), c.i32_const(f1n8));
const r2 = c.i32_add(c.getLocal("r"), c.i32_const(2*f1n8));
f.addCode(
c.call(f1mPrefix+"_fromMontgomery", x0, r0),
c.call(f1mPrefix+"_fromMontgomery", x1, r1),
c.call(f1mPrefix+"_fromMontgomery", x2, r2)
);
}
function buildCopy() {
const f = module.addFunction(prefix+"_copy");
f.addParam("x", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
const x0 = c.getLocal("x");
const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
const x2 = c.i32_add(c.getLocal("x"), c.i32_const(2*f1n8));
const r0 = c.getLocal("r");
const r1 = c.i32_add(c.getLocal("r"), c.i32_const(f1n8));
const r2 = c.i32_add(c.getLocal("r"), c.i32_const(2*f1n8));
f.addCode(
c.call(f1mPrefix+"_copy", x0, r0),
c.call(f1mPrefix+"_copy", x1, r1),
c.call(f1mPrefix+"_copy", x2, r2),
);
}
function buildZero() {
const f = module.addFunction(prefix+"_zero");
f.addParam("x", "i32");
const c = f.getCodeBuilder();
const x0 = c.getLocal("x");
const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
const x2 = c.i32_add(c.getLocal("x"), c.i32_const(2*f1n8));
f.addCode(
c.call(f1mPrefix+"_zero", x0),
c.call(f1mPrefix+"_zero", x1),
c.call(f1mPrefix+"_zero", x2),
);
}
function buildOne() {
const f = module.addFunction(prefix+"_one");
f.addParam("x", "i32");
const c = f.getCodeBuilder();
const x0 = c.getLocal("x");
const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
const x2 = c.i32_add(c.getLocal("x"), c.i32_const(2*f1n8));
f.addCode(
c.call(f1mPrefix+"_one", x0),
c.call(f1mPrefix+"_zero", x1),
c.call(f1mPrefix+"_zero", x2),
);
}
function buildEq() {
const f = module.addFunction(prefix+"_eq");
f.addParam("x", "i32");
f.addParam("y", "i32");
f.setReturnType("i32");
const c = f.getCodeBuilder();
const x0 = c.getLocal("x");
const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
const x2 = c.i32_add(c.getLocal("x"), c.i32_const(2*f1n8));
const y0 = c.getLocal("y");
const y1 = c.i32_add(c.getLocal("y"), c.i32_const(f1n8));
const y2 = c.i32_add(c.getLocal("y"), c.i32_const(2*f1n8));
f.addCode(
c.i32_and(
c.i32_and(
c.call(f1mPrefix+"_eq", x0, y0),
c.call(f1mPrefix+"_eq", x1, y1),
),
c.call(f1mPrefix+"_eq", x2, y2)
)
);
}
function buildIsZero() {
const f = module.addFunction(prefix+"_isZero");
f.addParam("x", "i32");
f.setReturnType("i32");
const c = f.getCodeBuilder();
const x0 = c.getLocal("x");
const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
const x2 = c.i32_add(c.getLocal("x"), c.i32_const(2*f1n8));
f.addCode(
c.i32_and(
c.i32_and(
c.call(f1mPrefix+"_isZero", x0),
c.call(f1mPrefix+"_isZero", x1)
),
c.call(f1mPrefix+"_isZero", x2)
)
);
}
function buildInverse() {
const f = module.addFunction(prefix+"_inverse");
f.addParam("x", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
const x0 = c.getLocal("x");
const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
const x2 = c.i32_add(c.getLocal("x"), c.i32_const(2*f1n8));
const r0 = c.getLocal("r");
const r1 = c.i32_add(c.getLocal("r"), c.i32_const(f1n8));
const r2 = c.i32_add(c.getLocal("r"), c.i32_const(2*f1n8));
const t0 = c.i32_const(module.alloc(f1n8));
const t1 = c.i32_const(module.alloc(f1n8));
const t2 = c.i32_const(module.alloc(f1n8));
const t3 = c.i32_const(module.alloc(f1n8));
const t4 = c.i32_const(module.alloc(f1n8));
const t5 = c.i32_const(module.alloc(f1n8));
const c0 = c.i32_const(module.alloc(f1n8));
const c1 = c.i32_const(module.alloc(f1n8));
const c2 = c.i32_const(module.alloc(f1n8));
const t6 = c.i32_const(module.alloc(f1n8));
const AUX = c.i32_const(module.alloc(f1n8));
f.addCode(
c.call(f1mPrefix+"_square", x0, t0),
c.call(f1mPrefix+"_square", x1, t1),
c.call(f1mPrefix+"_square", x2, t2),
c.call(f1mPrefix+"_mul", x0, x1, t3),
c.call(f1mPrefix+"_mul", x0, x2, t4),
c.call(f1mPrefix+"_mul", x1, x2, t5),
c.call(mulNonResidueFn, t5, c0),
c.call(f1mPrefix+"_sub", t0, c0, c0),
c.call(mulNonResidueFn, t2, c1),
c.call(f1mPrefix+"_sub", c1, t3, c1),
c.call(f1mPrefix+"_sub", t1, t4, c2),
c.call(f1mPrefix+"_mul", x2, c1, t6),
c.call(f1mPrefix+"_mul", x1, c2, AUX),
c.call(f1mPrefix+"_add", t6, AUX, t6),
c.call(mulNonResidueFn, t6, t6),
c.call(f1mPrefix+"_mul", x0, c0, AUX),
c.call(f1mPrefix+"_add", AUX, t6, t6),
c.call(f1mPrefix+"_inverse", t6, t6),
c.call(f1mPrefix+"_mul", t6, c0, r0),
c.call(f1mPrefix+"_mul", t6, c1, r1),
c.call(f1mPrefix+"_mul", t6, c2, r2)
);
}
function buildSign() {
const f = module.addFunction(prefix+"_sign");
f.addParam("x", "i32");
f.addLocal("s", "i32");
f.setReturnType("i32");
const c = f.getCodeBuilder();
const x0 = c.getLocal("x");
const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
const x2 = c.i32_add(c.getLocal("x"), c.i32_const(2*f1n8));
f.addCode(
c.setLocal("s" , c.call( f1mPrefix + "_sign", x2)),
c.if(
c.getLocal("s"),
c.ret(c.getLocal("s"))
),
c.setLocal("s" , c.call( f1mPrefix + "_sign", x1)),
c.if(
c.getLocal("s"),
c.ret(c.getLocal("s"))
),
c.ret(c.call( f1mPrefix + "_sign", x0))
);
}
function buildIsOne() {
const f = module.addFunction(prefix+"_isOne");
f.addParam("x", "i32");
f.setReturnType("i32");
const c = f.getCodeBuilder();
const x0 = c.getLocal("x");
const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
const x2 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8*2));
f.addCode(
c.ret(
c.i32_and(
c.i32_and(
c.call(f1mPrefix + "_isOne", x0),
c.call(f1mPrefix + "_isZero", x1)
),
c.call(f1mPrefix + "_isZero", x2)
)
)
);
}
buildIsZero();
buildIsOne();
buildZero();
buildOne();
buildCopy();
buildMul();
buildSquare();
buildAdd();
buildSub();
buildNeg();
buildSign();
buildToMontgomery();
buildFromMontgomery();
buildEq();
buildInverse();
buildTimesScalar();
buildIsNegative();
module.exportFunction(prefix + "_isZero");
module.exportFunction(prefix + "_isOne");
module.exportFunction(prefix + "_zero");
module.exportFunction(prefix + "_one");
module.exportFunction(prefix + "_copy");
module.exportFunction(prefix + "_mul");
module.exportFunction(prefix + "_square");
module.exportFunction(prefix + "_add");
module.exportFunction(prefix + "_sub");
module.exportFunction(prefix + "_neg");
module.exportFunction(prefix + "_sign");
module.exportFunction(prefix + "_fromMontgomery");
module.exportFunction(prefix + "_toMontgomery");
module.exportFunction(prefix + "_eq");
module.exportFunction(prefix + "_inverse");
buildBatchInverse(module, prefix);
buildExp(
module,
prefix + "_exp",
f1n8*3,
prefix + "_mul",
prefix + "_square",
prefix + "_copy",
prefix + "_one"
);
module.exportFunction(prefix + "_exp");
module.exportFunction(prefix + "_timesScalar");
module.exportFunction(prefix + "_batchInverse");
module.exportFunction(prefix + "_isNegative");
return prefix;
};
/*
Copyright 2019 0KIMS association.
This file is part of wasmsnark (Web Assembly zkSnark Prover).
wasmsnark 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.
wasmsnark 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 wasmsnark. If not, see <https://www.gnu.org/licenses/>.
*/
var build_timesscalarnaf = function buildTimesScalarNAF(module, fnName, elementLen, opAB, opAA, opAmB, opCopy, opInit) {
const f = module.addFunction(fnName);
f.addParam("base", "i32");
f.addParam("scalar", "i32");
f.addParam("scalarLength", "i32");
f.addParam("r", "i32");
f.addLocal("old0", "i32");
f.addLocal("nbits", "i32");
f.addLocal("i", "i32");
f.addLocal("last", "i32");
f.addLocal("cur", "i32");
f.addLocal("carry", "i32");
f.addLocal("p", "i32");
const c = f.getCodeBuilder();
const aux = c.i32_const(module.alloc(elementLen));
function getBit(IDX) {
return c.i32_and(
c.i32_shr_u(
c.i32_load(
c.i32_add(
c.getLocal("scalar"),
c.i32_and(
c.i32_shr_u(
IDX,
c.i32_const(3)
),
c.i32_const(0xFFFFFFFC)
)
)
),
c.i32_and(
IDX,
c.i32_const(0x1F)
)
),
c.i32_const(1)
);
}
function pushBit(b) {
return [
...c.i32_store8(
c.getLocal("p"),
c.i32_const(b)
),
...c.setLocal(
"p",
c.i32_add(
c.getLocal("p"),
c.i32_const(1)
)
)
];
}
f.addCode(
c.if(
c.i32_eqz(c.getLocal("scalarLength")),
[
...c.call(opInit, c.getLocal("r")),
...c.ret([])
]
),
c.setLocal("nbits", c.i32_shl(c.getLocal("scalarLength"), c.i32_const(3))),
c.setLocal("old0", c.i32_load(c.i32_const(0))),
c.setLocal("p", c.getLocal("old0")),
c.i32_store(
c.i32_const(0),
c.i32_and(
c.i32_add(
c.i32_add(
c.getLocal("old0"),
c.i32_const(32)
),
c.getLocal("nbits")
),
c.i32_const(0xFFFFFFF8)
)
),
c.setLocal("i", c.i32_const(1)),
c.setLocal("last",getBit(c.i32_const(0))),
c.setLocal("carry",c.i32_const(0)),
c.block(c.loop(
c.br_if(1, c.i32_eq( c.getLocal("i"), c.getLocal("nbits"))),
c.setLocal("cur", getBit(c.getLocal("i"))),
c.if( c.getLocal("last"),
c.if( c.getLocal("cur"),
c.if(c.getLocal("carry"),
[
...c.setLocal("last", c.i32_const(0)),
...c.setLocal("carry", c.i32_const(1)),
...pushBit(1)
]
,
[
...c.setLocal("last", c.i32_const(0)),
...c.setLocal("carry", c.i32_const(1)),
...pushBit(255)
],
),
c.if(c.getLocal("carry"),
[
...c.setLocal("last", c.i32_const(0)),
...c.setLocal("carry", c.i32_const(1)),
...pushBit(255)
]
,
[
...c.setLocal("last", c.i32_const(0)),
...c.setLocal("carry", c.i32_const(0)),
...pushBit(1)
],
),
),
c.if( c.getLocal("cur"),
c.if(c.getLocal("carry"),
[
...c.setLocal("last", c.i32_const(0)),
...c.setLocal("carry", c.i32_const(1)),
...pushBit(0)
]
,
[
...c.setLocal("last", c.i32_const(1)),
...c.setLocal("carry", c.i32_const(0)),
...pushBit(0)
],
),
c.if(c.getLocal("carry"),
[
...c.setLocal("last", c.i32_const(1)),
...c.setLocal("carry", c.i32_const(0)),
...pushBit(0)
]
,
[
...c.setLocal("last", c.i32_const(0)),
...c.setLocal("carry", c.i32_const(0)),
...pushBit(0)
],
),
)
),
c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))),
c.br(0)
)),
c.if( c.getLocal("last"),
c.if(c.getLocal("carry"),
[
...pushBit(255),
...pushBit(0),
...pushBit(1)
]
,
[
...pushBit(1)
],
),
c.if(c.getLocal("carry"),
[
...pushBit(0),
...pushBit(1)
]
),
),
c.setLocal("p", c.i32_sub(c.getLocal("p"), c.i32_const(1))),
// p already points to the last bit
c.call(opCopy, c.getLocal("base"), aux),
c.call(opInit, c.getLocal("r")),
c.block(c.loop(
c.call(opAA, c.getLocal("r"), c.getLocal("r")),
c.setLocal("cur",
c.i32_load8_u(
c.getLocal("p")
)
),
c.if(
c.getLocal("cur"),
c.if(
c.i32_eq(c.getLocal("cur"), c.i32_const(1)),
c.call(opAB, c.getLocal("r"), aux, c.getLocal("r")),
c.call(opAmB, c.getLocal("r"), aux, c.getLocal("r")),
)
),
c.br_if(1, c.i32_eq( c.getLocal("old0"), c.getLocal("p"))),
c.setLocal("p", c.i32_sub(c.getLocal("p"), c.i32_const(1))),
c.br(0)
)),
c.i32_store( c.i32_const(0), c.getLocal("old0"))
);
};
/*
Copyright 2019 0KIMS association.
This file is part of wasmsnark (Web Assembly zkSnark Prover).
wasmsnark 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.
wasmsnark 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 wasmsnark. If not, see <https://www.gnu.org/licenses/>.
*/
var build_multiexp = function buildMultiexp(module, prefix, fnName, opAdd, n8b) {
const n64g = module.modules[prefix].n64;
const n8g = n64g*8;
function buildGetChunk() {
const f = module.addFunction(fnName + "_getChunk");
f.addParam("pScalar", "i32");
f.addParam("scalarSize", "i32"); // Number of bytes of the scalar
f.addParam("startBit", "i32"); // Bit to start extract
f.addParam("chunkSize", "i32"); // Chunk size in bits
f.addLocal("bitsToEnd", "i32");
f.addLocal("mask", "i32");
f.setReturnType("i32");
const c = f.getCodeBuilder();
f.addCode(
c.setLocal("bitsToEnd",
c.i32_sub(
c.i32_mul(
c.getLocal("scalarSize"),
c.i32_const(8)
),
c.getLocal("startBit")
)
),
c.if(
c.i32_gt_s(
c.getLocal("chunkSize"),
c.getLocal("bitsToEnd")
),
c.setLocal(
"mask",
c.i32_sub(
c.i32_shl(
c.i32_const(1),
c.getLocal("bitsToEnd")
),
c.i32_const(1)
)
),
c.setLocal(
"mask",
c.i32_sub(
c.i32_shl(
c.i32_const(1),
c.getLocal("chunkSize")
),
c.i32_const(1)
)
)
),
c.i32_and(
c.i32_shr_u(
c.i32_load(
c.i32_add(
c.getLocal("pScalar"),
c.i32_shr_u(
c.getLocal("startBit"),
c.i32_const(3)
)
),
0, // offset
0 // align to byte.
),
c.i32_and(
c.getLocal("startBit"),
c.i32_const(0x7)
)
),
c.getLocal("mask")
)
);
}
function buildMutiexpChunk() {
const f = module.addFunction(fnName + "_chunk");
f.addParam("pBases", "i32");
f.addParam("pScalars", "i32");
f.addParam("scalarSize", "i32"); // Number of points
f.addParam("n", "i32"); // Number of points
f.addParam("startBit", "i32"); // bit where it starts the chunk
f.addParam("chunkSize", "i32"); // bit where it starts the chunk
f.addParam("pr", "i32");
f.addLocal("nChunks", "i32");
f.addLocal("itScalar", "i32");
f.addLocal("endScalar", "i32");
f.addLocal("itBase", "i32");
f.addLocal("i", "i32");
f.addLocal("j", "i32");
f.addLocal("nTable", "i32");
f.addLocal("pTable", "i32");
f.addLocal("idx", "i32");
f.addLocal("pIdxTable", "i32");
const c = f.getCodeBuilder();
f.addCode(
c.if(
c.i32_eqz(c.getLocal("n")),
[
...c.call(prefix + "_zero", c.getLocal("pr")),
...c.ret([])
]
),
// Allocate memory
c.setLocal(
"nTable",
c.i32_shl(
c.i32_const(1),
c.getLocal("chunkSize")
)
),
c.setLocal("pTable", c.i32_load( c.i32_const(0) )),
c.i32_store(
c.i32_const(0),
c.i32_add(
c.getLocal("pTable"),
c.i32_mul(
c.getLocal("nTable"),
c.i32_const(n8g)
)
)
),
// Reset Table
c.setLocal("j", c.i32_const(0)),
c.block(c.loop(
c.br_if(
1,
c.i32_eq(
c.getLocal("j"),
c.getLocal("nTable")
)
),
c.call(
prefix + "_zero",
c.i32_add(
c.getLocal("pTable"),
c.i32_mul(
c.getLocal("j"),
c.i32_const(n8g)
)
)
),
c.setLocal("j", c.i32_add(c.getLocal("j"), c.i32_const(1))),
c.br(0)
)),
// Distribute elements
c.setLocal("itBase", c.getLocal("pBases")),
c.setLocal("itScalar", c.getLocal("pScalars")),
c.setLocal("endScalar",
c.i32_add(
c.getLocal("pScalars"),
c.i32_mul(
c.getLocal("n"),
c.getLocal("scalarSize")
)
)
),
c.block(c.loop(
c.br_if(
1,
c.i32_eq(
c.getLocal("itScalar"),
c.getLocal("endScalar")
)
),
c.setLocal(
"idx",
c.call(fnName + "_getChunk",
c.getLocal("itScalar"),
c.getLocal("scalarSize"),
c.getLocal("startBit"),
c.getLocal("chunkSize")
)
),
c.if(
c.getLocal("idx"),
[
...c.setLocal(
"pIdxTable",
c.i32_add(
c.getLocal("pTable"),
c.i32_mul(
c.i32_sub(
c.getLocal("idx"),
c.i32_const(1)
),
c.i32_const(n8g)
)
)
),
...c.call(
opAdd,
c.getLocal("pIdxTable"),
c.getLocal("itBase"),
c.getLocal("pIdxTable"),
)
]
),
c.setLocal("itScalar", c.i32_add(c.getLocal("itScalar"), c.getLocal("scalarSize"))),
c.setLocal("itBase", c.i32_add(c.getLocal("itBase"), c.i32_const(n8b))),
c.br(0)
)),
c.call(fnName + "_reduceTable", c.getLocal("pTable"), c.getLocal("chunkSize")),
c.call(
prefix + "_copy",
c.getLocal("pTable"),
c.getLocal("pr")
),
c.i32_store(
c.i32_const(0),
c.getLocal("pTable")
)
);
}
function buildMultiexp() {
const f = module.addFunction(fnName);
f.addParam("pBases", "i32");
f.addParam("pScalars", "i32");
f.addParam("scalarSize", "i32"); // Number of points
f.addParam("n", "i32"); // Number of points
f.addParam("pr", "i32");
f.addLocal("chunkSize", "i32");
f.addLocal("nChunks", "i32");
f.addLocal("itScalar", "i32");
f.addLocal("endScalar", "i32");
f.addLocal("itBase", "i32");
f.addLocal("itBit", "i32");
f.addLocal("i", "i32");
f.addLocal("j", "i32");
f.addLocal("nTable", "i32");
f.addLocal("pTable", "i32");
f.addLocal("idx", "i32");
f.addLocal("pIdxTable", "i32");
const c = f.getCodeBuilder();
const aux = c.i32_const(module.alloc(n8g));
const pTSizes = module.alloc([
17, 17, 17, 17, 17, 17, 17, 17,
17, 17, 16, 16, 15, 14, 13, 13,
12, 11, 10, 9, 8, 7, 7, 6,
5 , 4, 3, 2, 1, 1, 1, 1
]);
f.addCode(
c.call(prefix + "_zero", c.getLocal("pr")),
c.if(
c.i32_eqz(c.getLocal("n")),
c.ret([])
),
c.setLocal("chunkSize", c.i32_load8_u( c.i32_clz(c.getLocal("n")), pTSizes )),
c.setLocal(
"nChunks",
c.i32_add(
c.i32_div_u(
c.i32_sub(
c.i32_shl(
c.getLocal("scalarSize"),
c.i32_const(3)
),
c.i32_const(1)
),
c.getLocal("chunkSize")
),
c.i32_const(1)
)
),
// Allocate memory
c.setLocal(
"itBit",
c.i32_mul(
c.i32_sub(
c.getLocal("nChunks"),
c.i32_const(1)
),
c.getLocal("chunkSize")
)
),
c.block(c.loop(
c.br_if(
1,
c.i32_lt_s(
c.getLocal("itBit"),
c.i32_const(0)
)
),
// Double nChunk times
c.if(
c.i32_eqz(c.call(prefix + "_isZero", c.getLocal("pr"))),
[
...c.setLocal("j", c.i32_const(0)),
...c.block(c.loop(
c.br_if(
1,
c.i32_eq(
c.getLocal("j"),
c.getLocal("chunkSize")
)
),
c.call(prefix + "_double", c.getLocal("pr"), c.getLocal("pr")),
c.setLocal("j", c.i32_add(c.getLocal("j"), c.i32_const(1))),
c.br(0)
))
]
),
c.call(
fnName + "_chunk",
c.getLocal("pBases"),
c.getLocal("pScalars"),
c.getLocal("scalarSize"),
c.getLocal("n"),
c.getLocal("itBit"),
c.getLocal("chunkSize"),
aux
),
c.call(
prefix + "_add",
c.getLocal("pr"),
aux,
c.getLocal("pr")
),
c.setLocal("itBit", c.i32_sub(c.getLocal("itBit"), c.getLocal("chunkSize"))),
c.br(0)
))
);
}
function buildReduceTable() {
const f = module.addFunction(fnName + "_reduceTable");
f.addParam("pTable", "i32");
f.addParam("p", "i32"); // Number of bits of the table
f.addLocal("half", "i32");
f.addLocal("it1", "i32");
f.addLocal("it2", "i32");
f.addLocal("pAcc", "i32");
const c = f.getCodeBuilder();
f.addCode(
c.if(
c.i32_eq(c.getLocal("p"), c.i32_const(1)),
c.ret([])
),
c.setLocal(
"half",
c.i32_shl(
c.i32_const(1),
c.i32_sub(
c.getLocal("p"),
c.i32_const(1)
)
)
),
c.setLocal("it1", c.getLocal("pTable")),
c.setLocal(
"it2",
c.i32_add(
c.getLocal("pTable"),
c.i32_mul(
c.getLocal("half"),
c.i32_const(n8g)
)
)
),
c.setLocal("pAcc",
c.i32_sub(
c.getLocal("it2"),
c.i32_const(n8g)
)
),
c.block(c.loop(
c.br_if(
1,
c.i32_eq(
c.getLocal("it1"),
c.getLocal("pAcc")
)
),
c.call(
prefix + "_add",
c.getLocal("it1"),
c.getLocal("it2"),
c.getLocal("it1")
),
c.call(
prefix + "_add",
c.getLocal("pAcc"),
c.getLocal("it2"),
c.getLocal("pAcc")
),
c.setLocal("it1", c.i32_add(c.getLocal("it1"), c.i32_const(n8g))),
c.setLocal("it2", c.i32_add(c.getLocal("it2"), c.i32_const(n8g))),
c.br(0)
)),
c.call(
fnName + "_reduceTable",
c.getLocal("pTable"),
c.i32_sub(
c.getLocal("p"),
c.i32_const(1)
)
),
c.setLocal("p", c.i32_sub(c.getLocal("p"), c.i32_const(1))),
c.block(c.loop(
c.br_if(1, c.i32_eqz(c.getLocal("p"))),
c.call(prefix + "_double", c.getLocal("pAcc"), c.getLocal("pAcc")),
c.setLocal("p", c.i32_sub(c.getLocal("p"), c.i32_const(1))),
c.br(0)
)),
c.call(prefix + "_add", c.getLocal("pTable"), c.getLocal("pAcc"), c.getLocal("pTable"))
);
}
buildGetChunk();
buildReduceTable();
buildMutiexpChunk();
buildMultiexp();
module.exportFunction(fnName);
module.exportFunction(fnName +"_chunk");
};
/*
Copyright 2019 0KIMS association.
This file is part of wasmsnark (Web Assembly zkSnark Prover).
wasmsnark 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.
wasmsnark 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 wasmsnark. If not, see <https://www.gnu.org/licenses/>.
*/
const buildTimesScalarNAF = build_timesscalarnaf;
//const buildTimesScalar = require("./build_timesscalar");
const buildBatchConvertion = build_batchconvertion;
const buildMultiexp$1 = build_multiexp;
var build_curve_jacobian_a0 = function buildCurve(module, prefix, prefixField, pB) {
const n64 = module.modules[prefixField].n64;
const n8 = n64*8;
if (module.modules[prefix]) return prefix; // already builded
module.modules[prefix] = {
n64: n64*3
};
function buildIsZero() {
const f = module.addFunction(prefix + "_isZero");
f.addParam("p1", "i32");
f.setReturnType("i32");
const c = f.getCodeBuilder();
f.addCode(c.call(
prefixField + "_isZero",
c.i32_add(
c.getLocal("p1"),
c.i32_const(n8*2)
)
));
}
function buildIsZeroAffine() {
const f = module.addFunction(prefix + "_isZeroAffine");
f.addParam("p1", "i32");
f.setReturnType("i32");
const c = f.getCodeBuilder();
f.addCode(
c.i32_and(
c.call(
prefixField + "_isZero",
c.getLocal("p1")
),
c.call(
prefixField + "_isZero",
c.i32_add(
c.getLocal("p1"),
c.i32_const(n8)
)
)
)
);
}
function buildCopy() {
const f = module.addFunction(prefix + "_copy");
f.addParam("ps", "i32");
f.addParam("pd", "i32");
const c = f.getCodeBuilder();
for (let i=0; i<n64*3; i++) {
f.addCode(
c.i64_store(
c.getLocal("pd"),
i*8,
c.i64_load(
c.getLocal("ps"),
i*8
)
)
);
}
}
function buildCopyAffine() {
const f = module.addFunction(prefix + "_copyAffine");
f.addParam("ps", "i32");
f.addParam("pd", "i32");
const c = f.getCodeBuilder();
for (let i=0; i<n64*2; i++) {
f.addCode(
c.i64_store(
c.getLocal("pd"),
i*8,
c.i64_load(
c.getLocal("ps"),
i*8
)
)
);
}
}
function buildZero() {
const f = module.addFunction(prefix + "_zero");
f.addParam("pr", "i32");
const c = f.getCodeBuilder();
f.addCode(c.call(
prefixField + "_zero",
c.getLocal("pr")
));
f.addCode(c.call(
prefixField + "_one",
c.i32_add(
c.getLocal("pr"),
c.i32_const(n8)
)
));
f.addCode(c.call(
prefixField + "_zero",
c.i32_add(
c.getLocal("pr"),
c.i32_const(n8*2)
)
));
}
function buildZeroAffine() {
const f = module.addFunction(prefix + "_zeroAffine");
f.addParam("pr", "i32");
const c = f.getCodeBuilder();
f.addCode(c.call(
prefixField + "_zero",
c.getLocal("pr")
));
f.addCode(c.call(
prefixField + "_zero",
c.i32_add(
c.getLocal("pr"),
c.i32_const(n8)
)
));
}
function buildEq() {
const f = module.addFunction(prefix + "_eq");
f.addParam("p1", "i32");
f.addParam("p2", "i32");
f.setReturnType("i32");
f.addLocal("z1", "i32");
f.addLocal("z2", "i32");
const c = f.getCodeBuilder();
const x1 = c.getLocal("p1");
const y1 = c.i32_add(c.getLocal("p1"), c.i32_const(n8));
f.addCode(c.setLocal("z1", c.i32_add(c.getLocal("p1"), c.i32_const(n8*2))));
const z1 = c.getLocal("z1");
const x2 = c.getLocal("p2");
const y2 = c.i32_add(c.getLocal("p2"), c.i32_const(n8));
f.addCode(c.setLocal("z2", c.i32_add(c.getLocal("p2"), c.i32_const(n8*2))));
const z2 = c.getLocal("z2");
const Z1Z1 = c.i32_const(module.alloc(n8));
const Z2Z2 = c.i32_const(module.alloc(n8));
const U1 = c.i32_const(module.alloc(n8));
const U2 = c.i32_const(module.alloc(n8));
const Z1_cubed = c.i32_const(module.alloc(n8));
const Z2_cubed = c.i32_const(module.alloc(n8));
const S1 = c.i32_const(module.alloc(n8));
const S2 = c.i32_const(module.alloc(n8));
f.addCode(
c.if(
c.call(prefix + "_isZero", c.getLocal("p1")),
c.ret( c.call(prefix + "_isZero", c.getLocal("p2"))),
),
c.if(
c.call(prefix + "_isZero", c.getLocal("p2")),
c.ret(c.i32_const(0))
),
c.if(
c.call(prefixField + "_isOne", z1),
c.ret(c.call(prefix + "_eqMixed", c.getLocal("p2"), c.getLocal("p1")))
),
c.if(
c.call(prefixField + "_isOne", z2),
c.ret(c.call(prefix + "_eqMixed", c.getLocal("p1"), c.getLocal("p2")))
),
c.call(prefixField + "_square", z1, Z1Z1),
c.call(prefixField + "_square", z2, Z2Z2),
c.call(prefixField + "_mul", x1, Z2Z2, U1),
c.call(prefixField + "_mul", x2, Z1Z1, U2),
c.call(prefixField + "_mul", z1, Z1Z1, Z1_cubed),
c.call(prefixField + "_mul", z2, Z2Z2, Z2_cubed),
c.call(prefixField + "_mul", y1, Z2_cubed, S1),
c.call(prefixField + "_mul", y2, Z1_cubed, S2),
c.if(
c.call(prefixField + "_eq", U1, U2),
c.if(
c.call(prefixField + "_eq", S1, S2),
c.ret(c.i32_const(1))
)
),
c.ret(c.i32_const(0))
);
}
function buildEqMixed() {
const f = module.addFunction(prefix + "_eqMixed");
f.addParam("p1", "i32");
f.addParam("p2", "i32");
f.setReturnType("i32");
f.addLocal("z1", "i32");
const c = f.getCodeBuilder();
const x1 = c.getLocal("p1");
const y1 = c.i32_add(c.getLocal("p1"), c.i32_const(n8));
f.addCode(c.setLocal("z1", c.i32_add(c.getLocal("p1"), c.i32_const(n8*2))));
const z1 = c.getLocal("z1");
const x2 = c.getLocal("p2");
const y2 = c.i32_add(c.getLocal("p2"), c.i32_const(n8));
const Z1Z1 = c.i32_const(module.alloc(n8));
const U2 = c.i32_const(module.alloc(n8));
const Z1_cubed = c.i32_const(module.alloc(n8));
const S2 = c.i32_const(module.alloc(n8));
f.addCode(
c.if(
c.call(prefix + "_isZero", c.getLocal("p1")),
c.ret( c.call(prefix + "_isZeroAffine", c.getLocal("p2"))),
),
c.if(
c.call(prefix + "_isZeroAffine", c.getLocal("p2")),
c.ret(c.i32_const(0))
),
c.if(
c.call(prefixField + "_isOne", z1),
c.ret(c.call(prefix + "_eqAffine", c.getLocal("p1"), c.getLocal("p2")))
),
c.call(prefixField + "_square", z1, Z1Z1),
c.call(prefixField + "_mul", x2, Z1Z1, U2),
c.call(prefixField + "_mul", z1, Z1Z1, Z1_cubed),
c.call(prefixField + "_mul", y2, Z1_cubed, S2),
c.if(
c.call(prefixField + "_eq", x1, U2),
c.if(
c.call(prefixField + "_eq", y1, S2),
c.ret(c.i32_const(1))
)
),
c.ret(c.i32_const(0))
);
}
function buildDouble() {
const f = module.addFunction(prefix + "_double");
f.addParam("p1", "i32");
f.addParam("pr", "i32");
const c = f.getCodeBuilder();
const x = c.getLocal("p1");
const y = c.i32_add(c.getLocal("p1"), c.i32_const(n8));
const z = c.i32_add(c.getLocal("p1"), c.i32_const(n8*2));
const x3 = c.getLocal("pr");
const y3 = c.i32_add(c.getLocal("pr"), c.i32_const(n8));
const z3 = c.i32_add(c.getLocal("pr"), c.i32_const(n8*2));
const A = c.i32_const(module.alloc(n8));
const B = c.i32_const(module.alloc(n8));
const C = c.i32_const(module.alloc(n8));
const D = c.i32_const(module.alloc(n8));
const E = c.i32_const(module.alloc(n8));
const F = c.i32_const(module.alloc(n8));
const G = c.i32_const(module.alloc(n8));
const eightC = c.i32_const(module.alloc(n8));
f.addCode(
c.if(
c.call(prefix + "_isZero", c.getLocal("p1")),
[
...c.call(prefix + "_copy", c.getLocal("p1"), c.getLocal("pr")),
...c.ret([])
]
),
c.if(
c.call(prefixField + "_isOne", z),
[
...c.ret(c.call(prefix + "_doubleAffine", c.getLocal("p1"), c.getLocal("pr"))),
...c.ret([])
]
),
c.call(prefixField + "_square", x, A),
c.call(prefixField + "_square", y, B),
c.call(prefixField + "_square", B, C),
c.call(prefixField + "_add", x, B, D),
c.call(prefixField + "_square", D, D),
c.call(prefixField + "_sub", D, A, D),
c.call(prefixField + "_sub", D, C, D),
c.call(prefixField + "_add", D, D, D),
c.call(prefixField + "_add", A, A, E),
c.call(prefixField + "_add", E, A, E),
c.call(prefixField + "_square", E, F),
c.call(prefixField + "_mul", y, z, G),
c.call(prefixField + "_add", D, D, x3),
c.call(prefixField + "_sub", F, x3, x3),
c.call(prefixField + "_add", C, C, eightC),
c.call(prefixField + "_add", eightC, eightC, eightC),
c.call(prefixField + "_add", eightC, eightC, eightC),
c.call(prefixField + "_sub", D, x3, y3),
c.call(prefixField + "_mul", y3, E, y3),
c.call(prefixField + "_sub", y3, eightC, y3),
c.call(prefixField + "_add", G, G, z3),
);
}
function buildDoubleAffine() {
const f = module.addFunction(prefix + "_doubleAffine");
f.addParam("p1", "i32");
f.addParam("pr", "i32");
const c = f.getCodeBuilder();
const x = c.getLocal("p1");
const y = c.i32_add(c.getLocal("p1"), c.i32_const(n8));
const x3 = c.getLocal("pr");
const y3 = c.i32_add(c.getLocal("pr"), c.i32_const(n8));
const z3 = c.i32_add(c.getLocal("pr"), c.i32_const(n8*2));
const XX = c.i32_const(module.alloc(n8));
const YY = c.i32_const(module.alloc(n8));
const YYYY = c.i32_const(module.alloc(n8));
const S = c.i32_const(module.alloc(n8));
const M = c.i32_const(module.alloc(n8));
const eightYYYY = c.i32_const(module.alloc(n8));
f.addCode(
c.if(
c.call(prefix + "_isZeroAffine", c.getLocal("p1")),
[
...c.call(prefix + "_toJacobian", c.getLocal("p1"), c.getLocal("pr")),
...c.ret([])
]
),
// XX = X1^2
c.call(prefixField + "_square", x, XX),
// YY = Y1^2
c.call(prefixField + "_square", y, YY),
// YYYY = YY^2
c.call(prefixField + "_square", YY, YYYY),
// S = 2*((X1+YY)^2-XX-YYYY)
c.call(prefixField + "_add", x, YY, S),
c.call(prefixField + "_square", S, S),
c.call(prefixField + "_sub", S, XX, S),
c.call(prefixField + "_sub", S, YYYY, S),
c.call(prefixField + "_add", S, S, S),
// M = 3*XX+a (Hera a=0)
c.call(prefixField + "_add", XX, XX, M),
c.call(prefixField + "_add", M, XX, M),
// Z3 = 2*Y1
c.call(prefixField + "_add", y, y, z3),
// T = M^2-2*S
// X3 = T
c.call(prefixField + "_square", M, x3),
c.call(prefixField + "_sub", x3, S, x3),
c.call(prefixField + "_sub", x3, S, x3),
// Y3 = M*(S-T)-8*YYYY
c.call(prefixField + "_add", YYYY, YYYY, eightYYYY),
c.call(prefixField + "_add", eightYYYY, eightYYYY, eightYYYY),
c.call(prefixField + "_add", eightYYYY, eightYYYY, eightYYYY),
c.call(prefixField + "_sub", S, x3, y3),
c.call(prefixField + "_mul", y3, M, y3),
c.call(prefixField + "_sub", y3, eightYYYY, y3),
);
}
function buildEqAffine() {
const f = module.addFunction(prefix + "_eqAffine");
f.addParam("p1", "i32");
f.addParam("p2", "i32");
f.setReturnType("i32");
f.addLocal("z1", "i32");
const c = f.getCodeBuilder();
f.addCode(
c.ret(c.i32_and(
c.call(
prefixField + "_eq",
c.getLocal("p1"),
c.getLocal("p2")
),
c.call(
prefixField + "_eq",
c.i32_add(c.getLocal("p1"), c.i32_const(n8)),
c.i32_add(c.getLocal("p2"), c.i32_const(n8))
)
))
);
}
function buildToMontgomery() {
const f = module.addFunction(prefix + "_toMontgomery");
f.addParam("p1", "i32");
f.addParam("pr", "i32");
const c = f.getCodeBuilder();
f.addCode(c.call(
prefixField + "_toMontgomery",
c.getLocal("p1"),
c.getLocal("pr")
));
for (let i=1; i<3; i++) {
f.addCode(c.call(
prefixField + "_toMontgomery",
c.i32_add(c.getLocal("p1"), c.i32_const(i*n8)),
c.i32_add(c.getLocal("pr"), c.i32_const(i*n8))
));
}
}
function buildToMontgomeryAffine() {
const f = module.addFunction(prefix + "_toMontgomeryAffine");
f.addParam("p1", "i32");
f.addParam("pr", "i32");
const c = f.getCodeBuilder();
f.addCode(c.call(
prefixField + "_toMontgomery",
c.getLocal("p1"),
c.getLocal("pr")
));
for (let i=1; i<2; i++) {
f.addCode(c.call(
prefixField + "_toMontgomery",
c.i32_add(c.getLocal("p1"), c.i32_const(i*n8)),
c.i32_add(c.getLocal("pr"), c.i32_const(i*n8))
));
}
}
function buildFromMontgomery() {
const f = module.addFunction(prefix + "_fromMontgomery");
f.addParam("p1", "i32");
f.addParam("pr", "i32");
const c = f.getCodeBuilder();
f.addCode(c.call(
prefixField + "_fromMontgomery",
c.getLocal("p1"),
c.getLocal("pr")
));
for (let i=1; i<3; i++) {
f.addCode(c.call(
prefixField + "_fromMontgomery",
c.i32_add(c.getLocal("p1"), c.i32_const(i*n8)),
c.i32_add(c.getLocal("pr"), c.i32_const(i*n8))
));
}
}
function buildFromMontgomeryAffine() {
const f = module.addFunction(prefix + "_fromMontgomeryAffine");
f.addParam("p1", "i32");
f.addParam("pr", "i32");
const c = f.getCodeBuilder();
f.addCode(c.call(
prefixField + "_fromMontgomery",
c.getLocal("p1"),
c.getLocal("pr")
));
for (let i=1; i<2; i++) {
f.addCode(c.call(
prefixField + "_fromMontgomery",
c.i32_add(c.getLocal("p1"), c.i32_const(i*n8)),
c.i32_add(c.getLocal("pr"), c.i32_const(i*n8))
));
}
}
function buildAdd() {
const f = module.addFunction(prefix + "_add");
f.addParam("p1", "i32");
f.addParam("p2", "i32");
f.addParam("pr", "i32");
f.addLocal("z1", "i32");
f.addLocal("z2", "i32");
const c = f.getCodeBuilder();
const x1 = c.getLocal("p1");
const y1 = c.i32_add(c.getLocal("p1"), c.i32_const(n8));
f.addCode(c.setLocal("z1", c.i32_add(c.getLocal("p1"), c.i32_const(n8*2))));
const z1 = c.getLocal("z1");
const x2 = c.getLocal("p2");
const y2 = c.i32_add(c.getLocal("p2"), c.i32_const(n8));
f.addCode(c.setLocal("z2", c.i32_add(c.getLocal("p2"), c.i32_const(n8*2))));
const z2 = c.getLocal("z2");
const x3 = c.getLocal("pr");
const y3 = c.i32_add(c.getLocal("pr"), c.i32_const(n8));
const z3 = c.i32_add(c.getLocal("pr"), c.i32_const(n8*2));
const Z1Z1 = c.i32_const(module.alloc(n8));
const Z2Z2 = c.i32_const(module.alloc(n8));
const U1 = c.i32_const(module.alloc(n8));
const U2 = c.i32_const(module.alloc(n8));
const Z1_cubed = c.i32_const(module.alloc(n8));
const Z2_cubed = c.i32_const(module.alloc(n8));
const S1 = c.i32_const(module.alloc(n8));
const S2 = c.i32_const(module.alloc(n8));
const H = c.i32_const(module.alloc(n8));
const S2_minus_S1 = c.i32_const(module.alloc(n8));
const I = c.i32_const(module.alloc(n8));
const J = c.i32_const(module.alloc(n8));
const r = c.i32_const(module.alloc(n8));
const r2 = c.i32_const(module.alloc(n8));
const V = c.i32_const(module.alloc(n8));
const V2 = c.i32_const(module.alloc(n8));
const S1_J2 = c.i32_const(module.alloc(n8));
f.addCode(
c.if(
c.call(prefix + "_isZero", c.getLocal("p1")),
[
...c.call(prefix + "_copy", c.getLocal("p2"), c.getLocal("pr")),
...c.ret([])
]
),
c.if(
c.call(prefix + "_isZero", c.getLocal("p2")),
[
...c.call(prefix + "_copy", c.getLocal("p1"), c.getLocal("pr")),
...c.ret([])
]
),
c.if(
c.call(prefixField + "_isOne", z1),
[
...c.call(prefix + "_addMixed", x2, x1, x3),
...c.ret([])
]
),
c.if(
c.call(prefixField + "_isOne", z2),
[
...c.call(prefix + "_addMixed", x1, x2, x3),
...c.ret([])
]
),
c.call(prefixField + "_square", z1, Z1Z1),
c.call(prefixField + "_square", z2, Z2Z2),
c.call(prefixField + "_mul", x1, Z2Z2, U1),
c.call(prefixField + "_mul", x2, Z1Z1, U2),
c.call(prefixField + "_mul", z1, Z1Z1, Z1_cubed),
c.call(prefixField + "_mul", z2, Z2Z2, Z2_cubed),
c.call(prefixField + "_mul", y1, Z2_cubed, S1),
c.call(prefixField + "_mul", y2, Z1_cubed, S2),
c.if(
c.call(prefixField + "_eq", U1, U2),
c.if(
c.call(prefixField + "_eq", S1, S2),
[
...c.call(prefix + "_double", c.getLocal("p1"), c.getLocal("pr")),
...c.ret([])
]
)
),
c.call(prefixField + "_sub", U2, U1, H),
c.call(prefixField + "_sub", S2, S1, S2_minus_S1),
c.call(prefixField + "_add", H, H, I),
c.call(prefixField + "_square", I, I),
c.call(prefixField + "_mul", H, I, J),
c.call(prefixField + "_add", S2_minus_S1, S2_minus_S1, r),
c.call(prefixField + "_mul", U1, I, V),
c.call(prefixField + "_square", r, r2),
c.call(prefixField + "_add", V, V, V2),
c.call(prefixField + "_sub", r2, J, x3),
c.call(prefixField + "_sub", x3, V2, x3),
c.call(prefixField + "_mul", S1, J, S1_J2),
c.call(prefixField + "_add", S1_J2, S1_J2, S1_J2),
c.call(prefixField + "_sub", V, x3, y3),
c.call(prefixField + "_mul", y3, r, y3),
c.call(prefixField + "_sub", y3, S1_J2, y3),
c.call(prefixField + "_add", z1, z2, z3),
c.call(prefixField + "_square", z3, z3),
c.call(prefixField + "_sub", z3, Z1Z1, z3),
c.call(prefixField + "_sub", z3, Z2Z2, z3),
c.call(prefixField + "_mul", z3, H, z3),
);
}
function buildAddMixed() {
const f = module.addFunction(prefix + "_addMixed");
f.addParam("p1", "i32");
f.addParam("p2", "i32");
f.addParam("pr", "i32");
f.addLocal("z1", "i32");
const c = f.getCodeBuilder();
const x1 = c.getLocal("p1");
const y1 = c.i32_add(c.getLocal("p1"), c.i32_const(n8));
f.addCode(c.setLocal("z1", c.i32_add(c.getLocal("p1"), c.i32_const(n8*2))));
const z1 = c.getLocal("z1");
const x2 = c.getLocal("p2");
const y2 = c.i32_add(c.getLocal("p2"), c.i32_const(n8));
const x3 = c.getLocal("pr");
const y3 = c.i32_add(c.getLocal("pr"), c.i32_const(n8));
const z3 = c.i32_add(c.getLocal("pr"), c.i32_const(n8*2));
const Z1Z1 = c.i32_const(module.alloc(n8));
const U2 = c.i32_const(module.alloc(n8));
const Z1_cubed = c.i32_const(module.alloc(n8));
const S2 = c.i32_const(module.alloc(n8));
const H = c.i32_const(module.alloc(n8));
const HH = c.i32_const(module.alloc(n8));
const S2_minus_y1 = c.i32_const(module.alloc(n8));
const I = c.i32_const(module.alloc(n8));
const J = c.i32_const(module.alloc(n8));
const r = c.i32_const(module.alloc(n8));
const r2 = c.i32_const(module.alloc(n8));
const V = c.i32_const(module.alloc(n8));
const V2 = c.i32_const(module.alloc(n8));
const y1_J2 = c.i32_const(module.alloc(n8));
f.addCode(
c.if(
c.call(prefix + "_isZero", c.getLocal("p1")),
[
...c.call(prefix + "_copyAffine", c.getLocal("p2"), c.getLocal("pr")),
...c.call(prefixField + "_one", c.i32_add(c.getLocal("pr") , c.i32_const(n8*2))),
...c.ret([])
]
),
c.if(
c.call(prefix + "_isZeroAffine", c.getLocal("p2")),
[
...c.call(prefix + "_copy", c.getLocal("p1"), c.getLocal("pr")),
...c.ret([])
]
),
c.if(
c.call(prefixField + "_isOne", z1),
[
...c.call(prefix + "_addAffine", x1, x2, x3),
...c.ret([])
]
),
c.call(prefixField + "_square", z1, Z1Z1),
c.call(prefixField + "_mul", x2, Z1Z1, U2),
c.call(prefixField + "_mul", z1, Z1Z1, Z1_cubed),
c.call(prefixField + "_mul", y2, Z1_cubed, S2),
c.if(
c.call(prefixField + "_eq", x1, U2),
c.if(
c.call(prefixField + "_eq", y1, S2),
[
...c.call(prefix + "_doubleAffine", c.getLocal("p2"), c.getLocal("pr")),
...c.ret([])
]
)
),
c.call(prefixField + "_sub", U2, x1, H),
c.call(prefixField + "_sub", S2, y1, S2_minus_y1),
c.call(prefixField + "_square", H, HH),
c.call(prefixField + "_add", HH , HH, I),
c.call(prefixField + "_add", I , I, I),
c.call(prefixField + "_mul", H, I, J),
c.call(prefixField + "_add", S2_minus_y1, S2_minus_y1, r),
c.call(prefixField + "_mul", x1, I, V),
c.call(prefixField + "_square", r, r2),
c.call(prefixField + "_add", V, V, V2),
c.call(prefixField + "_sub", r2, J, x3),
c.call(prefixField + "_sub", x3, V2, x3),
c.call(prefixField + "_mul", y1, J, y1_J2),
c.call(prefixField + "_add", y1_J2, y1_J2, y1_J2),
c.call(prefixField + "_sub", V, x3, y3),
c.call(prefixField + "_mul", y3, r, y3),
c.call(prefixField + "_sub", y3, y1_J2, y3),
c.call(prefixField + "_add", z1, H, z3),
c.call(prefixField + "_square", z3, z3),
c.call(prefixField + "_sub", z3, Z1Z1, z3),
c.call(prefixField + "_sub", z3, HH, z3),
);
}
function buildAddAffine() {
const f = module.addFunction(prefix + "_addAffine");
f.addParam("p1", "i32");
f.addParam("p2", "i32");
f.addParam("pr", "i32");
f.addLocal("z1", "i32");
const c = f.getCodeBuilder();
const x1 = c.getLocal("p1");
const y1 = c.i32_add(c.getLocal("p1"), c.i32_const(n8));
f.addCode(c.setLocal("z1", c.i32_add(c.getLocal("p1"), c.i32_const(n8*2))));
const x2 = c.getLocal("p2");
const y2 = c.i32_add(c.getLocal("p2"), c.i32_const(n8));
const x3 = c.getLocal("pr");
const y3 = c.i32_add(c.getLocal("pr"), c.i32_const(n8));
const z3 = c.i32_add(c.getLocal("pr"), c.i32_const(n8*2));
const H = c.i32_const(module.alloc(n8));
const HH = c.i32_const(module.alloc(n8));
const y2_minus_y1 = c.i32_const(module.alloc(n8));
const I = c.i32_const(module.alloc(n8));
const J = c.i32_const(module.alloc(n8));
const r = c.i32_const(module.alloc(n8));
const r2 = c.i32_const(module.alloc(n8));
const V = c.i32_const(module.alloc(n8));
const V2 = c.i32_const(module.alloc(n8));
const y1_J2 = c.i32_const(module.alloc(n8));
f.addCode(
c.if(
c.call(prefix + "_isZeroAffine", c.getLocal("p1")),
[
...c.call(prefix + "_copyAffine", c.getLocal("p2"), c.getLocal("pr")),
...c.call(prefixField + "_one", c.i32_add(c.getLocal("pr") , c.i32_const(n8*2))),
...c.ret([])
]
),
c.if(
c.call(prefix + "_isZeroAffine", c.getLocal("p2")),
[
...c.call(prefix + "_copyAffine", c.getLocal("p1"), c.getLocal("pr")),
...c.call(prefixField + "_one", c.i32_add(c.getLocal("pr") , c.i32_const(n8*2))),
...c.ret([])
]
),
c.if(
c.call(prefixField + "_eq", x1, x2),
c.if(
c.call(prefixField + "_eq", y1, y2),
[
...c.call(prefix + "_doubleAffine", c.getLocal("p2"), c.getLocal("pr")),
...c.ret([])
]
)
),
c.call(prefixField + "_sub", x2, x1, H),
c.call(prefixField + "_sub", y2, y1, y2_minus_y1),
c.call(prefixField + "_square", H, HH),
c.call(prefixField + "_add", HH , HH, I),
c.call(prefixField + "_add", I , I, I),
c.call(prefixField + "_mul", H, I, J),
c.call(prefixField + "_add", y2_minus_y1, y2_minus_y1, r),
c.call(prefixField + "_mul", x1, I, V),
c.call(prefixField + "_square", r, r2),
c.call(prefixField + "_add", V, V, V2),
c.call(prefixField + "_sub", r2, J, x3),
c.call(prefixField + "_sub", x3, V2, x3),
c.call(prefixField + "_mul", y1, J, y1_J2),
c.call(prefixField + "_add", y1_J2, y1_J2, y1_J2),
c.call(prefixField + "_sub", V, x3, y3),
c.call(prefixField + "_mul", y3, r, y3),
c.call(prefixField + "_sub", y3, y1_J2, y3),
c.call(prefixField + "_add", H, H, z3),
);
}
function buildNeg() {
const f = module.addFunction(prefix + "_neg");
f.addParam("p1", "i32");
f.addParam("pr", "i32");
const c = f.getCodeBuilder();
const x = c.getLocal("p1");
const y = c.i32_add(c.getLocal("p1"), c.i32_const(n8));
const z = c.i32_add(c.getLocal("p1"), c.i32_const(n8*2));
const x3 = c.getLocal("pr");
const y3 = c.i32_add(c.getLocal("pr"), c.i32_const(n8));
const z3 = c.i32_add(c.getLocal("pr"), c.i32_const(n8*2));
f.addCode(
c.call(prefixField + "_copy", x, x3),
c.call(prefixField + "_neg", y, y3),
c.call(prefixField + "_copy", z, z3)
);
}
function buildNegAffine() {
const f = module.addFunction(prefix + "_negAffine");
f.addParam("p1", "i32");
f.addParam("pr", "i32");
const c = f.getCodeBuilder();
const x = c.getLocal("p1");
const y = c.i32_add(c.getLocal("p1"), c.i32_const(n8));
const x3 = c.getLocal("pr");
const y3 = c.i32_add(c.getLocal("pr"), c.i32_const(n8));
f.addCode(
c.call(prefixField + "_copy", x, x3),
c.call(prefixField + "_neg", y, y3),
);
}
function buildSub() {
const f = module.addFunction(prefix + "_sub");
f.addParam("p1", "i32");
f.addParam("p2", "i32");
f.addParam("pr", "i32");
const c = f.getCodeBuilder();
const AUX = c.i32_const(module.alloc(n8*3));
f.addCode(
c.call(prefix + "_neg", c.getLocal("p2"), AUX),
c.call(prefix + "_add", c.getLocal("p1"), AUX, c.getLocal("pr")),
);
}
function buildSubMixed() {
const f = module.addFunction(prefix + "_subMixed");
f.addParam("p1", "i32");
f.addParam("p2", "i32");
f.addParam("pr", "i32");
const c = f.getCodeBuilder();
const AUX = c.i32_const(module.alloc(n8*3));
f.addCode(
c.call(prefix + "_negAffine", c.getLocal("p2"), AUX),
c.call(prefix + "_addMixed", c.getLocal("p1"), AUX, c.getLocal("pr")),
);
}
function buildSubAffine() {
const f = module.addFunction(prefix + "_subAffine");
f.addParam("p1", "i32");
f.addParam("p2", "i32");
f.addParam("pr", "i32");
const c = f.getCodeBuilder();
const AUX = c.i32_const(module.alloc(n8*3));
f.addCode(
c.call(prefix + "_negAffine", c.getLocal("p2"), AUX),
c.call(prefix + "_addAffine", c.getLocal("p1"), AUX, c.getLocal("pr")),
);
}
// This sets Z to One
function buildNormalize() {
const f = module.addFunction(prefix + "_normalize");
f.addParam("p1", "i32");
f.addParam("pr", "i32");
const c = f.getCodeBuilder();
const x = c.getLocal("p1");
const y = c.i32_add(c.getLocal("p1"), c.i32_const(n8));
const z = c.i32_add(c.getLocal("p1"), c.i32_const(n8*2));
const x3 = c.getLocal("pr");
const y3 = c.i32_add(c.getLocal("pr"), c.i32_const(n8));
const z3 = c.i32_add(c.getLocal("pr"), c.i32_const(n8*2));
const Z_inv = c.i32_const(module.alloc(n8));
const Z2_inv = c.i32_const(module.alloc(n8));
const Z3_inv = c.i32_const(module.alloc(n8));
f.addCode(
c.if(
c.call(prefix + "_isZero", c.getLocal("p1")),
c.call(prefix + "_zero", c.getLocal("pr")),
[
...c.call(prefixField + "_inverse", z, Z_inv),
...c.call(prefixField + "_square", Z_inv, Z2_inv),
...c.call(prefixField + "_mul", Z_inv, Z2_inv, Z3_inv),
...c.call(prefixField + "_mul", x, Z2_inv, x3),
...c.call(prefixField + "_mul", y, Z3_inv, y3),
...c.call(prefixField + "_one", z3),
]
)
);
}
// Does not set Z.
function buildToAffine() {
const f = module.addFunction(prefix + "_toAffine");
f.addParam("p1", "i32");
f.addParam("pr", "i32");
const c = f.getCodeBuilder();
const x = c.getLocal("p1");
const y = c.i32_add(c.getLocal("p1"), c.i32_const(n8));
const z = c.i32_add(c.getLocal("p1"), c.i32_const(n8*2));
const x3 = c.getLocal("pr");
const y3 = c.i32_add(c.getLocal("pr"), c.i32_const(n8));
const Z_inv = c.i32_const(module.alloc(n8));
const Z2_inv = c.i32_const(module.alloc(n8));
const Z3_inv = c.i32_const(module.alloc(n8));
f.addCode(
c.if(
c.call(prefix + "_isZero", c.getLocal("p1")),
[
...c.call(prefixField + "_zero", x3),
...c.call(prefixField + "_zero", y3),
],
[
...c.call(prefixField + "_inverse", z, Z_inv),
...c.call(prefixField + "_square", Z_inv, Z2_inv),
...c.call(prefixField + "_mul", Z_inv, Z2_inv, Z3_inv),
...c.call(prefixField + "_mul", x, Z2_inv, x3),
...c.call(prefixField + "_mul", y, Z3_inv, y3),
]
)
);
}
function buildToJacobian() {
const f = module.addFunction(prefix + "_toJacobian");
f.addParam("p1", "i32");
f.addParam("pr", "i32");
const c = f.getCodeBuilder();
const x = c.getLocal("p1");
const y = c.i32_add(c.getLocal("p1"), c.i32_const(n8));
const x3 = c.getLocal("pr");
const y3 = c.i32_add(c.getLocal("pr"), c.i32_const(n8));
const z3 = c.i32_add(c.getLocal("pr"), c.i32_const(n8*2));
f.addCode(
c.if(
c.call(prefix + "_isZeroAffine", c.getLocal("p1")),
c.call(prefix + "_zero", c.getLocal("pr")),
[
...c.call(prefixField + "_one", z3),
...c.call(prefixField + "_copy", y, y3),
...c.call(prefixField + "_copy", x, x3)
]
)
);
}
function buildBatchToAffine() {
const f = module.addFunction(prefix + "_batchToAffine");
f.addParam("pIn", "i32");
f.addParam("n", "i32");
f.addParam("pOut", "i32");
f.addLocal("pAux", "i32");
f.addLocal("itIn", "i32");
f.addLocal("itAux", "i32");
f.addLocal("itOut", "i32");
f.addLocal("i", "i32");
const c = f.getCodeBuilder();
const tmp = c.i32_const(module.alloc(n8));
f.addCode(
c.setLocal("pAux", c.i32_load( c.i32_const(0) )),
c.i32_store(
c.i32_const(0),
c.i32_add(
c.getLocal("pAux"),
c.i32_mul(c.getLocal("n"), c.i32_const(n8))
)
),
c.call(
prefixField + "_batchInverse",
c.i32_add(c.getLocal("pIn"), c.i32_const(n8*2)),
c.i32_const(n8*3),
c.getLocal("n"),
c.getLocal("pAux"),
c.i32_const(n8)
),
c.setLocal("itIn", c.getLocal("pIn")),
c.setLocal("itAux", c.getLocal("pAux")),
c.setLocal("itOut", c.getLocal("pOut")),
c.setLocal("i", c.i32_const(0)),
c.block(c.loop(
c.br_if(1, c.i32_eq ( c.getLocal("i"), c.getLocal("n") )),
c.if(
c.call(prefixField + "_isZero", c.getLocal("itAux")),
[
...c.call(prefixField + "_zero", c.getLocal("itOut")),
...c.call(prefixField + "_zero", c.i32_add(c.getLocal("itOut"), c.i32_const(n8)))
],
[
...c.call(
prefixField+"_mul",
c.getLocal("itAux"),
c.i32_add(c.getLocal("itIn"), c.i32_const(n8)),
tmp,
),
...c.call(
prefixField+"_square",
c.getLocal("itAux"),
c.getLocal("itAux")
),
...c.call(
prefixField+"_mul",
c.getLocal("itAux"),
c.getLocal("itIn"),
c.getLocal("itOut"),
),
...c.call(
prefixField+"_mul",
c.getLocal("itAux"),
tmp,
c.i32_add(c.getLocal("itOut"), c.i32_const(n8)),
),
]
),
c.setLocal("itIn", c.i32_add(c.getLocal("itIn"), c.i32_const(n8*3))),
c.setLocal("itOut", c.i32_add(c.getLocal("itOut"), c.i32_const(n8*2))),
c.setLocal("itAux", c.i32_add(c.getLocal("itAux"), c.i32_const(n8))),
c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))),
c.br(0)
)),
c.i32_store(
c.i32_const(0),
c.getLocal("pAux")
)
);
}
// This function is private and does not allow to OVERLAP buffers.
function buildReverseBytes() {
const f = module.addFunction(prefix + "__reverseBytes");
f.addParam("pIn", "i32");
f.addParam("n", "i32");
f.addParam("pOut", "i32");
f.addLocal("itOut", "i32");
f.addLocal("itIn", "i32");
const c = f.getCodeBuilder();
f.addCode(
c.setLocal(
"itOut",
c.i32_sub(
c.i32_add(
c.getLocal("pOut"),
c.getLocal("n")
),
c.i32_const(1)
)
),
c.setLocal(
"itIn",
c.getLocal("pIn")
),
c.block(c.loop(
c.br_if(1, c.i32_lt_s( c.getLocal("itOut"), c.getLocal("pOut") )),
c.i32_store8(
c.getLocal("itOut"),
c.i32_load8_u(c.getLocal("itIn")),
),
c.setLocal("itOut", c.i32_sub(c.getLocal("itOut"), c.i32_const(1))),
c.setLocal("itIn", c.i32_add(c.getLocal("itIn"), c.i32_const(1))),
c.br(0)
)),
);
}
function buildLEMtoC() {
const f = module.addFunction(prefix + "_LEMtoC");
f.addParam("pIn", "i32");
f.addParam("pOut", "i32");
const c = f.getCodeBuilder();
const tmp = c.i32_const(module.alloc(n8));
f.addCode(
c.if(
c.call(prefix + "_isZeroAffine", c.getLocal("pIn")),
[
...c.call(prefixField + "_zero", c.getLocal("pOut")),
...c.i32_store8(
c.getLocal("pOut"),
c.i32_const(0x40)
),
...c.ret([])
]
),
c.call(prefixField + "_fromMontgomery", c.getLocal("pIn"), tmp),
c.call(prefix + "__reverseBytes", tmp, c.i32_const(n8), c.getLocal("pOut")),
c.if(
c.i32_eq(
c.call(prefixField + "_sign", c.i32_add(c.getLocal("pIn"), c.i32_const(n8))),
c.i32_const(-1)
),
c.i32_store8(
c.getLocal("pOut"),
c.i32_or(
c.i32_load8_u(c.getLocal("pOut")),
c.i32_const(0x80)
)
)
),
);
}
function buildLEMtoU() {
const f = module.addFunction(prefix + "_LEMtoU");
f.addParam("pIn", "i32");
f.addParam("pOut", "i32");
const c = f.getCodeBuilder();
const pTmp = module.alloc(n8*2);
const tmp = c.i32_const(pTmp);
const tmpX = c.i32_const(pTmp);
const tmpY = c.i32_const(pTmp + n8);
f.addCode(
c.if(
c.call(prefix + "_isZeroAffine", c.getLocal("pIn")),
[
...c.call(prefix + "_zeroAffine", c.getLocal("pOut")),
...c.ret([])
]
),
c.call(prefix + "_fromMontgomeryAffine", c.getLocal("pIn"), tmp),
c.call(prefix + "__reverseBytes", tmpX, c.i32_const(n8), c.getLocal("pOut")),
c.call(prefix + "__reverseBytes", tmpY, c.i32_const(n8), c.i32_add(c.getLocal("pOut"), c.i32_const(n8))),
);
}
function buildUtoLEM() {
const f = module.addFunction(prefix + "_UtoLEM");
f.addParam("pIn", "i32");
f.addParam("pOut", "i32");
const c = f.getCodeBuilder();
const pTmp = module.alloc(n8*2);
const tmp = c.i32_const(pTmp);
const tmpX = c.i32_const(pTmp);
const tmpY = c.i32_const(pTmp + n8);
f.addCode(
c.if(
c.i32_and(c.i32_load8_u(c.getLocal("pIn")), c.i32_const(0x40)),
[
...c.call(prefix + "_zeroAffine", c.getLocal("pOut")),
...c.ret([])
]
),
c.call(prefix + "__reverseBytes", c.getLocal("pIn"), c.i32_const(n8), tmpX),
c.call(prefix + "__reverseBytes", c.i32_add(c.getLocal("pIn"), c.i32_const(n8)), c.i32_const(n8), tmpY),
c.call(prefix + "_toMontgomeryAffine", tmp, c.getLocal("pOut"))
);
}
function buildCtoLEM() {
const f = module.addFunction(prefix + "_CtoLEM");
f.addParam("pIn", "i32");
f.addParam("pOut", "i32");
f.addLocal("firstByte", "i32");
f.addLocal("greatest", "i32");
const c = f.getCodeBuilder();
const pTmp = module.alloc(n8*2);
const tmpX = c.i32_const(pTmp);
const tmpY = c.i32_const(pTmp + n8);
f.addCode(
c.setLocal("firstByte", c.i32_load8_u(c.getLocal("pIn"))),
c.if(
c.i32_and(
c.getLocal("firstByte"),
c.i32_const(0x40)
),
[
...c.call(prefix + "_zeroAffine", c.getLocal("pOut")),
...c.ret([])
]
),
c.setLocal(
"greatest",
c.i32_and(
c.getLocal("firstByte"),
c.i32_const(0x80)
)
),
c.call(prefixField + "_copy", c.getLocal("pIn"), tmpY),
c.i32_store8(tmpY, c.i32_and(c.getLocal("firstByte"), c.i32_const(0x3F))),
c.call(prefix + "__reverseBytes", tmpY, c.i32_const(n8), tmpX),
c.call(prefixField + "_toMontgomery", tmpX, c.getLocal("pOut")),
c.call(prefixField + "_square", c.getLocal("pOut"), tmpY),
c.call(prefixField + "_mul", c.getLocal("pOut"), tmpY, tmpY),
c.call(prefixField + "_add", tmpY, c.i32_const(pB), tmpY),
c.call(prefixField + "_sqrt", tmpY, tmpY),
c.call(prefixField + "_neg", tmpY, tmpX),
c.if(
c.i32_eq(
c.call(prefixField + "_sign", tmpY),
c.i32_const(-1)
),
c.if(
c.getLocal("greatest"),
c.call(prefixField + "_copy", tmpY, c.i32_add(c.getLocal("pOut"), c.i32_const(n8))),
c.call(prefixField + "_neg", tmpY, c.i32_add(c.getLocal("pOut"), c.i32_const(n8)))
),
c.if(
c.getLocal("greatest"),
c.call(prefixField + "_neg", tmpY, c.i32_add(c.getLocal("pOut"), c.i32_const(n8))),
c.call(prefixField + "_copy", tmpY, c.i32_add(c.getLocal("pOut"), c.i32_const(n8)))
),
)
);
}
function buildInCurveAffine() {
const f = module.addFunction(prefix + "_inCurveAffine");
f.addParam("pIn", "i32");
f.setReturnType("i32");
const c = f.getCodeBuilder();
const x = c.getLocal("pIn");
const y = c.i32_add(c.getLocal("pIn"), c.i32_const(n8));
const y2 = c.i32_const(module.alloc(n8));
const x3b = c.i32_const(module.alloc(n8));
f.addCode(
c.call(prefixField + "_square", y, y2),
c.call(prefixField + "_square", x, x3b),
c.call(prefixField + "_mul", x, x3b, x3b),
c.call(prefixField + "_add", x3b, c.i32_const(pB), x3b),
c.ret(
c.call(prefixField + "_eq", y2, x3b)
)
);
}
function buildInCurve() {
const f = module.addFunction(prefix + "_inCurve");
f.addParam("pIn", "i32");
f.setReturnType("i32");
const c = f.getCodeBuilder();
const aux = c.i32_const(module.alloc(n8*2));
f.addCode(
c.call(prefix + "_toAffine", c.getLocal("pIn"), aux),
c.ret(
c.call(prefix + "_inCurveAffine", aux),
)
);
}
buildIsZeroAffine();
buildIsZero();
buildZeroAffine();
buildZero();
buildCopyAffine();
buildCopy();
buildToJacobian();
buildEqAffine();
buildEqMixed();
buildEq();
buildDoubleAffine();
buildDouble();
buildAddAffine();
buildAddMixed();
buildAdd();
buildNegAffine();
buildNeg();
buildSubAffine();
buildSubMixed();
buildSub();
buildFromMontgomeryAffine();
buildFromMontgomery();
buildToMontgomeryAffine();
buildToMontgomery();
buildToAffine();
buildInCurveAffine();
buildInCurve();
buildBatchToAffine();
buildNormalize();
buildReverseBytes();
buildLEMtoU();
buildLEMtoC();
buildUtoLEM();
buildCtoLEM();
buildBatchConvertion(module, prefix + "_batchLEMtoU", prefix + "_LEMtoU", n8*2, n8*2);
buildBatchConvertion(module, prefix + "_batchLEMtoC", prefix + "_LEMtoC", n8*2, n8);
buildBatchConvertion(module, prefix + "_batchUtoLEM", prefix + "_UtoLEM", n8*2, n8*2);
buildBatchConvertion(module, prefix + "_batchCtoLEM", prefix + "_CtoLEM", n8, n8*2, true);
buildBatchConvertion(module, prefix + "_batchToJacobian", prefix + "_toJacobian", n8*2, n8*3, true);
buildMultiexp$1(module, prefix, prefix + "_multiexp", prefix + "_add", n8*3);
buildMultiexp$1(module, prefix, prefix + "_multiexpAffine", prefix + "_addMixed", n8*2);
/*
buildTimesScalar(
module,
prefix + "_timesScalarOld",
n8*3,
prefix + "_add",
prefix + "_double",
prefix + "_copy",
prefix + "_zero",
);
*/
buildTimesScalarNAF(
module,
prefix + "_timesScalar",
n8*3,
prefix + "_add",
prefix + "_double",
prefix + "_sub",
prefix + "_copy",
prefix + "_zero"
);
buildTimesScalarNAF(
module,
prefix + "_timesScalarAffine",
n8*2,
prefix + "_addMixed",
prefix + "_double",
prefix + "_subMixed",
prefix + "_copyAffine",
prefix + "_zero"
);
module.exportFunction(prefix + "_isZero");
module.exportFunction(prefix + "_isZeroAffine");
module.exportFunction(prefix + "_eq");
module.exportFunction(prefix + "_eqMixed");
module.exportFunction(prefix + "_eqAffine");
module.exportFunction(prefix + "_copy");
module.exportFunction(prefix + "_copyAffine");
module.exportFunction(prefix + "_zero");
module.exportFunction(prefix + "_zeroAffine");
module.exportFunction(prefix + "_double");
module.exportFunction(prefix + "_doubleAffine");
module.exportFunction(prefix + "_add");
module.exportFunction(prefix + "_addMixed");
module.exportFunction(prefix + "_addAffine");
module.exportFunction(prefix + "_neg");
module.exportFunction(prefix + "_negAffine");
module.exportFunction(prefix + "_sub");
module.exportFunction(prefix + "_subMixed");
module.exportFunction(prefix + "_subAffine");
module.exportFunction(prefix + "_fromMontgomery");
module.exportFunction(prefix + "_fromMontgomeryAffine");
module.exportFunction(prefix + "_toMontgomery");
module.exportFunction(prefix + "_toMontgomeryAffine");
module.exportFunction(prefix + "_timesScalar");
module.exportFunction(prefix + "_timesScalarAffine");
module.exportFunction(prefix + "_normalize");
// Convertion functions
module.exportFunction(prefix + "_LEMtoU");
module.exportFunction(prefix + "_LEMtoC");
module.exportFunction(prefix + "_UtoLEM");
module.exportFunction(prefix + "_CtoLEM");
module.exportFunction(prefix + "_batchLEMtoU");
module.exportFunction(prefix + "_batchLEMtoC");
module.exportFunction(prefix + "_batchUtoLEM");
module.exportFunction(prefix + "_batchCtoLEM");
module.exportFunction(prefix + "_toAffine");
module.exportFunction(prefix + "_toJacobian");
module.exportFunction(prefix + "_batchToAffine");
module.exportFunction(prefix + "_batchToJacobian");
module.exportFunction(prefix + "_inCurve");
module.exportFunction(prefix + "_inCurveAffine");
/*
buildG1MulScalar(module, zq);
module.exportFunction("g1MulScalar");
*/
return prefix;
};
/*
Copyright 2019 0KIMS association.
This file is part of wasmsnark (Web Assembly zkSnark Prover).
wasmsnark 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.
wasmsnark 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 wasmsnark. If not, see <https://www.gnu.org/licenses/>.
*/
const { isOdd: isOdd$2, modInv: modInv$1, modPow } = bigint;
const utils$3 = utils$6;
var build_fft = function buildFFT(module, prefix, gPrefix, fPrefix, opGtimesF) {
const n64f = module.modules[fPrefix].n64;
const n8f = n64f*8;
const n64g = module.modules[gPrefix].n64;
const n8g = n64g*8;
const q = module.modules[fPrefix].q;
let rem = q - 1n;
let maxBits = 0;
while (!isOdd$2(rem)) {
maxBits ++;
rem = rem >> 1n;
}
let nr = 2n;
while ( modPow(nr, q >> 1n, q) === 1n ) nr = nr + 1n;
// console.log(nr);
const w = new Array(maxBits+1);
w[maxBits] = modPow(nr, rem, q);
let n=maxBits-1;
while (n>=0) {
w[n] = modPow(w[n+1], 2n, q);
n--;
}
const bytes = [];
const R = (1n << BigInt(n8f*8)) % q;
for (let i=0; i<w.length; i++) {
const m = w[i] * R % q;
bytes.push(...utils$3.bigInt2BytesLE(m, n8f));
}
const ROOTs = module.alloc(bytes);
const i2 = new Array(maxBits+1);
i2[0] = 1n;
for (let i=1; i<=maxBits; i++) {
i2[i] = i2[i-1] * 2n;
}
const bytesi2 =[];
for (let i=0; i<=maxBits; i++) {
const m = modInv$1(i2[i], q) * R % q;
bytesi2.push(...utils$3.bigInt2BytesLE(m, n8f));
}
const INV2 = module.alloc(bytesi2);
const shift = modPow(nr, 2n, q);
const bytesShiftToSmallM =[];
const bytesSConst =[];
for (let i=0; i<=maxBits; i++) {
const shiftToSmallM = modPow(shift, 2n ** BigInt(i), q);
const sConst = modInv$1(q + 1n - shiftToSmallM, q);
bytesShiftToSmallM.push(...utils$3.bigInt2BytesLE(shiftToSmallM * R % q, n8f));
bytesSConst.push(...utils$3.bigInt2BytesLE(sConst * R % q, n8f));
}
const SHIFT_TO_M = module.alloc( bytesShiftToSmallM );
const SCONST = module.alloc( bytesSConst );
function rev(x) {
let r=0;
for (let i=0; i<8; i++) {
if (x & (1 << i)) {
r = r | (0x80 >> i);
}
}
return r;
}
const rtable = Array(256);
for (let i=0; i<256; i++) {
rtable[i] = rev(i);
}
const REVTABLE = module.alloc(rtable);
function buildLog2() {
const f = module.addFunction(prefix+"__log2");
f.addParam("n", "i32");
f.setReturnType("i32");
f.addLocal("bits", "i32");
f.addLocal("aux", "i32");
const c = f.getCodeBuilder();
f.addCode(
c.setLocal(
"aux",
c.i32_shr_u(
c.getLocal("n"),
c.i32_const(1)
)
)
);
f.addCode(c.setLocal("bits", c.i32_const(0)));
f.addCode(c.block(c.loop(
c.br_if(
1,
c.i32_eqz(c.getLocal("aux"))
),
c.setLocal(
"aux",
c.i32_shr_u(
c.getLocal("aux"),
c.i32_const(1)
)
),
c.setLocal(
"bits",
c.i32_add(
c.getLocal("bits"),
c.i32_const(1)
)
),
c.br(0)
)));
f.addCode(c.if(
c.i32_ne(
c.getLocal("n"),
c.i32_shl(
c.i32_const(1),
c.getLocal("bits")
)
),
c.unreachable()
));
f.addCode(c.if(
c.i32_gt_u(
c.getLocal("bits"),
c.i32_const(maxBits)
),
c.unreachable()
));
f.addCode(c.getLocal("bits"));
}
function buildFFT() {
const f = module.addFunction(prefix+"_fft");
f.addParam("px", "i32");
f.addParam("n", "i32");
f.addLocal("bits", "i32");
const c = f.getCodeBuilder();
const One = c.i32_const(module.alloc(n8f));
f.addCode(
c.setLocal(
"bits",
c.call(
prefix + "__log2",
c.getLocal("n")
)
),
c.call(fPrefix + "_one", One),
c.call(
prefix+"_rawfft",
c.getLocal("px"),
c.getLocal("bits"),
c.i32_const(0),
One
)
);
}
function buildIFFT() {
const f = module.addFunction(prefix+"_ifft");
f.addParam("px", "i32");
f.addParam("n", "i32");
f.addLocal("bits", "i32");
f.addLocal("pInv2", "i32");
const c = f.getCodeBuilder();
f.addCode(
c.setLocal(
"bits",
c.call(
prefix + "__log2",
c.getLocal("n")
)
),
c.setLocal(
"pInv2",
c.i32_add(
c.i32_const(INV2),
c.i32_mul(
c.getLocal("bits"),
c.i32_const(n8f)
)
)
),
c.call(
prefix+"_rawfft",
c.getLocal("px"),
c.getLocal("bits"),
c.i32_const(1),
c.getLocal("pInv2")
),
);
}
function buildRawFFT() {
const f = module.addFunction(prefix+"_rawfft");
f.addParam("px", "i32");
f.addParam("bits", "i32"); // 2 power
f.addParam("reverse", "i32");
f.addParam("mulFactor", "i32");
f.addLocal("s", "i32");
f.addLocal("k", "i32");
f.addLocal("j", "i32");
f.addLocal("m", "i32");
f.addLocal("mdiv2", "i32");
f.addLocal("n", "i32");
f.addLocal("pwm", "i32");
f.addLocal("idx1", "i32");
f.addLocal("idx2", "i32");
const c = f.getCodeBuilder();
const W = c.i32_const(module.alloc(n8f));
const T = c.i32_const(module.alloc(n8g));
const U = c.i32_const(module.alloc(n8g));
f.addCode(
c.call(prefix + "__reversePermutation", c.getLocal("px"), c.getLocal("bits")),
c.setLocal("n", c.i32_shl(c.i32_const(1), c.getLocal("bits"))),
c.setLocal("s", c.i32_const(1)),
c.block(c.loop(
c.br_if(
1,
c.i32_gt_u(
c.getLocal("s"),
c.getLocal("bits")
)
),
c.setLocal("m", c.i32_shl(c.i32_const(1), c.getLocal("s"))),
c.setLocal("pwm",
c.i32_add(
c.i32_const(ROOTs),
c.i32_mul(
c.getLocal("s"),
c.i32_const(n8f)
)
)
),
c.setLocal("k", c.i32_const(0)),
c.block(c.loop(
c.br_if(
1,
c.i32_ge_u(
c.getLocal("k"),
c.getLocal("n")
)
),
c.call(fPrefix + "_one", W),
c.setLocal("mdiv2", c.i32_shr_u(c.getLocal("m"), c.i32_const(1)) ),
c.setLocal("j", c.i32_const(0)),
c.block(c.loop(
c.br_if(
1,
c.i32_ge_u(
c.getLocal("j"),
c.getLocal("mdiv2")
)
),
c.setLocal(
"idx1",
c.i32_add(
c.getLocal("px"),
c.i32_mul(
c.i32_add(
c.getLocal("k"),
c.getLocal("j")
),
c.i32_const(n8g)
)
)
),
c.setLocal(
"idx2",
c.i32_add(
c.getLocal("idx1"),
c.i32_mul(
c.getLocal("mdiv2"),
c.i32_const(n8g)
)
)
),
c.call(
opGtimesF,
c.getLocal("idx2"),
W,
T
),
c.call(
gPrefix + "_copy",
c.getLocal("idx1"),
U
),
c.call(
gPrefix + "_add",
U,
T,
c.getLocal("idx1"),
),
c.call(
gPrefix + "_sub",
U,
T,
c.getLocal("idx2"),
),
c.call(
fPrefix + "_mul",
W,
c.getLocal("pwm"),
W,
),
c.setLocal("j", c.i32_add(c.getLocal("j"), c.i32_const(1))),
c.br(0)
)),
c.setLocal("k", c.i32_add(c.getLocal("k"), c.getLocal("m"))),
c.br(0)
)),
c.setLocal("s", c.i32_add(c.getLocal("s"), c.i32_const(1))),
c.br(0)
)),
c.call(
prefix + "__fftFinal",
c.getLocal("px"),
c.getLocal("bits"),
c.getLocal("reverse"),
c.getLocal("mulFactor")
)
);
}
function buildFinalInverse() {
const f = module.addFunction(prefix+"__fftFinal");
f.addParam("px", "i32");
f.addParam("bits", "i32");
f.addParam("reverse", "i32");
f.addParam("mulFactor", "i32");
f.addLocal("n", "i32");
f.addLocal("ndiv2", "i32");
f.addLocal("pInv2", "i32");
f.addLocal("i", "i32");
f.addLocal("mask", "i32");
f.addLocal("idx1", "i32");
f.addLocal("idx2", "i32");
const c = f.getCodeBuilder();
const T = c.i32_const(module.alloc(n8g));
f.addCode(
c.if(
c.i32_and(
c.i32_eqz(c.getLocal("reverse")),
c.call(fPrefix + "_isOne", c.getLocal("mulFactor"))
),
c.ret([])
),
c.setLocal("n", c.i32_shl( c.i32_const(1), c.getLocal("bits"))),
c.setLocal("mask", c.i32_sub( c.getLocal("n") , c.i32_const(1))),
c.setLocal("i", c.i32_const(1)),
c.setLocal(
"ndiv2",
c.i32_shr_u(
c.getLocal("n"),
c.i32_const(1)
)
),
c.block(c.loop(
c.br_if(
1,
c.i32_ge_u(
c.getLocal("i"),
c.getLocal("ndiv2")
)
),
c.setLocal("idx1",
c.i32_add(
c.getLocal("px"),
c.i32_mul(
c.getLocal("i"),
c.i32_const(n8g)
)
)
),
c.setLocal("idx2",
c.i32_add(
c.getLocal("px"),
c.i32_mul(
c.i32_sub(
c.getLocal("n"),
c.getLocal("i")
),
c.i32_const(n8g)
)
)
),
c.if(
c.getLocal("reverse"),
c.if(
c.call(fPrefix + "_isOne", c.getLocal("mulFactor")),
[
...c.call(gPrefix + "_copy", c.getLocal("idx1"), T),
...c.call(gPrefix + "_copy", c.getLocal("idx2") , c.getLocal("idx1") ),
...c.call(gPrefix + "_copy", T , c.getLocal("idx2")),
],
[
...c.call(gPrefix + "_copy", c.getLocal("idx1"), T),
...c.call(opGtimesF , c.getLocal("idx2") , c.getLocal("mulFactor"), c.getLocal("idx1") ),
...c.call(opGtimesF , T , c.getLocal("mulFactor"), c.getLocal("idx2")),
]
),
c.if(
c.call(fPrefix + "_isOne", c.getLocal("mulFactor")),
[
// Do nothing (It should not be here)
],
[
...c.call(opGtimesF , c.getLocal("idx1") , c.getLocal("mulFactor"), c.getLocal("idx1") ),
...c.call(opGtimesF , c.getLocal("idx2") , c.getLocal("mulFactor"), c.getLocal("idx2")),
]
)
),
c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))),
c.br(0)
)),
c.if(
c.call(fPrefix + "_isOne", c.getLocal("mulFactor")),
[
// Do nothing (It should not be here)
],
[
...c.call(opGtimesF, c.getLocal("px") , c.getLocal("mulFactor"), c.getLocal("px")),
...c.setLocal("idx2",
c.i32_add(
c.getLocal("px"),
c.i32_mul(
c.getLocal("ndiv2"),
c.i32_const(n8g)
)
)
),
...c.call(opGtimesF, c.getLocal("idx2"),c.getLocal("mulFactor"), c.getLocal("idx2"))
]
)
);
}
function buildReversePermutation() {
const f = module.addFunction(prefix+"__reversePermutation");
f.addParam("px", "i32");
f.addParam("bits", "i32");
f.addLocal("n", "i32");
f.addLocal("i", "i32");
f.addLocal("ri", "i32");
f.addLocal("idx1", "i32");
f.addLocal("idx2", "i32");
const c = f.getCodeBuilder();
const T = c.i32_const(module.alloc(n8g));
f.addCode(
c.setLocal("n", c.i32_shl( c.i32_const(1), c.getLocal("bits"))),
c.setLocal("i", c.i32_const(0)),
c.block(c.loop(
c.br_if(
1,
c.i32_eq(
c.getLocal("i"),
c.getLocal("n")
)
),
c.setLocal("idx1",
c.i32_add(
c.getLocal("px"),
c.i32_mul(
c.getLocal("i"),
c.i32_const(n8g)
)
)
),
c.setLocal("ri", c.call(prefix + "__rev", c.getLocal("i"), c.getLocal("bits"))),
c.setLocal("idx2",
c.i32_add(
c.getLocal("px"),
c.i32_mul(
c.getLocal("ri"),
c.i32_const(n8g)
)
)
),
c.if(
c.i32_lt_u(
c.getLocal("i"),
c.getLocal("ri")
),
[
...c.call(gPrefix + "_copy", c.getLocal("idx1"), T),
...c.call(gPrefix + "_copy", c.getLocal("idx2") , c.getLocal("idx1")),
...c.call(gPrefix + "_copy", T , c.getLocal("idx2"))
]
),
c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))),
c.br(0)
))
);
}
function buildRev() {
const f = module.addFunction(prefix+"__rev");
f.addParam("x", "i32");
f.addParam("bits", "i32");
f.setReturnType("i32");
const c = f.getCodeBuilder();
f.addCode(
c.i32_rotl(
c.i32_add(
c.i32_add(
c.i32_shl(
c.i32_load8_u(
c.i32_and(
c.getLocal("x"),
c.i32_const(0xFF)
),
REVTABLE,
0
),
c.i32_const(24)
),
c.i32_shl(
c.i32_load8_u(
c.i32_and(
c.i32_shr_u(
c.getLocal("x"),
c.i32_const(8)
),
c.i32_const(0xFF)
),
REVTABLE,
0
),
c.i32_const(16)
),
),
c.i32_add(
c.i32_shl(
c.i32_load8_u(
c.i32_and(
c.i32_shr_u(
c.getLocal("x"),
c.i32_const(16)
),
c.i32_const(0xFF)
),
REVTABLE,
0
),
c.i32_const(8)
),
c.i32_load8_u(
c.i32_and(
c.i32_shr_u(
c.getLocal("x"),
c.i32_const(24)
),
c.i32_const(0xFF)
),
REVTABLE,
0
),
)
),
c.getLocal("bits")
)
);
}
function buildFFTJoin() {
const f = module.addFunction(prefix+"_fftJoin");
f.addParam("pBuff1", "i32");
f.addParam("pBuff2", "i32");
f.addParam("n", "i32");
f.addParam("first", "i32");
f.addParam("inc", "i32");
f.addLocal("idx1", "i32");
f.addLocal("idx2", "i32");
f.addLocal("i", "i32");
const c = f.getCodeBuilder();
const W = c.i32_const(module.alloc(n8f));
const T = c.i32_const(module.alloc(n8g));
const U = c.i32_const(module.alloc(n8g));
f.addCode(
c.call( fPrefix + "_copy", c.getLocal("first"), W),
c.setLocal("i", c.i32_const(0)),
c.block(c.loop(
c.br_if(
1,
c.i32_eq(
c.getLocal("i"),
c.getLocal("n")
)
),
c.setLocal(
"idx1",
c.i32_add(
c.getLocal("pBuff1"),
c.i32_mul(
c.getLocal("i"),
c.i32_const(n8g)
)
)
),
c.setLocal(
"idx2",
c.i32_add(
c.getLocal("pBuff2"),
c.i32_mul(
c.getLocal("i"),
c.i32_const(n8g)
)
)
),
c.call(
opGtimesF,
c.getLocal("idx2"),
W,
T
),
c.call(
gPrefix + "_copy",
c.getLocal("idx1"),
U
),
c.call(
gPrefix + "_add",
U,
T,
c.getLocal("idx1"),
),
c.call(
gPrefix + "_sub",
U,
T,
c.getLocal("idx2"),
),
c.call(
fPrefix + "_mul",
W,
c.getLocal("inc"),
W,
),
c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))),
c.br(0)
))
);
}
function buildFFTJoinExt() {
const f = module.addFunction(prefix+"_fftJoinExt");
f.addParam("pBuff1", "i32");
f.addParam("pBuff2", "i32");
f.addParam("n", "i32");
f.addParam("first", "i32");
f.addParam("inc", "i32");
f.addParam("totalBits", "i32");
f.addLocal("idx1", "i32");
f.addLocal("idx2", "i32");
f.addLocal("i", "i32");
f.addLocal("pShiftToM", "i32");
const c = f.getCodeBuilder();
const W = c.i32_const(module.alloc(n8f));
const U = c.i32_const(module.alloc(n8g));
f.addCode(
c.setLocal("pShiftToM",
c.i32_add(
c.i32_const(SHIFT_TO_M),
c.i32_mul(
c.getLocal("totalBits"),
c.i32_const(n8f)
)
)
),
c.call( fPrefix + "_copy", c.getLocal("first"), W),
c.setLocal("i", c.i32_const(0)),
c.block(c.loop(
c.br_if(
1,
c.i32_eq(
c.getLocal("i"),
c.getLocal("n")
)
),
c.setLocal(
"idx1",
c.i32_add(
c.getLocal("pBuff1"),
c.i32_mul(
c.getLocal("i"),
c.i32_const(n8g)
)
)
),
c.setLocal(
"idx2",
c.i32_add(
c.getLocal("pBuff2"),
c.i32_mul(
c.getLocal("i"),
c.i32_const(n8g)
)
)
),
c.call(
gPrefix + "_add",
c.getLocal("idx1"),
c.getLocal("idx2"),
U
),
c.call(
opGtimesF,
c.getLocal("idx2"),
c.getLocal("pShiftToM"),
c.getLocal("idx2")
),
c.call(
gPrefix + "_add",
c.getLocal("idx1"),
c.getLocal("idx2"),
c.getLocal("idx2")
),
c.call(
opGtimesF,
c.getLocal("idx2"),
W,
c.getLocal("idx2"),
),
c.call(
gPrefix + "_copy",
U,
c.getLocal("idx1")
),
c.call(
fPrefix + "_mul",
W,
c.getLocal("inc"),
W
),
c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))),
c.br(0)
))
);
}
function buildFFTJoinExtInv() {
const f = module.addFunction(prefix+"_fftJoinExtInv");
f.addParam("pBuff1", "i32");
f.addParam("pBuff2", "i32");
f.addParam("n", "i32");
f.addParam("first", "i32");
f.addParam("inc", "i32");
f.addParam("totalBits", "i32");
f.addLocal("idx1", "i32");
f.addLocal("idx2", "i32");
f.addLocal("i", "i32");
f.addLocal("pShiftToM", "i32");
f.addLocal("pSConst", "i32");
const c = f.getCodeBuilder();
const W = c.i32_const(module.alloc(n8f));
const U = c.i32_const(module.alloc(n8g));
f.addCode(
c.setLocal("pShiftToM",
c.i32_add(
c.i32_const(SHIFT_TO_M),
c.i32_mul(
c.getLocal("totalBits"),
c.i32_const(n8f)
)
)
),
c.setLocal("pSConst",
c.i32_add(
c.i32_const(SCONST),
c.i32_mul(
c.getLocal("totalBits"),
c.i32_const(n8f)
)
)
),
c.call( fPrefix + "_copy", c.getLocal("first"), W),
c.setLocal("i", c.i32_const(0)),
c.block(c.loop(
c.br_if(
1,
c.i32_eq(
c.getLocal("i"),
c.getLocal("n")
)
),
c.setLocal(
"idx1",
c.i32_add(
c.getLocal("pBuff1"),
c.i32_mul(
c.getLocal("i"),
c.i32_const(n8g)
)
)
),
c.setLocal(
"idx2",
c.i32_add(
c.getLocal("pBuff2"),
c.i32_mul(
c.getLocal("i"),
c.i32_const(n8g)
)
)
),
c.call(
opGtimesF,
c.getLocal("idx2"),
W,
U
),
c.call(
gPrefix + "_sub",
c.getLocal("idx1"),
U,
c.getLocal("idx2"),
),
c.call(
opGtimesF,
c.getLocal("idx2"),
c.getLocal("pSConst"),
c.getLocal("idx2")
),
c.call(
opGtimesF,
c.getLocal("idx1"),
c.getLocal("pShiftToM"),
c.getLocal("idx1")
),
c.call(
gPrefix + "_sub",
U,
c.getLocal("idx1"),
c.getLocal("idx1")
),
c.call(
opGtimesF,
c.getLocal("idx1"),
c.getLocal("pSConst"),
c.getLocal("idx1")
),
c.call(
fPrefix + "_mul",
W,
c.getLocal("inc"),
W
),
c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))),
c.br(0)
))
);
}
function buildPrepareLagrangeEvaluation() {
const f = module.addFunction(prefix+"_prepareLagrangeEvaluation");
f.addParam("pBuff1", "i32");
f.addParam("pBuff2", "i32");
f.addParam("n", "i32");
f.addParam("first", "i32");
f.addParam("inc", "i32");
f.addParam("totalBits", "i32");
f.addLocal("idx1", "i32");
f.addLocal("idx2", "i32");
f.addLocal("i", "i32");
f.addLocal("pShiftToM", "i32");
f.addLocal("pSConst", "i32");
const c = f.getCodeBuilder();
const W = c.i32_const(module.alloc(n8f));
const U = c.i32_const(module.alloc(n8g));
f.addCode(
c.setLocal("pShiftToM",
c.i32_add(
c.i32_const(SHIFT_TO_M),
c.i32_mul(
c.getLocal("totalBits"),
c.i32_const(n8f)
)
)
),
c.setLocal("pSConst",
c.i32_add(
c.i32_const(SCONST),
c.i32_mul(
c.getLocal("totalBits"),
c.i32_const(n8f)
)
)
),
c.call( fPrefix + "_copy", c.getLocal("first"), W),
c.setLocal("i", c.i32_const(0)),
c.block(c.loop(
c.br_if(
1,
c.i32_eq(
c.getLocal("i"),
c.getLocal("n")
)
),
c.setLocal(
"idx1",
c.i32_add(
c.getLocal("pBuff1"),
c.i32_mul(
c.getLocal("i"),
c.i32_const(n8g)
)
)
),
c.setLocal(
"idx2",
c.i32_add(
c.getLocal("pBuff2"),
c.i32_mul(
c.getLocal("i"),
c.i32_const(n8g)
)
)
),
c.call(
opGtimesF,
c.getLocal("idx1"),
c.getLocal("pShiftToM"),
U
),
c.call(
gPrefix + "_sub",
c.getLocal("idx2"),
U,
U
),
c.call(
gPrefix + "_sub",
c.getLocal("idx1"),
c.getLocal("idx2"),
c.getLocal("idx2"),
),
c.call(
opGtimesF,
U,
c.getLocal("pSConst"),
c.getLocal("idx1"),
),
c.call(
opGtimesF,
c.getLocal("idx2"),
W,
c.getLocal("idx2"),
),
c.call(
fPrefix + "_mul",
W,
c.getLocal("inc"),
W
),
c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))),
c.br(0)
))
);
}
function buildFFTMix() {
const f = module.addFunction(prefix+"_fftMix");
f.addParam("pBuff", "i32");
f.addParam("n", "i32");
f.addParam("exp", "i32");
f.addLocal("nGroups", "i32");
f.addLocal("nPerGroup", "i32");
f.addLocal("nPerGroupDiv2", "i32");
f.addLocal("pairOffset", "i32");
f.addLocal("idx1", "i32");
f.addLocal("idx2", "i32");
f.addLocal("i", "i32");
f.addLocal("j", "i32");
f.addLocal("pwm", "i32");
const c = f.getCodeBuilder();
const W = c.i32_const(module.alloc(n8f));
const T = c.i32_const(module.alloc(n8g));
const U = c.i32_const(module.alloc(n8g));
f.addCode(
c.setLocal("nPerGroup", c.i32_shl(c.i32_const(1), c.getLocal("exp"))),
c.setLocal("nPerGroupDiv2", c.i32_shr_u(c.getLocal("nPerGroup"), c.i32_const(1))),
c.setLocal("nGroups", c.i32_shr_u(c.getLocal("n"), c.getLocal("exp"))),
c.setLocal("pairOffset", c.i32_mul(c.getLocal("nPerGroupDiv2"), c.i32_const(n8g))),
c.setLocal("pwm",
c.i32_add(
c.i32_const(ROOTs),
c.i32_mul(
c.getLocal("exp"),
c.i32_const(n8f)
)
)
),
c.setLocal("i", c.i32_const(0)),
c.block(c.loop(
c.br_if(
1,
c.i32_eq(
c.getLocal("i"),
c.getLocal("nGroups")
)
),
c.call( fPrefix + "_one", W),
c.setLocal("j", c.i32_const(0)),
c.block(c.loop(
c.br_if(
1,
c.i32_eq(
c.getLocal("j"),
c.getLocal("nPerGroupDiv2")
)
),
c.setLocal(
"idx1",
c.i32_add(
c.getLocal("pBuff"),
c.i32_mul(
c.i32_add(
c.i32_mul(
c.getLocal("i"),
c.getLocal("nPerGroup")
),
c.getLocal("j")
),
c.i32_const(n8g)
)
)
),
c.setLocal(
"idx2",
c.i32_add(
c.getLocal("idx1"),
c.getLocal("pairOffset")
)
),
c.call(
opGtimesF,
c.getLocal("idx2"),
W,
T
),
c.call(
gPrefix + "_copy",
c.getLocal("idx1"),
U
),
c.call(
gPrefix + "_add",
U,
T,
c.getLocal("idx1"),
),
c.call(
gPrefix + "_sub",
U,
T,
c.getLocal("idx2"),
),
c.call(
fPrefix + "_mul",
W,
c.getLocal("pwm"),
W,
),
c.setLocal("j", c.i32_add(c.getLocal("j"), c.i32_const(1))),
c.br(0)
)),
c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))),
c.br(0)
))
);
}
// Reverse all and multiply by factor
function buildFFTFinal() {
const f = module.addFunction(prefix+"_fftFinal");
f.addParam("pBuff", "i32");
f.addParam("n", "i32");
f.addParam("factor", "i32");
f.addLocal("idx1", "i32");
f.addLocal("idx2", "i32");
f.addLocal("i", "i32");
f.addLocal("ndiv2", "i32");
const c = f.getCodeBuilder();
const T = c.i32_const(module.alloc(n8g));
f.addCode(
c.setLocal("ndiv2", c.i32_shr_u(c.getLocal("n"), c.i32_const(1))),
c.if(
c.i32_and(
c.getLocal("n"),
c.i32_const(1)
),
c.call(
opGtimesF,
c.i32_add(
c.getLocal("pBuff"),
c.i32_mul(
c.getLocal("ndiv2"),
c.i32_const(n8g)
)
),
c.getLocal("factor"),
c.i32_add(
c.getLocal("pBuff"),
c.i32_mul(
c.getLocal("ndiv2"),
c.i32_const(n8g)
)
),
),
),
c.setLocal("i", c.i32_const(0)),
c.block(c.loop(
c.br_if(
1,
c.i32_ge_u(
c.getLocal("i"),
c.getLocal("ndiv2")
)
),
c.setLocal(
"idx1",
c.i32_add(
c.getLocal("pBuff"),
c.i32_mul(
c.getLocal("i"),
c.i32_const(n8g)
)
)
),
c.setLocal(
"idx2",
c.i32_add(
c.getLocal("pBuff"),
c.i32_mul(
c.i32_sub(
c.i32_sub(
c.getLocal("n"),
c.i32_const(1)
),
c.getLocal("i")
),
c.i32_const(n8g)
)
)
),
c.call(
opGtimesF,
c.getLocal("idx2"),
c.getLocal("factor"),
T
),
c.call(
opGtimesF,
c.getLocal("idx1"),
c.getLocal("factor"),
c.getLocal("idx2"),
),
c.call(
gPrefix + "_copy",
T,
c.getLocal("idx1"),
),
c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))),
c.br(0)
))
);
}
buildRev();
buildReversePermutation();
buildFinalInverse();
buildRawFFT();
buildLog2();
buildFFT();
buildIFFT();
buildFFTJoin();
buildFFTJoinExt();
buildFFTJoinExtInv();
buildFFTMix();
buildFFTFinal();
buildPrepareLagrangeEvaluation();
module.exportFunction(prefix+"_fft");
module.exportFunction(prefix+"_ifft");
module.exportFunction(prefix+"_rawfft");
module.exportFunction(prefix+"_fftJoin");
module.exportFunction(prefix+"_fftJoinExt");
module.exportFunction(prefix+"_fftJoinExtInv");
module.exportFunction(prefix+"_fftMix");
module.exportFunction(prefix+"_fftFinal");
module.exportFunction(prefix+"_prepareLagrangeEvaluation");
};
/*
Copyright 2019 0KIMS association.
This file is part of wasmsnark (Web Assembly zkSnark Prover).
wasmsnark 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.
wasmsnark 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 wasmsnark. If not, see <https://www.gnu.org/licenses/>.
*/
var build_pol = function buildPol(module, prefix, prefixField) {
const n64 = module.modules[prefixField].n64;
const n8 = n64*8;
function buildZero() {
const f = module.addFunction(prefix+"_zero");
f.addParam("px", "i32");
f.addParam("n", "i32");
f.addLocal("lastp", "i32");
f.addLocal("p", "i32");
const c = f.getCodeBuilder();
f.addCode(
c.setLocal("p", c.getLocal("px")),
c.setLocal(
"lastp",
c.i32_add(
c.getLocal("px"),
c.i32_mul(
c.getLocal("n"),
c.i32_const(n8)
)
)
),
c.block(c.loop(
c.br_if(
1,
c.i32_eq(
c.getLocal("p"),
c.getLocal("lastp")
)
),
c.call(prefixField + "_zero", c.getLocal("p")),
c.setLocal("p", c.i32_add(c.getLocal("p"), c.i32_const(n8))),
c.br(0)
))
);
}
function buildConstructLC() {
const f = module.addFunction(prefix+"_constructLC");
f.addParam("ppolynomials", "i32");
f.addParam("psignals", "i32");
f.addParam("nSignals", "i32");
f.addParam("pres", "i32");
f.addLocal("i", "i32");
f.addLocal("j", "i32");
f.addLocal("pp", "i32");
f.addLocal("ps", "i32");
f.addLocal("pd", "i32");
f.addLocal("ncoefs", "i32");
const c = f.getCodeBuilder();
const aux = c.i32_const(module.alloc(n8));
f.addCode(
c.setLocal("i", c.i32_const(0)),
c.setLocal("pp", c.getLocal("ppolynomials")),
c.setLocal("ps", c.getLocal("psignals")),
c.block(c.loop(
c.br_if(
1,
c.i32_eq(
c.getLocal("i"),
c.getLocal("nSignals")
)
),
c.setLocal("ncoefs", c.i32_load(c.getLocal("pp"))),
c.setLocal("pp", c.i32_add(c.getLocal("pp"), c.i32_const(4))),
c.setLocal("j", c.i32_const(0)),
c.block(c.loop(
c.br_if(
1,
c.i32_eq(
c.getLocal("j"),
c.getLocal("ncoefs")
)
),
c.setLocal(
"pd",
c.i32_add(
c.getLocal("pres"),
c.i32_mul(
c.i32_load(c.getLocal("pp")),
c.i32_const(n8)
)
)
),
c.setLocal("pp", c.i32_add(c.getLocal("pp"), c.i32_const(4))),
c.call(
prefixField + "_mul",
c.getLocal("ps"),
c.getLocal("pp"),
aux
),
c.call(
prefixField + "_add",
aux,
c.getLocal("pd"),
c.getLocal("pd")
),
c.setLocal("pp", c.i32_add(c.getLocal("pp"), c.i32_const(n8))),
c.setLocal("j", c.i32_add(c.getLocal("j"), c.i32_const(1))),
c.br(0)
)),
c.setLocal("ps", c.i32_add(c.getLocal("ps"), c.i32_const(n8))),
c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))),
c.br(0)
))
);
}
buildZero();
buildConstructLC();
module.exportFunction(prefix + "_zero");
module.exportFunction(prefix + "_constructLC");
return prefix;
};
var build_qap = function buildQAP(module, prefix, prefixField) {
const n64 = module.modules[prefixField].n64;
const n8 = n64*8;
function buildBuildABC() {
const f = module.addFunction(prefix+"_buildABC");
f.addParam("pCoefs", "i32");
f.addParam("nCoefs", "i32");
f.addParam("pWitness", "i32");
f.addParam("pA", "i32");
f.addParam("pB", "i32");
f.addParam("pC", "i32");
f.addParam("offsetOut", "i32");
f.addParam("nOut", "i32");
f.addParam("offsetWitness", "i32");
f.addParam("nWitness", "i32");
f.addLocal("it", "i32");
f.addLocal("ita", "i32");
f.addLocal("itb", "i32");
f.addLocal("last", "i32");
f.addLocal("m", "i32");
f.addLocal("c", "i32");
f.addLocal("s", "i32");
f.addLocal("pOut", "i32");
const c = f.getCodeBuilder();
const aux = c.i32_const(module.alloc(n8));
f.addCode(
// Set output a and b to 0
c.setLocal("ita", c.getLocal("pA")),
c.setLocal("itb", c.getLocal("pB")),
c.setLocal(
"last",
c.i32_add(
c.getLocal("pA"),
c.i32_mul(
c.getLocal("nOut"),
c.i32_const(n8)
)
)
),
c.block(c.loop(
c.br_if(
1,
c.i32_eq(
c.getLocal("ita"),
c.getLocal("last")
)
),
c.call(prefixField + "_zero", c.getLocal("ita")),
c.call(prefixField + "_zero", c.getLocal("itb")),
c.setLocal("ita", c.i32_add(c.getLocal("ita"), c.i32_const(n8))),
c.setLocal("itb", c.i32_add(c.getLocal("itb"), c.i32_const(n8))),
c.br(0)
)),
c.setLocal("it", c.getLocal("pCoefs")),
c.setLocal(
"last",
c.i32_add(
c.getLocal("pCoefs"),
c.i32_mul(
c.getLocal("nCoefs"),
c.i32_const(n8+12)
)
)
),
c.block(c.loop(
c.br_if(
1,
c.i32_eq(
c.getLocal("it"),
c.getLocal("last")
)
),
c.setLocal(
"s",
c.i32_load(c.getLocal("it"), 8)
),
c.if(
c.i32_or(
c.i32_lt_u(
c.getLocal("s"),
c.getLocal("offsetWitness"),
),
c.i32_ge_u(
c.getLocal("s"),
c.i32_add(
c.getLocal("offsetWitness"),
c.getLocal("nWitness"),
)
)
),
[
...c.setLocal("it", c.i32_add(c.getLocal("it"), c.i32_const(n8+12))),
...c.br(1)
]
),
c.setLocal(
"m",
c.i32_load(c.getLocal("it"))
),
c.if(
c.i32_eq(c.getLocal("m"), c.i32_const(0)),
c.setLocal("pOut", c.getLocal("pA")),
c.if(
c.i32_eq(c.getLocal("m"), c.i32_const(1)),
c.setLocal("pOut", c.getLocal("pB")),
[
...c.setLocal("it", c.i32_add(c.getLocal("it"), c.i32_const(n8+12))),
...c.br(1)
]
)
),
c.setLocal(
"c",
c.i32_load(c.getLocal("it"), 4)
),
c.if(
c.i32_or(
c.i32_lt_u(
c.getLocal("c"),
c.getLocal("offsetOut"),
),
c.i32_ge_u(
c.getLocal("c"),
c.i32_add(
c.getLocal("offsetOut"),
c.getLocal("nOut"),
)
)
),
[
...c.setLocal("it", c.i32_add(c.getLocal("it"), c.i32_const(n8+12))),
...c.br(1)
]
),
c.setLocal(
"pOut",
c.i32_add(
c.getLocal("pOut"),
c.i32_mul(
c.i32_sub(
c.getLocal("c"),
c.getLocal("offsetOut")
),
c.i32_const(n8)
)
)
),
c.call(
prefixField + "_mul",
c.i32_add(
c.getLocal("pWitness"),
c.i32_mul(
c.i32_sub(c.getLocal("s"), c.getLocal("offsetWitness")),
c.i32_const(n8)
)
),
c.i32_add( c.getLocal("it"), c.i32_const(12)),
aux
),
c.call(
prefixField + "_add",
c.getLocal("pOut"),
aux,
c.getLocal("pOut"),
),
c.setLocal("it", c.i32_add(c.getLocal("it"), c.i32_const(n8+12))),
c.br(0)
)),
c.setLocal("ita", c.getLocal("pA")),
c.setLocal("itb", c.getLocal("pB")),
c.setLocal("it", c.getLocal("pC")),
c.setLocal(
"last",
c.i32_add(
c.getLocal("pA"),
c.i32_mul(
c.getLocal("nOut"),
c.i32_const(n8)
)
)
),
c.block(c.loop(
c.br_if(
1,
c.i32_eq(
c.getLocal("ita"),
c.getLocal("last")
)
),
c.call(
prefixField + "_mul",
c.getLocal("ita"),
c.getLocal("itb"),
c.getLocal("it")
),
c.setLocal("ita", c.i32_add(c.getLocal("ita"), c.i32_const(n8))),
c.setLocal("itb", c.i32_add(c.getLocal("itb"), c.i32_const(n8))),
c.setLocal("it", c.i32_add(c.getLocal("it"), c.i32_const(n8))),
c.br(0)
)),
);
}
function buildJoinABC() {
const f = module.addFunction(prefix+"_joinABC");
f.addParam("pA", "i32");
f.addParam("pB", "i32");
f.addParam("pC", "i32");
f.addParam("n", "i32");
f.addParam("pP", "i32");
f.addLocal("ita", "i32");
f.addLocal("itb", "i32");
f.addLocal("itc", "i32");
f.addLocal("itp", "i32");
f.addLocal("last", "i32");
const c = f.getCodeBuilder();
const aux = c.i32_const(module.alloc(n8));
f.addCode(
c.setLocal("ita", c.getLocal("pA")),
c.setLocal("itb", c.getLocal("pB")),
c.setLocal("itc", c.getLocal("pC")),
c.setLocal("itp", c.getLocal("pP")),
c.setLocal(
"last",
c.i32_add(
c.getLocal("pA"),
c.i32_mul(
c.getLocal("n"),
c.i32_const(n8)
)
)
),
c.block(c.loop(
c.br_if(
1,
c.i32_eq(
c.getLocal("ita"),
c.getLocal("last")
)
),
c.call(
prefixField + "_mul",
c.getLocal("ita"),
c.getLocal("itb"),
aux
),
c.call(
prefixField + "_sub",
aux,
c.getLocal("itc"),
c.getLocal("itp"),
),
c.setLocal("ita", c.i32_add(c.getLocal("ita"), c.i32_const(n8))),
c.setLocal("itb", c.i32_add(c.getLocal("itb"), c.i32_const(n8))),
c.setLocal("itc", c.i32_add(c.getLocal("itc"), c.i32_const(n8))),
c.setLocal("itp", c.i32_add(c.getLocal("itp"), c.i32_const(n8))),
c.br(0)
))
);
}
function buildBatchAdd() {
const f = module.addFunction(prefix+"_batchAdd");
f.addParam("pa", "i32");
f.addParam("pb", "i32");
f.addParam("n", "i32");
f.addParam("pr", "i32");
f.addLocal("ita", "i32");
f.addLocal("itb", "i32");
f.addLocal("itr", "i32");
f.addLocal("last", "i32");
const c = f.getCodeBuilder();
f.addCode(
c.setLocal("ita", c.getLocal("pa")),
c.setLocal("itb", c.getLocal("pb")),
c.setLocal("itr", c.getLocal("pr")),
c.setLocal(
"last",
c.i32_add(
c.getLocal("pa"),
c.i32_mul(
c.getLocal("n"),
c.i32_const(n8)
)
)
),
c.block(c.loop(
c.br_if(
1,
c.i32_eq(
c.getLocal("ita"),
c.getLocal("last")
)
),
c.call(
prefixField + "_add",
c.getLocal("ita"),
c.getLocal("itb"),
c.getLocal("itr"),
),
c.setLocal("ita", c.i32_add(c.getLocal("ita"), c.i32_const(n8))),
c.setLocal("itb", c.i32_add(c.getLocal("itb"), c.i32_const(n8))),
c.setLocal("itr", c.i32_add(c.getLocal("itr"), c.i32_const(n8))),
c.br(0)
))
);
}
buildBuildABC();
buildJoinABC();
buildBatchAdd();
module.exportFunction(prefix + "_buildABC");
module.exportFunction(prefix + "_joinABC");
module.exportFunction(prefix + "_batchAdd");
return prefix;
};
/*
Copyright 2019 0KIMS association.
This file is part of wasmsnark (Web Assembly zkSnark Prover).
wasmsnark 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.
wasmsnark 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 wasmsnark. If not, see <https://www.gnu.org/licenses/>.
*/
var build_applykey = function buildApplyKey(module, fnName, gPrefix, frPrefix, sizeGIn, sizeGOut, sizeF, opGtimesF) {
const f = module.addFunction(fnName);
f.addParam("pIn", "i32");
f.addParam("n", "i32");
f.addParam("pFirst", "i32");
f.addParam("pInc", "i32");
f.addParam("pOut", "i32");
f.addLocal("pOldFree", "i32");
f.addLocal("i", "i32");
f.addLocal("pFrom", "i32");
f.addLocal("pTo", "i32");
const c = f.getCodeBuilder();
const t = c.i32_const(module.alloc(sizeF));
f.addCode(
c.setLocal("pFrom", c.getLocal("pIn")),
c.setLocal("pTo", c.getLocal("pOut")),
);
// t = first
f.addCode(
c.call(
frPrefix + "_copy",
c.getLocal("pFirst"),
t
)
);
f.addCode(
c.setLocal("i", c.i32_const(0)),
c.block(c.loop(
c.br_if(1, c.i32_eq ( c.getLocal("i"), c.getLocal("n") )),
c.call(
opGtimesF,
c.getLocal("pFrom"),
t,
c.getLocal("pTo")
),
c.setLocal("pFrom", c.i32_add(c.getLocal("pFrom"), c.i32_const(sizeGIn))),
c.setLocal("pTo", c.i32_add(c.getLocal("pTo"), c.i32_const(sizeGOut))),
// t = t* inc
c.call(
frPrefix + "_mul",
t,
c.getLocal("pInc"),
t
),
c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))),
c.br(0)
))
);
module.exportFunction(fnName);
};
const utils$2 = utils$6;
const buildF1m$1 =build_f1m;
const buildF1$1 =build_f1;
const buildF2m$1 =build_f2m;
const buildF3m$1 =build_f3m;
const buildCurve$1 =build_curve_jacobian_a0;
const buildFFT$2 = build_fft;
const buildPol$1 = build_pol;
const buildQAP$1 = build_qap;
const buildApplyKey$1 = build_applykey;
const { bitLength: bitLength$2, modInv, isOdd: isOdd$1, isNegative: isNegative$2 } = bigint;
var build_bn128 = function buildBN128(module, _prefix) {
const prefix = _prefix || "bn128";
if (module.modules[prefix]) return prefix; // already builded
const q = 21888242871839275222246405745257275088696311157297823662689037894645226208583n;
const r = 21888242871839275222246405745257275088548364400416034343698204186575808495617n;
const n64 = Math.floor((bitLength$2(q - 1n) - 1)/64) +1;
const n8 = n64*8;
const frsize = n8;
const f1size = n8;
const f2size = f1size * 2;
const ftsize = f1size * 12;
const pr = module.alloc(utils$2.bigInt2BytesLE( r, frsize ));
const f1mPrefix = buildF1m$1(module, q, "f1m");
buildF1$1(module, r, "fr", "frm");
const pG1b = module.alloc(utils$2.bigInt2BytesLE( toMontgomery(3n), f1size ));
const g1mPrefix = buildCurve$1(module, "g1m", "f1m", pG1b);
buildFFT$2(module, "frm", "frm", "frm", "frm_mul");
buildPol$1(module, "pol", "frm");
buildQAP$1(module, "qap", "frm");
const f2mPrefix = buildF2m$1(module, "f1m_neg", "f2m", "f1m");
const pG2b = module.alloc([
...utils$2.bigInt2BytesLE( toMontgomery(19485874751759354771024239261021720505790618469301721065564631296452457478373n), f1size ),
...utils$2.bigInt2BytesLE( toMontgomery(266929791119991161246907387137283842545076965332900288569378510910307636690n), f1size )
]);
const g2mPrefix = buildCurve$1(module, "g2m", "f2m", pG2b);
function buildGTimesFr(fnName, opMul) {
const f = module.addFunction(fnName);
f.addParam("pG", "i32");
f.addParam("pFr", "i32");
f.addParam("pr", "i32");
const c = f.getCodeBuilder();
const AUX = c.i32_const(module.alloc(n8));
f.addCode(
c.call("frm_fromMontgomery", c.getLocal("pFr"), AUX),
c.call(
opMul,
c.getLocal("pG"),
AUX,
c.i32_const(n8),
c.getLocal("pr")
)
);
module.exportFunction(fnName);
}
buildGTimesFr("g1m_timesFr", "g1m_timesScalar");
buildFFT$2(module, "g1m", "g1m", "frm", "g1m_timesFr");
buildGTimesFr("g2m_timesFr", "g2m_timesScalar");
buildFFT$2(module, "g2m", "g2m", "frm", "g2m_timesFr");
buildGTimesFr("g1m_timesFrAffine", "g1m_timesScalarAffine");
buildGTimesFr("g2m_timesFrAffine", "g2m_timesScalarAffine");
buildApplyKey$1(module, "frm_batchApplyKey", "fmr", "frm", n8, n8, n8, "frm_mul");
buildApplyKey$1(module, "g1m_batchApplyKey", "g1m", "frm", n8*3, n8*3, n8, "g1m_timesFr");
buildApplyKey$1(module, "g1m_batchApplyKeyMixed", "g1m", "frm", n8*2, n8*3, n8, "g1m_timesFrAffine");
buildApplyKey$1(module, "g2m_batchApplyKey", "g2m", "frm", n8*2*3, n8*3*2, n8, "g2m_timesFr");
buildApplyKey$1(module, "g2m_batchApplyKeyMixed", "g2m", "frm", n8*2*2, n8*3*2, n8, "g2m_timesFrAffine");
function toMontgomery(a) {
return BigInt(a) * ( 1n << BigInt(f1size*8)) % q;
}
const G1gen = [
1n,
2n,
1n
];
const pG1gen = module.alloc(
[
...utils$2.bigInt2BytesLE( toMontgomery(G1gen[0]), f1size ),
...utils$2.bigInt2BytesLE( toMontgomery(G1gen[1]), f1size ),
...utils$2.bigInt2BytesLE( toMontgomery(G1gen[2]), f1size ),
]
);
const G1zero = [
0n,
1n,
0n
];
const pG1zero = module.alloc(
[
...utils$2.bigInt2BytesLE( toMontgomery(G1zero[0]), f1size ),
...utils$2.bigInt2BytesLE( toMontgomery(G1zero[1]), f1size ),
...utils$2.bigInt2BytesLE( toMontgomery(G1zero[2]), f1size )
]
);
const G2gen = [
[
10857046999023057135944570762232829481370756359578518086990519993285655852781n,
11559732032986387107991004021392285783925812861821192530917403151452391805634n,
],[
8495653923123431417604973247489272438418190587263600148770280649306958101930n,
4082367875863433681332203403145435568316851327593401208105741076214120093531n,
],[
1n,
0n,
]
];
const pG2gen = module.alloc(
[
...utils$2.bigInt2BytesLE( toMontgomery(G2gen[0][0]), f1size ),
...utils$2.bigInt2BytesLE( toMontgomery(G2gen[0][1]), f1size ),
...utils$2.bigInt2BytesLE( toMontgomery(G2gen[1][0]), f1size ),
...utils$2.bigInt2BytesLE( toMontgomery(G2gen[1][1]), f1size ),
...utils$2.bigInt2BytesLE( toMontgomery(G2gen[2][0]), f1size ),
...utils$2.bigInt2BytesLE( toMontgomery(G2gen[2][1]), f1size ),
]
);
const G2zero = [
[
0n,
0n,
],[
1n,
0n,
],[
0n,
0n,
]
];
const pG2zero = module.alloc(
[
...utils$2.bigInt2BytesLE( toMontgomery(G2zero[0][0]), f1size ),
...utils$2.bigInt2BytesLE( toMontgomery(G2zero[0][1]), f1size ),
...utils$2.bigInt2BytesLE( toMontgomery(G2zero[1][0]), f1size ),
...utils$2.bigInt2BytesLE( toMontgomery(G2zero[1][1]), f1size ),
...utils$2.bigInt2BytesLE( toMontgomery(G2zero[2][0]), f1size ),
...utils$2.bigInt2BytesLE( toMontgomery(G2zero[2][1]), f1size ),
]
);
const pOneT = module.alloc([
...utils$2.bigInt2BytesLE( toMontgomery(1), f1size ),
...utils$2.bigInt2BytesLE( toMontgomery(0), f1size ),
...utils$2.bigInt2BytesLE( toMontgomery(0), f1size ),
...utils$2.bigInt2BytesLE( toMontgomery(0), f1size ),
...utils$2.bigInt2BytesLE( toMontgomery(0), f1size ),
...utils$2.bigInt2BytesLE( toMontgomery(0), f1size ),
...utils$2.bigInt2BytesLE( toMontgomery(0), f1size ),
...utils$2.bigInt2BytesLE( toMontgomery(0), f1size ),
...utils$2.bigInt2BytesLE( toMontgomery(0), f1size ),
...utils$2.bigInt2BytesLE( toMontgomery(0), f1size ),
...utils$2.bigInt2BytesLE( toMontgomery(0), f1size ),
...utils$2.bigInt2BytesLE( toMontgomery(0), f1size ),
]);
const pNonResidueF6 = module.alloc([
...utils$2.bigInt2BytesLE( toMontgomery(9), f1size ),
...utils$2.bigInt2BytesLE( toMontgomery(1), f1size ),
]);
const pTwoInv = module.alloc([
...utils$2.bigInt2BytesLE( toMontgomery( modInv(2n, q)), f1size ),
...utils$2.bigInt2BytesLE( 0n, f1size )
]);
const pAltBn128Twist = pNonResidueF6;
const pTwistCoefB = module.alloc([
...utils$2.bigInt2BytesLE( toMontgomery(19485874751759354771024239261021720505790618469301721065564631296452457478373n), f1size ),
...utils$2.bigInt2BytesLE( toMontgomery(266929791119991161246907387137283842545076965332900288569378510910307636690n), f1size ),
]);
function build_mulNR6() {
const f = module.addFunction(prefix + "_mulNR6");
f.addParam("x", "i32");
f.addParam("pr", "i32");
const c = f.getCodeBuilder();
f.addCode(
c.call(
f2mPrefix + "_mul",
c.i32_const(pNonResidueF6),
c.getLocal("x"),
c.getLocal("pr")
)
);
}
build_mulNR6();
const f6mPrefix = buildF3m$1(module, prefix+"_mulNR6", "f6m", "f2m");
function build_mulNR12() {
const f = module.addFunction(prefix + "_mulNR12");
f.addParam("x", "i32");
f.addParam("pr", "i32");
const c = f.getCodeBuilder();
f.addCode(
c.call(
f2mPrefix + "_mul",
c.i32_const(pNonResidueF6),
c.i32_add(c.getLocal("x"), c.i32_const(n8*4)),
c.getLocal("pr")
),
c.call(
f2mPrefix + "_copy",
c.getLocal("x"),
c.i32_add(c.getLocal("pr"), c.i32_const(n8*2)),
),
c.call(
f2mPrefix + "_copy",
c.i32_add(c.getLocal("x"), c.i32_const(n8*2)),
c.i32_add(c.getLocal("pr"), c.i32_const(n8*4)),
)
);
}
build_mulNR12();
const ftmPrefix = buildF2m$1(module, prefix+"_mulNR12", "ftm", f6mPrefix);
const ateLoopCount = 29793968203157093288n;
const ateLoopBitBytes = bits(ateLoopCount);
const pAteLoopBitBytes = module.alloc(ateLoopBitBytes);
const ateCoefSize = 3 * f2size;
const ateNDblCoefs = ateLoopBitBytes.length-1;
const ateNAddCoefs = ateLoopBitBytes.reduce((acc, b) => acc + ( b!=0 ? 1 : 0) ,0);
const ateNCoefs = ateNAddCoefs + ateNDblCoefs + 1;
const prePSize = 3*2*n8;
const preQSize = 3*n8*2 + ateNCoefs*ateCoefSize;
module.modules[prefix] = {
n64: n64,
pG1gen: pG1gen,
pG1zero: pG1zero,
pG1b: pG1b,
pG2gen: pG2gen,
pG2zero: pG2zero,
pG2b: pG2b,
pq: module.modules["f1m"].pq,
pr: pr,
pOneT: pOneT,
prePSize: prePSize,
preQSize: preQSize,
r: r.toString(),
q: q.toString()
};
// console.log("PrePSize: " +prePSize);
// console.log("PreQSize: " +preQSize);
const finalExpZ = 4965661367192848881n;
function naf(n) {
let E = n;
const res = [];
while (E > 0n) {
if (isOdd$1(E)) {
const z = 2 - Number(E % 4n);
res.push( z );
E = E - BigInt(z);
} else {
res.push( 0 );
}
E = E >> 1n;
}
return res;
}
function bits(n) {
let E = n;
const res = [];
while (E > 0n) {
if (isOdd$1(E)) {
res.push( 1 );
} else {
res.push( 0 );
}
E = E >> 1n;
}
return res;
}
function buildPrepareG1() {
const f = module.addFunction(prefix+ "_prepareG1");
f.addParam("pP", "i32");
f.addParam("ppreP", "i32");
const c = f.getCodeBuilder();
f.addCode(
c.call(g1mPrefix + "_normalize", c.getLocal("pP"), c.getLocal("ppreP")), // TODO Remove if already in affine
);
}
function buildPrepAddStep() {
const f = module.addFunction(prefix+ "_prepAddStep");
f.addParam("pQ", "i32");
f.addParam("pR", "i32");
f.addParam("pCoef", "i32");
const c = f.getCodeBuilder();
const X2 = c.getLocal("pQ");
const Y2 = c.i32_add(c.getLocal("pQ"), c.i32_const(f2size));
const X1 = c.getLocal("pR");
const Y1 = c.i32_add(c.getLocal("pR"), c.i32_const(f2size));
const Z1 = c.i32_add(c.getLocal("pR"), c.i32_const(2*f2size));
const ELL_0 = c.getLocal("pCoef");
const ELL_VW = c.i32_add(c.getLocal("pCoef"), c.i32_const(f2size));
const ELL_VV = c.i32_add(c.getLocal("pCoef"), c.i32_const(2*f2size));
const D = ELL_VW;
const E = c.i32_const(module.alloc(f2size));
const F = c.i32_const(module.alloc(f2size));
const G = c.i32_const(module.alloc(f2size));
const H = c.i32_const(module.alloc(f2size));
const I = c.i32_const(module.alloc(f2size));
const J = c.i32_const(module.alloc(f2size));
const AUX = c.i32_const(module.alloc(f2size));
f.addCode(
// D = X1 - X2*Z1
c.call(f2mPrefix + "_mul", X2, Z1, D),
c.call(f2mPrefix + "_sub", X1, D, D),
// E = Y1 - Y2*Z1
c.call(f2mPrefix + "_mul", Y2, Z1, E),
c.call(f2mPrefix + "_sub", Y1, E, E),
// F = D^2
c.call(f2mPrefix + "_square", D, F),
// G = E^2
c.call(f2mPrefix + "_square", E, G),
// H = D*F
c.call(f2mPrefix + "_mul", D, F, H),
// I = X1 * F
c.call(f2mPrefix + "_mul", X1, F, I),
// J = H + Z1*G - (I+I)
c.call(f2mPrefix + "_add", I, I, AUX),
c.call(f2mPrefix + "_mul", Z1, G, J),
c.call(f2mPrefix + "_add", H, J, J),
c.call(f2mPrefix + "_sub", J, AUX, J),
// X3 (X1) = D*J
c.call(f2mPrefix + "_mul", D, J, X1),
// Y3 (Y1) = E*(I-J)-(H*Y1)
c.call(f2mPrefix + "_mul", H, Y1, Y1),
c.call(f2mPrefix + "_sub", I, J, AUX),
c.call(f2mPrefix + "_mul", E, AUX, AUX),
c.call(f2mPrefix + "_sub", AUX, Y1, Y1),
// Z3 (Z1) = Z1*H
c.call(f2mPrefix + "_mul", Z1, H, Z1),
// ell_0 = xi * (E * X2 - D * Y2)
c.call(f2mPrefix + "_mul", D, Y2, AUX),
c.call(f2mPrefix + "_mul", E, X2, ELL_0),
c.call(f2mPrefix + "_sub", ELL_0, AUX, ELL_0),
c.call(f2mPrefix + "_mul", ELL_0, c.i32_const(pAltBn128Twist), ELL_0),
// ell_VV = - E (later: * xP)
c.call(f2mPrefix + "_neg", E, ELL_VV),
// ell_VW = D (later: * yP )
// Already assigned
);
}
function buildPrepDoubleStep() {
const f = module.addFunction(prefix+ "_prepDblStep");
f.addParam("pR", "i32");
f.addParam("pCoef", "i32");
const c = f.getCodeBuilder();
const X1 = c.getLocal("pR");
const Y1 = c.i32_add(c.getLocal("pR"), c.i32_const(f2size));
const Z1 = c.i32_add(c.getLocal("pR"), c.i32_const(2*f2size));
const ELL_0 = c.getLocal("pCoef");
const ELL_VW = c.i32_add(c.getLocal("pCoef"), c.i32_const(f2size));
const ELL_VV = c.i32_add(c.getLocal("pCoef"), c.i32_const(2*f2size));
const A = c.i32_const(module.alloc(f2size));
const B = c.i32_const(module.alloc(f2size));
const C = c.i32_const(module.alloc(f2size));
const D = c.i32_const(module.alloc(f2size));
const E = c.i32_const(module.alloc(f2size));
const F = c.i32_const(module.alloc(f2size));
const G = c.i32_const(module.alloc(f2size));
const H = c.i32_const(module.alloc(f2size));
const I = c.i32_const(module.alloc(f2size));
const J = c.i32_const(module.alloc(f2size));
const E2 = c.i32_const(module.alloc(f2size));
const AUX = c.i32_const(module.alloc(f2size));
f.addCode(
// A = X1 * Y1 / 2
c.call(f2mPrefix + "_mul", Y1, c.i32_const(pTwoInv), A),
c.call(f2mPrefix + "_mul", X1, A, A),
// B = Y1^2
c.call(f2mPrefix + "_square", Y1, B),
// C = Z1^2
c.call(f2mPrefix + "_square", Z1, C),
// D = 3 * C
c.call(f2mPrefix + "_add", C, C, D),
c.call(f2mPrefix + "_add", D, C, D),
// E = twist_b * D
c.call(f2mPrefix + "_mul", c.i32_const(pTwistCoefB), D, E),
// F = 3 * E
c.call(f2mPrefix + "_add", E, E, F),
c.call(f2mPrefix + "_add", E, F, F),
// G = (B+F)/2
c.call(f2mPrefix + "_add", B, F, G),
c.call(f2mPrefix + "_mul", G, c.i32_const(pTwoInv), G),
// H = (Y1+Z1)^2-(B+C)
c.call(f2mPrefix + "_add", B, C, AUX),
c.call(f2mPrefix + "_add", Y1, Z1, H),
c.call(f2mPrefix + "_square", H, H),
c.call(f2mPrefix + "_sub", H, AUX, H),
// I = E-B
c.call(f2mPrefix + "_sub", E, B, I),
// J = X1^2
c.call(f2mPrefix + "_square", X1, J),
// E_squared = E^2
c.call(f2mPrefix + "_square", E, E2),
// X3 (X1) = A * (B-F)
c.call(f2mPrefix + "_sub", B, F, AUX),
c.call(f2mPrefix + "_mul", A, AUX, X1),
// Y3 (Y1) = G^2 - 3*E^2
c.call(f2mPrefix + "_add", E2, E2, AUX),
c.call(f2mPrefix + "_add", E2, AUX, AUX),
c.call(f2mPrefix + "_square", G, Y1),
c.call(f2mPrefix + "_sub", Y1, AUX, Y1),
// Z3 (Z1) = B * H
c.call(f2mPrefix + "_mul", B, H, Z1),
// ell_0 = xi * I
c.call(f2mPrefix + "_mul", c.i32_const(pAltBn128Twist), I, ELL_0),
// ell_VW = - H (later: * yP)
c.call(f2mPrefix + "_neg", H, ELL_VW),
// ell_VV = 3*J (later: * xP)
c.call(f2mPrefix + "_add", J, J, ELL_VV),
c.call(f2mPrefix + "_add", J, ELL_VV, ELL_VV),
);
}
function buildMulByQ() {
const f = module.addFunction(prefix + "_mulByQ");
f.addParam("p1", "i32");
f.addParam("pr", "i32");
const c = f.getCodeBuilder();
const x = c.getLocal("p1");
const y = c.i32_add(c.getLocal("p1"), c.i32_const(f2size));
const z = c.i32_add(c.getLocal("p1"), c.i32_const(f2size*2));
const x3 = c.getLocal("pr");
const y3 = c.i32_add(c.getLocal("pr"), c.i32_const(f2size));
const z3 = c.i32_add(c.getLocal("pr"), c.i32_const(f2size*2));
const MulByQX = c.i32_const(module.alloc([
...utils$2.bigInt2BytesLE( toMontgomery("21575463638280843010398324269430826099269044274347216827212613867836435027261"), f1size ),
...utils$2.bigInt2BytesLE( toMontgomery("10307601595873709700152284273816112264069230130616436755625194854815875713954"), f1size ),
]));
const MulByQY = c.i32_const(module.alloc([
...utils$2.bigInt2BytesLE( toMontgomery("2821565182194536844548159561693502659359617185244120367078079554186484126554"), f1size ),
...utils$2.bigInt2BytesLE( toMontgomery("3505843767911556378687030309984248845540243509899259641013678093033130930403"), f1size ),
]));
f.addCode(
// The frobeniusMap(1) in this field, is the conjugate
c.call(f2mPrefix + "_conjugate", x, x3),
c.call(f2mPrefix + "_mul", MulByQX, x3, x3),
c.call(f2mPrefix + "_conjugate", y, y3),
c.call(f2mPrefix + "_mul", MulByQY, y3, y3),
c.call(f2mPrefix + "_conjugate", z, z3),
);
}
function buildPrepareG2() {
buildMulByQ();
const f = module.addFunction(prefix+ "_prepareG2");
f.addParam("pQ", "i32");
f.addParam("ppreQ", "i32");
f.addLocal("pCoef", "i32");
f.addLocal("i", "i32");
const c = f.getCodeBuilder();
const QX = c.getLocal("pQ");
const pR = module.alloc(f2size*3);
const R = c.i32_const(pR);
const RX = c.i32_const(pR);
const RY = c.i32_const(pR+f2size);
const RZ = c.i32_const(pR+2*f2size);
const cQX = c.i32_add( c.getLocal("ppreQ"), c.i32_const(0));
const cQY = c.i32_add( c.getLocal("ppreQ"), c.i32_const(f2size));
const pQ1 = module.alloc(f2size*3);
const Q1 = c.i32_const(pQ1);
const pQ2 = module.alloc(f2size*3);
const Q2 = c.i32_const(pQ2);
const Q2Y = c.i32_const(pQ2 + f2size);
f.addCode(
c.call(g2mPrefix + "_normalize", QX, cQX), // TODO Remove if already in affine
c.call(f2mPrefix + "_copy", cQX, RX),
c.call(f2mPrefix + "_copy", cQY, RY),
c.call(f2mPrefix + "_one", RZ),
);
f.addCode(
c.setLocal("pCoef", c.i32_add( c.getLocal("ppreQ"), c.i32_const(f2size*3))),
c.setLocal("i", c.i32_const(ateLoopBitBytes.length-2)),
c.block(c.loop(
c.call(prefix + "_prepDblStep", R, c.getLocal("pCoef")),
c.setLocal("pCoef", c.i32_add(c.getLocal("pCoef"), c.i32_const(ateCoefSize))),
c.if(
c.i32_load8_s(c.getLocal("i"), pAteLoopBitBytes),
[
...c.call(prefix + "_prepAddStep", cQX, R, c.getLocal("pCoef")),
...c.setLocal("pCoef", c.i32_add(c.getLocal("pCoef"), c.i32_const(ateCoefSize))),
]
),
c.br_if(1, c.i32_eqz ( c.getLocal("i") )),
c.setLocal("i", c.i32_sub(c.getLocal("i"), c.i32_const(1))),
c.br(0)
))
);
f.addCode(
c.call(prefix + "_mulByQ", cQX, Q1),
c.call(prefix + "_mulByQ", Q1, Q2)
);
f.addCode(
c.call(f2mPrefix + "_neg", Q2Y, Q2Y),
c.call(prefix + "_prepAddStep", Q1, R, c.getLocal("pCoef")),
c.setLocal("pCoef", c.i32_add(c.getLocal("pCoef"), c.i32_const(ateCoefSize))),
c.call(prefix + "_prepAddStep", Q2, R, c.getLocal("pCoef")),
c.setLocal("pCoef", c.i32_add(c.getLocal("pCoef"), c.i32_const(ateCoefSize))),
);
}
function buildMulBy024Old() {
const f = module.addFunction(prefix+ "__mulBy024Old");
f.addParam("pEll0", "i32");
f.addParam("pEllVW", "i32");
f.addParam("pEllVV", "i32");
f.addParam("pR", "i32"); // Result in F12
const c = f.getCodeBuilder();
const x0 = c.getLocal("pEll0");
const x2 = c.getLocal("pEllVV");
const x4 = c.getLocal("pEllVW");
const z0 = c.getLocal("pR");
const pAUX12 = module.alloc(ftsize);
const AUX12 = c.i32_const(pAUX12);
const AUX12_0 = c.i32_const(pAUX12);
const AUX12_2 = c.i32_const(pAUX12+f2size);
const AUX12_4 = c.i32_const(pAUX12+f2size*2);
const AUX12_6 = c.i32_const(pAUX12+f2size*3);
const AUX12_8 = c.i32_const(pAUX12+f2size*4);
const AUX12_10 = c.i32_const(pAUX12+f2size*5);
f.addCode(
c.call(f2mPrefix + "_copy", x0, AUX12_0),
c.call(f2mPrefix + "_zero", AUX12_2),
c.call(f2mPrefix + "_copy", x2, AUX12_4),
c.call(f2mPrefix + "_zero", AUX12_6),
c.call(f2mPrefix + "_copy", x4, AUX12_8),
c.call(f2mPrefix + "_zero", AUX12_10),
c.call(ftmPrefix + "_mul", AUX12, z0, z0),
);
}
function buildMulBy024() {
const f = module.addFunction(prefix+ "__mulBy024");
f.addParam("pEll0", "i32");
f.addParam("pEllVW", "i32");
f.addParam("pEllVV", "i32");
f.addParam("pR", "i32"); // Result in F12
const c = f.getCodeBuilder();
const x0 = c.getLocal("pEll0");
const x2 = c.getLocal("pEllVV");
const x4 = c.getLocal("pEllVW");
const z0 = c.getLocal("pR");
const z1 = c.i32_add(c.getLocal("pR"), c.i32_const(2*n8));
const z2 = c.i32_add(c.getLocal("pR"), c.i32_const(4*n8));
const z3 = c.i32_add(c.getLocal("pR"), c.i32_const(6*n8));
const z4 = c.i32_add(c.getLocal("pR"), c.i32_const(8*n8));
const z5 = c.i32_add(c.getLocal("pR"), c.i32_const(10*n8));
const t0 = c.i32_const(module.alloc(f2size));
const t1 = c.i32_const(module.alloc(f2size));
const t2 = c.i32_const(module.alloc(f2size));
const s0 = c.i32_const(module.alloc(f2size));
const T3 = c.i32_const(module.alloc(f2size));
const T4 = c.i32_const(module.alloc(f2size));
const D0 = c.i32_const(module.alloc(f2size));
const D2 = c.i32_const(module.alloc(f2size));
const D4 = c.i32_const(module.alloc(f2size));
const S1 = c.i32_const(module.alloc(f2size));
const AUX = c.i32_const(module.alloc(f2size));
f.addCode(
// D0 = z0 * x0;
c.call(f2mPrefix + "_mul", z0, x0, D0),
// D2 = z2 * x2;
c.call(f2mPrefix + "_mul", z2, x2, D2),
// D4 = z4 * x4;
c.call(f2mPrefix + "_mul", z4, x4, D4),
// t2 = z0 + z4;
c.call(f2mPrefix + "_add", z0, z4, t2),
// t1 = z0 + z2;
c.call(f2mPrefix + "_add", z0, z2, t1),
// s0 = z1 + z3 + z5;
c.call(f2mPrefix + "_add", z1, z3, s0),
c.call(f2mPrefix + "_add", s0, z5, s0),
// For z.a_.a_ = z0.
// S1 = z1 * x2;
c.call(f2mPrefix + "_mul", z1, x2, S1),
// T3 = S1 + D4;
c.call(f2mPrefix + "_add", S1, D4, T3),
// T4 = my_Fp6::non_residue * T3 + D0;
c.call(f2mPrefix + "_mul", c.i32_const(pNonResidueF6), T3, T4),
c.call(f2mPrefix + "_add", T4, D0, z0),
// z0 = T4;
// For z.a_.b_ = z1
// T3 = z5 * x4;
c.call(f2mPrefix + "_mul", z5, x4, T3),
// S1 = S1 + T3;
c.call(f2mPrefix + "_add", S1, T3, S1),
// T3 = T3 + D2;
c.call(f2mPrefix + "_add", T3, D2, T3),
// T4 = my_Fp6::non_residue * T3;
c.call(f2mPrefix + "_mul", c.i32_const(pNonResidueF6), T3, T4),
// T3 = z1 * x0;
c.call(f2mPrefix + "_mul", z1, x0, T3),
// S1 = S1 + T3;
c.call(f2mPrefix + "_add", S1, T3, S1),
// T4 = T4 + T3;
c.call(f2mPrefix + "_add", T4, T3, z1),
// z1 = T4;
// For z.a_.c_ = z2
// t0 = x0 + x2;
c.call(f2mPrefix + "_add", x0, x2, t0),
// T3 = t1 * t0 - D0 - D2;
c.call(f2mPrefix + "_mul", t1, t0, T3),
c.call(f2mPrefix + "_add", D0, D2, AUX),
c.call(f2mPrefix + "_sub", T3, AUX, T3),
// T4 = z3 * x4;
c.call(f2mPrefix + "_mul", z3, x4, T4),
// S1 = S1 + T4;
c.call(f2mPrefix + "_add", S1, T4, S1),
// For z.b_.a_ = z3 (z3 needs z2)
// t0 = z2 + z4;
c.call(f2mPrefix + "_add", z2, z4, t0),
// T3 = T3 + T4;
// z2 = T3;
c.call(f2mPrefix + "_add", T3, T4, z2),
// t1 = x2 + x4;
c.call(f2mPrefix + "_add", x2, x4, t1),
// T3 = t0 * t1 - D2 - D4;
c.call(f2mPrefix + "_mul", t1, t0, T3),
c.call(f2mPrefix + "_add", D2, D4, AUX),
c.call(f2mPrefix + "_sub", T3, AUX, T3),
// T4 = my_Fp6::non_residue * T3;
c.call(f2mPrefix + "_mul", c.i32_const(pNonResidueF6), T3, T4),
// T3 = z3 * x0;
c.call(f2mPrefix + "_mul", z3, x0, T3),
// S1 = S1 + T3;
c.call(f2mPrefix + "_add", S1, T3, S1),
// T4 = T4 + T3;
c.call(f2mPrefix + "_add", T4, T3, z3),
// z3 = T4;
// For z.b_.b_ = z4
// T3 = z5 * x2;
c.call(f2mPrefix + "_mul", z5, x2, T3),
// S1 = S1 + T3;
c.call(f2mPrefix + "_add", S1, T3, S1),
// T4 = my_Fp6::non_residue * T3;
c.call(f2mPrefix + "_mul", c.i32_const(pNonResidueF6), T3, T4),
// t0 = x0 + x4;
c.call(f2mPrefix + "_add", x0, x4, t0),
// T3 = t2 * t0 - D0 - D4;
c.call(f2mPrefix + "_mul", t2, t0, T3),
c.call(f2mPrefix + "_add", D0, D4, AUX),
c.call(f2mPrefix + "_sub", T3, AUX, T3),
// T4 = T4 + T3;
c.call(f2mPrefix + "_add", T4, T3, z4),
// z4 = T4;
// For z.b_.c_ = z5.
// t0 = x0 + x2 + x4;
c.call(f2mPrefix + "_add", x0, x2, t0),
c.call(f2mPrefix + "_add", t0, x4, t0),
// T3 = s0 * t0 - S1;
c.call(f2mPrefix + "_mul", s0, t0, T3),
c.call(f2mPrefix + "_sub", T3, S1, z5),
// z5 = T3;
);
}
function buildMillerLoop() {
const f = module.addFunction(prefix+ "_millerLoop");
f.addParam("ppreP", "i32");
f.addParam("ppreQ", "i32");
f.addParam("r", "i32");
f.addLocal("pCoef", "i32");
f.addLocal("i", "i32");
const c = f.getCodeBuilder();
const preP_PX = c.getLocal("ppreP");
const preP_PY = c.i32_add(c.getLocal("ppreP"), c.i32_const(f1size));
const ELL_0 = c.getLocal("pCoef");
const ELL_VW = c.i32_add(c.getLocal("pCoef"), c.i32_const(f2size));
const ELL_VV = c.i32_add(c.getLocal("pCoef"), c.i32_const(2*f2size));
const pVW = module.alloc(f2size);
const VW = c.i32_const(pVW);
const pVV = module.alloc(f2size);
const VV = c.i32_const(pVV);
const F = c.getLocal("r");
f.addCode(
c.call(ftmPrefix + "_one", F),
c.setLocal("pCoef", c.i32_add( c.getLocal("ppreQ"), c.i32_const(f2size*3))),
c.setLocal("i", c.i32_const(ateLoopBitBytes.length-2)),
c.block(c.loop(
c.call(ftmPrefix + "_square", F, F),
c.call(f2mPrefix + "_mul1", ELL_VW,preP_PY, VW),
c.call(f2mPrefix + "_mul1", ELL_VV, preP_PX, VV),
c.call(prefix + "__mulBy024", ELL_0, VW, VV, F),
c.setLocal("pCoef", c.i32_add(c.getLocal("pCoef"), c.i32_const(ateCoefSize))),
c.if(
c.i32_load8_s(c.getLocal("i"), pAteLoopBitBytes),
[
...c.call(f2mPrefix + "_mul1", ELL_VW, preP_PY, VW),
...c.call(f2mPrefix + "_mul1", ELL_VV, preP_PX, VV),
...c.call(prefix + "__mulBy024", ELL_0, VW, VV, F),
...c.setLocal("pCoef", c.i32_add(c.getLocal("pCoef"), c.i32_const(ateCoefSize))),
]
),
c.br_if(1, c.i32_eqz ( c.getLocal("i") )),
c.setLocal("i", c.i32_sub(c.getLocal("i"), c.i32_const(1))),
c.br(0)
))
);
f.addCode(
c.call(f2mPrefix + "_mul1", ELL_VW, preP_PY, VW),
c.call(f2mPrefix + "_mul1", ELL_VV, preP_PX, VV),
c.call(prefix + "__mulBy024", ELL_0, VW, VV, F),
c.setLocal("pCoef", c.i32_add(c.getLocal("pCoef"), c.i32_const(ateCoefSize))),
c.call(f2mPrefix + "_mul1", ELL_VW, preP_PY, VW),
c.call(f2mPrefix + "_mul1", ELL_VV, preP_PX, VV),
c.call(prefix + "__mulBy024", ELL_0, VW, VV, F),
c.setLocal("pCoef", c.i32_add(c.getLocal("pCoef"), c.i32_const(ateCoefSize))),
);
}
function buildFrobeniusMap(n) {
const F12 = [
[
[1n, 0n],
[1n, 0n],
[1n, 0n],
[1n, 0n],
[1n, 0n],
[1n, 0n],
[1n, 0n],
[1n, 0n],
[1n, 0n],
[1n, 0n],
[1n, 0n],
[1n, 0n],
],
[
[1n, 0n],
[8376118865763821496583973867626364092589906065868298776909617916018768340080n, 16469823323077808223889137241176536799009286646108169935659301613961712198316n],
[21888242871839275220042445260109153167277707414472061641714758635765020556617n, 0n],
[11697423496358154304825782922584725312912383441159505038794027105778954184319n, 303847389135065887422783454877609941456349188919719272345083954437860409601n],
[21888242871839275220042445260109153167277707414472061641714758635765020556616n, 0n],
[3321304630594332808241809054958361220322477375291206261884409189760185844239n, 5722266937896532885780051958958348231143373700109372999374820235121374419868n],
[21888242871839275222246405745257275088696311157297823662689037894645226208582n, 0n],
[13512124006075453725662431877630910996106405091429524885779419978626457868503n, 5418419548761466998357268504080738289687024511189653727029736280683514010267n],
[2203960485148121921418603742825762020974279258880205651966n, 0n],
[10190819375481120917420622822672549775783927716138318623895010788866272024264n, 21584395482704209334823622290379665147239961968378104390343953940207365798982n],
[2203960485148121921418603742825762020974279258880205651967n, 0n],
[18566938241244942414004596690298913868373833782006617400804628704885040364344n, 16165975933942742336466353786298926857552937457188450663314217659523851788715n],
]
];
const F6 = [
[
[1n, 0n],
[1n, 0n],
[1n, 0n],
[1n, 0n],
[1n, 0n],
[1n, 0n],
],
[
[1n, 0n],
[21575463638280843010398324269430826099269044274347216827212613867836435027261n, 10307601595873709700152284273816112264069230130616436755625194854815875713954n],
[21888242871839275220042445260109153167277707414472061641714758635765020556616n, 0n],
[3772000881919853776433695186713858239009073593817195771773381919316419345261n, 2236595495967245188281701248203181795121068902605861227855261137820944008926n],
[2203960485148121921418603742825762020974279258880205651966n, 0n],
[18429021223477853657660792034369865839114504446431234726392080002137598044644n, 9344045779998320333812420223237981029506012124075525679208581902008406485703n],
],
[
[1n, 0n],
[2581911344467009335267311115468803099551665605076196740867805258568234346338n, 19937756971775647987995932169929341994314640652964949448313374472400716661030n],
[2203960485148121921418603742825762020974279258880205651966n, 0n],
[5324479202449903542726783395506214481928257762400643279780343368557297135718n, 16208900380737693084919495127334387981393726419856888799917914180988844123039n],
[21888242871839275220042445260109153167277707414472061641714758635765020556616n, 0n],
[13981852324922362344252311234282257507216387789820983642040889267519694726527n, 7629828391165209371577384193250820201684255241773809077146787135900891633097n],
]
];
const f = module.addFunction(prefix+ "__frobeniusMap"+n);
f.addParam("x", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
for (let i=0; i<6; i++) {
const X = (i==0) ? c.getLocal("x") : c.i32_add(c.getLocal("x"), c.i32_const(i*f2size));
const Xc0 = X;
const Xc1 = c.i32_add(c.getLocal("x"), c.i32_const(i*f2size + f1size));
const R = (i==0) ? c.getLocal("r") : c.i32_add(c.getLocal("r"), c.i32_const(i*f2size));
const Rc0 = R;
const Rc1 = c.i32_add(c.getLocal("r"), c.i32_const(i*f2size + f1size));
const coef = mul2(F12[Math.floor(i/3)][n%12] , F6[i%3][n%6]);
const pCoef = module.alloc([
...utils$2.bigInt2BytesLE(toMontgomery(coef[0]), 32),
...utils$2.bigInt2BytesLE(toMontgomery(coef[1]), 32),
]);
if (n%2 == 1) {
f.addCode(
c.call(f1mPrefix + "_copy", Xc0, Rc0),
c.call(f1mPrefix + "_neg", Xc1, Rc1),
c.call(f2mPrefix + "_mul", R, c.i32_const(pCoef), R),
);
} else {
f.addCode(c.call(f2mPrefix + "_mul", X, c.i32_const(pCoef), R));
}
}
function mul2(a, b) {
const ac0 = BigInt(a[0]);
const ac1 = BigInt(a[1]);
const bc0 = BigInt(b[0]);
const bc1 = BigInt(b[1]);
const res = [
(ac0 * bc0 - ( ac1 * bc1) ) % q,
(ac0 * bc1 + ( ac1 * bc0) ) % q,
];
if (isNegative$2(res[0])) res[0] = res[0] + q;
return res;
}
}
function buildFinalExponentiationFirstChunk() {
const f = module.addFunction(prefix+ "__finalExponentiationFirstChunk");
f.addParam("x", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
const elt = c.getLocal("x");
const eltC0 = elt;
const eltC1 = c.i32_add(elt, c.i32_const(n8*6));
const r = c.getLocal("r");
const pA = module.alloc(ftsize);
const A = c.i32_const(pA);
const Ac0 = A;
const Ac1 = c.i32_const(pA + n8*6);
const B = c.i32_const(module.alloc(ftsize));
const C = c.i32_const(module.alloc(ftsize));
const D = c.i32_const(module.alloc(ftsize));
f.addCode(
// const alt_bn128_Fq12 A = alt_bn128_Fq12(elt.c0,-elt.c1);
c.call(f6mPrefix + "_copy", eltC0, Ac0),
c.call(f6mPrefix + "_neg", eltC1, Ac1),
// const alt_bn128_Fq12 B = elt.inverse();
c.call(ftmPrefix + "_inverse", elt, B),
// const alt_bn128_Fq12 C = A * B;
c.call(ftmPrefix + "_mul", A, B, C),
// const alt_bn128_Fq12 D = C.Frobenius_map(2);
c.call(prefix + "__frobeniusMap2", C, D),
// const alt_bn128_Fq12 result = D * C;
c.call(ftmPrefix + "_mul", C, D, r),
);
}
function buildCyclotomicSquare() {
const f = module.addFunction(prefix+ "__cyclotomicSquare");
f.addParam("x", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
const x0 = c.getLocal("x");
const x4 = c.i32_add(c.getLocal("x"), c.i32_const(f2size));
const x3 = c.i32_add(c.getLocal("x"), c.i32_const(2*f2size));
const x2 = c.i32_add(c.getLocal("x"), c.i32_const(3*f2size));
const x1 = c.i32_add(c.getLocal("x"), c.i32_const(4*f2size));
const x5 = c.i32_add(c.getLocal("x"), c.i32_const(5*f2size));
const r0 = c.getLocal("r");
const r4 = c.i32_add(c.getLocal("r"), c.i32_const(f2size));
const r3 = c.i32_add(c.getLocal("r"), c.i32_const(2*f2size));
const r2 = c.i32_add(c.getLocal("r"), c.i32_const(3*f2size));
const r1 = c.i32_add(c.getLocal("r"), c.i32_const(4*f2size));
const r5 = c.i32_add(c.getLocal("r"), c.i32_const(5*f2size));
const t0 = c.i32_const(module.alloc(f2size));
const t1 = c.i32_const(module.alloc(f2size));
const t2 = c.i32_const(module.alloc(f2size));
const t3 = c.i32_const(module.alloc(f2size));
const t4 = c.i32_const(module.alloc(f2size));
const t5 = c.i32_const(module.alloc(f2size));
const tmp = c.i32_const(module.alloc(f2size));
const AUX = c.i32_const(module.alloc(f2size));
f.addCode(
// // t0 + t1*y = (z0 + z1*y)^2 = a^2
// tmp = z0 * z1;
// t0 = (z0 + z1) * (z0 + my_Fp6::non_residue * z1) - tmp - my_Fp6::non_residue * tmp;
// t1 = tmp + tmp;
c.call(f2mPrefix + "_mul", x0, x1, tmp),
c.call(f2mPrefix + "_mul", x1, c.i32_const(pNonResidueF6), t0),
c.call(f2mPrefix + "_add", x0, t0, t0),
c.call(f2mPrefix + "_add", x0, x1, AUX),
c.call(f2mPrefix + "_mul", AUX, t0, t0),
c.call(f2mPrefix + "_mul", c.i32_const(pNonResidueF6), tmp, AUX),
c.call(f2mPrefix + "_add", tmp, AUX, AUX),
c.call(f2mPrefix + "_sub", t0, AUX, t0),
c.call(f2mPrefix + "_add", tmp, tmp, t1),
// // t2 + t3*y = (z2 + z3*y)^2 = b^2
// tmp = z2 * z3;
// t2 = (z2 + z3) * (z2 + my_Fp6::non_residue * z3) - tmp - my_Fp6::non_residue * tmp;
// t3 = tmp + tmp;
c.call(f2mPrefix + "_mul", x2, x3, tmp),
c.call(f2mPrefix + "_mul", x3, c.i32_const(pNonResidueF6), t2),
c.call(f2mPrefix + "_add", x2, t2, t2),
c.call(f2mPrefix + "_add", x2, x3, AUX),
c.call(f2mPrefix + "_mul", AUX, t2, t2),
c.call(f2mPrefix + "_mul", c.i32_const(pNonResidueF6), tmp, AUX),
c.call(f2mPrefix + "_add", tmp, AUX, AUX),
c.call(f2mPrefix + "_sub", t2, AUX, t2),
c.call(f2mPrefix + "_add", tmp, tmp, t3),
// // t4 + t5*y = (z4 + z5*y)^2 = c^2
// tmp = z4 * z5;
// t4 = (z4 + z5) * (z4 + my_Fp6::non_residue * z5) - tmp - my_Fp6::non_residue * tmp;
// t5 = tmp + tmp;
c.call(f2mPrefix + "_mul", x4, x5, tmp),
c.call(f2mPrefix + "_mul", x5, c.i32_const(pNonResidueF6), t4),
c.call(f2mPrefix + "_add", x4, t4, t4),
c.call(f2mPrefix + "_add", x4, x5, AUX),
c.call(f2mPrefix + "_mul", AUX, t4, t4),
c.call(f2mPrefix + "_mul", c.i32_const(pNonResidueF6), tmp, AUX),
c.call(f2mPrefix + "_add", tmp, AUX, AUX),
c.call(f2mPrefix + "_sub", t4, AUX, t4),
c.call(f2mPrefix + "_add", tmp, tmp, t5),
// For A
// z0 = 3 * t0 - 2 * z0
c.call(f2mPrefix + "_sub", t0, x0, r0),
c.call(f2mPrefix + "_add", r0, r0, r0),
c.call(f2mPrefix + "_add", t0, r0, r0),
// z1 = 3 * t1 + 2 * z1
c.call(f2mPrefix + "_add", t1, x1, r1),
c.call(f2mPrefix + "_add", r1, r1, r1),
c.call(f2mPrefix + "_add", t1, r1, r1),
// For B
// z2 = 3 * (xi * t5) + 2 * z2
c.call(f2mPrefix + "_mul", t5, c.i32_const(pAltBn128Twist), AUX),
c.call(f2mPrefix + "_add", AUX, x2, r2),
c.call(f2mPrefix + "_add", r2, r2, r2),
c.call(f2mPrefix + "_add", AUX, r2, r2),
// z3 = 3 * t4 - 2 * z3
c.call(f2mPrefix + "_sub", t4, x3, r3),
c.call(f2mPrefix + "_add", r3, r3, r3),
c.call(f2mPrefix + "_add", t4, r3, r3),
// For C
// z4 = 3 * t2 - 2 * z4
c.call(f2mPrefix + "_sub", t2, x4, r4),
c.call(f2mPrefix + "_add", r4, r4, r4),
c.call(f2mPrefix + "_add", t2, r4, r4),
// z5 = 3 * t3 + 2 * z5
c.call(f2mPrefix + "_add", t3, x5, r5),
c.call(f2mPrefix + "_add", r5, r5, r5),
c.call(f2mPrefix + "_add", t3, r5, r5),
);
}
function buildCyclotomicExp(exponent, fnName) {
const exponentNafBytes = naf(exponent).map( (b) => (b==-1 ? 0xFF: b) );
const pExponentNafBytes = module.alloc(exponentNafBytes);
const f = module.addFunction(prefix+ "__cyclotomicExp_"+fnName);
f.addParam("x", "i32");
f.addParam("r", "i32");
f.addLocal("bit", "i32");
f.addLocal("i", "i32");
const c = f.getCodeBuilder();
const x = c.getLocal("x");
const res = c.getLocal("r");
const inverse = c.i32_const(module.alloc(ftsize));
f.addCode(
c.call(ftmPrefix + "_conjugate", x, inverse),
c.call(ftmPrefix + "_one", res),
c.if(
c.teeLocal("bit", c.i32_load8_s(c.i32_const(exponentNafBytes.length-1), pExponentNafBytes)),
c.if(
c.i32_eq(
c.getLocal("bit"),
c.i32_const(1)
),
c.call(ftmPrefix + "_mul", res, x, res),
c.call(ftmPrefix + "_mul", res, inverse, res),
)
),
c.setLocal("i", c.i32_const(exponentNafBytes.length-2)),
c.block(c.loop(
c.call(prefix + "__cyclotomicSquare", res, res),
c.if(
c.teeLocal("bit", c.i32_load8_s(c.getLocal("i"), pExponentNafBytes)),
c.if(
c.i32_eq(
c.getLocal("bit"),
c.i32_const(1)
),
c.call(ftmPrefix + "_mul", res, x, res),
c.call(ftmPrefix + "_mul", res, inverse, res),
)
),
c.br_if(1, c.i32_eqz ( c.getLocal("i") )),
c.setLocal("i", c.i32_sub(c.getLocal("i"), c.i32_const(1))),
c.br(0)
))
);
}
function buildFinalExponentiationLastChunk() {
buildCyclotomicSquare();
buildCyclotomicExp(finalExpZ, "w0");
const f = module.addFunction(prefix+ "__finalExponentiationLastChunk");
f.addParam("x", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
const elt = c.getLocal("x");
const result = c.getLocal("r");
const A = c.i32_const(module.alloc(ftsize));
const B = c.i32_const(module.alloc(ftsize));
const C = c.i32_const(module.alloc(ftsize));
const D = c.i32_const(module.alloc(ftsize));
const E = c.i32_const(module.alloc(ftsize));
const F = c.i32_const(module.alloc(ftsize));
const G = c.i32_const(module.alloc(ftsize));
const H = c.i32_const(module.alloc(ftsize));
const I = c.i32_const(module.alloc(ftsize));
const J = c.i32_const(module.alloc(ftsize));
const K = c.i32_const(module.alloc(ftsize));
const L = c.i32_const(module.alloc(ftsize));
const M = c.i32_const(module.alloc(ftsize));
const N = c.i32_const(module.alloc(ftsize));
const O = c.i32_const(module.alloc(ftsize));
const P = c.i32_const(module.alloc(ftsize));
const Q = c.i32_const(module.alloc(ftsize));
const R = c.i32_const(module.alloc(ftsize));
const S = c.i32_const(module.alloc(ftsize));
const T = c.i32_const(module.alloc(ftsize));
const U = c.i32_const(module.alloc(ftsize));
f.addCode(
// A = exp_by_neg_z(elt) // = elt^(-z)
c.call(prefix + "__cyclotomicExp_w0", elt, A),
c.call(ftmPrefix + "_conjugate", A, A),
// B = A^2 // = elt^(-2*z)
c.call(prefix + "__cyclotomicSquare", A, B),
// C = B^2 // = elt^(-4*z)
c.call(prefix + "__cyclotomicSquare", B, C),
// D = C * B // = elt^(-6*z)
c.call(ftmPrefix + "_mul", C, B, D),
// E = exp_by_neg_z(D) // = elt^(6*z^2)
c.call(prefix + "__cyclotomicExp_w0", D, E),
c.call(ftmPrefix + "_conjugate", E, E),
// F = E^2 // = elt^(12*z^2)
c.call(prefix + "__cyclotomicSquare", E, F),
// G = epx_by_neg_z(F) // = elt^(-12*z^3)
c.call(prefix + "__cyclotomicExp_w0", F, G),
c.call(ftmPrefix + "_conjugate", G, G),
// H = conj(D) // = elt^(6*z)
c.call(ftmPrefix + "_conjugate", D, H),
// I = conj(G) // = elt^(12*z^3)
c.call(ftmPrefix + "_conjugate", G, I),
// J = I * E // = elt^(12*z^3 + 6*z^2)
c.call(ftmPrefix + "_mul", I, E, J),
// K = J * H // = elt^(12*z^3 + 6*z^2 + 6*z)
c.call(ftmPrefix + "_mul", J, H, K),
// L = K * B // = elt^(12*z^3 + 6*z^2 + 4*z)
c.call(ftmPrefix + "_mul", K, B, L),
// M = K * E // = elt^(12*z^3 + 12*z^2 + 6*z)
c.call(ftmPrefix + "_mul", K, E, M),
// N = M * elt // = elt^(12*z^3 + 12*z^2 + 6*z + 1)
c.call(ftmPrefix + "_mul", M, elt, N),
// O = L.Frobenius_map(1) // = elt^(q*(12*z^3 + 6*z^2 + 4*z))
c.call(prefix + "__frobeniusMap1", L, O),
// P = O * N // = elt^(q*(12*z^3 + 6*z^2 + 4*z) * (12*z^3 + 12*z^2 + 6*z + 1))
c.call(ftmPrefix + "_mul", O, N, P),
// Q = K.Frobenius_map(2) // = elt^(q^2 * (12*z^3 + 6*z^2 + 6*z))
c.call(prefix + "__frobeniusMap2", K, Q),
// R = Q * P // = elt^(q^2 * (12*z^3 + 6*z^2 + 6*z) + q*(12*z^3 + 6*z^2 + 4*z) * (12*z^3 + 12*z^2 + 6*z + 1))
c.call(ftmPrefix + "_mul", Q, P, R),
// S = conj(elt) // = elt^(-1)
c.call(ftmPrefix + "_conjugate", elt, S),
// T = S * L // = elt^(12*z^3 + 6*z^2 + 4*z - 1)
c.call(ftmPrefix + "_mul", S, L, T),
// U = T.Frobenius_map(3) // = elt^(q^3(12*z^3 + 6*z^2 + 4*z - 1))
c.call(prefix + "__frobeniusMap3", T, U),
// V = U * R // = elt^(q^3(12*z^3 + 6*z^2 + 4*z - 1) + q^2 * (12*z^3 + 6*z^2 + 6*z) + q*(12*z^3 + 6*z^2 + 4*z) * (12*z^3 + 12*z^2 + 6*z + 1))
c.call(ftmPrefix + "_mul", U, R, result),
// result = V
);
}
function buildFinalExponentiation() {
buildFinalExponentiationFirstChunk();
buildFinalExponentiationLastChunk();
const f = module.addFunction(prefix+ "_finalExponentiation");
f.addParam("x", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
const elt = c.getLocal("x");
const result = c.getLocal("r");
const eltToFirstChunk = c.i32_const(module.alloc(ftsize));
f.addCode(
c.call(prefix + "__finalExponentiationFirstChunk", elt, eltToFirstChunk ),
c.call(prefix + "__finalExponentiationLastChunk", eltToFirstChunk, result )
);
}
function buildFinalExponentiationOld() {
const f = module.addFunction(prefix+ "_finalExponentiationOld");
f.addParam("x", "i32");
f.addParam("r", "i32");
const exponent = 552484233613224096312617126783173147097382103762957654188882734314196910839907541213974502761540629817009608548654680343627701153829446747810907373256841551006201639677726139946029199968412598804882391702273019083653272047566316584365559776493027495458238373902875937659943504873220554161550525926302303331747463515644711876653177129578303191095900909191624817826566688241804408081892785725967931714097716709526092261278071952560171111444072049229123565057483750161460024353346284167282452756217662335528813519139808291170539072125381230815729071544861602750936964829313608137325426383735122175229541155376346436093930287402089517426973178917569713384748081827255472576937471496195752727188261435633271238710131736096299798168852925540549342330775279877006784354801422249722573783561685179618816480037695005515426162362431072245638324744480n;
const pExponent = module.alloc(utils$2.bigInt2BytesLE( exponent, 352 ));
const c = f.getCodeBuilder();
f.addCode(
c.call(ftmPrefix + "_exp", c.getLocal("x"), c.i32_const(pExponent), c.i32_const(352), c.getLocal("r")),
);
}
const pPreP = module.alloc(prePSize);
const pPreQ = module.alloc(preQSize);
function buildPairingEquation(nPairings) {
const f = module.addFunction(prefix+ "_pairingEq"+nPairings);
for (let i=0; i<nPairings; i++) {
f.addParam("p_"+i, "i32");
f.addParam("q_"+i, "i32");
}
f.addParam("c", "i32");
f.setReturnType("i32");
const c = f.getCodeBuilder();
const resT = c.i32_const(module.alloc(ftsize));
const auxT = c.i32_const(module.alloc(ftsize));
f.addCode(c.call(ftmPrefix + "_one", resT ));
for (let i=0; i<nPairings; i++) {
f.addCode(c.call(prefix + "_prepareG1", c.getLocal("p_"+i), c.i32_const(pPreP) ));
f.addCode(c.call(prefix + "_prepareG2", c.getLocal("q_"+i), c.i32_const(pPreQ) ));
f.addCode(c.call(prefix + "_millerLoop", c.i32_const(pPreP), c.i32_const(pPreQ), auxT ));
f.addCode(c.call(ftmPrefix + "_mul", resT, auxT, resT ));
}
f.addCode(c.call(prefix + "_finalExponentiation", resT, resT ));
f.addCode(c.call(ftmPrefix + "_eq", resT, c.getLocal("c")));
}
function buildPairing() {
const f = module.addFunction(prefix+ "_pairing");
f.addParam("p", "i32");
f.addParam("q", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
const resT = c.i32_const(module.alloc(ftsize));
f.addCode(c.call(prefix + "_prepareG1", c.getLocal("p"), c.i32_const(pPreP) ));
f.addCode(c.call(prefix + "_prepareG2", c.getLocal("q"), c.i32_const(pPreQ) ));
f.addCode(c.call(prefix + "_millerLoop", c.i32_const(pPreP), c.i32_const(pPreQ), resT ));
f.addCode(c.call(prefix + "_finalExponentiation", resT, c.getLocal("r") ));
}
buildPrepAddStep();
buildPrepDoubleStep();
buildPrepareG1();
buildPrepareG2();
buildMulBy024();
buildMulBy024Old();
buildMillerLoop();
for (let i=0; i<10; i++) {
buildFrobeniusMap(i);
module.exportFunction(prefix + "__frobeniusMap"+i);
}
buildFinalExponentiationOld();
buildFinalExponentiation();
for (let i=1; i<=5; i++) {
buildPairingEquation(i);
module.exportFunction(prefix + "_pairingEq"+i);
}
buildPairing();
module.exportFunction(prefix + "_pairing");
module.exportFunction(prefix + "_prepareG1");
module.exportFunction(prefix + "_prepareG2");
module.exportFunction(prefix + "_millerLoop");
module.exportFunction(prefix + "_finalExponentiation");
module.exportFunction(prefix + "_finalExponentiationOld");
module.exportFunction(prefix + "__mulBy024");
module.exportFunction(prefix + "__mulBy024Old");
module.exportFunction(prefix + "__cyclotomicSquare");
module.exportFunction(prefix + "__cyclotomicExp_w0");
// console.log(module.functionIdxByName);
};
const utils$1 = utils$6;
const buildF1m =build_f1m;
const buildF1 =build_f1;
const buildF2m =build_f2m;
const buildF3m =build_f3m;
const buildCurve =build_curve_jacobian_a0;
const buildFFT$1 = build_fft;
const buildPol = build_pol;
const buildQAP = build_qap;
const buildApplyKey = build_applykey;
const { bitLength: bitLength$1, isOdd, isNegative: isNegative$1 } = bigint;
// Definition here: https://electriccoin.co/blog/new-snark-curve/
var build_bls12381 = function buildBLS12381(module, _prefix) {
const prefix = _prefix || "bls12381";
if (module.modules[prefix]) return prefix; // already builded
const q = 0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaabn;
const r = 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001n;
const n64q = Math.floor((bitLength$1(q - 1n) - 1)/64) +1;
const n8q = n64q*8;
const f1size = n8q;
const f2size = f1size * 2;
const ftsize = f1size * 12;
const n64r = Math.floor((bitLength$1(r - 1n) - 1)/64) +1;
const n8r = n64r*8;
const frsize = n8r;
const pr = module.alloc(utils$1.bigInt2BytesLE( r, frsize ));
const f1mPrefix = buildF1m(module, q, "f1m", "intq");
buildF1(module, r, "fr", "frm", "intr");
const pG1b = module.alloc(utils$1.bigInt2BytesLE( toMontgomery(4n), f1size ));
const g1mPrefix = buildCurve(module, "g1m", "f1m", pG1b);
buildFFT$1(module, "frm", "frm", "frm", "frm_mul");
buildPol(module, "pol", "frm");
buildQAP(module, "qap", "frm");
const f2mPrefix = buildF2m(module, "f1m_neg", "f2m", "f1m");
const pG2b = module.alloc([
...utils$1.bigInt2BytesLE( toMontgomery(4n), f1size ),
...utils$1.bigInt2BytesLE( toMontgomery(4n), f1size )
]);
const g2mPrefix = buildCurve(module, "g2m", "f2m", pG2b);
function buildGTimesFr(fnName, opMul) {
const f = module.addFunction(fnName);
f.addParam("pG", "i32");
f.addParam("pFr", "i32");
f.addParam("pr", "i32");
const c = f.getCodeBuilder();
const AUX = c.i32_const(module.alloc(n8r));
f.addCode(
c.call("frm_fromMontgomery", c.getLocal("pFr"), AUX),
c.call(
opMul,
c.getLocal("pG"),
AUX,
c.i32_const(n8r),
c.getLocal("pr")
)
);
module.exportFunction(fnName);
}
buildGTimesFr("g1m_timesFr", "g1m_timesScalar");
buildFFT$1(module, "g1m", "g1m", "frm", "g1m_timesFr");
buildGTimesFr("g2m_timesFr", "g2m_timesScalar");
buildFFT$1(module, "g2m", "g2m", "frm", "g2m_timesFr");
buildGTimesFr("g1m_timesFrAffine", "g1m_timesScalarAffine");
buildGTimesFr("g2m_timesFrAffine", "g2m_timesScalarAffine");
buildApplyKey(module, "frm_batchApplyKey", "fmr", "frm", n8r, n8r, n8r, "frm_mul");
buildApplyKey(module, "g1m_batchApplyKey", "g1m", "frm", n8q*3, n8q*3, n8r, "g1m_timesFr");
buildApplyKey(module, "g1m_batchApplyKeyMixed", "g1m", "frm", n8q*2, n8q*3, n8r, "g1m_timesFrAffine");
buildApplyKey(module, "g2m_batchApplyKey", "g2m", "frm", n8q*2*3, n8q*3*2, n8r, "g2m_timesFr");
buildApplyKey(module, "g2m_batchApplyKeyMixed", "g2m", "frm", n8q*2*2, n8q*3*2, n8r, "g2m_timesFrAffine");
function toMontgomery(a) {
return BigInt(a) * (1n << BigInt(f1size*8)) % q;
}
const G1gen = [
3685416753713387016781088315183077757961620795782546409894578378688607592378376318836054947676345821548104185464507n,
1339506544944476473020471379941921221584933875938349620426543736416511423956333506472724655353366534992391756441569n,
1n
];
const pG1gen = module.alloc(
[
...utils$1.bigInt2BytesLE( toMontgomery(G1gen[0]), f1size ),
...utils$1.bigInt2BytesLE( toMontgomery(G1gen[1]), f1size ),
...utils$1.bigInt2BytesLE( toMontgomery(G1gen[2]), f1size ),
]
);
const G1zero = [
0n,
1n,
0n
];
const pG1zero = module.alloc(
[
...utils$1.bigInt2BytesLE( toMontgomery(G1zero[0]), f1size ),
...utils$1.bigInt2BytesLE( toMontgomery(G1zero[1]), f1size ),
...utils$1.bigInt2BytesLE( toMontgomery(G1zero[2]), f1size )
]
);
const G2gen = [
[
352701069587466618187139116011060144890029952792775240219908644239793785735715026873347600343865175952761926303160n,
3059144344244213709971259814753781636986470325476647558659373206291635324768958432433509563104347017837885763365758n,
],[
1985150602287291935568054521177171638300868978215655730859378665066344726373823718423869104263333984641494340347905n,
927553665492332455747201965776037880757740193453592970025027978793976877002675564980949289727957565575433344219582n,
],[
1n,
0n,
]
];
const pG2gen = module.alloc(
[
...utils$1.bigInt2BytesLE( toMontgomery(G2gen[0][0]), f1size ),
...utils$1.bigInt2BytesLE( toMontgomery(G2gen[0][1]), f1size ),
...utils$1.bigInt2BytesLE( toMontgomery(G2gen[1][0]), f1size ),
...utils$1.bigInt2BytesLE( toMontgomery(G2gen[1][1]), f1size ),
...utils$1.bigInt2BytesLE( toMontgomery(G2gen[2][0]), f1size ),
...utils$1.bigInt2BytesLE( toMontgomery(G2gen[2][1]), f1size ),
]
);
const G2zero = [
[
0n,
0n,
],[
1n,
0n,
],[
0n,
0n,
]
];
const pG2zero = module.alloc(
[
...utils$1.bigInt2BytesLE( toMontgomery(G2zero[0][0]), f1size ),
...utils$1.bigInt2BytesLE( toMontgomery(G2zero[0][1]), f1size ),
...utils$1.bigInt2BytesLE( toMontgomery(G2zero[1][0]), f1size ),
...utils$1.bigInt2BytesLE( toMontgomery(G2zero[1][1]), f1size ),
...utils$1.bigInt2BytesLE( toMontgomery(G2zero[2][0]), f1size ),
...utils$1.bigInt2BytesLE( toMontgomery(G2zero[2][1]), f1size ),
]
);
const pOneT = module.alloc([
...utils$1.bigInt2BytesLE( toMontgomery(1n), f1size ),
...utils$1.bigInt2BytesLE( toMontgomery(0n), f1size ),
...utils$1.bigInt2BytesLE( toMontgomery(0n), f1size ),
...utils$1.bigInt2BytesLE( toMontgomery(0n), f1size ),
...utils$1.bigInt2BytesLE( toMontgomery(0n), f1size ),
...utils$1.bigInt2BytesLE( toMontgomery(0n), f1size ),
...utils$1.bigInt2BytesLE( toMontgomery(0n), f1size ),
...utils$1.bigInt2BytesLE( toMontgomery(0n), f1size ),
...utils$1.bigInt2BytesLE( toMontgomery(0n), f1size ),
...utils$1.bigInt2BytesLE( toMontgomery(0n), f1size ),
...utils$1.bigInt2BytesLE( toMontgomery(0n), f1size ),
...utils$1.bigInt2BytesLE( toMontgomery(0n), f1size ),
]);
const pBls12381Twist = module.alloc([
...utils$1.bigInt2BytesLE( toMontgomery(1n), f1size ),
...utils$1.bigInt2BytesLE( toMontgomery(1n), f1size ),
]);
function build_mulNR2() {
const f = module.addFunction(f2mPrefix + "_mulNR");
f.addParam("x", "i32");
f.addParam("pr", "i32");
const c = f.getCodeBuilder();
const x0c = c.i32_const(module.alloc(f1size));
const x0 = c.getLocal("x");
const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1size));
const r0 = c.getLocal("pr");
const r1 = c.i32_add(c.getLocal("pr"), c.i32_const(f1size));
f.addCode(
c.call(f1mPrefix+"_copy", x0, x0c),
c.call(f1mPrefix+"_sub", x0, x1, r0),
c.call(f1mPrefix+"_add", x0c, x1, r1),
);
}
build_mulNR2();
const f6mPrefix = buildF3m(module, f2mPrefix+"_mulNR", "f6m", "f2m");
function build_mulNR6() {
const f = module.addFunction(f6mPrefix + "_mulNR");
f.addParam("x", "i32");
f.addParam("pr", "i32");
const c = f.getCodeBuilder();
const c0copy = c.i32_const(module.alloc(f1size*2));
f.addCode(
c.call(
f2mPrefix + "_copy",
c.getLocal("x"),
c0copy
),
c.call(
f2mPrefix + "_mulNR",
c.i32_add(c.getLocal("x"), c.i32_const(n8q*4)),
c.getLocal("pr")
),
c.call(
f2mPrefix + "_copy",
c.i32_add(c.getLocal("x"), c.i32_const(n8q*2)),
c.i32_add(c.getLocal("pr"), c.i32_const(n8q*4)),
),
c.call(
f2mPrefix + "_copy",
c0copy,
c.i32_add(c.getLocal("pr"), c.i32_const(n8q*2)),
),
);
}
build_mulNR6();
const ftmPrefix = buildF2m(module, f6mPrefix+"_mulNR", "ftm", f6mPrefix);
const ateLoopCount = 0xd201000000010000n;
const ateLoopBitBytes = bits(ateLoopCount);
const pAteLoopBitBytes = module.alloc(ateLoopBitBytes);
const ateCoefSize = 3 * f2size;
const ateNDblCoefs = ateLoopBitBytes.length-1;
const ateNAddCoefs = ateLoopBitBytes.reduce((acc, b) => acc + ( b!=0 ? 1 : 0) ,0);
const ateNCoefs = ateNAddCoefs + ateNDblCoefs + 1;
const prePSize = 3*2*n8q;
const preQSize = 3*n8q*2 + ateNCoefs*ateCoefSize;
const finalExpIsNegative = true;
const finalExpZ = 15132376222941642752n;
module.modules[prefix] = {
n64q: n64q,
n64r: n64r,
n8q: n8q,
n8r: n8r,
pG1gen: pG1gen,
pG1zero: pG1zero,
pG1b: pG1b,
pG2gen: pG2gen,
pG2zero: pG2zero,
pG2b: pG2b,
pq: module.modules["f1m"].pq,
pr: pr,
pOneT: pOneT,
r: r,
q: q,
prePSize: prePSize,
preQSize: preQSize
};
function naf(n) {
let E = n;
const res = [];
while (E > 0n) {
if (isOdd(E)) {
const z = 2 - Number(E % 4n);
res.push( z );
E = E - BigInt(z);
} else {
res.push( 0 );
}
E = E >> 1n;
}
return res;
}
function bits(n) {
let E = n;
const res = [];
while (E > 0n) {
if (isOdd(E)) {
res.push( 1 );
} else {
res.push( 0 );
}
E = E >> 1n;
}
return res;
}
function buildPrepareG1() {
const f = module.addFunction(prefix+ "_prepareG1");
f.addParam("pP", "i32");
f.addParam("ppreP", "i32");
const c = f.getCodeBuilder();
f.addCode(
c.call(g1mPrefix + "_normalize", c.getLocal("pP"), c.getLocal("ppreP")), // TODO Remove if already in affine
);
}
function buildPrepDoubleStep() {
const f = module.addFunction(prefix+ "_prepDblStep");
f.addParam("R", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
const Rx = c.getLocal("R");
const Ry = c.i32_add(c.getLocal("R"), c.i32_const(2*n8q));
const Rz = c.i32_add(c.getLocal("R"), c.i32_const(4*n8q));
const t0 = c.getLocal("r");
const t3 = c.i32_add(c.getLocal("r"), c.i32_const(2*n8q));
const t6 = c.i32_add(c.getLocal("r"), c.i32_const(4*n8q));
const zsquared = c.i32_const(module.alloc(f2size));
const t1 = c.i32_const(module.alloc(f2size));
const t2 = c.i32_const(module.alloc(f2size));
const t4 = c.i32_const(module.alloc(f2size));
const t5 = c.i32_const(module.alloc(f2size));
f.addCode(
// tmp0 = r.x.square();
c.call(f2mPrefix + "_square", Rx, t0),
// tmp1 = r.y.square();
c.call(f2mPrefix + "_square", Ry, t1),
// tmp2 = tmp1.square();
c.call(f2mPrefix + "_square", t1, t2),
// tmp3 = (tmp1 + r.x).square() - tmp0 - tmp2;
c.call(f2mPrefix + "_add", t1, Rx, t3),
c.call(f2mPrefix + "_square", t3, t3),
c.call(f2mPrefix + "_sub", t3, t0, t3),
c.call(f2mPrefix + "_sub", t3, t2, t3),
// tmp3 = tmp3 + tmp3;
c.call(f2mPrefix + "_add", t3, t3, t3),
// tmp4 = tmp0 + tmp0 + tmp0;
c.call(f2mPrefix + "_add", t0, t0, t4),
c.call(f2mPrefix + "_add", t4, t0, t4),
// tmp6 = r.x + tmp4;
c.call(f2mPrefix + "_add", Rx, t4, t6),
// tmp5 = tmp4.square();
c.call(f2mPrefix + "_square", t4, t5),
// zsquared = r.z.square();
c.call(f2mPrefix + "_square", Rz, zsquared),
// r.x = tmp5 - tmp3 - tmp3;
c.call(f2mPrefix + "_sub", t5, t3, Rx),
c.call(f2mPrefix + "_sub", Rx, t3, Rx),
// r.z = (r.z + r.y).square() - tmp1 - zsquared;
c.call(f2mPrefix + "_add", Rz, Ry, Rz),
c.call(f2mPrefix + "_square", Rz, Rz),
c.call(f2mPrefix + "_sub", Rz, t1, Rz),
c.call(f2mPrefix + "_sub", Rz, zsquared, Rz),
// r.y = (tmp3 - r.x) * tmp4;
c.call(f2mPrefix + "_sub", t3, Rx, Ry),
c.call(f2mPrefix + "_mul", Ry, t4, Ry),
// tmp2 = tmp2 + tmp2;
c.call(f2mPrefix + "_add", t2, t2, t2),
// tmp2 = tmp2 + tmp2;
c.call(f2mPrefix + "_add", t2, t2, t2),
// tmp2 = tmp2 + tmp2;
c.call(f2mPrefix + "_add", t2, t2, t2),
// r.y -= tmp2;
c.call(f2mPrefix + "_sub", Ry, t2, Ry),
// tmp3 = tmp4 * zsquared;
c.call(f2mPrefix + "_mul", t4, zsquared, t3),
// tmp3 = tmp3 + tmp3;
c.call(f2mPrefix + "_add", t3, t3, t3),
// tmp3 = -tmp3;
c.call(f2mPrefix + "_neg", t3, t3),
// tmp6 = tmp6.square() - tmp0 - tmp5;
c.call(f2mPrefix + "_square", t6, t6),
c.call(f2mPrefix + "_sub", t6, t0, t6),
c.call(f2mPrefix + "_sub", t6, t5, t6),
// tmp1 = tmp1 + tmp1;
c.call(f2mPrefix + "_add", t1, t1, t1),
// tmp1 = tmp1 + tmp1;
c.call(f2mPrefix + "_add", t1, t1, t1),
// tmp6 = tmp6 - tmp1;
c.call(f2mPrefix + "_sub", t6, t1, t6),
// tmp0 = r.z * zsquared;
c.call(f2mPrefix + "_mul", Rz, zsquared, t0),
// tmp0 = tmp0 + tmp0;
c.call(f2mPrefix + "_add", t0, t0, t0),
);
}
function buildPrepAddStep() {
const f = module.addFunction(prefix+ "_prepAddStep");
f.addParam("R", "i32");
f.addParam("Q", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
const Rx = c.getLocal("R");
const Ry = c.i32_add(c.getLocal("R"), c.i32_const(2*n8q));
const Rz = c.i32_add(c.getLocal("R"), c.i32_const(4*n8q));
const Qx = c.getLocal("Q");
const Qy = c.i32_add(c.getLocal("Q"), c.i32_const(2*n8q));
const t10 = c.getLocal("r");
const t1 = c.i32_add(c.getLocal("r"), c.i32_const(2*n8q));
const t9 = c.i32_add(c.getLocal("r"), c.i32_const(4*n8q));
const zsquared = c.i32_const(module.alloc(f2size));
const ysquared = c.i32_const(module.alloc(f2size));
const ztsquared = c.i32_const(module.alloc(f2size));
const t0 = c.i32_const(module.alloc(f2size));
const t2 = c.i32_const(module.alloc(f2size));
const t3 = c.i32_const(module.alloc(f2size));
const t4 = c.i32_const(module.alloc(f2size));
const t5 = c.i32_const(module.alloc(f2size));
const t6 = c.i32_const(module.alloc(f2size));
const t7 = c.i32_const(module.alloc(f2size));
const t8 = c.i32_const(module.alloc(f2size));
f.addCode(
// zsquared = r.z.square();
c.call(f2mPrefix + "_square", Rz, zsquared),
// ysquared = q.y.square();
c.call(f2mPrefix + "_square", Qy, ysquared),
// t0 = zsquared * q.x;
c.call(f2mPrefix + "_mul", zsquared, Qx, t0),
// t1 = ((q.y + r.z).square() - ysquared - zsquared) * zsquared;
c.call(f2mPrefix + "_add", Qy, Rz, t1),
c.call(f2mPrefix + "_square", t1, t1),
c.call(f2mPrefix + "_sub", t1, ysquared, t1),
c.call(f2mPrefix + "_sub", t1, zsquared, t1),
c.call(f2mPrefix + "_mul", t1, zsquared, t1),
// t2 = t0 - r.x;
c.call(f2mPrefix + "_sub", t0, Rx, t2),
// t3 = t2.square();
c.call(f2mPrefix + "_square", t2, t3),
// t4 = t3 + t3;
c.call(f2mPrefix + "_add", t3, t3, t4),
// t4 = t4 + t4;
c.call(f2mPrefix + "_add", t4, t4, t4),
// t5 = t4 * t2;
c.call(f2mPrefix + "_mul", t4, t2, t5),
// t6 = t1 - r.y - r.y;
c.call(f2mPrefix + "_sub", t1, Ry, t6),
c.call(f2mPrefix + "_sub", t6, Ry, t6),
// t9 = t6 * q.x;
c.call(f2mPrefix + "_mul", t6, Qx, t9),
// t7 = t4 * r.x;
c.call(f2mPrefix + "_mul", t4, Rx, t7),
// r.x = t6.square() - t5 - t7 - t7;
c.call(f2mPrefix + "_square", t6, Rx),
c.call(f2mPrefix + "_sub", Rx, t5, Rx),
c.call(f2mPrefix + "_sub", Rx, t7, Rx),
c.call(f2mPrefix + "_sub", Rx, t7, Rx),
// r.z = (r.z + t2).square() - zsquared - t3;
c.call(f2mPrefix + "_add", Rz, t2, Rz),
c.call(f2mPrefix + "_square", Rz, Rz),
c.call(f2mPrefix + "_sub", Rz, zsquared, Rz),
c.call(f2mPrefix + "_sub", Rz, t3, Rz),
// t10 = q.y + r.z;
c.call(f2mPrefix + "_add", Qy, Rz, t10),
// t8 = (t7 - r.x) * t6;
c.call(f2mPrefix + "_sub", t7, Rx, t8),
c.call(f2mPrefix + "_mul", t8, t6, t8),
// t0 = r.y * t5;
c.call(f2mPrefix + "_mul", Ry, t5, t0),
// t0 = t0 + t0;
c.call(f2mPrefix + "_add", t0, t0, t0),
// r.y = t8 - t0;
c.call(f2mPrefix + "_sub", t8, t0, Ry),
// t10 = t10.square() - ysquared;
c.call(f2mPrefix + "_square", t10, t10),
c.call(f2mPrefix + "_sub", t10, ysquared, t10),
// ztsquared = r.z.square();
c.call(f2mPrefix + "_square", Rz, ztsquared),
// t10 = t10 - ztsquared;
c.call(f2mPrefix + "_sub", t10, ztsquared, t10),
// t9 = t9 + t9 - t10;
c.call(f2mPrefix + "_add", t9, t9, t9),
c.call(f2mPrefix + "_sub", t9, t10, t9),
// t10 = r.z + r.z;
c.call(f2mPrefix + "_add", Rz, Rz, t10),
// t6 = -t6;
c.call(f2mPrefix + "_neg", t6, t6),
// t1 = t6 + t6;
c.call(f2mPrefix + "_add", t6, t6, t1),
);
}
function buildPrepareG2() {
const f = module.addFunction(prefix+ "_prepareG2");
f.addParam("pQ", "i32");
f.addParam("ppreQ", "i32");
f.addLocal("pCoef", "i32");
f.addLocal("i", "i32");
const c = f.getCodeBuilder();
const Q = c.getLocal("pQ");
const pR = module.alloc(f2size*3);
const R = c.i32_const(pR);
const base = c.getLocal("ppreQ");
f.addCode(
c.call(g2mPrefix + "_normalize", Q, base),
c.if(
c.call(g2mPrefix + "_isZero", base),
c.ret([])
),
c.call(g2mPrefix + "_copy", base, R),
c.setLocal("pCoef", c.i32_add(c.getLocal("ppreQ"), c.i32_const(f2size*3))),
);
f.addCode(
c.setLocal("i", c.i32_const(ateLoopBitBytes.length-2)),
c.block(c.loop(
c.call(prefix + "_prepDblStep", R, c.getLocal("pCoef")),
c.setLocal("pCoef", c.i32_add(c.getLocal("pCoef"), c.i32_const(ateCoefSize))),
c.if(
c.i32_load8_s(c.getLocal("i"), pAteLoopBitBytes),
[
...c.call(prefix + "_prepAddStep", R, base, c.getLocal("pCoef")),
...c.setLocal("pCoef", c.i32_add(c.getLocal("pCoef"), c.i32_const(ateCoefSize))),
]
),
c.br_if(1, c.i32_eqz ( c.getLocal("i") )),
c.setLocal("i", c.i32_sub(c.getLocal("i"), c.i32_const(1))),
c.br(0)
))
);
}
function buildF6Mul1() {
const f = module.addFunction(f6mPrefix+ "_mul1");
f.addParam("pA", "i32"); // F6
f.addParam("pC1", "i32"); // F2
f.addParam("pR", "i32"); // F6
const c = f.getCodeBuilder();
const A_c0 = c.getLocal("pA");
const A_c1 = c.i32_add(c.getLocal("pA"), c.i32_const(f1size*2));
const A_c2 = c.i32_add(c.getLocal("pA"), c.i32_const(f1size*4));
const c1 = c.getLocal("pC1");
const t1 = c.getLocal("pR");
const t2 = c.i32_add(c.getLocal("pR"), c.i32_const(f1size*2));
const b_b = c.i32_add(c.getLocal("pR"), c.i32_const(f1size*4));
const Ac0_Ac1 = c.i32_const(module.alloc(f1size*2));
const Ac1_Ac2 = c.i32_const(module.alloc(f1size*2));
f.addCode(
c.call(f2mPrefix + "_add", A_c0, A_c1, Ac0_Ac1),
c.call(f2mPrefix + "_add", A_c1, A_c2, Ac1_Ac2),
// let b_b = self.c1 * c1;
c.call(f2mPrefix + "_mul", A_c1, c1, b_b),
// let t1 = (self.c1 + self.c2) * c1 - b_b;
c.call(f2mPrefix + "_mul", Ac1_Ac2, c1, t1),
c.call(f2mPrefix + "_sub", t1, b_b, t1),
// let t1 = t1.mul_by_nonresidue();
c.call(f2mPrefix + "_mulNR", t1, t1),
// let t2 = (self.c0 + self.c1) * c1 - b_b;
c.call(f2mPrefix + "_mul", Ac0_Ac1, c1, t2),
c.call(f2mPrefix + "_sub", t2, b_b, t2),
);
}
buildF6Mul1();
function buildF6Mul01() {
const f = module.addFunction(f6mPrefix+ "_mul01");
f.addParam("pA", "i32"); // F6
f.addParam("pC0", "i32"); // F2
f.addParam("pC1", "i32"); // F2
f.addParam("pR", "i32"); // F6
const c = f.getCodeBuilder();
const A_c0 = c.getLocal("pA");
const A_c1 = c.i32_add(c.getLocal("pA"), c.i32_const(f1size*2));
const A_c2 = c.i32_add(c.getLocal("pA"), c.i32_const(f1size*4));
const c0 = c.getLocal("pC0");
const c1 = c.getLocal("pC1");
const t1 = c.getLocal("pR");
const t2 = c.i32_add(c.getLocal("pR"), c.i32_const(f1size*2));
const t3 = c.i32_add(c.getLocal("pR"), c.i32_const(f1size*4));
const a_a = c.i32_const(module.alloc(f1size*2));
const b_b = c.i32_const(module.alloc(f1size*2));
const Ac0_Ac1 = c.i32_const(module.alloc(f1size*2));
const Ac0_Ac2 = c.i32_const(module.alloc(f1size*2));
f.addCode(
// let a_a = self.c0 * c0;
c.call(f2mPrefix + "_mul", A_c0, c0, a_a),
// let b_b = self.c1 * c1;
c.call(f2mPrefix + "_mul", A_c1, c1, b_b),
c.call(f2mPrefix + "_add", A_c0, A_c1, Ac0_Ac1),
c.call(f2mPrefix + "_add", A_c0, A_c2, Ac0_Ac2),
// let t1 = (self.c1 + self.c2) * c1 - b_b;
c.call(f2mPrefix + "_add", A_c1, A_c2, t1),
c.call(f2mPrefix + "_mul", t1, c1, t1),
c.call(f2mPrefix + "_sub", t1, b_b, t1),
// let t1 = t1.mul_by_nonresidue() + a_a;
c.call(f2mPrefix + "_mulNR", t1, t1),
c.call(f2mPrefix + "_add", t1, a_a, t1),
// let t2 = (c0 + c1) * (self.c0 + self.c1) - a_a - b_b;
c.call(f2mPrefix + "_add", c0, c1, t2),
c.call(f2mPrefix + "_mul", t2, Ac0_Ac1, t2),
c.call(f2mPrefix + "_sub", t2, a_a, t2),
c.call(f2mPrefix + "_sub", t2, b_b, t2),
// let t3 = (self.c0 + self.c2) * c0 - a_a + b_b;
c.call(f2mPrefix + "_mul", Ac0_Ac2, c0, t3),
c.call(f2mPrefix + "_sub", t3, a_a, t3),
c.call(f2mPrefix + "_add", t3, b_b, t3),
);
}
buildF6Mul01();
function buildF12Mul014() {
const f = module.addFunction(ftmPrefix+ "_mul014");
f.addParam("pA", "i32"); // F12
f.addParam("pC0", "i32"); // F2
f.addParam("pC1", "i32"); // F2
f.addParam("pC4", "i32"); // F2
f.addParam("pR", "i32"); // F12
const c = f.getCodeBuilder();
const A_c0 = c.getLocal("pA");
const A_c1 = c.i32_add(c.getLocal("pA"), c.i32_const(f1size*6));
const c0 = c.getLocal("pC0");
const c1 = c.getLocal("pC1");
const c4 = c.getLocal("pC4");
const aa = c.i32_const(module.alloc(f1size*6));
const bb = c.i32_const(module.alloc(f1size*6));
const o = c.i32_const(module.alloc(f1size*2));
const R_c0 = c.getLocal("pR");
const R_c1 = c.i32_add(c.getLocal("pR"), c.i32_const(f1size*6));
f.addCode(
// let aa = self.c0.mul_by_01(c0, c1);
c.call(f6mPrefix + "_mul01", A_c0, c0, c1, aa),
// let bb = self.c1.mul_by_1(c4);
c.call(f6mPrefix + "_mul1", A_c1, c4, bb),
// let o = c1 + c4;
c.call(f2mPrefix + "_add", c1, c4, o),
// let c1 = self.c1 + self.c0;
c.call(f6mPrefix + "_add", A_c1, A_c0, R_c1),
// let c1 = c1.mul_by_01(c0, &o);
c.call(f6mPrefix + "_mul01", R_c1, c0, o, R_c1),
// let c1 = c1 - aa - bb;
c.call(f6mPrefix + "_sub", R_c1, aa, R_c1),
c.call(f6mPrefix + "_sub", R_c1, bb, R_c1),
// let c0 = bb;
c.call(f6mPrefix + "_copy", bb, R_c0),
// let c0 = c0.mul_by_nonresidue();
c.call(f6mPrefix + "_mulNR", R_c0, R_c0),
// let c0 = c0 + aa;
c.call(f6mPrefix + "_add", R_c0, aa, R_c0),
);
}
buildF12Mul014();
function buildELL() {
const f = module.addFunction(prefix+ "_ell");
f.addParam("pP", "i32");
f.addParam("pCoefs", "i32");
f.addParam("pF", "i32");
const c = f.getCodeBuilder();
const Px = c.getLocal("pP");
const Py = c.i32_add(c.getLocal("pP"), c.i32_const(n8q));
const F = c.getLocal("pF");
const coef0_0 = c.getLocal("pCoefs");
const coef0_1 = c.i32_add(c.getLocal("pCoefs"), c.i32_const(f1size));
const coef1_0 = c.i32_add(c.getLocal("pCoefs"), c.i32_const(f1size*2));
const coef1_1 = c.i32_add(c.getLocal("pCoefs"), c.i32_const(f1size*3));
const coef2 = c.i32_add(c.getLocal("pCoefs"), c.i32_const(f1size*4));
const pc0 = module.alloc(f1size*2);
const c0 = c.i32_const(pc0);
const c0_c0 = c.i32_const(pc0);
const c0_c1 = c.i32_const(pc0+f1size);
const pc1 = module.alloc(f1size*2);
const c1 = c.i32_const(pc1);
const c1_c0 = c.i32_const(pc1);
const c1_c1 = c.i32_const(pc1+f1size);
f.addCode(
// let mut c0 = coeffs.0;
// let mut c1 = coeffs.1;
//
// c0.c0 *= p.y;
// c0.c1 *= p.y;
//
// c1.c0 *= p.x;
// c1.c1 *= p.x;
//
// f.mul_by_014(&coeffs.2, &c1, &c0)
c.call(f1mPrefix + "_mul", coef0_0, Py, c0_c0),
c.call(f1mPrefix + "_mul", coef0_1, Py, c0_c1),
c.call(f1mPrefix + "_mul", coef1_0, Px, c1_c0),
c.call(f1mPrefix + "_mul", coef1_1, Px, c1_c1),
c.call(ftmPrefix + "_mul014", F, coef2, c1, c0, F),
);
}
buildELL();
function buildMillerLoop() {
const f = module.addFunction(prefix+ "_millerLoop");
f.addParam("ppreP", "i32");
f.addParam("ppreQ", "i32");
f.addParam("r", "i32");
f.addLocal("pCoef", "i32");
f.addLocal("i", "i32");
const c = f.getCodeBuilder();
const preP = c.getLocal("ppreP");
const coefs = c.getLocal("pCoef");
const F = c.getLocal("r");
f.addCode(
c.call(ftmPrefix + "_one", F),
c.if(
c.call(g1mPrefix + "_isZero", preP),
c.ret([])
),
c.if(
c.call(g1mPrefix + "_isZero", c.getLocal("ppreQ")),
c.ret([])
),
c.setLocal("pCoef", c.i32_add( c.getLocal("ppreQ"), c.i32_const(f2size*3))),
c.setLocal("i", c.i32_const(ateLoopBitBytes.length-2)),
c.block(c.loop(
c.call(prefix + "_ell", preP, coefs, F),
c.setLocal("pCoef", c.i32_add(c.getLocal("pCoef"), c.i32_const(ateCoefSize))),
c.if(
c.i32_load8_s(c.getLocal("i"), pAteLoopBitBytes),
[
...c.call(prefix + "_ell", preP, coefs, F),
...c.setLocal("pCoef", c.i32_add(c.getLocal("pCoef"), c.i32_const(ateCoefSize))),
]
),
c.call(ftmPrefix + "_square", F, F),
c.br_if(1, c.i32_eq ( c.getLocal("i"), c.i32_const(1) )),
c.setLocal("i", c.i32_sub(c.getLocal("i"), c.i32_const(1))),
c.br(0)
)),
c.call(prefix + "_ell", preP, coefs, F),
);
{
f.addCode(
c.call(ftmPrefix + "_conjugate", F, F),
);
}
}
function buildFrobeniusMap(n) {
const F12 = [
[
[1n, 0n],
[1n, 0n],
[1n, 0n],
[1n, 0n],
[1n, 0n],
[1n, 0n],
[1n, 0n],
[1n, 0n],
[1n, 0n],
[1n, 0n],
[1n, 0n],
[1n, 0n],
],
[
[1n, 0n],
[3850754370037169011952147076051364057158807420970682438676050522613628423219637725072182697113062777891589506424760n, 151655185184498381465642749684540099398075398968325446656007613510403227271200139370504932015952886146304766135027n],
[793479390729215512621379701633421447060886740281060493010456487427281649075476305620758731620351n, 0n],
[2973677408986561043442465346520108879172042883009249989176415018091420807192182638567116318576472649347015917690530n, 1028732146235106349975324479215795277384839936929757896155643118032610843298655225875571310552543014690878354869257n],
[793479390729215512621379701633421447060886740281060493010456487427281649075476305620758731620350n, 0n],
[3125332594171059424908108096204648978570118281977575435832422631601824034463382777937621250592425535493320683825557n, 877076961050607968509681729531255177986764537961432449499635504522207616027455086505066378536590128544573588734230n],
[4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559786n, 0n],
[151655185184498381465642749684540099398075398968325446656007613510403227271200139370504932015952886146304766135027n, 3850754370037169011952147076051364057158807420970682438676050522613628423219637725072182697113062777891589506424760n],
[4002409555221667392624310435006688643935503118305586438271171395842971157480381377015405980053539358417135540939436n, 0n],
[1028732146235106349975324479215795277384839936929757896155643118032610843298655225875571310552543014690878354869257n, 2973677408986561043442465346520108879172042883009249989176415018091420807192182638567116318576472649347015917690530n],
[4002409555221667392624310435006688643935503118305586438271171395842971157480381377015405980053539358417135540939437n, 0n],
[877076961050607968509681729531255177986764537961432449499635504522207616027455086505066378536590128544573588734230n, 3125332594171059424908108096204648978570118281977575435832422631601824034463382777937621250592425535493320683825557n],
]
];
const F6 = [
[
[1n, 0n],
[1n, 0n],
[1n, 0n],
[1n, 0n],
[1n, 0n],
[1n, 0n],
],
[
[1n, 0n],
[0n, 4002409555221667392624310435006688643935503118305586438271171395842971157480381377015405980053539358417135540939436n],
[793479390729215512621379701633421447060886740281060493010456487427281649075476305620758731620350n, 0n],
[0n, 1n],
[4002409555221667392624310435006688643935503118305586438271171395842971157480381377015405980053539358417135540939436n, 0n],
[0n, 793479390729215512621379701633421447060886740281060493010456487427281649075476305620758731620350n],
],
[
[1n, 0n],
[4002409555221667392624310435006688643935503118305586438271171395842971157480381377015405980053539358417135540939437n, 0n],
[4002409555221667392624310435006688643935503118305586438271171395842971157480381377015405980053539358417135540939436n, 0n],
[4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559786n, 0n],
[793479390729215512621379701633421447060886740281060493010456487427281649075476305620758731620350n, 0n],
[793479390729215512621379701633421447060886740281060493010456487427281649075476305620758731620351n, 0n],
]
];
const f = module.addFunction(ftmPrefix + "_frobeniusMap"+n);
f.addParam("x", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
for (let i=0; i<6; i++) {
const X = (i==0) ? c.getLocal("x") : c.i32_add(c.getLocal("x"), c.i32_const(i*f2size));
const Xc0 = X;
const Xc1 = c.i32_add(c.getLocal("x"), c.i32_const(i*f2size + f1size));
const R = (i==0) ? c.getLocal("r") : c.i32_add(c.getLocal("r"), c.i32_const(i*f2size));
const Rc0 = R;
const Rc1 = c.i32_add(c.getLocal("r"), c.i32_const(i*f2size + f1size));
const coef = mul2(F12[Math.floor(i/3)][n%12] , F6[i%3][n%6]);
const pCoef = module.alloc([
...utils$1.bigInt2BytesLE(toMontgomery(coef[0]), n8q),
...utils$1.bigInt2BytesLE(toMontgomery(coef[1]), n8q),
]);
if (n%2 == 1) {
f.addCode(
c.call(f1mPrefix + "_copy", Xc0, Rc0),
c.call(f1mPrefix + "_neg", Xc1, Rc1),
c.call(f2mPrefix + "_mul", R, c.i32_const(pCoef), R),
);
} else {
f.addCode(c.call(f2mPrefix + "_mul", X, c.i32_const(pCoef), R));
}
}
function mul2(a, b) {
const ac0 = a[0];
const ac1 = a[1];
const bc0 = b[0];
const bc1 = b[1];
const res = [
(ac0 * bc0 - (ac1 * bc1)) % q,
(ac0 * bc1 + (ac1 * bc0)) % q,
];
if (isNegative$1(res[0])) res[0] = res[0] + q;
return res;
}
}
function buildCyclotomicSquare() {
const f = module.addFunction(prefix+ "__cyclotomicSquare");
f.addParam("x", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
const x0 = c.getLocal("x");
const x4 = c.i32_add(c.getLocal("x"), c.i32_const(f2size));
const x3 = c.i32_add(c.getLocal("x"), c.i32_const(2*f2size));
const x2 = c.i32_add(c.getLocal("x"), c.i32_const(3*f2size));
const x1 = c.i32_add(c.getLocal("x"), c.i32_const(4*f2size));
const x5 = c.i32_add(c.getLocal("x"), c.i32_const(5*f2size));
const r0 = c.getLocal("r");
const r4 = c.i32_add(c.getLocal("r"), c.i32_const(f2size));
const r3 = c.i32_add(c.getLocal("r"), c.i32_const(2*f2size));
const r2 = c.i32_add(c.getLocal("r"), c.i32_const(3*f2size));
const r1 = c.i32_add(c.getLocal("r"), c.i32_const(4*f2size));
const r5 = c.i32_add(c.getLocal("r"), c.i32_const(5*f2size));
const t0 = c.i32_const(module.alloc(f2size));
const t1 = c.i32_const(module.alloc(f2size));
const t2 = c.i32_const(module.alloc(f2size));
const t3 = c.i32_const(module.alloc(f2size));
const t4 = c.i32_const(module.alloc(f2size));
const t5 = c.i32_const(module.alloc(f2size));
const tmp = c.i32_const(module.alloc(f2size));
const AUX = c.i32_const(module.alloc(f2size));
f.addCode(
// // t0 + t1*y = (z0 + z1*y)^2 = a^2
// tmp = z0 * z1;
// t0 = (z0 + z1) * (z0 + my_Fp6::non_residue * z1) - tmp - my_Fp6::non_residue * tmp;
// t1 = tmp + tmp;
c.call(f2mPrefix + "_mul", x0, x1, tmp),
c.call(f2mPrefix + "_mulNR", x1, t0),
c.call(f2mPrefix + "_add", x0, t0, t0),
c.call(f2mPrefix + "_add", x0, x1, AUX),
c.call(f2mPrefix + "_mul", AUX, t0, t0),
c.call(f2mPrefix + "_mulNR", tmp, AUX),
c.call(f2mPrefix + "_add", tmp, AUX, AUX),
c.call(f2mPrefix + "_sub", t0, AUX, t0),
c.call(f2mPrefix + "_add", tmp, tmp, t1),
// // t2 + t3*y = (z2 + z3*y)^2 = b^2
// tmp = z2 * z3;
// t2 = (z2 + z3) * (z2 + my_Fp6::non_residue * z3) - tmp - my_Fp6::non_residue * tmp;
// t3 = tmp + tmp;
c.call(f2mPrefix + "_mul", x2, x3, tmp),
c.call(f2mPrefix + "_mulNR", x3, t2),
c.call(f2mPrefix + "_add", x2, t2, t2),
c.call(f2mPrefix + "_add", x2, x3, AUX),
c.call(f2mPrefix + "_mul", AUX, t2, t2),
c.call(f2mPrefix + "_mulNR", tmp, AUX),
c.call(f2mPrefix + "_add", tmp, AUX, AUX),
c.call(f2mPrefix + "_sub", t2, AUX, t2),
c.call(f2mPrefix + "_add", tmp, tmp, t3),
// // t4 + t5*y = (z4 + z5*y)^2 = c^2
// tmp = z4 * z5;
// t4 = (z4 + z5) * (z4 + my_Fp6::non_residue * z5) - tmp - my_Fp6::non_residue * tmp;
// t5 = tmp + tmp;
c.call(f2mPrefix + "_mul", x4, x5, tmp),
c.call(f2mPrefix + "_mulNR", x5, t4),
c.call(f2mPrefix + "_add", x4, t4, t4),
c.call(f2mPrefix + "_add", x4, x5, AUX),
c.call(f2mPrefix + "_mul", AUX, t4, t4),
c.call(f2mPrefix + "_mulNR", tmp, AUX),
c.call(f2mPrefix + "_add", tmp, AUX, AUX),
c.call(f2mPrefix + "_sub", t4, AUX, t4),
c.call(f2mPrefix + "_add", tmp, tmp, t5),
// For A
// z0 = 3 * t0 - 2 * z0
c.call(f2mPrefix + "_sub", t0, x0, r0),
c.call(f2mPrefix + "_add", r0, r0, r0),
c.call(f2mPrefix + "_add", t0, r0, r0),
// z1 = 3 * t1 + 2 * z1
c.call(f2mPrefix + "_add", t1, x1, r1),
c.call(f2mPrefix + "_add", r1, r1, r1),
c.call(f2mPrefix + "_add", t1, r1, r1),
// For B
// z2 = 3 * (xi * t5) + 2 * z2
c.call(f2mPrefix + "_mul", t5, c.i32_const(pBls12381Twist), AUX),
c.call(f2mPrefix + "_add", AUX, x2, r2),
c.call(f2mPrefix + "_add", r2, r2, r2),
c.call(f2mPrefix + "_add", AUX, r2, r2),
// z3 = 3 * t4 - 2 * z3
c.call(f2mPrefix + "_sub", t4, x3, r3),
c.call(f2mPrefix + "_add", r3, r3, r3),
c.call(f2mPrefix + "_add", t4, r3, r3),
// For C
// z4 = 3 * t2 - 2 * z4
c.call(f2mPrefix + "_sub", t2, x4, r4),
c.call(f2mPrefix + "_add", r4, r4, r4),
c.call(f2mPrefix + "_add", t2, r4, r4),
// z5 = 3 * t3 + 2 * z5
c.call(f2mPrefix + "_add", t3, x5, r5),
c.call(f2mPrefix + "_add", r5, r5, r5),
c.call(f2mPrefix + "_add", t3, r5, r5),
);
}
function buildCyclotomicExp(exponent, isExpNegative, fnName) {
const exponentNafBytes = naf(exponent).map( (b) => (b==-1 ? 0xFF: b) );
const pExponentNafBytes = module.alloc(exponentNafBytes);
// const pExponent = module.alloc(utils.bigInt2BytesLE(exponent, n8));
const f = module.addFunction(prefix+ "__cyclotomicExp_"+fnName);
f.addParam("x", "i32");
f.addParam("r", "i32");
f.addLocal("bit", "i32");
f.addLocal("i", "i32");
const c = f.getCodeBuilder();
const x = c.getLocal("x");
const res = c.getLocal("r");
const inverse = c.i32_const(module.alloc(ftsize));
f.addCode(
c.call(ftmPrefix + "_conjugate", x, inverse),
c.call(ftmPrefix + "_one", res),
c.if(
c.teeLocal("bit", c.i32_load8_s(c.i32_const(exponentNafBytes.length-1), pExponentNafBytes)),
c.if(
c.i32_eq(
c.getLocal("bit"),
c.i32_const(1)
),
c.call(ftmPrefix + "_mul", res, x, res),
c.call(ftmPrefix + "_mul", res, inverse, res),
)
),
c.setLocal("i", c.i32_const(exponentNafBytes.length-2)),
c.block(c.loop(
c.call(prefix + "__cyclotomicSquare", res, res),
c.if(
c.teeLocal("bit", c.i32_load8_s(c.getLocal("i"), pExponentNafBytes)),
c.if(
c.i32_eq(
c.getLocal("bit"),
c.i32_const(1)
),
c.call(ftmPrefix + "_mul", res, x, res),
c.call(ftmPrefix + "_mul", res, inverse, res),
)
),
c.br_if(1, c.i32_eqz ( c.getLocal("i") )),
c.setLocal("i", c.i32_sub(c.getLocal("i"), c.i32_const(1))),
c.br(0)
))
);
if (isExpNegative) {
f.addCode(
c.call(ftmPrefix + "_conjugate", res, res),
);
}
}
function buildFinalExponentiation() {
buildCyclotomicSquare();
buildCyclotomicExp(finalExpZ, finalExpIsNegative, "w0");
const f = module.addFunction(prefix+ "_finalExponentiation");
f.addParam("x", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
const elt = c.getLocal("x");
const res = c.getLocal("r");
const t0 = c.i32_const(module.alloc(ftsize));
const t1 = c.i32_const(module.alloc(ftsize));
const t2 = c.i32_const(module.alloc(ftsize));
const t3 = c.i32_const(module.alloc(ftsize));
const t4 = c.i32_const(module.alloc(ftsize));
const t5 = c.i32_const(module.alloc(ftsize));
const t6 = c.i32_const(module.alloc(ftsize));
f.addCode(
// let mut t0 = f.frobenius_map(6)
c.call(ftmPrefix + "_frobeniusMap6", elt, t0),
// let t1 = f.invert()
c.call(ftmPrefix + "_inverse", elt, t1),
// let mut t2 = t0 * t1;
c.call(ftmPrefix + "_mul", t0, t1, t2),
// t1 = t2.clone();
c.call(ftmPrefix + "_copy", t2, t1),
// t2 = t2.frobenius_map().frobenius_map();
c.call(ftmPrefix + "_frobeniusMap2", t2, t2),
// t2 *= t1;
c.call(ftmPrefix + "_mul", t2, t1, t2),
// t1 = cyclotomic_square(t2).conjugate();
c.call(prefix + "__cyclotomicSquare", t2, t1),
c.call(ftmPrefix + "_conjugate", t1, t1),
// let mut t3 = cycolotomic_exp(t2);
c.call(prefix + "__cyclotomicExp_w0", t2, t3),
// let mut t4 = cyclotomic_square(t3);
c.call(prefix + "__cyclotomicSquare", t3, t4),
// let mut t5 = t1 * t3;
c.call(ftmPrefix + "_mul", t1, t3, t5),
// t1 = cycolotomic_exp(t5);
c.call(prefix + "__cyclotomicExp_w0", t5, t1),
// t0 = cycolotomic_exp(t1);
c.call(prefix + "__cyclotomicExp_w0", t1, t0),
// let mut t6 = cycolotomic_exp(t0);
c.call(prefix + "__cyclotomicExp_w0", t0, t6),
// t6 *= t4;
c.call(ftmPrefix + "_mul", t6, t4, t6),
// t4 = cycolotomic_exp(t6);
c.call(prefix + "__cyclotomicExp_w0", t6, t4),
// t5 = t5.conjugate();
c.call(ftmPrefix + "_conjugate", t5, t5),
// t4 *= t5 * t2;
c.call(ftmPrefix + "_mul", t4, t5, t4),
c.call(ftmPrefix + "_mul", t4, t2, t4),
// t5 = t2.conjugate();
c.call(ftmPrefix + "_conjugate", t2, t5),
// t1 *= t2;
c.call(ftmPrefix + "_mul", t1, t2, t1),
// t1 = t1.frobenius_map().frobenius_map().frobenius_map();
c.call(ftmPrefix + "_frobeniusMap3", t1, t1),
// t6 *= t5;
c.call(ftmPrefix + "_mul", t6, t5, t6),
// t6 = t6.frobenius_map();
c.call(ftmPrefix + "_frobeniusMap1", t6, t6),
// t3 *= t0;
c.call(ftmPrefix + "_mul", t3, t0, t3),
// t3 = t3.frobenius_map().frobenius_map();
c.call(ftmPrefix + "_frobeniusMap2", t3, t3),
// t3 *= t1;
c.call(ftmPrefix + "_mul", t3, t1, t3),
// t3 *= t6;
c.call(ftmPrefix + "_mul", t3, t6, t3),
// f = t3 * t4;
c.call(ftmPrefix + "_mul", t3, t4, res),
);
}
function buildFinalExponentiationOld() {
const f = module.addFunction(prefix+ "_finalExponentiationOld");
f.addParam("x", "i32");
f.addParam("r", "i32");
const exponent = 322277361516934140462891564586510139908379969514828494218366688025288661041104682794998680497580008899973249814104447692778988208376779573819485263026159588510513834876303014016798809919343532899164848730280942609956670917565618115867287399623286813270357901731510188149934363360381614501334086825442271920079363289954510565375378443704372994881406797882676971082200626541916413184642520269678897559532260949334760604962086348898118982248842634379637598665468817769075878555493752214492790122785850202957575200176084204422751485957336465472324810982833638490904279282696134323072515220044451592646885410572234451732790590013479358343841220074174848221722017083597872017638514103174122784843925578370430843522959600095676285723737049438346544753168912974976791528535276317256904336520179281145394686565050419250614107803233314658825463117900250701199181529205942363159325765991819433914303908860460720581408201373164047773794825411011922305820065611121544561808414055302212057471395719432072209245600258134364584636810093520285711072578721435517884103526483832733289802426157301542744476740008494780363354305116978805620671467071400711358839553375340724899735460480144599782014906586543813292157922220645089192130209334926661588737007768565838519456601560804957985667880395221049249803753582637708560n;
const pExponent = module.alloc(utils$1.bigInt2BytesLE( exponent, 544 ));
const c = f.getCodeBuilder();
f.addCode(
c.call(ftmPrefix + "_exp", c.getLocal("x"), c.i32_const(pExponent), c.i32_const(544), c.getLocal("r")),
);
}
const pPreP = module.alloc(prePSize);
const pPreQ = module.alloc(preQSize);
function buildPairingEquation(nPairings) {
const f = module.addFunction(prefix+ "_pairingEq"+nPairings);
for (let i=0; i<nPairings; i++) {
f.addParam("p_"+i, "i32");
f.addParam("q_"+i, "i32");
}
f.addParam("c", "i32");
f.setReturnType("i32");
const c = f.getCodeBuilder();
const resT = c.i32_const(module.alloc(ftsize));
const auxT = c.i32_const(module.alloc(ftsize));
f.addCode(c.call(ftmPrefix + "_one", resT ));
for (let i=0; i<nPairings; i++) {
f.addCode(c.call(prefix + "_prepareG1", c.getLocal("p_"+i), c.i32_const(pPreP) ));
f.addCode(c.call(prefix + "_prepareG2", c.getLocal("q_"+i), c.i32_const(pPreQ) ));
// Checks
f.addCode(
c.if(
c.i32_eqz(c.call(g1mPrefix + "_inGroupAffine", c.i32_const(pPreP))),
c.ret(c.i32_const(0))
),
c.if(
c.i32_eqz(c.call(g2mPrefix + "_inGroupAffine", c.i32_const(pPreQ))),
c.ret(c.i32_const(0))
)
);
f.addCode(c.call(prefix + "_millerLoop", c.i32_const(pPreP), c.i32_const(pPreQ), auxT ));
f.addCode(c.call(ftmPrefix + "_mul", resT, auxT, resT ));
}
f.addCode(c.call(prefix + "_finalExponentiation", resT, resT ));
f.addCode(c.call(ftmPrefix + "_eq", resT, c.getLocal("c")));
}
function buildPairing() {
const f = module.addFunction(prefix+ "_pairing");
f.addParam("p", "i32");
f.addParam("q", "i32");
f.addParam("r", "i32");
const c = f.getCodeBuilder();
const resT = c.i32_const(module.alloc(ftsize));
f.addCode(c.call(prefix + "_prepareG1", c.getLocal("p"), c.i32_const(pPreP) ));
f.addCode(c.call(prefix + "_prepareG2", c.getLocal("q"), c.i32_const(pPreQ) ));
f.addCode(c.call(prefix + "_millerLoop", c.i32_const(pPreP), c.i32_const(pPreQ), resT ));
f.addCode(c.call(prefix + "_finalExponentiation", resT, c.getLocal("r") ));
}
function buildInGroupG2() {
const f = module.addFunction(g2mPrefix+ "_inGroupAffine");
f.addParam("p", "i32");
f.setReturnType("i32");
const c = f.getCodeBuilder();
const WINV = [
2001204777610833696708894912867952078278441409969503942666029068062015825245418932221343814564507832018947136279894n,
2001204777610833696708894912867952078278441409969503942666029068062015825245418932221343814564507832018947136279893n
];
const FROB2X = 4002409555221667392624310435006688643935503118305586438271171395842971157480381377015405980053539358417135540939436n;
const FROB3Y = [
2973677408986561043442465346520108879172042883009249989176415018091420807192182638567116318576472649347015917690530n,
2973677408986561043442465346520108879172042883009249989176415018091420807192182638567116318576472649347015917690530n
];
const wInv = c.i32_const(module.alloc([
...utils$1.bigInt2BytesLE(toMontgomery(WINV[0]), n8q),
...utils$1.bigInt2BytesLE(toMontgomery(WINV[1]), n8q),
]));
const frob2X = c.i32_const(module.alloc(utils$1.bigInt2BytesLE(toMontgomery(FROB2X), n8q)));
const frob3Y = c.i32_const(module.alloc([
...utils$1.bigInt2BytesLE(toMontgomery(FROB3Y[0]), n8q),
...utils$1.bigInt2BytesLE(toMontgomery(FROB3Y[1]), n8q),
]));
const z = c.i32_const(module.alloc(utils$1.bigInt2BytesLE(finalExpZ, 8)));
const px = c.getLocal("p");
const py = c.i32_add(c.getLocal("p"), c.i32_const(f2size));
const aux = c.i32_const(module.alloc(f1size));
const x_winv = c.i32_const(module.alloc(f2size));
const y_winv = c.i32_const(module.alloc(f2size));
const pf2 = module.alloc(f2size*2);
const f2 = c.i32_const(pf2);
const f2x = c.i32_const(pf2);
const f2x_c1 = c.i32_const(pf2);
const f2x_c2 = c.i32_const(pf2+f1size);
const f2y = c.i32_const(pf2+f2size);
const f2y_c1 = c.i32_const(pf2+f2size);
const f2y_c2 = c.i32_const(pf2+f2size+f1size);
const pf3 = module.alloc(f2size*3);
const f3 = c.i32_const(pf3);
const f3x = c.i32_const(pf3);
const f3x_c1 = c.i32_const(pf3);
const f3x_c2 = c.i32_const(pf3+f1size);
const f3y = c.i32_const(pf3+f2size);
const f3y_c1 = c.i32_const(pf3+f2size);
const f3y_c2 = c.i32_const(pf3+f2size+f1size);
const f3z = c.i32_const(pf3+f2size*2);
f.addCode(
c.if(
c.call(g2mPrefix + "_isZeroAffine", c.getLocal("p")),
c.ret( c.i32_const(1)),
),
c.if(
c.i32_eqz(c.call(g2mPrefix + "_inCurveAffine", c.getLocal("p"))),
c.ret( c.i32_const(0)),
),
c.call(f2mPrefix + "_mul", px, wInv, x_winv),
c.call(f2mPrefix + "_mul", py, wInv, y_winv),
c.call(f2mPrefix + "_mul1", x_winv, frob2X, f2x),
c.call(f2mPrefix + "_neg", y_winv, f2y),
c.call(f2mPrefix + "_neg", x_winv, f3x),
c.call(f2mPrefix + "_mul", y_winv, frob3Y, f3y),
c.call(f1mPrefix + "_sub", f2x_c1, f2x_c2, aux),
c.call(f1mPrefix + "_add", f2x_c1, f2x_c2, f2x_c2),
c.call(f1mPrefix + "_copy", aux, f2x_c1),
c.call(f1mPrefix + "_sub", f2y_c1, f2y_c2, aux),
c.call(f1mPrefix + "_add", f2y_c1, f2y_c2, f2y_c2),
c.call(f1mPrefix + "_copy", aux, f2y_c1),
c.call(f1mPrefix + "_add", f3x_c1, f3x_c2, aux),
c.call(f1mPrefix + "_sub", f3x_c1, f3x_c2, f3x_c2),
c.call(f1mPrefix + "_copy", aux, f3x_c1),
c.call(f1mPrefix + "_sub", f3y_c2, f3y_c1, aux),
c.call(f1mPrefix + "_add", f3y_c1, f3y_c2, f3y_c2),
c.call(f1mPrefix + "_copy", aux, f3y_c1),
c.call(f2mPrefix + "_one", f3z),
c.call(g2mPrefix + "_timesScalar", f3, z, c.i32_const(8), f3),
c.call(g2mPrefix + "_addMixed", f3, f2, f3),
c.ret(
c.call(g2mPrefix + "_eqMixed", f3, c.getLocal("p"))
)
);
const fInGroup = module.addFunction(g2mPrefix + "_inGroup");
fInGroup.addParam("pIn", "i32");
fInGroup.setReturnType("i32");
const c2 = fInGroup.getCodeBuilder();
const aux2 = c2.i32_const(module.alloc(f2size*2));
fInGroup.addCode(
c2.call(g2mPrefix + "_toAffine", c2.getLocal("pIn"), aux2),
c2.ret(
c2.call(g2mPrefix + "_inGroupAffine", aux2),
)
);
}
function buildInGroupG1() {
const f = module.addFunction(g1mPrefix+ "_inGroupAffine");
f.addParam("p", "i32");
f.setReturnType("i32");
const c = f.getCodeBuilder();
const BETA = 4002409555221667392624310435006688643935503118305586438271171395842971157480381377015405980053539358417135540939436n;
const BETA2 = 793479390729215512621379701633421447060886740281060493010456487427281649075476305620758731620350n;
const Z2M1D3 = (finalExpZ * finalExpZ - 1n) / 3n;
const beta = c.i32_const(module.alloc(utils$1.bigInt2BytesLE(toMontgomery(BETA), n8q)));
const beta2 = c.i32_const(module.alloc(utils$1.bigInt2BytesLE(toMontgomery(BETA2), n8q)));
const z2m1d3 = c.i32_const(module.alloc(utils$1.bigInt2BytesLE(Z2M1D3, 16)));
const px = c.getLocal("p");
const py = c.i32_add(c.getLocal("p"), c.i32_const(f1size));
const psp = module.alloc(f1size*3);
const sp = c.i32_const(psp);
const spx = c.i32_const(psp);
const spy = c.i32_const(psp+f1size);
const ps2p = module.alloc(f1size*2);
const s2p = c.i32_const(ps2p);
const s2px = c.i32_const(ps2p);
const s2py = c.i32_const(ps2p+f1size);
f.addCode(
c.if(
c.call(g1mPrefix + "_isZeroAffine", c.getLocal("p")),
c.ret( c.i32_const(1)),
),
c.if(
c.i32_eqz(c.call(g1mPrefix + "_inCurveAffine", c.getLocal("p"))),
c.ret( c.i32_const(0)),
),
c.call(f1mPrefix + "_mul", px, beta, spx),
c.call(f1mPrefix + "_copy", py, spy),
c.call(f1mPrefix + "_mul", px, beta2, s2px),
c.call(f1mPrefix + "_copy", py, s2py),
c.call(g1mPrefix + "_doubleAffine", sp, sp),
c.call(g1mPrefix + "_subMixed", sp, c.getLocal("p"), sp),
c.call(g1mPrefix + "_subMixed", sp, s2p, sp),
c.call(g1mPrefix + "_timesScalar", sp, z2m1d3, c.i32_const(16), sp),
c.ret(
c.call(g1mPrefix + "_eqMixed", sp, s2p)
)
);
const fInGroup = module.addFunction(g1mPrefix + "_inGroup");
fInGroup.addParam("pIn", "i32");
fInGroup.setReturnType("i32");
const c2 = fInGroup.getCodeBuilder();
const aux2 = c2.i32_const(module.alloc(f1size*2));
fInGroup.addCode(
c2.call(g1mPrefix + "_toAffine", c2.getLocal("pIn"), aux2),
c2.ret(
c2.call(g1mPrefix + "_inGroupAffine", aux2),
)
);
}
for (let i=0; i<10; i++) {
buildFrobeniusMap(i);
module.exportFunction(ftmPrefix + "_frobeniusMap"+i);
}
buildInGroupG1();
buildInGroupG2();
buildPrepAddStep();
buildPrepDoubleStep();
buildPrepareG1();
buildPrepareG2();
buildMillerLoop();
buildFinalExponentiationOld();
buildFinalExponentiation();
for (let i=1; i<=5; i++) {
buildPairingEquation(i);
module.exportFunction(prefix + "_pairingEq"+i);
}
buildPairing();
module.exportFunction(prefix + "_pairing");
module.exportFunction(prefix + "_prepareG1");
module.exportFunction(prefix + "_prepareG2");
module.exportFunction(prefix + "_millerLoop");
module.exportFunction(prefix + "_finalExponentiation");
module.exportFunction(prefix + "_finalExponentiationOld");
module.exportFunction(prefix + "__cyclotomicSquare");
module.exportFunction(prefix + "__cyclotomicExp_w0");
module.exportFunction(f6mPrefix + "_mul1");
module.exportFunction(f6mPrefix + "_mul01");
module.exportFunction(ftmPrefix + "_mul014");
module.exportFunction(g1mPrefix + "_inGroupAffine");
module.exportFunction(g1mPrefix + "_inGroup");
module.exportFunction(g2mPrefix + "_inGroupAffine");
module.exportFunction(g2mPrefix + "_inGroup");
// console.log(module.functionIdxByName);
};
/*
Copyright 2019 0KIMS association.
This file is part of wasmsnark (Web Assembly zkSnark Prover).
wasmsnark 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.
wasmsnark 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 wasmsnark. If not, see <https://www.gnu.org/licenses/>.
*/
// module.exports.bn128_wasm = require("./build/bn128_wasm.js");
// module.exports.bls12381_wasm = require("./build/bls12381_wasm.js");
// module.exports.mnt6753_wasm = require("./build/mnt6753_wasm.js");
var buildBn128$1 = build_bn128;
var buildBls12381$1 = build_bls12381;
/* global BigInt */
function stringifyBigInts(o) {
if (typeof o == "bigint" || o.eq !== undefined) {
return o.toString(10);
} else if (o instanceof Uint8Array) {
return fromRprLE(o, 0);
} else if (Array.isArray(o)) {
return o.map(stringifyBigInts);
} else if (typeof o == "object") {
const res = {};
const keys = Object.keys(o);
keys.forEach((k) => {
res[k] = stringifyBigInts(o[k]);
});
return res;
} else {
return o;
}
}
function unstringifyBigInts(o) {
if (typeof o == "string" && /^[0-9]+$/.test(o)) {
return BigInt(o);
} else if (typeof o == "string" && /^0x[0-9a-fA-F]+$/.test(o)) {
return BigInt(o);
} else if (Array.isArray(o)) {
return o.map(unstringifyBigInts);
} else if (typeof o == "object") {
if (o === null) return null;
const res = {};
const keys = Object.keys(o);
keys.forEach((k) => {
res[k] = unstringifyBigInts(o[k]);
});
return res;
} else {
return o;
}
}
function beBuff2int(buff) {
let res = BigInt(0);
let i = buff.length;
let offset = 0;
const buffV = new DataView(buff.buffer, buff.byteOffset, buff.byteLength);
while (i > 0) {
if (i >= 4) {
i -= 4;
res += BigInt(buffV.getUint32(i)) << BigInt(offset * 8);
offset += 4;
} else if (i >= 2) {
i -= 2;
res += BigInt(buffV.getUint16(i)) << BigInt(offset * 8);
offset += 2;
} else {
i -= 1;
res += BigInt(buffV.getUint8(i)) << BigInt(offset * 8);
offset += 1;
}
}
return res;
}
function beInt2Buff(n, len) {
let r = n;
const buff = new Uint8Array(len);
const buffV = new DataView(buff.buffer);
let o = len;
while (o > 0) {
if (o - 4 >= 0) {
o -= 4;
buffV.setUint32(o, Number(r & BigInt(0xffffffff)));
r = r >> BigInt(32);
} else if (o - 2 >= 0) {
o -= 2;
buffV.setUint16(o, Number(r & BigInt(0xffff)));
r = r >> BigInt(16);
} else {
o -= 1;
buffV.setUint8(o, Number(r & BigInt(0xff)));
r = r >> BigInt(8);
}
}
if (r) {
throw new Error("Number does not fit in this length");
}
return buff;
}
function leBuff2int(buff) {
let res = BigInt(0);
let i = 0;
const buffV = new DataView(buff.buffer, buff.byteOffset, buff.byteLength);
while (i < buff.length) {
if (i + 4 <= buff.length) {
res += BigInt(buffV.getUint32(i, true)) << BigInt(i * 8);
i += 4;
} else if (i + 2 <= buff.length) {
res += BigInt(buffV.getUint16(i, true)) << BigInt(i * 8);
i += 2;
} else {
res += BigInt(buffV.getUint8(i, true)) << BigInt(i * 8);
i += 1;
}
}
return res;
}
function leInt2Buff(n, len) {
let r = n;
if (typeof len === "undefined") {
len = Math.floor((bitLength$6(n) - 1) / 8) + 1;
if (len == 0) len = 1;
}
const buff = new Uint8Array(len);
const buffV = new DataView(buff.buffer);
let o = 0;
while (o < len) {
if (o + 4 <= len) {
buffV.setUint32(o, Number(r & BigInt(0xffffffff)), true);
o += 4;
r = r >> BigInt(32);
} else if (o + 2 <= len) {
buffV.setUint16(o, Number(r & BigInt(0xffff)), true);
o += 2;
r = r >> BigInt(16);
} else {
buffV.setUint8(o, Number(r & BigInt(0xff)), true);
o += 1;
r = r >> BigInt(8);
}
}
if (r) {
throw new Error("Number does not fit in this length");
}
return buff;
}
function stringifyFElements(F, o) {
if (typeof o == "bigint" || o.eq !== undefined) {
return o.toString(10);
} else if (o instanceof Uint8Array) {
return F.toString(F.e(o));
} else if (Array.isArray(o)) {
return o.map(stringifyFElements.bind(this, F));
} else if (typeof o == "object") {
const res = {};
const keys = Object.keys(o);
keys.forEach((k) => {
res[k] = stringifyFElements(F, o[k]);
});
return res;
} else {
return o;
}
}
function unstringifyFElements(F, o) {
if (typeof o == "string" && /^[0-9]+$/.test(o)) {
return F.e(o);
} else if (typeof o == "string" && /^0x[0-9a-fA-F]+$/.test(o)) {
return F.e(o);
} else if (Array.isArray(o)) {
return o.map(unstringifyFElements.bind(this, F));
} else if (typeof o == "object") {
if (o === null) return null;
const res = {};
const keys = Object.keys(o);
keys.forEach((k) => {
res[k] = unstringifyFElements(F, o[k]);
});
return res;
} else {
return o;
}
}
const _revTable = [];
for (let i = 0; i < 256; i++) {
_revTable[i] = _revSlow(i, 8);
}
function _revSlow(idx, bits) {
let res = 0;
let a = idx;
for (let i = 0; i < bits; i++) {
res <<= 1;
res = res | (a & 1);
a >>= 1;
}
return res;
}
function bitReverse(idx, bits) {
return (
(_revTable[idx >>> 24] |
(_revTable[(idx >>> 16) & 0xff] << 8) |
(_revTable[(idx >>> 8) & 0xff] << 16) |
(_revTable[idx & 0xff] << 24)) >>>
(32 - bits)
);
}
function log2(V) {
return (
((V & 0xffff0000) !== 0 ? ((V &= 0xffff0000), 16) : 0) |
((V & 0xff00ff00) !== 0 ? ((V &= 0xff00ff00), 8) : 0) |
((V & 0xf0f0f0f0) !== 0 ? ((V &= 0xf0f0f0f0), 4) : 0) |
((V & 0xcccccccc) !== 0 ? ((V &= 0xcccccccc), 2) : 0) |
((V & 0xaaaaaaaa) !== 0)
);
}
function buffReverseBits(buff, eSize) {
const n = buff.byteLength / eSize;
const bits = log2(n);
if (n != 1 << bits) {
throw new Error("Invalid number of pointers");
}
for (let i = 0; i < n; i++) {
const r = bitReverse(i, bits);
if (i > r) {
const tmp = buff.slice(i * eSize, (i + 1) * eSize);
buff.set(buff.slice(r * eSize, (r + 1) * eSize), i * eSize);
buff.set(tmp, r * eSize);
}
}
}
function array2buffer(arr, sG) {
const buff = new Uint8Array(sG * arr.length);
for (let i = 0; i < arr.length; i++) {
buff.set(arr[i], i * sG);
}
return buff;
}
function buffer2array(buff, sG) {
const n = buff.byteLength / sG;
const arr = new Array(n);
for (let i = 0; i < n; i++) {
arr[i] = buff.slice(i * sG, i * sG + sG);
}
return arr;
}
var _utils = /*#__PURE__*/Object.freeze({
__proto__: null,
array2buffer: array2buffer,
beBuff2int: beBuff2int,
beInt2Buff: beInt2Buff,
bitReverse: bitReverse,
buffReverseBits: buffReverseBits,
buffer2array: buffer2array,
leBuff2int: leBuff2int,
leInt2Buff: leInt2Buff,
log2: log2,
stringifyBigInts: stringifyBigInts,
stringifyFElements: stringifyFElements,
unstringifyBigInts: unstringifyBigInts,
unstringifyFElements: unstringifyFElements
});
const PAGE_SIZE = 1<<30;
class BigBuffer {
constructor(size) {
this.buffers = [];
this.byteLength = size;
for (let i=0; i<size; i+= PAGE_SIZE) {
const n = Math.min(size-i, PAGE_SIZE);
this.buffers.push(new Uint8Array(n));
}
}
slice(fr, to) {
if ( to === undefined ) to = this.byteLength;
if ( fr === undefined ) fr = 0;
const len = to-fr;
const firstPage = Math.floor(fr / PAGE_SIZE);
const lastPage = Math.floor((fr+len-1) / PAGE_SIZE);
if ((firstPage == lastPage)||(len==0))
return this.buffers[firstPage].slice(fr%PAGE_SIZE, fr%PAGE_SIZE + len);
let buff;
let p = firstPage;
let o = fr % PAGE_SIZE;
// Remaining bytes to read
let r = len;
while (r>0) {
// bytes to copy from this page
const l = (o+r > PAGE_SIZE) ? (PAGE_SIZE -o) : r;
const srcView = new Uint8Array(this.buffers[p].buffer, this.buffers[p].byteOffset+o, l);
if (l == len) return srcView.slice();
if (!buff) {
if (len <= PAGE_SIZE) {
buff = new Uint8Array(len);
} else {
buff = new BigBuffer(len);
}
}
buff.set(srcView, len-r);
r = r-l;
p ++;
o = 0;
}
return buff;
}
set(buff, offset) {
if (offset === undefined) offset = 0;
const len = buff.byteLength;
if (len==0) return;
const firstPage = Math.floor(offset / PAGE_SIZE);
const lastPage = Math.floor((offset+len-1) / PAGE_SIZE);
if (firstPage == lastPage) {
if ((buff instanceof BigBuffer)&&(buff.buffers.length==1)) {
return this.buffers[firstPage].set(buff.buffers[0], offset % PAGE_SIZE);
} else {
return this.buffers[firstPage].set(buff, offset % PAGE_SIZE);
}
}
let p = firstPage;
let o = offset % PAGE_SIZE;
let r = len;
while (r>0) {
const l = (o+r > PAGE_SIZE) ? (PAGE_SIZE -o) : r;
const srcView = buff.slice( len -r, len -r+l);
const dstView = new Uint8Array(this.buffers[p].buffer, this.buffers[p].byteOffset + o, l);
dstView.set(srcView);
r = r-l;
p ++;
o = 0;
}
}
}
function buildBatchConvert(tm, fnName, sIn, sOut) {
return async function batchConvert(buffIn) {
const nPoints = Math.floor(buffIn.byteLength / sIn);
if ( nPoints * sIn !== buffIn.byteLength) {
throw new Error("Invalid buffer size");
}
const pointsPerChunk = Math.floor(nPoints/tm.concurrency);
const opPromises = [];
for (let i=0; i<tm.concurrency; i++) {
let n;
if (i< tm.concurrency-1) {
n = pointsPerChunk;
} else {
n = nPoints - i*pointsPerChunk;
}
if (n==0) continue;
const buffChunk = buffIn.slice(i*pointsPerChunk*sIn, i*pointsPerChunk*sIn + n*sIn);
const task = [
{cmd: "ALLOCSET", var: 0, buff:buffChunk},
{cmd: "ALLOC", var: 1, len:sOut * n},
{cmd: "CALL", fnName: fnName, params: [
{var: 0},
{val: n},
{var: 1}
]},
{cmd: "GET", out: 0, var: 1, len:sOut * n},
];
opPromises.push(
tm.queueAction(task)
);
}
const result = await Promise.all(opPromises);
let fullBuffOut;
if (buffIn instanceof BigBuffer) {
fullBuffOut = new BigBuffer(nPoints*sOut);
} else {
fullBuffOut = new Uint8Array(nPoints*sOut);
}
let p =0;
for (let i=0; i<result.length; i++) {
fullBuffOut.set(result[i][0], p);
p+=result[i][0].byteLength;
}
return fullBuffOut;
};
}
class WasmField1 {
constructor(tm, prefix, n8, p) {
this.tm = tm;
this.prefix = prefix;
this.p = p;
this.n8 = n8;
this.type = "F1";
this.m = 1;
this.half = shiftRight(p, one);
this.bitLength = bitLength$6(p);
this.mask = sub(shiftLeft(one, this.bitLength), one);
this.pOp1 = tm.alloc(n8);
this.pOp2 = tm.alloc(n8);
this.pOp3 = tm.alloc(n8);
this.tm.instance.exports[prefix + "_zero"](this.pOp1);
this.zero = this.tm.getBuff(this.pOp1, this.n8);
this.tm.instance.exports[prefix + "_one"](this.pOp1);
this.one = this.tm.getBuff(this.pOp1, this.n8);
this.negone = this.neg(this.one);
this.two = this.add(this.one, this.one);
this.n64 = Math.floor(n8/8);
this.n32 = Math.floor(n8/4);
if(this.n64*8 != this.n8) {
throw new Error("n8 must be a multiple of 8");
}
this.half = shiftRight(this.p, one);
this.nqr = this.two;
let r = this.exp(this.nqr, this.half);
while (!this.eq(r, this.negone)) {
this.nqr = this.add(this.nqr, this.one);
r = this.exp(this.nqr, this.half);
}
this.shift = this.mul(this.nqr, this.nqr);
this.shiftInv = this.inv(this.shift);
this.s = 0;
let t = sub(this.p, one);
while ( !isOdd$5(t) ) {
this.s = this.s + 1;
t = shiftRight(t, one);
}
this.w = [];
this.w[this.s] = this.exp(this.nqr, t);
for (let i= this.s-1; i>=0; i--) {
this.w[i] = this.square(this.w[i+1]);
}
if (!this.eq(this.w[0], this.one)) {
throw new Error("Error calculating roots of unity");
}
this.batchToMontgomery = buildBatchConvert(tm, prefix + "_batchToMontgomery", this.n8, this.n8);
this.batchFromMontgomery = buildBatchConvert(tm, prefix + "_batchFromMontgomery", this.n8, this.n8);
}
op2(opName, a, b) {
this.tm.setBuff(this.pOp1, a);
this.tm.setBuff(this.pOp2, b);
this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp2, this.pOp3);
return this.tm.getBuff(this.pOp3, this.n8);
}
op2Bool(opName, a, b) {
this.tm.setBuff(this.pOp1, a);
this.tm.setBuff(this.pOp2, b);
return !!this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp2);
}
op1(opName, a) {
this.tm.setBuff(this.pOp1, a);
this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp3);
return this.tm.getBuff(this.pOp3, this.n8);
}
op1Bool(opName, a) {
this.tm.setBuff(this.pOp1, a);
return !!this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp3);
}
add(a,b) {
return this.op2("_add", a, b);
}
eq(a,b) {
return this.op2Bool("_eq", a, b);
}
isZero(a) {
return this.op1Bool("_isZero", a);
}
sub(a,b) {
return this.op2("_sub", a, b);
}
neg(a) {
return this.op1("_neg", a);
}
inv(a) {
return this.op1("_inverse", a);
}
toMontgomery(a) {
return this.op1("_toMontgomery", a);
}
fromMontgomery(a) {
return this.op1("_fromMontgomery", a);
}
mul(a,b) {
return this.op2("_mul", a, b);
}
div(a, b) {
this.tm.setBuff(this.pOp1, a);
this.tm.setBuff(this.pOp2, b);
this.tm.instance.exports[this.prefix + "_inverse"](this.pOp2, this.pOp2);
this.tm.instance.exports[this.prefix + "_mul"](this.pOp1, this.pOp2, this.pOp3);
return this.tm.getBuff(this.pOp3, this.n8);
}
square(a) {
return this.op1("_square", a);
}
isSquare(a) {
return this.op1Bool("_isSquare", a);
}
sqrt(a) {
return this.op1("_sqrt", a);
}
exp(a, b) {
if (!(b instanceof Uint8Array)) {
b = toLEBuff(e(b));
}
this.tm.setBuff(this.pOp1, a);
this.tm.setBuff(this.pOp2, b);
this.tm.instance.exports[this.prefix + "_exp"](this.pOp1, this.pOp2, b.byteLength, this.pOp3);
return this.tm.getBuff(this.pOp3, this.n8);
}
isNegative(a) {
return this.op1Bool("_isNegative", a);
}
e(a, b) {
if (a instanceof Uint8Array) return a;
let ra = e(a, b);
if (isNegative$4(ra)) {
ra = neg(ra);
if (gt(ra, this.p)) {
ra = mod(ra, this.p);
}
ra = sub(this.p, ra);
} else {
if (gt(ra, this.p)) {
ra = mod(ra, this.p);
}
}
const buff = leInt2Buff(ra, this.n8);
return this.toMontgomery(buff);
}
toString(a, radix) {
const an = this.fromMontgomery(a);
const s = fromRprLE(an, 0);
return browser_esm_toString(s, radix);
}
fromRng(rng) {
let v;
const buff = new Uint8Array(this.n8);
do {
v = zero;
for (let i=0; i<this.n64; i++) {
v = add(v, shiftLeft(rng.nextU64(), 64*i));
}
v = band(v, this.mask);
} while (geq(v, this.p));
toRprLE(buff, 0, v, this.n8);
return buff;
}
random() {
return this.fromRng(getThreadRng());
}
toObject(a) {
const an = this.fromMontgomery(a);
return fromRprLE(an, 0);
}
fromObject(a) {
const buff = new Uint8Array(this.n8);
toRprLE(buff, 0, a, this.n8);
return this.toMontgomery(buff);
}
toRprLE(buff, offset, a) {
buff.set(this.fromMontgomery(a), offset);
}
toRprBE(buff, offset, a) {
const buff2 = this.fromMontgomery(a);
for (let i=0; i<this.n8/2; i++) {
const aux = buff2[i];
buff2[i] = buff2[this.n8-1-i];
buff2[this.n8-1-i] = aux;
}
buff.set(buff2, offset);
}
fromRprLE(buff, offset) {
offset = offset || 0;
const res = buff.slice(offset, offset + this.n8);
return this.toMontgomery(res);
}
async batchInverse(buffIn) {
let returnArray = false;
const sIn = this.n8;
const sOut = this.n8;
if (Array.isArray(buffIn)) {
buffIn = array2buffer(buffIn, sIn );
returnArray = true;
} else {
buffIn = buffIn.slice(0, buffIn.byteLength);
}
const nPoints = Math.floor(buffIn.byteLength / sIn);
if ( nPoints * sIn !== buffIn.byteLength) {
throw new Error("Invalid buffer size");
}
const pointsPerChunk = Math.floor(nPoints/this.tm.concurrency);
const opPromises = [];
for (let i=0; i<this.tm.concurrency; i++) {
let n;
if (i< this.tm.concurrency-1) {
n = pointsPerChunk;
} else {
n = nPoints - i*pointsPerChunk;
}
if (n==0) continue;
const buffChunk = buffIn.slice(i*pointsPerChunk*sIn, i*pointsPerChunk*sIn + n*sIn);
const task = [
{cmd: "ALLOCSET", var: 0, buff:buffChunk},
{cmd: "ALLOC", var: 1, len:sOut * n},
{cmd: "CALL", fnName: this.prefix + "_batchInverse", params: [
{var: 0},
{val: sIn},
{val: n},
{var: 1},
{val: sOut},
]},
{cmd: "GET", out: 0, var: 1, len:sOut * n},
];
opPromises.push(
this.tm.queueAction(task)
);
}
const result = await Promise.all(opPromises);
let fullBuffOut;
if (buffIn instanceof BigBuffer) {
fullBuffOut = new BigBuffer(nPoints*sOut);
} else {
fullBuffOut = new Uint8Array(nPoints*sOut);
}
let p =0;
for (let i=0; i<result.length; i++) {
fullBuffOut.set(result[i][0], p);
p+=result[i][0].byteLength;
}
if (returnArray) {
return buffer2array(fullBuffOut, sOut);
} else {
return fullBuffOut;
}
}
}
class WasmField2 {
constructor(tm, prefix, F) {
this.tm = tm;
this.prefix = prefix;
this.F = F;
this.type = "F2";
this.m = F.m * 2;
this.n8 = this.F.n8*2;
this.n32 = this.F.n32*2;
this.n64 = this.F.n64*2;
this.pOp1 = tm.alloc(F.n8*2);
this.pOp2 = tm.alloc(F.n8*2);
this.pOp3 = tm.alloc(F.n8*2);
this.tm.instance.exports[prefix + "_zero"](this.pOp1);
this.zero = tm.getBuff(this.pOp1, this.n8);
this.tm.instance.exports[prefix + "_one"](this.pOp1);
this.one = tm.getBuff(this.pOp1, this.n8);
this.negone = this.neg(this.one);
this.two = this.add(this.one, this.one);
}
op2(opName, a, b) {
this.tm.setBuff(this.pOp1, a);
this.tm.setBuff(this.pOp2, b);
this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp2, this.pOp3);
return this.tm.getBuff(this.pOp3, this.n8);
}
op2Bool(opName, a, b) {
this.tm.setBuff(this.pOp1, a);
this.tm.setBuff(this.pOp2, b);
return !!this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp2);
}
op1(opName, a) {
this.tm.setBuff(this.pOp1, a);
this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp3);
return this.tm.getBuff(this.pOp3, this.n8);
}
op1Bool(opName, a) {
this.tm.setBuff(this.pOp1, a);
return !!this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp3);
}
add(a,b) {
return this.op2("_add", a, b);
}
eq(a,b) {
return this.op2Bool("_eq", a, b);
}
isZero(a) {
return this.op1Bool("_isZero", a);
}
sub(a,b) {
return this.op2("_sub", a, b);
}
neg(a) {
return this.op1("_neg", a);
}
inv(a) {
return this.op1("_inverse", a);
}
isNegative(a) {
return this.op1Bool("_isNegative", a);
}
toMontgomery(a) {
return this.op1("_toMontgomery", a);
}
fromMontgomery(a) {
return this.op1("_fromMontgomery", a);
}
mul(a,b) {
return this.op2("_mul", a, b);
}
mul1(a,b) {
return this.op2("_mul1", a, b);
}
div(a, b) {
this.tm.setBuff(this.pOp1, a);
this.tm.setBuff(this.pOp2, b);
this.tm.instance.exports[this.prefix + "_inverse"](this.pOp2, this.pOp2);
this.tm.instance.exports[this.prefix + "_mul"](this.pOp1, this.pOp2, this.pOp3);
return this.tm.getBuff(this.pOp3, this.n8);
}
square(a) {
return this.op1("_square", a);
}
isSquare(a) {
return this.op1Bool("_isSquare", a);
}
sqrt(a) {
return this.op1("_sqrt", a);
}
exp(a, b) {
if (!(b instanceof Uint8Array)) {
b = toLEBuff(e(b));
}
this.tm.setBuff(this.pOp1, a);
this.tm.setBuff(this.pOp2, b);
this.tm.instance.exports[this.prefix + "_exp"](this.pOp1, this.pOp2, b.byteLength, this.pOp3);
return this.tm.getBuff(this.pOp3, this.n8);
}
e(a, b) {
if (a instanceof Uint8Array) return a;
if ((Array.isArray(a)) && (a.length == 2)) {
const c1 = this.F.e(a[0], b);
const c2 = this.F.e(a[1], b);
const res = new Uint8Array(this.F.n8*2);
res.set(c1);
res.set(c2, this.F.n8*2);
return res;
} else {
throw new Error("invalid F2");
}
}
toString(a, radix) {
const s1 = this.F.toString(a.slice(0, this.F.n8), radix);
const s2 = this.F.toString(a.slice(this.F.n8), radix);
return `[${s1}, ${s2}]`;
}
fromRng(rng) {
const c1 = this.F.fromRng(rng);
const c2 = this.F.fromRng(rng);
const res = new Uint8Array(this.F.n8*2);
res.set(c1);
res.set(c2, this.F.n8);
return res;
}
random() {
return this.fromRng(getThreadRng());
}
toObject(a) {
const c1 = this.F.toObject(a.slice(0, this.F.n8));
const c2 = this.F.toObject(a.slice(this.F.n8, this.F.n8*2));
return [c1, c2];
}
fromObject(a) {
const buff = new Uint8Array(this.F.n8*2);
const b1 = this.F.fromObject(a[0]);
const b2 = this.F.fromObject(a[1]);
buff.set(b1);
buff.set(b2, this.F.n8);
return buff;
}
c1(a) {
return a.slice(0, this.F.n8);
}
c2(a) {
return a.slice(this.F.n8);
}
}
class WasmField3 {
constructor(tm, prefix, F) {
this.tm = tm;
this.prefix = prefix;
this.F = F;
this.type = "F3";
this.m = F.m * 3;
this.n8 = this.F.n8*3;
this.n32 = this.F.n32*3;
this.n64 = this.F.n64*3;
this.pOp1 = tm.alloc(F.n8*3);
this.pOp2 = tm.alloc(F.n8*3);
this.pOp3 = tm.alloc(F.n8*3);
this.tm.instance.exports[prefix + "_zero"](this.pOp1);
this.zero = tm.getBuff(this.pOp1, this.n8);
this.tm.instance.exports[prefix + "_one"](this.pOp1);
this.one = tm.getBuff(this.pOp1, this.n8);
this.negone = this.neg(this.one);
this.two = this.add(this.one, this.one);
}
op2(opName, a, b) {
this.tm.setBuff(this.pOp1, a);
this.tm.setBuff(this.pOp2, b);
this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp2, this.pOp3);
return this.tm.getBuff(this.pOp3, this.n8);
}
op2Bool(opName, a, b) {
this.tm.setBuff(this.pOp1, a);
this.tm.setBuff(this.pOp2, b);
return !!this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp2);
}
op1(opName, a) {
this.tm.setBuff(this.pOp1, a);
this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp3);
return this.tm.getBuff(this.pOp3, this.n8);
}
op1Bool(opName, a) {
this.tm.setBuff(this.pOp1, a);
return !!this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp3);
}
eq(a,b) {
return this.op2Bool("_eq", a, b);
}
isZero(a) {
return this.op1Bool("_isZero", a);
}
add(a,b) {
return this.op2("_add", a, b);
}
sub(a,b) {
return this.op2("_sub", a, b);
}
neg(a) {
return this.op1("_neg", a);
}
inv(a) {
return this.op1("_inverse", a);
}
isNegative(a) {
return this.op1Bool("_isNegative", a);
}
toMontgomery(a) {
return this.op1("_toMontgomery", a);
}
fromMontgomery(a) {
return this.op1("_fromMontgomery", a);
}
mul(a,b) {
return this.op2("_mul", a, b);
}
div(a, b) {
this.tm.setBuff(this.pOp1, a);
this.tm.setBuff(this.pOp2, b);
this.tm.instance.exports[this.prefix + "_inverse"](this.pOp2, this.pOp2);
this.tm.instance.exports[this.prefix + "_mul"](this.pOp1, this.pOp2, this.pOp3);
return this.tm.getBuff(this.pOp3, this.n8);
}
square(a) {
return this.op1("_square", a);
}
isSquare(a) {
return this.op1Bool("_isSquare", a);
}
sqrt(a) {
return this.op1("_sqrt", a);
}
exp(a, b) {
if (!(b instanceof Uint8Array)) {
b = toLEBuff(e(b));
}
this.tm.setBuff(this.pOp1, a);
this.tm.setBuff(this.pOp2, b);
this.tm.instance.exports[this.prefix + "_exp"](this.pOp1, this.pOp2, b.byteLength, this.pOp3);
return this.getBuff(this.pOp3, this.n8);
}
e(a, b) {
if (a instanceof Uint8Array) return a;
if ((Array.isArray(a)) && (a.length == 3)) {
const c1 = this.F.e(a[0], b);
const c2 = this.F.e(a[1], b);
const c3 = this.F.e(a[2], b);
const res = new Uint8Array(this.F.n8*3);
res.set(c1);
res.set(c2, this.F.n8);
res.set(c3, this.F.n8*2);
return res;
} else {
throw new Error("invalid F3");
}
}
toString(a, radix) {
const s1 = this.F.toString(a.slice(0, this.F.n8), radix);
const s2 = this.F.toString(a.slice(this.F.n8, this.F.n8*2), radix);
const s3 = this.F.toString(a.slice(this.F.n8*2), radix);
return `[${s1}, ${s2}, ${s3}]`;
}
fromRng(rng) {
const c1 = this.F.fromRng(rng);
const c2 = this.F.fromRng(rng);
const c3 = this.F.fromRng(rng);
const res = new Uint8Array(this.F.n8*3);
res.set(c1);
res.set(c2, this.F.n8);
res.set(c3, this.F.n8*2);
return res;
}
random() {
return this.fromRng(getThreadRng());
}
toObject(a) {
const c1 = this.F.toObject(a.slice(0, this.F.n8));
const c2 = this.F.toObject(a.slice(this.F.n8, this.F.n8*2));
const c3 = this.F.toObject(a.slice(this.F.n8*2, this.F.n8*3));
return [c1, c2, c3];
}
fromObject(a) {
const buff = new Uint8Array(this.F.n8*3);
const b1 = this.F.fromObject(a[0]);
const b2 = this.F.fromObject(a[1]);
const b3 = this.F.fromObject(a[2]);
buff.set(b1);
buff.set(b2, this.F.n8);
buff.set(b3, this.F.n8*2);
return buff;
}
c1(a) {
return a.slice(0, this.F.n8);
}
c2(a) {
return a.slice(this.F.n8, this.F.n8*2);
}
c3(a) {
return a.slice(this.F.n8*2);
}
}
class WasmCurve {
constructor(tm, prefix, F, pGen, pGb, cofactor) {
this.tm = tm;
this.prefix = prefix;
this.F = F;
this.pOp1 = tm.alloc(F.n8*3);
this.pOp2 = tm.alloc(F.n8*3);
this.pOp3 = tm.alloc(F.n8*3);
this.tm.instance.exports[prefix + "_zero"](this.pOp1);
this.zero = this.tm.getBuff(this.pOp1, F.n8*3);
this.tm.instance.exports[prefix + "_zeroAffine"](this.pOp1);
this.zeroAffine = this.tm.getBuff(this.pOp1, F.n8*2);
this.one = this.tm.getBuff(pGen, F.n8*3);
this.g = this.one;
this.oneAffine = this.tm.getBuff(pGen, F.n8*2);
this.gAffine = this.oneAffine;
this.b = this.tm.getBuff(pGb, F.n8);
if (cofactor) {
this.cofactor = toLEBuff(cofactor);
}
this.negone = this.neg(this.one);
this.two = this.add(this.one, this.one);
this.batchLEMtoC = buildBatchConvert(tm, prefix + "_batchLEMtoC", F.n8*2, F.n8);
this.batchLEMtoU = buildBatchConvert(tm, prefix + "_batchLEMtoU", F.n8*2, F.n8*2);
this.batchCtoLEM = buildBatchConvert(tm, prefix + "_batchCtoLEM", F.n8, F.n8*2);
this.batchUtoLEM = buildBatchConvert(tm, prefix + "_batchUtoLEM", F.n8*2, F.n8*2);
this.batchToJacobian = buildBatchConvert(tm, prefix + "_batchToJacobian", F.n8*2, F.n8*3);
this.batchToAffine = buildBatchConvert(tm, prefix + "_batchToAffine", F.n8*3, F.n8*2);
}
op2(opName, a, b) {
this.tm.setBuff(this.pOp1, a);
this.tm.setBuff(this.pOp2, b);
this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp2, this.pOp3);
return this.tm.getBuff(this.pOp3, this.F.n8*3);
}
op2bool(opName, a, b) {
this.tm.setBuff(this.pOp1, a);
this.tm.setBuff(this.pOp2, b);
return !!this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp2, this.pOp3);
}
op1(opName, a) {
this.tm.setBuff(this.pOp1, a);
this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp3);
return this.tm.getBuff(this.pOp3, this.F.n8*3);
}
op1Affine(opName, a) {
this.tm.setBuff(this.pOp1, a);
this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp3);
return this.tm.getBuff(this.pOp3, this.F.n8*2);
}
op1Bool(opName, a) {
this.tm.setBuff(this.pOp1, a);
return !!this.tm.instance.exports[this.prefix + opName](this.pOp1, this.pOp3);
}
add(a,b) {
if (a.byteLength == this.F.n8*3) {
if (b.byteLength == this.F.n8*3) {
return this.op2("_add", a, b);
} else if (b.byteLength == this.F.n8*2) {
return this.op2("_addMixed", a, b);
} else {
throw new Error("invalid point size");
}
} else if (a.byteLength == this.F.n8*2) {
if (b.byteLength == this.F.n8*3) {
return this.op2("_addMixed", b, a);
} else if (b.byteLength == this.F.n8*2) {
return this.op2("_addAffine", a, b);
} else {
throw new Error("invalid point size");
}
} else {
throw new Error("invalid point size");
}
}
sub(a,b) {
if (a.byteLength == this.F.n8*3) {
if (b.byteLength == this.F.n8*3) {
return this.op2("_sub", a, b);
} else if (b.byteLength == this.F.n8*2) {
return this.op2("_subMixed", a, b);
} else {
throw new Error("invalid point size");
}
} else if (a.byteLength == this.F.n8*2) {
if (b.byteLength == this.F.n8*3) {
return this.op2("_subMixed", b, a);
} else if (b.byteLength == this.F.n8*2) {
return this.op2("_subAffine", a, b);
} else {
throw new Error("invalid point size");
}
} else {
throw new Error("invalid point size");
}
}
neg(a) {
if (a.byteLength == this.F.n8*3) {
return this.op1("_neg", a);
} else if (a.byteLength == this.F.n8*2) {
return this.op1Affine("_negAffine", a);
} else {
throw new Error("invalid point size");
}
}
double(a) {
if (a.byteLength == this.F.n8*3) {
return this.op1("_double", a);
} else if (a.byteLength == this.F.n8*2) {
return this.op1("_doubleAffine", a);
} else {
throw new Error("invalid point size");
}
}
isZero(a) {
if (a.byteLength == this.F.n8*3) {
return this.op1Bool("_isZero", a);
} else if (a.byteLength == this.F.n8*2) {
return this.op1Bool("_isZeroAffine", a);
} else {
throw new Error("invalid point size");
}
}
timesScalar(a, s) {
if (!(s instanceof Uint8Array)) {
s = toLEBuff(e(s));
}
let fnName;
if (a.byteLength == this.F.n8*3) {
fnName = this.prefix + "_timesScalar";
} else if (a.byteLength == this.F.n8*2) {
fnName = this.prefix + "_timesScalarAffine";
} else {
throw new Error("invalid point size");
}
this.tm.setBuff(this.pOp1, a);
this.tm.setBuff(this.pOp2, s);
this.tm.instance.exports[fnName](this.pOp1, this.pOp2, s.byteLength, this.pOp3);
return this.tm.getBuff(this.pOp3, this.F.n8*3);
}
timesFr(a, s) {
let fnName;
if (a.byteLength == this.F.n8*3) {
fnName = this.prefix + "_timesFr";
} else if (a.byteLength == this.F.n8*2) {
fnName = this.prefix + "_timesFrAffine";
} else {
throw new Error("invalid point size");
}
this.tm.setBuff(this.pOp1, a);
this.tm.setBuff(this.pOp2, s);
this.tm.instance.exports[fnName](this.pOp1, this.pOp2, this.pOp3);
return this.tm.getBuff(this.pOp3, this.F.n8*3);
}
eq(a,b) {
if (a.byteLength == this.F.n8*3) {
if (b.byteLength == this.F.n8*3) {
return this.op2bool("_eq", a, b);
} else if (b.byteLength == this.F.n8*2) {
return this.op2bool("_eqMixed", a, b);
} else {
throw new Error("invalid point size");
}
} else if (a.byteLength == this.F.n8*2) {
if (b.byteLength == this.F.n8*3) {
return this.op2bool("_eqMixed", b, a);
} else if (b.byteLength == this.F.n8*2) {
return this.op2bool("_eqAffine", a, b);
} else {
throw new Error("invalid point size");
}
} else {
throw new Error("invalid point size");
}
}
toAffine(a) {
if (a.byteLength == this.F.n8*3) {
return this.op1Affine("_toAffine", a);
} else if (a.byteLength == this.F.n8*2) {
return a;
} else {
throw new Error("invalid point size");
}
}
toJacobian(a) {
if (a.byteLength == this.F.n8*3) {
return a;
} else if (a.byteLength == this.F.n8*2) {
return this.op1("_toJacobian", a);
} else {
throw new Error("invalid point size");
}
}
toRprUncompressed(arr, offset, a) {
this.tm.setBuff(this.pOp1, a);
if (a.byteLength == this.F.n8*3) {
this.tm.instance.exports[this.prefix + "_toAffine"](this.pOp1, this.pOp1);
} else if (a.byteLength != this.F.n8*2) {
throw new Error("invalid point size");
}
this.tm.instance.exports[this.prefix + "_LEMtoU"](this.pOp1, this.pOp1);
const res = this.tm.getBuff(this.pOp1, this.F.n8*2);
arr.set(res, offset);
}
fromRprUncompressed(arr, offset) {
const buff = arr.slice(offset, offset + this.F.n8*2);
this.tm.setBuff(this.pOp1, buff);
this.tm.instance.exports[this.prefix + "_UtoLEM"](this.pOp1, this.pOp1);
return this.tm.getBuff(this.pOp1, this.F.n8*2);
}
toRprCompressed(arr, offset, a) {
this.tm.setBuff(this.pOp1, a);
if (a.byteLength == this.F.n8*3) {
this.tm.instance.exports[this.prefix + "_toAffine"](this.pOp1, this.pOp1);
} else if (a.byteLength != this.F.n8*2) {
throw new Error("invalid point size");
}
this.tm.instance.exports[this.prefix + "_LEMtoC"](this.pOp1, this.pOp1);
const res = this.tm.getBuff(this.pOp1, this.F.n8);
arr.set(res, offset);
}
fromRprCompressed(arr, offset) {
const buff = arr.slice(offset, offset + this.F.n8);
this.tm.setBuff(this.pOp1, buff);
this.tm.instance.exports[this.prefix + "_CtoLEM"](this.pOp1, this.pOp2);
return this.tm.getBuff(this.pOp2, this.F.n8*2);
}
toUncompressed(a) {
const buff = new Uint8Array(this.F.n8*2);
this.toRprUncompressed(buff, 0, a);
return buff;
}
toRprLEM(arr, offset, a) {
if (a.byteLength == this.F.n8*2) {
arr.set(a, offset);
return;
} else if (a.byteLength == this.F.n8*3) {
this.tm.setBuff(this.pOp1, a);
this.tm.instance.exports[this.prefix + "_toAffine"](this.pOp1, this.pOp1);
const res = this.tm.getBuff(this.pOp1, this.F.n8*2);
arr.set(res, offset);
} else {
throw new Error("invalid point size");
}
}
fromRprLEM(arr, offset) {
offset = offset || 0;
return arr.slice(offset, offset+this.F.n8*2);
}
toString(a, radix) {
if (a.byteLength == this.F.n8*3) {
const x = this.F.toString(a.slice(0, this.F.n8), radix);
const y = this.F.toString(a.slice(this.F.n8, this.F.n8*2), radix);
const z = this.F.toString(a.slice(this.F.n8*2), radix);
return `[ ${x}, ${y}, ${z} ]`;
} else if (a.byteLength == this.F.n8*2) {
const x = this.F.toString(a.slice(0, this.F.n8), radix);
const y = this.F.toString(a.slice(this.F.n8), radix);
return `[ ${x}, ${y} ]`;
} else {
throw new Error("invalid point size");
}
}
isValid(a) {
if (this.isZero(a)) return true;
const F = this.F;
const aa = this.toAffine(a);
const x = aa.slice(0, this.F.n8);
const y = aa.slice(this.F.n8, this.F.n8*2);
const x3b = F.add(F.mul(F.square(x),x), this.b);
const y2 = F.square(y);
return F.eq(x3b, y2);
}
fromRng(rng) {
const F = this.F;
let P = [];
let greatest;
let x3b;
do {
P[0] = F.fromRng(rng);
greatest = rng.nextBool();
x3b = F.add(F.mul(F.square(P[0]), P[0]), this.b);
} while (!F.isSquare(x3b));
P[1] = F.sqrt(x3b);
const s = F.isNegative(P[1]);
if (greatest ^ s) P[1] = F.neg(P[1]);
let Pbuff = new Uint8Array(this.F.n8*2);
Pbuff.set(P[0]);
Pbuff.set(P[1], this.F.n8);
if (this.cofactor) {
Pbuff = this.timesScalar(Pbuff, this.cofactor);
}
return Pbuff;
}
toObject(a) {
if (this.isZero(a)) {
return [
this.F.toObject(this.F.zero),
this.F.toObject(this.F.one),
this.F.toObject(this.F.zero),
];
}
const x = this.F.toObject(a.slice(0, this.F.n8));
const y = this.F.toObject(a.slice(this.F.n8, this.F.n8*2));
let z;
if (a.byteLength == this.F.n8*3) {
z = this.F.toObject(a.slice(this.F.n8*2, this.F.n8*3));
} else {
z = this.F.toObject(this.F.one);
}
return [x, y, z];
}
fromObject(a) {
const x = this.F.fromObject(a[0]);
const y = this.F.fromObject(a[1]);
let z;
if (a.length==3) {
z = this.F.fromObject(a[2]);
} else {
z = this.F.one;
}
if (this.F.isZero(z, this.F.one)) {
return this.zeroAffine;
} else if (this.F.eq(z, this.F.one)) {
const buff = new Uint8Array(this.F.n8*2);
buff.set(x);
buff.set(y, this.F.n8);
return buff;
} else {
const buff = new Uint8Array(this.F.n8*3);
buff.set(x);
buff.set(y, this.F.n8);
buff.set(z, this.F.n8*2);
return buff;
}
}
e(a) {
if (a instanceof Uint8Array) return a;
return this.fromObject(a);
}
x(a) {
const tmp = this.toAffine(a);
return tmp.slice(0, this.F.n8);
}
y(a) {
const tmp = this.toAffine(a);
return tmp.slice(this.F.n8);
}
}
/* global WebAssembly */
function thread(self) {
const MAXMEM = 32767;
let instance;
let memory;
if (self) {
self.onmessage = function(e) {
let data;
if (e.data) {
data = e.data;
} else {
data = e;
}
if (data[0].cmd == "INIT") {
init(data[0]).then(function() {
self.postMessage(data.result);
});
} else if (data[0].cmd == "TERMINATE") {
self.close();
} else {
const res = runTask(data);
self.postMessage(res);
}
};
}
async function init(data) {
const code = new Uint8Array(data.code);
const wasmModule = await WebAssembly.compile(code);
memory = new WebAssembly.Memory({initial:data.init, maximum: MAXMEM});
instance = await WebAssembly.instantiate(wasmModule, {
env: {
"memory": memory
}
});
}
function alloc(length) {
const u32 = new Uint32Array(memory.buffer, 0, 1);
while (u32[0] & 3) u32[0]++; // Return always aligned pointers
const res = u32[0];
u32[0] += length;
if (u32[0] + length > memory.buffer.byteLength) {
const currentPages = memory.buffer.byteLength / 0x10000;
let requiredPages = Math.floor((u32[0] + length) / 0x10000)+1;
if (requiredPages>MAXMEM) requiredPages=MAXMEM;
memory.grow(requiredPages-currentPages);
}
return res;
}
function allocBuffer(buffer) {
const p = alloc(buffer.byteLength);
setBuffer(p, buffer);
return p;
}
function getBuffer(pointer, length) {
const u8 = new Uint8Array(memory.buffer);
return new Uint8Array(u8.buffer, u8.byteOffset + pointer, length);
}
function setBuffer(pointer, buffer) {
const u8 = new Uint8Array(memory.buffer);
u8.set(new Uint8Array(buffer), pointer);
}
function runTask(task) {
if (task[0].cmd == "INIT") {
return init(task[0]);
}
const ctx = {
vars: [],
out: []
};
const u32a = new Uint32Array(memory.buffer, 0, 1);
const oldAlloc = u32a[0];
for (let i=0; i<task.length; i++) {
switch (task[i].cmd) {
case "ALLOCSET":
ctx.vars[task[i].var] = allocBuffer(task[i].buff);
break;
case "ALLOC":
ctx.vars[task[i].var] = alloc(task[i].len);
break;
case "SET":
setBuffer(ctx.vars[task[i].var], task[i].buff);
break;
case "CALL": {
const params = [];
for (let j=0; j<task[i].params.length; j++) {
const p = task[i].params[j];
if (typeof p.var !== "undefined") {
params.push(ctx.vars[p.var] + (p.offset || 0));
} else if (typeof p.val != "undefined") {
params.push(p.val);
}
}
instance.exports[task[i].fnName](...params);
break;
}
case "GET":
ctx.out[task[i].out] = getBuffer(ctx.vars[task[i].var], task[i].len).slice();
break;
default:
throw new Error("Invalid cmd");
}
}
const u32b = new Uint32Array(memory.buffer, 0, 1);
u32b[0] = oldAlloc;
return ctx.out;
}
return runTask;
}
/**
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
var browser = Worker;
var Worker$1 = /*@__PURE__*/getDefaultExportFromCjs(browser);
/*
Copyright 2019 0KIMS association.
This file is part of wasmsnark (Web Assembly zkSnark Prover).
wasmsnark 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.
wasmsnark 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 wasmsnark. If not, see <https://www.gnu.org/licenses/>.
*/
// const MEM_SIZE = 1000; // Memory size in 64K Pakes (512Mb)
const MEM_SIZE = 25; // Memory size in 64K Pakes (1600Kb)
class Deferred {
constructor() {
this.promise = new Promise((resolve, reject)=> {
this.reject = reject;
this.resolve = resolve;
});
}
}
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
function stringToBase64(str) {
{
return globalThis.btoa(str);
}
}
const threadSource = stringToBase64("(" + "function thread(self) {\n const MAXMEM = 32767;\n let instance;\n let memory;\n\n if (self) {\n self.onmessage = function(e) {\n let data;\n if (e.data) {\n data = e.data;\n } else {\n data = e;\n }\n\n if (data[0].cmd == \"INIT\") {\n init(data[0]).then(function() {\n self.postMessage(data.result);\n });\n } else if (data[0].cmd == \"TERMINATE\") {\n self.close();\n } else {\n const res = runTask(data);\n self.postMessage(res);\n }\n };\n }\n\n async function init(data) {\n const code = new Uint8Array(data.code);\n const wasmModule = await WebAssembly.compile(code);\n memory = new WebAssembly.Memory({initial:data.init, maximum: MAXMEM});\n\n instance = await WebAssembly.instantiate(wasmModule, {\n env: {\n \"memory\": memory\n }\n });\n }\n\n\n\n function alloc(length) {\n const u32 = new Uint32Array(memory.buffer, 0, 1);\n while (u32[0] & 3) u32[0]++; // Return always aligned pointers\n const res = u32[0];\n u32[0] += length;\n if (u32[0] + length > memory.buffer.byteLength) {\n const currentPages = memory.buffer.byteLength / 0x10000;\n let requiredPages = Math.floor((u32[0] + length) / 0x10000)+1;\n if (requiredPages>MAXMEM) requiredPages=MAXMEM;\n memory.grow(requiredPages-currentPages);\n }\n return res;\n }\n\n function allocBuffer(buffer) {\n const p = alloc(buffer.byteLength);\n setBuffer(p, buffer);\n return p;\n }\n\n function getBuffer(pointer, length) {\n const u8 = new Uint8Array(memory.buffer);\n return new Uint8Array(u8.buffer, u8.byteOffset + pointer, length);\n }\n\n function setBuffer(pointer, buffer) {\n const u8 = new Uint8Array(memory.buffer);\n u8.set(new Uint8Array(buffer), pointer);\n }\n\n function runTask(task) {\n if (task[0].cmd == \"INIT\") {\n return init(task[0]);\n }\n const ctx = {\n vars: [],\n out: []\n };\n const u32a = new Uint32Array(memory.buffer, 0, 1);\n const oldAlloc = u32a[0];\n for (let i=0; i<task.length; i++) {\n switch (task[i].cmd) {\n case \"ALLOCSET\":\n ctx.vars[task[i].var] = allocBuffer(task[i].buff);\n break;\n case \"ALLOC\":\n ctx.vars[task[i].var] = alloc(task[i].len);\n break;\n case \"SET\":\n setBuffer(ctx.vars[task[i].var], task[i].buff);\n break;\n case \"CALL\": {\n const params = [];\n for (let j=0; j<task[i].params.length; j++) {\n const p = task[i].params[j];\n if (typeof p.var !== \"undefined\") {\n params.push(ctx.vars[p.var] + (p.offset || 0));\n } else if (typeof p.val != \"undefined\") {\n params.push(p.val);\n }\n }\n instance.exports[task[i].fnName](...params);\n break;\n }\n case \"GET\":\n ctx.out[task[i].out] = getBuffer(ctx.vars[task[i].var], task[i].len).slice();\n break;\n default:\n throw new Error(\"Invalid cmd\");\n }\n }\n const u32b = new Uint32Array(memory.buffer, 0, 1);\n u32b[0] = oldAlloc;\n return ctx.out;\n }\n\n\n return runTask;\n}" + ")(self)");
const workerSource = "data:application/javascript;base64," + threadSource;
async function buildThreadManager(wasm, singleThread) {
const tm = new ThreadManager();
tm.memory = new WebAssembly.Memory({initial:MEM_SIZE});
tm.u8 = new Uint8Array(tm.memory.buffer);
tm.u32 = new Uint32Array(tm.memory.buffer);
const wasmModule = await WebAssembly.compile(wasm.code);
tm.instance = await WebAssembly.instantiate(wasmModule, {
env: {
"memory": tm.memory
}
});
tm.singleThread = singleThread;
tm.initalPFree = tm.u32[0]; // Save the Pointer to free space.
tm.pq = wasm.pq;
tm.pr = wasm.pr;
tm.pG1gen = wasm.pG1gen;
tm.pG1zero = wasm.pG1zero;
tm.pG2gen = wasm.pG2gen;
tm.pG2zero = wasm.pG2zero;
tm.pOneT = wasm.pOneT;
// tm.pTmp0 = tm.alloc(curve.G2.F.n8*3);
// tm.pTmp1 = tm.alloc(curve.G2.F.n8*3);
if (singleThread) {
tm.code = wasm.code;
tm.taskManager = thread();
await tm.taskManager([{
cmd: "INIT",
init: MEM_SIZE,
code: tm.code.slice()
}]);
tm.concurrency = 1;
} else {
tm.workers = [];
tm.pendingDeferreds = [];
tm.working = [];
let concurrency = 2;
{
if (typeof navigator === "object" && navigator.hardwareConcurrency) {
concurrency = navigator.hardwareConcurrency;
}
}
if(concurrency == 0){
concurrency = 2;
}
// Limit to 64 threads for memory reasons.
if (concurrency>64) concurrency=64;
tm.concurrency = concurrency;
for (let i = 0; i<concurrency; i++) {
tm.workers[i] = new Worker$1(workerSource);
tm.workers[i].addEventListener("message", getOnMsg(i));
tm.working[i]=false;
}
const initPromises = [];
for (let i=0; i<tm.workers.length;i++) {
const copyCode = wasm.code.slice();
initPromises.push(tm.postAction(i, [{
cmd: "INIT",
init: MEM_SIZE,
code: copyCode
}], [copyCode.buffer]));
}
await Promise.all(initPromises);
}
return tm;
function getOnMsg(i) {
return function(e) {
let data;
if ((e)&&(e.data)) {
data = e.data;
} else {
data = e;
}
tm.working[i]=false;
tm.pendingDeferreds[i].resolve(data);
tm.processWorks();
};
}
}
class ThreadManager {
constructor() {
this.actionQueue = [];
this.oldPFree = 0;
}
startSyncOp() {
if (this.oldPFree != 0) throw new Error("Sync operation in progress");
this.oldPFree = this.u32[0];
}
endSyncOp() {
if (this.oldPFree == 0) throw new Error("No sync operation in progress");
this.u32[0] = this.oldPFree;
this.oldPFree = 0;
}
postAction(workerId, e, transfers, _deferred) {
if (this.working[workerId]) {
throw new Error("Posting a job t a working worker");
}
this.working[workerId] = true;
this.pendingDeferreds[workerId] = _deferred ? _deferred : new Deferred();
this.workers[workerId].postMessage(e, transfers);
return this.pendingDeferreds[workerId].promise;
}
processWorks() {
for (let i=0; (i<this.workers.length)&&(this.actionQueue.length > 0); i++) {
if (this.working[i] == false) {
const work = this.actionQueue.shift();
this.postAction(i, work.data, work.transfers, work.deferred);
}
}
}
queueAction(actionData, transfers) {
const d = new Deferred();
if (this.singleThread) {
const res = this.taskManager(actionData);
d.resolve(res);
} else {
this.actionQueue.push({
data: actionData,
transfers: transfers,
deferred: d
});
this.processWorks();
}
return d.promise;
}
resetMemory() {
this.u32[0] = this.initalPFree;
}
allocBuff(buff) {
const pointer = this.alloc(buff.byteLength);
this.setBuff(pointer, buff);
return pointer;
}
getBuff(pointer, length) {
return this.u8.slice(pointer, pointer+ length);
}
setBuff(pointer, buffer) {
this.u8.set(new Uint8Array(buffer), pointer);
}
alloc(length) {
while (this.u32[0] & 3) this.u32[0]++; // Return always aligned pointers
const res = this.u32[0];
this.u32[0] += length;
return res;
}
async terminate() {
for (let i=0; i<this.workers.length; i++) {
this.workers[i].postMessage([{cmd: "TERMINATE"}]);
}
await sleep(200);
}
}
function buildBatchApplyKey(curve, groupName) {
const G = curve[groupName];
const Fr = curve.Fr;
const tm = curve.tm;
curve[groupName].batchApplyKey = async function(buff, first, inc, inType, outType) {
inType = inType || "affine";
outType = outType || "affine";
let fnName, fnAffine;
let sGin, sGmid, sGout;
if (groupName == "G1") {
if (inType == "jacobian") {
sGin = G.F.n8*3;
fnName = "g1m_batchApplyKey";
} else {
sGin = G.F.n8*2;
fnName = "g1m_batchApplyKeyMixed";
}
sGmid = G.F.n8*3;
if (outType == "jacobian") {
sGout = G.F.n8*3;
} else {
fnAffine = "g1m_batchToAffine";
sGout = G.F.n8*2;
}
} else if (groupName == "G2") {
if (inType == "jacobian") {
sGin = G.F.n8*3;
fnName = "g2m_batchApplyKey";
} else {
sGin = G.F.n8*2;
fnName = "g2m_batchApplyKeyMixed";
}
sGmid = G.F.n8*3;
if (outType == "jacobian") {
sGout = G.F.n8*3;
} else {
fnAffine = "g2m_batchToAffine";
sGout = G.F.n8*2;
}
} else if (groupName == "Fr") {
fnName = "frm_batchApplyKey";
sGin = G.n8;
sGmid = G.n8;
sGout = G.n8;
} else {
throw new Error("Invalid group: " + groupName);
}
const nPoints = Math.floor(buff.byteLength / sGin);
const pointsPerChunk = Math.floor(nPoints/tm.concurrency);
const opPromises = [];
inc = Fr.e(inc);
let t = Fr.e(first);
for (let i=0; i<tm.concurrency; i++) {
let n;
if (i< tm.concurrency-1) {
n = pointsPerChunk;
} else {
n = nPoints - i*pointsPerChunk;
}
if (n==0) continue;
const task = [];
task.push({
cmd: "ALLOCSET",
var: 0,
buff: buff.slice(i*pointsPerChunk*sGin, i*pointsPerChunk*sGin + n*sGin)
});
task.push({cmd: "ALLOCSET", var: 1, buff: t});
task.push({cmd: "ALLOCSET", var: 2, buff: inc});
task.push({cmd: "ALLOC", var: 3, len: n*Math.max(sGmid, sGout)});
task.push({
cmd: "CALL",
fnName: fnName,
params: [
{var: 0},
{val: n},
{var: 1},
{var: 2},
{var:3}
]
});
if (fnAffine) {
task.push({
cmd: "CALL",
fnName: fnAffine,
params: [
{var: 3},
{val: n},
{var: 3},
]
});
}
task.push({cmd: "GET", out: 0, var: 3, len: n*sGout});
opPromises.push(tm.queueAction(task));
t = Fr.mul(t, Fr.exp(inc, n));
}
const result = await Promise.all(opPromises);
let outBuff;
if (buff instanceof BigBuffer) {
outBuff = new BigBuffer(nPoints*sGout);
} else {
outBuff = new Uint8Array(nPoints*sGout);
}
let p=0;
for (let i=0; i<result.length; i++) {
outBuff.set(result[i][0], p);
p += result[i][0].byteLength;
}
return outBuff;
};
}
function buildPairing(curve) {
const tm = curve.tm;
curve.pairing = function pairing(a, b) {
tm.startSyncOp();
const pA = tm.allocBuff(curve.G1.toJacobian(a));
const pB = tm.allocBuff(curve.G2.toJacobian(b));
const pRes = tm.alloc(curve.Gt.n8);
tm.instance.exports[curve.name + "_pairing"](pA, pB, pRes);
const res = tm.getBuff(pRes, curve.Gt.n8);
tm.endSyncOp();
return res;
};
curve.pairingEq = async function pairingEq() {
let buffCt;
let nEqs;
if ((arguments.length % 2) == 1) {
buffCt = arguments[arguments.length-1];
nEqs = (arguments.length -1) /2;
} else {
buffCt = curve.Gt.one;
nEqs = arguments.length /2;
}
const opPromises = [];
for (let i=0; i<nEqs; i++) {
const task = [];
const g1Buff = curve.G1.toJacobian(arguments[i*2]);
task.push({cmd: "ALLOCSET", var: 0, buff: g1Buff});
task.push({cmd: "ALLOC", var: 1, len: curve.prePSize});
const g2Buff = curve.G2.toJacobian(arguments[i*2 +1]);
task.push({cmd: "ALLOCSET", var: 2, buff: g2Buff});
task.push({cmd: "ALLOC", var: 3, len: curve.preQSize});
task.push({cmd: "ALLOC", var: 4, len: curve.Gt.n8});
task.push({cmd: "CALL", fnName: curve.name + "_prepareG1", params: [
{var: 0},
{var: 1}
]});
task.push({cmd: "CALL", fnName: curve.name + "_prepareG2", params: [
{var: 2},
{var: 3}
]});
task.push({cmd: "CALL", fnName: curve.name + "_millerLoop", params: [
{var: 1},
{var: 3},
{var: 4}
]});
task.push({cmd: "GET", out: 0, var: 4, len: curve.Gt.n8});
opPromises.push(
tm.queueAction(task)
);
}
const result = await Promise.all(opPromises);
tm.startSyncOp();
const pRes = tm.alloc(curve.Gt.n8);
tm.instance.exports.ftm_one(pRes);
for (let i=0; i<result.length; i++) {
const pMR = tm.allocBuff(result[i][0]);
tm.instance.exports.ftm_mul(pRes, pMR, pRes);
}
tm.instance.exports[curve.name + "_finalExponentiation"](pRes, pRes);
const pCt = tm.allocBuff(buffCt);
const r = !!tm.instance.exports.ftm_eq(pRes, pCt);
tm.endSyncOp();
return r;
};
curve.prepareG1 = function(p) {
this.tm.startSyncOp();
const pP = this.tm.allocBuff(p);
const pPrepP = this.tm.alloc(this.prePSize);
this.tm.instance.exports[this.name + "_prepareG1"](pP, pPrepP);
const res = this.tm.getBuff(pPrepP, this.prePSize);
this.tm.endSyncOp();
return res;
};
curve.prepareG2 = function(q) {
this.tm.startSyncOp();
const pQ = this.tm.allocBuff(q);
const pPrepQ = this.tm.alloc(this.preQSize);
this.tm.instance.exports[this.name + "_prepareG2"](pQ, pPrepQ);
const res = this.tm.getBuff(pPrepQ, this.preQSize);
this.tm.endSyncOp();
return res;
};
curve.millerLoop = function(preP, preQ) {
this.tm.startSyncOp();
const pPreP = this.tm.allocBuff(preP);
const pPreQ = this.tm.allocBuff(preQ);
const pRes = this.tm.alloc(this.Gt.n8);
this.tm.instance.exports[this.name + "_millerLoop"](pPreP, pPreQ, pRes);
const res = this.tm.getBuff(pRes, this.Gt.n8);
this.tm.endSyncOp();
return res;
};
curve.finalExponentiation = function(a) {
this.tm.startSyncOp();
const pA = this.tm.allocBuff(a);
const pRes = this.tm.alloc(this.Gt.n8);
this.tm.instance.exports[this.name + "_finalExponentiation"](pA, pRes);
const res = this.tm.getBuff(pRes, this.Gt.n8);
this.tm.endSyncOp();
return res;
};
}
const pTSizes = [
1 , 1, 1, 1, 2, 3, 4, 5,
6 , 7, 7, 8, 9, 10, 11, 12,
13, 13, 14, 15, 16, 16, 17, 17,
17, 17, 17, 17, 17, 17, 17, 17
];
function buildMultiexp(curve, groupName) {
const G = curve[groupName];
const tm = G.tm;
async function _multiExpChunk(buffBases, buffScalars, inType, logger, logText) {
if ( ! (buffBases instanceof Uint8Array) ) {
if (logger) logger.error(`${logText} _multiExpChunk buffBases is not Uint8Array`);
throw new Error(`${logText} _multiExpChunk buffBases is not Uint8Array`);
}
if ( ! (buffScalars instanceof Uint8Array) ) {
if (logger) logger.error(`${logText} _multiExpChunk buffScalars is not Uint8Array`);
throw new Error(`${logText} _multiExpChunk buffScalars is not Uint8Array`);
}
inType = inType || "affine";
let sGIn;
let fnName;
if (groupName == "G1") {
if (inType == "affine") {
fnName = "g1m_multiexpAffine_chunk";
sGIn = G.F.n8*2;
} else {
fnName = "g1m_multiexp_chunk";
sGIn = G.F.n8*3;
}
} else if (groupName == "G2") {
if (inType == "affine") {
fnName = "g2m_multiexpAffine_chunk";
sGIn = G.F.n8*2;
} else {
fnName = "g2m_multiexp_chunk";
sGIn = G.F.n8*3;
}
} else {
throw new Error("Invalid group");
}
const nPoints = Math.floor(buffBases.byteLength / sGIn);
if (nPoints == 0) return G.zero;
const sScalar = Math.floor(buffScalars.byteLength / nPoints);
if( sScalar * nPoints != buffScalars.byteLength) {
throw new Error("Scalar size does not match");
}
const bitChunkSize = pTSizes[log2(nPoints)];
const nChunks = Math.floor((sScalar*8 - 1) / bitChunkSize) +1;
const opPromises = [];
for (let i=0; i<nChunks; i++) {
const task = [
{cmd: "ALLOCSET", var: 0, buff: buffBases},
{cmd: "ALLOCSET", var: 1, buff: buffScalars},
{cmd: "ALLOC", var: 2, len: G.F.n8*3},
{cmd: "CALL", fnName: fnName, params: [
{var: 0},
{var: 1},
{val: sScalar},
{val: nPoints},
{val: i*bitChunkSize},
{val: Math.min(sScalar*8 - i*bitChunkSize, bitChunkSize)},
{var: 2}
]},
{cmd: "GET", out: 0, var: 2, len: G.F.n8*3}
];
opPromises.push(
G.tm.queueAction(task)
);
}
const result = await Promise.all(opPromises);
let res = G.zero;
for (let i=result.length-1; i>=0; i--) {
if (!G.isZero(res)) {
for (let j=0; j<bitChunkSize; j++) res = G.double(res);
}
res = G.add(res, result[i][0]);
}
return res;
}
async function _multiExp(buffBases, buffScalars, inType, logger, logText) {
const MAX_CHUNK_SIZE = 1 << 22;
const MIN_CHUNK_SIZE = 1 << 10;
let sGIn;
if (groupName == "G1") {
if (inType == "affine") {
sGIn = G.F.n8*2;
} else {
sGIn = G.F.n8*3;
}
} else if (groupName == "G2") {
if (inType == "affine") {
sGIn = G.F.n8*2;
} else {
sGIn = G.F.n8*3;
}
} else {
throw new Error("Invalid group");
}
const nPoints = Math.floor(buffBases.byteLength / sGIn);
const sScalar = Math.floor(buffScalars.byteLength / nPoints);
if( sScalar * nPoints != buffScalars.byteLength) {
throw new Error("Scalar size does not match");
}
const bitChunkSize = pTSizes[log2(nPoints)];
const nChunks = Math.floor((sScalar*8 - 1) / bitChunkSize) +1;
let chunkSize;
chunkSize = Math.floor(nPoints / (tm.concurrency /nChunks));
if (chunkSize>MAX_CHUNK_SIZE) chunkSize = MAX_CHUNK_SIZE;
if (chunkSize<MIN_CHUNK_SIZE) chunkSize = MIN_CHUNK_SIZE;
const opPromises = [];
for (let i=0; i<nPoints; i += chunkSize) {
if (logger) logger.debug(`Multiexp start: ${logText}: ${i}/${nPoints}`);
const n= Math.min(nPoints - i, chunkSize);
const buffBasesChunk = buffBases.slice(i*sGIn, (i+n)*sGIn);
const buffScalarsChunk = buffScalars.slice(i*sScalar, (i+n)*sScalar);
opPromises.push(_multiExpChunk(buffBasesChunk, buffScalarsChunk, inType, logger, logText).then( (r) => {
if (logger) logger.debug(`Multiexp end: ${logText}: ${i}/${nPoints}`);
return r;
}));
}
const result = await Promise.all(opPromises);
let res = G.zero;
for (let i=result.length-1; i>=0; i--) {
res = G.add(res, result[i]);
}
return res;
}
G.multiExp = async function multiExpAffine(buffBases, buffScalars, logger, logText) {
return await _multiExp(buffBases, buffScalars, "jacobian", logger, logText);
};
G.multiExpAffine = async function multiExpAffine(buffBases, buffScalars, logger, logText) {
return await _multiExp(buffBases, buffScalars, "affine", logger, logText);
};
}
function buildFFT(curve, groupName) {
const G = curve[groupName];
const Fr = curve.Fr;
const tm = G.tm;
async function _fft(buff, inverse, inType, outType, logger, loggerTxt) {
inType = inType || "affine";
outType = outType || "affine";
const MAX_BITS_THREAD = 14;
let sIn, sMid, sOut, fnIn2Mid, fnMid2Out, fnFFTMix, fnFFTJoin, fnFFTFinal;
if (groupName == "G1") {
if (inType == "affine") {
sIn = G.F.n8*2;
fnIn2Mid = "g1m_batchToJacobian";
} else {
sIn = G.F.n8*3;
}
sMid = G.F.n8*3;
if (inverse) {
fnFFTFinal = "g1m_fftFinal";
}
fnFFTJoin = "g1m_fftJoin";
fnFFTMix = "g1m_fftMix";
if (outType == "affine") {
sOut = G.F.n8*2;
fnMid2Out = "g1m_batchToAffine";
} else {
sOut = G.F.n8*3;
}
} else if (groupName == "G2") {
if (inType == "affine") {
sIn = G.F.n8*2;
fnIn2Mid = "g2m_batchToJacobian";
} else {
sIn = G.F.n8*3;
}
sMid = G.F.n8*3;
if (inverse) {
fnFFTFinal = "g2m_fftFinal";
}
fnFFTJoin = "g2m_fftJoin";
fnFFTMix = "g2m_fftMix";
if (outType == "affine") {
sOut = G.F.n8*2;
fnMid2Out = "g2m_batchToAffine";
} else {
sOut = G.F.n8*3;
}
} else if (groupName == "Fr") {
sIn = G.n8;
sMid = G.n8;
sOut = G.n8;
if (inverse) {
fnFFTFinal = "frm_fftFinal";
}
fnFFTMix = "frm_fftMix";
fnFFTJoin = "frm_fftJoin";
}
let returnArray = false;
if (Array.isArray(buff)) {
buff = array2buffer(buff, sIn);
returnArray = true;
} else {
buff = buff.slice(0, buff.byteLength);
}
const nPoints = buff.byteLength / sIn;
const bits = log2(nPoints);
if ((1 << bits) != nPoints) {
throw new Error("fft must be multiple of 2" );
}
if (bits == Fr.s +1) {
let buffOut;
if (inverse) {
buffOut = await _fftExtInv(buff, inType, outType, logger, loggerTxt);
} else {
buffOut = await _fftExt(buff, inType, outType, logger, loggerTxt);
}
if (returnArray) {
return buffer2array(buffOut, sOut);
} else {
return buffOut;
}
}
let inv;
if (inverse) {
inv = Fr.inv(Fr.e(nPoints));
}
let buffOut;
buffReverseBits(buff, sIn);
let chunks;
let pointsInChunk = Math.min(1 << MAX_BITS_THREAD, nPoints);
let nChunks = nPoints / pointsInChunk;
while ((nChunks < tm.concurrency)&&(pointsInChunk>=16)) {
nChunks *= 2;
pointsInChunk /= 2;
}
const l2Chunk = log2(pointsInChunk);
const promises = [];
for (let i = 0; i< nChunks; i++) {
if (logger) logger.debug(`${loggerTxt}: fft ${bits} mix start: ${i}/${nChunks}`);
const task = [];
task.push({cmd: "ALLOC", var: 0, len: sMid*pointsInChunk});
const buffChunk = buff.slice( (pointsInChunk * i)*sIn, (pointsInChunk * (i+1))*sIn);
task.push({cmd: "SET", var: 0, buff: buffChunk});
if (fnIn2Mid) {
task.push({cmd: "CALL", fnName:fnIn2Mid, params: [{var:0}, {val: pointsInChunk}, {var: 0}]});
}
for (let j=1; j<=l2Chunk;j++) {
task.push({cmd: "CALL", fnName:fnFFTMix, params: [{var:0}, {val: pointsInChunk}, {val: j}]});
}
if (l2Chunk==bits) {
if (fnFFTFinal) {
task.push({cmd: "ALLOCSET", var: 1, buff: inv});
task.push({cmd: "CALL", fnName: fnFFTFinal, params:[
{var: 0},
{val: pointsInChunk},
{var: 1},
]});
}
if (fnMid2Out) {
task.push({cmd: "CALL", fnName:fnMid2Out, params: [{var:0}, {val: pointsInChunk}, {var: 0}]});
}
task.push({cmd: "GET", out: 0, var: 0, len: pointsInChunk*sOut});
} else {
task.push({cmd: "GET", out:0, var: 0, len: sMid*pointsInChunk});
}
promises.push(tm.queueAction(task).then( (r) => {
if (logger) logger.debug(`${loggerTxt}: fft ${bits} mix end: ${i}/${nChunks}`);
return r;
}));
}
chunks = await Promise.all(promises);
for (let i = 0; i< nChunks; i++) chunks[i] = chunks[i][0];
for (let i = l2Chunk+1; i<=bits; i++) {
if (logger) logger.debug(`${loggerTxt}: fft ${bits} join: ${i}/${bits}`);
const nGroups = 1 << (bits - i);
const nChunksPerGroup = nChunks / nGroups;
const opPromises = [];
for (let j=0; j<nGroups; j++) {
for (let k=0; k <nChunksPerGroup/2; k++) {
const first = Fr.exp( Fr.w[i], k*pointsInChunk);
const inc = Fr.w[i];
const o1 = j*nChunksPerGroup + k;
const o2 = j*nChunksPerGroup + k + nChunksPerGroup/2;
const task = [];
task.push({cmd: "ALLOCSET", var: 0, buff: chunks[o1]});
task.push({cmd: "ALLOCSET", var: 1, buff: chunks[o2]});
task.push({cmd: "ALLOCSET", var: 2, buff: first});
task.push({cmd: "ALLOCSET", var: 3, buff: inc});
task.push({cmd: "CALL", fnName: fnFFTJoin, params:[
{var: 0},
{var: 1},
{val: pointsInChunk},
{var: 2},
{var: 3}
]});
if (i==bits) {
if (fnFFTFinal) {
task.push({cmd: "ALLOCSET", var: 4, buff: inv});
task.push({cmd: "CALL", fnName: fnFFTFinal, params:[
{var: 0},
{val: pointsInChunk},
{var: 4},
]});
task.push({cmd: "CALL", fnName: fnFFTFinal, params:[
{var: 1},
{val: pointsInChunk},
{var: 4},
]});
}
if (fnMid2Out) {
task.push({cmd: "CALL", fnName:fnMid2Out, params: [{var:0}, {val: pointsInChunk}, {var: 0}]});
task.push({cmd: "CALL", fnName:fnMid2Out, params: [{var:1}, {val: pointsInChunk}, {var: 1}]});
}
task.push({cmd: "GET", out: 0, var: 0, len: pointsInChunk*sOut});
task.push({cmd: "GET", out: 1, var: 1, len: pointsInChunk*sOut});
} else {
task.push({cmd: "GET", out: 0, var: 0, len: pointsInChunk*sMid});
task.push({cmd: "GET", out: 1, var: 1, len: pointsInChunk*sMid});
}
opPromises.push(tm.queueAction(task).then( (r) => {
if (logger) logger.debug(`${loggerTxt}: fft ${bits} join ${i}/${bits} ${j+1}/${nGroups} ${k}/${nChunksPerGroup/2}`);
return r;
}));
}
}
const res = await Promise.all(opPromises);
for (let j=0; j<nGroups; j++) {
for (let k=0; k <nChunksPerGroup/2; k++) {
const o1 = j*nChunksPerGroup + k;
const o2 = j*nChunksPerGroup + k + nChunksPerGroup/2;
const resChunk = res.shift();
chunks[o1] = resChunk[0];
chunks[o2] = resChunk[1];
}
}
}
if (buff instanceof BigBuffer) {
buffOut = new BigBuffer(nPoints*sOut);
} else {
buffOut = new Uint8Array(nPoints*sOut);
}
if (inverse) {
buffOut.set(chunks[0].slice((pointsInChunk-1)*sOut));
let p= sOut;
for (let i=nChunks-1; i>0; i--) {
buffOut.set(chunks[i], p);
p += pointsInChunk*sOut;
delete chunks[i]; // Liberate mem
}
buffOut.set(chunks[0].slice(0, (pointsInChunk-1)*sOut), p);
delete chunks[0];
} else {
for (let i=0; i<nChunks; i++) {
buffOut.set(chunks[i], pointsInChunk*sOut*i);
delete chunks[i];
}
}
if (returnArray) {
return buffer2array(buffOut, sOut);
} else {
return buffOut;
}
}
async function _fftExt(buff, inType, outType, logger, loggerTxt) {
let b1, b2;
b1 = buff.slice( 0 , buff.byteLength/2);
b2 = buff.slice( buff.byteLength/2, buff.byteLength);
const promises = [];
[b1, b2] = await _fftJoinExt(b1, b2, "fftJoinExt", Fr.one, Fr.shift, inType, "jacobian", logger, loggerTxt);
promises.push( _fft(b1, false, "jacobian", outType, logger, loggerTxt));
promises.push( _fft(b2, false, "jacobian", outType, logger, loggerTxt));
const res1 = await Promise.all(promises);
let buffOut;
if (res1[0].byteLength > (1<<28)) {
buffOut = new BigBuffer(res1[0].byteLength*2);
} else {
buffOut = new Uint8Array(res1[0].byteLength*2);
}
buffOut.set(res1[0]);
buffOut.set(res1[1], res1[0].byteLength);
return buffOut;
}
async function _fftExtInv(buff, inType, outType, logger, loggerTxt) {
let b1, b2;
b1 = buff.slice( 0 , buff.byteLength/2);
b2 = buff.slice( buff.byteLength/2, buff.byteLength);
const promises = [];
promises.push( _fft(b1, true, inType, "jacobian", logger, loggerTxt));
promises.push( _fft(b2, true, inType, "jacobian", logger, loggerTxt));
[b1, b2] = await Promise.all(promises);
const res1 = await _fftJoinExt(b1, b2, "fftJoinExtInv", Fr.one, Fr.shiftInv, "jacobian", outType, logger, loggerTxt);
let buffOut;
if (res1[0].byteLength > (1<<28)) {
buffOut = new BigBuffer(res1[0].byteLength*2);
} else {
buffOut = new Uint8Array(res1[0].byteLength*2);
}
buffOut.set(res1[0]);
buffOut.set(res1[1], res1[0].byteLength);
return buffOut;
}
async function _fftJoinExt(buff1, buff2, fn, first, inc, inType, outType, logger, loggerTxt) {
const MAX_CHUNK_SIZE = 1<<16;
const MIN_CHUNK_SIZE = 1<<4;
let fnName;
let fnIn2Mid, fnMid2Out;
let sOut, sIn, sMid;
if (groupName == "G1") {
if (inType == "affine") {
sIn = G.F.n8*2;
fnIn2Mid = "g1m_batchToJacobian";
} else {
sIn = G.F.n8*3;
}
sMid = G.F.n8*3;
fnName = "g1m_"+fn;
if (outType == "affine") {
fnMid2Out = "g1m_batchToAffine";
sOut = G.F.n8*2;
} else {
sOut = G.F.n8*3;
}
} else if (groupName == "G2") {
if (inType == "affine") {
sIn = G.F.n8*2;
fnIn2Mid = "g2m_batchToJacobian";
} else {
sIn = G.F.n8*3;
}
fnName = "g2m_"+fn;
sMid = G.F.n8*3;
if (outType == "affine") {
fnMid2Out = "g2m_batchToAffine";
sOut = G.F.n8*2;
} else {
sOut = G.F.n8*3;
}
} else if (groupName == "Fr") {
sIn = Fr.n8;
sOut = Fr.n8;
sMid = Fr.n8;
fnName = "frm_" + fn;
} else {
throw new Error("Invalid group");
}
if (buff1.byteLength != buff2.byteLength) {
throw new Error("Invalid buffer size");
}
const nPoints = Math.floor(buff1.byteLength / sIn);
if (nPoints != 1 << log2(nPoints)) {
throw new Error("Invalid number of points");
}
let chunkSize = Math.floor(nPoints /tm.concurrency);
if (chunkSize < MIN_CHUNK_SIZE) chunkSize = MIN_CHUNK_SIZE;
if (chunkSize > MAX_CHUNK_SIZE) chunkSize = MAX_CHUNK_SIZE;
const opPromises = [];
for (let i=0; i<nPoints; i += chunkSize) {
if (logger) logger.debug(`${loggerTxt}: fftJoinExt Start: ${i}/${nPoints}`);
const n= Math.min(nPoints - i, chunkSize);
const firstChunk = Fr.mul(first, Fr.exp( inc, i));
const task = [];
const b1 = buff1.slice(i*sIn, (i+n)*sIn);
const b2 = buff2.slice(i*sIn, (i+n)*sIn);
task.push({cmd: "ALLOC", var: 0, len: sMid*n});
task.push({cmd: "SET", var: 0, buff: b1});
task.push({cmd: "ALLOC", var: 1, len: sMid*n});
task.push({cmd: "SET", var: 1, buff: b2});
task.push({cmd: "ALLOCSET", var: 2, buff: firstChunk});
task.push({cmd: "ALLOCSET", var: 3, buff: inc});
if (fnIn2Mid) {
task.push({cmd: "CALL", fnName:fnIn2Mid, params: [{var:0}, {val: n}, {var: 0}]});
task.push({cmd: "CALL", fnName:fnIn2Mid, params: [{var:1}, {val: n}, {var: 1}]});
}
task.push({cmd: "CALL", fnName: fnName, params: [
{var: 0},
{var: 1},
{val: n},
{var: 2},
{var: 3},
{val: Fr.s},
]});
if (fnMid2Out) {
task.push({cmd: "CALL", fnName:fnMid2Out, params: [{var:0}, {val: n}, {var: 0}]});
task.push({cmd: "CALL", fnName:fnMid2Out, params: [{var:1}, {val: n}, {var: 1}]});
}
task.push({cmd: "GET", out: 0, var: 0, len: n*sOut});
task.push({cmd: "GET", out: 1, var: 1, len: n*sOut});
opPromises.push(
tm.queueAction(task).then( (r) => {
if (logger) logger.debug(`${loggerTxt}: fftJoinExt End: ${i}/${nPoints}`);
return r;
})
);
}
const result = await Promise.all(opPromises);
let fullBuffOut1;
let fullBuffOut2;
if (nPoints * sOut > 1<<28) {
fullBuffOut1 = new BigBuffer(nPoints*sOut);
fullBuffOut2 = new BigBuffer(nPoints*sOut);
} else {
fullBuffOut1 = new Uint8Array(nPoints*sOut);
fullBuffOut2 = new Uint8Array(nPoints*sOut);
}
let p =0;
for (let i=0; i<result.length; i++) {
fullBuffOut1.set(result[i][0], p);
fullBuffOut2.set(result[i][1], p);
p+=result[i][0].byteLength;
}
return [fullBuffOut1, fullBuffOut2];
}
G.fft = async function(buff, inType, outType, logger, loggerTxt) {
return await _fft(buff, false, inType, outType, logger, loggerTxt);
};
G.ifft = async function(buff, inType, outType, logger, loggerTxt) {
return await _fft(buff, true, inType, outType, logger, loggerTxt);
};
G.lagrangeEvaluations = async function (buff, inType, outType, logger, loggerTxt) {
inType = inType || "affine";
outType = outType || "affine";
let sIn;
if (groupName == "G1") {
if (inType == "affine") {
sIn = G.F.n8*2;
} else {
sIn = G.F.n8*3;
}
} else if (groupName == "G2") {
if (inType == "affine") {
sIn = G.F.n8*2;
} else {
sIn = G.F.n8*3;
}
} else if (groupName == "Fr") {
sIn = Fr.n8;
} else {
throw new Error("Invalid group");
}
const nPoints = buff.byteLength /sIn;
const bits = log2(nPoints);
if ((2 ** bits)*sIn != buff.byteLength) {
if (logger) logger.error("lagrangeEvaluations iinvalid input size");
throw new Error("lagrangeEvaluations invalid Input size");
}
if (bits <= Fr.s) {
return await G.ifft(buff, inType, outType, logger, loggerTxt);
}
if (bits > Fr.s+1) {
if (logger) logger.error("lagrangeEvaluations input too big");
throw new Error("lagrangeEvaluations input too big");
}
let t0 = buff.slice(0, buff.byteLength/2);
let t1 = buff.slice(buff.byteLength/2, buff.byteLength);
const shiftToSmallM = Fr.exp(Fr.shift, nPoints/2);
const sConst = Fr.inv( Fr.sub(Fr.one, shiftToSmallM));
[t0, t1] = await _fftJoinExt(t0, t1, "prepareLagrangeEvaluation", sConst, Fr.shiftInv, inType, "jacobian", logger, loggerTxt + " prep");
const promises = [];
promises.push( _fft(t0, true, "jacobian", outType, logger, loggerTxt + " t0"));
promises.push( _fft(t1, true, "jacobian", outType, logger, loggerTxt + " t1"));
[t0, t1] = await Promise.all(promises);
let buffOut;
if (t0.byteLength > (1<<28)) {
buffOut = new BigBuffer(t0.byteLength*2);
} else {
buffOut = new Uint8Array(t0.byteLength*2);
}
buffOut.set(t0);
buffOut.set(t1, t0.byteLength);
return buffOut;
};
G.fftMix = async function fftMix(buff) {
const sG = G.F.n8*3;
let fnName, fnFFTJoin;
if (groupName == "G1") {
fnName = "g1m_fftMix";
fnFFTJoin = "g1m_fftJoin";
} else if (groupName == "G2") {
fnName = "g2m_fftMix";
fnFFTJoin = "g2m_fftJoin";
} else if (groupName == "Fr") {
fnName = "frm_fftMix";
fnFFTJoin = "frm_fftJoin";
} else {
throw new Error("Invalid group");
}
const nPoints = Math.floor(buff.byteLength / sG);
const power = log2(nPoints);
let nChunks = 1 << log2(tm.concurrency);
if (nPoints <= nChunks*2) nChunks = 1;
const pointsPerChunk = nPoints / nChunks;
const powerChunk = log2(pointsPerChunk);
const opPromises = [];
for (let i=0; i<nChunks; i++) {
const task = [];
const b = buff.slice((i* pointsPerChunk)*sG, ((i+1)* pointsPerChunk)*sG);
task.push({cmd: "ALLOCSET", var: 0, buff: b});
for (let j=1; j<=powerChunk; j++) {
task.push({cmd: "CALL", fnName: fnName, params: [
{var: 0},
{val: pointsPerChunk},
{val: j}
]});
}
task.push({cmd: "GET", out: 0, var: 0, len: pointsPerChunk*sG});
opPromises.push(
tm.queueAction(task)
);
}
const result = await Promise.all(opPromises);
const chunks = [];
for (let i=0; i<result.length; i++) chunks[i] = result[i][0];
for (let i = powerChunk+1; i<=power; i++) {
const nGroups = 1 << (power - i);
const nChunksPerGroup = nChunks / nGroups;
const opPromises = [];
for (let j=0; j<nGroups; j++) {
for (let k=0; k <nChunksPerGroup/2; k++) {
const first = Fr.exp( Fr.w[i], k*pointsPerChunk);
const inc = Fr.w[i];
const o1 = j*nChunksPerGroup + k;
const o2 = j*nChunksPerGroup + k + nChunksPerGroup/2;
const task = [];
task.push({cmd: "ALLOCSET", var: 0, buff: chunks[o1]});
task.push({cmd: "ALLOCSET", var: 1, buff: chunks[o2]});
task.push({cmd: "ALLOCSET", var: 2, buff: first});
task.push({cmd: "ALLOCSET", var: 3, buff: inc});
task.push({cmd: "CALL", fnName: fnFFTJoin, params:[
{var: 0},
{var: 1},
{val: pointsPerChunk},
{var: 2},
{var: 3}
]});
task.push({cmd: "GET", out: 0, var: 0, len: pointsPerChunk*sG});
task.push({cmd: "GET", out: 1, var: 1, len: pointsPerChunk*sG});
opPromises.push(tm.queueAction(task));
}
}
const res = await Promise.all(opPromises);
for (let j=0; j<nGroups; j++) {
for (let k=0; k <nChunksPerGroup/2; k++) {
const o1 = j*nChunksPerGroup + k;
const o2 = j*nChunksPerGroup + k + nChunksPerGroup/2;
const resChunk = res.shift();
chunks[o1] = resChunk[0];
chunks[o2] = resChunk[1];
}
}
}
let fullBuffOut;
if (buff instanceof BigBuffer) {
fullBuffOut = new BigBuffer(nPoints*sG);
} else {
fullBuffOut = new Uint8Array(nPoints*sG);
}
let p =0;
for (let i=0; i<nChunks; i++) {
fullBuffOut.set(chunks[i], p);
p+=chunks[i].byteLength;
}
return fullBuffOut;
};
G.fftJoin = async function fftJoin(buff1, buff2, first, inc) {
const sG = G.F.n8*3;
let fnName;
if (groupName == "G1") {
fnName = "g1m_fftJoin";
} else if (groupName == "G2") {
fnName = "g2m_fftJoin";
} else if (groupName == "Fr") {
fnName = "frm_fftJoin";
} else {
throw new Error("Invalid group");
}
if (buff1.byteLength != buff2.byteLength) {
throw new Error("Invalid buffer size");
}
const nPoints = Math.floor(buff1.byteLength / sG);
if (nPoints != 1 << log2(nPoints)) {
throw new Error("Invalid number of points");
}
let nChunks = 1 << log2(tm.concurrency);
if (nPoints <= nChunks*2) nChunks = 1;
const pointsPerChunk = nPoints / nChunks;
const opPromises = [];
for (let i=0; i<nChunks; i++) {
const task = [];
const firstChunk = Fr.mul(first, Fr.exp(inc, i*pointsPerChunk));
const b1 = buff1.slice((i* pointsPerChunk)*sG, ((i+1)* pointsPerChunk)*sG);
const b2 = buff2.slice((i* pointsPerChunk)*sG, ((i+1)* pointsPerChunk)*sG);
task.push({cmd: "ALLOCSET", var: 0, buff: b1});
task.push({cmd: "ALLOCSET", var: 1, buff: b2});
task.push({cmd: "ALLOCSET", var: 2, buff: firstChunk});
task.push({cmd: "ALLOCSET", var: 3, buff: inc});
task.push({cmd: "CALL", fnName: fnName, params: [
{var: 0},
{var: 1},
{val: pointsPerChunk},
{var: 2},
{var: 3}
]});
task.push({cmd: "GET", out: 0, var: 0, len: pointsPerChunk*sG});
task.push({cmd: "GET", out: 1, var: 1, len: pointsPerChunk*sG});
opPromises.push(
tm.queueAction(task)
);
}
const result = await Promise.all(opPromises);
let fullBuffOut1;
let fullBuffOut2;
if (buff1 instanceof BigBuffer) {
fullBuffOut1 = new BigBuffer(nPoints*sG);
fullBuffOut2 = new BigBuffer(nPoints*sG);
} else {
fullBuffOut1 = new Uint8Array(nPoints*sG);
fullBuffOut2 = new Uint8Array(nPoints*sG);
}
let p =0;
for (let i=0; i<result.length; i++) {
fullBuffOut1.set(result[i][0], p);
fullBuffOut2.set(result[i][1], p);
p+=result[i][0].byteLength;
}
return [fullBuffOut1, fullBuffOut2];
};
G.fftFinal = async function fftFinal(buff, factor) {
const sG = G.F.n8*3;
const sGout = G.F.n8*2;
let fnName, fnToAffine;
if (groupName == "G1") {
fnName = "g1m_fftFinal";
fnToAffine = "g1m_batchToAffine";
} else if (groupName == "G2") {
fnName = "g2m_fftFinal";
fnToAffine = "g2m_batchToAffine";
} else {
throw new Error("Invalid group");
}
const nPoints = Math.floor(buff.byteLength / sG);
if (nPoints != 1 << log2(nPoints)) {
throw new Error("Invalid number of points");
}
const pointsPerChunk = Math.floor(nPoints / tm.concurrency);
const opPromises = [];
for (let i=0; i<tm.concurrency; i++) {
let n;
if (i< tm.concurrency-1) {
n = pointsPerChunk;
} else {
n = nPoints - i*pointsPerChunk;
}
if (n==0) continue;
const task = [];
const b = buff.slice((i* pointsPerChunk)*sG, (i*pointsPerChunk+n)*sG);
task.push({cmd: "ALLOCSET", var: 0, buff: b});
task.push({cmd: "ALLOCSET", var: 1, buff: factor});
task.push({cmd: "CALL", fnName: fnName, params: [
{var: 0},
{val: n},
{var: 1},
]});
task.push({cmd: "CALL", fnName: fnToAffine, params: [
{var: 0},
{val: n},
{var: 0},
]});
task.push({cmd: "GET", out: 0, var: 0, len: n*sGout});
opPromises.push(
tm.queueAction(task)
);
}
const result = await Promise.all(opPromises);
let fullBuffOut;
if (buff instanceof BigBuffer) {
fullBuffOut = new BigBuffer(nPoints*sGout);
} else {
fullBuffOut = new Uint8Array(nPoints*sGout);
}
let p =0;
for (let i=result.length-1; i>=0; i--) {
fullBuffOut.set(result[i][0], p);
p+=result[i][0].byteLength;
}
return fullBuffOut;
};
}
async function buildEngine(params) {
const tm = await buildThreadManager(params.wasm, params.singleThread);
const curve = {};
curve.q = e(params.wasm.q.toString());
curve.r = e(params.wasm.r.toString());
curve.name = params.name;
curve.tm = tm;
curve.prePSize = params.wasm.prePSize;
curve.preQSize = params.wasm.preQSize;
curve.Fr = new WasmField1(tm, "frm", params.n8r, params.r);
curve.F1 = new WasmField1(tm, "f1m", params.n8q, params.q);
curve.F2 = new WasmField2(tm, "f2m", curve.F1);
curve.G1 = new WasmCurve(tm, "g1m", curve.F1, params.wasm.pG1gen, params.wasm.pG1b, params.cofactorG1);
curve.G2 = new WasmCurve(tm, "g2m", curve.F2, params.wasm.pG2gen, params.wasm.pG2b, params.cofactorG2);
curve.F6 = new WasmField3(tm, "f6m", curve.F2);
curve.F12 = new WasmField2(tm, "ftm", curve.F6);
curve.Gt = curve.F12;
buildBatchApplyKey(curve, "G1");
buildBatchApplyKey(curve, "G2");
buildBatchApplyKey(curve, "Fr");
buildMultiexp(curve, "G1");
buildMultiexp(curve, "G2");
buildFFT(curve, "G1");
buildFFT(curve, "G2");
buildFFT(curve, "Fr");
buildPairing(curve);
curve.array2buffer = function(arr, sG) {
const buff = new Uint8Array(sG*arr.length);
for (let i=0; i<arr.length; i++) {
buff.set(arr[i], i*sG);
}
return buff;
};
curve.buffer2array = function(buff , sG) {
const n= buff.byteLength / sG;
const arr = new Array(n);
for (let i=0; i<n; i++) {
arr[i] = buff.slice(i*sG, i*sG+sG);
}
return arr;
};
return curve;
}
/*
Copyright 2019 0KIMS association.
This file is part of wasmbuilder
wasmbuilder 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.
wasmbuilder 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 wasmbuilder. If not, see <https://www.gnu.org/licenses/>.
*/
function toNumber(n) {
return BigInt(n);
}
function isNegative(n) {
return n < 0n;
}
function isZero(n) {
return n === 0n;
}
function bitLength(n) {
if (isNegative(n)) {
return n.toString(2).length - 1; // discard the - sign
} else {
return n.toString(2).length;
}
}
function u32(n) {
const b = [];
const v = toNumber(n);
b.push(Number(v & 0xFFn));
b.push(Number(v >> 8n & 0xFFn));
b.push(Number(v >> 16n & 0xFFn));
b.push(Number(v >> 24n & 0xFFn));
return b;
}
function toUTF8Array(str) {
var utf8 = [];
for (var i=0; i < str.length; i++) {
var charcode = str.charCodeAt(i);
if (charcode < 0x80) utf8.push(charcode);
else if (charcode < 0x800) {
utf8.push(0xc0 | (charcode >> 6),
0x80 | (charcode & 0x3f));
}
else if (charcode < 0xd800 || charcode >= 0xe000) {
utf8.push(0xe0 | (charcode >> 12),
0x80 | ((charcode>>6) & 0x3f),
0x80 | (charcode & 0x3f));
}
// surrogate pair
else {
i++;
// UTF-16 encodes 0x10000-0x10FFFF by
// subtracting 0x10000 and splitting the
// 20 bits of 0x0-0xFFFFF into two halves
charcode = 0x10000 + (((charcode & 0x3ff)<<10)
| (str.charCodeAt(i) & 0x3ff));
utf8.push(0xf0 | (charcode >>18),
0x80 | ((charcode>>12) & 0x3f),
0x80 | ((charcode>>6) & 0x3f),
0x80 | (charcode & 0x3f));
}
}
return utf8;
}
function string(str) {
const bytes = toUTF8Array(str);
return [ ...varuint32(bytes.length), ...bytes ];
}
function varuint(n) {
const code = [];
let v = toNumber(n);
if (isNegative(v)) throw new Error("Number cannot be negative");
while (!isZero(v)) {
code.push(Number(v & 0x7Fn));
v = v >> 7n;
}
if (code.length==0) code.push(0);
for (let i=0; i<code.length-1; i++) {
code[i] = code[i] | 0x80;
}
return code;
}
function varint(_n) {
let n, sign;
const bits = bitLength(_n);
if (_n<0) {
sign = true;
n = (1n << BigInt(bits)) + _n;
} else {
sign = false;
n = toNumber(_n);
}
const paddingBits = 7 - (bits % 7);
const padding = ((1n << BigInt(paddingBits)) - 1n) << BigInt(bits);
const paddingMask = ((1 << (7 - paddingBits))-1) | 0x80;
const code = varuint(n + padding);
if (!sign) {
code[code.length-1] = code[code.length-1] & paddingMask;
}
return code;
}
function varint32(n) {
let v = toNumber(n);
if (v > 0xFFFFFFFFn) throw new Error("Number too big");
if (v > 0x7FFFFFFFn) v = v - 0x100000000n;
// bigInt("-80000000", 16) as base10
if (v < -2147483648n) throw new Error("Number too small");
return varint(v);
}
function varint64(n) {
let v = toNumber(n);
if (v > 0xFFFFFFFFFFFFFFFFn) throw new Error("Number too big");
if (v > 0x7FFFFFFFFFFFFFFFn) v = v - 0x10000000000000000n;
// bigInt("-8000000000000000", 16) as base10
if (v < -9223372036854775808n) throw new Error("Number too small");
return varint(v);
}
function varuint32(n) {
let v = toNumber(n);
if (v > 0xFFFFFFFFn) throw new Error("Number too big");
return varuint(v);
}
function toHexString(byteArray) {
return Array.from(byteArray, function(byte) {
return ("0" + (byte & 0xFF).toString(16)).slice(-2);
}).join("");
}
/*
Copyright 2019 0KIMS association.
This file is part of wasmbuilder
wasmbuilder 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.
wasmbuilder 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 wasmbuilder. If not, see <https://www.gnu.org/licenses/>.
*/
class CodeBuilder {
constructor(func) {
this.func = func;
this.functionName = func.functionName;
this.module = func.module;
}
setLocal(localName, valCode) {
const idx = this.func.localIdxByName[localName];
if (idx === undefined)
throw new Error(`Local Variable not defined: Function: ${this.functionName} local: ${localName} `);
return [...valCode, 0x21, ...varuint32( idx )];
}
teeLocal(localName, valCode) {
const idx = this.func.localIdxByName[localName];
if (idx === undefined)
throw new Error(`Local Variable not defined: Function: ${this.functionName} local: ${localName} `);
return [...valCode, 0x22, ...varuint32( idx )];
}
getLocal(localName) {
const idx = this.func.localIdxByName[localName];
if (idx === undefined)
throw new Error(`Local Variable not defined: Function: ${this.functionName} local: ${localName} `);
return [0x20, ...varuint32( idx )];
}
i64_load8_s(idxCode, _offset, _align) {
const offset = _offset || 0;
const align = (_align === undefined) ? 0 : _align; // 8 bits alignment by default
return [...idxCode, 0x30, align, ...varuint32(offset)];
}
i64_load8_u(idxCode, _offset, _align) {
const offset = _offset || 0;
const align = (_align === undefined) ? 0 : _align; // 8 bits alignment by default
return [...idxCode, 0x31, align, ...varuint32(offset)];
}
i64_load16_s(idxCode, _offset, _align) {
const offset = _offset || 0;
const align = (_align === undefined) ? 1 : _align; // 16 bits alignment by default
return [...idxCode, 0x32, align, ...varuint32(offset)];
}
i64_load16_u(idxCode, _offset, _align) {
const offset = _offset || 0;
const align = (_align === undefined) ? 1 : _align; // 16 bits alignment by default
return [...idxCode, 0x33, align, ...varuint32(offset)];
}
i64_load32_s(idxCode, _offset, _align) {
const offset = _offset || 0;
const align = (_align === undefined) ? 2 : _align; // 32 bits alignment by default
return [...idxCode, 0x34, align, ...varuint32(offset)];
}
i64_load32_u(idxCode, _offset, _align) {
const offset = _offset || 0;
const align = (_align === undefined) ? 2 : _align; // 32 bits alignment by default
return [...idxCode, 0x35, align, ...varuint32(offset)];
}
i64_load(idxCode, _offset, _align) {
const offset = _offset || 0;
const align = (_align === undefined) ? 3 : _align; // 64 bits alignment by default
return [...idxCode, 0x29, align, ...varuint32(offset)];
}
i64_store(idxCode, _offset, _align, _codeVal) {
let offset, align, codeVal;
if (Array.isArray(_offset)) {
offset = 0;
align = 3;
codeVal = _offset;
} else if (Array.isArray(_align)) {
offset = _offset;
align = 3;
codeVal = _align;
} else if (Array.isArray(_codeVal)) {
offset = _offset;
align = _align;
codeVal = _codeVal;
}
return [...idxCode, ...codeVal, 0x37, align, ...varuint32(offset)];
}
i64_store32(idxCode, _offset, _align, _codeVal) {
let offset, align, codeVal;
if (Array.isArray(_offset)) {
offset = 0;
align = 2;
codeVal = _offset;
} else if (Array.isArray(_align)) {
offset = _offset;
align = 2;
codeVal = _align;
} else if (Array.isArray(_codeVal)) {
offset = _offset;
align = _align;
codeVal = _codeVal;
}
return [...idxCode, ...codeVal, 0x3e, align, ...varuint32(offset)];
}
i64_store16(idxCode, _offset, _align, _codeVal) {
let offset, align, codeVal;
if (Array.isArray(_offset)) {
offset = 0;
align = 1;
codeVal = _offset;
} else if (Array.isArray(_align)) {
offset = _offset;
align = 1;
codeVal = _align;
} else if (Array.isArray(_codeVal)) {
offset = _offset;
align = _align;
codeVal = _codeVal;
}
return [...idxCode, ...codeVal, 0x3d, align, ...varuint32(offset)];
}
i64_store8(idxCode, _offset, _align, _codeVal) {
let offset, align, codeVal;
if (Array.isArray(_offset)) {
offset = 0;
align = 0;
codeVal = _offset;
} else if (Array.isArray(_align)) {
offset = _offset;
align = 0;
codeVal = _align;
} else if (Array.isArray(_codeVal)) {
offset = _offset;
align = _align;
codeVal = _codeVal;
}
return [...idxCode, ...codeVal, 0x3c, align, ...varuint32(offset)];
}
i32_load8_s(idxCode, _offset, _align) {
const offset = _offset || 0;
const align = (_align === undefined) ? 0 : _align; // 32 bits alignment by default
return [...idxCode, 0x2c, align, ...varuint32(offset)];
}
i32_load8_u(idxCode, _offset, _align) {
const offset = _offset || 0;
const align = (_align === undefined) ? 0 : _align; // 32 bits alignment by default
return [...idxCode, 0x2d, align, ...varuint32(offset)];
}
i32_load16_s(idxCode, _offset, _align) {
const offset = _offset || 0;
const align = (_align === undefined) ? 1 : _align; // 32 bits alignment by default
return [...idxCode, 0x2e, align, ...varuint32(offset)];
}
i32_load16_u(idxCode, _offset, _align) {
const offset = _offset || 0;
const align = (_align === undefined) ? 1 : _align; // 32 bits alignment by default
return [...idxCode, 0x2f, align, ...varuint32(offset)];
}
i32_load(idxCode, _offset, _align) {
const offset = _offset || 0;
const align = (_align === undefined) ? 2 : _align; // 32 bits alignment by default
return [...idxCode, 0x28, align, ...varuint32(offset)];
}
i32_store(idxCode, _offset, _align, _codeVal) {
let offset, align, codeVal;
if (Array.isArray(_offset)) {
offset = 0;
align = 2;
codeVal = _offset;
} else if (Array.isArray(_align)) {
offset = _offset;
align = 2;
codeVal = _align;
} else if (Array.isArray(_codeVal)) {
offset = _offset;
align = _align;
codeVal = _codeVal;
}
return [...idxCode, ...codeVal, 0x36, align, ...varuint32(offset)];
}
i32_store16(idxCode, _offset, _align, _codeVal) {
let offset, align, codeVal;
if (Array.isArray(_offset)) {
offset = 0;
align = 1;
codeVal = _offset;
} else if (Array.isArray(_align)) {
offset = _offset;
align = 1;
codeVal = _align;
} else if (Array.isArray(_codeVal)) {
offset = _offset;
align = _align;
codeVal = _codeVal;
}
return [...idxCode, ...codeVal, 0x3b, align, ...varuint32(offset)];
}
i32_store8(idxCode, _offset, _align, _codeVal) {
let offset, align, codeVal;
if (Array.isArray(_offset)) {
offset = 0;
align = 0;
codeVal = _offset;
} else if (Array.isArray(_align)) {
offset = _offset;
align = 0;
codeVal = _align;
} else if (Array.isArray(_codeVal)) {
offset = _offset;
align = _align;
codeVal = _codeVal;
}
return [...idxCode, ...codeVal, 0x3a, align, ...varuint32(offset)];
}
call(fnName, ...args) {
const idx = this.module.functionIdxByName[fnName];
if (idx === undefined)
throw new Error(`Function not defined: Function: ${fnName}`);
return [...[].concat(...args), 0x10, ...varuint32(idx)];
}
call_indirect(fnIdx, ...args) {
return [...[].concat(...args), ...fnIdx, 0x11, 0, 0];
}
if(condCode, thenCode, elseCode) {
if (elseCode) {
return [...condCode, 0x04, 0x40, ...thenCode, 0x05, ...elseCode, 0x0b];
} else {
return [...condCode, 0x04, 0x40, ...thenCode, 0x0b];
}
}
block(bCode) { return [0x02, 0x40, ...bCode, 0x0b]; }
loop(...args) {
return [0x03, 0x40, ...[].concat(...[...args]), 0x0b];
}
br_if(relPath, condCode) { return [...condCode, 0x0d, ...varuint32(relPath)]; }
br(relPath) { return [0x0c, ...varuint32(relPath)]; }
ret(rCode) { return [...rCode, 0x0f]; }
drop(dCode) { return [...dCode, 0x1a]; }
i64_const(num) { return [0x42, ...varint64(num)]; }
i32_const(num) { return [0x41, ...varint32(num)]; }
i64_eqz(opcode) { return [...opcode, 0x50]; }
i64_eq(op1code, op2code) { return [...op1code, ...op2code, 0x51]; }
i64_ne(op1code, op2code) { return [...op1code, ...op2code, 0x52]; }
i64_lt_s(op1code, op2code) { return [...op1code, ...op2code, 0x53]; }
i64_lt_u(op1code, op2code) { return [...op1code, ...op2code, 0x54]; }
i64_gt_s(op1code, op2code) { return [...op1code, ...op2code, 0x55]; }
i64_gt_u(op1code, op2code) { return [...op1code, ...op2code, 0x56]; }
i64_le_s(op1code, op2code) { return [...op1code, ...op2code, 0x57]; }
i64_le_u(op1code, op2code) { return [...op1code, ...op2code, 0x58]; }
i64_ge_s(op1code, op2code) { return [...op1code, ...op2code, 0x59]; }
i64_ge_u(op1code, op2code) { return [...op1code, ...op2code, 0x5a]; }
i64_add(op1code, op2code) { return [...op1code, ...op2code, 0x7c]; }
i64_sub(op1code, op2code) { return [...op1code, ...op2code, 0x7d]; }
i64_mul(op1code, op2code) { return [...op1code, ...op2code, 0x7e]; }
i64_div_s(op1code, op2code) { return [...op1code, ...op2code, 0x7f]; }
i64_div_u(op1code, op2code) { return [...op1code, ...op2code, 0x80]; }
i64_rem_s(op1code, op2code) { return [...op1code, ...op2code, 0x81]; }
i64_rem_u(op1code, op2code) { return [...op1code, ...op2code, 0x82]; }
i64_and(op1code, op2code) { return [...op1code, ...op2code, 0x83]; }
i64_or(op1code, op2code) { return [...op1code, ...op2code, 0x84]; }
i64_xor(op1code, op2code) { return [...op1code, ...op2code, 0x85]; }
i64_shl(op1code, op2code) { return [...op1code, ...op2code, 0x86]; }
i64_shr_s(op1code, op2code) { return [...op1code, ...op2code, 0x87]; }
i64_shr_u(op1code, op2code) { return [...op1code, ...op2code, 0x88]; }
i64_extend_i32_s(op1code) { return [...op1code, 0xac]; }
i64_extend_i32_u(op1code) { return [...op1code, 0xad]; }
i64_clz(op1code) { return [...op1code, 0x79]; }
i64_ctz(op1code) { return [...op1code, 0x7a]; }
i32_eqz(op1code) { return [...op1code, 0x45]; }
i32_eq(op1code, op2code) { return [...op1code, ...op2code, 0x46]; }
i32_ne(op1code, op2code) { return [...op1code, ...op2code, 0x47]; }
i32_lt_s(op1code, op2code) { return [...op1code, ...op2code, 0x48]; }
i32_lt_u(op1code, op2code) { return [...op1code, ...op2code, 0x49]; }
i32_gt_s(op1code, op2code) { return [...op1code, ...op2code, 0x4a]; }
i32_gt_u(op1code, op2code) { return [...op1code, ...op2code, 0x4b]; }
i32_le_s(op1code, op2code) { return [...op1code, ...op2code, 0x4c]; }
i32_le_u(op1code, op2code) { return [...op1code, ...op2code, 0x4d]; }
i32_ge_s(op1code, op2code) { return [...op1code, ...op2code, 0x4e]; }
i32_ge_u(op1code, op2code) { return [...op1code, ...op2code, 0x4f]; }
i32_add(op1code, op2code) { return [...op1code, ...op2code, 0x6a]; }
i32_sub(op1code, op2code) { return [...op1code, ...op2code, 0x6b]; }
i32_mul(op1code, op2code) { return [...op1code, ...op2code, 0x6c]; }
i32_div_s(op1code, op2code) { return [...op1code, ...op2code, 0x6d]; }
i32_div_u(op1code, op2code) { return [...op1code, ...op2code, 0x6e]; }
i32_rem_s(op1code, op2code) { return [...op1code, ...op2code, 0x6f]; }
i32_rem_u(op1code, op2code) { return [...op1code, ...op2code, 0x70]; }
i32_and(op1code, op2code) { return [...op1code, ...op2code, 0x71]; }
i32_or(op1code, op2code) { return [...op1code, ...op2code, 0x72]; }
i32_xor(op1code, op2code) { return [...op1code, ...op2code, 0x73]; }
i32_shl(op1code, op2code) { return [...op1code, ...op2code, 0x74]; }
i32_shr_s(op1code, op2code) { return [...op1code, ...op2code, 0x75]; }
i32_shr_u(op1code, op2code) { return [...op1code, ...op2code, 0x76]; }
i32_rotl(op1code, op2code) { return [...op1code, ...op2code, 0x77]; }
i32_rotr(op1code, op2code) { return [...op1code, ...op2code, 0x78]; }
i32_wrap_i64(op1code) { return [...op1code, 0xa7]; }
i32_clz(op1code) { return [...op1code, 0x67]; }
i32_ctz(op1code) { return [...op1code, 0x68]; }
unreachable() { return [ 0x0 ]; }
current_memory() { return [ 0x3f, 0]; }
comment() { return []; }
}
/*
Copyright 2019 0KIMS association.
This file is part of wasmbuilder
wasmbuilder 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.
wasmbuilder 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 wasmbuilder. If not, see <https://www.gnu.org/licenses/>.
*/
const typeCodes = {
"i32": 0x7f,
"i64": 0x7e,
"f32": 0x7d,
"f64": 0x7c,
"anyfunc": 0x70,
"func": 0x60,
"emptyblock": 0x40
};
class FunctionBuilder {
constructor (module, fnName, fnType, moduleName, fieldName) {
if (fnType == "import") {
this.fnType = "import";
this.moduleName = moduleName;
this.fieldName = fieldName;
} else if (fnType == "internal") {
this.fnType = "internal";
} else {
throw new Error("Invalid function fnType: " + fnType);
}
this.module = module;
this.fnName = fnName;
this.params = [];
this.locals = [];
this.localIdxByName = {};
this.code = [];
this.returnType = null;
this.nextLocal =0;
}
addParam(paramName, paramType) {
if (this.localIdxByName[paramName])
throw new Error(`param already exists. Function: ${this.fnName}, Param: ${paramName} `);
const idx = this.nextLocal++;
this.localIdxByName[paramName] = idx;
this.params.push({
type: paramType
});
}
addLocal(localName, localType, _length) {
const length = _length || 1;
if (this.localIdxByName[localName])
throw new Error(`local already exists. Function: ${this.fnName}, Param: ${localName} `);
const idx = this.nextLocal++;
this.localIdxByName[localName] = idx;
this.locals.push({
type: localType,
length: length
});
}
setReturnType(returnType) {
if (this.returnType)
throw new Error(`returnType already defined. Function: ${this.fnName}`);
this.returnType = returnType;
}
getSignature() {
const params = [...varuint32(this.params.length), ...this.params.map((p) => typeCodes[p.type])];
const returns = this.returnType ? [0x01, typeCodes[this.returnType]] : [0];
return [0x60, ...params, ...returns];
}
getBody() {
const locals = this.locals.map((l) => [
...varuint32(l.length),
typeCodes[l.type]
]);
const body = [
...varuint32(this.locals.length),
...[].concat(...locals),
...this.code,
0x0b
];
return [
...varuint32(body.length),
...body
];
}
addCode(...code) {
this.code.push(...[].concat(...[...code]));
}
getCodeBuilder() {
return new CodeBuilder(this);
}
}
/*
Copyright 2019 0KIMS association.
This file is part of wasmbuilder
wasmbuilder 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.
wasmbuilder 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 wasmbuilder. If not, see <https://www.gnu.org/licenses/>.
*/
class ModuleBuilder {
constructor() {
this.functions = [];
this.functionIdxByName = {};
this.nImportFunctions = 0;
this.nInternalFunctions =0;
this.memory = {
pagesSize: 1,
moduleName: "env",
fieldName: "memory"
};
this.free = 8;
this.datas = [];
this.modules = {};
this.exports = [];
this.functionsTable = [];
}
build() {
this._setSignatures();
return new Uint8Array([
...u32(0x6d736100),
...u32(1),
...this._buildType(),
...this._buildImport(),
...this._buildFunctionDeclarations(),
...this._buildFunctionsTable(),
...this._buildExports(),
...this._buildElements(),
...this._buildCode(),
...this._buildData()
]);
}
addFunction(fnName) {
if (typeof(this.functionIdxByName[fnName]) !== "undefined")
throw new Error(`Function already defined: ${fnName}`);
const idx = this.functions.length;
this.functionIdxByName[fnName] = idx;
this.functions.push(new FunctionBuilder(this, fnName, "internal"));
this.nInternalFunctions++;
return this.functions[idx];
}
addIimportFunction(fnName, moduleName, _fieldName) {
if (typeof(this.functionIdxByName[fnName]) !== "undefined")
throw new Error(`Function already defined: ${fnName}`);
if ( (this.functions.length>0)
&&(this.functions[this.functions.length-1].type == "internal"))
throw new Error(`Import functions must be declared before internal: ${fnName}`);
let fieldName = _fieldName || fnName;
const idx = this.functions.length;
this.functionIdxByName[fnName] = idx;
this.functions.push(new FunctionBuilder(this, fnName, "import", moduleName, fieldName));
this.nImportFunctions ++;
return this.functions[idx];
}
setMemory(pagesSize, moduleName, fieldName) {
this.memory = {
pagesSize: pagesSize,
moduleName: moduleName || "env",
fieldName: fieldName || "memory"
};
}
exportFunction(fnName, _exportName) {
const exportName = _exportName || fnName;
if (typeof(this.functionIdxByName[fnName]) === "undefined")
throw new Error(`Function not defined: ${fnName}`);
const idx = this.functionIdxByName[fnName];
if (exportName != fnName) {
this.functionIdxByName[exportName] = idx;
}
this.exports.push({
exportName: exportName,
idx: idx
});
}
addFunctionToTable(fnName) {
const idx = this.functionIdxByName[fnName];
this.functionsTable.push(idx);
}
addData(offset, bytes) {
this.datas.push({
offset: offset,
bytes: bytes
});
}
alloc(a, b) {
let size;
let bytes;
if ((Array.isArray(a) || ArrayBuffer.isView(a)) && (typeof(b) === "undefined")) {
size = a.length;
bytes = a;
} else {
size = a;
bytes = b;
}
size = (((size-1)>>3) +1)<<3; // Align to 64 bits.
const p = this.free;
this.free += size;
if (bytes) {
this.addData(p, bytes);
}
return p;
}
allocString(s) {
const encoder = new globalThis.TextEncoder();
const uint8array = encoder.encode(s);
return this.alloc([...uint8array, 0]);
}
_setSignatures() {
this.signatures = [];
const signatureIdxByName = {};
if (this.functionsTable.length>0) {
const signature = this.functions[this.functionsTable[0]].getSignature();
const signatureName = "s_"+toHexString(signature);
signatureIdxByName[signatureName] = 0;
this.signatures.push(signature);
}
for (let i=0; i<this.functions.length; i++) {
const signature = this.functions[i].getSignature();
const signatureName = "s_"+toHexString(signature);
if (typeof(signatureIdxByName[signatureName]) === "undefined") {
signatureIdxByName[signatureName] = this.signatures.length;
this.signatures.push(signature);
}
this.functions[i].signatureIdx = signatureIdxByName[signatureName];
}
}
_buildSection(sectionType, section) {
return [sectionType, ...varuint32(section.length), ...section];
}
_buildType() {
return this._buildSection(
0x01,
[
...varuint32(this.signatures.length),
...[].concat(...this.signatures)
]
);
}
_buildImport() {
const entries = [];
entries.push([
...string(this.memory.moduleName),
...string(this.memory.fieldName),
0x02,
0x00, //Flags no init valua
...varuint32(this.memory.pagesSize)
]);
for (let i=0; i< this.nImportFunctions; i++) {
entries.push([
...string(this.functions[i].moduleName),
...string(this.functions[i].fieldName),
0x00,
...varuint32(this.functions[i].signatureIdx)
]);
}
return this._buildSection(
0x02,
varuint32(entries.length).concat(...entries)
);
}
_buildFunctionDeclarations() {
const entries = [];
for (let i=this.nImportFunctions; i< this.nImportFunctions + this.nInternalFunctions; i++) {
entries.push(...varuint32(this.functions[i].signatureIdx));
}
return this._buildSection(
0x03,
[
...varuint32(entries.length),
...[...entries]
]
);
}
_buildFunctionsTable() {
if (this.functionsTable.length == 0) return [];
return this._buildSection(
0x04,
[
...varuint32(1),
0x70, 0, ...varuint32(this.functionsTable.length)
]
);
}
_buildElements() {
if (this.functionsTable.length == 0) return [];
const entries = [];
for (let i=0; i<this.functionsTable.length; i++) {
entries.push(...varuint32(this.functionsTable[i]));
}
return this._buildSection(
0x09,
[
...varuint32(1), // 1 entry
...varuint32(0), // Table (0 in MVP)
0x41, // offset 0
...varint32(0),
0x0b,
...varuint32(this.functionsTable.length), // Number of elements
...[...entries]
]
);
}
_buildExports() {
const entries = [];
for (let i=0; i< this.exports.length; i++) {
entries.push([
...string(this.exports[i].exportName),
0x00,
...varuint32(this.exports[i].idx)
]);
}
return this._buildSection(
0x07,
varuint32(entries.length).concat(...entries)
);
}
_buildCode() {
const entries = [];
for (let i=this.nImportFunctions; i< this.nImportFunctions + this.nInternalFunctions; i++) {
entries.push(this.functions[i].getBody());
}
return this._buildSection(
0x0a,
varuint32(entries.length).concat(...entries)
);
}
_buildData() {
const entries = [];
entries.push([
0x00,
0x41,
0x00,
0x0b,
0x04,
...u32(this.free)
]);
for (let i=0; i< this.datas.length; i++) {
entries.push([
0x00,
0x41,
...varint32(this.datas[i].offset),
0x0b,
...varuint32(this.datas[i].bytes.length),
...this.datas[i].bytes,
]);
}
return this._buildSection(
0x0b,
varuint32(entries.length).concat(...entries)
);
}
}
globalThis.curve_bn128 = null;
async function buildBn128(singleThread, plugins) {
if ((!singleThread) && (globalThis.curve_bn128)) return globalThis.curve_bn128;
const moduleBuilder = new ModuleBuilder();
moduleBuilder.setMemory(25);
buildBn128$1(moduleBuilder);
if (plugins) plugins(moduleBuilder);
const bn128wasm = {};
bn128wasm.code = moduleBuilder.build();
bn128wasm.pq = moduleBuilder.modules.f1m.pq;
bn128wasm.pr = moduleBuilder.modules.frm.pq;
bn128wasm.pG1gen = moduleBuilder.modules.bn128.pG1gen;
bn128wasm.pG1zero = moduleBuilder.modules.bn128.pG1zero;
bn128wasm.pG1b = moduleBuilder.modules.bn128.pG1b;
bn128wasm.pG2gen = moduleBuilder.modules.bn128.pG2gen;
bn128wasm.pG2zero = moduleBuilder.modules.bn128.pG2zero;
bn128wasm.pG2b = moduleBuilder.modules.bn128.pG2b;
bn128wasm.pOneT = moduleBuilder.modules.bn128.pOneT;
bn128wasm.prePSize = moduleBuilder.modules.bn128.prePSize;
bn128wasm.preQSize = moduleBuilder.modules.bn128.preQSize;
bn128wasm.n8q = 32;
bn128wasm.n8r = 32;
bn128wasm.q = moduleBuilder.modules.bn128.q;
bn128wasm.r = moduleBuilder.modules.bn128.r;
const params = {
name: "bn128",
wasm: bn128wasm,
q: e("21888242871839275222246405745257275088696311157297823662689037894645226208583"),
r: e("21888242871839275222246405745257275088548364400416034343698204186575808495617"),
n8q: 32,
n8r: 32,
cofactorG2: e("30644e72e131a029b85045b68181585e06ceecda572a2489345f2299c0f9fa8d", 16),
singleThread: singleThread ? true : false
};
const curve = await buildEngine(params);
curve.terminate = async function () {
if (!params.singleThread) {
globalThis.curve_bn128 = null;
await this.tm.terminate();
}
};
if (!singleThread) {
globalThis.curve_bn128 = curve;
}
return curve;
}
globalThis.curve_bls12381 = null;
async function buildBls12381(singleThread, plugins) {
if ((!singleThread) && (globalThis.curve_bls12381)) return globalThis.curve_bls12381;
const moduleBuilder = new ModuleBuilder();
moduleBuilder.setMemory(25);
buildBls12381$1(moduleBuilder);
if (plugins) plugins(moduleBuilder);
const bls12381wasm = {};
bls12381wasm.code = moduleBuilder.build();
bls12381wasm.pq = moduleBuilder.modules.f1m.pq;
bls12381wasm.pr = moduleBuilder.modules.frm.pq;
bls12381wasm.pG1gen = moduleBuilder.modules.bls12381.pG1gen;
bls12381wasm.pG1zero = moduleBuilder.modules.bls12381.pG1zero;
bls12381wasm.pG1b = moduleBuilder.modules.bls12381.pG1b;
bls12381wasm.pG2gen = moduleBuilder.modules.bls12381.pG2gen;
bls12381wasm.pG2zero = moduleBuilder.modules.bls12381.pG2zero;
bls12381wasm.pG2b = moduleBuilder.modules.bls12381.pG2b;
bls12381wasm.pOneT = moduleBuilder.modules.bls12381.pOneT;
bls12381wasm.prePSize = moduleBuilder.modules.bls12381.prePSize;
bls12381wasm.preQSize = moduleBuilder.modules.bls12381.preQSize;
bls12381wasm.n8q = 48;
bls12381wasm.n8r = 32;
bls12381wasm.q = moduleBuilder.modules.bls12381.q;
bls12381wasm.r = moduleBuilder.modules.bls12381.r;
const params = {
name: "bls12381",
wasm: bls12381wasm,
q: e("1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab", 16),
r: e("73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001", 16),
n8q: 48,
n8r: 32,
cofactorG1: e("0x396c8c005555e1568c00aaab0000aaab", 16),
cofactorG2: e("0x5d543a95414e7f1091d50792876a202cd91de4547085abaa68a205b2e5a7ddfa628f1cb4d9e82ef21537e293a6691ae1616ec6e786f0c70cf1c38e31c7238e5", 16),
singleThread: singleThread ? true : false
};
const curve = await buildEngine(params);
curve.terminate = async function () {
if (!params.singleThread) {
globalThis.curve_bls12381 = null;
await this.tm.terminate();
}
};
if (!singleThread) {
globalThis.curve_bls12381 = curve;
}
return curve;
}
const bls12381r = e("73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001", 16);
const bn128r = e("21888242871839275222246405745257275088548364400416034343698204186575808495617");
const bls12381q = e("1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab", 16);
const bn128q = e("21888242871839275222246405745257275088696311157297823662689037894645226208583");
async function getCurveFromR(r, singleThread, plugins) {
let curve;
if (eq(r, bn128r)) {
curve = await buildBn128(singleThread, plugins);
} else if (eq(r, bls12381r)) {
curve = await buildBls12381(singleThread, plugins);
} else {
throw new Error(`Curve not supported: ${browser_esm_toString(r)}`);
}
return curve;
}
async function getCurveFromQ(q, singleThread, plugins) {
let curve;
if (eq(q, bn128q)) {
curve = await buildBn128(singleThread, plugins);
} else if (eq(q, bls12381q)) {
curve = await buildBls12381(singleThread, plugins);
} else {
throw new Error(`Curve not supported: ${browser_esm_toString(q, 16)}`);
}
return curve;
}
async function browser_esm_getCurveFromName(name, singleThread, plugins) {
let curve;
const normName = normalizeName(name);
if (["BN128", "BN254", "ALTBN128"].indexOf(normName) >= 0) {
curve = await buildBn128(singleThread, plugins);
} else if (["BLS12381"].indexOf(normName) >= 0) {
curve = await buildBls12381(singleThread, plugins);
} else {
throw new Error(`Curve not supported: ${name}`);
}
return curve;
function normalizeName(n) {
return n.toUpperCase().match(/[A-Za-z0-9]+/g).join("");
}
}
const browser_esm_Scalar=_Scalar;
const utils = _utils;
;// ./node_modules/circomlibjs/src/babyjub.js
async function babyjub_buildBabyJub() {
const bn128 = await getCurveFromName("bn128", true);
return new BabyJub(bn128.Fr);
}
class BabyJub {
constructor(F) {
this.F = F;
this.p = Scalar.fromString("21888242871839275222246405745257275088548364400416034343698204186575808495617");
this.pm1d2 = Scalar.div(Scalar.sub(this.p, Scalar.e(1)), Scalar.e(2));
this.Generator = [
F.e("995203441582195749578291179787384436505546430278305826713579947235728471134"),
F.e("5472060717959818805561601436314318772137091100104008585924551046643952123905")
];
this.Base8 = [
F.e("5299619240641551281634865583518297030282874472190772894086521144482721001553"),
F.e("16950150798460657717958625567821834550301663161624707787222815936182638968203")
];
this.order = Scalar.fromString("21888242871839275222246405745257275088614511777268538073601725287587578984328");
this.subOrder = 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 (! Scalar.isZero(rem)) {
if (Scalar.isOdd(rem)) {
res = this.addPoint(res, exp);
}
exp = this.addPoint(exp, exp);
rem = 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 (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 (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;
}
}
// EXTERNAL MODULE: ./node_modules/blake2b/index.js
var node_modules_blake2b = __webpack_require__(2206);
// EXTERNAL MODULE: ./node_modules/blake-hash/js.js
var js = __webpack_require__(654);
;// ./node_modules/circomlibjs/src/pedersen_hash.js
/* provided dependency */ var Buffer = __webpack_require__(8287)["Buffer"];
const GENPOINT_PREFIX = "PedersenGenerator";
const windowSize = 4;
const nWindowsPerSegment = 50;
async function pedersen_hash_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 = Scalar.e(0);
let exp = Scalar.e(1);
for (let w=0; w<nWindows; w++) {
let o = s*bitsPerSegment + w*windowSize;
let acc = Scalar.e(1);
for (let b=0; ((b<windowSize-1)&&(o<bits.length)) ; b++) {
if (bits[o]) {
acc = Scalar.add(acc, Scalar.shl(Scalar.e(1), b) );
}
o++;
}
if (o<bits.length) {
if (bits[o]) {
acc = Scalar.neg(acc);
}
o++;
}
escalar = Scalar.add(escalar, Scalar.mul(acc, exp));
exp = Scalar.shl(exp, windowSize+1);
}
if (Scalar.lt(escalar, 0)) {
escalar = 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;
}
}
;// ./node_modules/circomlibjs/src/mimc7.js
const SEED = "mimc";
const NROUNDS = 91;
async function mimc7_buildMimc7() {
const bn128 = await getCurveFromName("bn128", true);
return new Mimc7(bn128.Fr);
}
class Mimc7 {
constructor (F) {
this.F = F;
this.cts = this.getConstants(SEED, 91);
}
getIV(seed) {
const F = this.F;
if (typeof seed === "undefined") seed = SEED;
const c = ethers.utils.keccak256(ethers.utils.toUtf8Bytes(seed+"_iv"));
const cn = Scalar.e(c);
const iv = Scalar.mod(cn, F.p);
return iv;
};
getConstants(seed, nRounds) {
const F = this.F;
if (typeof seed === "undefined") seed = SEED;
if (typeof nRounds === "undefined") nRounds = NROUNDS;
const cts = new Array(nRounds);
let c = ethers.utils.keccak256(ethers.utils.toUtf8Bytes(SEED));
for (let i=1; i<nRounds; i++) {
c = 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; 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;
}
}
;// ./node_modules/circomlibjs/src/poseidon_constants_opt.js
/* harmony default export */ const poseidon_constants_opt = ({
"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",
"0x468d89779fadedbdb4f0093858113c5060321aaaf082a53d44fc74c65e7ee84",
"0x914cefd51a2822efcf8629d57eb5b6ec7195a90087762ec8814f14bde647522",
"0x120a9d3cbca58b917f4e61117c7fe2190ba6d238ce374949778c40a6d176707d",
"0x1cf1c75a1b2ca09ac655215cb308b39ecef96d746ecbc34b37583bd8e0480d5e",
"0x511cadc2d431769a953d0d2355cdd3d8c13dca7a6c5b19005bcbf3c5bcf7770",
"0x1e2aac063f4303e24a2a44b1bed5688a43279356dc78a772e4dcfad0562e5dd1",
"0x172a396d41cfb2b1241e096aa41f3a4788303d8824d5496871e03cb9590f89ba",
"0xbde068237cc41aadb7ac718d4c6b916cb7f35fb399ebb2515307e6004969e2e",
"0x1522d1f8f0cb9214b3f6602d9f867bd2ae07a8fa77aefbc3153af4d350d933ee",
"0x157d56053aca2c4cd30f7ba34e5d41b8a636961ef78c1dea1759dceaccd1ed69",
"0x10aff8c0fa2f25f58a299e22c732f1b901616f6e4bc6f63af79bb93d45fc188e",
"0xa9557d37fbb35ce046f2df3d8bd9cfccedf85eef2549843da7f2c2e36d2bde4",
"0x75029d8351a4949170136de66c179a8d6ee6b56b89598af199528d78e8d2c59",
"0x2aa767c911398696b2302fe15ad33ef35c6c97618e672f837aa4fd42930355cf",
"0x14d99c7417a329ff62d32828421e1b8a031d30242b285c86a4f63795e376623",
"0x186e1b78089467478310c35eca9d2058c0a8bb8e2ea5c324f1314e478a12894e",
"0x2ca9306ef62dfb1ad58244ac5bd70b0bc84f86368f6c9bd4e15ddaed432e9838",
"0x17630d6307628585661eaaee9438c67160f7eaf6d03d3ca6364d4adda49bdf27",
"0x21187c1dffae74340a488cdf08ce322226544816780af016098d8c39c7e72e31",
"0x1db210b93c320a18bab1769aee63276bd99ac89035b0da327cd06cb70854aca",
"0x18bb6f89805c1bd59d8d7ad109d5f26b4d18813f71cf3aaba26ee896709404e1",
"0x9c0a6c2d79cc06023f3f43196c9b8a60a55716d2c7ca095d849a5d67ff6fe98",
"0xbe6b7d6cfed9528f4d1ae306f3138306ea7c81cbf903e9b884eab5084dc4c16",
"0x16fc7c808552b1362d8a739bfdf6c6dbe70b00611780fb4818d424d5e017ed5c",
"0xf31a91e6db75df904be6bb14fe7271429e5787f9a918d1cb128ad76ac948836",
"0x230a66ce24feddd45fcfcb5ca7e4efb12461a7c0a0b673a73b252925d310d488",
"0x5ed3707e7ad3478ae508126cba274743cfe8685b46153f6da3a0b4b83ea92d0",
"0x465c370db40b8f14b4f6ef913550c11bcb2839ac707e2fe9a9c31b43cf8d938",
"0x85f42b894873a7451a60fec0539f9ff8b2e0a495e43db7b95c3a75c57c20ed",
"0x2e8b3ae9368c9c1f1542ae734cd995869f81aac64902fb1d3597022da08f9938",
"0x161485d4fa8620e6fd09b088159c4e223155019bfe9eae28f9870ff19ccff314",
"0xb6e400339e5e76c1d200fd27884599d473dd98fade9e648940833ea32b75416",
"0x261ee31fad47c0db7bc046f718437ee518fe73ec92c1e203155d8f284d44b310",
"0x4e106089b776d01a284b84adcddba4bf0ee56c2c85ac584b4d938f45023252e",
"0x4b14e89f42287dee36142a17718f7615789c9f9623b534afeffcf9c7e26449f",
"0x1d55915b20b60534f1d89f2f8c49568123fcb4c6d9197373e54662e7d9eb83b0",
"0xbf04f5b7d178a77ee32fe543be468e1c89aa457a2f4d6699aea743f80494b8",
"0x1bb1f31e887647cb45b8bc5be185e206e91accf86e5ce5bc1b39af12f857ea3e",
"0x26f0b4214212ea8030aba75b2eb699e84adf24bc4b856a3522b82c1edca87e9d",
"0x1ad7e1c6feade269c076b67239b316e7cfc194b036b5a53f9207f457599c5fca",
"0x11947cedad859f02ffb4b99e8108512fa325224ad7e1bcf82b28c61a89840035",
"0x1ef4f0330d6144228ef6cc36eda0d179384c4dc1858c95de12d070d11c43348c",
"0x1031abebb0216be506c04a6514d471f18b0dc1b5a9b616c87a465b689cd1336d",
"0x23f97eb680f5a13b3e8daae572abe2ac0dd92eaab473002f0708e6b6084b2df8",
"0x289b2ba2e3c8f665b94a4d73b5bdf7d6687468aaa84ef7f6e04fe123659e41b2",
"0xd40f713b31b2d041d3e01e2504af10020bfc45bd5bbde4f4b133f63536090b5",
"0x29204d73ce84b3fbbe047c74997ee799f92923cd16ece1eb6275c8b71659f149",
"0x23cd14b50f4129fa56263fefbe7475e51c85f67cdf38a9ae7637ad04ad644c6a",
"0x1603887bc7e6956ae4ff5b9f4423b2293ab52b69b2ec021acb90bb6da8dc3883",
"0x2137d99c24145e52ead0129bb220690c5ff8f6dbff755c8467054b645c74b0f9",
"0x1f3d6d1349096a8e0594443a487386f9f51b2fc366e910a9952d4f0b3dbec414",
"0x2148e1aab3e9c82a297d04af8191e2b05cec71b0cd6b8b4e079061dd00f01a00",
"0x17fb0721b3375406028ab6f04882a202e6801cbbbb50badcbd5d760d59e60c54",
"0x44f8ade334554cd610743aababa1196e00106e754cff8b088ac69a273ed074d",
"0x2e10e74d30679661fc3ac960b7c967cbc50029d2ea463ab8ef55633cc5405243",
"0x1e44030832526ce32d540c5cdd2def7f900509bc8019fec5e38848b3576dba8e",
"0x2c17bd7af463d52d3fd7e8723d11078369561ca3c4ece48f1298adabe7c822e0"
],
[
"0x123992df3b9daa65139ec13fbb52f7d348e134333684c1596feb0e8d8c3ad596",
"0x2fa46f5dba9909ce9984a01e2af30b550dfec978be92b49119a3959c7f623703",
"0x21d8f94d3bd98f0b63a7aacb175b2cca13b2dd8a8cf68fc36d94ae29401b2d2c",
"0x1a8c06c61046e0f8dc6a39bc57aea0d07fd7db34e68f73579da89e116af87eb8",
"0x298cd7046f58c0cab77523a58a6fdfd1401b89e7ae5eef4994442d167f7ad1d3",
"0xeac737966715df4a20b31ab693eda86a07f3e830fca475a6574d67fc5f19f63",
"0x6b9b718bb3b6d45e0cbe6d5d9a2f096a77beb056821750d072262af2a70a33e",
"0xbccdad6e8b1fdfba846a9553fc7905b3f96e435d653eec3972565e1fbbc302a",
"0x21c2dfe20dc5a72167bbabdd95a18c147f8483cb7c0e2e684a1ee4012f4bd92e",
"0x24ad6b2755a6a6ee51d92fa30df2489320e50a8ce7132504ceca30e9480079b0",
"0x67a46fc4c52c6ea102cd37b4478fdbdb5e749877ec437bcb7acbfb64e61ecca",
"0x1a2623975652d476f4b9cadc4b85219268910c7c3b2d0ae12fd47eb162257f35",
"0x25f8ce30441ce86e6b21d52ca87463cec299a3ef543220d72bc2491fdc04c4b",
"0x1acdf0b48d8a4789a9b3ac5ff8962b16e9a56c880e223668a25018657834aa5d",
"0x14d3fa7ee1cd2b8be2f42eb6f4b95bb8b1d156d77f143fae3e82bb8c5610ea77",
"0x3a224f6470a64f294fa4dd67524de58b18f70812e093c0e1c06b31d758a113f",
"0x2c822aea71402807ec21db11a089668fce2e6c2d23174de3eb69484a53148527",
"0x1305b66e890e97e11d52771a60509026baedd0e0bd5e797134259c748a289995",
"0x2b1e80bc5e3f546f4b11399e77a0784eb7c439c546e9fba26eb6c77d89c14517",
"0x1562326a8b0d5436bd7bd173d3f9e69c3be74dc79270b4fb1e8539d584eac1d1",
"0x8c9aca89b447e7468bf1ea6db080346b6a6827eff1fb81392cde7f6130910b4",
"0x138e002e8c0c597550b72acbfc9c50952175ba85c061b7e973d87d979476b54b",
"0x317ee43e6f4e38796821ad2d55844d012bfc5c2b990fa48b491ef7c6372bdc3",
"0x1b60831fc11521d122d9cdc6ff45c7005e6a166717e7aa1685cb286c9ecc992b",
"0x2e73d35eba9b43a5100de17bba5c59d871ffa2a9b522b0645e283a89259d446f",
"0x22a4d3cb7750e5f4d2f0381294578f698be7d678311595793ff6f1ee3eff2df4",
"0x2471b7a969af295b9d407634a486a1c82cc273506d89a9cd5c80a53b40e1935f",
"0x197b73e1d792a106452ac3d31fd02b5e1617f5442fe26bef5fffdb7e1497754",
"0xb2df733b3541c788362a5debf818a087bd9c9a9d39c1fcf2564ad3980bae8f8",
"0x1cc66ea285b3c09cb4653283b9c6ee66b7e7a3cae20cd50315dafe3a92113a2c",
"0x25b6152ba9ebe836c2f5679d0f891b30b96ae3e06a6132da2f6f6d212fc4b52",
"0x1a889aa16461370a4e75ea6bf7ff9405c29656295996b0b5884216311ecfd7a2",
"0x1f6faf41cf708d8307442a5194c1d38dc3e833ccc4ecdfdb8aa44c5e9fce566e",
"0x170221e35fe04da2303dea141113f7711c651dca57beb7fa3624d2881085d7d3",
"0x1f4fd254340f9509fc1ce072bf795c9abcfedd5f80ad8ebea2726be474197b1b",
"0x2bb4fa69cd631d5b418837b9155db02d5489e7feb92b2eb5a17bee8031058780",
"0x2fc737a4c1073c018432cd0f9e8bc5b75c19f94f554314251d510fc788b79d5f",
"0x299d38d16803616a9065d1820e2b8608280e8157f7e9ef5b954eb3d2beb2646e",
"0x6e8fa64f6f9e2a66650e0f002b2afa7e0c2c9ae417072c68b8f1f31b217bd67",
"0x151e2effa0eef7ae28945060179f4aafda3a50635be3b3cfd4252b5ec9c29449",
"0x13f225ff220789cf3d9547f15ff5f6bd6b057570636e25cbffae7b707d6b3a6b",
"0x75f0d5b2f3aef1e72cbe0d0b406505ec9a0c2b61f37ac0fac82b44d9fdd5f79",
"0x26f491b65ef18ffd2382c44ed506a506a375a9049e2f6fa392a837f3004c50d",
"0x26916c460b0e2d5697914d1652fbc3da25179b010a1158e546de85020742ae2",
"0x178e270b0c35c5ade3457fa5985c1295f64d458a2a25fe849c7eb5b4bfc81348",
"0x12b5fb7e1894d846ff3999b3f9105329a9cc459d5b605ed00f333da7b2130905",
"0x138f42f4f01f4b059cd6cbd6afa1aad443f29893e24313d2fd3b0e61a378cfa2",
"0xaf68a2bb5f9b6fb492356bf6a80f40730056bf1d85424614ae9703ebd20ae87",
"0x711a1f848efb7d202068d15ad1825720c2b82bb2114bc884043bc38d727f6b3",
"0xf7275b3afe158fde58367a5036fd26eadb8cd1c646afb4dea64fbf1d80e1f50",
"0x455acba2c77be3a518fc64f7977ee3c646b30b534294726ec896976d6a16529",
"0xbd261d1d46c99febb2cb1bd70ac8fbe0129528be059fce75cdba328f73d7348",
"0x2e5aeeb04dfbbf5fc35ddb3712549be8e643ea1429fa000872af2ed500152719",
"0x1c86ae64c468a452e8c1c2d5208ba6e17378cc3237380a48279889bceaacccbd",
"0x2acc9d15663027fc5b4fa467e70c3b476f2a07a6ea585caf7287921100567a40",
"0x230d03be86fe9114145312605773dcafdf71b97d8e2cf9e9ef246106b5fb1459",
"0x2ab60a4154e2261c6e4e82b20be3e08f7613cd334dbae29586e48c1df49ad592",
"0x2328aa6369f0af736abace3f7885d7dc566c39ef831508178e6d62bd4380cfc1",
"0x1164b8dce7e4179ec0e294da56e5ab43de2c20a75d57b8e583ffea2349e62539",
"0x2491cd6f23416063e77171095c0db217248a2c00adc3e146ba32d9ac2b941742",
"0x1cdc848d353fc772de151f8656a7e2e24b7fda385568d6596fe81a303ea208f4",
"0x2a398eb8ec4d3bd99bdc3520db7341946d4eed3a16f6faedf167905e6552884",
"0xb07f73cc8432e1f9e4095e392359fd46467f9bff3e24af5bc4cbe9b17b43e62",
"0x4e964ad5ded274940fe678e4f72079ebb09f289b8381bfa71d7c8ef0605954b",
"0xdb2a3aab326c1344771f4c5f872a050465f87469ca27704fd93ef3fe5a5a1d6",
"0x27b044fefd92da8972a60b0297f9b93f291786a749fef1e29f8ccf6bfde72564",
"0xc6c0bf5ece0bb9be0737e0c94f9b10594489ee5c00676e51f31781155ee8729",
"0xa36c8af931781acb11cc6922f0bf6e28ce01a1a18ee990da3421a0a9aea0147",
"0x255f76204e6137ac12ae576fdc49baa054ba182678d75a0a3cebd01d0cd6c286",
"0xaa31a68117f221fbe1b609d8e269e9ba1e9ac228e2e0a512ab9c774a3a63f79",
"0x14151310e656644c86a5cda7620c6440ad2bb09688c70530c1ebac60d96d56b5",
"0x27b953b1de0e30a1a423405b749d830285bfea294cfa1d3e11b4cc5801aaa640",
"0x30476b760f0b45ab4e5b7bebef2cceafb2b06f3b4193fb9938c946c63115b008",
"0xb70ffa00f97a377990544d9501602376ef9a496ab8dfc44856306bf28a1b920",
"0x2861adb9067f446db45b36bf93ab6345f53e07746c063546df691604ec026529",
"0x33e9b4274c357a8c6dd61a3e30236735b5a23f396acb52d92d6685a5f03ef67",
"0x28b4e505d5309e29a6da8f94fdec039ac44b43110bc0f8bcde42bd833dfb0d31",
"0xf6fae1122b219ee0b1675ee8bb5c7c48744954e3dae2f9d5d1ea71c0edb0a9c",
"0x2b4173bbd542f1b89fe8d3478a050e81d42fa495e9c96af263aaea3c498e917",
"0x8d72f5f016ab29391344f20b821450da912ff016e4da674ff97c5d92bd3a1a1",
"0x1d9e387998377d9e680b0b55e8309fb8a29719551de783c1cf817cff9ad6a90b",
"0x1424e2acf5db0d91956e15d5b5dc4132ad6c4fb863c9c8e572bb49feeebf7e22",
"0xb3db34e4253558779669b849ef2fab55ffc654d4f9f770f74cbc45ba117f483",
"0x1269861c49d7f3713673f6fec4b57436c9059aa10b541d64aebdbc11e6513f6a",
"0x2557b7a318681664ac27c48349b1b5f44892e5ad02c8b81493418bdc66517342",
"0x650dcd4d3610b1d776d673024e679b6c76b5cde0b985091ba00e1cf4eb26062",
"0xeae77312a73dc3ecb243143ba64f7cfdc9465cf00fb0872958286430fd41aa",
"0xf43d99f10bb7c8d851384f5215bcdbc90489bd63c9b4fa3ec48bf1851012d93",
"0x2d95bd041d1b5522fed823a5d9d607d7afd455461f33bc8c1404ef348221abb8",
"0x2fd83f519597b7e807ab80fd8701dca3f4085957b8f2955f5df79c24f00a1f53",
"0x25c0c9abd576c803e422eecd77a3ca4f63a32b9f90f5366ed37658eea86f271d",
"0x31509bde9a7286eed15ea23537ac72dfcc35a9f4c8cdc92baf39dd7cca4939b",
"0x2f6692e9fbfa0ad64b3f748425ce43c3c69cb5e4c13a0ff06c14f2bb75141af0",
"0x1aa375c879966cbd87d4ce7089e354786c6f2a58e26b97c760dfafb72df9c5eb",
"0x2f14baf1792365a476c4c193939244a6a4edf35f41616bb6db4b2bf511642a23",
"0xc1552511a3185d9730d9ad3a86c6dce629f5871d7e9ca38399758b587830ece",
"0xa499163b884b67402058e13910d1c89873c952ea1a7d1a3eefeaa22d2a37d7f",
"0x2cfdadc4634dc875e4c2be0f579768c85b32e5a19baf3b5d536a3d10a3199bfe",
"0x2ba9818b35db18cb7631164687c593c9badacb53bf720607b46212330be420ca",
"0xe37b0ae73060dc2b5f671e27e14a7cdbf6f37b7a03e69654bee75a9fbd52c6a",
"0xfdce2fc3a75a381f6dd84b4ca5f9753a5f0f8bebf5cb6e606c59717aa7b814",
"0xfb5a2ddc03041dffb808a10877d437c2764240964c2edfdbe545854aae282af",
"0x1ea4030900b9f74c33a53a950d21f40738813f69e8baf44444d6f0a1368c6d85",
"0x2b26ae52bbf7d41a66d984ee37a40c95129c4949cc74ede40fd7df3f3bfc7714",
"0x16062ea8f9c3d1bc9acece3e3afad961eaf765069773e679240dd723dd4530fa",
"0x78830573fab36a4777b4d82c044a60d06fc2abcaac1826fffd2ce0630d00eb0",
"0x2f17fdbeedaae54d1409c5cee2a3f3ded005fb6f84db8eb600111679e471be8",
"0x1a01b0c5b209af90e35799cf630441b0fe38394300a1dbdadf7e80230425ce03",
"0xfa20a26a6950d031e20c9fe19f1317c0e694eb4397a25fdf97946bfd66e5198",
"0x1b63869e274926ea2e91c0fa091b7074d5fcfd9987e887614da86eebd6b42c1d",
"0x728043328557038e7370dd984a822050199193a7da9c0a670af7af9094382d0",
"0x9570a7f7a06102b55bcfcdff64c42cf2ae994a20254054abecf6609318b3707",
"0x1c2ff23fd6d0090161db54a99810f76ec767e2db6e830afc9aabde9614829e6",
"0x7faf7d80752f501cf0eccc6bda01cd349376330df799ca842ed4f452517f6fd",
"0x2a25dc90d45e36b9367d207e45be38d449034231ed7c6422d2795baed9e08d3f",
"0x5d6d08e40d2741bc318cfdd961e62bd5b1439145206f49aeb0e8bb68a244851",
"0x9d7b3f8a46f030b3b0b27bdc77d990cc642e4f3dd667b085ef114d08bbda9f0",
"0x2d17960ecd06706c37ddcdad5e4707ddc0385d883f08fe7c8b36659d94ef85b1",
"0x15f2471564848a163204b074c1dba4c518b1e9a4052a3a7e5d9c2a0e77e8ea99",
"0xbc29d644405d0cf3ef18b311474b8f6d0e5bb9856059ea6b908d8eabbbe4a3f",
"0x1f3cc2b9a666ca5dab8bc17436762dece0ea6ef3becf39214992627d49595ee2",
"0xc5c7ec0b72c7947f7e1129191a11ea5c2d21a431561b3ee1513d0fe07b6b5d1",
"0x1b02b02f8547bf62c0250622fdbf6c094909fc25151c3941b5c8c2e06d675be2",
"0xd3213b732109beeaf102b359db224d86031ea2bbe1406f70b654eba980ab84c",
"0x15848ecf21e60c3ec1ef45998777202b708426a72b03f8dc4e5696dc74eefc8c",
"0x14dbf6efa7caed2cf9ec698db97e7552c62b386a3483ac39028be9fb5d6e3b0c",
"0x2616126b746c3d8a4dcdcbee6d4bb8c5ab7a3ac8c5c5b91a654747119bc70ae4",
"0x191fe12396efc23ef8865e32908d76c09ab0fe52a4665554020b7ba659386297"
],
[
"0x2088ce9534577bf38be7bc457f2756d558d66e0c07b9cc001a580bd42cda0e77",
"0x1b86e63908c4b12af43cec6810356c94d21c9e37d73dfff9742a58e0ec356be1",
"0x9ca022ba1142d170f755212e2edc9d0a4ace33e16825f540d5d50d5a021a169",
"0x277e69d47a133804241f6aebe9449be6e22c849c6d8ad8c938eaf613bc1aecd4",
"0x17b57ea03754e24ae0ef425aa2ad931aac9ba5457a18cec594545a235db6b269",
"0x11c740983395e0f4a026e2c7c939236375c9077755eb1a37a77d5a1fd74abac6",
"0x1cd85529010dd7e2fb7ea403515bab5727556a479c59b822efc5a81eb37bc5bd",
"0x2cb9354002cec4bcbfa985de34f43d702ced83d197aa374b5a1f96f87b12f292",
"0x1f7af98e08f6877923f27a3dad40c525ac52f56fbbd878506544f9acd61aa32d",
"0x1a0b807de55ef1263cb74d73f1c8bf3403bb3f1e03cc502a9e2b8d423688ec18",
"0x1fd59a493af01f538eaee9b1cbcb2cd1b799d6093f0159107344047c2158d90d",
"0x1d3fa4c04d54e5263e743a2fa010370098773853777b73c7c92af64eea079612",
"0x1dc892a8d006e9b99d597f449d0553ebb51b259319ab9d8b2d02ed9c6582c232",
"0x2a0537379dcab76d9308d2699e0e900109318a740c75b8ee1ba71120edbfe071",
"0x149d2cc892e7cbc1f4102493bb96b4a36928dcf62f7dba6d9e0d446f5ffd4fa1",
"0x1e49f2771b7510aea77ee000e757ac105699c62a33a418ebda572969037b5bc8",
"0x5649ffbf48a15d39385cb62912bf049e9706155ff3dd43f7ce0e4cb35c86c3d",
"0x2698b359bbb3686b626831d596fc5b5039f4af516bc683a289876271ed62897b",
"0xcd8c08efc5d2bc627ee727dac325af99b4f72ac70f61c890b0593eb03c8cd2",
"0x36a9a9ad327aa70232cfe6c78884ec23aea703814c701a1862789367b45b3f5",
"0x2b5899d038a234824746d697d38ff423459f7bd4015782f528a3705a6f2feb9f",
"0x2524bd7a1969744168f11aa03fa82da034edcd1c31141420b2309344d2741aef",
"0x89189570593679da35b668bd5b3542489bab1022dd790ca6a99c09ed0a79aca",
"0x6608970a49c0ea65f21a544c215ebd89b4023c387e8339ec7c9cb80b6b87ae4",
"0x283a6336d81e02e8dcfbd4be67fcd7f8b73cff4ce3f8a7f3451b26e81679309d",
"0x14536ea1bd43af4d7927054ecdc962563f6f396e372f35cae0e5218d62bff454",
"0x3036ae3f4cef8a4a0a324f409f290c172e5ec23a34f75d57233a04a055648e00",
"0x22262d9a1cb0b5941b3f193c381403425b83e6fd9e1b4d930183148e414db99d",
"0x1555e4726cf5d78d11b66f4969724e64be8dc3047d0953aa84be42c4a3ab4098",
"0x2a3e9e52ac1fa4915e262406c27cecf24b0411fa674ea5046ac44897629e8544",
"0x14d8abc9700624bfc54939ff64f75e0ad187662ddd0215e3cfff56a350371231",
"0x1e0eb685b561bdcc6cb793504a4c1b5056af33ddf6f5e93c72396f6e53eeaaa5",
"0x2e7e146d9111c11d9348ec2230270bf211b4325c2e878d09faedef98bcd10dbd",
"0x18c036ef9e573369755af33142bb856437f6498fb1162b8f8af4523c390b09b2",
"0x195ce383cf5b4e65acdb300d6e359320ea6bac8fa881456c72526b4513ee1d71",
"0xc12860b292d22e5520d416427e1ff80eeeeee47799b322e0580c2d45d60e6ac",
"0x2ff73b859f68c9b8eaa94078545f54dd1e9dfd74fdd762dd65f522af19ec3ffe",
"0x1205dc46155d9cc22a89e838ff1a462738d3ef1972a01864c72af0f342e524ff",
"0xfecb680ff19b124ce745b6f70fba1b91716e12f664fe93562d93700adf0bc45",
"0x234391b786f9498db2680c6e7aabf4b0ace0f0368e21eff94528d051128cbc6a",
"0x2937dad89e2bf12f95cce70dbe3ba4c2ee0184226387421bd18038894ceaedc9",
"0x22c7ab9a912c2aa92e2afd4749e70968322f7e5750ce6c697dcb34446102b85a",
"0x1bdd8241cc91cf091780328ea6a0ca6dae8c10c50796006d462455b90e7f600e",
"0x49e3eb4d3bdb8ea3fb6ec3dc065556eace18a719864184b36da835bf3e8de11",
"0x20a8611ee3a91a1513e11ae962ec82884ba24f32171939892a34ec6d4622a88b",
"0x27d281f482154b5c001ca383a1087bb1481782f2bb457fb32505ff63315ec376",
"0x530c5ee45b6b16abc8306ebbf102a1c0774f8618699278d5d3a99f42495a3f0",
"0x256f402ec1732288a2ae27f56a2fee2199bde67ca2917984e2a6c7f3952a8e32",
"0xed544bd301d33d4b9ef359de3bf01e61397f2f29911944c5d091ddbc518e146",
"0x1370ffbb023d66ee62ec3895f61de73212207ab83194bf6cb1d49d37bdd4f34d",
"0x2a46d5538a5a9bdaf47e44594f3092112e755cdde1a6c128568994a040e9a04e",
"0x1f3396d7db31c19111069135ef2d095c1aafbe2c76d7cc387944b2f137edba64",
"0x225f3203fed96b846724c146b3d3b351d6615ee5cb1df8390a02a715ee206f18",
"0xb405da3510e7abe759298137d4853f651e35b7660028d9ce680ef29db4c22b",
"0x162df9d9cf874a89630d906160abd114b09274c010636c440c3773b5f012374c",
"0x26349d07dbfe862f47393d354491dffd8ed56bcc1424d45dc3292669be8ce0d3",
"0x1a75a0ebd02bd60bf851e0cc564a07ca5145d4ecb970625acc7f225480e29903",
"0x22dc35316d34324dc4fc4812b24468a33b94bd1187fde4092670d789f8372ba0",
"0x1f260c2068ddd344bf8fd0d985ad999e0a2a0b345b5d4e15647c60a0019ddeb9",
"0x43098906f60ba8b964c3d33854bea3bfc728ebd374b871eb716e1bee8f6fa81",
"0x17fc06025f7d0132912f6cd189b75845e8a8ebe264a3561610ec2db4cb22f800",
"0x1853501b6a22237cf790f64d592e46b76bd78d7a6e11a86a5e964bfdf98b35f8",
"0x13f85a860c328d7fe96970fbb13dac19233067b186ddca81f7b805dc7e8d4de0",
"0x2553858a2dfdee2556d24923c609eb3bd92e58f1cab1c406317019df0bddfbc7",
"0x18db95df1ef5cac1f4d5e21dd81e4e7d4fbf98deef329bac3e4744b2f72cc2d",
"0x218cfa400a003da69ff396f9a2fb282d544a43697b68fc6baccccd9cf9933939",
"0x15b192afdaf7ccc461209127b95647cd661c37044642f0207cc9cc699ee8a3fa",
"0xfa2a193cc8addadf7766d712c7af10074bc8149460ee35b5c78d15cf527034e",
"0x6f3dd41dd4a94658628fa7cfc17eb024a59ceacd9ef0fc0617f275cd9dc0fc5",
"0x7a9cbf46611387ced1b18c4f371d582cd7b05a50caf7e230a3b5fc9e028bae2",
"0x135f98871577c5e638e56325377721fbcbd590d85e93ed310fc1c0c802dd06a0",
"0xe8f8ada4fffe0a6b9faff17f6a926f28ffc38d958ddf259ddf4090083bd66e",
"0x225df6aa9bc49e9b2f5c8dc81e15c91ec1064db201be633f1e5fce6bc5b9b6a0",
"0x171c3bf7f45ba571930991e63dc8f4d823ea1d885357a37f7825274e9b9e0d40",
"0x171207761f4d71c5d5fa62352b306da902f0259f4c0470bc82409144feb9acf3",
"0x26a8805900a6087f4d916c5f8b752ab3211023d730a1c5f745d9122fd9c19973",
"0x129433d6ab5a8f5443489c357b69bc0c27cac6ae3c24997e5728ffc76439d5b9",
"0x1c0c02bd9a4f7a36fc2ad938f9a742c0af5d7745f1f0ac5b664aa3e4057a6f18",
"0x165ff7309c19adfcc8ee6ddf752f94fa5c24bd0e3ebdbac72c1fb06aef56dfb0",
"0x26b387d2dcda5acfe48872f1c9077083043981a4d22ec361830489ccb49d384c",
"0x136f73b20066bf9bb629e14dc8524e6026c159059fdbf51160066ef7c416be4c",
"0x2ab4b86e7cde3982d2e88235c312d1413d85e69d3f5d51bff97f8521bd7c35b0",
"0x15ab3bf7cdd8944501d4f6e1fbf9bcc650c5b7a96860f75ce08f5299a560e3ca",
"0x63757b1ee01190b18aaa9078ce6c59b4ff979a43897f7ac41f667ac1300c522",
"0x7235d5c897327b9b2dea43a9c924d63adf0962c8024e9486b31c7f7dc93f93d",
"0xc793e095f24f97300294b90f9c734241509ae31ac0e13f9f1df46e0fe537f8c",
"0x16c461135e143c6fb08d9c33fe385b0c7a012bc208fa6671e4619534b3e73139",
"0x3695a3fcb6f3778dd4884dad62e4e86c750e28d14fb31cd59567e3aefd0fb71",
"0x17501f012f54c4f196aa31cbd91bb126c254f553e55d4ab844f4d4c689d1a1fb",
"0x20ff8c2701723ebe114d932d485fb4af9af641e52cab0d5390db4dc624295cd8",
"0x605d48243e21cfef1ed9130f5844a0c14c790624b93ec98930d250c1b410bbf",
"0xffa032ab9b633d34909bb748a498d1d76f82057973eccae9fcfac45f50ea6e6",
"0x202d96f16f6276129f835fccc83f52e4cc1a7d5f2ac32ae4363e9421f6704beb",
"0x97e3fd4d35bd1394cd482c2fe4bc3c02881e452adbf58858a24106a1cbf0ad6",
"0x277c2847ae8ca64446c9d04e2be45b786a4ffdc7dd1d27d6bc978db85ac85ac8",
"0x3410aa7a2038d75d33082a5fd6bd77d018578ad7fba9f7712e4f41e7d397e6f",
"0xff02f1d79d410c828dd44c6338c31048ced79c8aadbc45afe4559dabec02981",
"0x49e781f466e2561b92d45a40fb76025afb1732b39a48dbae1c5542272b1e126",
"0xa88c49a585914a1ad99805da9dec850fffb2bbda64f7b509516a6713b884286",
"0x45e7bc4beec7107b2edf2649f982863c6e106589588189eb0c9de4b0e039017",
"0x828aea263b9f5db239f9c49e36a2e8cdc8e348f58904138e089cfcb8470ae5b",
"0x253955f1058a3387b40981cdfb33b74623817a3894b51087d3f9a4b39d716a10",
"0x177c69bc3df7a463c4d26b065562461ef1caff9c92d3bb143ce2b29be13b2336",
"0x14d6068c39b97b9a103cb0d40e9a8bf3ef7a6c7bd1d622d7da57b7a22cb1dfab",
"0x25dd2b57b4799f6110366e0baea665aa42325019581b8901fcaf78864b51f107",
"0x305ec758fa6ebbe5ce50bb2f16ec00d0430133a0dfd4cd79c12d69f8cc0e8ec3",
"0x11ac0a8009ce27d3e2183e31dd0175f81284b37c9f6e714e82de746969c98865",
"0x1d109b8b68f442a09a062c5a663a0935a96a91219587efcf3e95f0aa293578e5",
"0xc7b0a104e403dadc80eef55d68fd56d56aeffc40bedad4f44b2ebe780d08ae1",
"0x1807654841ffb72e7b046942c0080d97f43191c6d2e78b70e69ff867015cfa78",
"0x1b63da1a99ed90f40b0292180dba78b6e09454b75bde64ac9e5ccaf2b2b64043",
"0xd7e5c4d321bc6d180104e6a134450b8a62034e98d72c9318c61176453c96d4",
"0x2e252a397bdf1b53547239e3c6e9bb5260c1905930644e22985f41eb6a226f4d",
"0xbe3e9b1a8abdb889375ae6082e14e37bdd21b8e2a675ea56626e9f4b9d57c81",
"0x161b52904a998f03ea62ae67b561f1d74804ce154f928c1e086731d68efb5213",
"0x852f56672fc06cbe726036617efd210b8025c85b96766e95925e17f08564aff",
"0x21c4e873d8d03af989f22dbe4fa0a6af2a8719d289707ae506b39518349b6cbf",
"0x1ac41a44314ee18b9f9d4fdca582a052c9b69c09309ae447404b3ba58104581e",
"0xee333ba934442e498cede6609a1828ffce94cf07fa7b14c1c991889ad1448d9",
"0x2996c68d007ea8d16c014fdb33190fa58ee5de793f07fe4413ee3a4fca43466f",
"0x23f678b22fec25ba357cc068eb259f114754a65477022abe24cd07507825fc17",
"0x1f6c82714288549da4646534547189349ec908aa2fa02729e979df6a5882855b",
"0x1f818e74b9c3a490b612926bfe89e7947168d343c78084a3bedf771216014354",
"0x206833435ec4988772ee1f0ebb9313319cb243705c1313de603fdf61a323ef04",
"0x171785b03104df15a632aaf4dc7cb7acf47934c72c96310f1342500805120d11",
"0x20b7363891cd3589efe83abb91d9f2e6c59b575b8d3ada6c6cc84faf06763db0",
"0x2d60609bc685d0925cdec6f78d731df0a040638a754da555b8bfe26536a325d",
"0x1a91979ab3ad3401872d210b3b41347d44312e5d58df0c1217881d544ba301ab",
"0x166546d364e42050f2c39d196dd4189ae824a570d39c02ae6a85d82b00419bfc",
"0x1ac2089f74aa7d61b7c44c57ebbb6751be4c8a22b2f82f13b513959bc2f200c9",
"0x908ca864a04bcf677dba3cd272c6a1770e7a9c6381eedbf9f0491b02800ff0e",
"0x24bc8a866d9b7bed9242ed6a482252db77e9d83ace606293193994aaa126e72f",
"0x17a33b4d4a0821176c406b479e38da80d26522fec0931f218c8e54e269b0ffac",
"0x12d6d179f18bf6c6c13661026c0fdcfee596af082545f3299e05a8a78bff2e28",
"0x15c7fb9fcf8f1a92cf0c677fe58b79065a5a502d778ac6967c022f6f31132405"
],
[
"0xe1962c232fd0a6bb54ad8962a82b9838cfef19d290a55fc49d6debd061cd2f6",
"0x1e1f45cff3e74168accd0a94536fca6317128953eb47d8d2d79b847b355cf51",
"0x1367eec3b20cb74953618fd9261047755ef7f8aae5ffe96fc8f7d9a02e37bd1a",
"0x2ff6ad40533afa2acb78c9b91650d7ccbd274b09f78c100479f3a4d72956d706",
"0x152c8c3d9e43d90ad8094831a74af8151fdcda0b18d7bd8374ffda68d1a5fc71",
"0x241707db26f96df502364d26712c7f465d0ac5597a309559b075406351a20977",
"0x15a4e4728a197dae6303d0cdd2b6d1e4114a9fad38a530bca6fd06ca1ffc1f56",
"0xcbfd63f363978c387d656e93f11e336987a68748c8f54f385887e64b1075598",
"0x1fb594474b8334f9aea6fe5e323fb0e0ac27d2895921ac64e93e524e4ffd25c4",
"0x5ac55361da931c1b4c560aa8dbabc8624ba225871bce224addb5af901676aeb",
"0xe7266f909395b5d42ec298ad3eb73f6c11149f491164f997ea76b64282b9af5",
"0x1d928ce916ec0178a2c0d8a890af90468c8af68c4c128c68f042cad51c6d7895",
"0x11521e378f229844263410fe44628fca9ffad17eae9965dee900ef14a4d2d6d2",
"0x23f3ea3b55ad3710a0052d7a4b9c9a65456ef71bc4eb16c1e908034b3cd3b2d0",
"0xd4f972e795bbca8623bb08503764a90e4384be644f57b4a56f1e7e1548922bf",
"0x2a53e60ecb9c00dd99692d57d7a54d893934468203995267e83954859d21b595",
"0x18583bb0a83ad2e710369475bd54ae1d821d75a9e1e870df11c154f41be1a632",
"0xd45688dc986f78e71c463b76ed2c056881c76dc552ccf8d3a1d795d7682efb2",
"0x1448256830ab79d2618c6ebc5af5624fd064e2a16194e5a0c35c76fcb094d371",
"0xc0c7912bf67c273baae265c68f378a3fc06eed7778ba6ad3181428bd55a148a",
"0x900cfc715edb109d3e6c02b7a578326f57efeb3da6f58e64792dca3452a55f9",
"0xb84b851d9d0d621eb2872fd75b848ad6a905911a988b46a3d0d70d264c8790a",
"0x69b8105bc60bee13097c0fb14d05a1b932d37db703f6ff557675bfbbda8a5b0",
"0xa0ad082a6226840334524022e1d3c7168423449df9c2ffcb44cd9d4d2302325",
"0x18c350500a7bb9fecc04b286ee0ebe76cf71281b4463dbbcf8e266221817d32c",
"0x2da317c459c0b0d973e04bcca9c112726c7618ce9760c2228c308b7433d907a0",
"0x232a07d1aef79c1113e3ffe7094ac379cd67c41981b9dbd30dc691eddeddbc6f",
"0x6f8ebb8cb046c0aa7ea795744cefbc827e5727dd16d0f27675d99f8964492ca",
"0x10db78837d0652586afa0666b721e1c94180173183300992c4602c8c1c415478",
"0x12f5fb7778fb2b8e1b5ec306d3d8f2a497ee4e9aa5bf1924a694d04cadd5c526",
"0xf6a94bf66121d5993932988636d0aa2479e0299aff2cea5b7efc311a15007d",
"0x18b818a1c250d6f8b77870c1ef5942250214655460e4b5aa09c8066489041732",
"0xd25185fdb4a3c65e05963b80310584f2a6069c2c0b07ab2b6df2d04bea0f52a",
"0x63666f719c9dacd3ff39599926802bd9e07c61050b10ee79adf0da04c59e8e2",
"0x25f9e2e4766cf4b7bf91a63f7dbe954b2ffa4cee7269933134b5309eaf9d702e",
"0x1237a2bfe7efc853fc4e9c4fb84d8e7c56b125286d8bc81a5434c6d8737206d3",
"0x149b17921a60f02551a03ebdd0a3a71f7048d0f9f47893075c625341ae06159",
"0x21e129ee052da457e94cbdc1ac5738ab300aabb76a3cc3c23637cb6221874630",
"0xffbccf818cccf47beddf8558b8242c90e41fb603f137b02f0774228d6978d94",
"0x13018c64072bda036ce65310501ef57816d397a9eba56f87b56024bac5ebe9e6",
"0x1b009f2e8abc03f498fdb84857c2091bbb0095778f990fe799d0f2c97e2c2670",
"0x101546fdb71f32991c1180cc07eaecf47920cd0704691e555b3bc44de5c5289f",
"0x1d1f66a2ec0621f229c3f8cc7b153683d993e220ec5a1f01d42a14db46a785c7",
"0xc0d0d8c79f76f62eb8ea785853ee6aeaac59256172a14479d34101dc8e63ad0",
"0xa3f038a5f37073c1ea7a4edfc1dcb60859c1218e1fb611ba59dd245399c9572",
"0xb7e89abaf697afea2ab793f7cbc3e807dba45231d4fbe6b657a95f03f1b1705",
"0x91c47a22bfbe8cc067f70019ea1a2eaa9b381fdf90ffa8971b247812b977f6c",
"0x23502619e347553b5bbd886ba0ebaf4b63c07c289da07b0c7728fbd6092241d1",
"0x2f5d5281749be90119354e751ea126e578ccc43a4c372d67ae66d87c0c01336b",
"0x1ce6855b5db80c42971cc52c9c35275e8bfc7705684a391bce4151ad9fcd9be7",
"0x4f03f23505d6e117603510ef25bf46de44b95506011b5642b120b76c4a7a277",
"0x2f0f36a6ecd8f53af95b4b9514997ae0a208d89e974bd3359dd98fe2e2b3d41",
"0x1cf3c4ff9ab589d0a5660b86b5fdf8f38ec3ca5e92c445bd4cfbe6c70de64929",
"0xd907e14510611fc14612e406616cfcc0b3b1258278d802a5a3d7dd785284e63",
"0x148575fd984cf84d0f3dbb49564b397c17ac817e6ffe348881321ce76e35c44",
"0x13c32c26889cbbfaaf4d1f25e64bcb720e1cca45312f90fbdea8435d9e6729af",
"0x2f28f702d684198114e721efafb6922c3a42dd08fbb1fd6831902df4b55a6a96",
"0x5fd91ec054800f61ee128bbcbe332ec4c4eb25bc57781c436c931d5a44b6367",
"0x2a07137e0211d40057d39d707b177cb576f3399b29b9a7019c3dfc7d7a22d27c",
"0x1b9592c1a0852470e5fa045d32725f7ce17982505aa3317a7daa6cb31e3e359c",
"0xcfd305387cda42a1f5a8e00a0ef5286e0504738073dcc8713a43c2439c170c1",
"0x2e10c62b1b5566b5047f18279f4680073494290584c69708553c7729b6a04da9",
"0x2bb1653a56221c6263b0c62ab8a0a773d225b414a984994b6d3d5afd0892e67d",
"0xf270ab89bd220ddf62f18fdf8d278f678379e7b616006a8bead9fac9f473c70",
"0xa1301e2c189208513673b88d6b3238759488f79b99a79dd11d0bd1c973b95a6",
"0x24cb02fc34a8ce75eecf534184d7373b7e1c90fb5f7e24fbe8ec8ea1ef54e393",
"0x1603165537fda2e431b75d03df01dee7b39fd851a472243dcebc2c96d0deff54",
"0x287166d87790f5cf540ecffb1bf65acdaf18cc46a4f1164b5bc0778022e11a18",
"0x2a81c998baf847bbb21f7b7141efe84f7ac56a834c7967ea6f45429fa2fb1a5",
"0x20c95c47c2ce176a500fc18e5b798ebf4df4eabeba1d695fe217e003ac2f0e10",
"0x54cfe239b46d49baf4568088a72b2bfed0773be27f6e7e9a2c02bbb1ffa515b",
"0x8774564392fba9a0289bd2012b509bcc7b126d9ef3378da0769d8af37cb44c7",
"0x24a7f216983732c11ad301538184100e2cb090742dd81c09783918404f1c7538",
"0xfafa523ca9deb758cc5c0f54e485919a3b1c6caab6f322a36b014821c74645c",
"0xc8b11f331a17d83848b10efb6f8716baa92e649d9ee1c9584b334d0378b5318",
"0x2fe8b8a523a08c2e5ea7600b7876fa4b75938fd56c03c74ee2b60b9d1e8299a",
"0x1d039ad8acc6c9515c4b4a78f1b8a85784c287d5fa0eccef43901435c1c41942",
"0x1b89217c5104374c0b74a3a3ee0971ca583f59d0980c37566ef8ef363b1a417a",
"0x228b4d065bd84d6104e3828caed06fe9aa11d7dd8ea90efefc28489330674b2d",
"0x1d57f64ca6fb25d9a4b65736683dc6f8f90b4d5594fcffd6034443e98733af72",
"0x11ece5bbbbb611968ad64b52d89d7ae5d1eebc4169217e07b99dfdfea0fb69d8",
"0x21ca2fb7b186974b4bb67f95f943a07adf662eb02c7392d9f5e7526764e7b986",
"0x1f47138d833b0c8cf6294ef77d0ebede94ea57a28ac0a3e64bcb5df91320f10a",
"0xb95be5cad31b06ca97ca74289d89772aab0e8007d0558228d88f11364a1496c",
"0x794a48d6d0201d4b3af86c0fcd5479391f98f75623105f3e266dde215d76157",
"0x2455a03e833b1dafa17f29a71fd76f94d8c5d09fa1fb1665373d509a88f3763e",
"0x799ea93d781c35dea4b487f9849ff1800f1b63cc97842e2fde69f547bb76763",
"0x28fd070e349d506942cc217a50064cfb2e3ebbd3cde16c09fd68b7e4eab1b822",
"0x1cf5001c9cfcee852fcb9f8d89e19e336dba95bec545410f4435b5b01f4b80d3",
"0x8edfc4e49ac404861074e34237a1b124e4d8e5d6ccde29d1ee9c043756c44f4",
"0x2ee5b6524289cdd37ce4ccc8dd19e94cd2ee72ff264b468044bda8227b110dfc",
"0x2775a93e2b3eef8dc0bf9bd322e5f14281eb5bbbff98cf7ad93d35f4c4392624",
"0x4c564ee74a1199444d3dc4261e90b1886d760a7fa68ebaeeb5b5e353684e24b",
"0x25ffe7b20eaee8f694fa81039440b5c63eca1cac712f5e3b21af1b9a7be117ad",
"0x14a1035368093069b2a4337027fa695e985b6e56ca818ff944780c1677a836aa",
"0xfd53ab1fc6def97651d2d66d0f58976b39d07db8c4c9ac195db0dab73060274",
"0x16476bc3bc364193912051b64c939c0001e95953c76f7a748957d78ccc881040",
"0xc5a52339fd84b1ecac4a163b36d41941a156f53b2559061602e64d2dd031039",
"0x21b63c30dc0baf2b71ee86b7d5c91da1c17cdcebe5a0a0e5f2c8446584e05c20",
"0x1bccca220986d8fc3d22391a70bfba575a47b4f83230652e1772e2dcd1a06ed6",
"0x162a9696d6df2a13038e0bc6da2f52239951a204bd05a9e2a09066cf6b13a6bf",
"0x1d661af4be59bd53da92acdf5736a7dce50da796c393b4e43001d27f88d58d6f",
"0x1fb43feff48b0a4e5ac9b17a6c93e241f17b5dfc76523b65dc366bc04c9f06b",
"0x1e70af5d289fea2ef26141246e9635fd007be3c3d755abf3bbcda9c4e4a600b1",
"0x148928433fc03d3a878b420efc8954f04fdd4958bc822a6123df1d4d15d02dfa",
"0x61b30453d8edaeb5a0e7a3a9f951a7211a50fc360903c4b25a51e4e36dc434a",
"0xacad4bf22e14bf31537f39286d25fb493fe67f163bddebc3e94de911a9556f1",
"0x5a4dc602f73e13984177dc0a6f2d7af269988f872b817c837c8559c79b03819",
"0x1d1f813dca1d8f54d73441c814ccb0e84beae8ef4463effb612eb6ad131cf05f",
"0xe82c3574b61d4c239a3024d6822bfa186d5989ba1ae0597092560e8694ad9ab",
"0x17ea9ef9ef7da806c992916b2409a277fff09d36339cbfdf4687606793fdee9d",
"0x19454e5c7ffa9716bd1db5d707d4d24b909f4c718137ebb73a9661ef41a7ce44",
"0xaf8dccfbedea2064586771a23ac776db9ac4df3787fdf857db4a2193e934a3b",
"0x2748872a6ad3a07b30161ae37440d5dda279a12cc2ffe14747bf9082e72630e2",
"0x1a529a39f6519dcdfe38e311c7b0f661550e388870772650e1ce02135bdae984",
"0x8a57affe13513b3bb19680381a17f82101be9f5ac7be0cf9c7e61f710e63892",
"0x200d13b0170c124a25026f780273c4f557a3e95cbd68684e4e4df5ec00610f60",
"0x14c79a357f53469f91d01f4432b728551db863ab232525c2d95cf616f7a098d8",
"0xc513fd43af43ec6c905092c6d5d50aac833f144b9630e99483a83c3402f4832",
"0xab802177b395f6b6ad3dc7d1995f60eddb63e9c378a75247a08002d2986482f",
"0x589d228f316da74fbd8f0806ba45fcc1f31dc452e37430050bd9cb8f3e0acc",
"0x1b46df6f8889fd075b585d61925fe1f08d15900074bce706ea5fb211dcc63d43",
"0x1d2b938132acf70f122b64ae172ec1a822ecbde5a188b478e789c5c3e91cefa1",
"0x2308c203544d162d54a4b87d92102ef85cbbf1ab4c3c02d6642af038730333da",
"0x2eb7379bd69996d813136c99c2e66f45ca467bcdfae03a315cfe39ea99eeda3a",
"0xcbcf8be09e77a9b7004faa49c560e84077038326398196c04f948d09ac57388",
"0x72ed6973242f117e5fc1c344d9bc38d5fb3e94bcc02f48843a057e19bacc917",
"0x6670c3a568d7efb7f10eaebd727e7a424a5e2b40d7201fb66d0b74723081ee4",
"0x1e2105cd356ebeaaa12233233a2a22e0524c822b84fbb368b409d448192ef9d7",
"0x10f3092cb126d913e829eb1e09cef850812658485e5ac06c140bd1b549f53907",
"0x2bcf1b9917cb73d1856ae5dad349ff08660e800a5b69a959add19af6558884c4",
"0x7bfcd988feeabe2fbe03ae71408c1a394daf2943c8d32e41f6b72f2493bfae",
"0x2a977dd5735a9110178e2bb0989c7129bab2c6f9276ff1a9c4b3867a115b815d",
"0x229f01e653f7b280153de1f8d4e9eaa0e18e81c3ddfe9cf0f5185b63dcf8f3ae",
"0x272ebef10616ab9c79e34eff00b0faea7521fcea55df526bdc9e342592da9469",
"0x2c8a5085170dc8e626fd9f5f1186f99763976ea6ac08c253d025fb46e1526c7",
"0x2b77b7c7f7b862b6bd45b894af1cd1cca444f426d63571ffe6d57e608f12441c",
"0x1518209639e513d5623184871ccc1a02e82536b68d48395774930dbd4f130ddd",
"0x2417244fc99acce8d1da6685df7e33876bda3dd632cd684242a60d54555b0ef4",
"0x12dbd5616e93afff056e7402afb361f5753ed668d6ded08cc8be3febe58ae3d1"
],
[
"0x752af3c6fdccaf3868276685f0a69b9749e1706a82917b64ec2ef847f804559",
"0x69503d417e25f4568c7858ba8334301c0fa19c1b348bc7e18a4c1ace1d15418",
"0x25c1b121f33f4cf7b308ec4630f27b603d22aa81ca3595e801c5fa7d9770a096",
"0x23d6b55145bdb32827c1456af4d7be4c2d213e825c1d2f0c9ff99b2273751f6e",
"0x1b357bce3ef3f2b76afc2b5804805adb14cf6bf37fe2357c79aa7d6b32acaeca",
"0x28ec5ac0881c1e6426ba499409894a6f3c276fe5689f2c35c9027e80944877d9",
"0x2c9862524ac8a07b47d211c9c504c8b0bd398d028acf690e4b8ed4005dd06eed",
"0x1f6e6f0ac4aeb7a52343f30418078b40644cd43e290da0baee92891c4c065ac8",
"0x3db3517e233f8a76d21b2fb23c85fa7cacc577769edea09aae39407b9af2fdd",
"0xfc333dca4183dab479c5962eb05ee4b79a8ac6e0cce9e9b0a2142247bfd0877",
"0x1eed281978a8395c04289b86197673b0f2b65e1a135264527e250a5cdf99aca4",
"0x2e370db23857de3689fc9b908bf45ad8f42da900fdb4cc94a7a416286555a7f5",
"0x109bb6e5e04c0eb5297130c6524097470f3375c12fc9092d21ed33400617a0a5",
"0x73f4a17d45ce4cb6f4db87d6f3f5f4f1650c618e403e1873ea3b8c4dc187cfb",
"0x1a3bcd45a2b1dfb8e75686d3651cace13e1a22f5d838cb4a61b17417665eecf0",
"0x27214751aa86fd2654ea05fd2611f0d907287433875a8b0c3eb4b22d24d73ab7",
"0x1c5463d40460415dc684ef2415ba66628b17ab5f9fbc9597ba65b74892d34401",
"0xf934ec1ecd7ad74de590817347658a22a783496bab9943ca1a3c604d4cb745e",
"0xec2ad1eca0b260c4c6573f2f3b506e946d2a82aa5f9e65c2fc4bf65d310b1d1",
"0x10403c6f930519af3177a82f2be1532e5758127ca9fc84c93c652279618acab6",
"0x12cb8319683971740fa81660831ab6dbd3d93c7bcd441a912810d963582bf346",
"0x2c7cbab33b6294f292ee0eb31d53daf2eb8494d96a81c0fdbd62ffc681e71302",
"0x19e16c1b9123bbbf8fade03b4a36c5df8580f8de0163679b1815dc90ec581bf2",
"0x2d2734fdaea6da570313df4a533c0049e44b72b64906ae9cdcb3c86708637a4",
"0xfed7ce5d50ca2d33d1adfa990161fc780cdc30c5bf2d588184a190f686567c6",
"0x2533b8b3df21fce8544a6e12fd4c3c1fa09d3e1f146ccfab52af1ea4d6ea361c",
"0x254a9b0da17f1d13495dfaf68cde98e224f80697a0c31b89af097f3cb270f277",
"0x52a196789e7e3c6a020a0d2f82c246a903ad7f8ce3cede8153db72ac41ce566",
"0x21df9d899981e100541aafa28753e763a4c5a2af9845b0e9b7c4ed1e7beee2c5",
"0x10e9254d95c04bf4988f6de51fb019c8a7c5a20168b6a59479355e880028c873",
"0x1872d404afb8424952958f29d07b60d9f868d5f26a4d260f843373b706c3e850",
"0x2f7fbbb32af67d88737201022b56a6df47d476dafa7b88784aa9ab73c57a6f9e",
"0x27b5ad383fc085d2c2639e80629d7086e4030ae8e08ebb403860b4eb2b4ac487",
"0x20a04ba73975ea1af86ea418e5b9fff424b93a3807ecc3aeccec77de9c1d5b1f",
"0x4d2735db418968e804766f579f2a4abf79deeb66240fb29907b034db93472e6",
"0x210ba11f3526101019b98aaf9492c04491eeda701ebac8c66c453503176fc0d5",
"0x598c75413f3f84338c4ddf176e856f6ced73ccac8d5bc8fc6f12d5f306ec8ec",
"0xf1a2d9fa8407e310c58af407bf730becd9192070d7aa4215379d1efd9e6d2ba",
"0xbaf577ac2621cabdcf7ffed4073e27d1f711f9eb5a9739c12bd6df07a3cf257",
"0x23ba3057e5d9f1429ec7848b893ab3b40161bdbc6387c958c5872b4491b366a",
"0x1b6010fd6990d3e4928fdff736fa857bd517e35935e54a1d6cadd941eadb8408",
"0x2943fdadb96607530cd9f1000db50da2fc5cb030b03985d1d3cb53dcd6937ae9",
"0x9375b98fdd737f277a2ec26a56d374658f448c690fc8e376e0f1012e4da40fb",
"0x1c124f9f3a2672361b19fabaf0f2e1158b313fa2374b72c370b4662bf96e8a26",
"0x10e282b93792c2a893c54294446a63bb36a5b3565aad7504499fc22ebcc58836",
"0x4bf8cd673199f41df6b67b76dc46cefb40971f0fdd5e1fa15ee1921ab5d8603",
"0x1410cbdc261964a2ad500e3b6eaeaa50ea8b119ea11666f6558f9b3d5855acf7",
"0x2b17833b6c99d8d44c68f1a662a47493daba582bc549c3cd8ce47d572ffc9137",
"0x1ac55a0f9d9d4983292eb30427f1ca01b861f17809f2fd94d3d89b2f72627ec0",
"0xa5efc41de76c914410e9147e5e67f89c7792b20285cd0d15a1c1891e91ac293",
"0x1344b6db5439c46a22d144f4d5843e29c750b1acf7b0727106bfdb94cc023cf3",
"0x1a041839e844cdaa0f7c2a61ca9259e860599258495fb00d6a75b5c503e71977",
"0x2555c529d366e3d95899d9c4ad4c2d4ab284de4a45d6060ad91b8a8bc5fc24df",
"0x137894d2c7ff06b141e601c9a95f5664119ca32b55dc5e1667ba62524954a724",
"0x1f2ed1b26cfa389194477925f4dd3bcef79e89829c8c9645678343a13ab2f637",
"0x2072b0c4af46fd5d200122be5c5011f1bff2d44ab5d440ad946db4ba11b52350",
"0xcab3a8e77c43896efc4ab5bb12e3fd6d234a0dcb236c7c935c57a00338511ee",
"0x400e867efb3a8887126f96ca884358e969f14ba81be4df7668652e15a581cb7",
"0x594f14af7027250911a4b05478f659bab181ab426631fa4c369c361fef0e09d",
"0x171345094adedc87f3840f78d3f3ed67cef3b6a6a269b97198e012abf0ebb722",
"0x1fdbee4f85800afcffa10d76c25c01867b472d48da1296ecaab478190f81e242",
"0x1a37c8b010fe5a7f299fcf41738c50f5a904cab582e411ac14828e0c18ba8753",
"0x59cbe918d4cc5dcf2d3a31b3af2c2cc107b6cfb03b1be9a939a7f73c5075b8e",
"0x2f0054d719e7f0d3991e52178a020d3b7820a7f2a075695df201a5e292831b33",
"0xd3353ad739baccf5ca9a56840d99776b5a7fb60f9179dc15950c0639d18fb83",
"0x507a8c3d3f5f3965e2e9fe62fe9e824691cb53afd7430b625153661da3e94df",
"0x1eab1d2b44f79f50e2ba917a96b21934ebd43ef50caa5b21def5efd8c38d9174",
"0xfff97abc5a6318b03b46ea4361c8d29fd8a5a4dad51286897e77c2aba9f25ed",
"0x228907c146b4efa56af5b8f2e59beaa01741ab10f3287369efcd78e1b16ded07",
"0x183a209d14af4a1a9db0c647ad826fb75aa67506d03a50e6e937e3a4dcc2d0ce",
"0x17052b40860ecfd4bae684ae12271e93a32e1b703c3127d5d23558bd75496d2c",
"0x3a61810b60e019e3a5fb53fb055f81600c8f269b3c97fc228b373bc6a5e564d",
"0x296d0434d977a105b07f8e8d537a8381e885dcfe482c3ab773cf1c39b3bde3c9",
"0xbfac73b8e7f9882bf69125684ae20c7184882d3763ce87911dbc3eaecfe86c4",
"0x13900e213c48cdefe3e7090111aaf1c0873e21ba0f0b124daa1e9089677ea937",
"0x19f5725d859bd99469369d8a5b029401d90a4c7cf37267b4700ddcee31f78bef",
"0x10f8c20b30622bb769d902fec064d87fe8700497de4c3a32673414603f341f22",
"0x1a5d44a9d6eb166727f3bad1e4c9e4f20dd9e5c09b8ff1685813e84875f7c267",
"0x285812d1f7e9c5652ea549efde3426019405bb080408b01f51ff04af5ca4f7b9",
"0x17b5d657ca524c4fdcb6421bbf15dceaaec891e7a730177865542a3ec67644b4",
"0x1512120e54def6119fc731a80ebf8b9aa449a5e6a5654dcb16ee8781b55c40ef",
"0xce6fd9ff326d991817ed66f0fed93298dc8116c05f09e2144830c07afa25700",
"0x14c9e544ffe86f310c027522adca6e667dbf138a586e6fa425bf1f2b2114bf80",
"0x2e8ba8e57fe1c4ea06a941cdd2242c414fcc9a1e645b7e137ce61fc4456dfa25",
"0x1a1fb2e69ebf43dcb8ac7cf0e6856170be8c62ca1db0f77120d36aade9fae908",
"0x599e10ddc716d701d5857e23dec1130b5509c3913fffc727ce207783a2acca0",
"0x2908ace556ff1f368f843e0842ccd0dfaa42a34faf67e0b78de6c47de2b6a036",
"0x1e80d381cfe184b2f11fe38d64454a6292eff23f524d6fafae34ce150d1b8405",
"0x32c3b2a8872c39fb3edc92ef95e76fdb6381f829fbfcddef26004da5b5d720e",
"0xf058306e4f397b7b02a58ddae87d5165f21bb6109be64cd3175097f63d0d402",
"0x2a978242c551fa8626d0def5ee59675998dd8ff90eeafa7d935b58b8a2d0d1fc",
"0x2c646cf8d9ed14746f8a2a438cdfc86b70fa1c31033d4afd8694a7363d1ca0b1",
"0x1cc7d59c756a8e93071f95f1eb8a5cbc2aeea366715432873be8f94e3f9c8733",
"0xd09d0e6b64757bdfd7128d041c430b0d21a80a3792d0674f0028872c14fd8eb",
"0xc28d39d145cb8b6afe18576403080ed19451473b578949a491a095b6a19d082",
"0x22a2a85f132915aa09898077bcbd76e572e4340d8085708eefaabecc37ceca1d",
"0x1ad68c4e148a6c6197fdd9fa2c45f8c6f3111ddac52db08bd2ae77860e203a6d",
"0x19b59a4eb2398896e27a0e670529fbf4b72c3953a82c2bba9541a52186cf7477",
"0x1e3aeed61e3a7bc6dbf7674f8002a59ee28d3d5d51abbeb5d850dbb3af50559d",
"0x237d14fe10cc10d41cf7b9545c5dacd245207725227ee5d5578a3cd163c4c161",
"0x7a561b03c03a856f5d7b15e895448401a8a4ddf1de311b51663640c81cf44c0",
"0x20e3c12021f53fc206893985647a3ddd64fb1660257a4b9d7d33fba8be729a1a",
"0x11cfdd5386f9ddf36e9e1a271c0a8565e03aa7e427c624c5050dbeab40b10b65",
"0x97b90f7016668c55385a0f101b699d0c924d1556918eb58c9d9a16c7815b3cc",
"0x23dd4f8205e9cb9e123e27e80f46b8ebfb4554df41528acdbca14166af70a8b1",
"0x2004cf48392d1d3492069d0b20c5ea636c7de4704668bae0400f32d0678b5f90",
"0x10efba7ebb220de9af4af5b3d2cf4e3a463d6f61b3a51b190b392897922b15ae",
"0x26ca8fa32860470e9ba95f2b328f45b6d3aea8c6694f52f7b2b6139b31f0e659",
"0x2e7a6096889e932c3bbdc1234b042946ca8dbc3bd9d42894e227abe994b3954c",
"0x2b2a5b222000c7485717e5134d31d966d01094d20142ce0be0ed5bcd238fa4fc",
"0x5d252566db243c26ceed95719ff4e6b2db926a82a90af66c3913457724d688b",
"0x3016d7a342ccaefff833834f8c85e4cdde502f4cfd2e5e67a434ceea8e7e8734",
"0x22e4a5742720cc545f5a8b5ec81fc76c856674c2956c74e93d09da15b9ea85da",
"0x158c039583d91471651b425b67a9c428746b7d2ff4d3f9c7805cd097252882b0",
"0x2e2b9193aee7573ba18105d36d5452636f0a4a23f6bb808dd7b8351b3104288c",
"0x15288eeec077977863bbecc27af0e88653434f9db50041bc64cae3a4ab0267d6",
"0x294ac3d23fadc39ffde4fc51c231fcb1e9043d207384a51281ec6993806fcbc3",
"0xc994f0154a6042df030cfcb8775ea9baf8790d101fb004f7921bdefee4dd",
"0x23be197c83df334c3818a4eb54f3755fba5ad61c6ca408d6fcaee753a2e449e2",
"0xabe4f60f5710062df7838a25e613eec5c7c500292cfcdd88c4b104f92e66dcf",
"0x22d9eea2ce981be68d03a627a1ac38ae17393b42fd589e8492df86bd03f69ba5",
"0x17fd7f4e675f456e77902bd68da43d7a0cc8ba75075bdec73800b670faef2c81",
"0x3cbf13917d8f6962b85bd9b1b475e083a9a6503290264d732bc7045eb4c0e7a",
"0x13e3842e78b6be3414c29bd5528593673bcf7a071c9e547d4a6a8e8c1f29f43c",
"0x2638bcc34e7ec977e6205a356d8073edaeb37d6d0cb2ee15ccc657e00884f71",
"0x1824a36f9b33cd88b29d9d56794c02f0498c8c3520cfeb8d7d23df01dd11bcb8",
"0x2f64d3e9e9660efd747a28a181719770cb89acc868f1db0b42a0d41424d5b97c",
"0x27e976b95c1db0a431cc63d2bcb77b7420eab7240caafbd4f6ed94b771d7ee20",
"0x71017cf059038a6f1ad9223c843e6f687774a7b677edb7d7dd6d4d8aaddff",
"0x263e1eb69b7b2c87f3d9f4d492100367041a00cc20091402d6bf495d74deeba5",
"0x1dbd8f7a790ee4fb6123d8162e879b6d334e137c224da75baf9b00dbd5b14a27",
"0x1df0f444008cdfef43484dc04f5fdd1694d6c90e8f2e35a1850831879d9d7a2b",
"0x2ac29049462ba770408914036f0fc449f4ac15c4a5c16768e95e2486c62da8b9",
"0xafee4216cde441ab47db90ffdadb12b08978ac6f623f3acde4d4f9d8c77f3a8",
"0x1f5df5e1d3372dcbc83d7072bfbf2ba8914024e3398ebbc3461403d39a1e9895",
"0x11c09f4be4433544bb604db662a722bb16824fd85c484c45bf25dfa5ea9732e",
"0x111ea5feb756eb07f942b5fb23849db24d1065b278b4643d55311c0672cff942",
"0xab7c194763587f1dc30e0ed53aeb6eeb6036acd702bbec9509d649a81f940bf",
"0x282c5951f988191603f9dd07759a4f653f19976943d20e30d4c0f8faba0daa05",
"0x23b82721a7cdaac2a39f7b4bd10176e50983f32cfda8bab88ea746ebd4d25ee5",
"0xbafc22c31e735870dfad91a56a46ebbad29b29e531649c85bf79c8dc91c792a",
"0x24710e9cd9f6f42f71cc8815934ce87ca0d677facf1f3d89a9abc2da898f9687",
"0x2475ccab50e2c13fb5d772a07571e0e6be551a55e250e44f22adf1c7a4d7ede8",
"0x17326fde68e193e4a31782f2acecd7a468493aa94d63833575ae5184e9ba2441",
"0x1d044be025c79f610d4009ee0a3f3b50dc556e785718d196e67c60fcda498459",
"0xbc38517b0bedb66a044e38b1c199d110fa36adfa1251d46e635f22ce8fb3b61",
"0x218a7ed7b5b4e39d21cbd4ecdf0d4f31308cc205583a9ef6d91ed6969b45c27",
"0x70989c23efe1c0d6089f9bf987be86854b4bf5aa88b37dda3b4fbdddb068f36",
"0x11f0a1f2d5894630701027346163a4c6974023d321780e91c8df5e91ea930c7b",
"0x9070202bd144c45ab704c72dcc40a5566cbfd5826f7af4746b4472b1e68c390",
"0x243392fe4cd6ca6b6747596c387450ce6a1ae7b0a90eba222c3470d8a80138f7",
"0x1a94265093ab44062e5d0e67df9f4b702df8de8dfadcac6cb4229681117a5da9",
"0x1ab31ce49e37f690baf9ec7b1443357cd24d7bad16a9e6e95e43b6564d987b1c",
"0x2179ceef0feee3b0b03c9658e97b6342f25b208d7ed8e526150fc3b559128c5f"
],
[
"0x1512df0135b6692589f071140a60749cf775c642b300da2fb4ad5c6e23ad4e5f",
"0x2b109ae037ed30361cf6544b2f4ce58f356589896d6a8849482ed3f9b66e1198",
"0x2585bece06eff553d485478a19eb149e2111ae4e1ecb1d61fc10cfe1c077f34",
"0x1ff896f4c0662f4b2ad926741b481d03b813a8cc343b9c2d2bc4819c70b2f3c",
"0x1b0caf02f434fa3d4cd4fbb13d3116ac8b7386a5afd6c67076ecbc3704aa45dc",
"0xfcb7c9f13c85517a7805894ac82b57c06f2f153a6f51f60f8e508684dfe5bcd",
"0x2dc2bdf7f43812e39cef210e42e92b4968ad8bf554541182354504d32cbf9954",
"0x5add9df20c1898da46bbf74594438beb07c9a65635c90f45c0a08febad13664",
"0x21cada6641664daa997fd55ace8b88191cdc4194fbdbb6ca5895447c8a58859f",
"0x19623504589a60f058b04489b153324d16ed66667a04df572b103590b848bf04",
"0x1776442d850a436a005e02c6475b72fd2d5f84452890c444162848ee1d57dec2",
"0x6c1691fd6d2ee98396610f3c868d70874f24eff853938d87face89234a09a98",
"0x17f0d5cf360c354a57e7fb986dadb3aaeba094920e772cdd9abc75850400aff2",
"0x3062c0db9c925c48cc2f80b698d9602642a84cfa30e1bd36408e2cf82ef3358a",
"0x239ec7e4b4723c8ed35b987db03d62c2a07c447bdd6ef183b0647821f6874c2f",
"0x2bd39ed7f4f6a72d02693e967740b5fa0314d9a1f8d9f8911c28dad3f15ffa6d",
"0x20350e75bbd562e339269cf7fd221fb7c6ed2cacfcc9036568bb4ba5cb17bdc0",
"0xe97bb9d9784920fb39abf35a433437ed6fb631525285dc3c126e24ef54e4b8f",
"0xb12ccc871d3272e80a216461403559048e4a5b3af445eeebd8224a7edac685d",
"0x1dfa3b05c202cd982e3d73cb81709d5d48b3cc105fa78ec8f0f216436826be2f",
"0x8d9fbb0715c9bf131d6de70b288d94afc02d46960459fea30e0733ed3be6b",
"0x292b7514248f1ae662e5437705ce49153e5be27c212e86107df1725ff465332e",
"0x1d58b0684f64db621ab3ad0dc98263fd7285d6bcd86e07a145bdc6aa75c901ef",
"0x4e7bbd68e9989a91190082f0b29b0b0adc2be282761c44d1ba687757514acc4",
"0xd93a5374677c75bdc1b4071b1948e53a1b67308e70ead178725b08fd9ed8d22",
"0x11eca18889e9f49b1f97d5998d235f97c163d1706b4d3d4c380d9ae1f3e79a28",
"0x266b924e67a868a585b398c2e3f28e3218783237862bab3e925e6e7a9d659a60",
"0xd2e26ad58eacea3b6a14c1c7803caca7ab3c5881bc6b5b274531c2d461867fc",
"0xbccba4532b7eea6c3e40135655171fbd92713ef6e8218169591e5013a84bddf",
"0x17a12ea9750405b3d59030af035c18e4f362e183da6b84e985808f320211d061",
"0x76510bb9eb19070dca388a1d3a95aecc5de4a2c69c3181665f982b60e0183c2",
"0x1b7034b3beb0680b858bc8f19528e8c122d6f68059b15c70599910c993b6bc00",
"0xeacf7ac9862ff85658521517138795da59f4273f1d969f815baab2382b28bd9",
"0x1344043beef1afc165d094c8c5da43e793bba98b579f2417a19fbfe538e2cb80",
"0x566dca10a0b92ce177b6f7282493e6b31391e6edd3ff4563277e504c441b1fa",
"0xc9c6b5c46b9877c2eeacd033f184fef497d2ed1a1ef276ba4548d05f3c78387",
"0x1a5f92921d4f34a7445fef0618f1b1a21d68714b80b6850dfb9c834f988a96ca",
"0x14d14e621cbe627022809f07ee078cb2b3fe4fa024715e3f7192a510f1d8e106",
"0x1b6f67ca2ff07a2de58f7a0ac8607c92fe8c4133355938cc9812c32b12b8fc75",
"0x4c3bb7f555a1a8747edde5fd33feec3ab52f53dbbe6ef23f7c26e62de26fa12",
"0x1aca03a3d87c90e7a3ffbb8233149beb0b6809492d33ce3e507951aa38a66331",
"0x2294ab2f143e49a23d279c6fe914d67ee878b3dc54f9d7ff107bbe78ac2ffaf1",
"0x2fb43038c0b4433ac0c9809f4e7d7e688f5c1d3c08f66ac64397fae941e6aa43",
"0x274479867a616c602e87c7521fffbaa85fbeb330128a3bc8c8b8360fb5a3296b",
"0x18a3410d063b4e72016500228d8889dc623201b4c055dab660b65347fb4ef820",
"0x2d6fe8d3d694ba5dadb904fd6904a251aa2d351f3cc11c6d1aa94ffeee452619",
"0x1ec5182518d6d3490ab0b3ff899ef89b61119743188eddfebb254dcd2a787e20",
"0x263a061f3ec9228bdf93eb93f2695fea629925d6dce82f18e6dba79b3be9ed0a",
"0x2fe0300a8196b9a46eb1f7d529b4d4c09dbc58765a42a9f3b61ef7c107bcd226",
"0x862f4486dc03350ea63843db9da09a5a3c3012c0854a7acb75ee18363dc0414",
"0x9ecd01d7dd15316f2d3df72a9e731274dae116592adae8a81eece51a4453353",
"0xfc127ceee377fedc0d2da69617739fe790bae028858dbe5db8a93e3254eb8f8",
"0x15d224160265df8e5e4c1b61e7f9560b3dfc57649f3038f440b64e928bd32970",
"0x110f785f7d04151a37b44935a1bbf4782afc72ad28e042c42fe63e6302550f50",
"0x17fffee137039b42943e6f8d044ae87ce06d5fb1c3e2e51e3009a45fa1873f70",
"0xacb1888950067efa97acad9291f63c05245cde116d7e0bedfa1dd90dac185a1",
"0x22a4abaa581375452fc3b531bd4ed54fef9bbfee016e665e42493f09c393fed1",
"0x25adecd63680d23f87be6226ec05a2bca8524963ddffaf863379d4c81fc793c4",
"0x220ce90ed6442f459eca1fe1f2027e6377e7189e0f6ef43e1cd364e9ca1ceb9e",
"0x2372d4e4009fed5ef65a3641db3c8d6ecb33040fc25989039394481a94b97195",
"0x11926b0acd944afe2030cf0e8994d90daa535f465967b64ab0b6cf69e316a51f",
"0x1229359753fb4a0dc741da84bc9758aa0a7662b314a31fe003474faad18e3800",
"0x2b3a66d166c51a62bf6af2e54897c51e45fd08bda74d5857adfe8fe3e4bc3977",
"0x1e7f4fa362bd86d6927781af2a4cac46a77a19b28c4ee55b2ba0881d2f7b8e2d",
"0x91f7d66fc8ea2e7ea95ec1876a93d33688f9f9d47d3c8b07df92d1554e38cba",
"0x2c17ae7d9af800bd393b5fa0f8b16293daf49e5afcada50847795b87e12b6bbe",
"0x266e76891b0271bcad1644b852ef8de9d3c3e7a53e22f6cf096ef44fb35bbbc7",
"0x24da30c34e49b417e6ce696fef7eb94e67b4d74db6d2d5cdaa4777c2602166c",
"0x4c3d31703ffeea22ef8509edd468586bad669b74c25fc9ada49a185937c2c94",
"0x2265314c66e182feca755f9a0cf7c5c7f7db6b501e010c283159f5fcc5bded33",
"0x1aa1766643eb30f96329fa3eccb67964d510054db9599f5f2536d7c37f5c1149",
"0x107e8da68896a4d3ab40eedf2fa75e025f787dd92799357218e823fabebc8947",
"0x191aff44b7bf99027bb1d6954ca0901c950f7ba8f1e1549475f0f28ac6e72d60",
"0x2d6a00ed5b8ab0055a4277b39d178918744ec5b4e5a392205dd4eae9b4f1f507",
"0x8bddd13ce3e6d0add2babc5f0da3ed9c24e10aafb289d03e968163c44f4e669",
"0x2f0575cf9b7deadb634320f90d84678d771833f9ac9d1b67c318973fcab18f13",
"0x1366a05d3047d5b3452fcc62417343245ea727795fb0d05efb80a75e1e4d7cb0",
"0x234dadc295579c62b1080fd64f340594eaf258b94225fcd6beb10e5efb4d6fe3",
"0x1f78b1c152a40027a2c7b0ac19bff6ede3202ea1b95e5d0af43125a33cea7821",
"0x1532e8db5fd0a6c2c785a0bca111741903fd089d9b73715bf0dd70c2e14df9b2",
"0x9012747fffe05e8b4482f278d35a28c6f58e6d502d69a5f351225225aa0279",
"0x105b192f778c42354f2a979d91b02fd33c52c59d542a128fc08e5d11c96fbd65",
"0x24bcbd8a492f542d2e6faee6c503c9c6f7a67cfc7d8e756759e0bae679920b81",
"0x13e55913295f26697ea8ce1aaffb07373dfbe24b8f41e789e05d8b96c2dc9e2b",
"0xac524f2908d8e1292a18ee6d5ed583c29626eebd03a593db01a61599c286139",
"0xdc402c7aebe3f023ca4b75dd5f69acf8af6607edad14bd806181077e41168a8",
"0x6d687b70f200804cb3b39546609c1ac2309c4b59fc96c7673ebdf2c900d9400",
"0x1e0c2662cdaa91336e10c7eb3c6eab12330a99da8a095e928f73a8b45accc8b3",
"0x14be0cbdb25a5f84d36b415f71ff807f9df89dbe6a9850213a288abde6db6264",
"0x2fc8c8938e2554d9d02e135eb0d2bd251390902e82d6ecb4ac37b8ab6d12233b",
"0x2059f3ad1d4ffa2787fe0577dfbf12701689bb3359647219d84a000e95c62c95",
"0x1e90ed09600b1ad7e5f927ba5e40d6fb87bb537c695d5ab6fef166da18fe7f4",
"0x64fb597e3bb0a3fdb8ed25eefa943f6ca21150b4e029836fd31d63cb81223ce",
"0x710644314ff7d6091eab77327421b8b18fbd64ab6f6756b61ba96d79854d6f2",
"0x17491b622e2f47caf07a2abf0b623896e973647d02be011f099b84af45dfd1dd",
"0x2c7aa4382c1cc1897988dd51243facdbb7d37e8cab2e27a26dd7fb0795d77712",
"0x14695d28c7fa12ea6044e898a6d8a6592a5f111a293624a45dc24944f77bb711",
"0x1602e77d6ee3a46b60aca6ba65c81457c4d36c8ee14b3559966cbea0ae32cef9",
"0x1ab02e5bfaf9d4ceac75f53983bae994d12d0c44a280d7e2df3283ee1f429ad5",
"0xd2b3a148b13d8a541e3cb82d624cb30209b4f58fef5121bb74e8eecacabd939",
"0x2e682ed8f03c5e95d84007e89a92043c968111cffe9d18665258df0d3a6a9b8e",
"0x1428a6b9c8cccc597a9eada39c3cfff0154fd9f5ce4878d9963b89c7a878cef5",
"0x125dae4075bd6f83314ff7172c70f192173a2d4eaf09d887b942d45b7cf7ada5",
"0x273aafea62ef6ad185bbfbe54a753e59f639ab2dff85b1f4c0a28e2136d4bec6",
"0x179314705df4e0b530f1d37f9d02c3a88b66e2272edca161365615999b1cf404",
"0xdc05aa8617d57fdbe30d76d7407add6a2e95fb73e9f942e4c242e2ed1016318",
"0x18469f35a1ad56b258b1e60243c962ee6dc99faf274f02feb42a8a51182652c1",
"0x2f79b79663182739a2fe0c607077163df7c0e9193143234337b9007cf472ff7a",
"0x1bb4d4ae946d5ec7cfb22cea828d263b7e574ea777aa891cb0ba07cb412c2413",
"0x27270b27dc8fb9ceb1c5aa5a49f97a795c1dc652f9012ea2110ac6877df6c20c",
"0x14da35468739dc3ff0110c91ef540be904c73e5d71e5b0b5eda5ec6dcb2f6eaf",
"0x2e90d9ee3e7c2164851b64afbcde004b6c0b82ae7ccdf6f78849fb981a35a2ee",
"0x2b15612eb94247469bd9475ae4bde9780511cacabd566c1e74ba1761d60b6158",
"0x121c521576ba4ae4a05ed2565651b2893d5f704e5c6f0a642c60e50df22c8ef9",
"0x23863fd0801582ee9b9a4c83f3b6eaef83c59068c0b1d4b9e93ec5ec1a0c2938",
"0x13a597a19307e90fb04778f82f2e6780a9e2c4e03cb0515e2cb960c51838693d",
"0xfe4f11040f7ec803ba86cc6dcc6ba00ed7569a00cb4aaf5685d014beeca35a8",
"0xc30eddac033e3f113894327db9763aafd747b32d1344b65ff7108177125de2f",
"0x16449ebb71737c6513326b4636914fdc9f7864c7f10025a09734880d423cd1c2",
"0x267f1aa1162b7284cec8df83403241884bf4a29547e2d0c470f6abc19fbc4e75",
"0xffa65c12b20f5ac05ab035a3b9cf0983bcb4cd0075d9a9e5be77ff9b4f17bfc",
"0xfe550d9e4e3eadc68883a977b6869a5887db153f6bdba49233f60bef77bf44a",
"0x255002f14c45aecf8cbdccc25c25cf16c9c771c653dd213a2ce22e190d7df111",
"0x160c6500540f89b145de5aa9fe944604eaacfcbf1c17550ec91da6078082ce1a",
"0x1383faf37b866d99769fc32b68e45a753f803ea36e351bec34222729356c6393",
"0x240b1af70af648da4ae6886dcad5c673e5b36aecfb7f2e58bd12564c5a77697c",
"0xdf9f10587e99fc6280b6a84f0ab1dcb4eaadc8958518ea2bbd5e648cca49e1a",
"0x26e4261f23f0856aef429a307bafdf1b57335d7a0f38ab992a77a5cca9b50ad0",
"0x145b8482c15986fbc1a4085dab239bf2d5b524632baed39273551273ce1765a5",
"0x25101aa4715ababd467f91767d0cd0e8037741883381e392c8521b08c6cf62dd",
"0x2896258f1d13f8b556b92d0b5fe0684f67a8665bd97747eb0364ed9b41cb2b9d",
"0xbfc25af60e375f1a7e09ec5c0411ee14b52346ede9837df5703420189fd877f",
"0x29a042bd25d6f3aa5df99619a794de17432fbd1c75fa33a1010c1af30cbcd828",
"0x1cd0de72b658cfa8975dce977ccc6b6cd06e4f8f49e620e72d7ea84ff2373c01",
"0x2197c4469eecca78bd4629b5d53bde29a8d3222bbfffc5948052e039f18e3461",
"0x59c6f40b2b1bb82739356c24e78eeb900d1d1057fa9d48289157af603d05dd0",
"0x18ce307b89e3700870c70a6e9460f1aed5169f729d2e75f7e6c7e6d0298fc334",
"0x27c70ab7d57ecf0b8348df89c42e3817450b3f018519673f9f508e5e1ddcae89",
"0x1aad5aabf3751e7d413b8138c2769035e8591227395d0d1ce29d1c5b3b42a54f",
"0x165634b54770542a49ff684eca304c99d9d06315412252bb82a2ce5efe24fde9",
"0xbe7826f267e77ace74a4eb0e10e5268f07f52cefc1d7b74e7a5b82a08c85266",
"0x263fdbeaa2840c05de52dd10fb42817361a189d2abd54ce145fec18cb11b7ed4",
"0x2c1ddd2e896c9dab5533d8400df17eb353a0191b9b97282df18774113657b473",
"0x894b90c18b05d7ea347b8dbe1471fe0020b9d0b1eb45a07b0f70d4b3bd90228",
"0x3056b80856c9e6ca2d92a5bb3ba46c03de22785d58565aba508d2d898068d741",
"0x1b3395901b0049172ec09a314e4a4183563727d32a87767a094d70535336be93",
"0x143e65a2a879b7a35660da4fe2141be33c17ae0e6f1324fb3cd9a1d061a15757",
"0x2f3f3a50c82372cac6815322698f09826210a571a9cd64c68dfec4711a5fe60b",
"0xbcc338d5a9ad15519aa00e89fe52cc24491416e1ab69635a67d3246e58b12ac",
"0x2a462fa9c4a682e118cced65a4aec9212496ddfb5de743729cb281ec3a76a8fc",
"0x7391449ce7efe315f816f0c1c3ad33b520007106ef8d11c2a2463de270ab282",
"0x8cc2bc080753c7730c57f179e38cbf95b95db1fdcabfae0a8d239342fc68c8b",
"0x1ce160503379a007e38ab3cce61d6fa0d78ff6b19526e1546023cb6dde3551a5",
"0x2fe5f53e6a16d7430ec9a765d640bd5de6587509be8bd773be71073e4e652975",
"0x2b9d6359e3de7b25159b8d2fd42c96244ad92bcb54f26ad8a6a10b2713de4d73",
"0x2f730a0fbf24810d49065521296809b50c5e96a6bdc4e3fe44d9d4517a259728"
],
[
"0x1373c771cdf15121a224f330d84b6688ef9fe0038a3bc26a28e3196578a0000d",
"0x29f9fbda3c999836017f76e121af3aca5ce78bb48fa867a6a95e5b9db387533a",
"0x1c7eb5116a20075c169b786d9dc86a24ee7a2525b565bbc262209a8cda490528",
"0x21a549eb554f0f859f61d68f1b6bbe9aa3449a6238546bbdf2a1c308c9cc52e6",
"0xb53fff701347d1b9df98b46175800e0d3250ac6d4a1afa71a349ed195873508",
"0x2129ac4742415c020db2473999b34dfdbabba3cad4713718f95e6346e1583b7",
"0x1d28f305e8b0ec88da37c8251b0c8d230b68bea9401a15f5124d64c5454bc29",
"0x1ed301e02e3fc930999fce6d3744c23596700c03720705939d61cee451faff93",
"0x2edb1832966e34eaeee0903858afedb13dbba9f7c802c83ee628530d0e26ae1b",
"0x123daaddc930c65fc67bc77ca8bf4123fe81fbd0501e8f89ac31a698756d87d9",
"0x2bcc36362c90210acf67d5fe21d53104e9d5478d057141d3b17259fed8e4a8fc",
"0x1fa928cab5938207e898e61d99c7d616269144f7900815b17095f7ff76e3c9d5",
"0x29c2f1cfa72a0fb8f53a631e84cfdf5cc18fb426c254f5a905fd3e831fc7c837",
"0x2da58609f78b29ae6889f95ea2e8ef01a6a6c2814ed02317ae9e7142a29d301",
"0x2bef1f45efbae1a4f77721631df4f6982555d05ac5f5ed215dd25939af5c1b06",
"0x69266bb89813e77b00e34743aee026a873b7e31fc6f64ed57da189c460142f7",
"0x2b7198b043ff31d915deb9d5fdd0338e5bd8028992cdc033eefb9cebf92c9f55",
"0x20ff6cb38e8d9501add93d1684e5420d1bba60394e7c02787a8deb9573878000",
"0x16afd4f19d312cc4b2568dda85d89dd7c834b05b4d8ffabf4410f15c22b77cbc",
"0x2bc96c4bd9eb8f09c17483aa57c5c05f002c6a21aeae2201e882335bedf4f1fa",
"0x1827a11b658414b98b8f76dd10bd5e0fec96568c2fe059f71999ecafbab0a00a",
"0x202d1bece537583634b6e1e70659a1bcf1afe1c7775c478c00648b437578d9a9",
"0x218b5b58b3333e735ce7c88a6e2f179e907322150a7833fb841325bde83845",
"0x117267f052b39319c4ce34bc8a543b13e80784662c208ce378ad6118fdb0ace5",
"0x2979bc493ae1eb3e0df74316cf12fdef6dd1674174a00ae9ef908b3a2df98ab5",
"0x1925313243795f90651c448c814b13f2fa988cfc8895c9a2bfa8551164461a47",
"0x309b8bc3b0ab07525a643105acedd0ae664e53332f89a185ed3d7f1da80203",
"0x2c514d1803b41345f96cadcf983dcef5551b7ebe8ff78f23ecde23ebd5a36831",
"0x23d56ffd6d38c9ba909730fbe6443cb5b4cf9a9702efdd98696652c3f2d1775d",
"0x1eb7ae2f9df6ed33760e51a351cfaa3f4aaeba7c854b85bc6e2b63cc3f2a3dc6",
"0xb3a63736983f365880bedfae6fb8fe5eea0f32e0b398e16d610d62a82407957",
"0x249f511f31c4ddeb74d919cda9133fdbc1cf2d9b66288c9ad13e02c719c39612",
"0x121d3b76e65bd665f5f5d2908435c2571441546a9504370a0f0c33de6fd7e738",
"0x1e1fd57e79cf042b1b3b883d4f4265f15f08839a8b5c3f1802ab7b62d55eb238",
"0x16fefbda0580e528dbf2648ec82d6acc114c3c1b720d56af01c542ed6d656b22",
"0x83a8b8f4854d599ee237fbea3239f9090e06c223b77d130f591036be8209dbf",
"0x2a521323dfe7e7e2cd622674f46cc5d64123113e3423406966ed06f2e7d37935",
"0x10fad028a543b9445ee6841a44434121317b9a163e423a7bd6c0852ec521e965",
"0x274bdd049a73b6677e0ff3e64a8d76d34009e467760819a9b0189a94ff14f79a",
"0x2669e29b8bd468aa3991639947dfe76fc166111d6ff1b24139d2ffff1e1259ee",
"0x12f59494b5695acd76123fec001dd777e40278b7342b34863e61dab94779831f",
"0xe45ac1f353f45ff384658f34bad47b3b03da93784b770b607d22ee036c8ff62",
"0x270d5a7fc5af9d4ffbc6edc57c91594348c60f3ca8a794d141f57c7aea7b0e20",
"0x1c57c847fdb709bfd38776164af9aae7175005861f6cce68e7179dc8eb8d59da",
"0x97bd4c74c9ef8617f364e87d90a2e4f461c57f2e7b42dc48b245973a25f8198",
"0x9399dcf5fdabe6afe6c02a3fa831bf0a4f92cce46654d7aeb4aab80067863e6",
"0xa11daa6724ecf2f75d8e368d31ed437dff1bba0acd32ba12288d4428ab66d9",
"0x95ca5b00386b675738ee39827f9ae5a43ce09cd2b7a708c526c9d478f650906",
"0x1161eb2d96d8f5e199a01fb1712c5f4b29ebc97d5de98e644474aaa34391f75f",
"0x27ca09bcc614752905359dc489829b9ca0755de8b9efc1ccc6d83477db1bd60a",
"0x2f2ddd101005b0d76d47f4440b2de8d982ffcb26416bd7acd5b1218327097968",
"0x226bb0d31a8e961ff7925de0e07d33ae63c3e806ff19f375e8e96b150ac2eb9c",
"0x1e50f8ce5e8e48a47693351bc4c95fffc274e75aad2fe7e6d607d8061e08da17",
"0x17e98bdc10062dcab33e194593186fd29f06a5a3cd95a6bf373e314047ea75da",
"0x7e6d38b28db0d587b13ac7ca4056fe27cc6e51467253b9e1b9318b181f61ad9",
"0x7a06dd6230750e3f59b57edf6b3fdd71a4a1485e2b9765bc85402de6c539e15",
"0x224bcbf9e7ad9eb63bdaa8e679c0ba67c594e4c8bebd2e06f1d736c4fa5b9c19",
"0x14e43b10484fd331ef027a94de953dd133c14e823656e2a3f7580376d90b778a",
"0x21c2c69e30546f53363e24e6032202627228f2d32c61924ff4f64b7b3e93a8c8",
"0x3fe37796dedfc13fa0160d2da3998890a3f20e8c3522c4fa717e10796f40715",
"0x2bd5b2e11cda485bef53bb4c2c654c39bebb5814b06134902858ba1c79fe0883",
"0x1db6d06d30d62c08ffc1c2249d3297734c08dc141e9ad9abcc251bf4605b3b63",
"0x350d5175824d117a97a0c758ffad0d3d23df500f097a25f8e061d79dd42aeed",
"0xf46d145eace6b1dc1bb7f218431ae9af0c9278ac2912ca102627a656be2fad3",
"0xfbd2953a1cdb40ce84ca589f711a8aae5e75c745c5ca4826f65dd2bb50813d2",
"0x2e6fee6ff51b2abf66db3ce9c23271ba35caed4e6893762161bf7283e0c27982",
"0xeb4c21214c0ce434010f1fe4733a327820e1afe53ba7233312df51615d5897",
"0x149a01e3644a9aea475d77e728a2e9826f6b935ccb5de9f060c0a05d8904a470",
"0x3051abcbd422db239b04ed4beacd3b4db8bd045b8d4ab36a872454e362f82b22",
"0x138a0119816ee4ac8015badfe5abb7114820f161375b6074205af54887e788e7",
"0x16c8e1464970e0d76c1e3c4073e63fb2e514b25858bf46adef59b1751480f452",
"0x179ae599e009a3f1027b559b07961307ef54673d52e8bf8c4f87ac5f999a9ac2",
"0x13b3518cb4a884686be5ef802fe3c9a0761950f2e5f66a469df47c4980fbdbce",
"0x52a354e6f8a8c482b9ca8fa51e4732763bda214a65fe575ff12c954a433e27b",
"0x30348154b1407f9bb3b3d8fe8decc41c770cce188d64ba7b0218515b3622fe7e",
"0x22493fbdd06dc2accec415de98a9d411e393393e648cdf86ad3efb60373da4dc",
"0x2bd33c38d67da9e28ff22b4ae3b6e0ea68c6c8b275d64408cd7c0bc7f3c20746",
"0x18ca35802730ebd5aabf25fc7cd352283442bbfa6e925e66e8344345932ec3a0",
"0x123a15b31db64480736ee720631ab0088a24167d1460be4dd420f7cd40acf2e5",
"0x1ba31fb49dbfe083d1f4210e344596a9c61e6f4bccbfeddd88f3beb168921b07",
"0x10c73167a97d9141097672c848cf3ee8116d380e6f1301778533933a078f2a27",
"0x12b2f0963b677d68900fbe2500bdfd4b532085e5cafe9db9c2e636a8ab0c98cc",
"0x1feee9a8c818254bec43c0bfea4e01ce2a7e6faa9a4dd01208770a6f0bbe7c35",
"0x2388c6a47ec73b9c198bf0ad3d5922e3598457cbca82d0b1d2cdbcacf56ae36d",
"0x1bd9b76b67a672ec982cdbaeb55e14628a4db0792bc0f52451c475cab0ecf3dd",
"0xb2ee64ddecd3f26acc1c6c44ef1643b8eb6e589d0304fea3b7b7e1e91c2f534",
"0x107f80d883fd761322467565a99dc8786e69ac197fbedb7636432ec5cfcb2678",
"0x19f0a831e164772368d5365a0107d0ae264ba97bd5160bee069f1e2b459babc4",
"0x99ab87e7b852429782bcaff58bd19649ea26b24e493b243c71d411b48e36375",
"0x18db42f8cb42180422587e68173a24cd0dd62f6b17009897541f16263a405746",
"0x2a22132453db2d68d388b700545cde863d652bdbc5f733c692a1863754fc7294",
"0x2e3f81e949bbe1a2e8a06b70e21d433a1036aa684bf39b7e933839973867ea3c",
"0x2c21f85518cc932c232aafbca1e4eccaf6d7375a80b1542828e1aff7ad8d8442",
"0x21c0239127fe8b2965a32cc7ee8d063eb792ff468703c54cdde10092fa9d922d",
"0x201c6b5b791d42b85000a1011ac52b25bad5309ef4f482e26110310001bccb4e",
"0x2db1d234cd755ea9599fe56001866bb4b711ed049227d67ddb35c03bdb8c6df3",
"0x18498b6b4ebea39d429c25e5aab1b5fc97ec880e736331814a3cdf799bfea718",
"0x1e5d12fcc0c680824e0934a64153a1dedd491ec29effb629e35a45d889028343",
"0x1ddc4b9d3159354a45944b963b54081d3584448192659625d3f06fa98181f43a",
"0x11fc72e4994e6b2e99f8b58773a5eb8ab282dd06ef0607051371bada7b80c40a",
"0x21bc7461e5160f2dc86d270fbc2c8f91605a49e5c75ac57c7ae3481bf1f4bb4f",
"0x2d16510a22095aee95dac7335895a70e0ec56a9a9b33201d94b5f7cb6fc626b7",
"0x2fdfb1134a1f54ad7dd904be3991e086e1b8e0c4d5c0eb80420da5c0fe4b0944",
"0x28646d4e0061355d5cd936c08f7e8419701d959482990a46d4cbe164badafb26",
"0x1dbb1b476c0fdd507664a1c03624038c2cf2232c87bea9e711fd32dc9150622",
"0x81dbd4fdc8779da9472fc7c3dc8b35418c3f670643b4ec8e878c256f6cc22a4",
"0x886cdaa0b431c97d8463419ac5651ff457a7c15673fb88916e94fa55f584d31",
"0x2838331687e032e9ba3fff6492c1c547f685ebd7609536770c09dbd7ec3cd2de",
"0x2621bc61696ec99cf22f64501b131655f498c95fed719edc34691e18154354e5",
"0x2549d455daeaa01b7b52782493fe1b0b7c14dfb77087c9151b4ca36f15306ac9",
"0xa4c236eb53846ff3488a5bcf59fe22252f78a20e953516f22c88b4c06e7f4a7",
"0x10c077e94f0d3852b3e3c2b14eecba18c27b52cefd6fb1a1ff6a26ef95e41815",
"0x2eb187c8e8b5d69de44971a4b370ae917ecdd0286b75560c1d3036ecc54b196b",
"0xb395bd209a15083fb3a580abaa376a1fa397c54f91cf8a0c141ec7b4d7c1e97",
"0x2a1aa4e24d835d8a3f9ead7881aa391fa930752f8c9c1a448d53307ff930d8bc",
"0x1a3959bfaa6e5ec9fa45a9939b47676ed773b545d372e5f8403ce000528605ad",
"0x31eea5b773a9e18aa6a29863ff6c51130f4e76974071207bbca7f238e4910e9",
"0x109a8a86778d80cfdf86b4d6bbb1e57e218ab8fd8495f1fe051b576ff2e77c98",
"0x361d334bf2e907948c05b6252bff7903afddc738f2952a0dc893b09fb034ecf",
"0x11f636b7d7ee19603bd7eda90e668b7ecb2399750d002d9cd2978364b632ea0b",
"0x23af2f1d6a7dbe734d6006377fe06a202a5482cdf7cf324bff2c3eef417e8d9e",
"0x20057e0887d089856cd5bcdebb9e75b12474add58e57e3a77a26cb6cc36bb61c",
"0x2657371dbdb26288e4a31975410dd5772003e2255a15e5419f11e97da00aa5e2",
"0x149681e3e7671ece7381c6981fcfb46ec93264cc242f9a6140b3344aa641758d",
"0x4483482a502545fce490d73674becc29dec91db3a6721869a92856252f5ebe3",
"0x1afb1e247f5795105296f8f075ebc831ede8b5128e378bfc374343ee6f93197e",
"0x23140be54f97f6d1cc5ba00847848e4fc973656baa56ab3e1b754cc12a296bbe",
"0xae6ffce46e6c0bc0ce6341f9d308c792436f0a07142988a937db3fd8a333539",
"0x129231c0dfad986f9c0c2f9868b00c22b314e22b24b55a438770b320ef193ea7",
"0x1d62b56618a967c7d128e45a28062fe7f0bce6dc55083b58374ab6806e01573a",
"0x17e3794052d48c4aa936c5e189fde01b8bb4607fd478b67fdbbcad3e8aa9166b",
"0x24af4f43a91c5c51c6b2f3f44eca59bdc79ac86b06ca092cff9fc7d9c4691fb3",
"0x215075ce41bd685be3c97d2bc28bec174421398024a8bbe4d9122008e6e027c1",
"0x10ff29fe3e761d9f78518eb60b2a1daeb394753487490c9f5ef937df3b87699b",
"0x160ff9e43a764ba2280d5ff675a9db049a29e7924f5ba24583b1d6d90caa0324",
"0xad301157c28a1200715676e5ab5b2469fa39559c1a847f7787abf487d828055",
"0x3409e3a83bbf52d16fef10fbbeebbb40ba299ef770e3640651a48602f13d108",
"0xb1232364d87cdbc709442909811d0a0241d0d8b7933b59471799d6b30a58da4",
"0x195dcc72dd9f2629db85af3e0c9a3ff52fed868038cb27103d9f30c8c70e1fbc",
"0x192d2d9e31fb65b409ab273e7e2b050c1bff596ae56ca4687ff8e86ba8bc27af",
"0x2ad9eedb67e8bf182bb967045b906afce866e00258a320380a709b818521bf3b",
"0x2ddfe92956df2e751715ede80573cfa5308b46be5fd0f77def8a519f113a4107",
"0x1ef0dac6020d7b376e6f0fa82187820a0a4d8be7a8effda342f7f8806565f2a8",
"0xe4d6efe23c1496d8275f8a4dd536bf988a2c8ba2d2beba328f28606a4ca0f91",
"0x185b30ee2d3a166f2f59a03c7ee9f206411f74f777873b92045b6c128ff84202",
"0x19ea7d6275a6dd167757942770dac2861057e16a988d2e93e4f61849d8427aa4",
"0x23c3b4f5e49e16ae69e639b956d48ad6ba696f243a669aab13ab2c2855e1187f",
"0x29037d64b549d1c9ec4524ebbedb8069cb23218bef3cda811134b36d3551ddc7",
"0x2ea8637b89b798a2f731d98f2ab89ae9814f18deaa7effcc9633fe829a9d109b",
"0x2bb4bf36b15be77b7374a026352644b8e70b1ac9516eb87eba7672ecd03f1202",
"0x1006f07533b6e5f33d613b89b858bb6616c18f8478f225af2f4e3d726780cea8",
"0x1749f416df7b4f43257d9b8555e540bb0ad0d7c8ab0a4ae1296021da0d90ec59",
"0x26c86b58437b04557a96cc74b511dbda00e9c4c57bb86c15d49bce318da8b592",
"0x2679dc5e56ae1f6a54d38287c7ed606d0d9505a5cad5a0699b09041571c4560a",
"0x133eab2d7a718f3f741eb10e973bc5e29a021e83f6442418a832b091bc2d6136",
"0x1684a4b71cd72ec3cbee67151c638d5588e3705820c468c289c52e73d69a8fa0",
"0x17cb936bca97a37f63732c01e6c40f6807360cdb73f62d792eb910e034b4041f",
"0x1bf4b473f0c77aa5ac94a46972216b339d99c933a8f5034044b4b535adc388a7",
"0x2c6b76a42a2fd9fc8105378de5176d60c2f8129cdcca89fa0b00f3edc64e079b",
"0x2893d0cb426295edce9b5506b56a2b867eaf48b08c5242888ef79766f8d9aed2",
"0x192d74bf58f3dfad901612983c6bcc753902e2241a371f9880e351150e68292b",
"0x1bf69bb66db73ef6a0e04689e9698896ebed84d97966838113f5df5f5710736d",
"0x1f8201a8020ba29e8521a1a0cd3bff50603daafaf084f0373f2edb68fee7308d",
"0x2fc51d7afa548b449f40ee7c48386655db021f9e34e143c51b1382399bbf6e4c",
"0x1f4e909114c65d62e1a1e466d4968ba9f6fa612578d474e25cc1ea13888f360f",
"0x2957f8aa51d126b9961950fd72e1c7224668a359da4e5c0bf761d49913d147ec",
"0x1a80f9577c8384aeb8889b63361078284ef552c62d2cc0880667e85f01d0333e",
"0x1de416e08ad386d654b37fd2b61eadb5b555e0fec1b7b09d8435bee97e57b0e1",
"0x1ba2ce3d6e352d0643b2d3c5c7c023b6d1777f246278cfe6e1654e9e5413b535"
],
[
"0x304c29aeb6f1873847879576d30f1f6e8a3ce41082c15c7632df920d6db5164d",
"0x2b7380d8b25bca649b3f8bbd0a86ae417109069be27066f46fdd1c7c87d4c40c",
"0x4c77200e5494b1cb8a3d334f69ae5bafa7e8775ba1924e563efe591eff302f7",
"0x6c0b8966df93080c3ac1576486e61ab0d027637aac41bb35e482bfa10e34fc5",
"0x24c73f425903904f40dbff590225f251ce1980a5a5ce2d07ae436e1d090778d7",
"0x23df6f6f4448273c745ce53d5d7abb5d26c46724a58d68844d3c3ee45e9b924b",
"0x1dc1b1ac389280188e937566071b84bf8189b955d0579b6de5ea8a5136bc2ee9",
"0x27f71c5ca774ce20028b8140f144472043917cd4919cff64d848a745bd569180",
"0x22b2ee53b302ba2e836b98783e15eb6de9d15a72cc7caa374e61b51dd0d2e2c7",
"0x254d85065f87271e86d7b411d6acc280f9ed257c098c9fdb04a2ca4df7c7d766",
"0x28620793f378bfe881e098bd2ec62beb46899f37a54abd053cfb0b3bb8d5e754",
"0x2c19f26d0836635b04f38fa30ee5c648fa0ea1b202eb0846821acd3c699cf061",
"0xf9ed87e9a1ba7ee7c28bfd7ac38ff3ba10849fb04d3322898ba9fe0104fb445",
"0xd1deff42263b7cae8a123a1641b7258015476161ab881e1dc20e165b3f04579",
"0x1ad882b228b5f22b9f6a02e10ba09049c9281b32ad71818502b66ac77ee3ac6",
"0x1822ba8c558e0e6bd0efd1ab4b45129879e43b7a6acf07579b1e6343c531a248",
"0x192c005d746c0d045f5530f10f38a29b50cb6c86039410e634d25a809203f492",
"0x2e9e6de4e745193d2eb8b89b5b573eddf8a6506746afb98a2db858134acd808d",
"0x13373a062c71d0754ee8b1872dd2861bd4c2545e807dddc654d68af43ae87f0",
"0x130c94f39a9a07d71dac7df61fb56cb975c9092ac2ab73b113b341e8198eab08",
"0x1934eeb7210877c3c2e07d9ace7b72ab4d659bb1431f8e8ae79a1a5e8daff5ee",
"0x22547365b9069f419ae8b9370816f030a387cf0ce6b88fdc54fce91c485dcdf1",
"0x108b2099b7264eec50ebab5ccd3558a359e34fca1cfb69df4e3f8c9da9faaa73",
"0x22b946f1886cee07fb01b7f8e3bc585ea8f9a7fcdb2aaec5faa878f378eb200e",
"0x229337b2b316c279097644d8fa861e5e5c07377cbe3ba168b55613542874681",
"0xe9283cb85fa800120344cab9a7f792e975f5c25d64f5cb6a521b62665af7451",
"0x112956bf9c763ec101af9a335159df07d1b0bd90bc84be291aff9a85f30f5163",
"0x26f27df4fdaf33f3d12d5948690653ad1ee625cb00aef92b73527d37365c4726",
"0x2ed4c4b73e2547622bb78403cd983c6f1d33b25534127e98a7472897a84e4b3a",
"0x9f0108ead7dd31504de2b846076a8019827086a0c4dd6570c1b7423ca05b0cd",
"0x1172c6ec16cc502fbc633f8a4c308b14551d2c4822b5918179946e6545e9de5f",
"0x26488ee5f0d4f8b5766c5b8cbf414970b750e7488aa316976dff5ab72f349f1a",
"0x392aecd00da38bf4e39fb198ef96e70bb8774b8152970dd2e1629b51ff10ae5",
"0x2f6d971cd5f9931144acd9b9e98bad6e1e78d60cbd966fb18e6f630a76dfa6b6",
"0x5a795d1230d3c781b9717735bf45464f36c41df07376364986d0fd12c8317cc",
"0x1e238a362ffe560b31e3b050539e6c8fe0da221fba18b12ad661945e22e5f5b9",
"0x35fbe3e0d9d9276c990a3b1719e27550545a077f6215eacb2479af1b3686364",
"0x7ed14110e9abeb3520e14682efad791ad5c2feb51d558ed013675289b1c6bdc",
"0x11dad822671724ee6a786e210e9536e0ada0796d4aa0fced69c1d411e11e0c06",
"0x110b32907aac869005443ad66a33ce28508c925f505e44a34b53f70a3aa45385",
"0x55a8f4be4acd26e362a4dbadf39c198b43ea025ec429df6b2011177dd8e6cfa",
"0x1bce99ccd0f37478be3ecc5b67ec7c0a84b03f7231630dffa5e16ce6f90d6bae",
"0x1d61595a714a5f1b32a5255dd5522d633a0ebf7fdf82a9cfb22271cc962c801f",
"0xde4fba8ef10768324aa1e91e606f2a3c3f3f6a29dc8d31bf7a670d31695bf02",
"0xeeaf11740f270654239779cb83a05182d0c98f3d4bb8a7a118ce4c0de477e3d",
"0x25c397489e65820a955d6284c002427a1784233faa7089c6677f103d2fafdb7c",
"0xeb3a160356c8929495bd9f58d3a8657f69f3eecab1517123e724a946dc50c4",
"0x19122ffd9b6430a6f6c81cac0bfc8b488e1a28758e9407fdef8f77aa1fe4c0ee",
"0x770ca4c67aa40a1659365097ddb70eeed6d6230739265f76786cbea0899e823",
"0x20cf3df7dbbf47bb220ccaf0ecd8f3d54e0575628a7291a72cf8db5e42e1498b",
"0x21fe2c9c9625d66a931fa931bf7fbea6c2808ffd7d07fd3bde15775957c62768",
"0x2ad158bb675ff14b1dcddc993d9d60a5b4e9f3648afbdb5bebb2cd9a98ccb881",
"0xf89c7c34499d981c6cc376c6fbeafc88b7ddf87515dfec65da9bbcdcd68eaef",
"0xd6f33ac650e35d3d642aa3fd35912fdfe5014b86cd11e8a8321794b9a9c2992",
"0x9cdcd7858f273636fc033c778e5f588b9fe6315476254f17aa602c20065caac",
"0x2bc68e029d800355300648a36fd8a24157750a0d6fb2f2303906451f3b3d9820",
"0x163f8a2427805d02620c54bc1d32186ee3d07dac41d9289e9aa3dd2cad337601",
"0x2b72cb042e079dee8d56b1762d0052790105395fa0299e79cc72f4c27bfa20f4",
"0x1aa578a5ee2c66ab8299fe99133089e90676c4a2e6d56cb9da0679fff6cbdcfd",
"0x262d1529ab1e7f58925030e6caf0e79a14c436e5926e33cd79d321388b966dfa",
"0x1aa6b71c17be336b1b1cf2384d6d3ee0a7ece1ad2003ca727f636bd4b70617a5",
"0x286a8a2c71f53994524a189eb5bf41eed57904d91f44eee40976778362547af3",
"0x37ade52ed2960d80bc2d92b815a5315883cd42d26709ae64a822ff92ff373e4",
"0xd641f097ab6260b2dc240a85b7799541f6e73a3a25649ce98b4b64a6c499dcd",
"0x1176510cc674b0f0caab00f4e9be1f8c6efbac7b7315ff6d4169184b8ef009bb",
"0x29b6783918f37a8015d122ab39713848ca84008abaa716882b0492c6ccd15642",
"0x28a8be58f110dd8c2b90428fb4feb59b67eff815e928fb7d75747d35cbc40ebd",
"0x183f2632e3ca6ec2377e8358c3205d23f9211b759f62fcabc5fb2314d0728a9a",
"0x6aeb9e100b47eacc2dacdeca2ea990f7066a79e2c7c83f2490bdab3eb43620a",
"0x212949467cdd807e8f3576d403fef09e9bb63ca3754897541c6cd77de4ceedae",
"0x1858f747bddf594d663ca49fd2aab93402ff9d186cb230a025d53b8d4c626e70",
"0x19a293adeb09485ccc03800b821707060dc27e8663e355e908e368e2e8bc0150",
"0x1d4241ed038279263a184eb3aab7f2e14326b7faf040a48628ce8a38c7b0abf8",
"0x1692838188071f73ff82734223e5999c726b055dd19bb5a68e513d57055d8bbf",
"0x81d819dda57265e88fb9eb5f7454ae7dcde39a14b00f45cdb19406e8bf24efb",
"0x1fa7ad5a2bc799dfa38a9c581b0d17990d1f53a145e26e7b10a0901a9dfbe8aa",
"0x140107d97554b55ec285011aa53f372689e16d68abd763cdffabf8718bcc77d7",
"0x1aa6e52c05aa7d40dce61bc38b038a69bb36490d2014dacf4fa46e71be012ad6",
"0x233c7ba71f9e0ca09ec20277fe09a96399a1474e4dca5158e97536892de72b56",
"0x223709deb8827076f29c20778d24a2006fab590092c7bb34f212c331b4b1b932",
"0x14187c4e94d059b6565591e16dfe2cea40731d582c1487e3efbe1cf305a9b459",
"0x12d57f9c3775b0509f5c95f1cc2e17f1264a5121afa6355611de2a71ee23d803",
"0x23ba06ba8305823e5e62cac1ed25888b6234f13294c93e1d36d5f2f73c8b613e",
"0x9018322b8f274623a4ef0562223a166c0fca597d4527ae8fbcdf297c8f6d1c7",
"0x1a8d0fc5616edc0238e5287d9fb6869468a83ac168452c5cf3f9a4063452f22",
"0x2b1a8db9aa3b060be428900b352808a1821e9c9f34f8c8e75b172def7f0b3d07",
"0x14e78cb6524a7125d7718d49dd76525f58cf2739ab9cbb0d408dcf2e12f604d0",
"0x1208b734f978bdae45714bfb76d3fa83c558d0976e9c9a1fa93a1fa69f7bead",
"0x26cb6b7c1d65f9e5b5235c3f31f9d7ff1d817e4b5b945fac94a99b3cffac3d5a",
"0x11344656431a0d87de96e6806fc0abb9e1514cdf175d617b70008b1cdfa7fb17",
"0x28180778e94d900df231aa7e551f6d7207f3344f5b4164d19ad4627e53aade25",
"0x1497cc0587aa9a662cb2e9bb2ae6bf3e75a0716db37ff072d6c5cce6ffa65277",
"0x1155b889f1798c1b597cdf4ea98b7a22e2291aa2f49d4628179115ad19817a1f",
"0x136bcfc49ef4ecf9c613bfeface129644a00a283c8e9567c0b0149ed7d7e0268",
"0x2c94ea318df6e3131d85a4681682551ce652db2f76ff670212c5375994d2da9b",
"0x11a008577edb87e5285159e1655d70b5f6ad4abbf3f8f19d66ee1a7172623cce",
"0x14262b879f58b553126cc175743b09b5deacf5aed297fe3e4124417ed2016a99",
"0x338d86b8e84fe8bd613d57a3a713ac1e971d52a586e94106b49d7d390c92658",
"0x1ad169875101e162c49ec27ec32be37ae3d379f347930fbb656d718b87c14c36",
"0x1e33654824c915e16fad4a166ee216d1b3a36428d90443dc9131f818df850f6e",
"0x23d15701d8f5da053866a07f4788c49476c5518c8a812295dee3aa1074db6d9d",
"0x2d2fba372de705aa005c21db4d71bba12c9d47dd0161bcd45409c883423948ec",
"0x168371dfb98b380fa2d2630c612f8613042e6df90658c2350b270eece90d67d",
"0x412112ecd0cac61c445ce46a8518b56e0f2baf839488591ead4aaced85fa01f",
"0x23ad0edb1f4fe974eef543fc17fcd7dc1a0f05e2ce5ac18e374c87bc09f75c78",
"0xed6be3eeb0b9147d7c509a9dab4ba2d57c7b9d4b2780fb0515525fea4278eb8",
"0x690d08198823c10f51a7ea3cb473a6d98ed0cff6a17069b50971a68567a7b11",
"0xbf5caee488cee887f67db3206cd5da24ecd1baa6badb44bc761757e2137ce3a",
"0x3dc319068295544dd33221944b9e285f7219f85e8855975c48f69f77edf0a17",
"0x164c0f9fd358e2a011e55931b51e5654352bb6fdc6cb2dfa4d8a75722f2621cc",
"0x7e8978e88b1c0789e9397e09c9eb10e368fce8724ca948f6f2ac92cf230e6ea",
"0x22c5462508c480867b3cd96e18dc3c42ffd90e1586ca41fa67158838cdf1593",
"0x922b97a92d6a11fb18178d05f054345b43db4f5c6b91c73e28f6ce3a22dec5",
"0x17626303d1bda8e47dd6d0da342e4327eae6c4200525217a20f6226cb54bd44e",
"0x16ed2d702c6f848039b31ff87fb1daaf88b23f6b00acd7f6409a7cdef83b5ae3",
"0x1d9552a42def1750b55d27edb09ce26409f8f89050fb74cc53072f788feca6c9",
"0x93f2eac6c08b0a43d4df37c1b20d1965c77103de2e6dd88862f77b322a32dd3",
"0x63648259abf1b9feb8c0b03db31f559e47f0e11de2b371b299043914d0ebda0",
"0xa8db8ae7570818bd9ce7c02dce89712cfc04f800d55f1562eb1ed27da9deaef",
"0x2addd8a7fa94a011e12910a98b2b8ae5387701242ee2281df132f9e9dd3fc7c6",
"0x82532cbc9a72e056668946fab08eac4817547cf26ef3eb8f159e76f9023dea7",
"0x2abcba0aaec141d7742c0f0785daa2726200b6ae69d464e849afd70465c9b557",
"0x113ac02d59778ac96902e3fdd0562c504b418cf8a8e349da7d61450a2fc6d685",
"0x193a7f639d4ce4d62dc7567ee718853f5c5284ba09de428fdf02846ee22331aa",
"0x76d49b5c0dc78dd9c8e7ccc9b5a35df69dce86805aa47fe3f8cf062e47e95cf",
"0x23051faea37aac8e12ae94b87a02411747b14de73751aa1a3f6a07fee98695e4",
"0x2c3a84859c46bedc24120441bb6dfb113c09dc8070b2e0cd139ed49c9647b737",
"0x165df45e8460cb7b423a9468d2935c14c93c33c700c654e32c2e6743de59deb",
"0x243c1dcf2e801df1b53ab72ad31fc24cccb07b2518594c4e5f3024da67121454",
"0x2d4f07748851869bc581212b431c20cb3e268cb7f6aef272deaef66e929bd859",
"0x1445dd9248e8bfa4e6698e7f51553ef1a152d37d88949e15b9c50c3e8074aca7",
"0x3f3128f5fceea223432d31ceae2f8b11b38a15ca9c3fce21cb8756e8e09642",
"0xe574b6201e927e5f369a966151ddfc5c06fad66e64d5e09702ef172b5ade467",
"0x784b51a7ae1076c1737eae2fc4c3bdbc2187b28f714e56cdde0cd322292aa4c",
"0x289012d3d1fb3419e3fa81294f3a64c15685ffaa658927c09c1833ce59ce5ff7",
"0x2bcf3e35ab8919e05d55166908beca23a711c712284c45695c6558e0e3da22f3",
"0x3df5cdc10feafd361d978330cb95515bc2e587e7dbb89da4ecac57461b75b6d",
"0x19dc65b4afbaa8127015b3f68d35b557c8fac9938dee95ae35ea12da61b7dcd0",
"0x1fa279d539fc9bf724da2e7622bc326f9535d00adc596916791d77d03bf016c8",
"0x237dd96ce03469858cabff18944f05521971d1ad373ed6e041987754dbfcec17",
"0x31261638cc3762eb025a716ad3bcf1d6447a080f3ccc60f8117315254f568d4",
"0x24fb403026e10160607af2e0a214aa725637f19af7ed44130a9400365bf61a7",
"0xa773f9bbec6c35b5d7a95005477796366c4f36ca634e94b283233afff57521a",
"0x2ff29b7dd04750f926b880f54acc39f2e828852f40698afac2661b3053278580",
"0x1555a820b4069893e6625d113049c46bc5b4394d627c2668adccd3ac0c6492e8",
"0x2a5d25cf71c81e5b129e7d37a5e2728dad5d99d3109d23a18c4627b4afcf8fd0",
"0xd749c5dedcefb1910ec9450ab388da7aeb25adc78cd029a75bcec29559e8d51",
"0x2134979a55dad645ef838322058e7bc8ede30969481ff2bbe496d8ccd6aa8ca5",
"0x1a5d28f1ec79a8a70d8cfb783cff4c2b96e4ce5beb97665a0f6a52e73a70bb6b",
"0x2248fef1cc977b18bf5051a571374c36cad0b338bae217bcd9cff038fcd7bc57",
"0x1a3105c3234d4afbc112d7a9f38d22206c0a1e77112d6ac26c6d6aa63ef50088",
"0x6ff45e6cf264bdcb9e8b3b4f13a44d1c197ad77ee53d02fabd0c0a78ddf6ae4",
"0x7ea34caf7f9c9734f489953d428cad95bf98cd32d5c18e5b51e01d1444b8f91",
"0xbb9bd4ea562fa887d4e6723a798e7641a08dbb42cd72852b8002a86c57f1f92",
"0xbe1e28fd888e42fad37e72eaf884f6c6c5d037afc0957bc9ebb4893e4ca121d",
"0x1de8955b5f752e29e7e7d92d6345da11bcf32937a8c2abc93c497d1affaed055",
"0x140faed032e51900fe203d8d32fa61d9842d6b7283864ceb9a4d1857d6a9cb5e",
"0x653a45ace7457b472ead1b3438668c57d36faf59e2a19134756356ce5cbe131",
"0x6d23369e024dfc31a1e36cd9114fb7892316dc57da6613ecc41ca0849a1a7e5",
"0x106a234f7e4c5d097cf00f256609b029de983d04044a66023d477897b91adb19",
"0xd5907c353b674540c20db872cd6e0de8bd66f9b3d691396aa06678b5a9b8bd4",
"0x1c8cc4858cdcd5f36aebcebb9cf185feba809a92308ff5f63b66c2b1f52dd14e",
"0x18709a5ed55ee4f8614ff04e503872021e88f83d488d8a0567597b60e8cdb3f7",
"0x20573eb7a426d39fdcd5f46fa19973e6be531160e75ae9401b99ddd7e2ac25c5",
"0x1b68b1cebbf59b96e23aec11f075769b54ac1e7de44ff13708fab5a9bfe17719",
"0x1e74628fd280b451eae0d00add965f95bf19fba43425c3c0589207782f702b7d",
"0x1adf6672bbada9f83494ca2bab97f2e90f630525f9c68338ba4b34ccc484b478",
"0x6ba3daddf68d283a85f65a0ac15913461a7ac09a320e394d09aa5ae97a50db4",
"0x23613483e811cacaf27820d0a9ca552ad22ab29d4f1d579f10bfebd39f14ee66",
"0x5ba1370283ba319cf17f631a9291fce5e0e682ec1d01bd6df2843528e363db7",
"0x130a1c1a83e91a21cb376e0df81b196d8c229ec60df85a30bce4ca8f466fc589",
"0x2ad745158e0bd5aed17084d5fe12d671b0829a83392e6dd0a90a1c0292eca0",
"0x1a4703eca8fec84cd8234d5fc467737761e6d2d6bb6d502a40e25f94044e0aef",
"0x17eeda53608b4be7d2c9b6664dd8fc672bd48641e29f6402bf55443c667bab4a",
"0x1af9e7886090fcbbe73d9b70b729ee9f8a384c4862626ea685673b4837ae2627",
"0x2c300d04412f79e15c95dfd44889ef4a7df828c6b32776db3797c674fccb5fda",
"0xf617c15c41c424a39aa8a1601c5ca44207b3c6e44b003bc13179fa7afb8232a",
"0x280e6721e233a91f7f26004f753a82aa3403fbd9ff420411c058ef275fb54295",
"0x391c3b4c6aad3203ef3e9d7d217d4b77ff1fdd8c63a9fecbe5e702d51c53f23",
"0x203f9c14aedd6319d3ec84ed7517d5fc4703aa085f45f590e86504213b17fb6b",
"0x10842bd57c470e718b75553ddf18278b60594ad3bd7fe120bc46cb0fb450d424",
"0x30250c77a64030f322e0fce46eb9783655a93645784b5219c09eb0ccf3fe88a8"
],
[
"0x148d9e4542066b125da6d69ff3fb676ebd27e6a38a1ff4281bd639c97af6ffd5",
"0xb60a28805324295fcaf51bb88d9692372cbf4eef1cba8b85cbc059346691a88",
"0x2d38f812ad1d7ac79c32fdd57a56edb861885f20fa4bc6d0d942c2f41e8e4a7d",
"0x25738acd1163580033367fd8f1ee199d7eb3c37891e06bc20e6b476a0357588b",
"0x247f6967fca42689ae8e20b5a7a198d63086549b78c1620a51f5d36824ccf43d",
"0x2e22813077a668b2b75249b8d515a3dcd93502006694245bb087ff0732708b93",
"0x1523ea89be61be47e1c36b0e024068c28c48da74bf7069ab2d77389c83d474f4",
"0x146695ce138230e087b53ef1bf81601f2591dd344a7cb509f138939369e0d1c3",
"0x12d05d9571fa4b4171886d9c2cd44c7d7fc5a4125195e7d28c3c47cb5cb5b7c5",
"0x242721147084d4613543788977111f3fde6c89326a556e35bccd2a2e73cac68b",
"0xfd921ba8395a5dde833e6dba4173385007b38d1af5e3841a345c9a480c9d292",
"0xf0bbdc7a39e5146929f2e1ca9fb4a63550cea8f12109c1d82e601975d581f5d",
"0xd65008588b2ee1a4dee0313b6d4396952d901385f2e1afe6a0a0def765dc2",
"0xaea567be31e1c42ce33f589d903363a482f21c1c3d8fe50fa6df018a2dc7c25",
"0x2fa334757b03dec6be1df758ebe0353317b35316ecfc72934d069f182346bbd",
"0x2180dd9f972b1eb5e8819a843d24f650e8257e7a8ccf6eef3fa3d744b16f073a",
"0x1787a3fd66cb49328100d3574d7070199a6bb88b84df6e9b44afce9798233c4f",
"0xfbf506b6714d64dc8623fc0cf426f918053ae81e5847d3367ae7df02293da8",
"0x14f57bdb3ddc75b65eb0720e27daa09412b30ecf7b115e8162b9e55faf49f5bd",
"0xdab0bef8d2d1adc80dcca581e1891ed800bbf4153eed15ce71ee5e0b0bf940a",
"0x25f6be3a9c5f2a6ff32087b2caa01b3a1b7909811f025196f156319239d359ac",
"0x25b541b96923b17550e137a4a5bc0d544d00c5da7715c6f00bdffb9bc56d0dc7",
"0x2b4ad0860f8c3c432f2a037b0e2f7da7a4a5b3601044ba24a56b5b9a3dbda40e",
"0x7d5817bd123f90a4a3c2d77528fd9366321d8dc69988458cc425581c9643af3",
"0x13fda3b1d02a53b106c4ba4652cd90f466b97acfd136c9a8431f1dce531aa443",
"0x2450fd6b1a17be1ec4638786bd3fca4cca4cd871268eb07b1e5aeeade36fcb44",
"0x1c0753ebf63794a29dfd83eb0d0e76f6d1ead583f72f64c0be39aef9e577a0a1",
"0xf110dc007ad810c0fae508899bed20aa5cc8dc3d8324f0f7bbc3995119daf8c",
"0x30623c2f24a7c6ab307f0e88488a009922fc2b8235fc741526a4d3e6a59228af",
"0x1d895817e78f2f1f18e53130a6ed8bd6e1d189543380f691a969483f0ae3148c",
"0x3abf174d2075102797f61660105cf418ded1fab324bae35d136b17a0254c01d",
"0x237478172f073d15dba9d12cae6433ee71521ac294b54d78eace7dc941b2f82e",
"0x180f820a7408dee73a72ac02f7dcc75f99a2b9f75a9aab82377d373eddca712d",
"0x2a5ebba744ea7a6e8210f483f0b6b61c1feecaa867c8c11aea0488b822772614",
"0x2282d8326c3c12e0f7575e1acc4bd941893732e1e7d3c0bcddd35e366edd5f7e",
"0xeb67d8e687cb2cba01552ecfd4fd7ffc3d5788cb47aa3887a1f2ec3beeb08f3",
"0x176f406cc04bbcc4bbb82c56e4ec20bceea588f1bef8fd757e1e58d47545b77f",
"0x1c4d0cec6c8b22be0f1a3e9e32705a8a221d887ea0bee1bea1a8226608905658",
"0x1e35dec79f5a579a42f82c45b1a191147bcc4e3fd02f45af412eddae08db4ad9",
"0x75c4a33b1289f7923abb46d7a684eeda712004f974ef5715f4e2b504397e9bf",
"0x2f416c15f901818152911089ce2a96018e79a8fb7f311c4c6a4d9ee9f7d8a83e",
"0x7a92367d210292658449ef3d46ec96b982c3448053bffc8d27b17a643f43979",
"0x168799e51ef2e7c7b435a220052e06295f6c08b1e6b0b5122aba31e2d953e44f",
"0x2c422cb4040ce223ae9c21dd7331896b68704c26a8f4ddc877bd0659e75c8c48",
"0x29966fed42c09b35591edb4cac0574441dfcfd4f52bf0cc31b2e624b7eac280a",
"0x26ddc145a94457eaf0283876d4ea7d6bf10b7827bf3a684afb10fac1d172894e",
"0x13a8a30590a2c5d476f60d9e9ea7a4c1783a5fea077af03299b8c389641bf4c2",
"0x21d12e7122c437251656760882eef8f3168c237646f3a58a51c265d8b45184f6",
"0x271a6257306b4337cceea57039d404e1996058c68e71d63ce1329810af2da4ee",
"0x1980478607e68ab7961860e38dc78da21f2e453f89acdf82ea62ad9295d8f625",
"0x260653cfe0ebc0562b54b9599ba00669da343a3cb3a14c64f86149d8510df8aa",
"0x2c4fd7be2751f8b6129d997351088081e60585ff012498424b526483f8372f98",
"0x640c9db6f458697dfe17610b0692908cc7f72c1c0bf5cff33168c4867c22a0e",
"0x925e62b7772164055008f8765b827f251b006f2dd2370535df1a16e872b923c",
"0xaf4d8cd74eaebbf7a29bceedd1dcf0ab0d00f8de6442bb8626e7f04b043f40e",
"0xcf6a34e2cd376d6b000d8b0a5ed004e7cfcad8987f3650095f4d9740afda335",
"0x1e75dc69b7b94f915b925a773280b9b3a2341ab9069eb87c883ac87da102d9e7",
"0x26bd58259c27facfca63e248ab6a130ea9893b53928f3d373a0a197c5c2737e6",
"0x1511b6c19aef08f6e79cbc7282cf4b5d3eb07aad10b9f5d65e005e5433db1130",
"0x26d816f8378615ea31b08673baef673c5151c036a5a34ff11cc0ceaffe4ad982",
"0x1c38d60817c3a646a15d82ede53a8ef821ffbeb2b16c8feabd6fa7ed02e65c2a",
"0x2ab192357923d1198143414d448648ba1f60a917f4806bbc2a4ad3b2617ecbc7",
"0x2920a902ac2c11523c9425ea2fcf9cf430b6e27c0ae9f587dc9bbbeb96536352",
"0xd4e9bfdc6f8dc1a6ee5aba8e5f9f67ef3b83a526012953a99c83edb0ae1994b",
"0x295bf676ef95ef309c1d3f8dedef57582ec317807a72ec10674adcd1b79a1717",
"0x232180e854fede1a3359dc8f1a5e14c3ae7b5186fbb1a3f6a6fd9f5252351812",
"0x2405a43f35d247ffb75de7586ba2287f9b057bb321bd9ce9bed8c89807d67979",
"0x18931b27ff3a9e92903717b2eedae0dfdf33e9cb5f0fb10a35bfa8f3badbcdc2",
"0x1fd6e10af1b3189d42548c7ccb93749c4146adf3997b8d377c095445d90af092",
"0xc4772ff9abefc798f553554cc392284b2a8ac4b043708c183f18bdf6d69be41",
"0x227fd4734e7471641aacf664825d3b15ee10d0283c2dc35364c9b167ccecaad7",
"0x132faeaa250b60ef57f7e0ae17f1799fc9530ba5e6f2baadaf01b089595df9df",
"0x1fe24af9ab6246e0c85104cc31ba59175c60b155647623f893718608efa2047e",
"0x2f376b18215290f25c3fb987cc89569a3f18ac443fff16989678e205871becb2",
"0x2f2fc0ee912aa02875b096e48336411eeeca6f3de85152f51038ca291bc0cb18",
"0x2cad38124d882410c386b4eb1445ffe1c73f7b789a273a9cd266bc232e4c68b0",
"0x52002de9c04553df4716c46a80102ed453be8d5bfd9b2f0ec7c1d3002a7e7b2",
"0x302d680ad3444e026b06cd6e4bf62cf7df234ff9e5a46c48c17c2937507cfccb",
"0x2b3a9dccd38768197abc3b4cb640ab3c01206f49add14d1d705c371c7f705afe",
"0x96a6e47d4345707b5c25e86c8a690268f5e831e6df4d864e1f3fa90f2d8537c",
"0x2e2b005a0a54d0fefacdc8c153e84f5cbb50ebca105fa0f0242343fc4893783c",
"0x11c8ac2a7f796c7852e23e76cdb576cdf35bdaba6918f90cbfe7aa2265554a95",
"0x2c2e66451aadb830f1c91d8554f2e39e4ee19b15709052851f481629bbf12b91",
"0xdb078c9e2f68eb7d8f869554da434b9576f186dd943b1f586b9be61a172f960",
"0x79328f87f73198430e17dcd7613bf651afdc86b514295f7c238d2f267618abd",
"0x57924e8f3e798044d6591af796b74ce96bfeb676de3313eb50e0810136b8b09",
"0x1730b8bb9dd03d8326981225e8e51fb9237e4c03fbdde5f0ee12004339b6b9a5",
"0xd121b54def21112d91a5bc9fed5249f5dfbde7c63bf2aa63d14cb59b0dccefb",
"0x13924c1b5bbe6d5c01944d682370c13cfdfd90f17b55f07b05860713ba9457bf",
"0x1cfaf7ae08968c76279003598eb1f7eb6b76ca3efbaa873f21e3e0ebaa637ce2",
"0x20908d07c87e65c8c66ae29d2ef20f8b8049e304a818e769a3c3c63ee4eee0d2",
"0xd225f408959d91768201fdc03575a68e7a855939852c02cf64e3348fb383d42",
"0x112785d72b09b749a03120b3ed7cf793a99ce5710afd2f07d1eeb39974f03340",
"0x2dc01fd745f8ec43d61a5b355b459750010ec7e6b4a13acdcca627d7f6f6babf",
"0x16f35ad4dc8075f6c173b9588be33839ad67fa5883783b0ae6f0601de726afa4",
"0x1bbc143e6c93e6741dae37037285fa42ef8dae0d6fe3728b9e92e79ea566b277",
"0xdf7e17da597a37884ec03429b49764d9e8cda46fd656a122f8c61d9123d4aba",
"0xd73b0c0a745dd49bcddd632d4e41f57b39c28db722520c24cb3d9ced0d8ab33",
"0x263f950c95141a28873f4ecc0d18c82b89f60e7042cb3e9f128cfc5f03e38580",
"0x195e19715160d996ce7464f95db19bec2c71c02faba0f2c6c5ce0ad748fd3d3c",
"0x1cee7204151b6a47ab8ceffea244d1928621fe2661b5c095d1cc24c1a6579693",
"0x29d7696ce5bb66f2bea6d55ccec4dbd464298d8018135f734d115430cc82c42d",
"0x26c47c18b71c8e81dd025369e12e24ccdfcec6cab974c0f86da98deedeacedc9",
"0xfac9631760c0b7f0824bf81492797db8cb3f5e4918040c4af17a4c042b116e0",
"0x7e7ea789ab2f31184f5a93820b08a4f6bddf02fe83f7c42a6af69a6328de863",
"0x20eb37fc65efcf8d87ab26c7cbd24ce2b597e7d9a73fb6f2b9db3e0775534bc0",
"0x20f4028b63bdfeba4e2dad61f4232d2a584560aeb71bdc2f6c3929a7600d64aa",
"0x60e204b7c08f1784b366a37a86d0d8d90c386989cd167fcfabc8c2741aef9cd",
"0x408cadd2b0c8fc39ccbe8366e16edee16ef6fcb00bca0b843681ed56a6784f",
"0x1722aea32703f506f24c5551e3b591dd24fc4ab9d188c149fd1b75e7b90dd353",
"0x2b056ea316811928d984e2796d56842e444501dbaa8cdcb546af5de36364f4e3",
"0x276f12a02aa48133e660f6e93ceecfa60a529dbb444a4553824b981e3396d169",
"0x1199c8941c5f8f8ed0cb67c02c5e014364ad7f708222ef17e82378e4c155a8cb",
"0x28a3d2a547967bbd877ebb18ed238e91706b259a1723c1e345de5b545b8a943f",
"0x244dde50ec65e0e66cc3bc269ca9689e25a89c5269a4b7fd5137e9ab6b7b1be3",
"0x18dd271a54f6e5ac3aa02025470b4612c9044be00c51b80e347938a528fa9d70",
"0x218e424622d7d41f3362cf743106e890d8d2108695e25d279a2e88beba3db8a2",
"0x1f05c5f5041b178a54143a02e8850a9e94625955af047d9e658e7cde580fcd4c",
"0x191da8c6357930716bc0fc614b80b71ea6b2540d14bcbfcf251086764f3f6e7f",
"0xd54bfbbf8a8cf7c99b0aa8e6a688b964e50e68f2de8ce26038e155ac0632fdc",
"0x22e1e8bb2d7d1216a9814ff5454f064d67a9c56e4bebf7700cfa1b651decf8ef",
"0x1f0fa78dc7e2300fa36abd2a40c858fc10ae1455bc43695d121c187a26dfe7c3",
"0x151c8de5c4d6b41254130c6977f790f13b73f6fe786f47d32d6a0e098dc8ca10",
"0x191451e550240b9f0f15a5f0ebbb360ea9b98c6730e1097fdf6b7b8028266433",
"0x88c58a21c4ac05f1169de675c2c543cdd22bc1dd06c42fcc4eb890bf0e518c6",
"0x1e431a01a34cf72247817b3c5684f042878c6d8f67ebeddd047773744bccdcf3",
"0x8a6ad0a360a0f2558f78abb268a4c7dce19ccecf989a34ad2abbcea4f50986e",
"0x2fa7d3a514d879b93b93049fe276e60716c547d4f290126c15e8b666224acfa3",
"0x2f352d9675da8d7c81494e015133a5b8b4c62020898be4468de2fd81a4c2cef8",
"0xf6ebe0388d424da0c79ac329f4b571cc3fd8d5bae54d596e6382da769c4fa6b",
"0x1fe4cb5bb70a9da24e0f598396e434beba5ed2e9ad539951dc93a38c37fe3fb6",
"0x29f316d8c7f3c8e7929d30849ba99edf66e61a2d414e6960081d0114f45c07bf",
"0x4febefaae3e20b5358213eef06d52c7b7817a4e5bd8db4902d2ffde8868564e",
"0x4d6b864cd130aef3a066bace271902047aa0564eb05701efaf55d1f218eecb2",
"0x159747ffd019c389e54acb68074802edf33332662d5dbbba9b67a3c21dbed46c",
"0x2116bfbf5067716afcba7419b07b3315f0ee9c8ddb034a6e6b5fd2e78793ef3b",
"0x2ba76cc7a25af15695fadb8fd7d436d91635eb3f251b2b46dc317c8f5060c4c4",
"0x238465fd273e538d938139210520a07f2ce3bdf50e381959486dbfd4dd0b35c",
"0x5c340a5328ed50d2b10d24af11e763ccf9d30906e5bfdc2a0f23fa8f23edecf",
"0x279ab61cfe4f25485cea4bb3491598d816d5734e391bd1a3edcbbfee0da1c6ba",
"0x76e2fbd39d4fab2ad6de8d53e70194771528f4ca4018fc56c68b85f041568d3",
"0x75cf8404428a1a38f04accf51f5ea6a7f7d7cf66ee412149c23bf4c4e61fad2",
"0x1b45baff5397fea5757900b2499c0aa66447e5e6372253457b9d2472dfc8622b",
"0x1a39fbeff40b73bbfff7232c26d92db4afe3286cff840d193b4256a66432b09c",
"0x1a4d4e0e68afaa99c0890c322d58e46ebfdfc24808688b64fd23ddef4e70c7f0",
"0x24d619da14e5505a0466ebd24a766f2af1fcc6fe2dc4bb58440f618d8c57a7ab",
"0x274442dd02cb4d494bb38c28a42fc02494ab3eae56e115cb3c65ae4aa728716b",
"0x26a9f2469481a594f9b546553c12df66c0fdd4b4637370cbe695cab374f5f115",
"0x19b6db087b1cc1c4b765e70274236d981d5b022a6cf0d3aabd478eda2f895894",
"0x231b94b5e1f8eda3405c1a9a05024fbb79f8722847c8c4dba6af33b0b5e8d072",
"0x276a571b8b2cf637ae48734c01c30a91890729cb137862d09b0dee2f255c5681",
"0x63d0dc1ce85c55433a780bc6ac9fa8bf4511ce6c37a121b6712cd8905787751",
"0x1b5766499bbbe4410e990a078a5ee8d6ad5c4ba9d0468a056c10e0df4f3af63c",
"0x121b65097837a750d24e9dca2ca61b8ef80e1ef478c3d4f1cbff64d4256da110",
"0x155bdd180e1446723320311ebf6ce1668158921dec0c5d9496888eef28fa8396",
"0x2c8541d4945a6610c164b4a4546b2f3b9bbf6dc9316b5658927b635d8bab8589",
"0x34a08d31b52da90215ae00874307d421ea20c786605ae7fc87d0be172b8c3c4",
"0x12552fe7124ee6d20886a7268d73a94850f06a600448641df55b08e7933077c7",
"0x2d19c9d4694d594c5382702070e7057a9f0c7f7bb2ab83ff684810de0e2106cd",
"0x20a7d7794bdbe939ba166d34ae843e1d84eb4632122b7fca26f4e341b0e28b29",
"0x225c213c0a3c9addf32f0c5bdb33fd6957691135d84757b4c44eeba59469e561",
"0x2eb542a5c77f34c674c1df077e89408f5481f4133e3ba62a4b449cf64f9b2537",
"0x303a003af9c1e54d9d3189920396d0c752c9affe1c17e3fdbaf67b3811fec7ec",
"0x2c42a27e94cb62ffb6c169979d09f39387a9e9f9b6e9df71c9ff4165a8ed5673",
"0xae6ba5ef2e7dd64e3f24af20271927e95859827e9a9d32aa247de70c5af9835",
"0x4c58d44d2b14455273dda0c92739446ed59599cee1a505d0cb3631118845410",
"0x2a5c4931de9f553fe4e020755d8b5c10c12ebc234ddd501d6f45b1b2058373f0",
"0x2fd94eb892152b5ac3b73e6061f3a4f952198f3c330e150d4f44c933e6c8fb38",
"0x1b5395c281e1bd5763201cd1c72a3b5db71a99ffcfcf7db793704c0bb4d53c94",
"0x26d18b9ffcf39ae62f03177f4639f37f569b80500e0bb4553466d67b46342b82",
"0x2c4eb768a6db2db295d215ba0f81dcdcd77e0e34bc123791c03ee7d391812b38",
"0xc2e3f65db73f4058ec7c6cc3c3ee5c49550dc106c35929f0bd2d04590309313",
"0x28f15a4dfe1c74ae128ab27ca3208dffd9313d4e87a759136eee3e194cc925de",
"0x11ecc3e8d929c5be84af974cce44aa80bc74a16f13e9b9627f705e3929fd2119",
"0x239d451ea3e39517351019674cbc2a84c6a7add8fa6080371768859e9a89f275",
"0x2a2a9313720b4adb8e4f5795c3224053b31bf2d6016d9096e56cb87f01f81124",
"0xc0089ad49e3644745a0e3596312b34ba6c0faaf19e362bcb56f4a7974c6db74",
"0x2ee82c31a946f5d71be03b9a041596afe624c9c6a6c4907a8be5dd274c3d1524",
"0x1ae0e9d39c6100a8ded3e7ecc34988b75c5338dc936c91c6f1d95c405c07bbbe",
"0x1f11f75c7d0ac841001b3123c045526e98c203d1a6caa18d635f2f2bfa735738"
],
[
"0x11e27da7b7ef964948a332974d07cceea778bc33aedbcd09de222fa22ad0b101",
"0x1f60381b83b44a8fe65a0f4142faaafc5fbf55f79133c5740c53f036a3065b65",
"0xfc1e1ac8ad3524ebdbfa45dcc51576548234d0292adfe1cd70a706a1b6dadd8",
"0xa40798ead3a12b78bcd8f10bb15cb0c426bbd2282a81dcdc070084ce78b8d76",
"0x2dc09d3357051155987ea95594436b6cbf393b0135f51e2f675ea5f462f4a9c5",
"0x104b9241d534264532eda181de1a154dd175ee150f349033e46ddc54181da088",
"0x127a6208d98f6cd387b802fa44cab2037b3b91f0622f17084f1b8d8ac9d12698",
"0x2d075ceebab54341dc02fb1f50d938ce1dfdcde659955a930ec18f8625f86d4d",
"0x44fd5c2101a20be2ad923bebe15a477f40c6039a3dd0d7443fe72758042010c",
"0x2b302c8511fbd3702b815564c5399acb8a8f2a8eb77f96c7f0849628e09f9bc8",
"0x7cbe339db90599455d1eded1e8a870bd302c92a79b1d0f4ee87222cce99e22b",
"0x1326749312c6e8bd4ef24c97c809f78ae548394c94c3df2f28ffa8105debe211",
"0x54021406b8d1f8c7080e7c245304e4b7a797cd236dad92d929b223f269780e0",
"0x5c0e033b589f8ddb23a9d559eaeecf98691a8d018f1279bf406d08f2787cc42",
"0x2508a8cdd450f969b61c749d566c9459a16ead4330e35d5415b12eca38584bb1",
"0x264dccc02e574ca7e736da25072bd8fbe9909621fd4f4169b2bae8d368ff12d2",
"0x137199f796d310d7fe22d83663c8e607d342407dc28c10d27aedc4a45c8ff70d",
"0x2f6877c1a818cf1f087343dc38dd120833574b9691540d03128a2d051c1be240",
"0xf418e13a90e4295bd384c4d4764398e1e44865058e6d85f10396a7cb0716494",
"0x1a6864de7ca70730f8657bed417c428aa5dddafee26ee78b942c86be61a962c7",
"0xf8be2e253cba2f128e7365d8b1ad95f8986968cc60224445f2bd717c26088d9",
"0x16a8d9f265a66f69fad6d7b744cf090e490552c6d4ac77f89f09d0ae70095a5b",
"0x25f1a51ea7f88847cd19c9dfa9c8587ac7a4f4b8a10bf900d20270398b9613e5",
"0x28d4a6eebf392a9378b7ad9aab8862245279a9f2c0b1678cb6d3141ebb14644e",
"0xad7537d9d5bb7e34936eadf66fe924d80c893745fdcebd5ea08b79f9137aed5",
"0x6ae9e1b3a2edb869b5c6f231fede58dc7dfe42bf3802394ce5d62c3a65567f7",
"0x1f5d4250771eb130c046c8df1e77f7f77da20709346a334dbd22c72191045cb1",
"0x14bd6a1b5678cda4ea3a16c3b5abbf38ee1d82219849cc37fbcbd934e7de1162",
"0x22905156b6bb357e2727bdcb8f39a66a09828307046296c6d5322abdb932d0bf",
"0x2023fcb87f89e6fe4cefc3d315249ed8133834b56aeab6fe07b7fc246b096c",
"0xeef78e23ad00648fcdb65eb246c737b7b4060b37b6b845eb914108f1316646f",
"0x1f3030be5da4e16c0468d631074a65f5457462fd6be6db36c3a522453164e48e",
"0x10dc200b8c1b565d4c2e88d5bc1bad12c490a20d05dcc4cf55e9644f3534455c",
"0x11a9cf0b8e97ea26ed0d49abf3a09233703333789a390d72db661fa70b1cc2c6",
"0x15b97860d1a835a706f54a97ff04a15c69dd3beb0f86b51c83803d490c2cf2f",
"0x1225bfd0d701b349214873ab03716319d9c96e3cd8d962028b17db843e4a7f19",
"0xf4ebaee2abcbc49d408aa52c60dcc093cb0da884c4a92d0f280d7b100600560",
"0xadeeea75944cd5d35045ec8cb6a57487287a92d1f70cd0b2389a4f128792ac6",
"0x1874870c72a32f0d385294a73d0ff67d7234af8e0ec57c63b4f77e72130591fc",
"0xcd011ee52170682d3777ba0085ec1620e19b1485d9898800dd2b1d74f613576",
"0x2e72b9107cc1e1a9bef16bb21a308c9fe3fc9221e55f5d4cbd43ee8de297e02b",
"0x7ad8d8e863868745d2c0c6e1d08dd357803f4653ea2045792edb563399f7d84",
"0x273d3298e5b22284dd66bb0f5e963f0a6af68c14018c728fc42cc82acc384db3",
"0x111b832918546dae5a1a71d312b412462b9d2bbe867be4fdf089eb15820bfe13",
"0xc4dec2328aabeec22bef040c565b1227753c1dbcd9e470f906a4fcb5cdbe7ee",
"0xd21f2bf0ab2f74a5eb38abf787121f015d88ac22de1490c548d0606b8e6d7b4",
"0x1e08837512f3cfe1319b8f8babf49e738abd159e322227401b7a5441978f77d3",
"0x211eaccc37cea3485cb8300994538c153b1dc5b8d63c96b437b91434642a11b4",
"0x123e045851f8649e6332e3e208b9d4db39099f077a1104555bc38f68c62deee8",
"0x8b66ae60a35e192963af9ca3e8681012d5288a5abc67065ba52bb151d4042e1",
"0x2e9188c8e02a08b719f7cf8af307de827d424a166e6f9ebb172ba41855a405c",
"0x52458b94157b0e5d0b5cef9ffe8e014eafd7cfc1b43611faf31c2d8d59b4eac",
"0x24bb0266c20a04010addd514bf76e3da1276d13cc58faf89668e238b9ed2ed6f",
"0xcd9a619dc0621a5f4cdba8303b5f69da6206bf28a04b96d4fdfd3a214e3e54e",
"0x119949b91445ca55fa6ea8da2c11d93892e5b4cf3485599f41106eef149eea9a",
"0x265ec37b545cd5dc12a27c1128c314a13e8cb222b5d25c3b9061934e93cb97b",
"0x6aa84e7c246cd723c78fa394a7ded19596e074fff4ac200171a1f4c75bd7924",
"0x1b4e6c237527565068aa65269cd73b5c4675b1148fc31fbabcdcaa341f63205f",
"0x2bc7d97b099113c5ab67254ffaca493041bc43e8d344be98152e98a4fb786da1",
"0x1e8fd4145c4cda03e17eb62c0f9d8cc97f5b13b83ba8400b57a3d80009c00eeb",
"0xde458ac4a2ca65e25c6c028b23e73fcad1bdb3e3f1b6a730eb47e04dfa65318",
"0x2d1ba2bfddb58785ae140c239197729f0c60ef611f3b377d4aae3c6dd444b5b",
"0x29d94b0688e3236b20967ec747b92e837fcbc396fd6c348b1e0c748a6ee021f1",
"0x2ec6c5500bc7998c7b821d209c608a630195b734c02a5aeb15b1c755b7857d5f",
"0xd185c970b8d03fab0cb058605d2c0871c76af2047efcaca0e1be393a4817ef2",
"0x300c58a0b3c59893a5acfa7a0adc1de29dfa3f16b4689af0535cc2513d60920c",
"0x2360aebfee8827a4b9037013a6dec8af8f38308d119b3167df19e3eced62ef6",
"0x43ba139aaacd5a1c1349104235e9855ee8802cae5a30a85edad853b092b5181",
"0x1b0597b0023cc90297b8a4e996676d65276b1a4c6409d7c3c26008e56cfe6f63",
"0xeb1857692cae615046d0febd92edbed96417c07b841b462f78b90960771ed0",
"0x6399b5873506855684d027c760fa5b89721ac3004096114ee2b0c5ea727eaa0",
"0x92636eca31acead1a2e63131e25a2cb4cb5e5db766615861f4fcb06e4321eb",
"0x2e1d940f15c6a1f49a28f66c0d539f5ec4431ebc533ddfef8acf0f5463b7d0fd",
"0x946412137bd02c889bc3f6600635398e5c29347a580994338e44a6fa41b40b9",
"0x18ec2c5948557c8699e5e425ae42b5f51db8faeadb62bab808d1662253e61cae",
"0xac166679eb2864d7674a89bda016c235736783820591cb9504b890b9117fe4b",
"0x4db97e1cff9f2fb62e16077221c20306c32f579be40d7838e6ec15320c38443",
"0xc4d540ab17d3ba0328f95369e86fb073f3660896d85a679ff9c6c99268bb7fc",
"0x2e6b4be5eef898dd7bf66b3754ad1bdbab013ab0ed99c1632a489c76987f2ef2",
"0x15f2072ffd2d6caa3d6ca13f7703a47c0bba942b0d9ba0b141047a297ae19899",
"0x1ef8155e5c33f8855bfdcc24ac895db935559d5dbc442514d4272e0b2270604d",
"0x194f4e345835e516564677d1af5193e67f26573afe1d12fd77673126e4b6c1e0",
"0x2a3fd58a40436abcf4ff7d7a582c5bab55edf2150a786ed51c56c6ff2b668c98",
"0x11729c1bf0a0f91ac34e4456d39ee6d2dd1c064368c2f0a8b76f555802d9af0d",
"0x2e13f7ce1f37ee5f2839bacd94feb1063960ee6438f10e01000769bc2856e755",
"0xe1442f5f0fa8737f50d8935fdfc204cf07e6fb3acd7c7cbc78fd28dce78deea",
"0x1aac56dc7ff6d0adb2cb7b01c67f487e3c812350450993bccb186b2fba077957",
"0xdb64a35a35a8fd6b486cf00f5324887f84c20240637b071d462a8896af11134",
"0x2cf6b1eb727612b4676e65d750a2cb15c82f13bc858e0bf6c1cf87b96f8796f2",
"0x761d1ff3a90fa0ece518705f2f80055b7667ff667063fb5bdaa950efc805199",
"0x92a84456e8ab1a26ed09f4c9c78dfbedbf4904937bbbaaae9a23dc680fb01c0",
"0xcf9cb1a0a9e17a9d6bf4b296ee0530c1b88141bce69357f964fbc22796465ce",
"0x1fd3b34a7c3a44e18fa8eadb896e5a17ed439bed8efd723246a009446bb95f0d",
"0x4b5ad182b4ba40ada5f69e436740417c1bc901b58515f969cff2fbde530787a",
"0x17aed43f02895475ab9427f84c57b965683d44ac92554d140ebd0434fefd6944",
"0x302772848bcacef898d59e149ef84e4822edaa6091e236aa41bd683acbd43a7f",
"0x14b66c4b0f5ee36c9f94644a4110cd09825cc8c85f6cb328391e83fcc86c71e9",
"0x18d6d00bd7b85619dd8b979158baaa87e5fd97a0c6d536c211a3ec663458fb2b",
"0xc094c29ad77018d4da01ac5d06bbaf353330bafc55a942fbaa30b4876e11240",
"0x1f6c4bd9672a340c114623c83ff250c8e410f0a3a11b4fe769099f8be230e4d",
"0x279d9751ee739e974ab65792beb9276773537e2095dbe80baf236adaf2d9de3f",
"0x2560999bf8b9ba17804b13067dd4b0b0022219dcbe167dab5f9300b68236da2a",
"0x211d8050a0cc08d433d487381dfee76e39c8afc46292f336565121fddf4f8b4",
"0x26dc6f484d1445c5f5c208ff1a487e372f1f8782dec0a5da03a85f706ef48e8c",
"0xd11eab567c463fd6796c3bb711467a6a78f7d847de201eb717dba516808d237",
"0x239b30a866e3778491b842a8c2df9ae14a6315981c2394c26d99ce97c4e7fce0",
"0x2e35cdbf79533471e4849a97467eb4d1b21c6ad8ef34691e08b74ef19c27735a",
"0x2237729ead5273e8d6acd40a63eb08813a2293e21dff54ea02619c6bdbb18c77",
"0x290c8723936f36b91aa1fc42768007ea904952ec0e41480d074b96d41703d648",
"0x1c279f1d50860ece8148cc1b59f5c14a850af2f3a7e2afb8fddf72964fdf9c53",
"0x1938e4214605f8e2fa59e7f90eb10eba0e984c24a5f5c1b719f41421229922e2",
"0x1b45ae36a32c689150489056ea161cf38ed1506f33a711d6b471657277d770ee",
"0x2f0ac8b7be349d38f0ae7f7dcd7cc86eb3aa06c708b3faff90f6b24a8b691431",
"0x1c40238de6c61dc8fdb5a75611be0d4bf7f5c4eb39fe9c065c26ae970e2b1f06",
"0x1b4baa71e93d13018ae4ebb790bc188c4b46c892c6782a27115bcac4d165f3dc",
"0x145d0fd15960dfe597187dcdd2927c5170b853928ee08686555ca5a57ab4b1d3",
"0x83791a423ac40504e7c99084980599a3359ca693c6aacc47b192a325d6df626",
"0x2999885c947c9dd00616bbfc088819ffe4c0d2f9033b04f408acfcf1d79651a3",
"0x8d0a62a3ee05bc36241af5eea0b62dfd4f28c31fbe77fbaae392fa7b05af4f2",
"0x18e93970a8a8070a1835114c4316e7ffc242eb128031aca086d3ce2cd3558e33",
"0x126590f273bacddc28fc87c100b5bccf95eea5c1607dbbcbf05b6db2992cc12e",
"0x21a7b2a18aba9b81406cfe7c64c1b0b4037c241e7565b52760d74e7720e92117",
"0x4985dff243cbbd8eac16b7b6f03603118293966de095b2e057043891bf5174d",
"0x18ad558446b1c9342e3846c398d05727ebc22d4a8c03de6380cbe55aab7241bb",
"0x1b055d908da8e662ee4b05c3c66886a35bcefb67946cfa6baeeddd8cb06fb65f",
"0x1a10263fb63bd4f23fdbacba6fb3f0d7499fea2e1e1547b36b17c4fa79dc0eba",
"0x114b2c3f7730ae08a1a31bbdc27ca1b3fda63d5d8eb55bdac6578b27633395cc",
"0x1a3f27e20df3c4045f3a67065ed869377e0c63a9a367f09f7a3bc63d4006bae3",
"0x1eebb48e654885e9fdc60b3ad67b988530923f65fa76983851b1092640bebef7",
"0x2ab3b05b9cc58838ee853f9d4a4817c7bbb1efa9deedb84d52c90ad9d80c2b1e",
"0xbe8d510c3f0d8edd5716971f2452b3106ae0f4933d894404bc0b5eeecebe356",
"0x300225e792be5f679ad2d4f8b3d070495bcdf876e50523cd877b4fce9bd30543",
"0x2df4b36388d11c2ca5d95c24c93e8ad10ba7b74735753cd0c7aa4805fadbf0f7",
"0xef6deac5ae321c054639444d4f0031663195997b4cfde163c75e989eb0629b6",
"0xfe041753831aa6a6bc0ea08a153bd5a409de14ecf636b3682539074356e5852",
"0x107105d12a394dbcb31832b57081aedb73e0aa17ac7c2faee1870d2dac147f89",
"0x1c2618562f04166bcfa93b80c537ea8b35aa07d8ee33703fda76079f7b78f1ce",
"0x27f7f4d91b9f452211799438a638f0c80e3db58ecb8d194e97e211e158df46fb",
"0x2a9982f31c9f628b43652dc20217d9a91bdfa94bd125e1e032e4f6626eb3bb02",
"0x2676c1451011dab5891ee8f715409412396960849613d13334af036176b7f343",
"0x27c95df56dbab27660262717556e57b6d3d66869a0f834bffdcdf58c80de932",
"0x50255c8e75aa4e294b921733803da9d6b9a9eeee28606bbda643a9122fc76b7",
"0x26a0dbba1128c1eed674bf21e7a7d23163d48634967d0daf7e467501768d237",
"0x16e80c84883b3370e75f1ab266b46f0b839accab3726278ec206998b62e789df",
"0x9782b1fb5ac39e3124c5e857253337a4503950a6dd151f005963c92254ad7d",
"0xa6975f45d3f7bb18c7db0a286cfdfbe0d75b79c74e67ad2265cd168c1670c1f",
"0x9b2d6b4df7d70732ad35eeed1b468efd932a780e9e74cb82c3dc1c47b4c8440",
"0x96195e37522c163f5fd66f13cac8bee72ae4b445224ebd85340a69b5a322739",
"0x26d015d70931042ece8bd15db6b08bc1496b7501baf0c8bf4a5534fd60422941",
"0x39f5d3bf59ceb12854079a2675ecece7b8cc5d9ab9c3d79adc1d181ca6198a9",
"0x1352b30ec61d92dd82e2360d38137d2fb02c1e78d6f99cc437e8640becc56122",
"0xbd8e9fb03b03709c0be6510b233fcffbc1f9f63f4d6019b110f77417fe381b1",
"0x14d37b7920faff9ff10ac3568122fe38221ac783e675bd5f6e69494755853723",
"0x2208c576d439a6c9c0c380e7063fff76a1f2685bbed6fd7bed23c732f345501a",
"0x8f4fa71b7c3c71c66c0075a5b7a0cb6271c6f7568979d3742e2847cd650aa55",
"0x30553e47d42844f4dc97d3b96dee7b6c483d2868125eb7de508164de2466b74e",
"0xe10c2cb9014f110cb54d27ae0130988b0c32a55f8d111f2bf797dc5b2c39a86",
"0x2801868c0861bcc953405e4964dfd447a8888d8839aa7e414de176c7c061e238",
"0x23ea7dafbfe7bf1d8f8b4ec83aa1f0ce31fdfc9ac5d2cca02f14ed1b87caf599",
"0x22ff012edcab66b7416dca632a59caba6d641e02f6fe47e7510ce945966f3721",
"0x2dfd80076ffbaecd97311a5c0b2314400005a1f07b6c21d92228583ca5b5a4b",
"0x23c45a61f4f2c8b3e066a26e232e26db93aaa24e2f65d26601ab2d7a1b95606",
"0x2072907f984ca35bce9ad3e82d8c30f9acc0ce98d145e4fe277e628489594e2e",
"0x8964e49de9a9fee1ca762ffbf07f8c4a8122bc4e90e7b567fcff008a6e45e6",
"0x2dc503267b1497a821453a73030f2a3523213bf0db9d5b061342cd859a1cd907",
"0x5fd4295ee0e76dc56af4119e7376a593e4bb185af60adddf232b91e67fb2aee",
"0x2092ffeb6b7760870dfaf471823ed7591fcf6e6bd5b1bcf43775d3c07b462706",
"0xbf1a49f9b9ac34d30e463ba797e3e08dfb424791ea612b280932ec208c7f800",
"0x272a88a53e263ff0a56bff4cc645fcc269d3ad5a63f9625ffe9eac93a36b77d4",
"0x27bb4022b1f689184b10d6f29824311ccc5e2ef14a3914aea8f06ccb7f2aa8ce",
"0x178f0ee74c834c0d22f7aebc5171f960b20546dd9cb53b3ded78a351ab41ce10",
"0xbf6df276b3f28afd5206a8646dd6f4c095fd98871a5060502f3a6444be321b5",
"0x219d4e79092df13b3223f935d2a0a2573c1f7d509a91dd7fc5533d4c3c5d098f",
"0x20f5702b749f56df810411ad9950ca9f87f1e0f97b8163280b3b2df05b679b4d",
"0x117284f038872bce68c791ad18246ed84badb692e338f716793f5a6bf216386e",
"0x2c2dbc65a26b313f84567ed71d40847093d08ce8c2b8a343c62b7f57ef63d968",
"0x1743373e3858cdc0582049ef7e0284d33403cc8bf56997c508a10b5fb008ae77",
"0xba28f299d1ca31db5a3bc0e8202e9ce8fe85f80c4f03f9eae2dab5de051a659",
"0xe46831dc32f73c1086055faeadf047d3408c2cc0dc2e725c878dc9ce68f17eb",
"0x1d8635cde2ec64aa50d8d979e29ef11fa0060bf86ea00762250e314e2881f70a",
"0xeb6d86f7e11b1e3dc21882511e03b7aa64063688fc52f655f12e34a343dbcb9",
"0x20bb2d1b0caed114b06fca648b0703a7346f6b2690f220f82e7710b586b6a81",
"0x1c4db5ac81e0e47818bfc08f7ec2d66bf15daaab8ee766728f588539eb60075e",
"0x16eba5f5dd46415f55abb8199b0069ad3ab7a78e8eedfafcae845760a4b1e525",
"0x46718c49cfcd67cfc27daaf0bc00db0165a8b34bd1801110b85c3f890779f02",
"0x10eccf3b4cf167cd78f9eeeacc462eed71eb92a2e31bdc1fc4b16c0b19feb44f",
"0x16e1b2c0dd88527774f18bc53f4274fd15a5afcf3656f149ba7bf0d67050f3dd",
"0x1d13bd396da5a68e7b801ff0b2c6c2725f961bf633d0dfaf1a4b2c904969ae53",
"0x2023518104868b1b97d9a5170d7a33230bff0618df4a31b381fbe9a0ea3224f4",
"0x84c4f9050120239d86cb0d84535ccb94821f0a1def04495ffeb559f153ddc26",
"0x1ff6f423d94667ef2d79660600e05c570f74d77ae07139d2019069ff96c83566",
"0x7b5719a1e09b96a5ce2c130b9d3ec76002d81bd6a8b46ad27274036bb363bba"
],
[
"0x2fb583762b37592c6c5a95eb1d06694b6c6f9dc4f1ad4862dd8f5e67cb7a3f5c",
"0x12e9f46cd8231bb03d4028bf7a11d7c0e331dc05c088e6dc3d1d001da58b85a5",
"0x1275cd70326f52f816a7c53fe62e323efe61a5b8d3747f6dec5837a825873afc",
"0x6e7d165b57b0299d23e750a75ea2e12c9c7a16954c40a4d10904a61e8773541",
"0x2f67f23a93ef1e215a4add2ecb41bef4b9d85ef9135065d992800e34fa98108b",
"0x169eb9952e2a8623ef38de57e15e242df388019489e01b7c84fa839d864dcd1a",
"0xf4cd404b4024ca13a513ba3156d4de9cb3aa240c683b3e0eb7253bc98c8b5f6",
"0x1c486bfae3ab032ff519e8dca6dc41ea060b0ef9083127bd7c2c4e089fd45aca",
"0x102e745864251ce940c67b1e2f4bc4d27fd3851571ce6813baac665e8cc0c79d",
"0x1e6a6d620433d22293044ffe36a5f2a729c129cce3eeb0bdafdcd0d52bc3bab5",
"0x8f3abf97ad8d01cfd8651ff2d576e3d68ecc47aad82b4188d92138bae603b6d",
"0x283da3f1cf8477d9821ee60378b1c39c72428511a1b9d6683c0302938c248ce6",
"0x2d99cd8d88e49e0babc84cbd58adbc143a75a26ba16f96466a2e41629734437d",
"0x171edd6a7456a4c25fef8aa6d8b748ead869369f72a4e502861fd037dda8f779",
"0x2fab64694369e3a2bd573c0cc383695c02a381e785792a3fabd6e1ca8df2d3a1",
"0xc6155944f64f7694fc8ecd2a2b9a2370568c3c898db9531dc18c72474f9afe7",
"0x1ee0e5cfae030622249210cdcda71437f28f0b1730653c0915efbfc08607c3c7",
"0x1c15154895ebfcbade12f0e02f0cf65f87351b1972358beb0eae6b6976cadabc",
"0x467fedd16f9e87b3069ae697d185c9c884ed5d9e64bb814bd11f71885754083",
"0x2b5565852f65969bb087fcb51626b4754b69136d92546fff44b7048b2f9ef8a2",
"0x2250acc27d5ef8d0f4ae8ede77510a7ffb897d45d9c93fb2ece4fe4c9a520f97",
"0x2c0abe26ff8bd475ef727815bab8a81d154d2c1e36eecd07574222782b02a8c0",
"0x19b0bd9e0c5fa1f56885be00fe97cd4ce8e107e95a10838b70dff34051188a69",
"0x2342fa805eeb2b237633942aef80bafd3af387ec8d472f5d12e8f9834d32eaaa",
"0xed57663a2a64c73b2870af0065ceb8cdea397599ccd9823747f884cdcd8faf9",
"0x2c8da824719f86bbe3e601b19d3ee2a9fb766e7537aac2ea9f44ce4896e64bfc",
"0x242fba876b16361e11c677d62c6aac73930683c0c40bc11938247d2c244a4474",
"0x180cfd0b1cd3af7d5903e1e638bddc6711876fff6d5b12607290debd5e409b3",
"0xfe8ce1b265d657e790bb82e6881b2da774713b724b9a88ec36373fa66f915b",
"0xe8701cb0f031d03a5d81fcf949230dd38dec12218ed937cb31d58cc4640809",
"0x7ed575f9154b12b0fbc12bff4350c6a4d38859d10f557d38c513b37469f47be",
"0x22e9f46e17dda4066a4af81a4be19c94de4b12e0921f819030f8352aad050b91",
"0x2b21049f7b8e6e767d633dcbf2acb264dadc7a85a39b937458c134f652a6ea5d",
"0x216c5a5bff445ac3a3da1eeb706898437840905b9ff27dafbf38efa470bd0bd3",
"0x2e14bd4f01462ffd0c83929aa97706ac772f66a3a0a0326c00eac11f9d5a485b",
"0xf28e51e2f777239205f13ea21e8f33172ae538b21fb69bcfcd82ac51500eeae",
"0x2c2295ecbad9cf1b3f6a773c69714eb4663a01827044169e7f1edd5838106eea",
"0x1afe7b1d8ac438739d488ef003f9c3c679e7fe2f0918bbcf93ad1f127f2281e",
"0x2e0833dafe87279685cd5b5a0105f8b98774b3083833bef43608bca8451b210d",
"0xbbf4266fca0861341c7196fc15592fa22dce6141935e01fc6077c774cbb967c",
"0x530c66b07d2db8dee36ab00f91c5aa0a26b48d8940f0b72735a65481e5e781e",
"0x2ecabeec31877a68058a22f773e92d483867c01df7d050c3fa953ccce90acb51",
"0x1e379c0d2f9d0b659bc732b57689e48c0262a976379959e12b95cb5d45820f28",
"0x27767756606bf727b8e5361002c613d6c3a20df9c1788c9c122d3a7736a6b340",
"0x1be3d832de2196443062c3b42321ae05779368ff46eb68fe57d835d8d656ae25",
"0xe9b839700b18ef3eba297cb68ad992b3bece0cd5bec65e6e40712425447dc59",
"0x2760900970a34d2051ae587ec18f502d246070d70c2c3d7fedeeb51bdcb785d",
"0x370ec3f70286f496692cd5f50f6b06e21c5cd89fa28f9c8b71d42b4ba277906",
"0xba8f86362e1f301baeebb2333893f7fba2ea082d75969a97ee3095baabb10a8",
"0x2d683c3cd7b4f544bbe4a6baa9aaf78614434a5915299ffb37f92abcb4a4dd6a",
"0x25544ccf600d8604bf3e11aeebbed37b77cfb1b22f3b110a930c91e9e7951f82",
"0x1c583675e423f947344328315280966833f05f91a2a24aeec1ab6ed37376f959",
"0xcb752efd07c8400d50a06f3e1baba3cb35b0ba28b262f8526f5eb0ab5bc79d8",
"0x14cf442b6f22ca3f4c16974e2eb56ca084d05eb93ae1049275b8bcbe4dc238f0",
"0x1af1b935bdb5607897f4ff0745ab08140d6e80878652855b1947576fcfee4fa7",
"0x2499ad4b7965230d4dd5d1c41e00699c40433e22c2745807eff395a13e6f1f0e",
"0x2b582ea1669028196e62e62271a36f532b14c0a8109d34ce53df9b75b81d63aa",
"0x1c335a347abda047c4b5ad93dbb2e9412d526049fe1fabe1b5fee25ee99e0bef",
"0x1e3451c495c60dcd443730401ef329d70571e3644dd7b5664cea26daf8a70aa4",
"0x2d96286e6d9eadd63e393335f1217710746ccb928834e73105823acbd2da005c",
"0xc1033de21891ecce9bd0afe313334f7e65977994e545204d616ae0ec4c1bd8a",
"0xf0f51cf6db73e970a6b8efc8823bc82cac8403ec369c02a14affe5fb40eee36",
"0x8ed2dcec016b8eedc067a6da7b562484c010234d84821780662acf9d281b348",
"0x19a5ec3b7882ec910bf7590e9774b63ff37909995a6d695611d5532d6b81a5",
"0x23feec5d6235a405f0d53fc16c955fa0214cbb54fe973948a1dd39263607c33d",
"0x85438dd42c1d74fb0407e48ab1b44e0e42aa3f54b8d7d4f6efb87102c6a00e9",
"0x1916f1d621aaaf4f9072bfc4e41b4b78e82b595d7510d507591414c005fd0327",
"0xfc2435156d4ee76e9a85ac6aec2fbb50b0b77795c370c2183fca9bcbbd07693",
"0x26cf4d12199003f6978f80761784de0919d3a14887a57d4a28b4ff3ad39bd969",
"0x2c480375d8dbd4ac4f039f452fe1a9f074c811d48dc2b214d3f5de827a1a2025",
"0x219b5f8126784340f278b77b765dc4c697937b3d81ba2691f8979839f02cc0eb",
"0x14adc2f2733f55d49fb628c3ba41110e16946214996d1f93262b9347cfe69a21",
"0x230a5fe366e0aa4dfae1dc35e0206959781a64f22d5c684e53ffaa6614b1df31",
"0x1279f8d2e2d43a9eb3b7e4149d16451b78c65118b5a80f86678f5ee6fdcacbde",
"0x2be4cb4144aa4b8e705c37da42b8819f0165ef3476fbc327a3a3deb0a0e8d751",
"0x283b18f7a149cf2f2c8cc446513b5a03a06022cd859f16da1149e7dc7c60a45a",
"0x2d5baf88887aebe22d5d9096dd6c45e941f6a67369af01c75479e707803378ac",
"0x1cd9a6ffdd0daf7ca9890868d9ab398e0546335bf29623aded76e4f7afa5ad55",
"0x160767c1cb457de2acb400781d8cdd25b99f75af301e749cc46049c8db5563f7",
"0x1bbbb19bf384f9812aa63685729e0dfe06f3454c12139454707c1789c39fca6f",
"0xad3beb75c91ceb0b2bb8aba2a1c73c95e7de57b8d5a7984e9f4d010f15a1755",
"0x1841eb6cc35a1dd64feba1d8ad6cfecd65063e1e6c2cad4fd5bff1b4614e0b06",
"0x2356eedec4882d9032ce821d611b98779bd344e2abe0a57de4de06b72be6b447",
"0x10fede6245a9c78b391e69db91108306bee130faf298432d60a4944ee6ed6479",
"0x2b4f28161c7a843692b07410223d8b5db762ff16ac0cded416c3594de6a53443",
"0x1f0846b1b26aa3db14ac0d69972c9118051183ed1d1633876b44c92f022e011b",
"0x28ff7a7752e51734e1f568c6aa3dde3009c22ed210503d5dcd7dc25f7f6767da",
"0x1a3acbdd739794d252150399c6a8b3d114d97d643d4ce83fe8f64f41d8c34e93",
"0x290ba46b38179a447cc81d0031d18e9baa34da9a60ba7df3cb2c7654bef3f412",
"0xb9876589637ee3628c3a08500d67363a1a01da7a1ac81f528c450e9b050c6ea",
"0x35b7b33a1e17c6d1674cc229068e03d3d1767bc950d68a2e376f0c793a896df",
"0x7e6b30a0d3c2526be65920e6b873de72db1d761f7935202fce088538741b347",
"0xe5ed87393495c2a7f3b877578c6bc09653755179159351d8e67470abe9cc690",
"0x2824873ab7526115957736a5cdae583bfcee10b9d418ef8e17795de3386f21f",
"0x1db49ff47ea6ae80c26654ff5714e69cf3a1ff7b31b1fa7a3b9e64618305d582",
"0x1be421809f80b11a626a0eeb927a39c2413e7205d25c89276bf5633565038941",
"0x3b7c7629b535df5b487211f4e789b9a287abe7c453632ef7d42623c2d2c377e",
"0x12a9f7f6e0c65acdf8c9fd354f7ec84d6e41638465e347f3063adc04e00e809e",
"0x1df5905e387f8ec81128c20ffd995fad5402096e3cc6d2e229a23709b6859ac6",
"0x2d39da8ade615636070e6734fd848368d58428aa3b2aed784d8429f2075d122f",
"0x327c1d1f0dd35b08df840db2579623243c13d9c073b9d70984bcfc97c9beb7f",
"0x18a10f3e452a08076aeb6b825004322a48a6fb0f51956f50250a41a49454b6c1",
"0x1e94dfa0b21f7b3e6047d599b3ad491a693fe458add2a56c5ed16155fac59ea6",
"0xfe2016941461beb0f0bed25bf31e8c9a36f21fd61cf70095d2da2bb93bf3b2f",
"0xceb82937c84923d76bf855a1bbe412dd3e35d0378007404477883d885b425b4",
"0x16985b2ee64b42bf9ba0673beb0e47580763c527f4792fe994c23e3046621a9a",
"0x10e6ff96c5dad8a34d7af2e3c6ab2e1eb6ef57849233d2945fc0aabd404e5b6d",
"0x192fdbc53b382b45aa3020d21665ddd656bc1cc332581cc71ec97c3ad71dc542",
"0xd8431c14f1ff4640fbf6990506d930843bcdeb4deeef3380b5cf2161a3bd030",
"0x604632b70d1c0dbc74ed29d69d11d37b90669882c2e3d6784b47a5aad03495f",
"0xf2553c7fa5beb9cf2f6957b01ff7bb7d3ed61f9c2e6fa8a53264704f986c193",
"0x1fdc2bb41ac0418d8351414dc360ab2dd324d1622807cf59db5ca6aacae5d58e",
"0x18c42a157f39bfcada57e085c7cd33781cafc7b33d6505dda828972966a9c2ac",
"0x2645748d1b13c825bb457aa7761b9ce5425c56137e213c8634c87ab29543ba1d",
"0x2788af72cdb594ac08f41269497e1ae18d44232ed0f80a06bd9e72fd216e3972",
"0x21ae229ea6529c4f9de897bb849ab6bb15bb92ee41f73d348c10ba8d64acbcff",
"0x1abcfdf990784706f54792660668ad106d1a6936245785c3fd023a5344cc25ea",
"0x29ccf1d934f2a647595d1be0900002b9b7a343c3e7d3ab9ac3d2ab8de01abf8c",
"0x39c2ffda04fb850f5e70d97ca2d93fde05b651b310b1d27dc298b9fc888d9c0",
"0x1f2ba53bf1c99665fd6f4e862ac08899a41da938198153e4c638bade14719a16",
"0x2451b8e4232ce9c809e439b6eb5fd2bbad8f51e9bf0429a33bb0ee95b7890719",
"0x171a629d2c40364327666e0c05ce3097b2be05ea5c75123fa78851ba178980e0",
"0x8c9b34df311a18764044e24961a95d1b2dcac3c6df9bbe0480659611db8f137",
"0xb22a3e321a38a3801404091d2b160fc133530e8b7a52d2422c9f1a8b252bc20",
"0x797c435ebe5c845a743f87a7f0d267f33bfbafc9f1689c2796b392772e7d301",
"0x1e7306b31a137fcdfb389fac64b5f1ddc6147bd1cc7f30f11d67870454165dee",
"0x112f01c5aa8b6ae92e2c8ca7667f5d21a0b1e4a8ce00a2ccccdc459ade9b019",
"0x219de6b42df30699c66921c11e899b888e9ed317b586abed36fb7692b1216b1b",
"0x86a228ba57047dc5bbbb04bedef0d87c1a78cece6aaf9b698117b292705de04",
"0x14e98432357efd4cc323da2a344142e74f2aa117cc1aa4b559ad83e541ebea49",
"0x1e6b895858694eecad78b8b88d54217c879d8b86ad928190789a09147168fc96",
"0x15e37faf1d08493df2b643576e177c9fc704fecf164b7327481d32313d55d161",
"0x85d0f567ddacd3f8e5e00c4209cd9b296693dba11d00879629b522270e798ed",
"0x1067df821f616fc9635104d5b2150f831ff04a1f2b1399db49673e80c5c86db1",
"0x90332160427de3eb055f9b8748f7e2b88c11f415576e72e4e087416544557ba",
"0x2dc94749388ebd876e0d44ba0105f8da36fce0d45831e4255092d5c7f8b84225",
"0x118c857f29e5a253d50b4d24d2d0c29b82c68ac4ec31e88bc43c74a9487e795d",
"0xaf67f0d07a2fe41c72a457c92e95458a77db9ad0a28768b62b6681adeb11579",
"0x30104204ad0fae366f11620b2f12ee6bb7c141e2fec7e29d963e6fc94f8c828b",
"0x1976ac8ab874f49ccd63235f4d81cf0032ce66d53b0d9a910da3b8d0524a5a60",
"0x2c316de3167edeb721ab1270a0748ee7f77ed7a8a7c727559436f6fb9313bfa3",
"0x9d2011c83a4c911f4535e741f79432b5f2a5b8e53561d179496ddb63cb759f0",
"0x135bb87773cca2191cb5d22ed48e633d71149119bdee6569623af883ed734294",
"0x2d47ce655296753999d0d8cabcf056f0047eaa166f5f8bc3cc5eb601ed2c5600",
"0x12b3ae2f8d3633702674a4ea2e98ab5bb186da55cb7f5bad038be08a46f8f8fb",
"0x1941673c79be83924a43b0159e5f0919c3b4bd334df567e23a109d5ad7093a96",
"0xb524c1bf3c392285d49a42d8bdab4ca454514792e2abb5bb4f62c902c9b9190",
"0x1515ed77226a3311eadf3fc8f035c016fd3705a08b8a9dfc2175fd7bf58eb8da",
"0x64862973bd0b7b75f7b4624a84d680fab7da9b6741aa5d6edb76a9d0c40cbaf",
"0x1a23361fedfc5e494b0b2d4eeb80c93f8835a73100bacb989be5226fcf0df55",
"0x14752381dfb966594721cd9486750a4f1f8e337b06810938317563386d4e544",
"0x4a09034e0f69e26581ce66e097f9b5be008d08be687b8122540f2e3262914ac",
"0x10bb764a96bf402a53785cf2eb4af7b05e20d89ad0658aded12c1b581511538f",
"0x1499cfd036b8ae372458561c19a59aa635054692818f9b3234707168298fa14",
"0xa8b3b48ec68bc2fa9e34521099684e72258264b7796eaa9bc2130ca5f962fcd",
"0x1a46e59c6c21c9d54b9b231fc1403379d01e16680bfe9622dcc01555be87487e",
"0x9569a38ffb6c33d8ebcadc6029a3ba8ea8c8ade1a7874c3f017516c358cc698",
"0x16a9c201d574004d0276db42e7ef31592cd49a56b9b768ca73c7c6d1ddd6a2ca",
"0x19c05f9660f2cb6b113179e32656fe2b39c9307c0d1e9b3e680983e27bc941c7",
"0x29f4b811dddc6725ee59fa5a28af545cb21f15cb7fa6f9885cb7d6a405a063a9",
"0x1f99271ffe92b27fdf561572e5f6092fc06fb7faa9cbb2e07608067cdd529b10",
"0xb9fdcfdc7dfb8724957f00327ddd9372f8fceadbbd41583b66726b252b6c089",
"0x1936f5a41ce7135c9027047ec1d759bfd91ca70a62324400f15a31debf179ba0",
"0xe5eafa60334d7cd71251663f5b91dfe10ec503a1b2fe5b3886ad9b10662abb0",
"0x18065d065c304f7953231240f544ac51d897f58777c69bb9d1f8a486a10c177a",
"0x2678766be9d2c5251479999760ea8d6fe4a1525095e312fae3ccbaf689e7e809",
"0x23750f77af3988a0600ff868b61b9e5e3d00de0f8759612d4af260cf4b113ce2",
"0x7318b129e4789d21bec7920ba354193fdd6fc628eec1513638528431272925b",
"0x2a7bad1eb2e6418a954869513a7a531c58f0985c64aa07db26f8f7949fb0861d",
"0x1bab89c7aeb8f0f1c55bf1aebffd937a520cf6330add93cc33846077c83a987a",
"0x1552d5985864ef2844ae3d20a40a368a4e032a4ca49d8ff6546c450cb1e079a7",
"0x4b91151b3b35f11f5996365de43d43fe5476e5bafa6f711dc30face2623d320",
"0x7568334c7a0595b5ac2105b2b5f738a5df0931aba8576b970722d4e45c912dc",
"0xb162e458aeee52ea49ad59cd7b5fd2dfda24fbd9de8cfa1cdf06016e9d171c0",
"0x2cef3248eb4dae55793e1bcfa553c9315f6b78c356251508e79af7cfd8ad95d3",
"0x15e7245ad978573a5e2b912527de7964cd4add05fac3654847cc0b6edecfb9af",
"0x27c471daf0598daf80d02e06c8171f94dd4b689aa0bee6a68e57b388ddc52155",
"0x13cfdde932c2d8f94bdceae7ad7a0ba5d545f2ac20a04f7e9397d67b942b09a0",
"0x19f9a64fb9d109936e840d1cbe108c9c36eb46d237cdc8462ea8267faee7e8b7",
"0x14169ccdf08725826332bbd522d72ef94b5dc96d07a18359b0cf770331224d67",
"0x2e8744177cd2849b77040421907fc4a9c356c4cd02ccf32dd8f05386ff3122e2",
"0x1507d5deb9bf6bfa10e2b432b56daac4ca62d302fd8e37a021ecf111eb42018a",
"0x26d7097b3269c5d618a95bafb9b128a872c5c85d770515b2815b581e94c8b9fe",
"0x1c7ab275f1c221bc248d8498dbb05c47f41b97fbdb637bfe155cf1e75849d476",
"0x2673077405cc8bc1e0d88920eae1a797d7a40f9999385be0da776c0326b9206",
"0x23fe81be9b9219be0e6312f29022c7d0cec98da3c51c959852d951d6f1cb638b",
"0x10ba3c183fb3890c360fa562760adb456b01949ef7151ed8ab8103f31c7890a2",
"0x2d5259daac231ce0e74872c4065e14db8b32679927872701bae243f6842c34",
"0x1a637c2706a996ff57c037f4f5ee37501fb3e7de4d067c4c0f5ccf30f9d82a05",
"0x2e6067c558d96831add6dce3f7668546f96cd84c4e227cbce700964431ecefa0",
"0x1a0c5d35fc732851917ce3bd13a7f28f75898537f6ff8eef1a1ff41b4b7ae935",
"0x2edc867095cf941cb1ff7887926a4c8c44ceb1927172e39b362d2f7461bb1b84",
"0x2f2062a65c3fe731e2aea024198e417627f38d6cd91e0a4874a856122a9d965b",
"0x261a9965be69de3ffd74235c3a239e3e374cfe12090f6929e7c4442bfb8b61a0",
"0xe51a7f2109df256ff814fc310a3b08efd5bc160698af9ae219c26603e84b586",
"0x201537485c818bea2b1bc635035c7f92ac4be93b1a732a259e5081c6b10822ff",
"0xb1dc66c364df6ca43e96ce916012cfc49115a6635e8a76a13c56f966991ef4e",
"0x1b70f07090ddb1c480c10557d2f818c2355a0d0112f0448f457196db0ef585e4",
"0x1941694438a139d8dde10865876403207f657a2883117cd3a8cc2e7c5d24f32",
"0xcf031701838c4ceaa490cd36e710d3619ce54048ea826cf23a2c456f245e6ff",
"0x132d7fac73535b2c795ddaaa3a69281704e85097d78ac6e8b1e9e8a7721863f7",
"0x4aeffca0f9922fd0379b69a7fb710b49dcd05026a3f2576a48a6e04f91b630f",
"0x25f5b5001f87bf2581938f3ede0c2a7a35141c7abc3e5bb7bb8601a22a3cf43c",
"0xe7119275a25b2b8a4a6aca534650e84ec72b490a41384d44975ed8c80a2a28a"
]
],
"M": [
[
[
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0xcc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff9"
],
[
"0x2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e8",
"0x1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c8"
]
],
[
[
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x2969f27eed31a480b9c36c764379dbca2cc8fdd1415c3dded62940bcde0bd771",
"0x143021ec686a3f330d5f9e654638065ce6cd79e28c5b3753326244ee65a1b1a7"
],
[
"0x16ed41e13bb9c0c66ae119424fddbcbc9314dc9fdbdeea55d6c64543dc4903e0",
"0x2e2419f9ec02ec394c9871c832963dc1b89d743c8c7b964029b2311687b1fe23",
"0x176cc029695ad02582a70eff08a6fd99d057e12e58e7d7b6b16cdfabc8ee2911"
],
[
"0x2b90bba00fca0589f617e7dcbfe82e0df706ab640ceb247b791a93b74e36736d",
"0x101071f0032379b697315876690f053d148d4e109f5fb065c8aacc55a0f89bfa",
"0x19a3fc0a56702bf417ba7fee3802593fa644470307043f7773279cd71d25d5e0"
]
],
[
[
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x2a75a171563b807db525be259699ab28fe9bc7fb1f70943ff049bc970e841a0c",
"0x2070679e798782ef592a52ca9cef820d497ad2eecbaa7e42f366b3e521c4ed42",
"0x2f545e578202c9732488540e41f783b68ff0613fd79375f8ba8b3d30958e7677"
],
[
"0x277686494f7644bbc4a9b194e10724eb967f1dc58718e59e3cedc821b2a7ae19",
"0x83abff5e10051f078e2827d092e1ae808b4dd3e15ccc3706f38ce4157b6770e",
"0x2e18c8570d20bf5df800739a53da75d906ece318cd224ab6b3a2be979e2d7eab",
"0x23810bf82877fc19bff7eefeae3faf4bb8104c32ba4cd701596a15623d01476e"
],
[
"0x23db68784e3f0cc0b85618826a9b3505129c16479973b0a84a4529e66b09c62",
"0x1a5ad71bbbecd8a97dc49cfdbae303ad24d5c4741eab8b7568a9ff8253a1eb6f",
"0xfa86f0f27e4d3dd7f3367ce86f684f1f2e4386d3e5b9f38fa283c6aa723b608",
"0x14fcd5eb0be6d5beeafc4944034cf321c068ef930f10be2207ed58d2a34cdd6"
],
[
"0x1d359d245f286c12d50d663bae733f978af08cdbd63017c57b3a75646ff382c1",
"0xd745fd00dd167fb86772133640f02ce945004a7bc2c59e8790f725c5d84f0af",
"0x3f3e6fab791f16628168e4b14dbaeb657035ee3da6b2ca83f0c2491e0b403eb",
"0xc15fc3a1d5733dd835eae0823e377f8ba4a8b627627cc2bb661c25d20fb52a"
]
],
[
[
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x2a70b9f1d4bbccdbc03e17c1d1dcdb02052903dc6609ea6969f661b2eb74c839",
"0x2f69a7198e1fbcc7dea43265306a37ed55b91bff652ad69aa4fa8478970d401d",
"0xc3f050a6bf5af151981e55e3e1a29a13c3ffa4550bd2514f1afd6c5f721f830",
"0x2a20e3a4a0e57d92f97c9d6186c6c3ea7c5e55c20146259be2f78c2ccc2e3595"
],
[
"0x25fb50b65acf4fb047cbd3b1c17d97c7fe26ea9ca238d6e348550486e91c7765",
"0x281154651c921e746315a9934f1b8a1bba9f92ad8ef4b979115b8e2e991ccd7a",
"0x1c1edd62645b73ad931ab80e37bbb267ba312b34140e716d6a3747594d3052",
"0xdec54e6dbf75205fa75ba7992bd34f08b2efe2ecd424a73eda7784320a1a36e",
"0x1049f8210566b51faafb1e9a5d63c0ee701673aed820d9c4403b01feb727a549"
],
[
"0x293d617d7da72102355f39ebf62f91b06deb5325f367a4556ea1e31ed5767833",
"0x28c2be2f8264f95f0b53c732134efa338ccd8fdb9ee2b45fb86a894f7db36c37",
"0x15b98ce93e47bc64ce2f2c96c69663c439c40c603049466fa7f9a4b228bfc32b",
"0x1c482a25a729f5df20225815034b196098364a11f4d988fb7cc75cf32d8136fa",
"0x2ecac687ef5b4b568002bd9d1b96b4bef357a69e3e86b5561b9299b82d69c8e"
],
[
"0x104d0295ab00c85e960111ac25da474366599e575a9b7edf6145f14ba6d3c1c4",
"0x21888041e6febd546d427c890b1883bb9b626d8cb4dc18dcc4ec8fa75e530a13",
"0x12c7e2adfa524e5958f65be2fbac809fcba8458b28e44d9265051de33163cf9c",
"0x2625ce48a7b39a4252732624e4ab94360812ac2fc9a14a5fb8b607ae9fd8514a",
"0x2d3a1aea2e6d44466808f88c9ba903d3bdcb6b58ba40441ed4ebcf11bbe1e37b"
],
[
"0xaaa35e2c84baf117dea3e336cd96a39792b3813954fe9bf3ed5b90f2f69c977",
"0x14ddb5fada0171db80195b9592d8cf2be810930e3ea4574a350d65e2cbff4941",
"0x2efc2b90d688134849018222e7b8922eaf67ce79816ef468531ec2de53bbd167",
"0x7f017a7ebd56dd086f7cd4fd710c509ed7ef8e300b9a8bb9fb9f28af710251f",
"0x14074bb14c982c81c9ad171e4f35fe49b39c4a7a72dbb6d9c98d803bfed65e64"
]
],
[
[
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0xa514a5c227f4cec95dfa029e8dd124c34895aa46bb27c0911f3780d5015540a",
"0x278bb49a7b4e44aea46eb0f882cb692801a6e60fdd5b5c23c63cd65ccce4fe0a",
"0xc399e9f67aa40707a203feefb0b958bbdadcec5ca34901d253d026a2419f6a2",
"0x1d6b3d5f6ea369c26f825d2362933eaa31ea35ec0a77c1fbd9e01ca1523e4432",
"0x24be510095436206dd0abd0b0cbb95c883ab304aa52598b1a69306ec981a688d"
],
[
"0x11924f02fd19b09255aaa1cf46ea0518e3d7bfeef47421609491011db0bd0b02",
"0x192e16d17d956b257b85a652eefdf2ee09589eac5be80915775723d2cb1da06d",
"0x63edec1bed831f506af8db648d6fdea145345887e8bdcff109035a1d9b674d7",
"0x83f0df3f1a0351d0330ec3ff602ca8cc353b7f6e762c7107184cd7b423449f6",
"0x119ef188bb3dd0d32306976c19941e8664be687e7a69692da27da215a6f06d40",
"0x211610e2ad4a377426fadf7068b0c1a6c299a164c1c1a603eaed944870d0b9b9"
],
[
"0x247fa7f022304a1994ff505456c2201ef9b717369498d3ffce446601ed9df845",
"0x298ce0c1e3113bb935c7058e7772b533b1aa9db0c0926bdc8917e5605ca3ac10",
"0x1baef1cb5509b526a42061fb53657f99b3232500e855192cbe8c940e068c475f",
"0x1a6764d5943fc4a720b4c0a19fdb8c711984307287a58b9b5f9f5d58212cb263",
"0x2d9e0ab5c06893dfdfd03481381ba86b6e6292df5609d71f2c64b2d9a79f809e",
"0x15a67d981041b1f6f09f3f9ebefd864e779d3af08157786ac077505e50ec79fc"
],
[
"0x3fd7b19ef2c861f22f77ff810f54e277bc94eb76c02d79d986be3dcdf051c3f",
"0x94cb4e83621afd271e41bc71727f0158ebd612239ac9d698b17fe4be05b7fc8",
"0x1324564ac7bdf9e22164e9858d7fa8e368b165eaea3daf4eb67ee59c0df2e5d4",
"0x11a63a26feabf87fa66bde66cc25a922c96382d76c6a7ff48f1537beaed683a",
"0x25f16631bf77060f7ea34087c025bf135784319ef08cda2e31419ee0a529e658",
"0x49327fa79d28c12a2c82406947f77f06775b0287468b3136877701dbe7c9598"
],
[
"0x18bd41239c3e71579a677443ecffbd555a81eeeea69352a68b67c8563c0c2a06",
"0x3d880395be93c27d649af5fd142e76b33918cb8841d5a28173bd5cf7d328791",
"0x5761b8c6aecb1a8ca4ea4dfc2c8376064a4a8004ceeda210a55240562ddc13",
"0x8ca7b64657c3548f32bef5b63ad24288a41c0b251099ad27f9434307e3e64d4",
"0x144c7a11da5a7c5dabae3f33fbd03cad86d18bc594c79a497ecb9894edb554f1",
"0x230940dcc5232658ff9c29697a3fd416d170e8c998f1aa85dea0c42d79f951aa"
],
[
"0x2d78c3a5d28de9ff35bf0a257635196e5730ca7f40493277078cd75da8b4ebdc",
"0x28eeae6b5866ad68e443bbaf91680db7d7e2b3037e38fef61b42cbccffceca81",
"0x10c9e283159d58cb4cb2e35fde83a3ba1fdc28002ed9963d2a99f186178a148d",
"0x1998270471e9361955446b0cdb8bea915ec0675f1cd648ddcb04303507a4489",
"0xf971162627723f3feadacb28b0c104cb8f74de508752fa8d7c0db2af13de8ee",
"0x1b121c049cd1159e289007e0c9da9995cc4bab4c26fb888ec3972a8a2e656964"
]
],
[
[
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x1fe9feb5c7f7c7a426bff032cd6a3158278b6c6b2cc57a871213fcafd6427989",
"0xcdb2db9e4f9d732d217c5e3114821165d49e5a2d41556bcd53d0c4d433224c",
"0x9664216ca565c1a44fc2b98347ea8b36904b3877f2159dcc999895adeb4d70b",
"0x1463f51d4a4cb1eba16dbc115566aa48fe77b43c244c9988a3c658d2f56493d6",
"0x214e41788bd2b990347c7f2a8f47612d4dfceb1a1e6da38165873df66ce51f59",
"0x548541724f64e20128260899abe8fbcdff184a1957a9385fb715923bf0fc79d"
],
[
"0x1b4bc5885d1cfc8eb691875300db5a0c7362ae381898acaf8b63cad04ecb36c6",
"0xcc7eabb154aa7955eac47a19f6437a2b8dec0fe9e5686150ff6e88b1a7b4bc4",
"0x12f3bb29c972793182123f5c49306e16a3a787c4bcd9c798a131b70856d1cbe",
"0x111fd8dfce2bd3b7ba0cfa93e20fb685abf76d77305857b8df30914e4849ecef",
"0x16afd8f4c39038b8006a59d292aea84731c0f83832a61b82250ed90118e8fec2",
"0x3fba82d3f783620873da94e9f4e84c8b529d76f54e4b5d7d4805272af9b9775",
"0x21c5e25a6991364e59a205e5b01c811deeb095680a72928369cfd2de71b14f98"
],
[
"0x8a72fbb55dde3e93c5818571a424a54953695029eedbcf91eaeb012751c7f83",
"0x393efd96399aa0726ef9af79be8b6c715e429906ca0d15076b5a990fea75ace",
"0xbba9006404c5ede82b527677daf444ed43fd1e0dbdc5528dd2cd1f17ad73481",
"0x19f53c0a592b3ea93497a511e56f66753598265b1ab6774da48eec04e4d93426",
"0x2296361f3bf154efbab996921936e9b1dff8352711f958638172055333e07579",
"0x66782fe3e869de2cebd7ebbf60fb435785329dfb12ad9bd1b4e46ed36289511",
"0x11c5cc53f6338c825817aff7792a2efbce8fff171300d41455a2edac37663d02"
],
[
"0xf95359a1f6845d4921892f83e500bbb1b3d3763d8fc762400af039b0abb83f5",
"0x871233835b752ea030cf8a4f43771296eeb33f697d1b0825db47d39ac9e5955",
"0x17e4e73bf701f88d219acf1ca6390cc1e17c9f84b1713820837ca070be84a2dc",
"0x19b683c39d3b002fc3523b7bee5a60148b1dbdf18dd1c318e6a541e8cf66a174",
"0x1c3160ebaeb10f809f69843cf8d5bbaca198d1f8e3439be29beb92d909ec891c",
"0x1c5cd6b23ef336be01efa37a27e6b7aae5d1643fceeb212cdff51588835fb537",
"0x27a0949fdc9f10495c4ee7214aa0edd2ad8eef68f577da8b96f9d87a39504bf9"
],
[
"0x16f01751ce985328afde34d81619defb43e6c7b5dadf52d0f82472fbce7770d9",
"0x1a02798f047a51baaea34fcfb26ca6afe96a5fad1d2db4270497b6e6504891cb",
"0x234b8a077ef52b53a343b8da5b20cc358ad60760dd60276d485015f73d53d207",
"0x2547113a818779f13e3448719c7ef100b8036bb3e882dd5e6456c35311c1bd5b",
"0x94c66bdcff54382cd9213abe43312edb5b4d414c6e09acca24912a7635404c6",
"0x2f3b4bf0f105f88e27248af094e29feed9ff3fad9a794e15830bd2b311539453",
"0x1c7fc68f3fbde4a23c455ef0d0dbce0ce556a0194e6d552c0455cbb5b0c230e2"
],
[
"0x1c391626328457fcafa629f3e6d33e2555e8d885e3c07cecc8af1f4d56596417",
"0x55665d76df3cd0fcb713c234ea79d06a31d6e3e4c3bcc657dba4c664d5a0da0",
"0x2dc3fd77394b7b5ac1cbd1b46e6ded5b835d7217a4c50a487ae9a35a7fd45d9d",
"0xcf148f8045cdbe7bb1013f72ebd4126a3e35cba9a970441ba8d5bc76943b0b",
"0x2e883bd408c4c826d004ff777d7c0938434ab5bb84f3420e5d94b853b1746f89",
"0x2f4085eaa9f80a69b739fc23f2fe4057f64729b311783fcfab3a0a36fc1ff432",
"0x11d0f56fc00e7d85b3a2939fd33991dc8abc1ced0c3f3c530cbfb4500d63de9c"
],
[
"0x970f671b9ba35e3e3c642d1e0b8032023ed5bac91c2c1056f03965a42c5297",
"0x26ee9691a638edc7c91887e302fc55e8e7758286a44845ad88fd7de3bb1052c1",
"0x1668477640fab14c72b1c16ff0192e48cf882f12276bd12f97f82c6ee2e61e48",
"0x3008421eed767a093322a09c3733973a038168cb28cd2e1f709076c00b869599",
"0x228af6d425e91a783dd18fd89a6b38bda053f2f23c094b875f27cb3abba2030b",
"0x2363603349e94f520fa1f98fe2507f6aae361934078aa59a16214c088185638b",
"0x1b2e9d20d9b55deb048cabe1636f0e96363bec886679cbd91f332fb2bade44f"
]
],
[
[
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x254b8126f45243f14dd8211df41fe5516b35952d56c62678c148e73cdbad3718",
"0x270712f18b1518fafe093660f492cdbc2fb70ffab31d8a4d8a1934be68792369",
"0x2bfc3981a249aeaaec4ab9001727d32d4e6fe75598ee964fc85cf30d50df584b",
"0x16060a17e1b11f851ceab20464572b3d78d582ea050014843101485f65ab723d",
"0xe73217a106c402e4c6c166cd9ef1fd2a0b16ac1cb43646bc1c726f83177770",
"0x4b959ca07e7182ca08f2351a03545bd7ab676f740b02331637ea1434c8545ec",
"0xfc9cc95222f92715cf7476010225e14cc38f314071e50e0f3bc9ec674a8aacc"
],
[
"0xe1f4e4d26e9da5f8ee3deaf48b493610be61d7d3db1d9754feca30879adc644",
"0x2089c597feaa4ca9a202edfbc823763100e294c9e33000e513b2a216491d474a",
"0x107cfefa1e864045a668396526ed9f675b2bbf272ca635d8d3e8801099bb97d0",
"0x21630ec3f236ed219f73cc617b9f8b267dbee99a63c528544ea31b27cde49fb",
"0x2741203d66c523c7639ea713b20346119c961cc1e9659a458af74cbee16d71bf",
"0x17b2092b0f634576b654c6de21a1a8d812bd4c01559fff83217129082e2b2b20",
"0x68e8e63411df2b3a9d7c567f66419a580d3ba15bbfdd1226effa3fd6bd47b3c",
"0x2f5a2a0cd0cb24896c94878a8106d57e82c68dcf1e209167a45ae9cf8570fed2"
],
[
"0xc298c14356a5a7f226c5a549e59184900385aafd8ea41d9746729964ef75f34",
"0xddeaa906cb65f3e9c9bea6344dda8db90c253c0f7f99ecef88786fefe0e5cc3",
"0x4b96a296a35acf415929b8784b6bba64a630d29dff28b628fc98ef708230b57",
"0x28890a03199b727fede5ed0090ed69494c053c97930fbb6c52358b0d7d104c16",
"0x2208c5004806c7aaf58314590bcbea16168fe62ec0497afc6bdd2938c12d9a23",
"0x2f24d609cb23720eda55fae29ec6f19902c42d8bf904fb656202736d97b2eb69",
"0x344d0c772c2f053664a7b9266b19d48ae5d2ab3d1c1a18150754ab4b836afd3",
"0x2cd19b5c55bab1809e52cc9fc1a038c08935da19cfc563e7048d6bd1970a0c8e"
],
[
"0x19e070982d3ee675e1622ca20d13b2375e528b676706882eb8f1afe1c5045ea1",
"0x1114c9120442750493d999d4dd45dbd4f3b75ab183209235396ce83d8ee9916f",
"0x1f0465a9c133a1c6805d705be6b3ea9912a2d062c34dbef92de46955b83e7bd9",
"0x1b80f3f439396c2f466b8e9b25765a014970455a1beaed7a6fa308dac75fb582",
"0x1c01f6db435dc4885eef9cdfed193250b9d3eb4cee366674b07bdd194ff349fd",
"0x2df183fe2bc9b8b75773fa961c8d4117e582a80b656af5c58763e7024ea4189c",
"0x7e0cca1a35ed15fbdb619bfaecc7a9a8f4c51293927562acea8eab817c6b84b",
"0x24ff2986781fe40ae61e8f5ca0ef17c5a5ea7bddbc127d431547c1f6a8f5cedd"
],
[
"0x333e2923992e89dee570a650125eda75a20a72e69e10863a19d17b7beea9295",
"0x2e8b35a8c29e639dde8dfd49b4b347f00ee467863f6efcb355fa1534ef70783f",
"0x27a2b7f5549e5eedb90105c0f8e20f0571ab7af0801f1bdd23eaad91f2229a13",
"0x2a4bbad245a33e5d9701537f751410e4ff297b8f1d1d9098fe9c518c261a1b0a",
"0x1f0e36c2cf9ac2c4388e74966d9ee7d1a0b3186916a08cfa306f6bb36d21e548",
"0x15fe963f5bd0d92878c10a894e118018db82e63528afa4d4703e9881eda118d1",
"0x222edf3e26bf74b2f503983189201d4ee8e6d6fad341d7ff50748dd739749df6",
"0x12a87d0c5419f448419840e5e5a92d276ace00963d987f2a1008913d98a27114"
],
[
"0x1944aac72bf6fbcdec04361238c3c4d9510d5f07439a1b6ff41f652990be0139",
"0x20e6cc613ae6cb0a518425f53db1298a7f8859ee20aad08320d0a4f9bbfe8512",
"0x31b0afb7ab2f1d241f882178f7dcdad48591cc67905d651dbcafce94b14d073",
"0x1e431f2b1b7edae4f8cbb5d307bf5131c352c2a215a870d739617f4b017c6d16",
"0x199fc2be60e49e679ec2ede6cf3345dcb3b918e5b3e07c2cd8141333934e178f",
"0xaf594dc4030e8509701fbd3d8995f73126ad72a7af0fff344eee82a31ce77ff",
"0x2d4308b4823b465db653d36818181209d23cd12f844f72f7548d49e55055a601",
"0xaf3ceff2c865a901b9406d5d9b2fc58833d642f46c6493ca030ef595061ec6c"
],
[
"0x27d802ad019a42fd04892ad167d9e83596a730605890401319661675736359f3",
"0x2420dd1281fc0dfac176a752d15906b55f137b9cc320d5d5daa9df3f3d43d3e6",
"0x22e0323bbbdace5fbc74a0b3dedea6e1e3bf10e84dfc71fe395089ac197af744",
"0x255639889a259ebe59f74a8fdf2efce7fde1e3a666b35d8e6ec601d4d0b22689",
"0xa38d163b8a2fa3092999c1797b1af909bd971a25a656baefbdbdfa3628e678f",
"0xb8e857d9fb1d554f3a4ec307ad907de7a436438603af1b28d4e4ee379960ce7",
"0x2e8e67fc85f9b4d00e9e1197b35bedf55afd7300a4c370987c83c15cf73cae3c",
"0x27f42d86842f4d8a8c3aff2f47ffc1e179f097aaecce55bba0b0fdfd5b190aa7"
],
[
"0x2bd05a040a0987ac6bc01f67242d54b7a2c527a970ad2815b273471eb9623e73",
"0x17bd4f2726748d99925af9a2f2929e231c1869428c13b1e397bb0099191723a3",
"0x1eef36d62f3f864eae67c63324e47a6344e33a2d5bfb82f05bef9900c54e745a",
"0x2d0d8a814cfa16c2323f174be2dcbe0c295829fc59bf2a89f13b4ead0eb056a8",
"0x198949eef2b27c2b9c3d699e3fe57da3d5b509c2b670afce400aba1aaa9ed51f",
"0x7ebcd25a10e56693a28155fcdaf7b3519d9e0e08241e21789696cb76ee06297",
"0x22f1bc4ec138b596128ce5ee5b8184964cc262318e17ad21d45c552477f53e61",
"0x2b6b3bc340d4119e57831e4a2187013f1216ab3b639945dd92a984943241f1d0"
]
],
[
[
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x607cd8ff9b889773c9eb68b8a4366469d470cd7c6004106caae95c10c424419",
"0x1da524cff60b64856dc1f5dde0ff62da7b182da26908f6ba6e590adebf91b40c",
"0x22f33eaee3c481e65801b761a72832908f066fe21dab5fa5ec1d4c6e99dd6dfc",
"0x75f84e9c719bb8de8e61083290daff19aaa4337454e5ba804257787470f2f54",
"0x2084be9a57e9adb80303a8dcaffd4bb77adb6815168b36a1d363b38425437135",
"0xb303449f1bf4b92d2cbc26ab34b4215b6dd7af010747a705b2a6e3398882922",
"0xc099bc68243537203f97254f08dfb7efc09de8f96d72f3b3e0aaded45e18b4a",
"0x1c5fd9060d4e0d999264429a5004c165570bd1675b09f977708b1ca48e616388"
],
[
"0x1f8d3a9d2d31ab32d9bdb6375170dbba89f6f8f74d16e4fd02f3675d5fe2baad",
"0x2591580b73e7b5d5f34d9fdc0cf7fe3de7f6a18a255e4376fde3eb31dfa51d79",
"0x2bb4565893b6ffc5799139cdc151158749c2c65db48672abaf24c5b3813c0e2b",
"0x1c5ce77776893d48147444b9f6d66a4da29c95707de832756c739eab8e87658f",
"0x175505391c619b75530fa83e513184381e603d8449d1e070017ee8ec0a4d25f9",
"0x6ed1d14dedf763a3065f27e7a46d7fbf20d2b4e86a0db86692a269767d577e3",
"0x140cdda33bb7a79b2baa851df5ad459e7df569b9f2c3da542d3b8d5b76b356ce",
"0x35e9ecc464cb431cc92c3356e8a98547e843ed1324c1e971179fd1ad9fd51a0",
"0x129f06c930edd36fc2fb7044a6332751a2e3bcdbe756d883716cead6bc7063cb"
],
[
"0x230c694139416f40422d713e13c056c45c3c631b346854523970eaea58a37df4",
"0x93cff12150aecb3465c4c99f044be85dcc1eba21d429132c2260dd3d12ea441",
"0x25081a00fc20ae366b1fe7ea6b09e62a51f6fd377f608368c12ba4e3bf89935f",
"0x2ab8edd22fbe2a1cd3ce9a4212d0efb282ccac28af4d876fc946203070c920bd",
"0x29c5ce97710c1578a0990d862cf881badf10e4f6bde629199e803cd1c426be4e",
"0x1324544a54174cf7b3cd8ffc4b86320f2319d9b88c1779b89b1916018f3fb9b7",
"0x1d18b25aac98b282e10b5a3a74ce5caa169a5c30bae52bba280ed517f3f82fef",
"0x2f35e921dae87f1284c0c8ae737dbdc4936cbbb03a03a5918552fe565270a8d",
"0x14a5ce1603228d6e6fade57c1da536659ba46d1b25566f12c28debcbedc5b4f4"
],
[
"0x2063a461ad06315ae5992a53a14bb598367624afc2833ccbb83af92ca0f6a334",
"0x59116da88a081267dd888204fc6fb79046c3297ccb65f9e0fe0d50b4db44ec6",
"0x1b43719cd10b60c5647c097d1fa84b8f3c12c9c475ade13b388c7ec47240be11",
"0x26e49154acca24424d5f8d29f650f9824de82eb7887329cbc83a56ae01dee4a2",
"0x2caf86cff60521ccc5ec6e2e2c83b4707bb90f948644bfaa8f80b0afcd4cde10",
"0x2e923ea46d492247e12e0a7dccf6620f5eea6629b7532b3af246809398859633",
"0x1ec6c32f513b8f30c7aab42e7d91aecbe54aeb188a84f8ca46bd7e9741b9a389",
"0x23a72c27f4f5e6ea5325d5b368f98b40693b2db1e8ca3d096739753dc5678303",
"0x143617efcdbbc0d27a091f28039eba8abb39392e2a462850b1f9cd8532f5075f"
],
[
"0xc574e628f84b6ba9d17b9d2bfd4747e06dd68cda2383d64ce365927098c046f",
"0x2c948497373514e7d9846dea9ddf5755337ddb661043d6c628cecb8f55173bd8",
"0x22dd201ecbab94a2ee393796fefcca63aa54d9a19ab9c7f20a0bedcfb9d191f2",
"0xbadd77f516d4fa321d1099bc1e51909001591ad9919f08ce9718aeeb2bca4d6",
"0x24f92793d67638b4abfdf48ce3b62ab5d0e1b250dc274d746f2f7d0544185b62",
"0xbbbbb87eccc91d5fb07b6c55088ca514d68ddd93cf31c8ed2d2cc7f23b22b",
"0x89beeb21c346cb9bc182aa2b70f853f1a2258d56893ce5a948d9c645ecbc9bb",
"0xe07b1d22eed54fdf966ffdfbcebb653b5dac3b2a91f50272876efb17158be2c",
"0x2885f2d44be0ecff57d92a4384edb5bebfb585bb23eae2a2ea50806bab8b7bd7"
],
[
"0x276428d88040a3e0f442424d2ffcb8d19becf3fb6ca02c1b5c61b5ddc53ceb90",
"0x2c2729812be9ed432e75709133119cb0a14e1b6ea31c1279b7c3e495deaf108e",
"0xb8e79838cd30707999c621621e77e69c0f433d543b79c668cf379b6623bac84",
"0x23671c5d1fb556063a64b5f664340936dc5ffedd4bdbaa2e96205704da5864f5",
"0x2809dfe24c7fd7cd49b97b27150f4d38a340b60f0733fd4530cd4269b4811e4",
"0x26010a3f5295bb4481310cbca5384a47af0f9905e4c76bf54b870ef0ffefa1c8",
"0x2790643a66038cce4a6488847d8d2da2eea84961f8134b1be36947f803527e67",
"0x5fa56d431d4bd09625a86d3623464dc90bd541ea41748f2026f65025ea9d2f2",
"0x4715db6d86b513d002589f1f9522f7de3b1a8bd702c167559ede97da2c0076d"
],
[
"0x24bdf6101b2f223174e869d6aecbe8ea5b04a14c38fdf1494393cc6fdb3e42a5",
"0x2280d6d4718f9f06b551a988408f0515070e455ed63377e910be087fb79bd191",
"0x2082d5647658eae648936cefbedfad2cd0538572aa6122ca68ccced68f432f4",
"0x20d7202ccde24901d6ce2d107e79e1fd78d6c9398ba7a4996f116adef14def3",
"0x26709688150ed035f959687edf7747ee8ee946b770173dbe50390ab8c08c5f9c",
"0x751a4a4af246255ce412c4bb47fa34a51b8628f3cd902077775c8fa488e7519",
"0x159e25e00326a76f25c1143a5be6f53fa51ccf368d9974cc6d93cce8eb81d37c",
"0x2d6f3e0e98413d5d6a1101b245c9e711bb2e956e27a5870784fd5403b39867cc",
"0x88887966c079d2e689a8d6d7bd913e92d326959bada59b99a653feaadf6c467"
],
[
"0x180fca184150c0e354b4b3a4a075824d4b68e8274943f4dd8b0c64eca25dc68e",
"0x1b1bba125505ae9675bcec7c9af579c5cc83533c9d555be398afa09cbf95d6a7",
"0x277bae2fc597a536adbe9c24bc8ee81731eddb574c6a5142c1c5a48c51f82e81",
"0x1d86496995f14264e7a054cc8224900368775c3e5ac6b5f54285f4a73c2171ae",
"0x1e5ae4c295ad5a17e00f973f136f1230a6fb85637631b306d3705f80effac24a",
"0x28d2351619ccc6fb31ad4206e2c064bf4d9b2292b28463e53e4771f10670ddbf",
"0x2486b884370d49a003fd041e800f0a898ab61b5e947997461ee3284241f3baaa",
"0x213176bc1a04939fe7d6bc30691aabd6152ed24f309bff3939a0d91d54c67a66",
"0x12ded41f8047da3e6c22bfed3ec5bb52d027e560048db4c0f96ca9fa85e17bc3"
],
[
"0x10726dcff87299c8532159976607633f1bc2ad24453c1bab26b726b82d756ebb",
"0x17013257716d3cbae28e1c272cb6aaa2844136049ffbca05ca201523032c64d4",
"0x30354c9f29c920c05e99d7cc747510e76f7fa69a71594a290eae7293c5a48441",
"0x136961746d34fd196025173c4d79bf8b3d1d05291c584928d97258fd5fb4fb4e",
"0x2310e2337e4d53c1635da18a2722178d55af583591bcc317eba842df247deaa9",
"0x1815e4f7b40a7027878640a6cdc4b2854300cf6fd4953c2ac2c77625ef44ae04",
"0x111efc136a9dfe0ebcffae8943e679cc0fbf62fd0ce03b409fecd932a8281b10",
"0xa5a1148dad4562eab18162b3914b64d5753e9617a5154e93f7e43e6860687ea",
"0x1f47c67a4325672f17b8bd1ddbd80e4e9e6c62419a9c204cc7e8821892431aae"
]
],
[
[
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x1abb95b6e33243a050e563b5c4fd059de5513ec28994a6f60e57c98d3bc8f586",
"0x110d213a836478aa301bc1fd4edd388507d87745b3abfba5bf282afd21f7242a",
"0x18edb2d105bb53b768ae0137850dc2d2bf6d1303a1f8ee4aadf76d8f81990588",
"0x1e53e92df6c53ecec4c0de5b07dc4c9a0c5545f2abcc1fabf4ccb84a0a6e2c27",
"0x10fcb817e10f69f7074e64c393b807cdddf33c84a8b5cfe33f44b73fe18c0e36",
"0x2b1d8c11fc652c593543b6f9800bb7d0c9371dedb96f08bbbccffdc6cc44db98",
"0x19f473e40c05676d5f8d51e11336e9c65cb32828c397cc8125f1dc667b6cadf7",
"0xfcf3a4d9c6c3392de1bdfe25cfb86817ecb80c51be17d47f79750201f1fcd01",
"0x23b02d00fe2634889673a7d04736fe15b9f62652b1c0626a19af8d6085d70822"
],
[
"0x2fe429db8068e61b82624f25766273cd9fe6368ff097eab97aaa09be4c630e27",
"0xa5b604c958bc90071ad10618b1772599e0c8dddfb641131fef39daa58a39923",
"0x2cdee0c635a4fcd9549f0f91b4f4a9b628aa7319e2eaa094a693b38b5cf9a242",
"0x2c962d7d54a98c3a82a638d8c82450813f42071a17c6c05f470b44958f57ef15",
"0x2bc761185f59efb7b67bcf1d3e54da00daea067fe49e3f1d9334e5470438b454",
"0x2e450d1fe7773c9889a0be55e44453bcc844c94b56fc0bb806eb9982ac553428",
"0x25c0f87c946f375e341f72f6a8dd63a94e86f4ad182715bcfcbf2b28df6b4a0d",
"0xbfe6fc08e2a2e1b8911ae065b985388fcd105a490a4ab943b25558cf3d054b6",
"0xc182e438257c4ad7e7b79c3b68d60984e507ac597cb47dc31d913a7a540fd9a",
"0x2ff4d0b8798a82667793533730083c25223d589cdd079362f1e8c2e01d54476a"
],
[
"0x2e750867942439083365d21fe760c7dfec9e3593c67de12a4255c6b01648b690",
"0x24e82df5873953792baca345b7c19f61039adeb1190592bca18cf4f907c1a6fe",
"0xd60f0585755d48577b465746de8e286e49925150f1784f29fb6b96dbd8f0ec",
"0x1f495e93014314988dace5e4e867f5109e09fa00fce87929d1e0ece95a449345",
"0x124331e0ecb1d9808a1d91efaa98950abe930c46fee5a30d5ad07976a5bc0263",
"0x2f421fcf54d77dd38930cd69076f9baadd3d3f1947371215a66c894d637e89b9",
"0x543b2bc66f3b2d93d4c1882039ddb37c70c0b437ac23ac5bb9868e6df24485e",
"0x203d9ee6462a586914fe7dbfc1bfa29773b7f9b3d63aea4120c601129c16660f",
"0x25a1ecbd7e7893f646f35d3e07ee997c94354737884fe6c26ae8155760db8aa",
"0x1d897f60e87fce5ceed8da7f2f4a63fdee7ff9dcf179c08e05e9e5cdd8238ac7"
],
[
"0x23237985a96b177ff7c01486ab0d603d29991b8324abd6b07dbb96f5c21ba17f",
"0x10e3349eefd3a112417e110fd9e832078e54b5f4537cd018aee3dfbb90541581",
"0x2168dcf216d8369a626ccc61453236a389d02519f3052e87eff9ccb8aa299c46",
"0x262903f36acf0dc055f610397df0794fbc30927ef185c6356bc33e5c31faef9f",
"0x46887724f29321895c2ef8bc0cf545df773c04baa097c352a4165395cca786",
"0x13276081db012d1d4f4b7dd2d8a2f8a5180d2ecc33854cdd35f9ceb07bf40d53",
"0x2dd117218538e8acb0301eb40adfa2435f5bffa8028ff52f96a99d77fe927066",
"0x1b912abf2e1649ad4834ca5b2a3831cc9c207d4d08e4bf274a79dca80e52fe24",
"0x20135ff263867f708ee0275170cc9788689c088b2933a361c775cf430748ef1f",
"0xba6d4ceee2182d3f2ab2e4a3ad08fc31f7f4cc0fec91ad53e92bf8ada3e278f"
],
[
"0x15ccec857b25934ffd429af92c910db31d00dc1c3fb83745a31d8131ea5baa85",
"0x165adebe00c7ba019499018c96f5c5870eca5679c90c843d9527184a525fcca0",
"0x3530dd962ef23dc16f79b28c1fc1ddafe9458be15174cbbbf3a806de5f63cef",
"0x1b7e922b3dd503e6441ada966c8b3ba7b908cb2b98b5fbe1e4c2fb982455baa2",
"0x247460ad4580a18639eada69b904c91b19f7d4387435707696c40bac3bfbdd33",
"0x144d5be38d44c5bf8f3c5735334fb1a07c13702d86af39ba0b4220ec9a7568a2",
"0x269b06b31e89ff132daebc200efdc8ab068136fce65f2fc55a1dcb939b7fc6f5",
"0x62caa3c9fd39b69864faf701dc8a4588571cb31bfd5c9c3c59dfd97e99f701a",
"0x20e160f772998a2f7d0064c7efa15884ebc6d8b71821cd5336e2df14341c95ee",
"0x5ce94b8e9a60b28947710461d87c7757246266ae8fa5d3af3ea81776b5b8c07"
],
[
"0x17102ad2d98043e5509e76c331e6b22d5fb62d074760806aa675764660eb56d2",
"0x1fb81218feeedf4e7e0e33dd8ecbe62d65c6b7d4233f32e073571ff862d89c3",
"0x1cedc6d4e1476741c1099557e58e642c42892aa36e2d0a793f670781a21b0dbd",
"0x1a88ae2fde12ba32e5f4eccacf11c25bc163bdedaaa8824474cae5869e5ec20f",
"0x265412a4e3b5560aba502d20ed833deff707b7d425ba3c09f3b6392b6f1f4339",
"0x12691b599d32edc48ae99c7a73abd59e5b18f4bf773fa1051cabd2c49aaabf6b",
"0x20d4401cbbf92877ecf616d7d28551cb0aec552fae9518dcf9218c38c1a0bc90",
"0x138c03a2ecea183cb8f265eecd7e93275b0bb98297c1545a72197dc6ddd9335f",
"0x150df11291b680e3ba925a0471c7fbb30e704ab4b554ea5d8c07b70b2b96202a",
"0xc346b046af03cb9048c29353e1107d6b75e590bb2d422ea83c09a5da1ba0c65"
],
[
"0xa4ecaabde9d1ea11c81dafa8d5d4869bee7ad0bf4eb78397b71b8f989cf9812",
"0x1be2802fbea51003aafae82ff4499d1158377b108f8b020c82b8460a8d603afa",
"0x269c8c139a4f61e16bfaae9e8bbb1c69808c9071083b0a339dff9e4904b443d6",
"0x23407728269c70fe712b021915059dc8dc2124ae648e2cb549fc76362bc2b97d",
"0x2ad06fc9f81684542e0458aae19c0a7c18be94f1de3fce6a3e5d2335a01e90e",
"0x578a55f0fda29909b9f850c3d74be6668e4444ac691764f1644a626498218e4",
"0x2ee2da24b7f8e7035fb73b08c3414833ffa38e14b1faac198a860a5767d2feed",
"0x11589959fc2493292fb6c50730e74994ad7cd6d3533c3b00a57dae833cc701e5",
"0x17572029e8e897202d0e65c2172c571d4b91ca856e7ad3f118ad922127b87054",
"0x2fbf8cc6ec7efb30106423f2e67b0aa9403360e56e88b6c5cbaec34a80bdc7f4"
],
[
"0xec1821648fddc448a1512aecc8ac37714923981940f5542737a468d4d887c8f",
"0x418081de8c2958355a1e45e28ee51ba2c66cad04835f4fbd81e696de6398769",
"0xea7bc52503e2039d277912e022fd6d0ded5bc687c6ff97194976f3a28bd30c6",
"0x12ab318626d511c23d28baa9fb5b5802e0ab95e3cb17aedbaa25f4d084cfda57",
"0xd1e34192343d66fc1b6591cb6a3b0602b0835a403c7227dbcbd72fd8000c6f2",
"0x12e3b04924b2cf6e407bd26b3cd47bca61d6ffcf7efa1aea1c2e0d8a49de64be",
"0x6dd89fabf92546847b9c13b3a36bbc7e679c5bb0dd785403f3ff49bbe61c8e7",
"0x17b9facdbe747d7c5163ca00e3b0b825d012ed4357604e7185750d677c6b357f",
"0xaff15650b805bff6f8b3515d5e29cf914b7349af8924e796009f8a4f1b7264c",
"0xd064e72449efc11d1e90b97749de3909490b912bb1f72f542f41d62ab2d847a"
],
[
"0x255a493aa4becd9d137eb76941c4120784c1233f6c5fdf5d65c0832af543e415",
"0x1f3e937ab29f3a88c6fe438698a7198a5209aa6ac9f141319f3bb201e7fd6716",
"0x2180b9eb156eb33cad1aa750ea0fa3ddbfa4127296e497f86e6441e052a23b45",
"0x1cc69d8f34ee877838950e20a9d4c4bd3e9acaf3d693aa64cae04faa225a2e1e",
"0xb565179887ee30e381631d8e5dd357c70ee2ebb410617d2321f6d8537f98970",
"0x1162a56ed3bbbb4b6760a16a300ba7202130086da4d5588a70926423ff8c242f",
"0x1360f719034572b59410c529b62a62aa94565654597e42779f33400f1d17d652",
"0xc603d03f92860da8a68c6dcb1924d1a45099aea50f1a362edb2f2a7ddfe90ff",
"0x1a918fc117d9a6445e363ee5833dc01411034b95384d98eee47ae896f92a7d67",
"0x2a88e0c35617665f3cc2fc77d90afc7a8d1001c71debcf2733ca0c71a19e1ea"
],
[
"0x120f44670301b1435249294d9833d59e01682af4c8658719727678fd9ab7ef2e",
"0x113e968769b0ea32cb7b5ff70484aacc96f13dc2827a8e5e611695e0797fc3c",
"0x18cd1471430adad31e45b529494fc8a7e319bd2fc0619c99207dfacdb657bbf7",
"0x23d0fa965e920dfc530b52670b1e32e2d5fc2821fc918c0844a003b7141825ad",
"0x2ea6b32af37cd765d728ddefa30918902a21e19b291400854f56393c56d69460",
"0x3340cacb04d5a85614eacc4be3352938baa3fc714c2575aa9d85f739113c50b",
"0x15ff827e034c02a90767f0152840e7fc6db983e496ea0519c0ff41dea8180628",
"0x5d56f0c844d169248503135e4deb9ffd6329d54cfceed4b947d78a568681147",
"0x2e5618411efea30cc7de310d4872597d087c1e122e02ebb117db0c2dff04fc0c",
"0x15eeb3e0541bcf010da0c47adb12f6df540b974d439c93e19ea4d02f9975d446"
]
],
[
[
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x9813c803ff84a3694eedaf4b1c2172615275dc18ca654c799a70440946ccf0",
"0x202973f7fba5bd21ed58bfe7156d7b29010d41090f63f1bb290c1d5da1ad60",
"0x12305eadf64dac24a7913a62d95aefd45f48355576c671e56fde9cc7c8344ffd",
"0x25c783ad66d6a1fc6c84770bd637f6207097dffb0378d7e0395f8c0b86b505f9",
"0x222deb606f13cf28c73a67216d88b16f5958d5d292ba10ef3bc2c10f5a0b613f",
"0x1614d025472771fd870a9e9d422b3571c5494e7d679824d8fe1212177d5fa2ec",
"0x1358bdd6b7a51b1f5b5d094dbd8ee086ccdcfb9c27faad0806e8ef718d0e2b1",
"0x1c2007eba4d1629846bb69404acc84565de5d24620f75cfcd9f11feeeb3f3748",
"0x22f49d7244077e41f409c0b353afd1696e3aa15ffdb4a0bdb883ffe7a1a87217",
"0x1951523a4270c54403dfe3218fd3d4ccefa43114f1b19fb2c2821a4374718b9d"
],
[
"0x11a131a3778c3774233bc54096419d463d3abbae18322a7e77a511881665f93",
"0x1495af03dc9180c886f0e1bdaf9d18e32e6b0d1b80370e7cbe5745dafc433523",
"0x119344c53707f00243983c6d024fd49a0f8af80e5871933e58ff87c3a1f48b93",
"0xa92bd6a919d1605615786f2efe80743ca57c10ec80cfb926722b5bed408b79",
"0x1c7d3a92caa435cdd974520bb6fb6cac81634cc9bf4e534df77736e06d768c3c",
"0x12fb88a0f6f749d68da9250d5adecf088442827248d67f989fd14b5c9cd4d4c7",
"0x2f6c4e097bb5851be12bbe2c712c2fa906f310b78048d695b4aad301ffc0d268",
"0x1c06c782fbc0980b9e493b29a5e4a04aefc668cd4255d6cfe208e9e7c8b9a1c4",
"0x211865b7f9c1c791a33d703ad3280f69756324349afc8912a19b83de2cd06a0c",
"0x25542e07c1c13979bb14f8d4ee93dab7a3dc750806cf37f2c02ff53b4bb9e66d",
"0x12b5a09e1e95e0d01fbcd234fad473d8ee2ba976fa22827ffa6dd03c8b25a64f"
],
[
"0x2a18ab4dc4777e13cb8358c1c423153570d1cb909544243abdacd4547c8ec3aa",
"0xd95e8cf8a66b56c32e7d11e0107e41e1297122d1acc41332f1b49895a3c97fc",
"0x7c22f96f2f55653d04edc63150567a7a04609b0b79eecfacb1485dceb7bc873",
"0xf716c54de41920c401a62df8f9186e19b9523e98637a5b113d61ccc30ba0213",
"0x2cd68fc31b67dc45fb6b16f42b5eb89dba2ae7e9aa50c5f1915275a81887190a",
"0x66292e64e6a2c64673aed365cb50f7bd4e1d3b5270f6b2e9982590c3f8400e",
"0x8a1ef65f52128eb3b22df2b6aca30509b0af8af2f7888eee766c0c24871188b",
"0x24529638ebcdf26de8816287fec6370614e112e10c039190c103a75ced11b426",
"0x12e4b5408f48641951739ea27e521067240b82aa51a42de2d4dc1e8225908187",
"0x84b88b1ce4598b701cf96a3379a02a3157d4193c8a8f1157459f6a34ec32fb",
"0x2c184e904d7bfd368d4495b9e3027f9af6b9313c8f193f929ac9e24d10d7a36f"
],
[
"0x16ebd782cbcf6d63c38b87b27db2a4a5af5847a9a60889c4cf6aa318d6866b1e",
"0xb05f16108c4616a973b01d82e50d4fc9dcdcce67d2d21f852816bd234e9872b",
"0x2f394cfd3e442503c3a22512aa4b76b95b743c7076ca4115a9fbbb7c6b07ee5d",
"0xa157e244f939125d57f9c8e66f7d88ec0fb3c05b90f526bac0871bca84677f5",
"0x1d4567c12db648d4a9c41324c0329325b76a07730fad72ef9e490a748674985c",
"0xa94a2d7c4093c638823b095733f37176d7e747ba24645b515ac2a241ffdda81",
"0x2f6f14502f20d958a9ff23b696cac3ae24967517ae8b2e9592daf451840bb98e",
"0x12641cc3cf50ca67bc93bc8c19ed89d4613e9e281a51cdf313cbc8111922242c",
"0x2185c7a4ad8cb21f19009396f134a2c3fd614d305e475ddd19f26f6d4b3f9ce",
"0x2f6da385450911cd272e13601e7ce66c2b91d809307492f7ee578ae34d6f5fb4",
"0x16fc48e55d64d83010ad573377ea2422397fc3a7e6c88af808a566de0223f0c0"
],
[
"0x2b7ed47fac275d34f842f09b01ef9421014de040c26a591595b227ba7bc6fb2",
"0x230b62315b30bc49d73dff8a9de79c620e03c747b14c432f170715e588d605aa",
"0x206351750037bdc90d4f3e7918619fc690c2b5857f8bfbd86d7c001e4cf2ca18",
"0x2218be861d524eaf03b9420b1368e9c5aa7cefee72d0e6ef80732ee9d7e6e2c0",
"0x69ee4eb20b4860d4af91afe1781338f53aa354562ecd873e0e625af70746f26",
"0xa226128da1d9bd5b329f55f52c75682def3369ab13359dcb7d212eefca86229",
"0x17ceb42a19de6dd32e3b38cc2990e64273b52a5618263eebfa49d84518ea3bef",
"0x29012deffb112eb14034159c59162f866d4a1803b4d192a4329359f0f903266f",
"0x9c4b2f61adf245266168cc918e96f7f8dfc35bd3df7b23fc641ef01bcc71cce",
"0x1802b97e54bf3a8978632cbe10e429705b03680325d26ea190c0f1ebc7362ea3",
"0x2db1ac4c2b1c23a00027fdcf0f663af896d87415bb035b149d28ad3da98c6fcc"
],
[
"0xc5e49e319fb9535073f07f9e055accaf3e3f24a35dcb46cab67dfc648efaf30",
"0x15d217a31784741048f326e155af96e90b5aae734f06779e698864039c92e123",
"0x1accea09c2bfd17f4061725c712fd1976a07e773e54d906da166215201a58136",
"0x2f9bd19d0c8c3887a7fc0173f863f075e66b183ad89f13704930416e1d5cb7ec",
"0x6cad0c2bd438c4dba2ed64bbf75066e731484c36d1f6738b6e98601e9fb498d",
"0x1b5da83966361586e8810fed032435caa80a9b476db21290474ed1977fcef22f",
"0x2adbde5c7b73e9a7e22b913f99e40d95e689c65c428c2397cd273923cf68ddbd",
"0x1a8b8ad1ecb6cb888273a90bef8b1a2cfc03dd44e0b28b18e1074e404a9e0f4c",
"0x281eca14bbc3920919e001150451c3e44ff18e1dd1171412ff5e663d74a073c1",
"0x54cc81c7d1d59581ebcd26b16ccbdcbf1968d77f87a2081d13054f51118f7c",
"0x170c05a5f8a55d5c9fdc5e8238b367be358917a19a28b4c47e46f3e73d42a085"
],
[
"0x161e4ae5b2d24cd638ba5c32bc2317bf90d404e37e003f1055d9a96e406d30d",
"0xaf9afbecae1761cc17d44b51ca66d1dbdeaf341e85f1082958f9cb72f7b55d4",
"0x5e52c0ff8c04a8e5e3c7eafa1d0902fe63e35898934b00f4333b38fe614f913",
"0x14eb401c1084a9ddcd5d0092e5d1a299aa0f55c351545c781703c01ce87d6b29",
"0x1e0e166d734aa614c6b53db4f691179841a33f8105430a3ee70abca83ba6ec6e",
"0x2fa75deed281db734faba5b70eaf57962f93e2eea1d3dcee34c81ab1e9fcc0ee",
"0x14bfe33115df293670393e1dc8da4d6947acc4b60249e5b1c8cae376665cd580",
"0x17ea198f3ab261da000152f26b0eb0ebe088a709e8b06a18a3dc2108c2096864",
"0x533e8a454b8cd6df8d48fa9b0a9cb2952933e1a6b1d423cbc54d0533a72599b",
"0x19681b4242d11e28aa72530cf33a7d15719f1a888fff625e04652c77ee2b2de3",
"0x1eb7f6e5520215c15e274355b19bbf71abbf04aa426cd07da536cb3f909f6e57"
],
[
"0x223c7fc6d24fc53d1b428edb8f1c52d20ceec592187d2c7a6b0b147b6292b81e",
"0x1da4f4e3c6790ae1b89c4118861d8ca2a50cc82a4e7f1ed3c5ba8cb944ba4689",
"0x2e708baaf894bc5835e5fea81227fa8cfaef99086d12b0a3a7f3f85bbca61d28",
"0x13fe23be24261ba5b92d363989f58e17fceed4a858d1c61fc2cf2b71dbdb6936",
"0x1c879c9428e19607d647f5ef1415e76f7c59fd01e52afb80486081851f9a5284",
"0x128cb3150b15cbc4faab14bf7d676ef3682b52cabfc8d3419dfd98109d19ecc0",
"0x2bf523cd8aa3be20ce7d891f8727a7b24b72a4d4838484de842acc782fd8bd32",
"0x45aaa99ce1e06a3c02150804a91087f57a43b79797773e83216ca969e873380",
"0x284ccf70859547fcb9c3c7b64cf0ad62e51726ec81b58eb01c1a1f8ec7a9eb70",
"0x1abfe4b1cf5db29d4078e5289bb143498abbbdc9af56720470a26a3dfa2ba855",
"0x14111a74bd24730c833699eb41b38f1d4ed16fcf0fecc1655b76f2437d4a0c9a"
],
[
"0x1ae060e39b338d09845e2e9ebeb70bfb74cd4af926217f5732be2b6cb7fe72a6",
"0x2860aa52dc2f967c0c1a0b942ac81e02189d031430c11a919a5aa895bcfb6151",
"0xac23f00ff015baab1c8be9a90943c3c72d17818be7ad427c45eb3ff1828727d",
"0x32fa2f166622f057f61a9405c9256223cab2ba82c9495607921755ab018f690",
"0x215c0cd4e3f1bdb482b93e571879d7931be90023d7a220e8f93b21c8add41ffa",
"0x52700b19ef6d42ea392e044a094cbfc308eea1f72f2a3428b1e721bfc32c6ad",
"0x33b93a5cf15ffbafa2726f2527824a11af8e42e01d3a7ee159b273ca0a6520c",
"0x254e3acdbc75ac592679b032b65a9c91d2e092ab5e5719551b5da635b13e9471",
"0x4fa5620a2c057dc552a59fdefe50a901068190fdc3df8761991cab50a01a449",
"0x1d2279673f6cabf0a1c4b8eebf8e9c78361680b2e59d7ec19348819f5b3d5a14",
"0x2d46b48e5090c0c56a390de373f4c9a2008db311fe31063cf4fed54629113585"
],
[
"0x46191ab41e93929ea51f190fd4e773ac8d5083328d4b2f04828dca3e69098c3",
"0x16ff33d67c85121bcee7d81cff1618927f1c92b4d1d21c2a07b6ae18b2b7b9b7",
"0x2134798f4ca7fb9928012c937f37de87432b8665aeedf373e7ffa6fe0c13d00",
"0x2aeddbfa245756ad1e1658629f747b8da7593b195cc950324f95edc9eda42aaf",
"0x1f41fc67ca1322b37b7aa01b631fd19105281f6c6a4d37fbf68fc1b5f62802c6",
"0x22d1e64d4ee15e60c459d851ef9f3495e937f5a90990382c97867c45b7940071",
"0x249f416fae5ab52a435d65201006dd8ae8d54266e4d5643307551902423f7cc6",
"0x12a996abc8577021ac7880c16f058d9e06e9511187f0aadff6bb640e4316d26c",
"0x2d2640a74ede9af6c9888e5f68a84fac92b13337dad8fc6152fab34b55419908",
"0xf246d2fbb4e1217f09631fbc8770827c36751e6ad8d6fb16810e3395143ad80",
"0x15f30ebdfb8b8ee644241039a26b408dc7a8de77f2cc6fed754b703ea92dde53"
],
[
"0x14ba1b5383e3733c63d00c32c2bbffd8e54507ed33bf7544c86388191eca3e40",
"0x1ba0e835f47626b0d82426900c49170a8be29c39d90337aa5fc10764e2321a1b",
"0x219f5e28a5fa52689d2b7be432624280c940c9bf9883c1fb0fe929f78873c1b",
"0x123a6055681023b16570c70fcdf3ae8e387a973690b9e6761be22f9941d7ef76",
"0x1dce36062af7e4b0098f5590622ced7af9f28e88d476cde1391eb30408d5d266",
"0x252e74746677fd7584ceb0f8aa6936bd04f9528ef600737e9913fe4b5698eb28",
"0x19a9079a9897a237074252767912bed7b7635ae8ca0ede2dd3a42a75c1c6b81a",
"0x777edef4d91520fcd490a22dc569a97e540a0fdb527b4b1a3a854fe346b8e7f",
"0x121a3764269fd35cdf1e621c3dc6318f47b862380ba00357849d8840059463ee",
"0x2f80ca151b077b50767281ea5d4c1f7457f8da444dda16d8149bb6c1061ed0aa",
"0x1ee950c45a0c2f4a4b64688a7935ed2b63d4fe5b414afa05c1a284674409f165"
]
],
[
[
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x1f930557a284998225f5f4e4dfbcf5ac211f1b12d91b0562ed3d63285d7a714a",
"0x18e8222f6907da5745eeb9cd4a9e62f28b8b710aa85fe729f9ea73a3ef0099d",
"0x180e924d757d0be4066feb146ed56212e38acf9df4957432653f370f905b8b07",
"0x2f7d0715d1391190e7b14a1242b6799eac3142e21f08ca02c21755eae77a55bc",
"0x2283ed8d5e6f9470b3f4f49a771061e4a4fc7dac683defcc0348a8862c6ce71",
"0x21f60efb132b62909990b9f994f381a9c02abc3ccb54c5c8e8c9c5664c6913d6",
"0x1cde82acee60b84424e9bcee49a5464ee05d1cf0b70469208a675635ac715495",
"0x118a24510a2153f818f0a996c87de913587805f16cdb1939d9406941f958e8e1",
"0x164567b0de16b7a5550fca229bac7cb0779524325e4ca5e78a86078881660264",
"0x188ff303194112a7034527cc9dd0b4deb0960c9c106ce115178dd7087e4e8c02",
"0x83d832adf9bb4a25f686abeda9f16ebf53263dcf9ef4311781d09920d094ead"
],
[
"0xfd547840f3a30a533a994d1fdb3f60ae5073f4484f34be951ee16a276fdeb9a",
"0x4c4061820cda9bf472df3f64d6afa004f1e8623d0a4f6142cca1f19a4c275fb",
"0x107757eb0c0799f781308d83d2e057ef8106f6b656b45e7636181e113a2cdf32",
"0x2acd39e3892ac429ed812863efa05eda746b55bb974694a4e77b9a19abb55001",
"0x29788bb6cd947ea9efaeefd0eeb7fd563fcc2e40bd623ea2b2442b55d98dc5a6",
"0x6ab8672c936070a10757adb45031a5e2922f0fb8b5fab3a4f5e3872fb582ed3",
"0x1db98a562fcd1a5e4496e61264aad5ea3b455f46eabd8957ba671e9c31e5092b",
"0x1c4dde07d0f94d1aaa832ac2f5712d438b4e1804b5209ce55942d7afb24c6401",
"0x2cfc82712ed9d71ff4fdf63ee4ad116fac195794f8d910286c152efd9f959bee",
"0x18b49b773f5799888e9abe3f6883d7063333835b6cdd333580b2b4bf48f3b27e",
"0xb300de5b99c27d332091f8fb0d97cf04a86a51d4d2037788e0d4f38e8f4eab2",
"0x541af6b96524662084d1208d71b6b2a8d66d91179745b213679c2a2bbc94968"
],
[
"0x5019671bda026670c7ffa9081795105963f56ce327fcf78451fba2bdb3ac1c6",
"0xdbc22c3e54c924a882c22000951239cc263755dfcb38b27ef4f880e202cb5fa",
"0x966a21b9615af2b7563dfe41b8b9fc06039512dc9c8e1196891eb77f856b608",
"0x17b18621dbd61df085da4cf8a03395e3700269c7df4d98ce4851f90abcbb3631",
"0x12cc274647fc572bb79035bfc3332a4e566a28011f69dd0874f01c56bc44c3e2",
"0x2c7d538b9e6d2b2e06e72f8aaab26dbddead1fef6a740a11e9953f8e8e9ee057",
"0x2f30800c0ee461010569d36b60685a38b02912a020bc4708598854f65822f15c",
"0x116c45e4d88ceae4565c0e94da844eaf2775d5f5b435d94d2d3d38b583fa7841",
"0x2ffccbc40031ebafecfc3a97284bd0f6dc4d45eceb8b8998f1a667bee369ed62",
"0x2007424b129ade2194c73e6e2c9d79360d1360c4fbb8c5f31330f938558b3ace",
"0x2c53d6676d4d4c87d9eaf5d4da08d1e98d103a3388d59a7c0c3de51e2623aa3a",
"0x2cf2c992c02a36334ff5dc851646ee7da04b44eb544ee3c0fadb8dc5eef2a585"
],
[
"0x2952c18c15558f29b2ae77fc39e51a395f173a9097db404db765ab02906b27dc",
"0x2fbb1c59e9e8999d91c40f4d44233122ab35ffc975edfb43c53ed07dbf0d9c76",
"0x82046081498eee63c287c6fa3efcdefeba1b5272a77bba9cfddb56afa53c82d",
"0x2a429c2d06dcf34d34730c3af8bc19b04abd652468de5a85b5d5cbfd9c23e6e",
"0x2ef584c3aaeedbbe2b4b103a61e94ed40a97294156ad7ddf0de43b845249f534",
"0x28e4620d210536bcaa42ee46b1cdcb21bf215933bae4eec639efbd51f4bb6557",
"0x1e32b1e2e6b59273a113d609663af6b30c95b36884fe5faf371de3d564213c3b",
"0x18820364804d22119347b728135b409956f7933defa1059d634b977d9d3abcde",
"0x9b6c00a37df2770cec0f1bf62a6aac3bd380c6ce9f4f96e0f0879237ffa510b",
"0x445e26e26f91707da2df5c188baf80ea2f48c703614980fa798971cd8ec60f5",
"0x19f5101715162976766e2b57a58674bc58e1ba2be18a59b07a07e4a93e038075",
"0x6c5df8fd61eca2fb4923f0a46dd4e416a3a3b48c10ded13133ffeab6fd153e3"
],
[
"0x2353a60af6bd61e5eac2c9a4263d451fad07380654d4792378daf752e5cc33fa",
"0xb8f40d2c4d28c472085203a0e460af73bbecec3b2b3a63f27028f2ca8a71251",
"0x2c7ecbf14b2d6049a6439d0f29f10e26ec975acc3e3eddb77c831a509af59196",
"0x197dfb64189c09aaef94a1f542d8c34aea27fffba704202d5286d62bd0eed372",
"0x5f9a6a8d64cca12725dd15110f74aecf99dd30e57a7d99829cd8757b75b772f",
"0xfe0def70bfba40679aef8d5a239b3a1b5a52fe8fd7edb754aee2b182d64b66",
"0x1b1523463a45a2982889048681a422c02ea373f8b8c1bf16c74a375d5060c662",
"0xc849d07b1d9e6ecbac517fc19237ff73424a0678f94699b23f76952afa4514c",
"0x2c4036616c156006337771c1e355fc0f2f238e64cbd69d068aabb4b58116886f",
"0x176804ec1cf85d35298351245d32236546838d9b98cf4242d601c7e8e501b49b",
"0x2f5855a876a37f7bbbd6104accfcae507e9ddcd2a7219b487a76b17c525b50ca",
"0x1a233c7cebfb0c6eb72dfd07aa2b537ccf291e84093aae36cc68002ffb83639b"
],
[
"0xed6a3bd48174e370b4f264b37488b03a5e3f4c0f61cf32d3157ad3e3b86f6bd",
"0x28c01a9f01601bb46417ed466be6008595052f782e46857d81229e64e6bda02",
"0x144022e7e077ff22a2ce3dfe9923107d5aef046d0a1f2cb5f36191ab04eae4ed",
"0xfd3bdb79cad913432b7d3828e072dadc26cf4903d56b8976200723846c6577e",
"0x2979d1aeafdf97988560d4ebbacfa6e2b7f3d026946abbb9d5397645e6e81825",
"0x22ae023520979741e5c58fb04fd25d12dc8f5fcb6ad15223a5da7e0f91c7b4f5",
"0x5246ee7854b2e20e8612da021b30798e5f0d02a5bfd5e79d3f9ac6c79fa609b",
"0x2b60a4d43d12cf31076e0690e931716c47a86e7728c34b2d3cb0cbcf95bbb74f",
"0x41b909a658d136993b3f509a9e9d50138baca48f6b66399ac5c649e68dd3aa4",
"0x25b6e65e90ffbf910d19fe3ae23d037f8f64da9fe3df483fc4f4977ca36a7b1c",
"0x2c0de448a88dfeaacc9bcf2850b6ff4f701e1a538d69098bc94087cc35930966",
"0x5f6d62f54518f039e79aa726bf15a5983583eca4062405400acca58ca9d2235"
],
[
"0x21103a7aa20c8d15501be8c23504c6a912c6100c5d88085cc2e42a52302f4483",
"0x23ce8e402939cccf36176a5bd83183a0d54a24ee6cabe4fc7f814dfbf26f85ea",
"0x170403d414148f4681b8213550951e238edc009f46b00693ce3d9c5800fadd0a",
"0x29b9ffe05db2c52ddd1bf0e5c532eefe70497c7df4b97db2f0624836576a6b29",
"0x153891052fca1290fbf83240d334fd4ce05de78adfaa2c9686488e0c47ce1fc0",
"0x105c0b246660c4bd8a6f1b36fc3cff86a2c432c0dc9321cb50abb98a10cd1bae",
"0x6cdf8055439ac8424c435e7e9bea3f0ae93eab171ac383ed2cedb460fcb04c4",
"0x3161d7b94e1b0411fc01dcfbd748a6df3156ff04536b3dd3101f7b2ebc3811b",
"0x25c075b41ea2d827a4955b6469db9d41760faf885f2c6e9c09407ebb1c4dc274",
"0x2fa2af7970e131f7efe3a7c788890ab860f76751e55b4ff634dd46cc4de660d8",
"0xce587066eae0c345c3368c53dff2170cdb081bee52b243a1e6de6d4f82451d7",
"0x2b09de93c6e3148cf7ff5731c8e144debb66ca896ecbe4089d2d22cbdb09777e"
],
[
"0x2fb232573e85d68c536d100c3a6ea9172884451e677b0d1cd0fb4dc4c27536b7",
"0xdb82abbcd3a1b56f7fc8d116cb54c54fe26243702bd3d57e71f7ce0d470a40f",
"0x2997d92a5e9bc66c84f635e8cbf080eb720ecd4ca3e42c3ab8d088611880861a",
"0xa2a006e3b086bf502c5b1540eaaec14b9c15bf88471cb6d479fb4563f016497",
"0x1b8c7eb04d351aff4e76af7f9fa1114fe45aaedafdeb42c1c23503b122639c7b",
"0x2a5aba3b45e79eb2606b2a5b47eb907584aecfbfc0b4cd50cda1ce4854338597",
"0x2f9a5cdb79645e3454c617d77a774feaf24ef603454c02076fc4c9d7548cc455",
"0x6438e8b0220464039a7b8022f06beaee502c5de269db82f91d88fe1b72834fa",
"0x115a91867233cc75d1c906a42930e93cb9c16afced390cc14435e5cfefb4e96e",
"0xc8fd4ece5c205190cf6c842d1683444079bf49835d5c8b8dfbb11af956ccaf3",
"0x2cea98cc64abd926df963da57f2ef4c434141cb53ac6311b2566edb957982713",
"0x239ecd92517825174f796345db296562223760fb1b81c091b74a6a4a82968a4"
],
[
"0x302a085be040ff9a709ad0c73238b0d1e11e1d17409abaa34fc45de29b541535",
"0x2e703ea9af99161acf9949da7afb18d462d85b671656d61c2cdee3a72390213f",
"0x21427b3a9a2cdf1e2e6c628906b21e24271d72c18b0261be68cca44865dece11",
"0x237a9e020908cd0edbd9eae8772350e0e731e3228b892fc5f64fdfa9b9daa670",
"0x2d8125dbef602bd970d11fad7cfe06c3c64f5687b09b960ab92b14f69efbea57",
"0x23a3b23d5edf5cb66160fd2523b3a383142291c0e0ee666682e946b1d57937d6",
"0x1b1625d757786a19a93b37adf7f22ca8a502aa4462ca78f7da2d7c22b37d7f9",
"0x14898babc8810cbc626688531511a8473ed89a22569d47ba586c284e45bd0ae0",
"0x2f8fb37178b525758bf6aa527f25773e1ebcf8e1425379500c8245c741ba3fc4",
"0xe992f44463e2dfd267e6a4a1c3303ea7a1186252efd6c9fae9e5f0c1f6d8266",
"0x2c7ae475d90c475f73c0d29be8889d0c4b8536fee6c0389984bf9e4dbb1aae6d",
"0x2945cb85e34532e3a22fc576703797893ce290d0156430a8dce61c9df89a8bd5"
],
[
"0x683e640e6154ef73c3cd6b1d0f0fd86ebf7e292e63fa84cf0a883c2f1faa8ba",
"0x16512c150c1d2fb7235efd2d4f0fad5fdd78f8d0cde53a66bc90206c82c4b597",
"0x24bba58086a78541a8ebfd535c107c36946d78ba6cb26d227e615131f71d337d",
"0x6d349d6182ec30d68c9be010587c707f7e1e175c0d324e6added6337a72c2b",
"0x10924807f6fdc4e9e586792e3ace3001f16bc02e84ada5df51d7bd37243ee1ee",
"0x26635f4df7172107dad6b7c3068d2d438bfbf486471039f9e65a9c8462a2c9c2",
"0x28bf5488a525f5514400dce722430287fe8e4c810154056eb0f4d6fe61091cf5",
"0x90dfcc0327a541672cfc26c7e1370583c5f9214177093010fd3fbf279aafd4",
"0x29a14dc4bac0a4c52bf30aaf6b9b8e05453d0d797246b64732d50f176a7ca257",
"0x2609ff97ef574fd68d16a3de0872c3b59a5b928258dd1469826a191dcbf5bd0",
"0x23238fda1417302dd03ce54607749610292945bddbd587241714fd3964af5f10",
"0xd3be6a5b12bcf1bc705c20c30f320b8881c6c2ec00e857685c0599262a3cf0"
],
[
"0x1f09f3fb07f7f6476fac98946b7375095e014b28f23a07ac9fc7077144ac3979",
"0x298aa5d5a44565b75ef68df902d791d01d98a75e822ef553b1761c58d6fdf32",
"0x1fd5a6eba52e9ea1db389a1fc8dd3d0283d737c18eb06e090b6fd2dc88e0a14",
"0xaabba39d220f30604d0c44dd47c3c70de3b79f5baa70a3a7a0ca02ae1b080c5",
"0x230918919b6826faa7124c5bd15d10c036d565e100b696a3be7afaedb2abba6b",
"0x2bb28ef42f5fadab6a6ffd5655b36580deb063ae3081d587bb1598878590f1cc",
"0x21891bee31fb7bd89f0e4422b3c8f5b393299af0d9825db9be73e7b20097923c",
"0x38e0c2e29c79ccf46b5ea1bc589276aec95b74e8bb82e4385c0585637c885f8",
"0x2c89dc7562b91d8f2f7daa209b7560520b6bc62ec631db41cc5edac1fb142be4",
"0x15dc57879cb41d6015da9881f948b40d20f0e03fad87746d8575af009c96033d",
"0x1c674ff2ead27ce002f4befc7ad5f0f5123e59793c0fe21075e819ce56ce1e83",
"0x11e7bc4a39d2730196b6c334f99750de5bb5e4fbca5d6a19eb7fe14abe845dbd"
],
[
"0x598c38d2e2c78dfe4907c74e82325cb191d52608955b583e5826ebebd1857b5",
"0x203fd2078ab2a8f88b7606543145ee34daeab2aefca31bc04a476065697cabf8",
"0x1276442d9383c52d50fc9b5ac34442a4ec8e9cd7aee6d6ceacc1a6f521aae4a4",
"0x16ee980a2c67de24fa1a34082f11c71b7c45966a6e8bc6aa1a1dbc7ef6a9bab2",
"0x1db922b8c249ff7bf96121eae9d9555ef7770f3dd7b056191ae9ab38a5ccf6ed",
"0x96dd43a832ab68e35e57c98d7b01f2a2e5936807704593ac72c74001383f7e2",
"0x2282e86ade85855d4ea0657c4add20625c6daa90bc93943b59a92dbb77b63681",
"0x28331d0d31ca8675ad4767c490261bbfe5b84adb4ca2c5599a87f331908130f4",
"0x14972bfc85de037b07e55332e6bc5b4f08f39ed4eb8a9721dffc4a586dd9a1df",
"0x6d039b64e82d7975dd21a37b5ee79308f20e82e23489382ec2d176190587896",
"0x2627be68d9cd0ccda3828d51621ba409f9acf09f1a9cc503a29ec306f8606ae7",
"0xc7c9db952865fb9470f8aa1402536cb3b82276d9e288082ac7f83b10bcb6d17"
]
],
[
[
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x2d8c70035731ad9efba92821a88119f6b8183a362be641729a93d6a327c03809",
"0x7b620c8a78e09e49ce547aa783aa78f3e4594c49ab3dd6f602bc6c0351d823f",
"0x231996b592528575567d39d00645a83b13929093bbfa00d6a661e4a690351d0f",
"0x4e47a72e49b9c5aa3f69f6af22fa0ab640c93fc524dd3c508486d66f079852a",
"0xa8cb4b2bf3f0c5da671e48f83e5c1b3018f0d31200a6f19fd5195db22eef7f4",
"0x18bbb002b46f2e5fec2b120faf87822ca8e77ace94e03aab5c16c4b931739dc8",
"0x2bfae1b054ef2e924d75a8a01283da29103c57bad129ec8396ce274ba4524df",
"0x6d101b19477d1627b9542581bf0cdfab38b05cdefdcb81965c5be00d780f192",
"0x18af61f6184ff85f104c2bef179b3ec5a5d242dfbebe8e27a2918f620e8a5be8",
"0x11e3a7c2d5f74371beb188c6e3d7a14b33128af8ee3287546d12d7777cef70cb",
"0x2de5d6a7a27343dd0422ac71b8d409b43ccb0b672e978f8fdfd214f4d7866404",
"0x227cb43b9818924f2a2588964a0ad7ddfa3df62284b4b3b10199a501ed970622"
],
[
"0x2b2ff5f27531b6f3d6a85d75e3e08f3a2f0dac3680a6c26d55ecbf803ca80569",
"0x9ef3492ad19dd1d0bfbeb191330a880ee7933c9d3b36bb5fa02283bae5d605e",
"0x27d6bd18703d7ca92aa24076d3187b6c0028d0b6213d9e5d2c66115237a19051",
"0x193f32a3f839f76049c9cbf2414590698a2118e83658327c4338aa3648d8f7d7",
"0x235d0e71a350f1f23d9bb5182ac44ec9e4615e77801e5aadcab8336aadb1712c",
"0x1df5c9ef694afe61bc253ae908a8f6af0a08cdb9e78a9f322c22388322f16c2a",
"0x1db2021eca3a3624a7d45bb16cf4a44e2af4fae0dc280030e7ebe55394f69d8c",
"0x1a46a26691841c26109a32ae07eb584a6b8af657273cdc4d8a112dea0bcc85cf",
"0xcae80cc05aedb66d6e649b057dbc5ae9759da5d7b43d5e25a400e1f92e9d1aa",
"0x195057af1319e24df1b905c6e2eb2957003cfc34b001c0e54b9dcf2ea5df6be9",
"0x2d4d35acd9f28a3e6bfd601472948293c1e4f084c714ddb1a075f2eae9ce21b3",
"0x25eb2ed84c520aba164e33f0353b5131886c0fbd18e55695541512dec563a0c",
"0x16c7c5c6161eda32c65bb347655acaa80bcc98bfc023f4ab12f5b2a899f37e3d"
],
[
"0xb658849ce620bbeeff233b7d12258015ea9f87a5390f5614981eb6e4cb4a5fa",
"0x1458de516a534190c5550c6a1bed3af535c38b242eb9291373096ec60e39c1f1",
"0x2969eb5016f24b31accf173ca204668dc2229845bf6446cea007c113349bd4d7",
"0xa5da659b6fcb1a4273e1b7e3b544d2cbd362cac497afd004b8ea920fdb04bff",
"0x1219740c424743dbbf896996f0ee7a4076ba960a57e8d7679b828479218570d1",
"0x134431128e5ffc0ab60136c5d851a11dcdd63cdcf17ad64fd77517701de675f8",
"0x97c6133aea8fe48f3a5fc416bdf5e46d05de0723bc49e53b9fb5e83d350c295",
"0x107da0784dfb314d82859be44d37b4d2b6345c174b91651c65c98449682a5204",
"0x12256b3b99d31d8a372986f95d66cc139dd23e935487da26b3e249ea7cbf91ae",
"0x1d952ebffcbedd26036c54a1e8a2828fe320adf07a286e7f2c211b47f6c3ee86",
"0x26309b52cb55f6ea5a9030b01378f65d2e6b7a9619926d9b1b1e21cba01fa7e1",
"0xa12525f0781322371fd70b0928cce6e2eaaa67b8970dcdf319df25e8019a6de",
"0x27e37c68a01530f092cd37c4a26dece2737868dc2c3519435e1f2cb88f07b62c"
],
[
"0x118132fbc1cd83f95167cb4473d54c6bd2c417e2782e5efea16e72d47b48b70f",
"0x136ef2515955ff6619498fac59424816189f896ac0ed69b59854d105df47c4b4",
"0x29c67bce04bfd020f4ff7eacab6cbde034b22fb86334675a361f059e50395311",
"0x2a832ceed3837e742196e09491fe23e3f6e51126eab9acec96e71953102ef24",
"0x2b501f1003e27aa809dc9e5cd84976a3b8c169c1e9c63977d7823f80d3f823be",
"0x3ea4e2bffe02da5977ced1f1a6e852e921abe2e015f35b36ce4bd0246c2cd89",
"0x150ef9e932a74b8debf670080641339b12684ff5a303b2fb7c1d8d56f56ab61f",
"0x2b45b3be2674fd820516acd6cc6183c4fae0f7edfa9afcd02dfeeccd02bfed46",
"0x238965d658967afa2bce50ff18cbbe535327c65b0b76e50da30739ded25eb492",
"0x370b757ac6cdd46610eec0c22d43a543d5e0482577bbdc14e71090307b5f69a",
"0x2aa84c1ef9e848a64f748b80e279ddcff871e9c4c3e2fafaaf79159b0b4e4018",
"0x1bbf43ddb5a0b0d2845923b1ce128292359cbb313c5876fbb52f5e6b1fcb7031",
"0x19dd1c6d45298248ad499531f33ce002505458d76178eca26298e39a62fb9501"
],
[
"0xb5944768d61c1b3562a5749f4f06c4dd085bb562b838d7e2ef14a21fdf524c0",
"0x18cbfde0cd21c183797a2f089594a81cd828f3b0742371ed02eb83fb0064dd43",
"0x124474b08829d9b717c50884bc895cd3f81d519859d21235d7a74450d0a9427b",
"0x98bb2c4c6334dfea474d04cb2e9761861f6b18a8058a52b619d6227a26228a8",
"0xf34db93ea8d2ad7d1eff86db5820cc7ada47bdcd8c82d01821f5c21a3ea2325",
"0x6e03ca1146705522bb5e9dc73560eeee6b9b4bf51d48f953fbd1f006d758a75",
"0x1237f44f036b2da0067a94947334e3afa2ac4cf1009896766f5b191cde284972",
"0x2082e9103cc45245924289111527312860f6e7ee94578f0118f4a920d0f8d525",
"0x23a6e143284e8f238c4b632ad78ace5b0dcd94a897cb05d1e297b4880e7433b2",
"0x22e076a3aa6ebfe996ba068bf5bffb17fa724338cd67f67ea25330195c628172",
"0x2fe31b0df04f276a525b619acc4a5ba3eb58d8c321c62390febab05ecdbc798d",
"0x23e8c3606aee818d2afa8c4465d5ecb9c45bde78dd819c0f35a620593c1f42e6",
"0x215f5563464e2df6a8daa8c34476a465e4ee9fa0ad01fc4399b649b2e07d1679"
],
[
"0x2b04d6ffbaf7144012d92c5c6212803c0b5bcc0d7b1950b889d1fa6f3e56445a",
"0x22757da9e822345297bd060a3f71bb1e70ce977049c393235035677e84357314",
"0x2c7e28f59fe8a8a3bb2fa2b2b1e114ce283fe22a978a3df9f62a171cb1d65e4e",
"0x101749f9dd2605191c1963f25694ae267f6b44bfe2d1af34fefcb65e958784b0",
"0x4d02ab05826fa50bcc5f9af9e396477e68542d076b683ee61b85869d4535893",
"0x14c499ee51925b231da17ee7b55a75f96f462e431675ee36c7be4e9b069e260",
"0x2d9ea99d2d237328266d59dd7e018bbd6bcc7941d9ff5f07a17baf0099f614d2",
"0x303a9e22855d95d07e8172f3a0536d4b95142f962b006a8ab09e7bb6335e8487",
"0x24e13a38f04d5e0fc0b6b6e0f782a6a523a8b3b0127224b8e23751b9cb9f8960",
"0x126851f3eadc0183288a750153910a41e074b3544f0610a51273ad3698be0cb9",
"0x27c1b406bd19ed13d533550b8b621186b1fd47f671e6604680317e6638b091e1",
"0x158880f5adb96dd1398128b9ff339f3d827da6463891cca129c012c06b16b321",
"0xf36d166e99139b9bfc1ac3270a3d98c4afa81bf97436076f57383da50436a5"
],
[
"0x29be2a42834ae32de3320fb0ee46b4c102a3d1ae44c5dce152fdeab5450c9c44",
"0x1622805125ddf344c18e351d11e82291618b975822ad0c903efbeada5a51d44f",
"0x165c0b978b4bb646a9ff225ac4900521292be54c879882d3f11eaa3103341487",
"0xc7b5e09343db5c63c110d3175d01bb498290d971b1e6dc0e9a0e9e7158356b1",
"0x2bcc82e75391be4ea9cd0f8a505f9e4f684778fc7a9b1bceb7868bb299cd2072",
"0x611ecd1f379a0062b05c4aedb100bc015244c6a88f1631a456cc2acca8930cc",
"0x477f951e19f531b8434ad755b6783d61b679efbb87fd956e394db9c434e2352",
"0x2963514313f046f844f950ffea80f5e5b424b707f16599662e5a2e3668cbe5fb",
"0x9010d73677620aae1b0fa8023ff1c812313ae9c3bf43066ea60bc1ab477a7f8",
"0x361f4082b75a6ebd23f9a6e7309d8c4e7520159da23441edd631a6ac14c20cd",
"0xcebcf30975b37267aedf521ee2bc753c3424dc4b6edf3984fb02ae1ead44daf",
"0x23a1ac07351946a974c8841e92092a4ffc6aefc7fa988e3c1f7e7c87e1512a90",
"0x1edd7c7deaf249e0fd3f5768aa92e9dad64118b491bcce12340c46f210b07ced"
],
[
"0x1946fe9de0a943d5a716eac08561cd91f9031fec82da9ab72883c7b218b11eb7",
"0x29765d8cf77619a580658d127fb6faa44d6c70a0f4d65dbaa960754b4195d9fe",
"0x2066134bb299d9e359cb82a8380feb63b60e4b9859d9b9872edaf9152f92d4f",
"0x116a313d00cf99dc18e21f93a5bb198018bbea4b7cdced3e4d210971dd0a681b",
"0xfe29b5bead54c5bbf426bb12844a2920884ac447906101cea9888986a030b11",
"0x22af37c0e4a88deae9f7fad83819910735cb4b49311e0aae11cb7534d0bcee6e",
"0x1d8b8ba772c4cda72e8ef9b19c424d55d57251b247c632bea255271afcfc70b6",
"0x4b7f8d1d5ec8bf689adf12d656b94e15b0b229c1638c9c4757faf0d18fa6433",
"0xa41e5a4421defd5ed7acfd48401395a409a67c3edf4c168ce3368ed944212d7",
"0x1abe8badb2d12353b9bb98152086a9421b7cee17761730e25ac284d6b1ed7b37",
"0x291c0da731c016c0d6c4c75387030a962bf7a2eb35e15aac02fadf530278a3d1",
"0x34c460fff28862ef7a509a1750a26ed1e5960fcb58c4f48c7d267c77e58dd66",
"0x8e1741a97f6348ed6d68f4b7bc6ec8b2dbf03f426769cc779ceee4ba1beb03f"
],
[
"0x1af3ca6240a55aba55df8e49835b92fa17e39ad5701ef70f8144109f894bf1d0",
"0x2bb0b6b08fc1bd11070edc42f23e807b82e8b88ef70355dfc74e096a7ff381cb",
"0x9372ed18ba1a774eafe1bff6deec4bc0814b0899c6196fa15a7acd15ecc5ca2",
"0x404c0fa1bd1f7e059054cbb87f6b5c69d11457e59f90419ce4bd10bb8a803df",
"0x1bb2091870a4fac03682fe5b1e2eb56b14ad6e48f4676fe41454bfeeb0ffd4d9",
"0x299ef95aed8c75494db82e8679fbc6d5a3d2e29aecdcf6979a9b272a607dd5df",
"0x206aa2f36e32b2b06d6be48ad493d354ca7468753f526e6bd82549fc36cd4109",
"0x259547168b64b2a228941a542f394a2699c081c149463dc2c3d21fd8b2e4f31c",
"0x2fc7d17f3a9afc1de289ad0f94126aeec834498120629cc87c4586c627780075",
"0x15a7e64a5a46f5973e4e82a263ef905ed64f182b2041baa00a1359e7e9c5eda7",
"0x1216f05607e032e49038ac1458100e89ac8519a5a3cee4545b08850d8bf160e0",
"0x223db18f31c85e98e1dd7b7245dddda0ff8e319bd7d1a67fdbc7eef56d667818",
"0x2f4aa8641ea4135031f4d97a7a2f679a8cbca562ba6aa54eae7d32ff7d04dbd2"
],
[
"0x81f58a91a4e0d100e0369fdd81a190035342fd0677ee1bf5215e47f8e58c2c3",
"0x4951e747b7ae6b99d9250108c5d2b70181a93ff1d4bf723781e1b938029827c",
"0x1e3a130e8caff9b5e563e8aaf84b2fc73668e351cfd28cf66f5012de61345b58",
"0xc1c216af33054c497ef04381f58582298b54335f632bd62add29e08067a59d9",
"0xf54c9c522a5c74e0d4e0c63611a7502657575b7a963c0e786d2a761c4e845bb",
"0x103cc8384be1be1087b9bb47c0eb6049f85e0413f7b408f1dc2fa1e6fc4af91b",
"0x28da9309acca103ecf19df72a722134d530bae6c660db3c364d0ebb200c2aeaa",
"0x27919dd2f9d3dc9fcbda1a23b95cf23e3630e6fd5210faca6acf4629b88e5ff1",
"0x1f86e3e9d147ed604c71e1fb6ef8459cfc40001bb4fc5ccc2661669b155abeba",
"0xe154ebd50db3c2864dbe1ed72b0816210851b86c353692d1744cb3372bfa72d",
"0x19ae65945a1dbed3965f2de3a39ff2d54ab1dee0f333b88fb49edb3fc9ac7899",
"0x99b97c878ce35c957d01b43dab07f8003e2c379b41ca61a6e56a9204fb16bc",
"0x21a0a43c88ce26effbf8b9ad668056b5b0362e5009f3d80033db473228fb7fc8"
],
[
"0x22a852af90680a8ca9688b71ed27c157d02b406bd6c7fd8121d7c7793ad2305d",
"0x17780b9469e81ca70c7cbb4347e7fb40c63ef68f3dde51d04cb47b3b83fc299e",
"0x255543a314afc5a2991413228c75eae398b90576b23b6cd86128665cc3bd9478",
"0x11cb20544f43437a688a7dcb573a7da4f8c7b4437349eedf3fce432a6f3c1653",
"0x160f5ac0b2481f8019e95e0b26445ba64dc03a4be8a15461496247e6ac29002a",
"0x206cf4290ac984434fa774bb0f8901a233905632b793c80b1d59966e96a73832",
"0x1b9435855d6cc4339240e9fa3819c2ff420980d6cf14721b75e4cb1fe57e118",
"0x2b9237e5941e1657efa507b892c3b8dd57fc8d52876ecb599dd5e1052b6b1f2f",
"0x182d8f91ee2a9a26215b35f3c0eecf8ec5cc360124cf6b903e70ca83126975dc",
"0x25528d5d31dbd77cfa6e7b1847f8e84c81c1ed5bae2a51c9e403cc754c54bb55",
"0x2f996ae620d00a3d4e55ef7a6ce0b681388f1b7ff3875b725aea6eb9039d8b25",
"0x2c2b1e7c70fec2f58ca01bef5ac37cbb9471ae7914bf08df7e47dd8e3bc3ce93",
"0x31b369d011f219e4a8fb21df9352878d93ff8035bcda834c3dcc41c3c2df85d"
],
[
"0xb27ba82a0ffb98368981736ae927a227828985c00c3e5df8c1276b1001089a1",
"0x1913d51d9c71d042bfbf649d9e6e6ea5fdd82b4fd3173ff2fe02b85582528912",
"0x76547449fa03845f185e61578a5a8f2683a19733fc04c73ac6a0b89bebb8453",
"0x186f160ae866e10c4be0ea7d204cd64e57337c60c40b34c3a371d753f2ff001a",
"0x2f3d6b8e2361166089501b9147e84ab6b09792ac17a5f080d75b3e320affc86c",
"0xdd85dcf08fd38d22f316d91d812cb2a884308775afa9f667c6ca80954397c86",
"0x238832e643158e96689b5803b0b77601b59bdfb4926113a3455f1ff4df6e2b46",
"0x202e38e669883619ecbc6a6a45368b9b9a3e9ab67efef50f896dfe48b78d3dac",
"0x67d2b612d75f4f974312d04ae0fef43a35b60ef054c0f475302c55fc10bdab0",
"0x21f0c6b896fb14220d811441629c78f8e8e27746026220e331cceb89a0ee89a3",
"0x2c825ee561c4ab6a22331177999c89806fbc34518387e807c20c359739ba9eb6",
"0x4625f2258edf0262ba0647cae426a486fc801dc0b59d20ec0f4d0af8cbd23ce",
"0x20a72083579059cb659952d3f2a01ed90d21002275b5ea11f209c763baa8457"
],
[
"0x4b46526207edc70a0d23c8438bc49a365635552dee240661a2cdeef966f20f6",
"0x2a9e342a56c8b6466d3fe533b89f1ab441b62dff3153d3ae6500c2c3be6365e8",
"0x2f98bf081e0eb78f8025c03ee9c199f2e838c51e5a0aefd333e9f7cfb38f534b",
"0x1e1d5920edcfe9d6b2d0ddb2f6f741afb06590340fc07b182ea7c3ebbd933931",
"0x1b59bb60e986194987fcea070498bcc7c93dd561ce8af5fade754ceac07b1705",
"0x24ce0acb522da527d3eab72865cf073d954babbed3cd1706aa69d767e9afe7cd",
"0xb43b8facc43cfc067b5513abcce846504b9395cdc14df96861a528a52ae2ec5",
"0x262758fb3e076936995ff3140ef7d1b0a1e0fe4240a50747e2c3c120d977f3ac",
"0xeab3f26417e6b53c532072de92d4aa78ccdf1da91660a461abb0f9fd7bdcd7f",
"0x20addeb2afd20e752a39d2f21ebddc2772773b062922dc8dd3ba068836dba464",
"0x754947436c3cded29a60c9e898237c2183a49db7e70e7eb73aefb4b5c693246",
"0x239ca61a6ef7e501810aa89ab4996dbea8fbd47fd2f7a2c96a818e93a3c38c89",
"0x19f11771049b5be81b43ca81e3611f4108a4b9dc30cd122441f74319c3adcde9"
]
],
[
[
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x12826e5b9be1c9b85f7c98aaca9ce28a870687d3628d60def0ab3072b57b09b8",
"0x22fea1297a4a5f08904d555c2e15d016102a4ed29c32b4bb10809ef14af42c77",
"0x24cc6751894087b831598b5bc7f9db3cbb48ce294d9208e1aa436cb5fa2e80e1",
"0x2cc3d0503a0e1da952b081ba5dc5b117e646bed572a645266c6ec3ce0a1474b9",
"0x11eedbe5a5969f33446503494b469a2b83f88d3aa477e5d6d7963a8333a61315",
"0x189ae9e9b162ab1a19d599cedcef428bd1325c78740aaad6715b710bfac4c1e6",
"0x1aad11449d6e2c6e1adcf9e89114c336c0145528f356ac049f52fd8cb084370a",
"0xd7e1eae2cfec406402d34c259e5966f6e2eb261d4f08e29088325a6bb669a63",
"0x796a23ad6ed2ac995104a0d3e6c75e977ce29aba1d25e62a9a8a20364ea1be0",
"0x299b8e8621d7d8c8d3d6286cb126b34ee53b2dc9a3697b8380c6e47f5711345c",
"0x20f11ee81d2ac9a9ed1cac61d9cfdf10bf1b49cdfbb6d232872a1df1427c1839",
"0xa403e979943b8d2f947f6eda6d41170881341bb5e4fbbb3b4fe3dd7dccdd777",
"0x4646253380f4bf642972ae81977779454aa0833fda36b1822cb9c09719e3dd1"
],
[
"0x12186bb22000ad84b6bf29179ade2d4e7e94ff07e51627e09580571061fa8ce8",
"0x237e39980f9007bbf8699dbece054fea1f19766be6101885d421fa3ea46b5348",
"0x1808cbe7ddf2a3684d8a164fe2d150df62206f6be33d577dc5798f193aeed7a1",
"0x33cccef05b0bcf7b77aa5560a0f949c90be5cc2c57122f9885d24a117c63f98",
"0x2854c82b4b5f5df6dd3872e3f371372de0d12e16e9108766920b5458105e76bd",
"0x9b63c75dfcab572d280b057fbc3640d35dd5f16244863ab8a31e0956da8802",
"0x28fd36f1c761ea7bce29e6f00067fa40b32e6b318f506b6c94bb847bf72b5b52",
"0x2b56c2e44f703a3b143da03c25749367f752b16817257e6d123b10bc85543432",
"0x184e5824689e4f81438567df435f39e1d35a819041d7eaf3af908429beb2bc2f",
"0x1004c5ecbab6b7d12f6bb4caeab33dd56c1f829ee28f47c29fbfbb147e884654",
"0xa973a665693ed09434edb2cb0a971ad277a82b3385788552349ae09e8bd0c85",
"0x125478c8973bc395b648c822091f8df469504a71ca4fdf1dab59a708d0fe4719",
"0x2b0696d45980020a2a421073440e3a4fd39edc5288e6900a5958e0cd81e0eee6",
"0x264625c74f2a3bbbdc19481b7866757e639c124b4eb560da531fcef99773903"
],
[
"0x2399faa648aedf9024c6ac3ceafea248216e24a9e56caf5acd29ce2546a9f6b2",
"0x540f5492497595e13080f02f6b1e653e2e51895160ffd5ca14d26aed93b8672",
"0x1c1ccb44ff8ab6da854e9271f4bef26d2ac26cd7441f1b69d16eee0d7a7b481b",
"0xe8efc85cfebde295ce589de60aec0db43c81f4be7da44eb26fa4b71f7cb7ee9",
"0xb1d810fcc721551e2a596e9009367fc6a924857ab29b703207b08c95ecd001d",
"0x9fcacc3998065124de01bf7c0c8ba26ac4241f1f7deca1eefe5ef3d5015e3ad",
"0x5d2f0a3c223122ac01214250320b52ff5a3d242118e19778b2c8cd1a976c611",
"0xc7513f762b64022a151d62302099dffd51791d9afd3dcf96cbfcf6035a2c27c",
"0x18fde6451062016edeaa32e40a8fc30751e17e9bac192f8ca891c11f39ebff81",
"0x77559473737549dfb2016dfa72558bb2c1c816d7318763a5e4fd516b04914e8",
"0x2de9ee6529e5abc7aee93b794c4eefdd517c4fe12fa56bce06a3708d86336bbe",
"0x12b591b7af35ffd997b3a613687e449225625dd5d101cef2d6f2af02d9dbd6d7",
"0x2f9f88fe9be36457e8a546455aa00a0f5100a7f32580b78f26a77bd0b7612181",
"0x9714e717daa3ceb3e9794d24abcd172831cba18066c4c048b0995e9e6df1dec"
],
[
"0x3add29fe398ed2d44f233125ecd1509e3cede77e6be08b94af4fec87eb3e48e",
"0x12bbfbb110ec2971007ddac5f8e36f655465d05f2462996b2114efacac70afb5",
"0x1b8d209d66b2c1acbaba435e304ae20662d336d10330beb3355cf801f194733f",
"0xa9d7ee7ee91677affd3ca4fc674625be897df79f82ec438e80f1e000c8b1f70",
"0xb6eb2254edfae1d7503c3518e64cf19f3443d6cd03b71cfbf1be5936da4e046",
"0x1a9ab3fc2059b0cff7e3cc431f7db45f59d8f7f724cd10a03f31a36638f8b52",
"0x23fba23ab4bc24d4880ba5a6ffd6eb5050dfb8d0f56476d3a30290eda372ac4",
"0xb26700fd4e950c25ad78fedb63fcb0d9ba73ecab858c071664866a9096f14d5",
"0x4a572b86105dba5253d7ed1e76d35a126e6718551b976b208f593f08158dea9",
"0x1bcbe67ed5fb7522adeafd1d9a150f8d57ada218db346915c86e6c00c00e38b8",
"0x2ea6b7a7265c503fcb284c2bb19512dae71ef357125c3ac755c6bc6cc37bdb66",
"0x30544eda9c322c6c872671d667fc5fcf09cfb8d34e8e5812b6e738e7ab40d8ef",
"0x206733e327a64b78d3c48b6f7580d0887c1778343b67768859e2532d7d1c46a7",
"0x14dac9059c9e78d96c7ef807ba342b946870679782231d2af0f6e4ab76cbd101"
],
[
"0x121af61f4dc5bb24890abeb9251e5cea94770ab062dc0c28bb8995dd8f183635",
"0x2f2ec51c48f8b73c51b264a70d2ba0b46bdb43f933de0faea8a7da2a97cb41f3",
"0x11738ced3933c4b27de13911db71ccd58b7b31344ed9153dbddddb91fbdbceab",
"0x9175b1fafacdc0e62b5f95e6ca67c3ffc96a26e37cfc734795b92f1e46124d4",
"0x210a4a80e6eaa799f7ce05752bbda4d4ff0520742c943e1efeeb12a91229a5af",
"0x19bafd0d7942b839f36ad3d70d9c87b55674b9bdee02a7dc30e4f99ebcc1d94f",
"0x26b8eab0dd0d95b7a8439e0ff7d3438a73a27b5993d81fcece729a824a3521b1",
"0x173985fe17f3b0fb85de6104c02b46c3d79eee9dc28b567f02ab1a1c0ddec576",
"0x1d948e8774b180fa5e1a3932439dfe8c5f32a437657d21277e42614b4c9a3dc3",
"0x1b61a03e218362204fd20b67536e5e6ca7b96dbb53d53ed1602302988614876f",
"0x1380beac7b062c6b89914a976a8d0b9d3276a13c82c23fa21f4fa4403e3267cd",
"0x2110c105efb481b679ceb2f112d6ea704442763ae2ac65edf8f15cfd169c560d",
"0xc272d10af2ef78a98dff7486c49d7505edd88c922e5672a3abb15cc49f4134",
"0x129dd677c1f8aa2d36d2a7d5340645dfac34a64ae456f91b97de9f8e91313615"
],
[
"0x2ca8ffee2d58f2945297b00cd0b511da167080d53949b3f1fceaca9616b6143d",
"0x26e36544d0b5952dde4007d11818465bde91c4dce65abc015e7556ba58b95ffa",
"0x1e97ce013afaa6e9c993e9cfdc9aaec91b06787819830985a72e9f7c6e516ab7",
"0x3016b074c814225e2d5c1091a8303eee4be476b1458ad54c16b4e1691f6b4724",
"0x1c1b2cf11f0d3a3a121be7d0ddfb24dc71f54b9bef943aee32963966922a8399",
"0xc474824afd2a880c6a85a7b7a5a434ac422c7a63aaf8ddc7c4d9325edef40e",
"0x19775ec781fd4089859f6b7f127c91eb83eeb7ec9eade14677b0a6b10b9e6e24",
"0x20a9a6284cfc4381795e3b06837e9596815fd5b6f162bde02f97db687c8479fd",
"0x20441aa5f4d5638e64d7ad9982b1bfcfde158f6a3cd6af62941e05cc8e533151",
"0x2d3d269ee324e7c43c11aa84cd15bad65444ef8369df15749a8a6b2c8121e2b9",
"0x1a5718f4a92dd8d179b932b0820f65c7bb93eabce398f997324f98ac76323b92",
"0x8fd4397aa8b3a84dd1ba4e2d0eb7c6d1c5eda1f764814b5ffe204c8ec735606",
"0x1a327ff2c46f5969fcacb463506e102d682502381fc3f999b9ffbd4520ba4695",
"0x10879ceabc3ad045d76f6cd5b26b56dc47b512d6509458f9ffde8da79e6649cd"
],
[
"0x2c99ef5e064147da9782b914a294b6c14d21ea7eec1f72e8761671069d82a134",
"0x226bf94b86b177cfe7f03103d59e3f9ce2393821954708e7c723f8104a68c664",
"0x66ab8beadae7bebd26a33adbd6bb392d6825da37a679e8af9ae8bc4813c3168",
"0xc099861545e013a687cdd49a3a296a8d2c2e99691c2535da712d351d5e63c10",
"0x1574c9e5caaa8a6a7fb4894d2c45d1901d1c42b3214fe9a72fd3cc668e399f76",
"0x3a65a91d35b6e877908d5c419e7850f645f62b1c913765a214bb0f7a2915b49",
"0xc073eaddb5d3f79e5bf83bac00f37700bd64502d8bf7d5a099fb3eff7d3b03f",
"0x217aa400b2b625bc36432a545e533124f99c1cb98eb85df747319e85d530470a",
"0x178a58ff122d168cd4ff11a47280a4b8e5cdb313411b6f6e9a947c7fb577a51f",
"0xea45d22479ef5773e58b0fe740868fc1e8b50bff76049d5b6ed5e723711867b",
"0x1c7cbf2448de7114eed701b041809034e07b946a0340b777268529d582c225aa",
"0x2487df9d5e066b76ffcb2f0ca190abf5fc1e5872c4b6a36a46870e9159201010",
"0x2c0cbbe46422917152ca1906462bcb5a13ef536322a8715237da09b8c594cac5",
"0xf7c3f3cc96ceda039e43c86c1b680c77d6f49f50e94de23e4db42f8e9caf7d3"
],
[
"0xd7d07cd3798f44d832a6571c21706758693e5e93684ce2d1a5e8a53e0cc6709",
"0x25e311b37cee693545e2c2efc2043bc073552115b3a065cef13d36547b6b9dc5",
"0x21b37be521835c32b673a31d71aed1bc7f3ea96fe1d4c23f14623a0a851a3cd8",
"0xb71a06bb75b0a10bfd28a3788bf54a8a144b3287df9c591a2643c4100fe388f",
"0x26ed5fff06ef9e1942bd3d0d3ba6848e47ec045cd26f93049d80cbfa6bcc73b0",
"0x137908baac2e35e13f86834abfe98d1b54b7c25d6c85fc6c05ec7cded9175517",
"0x143991e8386d62334ca0d87832a0845b48416ef5158c18e7b9db8cd6aee223aa",
"0x148dc9335f621fff9c8d2fa72a9cf5b6febabe1f5ce77689c1a29e393185fba3",
"0x256e145378d2604db8c509dda4552452b6c4a891fac5da199c7560768d948836",
"0x2280250e212be2a48d293796a88ac62b05411012f46a66f87a0220a3dff3f79d",
"0x9c89e06cad5430153dd52cc66ae4f521bf4145df048681beb2e06a385050117",
"0xaad68c20fade1e3e2bf70fcef4b550ba00d6399e20d83402fe09b52ddcdf527",
"0x25f4103521e36d55e418162ef8ebfec6d45695520ef47b8548ba38b52a27fbf5",
"0x10bd7824fc1b883b3da0072d2c6194c4a1e5957156594e908adbf6e6b1912b9b"
],
[
"0x29195117106623ffffb0af525c838686d0d97259fc73a5194609ac7b7b171313",
"0xf2336e0eee4685741ca23828c34c24f073491f0e72c139610524a56f71aa405",
"0x1e86ec086805bc7712b7510def651249ba1d491076241d99d00c692880f39a75",
"0x14937879c4c7127644c765b6362f8b98cfd32f8572d7aad9cc329bed5b507a69",
"0x59de873c59806f55114bc3f8309f9b64cfcba7434aae220447ea0e9c4a66da2",
"0x1662f26cf04f5b969cdd6b93e890ef2b5b1124f51822888dc2167bbecf7c31e7",
"0x5fb897d71edd8d8eb1f3b5c823a5882a06d964056afd532e6c88893a25f2615",
"0xecfacaad0c147e0b3c7e049771e6d4072b02ee4d171c0e53224214d17ade351",
"0x25f64d42a750971afcb8023070f6ec97bb2362b196a5aae2af6a70f2e7b357af",
"0x20be703f86d7c0b9dad98ff8bb9fc92fe8ac0a84c6897a75d851146f74840b71",
"0x296f3a9c104222692a44ad24f0f6fd8190027e0755567e9a7009ec71ef440ea0",
"0x6301679b6cdb17aa6c212ce342ecf681ab7cd96bf0bfb93350368004d97c353",
"0x7940eb04b61ec5341c1702f03993faed167db6fa2cea92290cd821b15fe4c2",
"0x90da12e1595551d2500f90310b7701df97676404113c33e475b2e7749adb613"
],
[
"0x1b62d4b17de67375b58f248a88dbf707cc9d1491bce0095644ca0219a01e40a",
"0xd9bb7dab4a189a3b6990a5526c82b0ae50ba7dd558f951bb9fd343cbb4b0e19",
"0x75d1aa6cd2b8d181c9e0f42275c9884ae6fa09186fe227e5c4673e56e3acd28",
"0x28f9e0058ebcf1591bc007cb02ac3acde0851427db20c7358dbef9fa9c57c2ba",
"0x17e39ccba3432a135c0075d720c649562ee4d31b6da2e9c90bd72a039765e73",
"0xcd0a4c27de11aeb6460e32fa2bcb289cb83321723155304929eb0ca4eea03c9",
"0x2745a059d0962f1bf0dde1e1b97e0bbf4c4143d10fd3fdeb8d2b295ee4d7a9dd",
"0x1365a904c7f6721002dbce17077a89a92bb8038bd27af53333f447c4cf035a80",
"0x2f812121e2eaccc7d51bf266398d5ba8f601a2aa6d335eb69f7864642177667",
"0x21f8d854091ddb601dab1b01fb30c3d4f77cc3167fa3332c3b32377a07e6aac8",
"0x18393505ea6230669a8030f6e76130a14c1070a901ba5b640b88ae80d7d30b5",
"0x1e151fedfea11659c189a31ba27f2ccf6956084188eb2c4c99b827f645f1db61",
"0x2ae1ec9e09577c82c97b4b09142ace51aaad1df7dc352cd4e5813d8cee9c98db",
"0x24ceb0766de25fc22789286a09287be740310c41747320bdf2eb5c956e040356"
],
[
"0x2e1681bc7c22d24c433f81dd3a326fd0242bfc7e2bdeb6307e4d2aca32adda1d",
"0x2a4a6cc884cfd08af4b0dbe89b6d8e0e58113207aded8cbab2d075053efe998c",
"0x142a83206747200fdb02773e766f504c65af82b200c0e7fd942f92be23d586be",
"0xdf653524fff92dde8ec1c9a51c1bec30bf36a4f01e9b3b62eb13f8ffdf7b8bf",
"0x2ae7f1414f1443735318163e1bfb1e1bcf5c271f37f6abf1aa86766b2e59e049",
"0x2030b7bc2a70905d031674efb420336fabb0769ac0125c35dfe2ff372c1aa4eb",
"0x12a710de6d17f91af890102226853bb64209f1b41331a1d17305bf5b7b52172d",
"0x1fba713b98742311dfb3fa356ff83eef234ce8bf2b0d4a52de7af4d2519f2f12",
"0xc8f8722892a2f06c5ab454e407bd557e9c2ea77ef807ee0e3d89c6785b0d33",
"0xdbd093dc16e73832bde62d05cbb06f8271fa47229470462d8c18cf8a124f9eb",
"0x1dca3060a6bbc4c324f7efba22274fd8d1f2560a4eeba8c8b0d38997e0d9c46b",
"0x291bd9401de20916b9002a0066114b3bfae4d3c8308aba4afdccdf0aec12d66a",
"0x1c97fc775f962fe05a7b66346b93c3260c8f6a90a7f5c63223a3386e19852ead",
"0x1c7dcecea59e6f7beb6d702e2fe74588415d30e5dc09970bb2d56acc8e08328f"
],
[
"0x65850d11d0eca87c3697b6f5e57f78ca86952bad1c9047dbd2eb6be9e9db30",
"0x1eb97819b3531ebb640ed6b42134335419101d1db60dd1a924ef9665f7a91af5",
"0xee4683c8da536b6b50773a469bbbde2e417a1cf9be221520af1e755968d7ff6",
"0x2dfcfb280a3d372dbc15639eace45c0bac562c44e292f1429bc916578fb0bfd",
"0x12ea921acf5b8adc6a4e36be85713576d658099230b0b1766c666f12d92ab142",
"0xb5342503af446ef824df4df6a088195fb67276657d420e6f312b2628e922986",
"0x9265fb314a676b6b3f827f07283a1ed4f300e8d90f967b20ff61f455d2ab2fe",
"0xab913f65e1ceb39ed8b83bd5d7fd900e78511edabcfe62314dd10d567858d8e",
"0x407d585a6a7efb561377e5f3972319a3e7285e146c5499ef6c8504a3d0b62e3",
"0x2ff5bbbc022d1b74fe184c064e58d967f1aad1f0926c906a5e356cfc3b81ad24",
"0x6da6d88c233e3182c5fa5ccda1392c0f89f7c6bec4e60da8df8054807eb0922",
"0xaab27e6279952c7291f036918f0b279d3b1d9f8e4e8ac380da77ec2fc24ea0",
"0x27737fcd76dd296c28817646d30b1168c4d00e1f764c4565caa3276defd15c7e",
"0x110a5e84de09209e9363c03c22b537ac6a7aaba2f6a9d1a1f6bfab71a960a583"
],
[
"0x1a59b36b94f9d723577e504d600c493f2810f0e67112672c743abbb13abf43b8",
"0x226b91e352c65de4fcee112445bff20e4a67af0e110957319b2860d5087406bb",
"0x168e771e9f8f860c49367ef919a00d4f128bab01c13d7dd72ce8d36bc6d1d835",
"0xb345890b33c23d167396c583d12e4f3d9efc904f261202512350190ab1961c5",
"0x1815d4c2e6a18f4f3fa538a004146d7f540fbe80a4605857714fba2795615df9",
"0x282a555f9ad4fb57698faa1fc3279bb8c28c1f8dc8c693225bd8520db4313489",
"0x148ab15972a6925b714602710fe9e64c0a015053acb838d0e876a46cb5653f59",
"0x8e13c2e61c446b53024d2116ab176c843600d00e676402c4641745158c243f8",
"0x11cb83e01ff5803b049a2b59ae9915b3e0045e1db694a6df9de9c4e7152d191d",
"0x119816862c8226e9e5dfabf3167b3b2bf7fb3d19063989b24a16d97c94bd53d7",
"0xc61ec79b106e9dc6494a6359f175ff637839ca53ac8e7a13471c56646180390",
"0x1e8ee641308ba6fe5600b2df492cf2f14f9892ba1025826c53c77aeb7bcdb04b",
"0x16b61b242d41e1975843309a01a36a14397d7c8e7beb4afbd9233b453aaccdba",
"0x13822dcc3f6271b71549c2cd917b859cdac36af6848804d15a354d4de0f67ef9"
],
[
"0x1a4b186b77cd53f961c8ccb7815d9781cef7a52af64d0bf746cb522512d3d0af",
"0xac5b86128ee47944c12af531cf1458042c35adfcd9e5b6a7531973714559de7",
"0xc2a439067121449c1ef3dba6be1ff84f6ab7fac4bbd54ad7539e61826ca1971",
"0x4f7f1fafee121bb811344f73f54f4a3583076739dd9dfc462b3ae6343c93cb0",
"0x18f6c40e3ccf885804b374433af0a962b2963fb9aa01e8bae8cc834b3e17a31d",
"0x174c1a1095e95d4f098c8d60826776c2f73691db37ec3b937835b65b01ba13d6",
"0x1f7f9704cab1cfea2b2471d579ef99d193b234af90e62ca09b5a671c2428a515",
"0x1fa02616024cd9bedf643ea36d262d1b24f38a557a77a82c686618c3c33edf9",
"0x2e1c292e06b7f8a6e4344f10540675a63ca49e452f69565fcfbcd43bac0f3af4",
"0x6fbced52576a913e6cdc5c5c96fdc8f9f4e931fa90beeb46d9b3c2d775e1e36",
"0x2cec67e62320bc6a0ca32518ec81c74363a4b6d259bd275a63425d6cede468d8",
"0x276e2623828949e6a2fdc917e2ed45dce0ee503cdaffc9add815f6d1d3c4f9d5",
"0xc75ba60f8e0f6afa126e75703b83d9908116147b8b2db45ef24f3156b8f1855",
"0x85e380905eb2cb7e753d0ab0ff4918b232c734418b6bfe1331de492fc76b21c"
]
],
[
[
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x113ad8b46c3eec20c9965b5a7b2e8a51529871d0401b4de6f63de9e5211623e2",
"0x1fc50a16dbdfa1c3b99038f47f81a1c5d1ef6e7b221d4ccca6e821220130e000",
"0x1214a9d6d7288fe85651a8cb83048c7669c83b5ed82ca2642fff01e852a44b4a",
"0xd421a7c25af5538788f49475836712af5da156f88c5867568cd958e305026cc",
"0x2de8ba83d2b6ab6a711fb9230adee1cba46de8c930c86d266acb8c1cb9684e24",
"0xea7be82f1cb493b1bbd83ab7ca285bf0a1559ea05c3f59827b3b013d0a91fb2",
"0x1e3ae7e5775d352651d713ebdfcebf9ca8e905cfb792bf7874239450f914c8c5",
"0x5943e3618a32cf050018a4e2375f4d027b8c14ac82a0de57cbb90c5122a64b4",
"0x603755180f66e98215d61e5346b116cc00cfd058274d7d969b3af95e78bb335",
"0x19817db66fdb8215ecf70476c4044c3f41d78ac5a549c684e35845947dca0b11",
"0x73965f7a9ba8cb33a955d42da55fd7c37a3f0226b029d36dcb3fbea95d642f3",
"0x9a550431430846b6694125b5642b00607f36a1a29485361a3cf427da77eccd0",
"0x68eb4e9d6e0a588b61a6ad501f380da0f009067666c0853d156e33d59c43515",
"0x225e00a0da5a7f7496b70d0923a7cf7ff332bff06958cc0f3fad439874f6024d"
],
[
"0x19a92ac6087ab89982fe5650e5e799f91003fd8b45400748d2c25e40f04c578d",
"0x7930cd5256f8ab77ab92b08bbb5b195a44a2382c66e27514619efb94e649110",
"0x2d8d3d924f2897199e38eafbc7e101d17d7e563488a9f3198060796ae84c1b08",
"0x1c0de2bfeafce164c9838067a8df6340f9d97edf0122333159b714f45c3f13b1",
"0x20e4a28303dd55e5cee332f30eebafbd7932e7b3531d942454c344b8b8c17cde",
"0x1bb15ee4d492a8e2cf1b10db1b738c6780066ea8347abe536357a723f6cf57be",
"0x2ccf31a572412bb7d9cfa637707853217e7db5550b1cc30a894cdf483a3b63e3",
"0x1d492c34b245bc12941bb163c5118bfcf85bc4f344042b2031ed8662a1f6ffa",
"0x1c9b5c2c07fccfd9dc6b3abfe05675fc997eb7b8cbd8d8b4cb7e671615b0ecce",
"0x243930ba01dfd3945f2aa02d588922b47c1bef2ff8023a849b4ca66a1bfe98b",
"0x8f328e5e66c0b879b36c233f598bd8578d18e2da9f019f0411731524f42d90b",
"0x284a2f083ee32a6663081c800713e0f2395e348dcecc89fc81aa75a5db2ba12b",
"0x19772e83816fc2c49b96427c6ad0573347fa49a5df691252592aebc390055a35",
"0x2dc5900039d4c8523ac379945cb9b58a54e01dbacd67f0c4baee85d353d3fe97",
"0xcc378b44e58f668b45832fdab4a49372731ef2415c37f40b5ded5594aef3cca"
],
[
"0x302608d750f16491df5a285f5f7f6a5ce6b554f5dacf0b69d450b24bbb4967d7",
"0x28f8144bdae1b904ead70b3b72c7943037de6b48490efd3177783594edd28b9f",
"0x2aa9aae62cdb852490c650ff9e27c9b33d4cd4020ca66f5e1a6b374e662935bc",
"0x1e394d80067f0e10baa95de0d99b4e39204a18727d1401b476ec976b5f173a82",
"0x20bd028c958d57b79e35218fe34e469ebdaa8e8e714e918d58191f65046b972a",
"0x27fa2120431379cbd86205ff114f34dd2dbce13e1c2a0a8e46a1dc27e7b686fd",
"0x564651bc1179170e3c97afbc4f493617017b43b213eeed86b9b1bffe521fe86",
"0x7333cbd0ff13c8ade1febe72892d9ad435c7b451aa72a8c05a7082395882865",
"0x290a7ae732f4754e0cb91923c9248971932607be2e829163f11612ff8a955b10",
"0x1eb520feac62e4545f4fe7cdb675e36474b8b1fd19e15d7c73a2b1dfbb23fed7",
"0x259a2a1f046844724cf992aedc2635f6680f55e8a0fdac695ecd05fbc2cbbd19",
"0x8f78e6dc59cd4694c41abbca086569a9083ca8cc800bd9134e4d48ed9d89dc3",
"0x2d8ec6adad3a646843c88cda01285f8f32d29c6b1025cb5421422bf8bdba7fce",
"0x1b72ac4374e95b7b7d28cd2909507f3006e8352d4af19e47b0b909682a03200e",
"0xd7d8273de237ba2d4d5e8051c5bd5e312d298b6726ffbd3af7e732af91dff27"
],
[
"0x1a3c7daa6b4af5662d0d8407b287674d83eae5b7563405f48def49981c98c424",
"0x2474f543d1f2f33b5ef3fbb190651135a59390c8a3661fae2df1d3f14432b608",
"0x1848a60efc89965073b95773f467666687e38d59be208e8377d31903921057e4",
"0x2ca2d8b0a793d90ed318cdb5f697193137155bcfb942d82bef558be5fab359bd",
"0x6ed98a185bb2358f334eb257ae5e3183599c054c1b4e2022569b8368da1abc8",
"0x1ab527614a37c2ffb00c0fad360abaa447ac1063fb9fc656d0148cdce2d7c372",
"0xbc769cd7b34fcd1b454abff0c00b89b540a619b87c95444679c3ac6be84d450",
"0x29ad5236ffbb598a2f8d238703608db7a497a7453ef9d579fbf05be38f8f76f1",
"0x1434ece209d491280c5ae05d7e26cf92d99bb7289a5c1cac09a38ce53b6e03df",
"0x255dfbdf30553413a1f8f5113d60e98583838d13e11c1ee02b25a387ea00cccf",
"0x67d9294b4072b12c368c2816a53bb16b7e7e2a79979a416f2d02af862abedfb",
"0x293ca8a06c5f179d938065ea47f80f65ff21969a9429e400aa177ecf6b6ae853",
"0x255b96258dc8e1644f1bcaecee773632f25a6ea803cd32a1e01f82573775f6fc",
"0x1f2a8dcafe79fd0ea22bb1563c3b28b23c5c4d7591d45e06744b3b379d426618",
"0x22ebe0a315e07be4b0928885f52449b011b3967e519e438c424cc0428c35726f"
],
[
"0x2db1c9855ac29acc679367dbf70f08d98894077df2411f91ef68dd90177c1e9b",
"0x21715a84742c02d057ac41f743b166da023228425681950edfaff8581201a097",
"0xc893808103549d2030cbfe0004ea6655e24ee71a1f8c1f072d5cf6e17ae2499",
"0x28427ab007a68c7ab12371f13bd7dba0acf7e97ea6e64ae52d5219210fe8a2b0",
"0x51deb4b234890e31f5ac8e69a1e532453774ae93a9e9360fe009ed377ae9c36",
"0x170cee2983fa3d3ecef2f806f40eed8d8e135ceff076fc530bbfee876c9e7f1e",
"0x244b6b63f8041a5975f4640b18c7d067e4a0627f18751dc906016b8893c35123",
"0x2e72b1b114dfee7e8d7f0161255c6895fa786070ce62d806c45a22d7d98a0a30",
"0x228e7399b0e05802852bdd5d5e09966f03c4c3aff53c683eb2f69e0fcc21c0bb",
"0x18451132581b9adf996c6cae15b92d2e4c09fdc7d6c27b4426f32b5e66a0b723",
"0xe1d7ec2a54b11b36e65d7551e9a875a88ccc7a6c0470e7c26e199670a0859b2",
"0x29b68e652deac818824da0c2a11b408d7a839a2e8576c55bfa5f1335ffc5b93",
"0x186e1360041193e12f38099b0e35e767affc3410f6a8dfce9bc75567e39bc402",
"0x19294dd22da673470377d671fabdf42cecd37ecbc018386a438706d6106b04a8",
"0x2ed3cf0214f444d436655e03af8aee2b4d96961eea06e8133bd6e8d3e38234f"
],
[
"0xf06ee47558f182d810bbcb214a25da7f70a567a0464b348e1b30eca7de99d27",
"0x1ef0e0c1f0b5f67644c486fecf02238cb7f4fa63a082a3c030daddce65a4b82a",
"0xad80718c6e9d1c67b4a37b9e103db32f225fe42a9ba655ff065618b87b82aea",
"0x2cffc378d2cec76ba7080b37fc671a96328bcdfc4630fcc2f2133dcf29c70dd1",
"0x21f1f6a630471e32a8b9ac4b7ed4b04c56b96a71ee20a66a5458c6b8d5c6d346",
"0x288851770f1a13822251da91c84e123593fae1c9cbce6c4ff2317e70bb658209",
"0x2ff4ee110ee1be62e2715dcd119c95b95413376e88ec3ddc3f06fc9db8c27a94",
"0x2ad369a84b57f7455ba31064001ca7779d2b4b96b0b4a91f156abec366aab786",
"0x24f0fa154fcc6d6459d6c56f711f25e38d57e90be7b8046c9e001815edb41404",
"0x7221cad39d9b5f8db705a8723038b92b6baf87284131735eafbecd533dda6d1",
"0x173b3b349ee888d934aee9c14e889cd7d785d1e3e4f1eb72a5c2e56c48fd54c9",
"0x9bc3e40bfe5f616fbd520f3894a0fdd37feb29429fd3a5015953171de3a70f9",
"0x29cb31e1afef4f252578aabd76f23a1320aac90d4a0a66c2225e3d94cc48d22f",
"0x1932bc6bb488b736e0d4bf306d41e622e66c1d685aa4598153054b40f75c0b00",
"0xcb6fa0a5e11b9192a51904939d45a05af8055bdea3f379faac29d1309830e85"
],
[
"0x2166d78d948dafa963381cf1560d00bf3a0a1c288a743344c8643a58daf8cbb3",
"0x278e8dac8c56b28a23dba4d90fba91eb947f5092d4a7a9ec7802f61778488e87",
"0x20d87476f1243f490246f88736ee5fd6d33191f0561271487e9693fcfd7a649",
"0xcfcaa1d7d382e1fe1fcb950e14df202a08793d7185255b025d562eb8d97544",
"0xc39dbdf6e6d24a91a0a45f922c894be252baa127d9ac76909f86dc0bcc68a66",
"0x1795384e91bafa554dedf5156cd799e11210ffd2afe817b5c63ad5b85e7fdd06",
"0x2666ec1a67daa7beb057aa0e6e8a10396601a21884372369c012b49aaf849049",
"0x15793f31caea39de315dc5bf5a3662ad5d8e1a12fa1a7280f2efaadafa97adf4",
"0x18800bda17a89832fea54f26741d86c6b6fb9e15b02e7bd065533cb5661d2a95",
"0x156f6a09e6a81d8eecf4dbf21646bb968b2406786cd1dedd4cc732b7532f7fe0",
"0x2977658a10de6e7921ab9e34bcf07bbca61a72549ae57d0c15691bd143d4d2de",
"0x284181093e43419789263736e544817111fdcb559a43773f05186608acc542e4",
"0x200fa20ed1b871313900c01f8b697760d030d8cc0150fdc58e04a0d8a2b344b1",
"0x8d1d68b8437bc980aa7c59d83393b162a0827de74070d2d34b4eaedc17e7e60",
"0x39598a1443c009678602b8dd3474f276da5d62425083ec628a1737e8cca3e7c"
],
[
"0x2929be9bfe3f93cd34fceae665d96b1de1afb26bcaeea2f4edc454c50cbc4401",
"0xfaf33843e6733437e98995e6f7bfa6feefa73d7410d8585918c347f3cfe92a5",
"0x134b86642ff202388f4fe37356ca4f0ec3805566b7d4d412d8937a359ef9b401",
"0x1d8724c5e641d96f6e372771b0a776bb742fd3c08e1ae250432246cd3bd01bde",
"0x305614aacdfd4167cd1bfdd8fcdece6892d84d4a65e86e6f7c6349fb75e48b96",
"0x2cda26473cfdcd185ba28cfdaa15e7de2359646a0287ebe8b60d702df009010c",
"0x2b0666971fd911529e70ef918d019f44b5c9d77442b6d1866f6e76832d478847",
"0x56c55df543a8d4043a12f409cd2c4bcf43a770f3e38c3fc79ad214b42da834c",
"0x16b11f24502aa4cc3b0c2562a18a24ab8f986431b244034d3fc29555402b5f4a",
"0x18ea0ede9010c7bf0fac361b5b8e7f97c75ed93a13a7ad4a017d920c03c98686",
"0x396097733de5a1fa4a548749b73ff7c426f98d9e5ad16920614d337897f6b1f",
"0xb9d5a3a957eef251ae9c26e53423f9be6f2efc24bb18756893a9d80e56a0825",
"0x1a63a589d1710aa705136cb520c2f1c44d778e490c212d4b72e9f1538e5555cf",
"0x1c0343816b8cecba48519b59b0fb6d4a9bad309ee38311dc3e8cfe8bad75dfbf",
"0x1af56e6575123f99c5d7ab7b83770f0fd60fb9f4038c2942644069e3c243793d"
],
[
"0x1076d439c67997c37c6c1fda9a37dc2f762dd577946f36fcfdccd7898ec67cd4",
"0x2ba437d6ae6c588c6b71506c8b508347e634b65cee317af1fbb9cc2a997fc006",
"0x2c04878b4cb8156e9983d11574ed99dc7562d3fbb1878257abbc68852fdd2680",
"0xfee8f9731397974100834649ee87a27ac92be7a3810303460141aafb542a429",
"0xef9ae65eb922605d4260ab2021dfbb4774cd5ffaedc1b79dc681208be6f85c5",
"0x27ab4b40901465ef59007114ecf1fbfab6157c24f402246b86a60397267308f3",
"0x2bb5bf03cef933e4ee87f511de3985cff0323ab7b718d4cbca3f429addbf3052",
"0x1ee10e28c612d9d6ee72f1274850c3e829be5c06f5bb293280152a5610eb01e3",
"0x20a9d575fea891302b106439ab03a8a951d8b2ef2b562991946eb2541f1fbad",
"0xb73119c98d25eb6de14246b1401bef485c9dc6accedc23494b9526a39d53221",
"0x2a66defcf489c23eec5079a0ece1c5341027a59e7c592e760184b826d70dba9c",
"0x4aa8e91dc30f9ca318fe24718fe595871f7897e92d57f2d87d4b1bcf9a635e1",
"0x133369b3bcc73ee793e869360cd50d8df60fe398ed9d9c0d0d03e669f796e87f",
"0x709eab96cc6255f2ae917914f25085025490c423284916e23b608638ccce29c",
"0xe8d9c0707dc5bf80a2f08c343c69cc659def86630af3141a003acb3d3e90c08"
],
[
"0x185c9ad0da87cf824624d02bec3ba4665822a0f6b3b25deff3afcc687ce1321d",
"0x24a6c1919f94aba9db98a5af38feaa5391cda79f9debfaf118670d7927e41db0",
"0x1783a45215805ade9d359232120b183db54b43f9a7e8fb8dcd95ba9bbabbba59",
"0x116f239abe820737b5e1e82b2ace3a45cefac489a6bff084e323036f54277108",
"0x1adccb898e5fe18b5c29a4708c4b112b56d0fa5d299b5edc07d6f5bc00428b8b",
"0x27122781df7bb05f6ae9e14e8e99da5c23dc77cc06108c0ebb061e5d1be93626",
"0x2e37a7440e75b649a0799cffeb7f9dae38fadfc7cab6c5585e4a84f437729d02",
"0x29f356dcec3b79523c0589a7046ef0758486828b212146c3f5ce987af3fd719e",
"0xf9c05f609ad14debeaff107b95accd60e62662259905105abfafa9e8e08eaea",
"0x1c66828552cac1443334ed70b7fd7fb525f907ab64479d117864c92e911986c6",
"0x10f43368c0567f405aa6aafcf367e3e68beff957c4b0cba17c30c62b3f95490c",
"0x253a11c66463a6dcafd8399fca58ba27febbc307d8833c666e0d8df072c5f69f",
"0x1e99516c240d42bcaaad9c73f21a46193db8433349203035eea30398f9df7893",
"0xc67a06b33cf73882b1c7152d4585b78223d85c77cddc2c7d3594824c5016565",
"0x1f6dd8e85d3597bb6d37b47a1f063122014c888250b38cf8e82e3e5471ef84a9"
],
[
"0x2702b1be39e91044fb73926c1104719f4c037aa4151823ceab24f0cec49f4648",
"0x4d80e7ef7e27a2b1397678ac42abcc6e2662c880503e4643fdfbace67273b92",
"0xfc96302e8662de23cc5c8c228ac8ac2dcdbfc488a59f4dd41e3f27095f7e195",
"0x2a31cadb918d78b96dcd548b394425a42e2aa7a28a6b63e509261bfae6fa25b3",
"0x18a2661c03ab9b0d8f7d01091c7e563efc033196747e34139d3f5cc7ac001e9a",
"0x26812acd03db3412cad4bba1aef71bd44b0094d318ace0366c79e729ff0eb2e6",
"0x371f0d49346df2d88b9f1ada8ac99dd8125cfa6c30f3738fb9932a853268e",
"0x27cea9c43fe0bf1ce9e53c0c026e839d80a7d869136603102cddf63cdf28b975",
"0x95f1db43c827e6f0b9cd4fe929e7b8c78c93fd02ec9e0f10992feb753b4ca07",
"0x10a66268dd9a2f368e95507efc2085eeeee8ce977ca1eff5b2e3d94bc342ff58",
"0x25a2a43ee612663dbd61814f2deb06ed005a7414f99825f8be66f542f95a7b2f",
"0xe4fd498778c2c76a02d0d91d8f89825856e706f598337dfebbf3ca33397968f",
"0x13d84ca7f358aaffb1ee8ebae81c32e01adc01e90d09c9451af36e31af82170e",
"0x740c1e9b8ed16e9fae204369c554cfb72007dccfd2530f2e34d544003ae5994",
"0xcc8f90bab68e6de84845da1899bfc52440bdddb940b208301ae94a95777cb72"
],
[
"0xaf71a51cd463b9faeda93803cdc03186c7781845252fdf4e0155709d93dd375",
"0x17f6a3aedb0005a9b0a258e31b8e6e2a48f3f9551cef6812a49075aebb8785f5",
"0x24b22e5ce671ce79dff8de16d7cd2bd6375d7ecaa016ecf59cfeb246dac80720",
"0x240caf6d7ab2f7b6ab3d15efcf3074f5b2142a1e804f25012d988454809e096c",
"0xf8aeec74144d00a3ca38bff10bb0f3a8dbff4af6197847db879745aeb57b5ea",
"0x213d29d4e1b6c01fc0d109ea6169490076d131d8e034b3040f7bd9c3c373ea17",
"0xd0327b593042de04f58e0ff93386d1608d33a86872c1d3e7e089120aac7a4ff",
"0xbdc078b1edd9cb1fd2c2a01a97bdf7d458648439fac1f28509b41a2dc9e7740",
"0x26bc00d9cd25124442832d97abd90866d3fa7a401bf38bd95fa7ad526548fea2",
"0x1f14aab5a59ad452cf692b123c65873dd80ffc188798a4570eca792b3f2f257e",
"0x182f1c93c6eb29867b1559c58207a6aeaf40b66eaaf579ca6bd7ca40aaeb7abd",
"0x126ec8c200262c45d1133bf9da5f1e5fd62bcea1e493a080af1bd283ab86f122",
"0x5a78464a4b6bbca6e96d839827bfddbaa9d924840aef6555de643df167d4caa",
"0x2a84c424eb58f9c38b4380af38e0458468980988faa1f0d4c6e723845678523",
"0xc0dcf2b13552ec55c97166be347ca2f93b07e2a10164096d353fa280c796821"
],
[
"0x28667f9c7332073e293c80b98edffae01af4f67b4c52ab45e49db8b30f182d28",
"0x1e62029129492c8bdf8514945950681361591a9f5eedc2449e5f229c85bb97db",
"0x52c33fce08d4a39fd805156c8affb84349428ba4920cfd2e7902ddcf9b0557f",
"0x2224c85f0c0b4093014db1e817d1ff16918f15e0cd231b848a48cf83324c4144",
"0x1f53514a97e8b57204e57bd6b1b1d9555f3b50368154154e67c2134fd3151591",
"0x2132f71ac89892c984a0a73653f2d45222ada34181a9e6dbcea0d63961f934f3",
"0x4dbc4c8de708e59aa4b2116e53944bec97ed42309b4a184561d8f32d291f9c1",
"0x2565a17a6bc56e87b0b63664319b8a47bf662c1f49e2ec9251be4fdf33d90f4f",
"0x173e80596756cd9aee04bd6dd9dc15e4b8ebbfefe3771d9819bd4d444726f79d",
"0x1d34655b5776e24701621acb41324cacb50165e019bff1e65f98304f7d822a6",
"0x42eea616d905025147a482eb436a3b75535c9869b76d6cdace118e15c91fb77",
"0xcf030b10a1b4291e576ebabb39c583fea0fa6decfa98cff7a96dc06cb77da51",
"0x260ef13ac7e80fd2db3de9eb942edeef3f5e252d4c04508b1e1b130191ad0df6",
"0xbc367fd93ceacb599c614aa28068783a5d27eec1fc8fa1765015b76dd82f5cf",
"0x1f126117a949dff900fa5d111a0ce2661bd9d5444577c491a9951cfb58192d"
],
[
"0x2763c33f5b2d7bc3a23040afbcdaf998bb13254c272a5f8635a12606a59c2e5c",
"0x16bae774867656e64fc95f3c249f801f150fd7ee28d195bad9eae43743875278",
"0xf0d475225c99702bba4fd01276102b5cabff7bd4d147c0e3cdee4c07ac31b1",
"0x39a288951a0381e3aaf598ef132853b5d694716c20db87923f0bcf14c914a8",
"0x27bcd639c47482d2dc8b6d13da19fb8d63f3d6c875f6fea486da6ff2ee11e107",
"0x121395023931f6bb3ef28b6063eb7a2ed7839e083fdb92c1e5593c83edff5f53",
"0x290ed9ae7479f9be13af13f98bf88507e6fdf018710e4859fd2e48cc66ff9b24",
"0x15b085b5eb678f8cedf21bfb30e2d64ae1cbdd7472449ed24e6034101c658868",
"0x12a643f4a327acd2454514dd469551e36ab0e3f24ecc3b28a76dc1f38214fe38",
"0x16a1eedbbea79c5411a639e3bf0e90f6e3f740f141599af8e6a43a2069572f95",
"0x5ce7f592dca2148e198554fd64db8c479f29d23f1f16daf3cb8930d9456e4c5",
"0x110298fe7f2bcfdac0bcdc3affeeb436d7b3a377453ae778fabd37a9acb299a7",
"0x14829f09d4beebbe6fc30545047243fb3dab99c62aab7364a7a5b427457a02c0",
"0x278b58503e0b9014104f8c446bed4c6de575c72d4dd9db3d1866846979aab9b",
"0x138f67fbd9cb91ef5206d48cabb269ac42bd352cf371e43311bccad89acc509e"
],
[
"0xf81a8d8e08758e8a32aa8292666c4cb6ba3f5f06c4dcf4fc502ff97f03a85a6",
"0x10f0172799be23a8fc3f156adfb6c512ba415e35167b563bf7b186fd12a41e57",
"0x1183e91b7ab7372f157d4c477691eeaffc9e8863fb2d806570c67f4b1858fc54",
"0x17620d438499f6c0a66bb577add4cadd66ad39e3377d302bf83d3bba126b2aca",
"0xe9e8373114ad25af97d28e272fc42d8490373cab582193b874a10428ee6cd21",
"0x1f665ba33da4ab9d9806caff77ced39c9be254fcc4c5da8f570096111fb109b5",
"0x135aa38339bd927dd5064e4d572df55811b226bab54b0acaee511d60aedb02fa",
"0x22bc96cbe7f8cbca81b29ba7df848dd6599035ff515b6d485550842e1a35a1c2",
"0x11e1b0af7f5fc9f049877154ae173a1a72c7bc3ba192e438a9d0fa81fdfa4900",
"0x14de448becba6ca0adb21b07455d2c2864c7b85382267026e28f0978822d65ac",
"0x1844a81d4fab57aedbb4c4628e2e47fcb2922883eab0b2e1de16f248de4bb902",
"0xeef04f24ae210ee0a94bc5621574783e49d4d93365a2b3dd069fafd43055452",
"0x1328467c87ba73028921a89333bab97f8b24fcaa72f43837cbcfe5dfb7a945fe",
"0x791d832e976b66bdaaff450731ff35d998595ab9748f695bb45d2c0fef06930",
"0x11492ba406435f35623906ff45df11c39efb59fff09f501fb893d717e34f9d61"
]
],
[
[
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x111d04c083f51a6fdf87412a537f6601076d61f435094ea16946efbfa4893e97",
"0x133c5913f25ff5eaa860d0318f6a4b4349fd22f2d53530e5c785b70988a3a88",
"0x8875f47d6f518c8c2df51a786bf2207aade284067228f440e7d0307520a56cf",
"0xba9f44a107a81cb23fba66f2bc34152728f5f5ca68406649a7efe47c9473f21",
"0x542832ab23b6c7a4b547a1066037152a2442e998c5381ba97698413153ba6f1",
"0xba1f764367360952942ccb6edf051c8f937906a816641e0d1e9e2ed26906fa8",
"0x2e0611fa4ca3985d7bfaf512f21a4081141f4ed0dc4b022834d3cb6cfd8b7ffc",
"0xe6f23c0ef6f159dec68341a87830fb864b6c08cb954a14a2500876697897fb7",
"0x1a7a2a4a08d87e75f720302bead7ca21c8f7c2ed2debaced9b8b1b2da461cbc",
"0x1d8005df48c8565987dbb442b482cae5bfc10ee486ecc5b670ce861345979d1d",
"0x28122254823f8926acb7e98f557e796282e5e1271618858e76d49d0886da16f3",
"0x2414d4aefc7b4857df681328e68a582d23b2dcffd579a8e6aeed6c61050e05cd",
"0x2f710c72d6da19c7d87cbffd55665b472b0265d13e2326a9a33b96e95d3746b6",
"0x2e285441d0bed90bb41d6480836850e4d76da8211b04a236dbc7c3c30320c00e",
"0x2964901a2b42e9aea1a6593662aeb9e12077a287434bda4ec2012e36a19dc95c"
],
[
"0x69b1779dec3eaded3f07d0c3e6cecd6cffe78d747faedad9c90665aa2d92cb3",
"0x187aae261ef3ee21b37023518a071675c6d00bde82bd7f5441448abb632a764b",
"0x169538094d4f752529471e3fddc9ef994cfad4f96dcc7d636f0fd509b8eb9c31",
"0xa68830f19c0a729b2f89be27373d397ae1157bf507e7799d4220166ea0982d7",
"0x18ae39086eebb98d1fc5f05fa0f87ddcb149b0afe38d1bbb85a65697895e63f",
"0x4c5ebc771344cc0612765710bfcb1c2e6097abc3d346f049495f7d7b7f06cb1",
"0x29faa7dadc8b7e9588d4a601e77bd80aadf272a1bfec3c443ca3ccac81d9e1e1",
"0x2acf3493012bbd818724e7ceda2431e97c8933bfaeb5d7463b512e6e8e8f7fcc",
"0x23b34612e7d052f6b312ca0e0cf70034ad232d9bf63c88821085383b6f6ec4a3",
"0x11680cc6e80b0e430a4cd3607017fa8331d86c4d03a96dfc18767c97cbe0a197",
"0x1fa772ebde6f3732444623d67fe991116298f8f30a2d1010c8ae6132a3d6907f",
"0x2e63f1740332f57e8317f2592ebd8db0812714d6604132d525e33e19b3c98494",
"0x1202e349d1d7b805846e90834efc911eb6b10c2a09eaeaa29ed288bd779b14f1",
"0x168fdc32d4aa8dc9034ad4a4fafee89f0ed5c980d3db424d38f8ce5cd04c237c",
"0xb9ae9f5ee6ad70a651b4b66e34f521b130d18c49464d86fe5d4b1820489028f",
"0x6c2194af72fac58ca13a2a5e3223104ef49a540fd2eaea0d67a920d8567040a"
],
[
"0x1fa4effc83498d19aaa598b7771f88a0554dddda89d32dcf8a6f4cf776d13b99",
"0xda28ede7f63f75596a2568b2dd7a584576e5b282f284795b1a7aa21663822b1",
"0x199835da95f6eb22c591ebe514c7f283f674fcfa1eb787dfee5781a64f082439",
"0x2af560600b3e25abcc7f78a4d6e2cd3fd99bcba075ab82b55e9841bef7b9210d",
"0x101544d131454f20b549b24a65ec84f1b3221fd9b43461ddc6d156833b34c52a",
"0x1a51740cda5e45ea4d4bd7bf5ce5466a66a11afb5bc93cf10d5309e07d410e4e",
"0x1324558b8a5d4ba61b17790128be9f2440c0085dd5d6065b88f0a3b2537bdadd",
"0x13473024ba419fc2a7743e7df8fc8375aab150d3753a54250a808d66f2d06b91",
"0x13f15bc6453df6f9383446550534dc57aedb10139e3053e83bafdd99356175f0",
"0x1314b54f8786096244532c9f054b379636e2b58bfdceb3d48dfb2210b529b4e5",
"0x56a8ecd232a674c63d7b603ef8cd06321c560df2fd3f6c2649af576467fd798",
"0x98b740976c2a1031e75132e050bf3838b739d061582543c1c7f95c152ee262",
"0x24b96dbebfab6d23fa32c2c8e7758cb240bacd8143323c53cdb48dc8b65f8e4",
"0x15bbd5619f0d59790804f2b9b37e069fc909a2796d1f77d0c62609deda2d0278",
"0x4760054bd5d07132548bed7657f17c61c038ebcdfdd4025c7b802e08948e108",
"0xa5494c9bcfa06aa72c36fd22d98fe72dc14dc0e4e74e03d1755f38ac34050ad"
],
[
"0x1676f5c07417ab54c37ec8ae1a8314bdeeb09964769881592043dffcb26bf41",
"0x2043bfe52d2964e4a3b2da5e30107716cc764f9b1c8ba463f215ab1f7f03498b",
"0xdbd8662511dd7000991b39da129f9d03b565a0cd2f218d6eabbb49a25f105e5",
"0x11b33a9f1818ed7f581cac020051de26fe28dc0bd8cb1a4457d5a8447bdbd6fc",
"0x26f2f58d63ca6ef59bb95206ce3ed3124885ec21762bbb1db1d6a7771ec6650",
"0x2eb6ed568377b696ad3cb237064ec68e390c24886e1f122d21d7cf3290dc6d08",
"0x18faaf1c91e002f7dbbd12f408bd5c5b92f38e02ce3635824821e0347faf53ec",
"0x29437af1b14f637a1f0e39955f2604bf20439fcb2a090e346aa65a9ebe69788e",
"0xedf86bf1b1599fe27c66f3494862d75df7764070a8263cf88778f7287938d8e",
"0x1336b208e00d8ebac83246a96ebdde351063fa3f635887e753a0ce3e29c7eedd",
"0x2646341eb44b4800d56084cb48500fac48fc533891f557e96784cc6004d8928b",
"0x6f53c79fed9e09848e112a0742d8ae84a04bd9ba5aa2765b1e5edfb1602140f",
"0x2a3c9f55afacee735a1b515526426384ad044291f7691974d9c05c634b43947e",
"0x1e16e9ca2502d696023bce3427244ad6553ce86bbc4c349a34ba61067c6b6d6a",
"0x2a4c6d3259779c396ef8173ae5fe87bd611dbe25d1c048ada96306db1e3a40d",
"0x265ca211180b012c378e0198f0b5f7758c155e3675fadf92ca79156bd56fe339"
],
[
"0x1f4e7bbc8d42779e58aa07bf54ff324b814fe687b4c8eb81b9b7e74448ee27ff",
"0x27b48a636a39b51a938aea3eb552091559fbfbe71e096d518c40d908dd2570ee",
"0xdd0c118f15ae07e5db55077dfa46e08109954d99e18d72cd2caf613920e390b",
"0x45c617f604c1ac9fb8d76e8d380322e5a3b69fa7b7c2ae2c8ec5966d6a4c788",
"0x25b974fc5129d82ae4c6246e35f802e03440ead09995865313c8ca91c820c2d1",
"0x181589b140c9109e492fc3ec7d8ca8e3c25a7ce58df06f13ef43561d58c5926e",
"0xee1288b29855e2e38dd26292b39e260529841344538d6499996a32e7cc523f3",
"0x206e4d445315b764280cc643b9479f49946ea86d7304b6a2c692ac34d7c98d34",
"0x1641648c26b5a2dc297daaa6d4ddb6a2f258ba738f9094e7c5cda6efa8c993b1",
"0x1887be87f7a352410482ef3bdcf7ef17976e087eb8990c76d7e971c44c048239",
"0x231f2c98bda8d48bb4a6d9c98bbbc16027235a22a1ed4f88bc8d3a6e582209f2",
"0x1fcea89286dc1db61fe1111606af396e98cb53dab5199750aa5e5d11561fb145",
"0xf7bfcfab17db34c144cee44636bdeadfab44a6bf4fc8ef384ec89a4ae9ed209",
"0x1dd0a5502743aaa9f583bd0ad35de13ad8d5fc98f1961f2612ad4c28fd9f9fa",
"0x1959db01f5c8bb0cf483490373e75b0451b87b43e59181be0b6016674f3f5efb",
"0x21f659fedaf6c2617f17d637cd6f54a27782f4e8431f87af5c8591932ce7dab7"
],
[
"0xf6b18c98fc89fbfa99a04c8c96ae5db35c296479f484b680df905d4cbd1dfa9",
"0x17fe75a3d11b4b9d2acf7856d6dea3bbac62ade0c501347b16864f3c73ebb7f9",
"0x7c921bf45e354848a60b0e5f292bb03c2469498b9c1e4d322f4afd1867408c9",
"0xe6197fe502328d0ef7f9b930355312b347204b877e7f85d9b569dc34f064c1a",
"0x2d409bf78bd6f6a4eca7397d065023f0bb6732207925d3ce4beef9f621da2ba2",
"0x205a6d5aab2d224b668c70fcb41582ee9ebe1ff099292b4bc50af8b292c0ea42",
"0x2380ab051d0ac580a7d116f4a9337eb31090a4c7ecbd4e638e7717b7a52bf106",
"0x1382c3c24bf2489fe9efd80a163e650111f5d9885e58a9ed729dca1f9a74e59f",
"0x280c4522ad0ffd92c391e94c70f87120b8341890c3329af050625f2be52f3a41",
"0x1f405a9483311e1497568f1bdcd6d58cd6bc813982a0e71561b620003b888204",
"0x1cafcfb62926fbc04857b0bd7d7392b8d8add16b5cbefb54b4d5312826e89942",
"0xa12e162620e71beeb203be56594416b083e7e94eec23e0f44a5ffe9e159508b",
"0x17203c4d2e1a428a17be2c27d1c4c5960dfc6aa36f22bdde8be56a0cd44e71ab",
"0xed2cfae7b36f470a7d1f6940f914e8ecd322bfd6b50f9ad9f6a2226e7a95db4",
"0x1849cd0910d72eacc32d891b71faf500bcb93e1cef2504af443b94f8b1ce7212",
"0x1e463ae3f4c3bd047aa1049f4f091a2f1d5d3550e3d5801fcff68f9a5e6828f4"
],
[
"0xe6cd10883e1e11c6c191d36329f30eb0045af06c2d86d0c439f5c1f4fef54b",
"0x2326c3dca7aab6b1852654fb13fff42a152ca9632124216cc7cc6f6d37522a59",
"0x1f694d1acbaab0ea5bc026a1864d568be555b89c0f49b6134e9b895ae141da86",
"0xcdfe099e7a154278dfb6c0388b9daa1e8ff323a20be6a6aa7a8438333f879cb",
"0x17f732cc1354b1fb476e70568d2dcb0b6683d30b02415dfd385504736aa86de6",
"0x28239a882dc7b2f3ff7b9aa8de9e3d81af736d4ee6ed991d5c6b4fa540148f43",
"0x158926b9e94b10fcb321b293bb8a8647627a5bd31315808d397c1c94f650f2cd",
"0x17cd11864fd2c73d0867d37264b4ca14df935a82f2a6f432c4998135fa5f4aa0",
"0x1d772098b6154921db8e7506e6f0372ca44f20af3386e13bcf71ff5dc0d61b1b",
"0x209576be72db7b0c9fe2b8329125e7dff0489a8e900a5f14c1e6e48604134264",
"0xb7ab1ef17ff6235f7737f044161902f03d594cf4a0cc67b4ffb4711ade1eb0f",
"0x1b1bbf4e9f706051716a0e28990caf17573086a5d818c038836696808b12d8e5",
"0x22a8ee74367413eccf7aa03fdd420c6bb6255a6dd82081d6b14eda9a9752329b",
"0x2c785f9d8834f5cf5d08f106d5f9918340fd414abe24f0a9ff2b8e0492b44d83",
"0x4b5dc2057b88170a718a102e0ca9177afc757ee26773a0290c6bab159ca4fb9",
"0x27412191fa2b2e5327a11d290e4b439a4124f48145c61ff4ece8448a4373eadf"
],
[
"0x425a9641fb01558bc7170a2ffc24eb6a514198b296a1629cc284d983bca8757",
"0x80c442909227f4a9da92e33237f9a82cb0c6f7d0c4155bdea5c6517b046eb9e",
"0x1604de6a2db122bdd5d839540a1005ed402425bac3b85e3a72224d337402bdec",
"0x15ded859d501c2733feaddde22ff36fa8ae85803aec7a204f42b1f6553bcc655",
"0x40db0defe6ba4797b74a43125cf34d86a2b33e7a22e2710b0fb7a5568893aac",
"0x1ab15f2fde6f535e77e615c8c2602193d45860cc015849df578f9fef9a5bb283",
"0x264fadcc791aa18e76751a895242c30cdbbd1197a90a456dc278e10bf0bff5e5",
"0x2de279fcf77a270823a91a6cd1aafb58e9e3ab32fdff0b3b05c98d554db6fad3",
"0x53ed8ad550d8992f4b9814920183dd839bf355eaca8cc7b07020a22614a808a",
"0x279702b135d144ede943195269c00bf620f058bf0186ce9fff3cb38b22245a",
"0x179a82b77f2ccb94b38eb582ac4abbb16df429ecc22471be73cc7766f96d9948",
"0x89efed00e9d993f5fc1d5af2f2b5d47a9b70e6d5a603fbaaa8f65102123efd7",
"0x21e25f0a7f8edc38de25ba605a86cc08e08ccb03e77c5e0b9edabe74768b60c0",
"0xd8dbc3fc854c0665c30c48846d7bb0eb18d3d78a4f70fef07f242e45b865eaa",
"0x17bdf338072884b522ce3c50ef4711091b9daf48a43374bdc0a830c37e5dcdc8",
"0xb3a769c8b371562260395ee4f348f88bb056a2f0ec0f98e4e633bf7d943615f"
],
[
"0x397a7d7434b0aa941348de45aec442cd5cad2c398884950e8233c58dd50335",
"0x2b1c00ea00893f9f91331bc907397db865c37d3bc6c4b39b81cd931696fd7837",
"0x25970ce31b7b10cef221267bb1be1656ec29146df06fdb5b4f6fe6607523aa08",
"0x2d4026bfa7b37a19a300abaf2e1d5c32dbcd42240ed860f681f61dd6d6214cef",
"0x29e89034942414a1ff6833d6e22742d4106e0f5f37d1f2ab80e5444e5a52c9c7",
"0x32b6266f24017fde1b281d0fe206dff30b539d5c5ba13b5312e488d8d6f194b",
"0x2ea014b61ed575392239bd9411c0a6c4202b7334cf2e0dd8c3040528e4a3dfda",
"0x12ced5254e260a9db7abe0cbea26396680f6e57dc07732a755d409ef751200b9",
"0x1d4f9ba4fd8ce4ef193b9f870f44956079538d63bce344f9016ac5ed63a99a5e",
"0x2c9c3135cf64b89eb5b714d7b2ebcd81fc7edae637cc6116591df208b6b2583",
"0x18b63685f6fed2aa1904856378442151dd1fa01c7ce6121d23e1e9ee20b42558",
"0x2b202e1d2626c6793d68aacf9c3a8fffb27cdf5a0b83ff8f3504f9ab26a43d15",
"0x6a78dfde1458ee341a089c15f953a2193527dffb43f552cdad595da7c6fecc6",
"0x22f62e45e50084696ac2512a25db9925244cf0214b6b543d3a9f83b8e8e58ffa",
"0x2d9379e69b178208b8496b8a0a0a90d578b21f090c53042be4767e3c10d3b40e",
"0x1adb4c87433d866e8fe5ae26d01477e3962879c20c8c3a170c0727167c06d0b8"
],
[
"0x1d66f208fc04411a1385c22e203dc08f0bac2f7cd9dfaccdec20d3b93252ad04",
"0x92f03c7e98e61c2a85943ffaf9c04dbb0145fc2055e4d5be90bb68b90109746",
"0x14956f80a65b01f9ee97e2eb070e9df2711cb8bcb538dd98e532636cc60782e8",
"0xbccb669cb016d498464944f7192ecff6716e6cb5f895d2715bcbbb65b1288c0",
"0x121d2ba5bd8f232ecf44aacf1044cd6ab6f93f1e537d7d1541754fd49f51b225",
"0x4e358f259a33244f4058a056110a26816bbec3c76ab6a5f7be93c9e0c92f3eb",
"0x2da2603a26d4fdec35318204ba5060663e15a0b1e4d9395258d5e6eecaea8fb1",
"0xef5f9ee6ba1ae1d1264cf1a36e0fe4b8043ab0bddf9b9c3200fb687a8ea5c83",
"0xd53d61c8a5214e0c4715274ad67a5d6a2cfb9fc3c1e791d41de22c8ba8468a4",
"0x252e78b4838ad5007f518bb9c6a4ce501871f71128eee3f0c9784cd64b183fbf",
"0xa27a8d1af6a0460ae1724f32f21a06b036668d0a863be50fcc47fec5763ce93",
"0x3048a265d0eeb40e5a531633ac22bb825f75cee9036e66a061be3d4d248c862",
"0x3fd94e51bbda6843d31a282530d54240aa496165d644d5d7737b1e5a7d60d52",
"0x2f26bc13ae48520a439c9f546abb35a1222a307e38fafc3e7ffc843f6c77d7ad",
"0x14057d02e5ebcf33c166e18fe904defa9e342a19e88d42336377f1c5e67ec30",
"0x1fc26ed027db7b9e7241c2c760176662f634ba05a9ca7a850e184ae588cbe215"
],
[
"0xec1ed3ae3beac4ddd1fdb17b9c7c648e7ec81885a07a5bcbd967e6a3676f356",
"0x2a0f77bb3624fc4826c9a2a66be4ec75dbc21642a16fcc4182d2d65c0fd8d7ff",
"0x1d799ae83ef6552f30edc47b9e82adc0503dc4b74da40ba0bbd2cc9eb1b0a53",
"0x5de1099c65f08a990ac0f1f45ec2fb872c771e10275dccfa4fce1146639d0d5",
"0xf0913eb4ee7d3c02d8ce73d1cec2b6cbb176a92129b34a294adf066243ff6bd",
"0x25a9ac2d1ef84abd98927b52c24f38796ea60e63858ec5b50196d7e169c93b84",
"0x20a0e3f4e1249c4c6af100dfdf63f8bdc69ec7885bcd0d2c2e98d98f9bb9d104",
"0x6b7e18d01b47ff8e4ef08078e8128a06693be657489492ac4195a854722bdfd",
"0x12cf87253913d45d287e975f2b4f5b909d16a87d89c889057f666f6ba61389b0",
"0x29a7d554e9ffbee639867842fd0e7d41ea9b1bc9621b654fcb398f71c95b668e",
"0x186756775058d09c639cdabbacd01bf3c2744152156fbf7e8f3e999fb610ed38",
"0x2532dd7487fcae0dc3a7ac50b80ec330c6fb6d4cf885f1135988bf6dfc010a6f",
"0x2efe529db1de3c01d6fe7fb8a71f1eaab6af1641fb1f7aad4f2b88cd13c9fe5",
"0xaf825f7ca24b4a285f544762d9defdc99f2b85c1b89fc5ff2079d3d50e6d4ea",
"0x17818dd0254b291d0d8f4f1a458c6a21d8841153661812bbe986b1403cf270df",
"0x10175fb6f81b16436af30682f36fbab396eddb7829a50e946c75f27e260987c7"
],
[
"0xb3e601e36a5d82e0214362c8419474dc1cc2c0ed8126534d69a3f790b27c603",
"0x1083b742d35332a8b79b80e7dc04a72f7e86692e529b6a1ec5687334b607da7c",
"0x12417c001be86197013b2b4871c4e9b0dceb83991919a9cafacfe54666f590af",
"0x2c465d9b5eb852d79338b427b3184d941f34046172a82cce44e2b8e5c4379478",
"0xa0fe66c0d4de00cc7761008732a0097fb14d6465f9d1df835e0423fb207d979",
"0x2f521f24bc02286ae2bf8484fbbc39843886755f52bfec7d3dd5df78d340721d",
"0x2f1d3eed36018f9679711e030bdbae51224b5efb8b1eb1cdca8ab886212f0fb",
"0x23aa7ccc3751b740eec9f35a29986bc958a4dbc7c4b12eab2be8376706deb20e",
"0x2b088cd30a10899babc325bba32aa343d329f9a8782469c4d25f0f237ff607fd",
"0x305a0c2c2c4d35998e9913829f5602504363f21bd720347350b604193e79bc3f",
"0x8bd9ddd192d797a19dd1da049beb39fa6596598a27031ea1c2b28966d96180c",
"0x12cee8e3d1cac1ca84517ab3def487c460aec058348ff220c801b78979af9e61",
"0xcab504b22a3573d09509f85d3fbd94e94417acb25392342bacd684006c37185",
"0x160590968429f480f55611c6448912fdf423d37bf483c36acccc1ac9a29d2a53",
"0x1c95c2917353c53b4cdb7f750a0fe86ce10f8d5bdb018032d3f793797d7c0a35",
"0x23d300373bb8ebf7dbcf314a3c0b1fdecd5cae23f7e7bb915bcdb6a6782b57fb"
],
[
"0x163cb4e3a5ec92e57b25b095a3aaa8cfdc4ce59267718cc6090a07e14af10b0d",
"0x53e95f9455bc6499d447b6cedd0b6aad9cbced97ccf10060f3c9ef51e28e76d",
"0x2171fd11f94485466a819e24d0acef08b0c87d78b46d93bb9462b443fa40cdc5",
"0x23918075c8fa0929befc2b171f99ebe9ddd6683594ef9a83f84d4acfd9592d59",
"0x898ed1ec1a43687ff6aba32de5f819434528a0752b3928331899b0646b2f061",
"0x1dc3f7a659530a13accad181b6e265474108d8b1469266552dfbc38cb679d06d",
"0xe388bb105242406e372080e997a31392cf4ffbd9c694163fc366eae770e435d",
"0x2273c370eb5810c03903605d7cc94d5a92af6aaaa7b844f35189e77406a7e86b",
"0x19972ffdde7898ec8be4fb28e4b19efaa43c7ee20c88e29096ebe872e1c19475",
"0x61d78e1953d1943e2d968335b73e15fecef89075e96c943d39702b214ddc5fa",
"0x194184a825de9e9b63ed7a7bd071253ef5903e1e75a50536db93c26311a72017",
"0x21c0d1874decaf90613183ea827b91c1b2951839f71f329cb9c9b0753ffaefee",
"0x1cb33ad2ba7dd0c2063443432a847bccce775a8daf868e0c474905a4fa36d70e",
"0x2bb32cf60f8d469edb1b6c56493d4c9338b4051ae2514d4b6082ef18b1d5228a",
"0x2495b3c1bfec60741808149333fc43f04d79dec56582c292829ffdfb3c1a3c4",
"0xf0417fa6237167e741525261306c17664dc3efa9247aa0d4bcfff38e89dedee"
],
[
"0x2dca90f3e5a15b29895f48d7a1290d7a33646b89620dd0a8ccde3aa3a51d41cb",
"0x5904dae3470d40ce12749b27d646e620e8519e2b17cfa016caeb89d9e34ee6e",
"0x22e9bf2aa02fe65e3cc74fb3d83d4e3351869bd30528c378958af462efd645ff",
"0x15d7fba62bac57be5d97452a3c06d9fa757f144df166479ee7306967480a287d",
"0x11e0b2343ef371d2d6d22805974f2539b6e510d761e0da170d0da90095a13262",
"0x2ba39845393fcc776fd383e535d567621c7f64005a83a6f7f48222bc902092a8",
"0x25143649c13e08d4b00bf34d2aa1a8e450f89788e27766896217047155c5bf1e",
"0x2a7310e75fafe902e20287a91abe388aae8420b1ea4660dd7c159c26b9632cd1",
"0x1fa6944703fe0012a16ee6042529ff02bc804313ef8c6d8b0f910a75e6f47739",
"0x261f975babd7692822473b8e39f948b9cf98730a9785de393179d4bb99dacdc8",
"0x2e08b28bdcc417d9643b3008085a27f4a9876792d3915c8b9da3567a6dd6ce82",
"0x17e9ed191c5641d768b0e55ec0d4a85f6e5419d32f5668d397d5b6cb805387f",
"0xaaf37d1f53dd0556e347ec705962379077cd543198e1c27593f4454521261f7",
"0x2a4a72e9dfe5bf25f6fde750a1847e5b44298ba58fb504be57a595e7fccdc404",
"0x2adec8549dffde7238b2bda6e7732990a911700c8d35288baa39e67015953231",
"0x1e8fd20a8030fdd94e2c4353d8f82b4b212bf887bc59615814890b0f92a47d90"
],
[
"0x2c78ee5ea16d38f0beb9dc0733c4bb1893cb33ff671b737a1122d64f729cff22",
"0x2e563b9dc5a3d4d5a93f476b466e371019c77fd6eea506126a4f79274f2f6b9b",
"0x72ea2f5cdc8a3789fbcea414a91e7b27bbfb3151df510d080ff4ef7cc73f0d9",
"0x2b6f16f812ba903901355955cc4ddb99f24f1c6e26430947e51811a68311bbf",
"0x1d59d5c10b0c9dd347899377da35b7e677c7d39ef1b49166b974a7f2bc99c946",
"0x4730fe04e0108c9a5145a5c48e60c5457e4708522157bfe0f82af5c664d6ea2",
"0x12ec24239ba1b0fc9f952550a223a52d209d8d22b8b21ac24881a2719276be0e",
"0x20098399725ee15d93ffd3e481e4a7b95c8c5083f9d69bff1714eea7c7d82d49",
"0x18237af733bc44418ac84e623f483a6be28b8f21d033fbf099d645ba20f1fc26",
"0x1e3d6cef37f9bdac23d1b381a6c58d0ecf06a6ebf58dfa7a995a443ed7df68e9",
"0x28e55b0bed59191216d5dbe1dd05b22c009b079de877fd54aaf5401d2c867e02",
"0xc6c9ec31c9e3be0744919fc555c77c0c125927bd16de2807712b35ca26dd045",
"0x2a607facd3936fdd0e84e9bc3e4b4bac86e8102c2b5ad15cae550d28b3654e73",
"0xc509a4bf48ad76e90410bea34a8919741608bbbb6b5503c93e732036f079d12",
"0x178074303b90d8985e376584b8b8dfb7f952f8f4cf84d815f90baaa3b644c4c6",
"0x18572826385dfc6eeca4d3c71d110b04abae013c5450d9e4947a3d019bb41b6f"
],
[
"0x2af324ec4f9e7786dcf00439c75a294bff753e3292bbf62e66471fa730f19c79",
"0x14560083d980d172dd40c9426cff41467acea41d7f48ff11ac5fcc087ba2d5b8",
"0x260f751c7823abae61b8f3748c84791c0bd84acf7eb6854870250178e9a52cf5",
"0xf6673b7fb4be8cdea74aaa7802c9c73ff0d53a98e94a2bc60685d890a24fdeb",
"0x1a15b7e2de27125f2e6a74f4ec7cd2455f1bbfaeb1155f1af819bdb5fe54241d",
"0x75a09e41e74de8a2ac7fef27591e76a77c851e1a51185f31e99b5e08f01cc74",
"0x79c04944d50b4777dd0bebe953600645ceca9d65fba020f97365146bef9c6ce",
"0x2ca2bac7c1aa0c64e684123f0ffe22173923052b6a01f3c29be80137fd8972c",
"0x13d9035a0dc798b04dcef0f08edd241524fdca0e95ba9cac05d207bd317e19cf",
"0x1d6657d791831169c56b6e9a201f8b7b240246a2d0f854430489b983454032d4",
"0x1c89d8f975f0304282ad8f7bd41c12c3b18ac6b80e4065fccda423bbb3ffa786",
"0x20829ef3df9c183f8965e49c8f315c2995a6446a76053543eb750145f1a77400",
"0x14a2bd5a56f87009db981546533202f3af812d2ef4d6b037f2830853b9f9039c",
"0x199733da4aeed8d6cd148461617e8e46de22d3720431fc1605619b12a7fd4e2a",
"0x1f5fc060028ba07d11fc9477f4faffe79a81040ea9a04c568267644895e6737f",
"0x208b7c8c1ff8422d4a1bd13a02a94681ce217d925f40d2875f73def14de7a220"
]
],
[
[
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x130fc54477fd953377fc23abbd7a41be6764892a8787c759c1440fe0133c852d",
"0x2c9c91f48661771baeef6774578a78f69c355c8e907156fdf26db39d2446413f",
"0x1dec0bafa3e8190621e5e095ef751ea03c836dbb8045b2a73f8d397cfb815192",
"0xa5f52ad6ec4a8aa377d8dd2ae3aaf6eea0c68c63a1d034fbda67133ca0b85cb",
"0x20ab7394bfdab344cbb6f2123800a0e23508e2125bfe795ab4a767cecb4d9306",
"0x110ea322b0c26476c67bfa2c1b9d1713f93b3b9cf8320ce0dcd4b64288bda07a",
"0x54eabe6131681fa01fbc6dbf3e7d53595d0f8809987182142b890ac8af89cbe",
"0x224d811fbdef8ec0a006d376a019e57c93bd596213a07823b7d4abce1fd8e621",
"0xe691fca423128a7d4afcaa582b1a94799ba1f5d2a5d53bc2bba56bbecb227a1",
"0x189e279c92de0bab66707e6e6e310524e615cd4c6aacc665372a3b8e372d8ce6",
"0x1d9bcbbd17b93b1913d2f79cdf12844441237206f0294746d93f8e5bdceb4725",
"0x1179184635a9780ee1312dcc3d15c7ef042b18ae9409670e28c4c7f0fb9b608e",
"0xe48466182ae8333af1891a6aa19736741ed0680d57c931ede13fc07ae82e88b",
"0x1c9d56f71c2f22c44d3a8c17bf5b40452e05471f0b6dfe9ffe4725eb29f73464",
"0x2234546f5e8541e8f72ad794891950b32b1cd891cc66775c5b635961642e9c15",
"0x14c09d155c5d428198c234b553da338f227cbc12b0e42f2b9ce71563ee1495c0"
],
[
"0x1440dc2578f44694d18c25f892d98c23cfdb87a772200020e897823d4bc84d3b",
"0x65e134cb8d84447d6ea1e17932bd4a341ebef2568313c24594faf9d7eca2110",
"0x2c6b133e80abef84904fa4a75f968fbaabef890286d5fd11b87a1e52b7eb6d0d",
"0x27c72332f59a00135baa94bde294911d135d1d95f53c52eb8b3b95594374906d",
"0x87488f735b1fe2fa3c6c7148c4968e7f3479b1418a1a566743c1ca215dcfcfc",
"0x19f0e2e141896eae6d56d182b687b8a6c64cbb59e031b749f35822fc7ee353fe",
"0x299c47f1e3ecc557ab1c9abe36f0d2ba0ece01051e07f0858e97a9ce16f5664e",
"0x1a4befe11c0230c62de44ffafea0de903ba328c6d67af73680312b68f9acffda",
"0x140762d30c5c3a0b0750b1400a86a9e2f5cfc2531b729370f3ad9fe1dcd43f96",
"0x180aa4babfa7539753d9c222e5e3359aca59e06bbefc7cf3a3ffa4f961fa1d5b",
"0x17208ea9cd4dc1a6deebe6a8d27a3181ab5f86c6a706e6fd007fc1eb678e9de6",
"0x20007a0f5d37798789e0a8ef683536d9cf4831a6566eb727b41191d9f2974710",
"0x229da441a302929b0bae93741b7c75e11337c797e5721f9d7ee59235cda9a40c",
"0x1137b5c61b9684bec41e4dfaa76438256622a4378ea4e646a2844bbc85bf81cc",
"0x113003c1dc7baf35e4536f95f4eab2f3badda2c7a1c6b5afc956234ade3e7129",
"0x1b61468fab59c925f1986186bcb97965a858523a2582d434319a9525ae71158f",
"0x117fd528770fb17f718e29a2d91a63ec7c39ef1dd3039f0943f717d1804253d5"
],
[
"0x23aeeb0c6499b84bfc32ae3c42df9728798fd2ef774f1518b870bc57d1385900",
"0xe76c40392bd5f458bc187be54099312a0fefff44b441637020eb92670a6fcf3",
"0x2ce8546cb59f420ede61692e764e0e9f6715b16a2c8047cd8131c97646f50d24",
"0x16e64661144d816885b32f3f7809703477788268d57c14b1d939a26b29cb7ef3",
"0x6cf0db92f86b2732ee5fb881ef0176012dc4adfd849b9be4de17846a6ce5d99",
"0x18f754a95b0af0e4706ff9024bb135164abd6fc16ee40cc2d6852d88a2ffc9f7",
"0x1cc053a6a4d6f96da77e5e73adb9d49bc4d0ef2cc2f69fade48040b7f8d71386",
"0x1e40665f5bb8c5c0dc9c11f39d47e9d33e717afa31ba74f92f8737a55efe134",
"0x976d7c3844bc8deea0f0337f89b2a131302ffd2d0a870181ca5fd5fb6d4fb63",
"0x2c54287eee368d5d52dfb068282d68e6b09b76bd1b5c9333b36848ac277744f5",
"0x228a3488cabbf9f29efc0bce211a09031972b37f25ea35aca840dc2331a0cf35",
"0x16bae49f5ebb1ffe886b634d215de61ebf4f44d1cdc4f84670df8ed69310bfe2",
"0x2e269dc78f70f9103b2bced3edbd41e156e64910887b4dddf8a3eee960f601b7",
"0x1f4b85552b960d1c18b7b8f66af7305a6773d9b05faf51e0ed1a5f2ef2f95e7d",
"0xd5fb9b0e1503f2b92697c473b69cf76d38fc12912e2c3cb33996dbb0cdfaa38",
"0x11291ef514a10d6f0651e4ad0da5d4a489e3018927879da942defdbdf701ddd",
"0x120e7416d74308e24047f6828c68ae28bc288b216e8a25e8b0ebcf738480e390"
],
[
"0x1ed9d3e9276acb7b4dae53eba148806fd9bb07b2dd06187212fab7dcbe63d72c",
"0xb981765ecae69dd7af3b10ffa424b8aeb206cc4f49257265c6753b1cc54ebcf",
"0xadaeaf28776b813d518f645c793e57bf16067fd80eb921dd5a67e895646c9c4",
"0x2018db386a3e4e57eada8d91408b155061df050140fb22f9a4f34fb4e2d02428",
"0x67c4411745db6c6aa659ec737a586a8f4a1cde0352e30aa0063794865fc1c04",
"0x193fe0e9b48010fa319c33b86b6b18f428f323fa237ca918a38faaa91ba49567",
"0x9558ecc58bee4f3c578f62489dd900840a9889096c0a62114aa2db045a1d033",
"0x23c4abfeb83192362aae21b2e9ee5cfc765bf1000f798c3ae70133556abc78bd",
"0x152604201ca7df05994e9d5f058f3b6749cea63aa0cb5b4e1c3a00b6667958e",
"0x2f65361a4aed320fcd03a45c44dda740213571f3975ce20b96bffd960cbc6e25",
"0x22122c6313fc9a4c6d0f944d3ce238272bf35147b1b788aab2b8dbceb6024c76",
"0x229aa5b547a63780d8d129e209fdb92f85662616d59da908075e668fd817822d",
"0x21a91fed8bed14914c4fd491b6fa4dcbae7b3b8b3d456303af886c328abf4699",
"0xba8a54914886fae16700c02efdf7767413a0bec5a19ed0cf0a7d8ac60c1f1c3",
"0x2e164a524ee22eb5a8903fae1f35a3a78f882f3e3a9892b6ff4753baac934949",
"0x2df2fb2c2e321e3cce13d16091705a40c5c795f8b41b61dfd6ae7d97d63578b4",
"0x6995e510fd7669374c39d27903f342ac5bf8a1464807f308bef610b76cb693e"
],
[
"0x2ff57f3f7e95b03411db790a86647467581197124d217520ef2e6332a5b35185",
"0xe4fb044a9fcb4087e351341f25d98b1399b576e2d6654534f348219a0acdf86",
"0x2086a01b816438a2a41c59e43d73fa9aacf0c24e4f6bac229d65fba59922554a",
"0x12263b7e3f3de60899a2c22fee919972cd79dc289a87f31f1b44baf2439dc87c",
"0x19909241cac50288c0d12343e0c12cf9b9790b405ef0a9001aa6be0289063aa9",
"0x11ff091dd551b6d586203ee0cafae2f7652e923aba82574a53b632a066f4884",
"0x93d7d5563e3ccd0b5f15a9b093fe6b863aacccf9af11ffea9b295b7dd42b1f6",
"0x1669e44bf0223a77f48fffbc9f4f20b5814f6185ae11a210f8fdfcb5f71d603d",
"0x1ab6d8fe39f87bb0ee5b883eea2725caa52c575740d5ac30b058f77113d05239",
"0x235bf178b5b56262d988bfc62708b0f85d57385cde2b4dacf9e6d592deb2afe4",
"0x6649a13e65023a713aaee5387d388e3609ae9b14ba4da10642ee0b7b4a16634",
"0x29a5b1e4e2f25445496adec230ed53a35993b37630aecb5d76e56608d1b78cc6",
"0x29f07c1effc65b5589e1ca52cbe00bd65ef5e962d01200302670b6dce79eeb00",
"0x30289c9678c0330f85cf8e362683a6144f22b841aa08f586f219dd9edaef78bc",
"0x1f9dcbde7d058134a510a711d036d1f1800e473a63b33a7e0fb04dc2e09e3af",
"0x1baaf8ff96bb2224bc34cf80c38bf13086f1e429bceec12090d8a7c376a9a82",
"0x1d814b3c17656c2327f94cc02472780b886b88394f1a5cbe34dc4f44ff134fce"
],
[
"0x15faefbf8584a38969b4a719ffe5f02c2191a8cceda0b775162203d30b80208b",
"0x303e39ca88e8da6e5c963564712df8a7f8501a7af4a990e4ccec19e5f8fc805d",
"0x2348580de49aac01ce8fcb5aa2b467f6787dd8a96ccecd6fb47df7d5a4307398",
"0x10e420edcb6da76170b24d777ce9d31612edb1593ea6d30e8cfdacfb6974f991",
"0x1d25b94bb7c49c0170ee1fb2a5824b70e4554bcc54b6c8f8cc0cc9d74f19a5e",
"0x1da3e00601ca3fc0d90b197bd2a474b46efe3aff3b2cfaf1ebe15fa1afadf2db",
"0x45dc0579ca66e7e096d4dd86b882e68af2d35d70cf5e3b1783caaa0ec424253",
"0x2d5b3f523a9668cbe4887881bf7b40184f978713e358de270d87a600e5c5c92f",
"0x1b62ba8037a83f1261544c307f019dbea1cc6a84d481ea8960b0fc670745e8ae",
"0x1794ec2b0eeb22fbd753b21fcd949e7bedb305f15a59eaf74a961c3046635f85",
"0x1ed4c95c6283b45ec0cd88f511976f063ea2beb0695b8af7cc10589593a7978c",
"0xbfce7b120068b9a30029dbdb36be01d071e8163fa1724f13c6ca89be29b729e",
"0x506a7a5de6b56ebec5e708a70a3cecb3a2cfd25e7a20ed495e295a93023c5a8",
"0x4890048fcdbde6366761cd58fcc6ac0a3360d9a64233d3ea4d8d6be8a23ec45",
"0x285b20799970b58c63ac9f4af564ce0f28209b61802214da5bfafd0cf24c6712",
"0x7b0d70ccff1b70dad9bb4b0142e3f6dc5bc95d3766affad378cc5042484dec9",
"0x3b90da34b198cbca17e34aac98b169875ecf73aeb5c6ff1f00c9fe535aa9902"
],
[
"0x1e6eaab1191593de0d89cbb2399ab8aa955d829ad959428cd539be30b72fde9c",
"0x1b77995dbf30cc55f9d4cd4849ced949349da81239a015440fdb38b876abee5",
"0x1fb6bd6df650d27e8cac05ac0b45eef0700e308b29b4bd41eecff58027edc45c",
"0xebcb358f95f84b719c631d4045cef03ac6fc238f6834522cebd02e47411bb6f",
"0x3274e735db2faf186787528254272ee01967e6ae9d825141378b8354d843965",
"0x4ef41945559c1fb0b2116cb2be1f043bfce8dbc96feecccda47cbf68be59b5",
"0xda02f6410e24058a1e90412cd5302c57197f7b1af2a99496f9cff3ffd58808f",
"0x10c1856f282f556d7cf6d4a293621506724ba6d3c582e4c261842f2a4bdb0ec6",
"0x239abc7c9f866aec28685c26f4e046a92d4360d36cb50890f422e18ed6f8a7b2",
"0x83e1cd5943461ab505b200311bde4003fb4f7ed16aa58c8bc28f2e08e9f6922",
"0x15fe62a69b0438294395da1bfc93272d88797ceeef666ba2443f0c146f8ab7ee",
"0x20055568b33367bc12bf4aed7a0909c173588a5763c6a1a7598ba7c6c7e3c2a5",
"0xc02b148f4a1559b597cd320f00c02b96a7fc7c83811bd86a1e79cc3106b2201",
"0x1a4162e8a7704447be0c1d4d5cf2f777670f4841ea27ac2709cd6bffeed2cebd",
"0xce3dd727fdd11a8bc731500effa23763089ce3332cb730f9fe57146ee204810",
"0x11f28ee5da80d19e31581b566a439537466d9ca7fdf14b7086830bd8ac13c4cb",
"0x27fa77a0658791e6755781c367683f9c9333a41364f7870edff1935a347485d8"
],
[
"0x2a3bb020c8a50d310ef5b5c77cc408b077fe2481454754c4568ff668fe5f0974",
"0x23643add30be204734d029cf034c958144551060c1901c420a28c9688ec36a80",
"0x3e9718237c1700d7dd213e026f307e8000b3851467fed9e6f51fa5020c2369c",
"0xc48e2f304f730d48e83dae5c78a46188500bc8040a49542eea5ef1a21b9d222",
"0xcac320362e235b458d6d364cd0fff914f3c056adbb038dc2a861a49f7f70e24",
"0x2f053fdf1a72d6ad8c9df97a04d637916f25e3425b6dc33e99ca7cac5cc7e4c7",
"0x2dfb6dd598ada57ea71a8d68e6924608f0ec7838808688ee4b3fcd521f7be6d2",
"0x22cc4349f6baa3a8e0b61fc40ab97210e4bd3b3dec7f05bb8ef839c84692afbc",
"0x2fed5a03200417664537df8fa30276b85d91bd2ed21de33d901fb4d82439857",
"0x22a67a88776982d6a15f577dcf780ac485ebaae6fdf6fbe50b95ea266a7b6059",
"0x2b079a1d09b9d4a76d4e50c45c01fb7508b1c443a8fb21ebd28533e05def8864",
"0x2df1ff86644fcc42a1932cf15d314eed407608246f14a8098725ff7be809c87e",
"0x24a466f74e99a602894f421010f43a81c708b1b4ad076425190b85347f685b1a",
"0x2e944b449c1369ce9766fa6f4f99a87630b5c1f2d63677a437a537d61b6c7470",
"0x1079746ca51d9518a0c309296ca48206292798910494277be2bb65a6b134b3a",
"0x13d7b03e8fc9fa647fca6cdca97146901df7c675a164913c2bd2a3b6ee3cb4",
"0x6d6ee531ba3fdced05e24cf9103d0962dd227f1de692c0199483e92ab24ba59"
],
[
"0x51f815c454b6015c7ebf90c297b90e9604cd36acc6af07f99b5e51fdeb32234",
"0x1946a26ab8953f9be558105fa5179f175e76a24429dad5d532c2ceb3cfea05c9",
"0x925af35a3366801ac80a31d63f745fa807bda10560345ad572bef4cf2ce0d6",
"0xe766f03afbb7af630eaa8aff4fe60f3810f30f3f4438498efe0186333dadc0",
"0x1111ed7a66ba2ccd4bea0d43eec86ea35ab40253a1209e3637f103dcb84fc429",
"0x1daf74842c7e79104349ad399592c5c4cce16f79e1a86f50d941598772cca953",
"0x1057062b40bdcf1fe2aaef45898c871146799a92c87d0fce64302d6bc83172df",
"0x12d019e37cd1bd76fee065bb7380a9bd8331a4dbcd1c9c776792bc19045c23b6",
"0x996cae74d9627ca3c56c646095f39730274d25e82c42ce21cf789253d48a3f0",
"0x2d1188d9e7e6ac24c4b2c9dc3dfcfb0fe4782d689f31b94b1fb15ef29d11f19e",
"0xc34496a7db5abb330b2f6ce9adaef5ae6e308c8fc2c5634097ae352aa7457d4",
"0x1d4fb0f18f31c8270b4636e6b5d7a33e455b1050de1164182cfcb739cce965da",
"0x1fee18888425724970bd2897b54c7fa8e9c367dddbc8484da37864faff9f9056",
"0x22d6e787f44daa6b6593dfde5576d2fdf5dc0447e65a1d5e7712e4e62c3bdcee",
"0x23a85d4f91eda69f310c451d7d480c2f40c0d53382ddd3fcaaae627b9617170e",
"0x2440e786179a7fbcfe8d29ab18d0fc6cfa383cfb747f7a2d15b77d82d9b0d9d3",
"0x1e507921be7c76124879ffce5b62dd0e96259e98cc64c27208d62b40bfe3e482"
],
[
"0x28b75c2ac167fdf184725317c7bbb8083e5ac5bba937bcfa6cefcb69e4048bf0",
"0x248b533f875e5ee8e751cefa4b1d0732fcd30151c3a5cc4abbbb1e93b4655d45",
"0xf8692d64a5b69a956c4e2006bfec344477fdf5f0c9aab866609842b9d75269d",
"0x1b8a7909d7e7bd4f0bcc8003968e384ac2e8b405ad05cf610364d3ecb982db7e",
"0x13e736cc70b7c828a38dd6394ece76b9ccdae2ca4f43963432502fe8c2ad19ff",
"0x2ae8da8d0b129a22f834d0d234c8917c2f877ff00dc16215498d4b748fb40df1",
"0x26e6d18aea75a94861a02333b5364ceceaa78adfbb742817218ca3af607b910e",
"0x27aa38fa051c434189df57bafd80723ee29bdccd59fbc1aa9af11891d3722e61",
"0x304dbc0936862356e0024b2a32dfa3085abedbd337f22b89062be614d83cb083",
"0x265c43c886f07d025200d56cd246b01670b3e82ab482f5879b10608cc05a37fc",
"0x4ffe27a92cb4300e774388edc3147ab9dcc4ab354c380f51ca7a2e7fe0463c4",
"0x19d6f1d110d9f873db002ff2ed828905bd6cc5d7921c238d7569daa9b2401d32",
"0x19711c41d76f64a371aba62f3f46710dee0c3aad217b7cb00bd12613b24ef52b",
"0xe08ddb69d5efd949c3d671e4e78e4fc7628c65ec1cfbc18ba6a101aa19dbf66",
"0x240657d67f92b5e4261ace434fd286206c315565378ce8b81661523f0e6ddc54",
"0x56149221712b88ec291fc218324142d02873cdd53199679fce4dfcb5dda9116",
"0x681adaea79cf457db5701931f0ee2f15ecbb159ed50cf746a15b85c6f8a5370"
],
[
"0x23af324599683d9b71b61d093d63dcbbd97e44957333d2697fdd060c1e4b585",
"0x2e7a1c51da61dd214a1789d6f1ee2957f69d21b1f16d1f9458eb25a406500bd3",
"0x2bdfe7eb4fa803bc1dc0052a46d850ee3e091eba8a7f12579682f6f6fd5044d4",
"0x1d92e4213d840a330ecbdb08693dbf9a971bbd6229047eb88a03f334cadef227",
"0x1f2805084976b142f7c74a416ff439ff1bcd8b8e7b0570130040754a61b71912",
"0x99b0a6330926a4a1564dfe94f9a1104bb8374bb518a89de08c591c17dfaa059",
"0x565b96659025935d9c025c7ab20b1611db00b67ecc51426b342f8c7a17fed83",
"0xf0b9336db5c16d472fda3fb9ac13b13394c09ab9f484ecf6ad2060217b5896a",
"0x2a7de8f5ff476d81d393f1d274636ca956f05bd422bc9f3cc0fac0054b58cb02",
"0xf26d05e938f8317bd608eff0895d352dca712b653b1492f8c2ea96b26f9381e",
"0x28b73b335c72f0774871a2030d444e5fb954979c1c568e112fb911a46c666768",
"0x282a01e8f2ce09cbdd862f98fdaba3f9af02443edc962cb34802d04477de1e20",
"0x2770d14a220152fa7083040be9b3cd38c8ace9e207073486bcfafcad706748b1",
"0x27a573036509a8a29a90eaa34d2adaed5ed1ec6b207274f3c5ca23dad3880e57",
"0x2384a384bcc2c4a17ff7c9e3e7d131d39173c431333a9c7c1d6fd7110e25902b",
"0x162c5bbc81b44427be4e82c5e5253bd66c3054f5c5b73b28b29238487849a794",
"0x1e6196147508bf2edc872c4e897a967778b119f69fb431a7f646d2018eab4010"
],
[
"0x5a07868a7c95f50a015879fe7cdf1eb6c317e4d489d4515208ddf40a32329ea",
"0x2065e374edb1f3cbbd2919dc04d14adb07062dd01ec1501b85522e7e0faf925e",
"0x13bdacc137bbcf51d8bc9d281931d6e71122dc6e93e7ffe8b835e3393775c3d4",
"0xd3b3fb86a44b7422429a249884c85644af1975641206e610070c02ef5a9f4cd",
"0x27aa50a0e5d5588c1486e8e7fc8dda65489fffb866756c218f87e7280cddfa64",
"0xb9aebf041146c119199757ea8ceee5abcea9ec42cdb28b921caf21e84847851",
"0x2776bde52a1259472c1cc020e719f82191dec3ab7699b7d0fd769dd3fe392997",
"0x275a6f59623354d71d38b4e200ce2e9676aab74ea8b8366fce33bdbc47d0586d",
"0x12c6f6c83a3530faced60c88f19a82fd12b7d938a79864ed20a545a52fdce11d",
"0x257689a4e22f6a8768aafe54218d31de4e409fdbf42319582536bb583313a395",
"0x195821b99af2c217404ee582e29889072ba3cd994b74955c261b5ad364e5a9c7",
"0x304b679008e8a1f09448423a05889e0df663a2b65055ca9ee5a99dfe13fb9a16",
"0x8dffe684aa33f911d35e9a644b4bdbfcd15a4da49b6531816b60e8ce4f6b5e0",
"0x72372083f62195bcc2b5afab1038198a3f0546b62d171ea21c37c8f31551176",
"0x25547b51b2c6874e4538ca9b34093b714ad36a8f356e4c78e0d66b1f190038fb",
"0x178f2aa8df9a11ef33558dcc934971f7697e626cfef00ffcdeb6f3c9c1a7d10a",
"0x68efa35bc620124ab7d88990171bae4102ad21dfddfb387df0de0c8a3a189e9"
],
[
"0x2c5b4a65bc55ac5fbeebde53ce5fa68882faed2a92a7b3f5732832c72f7f2c30",
"0x2f36535a83a09cf09fc38a20a725477aec56668f034a364a9f4a5605fffd33cc",
"0x7d78ce0c1c87391a06a06c83d300d52524b29f183884e300e0eaddacd05f068",
"0x25c7e8faf6c48a156cb91d81a997c6673d32694a3fdd64f5e9594e9f504bad83",
"0x1f3cc6f65d9d34370825a38fd1f48f509f7c56171b9e7a624d9b0ecdf6ac4eab",
"0x55ef271e388278b1aca34d3cb00116bd6f7cb584b3c69f0de2a7afc8d98deb8",
"0xc1a324c49d15f87931821989b8c8437ea9eb46ed3aacf8895fd1cc311053e60",
"0x2ebb6730d7bafeac23fc0b457ea824eeea3c55eca634bf24b2ac2a9a21483e1",
"0x201e03f1ff672629473a24f32d2d502acdc8fdd2883014de74c98f40a195b3e4",
"0x1edc57f174e1322b627c6f9dbe27ae2703c3f11c364b38188bf41d8ca0c1709a",
"0x20a56fce37122b7400ab61a65eac815dd180f52fad2835f7fd9649063523881e",
"0x1998147edaf3a92ab179c61ac2c36af5caf3e78bcbfb684cfea15db17b835907",
"0x1cbfab7cb05e2f28254b230bfce017f005fb4f2dd8935ad11765b347d2003667",
"0x151e0bc2110e4300dd82a4c92442c4751c65b294426c8c320c69e61831958ceb",
"0xe59e1a990ec00f72edc37248349d7a5a6f7bcaef158110450f1e5985f0a5d99",
"0x24afd92f80e57788f40fbb2b79f29454dc485fbafb5a7263f462b7c84b4e500b",
"0x1b012224a4f050df841122d17c5ea4eded7c8ec2034743a432a2cee893976f29"
],
[
"0x173f895e472c4eb16a2aff3b8e0417fb32b83eb1e3233471c76a0550505d0607",
"0x1123d3c97ff8e6b589d118bc40ca0b9ac12ae909558f2582551f7a42345b4621",
"0x984c132b29a05f2b506ca07c06fe9a6584f36bb87506d2d316a4f353cac5f1f",
"0x2d7af834c9cdf1b38c8cfed218f1ef0ce0b9908de9e7aa7a5510c4fb917a0281",
"0x1b11713791ea4cb2e17c8c5867502043d0a8cf955384c1c793c506b75fc0db29",
"0x26fbf1a351963fbbdab590dbd760ce6284273525a1b46c41f29226c65339f4b3",
"0x27e68568e9cffd07f9253ef9dbc356251dc6b2d6a903d6c7046b5e90e1bcdc9a",
"0xff215eb1e38dc67432e262df27eda7c3aa9419d5b6e299bd948e970fc35a62f",
"0x118c3efe920c9c3f907c867743d35d2ccbff7c89e9c31bb6a17c552ef92b6c01",
"0x17b39f38636d5eff5e06eff089eb56051a602bc8f4bf1bb0ad2b2cd10cf07138",
"0x235132912db2da07a4750c5ed5df2590e718404aefc48be6953432f64424042e",
"0x28a4572cb654261cf9358435923e65aff8f40393752748b76acfd2e3f5755c9",
"0x21d7269a53d3712b20543b0039aecc9466520133d299e8442000b33184a39e84",
"0x13f1acc389c4f8e752cc7e4b81c37ae2130c60df9c8b7e87dc5fb7459caf4916",
"0x66c6090936f6b054f17dea91682954332b3e32d8f20a0ae171d417316d3622f",
"0x492ae5f5ac2a5102ea96e60ac8375553687151ae44042dbf5899232c8f2100a",
"0x208d814151bcdcddfcf835a958c259a6477bfe4b3392710edf9d80787a25c5d0"
],
[
"0x206cb038cc328526d0c3dc5af19437d83219751c5ee8f61b0e9e2f5881366be3",
"0x160b30c874d9c06704c92c266c7a5b7fd966a62a5db008f1bffdf443b1099a82",
"0x1b00faa85136b1bfc496e0ea9a6284cae525aa96612ffeeb514808955693879e",
"0x175af5e50e5685ec2dbb1cf7a2cd25d45680f6cddf68d7c0795dec98b87f6a71",
"0x104560e95c49febb7a030862edb3a33c2b2a3d414b0536b2e54e25ab36e8f281",
"0x12fd67863b2e03b6fb45224fb041ff280e936742b54c8e54d3823e090e144169",
"0x1db0e7e01722aad210e5296c36e9103e82d15765c318134d177146a1d9fd5358",
"0x247f9c7fa610322535feb0676cff549f1c177d0d39d3f1eee642e9253aafb82d",
"0xf705feba5f01cb27b27c104bc93f0c974f561fa26d5614f6a9d9e47d03bc655",
"0x306094ecfe63300b2f95bc98a0406c7898d86852330a7b69f9b04b5404b3eef3",
"0x1059db5e97f25826b0bbefd6bfaa6e9496c55ef5a88fefe9712691f6fbdf4298",
"0x15bd998c2729dbeaccc29b5d6e4f0fd96ad0a6037c84a1a1a785169fb336fb6e",
"0x21fde580a19886b13358f18a32d5aff685b4bd77d94f067f44f6e7a93350fd2a",
"0x6823a9baa55623732b02fa270b2f887fd3804a85c1a7f2a355df3fbefc69dc1",
"0x1b25662843b0986ab1a4e9a766193efca47c70d49364f03d50c5edb5b5517ebe",
"0x10dcb11f815c7e29c66be1dd3c5f7602c98e9fb1687c2d825b48789c521fbd0b",
"0x28f901fcaa860b0dc4192adef8ea4ae55af6ce432c85e0ce4d073e514ab24252"
],
[
"0x240c57897161666f28d000b88d3353921d967420f401ce86bbee42be287a4f8",
"0x1361d27c42a7b4bd6eaeb98a339592616c0d4d8fceadfdb16468162bdfa88d46",
"0x19e1e46536704ceceac3eab991bd806e347be40a0b7956dcd7037352fdbc4347",
"0x121f4a18d7b7d9650aab625ebe8695a8079439f2ab00c090279de74726234e6e",
"0x8c45f3c4c486f6b5378c779c607b517200bb70b5533bdacef18519f625b925b",
"0x600cf26635b2d546431507589739010d1b757ceaae617bf95b8e1efa98643d",
"0xaef8a4e47d5ec760e0565ae7acdabe7e8e98972de86dd2f447aaf216ab4cc17",
"0x2ad0bd9f71e2785084aa0b84616b7dada053207c418e65f4035be66a0cdc8c12",
"0x28d327a1c2d6012d9e69e9a3b4c11ad336d3c0dcdff4c5c84ddddf911eb645f5",
"0x11afecc85590543bd2df8ab952be164670a3f32593e962d4bd493bcd3c84f84d",
"0xb050c882073a581e767223705cd9510c04c30168c50ffe0c9875a28b6938299",
"0x7cdf3309e130f9ceddd688af3885369fbacf6d8a44de4d450667c0d7641213f",
"0x5232bf95807e48ad82a1eb4bc481e9b0720e95196dfe361f55c4d1cfc7926d7",
"0x1e41936e6bc0c3ed665c2e2466ab9216b9973fe136d9f9aad95878c1b5607c6e",
"0x2647635477ee5fa9e7ac5983f92db34d7336646c63c63e2dd53d60b8714bd759",
"0xa11d587cb75d48544eec662ad27ca6acfec98f7a8b7963a294e4bb329b170df",
"0x1bd639879731823c871f9cd4714e3cc56a6eb19884b73664eed24b11929119a0"
],
[
"0x1aaefc2e9925fcd453996fda804063fdab276b37c5f51dfdfef9255b4ec10cc0",
"0xf1e8f86860c3b5c78bc14dfb67d22c6beb8992123658842f23f75ae3a92e99",
"0x19c2540bbb1cd4e08f105437063c945cfef28ae9dd50b97e0b795f8dc5ae34e2",
"0x21f08f9b3c23f3a02518114a96929b6d1056eb4d1db147ce0c8882e1b0f7bd1b",
"0x2d2193c677bbcd56a74fc2ae50ab4f2cc69aa77ccfc33c7707452d5adac77edb",
"0xf528f5912be49455d4323b259e30ce2984d8170601eeb4bd7096b47353ab7fc",
"0x8c00c4e5b3467f01901f64f9f89c15bb0b90918d488b730cacc3296691e9200",
"0xfc3ccef00d6a64080abbed4fed90b69c5e5803134c22b42cdca0a60f03ec33c",
"0x1bce67f4dc99547f2caff1b5c6d63e3ee2565a404190664533c1c65dd9d8d532",
"0x1a8ba4f37d2315389c8560d74dac572a4447a02145516287053e6b9edefbca2d",
"0x115e60c4e2937eb53c6e4a5488f801266e84d07547a0b1cd91b18f49efef9920",
"0x152d47acb9b06c9d12c2138a31416bbbbb991a65dc4d4f8ef91a3dd728e63b6a",
"0x13602646b88ba31c0d544c757bd9181727835dbe690c30583a23f37f52fe5e3d",
"0x65766d2980331a55c0a39d83be78bd127baee77d53a24268e064c71daaf2b6a",
"0x26db2e85a9006ef5c11cd675a267d42efef9f5af90466b2aaf75eea8024b00bb",
"0x1dd6b095cb68459dcf6bdadd434aa81f80a55a08e6782c653a93afd8a65f3267",
"0x1d3ee85f078fbeecda2473efc2bedd1ba7ec6f4795faaeae3b0de48d3080c625"
]
]
],
"P": [
[
[
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x20e3e914631964e394d269ae59f17efee3fecee512cbb163d32cc760be574bd6"
],
[
"0x2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e8",
"0x10a44ed9dd9ce568563394632833d8633690d329ae737c8c7220a9b197ee3f46"
]
],
[
[
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x1e6f20a11d1e31e43f83dcedddb9a0236203f5f24ae72c925a8a79a66831f51d",
"0x1bd8c528472e57bdc722a141f8785694484f426725403ae24084e3027e782467"
],
[
"0x16ed41e13bb9c0c66ae119424fddbcbc9314dc9fdbdeea55d6c64543dc4903e0",
"0x2d51ba82c8073c6d6bacf1ad5e56655b7143625b0a9e9c3190527a1a5f05079a",
"0x1b07d6d51e6f7e97e0ab10fc2e51ea83ce0611f940ff0731b5f927fe8d6a77c9"
],
[
"0x2b90bba00fca0589f617e7dcbfe82e0df706ab640ceb247b791a93b74e36736d",
"0x11e12a40d262ae88e8376f62d19edf43093cdef1ccf34d985a3e53f0bc5765a0",
"0x221c170e4d02a2479c6f3e47b5ff55781574f980d89038308a3ef37cce8463bd"
]
],
[
[
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x2b257df708d2f3d6785ff39129c7f268c13aef87ee92e9096bd6bd8d2989a74",
"0x224a7cc70daf93a67ba74c0f2d80c5b0aea7ec1bb1f4e17ea21ff147c58b0a1b",
"0x18ce43c42faa57788e66b11b59c98363b6970c4fbe9206a0986ac7a4438b96c9"
],
[
"0x277686494f7644bbc4a9b194e10724eb967f1dc58718e59e3cedc821b2a7ae19",
"0x27907df41fa277d8c74c3725e5b8be54f4b35d3d0b6e57b26ead3cde3d431897",
"0x1b7e85dfcfe013c45746d870fb2114991d43131fadbf80494c01d5b105d44a5e",
"0x2c1597f81dc951f0b27440567676ac64ea1b184e65eb25292cc4da61d8bf9824"
],
[
"0x23db68784e3f0cc0b85618826a9b3505129c16479973b0a84a4529e66b09c62",
"0x2460a032cf84ecd1f57096c9d21f5d48d1b21abc6d70277d7a75946997aed17",
"0xc7a2ae4396db1838e5cb1ee490a768c1777efac919031924ab242d19be92806",
"0x8c2147f957a152ffc37eec7b1cb029c07ecfabcc84489502a6e052aa6f94288"
],
[
"0x1d359d245f286c12d50d663bae733f978af08cdbd63017c57b3a75646ff382c1",
"0x2456b3c4841aabbcc4bcb4950dae4a0f8e60cf0511decb8b67afdabeca0dc590",
"0x1a2e45b92aba8f36f92110d68941ce37d39fe27d02b794d53f7b961b7ed377c5",
"0x182d95b63ec720b3af3a3bc6d0a6012d4885ba5754f32aa1f1d92ba130fe5745"
]
],
[
[
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x12873658ecf188d299b8ccd568eb14a4d4307c5caa95633dc296f05cfc966598",
"0x153cf8033d8e8a15cde2c5e6b93da4018c5954d00a9274ec5ec6d5101ea22761",
"0x9f15a882446823fdca6f6ab15dd8e250d90c84470516671afbdfb0de80fb00e",
"0x167c655bf6cf3e0fb64c9075773bc862b24b4ce2f69c8ec198add2758a2ce216"
],
[
"0x25fb50b65acf4fb047cbd3b1c17d97c7fe26ea9ca238d6e348550486e91c7765",
"0x27f9160806de9ef57ddb4243f839e4b7e8bb293ac176fdc5b5419ed73a07999f",
"0x16fceedd703bbbc2bc6f1d792e501939105b044b1b904d3b110110da983ccdc2",
"0x2eaa925d06b6f5a77c0d5cb20598742791495cec84593a57ee9fc4c9115ae7ca",
"0x279b324735fbc883e24f191ca7039f9986115b9e6fcf4946cf45f08ceda2dc8c"
],
[
"0x293d617d7da72102355f39ebf62f91b06deb5325f367a4556ea1e31ed5767833",
"0x97d71f1fd579a0d0f436a6b36165cd23a9fcab03ad25e7872cdb09b4a0ea0dc",
"0x1a9fd26611128d592d594f51c251dbf4eff6dccecbcf2ebf310e34bed661337e",
"0x21eb30a57e5912ab06d18573fc546b2bf3be840d5f5ede01f91dd2bbb578dcc2",
"0x13abaf72889b31372b1e6f48759371ef65bc57d28ac2f60e6d227eb008b96ced"
],
[
"0x104d0295ab00c85e960111ac25da474366599e575a9b7edf6145f14ba6d3c1c4",
"0x19bb8abf6a012cc7b8b974039c6be6df31446a51702b39a8d90ae4be7ec33ec9",
"0x11075889bc0dcc9d6f06af3012f04aadcf9049de04fc775f8fa091702e70b9bb",
"0x2e4cb25599a3dbf07de338827b28d16b9c8fcab8fffe8f2a16161be6a521a358",
"0xc7a700b33fb23fc642e0e8671deb84d05ded8ccbc968d15171182e158684e85"
],
[
"0xaaa35e2c84baf117dea3e336cd96a39792b3813954fe9bf3ed5b90f2f69c977",
"0x2b5d28e8d648bffe0fab59e3c7d983a4099fa0a4c548df0006e6d0f4e20206c1",
"0x1a96c37c461ab8a38ee15bc2784c5096d30d1482e57c2f861bab95584b90d84a",
"0xdbdd3171308bfcd3cb8b8a676592858b8652e902142beb8fe4145002fba8e0f",
"0x17ac4855f295a3b8fb8ceded7f4b39290647a0145af56b03b01e957808d66fa7"
]
],
[
[
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x18ce75a35f7297cad2bcc25f0ed1bb4f7c592eea8c6903b19850511ddb83274c",
"0x138f93361c6546d69015ad48ef50af34fa9e19c6e6844a847eba9d908572052f",
"0x13c29b24c0e38e65a1b9428622ba42931bdb65eb5975e66d3c496c7fe6f7a30",
"0x211a38485f1e9db425379f4b3fe9c20474c968aba2ef8a4bbb898a8420d0fc90",
"0x2fa4d773833d944be46ec798f7d16e9fd02f51c086141af5d69acf97e9a80b2"
],
[
"0x11924f02fd19b09255aaa1cf46ea0518e3d7bfeef47421609491011db0bd0b02",
"0x2c001eb6b378c49fc5b37aa41c13fdba486bf324eae0e0063ff83551827f338e",
"0x51071183ba1b8fde055b8f273005056fb37684b241f88851a5b550ed0cbc452",
"0x14201055ff5412f834d761da8017961213666e5c44d6c5a8237deb4d0f734d79",
"0x182177db418ecda99e6e9999c3c0492f4ec27a89b2ab554dc8165da9ba8c9762",
"0x1111d2d4d2a013e33fcad48d574587e3d7f7f6b484d7fefcf933dc833d13bf28"
],
[
"0x247fa7f022304a1994ff505456c2201ef9b717369498d3ffce446601ed9df845",
"0x16e74e9c0932c76182ca25ffa7dc6ae62b2cfbe19142b2ce1d95ec0839d7faa",
"0x1a13e7beefcfa55aef7815712c7b350b465c0785afe7d6b356342b61047d07c1",
"0x1adcf63e81b22ad38811b20aa6175ec41784eb99fbee0f3e56a15df0c1ac5179",
"0x2f3a76ad0307b740f6e6e7aa989335c6000d930029beebee83c0631b3b435123",
"0x24dd1c38ec3e47cf711221cdaf4b2ccfc0991a178cf7df2f3d1b88f858763c40"
],
[
"0x3fd7b19ef2c861f22f77ff810f54e277bc94eb76c02d79d986be3dcdf051c3f",
"0x24de008c4b20c4dd769afa3b377e2e72f0a74339f53c3f6ba8b84b0a85fbe9ab",
"0x274ab81953247f18a26dae90d93deb1f33ea243af6aac4e05e117e233b922bd2",
"0x16a796c4310ddbc2c435ea5ef0d6381e163250c33485426e97a566ab6f2bb07",
"0x1befbb4037c8b847d2711cda8600d941a1583cf2fe06a8ae02bbc26e180259ba",
"0x3a01ab7488d6cac69f70b90101e5c8beb78bf65a79fd6068c9010ec2e0fda4e"
],
[
"0x18bd41239c3e71579a677443ecffbd555a81eeeea69352a68b67c8563c0c2a06",
"0x2a28f2409cb364d31b858844023279404e2ce02d38430be77b2755aeb9193a56",
"0x1b8e6cf61af064c9804f1888a6a83f6cea7c57e574c229f978aa922ddccd80da",
"0xca6769d4383398d1a04d3d7a6f3510d85fba7f5f6e6d287d447908d11c71153",
"0x125428fe689ac0be368c80b67e8b2ab83d8163ba30b4391927f352b3bf3dc5b0",
"0x30516fe884be9bad887032b15a83c91d84147d44fe15c90935ec4d421f5ed05f"
],
[
"0x2d78c3a5d28de9ff35bf0a257635196e5730ca7f40493277078cd75da8b4ebdc",
"0x2afeb1a63b374a502180680156748121a68fd7002114733bb039f74ad576c0d1",
"0x3ddf5c61fc2eae153e94adfab9b234d07b261ad228547ba9218c4caf6cbaae9",
"0xc2e8c673f27f45ac1112d92cc8b81ef4af42657d7a114d2d6bcc4b74bbab7c7",
"0xda5ededdd0fdac9af41d58581e5aecafee671a5253023205aa9a2b7e1df842c",
"0x280364612aadf31ee5b176ccc54b4a5f961cc782168c8f83ff2ab5b4d12adc0f"
]
],
[
[
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x90df29b70c5a783521503f92a45753c8bca03a74627a24c44dbca6eca32ac42",
"0x11a48e9fa064121f52297162fd169e051d154a0e203583624a16c73534430b9b",
"0x1636fd9a0457ce75aede0821e036773e39c37adf6fedcc7b2cdd72254e2ec7cc",
"0x2e64b2e0bd6fb47559f585b63e8dd15b430058a63f2076636052efccdea98ec6",
"0x2cb7863886cc4ee1640210d29a4a329d93a040ed45f2744c25731c8fcd15f0f8",
"0xf3212046ef984438989c355db0984f93ea4bf99de1700ee0185886e81f2ef43"
],
[
"0x1b4bc5885d1cfc8eb691875300db5a0c7362ae381898acaf8b63cad04ecb36c6",
"0x2c628e21a22008733e14f81e953a50072ac800560554df9e97971a56c509222b",
"0x1cb1d2eca719de8ea352adccabcdd100c4fddbd380871e2190e33390b8bab1ef",
"0x6a0175e0d8aa3e1b994a177af69a40bdf6dfae09c41d2fb3d8c599c76e7f07a",
"0x5fc6589a1d1d35b2473c61ac293c6d6cbe24fab12a9086c0aee1f8d1a28a883",
"0x26342b8b16928328123d727014822f00f4fbde2cd45046f5dbb6b986edfeb632",
"0xd7565999ffac123203ee5a0699bd4a2f4c491fcfe05676f928694717e572878"
],
[
"0x8a72fbb55dde3e93c5818571a424a54953695029eedbcf91eaeb012751c7f83",
"0x1567d8f8711949c036030ef808665350cfe9b648f13c675379aedd83d9b83767",
"0xc9037b1b5cb3451595b4f8a1ca80c3d72ceb93d6d58dfe8eba02e88d211b281",
"0x183d06dae1a0ce53171aa09f25f25ee397263dbad5306dd1b7428872baabd5f",
"0x7da96bbf5fc4458741de810178e19a89631a95f2e0cd7e5f2783cd237f3d911",
"0x1efe4b3bfbb320e15ac79fa9abd46e4a19b21f39bc40143351321f658f6cfe7c",
"0x900505bde5ee2d55f5baa932e38805bd914afbcf3fc854219cf41d147b89db9"
],
[
"0xf95359a1f6845d4921892f83e500bbb1b3d3763d8fc762400af039b0abb83f5",
"0x27630d326f12eed19ada60a1f6c496680425b457f42e8999f49676af0b637a6c",
"0x26920194603a11727525c5e7b267ab6580abe2a7912789eea077a55f7ec3204",
"0x10e5dd7a0862c4aba24ece684e502d3d6132a99d906908b20eba4f3466812e42",
"0x2d30f6e371ba6fa64853fca459d0d6e0edf941c3e8177ad5d333d4eaecd7dc7c",
"0x7ed952f7c3370e03880bfca6348ab2ad35bbdf9b7e9c266e7885b580edd59fd",
"0x25b7a438b7dac4f0b36183f18766ce503f69d6c1d9cd29b986d7d2b8b44be433"
],
[
"0x16f01751ce985328afde34d81619defb43e6c7b5dadf52d0f82472fbce7770d9",
"0x37e3c16dbd340ff80f49ee4f7dbe1098b474176a92b7a6964a63f2fbb8acfa",
"0x2cf7810985ed56d898150ddcbd42edcfab6442f0d0a7f637693f676300c85c5",
"0x2595dfbda733d0477a01cb6693b93eb4cb711bef3784b5fc9e17f1b342eb15d4",
"0x7d9eb804f0a999ec586c58164da8467a481c1975e27b951f6f18411a7440cd8",
"0x56b8df70be9577f94b6fc2a3a94f736d9c7b9de29134ff3a524e406e3143280",
"0x258a0dbb961fc61bffd39764fe6d3c687a1061b59ad00fe85d1c18594b7e7270"
],
[
"0x1c391626328457fcafa629f3e6d33e2555e8d885e3c07cecc8af1f4d56596417",
"0x1814234ad66f16a36711c9d2779c1358ef58f650cab5cfd95a0678af36224c98",
"0x25965b4db95bc7104bffcc6ed99af5cf5328012a3a1a35cdcbcae4ed2470175a",
"0x3090eb08e04a2d235c164b71a56dd730c6b95e5a2613d39cfd932b90af23ad0",
"0xaca5e46d797e1748aa438d2e2967569992dfcd41997be143c3ebd2a823b7660",
"0x18e6cc7c6ba50e61933de0f615fd4458d39a6c34c2f241a4cb78dab9dd1b4283",
"0x216fe55a6f2e8daa2523b65eda5367ad3a3a6c55856c5447f398a280e57d6535"
],
[
"0x970f671b9ba35e3e3c642d1e0b8032023ed5bac91c2c1056f03965a42c5297",
"0x1bfb7975cfa9022d9bea2acafbd020c85cd3f1091794d28413510f2d723ffdb3",
"0x20c27ab9c365c5d2de660b9b31d4a406907c506b5488787bbe2de181b76e6a7c",
"0x28feb3ed6c194200a579ff340040be172171c1f7980e63214a0b3f7603d68a02",
"0x100d8a1a7ff31b30725190584c830b15c0cc5a41d9d530ed57c0bab464368b5d",
"0x791d241f4743deb4afd41d9989448220d5a1d101bd96db5ab2968b981aad486",
"0x1749c39995115eef14e1bcb1ccd4cdfc5c928ff14e078b38f5af326ed6b1e099"
]
],
[
[
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x2ed795314c562ca0b6d7070712495423ae6bea218cd94677d06e1043327d5d11",
"0x1c700c219b9fd0ac323c67f0960cfa94e637aec4a5b68c8c8c579da52123752c",
"0x126587f4ddc000b06931fd6bb92c2497aebd10bf7d001a3f664c6d6934225f1d",
"0x1d322025a71f8a8445b7c50d8020f3d755b7ecef465abebec16e0d391bf9bb8d",
"0x1d3fa515e56ec187ca7657d279ee613e0f993ad146ee2b37f12d142eb8108e07",
"0x146acde01679ad962ede1caeb39836b4d818c68db52a9a1cde771be24b2e5e20",
"0x48997cdde9b1ec6f3bc2ef708b27929596d02b366f44386093108703f4a6106"
],
[
"0xe1f4e4d26e9da5f8ee3deaf48b493610be61d7d3db1d9754feca30879adc644",
"0x17ad6adb37b2fdc36e43baa800fc4a0fca98a20a2ff9c184a838a1bff5baf530",
"0x14583143fe69954ead766939d693b018c9c6d99e86ba2002e2960640f993f19e",
"0x9664ce4670db8421617eef97a4619d9914046ced174c5907e7305424656d460",
"0x51301752f12f6de8c23dc31745b2b19b9bb7c39cc1ea08d08738c36a5e85885",
"0x226238a28654ad973e1a259a8263c6b4aec4209093ce8e563b3eadb0f1144170",
"0x1fd98a7ceef4a6d3b32de8b124c7e024e57c37498fbec5e451b92f5666a9e441",
"0x1f471d25bb7448b69310b975678ddae2aa9080ef691242dc6871e6a680bf6a44"
],
[
"0xc298c14356a5a7f226c5a549e59184900385aafd8ea41d9746729964ef75f34",
"0x4ef313ca88e6a46eb38c9aba804ec4264f79f1dd0c05857bbdf427a86de4483",
"0x117bffb0996f3b8796bcf62f00e93cded9b3e7b07180721f2c01e53c98502f42",
"0x36d342dca9ebe248ef3674d1399d5cb02a51b6ce92efed9de36f2adfc837cd9",
"0x1521f1fad861eeea8bb068264dcbe68a93abb6076fae2f9e17066e4ff5be87c",
"0x2d6baf82ccebf60b0fb1632990d9bff876ce740798a6613203cb078a9ca1a532",
"0xa2ce4bc27cb25682f84ebfce048f14689f31b45e346b713dfe35716b9447431",
"0x1e1b9c1ae86ec688bdae2fe7788b7311114a3a8d6f8d7fd8ac4d79a3cbb38e4e"
],
[
"0x19e070982d3ee675e1622ca20d13b2375e528b676706882eb8f1afe1c5045ea1",
"0x1562e5b3db42e4e28c9c3c085cfc8fe652b68e8bce182e6e1c84ab02661a8cfe",
"0x1abaf63769a9a837a0d09e1dc6efb2dd1dc312b0c1c4a8c066663998ae04bda4",
"0x338e5e98906f68a17cb1852bb77b5f42f287cb74e3afdb066fe966889db200c",
"0x2d74e6c13b0856c0dd85188c8a80f41dca1e9791b1042521e7bae94bb36d499f",
"0x7672fca8816914835cccdbbee62aa422a95d77118fe52444b5af200af0e00b2",
"0x276718d84a065a288179b23b9b2d8ff3f6e55cbf97d873ad1f7e9a2cc8a09649",
"0xa1bd98c224950369af79941d860914b7cfcca9596899786e6bd0889482641bd"
],
[
"0x333e2923992e89dee570a650125eda75a20a72e69e10863a19d17b7beea9295",
"0x1a197674d40c43447787e6079278b5812ccb17996403315e0f06230e2dbe016a",
"0x1ae4af74d44320001b70a0a230327d586b0319d53a839f5fd27fac9169085169",
"0xb169fad164bc7690cbadd1ffb6ab2e67be46376d16629d663b0b83ea7b7e4f5",
"0x154b82a74672e1433c3417f9cd1c53d4ec0e4efc9d4c2655eee3c24e4449655d",
"0x2c54cb56058d37bdfac59708d54a16c1c7cef8012ae5d1cd83d87140ea73adeb",
"0xaedbd439fc8a60c641e55ba0f17880e00420bbbe5ae332855e7be146a0a0b24",
"0x1b87ebdbf566fc8747d2430b3c45edfa8ea4f8c9770230ff4091f58d6cf6b61f"
],
[
"0x1944aac72bf6fbcdec04361238c3c4d9510d5f07439a1b6ff41f652990be0139",
"0x32aac2605d772f1fa6f328379ca86f4368bf679a39937cfc508a58e982db9a8",
"0x3a38b1fc1f632c027894c17bbc4702d45616649d8e3759d1bd4239d89c9cfa3",
"0x26492ca60cbc803da9930bf40b24ab2136a9275fa8b299cfc2674ef08234ad11",
"0x37a36e914e568f3de0d6be824fb24b107bfc8c77ed767e707f8aa5f0199b205",
"0x5de377805bca799a16d073b79fdbb07a672e7597d16df2739345938a20c5b3",
"0x2eec7d749447d3df1f1c2da415cfc4b448b3fcd473b9cb5891f36db1c33b5c17",
"0x5c539bdc0b98fdf23e2c568d8aa039f8d4e200a6da374c8e764b530e9b65d2f"
],
[
"0x27d802ad019a42fd04892ad167d9e83596a730605890401319661675736359f3",
"0x1e8382dcf318cd0d7f58ba77c1e4641ed3412a480f0b779ee6c9b73147b09d2d",
"0x5fe56b2e7f2cdf071f3a588f1c604b2ab62cf34ffc1d2c72cf8a86079f01fd4",
"0x177bd045809197d7bedb995ae85f213e19c1e301a646a8caaf7c9f3492042b",
"0x179ab9300b69ae8b9b7540f256c0947b8dee0e53289ed0b5b7d0ef09fd10826a",
"0x2c2ad35579f01d21b61c81721de5f2787950facb1755abc12e63b0ade9c66e4d",
"0xe78c7c5a33ddcd2ac7aba36f3b50757bd7e867f9e6775bef50c85632f870959",
"0x2010d6aaa2a1cc21415a72760a1a9d8e1aa82111c3f91e1a35f2abe8b79f2085"
],
[
"0x2bd05a040a0987ac6bc01f67242d54b7a2c527a970ad2815b273471eb9623e73",
"0x2f337068a0ab32fb994362be568487a5c9974d9ff203f3db13234838c8246469",
"0x305fc4e93cd1c823068e5063fa983fd71a9804864231e37d61035bef75f60188",
"0x170e3b120459d017daed43224c80f6425f59ca2260178321543bb556d501c090",
"0x1e1ceec2c1097c4b47a0523f89c94a42f52f2e011da379b6a0e57ad09973e16f",
"0x13e72b920d7df0336d643ff47f37bc44888b98f7ea8064d5c96f8d39d11834e",
"0x2fa9d8cfc04dba7c7f80eae1154d535657bc7015459a3df9dbe47ec7044ec009",
"0x288ac5e38d20b5159d4c37374d8ca702decbc6265b6396d30b2c2959ae2af9b7"
]
],
[
[
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x7341fdd8b6d7c94a710e78e47ae71d8a2d2c45bf48dcd6fe346d2f9263adce",
"0x1c4350bba48cff51ab2e0c56301b9d3b289a6fc4744b61fb90dd5bec31107ebf",
"0xc6c426215bd132ce2efae38e5bcd7cbda5cbbff829320f99be9dbda88fa8a3d",
"0x2810b0317abd6345a234fbe4661070c9bbd1712c64d04bc8430847e6a5435a22",
"0x16ccf6000486cf0ee9eb858de4de15afda028275ae86398b37a27f1586257f4d",
"0x1756383b6b2b1db75e494e291804c5ad7d947d6c79dfbc5e72009f11b69c3503",
"0x55fe8568018f82fd47de970828d3b5f30fa7f671670bf1b615f8ab4b5df6c4b",
"0x21b8cb5fcab5ac1e4a8e968e95a134731f85c9fb488d200998c1152f49d3c599"
],
[
"0x1f8d3a9d2d31ab32d9bdb6375170dbba89f6f8f74d16e4fd02f3675d5fe2baad",
"0x3d8602794854484bae8cefc996d566594d166c98e8dbb73e70c0ee829da35d6",
"0x1c6b76e0d60e628fd7ca0d7d60de7382c8c7ffdabefcce98d45a1042b4330121",
"0x2deecde3659cb16fae536b2a1d81ddc50da450c1e96c100a58157b0b2707ae8c",
"0x1ecce2c394a577ba99982bf4035574776ae9fbf51aa4b218a363eb0bd1b743b3",
"0xb754798119ccd26f34de2ad1caefa4fc586ec4d6bcad8788a831331802bebe4",
"0xf246352b2864232a8afd890b5a5c1114127ff9e80e539b5d922b3d53b4c2cb6",
"0x1d6fb6b7c89bb84d5f7fa77fcc40ae0bdb914388f6578747f62f388344139ce6",
"0x1aab4fcdeeec99f73a94f5e8503b377394eeea13c9c345d177c7b97923b1014d"
],
[
"0x230c694139416f40422d713e13c056c45c3c631b346854523970eaea58a37df4",
"0x20151c663660a16fc26c7452d683b1ae0a4bfe25e01e2d2ff682d6f8c5ad91fd",
"0x22d746e18a8eb6059d6913f3d2219fe1d1abfcb21936bf4462f3deabb86ca232",
"0x12bf39e8f879b7dfefaa4be7d615736957975d6b386c0cc89bb81a1b381f05dc",
"0xd639e4276aa71f97d6d061929e08d78b690054d7933907c91989891d7e04496",
"0x22d621427b2b65407fda26214625aa8cdaab5e27bf99cb8f8aef492030fd40e6",
"0x1f9ed3d81ff1494a3e555e532cec14085a7d2897ca721cfb41627fd387d4c6ee",
"0x1202c35b5378961b68f410413270c6c5eb4861f5f016891a9d3101da67f24c24",
"0x1fc69a3e806ab5007fb930b1c0e8837529f3c18357d74533f14c2152147b6a88"
],
[
"0x2063a461ad06315ae5992a53a14bb598367624afc2833ccbb83af92ca0f6a334",
"0x14be2c9eea6708b8055784ff7a6eaef5f2423ecd3c987507edb4d57f42263c8a",
"0x1c94e3008e7fb1ccf9b36a3b272b4ebf56872e9d3ad09fc7fec8b73f3edc8dbd",
"0x19c33a1bef2695e72cd132a78c4893d762540fa2eb33c56a7e4b6f88a15ffdf1",
"0x129cda4d6b758aae7d636a11364f08165187bfb7cffdf51c90e7f6feeaa44d7",
"0x14fd9137c30861213d9081982e9c1e3627180371bf7bdde642ce8212b70a5ad1",
"0x1835c38dfb0f16b1ec8a341397cfb66317dd543c48852d8ea875827e2d5f68ad",
"0x70a63f4db1f63477a7245d0577d38f8ecbbd9fd8a253adf5e36c86f285598bc",
"0x1c4546e0f6a7ec769233d0ec55edb3cfbe528b846ed015e41d063b9dd42bf1ff"
],
[
"0xc574e628f84b6ba9d17b9d2bfd4747e06dd68cda2383d64ce365927098c046f",
"0x21e114b50d11303e7d5e39d69abc346d8c062b3bc70b5a88e0d04c104c89e576",
"0x15c4bb533ce05422d3201cd04a12d976dd8d4b41ffb77dbc5f58904d9fee034f",
"0x14f45f4497c4a67c90f50bef58ae132c54459facfda9a6afd38dd06113bd09cd",
"0x154093b24b8ae3e4c7ecb11ce7f6d10326366c410153cec3543b8f8c696f5fe5",
"0x80ef3bf4cf0ee1d45e6e64fb415c76bb901b1ae802c7ddc2f8fcf9a7c4a8f91",
"0x1228c23f9d6c7b75373a17d421f64b589d7f486511f846b19d5b5a7a4ae888dd",
"0x7d4d3ae7019c26ac7038b866eb5f0b9913b54315d879065236c20ed87c3f2fc",
"0x1df9042167db948e9c137df365881a2137baa8afdcc75f9985d2e2a54ff2808"
],
[
"0x276428d88040a3e0f442424d2ffcb8d19becf3fb6ca02c1b5c61b5ddc53ceb90",
"0x2d764f3f9ddefa066b449acde74eb4270b819cee10a4125abeb091cdca204756",
"0x106913bc4e38bb6868247a3ddb23f7ac12b78d688df4cb4cce0e2a0027317fcb",
"0x2968de39216f3f05107f5715ca891c8cc9a238893d7c75e8684813f9b8f489f7",
"0x20f194b853c3b9aef7a751d3922d17428d595a02f6e9562f568e2cf07c928ae0",
"0x30593e502ac9b6856131ba8d187dfe8d53ad20d4ce7a3b8d89ed228c91045401",
"0x2dadaf44fe7fca4988d5777f9324ab2aa8606dd3c4ab4cec318e0dfa9d02d76",
"0x2b30b0b25fc57a37cb46759047e4c1906a2d64b1da6bc8048d683a3aae105814",
"0x2af620d499b90b1b8bdfbfed437d5c71ffe5112b22d538a33c9511cfe434cfbe"
],
[
"0x24bdf6101b2f223174e869d6aecbe8ea5b04a14c38fdf1494393cc6fdb3e42a5",
"0x1a8803986af5a84f9aeab49f048c67ee6ffb4689ef31cb51eff59977d250c4c9",
"0x2c95ea22f6df6c0975156b08f16516ca905a828aaa2fae35c5465bc99ebd0b07",
"0x17aa91194ea3c39030e17603d9b8bb80fdfd271fc603180bf0ec0b49206a76b",
"0xf6884885a376b75b81ed233294372cf65cadae30ff9a657ab93592ceb935c95",
"0x16a7398598ffc414f79d6d0dcc11eb3830bc6b97917ae1d9c0486fc6a162546d",
"0x259a2acc8e87e4a08a384199ee3bdc03df7a3a1b07c83f49fff07b4da49e4ee0",
"0x19cfa837f30749fbd33925eabe3b222452dc4f4569c826e602f2397007c0a858",
"0x22be9a5ad9f369512913ab2213536ef1ea927d91f42c69c35be9071d3208dd5a"
],
[
"0x180fca184150c0e354b4b3a4a075824d4b68e8274943f4dd8b0c64eca25dc68e",
"0x1540dc30a1b9aedaf029e5ee97b63a63fa1a47a7c59304e2bd1fe7947ce6774b",
"0x302fbf64fe705ee3a34e33211937a3cb487838f3a697e0f77c173999486876b4",
"0x202f3f28f786f3047f7030428878b673a3152c0500874263b99f2a3f3652eefa",
"0x24145768e616bdf16b3099e09e9e56f114c3ee6fa6e49513c2c4f2b3d0002b54",
"0x80ecb13362f44510286df98f696ad51beb124014f31fc8cbd9d2dadfede5e55",
"0x10a2dd7c6bdcffcaf5b00340731e2da029f81dea7271c8c19825060cbe5db6db",
"0x17bb125cabad9ea535325629cbca4d37e5f30a3bc3c7f12d1aa1b63326974fe6",
"0x1f5576505ab6cf76adb88b8a85e1bff7d1ccb35691118d4180034fef90d2a873"
],
[
"0x10726dcff87299c8532159976607633f1bc2ad24453c1bab26b726b82d756ebb",
"0xf08d47f49171fd7d603461458053fb30596012a345aca5e6c8d307c5ef68130",
"0x1e1e54bb56826529a37fb6b7bfd6af40dc9da70e6f6bdf7fc89787a7a2ed0785",
"0x275c0ac30445ca28c7836765c9877e439f0b1308e5b8b5bc30be95808c9b7c03",
"0x1d3ecd8624f2fbc7aee4dbeb91ff442a018b9a60b23d7e607ea9eb2f6ab6c239",
"0x237522466e8ad65c715717c5273d65815a10185498c9e71b48fb441d90b5e3e6",
"0x1f23b760586a694ffd7cba2757f935ade52b1b3593968ada9e0268cd71f6ed64",
"0x36083127b4a9a1671954c4ec341dab8d8419322c722061075861b41df631a9",
"0x236a813f6235546014ac3a47d20bd75b4b6357e043e1fba18a05ac59a9aded9b"
]
],
[
[
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x2376caeace68ac7d5504c33a2219f5c7c5ad25784cea62a8df008c4fcab50d07",
"0x11738aa054dba194b2e82013feb222a4257eaec8a01f131fc657ee766f408d04",
"0x22683ac3c69cb11bc0879ea8b2a5c88aecb222d25c68a660a2f4999cde166655",
"0x713c79d90ea4f0449b01031fb6149994fc9b764fa494a3b0bbaea522d4e48d3",
"0xc372107400e1f8f8e93964c84da46d78197aa045614a1dd700f1dce65779437",
"0x5abac870bca413db4ef84c71b44676ff7e7c741c9b5e3f3c8efaa73e446c02c",
"0x11c5eb9e0e5c1669df902352e35eff4517033d2a2a946a8e5fd1492a3a141229",
"0x20caf8e87737232b8c429d7f8e9c9827cd7fca92cbc159a319567e646480c7ca",
"0x185ebe5ac788074f48748c8b4f66564a581e615b3df9c78fc5ddb70b80475d3"
],
[
"0x2fe429db8068e61b82624f25766273cd9fe6368ff097eab97aaa09be4c630e27",
"0x1b1d1d024385e8a3b81c435ef9079a52dcec3cf811253a83325e7432443ec02a",
"0xa5f2f19c49d9ae6d6d8acab3a944b93221a074e7a84939dead82506063120ea",
"0xba8903c5a36e9ed67d21b2297f06616760d8beb3ef96c69dc9c843bf52a3015",
"0x2a850b071614649f6e6ea4c4382d7aa9981736848c3bdc0cebccf3bd795c65dd",
"0x20090c8c6b2e41e84178c0700c9f81b1e128b15f65806648c6166ca8769ab30a",
"0x1f9c5c5cd58a682a6155b2db3923cacc1944362035acb2eef2b421fe5bd91f44",
"0x2a2190daf9de7f46b5c80235a0a468c68226c193ff86cc8a6ffaa7033626d093",
"0x2dab478180d47e197cc91da2f1ff30bc0fb35da934ba38c8e5587e005cdc2f05",
"0xc38b0564f60610324268079496ce366271d5693ed6646a6470acef4e779aac7"
],
[
"0x2e750867942439083365d21fe760c7dfec9e3593c67de12a4255c6b01648b690",
"0x77d21c1db0df5aefc4a82442165dc0c6671bf7c8ae708c8f9b6d44b033f2139",
"0x1b974a1b3977e8bf679394da2b702e724d2fde8aa4e60b83c631de610d1eeb30",
"0x12f77c314190ff649ec4a608780c3ef7bd065902802f2bd41a93a0666fb8a90b",
"0x7626c698acdc1e4ec6fd26aa192bb334d96a0f3935e5a88a8d7abfbdade4f03",
"0x269aa03a5af8a48e20ba3147943c07e1d1ac7760edad58d9d03d0f45157935d1",
"0x45f5c794d9706b43bd71f2a4d4f376bcbb76c7276da8fa942eb766955c53efa",
"0x6ff77c4c464330deed91103d652330809d17045c75cca24e8b1b0a61d572af1",
"0x29e529381ccf3f80fc5d54b7c39adfff8c2ebb5dfb86745cb974a21e9467455",
"0x6b50f490125ae0bc287d018d60c4d6752ea3f61ad3e939622c1773df67a7f4a"
],
[
"0x23237985a96b177ff7c01486ab0d603d29991b8324abd6b07dbb96f5c21ba17f",
"0x2b9c40e97f4e7e6eaf4d342b420fcae7bfdebc3460c120b7a4b99240ea0db532",
"0xddfa16097871dbb1337b5ed7ae8d2bca1e5ba44e482df13dc7ad593ef27a5bb",
"0x165e20a2a8ea0382f56df39ade0accaab08fd9db8a7657b74ee54b114393aeef",
"0x174b9be8f359863993e57e21e4c6fbd4b4a4d339d943ede1d85255ee48b3ffa0",
"0x304b87fcdd673ea0ae58bba75c29249f964913b2170aa9f23d4d03894208ed87",
"0x278ec34449ad1c5182395a44f2826314db9fafa533e518a5bf082096c2484918",
"0x301cbe6e44e903ab193531261770925dacc71b88207e18f793f59f69a4347771",
"0x20334328490fd8682bd47066200b77f9509a72a11f2d91d456220c629280aa44",
"0x2301d3af42d47b43c8a8052646c069e046ee7d180c62a5d36e52dd6f215bf37d"
],
[
"0x15ccec857b25934ffd429af92c910db31d00dc1c3fb83745a31d8131ea5baa85",
"0x2655c9fd294d40b9dbb9566609c264c9e602c777c8701b1b2b542a5f08cf976d",
"0x29898ad417130c472e0c1da3b017f7166e3a3eb80481efa32503e81a3772e5e7",
"0x1681ed2917381cd1217a0c9a2f675353982a438cb3e9108fa5b2048e6b7e32de",
"0xdc075092f8f83009ee73cd35e511ac13eedf5e3999f9bf5b41ef3e1a15a8fcd",
"0x837fd755c29dc2c29036c497fcdfc23f95c7bffb90a62db5cc43a25e20054c2",
"0x19d489fa1fa1ec6441b82b735dbf0b84788c542263d4c1ae5335e49297ed4bcd",
"0xeb25d1b0322624190db666759db3c82bc9718a990288d865116787e8c527351",
"0x19084cece4945482947cfe51a1f6f4e2e216f5b54742b9d71cc3840bdcbbaabd",
"0x3a99be2c75989dccb246bf31a58f88dfc494ce2569c5d8b18a9a876317ecef0"
],
[
"0x17102ad2d98043e5509e76c331e6b22d5fb62d074760806aa675764660eb56d2",
"0x795d5914d87c0dc8fbaedfd46afdd6451258f80779112edfcdf1a71d23af4df",
"0x2c202548a326cadc3ee595a16a2c2d54ada779390f7bdd4c4fc9417d3e463d03",
"0x181db647369841eb58ceb7a1b9ef841a7f3358cc6f224152dc7ad3c1d3b1c1e8",
"0x26e7aa2ef4c91ee3f704849f4c181fb83b860da15f62f2250c792e0ee66c0ae6",
"0x17189249537630e942f5ac39c1498bce39996c15400d052dcb6cb839aa45322",
"0x23bb4a76f79b77f9f6b4940ef2538c7d60d69f1fe9922d66cfb92af9dcd0867a",
"0x1ab80a8b5fbd7923f0cf79707d56f7677d1071e924cb497486766a4c4bd7f6d0",
"0x1f8f4c40a0cfe0d05603433a0ed2d424c7fd040077b0a1642c25797c20d22d16",
"0x29177f698bc5a897ef9aa6b915189f689efcfd88f3da8e60b84b9bccc2ae33b7"
],
[
"0xa4ecaabde9d1ea11c81dafa8d5d4869bee7ad0bf4eb78397b71b8f989cf9812",
"0xc066f7a1e10d00fd3e97cd8c67212c28b43423b03ca4ac03efb4d8a376ae098",
"0x1a6947c4e87ca0c30ed9f47004e53b7a45455b14da41f79045c2405d2e3cb859",
"0x2481ff49ed6259def9fa646c167c8864061c04cfc022051f83ef8a3ef8db5819",
"0xc13692adcb86437a860d6296d74b4253e790cae6f41683b99c1760d09921d37",
"0x27a6be35c45e5f46b2eca0aedd98f67638b6645acecf50351c5a9f3c428b0e27",
"0x4660af4e63d1c9ff6f059b75dd870df938980e43985c5607a38dc0ac8d273f2",
"0x2eb8302f1381d9118d9c713d50e117f92837dca8a8610e9de759e76e8ee987f9",
"0xe9f931dd923dc4398ac12b101aa7b5e2a22f09caa416ff8745821ff165b07c",
"0x209945fe475f6767f668abc045e0c47ae6cb25cdb1efd5586da6c4e655d68e82"
],
[
"0xec1821648fddc448a1512aecc8ac37714923981940f5542737a468d4d887c8f",
"0x1049076d8dd43ffc6f4ea10a82dcd60dcf4d60a2125a1b4d8c4ff954e7da3380",
"0x192a1bc8e7dd6203116a0c40d58111850edd5b50f9d6e882d16f95fa6a76d80d",
"0x1beae2daa2a697afd9b1388dbcd6c93731fbb4eaa0fa439f92bf777769055293",
"0x1a31b8769a838df03348e01462b564e08849955efb968d1f41342f02fd627de0",
"0x12f1bd9058590ca45a76e19b5891f5bfdc95d653394adb4f32090c60505de408",
"0xaac3c820280c7658321df7aaf69274032fccd21be96174582a8c0c9de580068",
"0x7c216183f03a4b7c77070c68b3790b31b5fa6d1df5ae42437b6a2283d5b8891",
"0xda9d210a43aae4d13625782341ece1d0221bd6ee0dc4a639b7f13a6daa3c93f",
"0xc0d8ee0a08021baca7a5799ed7b03734e4b9bd35430279d3f7b2ed473c48c6e"
],
[
"0x255a493aa4becd9d137eb76941c4120784c1233f6c5fdf5d65c0832af543e415",
"0x19a05dc5bdf1243b57474519b375ba67bd83e122b095e4272c14f9646e733666",
"0xdd31347136b2eba27f0528eae1c25a710c3707bde9dff3d76ecbe33f188bb02",
"0x248cdf26597e0746d01d8b7ab0e9f88aa452d90eeb039dbaf586563945972fae",
"0x25718cec512fa137f8a5851510caee0dd2c000af55af09dee767e2084796a71b",
"0x23688bbb9cf13bb7bb972d0d18d0e05c51bff96ba5314bef0af2d912dc5e8d1d",
"0x1ee8c54669e6f0ab1fb6a54c809d1fad213e8ffb7a7b40387ef594b7cf50f4f5",
"0x282e578ad2799ca36191b37835889bca6e2e8bdf7e4412628bed5e39885d688e",
"0x831616989168d514c0fa151fc3874b8cedcf88d27185e7e037cbe93391022e7",
"0xbc5380f3490175b28f01eb5cea3914924df2b1f745d33a9e39ab872b19c4fb5"
],
[
"0x120f44670301b1435249294d9833d59e01682af4c8658719727678fd9ab7ef2e",
"0x2a25bac660d90d85f22fe81abdc80c403a86e75d4f1434ba2eda3184dc5f2833",
"0x2d19334d3eb5a9781f3b8105b0b1131ee95d4012e7faacf71864762b6fcc7011",
"0x267b655f26896341492acd89edc7ae96dbcc24161d1e73ac652ea55d61efc3e3",
"0x1d9c8ad973feacddad16da2be2ed7eca235b3bda01521da956f1c8a7d65ea58c",
"0x15b9ffc66af5ac2aafbf2dcb199a57bbd334c9f971d903d7da7fd65e920cc9bc",
"0x25814a817412e861b4318985ff3cb706db6e56dece08c2c6dc20584ed6fa6c7a",
"0x4190e2e1cf613602ba331d0185b43c960ff5c57bc2f86f5c8bcd84b95c789a4",
"0xe3999f52ed0ec7f486ff150acc84c266aeee72529234a010988f95a1b5885fd",
"0x1fcfdb43cbd7992f0088a9a85c95e4621873666105510f25ae576bc08d7f2084"
]
],
[
[
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x254a28279a58c838f7392034aa21d51ae44e1449433d90824b817e44b90cd22b",
"0x281d2ccd521bc060d152223d46196f27b048f33ce6ffbbbb0884f3d5c64a6061",
"0x10b388ce0c7860c8a70c4e903e61b3bf97b87e324c9150ce576aade8b2d06a1d",
"0x3ed1d46b39ed65512e3e4c8d53cc1d2cf110cc65e1d65b37f1e5e785a6fe6e0",
"0xbbac4700573f9573a123ac6a2735b63c48df92a7c91cfd1e88186a061a102d6",
"0x4083e23f948783c32f671cad0395794a2cfa8aa1c1cb6a0c0105590904b2593",
"0x1fa80347e1bb24e08599758c895a5a13fbc63df14dd9063f5ee23e5cac163b61",
"0x1e465c7a4b123984937605aa07cb8cb830591e22e25b4d94d2efef2f25c17f3e",
"0x125febe3a720ed956f1fdf75648260e56e67d32d0e785788d1cf97ef61f6ff69",
"0xa3e7d3671a213b3184ac44ea74e12085cf5380c688ad23e8300e69333c123a7"
],
[
"0x11a131a3778c3774233bc54096419d463d3abbae18322a7e77a511881665f93",
"0x11f3eefe7629e655ea90af7061b775bdffbf26dfcb0f67a5578774e4b237376d",
"0x11f896a08f039c3fe481a03e0b8c880edbf71b783d169f4bff14bed5e1b5f15",
"0x127270ce679a10a9b93645264ed270d96f109e3f65a437240d629e59eff1b2cd",
"0xe81abedbcf77d0706b6a4a7438b5a9c42257b1233f0426225c8d410de5806f5",
"0x1bd40e4b13c0eb7bac78d2650586a59f28b7ee26be01fa2a677e734078bdc210",
"0x22202ee3e2df678269ac3833b87fd279d1d045fc42eb3ae75107188ad0e39bc5",
"0x196301b7681fd2882ee086f61a83db475a030017f92f72dcf3ebeaedbc571520",
"0xcb517d9337709a54dd958c64afc6c8ad84fca2f59fe3098f74a7537debe0d2e",
"0xd9be42ce8bb76bd249d36ba2d8c5a70b52d20c9c8686b7cfe346d5c72bdc15a",
"0x2240e2f64b6f5bacdb2d6aa0b444887a91d1ce0eb1bbcbdd58ea71499b7a85d5"
],
[
"0x2a18ab4dc4777e13cb8358c1c423153570d1cb909544243abdacd4547c8ec3aa",
"0x1f19f9b9169b49713bfbe59154cd93aac19d03b4668733473fefac6eceaf9a63",
"0x1e6425bea9db8ee466777ec75d3103cd11ad6ed24283a0b188b5aade7d496cd4",
"0x22e2d64bc44841b96bb9286970439150d70c55f8d65fa79f1a4ab34befdf3c15",
"0x22ea712a97059dfd8af604c752e478b8d883333e6749b2ace5385f0ba8697f67",
"0xc19fc53d6d946af3d7fb79d8f22c46df2e1b0d0f2cfc983345db3287c44853e",
"0x177800e892cde6dcf66dcb1c337b6f7f6f6cdb54dbe7e2e2776abbfda1fc67af",
"0x133f706a099e95021e46b79e7f0fffdb210d87a4db1d129bd6fa5f62113cee23",
"0x2c540ac453bc95fb61ad879a56126d5fec7ed9300d545938bcd80c2feee7a3e7",
"0x2575061c9a069654a195fe41554ac0f4080dc8f7e808d676f3f33c615978d593",
"0x283d7487aa3b5d0ede9c741fe754882776708f9bf68c745abdd38250ce70c288"
],
[
"0x16ebd782cbcf6d63c38b87b27db2a4a5af5847a9a60889c4cf6aa318d6866b1e",
"0x15b3fe328216827e93598e15425979e9dc4d9b9ab421f25aee3e49bc6067d6bc",
"0x11cb96a094be409eca05bc42f6d8ad0f6cf09cef2b286fe5945d587cc36862ea",
"0x1e5c6cea55983c991761cf70ca77fc17c3789a8023d2752554b49d0b8fd1be7f",
"0x257d458a2883c760b295e5b2789e6a942b8d50fa6fd3eb093a96ab81a9aa693d",
"0x4603c35c98c1e379b235724bb309885e9b56284a6cdb1cd0d3953270109bed7",
"0x1b2957f0c085f578b4a1b58a21143c551e5451ec46b9fbf6ffdd0cf6e586a00a",
"0x17bbaa8b0ea832469bf933ec6ee5941a1bf97f0b7b1f6b0ce3f708d43795365",
"0xca0c774b1bd1c2b00fe8f6698cb08022e4a3fcecf13d79953485c905b76f8a7",
"0x1b0265724a00dfdba001c87dcd71e5c04736a61821b19f30e02a4b53eb59a12c",
"0x29ddc736b1d7fdce1bf6a2f684702703e857b3be81599e485932a1c03f4fa16d"
],
[
"0x2b7ed47fac275d34f842f09b01ef9421014de040c26a591595b227ba7bc6fb2",
"0x15a1af15f1f7a77a5e6e760470e7b7cc4da48f3fd35b1b01f019384381e37135",
"0x15810baa26cba809c29275debafe2859cf2350199af232bf920496c5315947a1",
"0xa1c89983188b5230102c213ce35a9fa49743c5490356fa305a8578c716f7202",
"0x2a9243c6a61b2b7464f22e1603009e6b6f7946f31cb71cfd4d291601458ec39e",
"0x14b216d879b61949c8bb2ff6d43bc7fc3c634a90b766f2276b0a5c6b09938cb2",
"0x2b2b79db9b5bdc6a1844c4e5c7f33806d44ad8644fa0117f5bbfd7183754bafc",
"0x20f56843ab66f86615274f77030d662e1f6cec212015e14896139ff6d28116d5",
"0xf2a31d4612576ccc0cb003c57ad2db723008007b066054d114a9ae32d8e604e",
"0x1a265ab962a3796d2cb4ee2980ff3bcfa03e8d6738d59c8cfb899cb771f9a61f",
"0x5f7ca424f02338e81927a8928c0f02fc78eb1d1a08c3bfb8965cc7b43d8e056"
],
[
"0xc5e49e319fb9535073f07f9e055accaf3e3f24a35dcb46cab67dfc648efaf30",
"0x1d22b55a0b71329ee03adbd79c0a1e7d32efc4d765e6e581ecb349e2940f394b",
"0x825a6da8cf0213b181fba494995ef1fedf1d867f8c777ddb93d10b64f1f3bac",
"0x189642d90074b6ef89e102eefefd69d4d69e106cc6d77281b971315feca3f6c4",
"0x1976bffe10562085862cc586a3cbff8d260055e1ca382a74332328c0eacecaf6",
"0x25195d63f3bc30c2896cafcbcca1f5b73ef4b74929359594e4421c7c9a1c8f8d",
"0x1f523a01526f1b783c2e3760a4e7e9ccf8ade4e32b56002d15baee4eb794465a",
"0x17cb6777e65329e7c510142a85cf3781ba33de3ceb98a4ba021d783d212e7492",
"0x1308c2b9ba44163ab7190c4c151c7f44f2e19eb186dc82a2443446972d667ec2",
"0x3006fd98ea0d9db2b33144f885e201534edcf4c3ba6e96d8a22db2bcfe8ced48",
"0x14f241ecdcca69b025108efd0fbf00ed34448e7bd804d5e85a835619791468a4"
],
[
"0x161e4ae5b2d24cd638ba5c32bc2317bf90d404e37e003f1055d9a96e406d30d",
"0x2b04ed9f42228f06802c0b537dd014217f3c444670a0c6f88b3b5ce001b0197b",
"0xda48eb83004661d01df489e8156b75d9b661c61a9ee1329fad03ef74521def7",
"0x1ba1cb5df0f9b236e9f7c4f637dd1e70784a2b07f8e062088b72c3a392d44b2d",
"0x2c22be8e5b7f7c91490c46c27a09e91872e361c1e6628793b9674569ab3c0b1f",
"0x83511f996c9f415dbe56786f78ec97fd8c84f5d4ffbda454b3c4d5901ec92a6",
"0xc3e13ba070756735522097a41a9138f5a44cb5856648daf70bca100d2346b1a",
"0xb14339306b1b2e3114e50b0607215d3f92ba684690d78d2a6ee417a73933c65",
"0x25c2045be7d9a915562c78bc1ea2d954155a0289f900c757b7138596edd9db6b",
"0x1b909b20dd52d51184b58d123962b7fb22cbe54881117270d279402c4056dc39",
"0x1afef8497500f3d89345974c67a21f1e18fa930f7d78a1ca691bde258c5e2c7e"
],
[
"0x223c7fc6d24fc53d1b428edb8f1c52d20ceec592187d2c7a6b0b147b6292b81e",
"0x8bd608629b132b0d741a305ba0002b9ec1470499f5c0ae88e26f269ef00320f",
"0x238b46140eeecb9a32c7289626b692dce13cd51bc3812f1b0d866945c0e08e41",
"0xa5ca2631a8379a163fd40936e6913afa60c1850b9e04b622f2b6e109d179ecf",
"0x1656737ceb63a2d43d462ffd902804d11283820356001961f1239a1e7cd23108",
"0x168df74339cc5c612553d91ce34b44f60123aa40e8486e3177cef84844529bfe",
"0x1d1cea63939b21940f784f77c0f79ed523beb6df5432911930878b59f92c7f63",
"0xa2768ee0edf0b7e5e69a734e4de8129136b926e5ad1891e6cf57a5c39a14da6",
"0x22c57e5689822b5d931e748dec46c5e64c04067f579d96b89b608ab5eb5a1e38",
"0x1d4ee90cc3cedbb9973609382c57bbb1b7629fc5398ba62e2f8f7a9c55496ca6",
"0xf9c70d6ee5ba237f04597a71278dba03151a3efcc594cfe61ddf16b5cf1722c"
],
[
"0x1ae060e39b338d09845e2e9ebeb70bfb74cd4af926217f5732be2b6cb7fe72a6",
"0x81e512179c27b63294fdc958ac35b91ca61cb3fcdbe4e661ce465eb3b060adb",
"0x64bd952087ea3f724ecaab7ab891c7164148247b3d9534508559f290ab2c455",
"0xf48a6aba18109eb41509d160d2b6e2bb75b73f2d360b142e2253e99285a613d",
"0x2144765053902fbc1577578eccf3fc1990cffbc464b8d5955e387653e427eca0",
"0x149178f36e2a8348229d4e5f829a53620864b7f8c3829adb1ce2f4f8f6198a95",
"0x9e651e10ec1fe98ba2bd23aa05696c4bc5acd233717b7069069a206301f7e16",
"0x2f995fb2fe9a457e970030416b7811a93b31b3f2ed7c7300034cf958575b3ef",
"0x98eccc1107806d905139f5aad87c4dfe9ff0d1eecc1de30e8c6a4cea8c51dcf",
"0x1720f40d61fac0f66408099bb1e34e3a48b29ad05b8910a7bc257e01de20dbe5",
"0x18fce50e6f51644e0968c44adeda32e68bc24c25e81ec37ce5e8771383cb76e6"
],
[
"0x46191ab41e93929ea51f190fd4e773ac8d5083328d4b2f04828dca3e69098c3",
"0x662f21223a41d37668404a75b278b868ab602e313e8c423798b47c47f1f56ab",
"0xebaf002ad31782757a58dca1b295b2e0ec0ff3115a8c931ebf74fddcfb734cd",
"0x1e1567bb8636626357515a40b0d5ebeb351422e19acc9bb5b7edfda91649841c",
"0xfdceb3ae2d8a55f07822d7b92026ef83ee8bc326e3a8b35225d587bdde25205",
"0x130e0c983de0ad6d15d8770698e39fa4569f38848ee05757951cfefa1f338fd",
"0x2f7be21619fd5f7c05e31d90607acc55e36fcb5b6c55f970170e660f2d818fed",
"0x5338e9847d4e29692f22f938875dcc5610464d7393c6d87dd799bb3bbf810da",
"0xdc0a5c9bf0d5b38785df58fb22ede06709eac85f230639056bbf1333b9a2d21",
"0x10ce79d030bc12a43f0b6fff0d884c15c263113b3a6ce3b24318f0a60164f6a7",
"0x232926077aaf9a6e42e885290c6ad736f29cedc9b0ed5c5a0530e405d57756b3"
],
[
"0x14ba1b5383e3733c63d00c32c2bbffd8e54507ed33bf7544c86388191eca3e40",
"0xdeb781e30eced913c20323aa3f86be585d4cce7f556abd2c2a0815bde87b775",
"0xa877d868ac293ccec0f559d48e3dced60c81fef80ddffc8f70905664b3bc0f",
"0x1d635d1267a513c78be7288e584254f53012b3f7955147ec7153532760c6c9d5",
"0x120a95649ccf899fc3a8048ec4adb59a84d3ff5c292328f6cf32ee0c14d8227a",
"0xbcf6e6daea072a539fa1030a61bd0c6f425e9982286ee468ae2ab7bf1b8d114",
"0x1c4a6464c867d43eb5fdce8a731867e1b9730ab208fbe77bc9ca7ca010a74192",
"0x562e63099a7630323f701d2fa312c654a891e682a7e0925429c0321f6155621",
"0x1bb2aca445944760eb02e57360e6d3fae93056dc357ff0dd8882d08983be3325",
"0x210f17a9d928eb4f42cc8dbf8d6a7865ab53bd038180c9a1c9a506a2dbb0602a",
"0x277425a5970de392ade13f6ee3752600050830d3bbea3566438924ad5159df4a"
]
],
[
[
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0xc894a150b70154ed3c77c170df947769ac6fd8f4170d341613e7adaefc605c1",
"0xf784c25d3497fb7f058d93af7ae1a182bea00ebc2806c19377ea19a77db346a",
"0x1a4f48dbda22089500b402545867e341b6b6f14bcedd66ab59a1f1482e4f2d8c",
"0xf61b0bc7dc5911ba7d353e201a1f480cff116ab06d9e735e01889b688078347",
"0x15f5f8ed095948c58f2cb630b9b892b1289429c3c6169f26d4501cb4b24e7d72",
"0x2644c801ffbcdb796abf1036e3a240514c45708f0bb0616dc9f5475ab7ddf80c",
"0x15580d2d80baf18dd310bbce40e0447c78518aeabd02fc3d66bd0f573c1b7b4b",
"0x2103a7704b61ecef423c74fc864f57077ae9e68fedf93c4c24b3191c05552e8e",
"0x254310df353b2d1c72076f34db3ad823aa35b7fcea7124714bd5243d90c788af",
"0x23c2a54a64588d3672e1e11e0449fca37349013eb30472982df8935a727808d7",
"0xe25546d7af425b5954185a669c63c9fa25d3d269e036e2770451d2cbaeb887c"
],
[
"0xfd547840f3a30a533a994d1fdb3f60ae5073f4484f34be951ee16a276fdeb9a",
"0x39f5e3ba736458d66a7276a3f7fc143f4d2e10cce779a0288fa042477fa8111",
"0x2834c6a4b3a7068b2959204bd9df5f9eb21582db300ac6cc9bc06188814e185",
"0x365a1836d0c970acea6a65b34b4018ffbfd2334bfc29ea050300fbca592da7b",
"0x7b2fe7cb2612a4b8ce45aadb192514490ad985b31686b75cb895938a99c35e9",
"0x4c72c3e92bcf3c9450146921952051dd7b932e045c56d2b8d1225c557a02fa4",
"0x18d459655484dea4af5de8922eb66fae69bf0b742ae678e6ac5ef937fd23f145",
"0x28d575bf09788e6c9f404c4f2a4794c51393c9fd263cebc2aab4f575a88c1ddf",
"0x15a78c5f1d6e0176ed4e931e25aa42576e7d172bc263bb5b22fbe2a1dd096b76",
"0x253af96dc191b1ddcc7da399cf751f0531e2db5cfbacce3efccf23e9aee0635d",
"0xbd6477a4e98ed1b6a052a7fe6a3d111fc2478b3817bd7c2dad8b1a813dd9445",
"0x1c371f42917639fd59992e6dedb5a144b079a25f242578b21baa3fd6fe98b51a"
],
[
"0x5019671bda026670c7ffa9081795105963f56ce327fcf78451fba2bdb3ac1c6",
"0x1c9807d9b8968d8f620640d590f151e0914406af2136f902521b8f4da19cdf64",
"0x10cbecac3303667992c537c54deaec58a34528a2fe041591a98e64a8d6da5588",
"0x1bc32304ad49812a051886f8904e1af0a76149223fe72e96523937f339a5d9a",
"0x15dc91d6fb987bbdca99c78dd90a57b386e9b9ff7e4a4faf70d5ae18f431edce",
"0x22b26a76db2dafefccea7be76f0e139a0c568e92a447ad288257ef310794df28",
"0x1c76650a0527fe929be54a7e8a47efc654b515547f9cdcd58c146a0bd11872f6",
"0x23d3b9deecba2482b107832457fbbe5ff670a61069cdc34a6470d2293471231d",
"0x2b9a6b170ff9ce22246aa0b5091a7f33ac5a1b39904b61f0a7360c435feaa593",
"0x316258271c5c2be65d5e41b0bf6f9917c8c60944d1be7f60891236cde4c2676",
"0x1c67cb4dc98d5f02eb96d20f1134177396cea0f4fe4c04f856b0e2dad8e1b56",
"0x25a8f4490a5df4e1eb13e2e146e0deb4de3d633d11bc4a540c5a6a21934b94c9"
],
[
"0x2952c18c15558f29b2ae77fc39e51a395f173a9097db404db765ab02906b27dc",
"0x1e7fcf514768abb1800ff4f4884ff5bb6af1ee7581b96e2984c2b2c4033379cd",
"0x21828d603ee0c7651c0a3bf6b18217e1fe33f283bfeaa1fa9ef9eea3b2c32fba",
"0xde712fca9d7df5e0f67d3eb731a53dfc7d1a7cbdcc34411f6138d6de60fa369",
"0xc58a3374648de30ed82a9ee0f4294d493710fe813edfa46b09aaf44b3ce6d86",
"0x14be55982212ae54cb8f0ce42a162a7ecb440a4c0c4d73189528e4b12d34e5c8",
"0x9da7079e3ff632329ed76acc28bcd293d69f9298fa25b9d5231f9611ece2c22",
"0x2d865f77a39255aea1b29c483eb4a3acbe7fdd909cf17d91a0100143979a18bc",
"0x2a39a308231582d0a1d003b5244fbb85588de1df3ac866dbc2fee6d1d8248c0f",
"0x474c582c59ef66cb29b984f6e4bd97bfeb5a41c6485aca67dc0555ed1eea61a",
"0x65cc505a691aefd234e572640f6c731993aadfdb529a9aba4bf6377ae28b69",
"0x2aaef152c413b4ef991bc228242822e2a6377aaeadc7ac22e502def3d839f2d0"
],
[
"0x2353a60af6bd61e5eac2c9a4263d451fad07380654d4792378daf752e5cc33fa",
"0x28d0997942c3b3b0a4ae3b17ba382c8fa4e1809be0ec701d01501f142aa401f3",
"0xecf00f71b1814ced4f6525c4765846440aa3d39e7ba0e4e4610b70b5a38209b",
"0x1258d5a4d495bd4be6c704992ddc3e89f7ae5c6cbd7430014491fd234be89fc6",
"0x30513cdc3149663999036b87af10c4a183f71722572b4d958cfea9e3dca618c4",
"0xc658aba90de155384cd4d63e285ac2d004cd95a2e95da1540ef7f1237d851af",
"0x13bf5098cc05b1035e2f22bd47ab4041d8adbeb53c40aba04a75fc5d2435df46",
"0x2339c682b7084d04d3c9b6072b20b63b12003e5c52043c6336ba222397269a5a",
"0x2cd36c4bd8257cf74834663fcc1e38be2c3fed64f7b568e1f0eb0c269b0e14ff",
"0x37b5beeecf060cb73d6e08ebb984eb5d9075b31b128fa3e5234e969036ab5c0",
"0x118fc51eea37540b35bc2ad77d91af14dacc152f86db157ff4c48db58e325225",
"0x29efcd78bf5b6b7c9811b6e838f5563b349606a1959751d63d28fa4c1124b5bd"
],
[
"0xed6a3bd48174e370b4f264b37488b03a5e3f4c0f61cf32d3157ad3e3b86f6bd",
"0x287cd855b94877a396d39c336dacdb13452eff5917a877edce1412b7ab24ebb8",
"0x4f06b7fdcc319605d038881cb47f61748f1e9f14d47dcf824abfad47a73bbca",
"0x4eef0886e398163b9f0009c8204cf2d9b0a4a30fb019b3cc46cca6ab3ffe666",
"0x2fb04567ad27a42a4ca2ea90a0f27660e1e10acefe62de96607aa26583695932",
"0x1f1c7c6bbbdecb7ad8a2c8a91b983b075f4998fc620c36e28e2b59077ab57704",
"0x78a3fd180d76eea922e4237fd65bb83ed4561b268751a20ec97d3e0d7460d27",
"0x11ce8d6554294777e161cfd91ca86ac2fcf71bea4228f8aea857187d579b606d",
"0x17607b33a1043bcf034c42feab79507a82488808f988fd0e13f2e2982ce55e0a",
"0x2c90418c775ce44e34d9de72d06a7c2c9cb072518bda77828b1e82fd1d19525f",
"0x1cfcedb53846d090e72523914eb33d6d2781bb18ff1a7c885eac1326e93f7a46",
"0x2a4d8464358084800c89f6fbb98bf69d589164f9a648f48d3a42aac8c5cbf177"
],
[
"0x21103a7aa20c8d15501be8c23504c6a912c6100c5d88085cc2e42a52302f4483",
"0xc783dba69038bd1673bc3bed51afbf51ecde783af95067c14de12f49e49570f",
"0x1cf80bf06f3525aa85416d6cacd0e8251bf1b3a771be49253b60ca83f49b2369",
"0x1b6e663aa128709d83c7e5a86284927920043926cf55678bacd8ee0322178495",
"0x6146f62b14c25c15ac08d1756f2302395505138a4ee1184000a38f4c7f53905",
"0x1c5eea7863fca5bdfb2f4a3dad7e2a16572998329ab695adecd136fba4f4063d",
"0x197b13f8af70f642e878063aec6e21ba8978ef2322f2d64bb512ebfc7bc2c7c2",
"0xdfce2c65e220994dd2deaaef6e04537b35ee47eb92cdbbd7c61cc6189ad3f5e",
"0xf4b71f3763666a3dfce7517b6746ac033b2392ef742470ff7365ee5976bcfcc",
"0x6fa7b6308e448573f3fdd11a2ae8e44d33c3d3cf0d9ff8601df20c55c6aafa4",
"0x2390d163c2c0b5d461be5ae1f2dcf4c38c2aa514cb22b4b5e104dbb6889f8a9b",
"0x21c9120f90988cffd032feb1aac143901de9cf42ea3cbe83015e9275cb67907d"
],
[
"0x2fb232573e85d68c536d100c3a6ea9172884451e677b0d1cd0fb4dc4c27536b7",
"0x266913da539f40df5123e01fb748b241795f1aeedaf1f7ae3cef0e5728d23aaf",
"0x2f6910e50cc8a14ddd99b667c6255bf66dfb3386e62bce0d74cbb47419c31572",
"0x24fe05893f5e7aabb44d705fe83fb319d29b511eba00b2705561c6bb0afd7b37",
"0x1ef5275b46a65f69edccb39f50fb90cc578ce4e519d54c8e61c31e6ae0710a45",
"0x137569526eda65a31fefc352a005bd0b10fff52cc5692edcbf46cc5f03538ea0",
"0x8552774a893c4dc375ee4efca4dbb742277f07d8980c54581b5d4d0dc1b7688",
"0x2d9b07507a9df2a587056f988c7caa44693a118daae6660e160561d276c83482",
"0x2c90b4ad79e2316e7986b75730418fe5d2b1f252e77817385d78ebfa34710afd",
"0x275fbe17c666f61f6cf5484db2e52083e856c718ff2b8f4d4e17f130d2989e9d",
"0x17f57c813764e728dd240398690408ce71dc8adf83e53f5257ac34b643a3ec15",
"0x2700ff01dce092807c3f143418c11a2f9db6bee6f478edcf7145d69af66e13ef"
],
[
"0x302a085be040ff9a709ad0c73238b0d1e11e1d17409abaa34fc45de29b541535",
"0xf259a3b7e18add912cdcd8674b0f8fa910fdbbfad967bd816b33c778feda3b8",
"0x1e43f0a896764c42eb93be791fe26928f91c7bdd278b7c810a2f588268314b95",
"0x268094abd638ee0145279900f8755e55e1adeaf2dc222f402d1f08ea4953abb2",
"0x2e1bfa1a1aea7b44c84b866d9e7445e4acac75f82e0ea8ab03326214c84faa0f",
"0x2e1e2e2f2065961056bb63f04c175c1682eff3bd9073fd7fd76e7df0e8f12d47",
"0x3a2adbca7945b9a6367799a20c37944597333320cd815d054a5794f68460c83",
"0x2ba338308820d232cdd019154fc49774b0c884c7f82b9aebce6ea211db294991",
"0xcfcb2e3744279efac866e0228c1b3464a4048f4910d17042ba1a6b8cd12c8e8",
"0x24cb3811355775bf9bbe6431305ffeac61c7de7c629d9a5ef84d960cccb940df",
"0x257540e571a74fbe3ec524ff58f183ee0560d506a8d10973d77e54c9d9061161",
"0x2652e1e037bffec0d7be1355de11170b7f916d148a7c3ee3ba8fa44817d48fea"
],
[
"0x683e640e6154ef73c3cd6b1d0f0fd86ebf7e292e63fa84cf0a883c2f1faa8ba",
"0x10017188ff4a2e0e9b05536c8d07e27d0f194cf0689d834af2be2b93ecf20ab",
"0x2afd3c4028b2ada5d194c593bb5e4e2710cc5c32edcd5865b59d4c7ec037e251",
"0xebfe1c74eb49cc73b0f6c3f32f096c2fa6288b0a04823e290cd02dfb5e5dbc1",
"0x2be96b6dc6b5dc0f78ebf844a52f6c1d50562238dbe7b95c47a2ba4ebc0e1c17",
"0x2eeb27f0c5a205ead76c92eed0ac8a112c171711b1d12d1e066fe3527174f6bb",
"0x131560b779c80ad8cdd22a9c3ba80290c76de761b1dc6e788f7f9493f84d413f",
"0x7039d5dc74b4dd2f6a0701a3179b502b212c3a4503557e6e8af0193f07a5669",
"0x16b1fa736396549a38076cdd9df36cc3385540ac1d7e42c79aa0c9cefc66a65f",
"0xf5008caa5bdfda3401446482b3ce891ca497cfac4a24ca2571a02a8ecd6e78b",
"0x427946475c0460b0fff4ad995eb4a9c608e260007589d7195b5cfb892bae4f5",
"0xad2c3c083a08091a9566bf29eb7506952d2ed27eda2fc0f51894b5d2e28aedc"
],
[
"0x1f09f3fb07f7f6476fac98946b7375095e014b28f23a07ac9fc7077144ac3979",
"0x2bb007eb9685bfa373e688be53f5d6dafd6f87413c9805d20c579933c6ab1124",
"0x2b22adee2ededd40c3dcc8e1b15d38081edf590a9a7ec2eb630cbfc5292f238a",
"0x6ac8237c50116ad33685d84005ae724cc52e0ff4ade0d47b194f7923231d67f",
"0x217cef9e11c01178da427e2b9f7fcbe4c1f1525d76d3ba7c8850191545e58295",
"0x46e7d8895837a4a02894e5d6f3ea8d51adb0ad4897434ab0d0e8079253f2fcc",
"0x1f478986f1820203e99247b23f9ae06526a085c84cd31655f82c17037b1de5ff",
"0x3a1fee4f5ef14a50af278a0b62247a6669570858ac9b2074df28b0a4e9303ab",
"0x188a23c2b448e79af34b9b4866c954e698a6163ab9326f25f2dd746cd1347d35",
"0x1cb09fac676323645d322c13c676eb4645446638d83fadcb37c4f1788acc1252",
"0x263d998161f060aee0e6bfb95f1974efe466f739715e92c278128c7f18ad5e7f",
"0x2488b89af9d856ebc2f9053be37e13f9e1e546146198b764e0e0ed784115d94a"
],
[
"0x598c38d2e2c78dfe4907c74e82325cb191d52608955b583e5826ebebd1857b5",
"0x27fe7a3879727f44da5d035c1ee30fd12b4a6d37a488981b4903d9340b67b7dc",
"0x11033939341c415cf31321211e351744c0831403f53a65832694b35adfea49cb",
"0xf47bcf189e8e4ba1b486290d0c9ee89ead181850d2ff29b97bca91518d8c2f3",
"0x53090370cc10eadfa09d586810cd0da5ed707080999f1211f0094108e1b3d57",
"0x2e2c801404eebd30297f3ec0ddf5e0dd9c1e0aab055268e647c3fd4712dfc84",
"0x203f12fe19f06faeaa77bc8baf4983c763081a7af43dc5e7bb83f789eaeee5b9",
"0x18837bc92a8af3d37214cb2724b4c8b904e641660e5a48f79ae4a49a7bc37ff9",
"0x9f0706eab57f151b23e4b968ba0b6bbd4fc82700acd601333382757a15de2ed",
"0x1e7d6dc15eb4669f914899901e7deaa91d102a4e4d569b40b9a11d1241167ef1",
"0xbc8d092c5d38d087f9f34faaecec3a55ee916469ff5e23e619b73468ee8eb57",
"0x2bfb96f78ef7fe047373d118c0aaa0140ff43e5dcabda257cde23856a654b6fb"
]
],
[
[
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x5da987f17a176320a821339189d24ff783be07f5a6adba84ea72fa0d7faa9a1",
"0x142b410fdf81d2489b47702708422b35a9c6c3580144e7f3e94b971bf079585e",
"0xb98437a312150d8171b81b1891f3cfc75b9d14473319a77c7043d8d2ec320bf",
"0x2f88cac82b777c1c7b751129e0bc1d038481129c546e80007a6a6b73c52c7f4",
"0x2b37af1db29d45113ebe8892bd41ba43e82d045eeefca95390f4a7f816639416",
"0xe0fcfee5bd6119ea196992bc58dfcffba632cb20e07d9bd7f1f4c0738edf767",
"0x1f801f49cc72b3cb1ad6d83474b3e98cc9ab427ac9d1807de151ff591c2d98f9",
"0x5aba81d049688ec509fbf12aa240297e0a4cfbeb91c87e4d1d72bac8acb33ae",
"0x1efaed0a28bad9712571c0f7200ed332ec1342c08a9270774ed84817ffe8943d",
"0x2765f7a0abe74654c9182787a7d252f964c3e38c946a1f459579923b061b206f",
"0x540383aee2f7779742ca518ed4d4d752980f2b5dff48339c128acb79daf88e1",
"0x198d160f1f80e78fd1e93c5244d636d72185966e93e62dcd0fa8cad1b772f781"
],
[
"0x2b2ff5f27531b6f3d6a85d75e3e08f3a2f0dac3680a6c26d55ecbf803ca80569",
"0x20dcb39566362206d4b38ed042277d966f03092b6910f3a05e5b1c3071f4a070",
"0x2e3c5d5b931ba49c99edded32e4f404eebef7eb08ca9668d82c912cb5d428585",
"0x11c900f3b1c7732081074d0a58091de7f826a4f106a930899d3798c6b02d7735",
"0x2cfc4c4f3575a5f8bf5f2ef6b518a47fac9fe853558d584ede340b5e32eff61c",
"0x7ba6d2ece419d75b37c87da9b00fd277259b4232542eaac3d6c7d85c8677a21",
"0x2ad1869717ab4c539dac1f950998c537d101504b008b46b47d239eed0702f8a9",
"0x6b21b6e86693de4b43f26771aa347307be78fc9585a91fc28b6f0f802850576",
"0x1e54ea10d6b7cf0607b5224797eafc3b651b492aa74c92ae9a70a692a1965e2",
"0x23b47244bbd00be19b1c8046145626bac795b4ba22beb692810bdff4794ae97",
"0x16ba1b0ff54dacc9d88f85fa6bb69988a0633a3998eff403bd55f352a195192c",
"0x2fca163547569280e953a94133047f3f9281b220b0c6334645e432143edbaa4",
"0x262cc29dc7439873e862e94b1948eaef1068da52d8bd493fe44a9e48b47b88de"
],
[
"0xb658849ce620bbeeff233b7d12258015ea9f87a5390f5614981eb6e4cb4a5fa",
"0x2816fae6fcd39053c09df75bc62f75875e635472e790e295aaee0c8158961174",
"0x5849562006496b3a32966a1a53d29f1c667a80e69e44993133184456ecc57a3",
"0x23bdb40dc2a5072c7d0cde89e1baca83c53b963f4129487c1a68ffa36cfc46db",
"0x2283767ef21ee3be90dac5aa35e2d5c39f7bdae014bd63b63039d19b042fb575",
"0x1a2dc35b3c29c763895e67b7ca3ebb9c34484431cd2d1080544cee9d03194c13",
"0xdf23b54c9ee2fd50b58ae1043cc7e0dc3a11f183ee0f815fe9a97caf186033",
"0x160a65dbda0b6f118906dc50e0d5a8e64ce7765f4327700e11e753d7386e7392",
"0x24b39cab2a81551d5d529ed57986b8ecded02a7650eedf67925eb9efad60dc20",
"0x226f8e8bfff7dcdcd1980eed6f88a2566cd997d4f7bec484ef25bf8ee86eba7b",
"0x2aaa2c1202b74f2dab3f58dbdc95eafd2ea49d5e3abb47f3b33cbd4ea13474c6",
"0xfaa06fba9421c021c6133baf90169f65dcb46cc47ee532989d5ced54155f34f",
"0x17af1f8b71c3656ec7d3262406399866d91470e4b912040132b923f891e63720"
],
[
"0x118132fbc1cd83f95167cb4473d54c6bd2c417e2782e5efea16e72d47b48b70f",
"0x1df6a4c43bc5c69763183d36c26b6b37fbd5e4252de4b5c3c0da6b81d2bc00e9",
"0x2fcd5953b4af9a49fd90b23229198d09fc8fc8ceafdbb53599b133d01023ef76",
"0x24c66b7856c9a5d78819772b35eef0de88ae882c19af36039f785a48a75f450b",
"0x1692394c144aece305a7f02749a63a355ed6fe024be532af2152a0d53d590a30",
"0x2e0f2af806c4c37a9cee0b9d31be62616a7dc6eba5e51ed9854c1be1d9ebb9ed",
"0xfda8fed741c4382c69bc3f63c48c052ef784b8f67ad573451a418f2f6401127",
"0x1734a0338c0a652d147ea6c26feaa378580ac91d0c8801b3b06a4f50b580d01",
"0x239102aa73485d2a291639612b53c10c8a729f09dbf45984e80688332199990d",
"0x15c8103fc31eaee1fdcceaf57ff198cea6eeba5237969b036135084cd15e1b57",
"0x1ce8ba9e5353bc50ec8a7cada1fb238a643d6d1c03449a5ad1b6826807821747",
"0x13cc546736c859756b596bacedfd88344e4cfe16abcd44dfabf1234df19fb7e0",
"0x1dcecb2dc57bd3cb8ed9aeae4fbae4f40e7ffc8dedb72e34c84a9318d9863678"
],
[
"0xb5944768d61c1b3562a5749f4f06c4dd085bb562b838d7e2ef14a21fdf524c0",
"0x251e1806f1951c2a33eb6ae39afdf9be6b971da924ae9920246d98bc435d9c59",
"0x2995212cf7dab0d9fe609ab9e441218c5181d91e3e2f6c5b6a07800c8698fede",
"0x23f10d62357467c7e71eaccb73ec7cd5c44d69abfb91849559009504f81aa57f",
"0xd435e4564d33704bb176ee01b59499df851abc0dd5bbd64b3ebdf9635ca39a5",
"0xffb4165b1b9e112cd77c00ea81f751e9a2d46e3071e5bd3007fc3a987e842e",
"0xc55394f0fbacf892378bbfcf44b8e9475af7e5d7e2373b65c205da9b1b8188d",
"0x1563ed24f45a7e60b65a0379df8dc871aaab1b5cbdb24f9f675daeb6fa138423",
"0x270dd42f73034ebbfbce9182a6e41fb80cdaa78c06605db3c342c0edcc22e577",
"0x11293baf366c075e3cf66c9f14a4899e1d9807460f30af948e44c06d43d37653",
"0xdbe92f1d5f635e182354a066756bc119c14060543e78a467507983a74f9707a",
"0x22b8d93d76a89bc36f0b5d6a1ec3c6053510622713e2b833499ba773dcc0c217",
"0x23b478d2e4e21e478ea7c859da3dfa7229f6a2fa20a2ef1f406d9fb0a7f62f28"
],
[
"0x2b04d6ffbaf7144012d92c5c6212803c0b5bcc0d7b1950b889d1fa6f3e56445a",
"0xfdaef081ffa41b2a3c6f8f4c23a5980f85b3301bfc3c342c938199cf71aeb64",
"0x33a135f38b760028fbd4b2270791912b0e3008c2007a89b30621086f994879d",
"0x2e1eb1ea7a1684486cfcfcffff8c926be2670f226bd883d11591addbea75adda",
"0x28bf473bec9d8842b84cdf474a435da4108204b09ca3512d6ef73c19d0be40b3",
"0x2edb397ae478291b9f48edd50660fbc1b5d7d906947fdddc255ba787d02b0366",
"0xfa157820a600d4a78390b8beac81aaf6e8d1607d7f4eab0afa5d7ee6abc605b",
"0x283fa69d06b072eb8b27c7c655b71caec057124aa1669240971c1d04fa881c3a",
"0xeaf5ba40262c5feb646c4f32ebe7cd2a1ae38a83c48a04e0c1d452730d63058",
"0x2306577578a3acb6a7c070ef0649b6eb67c58224662895d470542fff984f5570",
"0x2f204614994166d0a9fabf6bf5db5fc3daf0bc16645f0f202989de9df97c1161",
"0x2a93e968eafe2ef56b6e5ef823e29d96b551221e994f08806f148c8d318e7920",
"0x2f4f684d1f698b3aef34a939ddab2b80696f2246a13250f8978d597a6a20e202"
],
[
"0x29be2a42834ae32de3320fb0ee46b4c102a3d1ae44c5dce152fdeab5450c9c44",
"0x2ec317d402fd363380a63c205dd966e0a9fdadd78b8b9485273b6902b17ed49",
"0x1ac21ee4c3af5f8d60fb78d0c764adcfe0c20463b3d0abcd3b602409f2770743",
"0x882e85d15875eca350c4e7c4e59a820e47a8381321dc5c7f8f78aa3e1aa68c5",
"0x290075bb9d48ea0db89e805f26952bcdb6f96b1507580b45cf56e18c21871cb6",
"0xdc29c413aa32c2199a2de5e9605e1129b1e681163b80f82cf846ec5f54377fd",
"0x2dced935f82c932e7a2a837e2816cac70bf50da3aadafb7f8136bf973b0d3987",
"0x104de5f8e59f98489ffa42926a8aa9701c422e4f13abe90507106f2a5a60f0eb",
"0x23b7b05c996c963eaec7c5817eae6d0bfc78c01d9c5da84ef4acde5204c4997d",
"0x177a7ae9bc58e64a1b3baa1975c6824cc81d32302740709b0c6fac0ed9fc1958",
"0x1552bf00f696b1ec39debdba504f79ea16c9ac75458588eb8a879908c80c22c7",
"0xbc4a8170c368a03c40fdb65123bcaacdec1f9ab057747d5a2562d28f4785ccf",
"0x2593132f444b3731469755f9a76b92bb29f2e89e264ceb1e2881a4aeeec2751e"
],
[
"0x1946fe9de0a943d5a716eac08561cd91f9031fec82da9ab72883c7b218b11eb7",
"0xb5cfc2a2895a6f9f5ce97bf05bcd5fac012d6737d93be00df14f91d0e6e8d44",
"0x1176eb406c82709b00e6c8aeb7437aee20d0e14b34c91b6d4759d425cea472f1",
"0x151f15179f562e6fb43c853c9030c7d95da9bbcc9350b40862350b4339f74320",
"0x1d83dbd5511b6cd9e553e82ebce5a91dd9f423bc9e311a211d6509e37e3c8283",
"0x62edb4cec259e007c26a95be576fc925088cd487260bcb67fe88dbba993160a",
"0xa390e27ae606a3530759c877186ef25fda97764052ade30cb5533f0ae878927",
"0x17a961c4c7f021105e4facce2011ba1f6f7e4c18c6522a8879b371bc53eec16f",
"0xfba90a3180e89f49b981d7f2d369f14b354f586ca695d5be51d562bb24f01f",
"0x1b17b06f9727550affa91416dca65e6940ae6266c426f46a5b2a72201c9bf48f",
"0x24aab8dff690a59f7a16863d2987edff9d240c46885a5fe39ce1400c1c6638e5",
"0x48ed2132edee472d9b39de6eddaa2ecd7c1259af7c64ea368e66882d3cecb15",
"0x3ee389275c64f648e0ef79dd7ef8d7c4034d8b0ff91a834705ad383278f1f7d"
],
[
"0x1af3ca6240a55aba55df8e49835b92fa17e39ad5701ef70f8144109f894bf1d0",
"0x2566dbba85110cc708700743aaa5c7061b174365a8efb5938b4bcd82ea79929a",
"0x205197098d6814100ccf6c908eb3792b0294290afe47949c85b0cc054a60bed7",
"0xcced1f9a364f77fe44b306c4539575f8b1ca45758c4fcbfee234e8dcd973ba6",
"0x305e20ea1b93c0fc73307f4825e80471da211c98323f23b727919b63e42501e2",
"0x1e473b357377aeb6c9eeca4adacf0ebbe72df720bb533055f056eb9f2c13d536",
"0x56d703af2f1982a482cc560c2f4f2da32ef0356c73ce35f7b667b8f825b2451",
"0x46beadefd1c7353469794eb81f574d38910f72d81431159d4c532eecc18d67",
"0x2ad6ce3498864f0ae788665262f8b99756997eccbe50d70338ecd68dd1e92522",
"0x8b39764e398e29ffe39a83c045a1218036653fe8071ecd3779cc6e79e643fe7",
"0xffb07a9dd49578818cf9781beaf8940764dcd2f07aab4123f4c9f030513f622",
"0x2e7b46afef5262f60443669d526b99983678236c8f5433cd130defb06a39023a",
"0x13c717906e68279fd9e57e6419986ee2cfdf96b20d200e4adb31353b19a91470"
],
[
"0x81f58a91a4e0d100e0369fdd81a190035342fd0677ee1bf5215e47f8e58c2c3",
"0xd94283e58978ce187d463c50a7277cd3c80e044e15729a6f8ec0422f2ef8b84",
"0x440a6e12fefc1ebdb82b5e69c461e3e332fbd297474c18a65390fc8649a3d55",
"0x12146efb02498c13aceac7fed685b0dd88fbefe8f5993c0cb21b0b4bb85b11b7",
"0x64b0712fa159104820ac07e0d2723a3bbc1d1295ab39a108e2eee8230131f6a",
"0x1e0f62f785734194e76cfced2e91600716eb46fa4d9235f28e47e366110af98d",
"0x8204690216d1d2ef851dee5e4edd9fbfe66f098fb61c231a0e89bbbd9e9475e",
"0x20bac589a995937086cb727fc2561ed052489eefb58cfcc260eefd58502b1ac6",
"0x1f4bd25093fafea78a9db91966e6145c46472a4ed46af710826accac2034fe71",
"0x278c85ceea23e4c040b66e41ad9cd09a7d0ac6d3457a6e596df14505f071de2e",
"0x45ee69f0bcde13dcc97f5910d8228124b16945cbdf38db33cfd3933d2c15c97",
"0x5ef0c0803ce631e81fcf86a7c270ded90e8127485d424abfcfa7c4a9da7d8f2",
"0x12b584469f8cb8b5c200bd721bb2c299c5e63422d730a3baa52274093f9fc085"
],
[
"0x22a852af90680a8ca9688b71ed27c157d02b406bd6c7fd8121d7c7793ad2305d",
"0x239a362ac4f07cd888facdc5e32f0b42e7ce6485e9697d14fb4089bb6074ead1",
"0x101185b0a8c7d142bb221c50fc9840e9c5a0bf1110e9dc717b354f100b514422",
"0x2719aa9c388ab97e084241110f428722c8f72de23a6ee33f7040c781fa5ae476",
"0x18aacbd4af9ddb42418648314a53accac4af473cb54e3dad906a0210b98bcdf7",
"0x28d0ac11170cf9ad662a2f31d00633af17b9f0e345889ce997829747120aef6",
"0x1c76cca8e7372edc737fe1755f75986a465863a66539143a5f21f8ff9b0f8970",
"0xafa7a7f02200447c0e943dd60c468ea6d1cd1e001505ce16ebbcc97297d6cd0",
"0x28efb92a44b7e421bca73b274bc28bcf74f94c7212d72ab6913c1709386c5e3f",
"0x1a03af000cdc46ccc12067c560bbda2a98119041bf9ad3ccd9053222fd2eb4c2",
"0x2409f6c3cc378966ffae28eb4adef67f8c282d8a902db3ba471d9540c0039451",
"0xad59025aa1e7d4a026d1f819695b3f7890b3d9631dd06f7da00abd0ecd94ab6",
"0x7591d69aa28fbfb5b65dbb6f4420106f0b0906151307b976f6baeccffe2c488"
],
[
"0xb27ba82a0ffb98368981736ae927a227828985c00c3e5df8c1276b1001089a1",
"0x2ceb1780957827f9d4fac39214a4e82e89a82a760a9fdd85393b285dedbd8114",
"0x18259272125382f107a04abdc0d968efee527d2242e263015e121fc4b090b582",
"0x10c97f58b9ca58426bd89a59173ce8493d2ea8d3c6cc827ece2453ef193bedae",
"0xfdb0710ff8ec599e7ad5086a29d53a9d1834e1a4c71f0b6846849eb0dfc47bc",
"0x2008c67e2365d2e73a882fe3ffe416e8e0edf4a3c490dbb05d6daf56b4da0546",
"0x874dbfdc6d7035655981f935798b58b755c7a9d82876352cd26244518d67062",
"0x29d294ae7d02f2371a16b483b2102e0055080956b53331aa171f50de5d9799cb",
"0x2aa10edd36798bf46c3cb7bd749017867c029a54e0ead556e2f15cfeffb4d9dd",
"0x2b457a5ddfc105f203eaeaaff9af5149e02c6cf80a9327ed502b29f4c3602704",
"0x29ccc8e6be785237b8d99009dffe037979c7da79ab22fb062d6fc1f59d48a708",
"0xd829ea3c10abe53f0153b4446f6e2a250dbd79f9ef7c45745572826549109e8",
"0xcb3680ad25a34e351089474c8ae39b6091e553be4b67c2bd1fc7a62a04287e5"
],
[
"0x4b46526207edc70a0d23c8438bc49a365635552dee240661a2cdeef966f20f6",
"0x1ce71edf5b935a231b0ea60402ba756a4bb45d65120cc0845f6c2ee2ba32e7ab",
"0xea85373234c815ce2693a734fe28705dc6fd3fb29cacd0b9f4edb694c15672c",
"0x10e60b02e5c0abb8dae47efa17b0582df94a3baebc52bcce8820f858341d7188",
"0x67ac96b7ae162e5d0b43715f4c24b9031c082baa68ac7638a00f8594bc3b127",
"0x293dc450b0e5c560a15853129e238b046a419ac6f0c8ec19a69bf8c409a73cab",
"0x7a2dcd14fb017674965e82174a35decdaad75e42acf3d5ac1a1e235257d1fb9",
"0x5cf8b0f380d29befa5eb75a0c032b7b7eafa895d98e0bc0e86f03ed066c9876",
"0x2d00dde97b4150107fd9bd859c5832844e6be0d5a99cc6752d97585b560c4b2c",
"0x6f2b210733fa0605a0cd753fb6ac80a0d893b2bef2d5453e5f6cfcbc6a14302",
"0x1588e892f9f2d3c6a7dce89f132b3dbec142bf485e2142ae05db7fb5d7ce211d",
"0x14c92dfaa3a1f830b20150093fa670dbef3c0c807f52321e5fcd28807179cca6",
"0x1bb4555d8c5f8bbb268361d5e1c22f9555f7c9f4fabaa24355c963edc263af6a"
]
],
[
[
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x2525da24e1d134d9e989838304af65260bc9e8f31225ca603420c6f22782a31",
"0x138f42d30ae01982ed697be56da923021ca5ec09fd9fdeafecaf1b815a8eb44d",
"0xb68eaed660cd2cafd2ac447e6b5f44a4acc0acc59379fa1e1d6d6c23e29fd18",
"0x23a87eff7dac26756048b8a99cef16bbd4ed93f085177da15c763bfbdd413a72",
"0x298b224b535d0d32e971977b9fc2b3f83df09ab550af80b838c2e1308a388aff",
"0x21fd7ef66c4ff374e85b552f0c1162831af7f2e1feaa30e4d42c9ffe585e730",
"0x2a75ec0f43bf0249456ef5cb1e58b4716e135e1033791b706c1198e370cf5912",
"0x217005316ff983a988abb4150d5b89fd58f5e7ef95d275207afab9bc736dcf79",
"0xd200fbac6500899253294ec3394f5fc2374ca3e3243c34cd97c5f8f31f78edb",
"0x225829f1730cfeb97ccdb5b1df418bac0f761d57293a39d5ec293014c78f38cc",
"0x17b09625ab3ab20b7be3da6740eac6450972d5297ef55ff4bee47857841685e1",
"0xb98d9ccb5cd1979a0c45a9ff8f87be8f15ba1cb758c602775d2a5711dab8f70",
"0x26c6a596dcfab11f05dda86122034b6f2046c51c0024c4c673dd93c63ecca6e8"
],
[
"0x12186bb22000ad84b6bf29179ade2d4e7e94ff07e51627e09580571061fa8ce8",
"0x945c0594d96052f702d1c0c8d423cc5f054bca11e54a939531e5c6616696a8a",
"0x1a8993400bafdba532b42fe60fa719ee2bb70744c9684c87431ad462b69f6234",
"0x271684ec4ed2564694dd8fd7f7ce52f573c22c72e8268ecffdb3f3256cf94d86",
"0x199d5f44df92c42cdedb75daae78948bd1b812ef63e72c6d01d77c9d513bc32",
"0x1554c7a78e970212db02a0c7478c02343ddeaf350d52ad460966c2198475e5d5",
"0x222ab7be52097210638f70d1bcf3ad6842230e0561e1ae556519ed6e44ab56a9",
"0x391e74d9ce9444812f42cfbe156e7403ec00c10888b716132c819542982da3a",
"0x145f48fde51a4c7f0469cca2a20bd5c5794c594c08ea063412b82e4c21fb67ac",
"0x1c346dc47106b6a9c0e34f2b6a59aa07c0e23a7f0dcd72f98698b6bbe2440a9e",
"0x1d881f9bc6c0a69ad8c4cf8ae0854f5e39d7f120543ee72fc776156a6dc41e25",
"0x1d6405c7bbef29b6526df75b9b3a43749f55a7cd60c2956e61ce35446a14055e",
"0xe1f6e07f1a7310ed0af6b08fba57b93adf17ac40ad5b334a7b5b8d2b21822b6",
"0x1dc01119987d2a025898bddb1d79385b99960e97c100208b5e992d9dc74ee608"
],
[
"0x2399faa648aedf9024c6ac3ceafea248216e24a9e56caf5acd29ce2546a9f6b2",
"0x14a0f9e89a7bd2f9e93a28113256f5909e18bd8f2d4c6a4b91fa764f5d6e9813",
"0x223cf3744fa802eecb6e33bb5d345a4e2e494e2e0868296a075010d891596cf3",
"0x1cae3329696575edb1c98df16a20e97a0dba9988601fe24a6ac327233edbd7ef",
"0x2d2d2d79eedb473fc052705abd07b5d7d13aa9a52bfa0a34b29bccb2768ce812",
"0x13d95f949c83e09efec7464df18f95b0f569fb43aacf2e2b2b0d1b8d6a4ad5e",
"0xdb367b50c96c5ad714104e535fcde5cc2d98a7358dd85bd98cd4e7398985874",
"0x24d565383969b188f2900ee27741e48500dfaab461965ccf6acc7290c5c07b38",
"0x2c08d33aa07452ec8d30fed9ac5f8218885c18de68857395b7361d06d5d50c64",
"0x2eb969d5960104432dbec4c924f829411bcd4eb2582508844fb46c57e4b971de",
"0x1899d3ef6a66651b27035f47a0030d77085b988bfb2595392d46a09eca668e9",
"0xdcd018b542eb51472ef63566573192f167b8a41b243d2f9cf7efe0427bdc769",
"0x1e76abfe0e0c0907983d49bc07cd22392c9a9fba1cad773f87877d8514e4103",
"0x270775b57362a96f142cf0560a3c1f28f8b8f84b1695cfa20b271217cb9460b8"
],
[
"0x3add29fe398ed2d44f233125ecd1509e3cede77e6be08b94af4fec87eb3e48e",
"0x292e485c257794ef8e1fec5dacdd6ca69f168408249a6e203853615080cd2cd5",
"0x22a26c25e3631f154c6447ba2e8543b1d0f8454bd027168e715f21c86d09d399",
"0x2013efe5dd2c054f547d532fd6f38d63bf3cdc07c1b3beae0b830c536936dfc2",
"0x10b99b04d7a8e09059e28c723db16cb75528957858c3f9988f0050d18a30e660",
"0x17e35329c9aaa754c345d6eb317c368788b093ed1d2d136714ea1b2f793da580",
"0x28ec7da8ea43b28add669ec05c0866c2498ffe99bfdfbec896bbd70d08720f64",
"0x145115518f4ddc7a878c4a4c3a0cda353142b420cbfcaf2f2eb7d67c6817ed1b",
"0x21c96a22d60f44c34f543b5086ab4fcdec036b280b9f5a64a3a2003a2a79e906",
"0x2fe67a3792bfa46545ba3633c2d504d9735e7d03b58f9208f584a3ffb3f04a82",
"0xc27c0b2f86856b2350007a8501222d7c7d89c02919d2a310032c4ede9da6d5b",
"0x76eb0679a3bc5901abf1204e92462dd0049c8b80f0d0b110ea12ca6d9da5808",
"0x28b6ca5d7278ca2537b3167bd0e8c8094a06ff3453e060a1f52f077ce3c0f9cb",
"0xf7036425c9f4bc087576419d0534698adef68a0ded0fda90b211bdcda6e05d5"
],
[
"0x121af61f4dc5bb24890abeb9251e5cea94770ab062dc0c28bb8995dd8f183635",
"0x1b75bf6cc3265511f786609179f18b582a1b6261e9e6a9f05ac7e9a4bb015a3a",
"0x26b90bebc295253c79bbc8d0324cec9805f3730a7c7e3c8cfe7220cc90b2ea91",
"0xca34892eb7fa3d7bb497043be8462cb387ed055f83566b165a7dabc75bcc623",
"0x1ce0f7ea351be6aa78e3ded0a3d69d69de3890cabc1bfcf40583226decc32d54",
"0x1b5b9f9ac26a2e054deca324c9c92bf4d64b0b7be729631f2350c4db32232768",
"0x94707149dc563db7a45c5cdd80091c3972bf52a6ee3f8eaf0e6bcc6ac0e3976",
"0x25ceea2ec9fe11994d5d6c2e2af196963dfbe8112cfbcdb49c5b80615cbddecb",
"0x2952f32d846a2cff15c9f028f02fb60bfcd8a7b34ed120ab6e393a1ec2794a4b",
"0x930264343e7f5af2b7e5a4f7f25d0be85825666a68d5c02c5a813e958c3253c",
"0x3f289db20976c1ec1aafcd0daba9c386dd8edb8e577311dda9ae8082369891a",
"0x183e186c2c72f4a35c4fbb1eef8237e1aaa2379dd8d61facc59d6e5f44da0a83",
"0x1c921c4536be42aa8a93ec0ab11a37231dcbc0ca9ab7749e3d5cf9913adefa8b",
"0x8ecaa57e55d210f56d9c8141f70394e59185625df57435ee2cc924602212203"
],
[
"0x2ca8ffee2d58f2945297b00cd0b511da167080d53949b3f1fceaca9616b6143d",
"0x23894e025a72e4ffd1580bfc4748a2725ab6f214a8f84e40d266e5183c6db8ed",
"0x2600d56e9f728b982f23746da7a2993bce578e7204b9edd1f474405bd7593103",
"0x23e3b3568798af43a561614af2c8aee40d2249d9f58452847c453594dc8f38d4",
"0x2145a0959a46b3c43bc559b8811d309d48a452423025b85cbb3febcb24f4066e",
"0x2f172acf4fcd26f6f939157d0da15bcbffa981ef6b22f7525c69f9ebf801192d",
"0x28f529934ce9fece64356acf523f32443178669ff77a0ad6e7b86020e413ca4e",
"0x9385ccdd032e8784bde4412886e9a590ec85ff5cbfee02a6c5dafcaeb90250e",
"0x2a4b9eb8b2f9e4c4f2fd334185a45d0d2349163bcd7b808815b2e89543c09412",
"0x3bb2a5b659f1f5c2c82bbe5824ad64a260e21e688f5fe01c61632fcda348adb",
"0x29e0c22a0db446552403a18473a2e5d923f0d2a81b23f593877de4657fb1e877",
"0xbb85f352ad58d8e5998cac57a0fba1d49349aae47164fba3343ae32ccbe4206",
"0x24e9c71c5607519169015cca5f0be8e416f21194fc7d610a38d3e48df56dd40f",
"0xa098b67cc231ed6a2b72bee29f823702b67dd0bca78f7316543097856b478cc"
],
[
"0x2c99ef5e064147da9782b914a294b6c14d21ea7eec1f72e8761671069d82a134",
"0x1605b0bd96a60af6d3ce4feeaba7498571b693596f79c09a3485cb6e37b1480f",
"0x1b322f4a92d336fb2b92e1347e0f73037655b344fa6ceb1275eda5baabf61dd6",
"0xde44974e91df8151d38ddb337dbefb7b2423f8c2db33c95249664256049447e",
"0x1cbf2e32e48308fd5254bc8466ee1b448825badcd0d038171d39d77bd61c122b",
"0x1e25aef828ae1b75374d1806053383a3afeb4c247bb3f4fc602a31258129088f",
"0x28796af2b46e4481c8c68767d755b2f28c2229892c093faa86ea6daccf4f403b",
"0x2b9c2881bdbbcab60ca2981c28b4228f8ad48e64a7b393ef4ed080907e6a1774",
"0xd00d400c8809e16db25f2f1593dba403ceabbe3d0b868399bf12c1ce2a6284d",
"0x17767169e7d1636e0cdab5d29588e903e1d4343000d5b54f3e523e956af6fd58",
"0x12e4b3d7107e8bbf73c227c3fe04ddc9277aae8cf8b15a769c7039d282661866",
"0xf53bacde9c9005381ed7bd0d3a35048f9b04d99b54cad41bbffc9704a574abc",
"0x241e0bb48bf63003f858adf8134bfec90214a7836f7af1bdd263f5ac91906803",
"0x106f70b5c82b6a41e401fb3c05ed0d4a5c1d6ab66ab048d2a928a323556632f0"
],
[
"0xd7d07cd3798f44d832a6571c21706758693e5e93684ce2d1a5e8a53e0cc6709",
"0xb6ea459a3eea9912c01005ac024cdcb60d77df03bf6d57f9de9277855f5669c",
"0x26f749e039b1b58e9fd714e0b5edbadd2ba23f0faece28348ab8eb36126e4a7b",
"0x1a8077b3370f7e65d450e0e536e1e73c9ce33596023de1cb2d4f1321896f5184",
"0x2f6784fa0636348e5b73d52307c09dc7de28dac12256995b7d2d8014be1511d4",
"0x1b4e7d76dd8cbb42c1e90574b4f832a07a53912dc74b2f1983440252c232ab0a",
"0x9367ecd533634327435fbb0317bfd4de720261bd6c77f2348f0547d4dcd155f",
"0x290e7fdfa796c9a6a1b3c2e6d746601f49febda2af0d2e7ede804b822400e81c",
"0xd532c4429d77c08679ecb541865f7230787381786f7d98d62a06e8a7f33f3a8",
"0x78ec6b19c1d89049a01ea1a959df4525e1fa2b5c6d9c7fe00ecd899af5b8693",
"0x27932ea804885d901c0a89103c29995ef207e753574a7ed679b162342c54f27f",
"0x20fdd250fd434a5fb9072c597b940cc96fec2986fd603526b2becc58e431c8a",
"0x211dd323ffb6bf1f7a0c747597593c44053c3d5ad428b1145d04f0a728f4199a",
"0x437b94aeaefff8e636816d1f7484e12de60de9199fe298c3a8466036fde9053"
],
[
"0x29195117106623ffffb0af525c838686d0d97259fc73a5194609ac7b7b171313",
"0x16be4a147414ff8080b2a744735ee85e2327c3645e26a4d21846bbda0f5f6ac1",
"0x15302004242f418b70c701b89e3585ac1d2cef27046b512c7fa841e1c7fe564d",
"0x103099f79452ce6c8848e50bb04b50723aff5ef915d2d7ffa0b8f72bfbb6a906",
"0x1cddc847d2f8d9e6c20ff55628cc4e9cefc59a283a38842462cbe60a9a1d0336",
"0x29bb557aa48769cff8a9d0ab0e7149f835c5552e5e5ae7e6384043790e45c1ed",
"0x1cb2f7fda98a18a6fd20de6fbf412d07f0f41fcdf2088dfcd0e0b852fdfb1aad",
"0xcddfa96db02b40d78f740716d6aa26c2c6cf125772a9835c9a34a9046702db8",
"0x1f0f734e95a45cf07b70b85846b65ffd3c1eac10a95e0b917f27ce25c0ee4afd",
"0x14ec222b4b95c3b602c222640d8d6dcae21dabbf1e805637ec3bfd8984577c08",
"0x18f31da4274218b2691aba9611a798cbc9e9405f111267cbf424a67799ef67ee",
"0x18a38fbc04f4e85a687161544a2e3323bc7bf504a5ce34e8ba4335767cb4eedd",
"0x218b8f679b6f2f6070519663f49d69fd9043ba6d1bcd7b7b85e825abf8bfecdc",
"0x1a3d570d5a331ae41c938e81e8155ded345d180ad5ba49b4e1bb70eeab467a36"
],
[
"0x1b62d4b17de67375b58f248a88dbf707cc9d1491bce0095644ca0219a01e40a",
"0x23dfcb4155e378ef7d127383d66785b33808a3223e22a226a3e3a0f7bc5200a8",
"0x1bba25ef90c2742d6bab9309747fc14cc73e4024c803db5e58c7d2525839b2ae",
"0x4b3c3687111107b6b39fde1f5eabb0de5e2fafb481c0845f0e9e3e5f90057b7",
"0x189aeb454f60721eede010a005c4ce55509f152e6d0e93e8c5f9a9a6d3adbbd3",
"0x18572091465cabeb96748f5482d37d3926bf7c1d6680dc932f45f55a7042b02d",
"0x1a5ccf7ef451a14b3fdc531a52831728f5ec26b86ba77c952701db2913a698df",
"0x152f38cb9808d5c942c23624abe88852a59f2813392030fdb7b1753025829991",
"0x9e543a62e93aa3005be9112a49c5308f5b6f79591b4824f6355ae12300988e8",
"0x1a145f49ae38f332ad67bd90734b8bf9d97dbc5912cbac8f57417e334f14230f",
"0x8857c8b3f0b9a7649805371c01a74c84c67575d9a17be0e5590aab52143377e",
"0x25fda357cdab4ca130314a01d381febf812c14473e4bc9b13ce8849eef1cbf96",
"0x27b831fd2727802f6a873109adb4196ece489fb5b48113565d8113427aad42d7",
"0xeb8c6eb7b2a00cb45db63f58e55d78f1130d92a56095b485c662be692644733"
],
[
"0x2e1681bc7c22d24c433f81dd3a326fd0242bfc7e2bdeb6307e4d2aca32adda1d",
"0x22415ca10b65c83a039f1a749e649fbda0cfe2fe3403477a40c10689ad5af158",
"0x21c92d239c137b9a280a728acbd058a8c75f321e0d254c346aef2b0f3390b07e",
"0x41fc409e13a628d9632b87385d24bf4f2a712e3642a36c9875cbb5e90028065",
"0x6850ae560ad9a7e89bf454f4300cac5f5184453afe49fd3552e63e44e72ac55",
"0x291f4b78708af2e6d2021bc67b8b43177e7c0533ae1d89287612d85cbd16a4a3",
"0x22aba2a6f80e91b2b4912240c72983f027a4c158910c03cc1cff66c545f8750c",
"0x22e33116da2228316bf3d68b2f1506bb5b5b87ed556aafe4f1c1638f723b0a5d",
"0x27885fcd66e6a1bda1f55599328bda53f0dbbf8fe39d8e025fd500e44ffdcee2",
"0x28dfb66df089941c1b64c42f01e015b5f3bf8764452add9b24f4065b7d276244",
"0x2e5ffb493cfee9eeaae1200f360829d0c2c09ddb592d37d0821363aff6ece299",
"0x21157a29f47613a80bdfc774d1c8278abc3f76e15937ce9b24176e1b4c9e3b7e",
"0x1cc9014506211730afa1e9e45c9f38b6e6218ec646e79dfd38ae0cb8d96ccffc",
"0x210396c1be722404813dca0f052e321e183c00dd1671044b18bdf1560b04ed6f"
],
[
"0x65850d11d0eca87c3697b6f5e57f78ca86952bad1c9047dbd2eb6be9e9db30",
"0x854fec1c464e2fbad9ed6737f451f4ea27b6a1d97349941928b5911b5b7e3b9",
"0x2c240af2cced1a6d0d5aeddc36c875d3a8e74325772748ce1cbd5e01801b188f",
"0x804921684796339f40259855eb51f118262da54c1ead0364ed73b7b6f328dce",
"0xfea56a59a68a9d3131f96672be04f078937cfae01bb185c074be5f74a37b226",
"0x11f61a3860411316eee42dfb735b05e0ab5a905a2478b9d446acd0fb1403d00d",
"0xa80fee34581fae3188ac5f2c5aac9493e6db12ee7a2782a036aa65ed89f3825",
"0x75c8623c44462e495ac4b62536c790a89875e9fb559e29fb51c32d6601ef297",
"0xd4ee74163fe389031e01f793b3cd7f76971649372ef075dd3f2596333c5a6f8",
"0x2a06bde137eb0fec584cfe2f11c2ca43be25ba8dc31e0522191cbb63ffc50b6d",
"0x237277467500a6589f208fe577a0ed6bbd805f5bb1fc0543a22f21cb98b46108",
"0xe20cd93d855c7f14979bcdb315d2f9891e09e4099cab4f82b66481d013eac94",
"0x12dfaf2a058c0890bca0bc89b72eb4a575f10b43a009c6ae22207149884b4638",
"0x299298324b7b1e7cfb05fa7c62c2c471b5a8dcb233f8c9e1becf67d8bdcb4416"
],
[
"0x1a59b36b94f9d723577e504d600c493f2810f0e67112672c743abbb13abf43b8",
"0x258e09e408d6f662f3539a649aa156f18cb46302fd0fe34f007b731db06825ac",
"0x2049f9cf12d0e210a7d82a56694e58c76d2f1c5ac572aaf9b6fb770c09f8dfae",
"0x2d4687de2ad43600f6852c2a191cf74d0c3e4a7ca0506f974610833fa201a72b",
"0x2803e055305e45f9ba2d154206439c02a37e8a5c3fa8eb38d883c75137d96216",
"0x7ec1b96a04d4eb1f0728f1fa0493019c6f1a95456997ba5003bc2bfdcf43ba0",
"0x1dece2bd9b515875c114246d055fbd55492a7d26aa8022227192600fb17c8c82",
"0xa1973619cf434b77422536477683d092d710c68a3644946e11dfc5daf4c3e35",
"0x1e4a2c836090a5c960931f020bd616629e93cb093ee02285f8b9d850a74f8b57",
"0x2a12cbb75facd8548f0d464d85c961acb166b73aeb3422edcd1c3c0400824673",
"0x2ba25258891906648372370673f8b9701a7a17f5159c26f83acd03dbddecb683",
"0x19e70fe4bddddbd1a2010dd7f35ad802004b8486a6a1296b75fe87c2c5246908",
"0x27d1991b6be57840c86c76792fd9c3b44cc9bc56569d8f5d78012c17c9d01b20",
"0x26a6b81d5d4c3e4df5e93aeb39266b56a536c153210b9f4dec10ece36e3f9e"
],
[
"0x1a4b186b77cd53f961c8ccb7815d9781cef7a52af64d0bf746cb522512d3d0af",
"0x8b39f702949a0a1a5906339e83e663519b264c3039aba4688bf2e3788b3ecb6",
"0x152877c59e07350aa9f0b36db00c436234c76249dd0099607b03567b4e7f056f",
"0x1156a55febc770d3e72337b4db1bd2fd680594a9c9dad08777aa5d898510e5c",
"0x1e2cdbd10cd7e2993c0a41fb073400ff938f590e30b3db6855f12c129d681f12",
"0x4f089c87cb7babaf031a4d0d0f5c08e00bfc99cc7befcdb22e55256170cfea5",
"0x2ebc3e6c61ae6901d3047afb5095d5f86071a28026a7351945d6fc4626c2f1f9",
"0x230959791080b2d262131ee7b43c2de9422a9b3a59ee1241e762ff0da380856c",
"0x10bf2e728bec374033c31e16bab6772056a1ace43bb4c3333a086256e0ed9d8e",
"0xcf6a0317dc98ba7fbcb0dcef53d804271bb932225cf3c2fb8c0564b898c13b",
"0x1306e43717156fb4e21ac64165dc5fd04b3f5dcbf52314fc0c84d09ba5b6578f",
"0x9a6e0063c05651d63e8365f4e17415f0ab59d07df4916e9f3c6f649c4f10250",
"0x211a3b4e93de320852f06668c192079c3d65a00de2a7cfab966ce0fbf9322ec0",
"0x63781e7bb64e40ef54a4ac17d47785b8fae5da0c4b3bdfe4de8edbda7029bef"
]
],
[
[
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x312e3298297ce9b613e755220138a61f6fcb449e9f297bd2ab37fa4b060c4f8",
"0x237ee46d48fc4719f3b0c74d1ce32d25ee1a406c86226b14963597d77d3b26d7",
"0xe643d3d4ee78128b65244451e50daa769353d675b70cd9f3642127c70afc096",
"0x276252adc5f9add05d80d4d975aa6c8506e5f3615ad04dd19b6a8fdf44554816",
"0x40e4596ca95fc409132c1497cce79ce1293bf459cbf2e0b1ceda174d0e53e65",
"0x6efbf7c9bf4c721cb0ebff67730a41eb0d4498251681593f54d16da5cf2e24f",
"0x460e5c59d6292faa4ffea5c4f0f5b618c30291ef6259d2d5bf756df87a5df8f",
"0x136b729f22d1ca74db0f67b12512925ab8597467cedf52e6d289407563cb253b",
"0x28aaa152884edf31944d72dc318424c0da3492c9f7154dc8fbcb6537cd7e06bc",
"0x23fdac37f71f97739b9ac6b9862be4bb4075a31e9d2118c7f4ac5074bd7f2692",
"0x767aa1fbc4ea303a476f04423458ac3f6e45404c9f22c30e2ee5dbd7c9348a1",
"0xcc0452c4e5cd956ef1a3b4ae5bbcaa7be7acd4c2f72d22d65077587a91c0b01",
"0x1ceb88c33c35ed1e6738b9ed039e4ab506bf7ab0f08a7aaf7dab0caf13eb0e68",
"0x12a998baf33d6fbf6fafcf03c462c8a5ef7704b181abf2414b689f9eb08566d1"
],
[
"0x19a92ac6087ab89982fe5650e5e799f91003fd8b45400748d2c25e40f04c578d",
"0x27dc8579136c0e71f75b1cf6f5083dd8354d115bf414dd1fa540e5f39f7afc72",
"0x20428c044d22ee0bcd7a3e6fab424e8b80af5027762db1e96f6580139e2bc093",
"0xd17aad3b6fbd4fd8bae145159eba2a61ac1244b3fb460222167b77139c9da6d",
"0x180d3e114e0939812b91fb0eff3e0b6109043c1d4018d1d2f9cbc79e384618e9",
"0xcf213b1d3f6fe0b137e4524b963bed40993416f8f1b174fe697fd55079f3343",
"0x190b37e8c9b7bd5ee60d0a8537d47a1a377f7a5674c75a99540baee608fd8f25",
"0x3034b01c2fb47a98674d730818419829480394df38d331ade2700d39138a43dc",
"0x6b1dd2a5fd27efc3cd1aceab1969f68e4959b36a0da5ca5b42c10abf0d230a8",
"0x488a359cb7c3cd4063adc6ffe91ae4613f72a681535e35b7b96bc26086bda29",
"0x153a1ae9f00d026c31b3462001a07a114b4276497c8144c42af93d11bb383d0a",
"0x16c499c243fb5cec60a76c3292e05a6217471eacfd3ab2b95b409a367f5a77fe",
"0xec171c476265c4877db3554fa9f482a8d6b647239b89e48a9097f174d5c5b56",
"0x445f4d9f49d4dcb1ae866956c374e1a3cb45419e00f5836b88e5ad16d639eeb",
"0xd9d065a53ec9ea1f2f08c32c30a37cf2b7ad1614e60aaf3b91508a3ffb3b301"
],
[
"0x302608d750f16491df5a285f5f7f6a5ce6b554f5dacf0b69d450b24bbb4967d7",
"0x298a90da4f4bce9de81be6912c6ffb796d04c14432c8c40a105a28b135ae2735",
"0x16065604a60cf2d7e406310a514e428a734b27a86e2def6fedb3f714c1679c58",
"0x1b8dbca850e849940b154d50c6ee570c32444d12c847c2016b35149230395060",
"0x2e93afeb1b3520058245bebe0d269664b12e730fc45bbf46cb66044d57b5bab8",
"0x2eed04ef2e97eeb4738187710d3c3d598e60a7b9e6484d4b4a2f0983d2970945",
"0x1b76f377622072daa3d1619b1bdc692333d5345b67f36f430cf516ef16eda936",
"0xa20b0fc9107098578122aeef4dd1bbb7ef353e400ff70d382ee8abb7c481e01",
"0x8e34a0ccd379ed1c637f8272a3a4cad64937438043f4ba7f5e5f5b0adf687a1",
"0x1d48b6efe372666fc8519de0f01a8e5d360708e47dadce1fc01000e7dd4527c4",
"0x260f8a62766f0e259aaf537577b1a99d50bc02074e10f624e91c36f3bad5491b",
"0x27ffca574c26cda5aa09d071c5894e0ed95cd93036e2193e84b4e5ea7df06b0",
"0x2d723e71184abac895077f84c811f4135f4d7acf5ab28f532990182a43873833",
"0x278e3dfc235e7b04caeb106a14460dd6a7471b6f19d441c1f738aa625c45f28d",
"0x20fd0cdac44c5b5c22cea47ac2b0d7565819a0e8110932f0e04c300eb32b223f"
],
[
"0x1a3c7daa6b4af5662d0d8407b287674d83eae5b7563405f48def49981c98c424",
"0x2ff508346df0d408d3d1109b26123bde5c4558bdab26d9cf3c6374a6f9291864",
"0x13674b5d0d749caf2d93724d234c9a3a7b9aa8ced4f854b853c07a6d575b7ff2",
"0x526e69c73070647cd5d45609e6f557bbb3b4cd4ced38e3982fe8fa217a5c22c",
"0x26ea6a7932de98e85daf38c6a9a75cc6c016aa9eb31e78d7b5af1ef3936cdf54",
"0x2ea7c830de80ac304f4a4342818cac408fbe27c811b25a9e6c1c2cd7a3a63ec4",
"0x213b177aacada821231c6bc2090ff354d629cc89617d52a340673497b0c9b294",
"0x178cdf015d8bc8ed5294bb31b6299345cd5a33e5ea30e4f03f4b6bbb2aabb2e3",
"0x28548c8bb786f47791c98c20d6921d39d82a2c98681cd10f1805d4b3384605c5",
"0x2a7d9ae2a915561a62c884f5ac71ef11815fa7345f61466abaae9bb172382462",
"0x131105c4381b5f577a61629a53e074ae66a120d7ef9bb5c27ac675bf90676156",
"0x185c152024c4fd6afd5f7f6f95134da079ce1614a9f4e03f2043914281041384",
"0x1ca9f045f715d29458cb1fbdc8d84a668938b789bb4e9837cc7a2dccf90cc569",
"0x1f22be26d5167ef4bb00117f8e6ea1f2866e602a986289bba484ba2f1e875591",
"0x4bbff61811db870b42bcce9be11642d53a88243f2f8271b60897565ba6a6a60"
],
[
"0x2db1c9855ac29acc679367dbf70f08d98894077df2411f91ef68dd90177c1e9b",
"0x1347afe5529f60fe7a738494455139994ef976212daeb0289737fc17d67bdc30",
"0x17832a57483ab46808e944495407d84b427a250d2f4d8adedb0da2bf8b00f21c",
"0x18aff8fe5a1798ba94632917ad3e19d4d8eccb81195395d89b7d631cf2962663",
"0xa3ebcde6fceb125aee70284064b2f3524ba816c151fb6245e07cc33c13d97f5",
"0x17230666ed67a7740bdd76a96b3ebcd29eca4301e827b218ea24a4a56cf11eae",
"0x2efaf6a0e622f10e54e08e0e0acd1e4263ccde6164d805fc5317f9eb83418c0f",
"0x2f1240e45287424dd94a661e56b89f0e5a11b9e15fcf896d04b76404ee53148d",
"0x2bab506569e55b5d04ce7afa2434a095d3b43f0329b74519f88c1d63c705ec41",
"0x280c7256bd6775f497c95849ff56a53a8cd9b01a60205fd41702a10532a7ceb1",
"0x3de768cf69223497fd2ea181708751bcb42a0e8cf3f8580ba7d0a86fff12881",
"0xaceb3f030450738e2cd5f1b0177872a632cce047ce9861db835554b1bd9de83",
"0x14b711d1cabba4675d177f17d623824b3a28229a551f320b3355a9e3f9608c9f",
"0x24bb09e90e64f5c63d53580b531079784e4d59d287c933d613aeeaf59add06be",
"0x213b22a447492a79d3152f0ed7ff35ed7f580591cb2dfb8d91ee9dbd67ba64ad"
],
[
"0xf06ee47558f182d810bbcb214a25da7f70a567a0464b348e1b30eca7de99d27",
"0xfcd2ff5c8f0bd2947b6fbf00d0b81ebfb76064cd51bebbcdfdb6209e6634bb9",
"0x302b344f13b30ca0578bd6eb52afb66c031b33a229b18a61a98395a95cc4a77d",
"0x22b451ac56f38245014eee401568e5cc508bdec222355ab1f7194493ad7f083",
"0x1b3bf735cc8f4d38d737f7fb6d87d70646bcf2fdaaaa2a02fbd0e7585d24f37b",
"0x1df0e1d73bee56ad584211352e7cabb7c748edf107cd8c5750c6293ef7fa1d87",
"0x994b0fad98bd40de62c6a239fd21624a196ff95d2bbfa22e0416be5694d67ea",
"0x4cd761f316ecc1b03668f55b6a6a9a82ba2fd797ecbd57013176ac85d8517ec",
"0x2398afa197096947d567f16acabed2956bb62acd9a5d898be5f7e154b5ce331a",
"0x1f63018449c6f982d1364b473737e009d0004837e9b417d100aeaef53e5571bf",
"0x1b531701fd6b02b680ac96125396ebf4df7f83acf2edfe833893eeb5f2c3a848",
"0x1412ef160245006ba8ffedae4e0a1aaffb7da57e70128959a5b5e1503b4e4087",
"0x3ea51d0d3eae6f814251d648892fe5985019645a2d39bb4d4928e6b4dd9d702",
"0x181a8292b083644b0357e5c5b0fdd3162877cd14d98c3ae8e4e01fa39b19f468",
"0x1aaeca8c009c0588d25f56bb9457a2cb260b14e88c8e81389479edbd174d73ce"
],
[
"0x2166d78d948dafa963381cf1560d00bf3a0a1c288a743344c8643a58daf8cbb3",
"0x2fd8655505991d7319eaca4c4b736ee81976b7b325c494ab80c69db132e55196",
"0x14b1c418f3c123d91e084f3867dd62b9c73866a494c0646054f7d152824cb0b7",
"0x29e7183a40f1812fd9e690cc6991f46516c6a11b6d63dfb275bdf45c2e830daf",
"0x2d6e071c9a8c12592824b246bc5024f68d7f15780b8e81cb917032ea3448c77c",
"0x2bcd6ecd21d028a8af782686b423a5491be09d311e8b8b311a76c6fa3b6e846b",
"0x2995eda96f028f0d823d390a39a08cec8844eb9ce6c8e081c573263505dbe1c",
"0x190c2382ceb77e73d72488efff7a47394c9eabaa55e913b3876f5c7425e5072",
"0x1cb68d0b5a7d1e5ec01d0604e9ada4e8b0e5d657e0c3a4b981d9a89585b5b1e4",
"0x17258254d8e0d6f925e7c0185f2098d534afb0760706557c11cc93481dd34dc",
"0x559f237de62143ce58c3f3ffc6fd45cba5c2cc03d7a5b004324a2673ff6d5b6",
"0x2d1bae8c0c7b65e609125c9900ed01b4fee0b246e1d5b40f26a321cfe962044c",
"0xbb07c4601eda15ffa0c7ed3e9b5a7331deae9260915c930d39745da694ded96",
"0x29a3328fef53e260a43f8fde8842280d1b74ed96c3233c5058fcf5748459fc26",
"0x2694a19e4af7c2b87a94dbccdd1b3ac611b1373131cd5a9d70bc7837d8f820a2"
],
[
"0x2929be9bfe3f93cd34fceae665d96b1de1afb26bcaeea2f4edc454c50cbc4401",
"0x19edbb7a983fcd768fb267d9c4a1fea3ce0b2a2b9b443f0aaa46f06e589d14b6",
"0x2c1ddb439b10a092b3971318cad5b08debe8dff603bef4532577c495be1a724e",
"0x28449718fd137470b9cf97b815c2140dd1c972ba998e2fe4822b7c0b33bbdfdc",
"0x1f0655560b2334547cb948d9d6b9b5907c788a38ef864ae0673a78094fe7ee7b",
"0x136fa4ab79c28e0be9bb475e8d02fe991a4c3e1963f8f02bd99fc08feb8af068",
"0x1145dc67ca067f540d071fef09cbb91e1d3deb8202530be3829f4a74b97c83a",
"0x2befa2b6dee51479054fd8dd18588a47a402dd5c3c4edca0c6c5fe3cac3058a5",
"0x1589963f1ad9685037a5090e0a726b46f0d68e01b41fff4e51d7a7ee3ca0384e",
"0x2e23caeb146870890855c6e35016e8fbc54757333d84d986487193341a6942b6",
"0x5749c39afeb687fbf56b6749a6d2422caa3b4a4a98b702a4958b7e4ecb2d37f",
"0x178880d1f6ff2f9b8e1ac338c92a0c8f92803e7f4c277c589d8f4d96102bd7d8",
"0x2458edb63177cd46b51ff3f5054376a76640b495d598e472877d4efb647a629f",
"0x15ac4c506f0e4516834191a3a6aa8cda30a2b3882ddc8d063ec7a9c38c4dc014",
"0x24a5f8b16d150a9683e69c3ae603931192560079eb25d141ff7c2cbaab4dc9c3"
],
[
"0x1076d439c67997c37c6c1fda9a37dc2f762dd577946f36fcfdccd7898ec67cd4",
"0x2d9c1650b528398e8d52dbc23335384e54aee2432d635c70a02d96243ca0b26f",
"0x1b2c5206d50be044598c5897e0b4b0221bd37b510a437fe5a1b4c1c69c601b6d",
"0x2edd1fa77896a64dbbfced0977e08337ee4bf613f76e8a2ce26414548b231653",
"0xcbb908762517b41e306b6909833d5a107634426f22973fe83f00b0e17f13296",
"0x24cbb3c94a026a76c045e4c6edfbb1367d256acf26d02cc09412eda7f59a7ecb",
"0xa0bd0ea059162db49db00cb2a940d57b4a174de0f3aa95507bbf8bddfe17b1",
"0x1b2b047e9e413d748553f99dd8af9b25efcc5e22d45fe891dd28f8fbc2fb5301",
"0xcb96ace8a27b43f9e6227f6712da13e1fdcf8f3f9908a3a1c26a35a05b14922",
"0x29ac01ae36569271195fe075de8ddfb4380c3a02d43d7342a1fb5117b8de2a53",
"0x42ebef9c6a4cdbd7c6cb04d45d2e0c2aaa80deaf78bc1f58ef40906cf3d0210",
"0x2e38bf07c16b3203bdbc7746fe5f9179277cca8363c860155d140ec63673791",
"0x207e9157c54acea4ef46af721cd9b2f57447ed4e87be8933f1d0b6d814d6ff2",
"0x167fda86032760fe696b4920c81f53d843f93d6dd536f230d2004eb414bffadf",
"0xfdd5ddada0b045a445aa344bc61b1ac05142e1b5641aeb7e767de15abbc9bf5"
],
[
"0x185c9ad0da87cf824624d02bec3ba4665822a0f6b3b25deff3afcc687ce1321d",
"0x99fe609dce91a41f172017be2754fe99ebf6c15cc57f31bb6f5b7d807b1f7ab",
"0xd8b8636d4598fdf5326235d176c94628e61b4e7c82e78b4e564850ca2b2375a",
"0xd65ab8a42892dbf60587c701d4ee79885301867045a954e709a0b39a96e3432",
"0x1ff952bebf30d706276910172a3cdfcafb099480002dd0fa8c68288188ffb47",
"0x1b317bd89d4ff133f75ab4d3d0b76a79ae01b0dff996cf34a725196ce703c17e",
"0x124794d78885d5936bd03ff734b5c1adac8a4a596ad9f82102c00d3a684dd7c8",
"0x24ffd623daab9fe13588a1c00b7f8c8f1ca8caa530a1c7131b466d950f2518ca",
"0x2b38ad1a7b652e9f8bf0ef32be28b745c099922eb755a34186ac9090567d8bd2",
"0x19babc734091a3be933427e66c377144245e7db110c6a2baa986003947a240ca",
"0xd0289a40cf02926cbcb2747a0e1c1518e9c4f704df6aea14276211c24086080",
"0x28bd66c5e1338f9704ff07003bfc744bccc39f7ce6c8ab5a577dc903cd264016",
"0x170f77a7b3b9caeaf5659fce45eada32edab843510f0c1c1918e78d0f6f250f3",
"0x4bf7c50eb8083a1b1aed2f2eb1e3e6ac6dac94088c526643d43fc4ffd6750bd",
"0x2cacaf80e8db29ba80807838954a59a587b839dae77fae26c3766144af1c1731"
],
[
"0x2702b1be39e91044fb73926c1104719f4c037aa4151823ceab24f0cec49f4648",
"0x13b4dec836bd9ccf38a503e625ed8e236c54e696c74637ae6a3686a805695912",
"0x1715f73ecf73e36f8e513b1cc9ab6d82c38edc2000876f5d1bae037be5c99715",
"0x133105b55e6c880ddfdf28747478b9cee5fda98c7ebb0dda7501a2798386f9f2",
"0x2c728d02ad11c999b2b9b9ea9e57d496572871e774331ae56374f238082b27ad",
"0x23ef277dfa1c0e0d94bc61cb2e8bbdcea30f4d4024531391a4c3e9cab4543b3b",
"0x16431ad5871bcae4168c2b861ef4b0b01935d119758db9aae06c00bd30db4df8",
"0x28db93b12307f5bee8a6c0b7bcca8b2305b688020740d4345fae2d04ed2505dd",
"0x21b0ef1e524d8d9ebbfc6c2c749d0ec90fae708de520385ea8bf0428508c5d5b",
"0x19d13c633e260305a71528af4eaa906ca4427977dc0c747c8a6a4503fef43e8c",
"0x23d809de14b02c1069c3e14dff538b910e484afeff400b2c1d24fb0e0099cbef",
"0x13fcf2fab4b4b66a25dac0cd517fec58f5ac1850d867be3be4aeb9854eb30efb",
"0x161967aef1a7f7907817e10adad374693d3d1f981ec444384c4db438195d4daf",
"0x1694d5ab473f9de3701a254240a02a4743ed5291b9208af4956404ddb30a4380",
"0x1c710c033318dcb32177032074580a3504f248668c7c53de567b4830f74c9ea8"
],
[
"0xaf71a51cd463b9faeda93803cdc03186c7781845252fdf4e0155709d93dd375",
"0x5fc3b1799e5b191257c7a3bc75e9fa97b164f3f4edda6ea6649c83267be51a5",
"0x1c4497521275cd86c918551760f4d35becefa8ed08036c9c18d83815a9fc7f8c",
"0x1c65c1b912286c5b2274387fa7965d6b2843b5b01b806bbfceb590da531c68eb",
"0x29d4202e4558503b0449242495fd9ad2381705256affbba80117b4c2287175f3",
"0x2933124ced84942c7077b2ac393d14464d517c7d8f1e340694ed5f1acbdff129",
"0xbd580f80ea79136a9b520cea04461da846d9f23e62277f13d6b3aa6ab108ad1",
"0x57b88d83808d3675ba199bfc5780633adfaa44c9b1e32463d66b79e1c6dff3a",
"0x3a6c87ee34cdae1ddd7982cd318362e1a278dc9cdf1cd1dd03b6c36aff836",
"0x22692fb680511799b8ceec96e7ca0e1cd21de90f94856acf334ffbe2fc262053",
"0x1d85033ba0c5dd804c5237c31ab8b09684c635b8b7578c50c246b15314926871",
"0x2b52e9a0a9a535ae05d79b8b555d461f148db269f49e38dd8ec6f8b8da106aa3",
"0x2773fcd9cd996f38297b95daab22c1e79f179f4c79fd4bf6f4abf8725ecd5032",
"0x18ad7311ad63af100808f64bdc63392bfaa0a3881ab03c3157ca8140868a70e1",
"0x19b88372c544a69321b273cc62a95b006931a64222cab4536e797e578a56305f"
],
[
"0x28667f9c7332073e293c80b98edffae01af4f67b4c52ab45e49db8b30f182d28",
"0x1d0cea849dc7409b3b26de35715b32db618691bc123cd9c4c5e6f40b4a1e49bf",
"0x161556e03e94c7156607cba64c0bb7fa00bcaa126df8afb5d42976c03b7d5e0d",
"0x419c20a2ef9d70e930629591eae4c63276c5d79d6948e98f2c37acc29f1a4aa",
"0x1d4a3584e3933abffe0977179b8c112f2cf08e409d33362df4775d1373f4d366",
"0x104bd1b4c028b287ac3fea1ecdcbabdfa6a065e9772791c3de84d945542fc206",
"0x267ef84e628bff8a9a85df724e4c32cbd3237d91bd65c43618d86502032a3694",
"0x2d361efa8fc65b03d45507cfb53549b3b26a84ac50b3593dbc052806ecf59fec",
"0x1285c484100d70c992f6b6953a9955f56957e9a17641679bdfd388b6bf60ea42",
"0xe1a46a527394539c39e9f1e4426d3188c0d9077021790734ec0126d0828fbc7",
"0xef206f21658db03fc8d5d6be5b18374247aee43b3f29b430a6fed7fa5102a84",
"0x2ac3db07d831b461f38204aa0454b1edfc1a0de5b7a6e15e49c63bc7140c3327",
"0xeeadf9b5fd85f9405991af7f4cb2bda816e5aca76103b34b891502f921d6096",
"0x2931d38792a3769da52491346c7c6f8f106c2735ef2a1ca03725396983a0049b",
"0x131154cd6dcbb9b469cd6860b861699845abcc41f428331b1d2beebba8ceb767"
],
[
"0x2763c33f5b2d7bc3a23040afbcdaf998bb13254c272a5f8635a12606a59c2e5c",
"0x27ade810ab16b1c9d9b363d48e397adfc79af3a4836ed63c650053ca057a03c0",
"0x177d3d44dd549944ff5772d4742603e163124583cfa4b673ccf1a25454ea3be2",
"0x2c0de2ff6c43c1d034459dc8458237d808fb0ed445eae2cf7e972c83f006995",
"0x27ac47846175fcaa604d687cd2ed41f2ca52905b2eefa79eaa8583ebae76291",
"0x165a3778b89cc7da792542f4c9a6dba92b85175a60d3661beb77852b238629b3",
"0x27e08a80dc448a0ea08c79c9198e57512968df40d45f08c26ac8242d126aedc0",
"0x1fd804ca6b5d2a3cc76ae1f125a0bee456764db7a553f48bb47f468f3c57a95a",
"0x174de7ca0ebe6a1290ac6a8076d51b85fe8fb4022da95a59a6e9f1fc2fbb2efb",
"0xf3deafe2fe6fbae9417eb6b144885051e5d1642e49b37469d39a6bd6cbbdbbb",
"0xecfff476860b104100ab4d0dc92d93b993024a1c0d6d50b339243e9ae67ccbb",
"0x2cee2efaf90a0e74febcd521cb5fc61304ada5f8760adc044cb684f341b646c7",
"0x140214189bf9a4001311fb36b9e5d27a3f3ceba32a457135a3c66d76e8403553",
"0x2a90f5ad074f3e239345c3d75b7081804b34fdfc2fb9f720a6448818946ee976",
"0x1c373710856290660f38b96ad9baaba487a10183260e1d06f9b9935d36e9b0b9"
],
[
"0xf81a8d8e08758e8a32aa8292666c4cb6ba3f5f06c4dcf4fc502ff97f03a85a6",
"0xc3bf8b042a0fc9b018e64d500484eeccc8086ec911012ee19a8e94c97b1f8ba",
"0x10539e3badcbe0386b58327fa5ec50e92d483bcb819b41b21dd7c54eda76a99c",
"0x308a3fa0a2d7ab2ef746509f2fb76d1a5db994586a54e9d109448f18b281b31",
"0x3ae04f50079403a7c6f13c02d0ecbbce7631eeeb2f9f284dc7c2a52fbff4770",
"0x6bf4105aeb7839b9deb71934169cc975451f8d76f834499b281eb6cd69c071f",
"0x28cd5b5220315f32a404bf919a9cd01a3082f5cf1ed6e92dd79a323bfc62df5",
"0xdb2421285ea7f5979122022c62e752e1b15c491cca462b4e71b7bb0661990cb",
"0x200d26a5d00a2c154aa75036fc4e24885f7d8e3ecdfa19beb7cc15767eb2de8b",
"0x1a1c643b8d0510676c8afea7a4c4af98432406731046ca882a497b29a7c61777",
"0x1e80c6db7632f6d64766cce10b56d0762622eba0de31b6271e95ac94cec6ef32",
"0x16c8f7d85e411d0f9ba685f0fb815c6ff517ab5463c74bb9984dfdeab8299477",
"0x20830e9933ab9c82b1d99369207399eb347fecd8d8ba430b5925038cc3295055",
"0x256a4d8167c0f602f9f3b663dbde4a7cd3d47353587b017f4f03627650b813ff",
"0x11139f7a6884d0c2efc32997248db307bbc0cba48037fc518478e9634fcc745e"
]
],
[
[
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x214e865e2eabdb9fe5d563a141ce18bb254029e0e04e59c2fecb0850b5ff572f",
"0x1e0e35883b0f1794db023f80354a83951383b62282dab4129db1d19e605c316e",
"0x5c51080a74b8d28b50b14228c6a6de8ad5397cb9a4b9c6cf86bb807cad76074",
"0x244e0857b01e7d7aa0eb2ef334fde51f16a2411abfec2c3beb6c62f7a7036217",
"0x2a04852a90b74143f3808a150e9f1371e0177a1b6e72cbcb0fb8f1ddce8a8d02",
"0x305a319725a0b7bf3def3f71517cc2bbae386b651550fe9405cec98dee21b1d6",
"0xd92a7b009466985fef388ca3d70c7e2c0c2670d2260df83659d776002843107",
"0x2a67eefc0930f82c8bc66ffad5ac09c107407814131cd645bc18cda6fff4f52e",
"0x99674734918ce9329409e50f2e9041bd072f9d827737de601f09c7ade19d35",
"0x449112125b3f10a53b2c465f2bf1183f03c13825e76d40af75da04b8137780e",
"0x2c1ee387a8c15e7dbe92032a242801d1f7b411a7e5a36bfc4fa2749a22cacca",
"0x1d687a4e31c6b3c91e67dc9d9dd9c47493c839b5e13ca1a9310e6ba011421cf7",
"0x1dc79a5d9de443db444de0f08ac67be4826d018fd86139ee9eea781f4df48939",
"0x2d5cf8172c587c0513f26105419f56319763c5cb42cf9ecb5e27d9a88c5d16c9",
"0x25bacabe48b3f030c806aa879f25241fbbb17534d686bda8f5d478662b2a5ab5"
],
[
"0x69b1779dec3eaded3f07d0c3e6cecd6cffe78d747faedad9c90665aa2d92cb3",
"0x29fb24fcfdda928bc18f54d5594a0c23bb822c277fe2bb999e04a37830c7595b",
"0xc05c2d8ee022c59521bd441aa15fa2ddf43e6ef9811b10fe9640ee5e888c388",
"0x122ca048d7c6d4b9053b59ab67650d10d22515f1365b2267c086dc7a168de657",
"0x2fbb74d7dd4ab190e6244236580314c820bbfe34045f43ce14d1ec0049afa187",
"0x2cadba86ff66600cf28005f0ac4870914118c62e110e3ae0513dedf3bd846d29",
"0x30d436b101fcfc29d67d7fc4473218360f1a52bb7316c4a080a55c0d01a709e",
"0x1041a8891a37452dae7c58396d225a87ef1985f94485bc3bb94588dd00132b2b",
"0x20e8656cb5d68cf5f5aabd0cbc2384b00cd1b65ea77b1c0495a65f3270e4d881",
"0x17107096614bacedf147ec8ba8ddbff1d99d5ec24df5495279a720144ad00dd2",
"0x2615060f9b8b7972aad3c06f80079700edc591d0e701ac424203a6a7beb5931f",
"0x1406d86f9f6ed52732899488e062f293c681767645a636d8f078dd40672e632f",
"0x47dbe55f778c815cd8c79dac7d59526dc76570fef2224a93640c98770c056cf",
"0x2dcdb0a971c5aa120c3d873cbd072083a649e903145e00829aa8202ef09be93b",
"0x2bf712452a11b06765a0d8c7f0af790527a665863294a32cfa3d762a5aca3b0c",
"0x12a68ac33549f6902b128cb376c2f52cff07f1279106386b26fde8fc49de31eb"
],
[
"0x1fa4effc83498d19aaa598b7771f88a0554dddda89d32dcf8a6f4cf776d13b99",
"0x19b1577a9e5fe67f71e733732ff6ba035dbb18d129f701a566068c4aad32165f",
"0x82f3674a3860d8034eee2f705933c2ebf23a5ebc7a3d77c46c9279df8930298",
"0x1011963b5e7be95fbbfa2848d56da05d6229a3f0292c50760027cfb98577a2fb",
"0x2ab86635f447d66ea5ef5e5339031197ae8e86b7350744069280de59d7256486",
"0x14fc3fe2445bef8547b023a1ced3ba9e137e16fb0e3645dec813cdd7e584ebc8",
"0x136afe9a53acd5e1d68cfc75c5630d39701cae3744ad5aa2aa34f735ea830703",
"0x18bef702cd3178eb4ba589b84783071cef268ed6828f70c960e379508b9ff1e2",
"0x2c5c474a63c172ea6d6a1fa8be92e4bc6891e74e87c5a65c42b61aa42a9aae4e",
"0x27e3943ac99174b2829fd8ffab17b16837fdb88a0c6060e20c3e5c72fb420f8",
"0x288a44d1afb6a92a5c7dc766d4cde4874b0f49cc3e798fc25292cd13cfc4ebda",
"0x2d255d4f28b56db356773293cbca39f6f9c06bc4cb5275839555db772a969ba6",
"0x262650e9b1667b31877c8d79a5816cae80e222df97e48b574ba91e6cb509e931",
"0x22bf34fc02aa2e215c993994c7cff2626dcb7212975f7ffcf11cd90b07808e70",
"0x14078ef63c2a106c8895143763824ffec7a868e80b89ad6aea82263b298132ed",
"0x1d16de8069581b62949f3e5bfc1188e21cbdf5d67a5bd403927da3a66f49c6b5"
],
[
"0x1676f5c07417ab54c37ec8ae1a8314bdeeb09964769881592043dffcb26bf41",
"0x286415acbcc8aba3e5b854a6a357f300ba4037eb8b7c5ef6bbac868d1b4a5635",
"0x1aef1d337ca51ca5d2c5c116a275a81a21f90d89834bd1af61b3aa6bed65c7c0",
"0x17e864b0c0ebadbd2fd4f75177b9e7fd801bf3c066464070c6527f096b0b4e9",
"0x2587c2ffb837fcc5be1b5a0d520f0f2145000b6797a9a5205ae30240af69c7a3",
"0x2ad5b37b82f9ac35848de9a7b0bed4262b3074c8047d8a4736959a21946f7db2",
"0xa32e49eccc90d7135c8c66fbb1953bed9da04400221cc606416f0db0b06930d",
"0x24e2c86170a5b4a8c95066d5f553eaaede655dba90c32e485adb53c3db9f65df",
"0x2e90955a65c11aa740e8592c94a983b542bf95bedd9bc24673647687c57a419b",
"0x11ced1dc351f0b67b8de31d678da740e5a0c4bb1e9adb04b119e8de79e908283",
"0x9de8b7bde7c2aa28539fc3f31b1f28538a766c53ca6e92a1639bf1706369482",
"0x12550c43d8d9b152c039868ca4c52f074e02f31e1834978c8b554daf43632d88",
"0x40dfc65f3133acc65a961dfc4b365d21d41b9e82cd7d65aa2a3238a3ac5b92d",
"0x12f7124beb62cae35c093ed96975ab5dfc8e00f2668c6ddba351f458127e96a6",
"0x530ae305c7c8a9ce61943baa1bfc0b2e16199a994469f41aec17cdbd7d074a5",
"0x243efe17e4617bc0c20ecb5f9bd76f48a8dd796fa1058366f55826b80aa69794"
],
[
"0x1f4e7bbc8d42779e58aa07bf54ff324b814fe687b4c8eb81b9b7e74448ee27ff",
"0x238f0b87f232229a5c7489e1c7edc9d319f816c21e6fe403ff65c60c1ca4b178",
"0x1df906bd755c6a965e2ecd7d32768ae2fd8c522dd0ddcbb002389e90f5c6a707",
"0x2da47d7b5389318990e3d6eb9f9e93eb7404439b362a0d84da24d8c715fa8bf1",
"0x17c623def2d2610588b3c5dd236ac31026a16354f29b2f8a1b0955c391701f5a",
"0x1c6c37b8caf25198a4a9cc93c559e73b7c90ca6df6ac721a2f52cee03f57221b",
"0x27feaf5bb57db47ec317018969e6e767f48d768fb138698ceb4aad474f10fb3",
"0x4e392117390c777ae93ee29db53979f4f0e168595d9dc5fec4eed18ea0e33c8",
"0xa1bf9ddee072347f46524461f66c65582c5533be183c39ebc5325c2e111eb55",
"0x23382c75620eda77c18e3d166fee7b74e30202ae8309890010849e1a79cb90db",
"0x234c33dc7c164b187746919301403d75c58237965627738d9f48d393a44829af",
"0x216ffb6e7e5316ddb852406f11331c24f717439f27d57ca15de065958ea44462",
"0x21269800c6b53df048610f35d1b344e03a0fe15f0a5b21b73c799a48e4d0721f",
"0x86ec72230cd5fc6c7842cd5eb4fd6b75c3051a915deaaeb61e9b22780579a70",
"0x2f54161c4ccd936ae2c3edc204637dc114d4d3d6d98bd9b6d8bdf603bd4b7e72",
"0xec71181ac2bd7226495ff60adb20a3c9a7636dd9faf14db5335d8c4c1ba3a06"
],
[
"0xf6b18c98fc89fbfa99a04c8c96ae5db35c296479f484b680df905d4cbd1dfa9",
"0x12567e67abc9b35af4ffb381ed3acf244a2f9019839f5f8d2f0b442f51be88",
"0x178391cf8f91a1e3b00f545a3a4a5331feafd2a0d10d9027c56954c8a3f8ebc6",
"0x2abf38b2c05989402c75ec5263e3ac75bdbe9af0c1eb92883d5cda564ecbdc37",
"0x2a2c5e5b24751e4a10e893ec2f7ab96f83a970cdf3a543b20a48357cc7ec8570",
"0xdf7d4b832373582fd4fbcdf7f3c49749f6efb59fd99f4e8fbedbc8190a0d8de",
"0x72011cfb8afcbd8b431269dd5d74aa99e795c6628dc1dcf6c2d8db003bfb436",
"0x2e369b2dc96609f8c17a592f2ce063683d148204c2912b0e53a70a3c46bfa9b5",
"0x59b27028b4f0949345ed48b3e799d1081350784e0042c994243297744e2e226",
"0x222dddba5c72cc2d12f0aa37e940a09424f6e3d679cf725bd059b4182393c08d",
"0x1d4f2427689a1dc5f1d7c68311ce5b0a56a961b3d42a746f356dd81fa147680b",
"0x2b29f8fb4f37691d3981e3fc495ee58c25ecd758d6e24c3f41e5c56221a64fd4",
"0x267bb17bba0da1b457e2fc71493f7d7b9da4ef5d13a62e525defa3d080b766bf",
"0x2e6530de833c3b1d1f5bda0c6f6a244ad8288750865136dc22bb752c8e044039",
"0x1f0b90c52358a8a14da112639c7d2ea2ff1df537b41227f4d3c9ebf7014c75e6",
"0xd9acd7178242914b81219b9a60ef7a0d6dd0fb571609e4335f8d419ff982d12"
],
[
"0xe6cd10883e1e11c6c191d36329f30eb0045af06c2d86d0c439f5c1f4fef54b",
"0x2bbfad45e5a92d2fccecc514648ba944d35abca3f6570958eda96ab2e03d8095",
"0x1f8bbb7ab0780d5bf4070ddbd1b99eecde357757f3773ce6a8a33cb6d3d6060a",
"0x2578863a750b236e5975de83fceb91727b4f588c453a94e40327a18394e835ea",
"0x28284f2eb4ef38ef729f8637df230532e3a410186dbbe5ae5497c69a7cafac78",
"0x1c535fdc7111ed734def9074724899bea8525c2571335159af33af57310a8db4",
"0x29037a8126d3d81fcaadaff1995a15f9e5113b205c2f7c2d0bc0361f06a9678d",
"0x1cc53180a2b9cfb4978339d086ed54c748a5f77190e30dc2879a76a107553e6",
"0x2fd6d01024cdac4f279edd9fb5219b414815163b384f502b615537e03cff2b25",
"0x205885190c6d00c1420074e1a4a3163c382f7193754fa5f87ddb98a393d032f0",
"0x23cf89940b6418fdbed6f84bbfe0c5f850a9ba88c41e998554a4a4123d0ae5e9",
"0x968d36ff2a38e6aeca306fe28458719e69ba1b0fc76bb561fed0f82255cba8",
"0x2c9814c96a72fb32442dbda9249a412f98a23304a86ba9848567c5b0754554d",
"0xc11ab9629bc935469b9fdb33f48f22db895f5dd5e182575b2cbbb221105fc69",
"0x2b98eb64b8642bf4f5291ffce416102088b471aac3d2f80da585b5fe1f245886",
"0x2ba9f7efe0d61c8460085cdca6c1bb78aa7bc086533f20f301e010d5099ee790"
],
[
"0x425a9641fb01558bc7170a2ffc24eb6a514198b296a1629cc284d983bca8757",
"0xd964da26287f09bc190e8235411bb9bc9068003fa6d6ee03229dde65db07fcf",
"0x289c0cb7f84d62638c2a2f37f10f30a58d8bd8b4c5bd8f5a3ca448e9c668f615",
"0x6622bf28a5fcb361e0b7bdfd7fa08717b51640d05d1f6f6ba94b50d26ddcab6",
"0x2aca8f7acb59233bc4d4df65b9c6f30479e9a72f5e6821860b39ba9dc4d03f82",
"0x1330fe288bcb4ad27de36ef48f063baa8ab30be65940592fd97623c7faed4e50",
"0x9efcc692545703bcbeb641ece624880f73a10c0d2c2e6132f9624eb5f41b1b6",
"0x2ae8d813634a87b031bb08573bdf237ab3701215b77ee9a4e6a2c01c1c1d4ffc",
"0xc2b9bb36e8ab693866b2885bd4482ed5c89f069b3e6445655d70f4d6687f8c0",
"0x1a606372725698e7d7f3a7280617fd86de9acaf98bbd8971d8ee53932c2eb6a3",
"0xa6632613bfca8afc8939b33e4912ddf18b034be621106ad695ebd5065afe00c",
"0x2479769cd60838cc140a649e8937be28ac92c71980f149caaaf0100d1f102374",
"0x1f925ba0001429fe493f48ea404a8ed283ab2cc2f3275ecfe320afe90426f462",
"0x1231fe074b771ac643d6e188f5732c209c71b768739b22447e6b5dcf499b4887",
"0xeda204f434a347cbc55ef698aefb23df064c57fcd4cd4cdd810e05ece651535",
"0x33bf863141b2b9aea2e59cf6c4faf11466700aa5c383af451d403c9c53160bd"
],
[
"0x397a7d7434b0aa941348de45aec442cd5cad2c398884950e8233c58dd50335",
"0x1495e990865f559df4c7bd6f21272b8106e2c91cbb1a9e2089922c62b2a76ca7",
"0x125496878120d9ff89d702f58154ba82158e818db90e3d12d6a08c5543536368",
"0xf8ba5444de18d199aabbc5442c1d7c01cafafc79fe095da31928d776bf984",
"0x1eeaa31dabd6b6a9efa74e4315917d902b02760a04b04eedb57e261fa2c6632a",
"0x3776a7d69106118a4d22f86060ea7db0c9c8f3ce3ccd6c88ada43ee175cc811",
"0xcef77234c42547957e950e45ad3b723735c011ef47ceee8ba422bd16759be2",
"0x1cebeac557d2337e4687501f9f71fad7ecb14ad09550b52417ac33c2e8bca21",
"0x6521b700ca47f222ea2e280f3193df67e1a5966b8cebffb01890aa3a87bb328",
"0x100a85e6da4a0b92a81f1512710c889a29c8ed3e0695bc285a71ca5617705fbf",
"0x1a6288255e7a54d4397ca40b3be72c0469bc489e66f916c1a90476816a2f791c",
"0x33125b9cf766513a8e82a0d04374ff181bfa818f67ac1c7dd4298cf32b85e76",
"0xf7e82720135b35277fc54ebdd88a026af545b745fc20449b7068c6865eac1fd",
"0xa9f28e621172d911bffad3b5ea4b73a49a959de5c86e8ac52745d558a6f588",
"0x18a93b5dbdde2e99c234253d4a49348312e58f033e87d4446945727da833c54",
"0x2237324de68d18d407db3fce2a401e8af47ea8c5bc09d862d12b8dbfd3af5f3b"
],
[
"0x1d66f208fc04411a1385c22e203dc08f0bac2f7cd9dfaccdec20d3b93252ad04",
"0x1014b540da45955bbe759dfc9ec4bdf32a99d56cd2742d269ff8691d915cf247",
"0x1720174606224668a7067c3e8c53b1ee68349144af6d6972d38c90bfa6bca639",
"0x6693893b45a40bc7366925fe7978bb80fbd5b9a3ea27c9dcb456b2b04670c4f",
"0x249c8751e7443e96c6e3b6b78d7f288e8a00c05f12597c984f8f0eb3f9c0d4f6",
"0x19afe6d81031fe1cbdff2b24eb7d691a50bd6bd8da98ef658d75171480cd664c",
"0x2034957e3fc373e94d77e0a050a8a84ba49095ffc6eb3a7776dd86940d90f01d",
"0x1d65f2f3574c1fe006df2d50fed257bb935f902970c7aae131a41f2de4b48bb7",
"0x1563bb61629e83922438cf0723716cd4daed36ae948e74c5c85dbb7e9893d645",
"0x2f10b78f744104a54a8149200cae59e443e74edab1cc3cbc2d8c170ccf2f7889",
"0x7396d51d19d94cb34b304ac606b54399e89273abb22ff7bb6b433e472ce1e8e",
"0x1cbb8fa4be4e9fdf0ec9ea67df8df2c1b796291e75db4f427c843216fe48834a",
"0x14e3a6920a412da81d917e7b9d98bba849cc165e406fb3c43ac421f9ade0c228",
"0x2a8e486afaa01aa8eeda571541d2199b55c8f5f730ca5c3879f246c227809c9c",
"0x7abc38167a01b6bc5831587de4d790de43e68e6ca9eabcb64b8af6895ad968",
"0x1e825483a9f85081590c0ba40059fea7861719e2b7da11323437313b77b6a8d"
],
[
"0xec1ed3ae3beac4ddd1fdb17b9c7c648e7ec81885a07a5bcbd967e6a3676f356",
"0x1d8385e9787d1456bda399aa4d7f5c643cfaf25d6ed60e1be9ae8b98fbede91d",
"0x2f574b85296045a2b1328f482a3ec674793ea300e0817720e6912d467df067a5",
"0x291fb174e5ee77c060615a7f5a737a57d56e2060844aedd0aa86329b9b361496",
"0x2362c38ea538ee898a12c6458c399d2870bdd8826307d56f03bb28e0e30d09f",
"0x231713410ae9a8da08284c29b8b975410dab6f84f56475da37711345e68d5e2d",
"0x2ef69fc1a737db3abc895f656811e59e7d873355b2e1342aa5134d8bf702ac90",
"0xefb60fb18584fc86d88ee569da71046f765526b11f6c20099a6dcdfeebc4f70",
"0xb044ec6d148637a47f917944f81e9c8b83b0c0c5ca1bd3462a4e0daa7703dac",
"0x202678e431648172713afaabe2c8ea148061205c639f639b5e45d498be1550d7",
"0x2a1e1954e5b010440c1679719e5a0db27c0aa7957b755ecf2c9b3571a8aa0a0d",
"0x154d9e7b0dc8fa67c82016fc687836f61284431fc9d681405edfb38ccf28a6fc",
"0x2a704d1d93253cb1096070fbf26d4df2baf4d92057d87596cadd063176267917",
"0x2a24d4dfd6e9d6435e4ca1994ca11ad7adba2924b6ab7cf7c6a9ef5e7ef9ae21",
"0x1688b9a9cbc3a63df3a2a35c6923aa0949816cb57fefa6e95d7627b7663a6317",
"0x1d1caa8449da721f7c949ccdc38ec8c6134d97d7bbcdf58fa3c471c51a672ac"
],
[
"0xb3e601e36a5d82e0214362c8419474dc1cc2c0ed8126534d69a3f790b27c603",
"0xe6b936ecb8a59274624533d03746cd5d266e6c5490d3c95ada22f4a22e80e32",
"0xd56cdd730e1401d9d7f93da88d6f3bfb8eb1fba440c552b078bb38a7cba55b2",
"0x12c0b93d829ff5b9641d9f6f2ddb4f92c7a7b147b794139bce98ad87d680d717",
"0x2de07475e19762eb5baccae3e88aa1493d35d276c4d05c670697b43824a41640",
"0x2ea094a22ee4755e5df8352b2ac671e231c24785db343b9145f9e44297b361ac",
"0x2ab4682e32feba55370b3a477ad83f30c88db387bb20c6a9b2e567f5d60a4a73",
"0x1a70ee4fd1e45c498e771e9d0210dd14145cc2740c3607e044e3c68b6a6017d4",
"0x20a815e19a6198e3a2f8a8bc2631c552521182f63e125477cf765a27707035a1",
"0x266fe05c631b74ae1cceb24143a96e0e9fff59304f04fedcf4db3da13508578",
"0x190dd58a88fdd887a0ca830681aca5949ea89050fab84b66297d7d14dcb91a74",
"0x1ae686eecd7623655c55154aa8c5c82136eb56020fb8d1199aff5c8bc11eb0c0",
"0x20ad4678ee812d96e544ff8e5e65d4fb7bf15cc6a524e6f19de6af983c997b03",
"0x2caf670c84f98b68d05f4ee672a1388306376e7886e30bd2b163bfa7fc15b443",
"0x1a336a86dd0b3325933238a53bf68f21ff35e9569fef12cbb61d8ab9c1f50ae6",
"0xe5fc7c1d17854a0673479d4589da85e6e61f48cc950b3cc531564ce5fca874f"
],
[
"0x163cb4e3a5ec92e57b25b095a3aaa8cfdc4ce59267718cc6090a07e14af10b0d",
"0x19853b1669534b82fee656f037c33af733bed785ab726b0825dee79b629b9706",
"0x1b164a2238c5e107696834ac58de1b21e49a366ff6307159dd461a3dd40c2f53",
"0x2923c2a5464dc991733e46124db74c405e32b3fd9dfb2acb7d889b19a340ce9c",
"0x2fa1a6b0c6b0e9d686ad60801c72955c1ac256d23c545152efa81dca6fe1480e",
"0x27cf8750197630022efad9203e63aea2f195315a1d065a36894a5bed32bc8941",
"0x23f9c83f88ce7c78d0c6cb8059fb86c2110c7c266778ba8169b665dafd9de184",
"0x1d3ce51d11885aacc9a7a3b9fd2813e7ed602b33d3339fbd91bb869c6881ad73",
"0x293f18aa77d8372bc9ca53668a9870de638a706734631c21edaddb20c4a6b85e",
"0x197b9d069564454b7f26166ee1614896f153ed11f6215f06951b834c4da38045",
"0x131c5cce643d2b8d9d294b32abf2c9010ec622bad6f1181e4dadba9545684bf3",
"0x2556b61b7729a527f2c01544abc585ad6da9c92b3df9121f37bb0fd0c03d2cd1",
"0x5a0d89380a2a2a14acb860c3bf32ab6b3c973d84b0d61a308ca73257c19cdb1",
"0x24785c81f63404b46126436afb27fd2340122e9a98a58c467ff14abb5a90241e",
"0x9fdc6f6ceaf2566ee3a618ac4d77e86327ef278b968013e33f0813190472b31",
"0x2afc8316618c153350f4ba229e3382245c1399b2ee4aca25580229fc237f94e"
],
[
"0x2dca90f3e5a15b29895f48d7a1290d7a33646b89620dd0a8ccde3aa3a51d41cb",
"0x1ac11195f74d7fde657d093a313171f0bc3cfe2fb965e5c352900faac25305e5",
"0x28fae6efd55d9648b0d9dd3b8c6e928c11a5941dd6ec235a9014c6dd35ad315a",
"0x12e496bb2680b7d14ebabfb8797e9c6bbac68a40c8b8fd65b5dfb18e38c99680",
"0x190489ef4eb4182eca51332b895875d6ccb7dd060aa364c1d289e2e1a7741119",
"0x15776583d7d261c6e8b338c3b3fa4323abde66ed0f477d0355119c9ff5482eb8",
"0x1370c01789f712284290ef1cffc5d33288fb504c5763d2801852b960ab98afe0",
"0x786ebb71e920bd16e3ddfdeb748e040b7f1b1a0f04967f55210bae2f76bccf2",
"0x15d4d2c713cf58f480500c6e5916f52b6ea1ac070771b0c83a6fa17cf6c9b904",
"0xfab2ea8e500aed64630a51f8bf9ebf040073e23a3cf189638656d6dd1af86bb",
"0x1338a1a447a9df2fde50aa09745ed3bf09e32e4ff2caea1b3b736a666c715014",
"0x59df1b1e661d317d01a513fc7dfbbd80c9192d33adc60602b0b0b9d45e08535",
"0x2f840b4ac5c9227c0a648693878cf37e955a037877bd5e5ccbd8efcfa38466c5",
"0x844b5753fd61108fd7fb8a707e770af891ec99da9d5df68b013a3a87599ff7e",
"0x2049ee37129926ecd6ff3a08e0632a007ccaadafd0d402a409561a2ce095b52",
"0x1f6570fb39247442fc03a5139944567ea46f6f534a0214b611fd3b2d3b878369"
],
[
"0x2c78ee5ea16d38f0beb9dc0733c4bb1893cb33ff671b737a1122d64f729cff22",
"0x350e8d2eed84802dfd14d7878b0b77cd9077778c41ff7733d2ce688961a4b30",
"0x2aee7c9d86aeb8744b9d3bd7cec5c292e1c65cb633de0afc101e9d6fd2a36d5",
"0x16ba6796332fb56050e3fc4111f320cc05255c292f34db71e816440fcc452baf",
"0x14ae46529aa1f2b79da80878382a86338323f6a293adbd91cd58270513f4b693",
"0xcf33eddfc73e29bbd785035283f6e805133bf1e34bb9e3cc2f915e06b272e27",
"0x28f704162c3bd521df847d4a8a4f75439e668ef7816a91103158619fd52e5ee",
"0x1c207d7a9081da93b7375312e4ea754523d9198c501f65638f5af885708d23ae",
"0x1cc29ba8eed43aa2f71831b62eca71c1a46ab68007777679aaa8d6121faa5b55",
"0xb39596ec65e453830650f8dd87d0fe8abc96cb59636252e27797920e06b6a2",
"0x162ceb46008b073da8c811a25a68b56da01182fb893ae1c6b03d310ac8944fb5",
"0x1f2526ae9adfccd223ab57e9de7e50f5d3ee83284a8d62a5e40148f4dceafab8",
"0x28ff311d4a44251feee051511cac4832e177edc8a03053e133d206e9f6704f9a",
"0x1c362078a104c738bf6c5fda0edf9ce2cac3b21eb2779e734d14d7276a8e5267",
"0x4458b88b13af0f9d45c2b43df72abe53d6e9b56fafb1d0c15cd45a13d33b05e",
"0x23897eb294a5fa4f300110fb96ec236f8c0e049f29da5078d1224337e256e703"
],
[
"0x2af324ec4f9e7786dcf00439c75a294bff753e3292bbf62e66471fa730f19c79",
"0x11930ca8a8841441dd799a0e3e78e1a949f05bf99603b382ff771021770f92d3",
"0x1bd210b6e6c2074d94d9f310d6906e81890175e675cc8dd659c287438a08cc4a",
"0x14bb891ffdff2ba6b222332764a72059404e581f328265eafce4faee0637c6cf",
"0xfa8399ba775a9e98ea3fc29231e1ae7177dd8f63c616ed4f4819f0db982aae3",
"0x17749627adaf3ea1f31f149cb0fdb032b9c2f17c262aefa35ec1d516e577e6d3",
"0x17a14cbbc6c3e70e50145daab58ccda20416fa7a0b0564056e0366be14d9754a",
"0x1ff273747279cce54284fbfbb61bbd04f403afba107507f76812a645fa9fb774",
"0x20edba75b3695a0f934c68c90d4ef19ccf1d8b1e3042d32362b5238b10deb274",
"0x26852fe3fdad04b05eaab62ab7fe15fcfa55e0340534e28e2d8a3d8181b1c859",
"0xbb7167ac0c34acc1d3e0b83212f50e3360eb4e967004da532861a8bb527ab66",
"0x957401bb640d15d04d93e3ce3756b5f06f9869e51076b13d42a53be28a36b5a",
"0x4d4b72c6c7a5922a3c9ab0b0154d7b12c45e50f8a237a930802e4c64cc7163c",
"0x38fd3c972d8ed7705ffbf9d462381628ab654b76aedf4f4bb29a2fc6c922cbc",
"0x98ff2fb46bfa9b48439294ce85ad25768cde5510c85175e073f1414a65e4ea0",
"0xc872f10e24c0b992944862abd52152c0faa0aa508afb99a6e9a3d2d363a5c1e"
]
],
[
[
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x197fc9fb21309218eb702b935044146cd33407ed33291cc599340b271c399668",
"0xe8ab972df74eec491e4b8c416b4a97c3fe65a38d4e76093ebed05ff3e7d750f",
"0x17af7102238531c988dc665323d3e3348ca13eff7d006be181cfca573bd77e79",
"0x1b0b5e35d65981e836663ab49379580a659e1dda0d8c49c189b8078bcfdd3f0d",
"0x1aa303c6d0552d6fa013df27f7f4aa907d10da9cb9e0881ef2db7ec1a74abbf5",
"0xf4eea81fe11aa323228b430a2f9021e2639d66596b3821e131cd8fd5fafa0a7",
"0x1b47097a86346051d2d42d6810ee8f3fa3b992b90c009040095fe8357b6be24f",
"0x77cdf97e2049e1764e7169aa4ec11ed314badde9e84218bcff380ffebe45382",
"0xb4d6879a54ebc4b74422f70789c1b7a47694f6bc0f88624ad0141721a89f73b",
"0x14ba91f29fb5987a1d3dcab55e35edd10de3acf4199d877b5c6623b5a6ef8d9b",
"0x1fabc01bf1091b88001e832b7ecaee26e5eb867f85b8f1c083832b1db57537a0",
"0xb4d4c2920ec03187d1ff531b4cc1b879c7321315d7aeac09b53bad9439ec93",
"0x2191792ed6ddd6c3ea8ae009cfd1174fb9efc01482488c101502e34db953815f",
"0x162b05a1204ae66ca80d0a89e10426ee4d757f9b34ccf08c1aac697c55245980",
"0x251575500ce3526f4b190061361eb2576591f9ef2f0a7ff9a7005efc3c71263c",
"0x4384592e42ace8c8014f728704ad93695e50a16c5199d5815e00ce818ed8081"
],
[
"0x1440dc2578f44694d18c25f892d98c23cfdb87a772200020e897823d4bc84d3b",
"0x2ff15351b14d1b852edfd01a8ef108ab001a10c8d66e887daf1817a315289259",
"0x2fdcdec10d3354953fa9ca8769a3799d001626bb715f19a97e772f2ba1abc421",
"0x146deec0773f075175a208469afb87199d1b063c994b98125db22e85844fb455",
"0x20f00881fb533be89b9246780df72a26ecb103c554b9b6fb17844fddccb235f7",
"0xb419e6fc9348d7c69dc15b49fa148232740635cf2e39904cb5bf7e4e1c85292",
"0xc6321d9f04dfd91a4fc850ab7d1f7fa66de38d67faac26599ac62c80784319",
"0x12784ae3aa761f38e035e7ee5f21242e28df65235da8599d80a93646dfdcbe9",
"0x1e09ddd18fdc3c46c7b2aaf6cfd942c62720cd1630b63dca72b42b4a6409c5a2",
"0x2a71a3a65e49942b825245aa127bac8dde2a6fca570c8365d3251b146dcd078c",
"0x197d178b0f91d12bfaef18f402635554efba7da59bf45f6daaf3eeba444c3bc1",
"0xcf6927b15b1b9df1656581cabd0909b7ee2f1dca0258e183b07b030b5db3320",
"0x284151191b230312298ca0d1cc6fbf122b435f7e8de25d9d1927322b0b5a84f7",
"0xcb8f5333099700c6d37c787c67bf7fa6ad5e35c32fc1a539a8df57b910257ca",
"0x15d5a61db8e06697df1da0f06916eb32d90e86ddc53d177abbc7ccc86f14188",
"0x2a9b60e4ae169f3d5fcb4bdd705d89e0a9361e239bc3417c30a42ce645e76d6b",
"0x883b0b606695b0c96a67ccf221ab0169eba895363e66ca88425ce3700c0e7d4"
],
[
"0x23aeeb0c6499b84bfc32ae3c42df9728798fd2ef774f1518b870bc57d1385900",
"0x101e7e35808991e8cdb0627796f331b89f2646cf0263924aa6003460b351a940",
"0x2bb568a99f55bea84bbf76dbf0f54d5f1331ffa1f62d686f3709a56662e51931",
"0xceed1b75b2f6ef1438b751e8ad4dea24f1a20f1d9a23589772db49baf9932f5",
"0x2af501312e1b653155ec7f8e0e59649b2d078f5ce5121be83fa716e1b5dab2be",
"0x152fdbabfe1a0ded6e2ba5497e140ecd1dbc9fa8df6705237fc8c764317ac751",
"0xdf66c437cbccd268bdc448cbb706f4b179ba223b6bb87a921094257baf2b69d",
"0x15e5521c580b9faa337d9ba06514ac965c373a2e604305b8efb0aad802e72a21",
"0x9a09a903ce4f69ab99dd47c16087feca6fc2126ebc4cfd8def7a0253303f866",
"0x2bb52dc2028e9887b2a82271ac46f7800dd147e706370ee5edb35b9550cf71b2",
"0x9bf3d01f97e22646505f76fdd396b026bc8bcba0e0522ed2ba3079d301fdd88",
"0x26b72c368b0bd0103cb7dcca08e68b4446ee788ef6114f6ba899202f1f19b5b1",
"0x2bcbae8d5471d562e885b4b185b56ae0fe11ca5bf5461a1e0a41205568525f43",
"0x805d6862cafcf5030ab30262a01f2c65b2b7312ac9279baed50c177516bd0dd",
"0x2b8b1aa994b54ee5617766dc812d15d3cabf187d8db4ab8da85130f73f01e746",
"0x1fed5b75b01e9f4af01ebd30a6f355e8b2cd88f19e49892a19403a895fcf284d",
"0x17ee0034bef77cbb115fdd75be9880008af568ed633eb7b2abdf8361c4357500"
],
[
"0x1ed9d3e9276acb7b4dae53eba148806fd9bb07b2dd06187212fab7dcbe63d72c",
"0x2c05638ae2f83e73ac9b1bac220509e30ff5757342ccad17261a4c30e3bc634b",
"0xf1fa08e424e4691c66bf0a524b81e886da234ba5bbf78cc168c8a13353c9654",
"0x1ee32a96f8d3e8fde8ffba0fcd72859847861b8143052e212bb56b103f6f742d",
"0x20192d8adf841e5dc110994238180267954de29c8953738ae196447acb182a7a",
"0x2419a609a380157d9f6c6e64ae2cfb6e4b39e0d6ec0661b546c1552a620f19c8",
"0x3ce58f147c681728f2a2af586144d470e2231e80161f97200b7aa6d624b8bf9",
"0x12aba963e415f9bbc95c5f1ca8affd59b6c6b03fcccdccb417a9d89a4eebfb32",
"0x167f26eedae299f0e56157c8c7fdda1ecb48f90e553ecdbd4ef35b92ef9f39f9",
"0x486a139560dd70e9054321196ddb973e7db09350cdacde3c1c7817fd2b8a46d",
"0x1e4a632c34dad41873c541c5caeda02bf58f2127994bca0b0780bceae409256d",
"0xa471e606e256e387d5e44d8de55dcdd833b364baf00a694b52e3c10f21f814c",
"0xc52f1224066c212a3667bb2beeda181ea00294c5aab9348e5a71d696c8fcd20",
"0x1b2e51bf0afc16188b7ec633248eacbdc550f592c742edc91b204d49dfac42a1",
"0x25da91e9be50e3762edb77a90706df802461c374a7b90fb2ac018930f3b23518",
"0x29db9bd9f3940384f177d7634721451ddd0c6a868fd047161c2358e9c305ad24",
"0x7062de34f5c74ad5822948fb7c476255fd03a13d9d8781262712946db22156"
],
[
"0x2ff57f3f7e95b03411db790a86647467581197124d217520ef2e6332a5b35185",
"0x27ca7b8c33207e75a42cba1237e0c568d3b31f475424d23a9fd0ba6ef188df9c",
"0x1b6aeec49e5936a23d2182de5ca78ca56d4ffe8589d3e77d07a34692a7c5b44c",
"0x5e94c1b81bbe16e77c7fd2db254949046cb85834c34e0d8986bff72ed22f6f0",
"0x24a01b8801b2865c3a3d20b6f31df95350f5caa9ea158b3ac240ceb81c8f6cda",
"0x18c647eabc6fb45dec61bdf9007f83863fb6b7827b23437e10e49baf8e835ca5",
"0x523cbdc5787c220da27bcd517d57bf3b31cff9e4e2e97299d44d9f838d96465",
"0x1799989ebc4fbcb84e487b4e42f0e4500c309c2d90e740d03f8f9bceda208616",
"0x254d90f21c923e30fcb471688f64a6115f0f4340b744c5d732a077f5fd6b46aa",
"0x10d8f1c90a94db10a7b730d8c21c69e793cc985e1ef2c62b8815e65c5fa91962",
"0x1032ccd20d4ed4502df7faae0b2d9bf2c5368304a24611597d7651733053ce46",
"0x39bed2152c1cc38fd8a0addd226c2b5d53097f83d826f7e9b9a3556a32c8001",
"0x261d68c368aeeefc167d6b3e2d22be484231b5b800b51394133c7baeef2f879a",
"0x28893305254197bef603078e333db361dec1a7775813bd95d39e386729cc665",
"0x2f570c80d99ea49bbd76c199e961db6bf59ba6e0a47683923716f9e10e913221",
"0x2318f3a1f9ef5c6326960014e622db56d8adfc885e3d0bc2d06e86ec07b156c4",
"0x7946f795fb6251bbe041138607f0ee6e1243dca71d592cad53f634dffd91ccf"
],
[
"0x15faefbf8584a38969b4a719ffe5f02c2191a8cceda0b775162203d30b80208b",
"0x1dd8c52fbcd6e06ceddbc122ffcc656e4c28ae2e88b94da79f3a276bf5fe2acf",
"0x2915408b3b7c2cf127999ef3a84a0a5c2de70e75bcb06ebac67c73ad36cd7153",
"0x2e655f7e6277f2147665a414632eb3a418acd90f6a29748e4249f6713d54007e",
"0xe0dedcb898406ec36e1ad2e3992b99c8b457ccaba2105b4436ba840e89bf0d0",
"0x270a85dcfc9c8f202cdca355246fd989551495ec57f8b6533342e3af8a1e6d85",
"0x494b4c62731baf8f3338f2cc0dd934f82606e768f563a755cc501504a50a9c6",
"0x17061fdaa032097e06c003d9d719d29df4c30109d6fb86def324435e8176bbe",
"0xf9e56a5af5386c4884ca7d0e7792a22d3b96a801f3e8e79a6ac6578c1ee0a75",
"0x24a746819bb8574eed44e23319cefdd09c0e8c2dd1ce6924a63ffae59eb1a905",
"0x703bfec7b532b9135f72a794d9e3a3c6ff665c08d590677026a06cda66055e9",
"0x21bf1e826a3e2141ad2cd0c6b286146b530927f0ddca59fa78d06a36564b7a3f",
"0x2f678070c83d71945038501c74ba5968b131939a6af6edb297de5f345e6692e5",
"0x1c30abb88b3fb7fff8e97da6107209d608fbd9f2db97e61d74dff19d3e36f3bd",
"0x2a14fabf9e37f4497914de5868daa628ef3347a611f675d94ef67fc317e28328",
"0x9ea8d820c4e6ee47a4fcbfba19cd94e915de9dda25afd1399c921b1b7666854",
"0x106d7b2ded46945b3901ef651245d519ae93b8d2eea8160970ed07fcb6f58015"
],
[
"0x1e6eaab1191593de0d89cbb2399ab8aa955d829ad959428cd539be30b72fde9c",
"0x12f17c280efa40df0fafdb7148d7ae86b6401f823e47854b7f11c0a87ff00bf5",
"0x2fd97c7d4e331e328d3eda047a68a64f7cac867b6bd3795e2932f350644374a4",
"0x2c1c8f60b63e8cbba016d475ba0483d001c70653c1ebc256c51e18975371cf08",
"0xfb2d646b505c61dc54f56fe9de66641c6797e59e860528aeb52867aabafc2fe",
"0x1a44835e3e9620a13fdc072c1212e942ee95e683d6c07ef097527bc10616c622",
"0x192e49c626530d5965c53dc6e4209856d71226aa5021b9eaaa1784044c8baaab",
"0x80fa9dddf985137bcfe965068449cb6eb36b1ddb1706d8632864e954f5ac59",
"0xff1355d96389f7c74b274950b3f70a3d74bbfe992860c7ba6d9066e59260c30",
"0x237f4f3d794bd3a23cc52c74e0ee10dca1d4edd90a3a519af54944ac91deacc5",
"0x1c94985507159d367f2aa5a1a04857bd44d205ef8439b844386b025976646bd2",
"0x286fb15e9ab4224c0319add3a16b8c82dc71931fe3be2f4b3ff0289a5319c4ac",
"0x236262438ed3acbbf4bd56c39d12be65fdc0126562bcd5468a49da6ba33fc9aa",
"0xf695879295d610d1edb0da7c3fa43c3633e2d02d2e6af6799a2da41e41c3687",
"0x22949d27c373e4447e9814d6f189d064b3b092b4480f8d21c8c12342a956cda6",
"0xbe0a5f05b6f2deb2fb6bf836805d52d9ad224e8bb8af6e0ffb194a49ce026f3",
"0x3070888a62ededfae0d72f144b8ab370f8a54c52597db33d98c24edf1daba0d"
],
[
"0x2a3bb020c8a50d310ef5b5c77cc408b077fe2481454754c4568ff668fe5f0974",
"0x1399820ddf4829a24bfacbe47f56b793117f599efdfcf9e042bd5780fabc29c4",
"0x2303c2e89a14828a19a9f75d97f17fe08b6282fbc090e6dd69a4d780032624b6",
"0x1f7a5f8fd30b1f9d7f5855c084e8995367889a1a076da17859cdbbfc8301afc9",
"0x14f79e9e9c5998e8cbf5a2f1de18ca7707f5627b5637dcd962725f8ea1804d3c",
"0x10199cfd4b1cca1f0cadacfcb429b44bcf83e13ccc098d908163aeaa1cf5a9a",
"0x34459376fe4246c7ca6f298180c2150367ec05ede0dafdc4806d34e44c180fc",
"0x2933eb342796a75af7e1dc15c04904b5f68bb56ac0478a85233a588509edae0e",
"0xed494f6fb5598ab0a0a7c655890ddf4a7c0684f24522d2af98dbeb0204791e3",
"0x228e31df905565ece7246c261aa5b700f60f6ddd5d7c249264748ab3e521a20d",
"0xd36f7669a52260da523b388c608dc283f107e9578e0bcbe1e3d4201b6d5bfc",
"0x2ee63ea38cc2cee0e08789581cb31eee9b112dd61e4032a8beebedceb6aaafe3",
"0x2be13746d4b19b770fe382bc7e7a56e805c1ade0c9236e3e28f90a5fa874296e",
"0x916249fbbb750e41ce6f9475e6cf6337ca4ace63f7a4a377c14fda9c7b205ad",
"0x17855df635fe8e7fc7919412106e9852ecc57aa0b759b490cfc4773078016f53",
"0xebb48f5378773ec048ac3eb5c84d44cb2585583ce45ff30a93721d70f289d0c",
"0x33106bbde7d027db2f728b2563a62d3d6f8a02ae114bfb8a2593c6a2fc15524"
],
[
"0x51f815c454b6015c7ebf90c297b90e9604cd36acc6af07f99b5e51fdeb32234",
"0xa44004794fbddceeac78010d88b2146984c75553cec26164754d72598358b37",
"0x22423aac5a0b511923d747148e091d1945c252a77e51bcc62ee173c5483f80ab",
"0x1e14c0a17f23e94ac435bb7f629c6c0ab66fca8c4db085fc56be0ad9da545827",
"0x1958d6547accfb884d50229a4fd5b234a377f5c671fb865170d0a393680ba3de",
"0x14bcc6d4b8326e66b453691e5c948a80a618b4f7ecdc3a380478d43dd4075ab8",
"0x193025256b9871e2afebc966ed68f38d2f906a4870652805e4246353f567c5bb",
"0x1e4200bffb9ca4e47bb270a09e8fd994093dbd4805c4cc15185ced28ff872e10",
"0x1d1fa5a83742eb9bb853197f56a4732625b2474e7aadb9311dfbdc0f41ac61be",
"0x2d650daa87c7e1c09b53b10595bab1e14c32a67142092876c57b4ba68efafd51",
"0x33319bd5b5247a3cb7f63dae46dbd8136f3f3a9b4aa0a232309070d718f7d47",
"0x26e56b19e55c9bb5df436c13eb6deffab5059804552442370be53a951b0a9e22",
"0x1a0f0930bbea65ad095174ed8aaeaa84628d35471bdad37bdd624d2eedb6bf14",
"0x297921088a94bfeeea233c91483a21bc59982034e0c8738c6526cd44f9a11306",
"0x1082b0f264c61f37b71fad404cbc0207f809cf8002a7e39c0290d88a48120356",
"0x25cc52901aebcb35f9ce47457bbc4507bba219c88a5bd1229f6dc46c503c769e",
"0x2ae1b5b3e89117e08bb7385e0b711de334e8fdcbb50ea4bb3718d5e1a0bc8075"
],
[
"0x28b75c2ac167fdf184725317c7bbb8083e5ac5bba937bcfa6cefcb69e4048bf0",
"0x4eb2ffac1de16288f52a4b74101cb73d53addd56bbed326bec180ed2363c224",
"0x2bd52a360f3328d5c98a6b2de15df151e997cc92c2c72e542819e317c0ee1d2c",
"0xff14782906fd866584bb5e93cd18678c22e320ddc66d6fe0e917e18de1094f7",
"0xa4a053ffb41f84af21407c6151dc5496a9651a519e317664ecdedb017e3c50a",
"0x19dfcf535e723327add95d36e7276afb472408699d7212f34abe32f808b4d292",
"0x155dd9ca7898b0559b3e407149e6dd64bed6f9811d59b1ceca7486a110ec99aa",
"0x2d9c5bcd84c97759e28dbfdbe9fce6b3c1cc7cbc9a2e35f2ce8a8bdc80a3154b",
"0x1ff3d01d32a70fa0911119ebbcb4bcfc1b4fc30b2ec2298832f5da4dce3d7a4e",
"0x44ce295745ded1737be0bf68729d669efc18e7e9b55e6ef65f895e2f9e95056",
"0x117377429e138736228d8762c8c6567a936980b7c043882adad3951b9986859a",
"0x39c17d50605261dabc76676120b2b889ae504138ba722976d8dc822bd1af974",
"0x2a6f067cfc9dc40850f552ab42d6c096da045f8039453d7a9e028c39f2f1377c",
"0x1d7e961151f8a1d1f6092f102a7c911194618a3bae9ef78de349a99ee05ef476",
"0x20431e5d3bcff4bd90372a1eb637c04536317a81b02b48b5a3ae45a4e8380527",
"0x116b0dcbc35fae766914fc09cfc359051f626100151eeb2a762d7a0738132a30",
"0xab340604e81eb37a5dcbf1e7d5ffde8f2221d60b382d43cf75a0f1360ea5c72"
],
[
"0x23af324599683d9b71b61d093d63dcbbd97e44957333d2697fdd060c1e4b585",
"0xb11660056e02d7f845b79d49bfbb685555febb54eaa503d987ca5299521d16d",
"0x1f209382e3fcb44eb1b1c03dc2be195b3f92faa9c1ae1a0b57c4df69e7a53d51",
"0x22e25afcf23ec18a36471d593ebc8d93372315cd666db66bf398f7730285f9ae",
"0x18eaff4c9d5d00d3483d7b0c74551a4487c452cf672e6a74ca397be38f5d793f",
"0x1ebb9f7b5f7f0c553b03552d104693515ccc17529c6c1a462c0c24473630f678",
"0x1212ba1ac3bfe0c08096c503be351bbaea92aa3d3f6c264b73c7ceda7f8bd721",
"0x2f0256f9b47269790f3f2b46a7ef2536d8661dae60d50a61bab58346e83885c0",
"0x1b6a8442e48b709797a514e36c1f86b13a413eb1f7fef458887833ef4b482124",
"0xc96e617f36391cc516eb3631eb8a18d4dd10d17135bd93f450ef6ae2a945117",
"0xed9dc15c9f4a60f8150e367ba71a4a37a9cb50c9031194f55850a1e5e325911",
"0x2b8b201e13900e638685cdb4d07c110a8f8e8d500cee83566aa733621cc20235",
"0x23bf4e044f678ba1fef62ce070897d6373914ee936f92a2f4d5e09890e238e34",
"0x22c93d459ac5db54f2b6a4f267b5f049b976a93d006b88a98a5fc0ea39f53a72",
"0x1a54b0b47d98fe83acc4dfaf83b8bf7d972684923d5c7dcea9894b6a07d934ab",
"0x22ccb3842b2d75a33b65465a5dcece6870afabb3e3401faeb6504de406348a23",
"0x1e9abeacdd2ff75cca093b6d8826a46d8d2c05e30d1d3995da76a4a8ca9d2824"
],
[
"0x5a07868a7c95f50a015879fe7cdf1eb6c317e4d489d4515208ddf40a32329ea",
"0x28c53ca5db5ceccab548d154ea6071e47ca73b6cd4fda7e423403cb684d3070e",
"0x651a487e9ef91d9c4fd75178dc57aa1f76edf56c4c5c2ba6ea7c6d919e91440",
"0x16d216f97bdea9f8b01025cb47acd5d03e8469dc6b558a235a23d2ba8773c71e",
"0x2c8a5c7f394b071d0f329d51e451c8738f896a2b8f87c6eb3eaaec71ce1cf71c",
"0x132175ccda95488f348ba37b6c3641dfbca9e4247ec43977e279f844330cb694",
"0x28eba78439ba284229de2b1c6124fdde36323fc82805988501337a3b48aea040",
"0x140f550b1cfe4079f7c44efcca6515f70a9ea190d2cb4a2cf116719737b15621",
"0x1fa08142c4cf49ceb13532ff6f1c453f9ac4035d8ec5514f4f3b52c3dea9bb0e",
"0x592cf45e5a2dd382f1c6ecb059c99232e2b52bac5475c10b6669698cae88827",
"0x2897ccf4f75df225ab5b1c79de477945b24f2ea127c5cbb37954370505957a31",
"0x288ec4309c81a0d2ecf16c037706ea4d526d717285ae02da008d14cb8ea23ec2",
"0x12bd882b0d8af801ae2579a884b11f80f1ba15f48741f61609466bf04f68cefb",
"0x2bbaca431e1d464281a1e6f483cb4e9b2002d0a0ba1fa70b60c1bececddb1e79",
"0x173087cac123e07a0324ea3c2231cca859d7e4d112c8e2f4dc9249551c941007",
"0xbabc1aa6aa0d7b234fe81651f7b6d616607fa766534d5baee6f63bf02995fed",
"0x233f5274aab1d107af4bf7f2b7f4d57d8ee0936005a3525549cbfc75697ca640"
],
[
"0x2c5b4a65bc55ac5fbeebde53ce5fa68882faed2a92a7b3f5732832c72f7f2c30",
"0x17d5e7e1862b3708cba3d41c556b070da60b73fc3ef198227f2dad5b202d5c9a",
"0x1d7ef8564a9ac7dce945477d529ace63481ace463a86cbdc1140645ed57d0b3b",
"0x1edca4960596d41548199aee6040d39d814e4562492a070730982f9755615117",
"0x258655ae996ae6e4deba6fecf1190c2afbfc1dbe82454558a18bdc9819442f05",
"0x279a42b218cc556132ecaf5666c04e89984f5ffba4225281d3261a48bec6eab9",
"0x24605ce4aaa33a0bbc08d586cafd70bcf4c635bedcf98afc3fb0dd32909e8ff",
"0x292481a792f2dd4979b04822d73eec02e90c1e4ea42ca5414989ba04c31529c0",
"0x19f8effcd417b79016b57398a7bab72f946e75d8628f569f327df5c6832907a1",
"0x279c71db7cc16b9c726b934545c2fdb75d956d16f89210aedfd7dbb4f1d9ecfe",
"0x16f4afc47a61df3374a702f2800a3a39fb4450a9f92e11e240cc6d76c252de41",
"0x1ba7d8b083eb0e83cf9178efe8514e612a5d3905cb9e4279b1c09ae53e8cf23a",
"0xa1e2e12a51722b6e0acb9705c443d148b1334dd897185eedd4c4e87170e42c3",
"0x1d6b7bb51eb9ba719799096e5e0c1aaa594456cbf08b2bf9a479279f7524d3f",
"0x1129fb969355253e7cb31fa942978db34b7ccd3bc0d0cd02ba6a49e159d1cc7",
"0x23e3f31479550cb197235af10741c376d326f85881d1f1076882c928212f8b9a",
"0x1ac5a27a1a2ea0d7035f74d3a9b54b671e58711d79c87b56d32e40983b62c8d5"
],
[
"0x173f895e472c4eb16a2aff3b8e0417fb32b83eb1e3233471c76a0550505d0607",
"0x500a676c5cd159e6351ef8d2b567646fb4d4c61d3c0b828ec201d4f425991ce",
"0x1aba42213aa1f15e7550ca941d9bc485e195ac204c5036afee992a967fadc501",
"0x20ebc05e620d2c7c362f8d7916ed7e3e12802cdf41c87b06790c40f5efdf724c",
"0x191531c0fa2c547a1eb51cb026e79cd663abf458a2e8630e83c1f11876aeccea",
"0x1ff17bff476047fd9a466842c8fbd711c1b3c1841e109c687ba4620ebc49969",
"0x17d7ef1f4f75295cfe214dce7fc21dfff13ff8a3c7bb86224c8a79566037179b",
"0xbc4494e3d58cd6841d0aab064400e6ae8594c35f7e9672c55f283869e0f3f93",
"0x174a4219c4aadec5921ae738b7cb40a3219ef5dec8db3bdfef39b373b224d38c",
"0xe989d36297ae2397d85b8025bb304fe42bfb8bf93108996d2ba13968bba9874",
"0x1ad84e6a15633eba89050cc15d94e459a6c2d42825986f9c5803c66f08976329",
"0x6f0eee01ada409058a818ba8369498fba956e713a7e9372b4220ef15f954a99",
"0x74a08a71a7e34b1031b63978e329bd0e12ae631100f24fcecb5a60bef5c3ddc",
"0x2185e4a0d25570c435162266b565c1db0f23ce4e61b85b8b8a1872517754b632",
"0x2bcd8e3cf988891e58bf8b8d3a259ce52f86de01bb8e6c4d49dc903f4b3ecc07",
"0x2027fe75d87804599fb66c0d65b287c4e0582a4e8d84bbbc85c6422cfb5eeb9",
"0x1e2dbde2355a4d9c61ac0c0db87447c67e08550ac91bf04d96790142d88cdd00"
],
[
"0x206cb038cc328526d0c3dc5af19437d83219751c5ee8f61b0e9e2f5881366be3",
"0x255fbd250e6628c5eb540c311936b282c52204f56fe81ef75c398d9f0adebe12",
"0xe14d98de84653e22efab29261c9a36c207fc9f5650ec1a5bdce6ae992239e84",
"0x1342f46c9e240aa8eb2f1dd6c61d0bc79fa6cdc3dd8fa67d79729b02343b6df7",
"0xe41cdc0db95ad5d67946f0ff028aad8c3a3c88acf10519e736f9265ce19a2da",
"0x1cc6d37794a5bf901341db685e790cd7f7427b669069e4d320efae1d55bd7157",
"0x117c39e46a1ae3c90b26b0df85078ebdcb66362515c74d51cdb192f789c9cfc0",
"0x2b4c77d18677eb99a966913f7ba7b478ccda159d0f61a58702e80f4952b37077",
"0x250d35fabe31fb7fd1719ae0c13cafb64e706932fecfe47e475034289443f240",
"0x2c712075e8848b2d26f7c8c6f7accba81a49800ed3515221f03d845407b1e1da",
"0x1d04d22563bde8bff1b425e9bf113cfe2fd15dca666b9130e56511462e971465",
"0x135cce03597dd23591aa6fb38b2e70ca41ef91ca05997adbc11354cd831d57f1",
"0x24716ad2942c2268df507e25be255e45c00d5dba96093df6c63c8a4df733f0e",
"0x11cdeee1ba873dc61888aff7be54fe50e03e3a4a5ea0f32c6acae7d15d9f7979",
"0x1ae588627ea2e0c046ed4f6c208f29803a25c9b2c0c385be294b9c25a3287e47",
"0x8e0df227ca5a17a9081c60caedb5435a8aff99371a70219715b05800ef811d4",
"0xa1cb35782612c7998afa40dc467fd39c882e6b3dabab079e63c330bbc8e5f1c"
],
[
"0x240c57897161666f28d000b88d3353921d967420f401ce86bbee42be287a4f8",
"0x7c9f836c94eef4e831b3126c06a9b4ba19c11c7e886f65c0d6267e07882dc57",
"0x156f5afd193a11d87249f3422912980daacb8fed225c60a5bdde7c4d93d5a019",
"0x203a73837d577d910d3bce1b15fef96c1bb522d4f02cc4032becb907810bc85f",
"0x217ac1a2f28cb7bd2509d90ee4c03aab4094e3fef4741cf4015e1e823f71c0e",
"0xc2e41be00d98a8dff8b30f5dfbce2708412e200682bd596b2162700a67274de",
"0x1fd5670b294ced78188cfd816a41358ca32bbe8e024a2a200fe11d060f8c5e1a",
"0x2884fd57b70a2305bf5b94c325b01d03f3cc2e8901014e0be3dabb984514863e",
"0x23e772e0725ef73aa18f59f934dc11bdbf5fae9cc67fa18a2319ea13a69b9c4e",
"0x122366ae0642411af291571a8904f0b6c6fb11d1ce750b3316ac35f310e5dcef",
"0x1d0b0c33d83a40412cdaf42cb7ee8e5042d9a73eb17a0d5867a3191aeaea61d7",
"0x8eefbab2c1c522367f543c33400cf254fe07711f94e9036a7558565e7305c0d",
"0x209ed5faeeef4d1d01bf753704574d34febc7afd299a04430bc0f8f0baafedc4",
"0x1cb753a0f4efe61b05e95e099e4b556770b364873d99e1f77e38a53e9c262673",
"0x2a32d7716eba1cf93c98e9bbf805b0e4d27cd7e3f26c560beb2aea41c1782d8a",
"0x2936d36a869b8b2318109412bef3c1a0407a8e0b98b4959ee0b624c116040494",
"0x281ad4ade7262394bc55b71a8aeb4135af3b0c2433070cb0ebd9ec8e20dc7280"
],
[
"0x1aaefc2e9925fcd453996fda804063fdab276b37c5f51dfdfef9255b4ec10cc0",
"0x2eae17dc561c37084e990fd1bc5057d96e7367c4b801d27f6a6ad8e0d0c0875c",
"0x247ee52031ac073a81f56a957908c200477513fcb9853942a62b06fb6eea3bc4",
"0x275602e8ac1136b245f551cb053d7eaad7dff488df3f645907a5cb151c553523",
"0x6143a7c97a91838b0ad68065370bc9503d3e0c8d11f2a840b2c32c3fe2e79b4",
"0x1f3aed03d37f7b14629aa2e5f086bdfbac862325988c4da943f88f4313647df1",
"0x18fc0aca1d4a45978f6e3fbc4a35a2579a4c12eb6ea700f79ba56727bab87117",
"0x97c4f0ca6dfc073c84e97fd4b2c341ec3c45b6f716700cfd7647e423f5e634e",
"0xde5765593280a32bbb1630216e58d1d669ba575b7d276a2432d9c6ee302a5d",
"0x7475c2b72238b87b0d8cdc92890f037dad0bd67a3c741e5672bc8677a35c206",
"0x244e984c6f2f2133efa9d5dbbc1c60463d26f7748650658395201b367a39f554",
"0x27a55f5103ad08547128724e6c20a4ae7af36be03567e4efdeca9880214d42a9",
"0x14b2c9ae1ec7a0c1593ef29e782b063ed48e580ddc3255c0a1f081e69b634448",
"0xeaf70eb10be27fbcdcfa7ce5e1b289b66fe68a3114038522d61b435f17ef209",
"0xbf40bc87a391c052a56e43aadd307df751dbc47ef7c6c5af3e7bc4ce0dc942e",
"0x3afb962f8ea2cd1affb52a50cf59cd5b1f08f087537859e8a73524c3c7758e2",
"0x240011c27da581b7e91efefbe8f37abfa3c6e456ac5a6da05d4af4884287bea3"
]
]
],
"S": [
[
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x1fd20dcb58503896fd52998d6a5be6f12ec33b3cbd590c793e45de825ff8cb5f",
"0x8c8295df0ba11861e97f0cdde8f202a7096c1e6452d33d64a11b5be4e0a1efb",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x2458ee6d7c526073d165d2b08b95cf8947e20e05a76bc12b401b996421e89835",
"0x18c235e6e723390aa65baf06ffa557829f78a2fe1fbfb44eef84e938209c92f9",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x1868e106689f8ea2e9c561b4b192899d07b52e58595c393436c37df24976a584",
"0x2d5161804f0ec6445cb8904ad3e8e9ec21153350df4075c9cbe840b7b609ca92",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x3510550ddf6292355c690f03b9b815aab2dc3f4914612da7ecb79ddcf7b0b90",
"0x9a2e7bb3b278a1d5f264a26345ad8365efe0058403d8a52909cf2d5f6ee6170",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x13dd4148c491a166b015a7a4233f4e488ae94a0e6439be66fe149b50b55759c0",
"0x1d2d3b261f5beb3fc010f42ec3825649d90150eee4ce55dc9f86ddf110295550",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x221b4477678dad4e2abcabb47eb5e7a4129190b3855ae4eecd8ba68643ff77e5",
"0x16b76448e9855f165f2043f5f09bedf1830a4998ff45ebc25f1d40e8e8fcd6e4",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x2a10b6a2cbae9578142cf66104b69e448eae6d3bd53ac8602363460e2286c92d",
"0x2db84dba4a9d96cebe94dfb1d59edfa58ccfa871b9c067c522e31949b69f2bec",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x1ca9bbf26402238296ad897ec1a55b4fc273cf20c1f68f03d5c149be890e7b60",
"0x283d37fa5e35d25c83d1b9d34ecb00cd03848ca730ace52f367e0d7b5fde30d6",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x349057941b141ceea5a063a0ff8ab221271e618a174e5d8009ab5f9c791d960",
"0x1af2e1d98c3c09908503883d3b9ed50fe8958eb1e5d6538016c344d40070efc2",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x5b7bddacf4522b0aa3082e2c05448962743d0023bb6402291f592e6c1da4679",
"0x1fceeccf337e8a903cf6a0c21a6445da7ff8c4a0bc78909c7e704131c8a35241",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x2f30a25f4d843e28afdd850f31d1920ee058dfb6d91c322fc960473e917a6768",
"0x1a55160bf49a4936bcc59162617026194574a89e5857751b68f3c08f7c07ce87",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x19c66ee887ab4763b17573b6ad192b7df1af24f54761998b03b342b95709041e",
"0x1a82828b7f87eba7f5f8624b31e1115506ab3e723266777b3789c9104f9c781e",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0xf506d3199d96083de9fc4e71b250825e84a242d81ae3a81d99debc7faed3385",
"0x1cac7482d91faef657db9072a97567ff172374d99987a8b24b2c04472aab9f83",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x249b26b1d4e333b23f3192f0e4f52884ee63d489ee153ecc3216939a72848150",
"0x13d1aeb10b225e2a8b97131154407d1bf145972dcd3a0073339dca336180dfb1",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0xb90f72b7fcf867eb2e0f9400787d1dd52720cbc14a7095784e4116624d16df3",
"0x25e346edd8dd55142abd2135951398230f0c8d08bc5c365c5a6cd70011a8f39",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x263003b8ed502577c6427b0b4589ef6ceb87b4e21b7c424e587f2630a7b868a2",
"0x2d92ef6b8bdc53dd1b6c5b1c92e5a8248eb9c12255b910ff89c09961ec12ead7",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x2eb36b6d0bfc593a8d6d9459a7af04f0b15bcae4181bbb123543870c11316681",
"0x1e48bb591146f461c1d2f085f3979139e37f4a5c2354952c833b2791f59034e0",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0xe759913751418871f0351ee180ca466cf8a03f541079c1b51bb001550d8162a",
"0x1e45e194b16936c5b1f81c72eb0fe8c62e859c4661b14b7e327503cf49eca55b",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x28c8b58c9e4cfb830a51af4529318b6269c4f6ac1867ed1174ce4aefc57fbeb3",
"0x255b293fcb1be27d9e5aafd4cd28c26746fc3520889367eed1355c2c41b93016",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x1db1367a8e37c5597835365bbfa66f6ecf40da775a54c35d5c94da70415544fe",
"0xcdd97951c2f0b885edc683b9db74f08df61286578a69989a9fed7ca34c5b4ce",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0xe4d4e42cacb9fa6745c6dd3630ec5a4cca8a912b7ec28576ab3ba29c57306c9",
"0x2141a925c279e4c4e351641744750d4702d90ef2137d1905dada0bae3c7b3af6",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x8f9f9b3abc79ed89c20597cfbfe49021119cc50648ce401dc50cb042a54d167",
"0x6af6c072313d868cd945c9f0eb7d4eadb24c8d4763fa042952b99353df2b236",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x8b43c97bf4a40b4f376d1fa0c5e6e6955cbf9ba301f878ed3eae4ac812b79d1",
"0x11e0e607ac6781ca34a714e6c5b7a4f839852377446520032420e2abe16115a7",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x2dd7f0e1b303f425cb7e6b1c30ca428b3bff751e7b651152eb4de008b2c00da6",
"0x107d7f92d1c6a24068b917120f993ae3ee84349aaadb71eaa4128b349812dda8",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x10ab9e8e4ec9ad5fdb1166c64ed2fc3223c7e16dd982f66dcd820a7861ae1463",
"0x3000d3b3ddb3fb864ccc729984468a7317397713303544a84d7de1d209d25cb1",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x17610359e624e7feb3eede8099a1dc45c4a0c6b2debc2dc8f200fa27a0da6ebd",
"0x2affce5b7a7d8c5aac04f6c2708794cd01a8439b65d74df5982d24ad2a944eb8",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x2d439fbefe8d2b65ed32658bd21fc5604408d5fb69e1f64965e5895ca61c6e09",
"0xb51cc2a1b1c329fd72a286d4938540db3cfc4320de363a3f68a7935cd193ab9",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x1468ea2868d31f7ebafe78af8c24656a3185963272f34c51d5e2695c43bd3247",
"0x29553949324f27f4fa7bd734920e9be7b662a0ec5797fdd4ed3fe19464879b95",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0xd9780ee7d395f7c977fd4b86329f6cd720047a7f9d1672d18d2cfb428343afa",
"0x210a098afd451fca3997860e220106c7487f4716831dfff78036de18f17cb31d",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x1cedcfe2751b360e73d6ef5af88cd5b75a2b2d97c571889a0dda87a0dd90ad81",
"0x22719f26e16723c1bd45a619e91836c340a304f3648672f90de2b047880aee03",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0xae0cec959c4c7859f670f19c7490f8eef6ad66346e04613c1350597be000be2",
"0x177560de731482bdb7316c238bc38f20a16cd03edda2e0393b1c515ec64b0727",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x1f19a267da0b8fc2b4850a4f458add5514edf0aad6f7a7f175aef0b98e816a40",
"0x1da77cdeff9cf822b54509031ea2888f6f398051ae1870afd3770e7724c09f31",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x2d1e17aaaa96743665a869970255c267ba338cfd43ec9b33ecaa764f48f17a8",
"0xc376a8ff1da39dec980316ea26ef66fae5c86877a8f82266c14670024329d12",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0xbb856048ef43a77b39560adeb3c7a9a783db5cad8e3f422495a69c56680a79",
"0x1d81808a3c73be1bb2c99b6403f3ac4a532c88d29ad652cbb20061656006c19a",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x15e52ae83a9db363d24cc5900df8ff0b81e445d4409a0e2aafd3223c354add62",
"0x2aa2fc03cb5f72e237f7d88ef66f765a159be533354ffb88751abb8885203ad4",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x10afedad881a1da7dace5c69546d0890bc35f41992b1062a7c7789b03ac932c0",
"0x1d18193701979ad24042446e947dfedfad22a6e7d4f6bde875fe2d8c882c858a",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x2f0b8457690e4d9770beb0300a09fc7001cd417061e826bc450dd96d7b24f36",
"0xdc31897d61d70e16870e0b02b9776bc53b8b9848be3062f8da18ff9d981effb",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x203c94bb7694f9cdad3a14a7603e3cb69c141200fd46bdc9ebb0d5d73663525",
"0x2b778a231f21f8a6cdaa3c84372933e610eb985dcc81af9926fe8b09f1afc81f",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x2c8a0376c766055e6a9d5272a2466a28faa7e359db111e84d98b2138c8c9d5d2",
"0x2ffda33f5b85a4fde16ba590ae0cd49fce4ad01e095f94f49138fe44aaa8c778",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x318af53cfd822ec2a7f4d40614f72fc6cb27f44067fb58d15789bbe15444844",
"0xd24997465c5b23d4e7436a4ecef2f91ce9f8910b6fa8a4a3ba6f884bd7206cc",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x1ea39e4d9edebf65d648e42880b396a6becfa66b3c5e47ff9a33577a3d2a658",
"0x15e4e016c94a026fd9ede9bdcf11268f7735cf5ebdbdd4a092fda1ee8b50f2ff",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x2ef185c4b1cdb7072a82fd43fe4bb145c4dbd04973fb3ef76e757b00392eac9d",
"0x15cedc8a4ef6f7017d1dd3d92255beb54f1d7d1e3bb0204cb07ab81c71435902",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0xdbf148ee8983db0c117b111270f1c2c8219565733684494eaf5ce0645e5749a",
"0x2842f44ddc05dbd5b319b1efe6b3eabced380b99ffc42dfb08805ea2b4c48aab",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x1aa07e7ffa4a036f1b7efb2e124e75028426fdf5f1e4fb8bb62e1ebf3298af2c",
"0x1e5a2abded8c7022a8ba97ea683b605d09f017fd43e92296656561eb96d25d32",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0xacf3ab02c018573bc3d36b0cb73de6df11e8cc1dea223e98a2a0cfbc028d2af",
"0x1bab48ad2c31dcec5fcc6df1f02dc4164f949202122673b06105f7ff1beabb29",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x1a36af3ad1c61cddc06a2a4c6967dc004b589a4a8b358ded11a38cce6a7f31c",
"0x125e0e822514cf49536fa643a66e1d2fa6788cb5b4805c9cd3cb69a584e0d8d2",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x85be8486ecb3dbf71d63940d8d689f9b142434a14d5d4f8c93d7d0f17bfcbd3",
"0x275651360d88063b2feead8bc71ae9c002d5db9822ab63b058f11e0d506b17e3",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0xf7eb245596d9ac5ecc21446ed94c80289db1e1f9f620c18f7815b247b228a6f",
"0x221862a04a00f406bc67f7677ab459c9d887c8bb88091513f0fc2fb103ad549c",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x1bd575603b7085afcf0a588a5fadf8705cda7eb1d4ab7e70137dbd47fc26e3a2",
"0x146d1d176245ff772db8575d986a82e931079de61e67184c4158a6f62db446f1",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x2202ec1e7fd85c4749393664f024d578d392d59cb12a42e2ef4fa728da4cd3a",
"0x1c0e72693a0e12bff0ab3e12a1203c846b5dfdb9dd5ba26a7309c6970371421",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x2b3d8733bb4872b6cbb0bd83378163ab14a585dbf5ad9758c07948de056071e0",
"0x185d12aa30aed1a0575b9d3dcee6332f4fa34643a429cfdd8de0fdc87a29640e",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x1b394227301f28bee29bd3dfc35dfcc8e1c60ec6dd944dd33593a9a77675f641",
"0x15b1cfd522bdc418f6c08a3deb114a4ff48854b4a496537d41eb3a325f2265e7",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0xbca3aef46833e8a30a9db0a16b59abc619800d2da15da01dd5a0713ff4cbbb8",
"0x529062596e51b8ca2c2f8c7cf4adff0853150015e2e6b4ce7af212500f5e6ca",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x2fda517f4261325a7366a45da1e847cd150d022be2982eb6105dcfc31fdef60",
"0x1fec5a09cea4d25e5b7ff9d2fbab64d264db993e8d8629b7154a1539d12dd1cf",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x2d87776eef5dfabbe5605094751af17b831717fa3f8e01943b74d1a9a42eb1bb",
"0xd257a437910f3995aebd0afb9be584967afa4188c4684958f68c39f9f01ff19",
"0x66f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5",
"0x98f0aa06092ed2cbcbac004f90799e6e1c32fc24a9f0b6066f8d7289716aee4",
"0xcc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff9"
],
[
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x3f0815ab463f1b76ee25a9b8768b3231a89752f427f4f063ab718e707576b31",
"0x15648bf46f60d82954c7e33029b3617357012a3d3b1d34c8e008859f1dbfb317",
"0x127e00c2253de07818ca7f2eafdd7564d05ea850cf61f1daa0cfefbf7fbfba85",
"0x66365afd18a41ef9382fc0b1d265cb4d3ce470a8cbbb878f7d48051630747bd",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x219d14f823513140dc69a96f7fe7e086f4fa24c84e57dcf2b099715c4404aae7",
"0x3a30bfbbf2cb86d4a6a63a8050d91f9f14f4d33696d37ebaefa9ac2302132d5",
"0x2121bbcdeaa33a35b0270fb7d5c9f94edad5a84d74b06e3385104b0b41935bcc",
"0x196b544fbeb0a792cfbb82c289e579b7cd5580c2e338a389d053ef8b3d10e70e",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x2809c3a1547c0cee89c1db270ef479c26973ec73edb4bd4e7d907ea0202f560f",
"0x11c34446b083ef92ca157585a02b8b342a4c67175b31f4b5d40d4e96dfc5c8f1",
"0x253ea0b33a8bf3b2367c030e3289cbe0f6242ad7709d90b86d9d8026e2e39925",
"0x30467dc1930f6afe90c89d4007ad29fc4f5a19c006d1030438c16df85637bd5f",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x2f9d4b55495f7e377e20e6f5a3a88af7aa6a536458b38bbe13c8ebfbbba54f44",
"0x1d9e9d5c736e3151f11d36d499e7e093d8ee2353be18aad54cfd03ff0feac4b8",
"0x124b617b43e598f9ebf622f7823a3de7d1bfedb87e097c315f343de301e54841",
"0x198e7cfc66ae45774055cf073bedc945a5f9c5b19cae08d789cc5748ffe199b2",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x2eac25b3498dfadffd124ab3aad57789eb945ba57443099c5bb6c27ed977fe24",
"0x1ee02c175cdfe1871b378305c1bb9c904e8af1d4454ed3550b3c6ab5f4f90126",
"0x616f8c34c607266b29ea8f9d2dfa47ff6fbb1d9745c48609fa98301d0f679d5",
"0x181d68b0a188504958b9f19cbbdb972a853e51ed385e4883a43a42832803370b",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x2d5397ce863464a25d6b7f5b015d579181d1ce2f24cbabf6059e9327f5ba7004",
"0x15bf817491b94d71e8912940cc0b80277713e7d32da2b6591724d8dbd4bc2618",
"0x2a7cbd11460b177ab76feab28b69485ac8cc687740bc910994a3827d29c08714",
"0xf7cd5ffa4661730ab56e447fae5cc1763cb462da80a85614c237b290de9d502",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0xe0766004b4c4176eb13273508eb6575f768137d86d305be644ce04531008100",
"0x625fa7145813481f6d148be6b9c8bb7b54ee3c1afac00104e1f763000b9924c",
"0x7c5472508b459916ee0f5461aad2e0b19cd9c7b184f515b65136318ce2c6a5",
"0x567375470d189b693ac77ab3fb7557231d53073951d43c54685879cb7a89fcb",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x1d0406bcbec83f8d5165f56c063e42108ad21f51ea4bfc71601174ba5c7b8bcc",
"0xc02b18eef22332d280a8aa1f86405f3375f06342f8696ee7c73b46c63272cb7",
"0x17c1fc174cd9a6ebeaa7add2f801a664823509ad4fd1b15aad053a55ad6da4cf",
"0x5f843c23024eb1dab7ebbc86709a021aaa6caf433f7ed258a08638e9584b32d",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x22df2420697ca28b5cc51c53165e002727b45ccd90a55c87589f792f0ad8cb37",
"0x2f1438303a7b49d473400aaedf0f48009fd3af804b76be86417588efc4d7302a",
"0x2323d5fcf2da8965c6b2b7b4fbf9a24bbaa7f4dccd35d5ca6155c5463093b23b",
"0x26c85b9dfbbe48fe83b753a5e7336b9f40f7b961e9c54f94e37700073d4d26e",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x31511000251ec86feb38b5ab4e335f070b271df4c20979528e41d65384c318f",
"0x18e588324a9bbaacb42fa69e5d90a0c0e27cd16b941e34a60ff5df9a26c03af1",
"0x2642b5d8e16b953b070635775c8d3c9498357d6ad9bef2e7d99f03c10ea1f95f",
"0x21fc313ba11c60e8e84ff60db906a0f031189b0b48335c4221f909aef836c133",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x2d3562e3d4b42bc6890b698cc6ab89f7311298bcbac6e4e9f2f4d93d06dae151",
"0xa74ef541d360e842e3e0b6ff7e5c7c77934a5f67616f01c189d886dfd2e0808",
"0x140564b53e0a812ac3983d6e3b433afa43f434087d9e754967c2c9b1b02caf8a",
"0x14709e32d98ae4cd18b400181e71ab9759c436c8e83fa6993adb6f2db6bba9d0",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x734b2366c59e394423f179e1266dd392372db4f2dba651f4a619a4b52bdc010",
"0x11fb2d705c94b08d5ad3e3c5fb6629abe963ed92913642c7d02d7e71088fd2d4",
"0x27d03abf5c1f290e5d715eba19371050ef6eb7f78fd84be834e4cc3618059484",
"0x13ed9e9e6b452df27fb3353cfc2cd63ebe817f212a39c6a8bb9b441ac1395861",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x1319c51cf37aaa10246cdaaa04a12e88795de4452604263a7c5b79ab99cbd23c",
"0xbca25588d187b7f9dad839f2c8cb526a4cf444eebbd0e715b6cea019ac3f2",
"0x1d837ea0341c5964181226874b923cd01a069b493f02f7a3c01be23cf51d593f",
"0x1b41ce9ed3634cbd42c427ce4c5c83774149e2a6dbd25f24012090db7de4e7f9",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x671f0e3b674ae7cddc790ecc4e946f4bca74b98b78a127c7b56bd6673f1ce1f",
"0x19fc073797a39b272e40cd30615f55fefeb682c1ac14143071d0449a5426e4e",
"0x17bee47d262a497fd1f7c5c6d5a7c70fa4209480bf5d97311c5096619e9fd13",
"0x2073cff92d3141b480763539cff2978a4c7944721cc937ba00cc8527274471e3",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x3bd7b3e2c1885877f43182a55a91d48f9c58d152e730fe2c7aa46b1fa663baa",
"0x226ebc9a538b5bbaff128edfb9bbf5fa0ceb100719a14c8dfed9ffbbbad9b6b7",
"0xd395f0b08b9fede0373a06e1552c0e634a49572af1d830dc6e394e8a5d3b21a",
"0x28242439b524540a30d49b68e19e31ba5284bd3bcf1e0f2f41f77d5331f99ffa",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x370d6fa19eaac142d2de034801ab85e0b457e129e91f929754b48c6154d4df6",
"0x9a16f573b3280f390762abf269579eaa37939bc0c753feb0a2b2e0bcbde1659",
"0x2228e360fb5b162b496ac443f98127ee3c0021a690b71b268d99981368231d97",
"0x7e42c2ca633d2c49fabf83991476d209431e34d8032b6a1b97675f3c567f944",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x2ce12d7269663770c3cab85a6215a32eed35fda1d8e9d753a50fe96097724a9f",
"0x3d7427704c61e2009eeb9b1b45a0125084bc4daf70973a7ba0b2231815b15de",
"0x10f8abf0764185861c1267fcf4b4b33ca096fb4ddc4626732d86921e553e69c6",
"0x17ccaf6f26f7267a025d7cb456e3aeb251a1a620aaf6568a5c95644c7c5914cc",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x63bb306b96310051385c3ce00ca820ad0e3651a6e55754d59de6df28cea4d51",
"0x1f761ee5553c5e86f2c304a18095ab7403242e0b65e608bc920cf993a4169974",
"0xdc5f00bbfd7c1d9a23c0e666859ba6564bcde8761b45717cd6bdfc09de4e8f2",
"0x6de511520e277b7df07c3536381c13eb44cf790a230abc391089760bfc40ef2",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x2a134348c8660efcf9ef54863e70528a1fd4481b50a1fe21f24a8c06e10cca03",
"0xaeb5023bbb9a64c4bd80089e99edf8ed5f6f1ffb63a7dbba1b33520bcfce37b",
"0x141a6d0810366ae225ecb5f0bfdc9995406c5960ab26155836fc51fb7cb933d1",
"0x9d2ea05ef54dadbbe776f404dca6626cc0b2539990bc0b8bfe87497f1e2c5b7",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x1e56d244a8e41be5d104d5f8ef70891d22d4a5432441bfe8ff1a16e91719cdde",
"0x1d4f020c57c4f14aec908b2f99b5c4fd5e09447fa85c2fd68ba4d5c5f50c7b49",
"0x763911a3a92a4f0e09f4e14cd03398d8d82a1e09db80fb0ee1e833764c18fd3",
"0x12857275be2fe6b9ba2ec68f9061643f1fc5d9a2c5e47e55684366e54b302946",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x2ed11ccd2e2e2376655ffe9a96c4b81adc0a60353c5d83d4d0ebf50d1bbf87c0",
"0x3e31de8958e82645b320d5e3e966ef4726d5b1c2cfbb4acd288a21543c6d594",
"0x11e880dfefdbd08858ae890046533d58da28a608d7e905366ec2ca4a36e71963",
"0x1835b275deaed2d00704a9c3cc21ab7a44a34662978d53c190dc25e969a507b2",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x68b75315e25ed4ace5a4a9480e1d82ce5d44f76f1324240419f372ff8d3c3f5",
"0x1b7ef7d04aec73d62b052d2ad12b92a4268fccd795c839d698ad3b22823274d1",
"0x28c0c848022a90606f6193ff5501b57216b670727f4b8efcc240d30bbaa9f03f",
"0x13bda49296cbcc51686a7bfb1c39f3f254370985a16660efd6e5d82d4f068e1b",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x2e7987ea8204389d11eb10b34265e378a945729f86c3e0e2fd38490d3a594141",
"0x826d4a2324ad3aa4b2b45c10a190fedef702aeffda3226ce5415fffd03935c8",
"0x2dbeee85eaeaa9fa3675ef541c9df7bb964a85435c3b59685f93b434036ded",
"0x227ee7a945edaee6919418ecb3279b11e6fa44f5f5c5abfb966a4be599cb86c7",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x1d0a6d1a9519877805ac90d696faf2a5ffadc23986de8c698d541471c7244220",
"0x2208aaba508ae816da4f333b7854fbbcd10eea1db284ec3e9f4de02b25f6e9d4",
"0x28a58901035b2c99e36a7d29b587a215c9e59268e2f8e01a175720971ccf04ec",
"0x112f6d8d42b0a0d123a07865ca1376df317a2a14ffc0191226f38a8adfd6238",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x8c6eb19c016d1833174dda182d266d5c727f97fb4d01f1daf906b6d3c6e2308",
"0x1359d2d6c8b5a116d0b38b95f9c642df75b1be9a48c8698ecfea9103f73f1879",
"0x10c5052ec67ab9b6a467c1cc1878d91aaa07aacf7725f8a5ed42b699c4af3ca7",
"0x583c4d292d54f3cdb708803e6338fc6afdb188d5d4e9f060193823684c96c75",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x2d94a1c55be382151a4054c5b96322e7bcd1fe2b3e076e16ee2c18bfc06f57b4",
"0x15e3402fdde8770fb997369579c1b1703ef77c671927ead80dbc64dd2211c3ec",
"0x185be98784817f22f7b21e6b867d5a71b5000bef8bb902eb302677e20a727be3",
"0x18db4321c721c03666ed8927c89890aa8aad1b00c054547b5ca14cd94de467b6",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x2a852b6247f5d61f0c390b3f3d799188528849bcd2cd0aff4eb2134a039b5126",
"0x2510aeed51b7f506e65fb9a18ee0124aa5276f6de1cd771b165930204da58f22",
"0xf2074a32eb8260fb5bd3a236f03a47b47b7fb54dcad1d7977d6486513bab5f2",
"0x2f4c69297866bd45a8270e19941926cec3531c9e12c4c2c84971404bfa044090",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x154668727d2dbadf05d083a65093c0d0e92df5fd5f3fd75e9b792c562a37473f",
"0x1e6ffc5d6a1ff5dc4fd77fc5ab5c8c4e8d3e2e375bcd1194a91e5b0f7b13cadf",
"0x2cf1a1d7c44309109d75acbc9395cb8398c8b2d428538571fafa389da29990c6",
"0x140fb39a89f26f6d87cf76cd5ce8da47aa5d8a023e24cf016ecf64cf793c9880",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x1289d13d58a17b5bf0712b201fb3cddfce2c16dac159990b8298a93a8589f9e8",
"0xf45cf974d2c9edb5781e8d3d207adc8370cf56bc5218749610920fe98b2db2e",
"0x11909c81a16518046b79edfd24f5abcc585a81d1b333568b8687a1c9eceb44d4",
"0x2990b23c81882f7709f3b891a0e3da4d6917672f2d5a1041fd7bbd6792330d16",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x609551b14716ca3cd5560e0821e7285e0a083ea9a16dc102ecf461e4aef7277",
"0xc8c1abdfab99d03fd93dced2467354b6175de1755f4f93dc0880eaa08d03f77",
"0x138bd098c4923b9fbd02f33f8bec6c730db3fed298ec09f78a7a55d08f2e0b10",
"0x2e61e4bc021630114673f0f77161ae55dcd0b45ce07d9ae3f21bb5a3190f14c0",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x124860913e3df8f65a9c4060ce3297c626abd1c22401c905ddb408260d8e910",
"0x13807f89c394a133ec104804d955cbe125f24c5701d98286c6ac8b7ed052ec8",
"0x2e88d1a6938f0788132aa9eeaec08d2f59aa444050c8f4c4e85578abb0fc2fe5",
"0x1f3d24f17cfc6050a0cbf64e1f1787e2257be3c3ba607c2e8fcc1f26abf3104",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x1fe1cb0e2ae169f83b9d4f133d41fb5b3fe6c76a82a916bfd9b62f82f0f8d0bf",
"0xef79351229409cd353329221229827e19946f3d8d1c48bf5e3377f9177071f3",
"0x18fb2e46fc1b90fe1c4893ef77a9d111507551883127860e89088608373beda9",
"0x77afe2579f42ec14c32ef0761e23a3cc0ad6263a68c5cb61916bd57120d1868",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x79769092daa5a752642c04ccf8a6ea54e2ac9836fdd65d248b186f1490b7b99",
"0x1d8bf229c19968f0254eb6e09c5c8bfd67eb9734606b676b663c76cf76bab4a5",
"0x2a33b7d855e7fe55f93556e49e4b37737664f14236f17256428f29f6ec1bddad",
"0x25b0331d7e2b15af4ec161c86e84ba6ab2056077e7aa7536340dc3187ccca8b2",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x762098f5fe26598ccbf45e4810211b0ffcf8ccbb92c16e2f4f13f22342474e2",
"0xe234d720d70b2886d0da4c007b1bda42362e144185c70716dece2b6172c2514",
"0x1d82bedccd2bc8a06e3742e720b7fec2ea72182f11c0c60d135c811152aa4b60",
"0x480064d4b3eb0ada5e9a3e7d05930b7c3397fd6b94d481314bd1c690a17c979",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x10a892763b3cca9ef7593fbb1140edc8c8e4580568560cf41867f7464fb0c11a",
"0xb5ec64548ea841ac921f9b2553680785978b315667ae4714dde4cd7f4de8b91",
"0x10554aca4e348e5949761bd7131dfaebd78010edd030e1a9ce3c65c9db931d46",
"0x15be66f38d86b0998b93655462b1f475b9be9de306e150d4ac648fab3db0cff6",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x176ad3600fd3491182d182957ffad01bf6c26e9d4ab0c23caaf308e427d3dbe8",
"0x2b6f355b3dbf65f09335001d705ac125e3beb20f4fc11bd3ce82b5cf0af2e6f2",
"0x1c85c06a6d5d40d81d7c89edefb32d1a8448c51288fa296b6de9ff788c77451",
"0x20e1e876c4746a0cbd9a51d76b2e25f82361c389e43f7d1f51a70aaac2460d79",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x20e46219f684186d2a024b637bc35a29ee3b08ce737701392d987dda9217fa08",
"0x2ea7279db9f2aa0f654e987907277c24480766367a8bd90e28be0f2ed6091367",
"0x136be2a7f18924c9362096d472bc75ca0969dc077c9171b1641be95091780f74",
"0x1ca2033501baa3f73067c4300fb0f51119ed5736fbc8f1f6c924baf0df5a0e9e",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0xa82f199c2505277ecaa75e495f34e3525824f7a4a9d9fa1da810832b48a50c7",
"0xecf10485307b4bae92fefb0d7f7782a9f37a2722e7ed9eb7925a2dea580b7d5",
"0x7b642138dfd6a6dd12aa22f08a8296d68615c8478f13af16aebbbb339a3936b",
"0x1d9dda43a25593ffd2256d34921fb86ed70e760ba76d61e9cbc3b6dd0f1a2150",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x2f1af228520c8b751dc91136c91c6bccd5367eb08213d392958ce2fd3d7d2fce",
"0x1fecfe833ad540455c6d6c1ab3de4abae61ada625a1a2b6b18551a45a6cde123",
"0x18fc8e608c735b2b3b0d7583460227575657ff8a77abe637bdd3ad28e4a23c88",
"0x28f740bc1182e9706ebf03cb3f53aba8a43ce0b618783a5586388a7547faa815",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x47998cc0af5a26b94ad301e4b998d29e960a4851cfd13822bed35b7146966a4",
"0x1b5f1525b31db911dda43e415e1b9a3a9725c7b52e880ee130a14a692b777b70",
"0x275a83fa5d19b4535f65e965a90eac9bf770ae9bd1d7b1af945fa57ed5c8de6e",
"0x2e8789257ed2cbcccb430568e49bc9dc2a563359808c9897ce3e40a6f6a27aa8",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x927f46cfe80feefeb2721a4c09e9d17f60c34500dcd6e41e2925a39c8e2c7c1",
"0x1f868ae04832a5dbc37619bfe6ab6a97fd8fb2cfbc1ecf9e0e484bbfe7698101",
"0x9d7a11e27d2f53109b73f745b2defed65d94ba80f308fb19ce6d56c9b45eff4",
"0x282d857cfe8da3b5104e1c2823fb7c5b9a7b25924fda5995b0c351aa2b879dff",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x20ba8a9fcec815b13f349ff830ae663b27576e135c0744f6987fb0f6ff49c217",
"0x11b6afc91e32f1ca4589fba12e657d226d57b471ddd2ab1b66a8ae4dcbfb136e",
"0x2e666402ac9cc588316e335c7d93db344788eec2c72ddf3f908141736cebc3be",
"0x17522e0e9e64f795a202a110e283faad7057aec5c9ed9a1a74920f2794f18595",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x2d2ed17f7a1f3ee9e20b470cad4cc7319e6adb40e2ff24b7878cb9878edbd3b9",
"0x1a81efb19d7e1edaa96fa276e89e85d08f75e54a8136f4d73c937da16c7bf9f4",
"0x27ff57c1ca847e57210a7b44e52e5630f299c5f451c7a0d515a16bb3bd33e237",
"0x1c1a8e22230abcd13c5be96031bfa167840d117b3c6a5a0a11be26a7f5fb1a94",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x2a1c3f15d4927c843627a9cd533e4250d81e7774d2c32b59d5836f9c19a5657",
"0x2ddbb7239eb904d81c52499b37cb4be1af0373a10ac112e185acb219899357e4",
"0xdff198393085a754e0d6faec54be81d8edf8bc25edadab48a86fad6da0afb60",
"0x10d50c2473146bbc76275fcc589d038dec8db28728789f28b6d5f504bd1645ca",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x61e8328fb5593f92a53dfd40e1022e6231ba45948506282536b08b4476c1538",
"0x1b589243847198ded90b644bee31ac58067debf3f07d3c51cfa5a0dd9f6d9784",
"0x4b00c0da1f851e59863b053bd4c6087190f0bdcced99d5ce6f67a420a3bd1f7",
"0x239941a46c2b93d9126a70163009a7ac27f8a8d42e35018b3bec8cdcb5ddfd67",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x204f26ca7993b03ac2c35377cb0a3712bfc9bc3ec0bfecb4e87ef6814acf2ea2",
"0x85aff9c7fdadba039d832d8be165a1e5747cf7308d515e348ef117e926d721c",
"0x249042a8dc111f27c4ae9db044c0b0b3f10e57d05e093158efd375df00ea2068",
"0x6e799bcdf2b4a74542854f3029803e2f84550665203327b3e0825977413e96b",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x1cb3caed4bffb6aca9f4d2c002921bc3fffed333cae12085c612496183b87996",
"0xb47e9755fae480128a128bfd4faa6a3dd6ea03cab566889dcd99e84d310d51c",
"0xc7e4cea365c2061920a0c9fd2c360a6506293bc024fd1ca3f0bb730da886a4f",
"0x21da1f701bac77bcbbaa30d964d6f6f63dbe1b20d9d6988c8dcd7ba4187215df",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x9ae612e8ba1ca1370905fb67899d10db86b47bd19965b6edd1a9486e3c6cc55",
"0x262e1e0b56cac47fc150f284491190e6aab75445b0c99373fe1f7a0e3b95cf3d",
"0x234bf4a7dce7587c2c87c293e3bb7c9e2a7bfa5f29fd4ddeaa5d3f67491d34bd",
"0x2f6cbac694c886b02d0a527cac744fb658d2690e213d7432eee67f6cb69f70c2",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x22accb18b7c49b4b7bb8c9fdf78b7aded52aa1842fff818d9a3300876dec3ad9",
"0x81e2f0652f898c6d659f22d2c77be302eabd9182a0b3d3cbf623a1df7f8f2fc",
"0x12c0a25e70d006eccea3ada75d669b8c534b962890f3ffc016b3186ad675b935",
"0x10ef9c23848128cc2fd6fc869df24d7ab56efd349edd56f49f8d4f2381df3259",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x2161cd280772819dd4a81262b71df1bcc2c1d41b9491e0620bda347962b240f0",
"0x2cebb0ae5108318eb406590041b5248292533364f799bc41b7f4fdd12cb8d38a",
"0x2b2092f86b5979a7fe4f7c22d9561f3bf2852283a656880fb759e08709a0a62f",
"0x1566b3402d774b8c08146188425a442450cfc900cf643e7382b2d8507a065fed",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x11a316aa31607f268fb4c56d6c57ba01627c3635fccf8d3d1a163e601d1a0173",
"0xde7ee069c934256b782648b560e595408a5e8434644609152e353d9c2874e44",
"0x2d36f4029245704cc84df0297708c5e5845c36ae706c72e67128b8949eab1af",
"0x1b8cc326b5ee160f53198c217fb34e899bde46cd82dabdc284d7951d546f858",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x27625da0f73ea07110689fb2187b71694cbf9203fd4ddf8a96ece85407550ebb",
"0x1cd8338a3e5b1ad7cdc0da581a6950f6dea349c3edda06cb99ba025b94e4790d",
"0x5ea02d65b209f6da763856c94b6438c78a8aed8d3e67e877a10a84072741a56",
"0x9f7cb68d4e388f85366cfcf284a895d8b6250ced627e810817743ce03330a55",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x18c6230ddc0f896827b043f5e58dbd1aec13995a202e4ebcdfeb969e9d5c1212",
"0x73a6114b997285e1a91c0a0fdccdaa8452e4f07bfd2e1a10578232096db6dcd",
"0x2e78746340b2a6d222c6a1fc0838adf5fe013f39b1660ce7a3e7742b2f37be7f",
"0x7aa27e7150baddd06303ad8e5e4bf4249b7ea846553def28e675259d3e5c851",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0xb66fdec210ea4eabf623d2712cf4d9fa90273ccb4643f680cbc98345715ead8",
"0x2fb6a29d9f394a589b633b8a4d6be51c9c0601ce0b140be641acea41c49aa5e3",
"0x29025cc66fd041c4fc845e9c1c2cd1288569fb243d049bd675a69dc889b2ce2a",
"0x150963f0aca9bcbe4126214ab9c627a6f7ed731cfa695168b85d534b17be3f48",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0xed59780302257663f72c1bfc6656eb7b5bca2e47bec0d5798a08a32a61a8a65",
"0x7e19cb8a893369b3d30ae188c767f391c11888a3000debfc8d30c06143cc084",
"0x600c7d2b6946345e5f1eeeafb5eb8ec2b6ecfe528d2c052cd860afb4a3aa272",
"0x596083b6c972bc13022a1f33d6523b4773f2cd0a480e19ea0125119f0385705",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0x210b5c36f27a07d97f98b9d8663d85db2e64513099a8e1ef6db21043631e24c4",
"0x13bb2764bf1475cfc7bb9f3d563c5cc201c2489874e9159326a8f4930b7883f9",
"0x202cf557d625c26080eb082862a76757287872b181e89997219e4b7576e24d30",
"0xe561c3f8bd4f76e76d49e97142d220601fbc5a03d905a4728ea1f95fd8824b2",
"0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b",
"0xde20097480e7555471785de07bd9809d57dd859bbe827307c33ae9ed7890597",
"0x72f2a6287fb984bb810df8c5788eebcfd2825613cb72bb80cde8edd76d2e97d",
"0x2969f27eed31a480b9c36c764379dbca2cc8fdd1415c3dded62940bcde0bd771",
"0x143021ec686a3f330d5f9e654638065ce6cd79e28c5b3753326244ee65a1b1a7"
],
[
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x2ca7b911ea4f6a11da0bd5e72ab3cc621c5908b59ff3d76c609ea9c2fba8fa41",
"0x2de5f3a5bbe5b20d77ba6a6f8ffe2db01ff5000901b9ce0140df133385fd9506",
"0xa150cdbffe3c60c7a52cefa903bbee4d3846d24339f926c3655cdf9f81f67fb",
"0x2026ad7e03636deef47934dd0d5dd29d87056d172e993bf5e96d6a3bb32d2e9c",
"0x232507a3d48ca163c5e1b6f5bf391141524733d9cef80d404fdf78393c90151d",
"0x1b16b96e6aec89d326a5a6c18336ec3c56e7189f8c1fe74c5c46074b865a1d83",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0xfdf5d15426498ac82411ff8a7a3884894f02c5242eab1dd7fdfca1cfdabd35b",
"0x97cfa1218fe00b4edf8ce61cd20b4f8875ea5c8282d90f6f7153c9463bfbd95",
"0xfd1ebd67968d1e49926c3952aaf96d3558aa856acbfe48e5a9fdb4285ad9bda",
"0x27d5dc47f678316695d548d3b4fd1b00244a11d4cb753edd917d849cfa02fb8c",
"0x2602ddd7ea3a280860321a70aa806562a57bebfa5a0f5d2770f3a169b88ae244",
"0x2fafd30b7fac7a6699776892b07366b40fa387bc4141e009ee42070337088a89",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x1b2ac2c9f97eb32560cee0b8e8320f52866b17042d2c7c13178dbd963936517",
"0xc6db19118e83768bce24e1556ab9d383adb0f4f2b63c3f540d5b5e4deebb1f4",
"0xf94cafc14403845ea574997bf75caba6b2016ee5a10de57ae35923c9c6a2261",
"0x9145c337938ac3f71b78022c80fcdce4c1742f47dd2190c31c3cc5a41980f5d",
"0xa0ca462d8ae218e235b6f24f4c17747886524aded7e4f3a59631497a4f98863",
"0x1851288ccce2bdece3a7f68ff33b00cb961e6292f2af29c775cdf6ce3fe0777b",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x9ad33992db79124edac791c80e82876cf3a60a043edfcd7bfb5a93ee3feab08",
"0xb320d1000c50439a989886c4c11e711bd26667e61c50afba9d347cbd4b312f3",
"0x26123488a4f037ba7b2a51391f25f91642ae52bae1435dfe32c5f47ce63f68a5",
"0xd7a4403c3407d64ff5f63275add86c161183b2f1e88dab842607a8f3fcaa270",
"0x2cad68fb4be69ca135d9b37e2d3084557efa6423a9662f1fb24150b310c71727",
"0x2e122deb202b0e2c6a25e15226c09b9564cc57a8fc0d3645be77c36f8f27d4fd",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x23e090845b17c18cc12ff83ce7deb2e58cff2f37771c39cd0b68ba14f4cd65ac",
"0x8b041b40e47ef1883a30a5e631cb1e0596543f5c240701002be9d495d59a775",
"0x19d0ad6176cd87e6109b92dff1b863104182e2c85bbaac5330b2b7a4b56f9a6e",
"0x11296e1ff67a98dff758d023ea74c5fabe372a797f86a621bac4bbcdf31878bd",
"0x1b0943c04cc4c3885335624a4df555ff89e439a40e6691d5db44732aea1b36ab",
"0xc2cb45703a55a050e57ca3e51bf386b2cba4d5dadeb1749f8a6e047c5e9ac1d",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x20c061a0f70692748ab2f61b7e52e5ddd5e704e51de165eb19312700eef604a9",
"0x2aeb2df6a12c099b42c03dac1557681f03947ecd76426d6cb8a749dfb9f964f0",
"0x111fa84f899677752592a75d53083c3188d97a72d8aa1be3835b681bc6813270",
"0x1aad37ed6a2102cb892b98a7783fb019752cc8c0327190be544ad76165251f90",
"0x1be6d262a580b10956cd6163ef221f3d9b0dc3e5cbc7ab04b3f8f2a0ffe86be9",
"0x19fb44907e93686f59b9f17c0266c8139f8f4d8a5d212503bec1c6ef72409fca",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0xccbd07f12f007d8f30c6150e395dacffde4eae8fa51bf6bea1d6a7c421a586d",
"0x9a3428b0108143dc9c78633aa3bb37807bcd9603406be211bb286e42b58cb52",
"0x2a7ab6ca90a4e66f52e863c4b0f515148798ac8f92661b2b816902e915d8227c",
"0x179239cb6d96131ef12f09a58f9535b66b23c4367bcfab687e9a7c3c880a040f",
"0x7f9eff8cd62907b5d607140bd0b0944d175f17abe2b2eed814b6463ad29b8ce",
"0x2f44cd6674099eae8cee5c6f84e9b25cfd7c801e0b457278e83fe4b511458c8e",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x241d4acb53e51cee878b7d23223fd33311ff0aae81f4faa07816546eb732d8d9",
"0x13016b694f63245a8a9b2f09a84bef7c0711bb8838b3ad49e0b7838f6f644560",
"0x240a3ff47c2e7332534647a5a2fe278aff069cc479fa000d7c31a78ce2929bd1",
"0x1a510b683ed295b19be81ace3dfbf7cf1061b07a18579325f7cd001d38146c30",
"0x20c4eceba419b0575a95e295d84e71bd1a928d5ccca5d79a809059de3342c9cf",
"0xbaf9899a51723a56cda43c1aecd6c096a499b57ae1893e16a28908bc5dcff6a",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x162315c3b31a4d5b766510f46974ff89071424364fd69c9bfba1b6e0bece8eac",
"0x2f6a4f9489ad4e1439c806d757799fd6ee58ca5d0560d15a8f658c6eb86f47d6",
"0xf67999a01cf660e19180113f770041cc147a335e19f545e3f31a61bb6b4efa9",
"0x9146d7f035d379789456542d3d727b593a6fc67252a631ec407053635478fa0",
"0x2e44a6eb2efede0a5768d8491e4c86bfcd63b0ee2f383b74d62af311cf91de5a",
"0x160631bd9c54749181816c9aca5fe004260ee7a56fd35fb56977ef04911d5e71",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x26f7f151e37cde405da94d5b7e897e9768862af285902b590b636e12bb43c7af",
"0xeeffd18325f8754d15db8adf98d290ac816cab0e4315306b2418068e78dd02f",
"0x284277b5d2b0fd66df351ff703419da6b1aea5ee405bba09bd4a369e6eaea49a",
"0x13584c5168cf2fc77f884d111e05fa8512e7cffec60dd3a105503196d682ca12",
"0x1ebd55190bbbaae0e9dd1af991eaf3ae13af0e71fa686312224c886c97e9e2f9",
"0x13a449ace196028aea035af0cd9d5b763d29f8d292443a762d8be06b1e136dfb",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x21fa424cf90bf0b715656aeb3d02acc326cb56880bcd91602efacf66164bd07b",
"0x24694b5ba9200603bca8f52d73d0f3fea26c0ee1939d2cec8a9bc5f961cd68c7",
"0x1a6d98f744fca59c910dfb19ad89d7c25f2c719332edbbafb6cc85c190e4e170",
"0xab904b12244246c2dd95c69a28ab91d2c34e641f697b5361bd91d1625c937dc",
"0xfd87c8923668cce921af698cda67103c048864129954800460374ded5b86770",
"0x2098ce0512ca13bea1141e48f14bc691b410cf81de7f597d062465e1431c4c2a",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x4d94ebda7313ce25cd0dfcd1dde7992439daae630c054d7cfd6d690a85c27e9",
"0xaf2fa274dd5b1e16568fc4613e76c9ab4fa99d09d10105e98bd9b92b82ea455",
"0x19153b7441c48cd270b491762e96e470858714e9650aac65169577d2fc755af4",
"0x2a5c69d030248d78f70674af65d92a908a7c27c34f32f9fd2417450e0585254b",
"0x436d86f139382ffb61085560e2592290518eced5230894b4a8bcdebe06a88fb",
"0x23b40e7f1bd0b7fae8cf2ea0608ace9299b903ac8d9994f7448bc2e46090af99",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x21427832371fd1ce0efebe904a3ffae941142d4f35ce77e064e256ab5937653a",
"0x1b527a15f36d4f03015a6ff483cfb5c18f8b331a7caf79237998fb914dd46149",
"0x13d847e25b71d35789c6cde81ad9ad9c1afa6ace79ecf363920dc233e5646338",
"0x238b13365a6b8fcd6580ff9f4bf267b01366a41d7c326c826be7dfec751bd480",
"0x2fdc1ab225df187a8fdece2e14114cb71f01ed887085eed22731ded19882966b",
"0x2fc9fa00830e2671b36e8eeec5c369a6b3fc27bd96905b5fc220fcf0458d1c3e",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x101b70dd04be642aa07377610e3ee7d630bdb12e3b26295806b92e9f482151cb",
"0x1227872231f192f1c81440c79fdebe597ce8ad03894cb07ac9b3423e4db90d10",
"0x1d01d734b7090603174951fe6d338fb3cccc00c0accf2ac8d45859f45166305c",
"0xe593e9c0177976f4caa991e54fc7eeae897fb723a9fad08a811b296f3e7b10e",
"0x2fe9b7637f54d7060ff768205f9e161a4cb3bd9dcf14a8bbcb37743b6fc60c16",
"0x26ac179b67db2c393739a450573022142905e5faa7e8efdd1c717eb603a6d9c2",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x2e26f19972ff8bedefb7803e3284690f4fc7828cb0bcf3b5d5697b82714a171a",
"0x7f4790a30254f654fb0a465c42217421998843693e2c2320e58cdf31a77ceea",
"0x16adbd595b9959b8b903db7df15187e66b7f6fd433fd2ed3ca0dab8d45f8d031",
"0x1341399558f697e9e3b49e50ad3889a7a6ac1b7a169ffe1575a3172a4f33c75a",
"0x2c8e714ec99e38714e1d01b984f863c0d8e05b8c3b7ff6fbca20caacfbf3bf4",
"0xaeb4122ca96285c5eb5b52fe2c26355db417406c567aa6c35dec7fc58ba6176",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x24f5e61cac001b78c4664cdc75cd8d75bde602e45c6dac698f3b28ded5a75604",
"0x158dab8b85f4412fdaefdee4d4f1fecb22f433672964d2ee7730b03663361f1d",
"0x210a7fd894e483be032c8e6876957968f2152a9f1eded11c3cd26539ab12a213",
"0x27dd83e178817fe22e022c22e620afb88e02fb15346322b8f70bb26485b813ed",
"0x28b60c3bcdd4693b01f111dab969ee5dfa4a8840defdbf2bbf38604ce4e23e70",
"0x5c56f683ea2d1d507676f03c411a29c9925215ca5d8e7f28a3da73cd7b513de",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x1ef913d33b18f5ca1d000c2209646780c4580869163f287c4fbe537e270c308b",
"0x2f77767437b926272dcdeecd45416aaa588551a79bfeb15fc3c76d938d12afcb",
"0x2da62c50f92d8dcc0f6fdd909051708b0c8f21f966ad57ba303370f00209ed21",
"0x118c1924b687d5268424af23862f95eb629e1c699a7c27de27c581c495ef159f",
"0x1c20f20b601f89d66abc8e1854d3f29489de9a559584b9df842fb988980133c4",
"0x19078ba50370eef76a00f6c89217183bba9da58fe15d8a07c565caa019147772",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x90d697c32be00d8b71f734d1f9023cdd11a587b51581e763bac5b3c766c5043",
"0x28309a912afc86848b67f7d85be9603f34ddceac4385e702f3662b3c2bdcf9e5",
"0xb100f36ac254ea63a6b92996445318f7053603e181261d07051400f302dc3bc",
"0x1931597f6dfad68193199a2166736c0c7e874189ca4d4d2555ef9d964b06c93e",
"0xb26976995fcdb354ec5c6c50e1b29139fc3c0a64709cbfc2fa992effa833800",
"0x2dd919c2edc302e56e0ece7b8537905feaa8c6dfa6c6130f94d68f7380bca019",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x278b0231cff85bdeee497f6274fda5e07cefaac1ab05ce89f863db3fce5eeb29",
"0x9ee1dcae79dc90e4cf0d0fb5e6bdee96fa6b751adde822d30e3a80b1a5bb506",
"0x1769f50fb961ba50df8b9e03a12fc37bc965265fce93f9762b274328fd04afbd",
"0x20a99da43235a2bb30b0ef58d708d07740510f517b2eedb678a94aaa4edbdeee",
"0x11b7181ec0f9a1485d84cd91c342f70e1924c7a85f48a33e7bf8b5dba2b8b7a9",
"0x23453eb1a5e44e28b31107f29dc6a7bf4818a7ce156d2c7e81dff75cc02e937a",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x2abc91241e3275e2028d68130f5533d6c8e3d1ec2942632fa4b91a49fc762880",
"0x21653a887bf627cba0b5a35ebb3329f4602afd8440ada0050c31b249d962f86e",
"0x2ffee525440cb92eafc518b16135ca00df2ccd813bf1f9bc458252d7ee478def",
"0x104bce734fb0322de9a91058ffb340e35c212a8af5c5b6ce1817344d82137d5",
"0x12db34f34145195e64455a298fe597ce8b757426784cc53975ed5a439b91c12a",
"0x13a9a61ca0008c1b911748f5593bbeaf633308428e4e85378214be04aef88b1c",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x14ade7cef88a7726d51eb001357d8bfce8d1d8ec79472f6f2531d94792d4707a",
"0x24baee921a2b827fe96835346b85a3e94ab75b4eb9fcab4235cb9c54d0a077a6",
"0x4dfb441b179922b9e2ca9458de6d3aa0c653beca2fa7317a5d1fc4138e8782b",
"0x2efdb84c3c6faceb0f58fefdefc09e447ea2302291d3ab11101d487f3c679ee4",
"0x24d861650389f03a0da9d720f25df6e7ab3796ab597ed63d38055431655bbba5",
"0x1f8b2609f6999f6b15577697e90e891fc7b691c30c2695278042c2d152aac2ae",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x242fed5519f01070752e2e3779757e5df21033baaab86a9fbdb1a54d11cd4db6",
"0x6dff8e392f51302fd8864de5068b943a2b04fb0b239c38b679faf689d69e1a9",
"0x1ce5db5cd27794bbda0f7215bd9404f46502d2b601f74fcf2cb1a5b7fd440fbc",
"0x16aea838ec8bc6e8b8f48309cd6e783cb4a337b92728f66f701f0d5efb32a80a",
"0x1fd21a8ff13f0ef12be5a125bfbd5e952ef1e46b4f3747f3fbd8198209d4ea95",
"0x125158b21d677618076854954d977c35a6313a1f37564e36bf6d072d2500df6",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x2bb8e29cb323e3e2879d93d36e9312bb3c38a922cc6bcc1689f72793f5d4a18e",
"0xd0e2ecbd08e247ae7aff1bce2bc54ad1603fc2cf0ef32822701feeebf4e826a",
"0x2e7df0f7b842490b3f39d0d87bbb35a90cf23f3cfeef3c8a4fe4716a47699470",
"0x1d9dd609a2944aa782ecb1a08acb5c0bb857c7489920644f6839c93c10b37837",
"0x11ad269471d4b36fb23aa243904a0290608c32759020f082cda8b4d538752109",
"0x2d2f546cbe60a9822e205c3f3fd187bf89f6def774c3f988de86e4eb91595bea",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x28113fd3a8d3b95ebcf29f2ddb54c6d9ea034a51e3bd1198e4c1f4f1dcf068d0",
"0x114ed46d49b389b14c202ba1c069ed4d836c131dcec2472f4bb78f803b90025b",
"0x14a217bf8737fb3570e38b75cbc97b316ba21db8a3f316aca5a26ed35c0d1424",
"0x16c9e7a58ddf141978209561d930058233b8adbb9e3aec9702ff674c22b009d0",
"0x1388b78b9ec0242e402906d75be419cf92e3dbc2a5152df9797318e004632793",
"0x2a459318d3f7156d87e3c666a8f7626cfed0d30fca28ef7927513b1f7a294b07",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x1f3df3ca1c4b854792a69d107bb7e6e7be2f479be397de83c94cb310e8e821cb",
"0x2869447a669cafc20f1f9017028e3098b38a82fdf3cee59d9de2c888004b41e9",
"0x25eccbdcaf0a67d5ef15c7baaef8bd2a4eaa1a6d5d70385ed777c10db4796ff7",
"0x24c26970e999f27e6351f1be0a3211c0a177cdb778ead13baea9b7b4be3534a5",
"0x731afc922ad48a9f0ce9d635e26ba013a7d4ae8d52d4fb75f0f02409d83433b",
"0x217044abaa3c9ab6c51927ad1061d0c1cedc63a90b01b7b5f1c10974e66f879d",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x26cfa9ff210943f6b07c08691c2eddb1bb1d2167a417912ece724706b5c20b0e",
"0xa5509b4fa5bc8be630a2ca7c40980904713b196e36a7e9f839c4474037e049c",
"0x1c4dc788b6131f9dd132c2edffc7a46ec50b000383faff5419392f0d291c3475",
"0x150bdab59767a62d994ce37edf2c3cd5311abd0bfe541fb30968e19ee2601053",
"0x25393627a593730f4cf25a068932d447c1581f251f9a7b7d86cf9e392aca0d31",
"0x10598af7a84cfdb4c458ca7625dd8b18509491e7109db65bd8a0f80d8778a6ae",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x1fd5ba5922d7109795d5dba77bfb57ba6aef1bb6aef0baec38d0f916d35ec9d0",
"0x439026e268ca0fa85b1f6ded27c854552eed2629ddb59e6a679d4efaea6f218",
"0x1d5d47eb657ce510b9f9a17e9a49d6f0040f7f360399dab7f053faba3f06286e",
"0x5cf07dcd831c1c51062ea271b402941996f46dd9df0fbb227305a550f42697",
"0x24ef1615afe18b0ff998bf9e1fc69fedf38db66b2257f4bac76adc04ce92e029",
"0xce1da26cb97828162425a7236c23e8f4b7778bda9d7d514b1b8fc9328087c2c",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x1355e415b0db4001ca01503bc20232a49e67f0e816dc90ff18a4280437e9e9b8",
"0x11fc9669cbe3bf176da65f312e409d635dbee3fbf8f3d1d6b056b48473cb451",
"0x1d6c1910236789557b4c42df0191d2a46cddd2838ec6a74b7c308f023e71d4c5",
"0x1626f4d2cc7f2d46d7c9c97030c1b420d6c2d55033f7becea7d377541b19f57f",
"0x210c4bb43d712b400d4bae4bf8dde436786fc88bfcb82570b3e235ddc2982115",
"0x213fd23b04ea9e58ea915c1fdb460f3a0ac4b0041afe80f6ca1ba9e1a0e13825",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x2ea430efe8ee1f2c72ac009258a1ad98b87725c00f72d27a31c445046bb9a80e",
"0x2d694e23e1b3f6b632b646584e76fb7b0d35aeda598fa5069d73c75136bd0272",
"0x2ed754f34a22fe04fbb3635776e0894d21cdbf4cc6e03b8bf33787883c1a0db0",
"0xf23e64e2b59d750be3bd037f4df62f7fbf16899400e69554b893f4afeaa41ae",
"0x1cd301878d6d778480ef82b2a3cb9bcc36362d198e44c204e490cc524a2bb2b0",
"0x276d797b67c8b3d935a71d2f8342bf7cbbd68de537e32c466f95a01a5a207f04",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x16e8ab5ced34e81dfe00c24c7fbd0f4188351be2b1b26b6d63a1e02b84aea6b",
"0x1caf3b10ac5814656ec2d5852b5439f810c8dc0a4fd6ebe82d9f33134f60c7a7",
"0x225f97bdaeb6a565372c547e9d6c354c1f78fa1998cc3d92c28212ec7edb634e",
"0x2d828acba9e58e0f3adf239a3689449515a1ba244c13b0186c827d600b7a7358",
"0x1f9da4066a62e0cf290cb839bf62c9a49cf79b0ea1affe03696062ab8cb9d39b",
"0x240706e2b81b5b65343b41e59330666d2b405258c4b9b177495776c2b1b6816c",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x2d0f43029750f58be22d66c5b2963ac6b15b18c6e9d009b717044859fef9618d",
"0x14237392b60352f6c8aa0f5c08024beb882ab82dbd3e790cda3898886aa3e9bb",
"0xc8f3b03657beee6e1f94c98662b6339cfb7db5cb431fb9813587ee3f194d260",
"0x18700b515de19b3256513482566afcbf490e55633dc0ba574c2fb4efad1ef118",
"0x1c3b0a6645d002a9d1e18721a96d1e8b00217bdbea74ff1340dca47e6a326e26",
"0x2979c4d21f80db612fa98aa90bbd65e2cecc1ea431849612005a904c08bfd014",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x24509dfe357470309be062b07c05dd3df57d7cca62caa26001991820ce3af97f",
"0x2bedda6eaf8901b78a0e53e25dacd92c60673046c86deb333ce4798bcf9357e2",
"0x1f1d984e06825a3da53ac4066d4910067f6e0ff13ef83152cce3977ccb273404",
"0x1f592946ac103f244d168802c352a7e2dc52bd2e53d3ef2f4a7571af810609e",
"0x1a975c6688744220ac1e3d5295126f8ee0db7ca6283a176585e8dd5bce060ff9",
"0x1a78319fb62d99297737e9dfdccd57fe6ffe0329195b8ff713a2d6d33596a6f6",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x2fb4c2f41520052bd4498be87f445b3c62e86ca7d872dae8fa99c67b5977d11",
"0x3162b367e9f34180f2228d505e54dbb7f2f23a3a8fee14f3084aea490fbf3fa",
"0xda5cb94995f668763e7c6ecf96dc6bc13943abf3e49c55a702d37f36f79114e",
"0x2575cdf1a61befe9fb7b83e880e8cc23d82600f35598ea2f81ad1bec1bd701b9",
"0x1f83d6c20646a7e089a8fd0ad274021af2fb24e315f400dcb3d26a99ab5a35ae",
"0x2c774cf487f79664580219c9d698781249e47b432767b0cbaf5169a5079fdb42",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x203c1b59256ff5c004e70c2c5125ed51cc53e99390a8de9018e647e1be8d9888",
"0x27abfb2e0894c5b4279b39b9319fa54ccbabd1efc509b31d906a1b5f764963c1",
"0x2fea2fd0f35fffa4f84894b6525b3fec299c821a4766a78c829c2e7e69efbf0b",
"0x2451d54dc48cb608f2e96698b96fd545816fef09dcaea75c9928179373a66fba",
"0x17c5d4cbf713d33eb7c1f915dd2b0e439bebc5510cb409594adb43f94b7a0e9a",
"0x279fbf4382e4b2bc46c1a8f719063ddb4226bb09c10cd68008b37c7f32d469c",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0xeb7c1194600e6ced3d8dc88c8689704d4188dfe89970dd790bb9cb600652321",
"0xa0e776c12cd108cc589b14e8493dc743d85046b1c4ca97715ec501fcb166ba3",
"0x1a8a8487cb8a60bce5774f64f62d0bcee791dc32d3a6f872f7dc626e4a732948",
"0x16f103fdba708db2bce8b58c467a05bb8878939c82852921e94e5e955aa09ca0",
"0x27a57324ff8193272833550d82f749d1389b493f98c8d3473f1a98900376325b",
"0x26e4040378441fe8a60d1a5319aab70076c82cc203530d82e758844070c04860",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x71846aa99eae694fa17d73eae87534f09c4539fa5c3b79ea6bc56d888dfa9c1",
"0xcf75a0326b8ca3e2ad571834bc835c083555587a928fef417730656217faa2e",
"0x1b80702e894d74821bfef8a2dae36f71d4802940f63a14fe64b3081340c4f11b",
"0x2cc49fb1ce9198b927ab098ec9f454d205342ab49677037f9ff7f08e3f07ce71",
"0x1a6e74bef4b0a5b3566facbf770a14bad98d8b6feab3e45995a328135888e924",
"0x2ef1e0f0bbff91312b2c9b4710ca04f4e978061ba53657e9bc1893bdb2e7c7c9",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0xbb77a79511909681081da11a13c7abf3107373ba413ecba4d47ee5a0c288fac",
"0x23d8b2e6869d7d05101d387c1b8cde6b85b7fe860e7eed2944c50d099053bfa5",
"0x3023a8bf03a803eda3830c500d1c0e061fa85c4c15b72459475e3de290616ae9",
"0x2b27c41a943be0d396ed3630098ff7018767161fc1a24d25f47969f1a44e20eb",
"0x2a73bceed9ee2a7261290c8590e2ff679582a3a6c5988254ddf6f108f1103e13",
"0x2579c47b76db59c6206ef023b59884fae08ef6a697acf7e55b6f132fd7733bc2",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x2a5993c9c2a80be0f4b0a6f9c432e2c0604cf59d5bf5bf24609572d7d0acb900",
"0x10faea103aa36e7d5c7bf760b355e0fd381a393feca3c04450d7faf0f6a22804",
"0x2e98e92bc9904ca92c3e6d68fdd79e8bef6123ad5174f01d5dc04a240d8f47f1",
"0x119937bb5d5d9029f290239eb94fe86069f2db6bcedcda8a1028e0b7a434428",
"0x7c67a48f20850fc8ec8c735b73e07af2a08f52e7bc90084e9609e97f070cf2",
"0x2da7855de0bdab6e993fdc9ece5fadf00c5d39d58f6599a56438aa2663cc35ee",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x1a69a3840762376c3a2aec1bd8a434f2a5e410a7e92d23dbbb20a0991aadc46b",
"0x57e27ad9218a311c3627a25345c879508fb856d68b9c0aca90276b1dfa4bf15",
"0x14307851c6b079c4f3b26689dc5f62b8ac2b69ccf33f3802e9ada26718881832",
"0x26c71cfb532662f6e681dd310fe112703b78f8ce1e3c39183d5d4889ce304271",
"0x294cb0c139a1a5a345bc094d8a53f21d90e82cf47bb87e3d5e5bbd761e6d82aa",
"0x84133bb35d1cee7f10a2f61953a4c77e09c4661a5565646654ddb7fec0be900",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x1807d1d910cf5420087bc575b795cf7b77b590b7d14d3e3d2298b302c875bc1a",
"0x1df001fd3c1262358bfa1198116229dc12e112bcd91b4f3962c8136c02c57e9a",
"0x2b424b88ddb0ae2ff74d14a89099f8942df4e737c63f61f695ecea4842f9ff07",
"0x189b086bfbbb9da30885f11ff9cb213c0a353710153cadd96203c7f97203791a",
"0x1bd472ab81eb7d6c92809c07a387b1dad43a3083fe658bc88d1c3ac1672e2ec9",
"0x2bcb32de32d02f4b8f8b1d100459f537cb0e4e1f14cfe5724424107a9929bf8f",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0xcfc7baed4497a2252d54cdeaf8ce6f23773209abb5f341ca2ab616f0516195e",
"0x1cbfb6629ded2640c886dd504a2ec58f96b441839b79e54feab04260eb90b128",
"0xb3e19811df2edf55549ac304fb205cdae326abff1e7febd20f350af8752f2b",
"0x17e85c4c6fe808534124bb66995e5c663eb5a195ac1a26d8a096db675ca0dfcf",
"0x31cdebefacdf2b2dc708ff87cee0315f36e97308369e304e8d2654c342622dd",
"0x17c33efac12fd569e1ff7c0a0165c4cb8d23c279d442e7bbd073cadbe4f665b2",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x866a0d2140ed3854d5822fba68985764126345cdafbf547ebd33c39aecb895c",
"0x2bbd1e9f3114413c347ee4037d08f914d4cb655617c0cfaab77bb09ced39950",
"0x1ad0d5f7480a78dd4e048c459479d5622ed65f87880f675cbd2c4d97e7bc7847",
"0x1b88066e99b993f70306cde87ea47cab3efa6d698c9d3b1ba355b2c9f3453b74",
"0x25fa0cd0dea157ff4ed741b0dc76e0095a51fc30c799500e80d0b821aad7b9f1",
"0x208e0d0378f2c7d87a6ce8abcbd4bdd979a4d9dc80268cb96d84ad440fd0f99a",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0xbcb27a9e590ba76102f8bfa6f1c64726558f57a0027e6ddbc46d564eb8b09da",
"0xce91923c51960849a75b3f8fd1bfe1d9754dc7cd48144f964a0c91a4e08dd61",
"0x1fac92c295c763fe6b1e3c0f3604f0c7d618def2133ee2f869d2a1e774b4245d",
"0x87968a25cdbb96cd471e88fc2cccbf3e5b8bd1037b4ee5332adac070a82a109",
"0xcc8d9f53ff98eedd6fdd5c5def364a45d12ace1ff5e3626f760773b5de0e624",
"0x2b95310fe6307070e985d61390a351ca5e1c4a9f5e2c539602136fcd080f4e6a",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x28c0a6ccd9587d41eb73206239493c9150e52258eefa598382cf609d4559b2e8",
"0x165c6c313faa07be77275b235bcccbf30af0740ca973d6acce2cafa9462491d9",
"0xcdeb047d8e50b00253e926dff5f95b4279be0377669908d6759612cb73259e6",
"0x10140d5f85f2f329572c2c9b7535776b7695d62d6362ef27285485abbf9db018",
"0x9501340c196da04db07c8b1c3bc1461c228e926c9ee26f5e26364dd894b1468",
"0xf607855b7f42530fc19f6431d53035a74eb03f7251d71567982458698c93ac0",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x255be79d8de4168c44cf8a26522391ec6b67e30f2474bf2cc7c792dd25a47046",
"0x1ecb792391cc746710b586800234267adcd4d9841c4e8f1e76dfc5dd15eaec90",
"0x292470307f3a20d0205a19091cb044a8f9e58d0156f0364b21f3b6025b65d016",
"0xc3d7b0383d1377489843e884a06ba72245f0498e71043af2acda8353a47ecee",
"0xc610cb1971aaa4ae5f87fb14ed536198648cdc876c7c6e2f531d7d5d1ad625c",
"0x1c237dcaf124be157c5897960fe7f22af44d441d2d4590028a07bb249711d7e2",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x2a5e583e4003e7e747a1d39ad6027a9f347c7de946a3cfd00750a9a102c05e3b",
"0x16ccec4b4960d2331a960804ecdb0442ecb1bcddb9bab42b306c4736510675e9",
"0x2d0db3092b03a54bdb861c291c1a1f522112f9e457e3a51d731851dd59b1365f",
"0x16f1469935ef074ab1ae192294dd62af3e14ae22f1e294032222c5ae19e2adbd",
"0x67c4106d011aaf52f2539ba2f8d1fe65ce9ae081858ad629b9ebe8148cc0878",
"0x12c6eaadcc69ac3b7344b8296ea4a251facc1c96356c84e8131b662f3d5f34a3",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x2ad9831069e1f113495cdaaaf18733aa4a4eae1e850d58c06665a1c787ed6049",
"0x1a6d2b5f928d9f0a9c4022b9520d707e5eca0ac9cee84927a71737a036628f6c",
"0x1d92d368ae1f42256bfe712909a03c69a46bcd207c17461986a6de00e0952945",
"0x10ad1d35f6f8f499e64daef032a28251b50c622a28429d2b2107ab377784faaf",
"0x150225afc95fcb450fa9b2b7723479ecf7c3143eda0eaa257df4f1a798cf6375",
"0x13c542f46f245c790955fd30c8cfe7125534ebcf6df7b1d9bedbe7205eddb980",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x2fea3116266bd3005b05649b48c70089e572a077ed0f8f9730b63cbb9134a368",
"0x1bc4f0df44852b392b2a36846030f42fcd462c40b04d0c90e71129e621842af6",
"0x83b244ee2ab819a95d0c4bcdb9d915dabb6832b4dff9bde7ce0515827d19cfb",
"0x1fe91590b6942e9c496a9c696c067b3086fd707b01290a7711d4f398908c8917",
"0x2e97a6382c9007fb2b6ac74186070eda269b10506e8e4a74ba82274d154268c0",
"0x19d731e981d3dd374362f4b4f05c5ee9600b5396567615c3ee94e0a80c8cc4ac",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x1299ec83503dcd0c6aaece92e6c2cf7871b61e43318dc82a183a5039044fd000",
"0x27059db058fd253b71b341d077246299734497dc31f2159918c64a78188b85e1",
"0xf8c2dee7cdc8dc90eb57f025076157a181973f6347318feeb0c99afeae085d0",
"0x1053d862218c7ad87cda3105ac23bcb12c92e883006c3d44fa3f9166e827cfd6",
"0x1442ee0343b9bc2ae95f8c4f59cb32bb461a4c7b40a12e89b68b6990a4b71933",
"0x2ef147fa908e6186fc2ed54fadf20555ef2a1e9b3babcb6863879adf84a3472b",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x297d7f9fc303a0f583f992f7347f68b50b5bbd791acb93e2d8bc8efdc4c1ab53",
"0x2b4e8b40ce6c64abc1c906a956e5aaf5ebbdb7c98110e171adac573b81b16195",
"0x316fe041d68e38cbaa5d728d225ed818f00b2aa9ffb1ad3d9ec24bcdfccdcbc",
"0x168c57b725731fe3159d73e0d94c0ebf35171e3cf88e1267c2b556a5456ae6c1",
"0x90666d655622b3757b5ae5283432b4aeaece83148a36eb57821d241b3efbd3e",
"0x2c91164e87fcb1bd07143870286eca8a29df3678768bae50817569f48bd7bdf",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x110f901d246c2e951c579bbe91467a2950e69ecf241d8b68c4a4c98f05284b26",
"0x484e7feefee9a459b2861009d6007e8b15721afb4a35f3e5c9a6f1f70334091",
"0x11300deae6b73e9e5129595f0996c10ce002506c2c207bf672676a130aba8364",
"0xec4bcec59f43f5b5653a3cb0440d71118ce31bb60c75b9c6766b6a5e0524968",
"0xefa65a66b38b03467fe38d8669207d9fbb9f38faaf70d13a67c6bf71e1e71e6",
"0x27806883684a018d11ee2ecabb971dd9f690cc5a22ffe36ce61f17c6ea5fb4a8",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0xf4b7f229e28a7a9e7bf019b18ce7a36280fff22f7a99e60bd84d1baa891cd12",
"0x20b53ef54ebd25d7c222d418e017b7cc5e00a9ae5221191a1ff561b1ee3177b8",
"0x14efc55a08da5f53635520e21890e2e5eaf0cc1fa1fddcacf1302dc65ee059c2",
"0x1b701800b22e5765059fc4525bb4aacfac8dedf2ed37253160baa818678ef374",
"0x118648d759ffd92fb5bcb86acfdfc4bceddadd6fb1679c317cbbcf686651c67f",
"0x2601544a6e67f78415a0c2a6e8f4665f5910909c58bb2eb03f7854519af15f0",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x1bfdb6da2db944b4b79fc0ef825d6ca2acd350cbb87ff12187db30a1798d0dcf",
"0x969ce62c18f96eb6c6e3d0c5a7bc7b2b1de0cb7ae0474b47d16445f2d067cbb",
"0x13d54abe37dccf2eede120eeaabc5105b997f3647874179cfebc1c9b022b8215",
"0x27b42d0a347af048017cd6e2a577e959c0b6b6b8c2ae405cd9b05b793a2643b3",
"0x2737758ec335fcb4498d54d210c11bce1d2cf1b97b7ebb835c4bd17b1cf8d54f",
"0x1f9696df0bb5e293dc20d0579dba1866adef8f6e6d3846f42380861f5b54ca46",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x2fa9dd289eab48f0424a48c9a2b4f51d2de3ae6cf2d5e23a10b0366938541d65",
"0xfc755141d556a5eebf1efccbcbbf72ead5eecb5ad93e9814b715c4d388d7709",
"0x26127072286989c57c665090b20dc85c5fa983ae80c412fb2d8ad02194843981",
"0x229663addd9b99e225513a7d0ed1b43c0b02de97a57466355e670add9ad636b3",
"0x3011613dbd895a56a9dc81ca4f61a03f4e77c18834c6c20a51be01d4ef9062d2",
"0x5598cd7707b28488e2a0d669ac14e8464804e51537d7d3baa45a7c80e489c5b",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x16dc1f58a2e54f8f78d4a2bc67c5dd242744ff2db0ea9533a9fb3de2afa831e5",
"0x2a274cc1ef7dd9e160541523dd6b2c159fcb0f40191b63a8d0a877777b8dd060",
"0x1e8f3078f2fd0b0409460ab369a100d5a82cd93b3dd947644aa6bb8fc2f4f863",
"0x2ee81ae8b9bc0eb7d4417e09a83dd467ca8dcb6e8f0c8758b9cba555123dac67",
"0x367cb4b603a227e6b02ba57173fe7391e93db6078be2d56ef2e9164b6fd2721",
"0x184637a267f328df1bd119191fe0d1158eab799713ea537f01bebfa4fbb640f3",
"0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad",
"0x27649a3a1db5ba83511b2f9fb3785dbdf083f1f5d4bed38b76fd379545d9ca08",
"0x8f84f219781937a7bd7ed5aecdffbcad92a1d31262fe51761c94a0f19973283",
"0x14f65d95f7359b8f9f3527527ba9722197df3e698f773cf3027c00bc4160f989",
"0x2a75a171563b807db525be259699ab28fe9bc7fb1f70943ff049bc970e841a0c",
"0x2070679e798782ef592a52ca9cef820d497ad2eecbaa7e42f366b3e521c4ed42",
"0x2f545e578202c9732488540e41f783b68ff0613fd79375f8ba8b3d30958e7677"
],
[
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x351d582486c39726623750495e297970b0e19787b49173a9388a0d5b08788ab",
"0x10e1a3beae297a472a31a3b51514c664abb12ec2d15860a29d2a9352d3ce8ba",
"0x12395fabf1c14664faf3ecc72a84623c1d5cb7b5e5744e602c886a5773e5f06d",
"0x9b91873151f00b299a173a5b736f73fbe2ce543f0b4d237565bd58758935cfd",
"0x1d53cf618f93c90852172c773264b8f49e938bf22791cff829e95ff6942299b",
"0x1a78e48450798918f254396fa7417bf2c5ff69259200c2a8d53af5f2c4d8ba1e",
"0xd3d4c1eb9828c87afeca8ea128d1d533750cf555c6b70d70a8520ccf16feb",
"0x3af062fcd1ca71ba6de0ca4436f1a5a0698a3f49abbe4ecf3daa0ea2e4dc84c",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x1ad1ba4f26d401924b25657414256b59767284a692897ba5cd53a7f5322005fc",
"0x1133694747d2cb4890f4f5982564eac6019ca5a9091b302d2c10b87297041d5f",
"0x1b46c42ff1aa475972e26f559a88164024234f7b392039fb2a2171be631bd8de",
"0x1954aa0a79f14968c817000929e2e744262871011f238d986086e7d9574936b4",
"0x7aced898db99ae9796fc7191a103b9de4c77f0e08ecea6aa593974f652ac4ba",
"0x18a5a098d914f6221726d42ada7683a1605e20217a09489c9b2d84c3cdd2c39e",
"0x13e00cf4ab3b1e028165af8d41019ca20a21aeb40926592a180f9806083eb5a0",
"0x478f72938b528ec79defe09215b46320801fb752ddc88d638a48790561b4e2b",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x8ff43b0eda2134077b96d7e4cc37a6871254910ab4c58a4bcc78c1bc6ce3937",
"0x27d7fa3ab9c438b6ad1ec5a60e8ad91aad02e4d2908ff7192e5ac0cebd91f928",
"0x1e9ac8ae7cf2b40d629999251be50d9771391326a664dfc206f2abec8efbe56f",
"0x2d6b56b4849de82b636d81f2e98476bb6c35cbc8962137b615bff86f8f261971",
"0x21e70566d2f4bb8728fdb3749da99a2143a0d90bb6c1b0d6d02125aa1fe63092",
"0x1c01c050dd9b0b8ec8e5ee1eaecac1171bf69a8f3d477eb7ec3a605b010d4ea5",
"0x282e8dde73a0dc74ee10816aacc1dba10c142109c14ad7954eb7b56ca268a16e",
"0x767cf96b16035a96d19fcc57edcd92e746d226cfe84b733454c7ff9a16d25cc",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x18974b9f253b6bb681f82ed0f2d3e6b4f70ca858468b7f1bd3ded1a581ec21d9",
"0x18153fe8966abfc450a25222a6a27f6175fe851989776dcd2111a5a2de99c2da",
"0x2da1e2e775539490c2fe2c827e65c00e382a4a5d6c49a8374381d39c627f36c",
"0x2608589b9cd3f4c12b4e832e05fc5ebdcb403cd6560a8d7ece8d17ac94e79e06",
"0x5b4b074edb1366d35bf1c1ec1451a36cff351b407a8d30d563471bde491f146",
"0x856cc5a00bc37dd0217920da66c5765dea0644555e35822d7fd464d9eb38096",
"0x2021dde3ed193bdade457c9db5ab799e6b3fca640669d2f6295b4852f54d446e",
"0x12e3785f05f36bb797b2c9f03c5a55fab52e88b0550b7155d6013b706574d41b",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x118084c76d1340b3980add4df3878df4ffc6e9fe26f0b5c4e2f9579ee6fe2c1a",
"0xb9dacae8623c514c622c85753ef7b994d9102ab46620f956c26e9c62fe53050",
"0xdaea6d18a826bb2ba972ae16dc621cb8fdf9ecd531ee3c9f9d0b4012da6769f",
"0x8f2a5df6437e253b579921fc3208b3c176e5a18dde267a4f85b7afb7f79ceed",
"0x6a91d7c75e34fd43d9aa53b7d2793e4d5d70a5fecc5fd5653b162ba2631aa68",
"0x207579e33c36af2d20d759996c313f78dc339878c0a289d5db58b6b3d6069c56",
"0x25562540cd12084b3392c8cb8cda95ffc9c2dd6f8a75054ce16acf87ba871b9f",
"0xbbf47feca60b93dd0501ee0fc294c2a82b103817b4acf0af6979183afcdc87",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x1e0814ce223453b24804a1ab4ce39815e35aed2fe9f7510e6288abb9d8b15711",
"0x18f9aa2721d95963399ae18d6d95a6f81b78b528e750554eb2613d6dabbd72a9",
"0x2ea329822ad302ab8831c559c64080e7ba6bf4c98ea0caf9cddd929bbb5875a6",
"0x29910d86bc27b38a93bca80677a3647c01cb5262ed19cd0c00872925a046a338",
"0x21c0a05ace45015ea895e01d630ce6b7423f3c211d26e8b6ef54d3dfc0660ab",
"0x25e7c463042f520ed2ff8c68be30bdddbd7ea5cdd7a91224bc6a32a3f5c0fcc",
"0xdf5b7e7663197f911e0dcd1ff4237ffdf080234e9b92201538ae7db6b6a7d21",
"0x94d0fcd9592b4771d2b9bfbc2bd78defef3b6ca923c68382650f9d63ce37c85",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x270361108967ed0391a49d4b7cd6af9bdd544e8bf048658c4fab36aa12407263",
"0x18bbf89e7cae93044c847bea654101914dbdd1656483e54e07ae332857821961",
"0x4aa47a0ede64ecdfa83507a2b8947b4b587758d75239071f6b4d3d66777bc1e",
"0x182d30ec988fca803ff7def1470c06aa6a596f56710184909fda17d354d3ce02",
"0x223c27171e456846dffc59cb1a53c761afddf85582e4c70ebafddf10eb1f8448",
"0x7d46dc97554a25edb78ea4d862c48bc5a08e9ea1eb369c5c8c2e0903114c915",
"0x1bf473a2e982e519523b486d264941d8e32cbbad362bdbf736d7ac04c4d2a964",
"0x12277b175bf54c3f2b0a57eb189e77714cf21630ace1fcf44d39397aae5b6da5",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x15c0a2cfffac7feab86a185031f489a9f83e89e3337a84b51dfe6fbb57feb15b",
"0x2b83199ec584185de52190f5a415c1fbb9efd4bb9eae4c4e2763abcf99359ccc",
"0x28601b9940a312c65b02adccb76937ef645d4e451c940ad4241b2b0f4925d7da",
"0x1a187b4875be24a2420729e016901b94ec0566c8a6936978c3f21e8d611996f7",
"0x10ed1fd44722d10bc7e44824e64978d36e68d56de2a465a0201b8e31065d5c57",
"0x2c4b6867179a949d377a9bfd3efe48456f7e70f02d859c78684a3573486dc227",
"0x15cb2c17aabecf7aa0f61655a8bb35a7afd87d0e20ac38fe21a07da7b388dfb1",
"0x4dff03c742111aab3e61f4166a733e87699c1ffa889fce179316e39f7d845ec",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x17baac874eaaa88de70cc92d5a72e00be4ec0e5e99ba7cbac2b0d98cead394a1",
"0x1dba338b4779919a2fb22ba949a050c85a73983d5ea4752cd73f664fe05f6247",
"0x1e33e7fcc41f32f90de5771d69e58f4486290c7b856becd5cd967d8e7739f719",
"0x10877ad7cf0652a2ff93977d3862e3ffb5d87d0c040f02a4f98612afafc9b604",
"0x115d3675856ff59ebcc9110defb9d6c70df6af533d4b0875d0e5eec430350595",
"0x3d74b961ba9013a874e7bcdc782f478da6097537549db7e6af4702ca749dae5",
"0x2563411e29867500a8fd18e4eba3c9a2b7992e44d263c29f7e06000f74887cdd",
"0x285501c4e0ee1b3c3e6b1b29160d6ec0f1af4dc2f36a4a1e654b7b47899738d7",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x209194489c86891b179e33103a81d969c5c75e941dc30e7228c04ed8ba68704f",
"0x2c7b2835cb79c29852926900cc168b2315aaf03a89532dd9fc162c2f7ddad845",
"0x1df181c420308c5b0bf00ee21c16f248edff686e9e835869d1022dcd4a8a635a",
"0x1ffabdffee2481d8cc1233506f708d9acabc1d758bb99c329142c866ef4c7474",
"0x8955ed55c2bec07027e4355a694a9b6ae1d9d50126563b29d8a074ea65540f5",
"0x1ab4b24a4db7c5758471846eb375163e7587791417cbc355b6ce93b64fd01da2",
"0x25a3439d2838ad459270bc633164f3a68215e11217eef1d605ecfa8b1805c609",
"0x65240d63179ae83013295a8251fbe17dd988ca5c84761ccb6a6ecb2bfbf02a6",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0xc1a91ddc1b24113bf876a2ef895c3315cd1b109cfa569b79f3155ee12b1c564",
"0x146fe8e28539ae36ae921069f4af83f675f1b68399efceb18989cab5fdd36ac9",
"0x1ba8c3cfa46425412e30790090980db139810efed7bdba7a38adf75e1a0d3641",
"0x83a58c9d889b74e66636bb8418db624726b0f1374f59eafb4d269ba1ed234d8",
"0x2b812a76ea526ce18df6032192ef033541aaf99d1c61839a0edf0336142a25f3",
"0x295f6d35fb9e57a50a5d913600538030ba8c09e021c16aa8634488cc8eeba645",
"0x1de69ba07e3b9f90c87eb67b1f64660c71befe5138061dbebb752296032542e6",
"0x24734fa363e52c64ee0162a86578ca899796e89caa1a3a3533b0965665208f59",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x2d5fb67efe93e8386fac071fe3522be1dade9dbf1d1030417a7b51e3122111f4",
"0x19522e9228feae7473e317fd7958a021a0b042a81b75da6dbf7568b857afab75",
"0x2bc3f6f0df0c7305afe83fd9ef0b708e129fbe889fce42cb695b33b290479342",
"0x783e5635eea0e623bb8c406909f0db77ad4f9302d4828b51015d6512818690e",
"0x2d61b243f02e21edaed6fd2e4969ddb95a6d0da8db17d115a9a3b0d8885bccaa",
"0x55e1a09f4bd4809a86e67f99279fc06ca89a4468df1ea25d76fe0ad36ccea12",
"0x17871eed22b0cdd2de61e55ba5c9f4e37da63ed0376420bb1ee7f077a0d7a85e",
"0x20fd0af1329bbdd70d4d835d18c915d98956c5f0a4252cfb81c1fe02fe130091",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x2e5b840ca8faeba6ec3613e22eb7b071d9633c83cef659ed96b2f6a8fcc6b262",
"0x5f5385703edf7c4a388ce585a81fe7cc92ff49e900b5601865a352c61d6b111",
"0x21e83ab5e95d369ccd30cc1c55cd5844cb1cc78ffcf0c8bc91c9c0d9937a3fab",
"0xa67b7ed9c37946306ac525597f1275b30a5d004ca50258c3d992284d90d724d",
"0x214f52f9f73a2c2d5425c9610461303d839dfe71891489c376c2ea3b5d868b27",
"0x241e0d267f7d1d899656929cdebd850f70ace216d9ac10253ab720bf40da0c7e",
"0x2229153475b7a6b282e110b10e8aed1fbc2a05a37352e954f40d85205fbd8bef",
"0xf30d0b7cd8ef10e895cdfab3faa4f4c1a61a5f4eba688634540619c84782d2d",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x265589a340c71d49e1660d3dd43d1869408176d8b9110ae8c369078de8ff7aef",
"0x1bcadf844bd1a2e7f4f464991dd651b9f15630c94977d35ebc3e85801252ac2e",
"0xc112b1c56ea288e8518cc039fe050649cf40b7ab98de8fdbc56eb7ef6bcfdde",
"0xf020b9ef75af8ddd505cd3947e11a04270be15daacbfa76fa04d9005283aa77",
"0xa426601ce9415e666acbbaf2a7cc8ef7ef7d07538d84b1a53da24c19c601688",
"0x10a1af65503614381fe2003123aee9008ab97d69739dc462e72a8be04594618e",
"0x2d792f9fe5f0ad658dddadfe3893d158012d84b3837b7415e188131595b060d2",
"0x2daa42d04e0b62fcb3869031bf382c3b9f8a98f7f5bf7421d0b63c2598f5f65e",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x144c0395157a1bfcfb5cc4187f271096784dbcdbfcb6a28c31ce8a06f908c0ac",
"0x1af8cdba0eccc83c16019622667527645e94c9ce64add4415df7f40446277a09",
"0x213c7a7ad6237e7211530c210a8d6f46a25bee433bade010591e6adf42fcd906",
"0x224f1ca24803c0119ad0e6c41a64968e064a83f5821972f2a5c9d5895da4ea42",
"0x10944d95ff5a3699efdde41ead13344937e3b1b93ba73a1531246ca4b99aad2b",
"0xcb2508b0a3395fabbeee5286ce5f1839c006ebbc09d94f475924923d8079ec2",
"0x284a14b1007ff6c5c0f8f7d8d0e4b19fe2d4a7094103912134b0f563a672acd1",
"0x2bc0bce43d55bfe1a27eed426980cf9055b0dbd42e8de516e77580b9d9a9060f",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x28e9b1884a4619b38b6f8a384368c358b7f210f3412c4481a26ae296f73c5c72",
"0x2123ca1f119a35e7d4e1b323fd2942d12ed020ccff3a7ad6b65af90457f00614",
"0x4aaffb0ba008fb9a82fc0700beaab2ce39efa895acdc280252f01e31035b8ad",
"0x1f1e16f8ec9261c82443b9b31cd908015e2c2d2314629a22639af1f37e1073d8",
"0x134928ff5ebe5e019214ef937b7f7a28248285d583613ea2bedfc66b5e2ae924",
"0x87fc99e11e63deec9d55047ac98030c57a4f09228cfa7749a3e1c7ab5f212e7",
"0x9429bcc52d6c43814df5b07fa116f8875299500a36ef791b592a64e27cca486",
"0x2267b1dfa5d26e6f0a80bc8b4c0026f0204bd4fd06c7725544d7760354e401f4",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x16fb3cdb76d21d3448c9988f428d198c8e5a640035ac2caff7aa7964b34ff1dd",
"0x80dd9d263a6698479df06bc98fc64594478028b61047ff93c425b29b092d37c",
"0x165f4f2d302a24eea5f46abeec4ab03d21e3d013865085e515bebcb2684af340",
"0xa8a3f3abf28f457c62045789fdcd302f0df1049b6ec521db2b7e72e8d9516cb",
"0x2342f103587a005c977578b12810378f9014bae831809cf7ad59ef3aed48aae9",
"0x1d1308e311e7ab846e158769c12213013eca377f396061aada6220f29eb1b7d8",
"0x2563949aeabfaa782be07dad903ebff5c913893761b75a3f8402a1e2bea5a998",
"0xcb371898d8d2e1f5bbc32dc21782704a73e415e0c9f6387157b48746bbf6ebe",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x1231d40e7c6fe5bd47010ebe4f63d186369cdb6e8823aec194093a0b4cbc6845",
"0x18943696a4da551747068255f57a0437ba0ec36ad7e5c92cbed9c49a9775b97",
"0x1fa58f378160dd4af40e3b01bfe32dfd34f2cdca527973c194a53af30bc40670",
"0xc976561eeade533c5579041bcf5e8272e4af95efe3af9e5372250fdc5ad8966",
"0xcacfeeae1a8359ae9fcf831f315a4b8c576d579eae86b1b09823656231d3bff",
"0x109b0647298eaec354e4a155308192b5facfb586bc2fe63f073cd221a2106fb4",
"0x69d4744aca289d123baa0e6754c5232202dbcdfadd0ee8d14dd19a7bea39781",
"0x156195fe27df23b8184fc58a30e1a9bafcb9cc9fa9ce071163a26dccfb7c6ad0",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x20fed35942cbdc86df51a49ca26055bb25e232a42476ef06997af8911560fc12",
"0xcf20343957a55345423dd3450c2fd74039f1a82c6c02446dd64c4569d31471e",
"0x1e177139b05dbe38a56c40f919dc1f07126bad03049fc4025d77b4bc34c25ebf",
"0x144d1944a849fdc2aba8ab2a4368d57911e9614e3956d9326ca493c83050e932",
"0x162f08d305fe4f1b0a9bb1acf1223bde3405aecbf2356508841b85f1180cbc1d",
"0x21d68868502ab599c7c5f2a54d65be40ed5caec1613a98b2a98c5f8117415d97",
"0x984adb0c5263193be4027c68c6f3a6dbf7e22cf199dc4358b52968b0a248789",
"0x2883f3a940a8c10f7f347a8011b0f0d7f6e0a4a82eff568fffc7524235d1e4f3",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0xd89a340993be3d3ba07d2fa8432d412730e8ebf2bbfacbf9378c0c4d3d1e692",
"0x105e4a12836770bdbab24c85e7a63572c77556fffafc8f55a0e3f6e7383f7b02",
"0x4b09e851bb6dbbffd0780af3f99cbb707f5e8a073810b28b1b59794c8b117a8",
"0x2c8031907c10e1df2bfdd2589dd502a012a2292202e67954091ca57d21906d41",
"0x88a360cf4c5e26faddcba291dd2553906abd82fecb0ffaff4f3f544f672d703",
"0xe9e8d8ba62712e7f95840b5651f32912e84f146bbd57c566c178084cbb155f8",
"0x38fbaea7dd737c642ec414759bdeca4250d31d6011140e7e45e86c12c6f6fe2",
"0x96dea6e0d6411dd0c18e516511b03d8506c4901c52dbc2772c3d47bdbf461ab",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x2d60fb66fb133b0507b6b41ed7fbd5278c4ba9fa0679d2889da9672d21f07037",
"0x2567f444cfdbbf4d7799d5b50c8c582e1d2038a11969b3eb2b60aebafb1efc7b",
"0x2401d941b4fafe3311bc6cd9fb0bef62ad9b59e731c1ec4e6b0ca5e2c685bb2c",
"0x28747741579283853ed4e6525da70a4312769f7040db4f098eb7d9214fc8fae6",
"0x1104899fde3f530cf99500f20c4fb9d479e512cd70a15def442a4ea92bcb9743",
"0x4ddfde1b1aacb33977d4b3020db51b834f6197a18505e3ccfb37fa8a3a8764c",
"0x2bfa6913d62c8aea04ccc3e50229220efe3b9af6a568194ece56c065e3cac8aa",
"0x5cb914ec7b72436cf25adcbd0550c2db3c9c09aac565d46f96ac156fa72a90e",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x145dcc8a89ffd8fddf4e5bbe377a3b7649ab6faaddf5eb580ced3e0421b7077c",
"0x21f1b7c169a0744e49718346cbd390dbe3287f5de3897acdaaf2e4bbc1f3e80b",
"0xeeae34b5e8e48d2ba6bd062c803ced1dd1165cce5f8f0574ff7caf4e6eaf6b4",
"0x2827170c30a7f570a12f37aa0434e01a4aed9b5d37f1815029d5de89a8ff75e2",
"0xe328161a29c0376af526c8004597fbe018328d6d0c89503eaee36f59a4cee8a",
"0xd6617ff29ac941a779f907e749603cb36778fef6644b8684fa40055c8d978c6",
"0x169506e0877092fdef32109c064d251c4d6a50257ab9c032bd79801fa23094ba",
"0x8c516740479e1a852294e8cbbcbf83b4d7095b69758aaa9f1a368004dc1742a",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x281bcec4cbcefa9e18a1aca1dfeacd7f7ec527df5deb6c002f541ee4c0f2bcda",
"0x13ea58a6a82bf43f6d4c2619b87da0ce760410b68b77f694685e3f34ff47b86c",
"0x1ed604569bf581c71e4180d59a78dd48e2103006ac045566e44162656c36080b",
"0x15d25d19f8fb93c9272f10ea525e787c758f98c5bca884e6317ed21a292abf6f",
"0x1696701143abf5794f370a122fc60dafa4f0c241e8607983222bc72d1d8d1439",
"0x1471c9bea5d880676ffb53255487c1af57a0476b77eba56204a4a3780b109b50",
"0x1ec18e953909ee6e34dcbdde64fd6ae8b99817ffef4811551a27924b714cc00d",
"0x89ad915c65eb1cc1633229dd97f098a2f86e7ea44ee6d94f3fe5f08682c807f",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x7e3bb22a5d8f517b12b42d68ab707d809ce83671dd9a933313d251889a9d55",
"0x142b4285cb7ac7249975ddf59d177aeed1a94e0412002d83861ce061e3f38621",
"0x24839c6f8fade0c2ef1e248f64c4d81e324caa4ef4052916a31c5d1da484ec43",
"0xac0879ac864dc7bf40955a3f4a19cf37846fcfa9289ae59c8f8c7c174c5a57e",
"0x44832eb1eb4ac43192406deb4a37ea61e2d110468762d3a31f01f3c6c1f8208",
"0x2b3f948fb289860a26e995d14c6f8aba2089511c7ba58a310e6cbcb533f2dca2",
"0x118bfa7e2d1386301f187c1b1eda2f48c0a03de15e370b5be0f431a0b574681e",
"0x1399fb352bfce7874d22e0fcb24553b96ab59b85364c0c3c9b0135d4970c2349",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x2f25d0089300da1d286c5efcc9cf22d095af8f615b76cbee09b9ba651d737311",
"0x84eaaf7a0b07cf4992c7d05790c42cc742a7bed021c48f614b988d99f141e3d",
"0xcbb53527ad34cbd3c4d59504fa47c87eb5be078155e58ac3f1e4b3f45dd1cec",
"0x14e8e0d80d2af6efd3cc60741cbc21f6da3a42e2429322bc209097b1d22d26b4",
"0x149dc605f3ad39d4b470a132191d2739df2ad19fb71e067f6ede3f9da3172922",
"0x1533cdda4fe346f0a3e538172b8d5636d3b4b502047cb268015b2088f12b9897",
"0x1da21ab47505b1ed4358160f3cd24a01330718bb901beedde8cca37839805c62",
"0x130eee6229e6346096e121bda6bd3892aba85c363deda16ae8c8efc6ba721b18",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x1d0669bb3cb83ad8702a76855510918ef300df2416cdf04a83061a915a6fbdeb",
"0x113f0f0db699267055417d499467b7502e23179a0c23787b7e8130967c95080d",
"0x28cd66f5e2046799405a9c14282070ef66fd409507971fcbac16032499bada61",
"0x230173d8146362d28c0cc9bc2c72a64afa7741b77653726017932821c1dc9502",
"0x4b23de911f3a1d3f32366c35a7f293837e1e7e8287b8abde423b2b3ab81c187",
"0xd4bcdd5ff441637f977dba6d523ef1f6178ba245cda76e429a91b0ca994db04",
"0x93bfbfaa8f3a8718603066321ce48219b55558f33e0f8645a93a41e6f4d3e2d",
"0x24e21e25f0b3d0e754bfd0e91e62b5fcd232e756ab34cbed6b4ab709dfca551a",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x146990fff0e10b8d70a4411f57f9e74a03d2ac0127b216400b82c8c644038303",
"0x1ddaefaba77bcd9c5ba0671b0a34a4cb37b7c689bdca187d90212f188ba4a87c",
"0xa7c37e8eab27e5edcfc3d6682b0267e3d9250fe470980956f5e3e5993ddaaaf",
"0x2d81f6984b67d7cc74b35aa9d673878f05d517085812190798dd24a510b8d6b5",
"0x7c46458e45e15ce1338bbe98ed3c0726664d8ae0c965bf0fc79ae31ad04a349",
"0x16dd83567c7289d8ea0e62df8620df74f3c987d5f162b6b0a24ab09837b5d2da",
"0x21819b9d78ef5e05c535a83e7d709f80f3ab5e8d733146139015ec4e34b29f1b",
"0x2340a29e4e4d4e920f39a6a32149b54307f918a2e179e6c7288cd02834c0e44c",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x1ced784118aac9880c9fbbee28972453b36abc3d967b20e9b0a886af86d64305",
"0x237848c6b0c87f794b30cad5a3cebfe2c6c9173f7a258f4ea139252338a3ea5a",
"0x27c636aa956756d9ee04b355abe2fad8d703b1721fcf73b17a77751813c8abb4",
"0x1b40358386698e21d43bd3950c00f81d6ae340eff9ac0821a213f8fabd142d09",
"0x695487b95b15feda7188ab9bd8072f0edfcdaea2dfbe06596f8c037bf52145b",
"0x1df336831b6745c8f22a80c252ba12b24e2bb1e7fd3615cc96145d898dbf3220",
"0x264b7a66fcd41995c19f021b71fcb1abd59986c55377a82ad92e79a1165e58f5",
"0x208defb2122d53224aacda9868250ca3b39f78b13c9d150a14d75a886a1a42bc",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x1627fe11fe92ca5b0841cd804a211151ca6c0d2706b2a17ec17a7fd224a48a13",
"0xd483b82a1ed0d6788ec73c257cacba9738eae7232e365df112b15a93459627e",
"0x24c490612a1636b43f902459851afb3cfc37d71db5e9ffd247116d5cbd34f9fc",
"0x2f2d08c8cab748b056307066141837d5cf195104459a91084768548346c8593f",
"0x42d3a4f87d782326b0c097a03de01ac1698954c8f300af708fa79a92e84790f",
"0x2b064fb3fabe9deb1593d253ecc7a12fcfae3193e8f7e16ec563876f92e4c62c",
"0x22b8060d8bd295c3a201655ef3891a481e21748554dcb7613ce6c0a532628e5a",
"0x1526148f85ce610667aa96af20059f0b02c8a9d4d463b27f0711db72a545503a",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x12d2a42d255875bd671d376e499cd79393db48c414f967d53388f60b4e180986",
"0x22d0f27c6767b64adf2eb09ed595e2f2c211a3504a8de66ac01991c81c0e2669",
"0x1fbcdf3ca6f2e0739b571248a9a994ea913375db065ed255b5eca3fde587dc91",
"0x402b7640d18feac0c700cbea0d8f527a7c3fb44a110c4d7cff21deae9a70e40",
"0x27f6c76f1b519e71c3888f1ece7cce4e0f99f231ddccc7798a31b0dee0c68206",
"0x2fe908cd208699c9d8e3b0c09f5c0fd58716d0eb50017aa7d12df08b53d963ff",
"0x1922a59ac83c1e2821afccf1610aa5fb0b3cf8eb3fe3f4957bac604c177fcffc",
"0x126fc5609db3cb254a05919034b8a7f9a0f85ec5abbde6f85068607250ea0ac0",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x28db35e17bb31e5be954d69f5bf8f6838651bb6f5c80f750b6b7017643b6c28c",
"0x26dd684288015065728c5e09454535a33e1537761d874102bd4ecd2baf40b384",
"0x1895d33a312becc17090e45df74981b4fc4b220d3aaa346c7e8485311cab159d",
"0x28bff25eb0f2a5c6d007a92a7c4d88bd9c12c5622d0ecc5a509c404048b7b5aa",
"0x130136f07c7e09acd49556f3a6bf0739c9efc0a1be738453af67b31e845c976e",
"0x259c455761e6b6420dadf3d6b64eb65493f989fb3e5698e7307a6d6075714ede",
"0x1c9ac464fb08828d02006c7529eb1e8f45eef54405ed2cfaa133bd697f618929",
"0x60abe65207efd0fda7b24719d35018f7607dd732e71c05077148f3d046dd180",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x2a41f347b5f6eebe8969667071926905a3e6e521b85a89006ec2f500ef42b000",
"0x17840fa3a180177731bce340ffeb5a3b6a68b94e3f870501e787edc5a94db63b",
"0x161ec94c3f624f928eadb0e2f2cf6b16430fba680a5a50590d89005a688d9b18",
"0x22d8be171b4571fb5b773c3a548fbb286b06e2701ce99b7630866e1bca6e2cc5",
"0x52464c9c7ad14525380aaea9b06e76f03db8edd220f90b03a9feef2fecfb978",
"0xbdee83b20d91ff9a0404d8b0593879c90f7be5a95a22c8e1b157d92c3cf4746",
"0x2d84235b4f4e04262d8f246123b8e631ad51a4e1051f41f1c89cc42b61717302",
"0x3d6b62f816bc4b464e2971cc6a7c1a585e519266c4627b1367ce7963cf93d86",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x16caff6fcc165168b3ed958d3aac8d09f98f670bdbb847ec0e9083a022d27692",
"0x2cd4beaac59c5306bf76ef7e06c81adff6de4bee730cd4676e966db45fc067d4",
"0x1b11abd8ee736830ffeda3782fc7a82623ecc5afa92c0ec9eeec58177ce8608b",
"0x2c80d3430e64bf850c9e10a22f6b781fd513af20d4705435bc870ec8cbe93cee",
"0x2d2f20d2ec0e52eec9fc2d0e49fef7a2454aa77a5055ebfc4d4449e8f83bd015",
"0x1e51c55a8d7a04be4edae4f7dfe6137e96370ee2a4ed459ec524b19de646e0b0",
"0x13d4327afa809e26c8f97e36ebb5be1d3992ec72d459760bbd25659790738f43",
"0x176222f47d8c0ff9e8a967920376793dbdb9dcc3a79b44fd25e1f43a755e6b81",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x5193cbcb59713c78012ede93db828e69336a197fdd30c6b7d03b1cfcdd6adfc",
"0x2bbe660fd34f6ac3f2545cba9f717d2eae9f8c60242851657f8661504a457c69",
"0x1fe59c3d2724f4158483406e6cd62aafa121c451f13e48ab3c857b2293333c3b",
"0x249c893f9de208601de45c9769ebad071eb864524003add0bde31fef7f4f91a7",
"0xc20c4a12bbd772e0dbb929b69b24751da26b0fa8639005ff786a25ac1a5fe96",
"0x1a0750fb1d27bcb326ceb3a3065a487cf7d513d8954f31dfb174fc5ed95ce55b",
"0x16d40c0ba7a7aa232eea997d45ec4f0567fb6814677b262aadfaefc91d409cad",
"0x25ccf860fc7237cc8721aaf1c717190db40ccd65bf65d108b16f851cebca736",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x1a25b1a6b81926e968ffffa63979c900c1e82452c986ae599ef991ba214e6f67",
"0x2b344bbb50400ea76151bd0b68c3139955f101c701d32befddcfec1ca72df25e",
"0x1044e69af594eca5f9ca7ee28cc38d161d01037fe223412e2f10838bb9ffd1e5",
"0x1145f6f783af7d1e0ee3388f107ccc27609bb8314bce27b03dbf8d02843ab2c7",
"0x20ed7009a6093b160020318b0bbfbc9a9d14de64a3aa25936ddff0ffe3a3bc4b",
"0x24cc5ed4ff9d84fce95c1508e1c7852fe60a6def592f423bb79c229327be7627",
"0x1fc31b0e67cdf9efa9c0c312afe54b5158ada1511719c76953587b772f1c830c",
"0x1faf997032cbbadc0c6d30fc804d068faeccbdf7cc90155395b739e017081259",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x1197c402e5f0a49c8f9b9a41af6fbcd013cf9adfe864613c1bdecb6201d9651e",
"0x3025d698462f4cf23c7d4d8a3eec4aa8e1a2184a43020122db653afc6d0deb4",
"0xecd1d402fafa3602052ab586f804ec15f1910542f35c608eb7a247d5a960cc9",
"0x30021619d0c0b402b429d4e962cc3c2a2d00c62c131144f7b3d7f8acae6975b8",
"0x2bcd05e889bf0fcd9dc4f5faf21c506cde15c316aaca47724e71bad0cf34b27d",
"0x1b890b4097a781900b40d9c1ffa06a5e8cd05ae8fe52e040db0e7085ca46b460",
"0x8081b53a974ee264310b279468093218cd5e5edec1b7da6b21ab35622242e48",
"0xe6632e8ec976cefca5b164e6c07ab40ac611fc723e8d8a14899a4cf4be3b2a",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x63a3f8dea9d024a6f6a851ecdb21bffbfe259ac17f6793c91e73823a82f4f76",
"0x23b2c6ec9af5d0188e75baab9990f663f8e929bcdac96cc09c4c0626274692a0",
"0x9a41c06730fe53d395c602113f1607fbe01425190d50d56e9f215658ad128cc",
"0x16571048fa92024a9345a0ffecc159e76602455a71bc7e9c9c01dc50d8aa1d6c",
"0x2a5a7e76dc76ad78878b3d3b4c74995e2ce77bc126e4d17db507161b049eadf6",
"0xa23738e129c11b285d81c1c01e3f87989c87600727e7593af45607f98fb18eb",
"0x2ce8d6eeaf4d6c7ca0922c4738e81dfba227e98fc3ed24e7696ebe9c2732a1ff",
"0x22e3bfb13d10368cee5175f5e2a2cc205d28021caf5fb2898de2389123178a5",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x66c43e71903c5b74ee8e90ec30a1d8cbff7d8c85d3c7b995a976036eef8c4b7",
"0x2fe5dfcdc9335f0c0dd3d08f4e783a5ff6c2e6fb7e2928840821e6da8d91570a",
"0x9accce03257f967a24c11ce718f21167d9d71a1cb60a4f50d0228418428300",
"0x224e2a85316b67bf2dc64549c505721a7858438a00e793fe76b961bfbfb67291",
"0x29f1447b45128f5c1cdb12a334509e0a991c0d2c9360a5cfc28af420c2ffffe0",
"0x1301ae5665bd3e87cb647f566ebcf2f2eb5bec4b257a77061a15dcc7b8b34abf",
"0xfc6599ea957e02f69b1ca585c7135425a6825867d0cdd2b06019f3c9398ba4f",
"0x22e91a30a945b960bd87d7b0d8290dcd5f5b1caa339c41aef323be1ba9c724e",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x1c7c359c26eab655aa469e0f9a8cc3d8c7a8149ba9e9baeca9233b7edddd1d24",
"0x1ddf651a5d396b680828eaea1f252625db1988504765eb4aeae3274a19cef175",
"0xab486e3e737f40898d3fdd6bab09213c0056c2e090a90acc754574739159385",
"0xd0b817b8995913e3ddd08b576951bd47b45f536739fc9cc782e769fd17e0028",
"0x13471abd3a25160947928376fcd79dd5aa58672f8382745e3a040c2acb464974",
"0x7bff672e50ff1f20296b1838e5270229a7477110d9a7fb56580371ee4ba38c4",
"0x23f91ef1b8182e80c8a0f54c3a35ad51cb9a3bb61b07b3e34386f16f7f4b32bd",
"0x16c390b3fdf09c6c42e50b66557532cc5998cb5a8c15446d31813e7b70607ec5",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x1976d21aee74f79c60d44e46029a5b04fc03ebfb9bdb09a0b5dbb89f677cd296",
"0x56e7cdc08bff8d8bc12dc72af3c84858dde68919cd991bdf513656eb0a0cfb2",
"0x22b7992d7c0ed349aab7531de2f12da4fdcf961215ba06f2b7577f5d42bfa85e",
"0x10f97fcc757a0d6d0d4e2d585ea5968b3faba9d6458d16bd366d081ab65ae95a",
"0x21bc046c3d727baf6e65b568653a398aeed8c95b73567feca3884a051ac001a2",
"0xe757fd0b77219a771723e071c9896062eedbb3da05cda25d39ead3cdf738491",
"0x1ed536c497ff36f612f326f3d03e97d30abf91605ba686af36ea04c19cce4f4a",
"0x2491340ecfed3f98ed6fd566034240e64a08e5a39a468c78b31e4734a679bd67",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x144b73c6f361a4c232674a08616b36c33f7bd667dcaeec35530a2e8fcb66103f",
"0xb244143540a248840ba5fa161cbfb2fb2dab97332073042cbf8a932144d27b",
"0xb5bedd8122560caf5a9dbd69f82f7439543bbad397d7cfb4ef7782f64ea4e12",
"0x1386c7e88c5c0bf880b28eb2735e221c2a88e7f871ca5d720c99b4287c528a67",
"0x277164cdc5187613b0a6d6450b56cabfc828f20dd7d07611edccbfc3d381c9ba",
"0x16bc97ee1ac4b1cea8f96e731dfa610212aec4a193015b94b0f2a1657d41f13",
"0xb341e4361f31734af9951c20a6aace08a3dc80f57379add9693b56b047b3480",
"0x263a060ba49fe4862df997994261e665c0406642c669c32dee4ae7a153fe1dbf",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0xdf811b70cab32c0ad0aacb576fd95b23424d3686d79e36feeff21d1aa047eb8",
"0xafae979e41c0cf7d662b4cf09e93dca70c0945c6759c4f8d2c935a6084eced",
"0x21ae12f1dbb152c33213efe9cdb6044574b3df8236be92341131435152115e5f",
"0x272fd8955a7524a09f77c28ce89d58caf7d883f9e4503ad6a37c0eab6bcbe468",
"0x3712cabfab0f6f3d23ac7beb815226883f409d60d798242c6d5e9dae8178fa6",
"0x15bc41d746b14885ba93dc7d00594ea2f174b3b3dbc1acd774335405c18b154f",
"0x9dded6d75c33754be1c1ebd2dbed077c1f1cb80938f0798bb2e25b054a52962",
"0x1d9fd7f273e141e48d7ae825a6d7758e351d80c4ed50139a659d52edff60d227",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0xca2cbfed626671d6e0f2e3d1b6b2ebb5e9048c2f1273223c34fe599429e1f2",
"0x1e9bb2efac004014858166710da5d764ab36b80e4e97500d784fe5cc2326fca1",
"0x23f8af81b77d2f06d566eb0d9096c4b267f498f92bac69d622dbed85bc8a8ada",
"0x11546811642965c71b3865d830809b7f402e02d1980c3219c4bbe48e8bd37811",
"0x2b872c434320ac521ac1e14867c05d88692de6ee063f402c28cba02adeaf9c51",
"0x1f80e8d09a04ffb20613cd83ea35fc1593f9a5d8db6c846d80dca53cd4ba5a94",
"0x117c4e17071565b51a2b97908f375ca0194dd595e9e873e8c0a158b59684ac70",
"0x14da94b9be3adb3c5f7cd04dd5c58f63e74245d5a1e6fce5de3d093d476f08a4",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x2ac96264771dd5b1762078d5132db23febb0d2edb19c7b24848d4b654e9ce670",
"0x5a23e8be5fe8e01b11d0c7a1dc85c909602604b15d620c7a51e2b017dd63830",
"0x172623676d3d38b2c68ba2b30c12c5818d874d83a98478cbec0b1d27f5dd7ece",
"0xb632ee1e8730d509691580805b890371ca2d51bce083faed1615a845481de7b",
"0x2a220ef566e4d54373e1a095231c10905a2f5e72edd2b6259b46ea45749203ce",
"0x2ebf4340ee05460d8298d52260b4ebae389357bd857cb638c41b2708cc333dc8",
"0x27e873b1750916366d2e7906ffe4f42e6dd7545bf534adc73a02b7410f7f8275",
"0x1ee70cb51ad6da4513ce42ff200e46dfa39992a90447f1004765711f3f5ad52e",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x1021282efc84669e4a98956e30ad0043c6c19dfeb98d6d14bf027bcfa555f8af",
"0x1f1c2e424bdeadd277162d70faeb398d661225414a975a59be613e47274b73c3",
"0x1a71e415abc5ccd5bf268130070e89b1e61981cd54f6e5864b8cc4e1d50bb21b",
"0x29799820e28bb9c0a7bd0a2c6d6105e5c91f8f88b2823da7c57825067214dbb6",
"0x17377cb0195b95b473606c81a6bd5c807b22870afa6cb230a1048e9515e31db",
"0x2f73cf9f22e0431d5e7bbd907ebeb8553b4117ff1fc50d09fc7b75935ef41251",
"0x19cd57e77a99328260bd31fb993e7bb3fd27fdc21b2187fe3a4bac0ad664719c",
"0xd5ff1b6b5f33d6d568d9197d0df40d07abede20ae3a94a0292c01c304012713",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x26c7615e04be2355af0773fc0e025f86baab5f59d834ba005e099d95331d61b0",
"0x170ea6732c6d1b2ce3279f2d4990926fb8d279e4864d966ce6ee6c319739c2f5",
"0x2f870269a506f351fb0b9a9d677bad1bbc5e6ab40ff0afc1772f02ba395fdc8c",
"0x11986790a1cc239c92bd4b8d8a1b9baa76e1e49f847f16ede5f6398aa83e97c2",
"0x2510c2e5a39cd6c243ff590621941b221d2a2c5a79ed6e5bb90eb1008219239f",
"0x1ba5c05a828609b93a7e151338699af0b8b0aa96d3d5cc9e7d3785333fa03dcd",
"0x8648c03bd03b5f4dc3868ac1c47363d90010b9cb19933554fc7586b97b5fbda",
"0x69d0c72c5880618f66ad58d65f09e5fc488697c71d92135be291f55d496cb7",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x91acb34aa0d03afd0ea47c1d56965a9051b05eebff9af71e07c4554184f462a",
"0x2b3f75e8ca7118776d9676fe058565eb99b6e99bd23505a8fefc927e17cf5336",
"0x16d9ae82c0073fe1dcf35384c0dce87494b2400f9027ce1e64ee440a439fcbaa",
"0x2a11becd9333eb48f3027ad8f3c24fa1a0ea671a1020278ad84c863c322e8057",
"0xd569be295d5e44ccffd9d3ba84aaf6a0c178e8639689aa6c57214f00a6a9d90",
"0xa66025e45040fd45eb136eccc63e2d7fd237aae9b62e2330aaaa0bb44dbef48",
"0x2cda68234c7e22d8fd725d952d3c529b6997b68dc02065f6a047b6cabdd29e42",
"0x1f9ab3e8029afc72f56af02ced5a6b145ebc81444ed12e82c7ea547e9ad23650",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x18a2e32bb69277e0f5e82c2a60a008b3db5caf3c53a669215c0b3493b73c7138",
"0x224c4f2e98b4fa10d4ddc83f26ada461e5b4f412f94a1eb153be707470746fbf",
"0x1b2a8787e954d981add1b123a6f6c100a609e8135c0781ac9a1e7e326c4b0f4e",
"0x2da288c34f32d86d5dfc0b2dc9891091d396d36de9f70589b7beee769a058622",
"0x2e24d351b0d0e94f3e0f83eb60f2d476b8b64dcb47674290e87b27eda7f20180",
"0x14af016f9da2f982e82aec1ff6ee809445db2c6d85382f959508a31830dce9d7",
"0x91aeac9bde9ce64a54cbad523032180c2135b51ec4547ebcda08824bc9cdf9e",
"0xcaa07eac62d9f07c17f63f749b7047eaa1adda97f5716d76f23affd6d845dd3",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x554f06e31b164d9d7ada3e01c4bbf452fdccac121ca787b08ad50dd2928ed42",
"0xbf8f8d7702b1e8830bf126dc420158a624359067a0f6385068390b01d176601",
"0x1604d181baf488dce4f99bf63c065ed934ee29f0649af4dcc9ac2a2887e8690c",
"0xac951e2944f7532d4ddce72d31c8e91c0795cdfab82df338f172dd9bffdae43",
"0x24d53d9f665348c12bdc3425c2b83e24fbea3b66b0c9d119146ed5d5a1d1e9f3",
"0x1ee01a89a7ebc6b8e93f2ac2e60b9909e3e3d855852e0e113a72a118f56e2da3",
"0x2b78c3171a3c8ec6231bb7c208e5b7c2c90a85956a7f2a1f763cb6c883059938",
"0x7ca1e306d90787461696fc7e4a3938712312494329be76c8e2b402cc0d617e1",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x1febc25f88aab92179ac3cefeea663f51562f6fc631bb236c04f5ef85b464784",
"0x1b1b065eb60dbd39a34da94414fdfa4415933a6bdba5c2de470ad8ccef1b28fd",
"0x60fcebd24cc08503ac4f80c0ffb87d0898f34bdce41420e84d941b5f7d352a",
"0x2a7b16d282447357a66d83fc5aafab7d3edbcb3f01105f193954c5ed496ae165",
"0xac39f59e76b9e296ef53921ae0436ab01217493f948bf6eca12b11ce46678b5",
"0x90b38aaae1df1873784a8966f1f62b68bbd93d34b0f4c637e208f9aeaedfc26",
"0x1ba601baf813cb2d40ed5674747b9e3d5760143501e0f21e31a7dd44b7135eb8",
"0x17695ec6204f10059ae5ca72c1332bc882cb7b4e161accd1ba9ef760b7365d5d",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0xab5930a06bb6b9a78e664dc5308da0b64d1e09e6c69fa583bc737245c5a469",
"0x16ab9a5de48bf089fba600dc70d2790ce0e8f79c1430566802f97fee43bc4e2b",
"0x75df7d5cdb7ccc175462dfad73927bf5a5f465e15ad267930c5ec846f42ae5e",
"0x23e4a7be74d0f0930279585aeaa432b5c28a4a2b21e3990aa45b5092f08d48ed",
"0x298795a8af97b8b3d378279e60b276b95227e66d74e2dc66cffa1c495af98c25",
"0x133d1455b6ea278f4acd91c65906bf75f2c90e41cdbefc2721b1e96adc5eeda7",
"0x24b722af1967cddac6a1745b71aca7bac72d436ed464e2b8ce55aa2ad5ff3502",
"0x276cb6e59cf4a06ff6775a537a4b04c6b42780c9c98a51ff634804b23acfac2b",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x1044b0ed6b39096c0ff4d292c18632c909d1519149139b1cd192de01485dce3e",
"0x2dc918abffffceeb34cb17a8cb532f889d7dea98e9ad2686ef8e30936ecdb03a",
"0x2a5030937ec5690d090ad8b3d897541ecd187d2ee126fac5be6a280fbd4aa465",
"0x16961c105f85925010e0fdd445ee840dbd3370aab933ccfcb6e4b24a8826037",
"0x17262da0f8e41b6c42707dfbabec1d9f79ecdfdd25a32c2a640d3c5a4a3e8770",
"0x59935903a135cffc7c5e8cb06de7a0adbc6fe4f66b07a74172eb65951c6a345",
"0x1ea2228bc5f09dadfabf025e3d19db3cca4e448e60f2973605d2559a27b3bff8",
"0x1e35c4737f19de2debd3760ddc81e1f5857a01c42c86f4e264ba323f4165d5ed",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x5958875cfb17091058a7e29cbfe20d0d242ecdfbd3635279cd1e0c3a1144dd8",
"0x19fd165b2741329dc18d2a5b03d7b58eb3dcdf2c2b0870731a924387139033dd",
"0x11cea375386801203c61577504cdc68493716d023d116356def9ad9825be5887",
"0x2e911408231ad83ab40e44e28ee0b017a82f7e080a0d4bc1b42c52e9205ed13a",
"0x9d3f08c1d2cd4de393b703a7dd94df0540c91b59b288df6c1ad8ba0e51f179a",
"0xd8bac92c12807a3fb4b20ec11e083a88b953070c08c1ae9be28c80cddb29a50",
"0x22829b774491c0e3add8e7d2de8096cb55a1009ae9ce983b80c14972bc68b84e",
"0x2aec91a87a1731f6b2f534955aef3d09ca7e2ee2dbdb5e9a0d15db232557c621",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x281ec503552e6778fbafd7270951cfef153fcfeca0517410e495c62b81655f9e",
"0x98a3183f2ee18973943856c28e0dceb4392af147ca8b528ebee97577178bcf1",
"0x794a78e51b51af07808b643ed37bad31e6d6c68e5ef3171dcd06de598c6c29e",
"0x214a19348cd7cc8b1f985287e637e7987a3bedfa233f98dae9774daaea42fce9",
"0x130acc584954a9048597bda6395bd25ba02fce56102928cea7d5a6f520683ca4",
"0x1d09e1227434a4bcf72d8e91f5419ffd6da212a1d1ccb2a51b03e80aa258243",
"0x127397f2b156ba00d83847f03dd242007faf326271d0e2cd4f6dc84c961b19a6",
"0x971a3d373d35db8f181e0d7b26c33cff17e533e8f560d844694f853e7197e47",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x241c8bcc463ac96e3c1cc240ce83c44edcf9c781e258a2dad09d1976d9dc6dd6",
"0x1a0b489baf0a182599f458897aa340e57986dcde7bfd34738851092a75ae6e0e",
"0x102c886ce6381276fe52d15c51dbd571e94904a8ec4d4445d457d596442e443e",
"0x289f8a46d6792691caac00cd43dde74940f122c0e5ac202588349c2eee473f6b",
"0x2ed1721123242c33f23f809f6e431511594c10b0533afde3304ba62afc55f5ec",
"0xc730a9beb7b64f090a39929af4901900e772b0f817098adace287cc20dd9e84",
"0x480eb2f48521f46f5049f8d9d682d6f4060ff6c4190b2a22c40c27d0754b912",
"0x221d30bbccbb39bc23ffe2c8571a8cd1763cd48de6dfe21d7d8f2805db1e5066",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x22eff0bad54cf4f8fda9e07bfdae36713527756cff255aa481b730bd286cc90",
"0x220c6f4c23ec9272eafb522055494a1af4de6fe7456b39c5db851e1299b7a86e",
"0x18d66b43fd01a9cc88dd14b1b5d6c0d23b29ac28775ff60d3ccf36039de0963a",
"0x1f62901537c1c56f671fabbb4fc31fa743f3236c26f9f5c98ecbf332eda817df",
"0x130beece629451200a3de22eab4c45bb592aad667f9fc6729842971d4a802fcc",
"0x24411acb2c9c481c59adc41bc54fdb0fac658ed6e0b3636cdadfd12c386f8c98",
"0x2370059923938a3552819155a8b3816fb90cbde45871f6c122c190a27e7fdc43",
"0x217ccb823582bf7edbf4a6a64692e37928f2b02d79b43775abf304500dd2da46",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0xe2be5d3f9ee73557a1c421fe42cb29bdf8f4a58679a61496bf8a5a4f9bba3be",
"0x27639d7e461732f3baeb172103de2bc4a26708623919783fe54774153bdb59bf",
"0x159c005b660c7fb3551cbf624aadcec047ce72625673c866c5fb289f8c865fff",
"0x130d38734b549e833b50c550a90580c53248bb96731c0921ad6373316dfdaa8c",
"0x13ee4afd14334602b6791a7b8f49c4f4979d485b8d1b1119cb4a2a7c31a74f39",
"0x2d2647b74c63579e81a6270afc73e636e588996745ac0499dbeb6a7cf80a889e",
"0x1b884086fa3c4173be0fd5cb1c866c87e0f9ae4c3d9f1e3df630cb4c2fa59af5",
"0x2289328b5db5b2b2d00e76ff78815696e77eb19acdcb6c84279e65fcce29d15d",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0xbbd293300c70f612c8f5b7bcc6c4106246d2f713df02774a29742c31efeb4ae",
"0x278e2893fbb5d590fe623652e50086d58ab18d3015a59d6a61602b409252ec2b",
"0x2fcc41f73df0c835b0b514cbdd469af1e2b494f05269d15a6343af34668b18c9",
"0x378097f57525674b961d42a2f57a937c1fecaba4c673bdce345050d981b8fe0",
"0x15a6727e6f181a5da795ce173f1889e07f12892e13f889c4f8f6c71725ab9f62",
"0x1edc3a58673d364ba5906c3b39ff7f654c5d42f4ff94e6e75d2c500842846477",
"0x1aeddbe743c87ec10fe447a5d08ab5c73836eb214ef95a08ce91131b8e1a7f8",
"0x286e544456f114ce609d6b805b31064ab65482585699c91b9b3e83a75ca386b3",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x1477e88daf9348ea5f95cb08426f4285c654a897a2c4895333052fe2cdba34cb",
"0xc9918bbd089bc26c937ae2e0a92a1d8c87cf4480b055e43831a5e6a3acbe5b5",
"0x283c24f7bedf789f31465682347ff86b4c0fbb7f9aacbe5630021b41532f7931",
"0xb1e5f0ca68bafaf026438a4682a55c1df5d387c4c5f3e111ead3163eb5b2754",
"0x2d9da1df21f14ce401ff84b99fba07311a9da3cd7efc200695ab55b1233b9043",
"0xbb61e50ddc0821f0c03b3bed9476f580a02157b6a69a17f2afb0eff5f1e2a37",
"0x21dc1358f62ff3dc24cfc896fdfbae88b0074323dfc7b36d680edba89c470e4b",
"0xdc75868b6f7e6ec9c26221637eb789b9e4c2b892ce81b527c7da05627ec2dc8",
"0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1",
"0x8606e28acd8b2ee4c23a757886d7e99e407d177a58fb31b410ead7fbe1ef272",
"0x2f70d379513ce458231a8ee6b3029bcbbb4860ef48c104ddcffe65603d81592d",
"0x15315ba38b9e4c7a64a0844985e7b45db39eaec4c63b490cecfb19f02e102669",
"0x2a1529e4b1ca0cee97cde58af1536c4823f7e558bdc13f774e4ef3ec8454675b",
"0x2a70b9f1d4bbccdbc03e17c1d1dcdb02052903dc6609ea6969f661b2eb74c839",
"0x2f69a7198e1fbcc7dea43265306a37ed55b91bff652ad69aa4fa8478970d401d",
"0xc3f050a6bf5af151981e55e3e1a29a13c3ffa4550bd2514f1afd6c5f721f830",
"0x2a20e3a4a0e57d92f97c9d6186c6c3ea7c5e55c20146259be2f78c2ccc2e3595"
],
[
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x6fac61a13c7139a37697a657fafd9c12611f196b60aab2342eb6e869de7069",
"0x27b4b4ea2ab70bb1a791b43c0571329ee6e44da480d8f0bfed4eb43125bdfdc4",
"0xfce2531c0dd9b1906513da21cc6442611222f8c05b5bb5ced0c5d392a1b4254",
"0x2278afba888b07c659b7d537ef4f2da49f03e42e6fd4f6ba90966b2bd89291f",
"0x456a8c01bcdcc91bda80b7c97f7e9019009163bc2613446a40a49fba3c70ff1",
"0x2e4c46b8f3ebe49417334ca76f3dad782cb15d40bd4fc143df9937aae5fdd9c",
"0x2c13f0f7c421c96b47743df05ba0a84d302823a72fa019c251cc653bf9fce8cb",
"0x57b6bc405c5ad7f6dba556199efad30bf33380cf4bf74ec23214edd123676a3",
"0x2d127c7a346cdfcc822076c8df679eb5cf6bd0b6a1fff70f753f1317acaaf8af",
"0x1a4dc6959d65fda6047532a57790a1426499672d67b10ea360603bcdabda06e1",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x1ab539242bb16cb2ca4984bc82002d07c6fc29bd0d9a71e348669ec4f909e567",
"0x144bd8b4ba25cebbcc44c0847844f5d945e389efb61cebced8ac7740104e2da9",
"0x8325106daf6927a182c4d83e0bbe039fd390e2507a359747a98d35b41bf57",
"0x1469c5365c13ba0cb10b14f109d6893eba3239739e970ebc50b63a9870da0ede",
"0x111e82bf1fb3d4458829cb1d852b66f7c2ce4079ed210c88374dacb88c69c252",
"0x2bd6778059c21f8d5df3e825464319ba8d9f0fd7b2bdc4525ac788061031eab5",
"0x212d3cc6c2012c922fd9372f6be58aa0518c392a9e25338071401daa267e36c0",
"0x267547f0b00c32e85957a425dd05961a02626ac79b2eee417af0c450646ff99c",
"0x15f1012eb18a32c69ac392696cc974530f711109a197501b43d9b49c445d9dbf",
"0x24e5916738efe20b55496e3aecbca9239063458c2c562f3c0c2ad45ecb9a0c27",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x537e9d61e32a91ac981e5442837942833efed46c25b4009d6622c1d5cd67228",
"0x2409867674021c13c26db12dc4687258c8a7b8c39ea9e5f0e538c9a5d79d00b1",
"0x12dd0ad0bbdad721a2bb795f4b54e08a21e4e5043e30bb1fdf1e369b45abbb8a",
"0x194d2892087f1485580dbd9db047343f73d71741cb1d679264d0f15f22011a17",
"0xce1f30705772a51b72eaffe307f73c59d16cec505e28a06352fec8497398b6",
"0xb4c42bfd8b2eee4229dc6b4b6ae934b6882a560dc0b056952cea95e04e84ce8",
"0x2831274ffa49361ca9ad0f3687f1fd840db43b13fc4bd747fcbcce877ed78fec",
"0x11c3faaea57cd532f952f56dac42a8d29c72c8d1b29459ec218d5280c374e141",
"0xd01440afe63c28b5820215a0a082fe296ae749a3ee6116967d46c4b9d59b77e",
"0x27fd7799437558165b866c1b89762a0b94bf7db886b158ce62dd2ba01dc6fd48",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x2aa5a2f43e0f4bb8b52041f635ec810e7fbd82548dc722605bf2c15e7b2e044e",
"0x109e17fad36368fd93917a9c4919820ac8620c5baa64d813f420f25f0e97a087",
"0x1c6178a12c2d4fc816077f0e4825fcaed9b6ddbca03d665be624cbef3df6c10c",
"0xc8b545f3ba3005742d7867b42b2acb3895868630d4d1ca9bd2e7d18b22f7b1d",
"0x1cf272cf45a39a8f47599447b65ed8ec169b564e656acd8720550f78b1aea9e9",
"0xed81d4f2b8cc774767ad184b89c02d1cf3aef1866d4b8df571a8feac7e1fb26",
"0x25c22916d7c3d030b6207eef339a432d2f2a485a98a63fac53be6a93d90cdcc9",
"0x140c2f65889d437a0736acd2164839f1a951aa1e9ee18258b701b19d0f880820",
"0x19b9bf03c47ce774ff4541d66232a3a61a1eb767c37ec93730c2d29b43ec2d0b",
"0x1464a2e5c87714bb4afc1b5cb90f1cd587ac7f3133e7f4a5e45d0426bafa3946",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x2fdf0895b6e7dd081135a74466610d02ec2f5e53d065f8f28f55626f8984590a",
"0x2136a6254155d5370c654be03d5f2ea833abac83f3ee2aa86080b4c812f6d9ee",
"0x2c25045d4ad7cabc1457656efe3091cffa14b2a3c3a74cde1619658015d69a3e",
"0x35edf90ee5ee2937a2258e02a11d996be7d2263c30a8111a8f461b31b61d756",
"0x24a6181596fefcf6b89c799218467001223efd7b39880e0b241bac300d20a3ad",
"0x29dcdaed731430d9695b46313d84713e6dec7b565f79b94b2cfa3dd7e9e4ea51",
"0x1724f4a9b1696abe55d95e9c0dc048d1d473394ccf983f198d9e90d2c73d1b8c",
"0x1af69c74aae418d0fa8d9c030ebc68c04e608e5a8cc00a35b1910ddbc6fcf143",
"0x27a0793076b09c2b5e775c8b738f488a11171c0066277483afa7fd8c1dc5bdb0",
"0x1d4ff6c75f1778615e31525a57fcef7dfa5b5d84382b5efe78fc90625f8e1e12",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0xfdf45f1143c7650173ddbf41fd32b101ac1058dcb360e4f55fb042d86b3bbef",
"0x28605df321f1d74a93860493ae581fac9bd5dfab8755373d8bbea346601a2a1c",
"0x2894568db7debb47fdb42ebcba7bb4c2bf391c73c0ea435ff611a9a721a2ab09",
"0x193887de99914c911549cd4c5a402b7b33e650ef0009d7c99075bee089ee532f",
"0xe5688ca400eea76906895ad874136e390c7545ba17d0b64b9da48aecfd53d91",
"0x2c60db3843ae2171a20f4eeddff7e6cd3bd2b06cd8d39e97f93b895a4096371b",
"0x8fb4f2d9d8a12c667625b7df6751d25d3409df0443411de74f779e90109ff34",
"0x4d7d91e3652705f015e14eefc3aa412c707a8615d7dc336fa2da72d1a1802",
"0xc60ca70bd06719bcb51c3a8664b73f8b921234656168e68d4ff6e9552808d54",
"0x1ed054abe9f3b4e19cb8a439399c5ff5f6de90c8463a09b82da225c567d05095",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x2b3d78867b390b2fdb654d68512c316ec959c5b8c9aec49d5fe74188257c3b6b",
"0x19f72308eb341f3328570cdc9f78fa3838e628260d6e76bb3b09cb4e5136545a",
"0x54c9fdfc6bb12bd2061b153f433d828dd2ddf02d56e4d6eb280f19591597d9",
"0x20a858ce8c00fe452359acbce4df9110ff6c89a362ff4c8ccc7f9da470124a1c",
"0x1a55f3dae7d4d14c6eb851e44463ee0da6e66b0f56114b8f46dda9e717a9b1fa",
"0x65d52f3291af23a00e2d058bb6ba8e17889f7d03bfcbc5234272ae8660abf31",
"0x278715151d06026cdd68f4bb0fee4b041cd0a8c62bd5faf71b393ea9dc3bcf2b",
"0x9c6ec8631ac5a417f041efe2951033a622baf01b9f1630c7bc093ccd6f3fc60",
"0x9c078b2310e182f40304e342c5f965f8605102931254955aea231962f762f75",
"0x22f4faf4ed2ac6947282b926253d93751ab1118a05d1466bf117dc853dc3c532",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0xf24da597b74c3677589a6cf15426219cd0e2c1a60c9acb4b9764b8e5b4fb5fe",
"0xf39e91701d900bc7ea63b7f0d3b753cc31d2cf6666eef786a6400ad04515c96",
"0xb41187c60cc3bff1020fc4e647452ba940a5b3d9ffdd1b47ab613a515df66e5",
"0x619fadfd7cbaa89e7d5558c4d23275665531928f62fb14cc4aa42605f97a1b5",
"0x285ed3287367338bc9387c83fb8987cadf1b4ea7f1dc6b172e924ee0fd2ffb87",
"0x853d29d7e18010d04607ed8b3089833d55166ebf58aef558b3642f29ae2eb31",
"0xb1d3737cb97c59030221a7d5d112bb755d096d8766242158d0bad07bed5ba9b",
"0x272b60326347683fbe6dff2b97289dfefa1be8238526c8067ee0a126942ca6ae",
"0x2c7ef420b2bca189f6d7929af54403354933d68446096f3cfccd12e76818b23b",
"0x10fa5605e0b680e055175664a979aea1a45c45057f452e5b90cd613012b70508",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x2ad6fe66fcc8eb73e2dd7dc6a2186c31107f8896b5f8c7f9ebbac9bacffc59",
"0x1db23b49760ab87c22237095db005ad9b792ba63647031f2f5e8d0c66ca2c833",
"0x2b51ab38d81609e885b8d8c3ce799cedac1febdec5e27a205ca82b010b3bd9f8",
"0x2bbd8df986114303d59bf8a408982796d6f1809269b983910bb6fcbbfa72af53",
"0x3516ee288a26a7555d7bc66bdbec4203e74c105513cd8be87a99c035a176c22",
"0x21161b2869e0be07d85e11051ac0d8894044cf1b4715d5dedd57cbd6aa48b240",
"0xf4723c169e787400b2153bac8a074da0d992f44a8558a0956d563e73ac03dc3",
"0x890ec1904c98ba5b3cef6bed816850fdf6734951b143faa0c2c643a1c1368b4",
"0x1453882ebd23e2ce3f5655eb4f2db4e7d6dcd892a14e3da655caaa5f45a2744e",
"0xdf69ed4eae9a6ffcf54a77d8d8ba14541af9d276327678b71e7c49c8deb41c6",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x84cfab525ae12db3c30220f978a1b48bb652c2e47d1f5f4bf1cb3d5ea4ae0a1",
"0x220ee2aac4ec50cf3a51d76ea554c6960befe1a9b946be4b58cff8b4d8a16561",
"0x9d60891cc06c285c3ca3cf7a78e37e2516e4d0ff503179234ea12645848d45d",
"0x2f51338183dfa99604f1be042cc1dec8e96e08c7faf7bb3b7eb860dfdcdd295b",
"0x29fb82b7e1ea4acf9d2ca8b32f27e68d10b27214361156770bfa4732f85e1b01",
"0x24d4646bb66688b33367aeec4cfdcfe16b7d21f47f1bb1f88a25896e526ecb8b",
"0x2cdaecd1c5653769c095f9ab2e0b4131a3dc4f581954fa91120dc7864a5d5b5",
"0x2e48eb6f5a9dd830bab11e8f49f7431a851938335f6af547bdcde3b9a2595913",
"0xd3d729c3d04c7f9967a7f3ce11c053d5a5598f0847966dc9840eeebd9676b11",
"0x2c9c7d8f5c11a1cbf89ab2b794739a371d818f77cc71bffc6ca55d4472648f2b",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0xf330feb7fa24cbfbbafc2eae5d109a2bbe9d5358ec7a34035d728c6a531b17e",
"0x1b4af72b65b66913013263c37d97ffaddbb8a824b34d45819029b0867ccfb460",
"0x2ace1ffd40f56f145cea9e679db6c57732315343423ce026a8e9275e888307fc",
"0x1c328a5168d04cdbc31519e037fdcc5c426f9a6990fe80c875d625880c7d033f",
"0x1970922d81c9cd97d3030d53733e33e3d046684219f4960ecdd0910f5aae548d",
"0x76fcdeddfca38e6bc4c5e872eeb1628caf23d8d7b966d97963f38b8b55a86ab",
"0x3e273f1f05592ce120df7ff9ba32eff1c1bc065b149c2c2a7986c1569e4cc3a",
"0x2b1f8dfec05e8d4495fd0759474932a003b11289a3440792a48e2cb777badf6a",
"0x126fd80bd8f9f83f00cc51cde97f9e4a3bd540c93921e8f3603c0cb13f89cc9f",
"0x7cf5007a4ecae9f4cd74689126175d8a81f7c51a317a2c1657cfcd533b4a57a",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x18793b6ef20fbe077cf212e603b2a491b8b9965510bf81c85b4cef874fba6093",
"0x5bc7621748131cb19ae5e7e6cfa468344c116dd37fae01e1780381f9b1ddebc",
"0x1aa859447f3acaff5c15fbc24bf7c164faeca846b555b02637fa84a52cc9efba",
"0x28c3d01915f85693e04821e4f2ca799c62b1fdc4739123d8dcdfbd1c77636c1f",
"0x2c7f8527d2ad7d02e7046dbe690997f033e351fd18d357089e988e041223f15",
"0x126b669244c7ea73d340ded56f5edce3632a0a69b9cddede297acf2f072db9c6",
"0x24f71ee920c1cc2790112e7a8e9d3d824255420604fe31b331e98d2bef539781",
"0x182fbdc24f8599ae291b3e8a96bd15251396a94167c8e34ed1f86069c067f03f",
"0xeab7f1b18721b3c154fb3b7fb067c4f7ec18a50fa3ab3aa5873a408d6d8cbbd",
"0x2012fdfd4d53aadbac3d7ab9172a826705d55e5862d1be643cd4449e1cc6b06d",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x140490ba93d42481632e9924a725c65bf59f7e4975e98fbdf486a9772f4b6e8b",
"0x2adfb4e0a55448609a06a1ac31bc5d06d74c45a4dd23680923d985b867f054b9",
"0x2035a526748b686ac46231697cc52fb4c6d8e48c4314cb0a1ee08eaeb43938c8",
"0x242ec6b33cd2c625d1ca2833159053a0e9beeb37c59ec90e52d40c983e865096",
"0x10f8808d7f88620998e3f144046327b9522a07220a62c7986debf2820accb611",
"0x5d4d8a6023401b798a1b296dd42c9010da081b9e6073aa73dbed7a98bef4419",
"0x20be6be68c47dda41e08c5f858520b25c036923b978fa8be6e870e85fcc16ac8",
"0x39240da2e14965307bd9be9af5c0cdda03a4019f86c45bbbea90f40afcfc500",
"0x60457249c4fffb06481b95457ec48e2b795dc414d6b71350ad08b56cdba7c3c",
"0x239ebf95f3d5909ff12820066059f1b999f9ee594dc03af1fad6e0015d698e72",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x90738838c7088a39b45b7b8466e003c1d0b85fc0c95153e85f9feea552cbed3",
"0xd0aa07eb53bc77f6a7c777fd33d11e4eec54afb97da769f937310f797df2469",
"0x22e87e33862f106af8bf1a6ac33f69d994ce06f021ad32236f5529eb399a8ef",
"0x16a3ff860e2110d98eceb0f5e7946d207273ff9a4f1e088a009f1aae19c5b0c0",
"0x13e35cdae4c6ff35a681118ecf4612503081b2920a59f54cbf5603c5690ead76",
"0x11dcdcbb80fe328963d887aa5443a88e602767afcff3938a877ef8b5e6b62084",
"0x1440ac3cf3a1ca78709a2a97a0255d08882b40ae287994670dc7d58d7b929c71",
"0x9112aba3d285034fd7808ce5c69caf188aa2192e3143ca73ce3ad404c503a9a",
"0x2c8eb1b5f21c2f320943badb09721ad68f1c2f3576531713981a905daf415450",
"0x695acc1afc2070eabaf2e2279eb6f11d6e24c787b37f3a311f2bdac5cf0b160",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x1fb55d0f07f478f8d6f5a59e0856ad2bb9a4e1987cbb36e437895230685ceef5",
"0x24ffa19b717061f29d7befe633215f277119ea89aec1326f9f7e2fb3773f3a5a",
"0x16cf73a3eb3a86fe74cba7ab2b591ecf57d66ffae3113107298e11f21d7f69e5",
"0x115c7124e48b479e39faf24d853540716cea1bf2fdc19fdec358d1f740c1f874",
"0x1587c165c3d5592e72a8445bab791271ce64032bf746d66194ba23a413116cad",
"0x20677bb9ac0210a06115586f21fdcd1e6b28e8a1a8664e48681bb077b75e001c",
"0xfdcb34056ef1d893287ad074ffd8e4d767ed07f9ac97b5de1f34d8e3dd1a651",
"0x19ec313123a0d8e63b853a0931c9a99b14cc775f1c312bbb13d5d53f8818b79c",
"0x19c0eb17f727d16dc136af9e86888808b870b5e9e5d9e3a3c3f0d9431bdd5728",
"0x2b158fd09d9bb317ce4378cf6e0d574374690d42cc465100ac3f9a6bac9b6907",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x67895e624f72c2ee73f06438d1e38b380f0259e6a04047dc2ee474d543df74",
"0x24d801233a58b2016b8c6af6bb88cdb17e194fbd8c619a7d844ce681b933d5f1",
"0x18bbcf6fa75ef7e68070f388815361f028acdf41c8e0d9f2afc62b8bbb9ab94f",
"0xd8f16cc1dac32ee244cc1837b1ba594c32a38e1a594a6f1367af545463db7a6",
"0x85b04652f4427e9220976032ce4aae7e1eca676f0c169f9570bf91014ec3d60",
"0x29b6e637abd64aa25e69de1bc8bc2061010a523a6319d49c8d908c46c2e76112",
"0x686bc450316a122c312fde6bfea7146f929091962bbe3225769f767ee92e1f9",
"0x1c7db281138ff861643018caafaf569efa4f7d1dd5fe8db8115679c9d4e464ba",
"0x434b9adf694ee77662c888fe50a3f24f9a680df2fb6f501422589800c123cac",
"0x26bf3831811b3222ad4a14f3b9a5357b756702139b7d8e7e2bb87dd6034b352d",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x24b42bac7abee89474ff328bcb61e4ad5f128773e068dea11b88fc2ea6ab66b0",
"0x199ed05bbee1131c4dbba92583a02fbf9ea30aa59c7f2fc5bd5c0857cedb470f",
"0x2bd6670f967781e74ad00648e01596abb5117b74adb95734ade1c81fd02d100a",
"0x17127e11451908da53f67a87859373b4c6db941086091270d35f7742e286bb63",
"0x292010c36ff554b02f56a128071f54171b237591087f805189af62b616205261",
"0x2f6af6bf3c24ccd04480e6490018b489284a951f067750f4e8b461290402e3c",
"0x11ff6780b8da3672a8b9eceaf9d5ad240bf0f1d91028f3abce5147d0608449e7",
"0xdae6cefcea61ea52cc1bcd5bdd0c9a4f1cf123109cce7354405dd38054a8b2e",
"0x2234fe0dad3dd0ded7a39050f4478ac43bdcdeac99cb7ea75d61a66c2382c35f",
"0x1627a2a755f77f83d07a5cc58dc2aafec9ce48a85427f07f813e217e7d3e9272",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0xbc958ac5faec064de3de070d9605135bb3bc321f74b7f4795cfc4cdd4f64c7f",
"0x1761972f9f0d7d67e62f476c88b521ebe60cfe3e1aaf50580acd20f45590507",
"0x3ae68549640072b1b75251b5fe4b2282191f235ff9a753fcfccc995a3ed3734",
"0x1d3a95b2449e1d227b3cb97854bdfa5248b78bf8acc15feed87036a74829b12",
"0x1be688f94403019eb20b49acd9f201d5b765853301e9f30943647cdac98a983c",
"0xd40a2c767f9d882eb478793e2e146af99a620af4a76e6f3429d6259149311bf",
"0x2075d588d996d67e08cacafa27bdfbb6ff08a0d97d2b6470f475b87c034fad40",
"0x1db5acabacf79eef4e6079222f548fc488438af4e04f5f8e64f37a80eff37aeb",
"0x14042fd27044254958665e0fa0ef7ec155c9079147eab6fc55c9d8c35d433a04",
"0x21ca73c94e245ed00ec13dcbb943bf4ab0ae1c29b0f3c2dd27c7ed414a39c2ea",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x20ddb53f4160aa862028ef9ffc0ca24edc8e7ce304602be7e8db7a7ea7aa22ac",
"0x182fcdfa75858b86631ea8d0e0308f3e1202f77cab67f448c118d2e47080c137",
"0x28cd7a17b0f3349700263450f631d80337f6f6e490e8736b4c322f77c6eb94b5",
"0x4a6cffef8bf0db8c769ef391c25c8162ad2588db68f202adc27f23e01199f97",
"0x1f208c20855afe52522395aa73d971db1dc111dc531adef15f24a91fd6cf7085",
"0x107fa0c5c5aeeb26505669eba119568c4e249d7c16da6fac168de7abe11b444d",
"0x210dce59a46fc548ea60317c73249bc85062f0c2cef2944df4484f967c6248b9",
"0x278cd8d83323de48695c3da57cce026e001525a3dd65bc57ca2612b3c6f1cd82",
"0xb9cb7e4dbe036abc7cb070e610b96d61b7fe2bf29a4aee59d5f051bdf1b942f",
"0x2aa13fa2731b295a9974aabe82b9cf343d27373cecdb3a83e03e0aa3af07baaa",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x11e4ba066ef8a6cb251a9704dd23abb5e8ef31ffc2048d70400ab4029486d1cc",
"0x23578b304fd7b3d28d886e3d71f029c849885c84f9488e5687e5be7fbc2d2e4d",
"0x143068c60714bb1eb26b0991681a9117decf370a9e1a24ff5d2163fb6c8bb770",
"0x1a42d3af21b7f72faee430f085becc8598c057127907373ce297e1c1493715a9",
"0x260e79c967c0d5bc720f95ec7a7b088051dc85423f798776f2de0e8c26606002",
"0x2314b014bb5c57a4217f48112e9c91186bcd27feaa9a1f3800fc6b2fb6ada2d5",
"0x10ab73560f145dd61d66edf15e597c73871a80cf0645b714e6e7268bc1b59bd2",
"0x2da780f43e972a1ea7844b5cffe76215f0b86f708c3d0ebc758024a3328c67cf",
"0x26e5fd2c13423aee6c1a543b5d4fee91af5ce83d74efa84dce6ab9323d1644ce",
"0x91cf8a0d9aef97c341241ac92fade04f1f21f20c9af67c55a6a63626b73befd",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x1ac2da30c9db6a34995d64973ba9137283144b108b9619f678cf3f4a95c096e3",
"0x11376660bfc8fe7104c949626d350f6b0dc1b37973819e4797017487619ec25f",
"0x21a72bfc29af637d0a76681e97a310e9ad1dc8b47a66598807e88fd34a46aa81",
"0x1d61ed0d0221cec05abe9d2e8c0f72cb74cf4ec2df3ed582d4acfc2afc972f13",
"0x2cf2377f25f134cd525ddc0a210ae1edc91adc51cfbd451a7b280d332463fbe0",
"0x128d871cc9d69dad9adc58ff843d01210527b2e434fb21b3770a9a7e639cd55e",
"0x180f7db2b079ef5027f9e517057b6186136b6631556ed4979d115704ad305729",
"0x271f62e52e4a218aa6d6af3d547117c04b4c082c24950714dff89dc0ca70cebd",
"0x1c33419ecb6f7066567d7fc5addff3010852e87e68f89d6b6dbce38850401526",
"0x1a75ac0eb3ff4f7b647206b926ab9b6b70e54815c7d169de9dfb34b4d9baf9ec",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x1662417df464715005ce1228264c58708b62a54eb3d0300c7e2ed1017828f1bc",
"0x1bc3d8189b4c0993407f585a4e859ff2d038b607f678602ec2ee5af423dae356",
"0xd1fdc7177e273bb5962f8ade3aa5d858ed7fd9bbd22b2d9856348382e8481e6",
"0x2e847d92b4b1cd7198df2d2bd91b845c52b9d1f25d685bb54cf43d7cdc06a89e",
"0x2116ff3bbe130b9b1bd4b76f1cb4b4d7c7b472cefb4d98dc08789dc993aff289",
"0x1057a54ade240ea545bac05e9707460d7f0e1930cb04e460e261852a5aee96a1",
"0x24c6693b4bafa19500e73514069e278c2abfaa8370d62312ac7dff2d8f973327",
"0x2cb268850f0ed89fdce142c8511d2f583a22e580cbb3d0790e41bc7e47420331",
"0xa731e96f407cbd92e535d4a18dd9981ce5c8e4ab15bf7f5eccd29d831b0712e",
"0x9f9e3fd0498d86308ea480d5ffba80e367c19fb4a78b11712dbab0011cae43b",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x4670b146f637567754612aecee2b9bfcb842e7d6785b7904a3b1e37b740d4c0",
"0x3c5e0facfdd5fdebc0255a4f78af5fc16c82892038137186db5687475ee26ca",
"0x23a34dc39f0b7bdf631f9c88dafedb4bade20015c869fc463a25b7c483254b57",
"0x20a919d5f1fb9b22abce924797ec204d7cf534a9c5e908e57315992edc06062b",
"0x41f1d89022bcd40dfcd978191b200f8a2b7adb2168f3202b4f2dcce8726d922",
"0x23c914f4087c43ee789ba6be9c4b99fb032b7b5f65ca9f3af46e14dadc38134d",
"0x2d61a559f806a5e382041aeab1d5456dd212c3018ffdcada5235fd842f37ae0e",
"0x2e5457db2f94992120c5c9054a6a45974270109e5c6b5a4830e175c812549aa3",
"0x9f4292ce6a22415c7f83c120b5613b9b66fae13bc8d1b1af298418be41079c3",
"0xf82a2950fe7f2169a76eb6c5ce246ded654db2f03ba27e88030124d9ceda7f0",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0xc8a9b44c11b429d1cb9eceaf7f5501e9f0a400fbf4f0ff3fbb5f977607542f7",
"0x116275de531eb4f4861812d5dba5dc91ac027d187072cd9aab4ebc5c316eaa0f",
"0x10face39f20b71707fe83569937fa20ccd528792796bafd01dc9e094ba7336e1",
"0x6cc30ed5380e3e57cb30f3cef40f3c49819eebd7784a7b0de815fe2c007956a",
"0x11e62c7d02773e2a4bf5e2d96b2e2a7ab172514dadece61b41632f613336200c",
"0x5688b27d4a2435fb45c8d5f3743b0b1cd380ba6ddc95abb6f117aadbdc83736",
"0x22e95383d9f4bc94e9e2be09ed243d6114041ffc729e7edcc238dd82c7d5ad19",
"0x1dcf7620094c223d73dae01624272a7706c44ea51c959df302fb6e91e70f2501",
"0xd686d6407ba6f204fb927b3628ab5becc48de21f3979f6818cf12b76f7a89c1",
"0x4059e8835ec958751f897986059ac067fecc5eef0911b714170e73c389169fb",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0xce22a6f7aa9168150d064857ce6f891c975c3191bbff919474702bf4c8d813",
"0x194f2018abf3467e78243e36ce971440b9e8aabc83687a0851c048d7eea72729",
"0x29974bc9d401f128049f4732d6610eb9f269743fa28db231db6ace55216d7764",
"0x23ad853475090c61403fcef91ea2d8a36afe29741569acb39f2e5333921739d2",
"0x4efe76826f38d11a7a761748f9622e4210ddc38454bb5329eb9cd5ff5bf4556",
"0x8a2e45b2884b3bcb463f58ca3a7e4f2e7f16aada17a609bc358e339486ea6f9",
"0x1c22ab2592802c8f64a76cbf083074d7d72de9bd3f8d993467b00dec27c6e28b",
"0x180c18b59f0dc43c04da21fa47b4bdff8fcd6d845d886f71855c212307514f7b",
"0x146346178cae4f0bf5bc9dcdb8e1bfe21a0ff0d80abf33418c72499e70aaa225",
"0x301de4fecad713260a57d4ecec83a8e4966d1b89797805c4b8f2b6be9561d1df",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x80ff1bccc78688253119861fa90b44fdac2f5d2708a1be1225696d47db0da7a",
"0x2e8300243648b888b59914509ba219649e3f28cbe190cc3dfebb1c083a7a7fe9",
"0xcda045c07fc05561a686cfa9e82c9fa0774f17f34450dcfdddc1d15f88b52a3",
"0x21335dfd5874c230f903aa6249f64cdffaf2b30a19b4f8b9e42e6dc7472f3521",
"0x2e7bfd8d6d903cd0d2722ee33f82aa80805629516de6d9091afe9a1613183c05",
"0x443b099429cd33864738e414391c37d032dfc795378e8439afe62eebc49d241",
"0x215a81cf42f2710c48f96513f2d1ee0d350ae57ff01c96daf3eafbd0b769ae8f",
"0x156a1611ff9933ccf069fb2156159851c8fd02f7fc27bd5bad61ad00826c72b",
"0x90d3ac25b80c0f69e9b306380d3cc0418a5de630ffac363ec793a0fc54fcf97",
"0xf53453418098174e3a6214c9fa8b59792048cc0c963b668feb4b79fdfdfe4d7",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x167dcc32fc7311f7c5df9a1d2955a928fb6a1ce771019241fa491c655c697381",
"0x2a191b6a2f8f96da4bb2f91cd377b32fc8e84aaa857e976fecb7dc98bf518a03",
"0xc2fd4887d8b704662b62339aef5380e2cfc1eecfde9a4c9c14abc52c2a0a8c4",
"0x1e630649bc36af20c735f3e55a10e18fb1192eb537dad2b23932079a5e3e039",
"0x210302a02dd75f2d3846da16ea7c309911eab034fb60adeb5ba69c1b31b8471a",
"0x1d9e0ac6e8f8b9bfc77b7439b345b772596f8cd23370855956e42366d42a172d",
"0x2a6cf61cb3658480617be7daa4072efe4c2063b9777c1fc7748cf00ebb670067",
"0x2c6d225faad9f6f0959163a42621d26c7c91941196ddac67a618b390bf84b5ef",
"0x2d2cea26566fae8c2853a5976075b6d73da65b6a7156ab30540aa9db05d9aa29",
"0x2e13c310c5e84e55bf6453d9cc647f87c90dc2625f366a6dd61f60a0b38ca3dc",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x18f8e2508be0983a6ad4de69cd797d5f3974c5f2e4ed2dab4e67db7b13e9119a",
"0x122a34cadaaf871dbf14a2626be775882ee4653beeecd92d742541350f929c10",
"0x1eaa9c56276ed20072675773838cf7f72966a70537bcfc85874821b40bbcb7b6",
"0x10e0b85cefc5748eec9d7ebab1e9cec57d580b3d66e5b47772b1faa267eb7fd4",
"0x961d96cc4f121a184a78db78c217fa96c22521ef88e9f454ae88ac934832633",
"0x2d40eb8157494a91a99a67959fbefa10958f2f96111d46461d3abafdf3f89735",
"0x21807e2e88a4f906a998c7d9c6a395aab2c1a09b38878f047cd59a2e61f8f85d",
"0x2e19eaca5d16c8bbb6ef892613aac237eb47b65c64deb2d167904d719edcb77a",
"0x16714242c7b7e789d41c82a4c9722d57e294d6a566f6a48cdfe79123f8c1d32a",
"0x5566d38792f0671ce10c1ad7e93534075f422f61928eb6c2e4857e2ef1fa242",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x13290f24b105f48dac27734782f076151f3192c0f432da08f73ee09570c143d6",
"0x1b4b953ada89454c82b19e887dfccc01784fa68082bba9a561beb496f267eaf8",
"0x2613eebb5f02fde5560e2f1aaedbe7ac32199983ff9ba2cedda7ad9a6d3855fd",
"0x1aec57bd5745a26c3c0219ef96fa6c69250bf9b6584e371cab2aa2bdb7ae4990",
"0x67389e348c3409b4cd299d8bce723984b5f2e95b0be560fc10132d8ef8d3e85",
"0xb0e06a1e7dc543f9187aba9ddaf2e32d32ca8b8a5da85597e6ee5fda0c9eef6",
"0xa1fb4cb7fd491382e2cf3347ce4ac8a42342a72afd1a1e64eb0ff970f54d5f9",
"0x1977003ba614ea8e81991f6f0d79d62feec3b0f15d20d899b87382fc3fb13aa3",
"0x286e912fa4b01948dd7b1cc0251084aa96017f4fbfcdc6c743feaceb1dea753b",
"0x23370231ef55f59d8f37515ad3cad730625e79325fb839e1d9e9c2d1630e6ecb",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0xb1cf6bfcfeb3cf344f8d1038fdc7b9faf945027ff5bf710d10286df9cbd4ca9",
"0x123d9a409d14c996b914c9a56c54b02c25f4a33a3ecb6066fec4a77c6525acb3",
"0x89f21498630a31293ede8725da4179396e31708754f8f26935a9593ab1c207d",
"0x2f5bfc653853a2d74ee03547dd49092a78177c6bc16eef3d4513709040705202",
"0xa18b08811ddbe006ac8516b188d76ed6e8abb635697bb576f438b5eb234729d",
"0x1e0fb18481c8d9535410561b4ced6025654b74d7caac3e4d487143d74155f7e8",
"0x936106e344c77a4425d0ae924553340214d5264abf959ff5c3de4cc163fac02",
"0x1abeb831643365e91e7266135607235fce484149cdce1551fa4577791ff62fc",
"0x22892af37e8064bf4d88322256bb872e0d733c032d1f7beff2bdb749fc0c7d5",
"0x29b830534e780d7205e38ca2f9ba43ea1f1eaab7d08b6060a9a8e52e1cecdfb6",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x2ae98ec328e9150679a246222b5122c2c2e35d2044fec7950832b9774900bcb",
"0x155494f37217d033e8d586c6852ec501c6dcced5096404877c788f75f09c95e8",
"0x191c6cdbbacbbdf644b3bc357fabbbb79045e3200f2d10f824dc4761ada0db41",
"0x2d0f68dc5a731e30aeeb23a76c2d985338f7cf7aa1db7452ab7c05f6b96a1c12",
"0x8761ae31b00851939ebf81f3201610f53702765e42367d15a5a64e4fc780e75",
"0x22259606cc46b6876ed844c436ff76ee5dc734754a91bfb977d2ae9f620f738c",
"0x290031eb3efbfdd567219f6f69b6ea098dc1c7ff13db57bf22c699d9061923e",
"0x11a164ee321faecfcd283c24baaac523e609ad4dd6f6387206e8083d8ba2d08",
"0x14a6a424876b86e06f8a891826c3393bf9a9355f0f705d61c39bf65204a488a0",
"0xe1d8d72bd4c192af2d73279f2b7cc893ca0be9b313f90eeb64a5fb69e7a9771",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x2720b31b0b3687a93e8203819f9fe8f41591cc67bba0bd4c050339c327d0a6c9",
"0x22ea080102094dcc01da97ec17bd1c5ff0e61f1afc3567ba2a4c79127e16e848",
"0x7a0740ef451bc5150556d1083b5108eba7660ba47f5cef92df76ad0cd53fdd0",
"0xc191e9d1d2ac3648df5a9fa6a347c9ed3c01a4176091e91f8191417c885b674",
"0x21a6605ece262ebf5658153119ada85793c68dceeb560782c533e7143c53435c",
"0x7b585c00d1974dadd86b01acc175939143e66f0dff55a7263b7f70507294f4c",
"0x30570c2f5807b56cc39cee5e1164c58506d902a348dd400be3f3ba1ea9b918c5",
"0x2724ae7cb7eaf7d39b6ab671df9d70a260fd1691cff81987460d2c19f200fb9a",
"0x112877dce9f6f179eab02788c44fc9da3d64b99966a71cedbfc4d5ce1606ee80",
"0x3006485215c00900e3c42c74ec9c58c6fca0047827f238431e387772a30febcd",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x2f2b423c67329cc34adc75ef955e65a6ecf5fecdaddbccc7c69de3a12ae457",
"0x28020df7c36abcaba69762a94eee88063b5f132efc9bf99a8283d4fa34a7a1d9",
"0x1c1e47e09591c1ec91b7840a307819d89c19a567d6e3eb2f8fce818bafbde9a6",
"0x1a84ae16924b521e378f6db619d0a094066209f18492b604c6a8523d9574a4bd",
"0xf1f1f4fe16f636b8fb7d1aa4cecd1846bb37f73880a09eb9680ef2dc49dce4a",
"0x2033b19b71951e7d180851c4c0b54cb8e3d1df44ad55e08de3c10555ff434c0b",
"0x298497dba4b52d50c528b089cf9f51b98c797b5f9f1893df8bd71d6427957ca7",
"0x7979509bc42b0bd1855c2feeb4890c5a2e5cf6f6cbad87558b11b82e43ebab5",
"0xc027d8065b422a5d05af6953119cd1451ecdf3b1c2b49048bac9ffa19a29571",
"0x1cda0318f56da08e42b609732f23a762831ee22bd873a8565a2923adebd88e76",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x109f467daedad2bbc6b984902be029aa07e7241a63ef242966db9c5b584c39d8",
"0xdf1e1a43181d21009c9873cb22a76337ca84b8196432cee8eec9975c3c1b9cb",
"0x20e2202c033befa6d32f13f6b4426e40121c40ae7cf8ce57c8271e0d7e5f1315",
"0x8fbc9206e82a3f139c8b86fd5da23bf86a2f719c6b7b7db42c10c62a0280bfb",
"0xafcd3b41eef210253ae3d684a1f816f6772b2f253c2ebba5b444b8edc05b775",
"0x2ad7e0ba8acf03ffb2fd84b30f89033119d3f34236df92d1a985d3a71faf5492",
"0x235b9840306c9bbda7e11c12ed8805fb2de3127555334e216bff8defdaf3fa5a",
"0x108abc439242ac2ba789aca0ca17f761aaaaa7f90be1398627dd51a5b5385f50",
"0x64cfee2a05138648491938218fb9c287038cfa0f29397e83e914f355e0f6efb",
"0x169b49780138618a4ac7de6e164f1f8a95dce8dbb68be3737bd1d1d17601b583",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x37c1010183f05d3baeb2407c7105539b59355e854ee6ba69ad0ca93ffe304aa",
"0x7619f4a716dfa87c4180b37779fc156c1380a593cf4686b92f519e35431a0db",
"0x303a616ca0c021b513b39d551877b764b241e582140cd49c66650ed748742f6",
"0xe0a3c66b892792aba5936d212c510a929571e260f7ebd7e4d8fda17bbd6e4e",
"0x2db87865f56b59e6db18e9fa23e4797466341e3114f73d04a77aa96b0608289",
"0x16b7dd14f376839839b33d74035959e364029cb5ffc4a5197cf2f6654e07f9ce",
"0x1282d2dc0a5418205d397ca3b788ac90b617ab48777a3d0754f288e105bf0aa1",
"0x137494fbdd4f68f089812314c259f9d55b6f2ea9a5e01d31df36953bc67a6cd1",
"0x27939a8ae7cd5b8891f1effa260b4003c5d1f3588ca41b51fa66a15fbef587a8",
"0x209d342ed11c9c6a95f7beba1d6ae606dbb91d53c7b125329540632856980819",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x2374ed44c2bf10061ff872112598b048396433c0e99ee618a978d7b52eead11d",
"0x5037cf03e8e4060b62671b6b3738c3326b57462d2df714d312dc3cf902e3499",
"0x1bdc6d72769d56d435d2664fc00867d0818ca90f30791fd9b2b1e397f018879e",
"0x125626a10725e4febc2526fea8f28eda9fc9facdc3f853bff34df2d870b6760",
"0x6d4bff3f90a1436f9eb4cff6768bc95d0748105b6bfad3efc469005b74dde6a",
"0xa7e7d0bd3eabab06af826e769285f473ba07336539872edfe4291e7d10f8863",
"0x5b7eee126f854c941925eba6d02d796947eab9ebce35b78f94b68068b8e2577",
"0xc787497b88a8df57e716224abfb8238149ee8cb2b41a30452ac5c8c9ea11bcb",
"0x12e46e1b82dc0fc451122f0d73c36150bbdac4266091f6f16e887c29e6ab3e66",
"0x13fd578c074db81ea352cb09285b53d7e8e9979bfab7cdbe954f2ebdb014c9f8",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x9d89ecd0e9e76d53bab1d004dddb96233658cfac386ad366c614e0b270f97d4",
"0x1663ce3fd8e8a219e95598524d0a14e95ec2eddbeaceb5c91e3325f03b811cd1",
"0x2d7643a55ef8f191a8385f26b7933068bd8691d8bfacc0298edd54b5da3a81b2",
"0x10ef304c05d0641004092988202bd102a1b76a155469ebf41804b8556370ca28",
"0x2058baa454c35fe9ee8b0a8b6c3579e00d8dea44db1f036f286f8c1c5a489e10",
"0xfe297ae198ed7e6fd6836bcbc60670d9fa40d8196e48cd5e691b04cc7668744",
"0x1dc4589f1ccbbf2e48394a90cd3cb121c3bc56576398e14b37f117f3588e6156",
"0x2531aa8925a4e146a2178446d4213afe2b4bf59537090877084e08abb32b46f1",
"0x2b8d6fb09de987c69fd1423ca5ba68c7e47f24326997ee6ec06b27bb8202fd79",
"0x2cfa7103a4e60296297b5ceb2d5a59acda5b0f1c33c19c941a05b9c310f25ac7",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x10202be4306b5ec29ef575c5214a35a3ebb8c8e808c572c87ebfa388b13e947b",
"0x1b5aa16b76926df627ac1ec6f6c12602520e67cb23106c456063e8faa4b902a4",
"0x19a92337476b5856c088850149772036f311a5ff94f05442f0a15f23c5c4df81",
"0xbe8fc498e64abe93a3891dd69b068a200b4fff681cd1ac1c8b6c0dec68489b8",
"0x1a0fc42aa273470caf30582564186291b8d122dc036309656303d48a9c3d5547",
"0x18db0efcc7f60ca3fcefa9809141bf46c3659de012760d8a1002f771c77971b8",
"0x1237b3bd8e9218944b33f45ea4c9e7872be40e3d71df354d0b4d22424152274e",
"0x65c096251bd3ae0ba92367a9db4753b90bac169e7bbe2da1a23ae3402e45d27",
"0x1dc83ef066fb306e222db36b1b368020ed31d2b1589cb6ec2e84e406213c8e04",
"0x2c1a8e6e5fbc28d95ac7e784228ac12d2d28be32c4fbbafbf21c6ab0776f449a",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x17ca0461bce08a8a8853a8f49f7e9f52ab8f3d8a7cb8a925d4dfd834a92005c",
"0x1c90c977e1daec74c1d7e6d3ed14c7d41a17fec6d1440fcb3cfde4945ba43b7f",
"0x9f6aee2e43570fe682544dcaf6efe50f273784349ee907a7da08cf0a3892a09",
"0x1a9e810a073d7982a50a4a3ae97e16ef3cb1e231fe0aad228ddeff415e873d34",
"0x25fadb922987714ac135457abd253469ff387847e625a4f376a21f60c54aacf0",
"0x11b65d5a4e0393733848b5a18f5ba22c9df6667e9b87075de2dcca2a6322e980",
"0x22e9e700cc820ac9dc080e94407b9c18adc135535702c34b64005803881d3556",
"0x160c88605fad7ad65a5b926dc177fa9799c951ae17b067ed62b06679a4cf03f3",
"0x1dc2851df6d0947e5b3c9385544d31278346d45806328142b6d3b25702bd7510",
"0x8a42ac9c651c761dac4cd3334d8ff8541ecbba391cba04f21505589f39b4d00",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x289fa0e8ce8df0c60be933c0ab3902f988a6a59adc39dd4d87456c88982edc70",
"0x1e70c2b91d3d44777fde9b8672508185789aa7af7d0ed1b3e08273c02eb63201",
"0x26202efdbdd93fbc22b59bb52b001dea2076ff49c1bd9aa0ac0e732406f85362",
"0x665130b10a00cc5088515f8e16903ba3156fa42285bf0b9d1cb845209425be3",
"0x20a044a5e1a405e1ad5d751492516684148b3755b1fac705fd6b6eb666fde2a",
"0x2640e021b9313db742e534158b3737b355779eb05ffbe6257bf3a96ccd0ebefe",
"0x1937f02a9ea7e1700da7773129f32911d991f2b872def0f10a176054e332ff51",
"0xb198e0da024b3dab3d6e79f1e1a0304c6055a8ea3f4f93b0ce24c6ede206873",
"0x2c0a30d51449d8db5f3dfd12c4dae7857a91ee88e297208dc151ccd8be4f0870",
"0x187c5f8a529149c6250007730a57ba31c7dc0461d40fcc17326702020a21d33e",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x2085c1bdf91d64b88fa27cfc4c08e07efa31aedd384d465f558c3d60ffb0565b",
"0x25af25414fef41bc7e5f3320cb78b1ad4532319473caa7cbad0cebd1a77a91c6",
"0x1a1b25a6cafd3bd28f97f314456566c05ff153beed81b1db117f20ff97f132cc",
"0x2d9ab0595a2025fc0cc0850b027cbf4d778dfdb36b3f49fae8029efb2ea63f1f",
"0x2f30cc9b0e5b85bf04d9c921c26195c7431a50a6fedc28250bad8d5cfdae1d39",
"0xa37b2a74bd14072efd62cb285eff2901ae78fd90dc17e6fec4676cb04f244ac",
"0x1c424788fca025dfac66c90118b11c8272d4d68e315879b3bad72b595016b1a6",
"0x20f5240469332dac40167ee37438a75bd816dcc1fb4cce2ac7fbb77adaba5be2",
"0x38722e06b9b7d6ba8232eca553b288225456b08a94f8c0722196654430b5221",
"0x56eec5b756d6945d7f1ec8e5147ca2765ea9bf915399d7110f15bca953cb8c4",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x27f0800ddcac9fa1f1cfab29f40c24fc7d4ca5b1590f2610520e88b510a1ccb4",
"0x1a6a8f6f7e612f637ab123355dda1d4bead9dff6643c35d5407652a392e70382",
"0x1b2a744cbf0e7326885b084f907e7756f3212136d607d074486fe4ac707a413e",
"0x4abaf721c7350f1696a88a898880c58962814c3821b12fef0927677ffead3a",
"0x2f194b7fb646175f3ec81abfd10bc33c5deb6b4f69955d8e37f90d5619bb1f96",
"0x1457d0d9729fd924f98a0ab82c379d9e1fa349c99ec5d40866961486f9c9441f",
"0x24022debb2e2b1ebc444755063ded047216aef7a53efcd357c33bcf18abf7d78",
"0x2f1a9fa9fa2d06c6afdfb03865806fac1f08d5b64a4a4102dd69b8ffaa16d9f9",
"0x2a39c8affd2c36951f2d65ce28583cdd27e8d09b3c4682d9a91a8e6da20f018d",
"0x6cd4a8162b4407a90a632bcc6e13d25a93501cd27df389a7f8240da9d0fb308",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x240bdd87896f169f78702f2fddf10472d1e56b0c8dca668c3be9c5b9fc922f8",
"0x3cebc8d717886a58a2c2a2bc572e3f58922c19e6a8026dee09a8aaac59d9170",
"0xf2ac5c2f8ac681e231a623034707fabc5e81b7c766c12db359575e5402982dd",
"0x2dc50cb75530f53c584f0db1885d6c1fc03009cc8e8f8abc50b5ea096d8cc1f3",
"0x94c8952fde36c4126f4df8518ec3f831fdd80129f8fa8ff1b87d7739efde02d",
"0x180e29433d8dc3cbc26a9b063087678e5b7569bd759c2173ad0622557d942c0e",
"0x137513995f9a52a60cc08ec51aa5efd1f10828587cea9b2a5d016788021bd0e6",
"0x102c8b90ff6c327d16952ad18bc65d9d6efa7dc421443ff4159e72b02ae2cf2f",
"0x29f1e94ed28f72023e6584dbc4a4c090c6c5ee310d8b83f0f191ca9a382e83e3",
"0x1c5292bf3034389addc954d33494f4231ee9adaee58686e630548ff0eca63191",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x1430d7953574889945b2851241e066ee9d6b5cd11c106e1fd2093d691a164ea",
"0x1b3448e3a38b05b85a691e2df172b46c7501f3ca292b5f484dab6286f4a23edb",
"0xdb96c5859d2163a39d6b3ba31694b603706633accf6529526ed570fe019f001",
"0x21b598a7b1f1990081af12292ae6d85107d314c05534cc1ed39f7fca3280fd0",
"0x2110995ecd4f7cae17dbb93117661040a5059bd20650a990dd6781e6e773790e",
"0x21893b6a2b4a66316b37eb749dff8ca4ee17c8bff8632ee3765f7f8fe572b0c4",
"0x2ccaf308f912ffd14b46f30d8f8e2d4680b6f3ca217587a4a6c1c1bb840f3683",
"0x10be28be53fa8a09cda9f67606978013149dd78dbafc39b3e4ec0ff2ec75b2d0",
"0x17e826d4b7b4a2040fcba809278bede0cd4a79c0b0da81342163270a1422931a",
"0x9ece717307f52d17f18b7bd204324209c011daf9ef789973e69f9f9e09940ef",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x21c512b8be5a975e58cc3dc195f284a90a921a264c67f8723a5c9fc79c4ee590",
"0x1a9c325e96a34745f686eec8b268877ba7aa0d44b11f59b4eb11b24ba30ab1f6",
"0x256c5ed746133373328079945658a21927e576985c8c26c42fb0e27a37aeed5c",
"0x96dd009241c6a5a268d535f5ea13cb1f313735cd9ffbd97f580477251073fa7",
"0x1b5697a3492346753e3b41b5f690f4ed6cae7bc246e9050e461154da63b72346",
"0x212e6acfb305068286ecd6d2bba2ccba4bf952487d7db86840d1bc35d1890834",
"0x188957819ec0569d19dc54c6a31fac77b75a89c8190ea57720a7fc3f7e6a4917",
"0x551b30aa085a016401370424d8ec7b729442d95c263ab077ef1f717d805ed6e",
"0x22883b03ba4694c2602c5e0c148a2d8b142da732f2dae3402732527f1a57fcd1",
"0x53a4c4b2055a58c5ccb0f23464de37cc9c3af86cd2347d821612c4b017e8e25",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x12ccea9183993e5d7dfc16fdef26d9f845eed10de2fbafe63008e29d3ca8b507",
"0x582c12381fe92ce0cb41392d98cf0bfc811a96519d717af5ffd45c6ca1679b",
"0x47527fea0d1a194240f9d9f4c5198bdd620ee5041d2dca5db40375fa6ec11bb",
"0x9803bd526d49e31dc0fa4188e3069b7ad81f2d6391934de41df4aefced4b086",
"0x21d3b002266d0893a5e7c1a7bc7ad2f2aedc63bca12b0107670b271010c2c177",
"0x18f7b09e05bf3b680428a2d2baa51298016ef23bb71ac95152bf75c82ab4cd2",
"0x18bea4252cbd7815e4bc3bd34b039be2027c226b930eab9cb0714c2ee80139a",
"0x100f77a4054eb625b22130838ccde66d21c66b6a4bf8c8b10edcd1d48665b7",
"0x9c8b96501ea765284653b0d464445b012086366ef33d57e3a9e388e740233f6",
"0x6c9ac27ccf47da2979230b1b6f6704a08a30029752acbf49942c1962ea2f9da",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x68dfe569c59fe117f04ca4d04df9a59ce5c9327ab88894f60a8433cb3bbc7e7",
"0x29e21c7d1b3fdd04d0f89e3bec6e66c41347183faa487a085bcf1ad2a446319",
"0x61ac0b5b33b8d667219f7663fd68c937c548d342bc27e5f398b8f12c4fd54f9",
"0x2e8eaea01526ea362b730fa76697dcab6f0298fd91f0ee145ced504a164bfbc4",
"0x1bba6639ec598530de2706ca4264f5b42e6ed5374993f5517d407f3a287b2902",
"0x1da74a23eb1fd7db1b30cd5942ac540c379bc74a3d1e51d5b0bddd2087ed100c",
"0x2a0e3100447c818717bcadcdd0b7d120224d203c8d9ef48064d7b97f6aabe593",
"0x27753925a34a26b8a301c8531ba88815a976e1836858e054f90d6561c4373330",
"0x2370d8627c27ecd31b2b6a93c33ad409a2e785c8798bc444f361d667c59417e9",
"0x24447e984cae81901b8c1668e8a11d94557b39ddf2aec74ef457701e00d51e6b",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0xac0847e3de8e5f007ad7427f2555515e4079bdaf0b0e34b4be5e541f482f33",
"0xb2c4754b01925272d1ba4359fa02c399bdaba806b32f51c2285e2c16bf3316e",
"0xd33fb4ca1a013eb65ff09dc85098969747083ddbaf4e0093d86f29ef3948fd7",
"0xf06aa40d012cd276378c356edd414c02a77abec6bbbe8520d90b8ab96be7304",
"0x11620ba3b59e9e02401b1023d0e3675c1a26d896908931f88ac8f487cd408d26",
"0x2d1783e31f3c242476318403db851fb1a6b826651ae10aa2c8c6cee8b71e9bba",
"0x2c989d933295a819e388cbb736f1dfc008a813b11500d7a5d75c3de45443c7df",
"0x185d645f3186249ad6b20d2efeb6ae61ea7add22139c06f0fb143d4b36428a6a",
"0x295390e4301ff52cb4cc265685900719cf785fe42fb3fc7606eea8402d2c3be2",
"0x2cff591766f8ed033dd1004a216c9545cb1be5c235f59ac0189845a3f0fb623f",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x1d2f561702487b43d9f7f6583fb8a342c82f15053b53c2952a7dd2d32491d880",
"0x1431b6537ec76dc2c30ee7476301e832700ce7f638553e84cd6fce7d6f14d7e8",
"0x9f68e9512cf4368a0b526aae1af2bfb818655c50e8a87dc157f83d79b409a00",
"0x2e07015e39f5f8af17cd2d0d04a76917c1b6c30f0b3bb3c35a24d099249b17d",
"0x22d3936579de1b153c68258f36a157477c7c746fbdc4f9f3d8d0ab07d651c28e",
"0x1c1511375128ea34b876fdf17a984c28f9f5f551b8f5008a559875d627caee62",
"0x142882177b08db528d3e30ac62d3325ceceb585c4cc091e5070a79abc3105fea",
"0x1a168d198284cb1386879a2642bffaba7bb7672c91bcd6c562be03e3ab636179",
"0x17221d50c79b06811d1d66e63757c063ce62dece8b1359c38932b53e0c199401",
"0xd1d4e722fc75c3f4931701cd9ac240a172a8e3b638bafba1c99fe987492809a",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x27db073487a124e2eef709dcfbb41a62f07ee32aa952f69af50ac486b6caa7d",
"0x268c8bbdaaee13720df617507518283e1758788bd916fa548026485c7aa9a0b2",
"0x1fde18979072c0225095c73dce75c99e7c0ea3164cedac4ee985f4dd029b9e95",
"0x2531f077c0a77c6ce0ca7024c5b150a41489e06180688904997855777baa84f1",
"0x294a5bd8cf93bc687c0568c4e29e516d90acddfa5ca2c7df81eb09286583fcb6",
"0x294e322170c9ff2069704807e64caed0a0e9f31683641a3012e867f5e913559c",
"0x2b3addd6cb0f23db00d6cd79dc8856992da36e648e3bf0ee0b2715d785d5b4b4",
"0x3135e79314a76a13df9cbfa22a7eeaaa6a5d2441ec32edbad2396c270eb6003",
"0x173a562d9eddfaf8ffa687c362e2bdc39da36db4a8557a6dc851055a2c48a2bc",
"0x612d864c1ff73f7b2d780725cffad529426a6e1aa5936875bd9aa472e7829bc",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x2ba89301ebfc123b4220c6c74488005cb752c72f7487bc8ef630bebbd41bf6d9",
"0x10fd2909f9f7f2774720ce193a4c009bc92bab7f27f959a57842b3cb2f10e622",
"0x249c1b33cde3144fb9b9bdf30e45544cb98bb9304efacf2adbf1271d59bc00eb",
"0x75727d6b84d8e427bb742cea7e88009c286e83bd66e1d6951dd7929dcbe3621",
"0x1bddd7e537992438f10091b25a5225fb06132dec4ded9cbfeeb451a034acc670",
"0x7ef5e8e55faf5d9129f012479e12e08834b5e1a38ed28aea583e7ca6ebba680",
"0x14b714178fc8031d847db2e05553dded47111455674598347dce1ce8b8ce4e5f",
"0x119e1cb2a7e4cc688569e9b87952d4b229be2265a58ed6e619aaa93f30c38f0c",
"0x21575c98afb0fd8dc75ce88a04201c36aec620f733d6ce71bddd6c4dae189c0b",
"0x2e69188594acabdea88e257c19b0aabfc728d191a931d7a5f4e7ed8370c24fc4",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0xd30b0f7b463491b93ef9a20562faf35b4eee1b0dcaaf84964b850c3fa9f52",
"0x104f6ec28eac4f771576a7ec410980b2fdc63c39d1b90c3f0e721847209e2025",
"0x201753ba0a0a888b66ec516584f333b4cd1f57c164b75da22519a89811dcf077",
"0x16fc76f1f5f7644de6bc79cc484e010dd1da3d0631ef42714cf5dd21f59ebff2",
"0x10892fc5eec5ed00fc6d5d0975221d3d870685367f211ca576706cfb083b49f7",
"0x1c59c9b6844de29584ac93a73022b6761b196e0041e3fa32f548373a84307ad8",
"0x188a3064c72ee6e3b555ce35313f73c91a154bdb59e57fdbc95d286df429fb64",
"0x25a747a9139698f6b090741ac55c98ba3e55c845dc8af25ad83d6e48c945e249",
"0x19cf0ef78c77006fa9f4849ccfcc2c52dd326a646a5789cd25f79ed84f5ccc09",
"0x1145187227de632d3deb1d625a4e5fe3886f5103ae46615a8f07e6035f65397b",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x12606f5141cbc1b9a349a9121e54295d17ff69f2f9027bacdb0ebc8a6dd2d0a7",
"0x2d1ec807263d78373ca6b3aa8f4c51ae94487ae04cb9f5fa6cb7a6155d44cfe0",
"0x2b83ffd72f83ccd4c18dd16bd1d406aee308fd475bf706f00cc287d9dcd97283",
"0x2378c35a0428264b3afafa0b782312463b724a4d281a0b56ba6036abb9d84c46",
"0xddba7feea2855679ecfe13432b420858ab5d93bc835c9a0ad59b8c011fc058a",
"0x60a0091b5a50a516e31bb6ae3023d902a23e57efdb4c571c143ad6321304673",
"0xd08421d815f9281094977237c6aa7e6243ab5cd76e38d9df19dd2b4a62211d0",
"0x165a3eeb547af156b4be28850c24586c0733767364429a0a1b7dcd2e7f99822f",
"0x2367643242f32a40574489345294604135469a362e8f6f8717c381dbef5d40e2",
"0x303a0941f18aa3166611976111e43a94d92f51f6fbdaa07557b47b4680a21af4",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x1aecf5def09ba5be2ccd968996c5564145f38f60aab4191978db8089fdb31cdd",
"0x304ebc6fb5252ad8b42ca58356799e8c6961ac84708f8b465227103259913243",
"0x26ab128903aa48b65d12869a85697da4dd7dbbab09aed508b833a398855eaa29",
"0x245567a4087a5582bb36dd3803f7008596ac2514a1d7380d66ede29e27823942",
"0x46585da7e8d6c6cf0ff92b5e3394bc0499808442cde328d13646b44a69cadaa",
"0x12be98bc0a25716e254570afde08db45e96e159a86d7d1c685e1eb2a45a4b3ee",
"0x1853379c16580675d773c80841b8b6e7db0e8a2b97637204619472145e3ca760",
"0x138cc77819364fd983a34eb109c53295de653f1d905fd2de7b6f80814fe8cc0b",
"0x2db2fee2d496891332218a6eb709848a819f62b8725482c591bceeabc1e3fd43",
"0x22e95c3ae4db1cfe5e4cfb697815697cd9c34211c65111b8fe850ed25958057d",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x14f0f0699aa9bd8326bbec5ddd0bccbe3a7caeab685d9ce7883e517164bd5994",
"0x1815774675d576817db84840bb9fa16b713472d72f4bc24c2cebc09aef0c203",
"0x2a82117a43030418e52b708eb696ab01c9ab04396eb53a3ea4194b9a19824238",
"0x1f02d515206f3d9a3c2086b2d7c6b19004cc8553a77908d534ad0af83a637097",
"0x3dd5240ce1c5530fda4993dae13bc07bee4c7994c1f65f263a2b8a2f7bc9db",
"0xc414ca1ed2f718060876a21de201d87b76f6fa224faf2775ec99cc13c534117",
"0xab48043b18014d78845ac07a6b9727cfe0b283b44404e20c5da462aaa24f7cd",
"0x3fac53034fc748ce7cf966aa1f6bf15445cb4f6f3a4a929cb27ede7928667cf",
"0x1f91737266e97b633fc63e5b0e1ca82b486680cf677b132ab7a6b4ac75f70482",
"0x2556e1170d24d8da980464376850938b361e16999f2f628e1281f5d6ab0b13f8",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0xd258cad10974250f6da3a9e068f6830d7c65f1253ae250324bfb72b50ee94e8",
"0x15e2bde6eee969fbbb22dde530a8e6117fd640972712b644ebe5b4bf0841fc90",
"0x231dd2a58fc24a20243b93b6ed5cf8b88b7a94a4137961852fb85a207b6e849a",
"0x4fcf48ba86493a6ed7afdbbd1b74fa91b715a0cab2e1cb27d416d1cfd220258",
"0x27313c2f8d4e5dd6764d672e1a6f951d50083e4e404b9c1cd22334e7eed12f4",
"0x1e8cc36fca79a1a3319d34db2305478ce58717e36f9710873528b16d4f0c1a22",
"0x266e3f3550eeee1d1e2931ff3be33ed142df41311f650e0704d1a333b0bfff52",
"0x88acc576b7bb1fd00b8e1783f7a48b72b48a529e130fb6f2f6550f41c67ae65",
"0x145537172cb306df020f911d46eeec82af8134b982f00dcad839c3c10073b1f1",
"0x897eada2a51e4cc2e55be2bab91c68a0d1378aaa4a65bd985e22cc675fae8d5",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x1fede8462b07d0a305d02035683cf29be572a53ecfebc28c77d17ff531a0e873",
"0x64cddb26305c79f75302ceef162391813ffb575b21526a2a99d4d05fdd904bc",
"0x41688ddfe25e6f627d365fc18d74efe41659d9213f25808c81da4168f465efb",
"0x263065cabd50395ef40943af93df5370ad2f6d17bb6de59b3e8e7115ec56b82",
"0x1becfb943b8985991a66c0758322e4c3f22632c199c1737f83a7dc251164a730",
"0xe01451b1ef92c997edac826766a61525bc9a345dcd66955f9ff9911b653e737",
"0xb9f01062d426904168cf7092d57e2c86f6660111475f9978f6b0608ad2f2278",
"0x2f9dc8eb38534652d3eea5e1b8de7f088c3ea8f9015ae1347004c3122256efda",
"0x2d97e9440f1fca57f227bf0769729d3dba7fe6cff7fbddcebe492e1b1fa1557c",
"0x1b0553d2ee91c3a63730d686ff1a53a0478682a7363ddd4e7ece42ba0fe0cb2e",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0xe83184ff6e43582fabb4d62c346c957a365358123861b4061670720703577a7",
"0xce4cb25f594fd996c28d4578a4a8e3b0581299a6f165882fbd1ddb2d85b2ddc",
"0x585f5827997ef8691078d8ab635cf133358212340599c51e1bfa20c93226056",
"0x29bba7e4c28316d70bafc5d05ba5a97bd5451a127ed75d9ef2136a02fb0e75f8",
"0x5e8ce714d85ecab7027dc4ad12c3a5e75a211e771db239df7b3f661658d4d08",
"0x1d243f2bab7712f5d12fcc7e4239b39bc533ba6d7e1fe98779a5ced87dcf0f64",
"0x19207f2711d65bd5cc7d1f5afc770d74efbadf057865e27efe6e61db2a83f1ed",
"0x54538bfb0b84e707e000ec579bfb8d796106da1a5e4abfa8a273141d6f6ed",
"0xcbab8595eee6b93df0d9f2545d61416af5ae2dc55a4f332653af8ce11fb42d0",
"0x1dc6ca4abd54f254c1f401b871501e022c4200688e661613926a63ce19f78945",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x164b183c9251e3f103a08c44ff9bdfdee4a7f8b860850fc3b0ddac111be2c24b",
"0x80435e71f368774466eb276b7cfa5f9a7a4b90aa4c34e1984fc4998816a9fd3",
"0x24a82532902cf98917319ef392e49cbd1c7906ebc78d24a4677e1014ceb98c83",
"0x9f961322ffb0b5ce846054c4c6dc75852776dc8dfa0c2f8b66229b3fb62fce7",
"0xb9af076f893d939a48902f2107976e8a8875aa5369806e57e8c1f6fc1f5527",
"0x6c40239edae3e7600dfd00e6cfe939db8a69799a826ab5e91f035e971232cd9",
"0x24701c675052c925f2baf10f661d4f719bf145893362632605adcfbdf5acaab2",
"0x11000d892cb37fbeb8e415c01e1cfc25cb3a25d287aeb67b247d0efce56c3c29",
"0x2caaccd757a3146300021050345effd1a9e5b64182e1cbb67653997b0e391086",
"0x10d9b51b3a086b412b1cdca5ce171ada65395036badcc79ef33f84aafe908bfe",
"0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18",
"0x147c39dddaed8630bf1b92249600016fdddc5e9f5f08291ca1663358a41d3dde",
"0x2d25d39661406faf935d340fb1535be9086598121d96d85f84cb586880517fc1",
"0x1a2643c9cc6f7e74f27ecdc2e30158b4a6510773a5aedf52fe9fef5a2261c263",
"0x2d5d7010ca67e74c9a4d54c50188de26c802a2e02080d6d352fd3d5b5682c83a",
"0x3060121bf7682a4f51292933031818468d050b84c2809ae816f14340a635bc10",
"0xa514a5c227f4cec95dfa029e8dd124c34895aa46bb27c0911f3780d5015540a",
"0x278bb49a7b4e44aea46eb0f882cb692801a6e60fdd5b5c23c63cd65ccce4fe0a",
"0xc399e9f67aa40707a203feefb0b958bbdadcec5ca34901d253d026a2419f6a2",
"0x1d6b3d5f6ea369c26f825d2362933eaa31ea35ec0a77c1fbd9e01ca1523e4432",
"0x24be510095436206dd0abd0b0cbb95c883ab304aa52598b1a69306ec981a688d"
],
[
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x277ac8a3178a356b9072bb7b469ccd57a0a63dbf08fd0dd7356008d5307bb3e6",
"0x24903bdf5d3968a8e49c6bfafc0e28d539ec1e2756e69301a8e38dab87c6c402",
"0x14e025a7131c3bc8bd2d48508aa4f791c8ebd10688d7e5566a41fa0c149b8602",
"0x2e41c7e320ecfc1d86df765fd7bf43ed2b6bf27ab8b7c74174ed61d57905c555",
"0x11bb3cde82e89bb0041907d66de91029b35a9c8c90ea44de1661ea2ace917451",
"0xa7460b280828af7d0a5bf4065b2b9640a9cf83d19899cca0171ff6abcb49751",
"0x234be66b59a16a323cb35d6516c5a92f4997b76e14e656a8c41f29fc94925b0e",
"0x27c512cd854e483667792d785ed1ed7e30569dbe12fc3fcb0c804110c937adff",
"0x1532821b842df3a4e64577b7c8917219c86fa82e68857a1a5be4056e8763a864",
"0x1ec15f1ce8c3cd648f325d92ace903521d7b0f668a01c6d2b92b43e35b5ac58b",
"0x234748a5e415d7b5cd0b75b712675e72e95b1e02ce6f48d299d5a3a489905ea5",
"0x14037feed35ba091ce3dbb4e6033098d07a3cc512e981a493c0788e3827a6694",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0xa7c49a32b5a05a6d74faaded50d303c066ec843a10ec59dc90cbd37ba4b1b6b",
"0x7fe2a4ab68b94f006bc1ed36af445905c8d234d308d57011dc1d393e6bcce8a",
"0x15b26f61d51ae17017b1b9d1c9034a51083f25b33f474c96bca5bf47e8a658f0",
"0x1a9c3ed5b8f524e8e2de1678002e73c63ebeb3606fffc29ae527fb94c60f5f78",
"0x153aafcf4923742708efe169c490514516a223537245aca3ea205df20b8b5ccf",
"0x239cbec4c84afc21975a40e29610d83c1d71a378cc58995e505def01cc6bc872",
"0x1edb2bf1ce76a49c4844b7e5692018b524b30c1660a2e003b5768787d7af6d32",
"0x222778dc5bf834f9320f037f4847ce62a2ae63be8cb846a5e10a3c2eb2ff22ee",
"0x17c2ef46844a5365828904ac73e5114f9bc2833cf35f65adde116491bc86e0c0",
"0x2fff9c9428727c51c6bd6c657e31314706237633e5cb78ae244d5d4c3ace4839",
"0x1d188182ea443a5a5cea9823f3eee70a2c1e18459e4305ef862666d16236b0b8",
"0x194dfe2339f7aa042818a43f4c6d3b5b2fadf648ba0dc219e56ec7f849ec7e5d",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x1c7aa6d64a120d657fbeb04c84017166427d0f02f0406c0674899118aeb3a1c8",
"0x1dc18887cff4545b07d122b9086f80b9c464ee5aaf98ebbee8a648df3b74551d",
"0x27c28329d9f8519a1ad9973cbc710635e5cd01ff884e1c113cca7b35742578d9",
"0x289ce154bb02ab338ede3bdf7b2efe8de1fe22259477475987386544f3eb5cb8",
"0x2257e368b26697c9ae1bed7b5cae11efb9d48138dae5b7b3c499a37cde286d03",
"0x1bc9d5e7820a13f9f045f7b544abb2e4b954a8d9b6d38f198efe3275d9d7edd9",
"0x18d112c5305a06c15faf556d58b84ddc492912505da27bc8500fbd32e4df9c39",
"0x2c63e80087f924919d20067f050b7d7edbdaae2f3018fef6f8cdace9768faa75",
"0x877b395faf50d5d108121e29b7ca64c6408dbc08f173278ebf6de8b9685e113",
"0x40cdf2e7828e66a99121262b33701cc96696849e5532f492486d69b2779e9e4",
"0x16e80a1f3fe9b828493e83d1a31428b1c586b3dd54d735eedd257930a2f539b",
"0x994a923eee5e6fd6a4caa317c6926ff4beb82c3dfe033f37433d31898a60f20",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x2060946803f18c085b6fde5a3d8750d80f9b21ed391e27e1c7bed180d708e87e",
"0x24fa5c0683c2eb83b0864853cded9d57d38f33fae496818450e2f6c49968dcd7",
"0x162824e200bf52b73914219f02ddc59785407c558eb4dd72ff9b11921a351eb",
"0x1edb37284aaca008c1703ddea2da4eb79521cc4cdcb7692ae344be2b880f574f",
"0x2189adace1c5a701dfa9c5354cefcd8204c60095f5b8568232dd01acb3c09688",
"0x19f1b2d64e3cddcf28e7187f16f3a90c93975e2569625ac689e3878b2de7c778",
"0xc62cf98668e5178bb9b6b261f36e1c8f176f190d372921c9b46f824db8c6190",
"0x16ef695c32d05c8c43431f284a33a0138455d93408ca2f742944d71eee85aba6",
"0x1916a7ff07956db69d712449d024d8272e2d9fbe9428d6562c503b99337b1c14",
"0x155303d79a49e28947744f334366acd9454fca21261d32bddc76ce6086e8f1aa",
"0x21dd4756d2217bdbb9b439bc12e5daf5a8661b1effd889c642cb49c4839cd533",
"0x197232e52cfe9adf15394e38dc30548d7cf495c7499bcdd993c2df59993d72a5",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x2f1786e4f7d8187788ae6fc25c6818d2e7fb34a8896414ac9f6b958de481eb0d",
"0x7b914cb16d817387d79ee23fe9975ec91fed24d0e163dbcb5418d96b504c2ff",
"0x1958452705af91d4b3be5bbaba856067cae00977353897c5ac0d070f90e34ba8",
"0x20f47ed0ffd3fa2dd8dbfd9d0daa514b0d72d270d1327e33840cf178b27637e5",
"0x2bdcc2280fe50acaa851536e7432f37c888a6507168a4b79e2578d7372f5db82",
"0x100ca23f8d8ebcf656d1fa5cb225932b62772fe53e2c5650109e71231c3a9b0b",
"0x1d359baef3547113637ed1d8e44c89166eb4154d190d38a2c6d47afe5cc12e1",
"0xa78ae4732461eba1b90fc18b100cad3712d8b684324dd57343cc127b005a3bb",
"0x1a843ce91e265e4b6cf8ac90c3454584d4d481813247df111241cb4409b26b2d",
"0x140c4ee1c78bf8555602a74eccc3c3f71e050a5deab03ccde1d8431c151bc3b",
"0x7696859ae6cbcd413e8a035a9191cda79f3d04e6c3d18658434d0555824e4fc",
"0x2e7f9004dc09157cebb4e42884622e0307f85fe2c37fa7ad2674b0981b2c0d32",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x17607febb988532e6c79c307d903056a2266735b7423da83843f70723f09a5bf",
"0x2c02579472877870c8c3457b6d3b284eed6cac0d43e93c38af218961a9ec3ee5",
"0x2b24eeb2617860189e832b5a50bd17938b2788858e58d9ea9bbcb7ea175ea012",
"0x18c375a125854f8fbf30b0a138ccb4c771dbcff64c77d1c62b79d70a13e307f7",
"0x7251d3e863183333fdbe9dba4f3abb21777555ec7f996db96352311cd9fc784",
"0x2adb341301b3948dc700e495384dcc124d5371ec6163615ee7263009fbfef1da",
"0x1472cc421bd8fa9a7efb991ea065ec1c822b44fe601640f46995c3f10f1323c3",
"0x2c3a91912dc2c2a792df5e43134bc6d7e582f822994a5c2a6352e789997f9258",
"0x15e8c106e6ea3898a09e7660ec87c5fb217270ee9a8ebb1d052e64f3dfb155d",
"0x196b68215343e220781a52bb0a324e4ca765394d2f3201a769bebbd931dbd2ed",
"0x2ea4a2d5188e98ec570e50b70d0303ede5207bee762ee8932a466bdf891a333f",
"0xfbf65aa42b0d900ec78b68de4b2041140fc85fa3458303276d99826e97a2783",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x2d93d238704becd76c0220fc95afa0783f9695075c5d98b363f91cd249c47a22",
"0x1011608ec77a11a0ce8b8b1b36ce08de4f93af8682fa026b87d8a2795b71391b",
"0x108c04095f95a9fcbbd038c079842940d8105c509c729129f7cea1c5e968e194",
"0x27bab26eeabbce153dd52489db2fade373a936ac52383034ab82a9e252381e73",
"0xd2611e73e27ed17349dd52e13a90adec9830a5e2c7115d8823d23688ba4e570",
"0x1cb4e6780cd70a0bcb4662edfe8bb829e146a62c4461c271ff1a0d8db5c1974d",
"0x1d429b1257e514fae54614b4648d627169928dd3a496a3d021d8dd7b2a1cbfb6",
"0x919d557a82cd7294d666137090c7348da53c3b92bfa3346bf14903a12e5ffc0",
"0x1b99c14cb08972b58f1e7216933e31e2e67caf29f8e6e998fe2b1c30ecbc9473",
"0xf0435abfab0c4e0ffb1a687de5cc0ce3fed74cf9bb2b559b569a552e8ec86d9",
"0x99366a2b727e153c4e338c7cff84efbedfaf7dbf4c7904854574f75f3d8e848",
"0x187b41d7da085759b71c2028e359907408319e8c6ad842c79bb202ecb419be5f",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0xf8adabe145a57461fe9a583655046a75a03785a0a2942221ae2000664936e3b",
"0x21b8878c75b423cb1f80e0b574b3f62d28785663aa6b4e0caa3043a693bef6c2",
"0x1dec99dbe933ff6d1c4b6285f8c68771b3ee297afbb5c934aa2874765f64d602",
"0x2d23ed96c51ebc9c51489f7c87de4fa151cd8378cbbc701542f54bd4f4d808",
"0xabfef9fb01611d86e6ae1c1ce2d3febf41378ba90a38f11166b097187272e88",
"0x28f60239d945991b837eaeb4693d496be520241c8b739d3f21c7b838ee0f946d",
"0x18ad1fe91d4530ef15ee77e9ff06e2d3b05564aa44613bef3b191f6b12e1bd83",
"0x53844fdd99071115909fc518f92c7d0d7ee91beb16180cf9bd158d33c8679cc",
"0x28f997134ae9a3be6b79f6f3257aff2498774d1bb18f553b229f70076c979ddf",
"0x5dd57491f096cf44399e477bd78c20fd872d357f5d1d210873d01d3a014bfbf",
"0x1f1a859e7cd1cc205ba1a1b3cc2bf04e0b24d32a62dbed89e59e2113d54e0b37",
"0x75f98af212f11e1de886197216bd78258bb77287937f0af8e464f916d7ce5f2",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x128d5ad7a08858a2ed8c161997ed55c8ca8ff495cd27ea475983d1715cc602d3",
"0x75c499dc0dfb0ce2005e7d13c1861e5f375e03bcf06951de3239d4b56f7868e",
"0x2917faec22c04d8b879d4490a8ae7a9d9cf7f3fcdd33634aabe189b50710f87d",
"0x1a86eef4ec1b75a75d97e62178663f995cf6fdf3913595632105284bce7cc346",
"0x65be02d94e4417edcba4b6b68675b107a25462092e90e7ea887af7870c0ffc0",
"0x2a1d799daf1e300abeb7f5a66264360c7984ef52c9b153f15411f9c62ac84d87",
"0x17c036c19ef8085449f760a6365e814823f270ba4a5e41d2ce4ae1c653f087dd",
"0x2151cb617d9f323ca37ce71d5c77ae83c8490057b9cbe8c17f150945893382bc",
"0x24624a8c4bf96cf50401f7361f74ce162c47ac803ed9424b7bbe4d7465d9f20d",
"0x2c01122a63dbde586507877763b572ccfdb59f2055ff15ef205fa8487f82a3a1",
"0x17a88764e660e91940993b5efc7d317ca4d0e28d7dc164f6ab6e8c0fd2bd111b",
"0x2287b5e929e98ac38199873b142845c015bb20880cd9a1d9316a7027a9b2d208",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x25527f081eab2b3258ed36e0a72ebbfbcd874e81c49836faa218b94c0a330b87",
"0x186169de0e37c01f31821e0909bc4c7bec2129acf9a34948cf7a8ca58c9b57f9",
"0x6d5d287a7a8d09650979fd72764614e0384a22972d86d191d1255c999d3daa5",
"0x2c1f7628e8aaaee261c58c8966f5cc90e7aeb1dda64d590228e61de098e4ecf8",
"0x1c3761c8c7a1ee1f98871ebfaf81b0b89a5bd53a69966681681bb1352f1d4fa1",
"0x14d1774293d8bb21421fba59295456c98e3e9afd0c9858d6aef305318707e365",
"0x1df2d2c614e4fe2a6cae058be1dc9e56ce12171c7c3bc4b9d1e76b1916458f72",
"0xf27fd9322adc74859d8b58e4bc2595b276061b606acce303f2a90ae404beb2b",
"0xa2aeb992439b6e372a606b46e95bd4b52c2072e6fb28c0689e84b5f444f7a99",
"0x23e0b17792144b002252bc0490e7640a3d47784e77db53af09de2f3dd650e9b7",
"0x2aec9631493082d844e77232cd2202224fc38b2eb0d87e7e5e62c11c5af5d006",
"0x131847cf279637a5a337815fa4f40d51251f6e0174e59c5ff4ac4cb35e2f21fa",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x1c8f5a7ebf52e4504d205b2b92ef4a87c99bf55fed83fe42edf01645332dcec8",
"0x1eed962a391acaa8a59d90d324a9ad8447d898f4b516db4a289a4bc0c565fdcb",
"0x2b7c65f02b600d4cb64a49b484840ebb11ed7e99a43db9113ed92bc07d2ac4e7",
"0x2b21e821c34c25f6fe3b027b3f9877d0966ee34e7224c738f0e1f454ae3e6d51",
"0x2331843ec8156532e5fc129b95d129546fe5ff9928bce0b17964a9fa4d8d16ab",
"0x22dfdad5cbedc015829fa14df6356c60037761a018d0cf78e13d3805464273ac",
"0x292c701ad0a3bf427a33e1bfcd073edd2cb8b5e6e949906e6efa9356b471cd62",
"0x253d7f1f0d16d4a21b0d14d04b927f0ad96d348e78a7e36107a9c2481f51c587",
"0x12f89c0d808f729c196c25f570d2027925fa37a17f07d9cd86b366793b5b89ca",
"0x28739fec5ce7338db7feb9b2996877e00c4c5d6f1587f24d5d165672d727d4b7",
"0x2ae7492c4a9864de31330c131c06f9de5d50bbfa4b6ee21132068d43e00d87d6",
"0x22d24c6c5b0ddfc162fe02b69859138f2428a54ee04d51b7d28db3dd1de5fe75",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0xce556d3d5727d4e62e2716588f873bd595b1c1a31499dacd96b724c4b7a0848",
"0x2e9e730ca4be19d180bc945c9284a0ac19a2d1b6523bb1c0ba4c105625e428f2",
"0x662d03f6ae59288dfe205ca54c24f7f33615c42212e9e759bdc519a37573214",
"0x130fb7df8e39fffdec5284ca63b4bfa2d450757eeebc88a4876f4538bd398d03",
"0x16a882ce517234ae0932404d34fd73070e27a824e337e1e99eb71abd536a9673",
"0x29c0802ac349b823b5b63267ab07fb4ac43717bfdd344a22ce4eb347dff10b8d",
"0x26a04ea7406058bc1b0892ce3a849ca4d4692db13e1efbed22eb8846f62700d",
"0x190401694ed647aedc22c5ddcfa7e5c0690182d5901c6cd17e72d053acbcdd16",
"0x210d51487ac153bd15fd95e70ce61c1760d2ca4ed3c8904a85a7be721dc2593d",
"0xb0b2f1b7b01b969254538e7e34f31c99abb093463df48171756cb005641b641",
"0x28c21cf93221e40e088a37b7e8c4e4f6b4eca3ceda40ee4b7307c9940076206f",
"0x6131acfb2371ead4b47df9a6f6e7ae744931224d78ea55cc67caaf0e5804ae",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x2bebdfc924b28a04eafda183476a1a5add23075c9d02b679e1064e61e9482210",
"0x1faf98e88f5306663b31fd4e1e346eebf6e3a1cb1f21142e2c22344f2adb72d5",
"0x22cb488da424d56b9878634ac766c48a306371ab23ababb0688e9fbc2bd2f305",
"0x1ebc0f4f5901ae74815b159db10956d58d8faef0992a2c2cec68919d131a0c62",
"0x29c4ecf2d8c9d693dada0aec9e743bb283b0f02bf4ccfb0ab8fc3fd7fea381b8",
"0x2c4a092b45660f079277c81df9f8f3a7cb74d3603bc839eeb2fbfd798398919a",
"0x145c56ab4720f6ad4011ca83e7a29a83fb11f6f1a5f9fbc2782f7ff4f7f18618",
"0x2809c4d7a6aa62cf849cd656c9f76c7ebe815d51f180e1dee45cde9714261b6",
"0x14881d4e8659014f6dbdb9c1a45f273ff86fd6491a729c1b4cf5faaad83c1319",
"0x2e10104a54b4dee285b186d2ceebb3c520a6f08b0f2dc3ef071aac189ff90a6a",
"0x1aa6d9185256a7da783e9673f47a57a4f1a539ef39f3f7f1686995e7f6de9011",
"0x1433a78ede2442f29e1c90a35c75945079ba472a07a5fff22dd632611f0514d9",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x2113235e983b253534d3373d425b2e65ad758d985010990e0cc4c8c0971fddc",
"0x2bbe5669cac7d09050c0479d3b77eb9d91f22a19776d9e396a4c79b90cdb6c80",
"0x251dce15ba53f2fcdfd39448e3ce48f74bce1d96cc2b4cac2383a40f45918c5",
"0x25af3b31579c2c0227ce1fbea8085d27d1301236e4a469f154422c0c00a3b47f",
"0x101f2400d1e814d019a47ad9bd6d800b821c2de5fec03914276fd7413071aa3d",
"0x1976bfe37936541354a1d66197e6a7818313cafdc2f4889f7647f808fa4a7b36",
"0x223ac76deff06a630762ccd8db9391023a783e28659eb7f9d57223812b6abd2c",
"0x2ac83b6435ac467384d3fe77f06d349c66d13274d40c37626c0e186ed73da3a5",
"0x1075e744bd71d84cd204e4652afab236f75fa604f833d02e2ac15f06e13ef92a",
"0x9684685d0631b2170daaeb0e82af4cbd5c2945f68dc758f05da1483c2633015",
"0x292e0a7a8cc10221f67d029c700ac0bc1a9e41dc376fd1f7ee52b1aced908f2a",
"0x1592dd8fded27b0499c5d7b77069e8eb2d27ed4d0159955db902ff47cec50d1b",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x116530f4782990542c91156b83b5283f48a5b3b96f4cc9a5eccfe8db89446397",
"0x20792a7c07e235c08d2cc9d5b4ef2a93b7ab876d9f646d0f4538c7c1ff354fbe",
"0x1c934293f228bc73fa4b8d5af9d93bc21b7db38e654c0f69a82e6d53a3babbcc",
"0xadac0d1a0eb882f325bcd49c617778178187541c3f2b877c9a6e2e200b15c29",
"0x23788446ab58d10e48572e52577108cf0d9fe33539bd0e8ba8d635c0d135b409",
"0x2745bd6d0a95fe5be2bf988b86fdc7d17bdd6323777ffed4b0ef00e692a591f8",
"0x17cdaa3978f7d9243acd9d66de86ad0a1bc5a2767206d506b43fa8df769ee178",
"0x1cacfa3a8850decdd65a7de60fe3d4b063b9eafaa858e4455d6b0da518c6b221",
"0x2291ce130877baacecde1e1932143f97da67a5c3b2bfa99ea099893932fd3e6f",
"0x15adba2fc3b14d20852d217be0744d63363ac5bdc8aefa6be3d94ebca832c3ed",
"0x150619b091f5304ccc7d367cd48d4b878a2de06dce5d9d7137ad6ee307e9cade",
"0x6bcd482b40a5463d05a49cfae4907c05872388694c4548377ef2be93c2b1499",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0xc678bf7b43613dd2c36546b68ca0dd3890f78927c5b7898a79f0051aab7199d",
"0x4d55e1ef8446fdfdd9659d06180dd772bad31738654829e3f68a54625342b6c",
"0x17451474d0a043f2ecdb1c11311e7848637cad312badb49664776d9947a25578",
"0x166f2116cf6846c85bbe1e4c78bcaabb2823e0d4c0c27a6bcec3f1c1c3a4b001",
"0x1d2d00463d86b76474ac56cfbd0fbb7f5071c792f61145f1ffd1568645e83f39",
"0x52fa6833906fac636cf7a1bbe3b6d365f16d917e5786ccd1f303eff8439447e",
"0x1aee2e06db5d4e2ebdf163a8d1ef89b70510c37acbb47b5a14d0c6496e66669f",
"0x1e4d0a71dca74b2d4c0c403a8c99cd9582611412743944d25b97ee4108026fb9",
"0x1a31ea0102b313bc96cbe558f0fc662425e25fc5f9395a42a051e927ae3fa2f3",
"0x2e7d99fc4631683d67b62afc214c8e89bebc91b4adc4625c70fc5813840b9bc1",
"0xba02e66d788b4db2c10e4b63344e564cd24c1a3e7e7f3b5c8c0bc50f2aa8051",
"0x1938e6cee09167fe4f1b6256929ec89307fea623ff00a4c15993fd44b9b9ae2",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x24ea9e2b25c1d10973fc2758114ac04d62292d75633e5a98d87d42245d3085dd",
"0xb7f3dadf80c5be4a9fe724d8c7ef9e4b4626d9e8ad61295f9482a5bdc1c6615",
"0x6d9a25f5efafbe0738e9c1d8e291d7dcc6e70434973971636fbf957353545df",
"0x57d08da194c641d1c1957a6ff6ea5037640f6b2910f854653c1d14909a73b92",
"0x1b1c3fb5c7160d87cae56ef5a808308a5188abf94b4f127411b3636a5098a628",
"0x4e0f9b281f00e246bcb7f3e5259e4554eba1148b92b1d464727259267b599d1",
"0x1f31a5baeff037edd6912779c79b566c6891b55bf02398c2a2f1f40a41b2aac9",
"0x24ecaac4d6023fb27cb5836794e1f821f6a61924d14810ec882e757bb5150709",
"0x151f138379a4341cfb1a1fa09bb3fc4ea4f58f0c0213bd2213971fdcf1791394",
"0x1f8ffc956b5fa5f6c5700394e863341ded45cbf64199185425651e92564c2fe9",
"0x17ec84b7ec93fc7204915e7cf163797456992c8b5bd1ce3879ff7238d60627ed",
"0x3a67e721da24139c6203edf65ee56debd2db5102b2c193aca10c98e70cc2354",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x199a8c4c63048f8c92b96e2fe73c3ef1be1e2ae312bc504cd6edcad0bf96967b",
"0x20d5d5315614291c431a1f27ee637d098c6b2455e019872a06bfa9b1322bbc58",
"0x204e87cda44e50d72b36c9a0bef8906abb1471cb4faea1262bbe1f148eedb60f",
"0x1ae0dc4cf8615efcdbe69bf7e65863b9884297d7320b3d2c9abac80aedf519a",
"0x19ddcb6e703520397f566c8969b47605f907fd733a7531330329fd07d0daab63",
"0x224f871490b12271549e5bf1205ac16364f8c6f9cbfda8214068b69f3b58ca57",
"0x305888f9b716c0aad54f0ce4ee1c74052bcc42261232cda96eafd2c17faee5c5",
"0x797616b6e3a31ba4090fc46bf370854483846428e52ed4fbbde16ecdb407edf",
"0x10d0c9c192672de1a9ab86b469c6c9bdf474fd4c077fa2b27e702611295e06b6",
"0x1bbe4c061e88ab93144f0cdf7873acdcdf695abe01712409f942517bf2775c29",
"0x3f37c5294f581af0e0b407e1f1691acccc9b2f0fab04fc68d968627ce38fcc",
"0x10fd1cac0351284931df18b06d6d8baaae12879304e6567e96e024258a63d84c",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x2f4ce93fa6f69179598530075c2dfed92480e40b5082c1e4d0884a6e5a970c95",
"0x48aa1e38a66c3d656ba67124986f27fbf41e16d1aea5d66b56d7ff786a5411f",
"0x69328b6c9761099bb94e1fbaff46a4643a6d52c2826038bfbad2b96aa800a55",
"0x18c5dfbb9611df4c176034f538bb3355c4ea9a34428b568b3d5484264fe2ec7e",
"0x250964c6e716f188f1a060bbfcc20bf6c9c575aed8eee7a952883875e3469e5f",
"0x1cafc40f71b4ea55f7449981d952e200242a375056b3ebeec542f743029d3680",
"0x1e345fd27b75da9f73b66d7d11fe53bf4d7d9907194ffff926b6fd73650eab00",
"0x1f86c19a4e41622c5cf6d297f3fb0966d1ddf28c14c2ef296d811dcd725656bb",
"0x67a9ca314c1b989a258f5306f02017756676c8555e15e331674dfe2de960aed",
"0x1a8c2c393c5940ee66a9fcb7745c711183ddd8d5336cd2b72880d1534fbd954f",
"0x2d0fe4e3cea76d8b33f29cf85eb4268e0097270b955369782adf6f3b56a2762c",
"0x83f71c1657f460360ace088b5682357e7d591b331beca39de70e7c057acaecd",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x1029b4658ee5d03c9476e1df7b7ec5447dca910ddf67e610247695140f7ae6b",
"0x2d2fbe8b4aa2a78e6d15b471d034a31c0710a8cb23cd64bf8a105b0f5f6c5088",
"0x2c68d13a038f7cc21d4035f2fae3ce2e44b06076755e64dbc95a48ef8fd32ec8",
"0x255433e441013f28b645c439abd003cf216195cd6ac89e9cca3a2605e2afafe9",
"0x2b6131efd66fa044954f1b2cf0798c44840b9ac5f91f73bc1d6a435d192c0606",
"0xc50cf3d47abc4d5094e4faa45ef8950e9f30f6125953caabe1240c70dac54c4",
"0x19ac7bb02c466c14f957a8683f2dc7a0f888f0bb9f233acae0568493f353b438",
"0x134932780855ca4e70db189d5439192d257a8560daab00be7ac2bb05a5f43d49",
"0x14652e3f019f18958f6e8c521fb5b375f755691cdb4cf7cc5de4ea7e5443845a",
"0xeee4bb3c7a628fe38bd14dfa58f7a774001261e2c1b0013b8abc115e4059685",
"0x1ad10967a8fa3bd36d86621d021c46dba709ff285387c064ae6f305cbb0dc77e",
"0x6fc3833718a4e8937f1151ced67bd1059ab386ffca63596129980ffe0ceb943",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x16d751a67c79f9914851155d386e13b0058b4682283da2d2078704c75576c7e1",
"0x2ded2eddee5893bd27e85a03d6501a2968b3ef18a20ecf50642d5201fd40252f",
"0x1ac7670ba55f7ee1c2ee56e825e80ee2da811ef8fa08b90d8beeedbee104929b",
"0x64cfb658abd66706a012f10e3f27e0d8c9b83b3e8e5234774dfec5e1202712d",
"0x806d16963ae96badc162c4595f484fc6a8cdf753d18d336aff5b24ce1303ddb",
"0x148cd069f578f6a864c92ca38fad53423c9a8792967e44378305739c39c3951b",
"0x1513984d0c1ca0b24ab794ed86a4b94f4750a3a5bf1977fb6feac9afc85f45d3",
"0x51f998093e4dbb4e7f8e410139a65ea44764f0d2af6ab5461b34717a9561bf6",
"0x1f87df4d84ecd7b55bd03728de507a7c5409886811152634e16cd2d35a18db0b",
"0x956f375546f0b19f6d2f31c5be42795b17904341594daa5f98886bad442108c",
"0xf17b03f697af65662c25f3dc43f1f5e050f1ecf009ab004f3fc632938130339",
"0x2d40326e94d3dd13c0534db03b0f6ba6ee54bb280af99fdd05d1cc7c94c9536d",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x2b0eee4044939efed29b0a5002b16ab0e02f75d1e193a21787d6a7f93a018508",
"0x1b59d055ed845b4c304fc1e713c622d1dfcc7eca8fdaa57f38d7182d52b1b4a9",
"0x1d2d4adfe8bf73cebefe07a088507412eef5a1efc020c7e3c81fc9c6a11036a6",
"0x2857125d19ae926856a3ccfcaf70acf2b258f9fad70fe242f7168ffa2d02d2e0",
"0x2f1da0ad4d4cdbd868691a65495006eb3728c6e410a57db82f874671f75d7c81",
"0x294d34350a9bbf726992bee62b3cd7d2a333002340a4bfed74f6209c4b6173ce",
"0x16e5f374066b223ca5a2401f102d65f5e7fbd677905b2e17e568612ff96b602c",
"0x17c1bc44d70706417225c79dcc9db569c79fbea66c018f2881321c4877b7fc31",
"0x264cd13057b3635518ee4425f88edba986a49776e94760a4d73b17902cc0d359",
"0x2b8fa1e65fdb45989701a0f231114c0ef7a8fd3725c62070a9d748e5aae95827",
"0x79f16e76efaa3caa7e2f266ae7b3f1bbb54a6ee571688463c9d62b17acfd6e8",
"0x1c5a6ff0893053c43c552cf41b68b48a7759e63d0fc6069d2ee247c170f71d25",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x277dcb1f82810d091b7dbd02eba6e8edf5c97b08407a469c4ad99ec0a7938a26",
"0x1507357ce338a6f1c5f01907a91c62082e6e5182cd8b8c47f9051b2cbacd5238",
"0x10d9fb4dc60b7064e8d6ec643727c394da7318244c57696bbb473e2bfc273cb0",
"0x51cdb7af55af1483816cf02db477c5c21a2e16760ac17395417afc92cc78979",
"0x57d7491951dbf51f0b1b05406e58ea37d61518a67546fd430178a47e5c34dc0",
"0x1a512039992c0d21bd7f2436bad315a3955b38097568c306fa92e603d4129ec1",
"0x3047f751d881408a1f583df677a7313f341d0d90150b0031bfdaf5a17c1a71a6",
"0x182d95d647c5f27363818039527bbbbcf23f4c143f6bb98b064daa5f09d127d6",
"0x25973c85813c7ec78b26bd63395f522e0f8cfb0fa6a82375b9b65ef0e24c2aff",
"0x30016e4e94afa204d5c420908f1aa18fbbe286a9512a0f7dd492b268e2bd4d0a",
"0xde8759915e7ab1ba0347e7d3cead6663449cf3e56dfbc87b231f784a6a16f6c",
"0x2b3e7d63f286ab49bb3ccb30f9a8d337c2a871799020681e7c1e5170569bb6b6",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x22f6dc515f2a6d844a494d3c307ec715cb4ac439abab7badd9f0084ce1785718",
"0x1ec843ef7fd4d4078d3c68f3f699197d1818a3321f64d15d940ea6816db2d4ed",
"0x27488355bc40e3b48175e215bb7937413eb1fe296f51266e42d421d1d744859c",
"0x2e5cb786cdfbe0c74b05fcc700ee95936658634d6bb9152251e1ad38f3ca6666",
"0x92f4b8b30e895442ee3f481121a04542cb01e9a458f3e61c773328e1b887f51",
"0x2943525f7b6302dcbdabfbf7ac5c27c0187bb016069c33b3947becc68c00a873",
"0x22a61651f69e2636019411d42edfbcb0cdbcc3b1c0f5bbee8ac9baf66b1b8487",
"0xcd43ea643c19e6eec4448fbae1ea6c40dd9665d93b04099658f4e216b0d7925",
"0xe6fb9ac72a3c4754de58d5b4ebce0f32aa651db3d14d5adbab0edf79d746644",
"0xe18bf3657ce59002f57e8a25131e39534ade10d742313d81f02beca3cbef04d",
"0x24d31ca462d9f59dfe6f114bafbbd67bbc9fb15e260bed3552e06e559bc049f2",
"0x1663ec74cf67dbb8e668d7eac5c8bf51c5742c090f7a707e297d44a0e300b093",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x159eca9b923d7cbe5bd8ca7b3ded11c3ce6226130a63cb905289e0f02a5351cb",
"0x2abbc33b435baed63f3c31aa583ebf8061236d423321e6ca666d33a0159b1193",
"0x22798974294faef1e314beb8b7dffae46b50276230b06c98069b742d5bc789ce",
"0x56841bcb1c18a70dd298ada142c577a249b7ca301d1080a6be5a621d604f15f",
"0x1823a55887acaf96966399d381bdc7b8a792d40d71e5c5dc24a51d02f9946cd2",
"0x27bb9a8678b0a2cbd911e61b68f4a6928ec6f3db90fc28884af8e20ef711842b",
"0x1391eb35e10db17d84b0e7dd45145a754977c4cbb90ed1bece966ab89de71f10",
"0x1ddaad4930fb9cff01affe0c6bc2034acbc20df09fefb4fea7c346dfadcf99d8",
"0x967a6467b486450b51ca8d529d6aea1efb101edf31f3646efe1e969535a6a8c",
"0x26edad91bcac2202606d579d3682ee71417af365a5bd3cdeda16158d0059f32d",
"0x9c8e2fd871c35f3448ee49d7e7531dcb5301a6e748809ee639b152896773878",
"0x2de254340f39689fb3c5e3740c1d1ceee26e8ef87c64c8b3ef5eeae2712a2fd",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x229ad4c71354c4b2ae2f011e374de05f72548aac7f407d8f52f00ddb74f2456c",
"0x15d1ae9e3d615f8321be16db99bd43b9231dc51fca7ae9ef2c1ff50cc948d5e5",
"0x1ad595eb60e44bda1591a4a7ea6facb03ed18e8e4c7fe44aa4949c176b3fdd93",
"0x21c6b958e8a24ddfd5686e18a1b1c93843ea3efba13869302f46382e6a57e567",
"0x1b4643c47be36a9608af217edbf9b2138045e295b062dd4b720896c55c1980e6",
"0x44415df1dbbaf342d11d905f569a68a53cdef58ce2bf19503ed0d032ad3cb58",
"0x2b1b266d410ad7a8990d350e5be5b1be70822f5cf0591cfbc00302c6a1504fad",
"0x3cf806a68e9ee25ea00b57abdeb9f4b5ca199f9af3428a8b5cc87db1efe81ad",
"0x1013c9c92352dfd09c3e6acaaffa2c44923b35492c5691bc7e9e734072fee822",
"0x18afc92340649e0d9608aa526d2f86866d4bc5280c3f45addc6567b8339286de",
"0x265cff469832ff20e35d2da4e50505b8e17a4eeaccdb516f36f3a71fc916a82d",
"0xc83c2b9df3aa4a874494e329206968b89b23b02f35258788e9bafb43c47c973",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x10bfc00fe5269d28301b200756e26cf1281be271d1300b11d988a9ebc062b10a",
"0x303c1e41ec4614539b4edebbce405652475c1282eea708cf2ff39ba8aff4a4df",
"0xcb8f9cbe9420f6adf09e987a8bb44158ffba89abd7a738ed54ac6a95f17500a",
"0x2f0cb3011c761f84dc5b01ba7a89194919d06f94304fb99dcbc0ad7a7bfaf796",
"0x10151a6d8c2e4d4dd265b3ebcc0e778aaf056a02139fff9c2ef25968dd2abad9",
"0x1e50838bb4dc4ff216abf8455b8585010107e2d64d1fa600f6f3408655d36fc0",
"0x528850ff2c7ccccd074baa85e0989e57ce76ea60b697b8ff19c97f1f9b5771b",
"0xda83be0e16ae4edebd1fbbd5b3003486f5783bd79164ea1c6a4fbd945a285b",
"0x1bf809aaf61005aa262952e1ac2141e5a0aa596fb9d828cf2ee2639b59101e65",
"0x231a51ec8565bb72d6791bb758f8abbe5392ce08a655f2bd03f7593a026ed371",
"0x227aa3bd0866433629f3cfd228e20be57f8499f4a5597d3429c40eadb238f1f0",
"0x272b5a76f45cf6eee3210ca6df476b2555fd79fd06180b3f7eb546bdf2e9e4e8",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0xaba393911c001b6e701b44726a176bcdb276d02d3eff5e70b0cc16aa7570958",
"0x282c157f6cc7614232f974eb110212f786134a965872ff9ee9430cf05a7826a6",
"0x16cb3b06654e4997a543284ea7d12efa7b821e96889b0dfebaab9eb705d829b7",
"0x2364c3f74a3b18bc2af5f89126552fcb58c80ecee9c05c0fcb4e39332dedb205",
"0x267b1113aa1f20f45d5bd1e042290c8d1e7e7b4b5628184704b81f894d07fd0f",
"0xbd187c337ead48b6889b3e20026dbf604729fb27460fc1b51b7b3a03e9812e",
"0x2691351a32661a9080480e51d758cf0e3bbb9dbc43e108293576c153dbb92654",
"0x13c49152d941d3664ef620a47f29229b8b41060b9ae5880658772ac615f6c48b",
"0xac5e68b38810d5343dccc099076b7ac9388c25cd6a2b2d182800156ad18b438",
"0x18a7e5e6e2f6d92c409fcf6bc1978d963fa8093bd83667a95f19841f1a826022",
"0x1ee76fbde9ff833d860abfe09f44cce584cede5a6a20aa765975764d97c3c38f",
"0x29139e18d16666687e950c7f417aca14588356d6737bb72d04444fe31e15c292",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x27ff4617698e6b395ced6d0e40bb327a4dda5467ae001e4ed828713c58e4cf72",
"0x1faeaa26b9d4016a7b060a1125b5b83e22174ac6131c860d77c34cf368d4d5fa",
"0x116b96192f543b8503130b1bf684a9bf282b41f400aad0041777f741f97d42af",
"0x1ace40f357a524887cbc0748e9cc2bd2f968a87ef94468359c48fdd333eaffd1",
"0xeb90e74f33e537563c4c2f8633e6d8f8d2304266741ab5b0c0c97a89c4f76b3",
"0x15f692b65b0e4a2729d1d07a728029a22e6aaf2d8013a26d80ea2f4ed7230b2d",
"0x199c258f1265f41f038d234249d79a9d7cd0f435355f9c9f9d671d12b3d81360",
"0x2aa4870dc13bc48b19f3d7ab5df282f855783d5cb1539cf358d235859cc38328",
"0x2fa96e08d4613eb78063774846b608be0b7014165df4207b83217229d452336b",
"0x1e45df6508abb41b74eef391fe603465e142e7331c1a11e6d1a6dce3b5af459e",
"0x157326de3fc278a3ab49527c3bbd66e6944065a068afdab3426acecda2fced3a",
"0x13cbb184686e4e800c03d32b9bb0e86322c0547ff70bdcd6b6dd622fe9cf772c",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x2195bf264d78f5905511e946fa2bf8fd1c31e251405f24edc679fdc2e28c4935",
"0x2891a04c8c9333c3f86cb9c27db0cd4590b91574f283d98d87588c5329070ff8",
"0x25774ca47fb81e980d6024bcb7849e10bf90974712f1c15b3c5e42d48a990b32",
"0x19afc1bfca44fab6dd8cf347d13bd9d679a663ab864dd7474c095855a69489aa",
"0x2a855f347153503391af5cdd8f33ba84d9b7f330c5d71a3d4d1308aa36ee1f5e",
"0x2169a917b5586a2cd1f44fc39acee8a0af21c0b0551fe2823662087b50d3e183",
"0x165c3839b46f2b8d9c94cfd1acda9fe4cb4b37b64f7530324e44a859b82c083f",
"0x12bf9acf97c5d1b2c23723541455fbfa679d3539879434010843e578fe33ba26",
"0x973d4990abd501d246a5bea2b5d467ae07f8f141968bc7049a8d7d100b8d80a",
"0x281a0f1018049ce5560aed11919df7e93c341795c9fb1ea17ca7f6e61f56450b",
"0x1607dc7766404c513850fdefc9f3e25d2b9f6e90b4f566418fa142b787ba1d2",
"0x100010328a776d1e0c53f55c79556f12bee9f2fc908b0b19b215253b91c071af",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0xfe6e334c004b36f6a9aa7a1695325b8413cc3a527fd77093960d6da1da678bf",
"0x192c7a5566dbab04d61dcfaf9675cc88833477473f0742c7df458dc0c72492f6",
"0x16d9f79f4e2e32895e9b7d3a13cba3f9055c22ee00fafaf94cf1a2237279c28b",
"0xb3c970c3abc81a5c64df8177d69ce62aaabafe4c797eada6f8724ed59924963",
"0x1e3480b6b43165f2e9e98cdc6b1750c9f8552375c746fd9318f6e98dde188146",
"0x3ed9978d698020e1627fbde78f83dfd7267a525315d03c27f934a04901d717f",
"0x14f962e4f1786884e7ec52bda63442115550a7523e9840ed60e8ce1d97e81c27",
"0x352ef9bb93ac53fbf0cad44a4c9f359d8be239da7c8da512c3b8f339f1eb8ca",
"0x1d7daf3d516993cdf2ab5199f7fa038ec18b7bc1d7643191dca490734b41162a",
"0x19c4fb9c7330292b9859c4471c0558692ef015cbd58c7d6b9f8f6a61701055bf",
"0x22261c2ca798dbea2a989b4959a6ce59a327a1a5817ef4d0c99147d79e119d66",
"0x1c8a822a7cc949bc91f32624282c0b91835aecebcc805add937f2c33ef2b13e0",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x241eafca2ffd1a89501dfb8ee9f6b91c270d2edfb22b77f5d96b64c074972866",
"0x1ebfd44d328c120e25331359b950e96faa3b24d803cfebfc3fbdb5aec7d3f21e",
"0x1d45f9e955be39be29b72435e60ccb82ceca4dd1f1bb242ca40461f9966dba18",
"0x3e68e982b6f9a1317a8c72d1519c8d992747107cd1647f55cf86f1274921934",
"0x24d58310c23fa88e127678cfdadc69ced4344aa62dffda5d17bfb5cc6cf92164",
"0x277159e31996dcdb712c9a030b14b40e45704c9debbf6c83381d23b98277564d",
"0x3fc9ff00ba6b7b1584eca5fb9bc2479289e05be8f7fae084849424cb08a1412",
"0x102731ced3c51f13b9f0c571a0327d5b16984151ac388ae71008e062b103c7ed",
"0x2aec624f610d949b7e050f9240bdc67eb00b17980637731a93401129babc51c5",
"0x348bd0822fa0e5733e59d37c6c25354a899286210dd11b006b45086b8936e64",
"0xf7b4685de34e45e8e884726809202d717000926dc62d3373ecdc8f6d6105a3b",
"0x229abf24fc333d2643cf514ec877c3155b9f5d4563975ddefa179e69e728ae0a",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x1e9a882703f9fc17e0b9b0e13c13361beb7f37c04d00ab391d59bff4ea9cc738",
"0x18ae81de5d561926c49500b4a1c817e127ff35bd92ef713b8becd8ca934e18ee",
"0xf691c4241640871dccc03e386a591c9068711b69e35c618ae8213a7b976b467",
"0x1dd3a781963eacb7623f1a53996b79b1c5dbdeef63ba509d264179d7c7c58367",
"0xe30b8151c59129f74a868583f2da36f7f32cf07d93a21dcb8a418929a3bab4",
"0x176a4a7f6bf803a3b2d7b366d35468d449210f48f31753fb63d4c50a522f04ee",
"0x2d0138a0a5f600964d4ba4ce8391caaf610e7b9cb46ece6bac438658e7284606",
"0x1208049ec66dd8b35cdd748c6b7e54c3dfd4ce63937a8e5f5d7bb55c70bc3256",
"0x1c9f3c36dfe21664afaeb0f1d29166f2896455fe34a3e3a937767a3de6fb92ba",
"0x203ca885554ddda35c4ca58ed2150867f677c99a1afa4796fbec4c3ea534b7bb",
"0x20e28f5d901c425eb6d48980e9f86b212911fd94de850663e4bc4042cf2fb8e",
"0x8eee40dacd3ba8ca8953eb7713bf9c642327bb96f55a7200f7f19851a25147",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x2de2cac04d23e8f84478018e4160a1cf34d66ecd6b4cb8ca67379b0dfed1707d",
"0xdee104be28ba9a4493e05d14072223610a77ef655f646a8ec1f254146b0739d",
"0x198546db1f9b3073c570cf4937bd3d716336b8267aeffda95debaad2764c91b0",
"0x2df10c785477ccf2aad54873a099f7a5245b7a1797d4b7692df35a01a4265e0c",
"0x38e6b803b72b22d07f3c4d4da85d583d1952dabe6f4cbfad8ae16ffe5aaed55",
"0x20ff66ad9f9056e8a0c513785f7f1aa1ad0b53ee305429c5d299ecb3b7d3ff95",
"0x2662e4ce6ef014cf95ae1041e8ee8f25eb02d188a234bdbcff2a4fdcd222fa0e",
"0x174299b27d180d0ac59e31ffb101a68ebee5b5e17e8ee251b61cdc2d73b5d96b",
"0x2cd73c6ce46c664bab760c4d73a7f05132e1ddfc0ec113e9b37f9144f7a1a24a",
"0x1c951a5015ebe45893a92af1b5b51688298fbbba474875f7b9bf97faaa69cdfb",
"0x1292a82ec348fc639f61c1b9d4f48e1a729f8e4d297289c45deb9d79245a7c6a",
"0xa0eb1649895b7028e7b286f147cd47655fd9380ad96b12f25d4d50134f1b624",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x153879267fe585e41277a47095c2e71a556aecc89b880549a3e6598a2b679888",
"0x20564715ed17601ede44b0ddeaab78c07b24d7c384b2a278ae5902ae4d53ac21",
"0x244a763e10b0ebfdea4ad6e115bfc6294ab8592515a0f103750f23ff4745d4bb",
"0x2313de5d350a08f83a06f60301627b52170678ec4089d95e31a85ce639d4d3fa",
"0x2f61c7a357564272a6c31f1d4a2c37d68f947ebae5ef06f0003f47baaf8b2551",
"0x2ba56182022bfcaa94b28c4bac74fd7bab368e2f17b123aca7cad3c07377ba7d",
"0x903e97b86b03d63bda9d015cfac4e1df0c7eb553114d6603e1d9cc6def5a2bf",
"0x17ef136a59507887ee376c9d03155d5638f73695829bdf753f2027c93f6e0ff4",
"0xd2cf9780d3b8665f07b485f9b61c97ad43523b52b89a216175fb479596b429c",
"0x2cb10c6713c9c041f988e1d16e1974db3bbf64fa6a0dd716654d2f3d7ee3fa08",
"0x2a7fac0f7cce1677e53465203478eb2a87f4a5acfd0ac6b10b24261967f265c1",
"0x150f1a3251ea142ce9c8863adadf908f98b6f4eca4fa8c7f60834ebda805efce",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x1f5f9f0a9e7226242aba685459ba2d087305dbcd15238e0d61537fbcb4e8ea54",
"0xfec778388bd29f1fdc01719aa2acfbbd07873a4c628caadf04ed461a49b5730",
"0x8fbb80d8ad67e52030c52512f3947eb0fa257e7a6bc97dbc18848ed6843fdb0",
"0x220ae6fc4a1411f922a67c3d2191d16fa72e4485881f5c44d07ad1b30ff72534",
"0xc24db144fed773dbf4a285f6b292f097e73c4210b64f60d0471099526125207",
"0x153e33da5f9393fb14de5f8d9ff25fec63f9c284563c9b75485b8c5965716022",
"0x28190eec890ed4fb51176a21643ca8bf8a4c6d1ddcdfbda70baee9842e771e0d",
"0xd352d314f8a649bedac97ade9cbe51cbb4c1d76124bcb753ff46124ae2c671f",
"0x589454222f880ff67b3b6771ac9579115ef98b4a5291ad1f466c37df59f7a0c",
"0x707968b36327eb7bf42d881932225d1e6a9cbae3e9a9eb1a3573575b081525f",
"0x24d15b907584822d94ed3cfb07644a1d9cf985b94ac08fbabbbf5070ca3ba2cf",
"0x2d51c48b63d97625628fc1a9c265a29f4b5ac1a1d0ba807f3f1d6a729e8d0d7",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0xc5d3e1681af8c731635a66d82e8ffa52d6fe9ae4551c31d9ce5c7e9f1482f3c",
"0x19f573c7bbaf4af57ab119d9c34a976c7a2770e9960f8324bf938e67a40bb621",
"0xdd53d93a158832a63ae02346cfb050f4aabd93d2c376a694322b70020af739a",
"0x122168471be451e1fe2383a1a82795668084d4602e136c3533156ae4eb44e5fe",
"0x181171e6af7921e268f8e4ca02a69df02f99e374f086433e2d8438465b878fa4",
"0x20fde424afb171516bdba5aba1302f3c40adbc6df6009941ce0978e1005f1570",
"0xc999a3c07697cd6e4632110862a0e3cd6f2ae7ead5a0c62f83e57e3752726ac",
"0x181e43350d64b75df7c57808060a8a467304a9b10766426597fb485016642d1c",
"0x22f941438fb638d0f6e1013d81672149e91bdd794816a149426830a140ba5520",
"0x27bc96df0a03fa540349df2a46633309b8e0d2935a624c7aa51cd859373b1d3a",
"0xda6574a31cb0b010480dfb6ad33015708e71c420b8f3664186876afb8b48b69",
"0x2a932da3d493f5d229a00f18bdc6b13a00783ef10510ef02d3836a9728e75653",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x1aa840ec7905fbed4b22675c84cbd527218db6bdd21e9558fef98860bc337607",
"0x2c5107353c0edc8e05ad36b277477c9d3ab2d26fd43dd2252878ca814c48459d",
"0x1aced21cae771d0294a1630be67579d81245093d2731898a72b822f8185ef3f8",
"0x1a24a7fa4d6d5498af1df2f86ca66471a340c4747a1e24f592aa7667346aaa8",
"0x289caf37dc4c64fd8c66718013fc3f1492b3c76cd1ca713196aef3d95281e3a9",
"0x284c43505df8fa7ddd6f9ea7464f3caca8a3b3b55d39512a38b2f37b7437802",
"0x501489e7c91a13086c850a7174848dd37bcb7e6a2f8571ca3086415e22a249a",
"0x1d911e709cba9411cf221392b1d8e8f292d3895e5cf250977f7bdf724637e7a5",
"0x26ec755542bd45c2c4968fcc98192cac25bb539cfecb7c16c926edfebc0dd4a9",
"0x211b3d812f9687467d623861909909e8a579e66c135d0ad0d36038116e858ceb",
"0x1835f5c44c7bec7bff1c814c38d109572702ee85860c2977650db910dd555db5",
"0x22bb08010cdd744ace85c758c58576d6b353ca6326e9de8ca594c57b40a76b48",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x178bdbd863dfd248db7cc60881b17996fa8cb0f5a806ba37e818d493dd4d04d5",
"0x2c2feebc25c3e9911fbcd7c77ddfc8feda0e36b3045e86059eb2507db84b20dc",
"0x1d8f0924e2fe93b786ea1ca32cd7dd268097e1144e5f386813e40d7de6385414",
"0x1d7b4297d5b583bc00d946ea2d45e79bca3b869f3889a3ef8b6986ee80515603",
"0x6b29e8a6cd82571306523e57a88ae2f1c627688af6a57ab4adec48071d864ad",
"0x23f708026a0738512248c05a5a51dc0f0b64cbd50c98f2c001301a8dada15649",
"0xfb9b67606d1b70a59afef99cc15b51ccdacd8ac412858e37fd0a5b685aa1187",
"0x2e507b8087200a7b14d7c84650e5683ef78d7e5281b489d43524206ced314cd2",
"0x1bec098d210e06aa6b800469725bb7d361da8f106e3df06fd5788b3b423bfecf",
"0x6ef2b78454ee5f43388a7ea4728996fcacb8c01c644534fa590de1da8642172",
"0xd5662f25569baaa0b10d66142378f0ff302a3654da318bfa370812bad2a66fc",
"0x2bf77b6c0aa149a79c695d67d64005c90e926b44890085b3fe631b4a8da64760",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x1bd8975c90ca4e356f1c37f12fcec0ef5ecf484736f375f78566ba8aa9e86427",
"0x2bebb46043c675d8d4b13e9d3c243f49da64640954fd5e194022c846d69cdd69",
"0x1fb7e54c00e38234348206b136e17db48743a1e8833a4146f905113960314be1",
"0xfa50d544f0434df48d3dfdcfdd164b9ebd8e57d7a60be66b879294a40a9c396",
"0x283ea6139b65326666af04d9913f3200f9b93067867be1f2431796e9add5bdac",
"0x758ac2a306bb32c1030578921fe09a5d40d83d968ec10aad31a15a7c56da8b4",
"0xf413088d4106e8a46bf7cba046d1f47b7f8a741400768835d853830ea00ef3a",
"0x466358069d58f4786b2ca782dc4f7a6786fce88983fcf9275b9a5850f814f28",
"0x1385f23802d6bee8b76743564dd5510ed1200f094ae6c16f03ff8b4cefa07047",
"0x108072d197cc79b4188436a0c50845d245ccbfd1480a4882af2cc88351d5419e",
"0xb6d297f7ec667c68d5d7ff7aef48259dde62daeac24b7868e0fad90ab3f3a79",
"0xc82418faf403bde8e551554f4c8be945cfcd1f78615c9525d3c607930b0aba9",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x297b1a1c6fb19a9f0490226d23936796caa8c47a390ce5e3414d91243adffdf5",
"0x1d8de05dd33fb6513962f6bf1406d3da402064e2d32000dcfba1aae1d39a2d97",
"0x19ac0a18a29761fe4968baa2f8d4d4d7a8d241c5fc5cb54a13997873a4bf8f0d",
"0x13009a2e1be50b353babfbfa0c9fc48341125c9028a93d99b16c31835e2191cd",
"0xd660995842ce191476ad064a5599e2c5415f48ce57392e66e671a503a30b119",
"0xe5587ae4cfd416edf434a263c9babb45d793a1b522fc96e7845005f516944b",
"0x10fbbc420434916261f6ce95d1ca7497b8237143757089de2c813388acc3070d",
"0x190d15507748b38ec5d8d96cbb40cbccd3cd004f1f500f3a8fdf9d9dd05cffc8",
"0x70e81c5cf9512b85087fec4b044bcacdf0ebc36939e0e33f12095929b153fa7",
"0x20577171accc171de1282cef827a5b3f7620c29566598066037947da13dc09fc",
"0x105c02eabf359c9fb180c1112e560bc894bc2c453941f29e1b52c28c0d8c6c31",
"0x701986232b2471f9bb70c70941f0732c59b9d1c1d7acd7df2b5c9a3d1063397",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0xbd0cfaeacb5343bc71818eec4baa3eb1f73e5ccdf4d4fb1e585b9326794d8ec",
"0xab6ce9fe9ad13beeeedb535f9cc7bdd51a9edd426a54a9b85b6f23911dbcb8e",
"0x20f5023d1e52fefee124ab42f5eb28a0c18cea887e3a0bb7c4626ee694946984",
"0x180f0ee72343b33cd7098990a9bf33abb509d454700f602d23067f031a314ab2",
"0x9e006f3e85886370bc11a2c92d6b1905da2e1d7389fbbfa8ce2b0c3797b3204",
"0xcd828a1733f7fe84eb56482b0c373b7bf9ffee9c70933a70782c46104a7abef",
"0x14ae5043d94b8f236d770e5435d370e07be470537fa8734aa62453ef2dba83ef",
"0xcfc46dedc8f1535ceabc7507cb5bc7dc27a44b69eb8d799ea037b9dc0cb49bf",
"0x13d10cd39447e65f03bcc27657ce46b8f4b9f0d6d0d9052eaa700aaac4e56204",
"0x1d19d4106503a113839685de852f7dfa1ccd2131552e18f9e62799bfdbd394e",
"0x1c1e57d62f76f88539ab7fd73bd7577c358aac8bfdbe0c0953cceccef55b1c7c",
"0x19f2dac762392328c37a5a54d4cb980383918297078ca2fccf8605c52f36ee48",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x11104096d51f11f8db806853a470e1f2838eec2abef570a01a7bc833a27526f3",
"0x203846151d74394d322ecefd82202cb29361192fc6692f8de4c0788e5364bff3",
"0x2a3214dc89d8794cc308f0b2fed1240426e9095879935f4889f7bce9b06d1223",
"0x296caa3afab57aff0ceac16ecf05b6887ae6981c263b60b49eaadbbdf5332a76",
"0x2ca633b28c1343b7c3ca88c3b6f4f9da113daa93280626e98b3c79d6932d3932",
"0x2c62732b69393a4495154205a9b636650a201271da60b65433419ae8f4543f2c",
"0x54a20f1bce174b2063f5581a86913d9edb5b6b30de76348a881f320afcd4c0d",
"0x12dbc8f4c166edc2716c576248af681b69ed94ffa1e5b3b48459c9787ce39569",
"0x13d733d018ed7c6f4a1e471d7b8a6f36047ac9ca93167d7f0aa674f1704fe7b4",
"0x2baa1b752a095c0d7552dfb65cf2f568b47a132ffd5000cba2720ba8ac4c18a1",
"0xdc97cfacd4771b400ba35d33cbebba737c70e84f07d0ca37dba093a2460c944",
"0x2eb71ba2764a7250281b7d3506deaf0416593ec3428df1a9fe2312e66541f31b",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x24a6b2f63282ecf9be0988f99d0b11798ca33f2c8bcc4e5669bc7a256ab3594b",
"0x13b074b54de58e9fa17ce6356d3a6da3d800419d9a7170e3bb1310daa4f4f96e",
"0x2711023ae2f03c0399399775a8ca018e7b91e50fb4c7529bbb09d5cc88dc9d90",
"0x9fbf1f0c9fc28e92f2040fb7b132373a55bdef07f9009c3aefd13ee0f7b369a",
"0x2b5a1ba0a4702083424b045869aff8680388290f4b164cc2f022b16eb0e96e58",
"0x1292c762ad6a3abd75f5ead608b8f2f90f8c528b772a42d750cd244d74db2e86",
"0x99282d849ffac983bc6cd99827a1d368dec42e7fbbedfb56a6947854f4177b3",
"0x176eac7dd262c43fff3d935c0c11db3d23b0542a6e5e07502dbcea633ae43106",
"0xfaa232a1d0ceb281c3a428f3e67aafe0fb1a27fbd58c89b3143f486dde5db27",
"0x20cca8c39156be9d3b7f3caa041af52ea538f3ec173cccc0b3497aa068b8e1a3",
"0x146799bee14e96cb93165e30306e78be322d11b4ff008af316286989d648ebd4",
"0x2b1d7a8ffc222693ea0d5398028d6042bcbfbce6894aae6c79c02d3398fe43f0",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x13a158f9d67d4b35e8187f741513e818c32a15e9ce3d7ad17e5e0ff76861073b",
"0x2b64a21d911a768ed8f424092d85badea0a141699d41bb31b44d05ca7677f622",
"0x6721fc051436a604df0acd76947426dd9464034c79d02f434ebeae270b8f113",
"0x1ffeeeae4f5475d7b8cfb723d7daed094e18949532bb7f47635ea7290d27b75b",
"0x94d465c413d8f36b86f1a1d2cf263ec81a2588fe3784ad6c7e7abecb2e59853",
"0x205f5fdead5ce83dc8000b0320741d41c9d2c729ff5a7f0cf8acc2c875cd3257",
"0x1978d9908c11cde5f456e20e6ebbecb4d06fcd7e31e5e70ac0efabc721aa8a8f",
"0xdb51092fb5654d04e24dbca267fbaee53776bde616f4f87975b9759cd833207",
"0xa93c02bfdbe4c17a20506b1a5c56caf375aec6dee3b0b2a0884a48b104c00ca",
"0x26d4bd0047fbd72369c8f4834ed8144c5ff28a42ae16b56818b842b9b4d6b9dc",
"0x17c89c980d214a12738a2939cc7fc425406aed9be9a932e0c427991610c0cf73",
"0x49a23ee91a6c076fe5b135cb6f92a8081c604adcc21c8d6456332de80420263",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x13f9655a5f1532244d4e030e782ca3f9d236f8d302af289b9c0a946376b45f3f",
"0x271d8aee48a5a8dc6bdbf29a491b31f24c71e023554a92693eaf0bc68a6f0272",
"0x250f4bf66572c4d089c73f90e1ffed7638ae0f926523295891cf7c765abcc0e6",
"0x155c20d00e84b634d4884c42359c91df2fbe1de2f75006677041c0e70bc23acc",
"0x14c2c6a209a7bc6aa6d978fb994d95646613ae8e6b0e0e5f5cc8f5707766c7b7",
"0xf12be26119ede0fddb6393af22db838f258136f2031fdd223dcd8e1bea243d9",
"0x2efdb0edc82b4dce032308b04745dd1f1fbbbb5640bf28b188031e0cb2e1c1dd",
"0x1ff34842585b84d2bb8c9151b3f6c65f48b84a4e34b07f60192c13a6ce08a7d4",
"0x2d9fc37d4a22c1f195838803941d2f629e69eeefc566990919974d8e7aa968bb",
"0x21b778120c0eb0974971f5a24e29c204042f8b50a61b785b7611b8c0ecc6bd8c",
"0x1fd36ff9b7adcf1b3cfa6ab317bdfe9115683da95b29f84c4e113fa6e55c6b90",
"0x151cf47cc2e82f3eea09b8d6aa86037caafdd0cd43a85ecf5fc3d314380e99d8",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x19c8e29952ab4d0984bf1da922e2448fa9910c0123a999a592dcb473f296564e",
"0x23331f65cf68a733b5e8142daf41bb2cbc40b2c334b78820e92852637f1e87ab",
"0x2a7f938a6cdc65be6c071c8807ff6df4c48a36bfbd92f55fd06c057a48bc8aff",
"0x2c121d40b94585543cbb38980aa3e320f5bb460d165fed90e367f2799cc1e8ad",
"0x2082427ee8b6508762d08df82f8449c47d4b4b117165ff4fa1ff944d63b74d7f",
"0xbbf36473715a6bfeb2bd46b4650b2e48b4fabb9059c1d41675fa76d880edf08",
"0xfcc45095ed5a36166ce4033e91caa2446d9594905b652b7b56bfcbe7fe03ff6",
"0x270c8e9de025f4460363730d789c1f3dedea3343457841db516e129b670c25ad",
"0x1e9cfb5b0f1dfd2465ef5d2731a8d5d26b5479cc6b6e438783231e5b0e805faf",
"0x1884f4ef9e723cc405fe49803473ebda5080731b4878e1d3a5108fb20896d14b",
"0x182b8932fba285b925b7454327ae2a1aef739b088bfb47dcd675730bd1aafe4f",
"0x222f2075bf57fc059a247d5e733b3828fec1aac68509a2c0e4a8ca1fdada90fc",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0xef4c76e42df7e6d4e71b536872ef6816d62d64c06322bdaac4aae65ce6d59fe",
"0x4e28c59213cc28cfb7b21091bc98169875e4488188b70a385197588025ac778",
"0x2d69c1a48c1be2b798dd77218a0653f7bec46bdefb7f55cde3e6d28f56527260",
"0x198d2bf44196f81d74761554f80cc169eae8e817f44ecb588bc64f6277f1d625",
"0x13c8bbb561fe1109612865ee008786c5d50158e42d9e91b6f52b02508b67874d",
"0x1eb37605af262ce36884c03967bfc38d8f625e080c7bbeb4bfca07e25458d12e",
"0x25cd986975f4cb765e4a8f17706cc4438675bf8ab7b110470d88dea1a64f66ad",
"0x71d02268b089992a8d62240d94fe171bee083b1a2d9bbefce3cc7c8cff5a577",
"0x12ee53cf69c9a0be3be3de51789d16cbef35961c6114e4b01244d814a5ced3a0",
"0x94acc645dc2e6929022f4b4b946e8f51ac595fb3200074cde24b86643bbfc43",
"0x22af41b2a54ccf55b3030b344dbc82eb8499ca8c67c191d4b6873bcdb7639f9d",
"0x14c87352fe94d929e26aeedc2421c5812b7fbbcb00a7b20a79877ee086416778",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x21cdd152af751112267ca585f98b2abd9bf78eae7bc404dfd9e8d34010af7c3e",
"0x20d39dbb9c5188640b6f30abed60efa7c61433e6ffeeaf7cd73bbd2d713f55b9",
"0x2642c98bb9bcf76eb3b6e3f86c309b400e79071f12bf462c19fc612a89722b65",
"0x2c2562c294b65505f0ffb6476def69c03e6d1324fd2ed7319368a61c7fc672d7",
"0x265a567985ea221426328919c3ec1bccf462516e6525bee01d1d810c172e88e2",
"0x7fe7a2e56090a75757a54a27a15711c9b7b3451536b61e6a5519a3a073a5a9e",
"0xea63f1b7258831a4f087c53827988f0a5033170186619e513ad470ac9691088",
"0x1d0082b1e2aba35d77b41e3fca46a4526360eae2d1d49d7be6a4498f315be6c8",
"0x17c7b18d8e5324867653d44a765f34f6653a43d2795b040900a2e0b4c03baf2c",
"0x29e0ca8dc73ca2f25b4dd5c756bf5316b25be6c0811e62c2f4437fdb9a7e278b",
"0x1f1e7e26201e619629f66ae5a3c2e09acde700436c22b1ff505280a62db0e242",
"0x2fbd789305950579f702ba8777534c2708028a7845173f13e187752cdc5d98c4",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x2a88c6c0393f56fa63e8e340f708efaf40ac4b85b2ee681d39ee1aa0dfe396e5",
"0x20a321497aa9e78f16a5957492e3ea0428d22442056649de52d115b1c73b1079",
"0x1f00d5da2a0498a2c1341f1698df1a0780c5169111a7b02fef79b0faf32d6498",
"0x15f194a187cba501891864984a6f52cfa2d4bc63ba2a35f61489c70cd651e9b9",
"0x5cd85fe0fc0c75c027f4e3f1bc62872153988eaa0b2ca20b0cb5e7fa3a687e8",
"0x1ed21eaf16b3d661b44df4003cb3636184353d25def19bb04baca933a3142e78",
"0x2b37b5e88cca20d2bb43f1718091b40fc1ab0ea7350f77a5a0ce905708bcf2df",
"0x232c7f2de11cfe7ee3c4dc933a0bd034b32c9979b48e2ca966c6a6cbceb82ffc",
"0x974bb70523301360dc181faffa4a31da9c89a158d446cf9f1d0dd078d681a5e",
"0x6231c17adcde68b2df5512d5137e4207b5ab127b989e551710a7cc87562fe8f",
"0x2694daf5d67e6751c38511d595f6ab520ca299dc52eea4783a1c6fbaf85e843a",
"0x2eb55960ecababf455a49b9ea9db9801a47ff818217381b791b546b262df5836",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x2e375ca4dd0623584c0be2078652c7e0f1999eaf84f80e86f6161d129ce76f8",
"0x206f7162f5d7700b7cce6981f0748ba08695dcfa544eb1a903207220febabc67",
"0x176a8b69b12a5a3269ee7ef982044b9895baaeb85938900d7ef35a89f93b879c",
"0xc58b1d3319260e528cc712e2f2a6c606d711cca0b2856a30f2ebbe57d5fc733",
"0x19b13e16ddad7823e970721ebfc7e4a7c6563a7e3d92de2135873e0e60e750a",
"0xa4e8fd444448adda180b0c6a3ffd32026f0644911a7f4ff85797d7e834fb383",
"0x18be2ac266e3d98839e5efaf7ef5f17abdfd6b6fc729e1f18d834e9a383bab83",
"0xc56583074bd6c3a67fddc94f840cf7b97b35256e00a647bdd7f992e731eb61e",
"0x28ab1c80f8d8221dccd8818785b995aaff05e17d4fd8f55664b3729715f67715",
"0xb886b2ff06d6d3db570b2060a95b75e3a085d74c6ed9dd8c4f96065ab77c5b0",
"0x841d7473d45e77983a689c8bf384015f323838d32fe65cb9991784db323e25d",
"0x1c1ee3b1346ad2c298b7ae7d837d8cf98af1cfb7a2af5e1d06f0c9a826ab1bc8",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x11e7a68f1defb47369a757ad1d47eac4fd12ec54eaa4c2f3a84e2b97e56697f6",
"0x2386b42cc098f278197163ea21b9f6758c7bf1e8a97fc99d0d48b329c908698b",
"0x2d1e8f11167a3889b194c794e8566bb92d1c622807fc519445bb09a92c10d11b",
"0x1e998707bd13625c95c9599bae3261e67f2d517f78805aa50356b8a5e6792427",
"0x1c6b72fa7c47168bc0c13b70af218b5f37ed9977f1903c64c6b0317cd1b5f738",
"0x2f50f79c2c896a12658ba1449023f04c4dba2c68e327ee5796e83b6cc7bc7218",
"0x4b15dbc180b8634691f763a02187916b21f6a9b230302cdb226c9c20b1f56bf",
"0x23c08c77cc0ed597c537ad1232524e7f9cde922aa3b9acb7a8e0eecb3f09dca3",
"0x246b55cb9b404e710f5430129208fd2f7d1c3b71b8d5d1a3c954ca326fd3e7e0",
"0x2a3c7dcb7f8fa6097e5c00f781f27f884c76c6b7ae85bd0a71ce537fd50388d8",
"0x268e6eb795786ecaaf037752d214a2422ead74f48d800ed7f14f4b174c53f76d",
"0x5ac3952618af339466cb8428c30acfd937e76257609d299f1346d72f87ed82c",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x1b2b7aacc25b941e4a03f085a09a773154f908b9e5c2d20d3f67779ca448896",
"0x22cdca81e323db126eedc2d331697df5f2157d052ec4f66e69c17307bdd15692",
"0x267f9661ee6cfaed2fd4e4c8140c3e168d16232fb26a3c2a2517b6a4899dc512",
"0x10ce863d93a47aa85b421e17c96dd0b05510418e41c576b331770a10bd4d0baa",
"0xe26a35e642d56208bc813191e7980bc9b8cf0044ca564b4ff7d92f4a0410942",
"0x230f6e95f170836c89332e68f4522dc26f56be6fb7079958cb175770aac34fe8",
"0x1838b36fd6f0d488d9d7029a50a8520511aea9750ba69c8a7f08c711ac5f9ca9",
"0x4f19bf00ae88b7c9ea78742fff7593867760fad46d653ea407726b452cdc403",
"0x133619fd5268a1c03b2486e0a7a1ab4e8b83eb2540c2b9f02159c3e487d19602",
"0xd6268401cc2509a633dce917407f9a1b569c6f9e56063022183e4be7651a006",
"0x365d7940e1c53edea08251eef9a5529c9337a408926ce27f35d56389f2d0d63",
"0x125f88039ff7e0df7f265d09018809058d3e38c77907985c4c87c75d8a76f515",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0xfa21fe3e0314d2e7486a95e6feef8d81fd5fd1b6e34a456054787fd85453e68",
"0x2951984c7afbd03db22245a37d1df055eb109e4ac7344127f2c35dcfbed8e73b",
"0x156bf5310e6b76a3cc65f74c58593ff14ab052dd9d0fc09abeeb4a95fdf0de19",
"0x774fe420c3ab105f6dfbb8eb0cc6ed4f5a13299cbcbfa9a6e20d01ca5f834eb",
"0x13a7f1f4fa81d9e5e24d6236110fd39528fd3c216f0dc86a0c79b2c438470649",
"0x1019d2e8646ed7feedcfc77169f5e9fc2dd718dace5f6f8b9a67637d933a3041",
"0xc63653fc5eef7c50cde7d0c3856f90e2b0e0fcc9c5b16fcddd1e9740faf9b00",
"0x1343f7e28ede90c999f7312542d0fc39d1bc0d3c656440b6e170a6f3bc35b0f5",
"0x1bccca2bd0880591b20d5501ca0e4134c926c5d0d97bc70da24c4c70dcc61702",
"0x227006078f001421d3488f1bec3e70a69d8a51480ee878cfcfa26a8caafe9adb",
"0x2badd9b9334957d41b28808cceebe3e3c55807bbf4e7d1997d8b7a71121704b6",
"0x15fca0d19035e164f8fecb36822f26b07efe12ffb2d831c48e5ea9cc8258b755",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x2316c328984e3a8d25f2a26fa5c8d29f762f70b66fd648c7df1248c6edebcdd8",
"0x14f86a4483471960a505e400b9adb874961582c40ad4f306ee61ca15f769db60",
"0x22448cc6b58101c266b94849c276c0b469f440cc5699098228fe293a3e15613a",
"0x9e98ce02891c97faf65620ce63a9279fc5c0ac4b7ad0073a03b8ae8951620ab",
"0x3d80d14e85f09ebe6840f5ac4f467568686cfc56acef42550d8d8c33677bf3a",
"0x3d857a698a64801730b3c11467d17cb8568fdb626cbdcd5a5586912e558c022",
"0x1793c7b3f75f911d0c7f4c64b74e7a1d344a52438774d42922a245fd55cf10e6",
"0xeefda98fc56b0b2f2467ab429a8e513b5d4ffca2b9355de8b8ef645b14732a6",
"0xb7efc4302f68263ac68294dc896062831725e4bdb1d2a6e8da2572aa4ff8471",
"0x2c4b370a050627bca60b267ee3154f0706975b6cd9df0fb5be76162dccd293c2",
"0x14b35f50c4e9103a3452cdc68fd4db02677bfe9dcc9d7619ef62197878176588",
"0x2e598155fa34aca3ecb0e66e290d99b9aa080539f461e9734bbace8c72bf2c60",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x2f83ce87bde779865b4ccc5eff39d9bd2e8bd0ecc9c2cdea49ec7472976d923d",
"0x933a19319eea25c52f096207f6d8a2ea91fa531291fcf80436ae6ebb2ada32e",
"0x263439a31e513a82bd9fc8ce9e074df4e27e59683382019b7679cabe55618338",
"0x1584ecbb64a4db8dd2d5c4608ed26bda0e0c38c1130b28cc6c1b4308dcf40e44",
"0x49e790446ad72623caef9bc50395299d0221c2781686a04415190f52b5143a3",
"0x10b37775f18ed958dc5dae40b445b28b2c4413b5ffd672491334bc73470274b0",
"0x24701d4ce3d32060677e07f1267d9f7e55d4332b56379700ccf64ee9d57d1e11",
"0x202b8fb221cdec4a092a035d4e454528eaf0b319d671e60a063f4c0724cd8c15",
"0x1d43768bfae552891485d63ce8e1c3eed865af9e608b31a925f4a31a98675866",
"0x32b94736117256d76b6f85a01f3aff1e4d954eaabc9a367b61ca0d8bbd42c37",
"0x3231b4434df84936a826b7667aa33f161a86607219730bd78142eba4bea0dd4",
"0xf45de5ea90165e3da111af4a7775204d4ac83dbabe4eac41abf318487b1e996",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x2ca2db65ad224b51a8b24e8042cdb875693897fd5503bc751d888f695d9607ec",
"0x44928f5528543c7f450eba9d4cb5db7e58b8081b98c7f752162303a16af1ed3",
"0x2733260b5780a3db7cb63e4fc82386491a217d4312c7a93e54707894e3b20da3",
"0x24f726fb193e627cb10dee649b4e3e2242b94a2524974242835db3e96befff11",
"0x1e38f6d8f6306aeade802545000b3da45ab90c9bfd2405dbc765d184b91df08",
"0x8ad1a8e37ea4e152a07cd69de6b60e41de49ad1047fad9194aa32849052b8e5",
"0x235d4b4258dc982dad9cb9a47a963088a59fae5f730093f1e9ce387abe83765c",
"0x2b01da9199fa4220f95e00c98cac996d65113f5af19912cb331c53f9c52334fb",
"0x1eda45b7f8edf24cacd398e7444437e30670bbde613facb9f1e4676b0d3f3d32",
"0x119f815c307628877d5e222bbbbfec68834f7b1338bfa7688adaf8c6e8c132a8",
"0x5f96bf0532d7b9065530d4777fa98b0410e5566b6b048b85cae029cb0e497e7",
"0x340a6c3788a26e7492b9d20754d96aa10ec846f07aed7cca49f234d45988d63",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x2515fb66f81792d13ff8bbdd5c038ae895a028fd5527645f96496ac910d44e03",
"0x18dee821d0ad52dd6641fa0289b4ca755a70a603c6bfa5bd491ec55ba7af13e2",
"0x3015c688b294a9657c6ca12c65b33865b1b79556838bbe3f4bc1af83c1e1cc8d",
"0x14fd24e81aa0eed88a08b4ca95c08addbe4ee861d173dce5289aa6897d828128",
"0x19d02cb7110cd61dc1991b925320208985e0f64fa145d3017537470c77813deb",
"0x496cc3972bd13c9f0dd2715a9cc66b770699b0832a8248334ff5d213c5a7b12",
"0x528b341e3531d9d48b0a65c5d6316d2fd21cd8801adfbf0050e0cf6f0f74553",
"0x388cd95cf4d04968d3443ceadc7fa242abaf4eca59961cf3c850efb1319a4de",
"0x1e6588c7ee49bb4547504a62550304ed4d3e5affa5ac8f08b8c0cd0eec44dd46",
"0x23d611ae14db5a2638609c8212d29f327ce0956038039f270efe1a10537363fb",
"0x2b86d928a54b3f7c987dcf5ae89d7de994331f200381dd09d12ecb846a7a9b12",
"0x13055b796975dbbe1e5a913a59c11ae296ab60bbe64202c15d4d6108d086f462",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x14f38d1ffa510f2b0332476733f9fc5c79df981b55acea4a8f0e3b4cc61dd759",
"0x1f312d4d6d9a3ca368e3dc8912bab32366d7204bd0fbdd3ebc577d3f26bc407c",
"0xd0f712e8570585e196ca13e8b1f1a2c963063f27d62427af9eaf6aad438e723",
"0x2dcbc4e8492001dd99dd80175771d5bdbb308436faa08e39f19b4dc21828c131",
"0xbbfd5086b33a2f0e5afd9be44f7ee3267d62833ae3019938c440d756a24588a",
"0x2e11c7002202decd43434c9730452b8ecfb543cd892429fc88db33c63c404387",
"0xa04ca0b4eb3a67bf9f7b699b179d0339883792d4bf4800802aea15318b7c0d0",
"0x19004be334dd838c3cfec0528bfb1f91db2d10d7d3d3454a5cf35b7f431d9f99",
"0xf0db552b704894427ab3ada1a9eb881506e592325b73d7ca4bd04002efbc259",
"0x1a1e713b1af5f35ab4fa7f9bfa19b0980ee21821afd1ab3445352cf784b8d27f",
"0x179f8e92246a7a24d55045b43b515200227c4be9e0087db3654a34db445d89f0",
"0xdf566626948128c150102e68c71e6cc60d52112b96993a1d15c43f2aa2d0d5f",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x242d3b170212915d835e974b8f24c64c866611832cdf59aea0f9e9269dd8f615",
"0x780ab3cb7bf3cfe1cb4fd742ef1dea1daf725d4505f481c9089f9a6a1aadb10",
"0x224f1cd253223cd87977be41be77930bf651ac744d3b362b302fa36ed0f6c37f",
"0x4637e287df2d94786d07580a457013d8d54a6c31418d3f3ed4cfc582ef57154",
"0x2d703aad67bdcfc9855e65f429a8120ea93da66d877ebeca1ac3b1538f2dd96f",
"0x11c9e9aec8fb7bdabbf3696cdd441207e1749e0d8fdfb21535ef940f68e904e7",
"0x2be2aaa990f638dcd8bed18d9b76465b1f326abcde1ac1f3bb907b34c6029c27",
"0x16a6ff3478e400876366dcf2c41671f4ca6cae21bc985f0493b4cea2948e83fa",
"0x2d5c1ad3358720b486ff21f6ec096377f8564a544f54db36e9fcb540933022f5",
"0x2706883c34903b26fc209d59a13cf12ea7513995f226c80e6eb8fb69ae20bc67",
"0x1c0cfdb4290fbc3c53be1bed2a7e271ed1ba5aa5f372adf67132a8e53d2cda28",
"0x5d00b6e4b2d0a2d0067e0d1ad30789c2dae657135d627485a6e782c8b9ced92",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0xacd1175f3984a9e7cf08bbf5c1777cea1e7256defb95b191ad3d868d8092534",
"0xabffa5e8d3f345572069d11f25ad4e654e8006102f8d4759188a07201b43b95",
"0x3c0a0138dacff601c9d0631e83b8970db14ca395f83cc18c7a64db35eb6328f",
"0x26cca174ba7d6ee3fcecd1e16f868bcd4228785252b2b7de96fefea71306d5d9",
"0x15461d04466499fa137c5246d7c65ef254e24fcd50b5d43ec9d5e012f89a4840",
"0xba61686f2ac1ccae7946a24316c258848a86659591468507870c9983c272759",
"0x4017df4afcb1ba3116385bf4630e9cff49539b1ccebc1f4942b5f43ce3711d9",
"0x1424d70cbb9da7aba0be6bfe60c6ed4310efdb6c0a7389ec0c17d4a6e390ef53",
"0x1b4adfeb3a81ffc9088ab0cc532061a6d3e88830178f3771dcf7a02534532e8f",
"0xa12244e29cbbc56d28f49bad8f18c3bcdbe95681a7b84889c1b8f356db69c17",
"0x1d2798cf1798c27d89de5f07a9da5e45553ae27737020e51d7f6d365bad0491e",
"0x99921cc276f9a00e458f09183b359359740bcd453f652fc0e6f6c9a173ee5a1",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x1ff1617e14011200242d96c976a9b73585ccc1103145cf23d1e2b922d03d5d6a",
"0x2c20a2a5dc3bf0aab0b87093f9c0e9ae5118db1173adf4f5117b33763bec7b68",
"0x1a5f9d44d0d30cae600f5592492ec4d112e9c0a24631d4b49f6e14ce69836859",
"0x2506549fb4f1fdb290bc61f697719b418f146af1cf8d61da1632e293230e302f",
"0x19761a80b065bb3820ea466dba6f358637f3a298d986e9a5024a8701149ec0b0",
"0x23f6ba2cafacff6a627f60f1ce6dc5b30a4caf64f4fb21c226d4c2d847b841c0",
"0x2e6f1caa062248065f02aad7120cf91d3a9c29ff5680cd4638144d7f2ca95e97",
"0x28b3b74cb98af781b0f5344c7d8526ab317280697e26d8503eff674cee5759a1",
"0x271858d8121deee03fc457245a298384b9a55b3a8359a7190ce8bd23de50eb84",
"0x2dd5829605b8e77bd72dc4ba2a12eb8a9aec46c1d253e3a8dafbceaff52cfe03",
"0x2d30204a0bede236a8b41721ec0376629eb558f6bce9a69e6a93a89af0a637f",
"0x2a6e862532fc598b61ed8c490ace702e5e92ef403111f4a9888e71f058b9883a",
"0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d",
"0x8496e866a25167f5c61f388550c49bf6639d6394274cc49d136a8ea4aef8f04",
"0x14e8da7feefe3d716eb940bedfcb7a3f6cff1ef49e459c3d1d0df8d9a403e1de",
"0xdbbd1d73459a395ddb33c120018d9692897578dfb67ad660d628e3a46cd398a",
"0x1342655df63fac44d438d6f4a1b1288e693cc3b530cd73b3eeb588e8f2236cb9",
"0x31a141b9e2cb72dbaa792b5b29c8a7c748c5cb4f1cd6f5c0568861265504f6c",
"0x28f97968428b8a94432861d7fd12313a084d3c7514886fa6ed30521e588088b0",
"0x1fe9feb5c7f7c7a426bff032cd6a3158278b6c6b2cc57a871213fcafd6427989",
"0xcdb2db9e4f9d732d217c5e3114821165d49e5a2d41556bcd53d0c4d433224c",
"0x9664216ca565c1a44fc2b98347ea8b36904b3877f2159dcc999895adeb4d70b",
"0x1463f51d4a4cb1eba16dbc115566aa48fe77b43c244c9988a3c658d2f56493d6",
"0x214e41788bd2b990347c7f2a8f47612d4dfceb1a1e6da38165873df66ce51f59",
"0x548541724f64e20128260899abe8fbcdff184a1957a9385fb715923bf0fc79d"
],
[
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x1aaae08b891f5b2046c0e697f481c70f34b0c71e81cadc7603c7e5d31139d196",
"0x2693bc2b2377f44f7d8c291f332a6bf184d993289445a794fd3f815824c7a4aa",
"0xfa4b8bf58974824edb3fb2d26038975f49c2cf84050c8208ea7a30aec1cdf02",
"0x1746022555831c140765eeaeb08a06bdbb7e2e65f5a5f70977d41f0f2a18b757",
"0x3004430cc176cbbe7f33aa7eaebd01856b009f291df0567d4fced835382f68ca",
"0x6406c73da9aef2475718a34075970df351312c5203526d0e55bb00aac90c6f6",
"0x27db71cc71c8a22d6133172f19b8bbaf0e37ff0772a58aecacd25e869675c3d2",
"0x25a9cb700e5decd6dc4544b9c5e3b49c0e04a8d1f8557e231da51d8bc228082e",
"0x1f8b293768d050b67db5fd50be414ea637f6ac51998971b57ecf4e4db972fdb3",
"0x537fd07b3ac0757eb471a2745efbccb327fe00df9da4b4b37ce2798d5441343",
"0xf3d208e42fd3d45dc0bf71a72621a3a1f735caa82faf0c3829e666889211ccf",
"0x21b6ec876fedb5cabffce8f4386966e8f1bfd0bbac488ed7c3a9cc73afe3638d",
"0x95100091241dbbbf7446ae4b3d1cc2e00fd45c725456edfbaed74111168db13",
"0xf1cf912f0d9e8be188f3d193aa91b094e79780511c3a3853b6f20c771a1051f",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x1c0b352556b629b1e64c6e3abac4b349c05801e9fa43439fd61a8392cf186509",
"0x1298fbf78e8967359120670758f382a8c951a8d2186b96e364e9b221d7b121a0",
"0x32529e49b3721ba593bd059db34fc4c01b5d036d2495b6d3221456edb02fa3d",
"0x2dbd37ed630dd234ae12f4c3dd4d106e277497f79cb16a71b4ed871d708729d5",
"0xe9a1b9cef20c937bd369647f84e2a310bd5d83e8d177ca9c7ea457169745b77",
"0x2f25b164c0610b5cc1a2ffc3e962a54ab01e0632b062e87a0bf249f8f7a51cf5",
"0x27b73694b83e0b1c06069c9cc1fc20dba1d037e481ef2161a30f4de74c4979f5",
"0x1aca98163961aa6b3b4bbb40fa812c86822948bf91d38e606bbf5e1dbb732f2c",
"0x23f67b87edb5d48126bd42b7f2a9f8be7db2ece0206f97d840d28dc3a4967c0f",
"0x2d7104faa91a3300e3ec93486228f3657b0aaa7277f0aff4760d0aed02ca07c",
"0x2f948955cf159477c7b411b0a868b9ae9a56a240cc20e40ce1a097a4749467a1",
"0x105151aad6d4d7960ffafca05d4f8ab4ac1930b222fb91eb9eaae07ddc18ba84",
"0x3cb3379d04500d1996cefd61c5032852d43e41e87148d92329bd98003fe5d8a",
"0x12cc617757c857678ec716ed94050bfe192215d9fd76be3bf98b65401e8d12a4",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0xc8716d8ded0a8c521da019c24594a1b859e53e85311efae748ec9312a0697d6",
"0x2e082be597fce21e7ed641c2a50feab6a4b26c6050cb7733979656d9a71988f2",
"0x1775849fbef452ce7a0863e715a67ad4361b9a2b72a055469333b0b8b8175b21",
"0x1fc8ebac9a5cabb10ecd4fb66339a2fec1ee8af951e69f5837775cdf4abd3e0c",
"0xc92dc16c65e5fc74d162103763ac39f2ca7ad692aa9dbbf9132b8d7af4025af",
"0x1e5b7963f79d2bdf1f857f13e667e9d7a97b4605846db4f0a26baec8daf691a3",
"0x19172d7e44ac5b1b381c2c893dd30cfda08c46fc6277dd38cfe1b1cc4daaa8b9",
"0x184154d48a6c6cbf9613d54a604aebd5820c53049749f533c0efd168e4e83e60",
"0x1ce093daa2ab71b132dc2d3bc1fdbfb91292c35f083d350eda02629f66eae2c4",
"0x12b07847ea7982e0e6dfb1b2864ac2e8f04ddf7d766c33bee75749015a91342",
"0x1b96c0239c9b6643850b8a653486e0df1d4c7f667a59ede3064e4b5068b44200",
"0xb053365816d9cc61b7e857531ea416ea33d60c4d8a529317e29a73a3aad422e",
"0x1fb9b2c50a99cd788717b3689d46c05e0d7dfa13c58f725a54851b1174c2278a",
"0x2c34ad3345bff455c0e461587b7332e19e0a9165375225769e8dbb2087391eff",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x60718f37a9480c0837f5a5e7c13eb75c07f60a8d8c1cf9ff30ae132251203f6",
"0x4f4bbea35e9b9001e92d6cf690b28e9c0a463382cb76c5b4e6acef622c0436",
"0x304a3b30d2300c7bcd5a2b7ecea51942b79b7d04bf346f95961d37dccdfaa238",
"0x626de3124c2c8f04ef55566942ffd3a46f2b7bfc898ee9c5313e50a3810a397",
"0xaeb9945d06bfb644e310b3109297f03f2ac002c31dea430b2a06666f4d93e09",
"0xb9264fb57be56298cdbd2084d379720375d397ef5d09a3ec90f29983f0a1538",
"0x17dbef787498ee541ccad5751663330e379ec632306e689cb3dd89480adf582c",
"0x15e36a3829fcaa26cec9655273017e83e621b84a1eac7be9a764638202a1724b",
"0x243a86766734068afe7659f078d7384e2ae7a73c2e2b6dbede12dd0ac2b71a76",
"0x19f171461fb4bca771adb125c689bdf519519dc2b7960b5a7caf07c1700f0921",
"0x1f5a2974eab40b787b5ffb6de24e939ec04b5bc31475cd803bb2fe0395a6ec5b",
"0x96ee06e8758968f1be067fb4582c810694a7205d39ac72247c3bc4e74fc02a0",
"0xb960361062101863b600c67724666f71ff5acc674628f46d840329eec2a20db",
"0x54f72b1aaf1f0531eaea95d0148b0525af381f598b075f56f86ac0f7edad99",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x15d5de1e8c0f0d18b7aad179279727eece9d2ff735ee49e3634167d4d440491a",
"0x16df68e36d342998fa4818e065c50d575012f4203a0ee73e155fb6f9c4ebc049",
"0x283e201525e86ba0ffe200bb698683a35d51810b72339aa3773217411af1ead",
"0x289ddd4c7635287baba51ebee25b7e42f98cad532e2f57073dd7e8465ace409f",
"0x16c3afd8596d8515eed82ca10249d26aa036c6abdfaa26efb7c98841b2719d33",
"0x4d76016f612698f913a86dc0749646b7f4517d3e668903f76effaa95351e90f",
"0xd021dbb869aff3f4fe189fe3015d9d5848393aa6f76eceff7f9d9a72a736843",
"0xe769248c92dd03d46e9e6ac5835329f2d5f7af5cfc5d1bd920f097379443e98",
"0x189d6ee4a5b445947e0efa11690f186e98a54d3e6406d880b7706f7defe167d8",
"0x2d9bcac46f7ca9415b13759c9b4cad42a113bc19565a01cb889e1d2d698c76d1",
"0x684c2e542b4e0c59a7f03a6d361369a5f6421a91b98b1fcf0ac1b7144e631b8",
"0x1f6608bda209f29ea2d9c7df3a924b661aa614e1fe034f6ff1ec18bba7a14f38",
"0x203c71fb9d4f1881845f258bf12de6153df99d35fa3da8cda1ef4e18ddc0a65d",
"0x2bddac5720ca5c69a727c029e4edfc393e4115f898b9da856f064321ee8e37f7",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0xf415650a23aed782936a31cc331b3856b64768dc9b29c9a68a8904a08a2366c",
"0x2a3272896962e7d3fb7a1c783e24ad141781fcd588f4cdc319b3deaca21f79ed",
"0x1aa729490f697568fa8cc7587c9d92bd19610d8712eb3d31a03ee9a65bd443d8",
"0x102aefa3ca3e1722980dae564122eac6ed4b1534b65d6effe5503b615d7b76fc",
"0x8fec616df09b477c42d44cacea45c18644a68c59183933f1fb67ec8c452008c",
"0x6b5b266f1fbe4ea9237a231f8c28ea19723adb47729b6913b7af9454f23dda5",
"0x2d4a264e748b499d97b3320cffb56648af68616fd73bd29e1225e2c45c1163b6",
"0x2224e659d1d7f55a80406d270debf092f713eec67aa001eb50cd8b173a766988",
"0x20260ec25a18f49225f3accf1020805f5982f34b658c553f5f744d360d50d571",
"0x1a692c93319abaaec066616f97e14c1d511e86965517496540cc0391490b1b57",
"0x2189d255d9ca828ade6cef86f5de626fc2689904db402a6131066b41616c23c8",
"0x43059b6857affa85b90d865eb1a9a91f036aabe5a12c9a03e8ad87934991a09",
"0x2a32437cdaa6a32a0a3c060c2865abcd8cc2a79bad7efbac1cb8cdece412be75",
"0x1746046edbf4fae210a3f0273bd7cf58beabba4c210b3617b030f7b51e6f8f44",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x166371ee86c08d7d38a594cd70011ea1ecd01154007d555fcce5796dfec39e35",
"0x22f89213a0580e56569c73128c8a41351b42106d11f08b6f900f8c61e89e3edd",
"0x1b3bcf6322de40853b5647f94ceafa4b109dec51c81cd7a38b51ad6d96ecfa8d",
"0x2fed79c7828b5f8fefc7c73f312de0739c9a2081e432cf2f62731a5f02fa16ca",
"0x243db465df5d6d34ade58f233829cedd38dfb57101da284d42207eb4df69c7ea",
"0x1d49c10bee07998c64facc37ae50dcd91a17966b8731f2d1a34b3f78559bfb14",
"0x2d7c4a750b7000a296da599f89c4ea7729cfb85883037333e1b4526aed397cea",
"0xd4f4d2dd076db4bd67ac279bb51826a827742918d35aa52a5c1df7a3ac5d339",
"0x228901e5388a5c10531d4122f7e0772759d1e4d026379ec16676f45a64b818ed",
"0x111e7f5a746d046f4d7c19f2fb49c31255ba045db988cddecfa0e4172fcb2d6e",
"0x1595f02fae7bf2b328680bc0ae805194fe9ee83f4fdf4dd0d35e84ab29a122ec",
"0x2d22c9fe81fe2db64f3ba5cbac4957fada1f0c6a6a4cc883db4dd922d35906ed",
"0x21587d485b2624d0549a6f5de06c009ed06c5b48201d8f9a750c5e5a98ff19ae",
"0x24c33e212e7e9d3faf0ce44a3cb2113e74ffb7c28b45c7b4ceba5c1d6944a64d",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x187f5db526575c180e8adcabdda34e701463bf8b1596130c0c6b815dfb5e7a24",
"0x75eccf8b0d6ecb184e0f168c64404e50e013ce0df06bf31cbcef2421ed7b0e9",
"0xbf2f82a1b14f888c48822e147e332a2bcaf77ebb32d7cb3cdde813f0b1a373e",
"0x1f587a1be361522f8568d2109e0984f059a87317a35f7ccd7365c5d97d447e62",
"0x24a69effda852c7d20fb4fd8c3f413db1b6ff3979409e83922789cca594a462d",
"0x2ce67cebac6bc12ace86bece70ae7a5a59a97023cab6db35a0f8cb7110552ad4",
"0x2ef4852f4fa73b0c40c37118ee2690692f1e7101a78a38771a8686ecd37023a1",
"0x4ea49b4f2225a5cbe53c157c56f62973f394fdb3076954bbbdf30786debedfe",
"0x2e874d03cebf495782ded304d1f37903b06c3f834f170e96d26812be0ff52466",
"0x23acdefba9e5cff344b212629dae61e76e03a8a8eecef4e6c0588277f53d81fa",
"0x1173808e27354b4bfa76d6bd920cfc8309f1e9e99f997f773195070843eda183",
"0x29aea310845b4a505ea34932e7bc2a8f2b936c47fec5f2269a3c999413d048f6",
"0xf5536e4420b891f4cc82c50a833a17f0cabb89c3ae4cba4c28fdd5cb02e3d2b",
"0x7a3576f0287b2a1c0d832be178d43b6858a4c8989e30041cc143f09e2012fb",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0xa260dcd98e220b61c2012dc6380f52adef96a11d38e7371c576d54563f7bfb9",
"0x224028c158b4b4adc53ae913cfd9ea42e4456690be5dd8d4c459779945157e4",
"0x166151c43e43373467888a2ed4bdaf3148d8ea2432d998162f62f8159cec690a",
"0x556f9ec39ba4bc77b183cff006a0a582adb55d52dd0f4a8c1f156b33898b28b",
"0x201670bf6f1fa62050110754b53b3d0671086156d9890ac85f40c69aa4aa297",
"0x18a78efc7a694b6e957b209c42d6044af319f194dc16451c6da27802e7f1c85c",
"0x28efacaa79a0af5fa9ddd71cc6a711629788664849b96ff0b42a61e2e43c87df",
"0x1d07f908b2ac7783f0d734e871a40be7b2e164afe885db6fd312bcecf4cbe9ab",
"0x8f97fb3cc640d078af3d17c569f37a9ebfa6f49c48db74b3d948a8675db96e4",
"0x2718e729e940dd2d26c6a6fc7de40b89927f8c9df032cdcc06ed4ebe194fd596",
"0x2c68ea4120e5abbe11f3b62801199cdd8686dbecdc52ca8a9458ba48b19aa6a6",
"0x2f39ffaf54a4cbf00809ff50047289530732279ea49607ee779fb149b87e10c6",
"0x130fb307c6cec609ab7c5f9bd5910a9ed9958fc11e443705609ef3066197a9a7",
"0x129a1c66d1eb5e84211c482bcaf70789e6d5cc473e1001dfbda059379f7b58e1",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x1cff973af21d88635ec9afbffd85b1cc595703ae5bd5f4faa6ead489d7aeea20",
"0x27ac0db61623f033dd102e118d47d847f34fe11826bc9d23d7e3e43386ad16a9",
"0x25ed2b22b59ed4baed8f5c957caed1fb52630971092d0af3ac8ffe5fe3a13904",
"0xb634c3abd9ad8e1b2da84a144207c4ddeb62c8f4860f65aa2209c1c0d0d7e75",
"0x2158eacda450c34d62fe6ed5e3c9e211c170f4c3bf4247c5caf0b9e2340e409d",
"0x1c0e715ac64d64535fc97e4d86b95c6120401f5c2697332b1ed6a9e83710afca",
"0x1a491a07ee1df9abb02aa300654e59bd34f593a15b74306b41c04e8b9530986a",
"0x1523cc6481931e85611b1844832abbf8763fab9c85130f50ab3075fa4f60762f",
"0x2816926c129f5c99a970733571d5c01be1cc18ec0f45bc5e46068f0d188bc9e5",
"0x2d94c81e271fb9800d333223a141c9e904476dec1f8f1e6d224ed49467e18a1f",
"0x1bf8ab0b8cefdeedac41738599d38ccaee7c03914364eb617b5421e9a51a0b27",
"0x21fd6c59b0f417453f2a4d669851364f5156b6adf104625f857681411bd04c64",
"0xaea3c50afc0806b117aa98c104499b4d84bee966a94865896a39b9f8ebcb917",
"0x29a8795e1f8f1e27e7e04b23788ac40e102536d56b57aa85fd1015cc21970f55",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x17e4ac7e489fb7da610506535bce04186426722fe24a261a3e286df2f3519b34",
"0x10ae4901e443ef76726afccf1c9099fc18001fbbf5d144ed721196ac9f2cc130",
"0xe60f58884bc252084c93a18b4feff245175727c03003f025100d435a0debb60",
"0x17de16da3692bd34ac4069982a1fb163da3119cc01d12c6f1ebf64db787deca7",
"0x78d14f36f6349d1af6d92afc8dd98ae7322f3c11993c59a225b079c7acbd4fe",
"0x2cfc356c4f60781e3cc83474da74607b9567ed3a08cdd7242ffec76f7d36cecc",
"0x1531440db56edd521c68fd2dffb627155130e6f3a2b47fde65bf8785ceea104f",
"0xc9d25b13772cda116107dc0c4fe9818b74f24a51f4bbca5a63bc4fc6441996b",
"0x28a4751755712b3d33f9eee850ccecea47ebbc32a1fd199fc256b69c04456500",
"0x1eb00cff68143cfad376aa8ec83216badcd664d55e990cb2d611fcdda52e4407",
"0x1bbcd528cc66eb76816135706b090ea3b46d45f0db08af962f17df4eb996dee5",
"0x19a41df7dae052bb5821aa4f32e9103dff752baa24b9fb51fcbe4359827f8cdb",
"0x6f34fe490adf4a07fee6398a39e84a0c32c04259c9691daba54ca4bf696ac5f",
"0x10cebd9c9c4b941425619aacf24419380dffdcc7f5326e766d38e72838be3120",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x214aea2850fed7223af80a5906052159cbfd07a30736ae5d95e6b60cb4989d14",
"0x15595aea45afbcab1d4d2e73c0a36cae9d2fb50d36cdfd5c0c127f95862add38",
"0xc4055b948c4a9fe79aff19190da8995eaa7c537a20cdd18f5bca5371d0c895f",
"0x202dc56d64cd4dd16ba2e50781fbf937803bccaf08b7ba8733eadb427c13989c",
"0x2ef4191b7deb37e92edd46f965bfcc66bc5a8539957f319958d91066c3fe15da",
"0x2f6942e918adbb191600a517edb486cc96e355737961c85e0d8595ecf579552a",
"0x2cd60b5a15f37871b552d8095cd8a6ffaf033b539d7bf1ae5f671e2ffcb9f2ce",
"0x2e05c44549c1ca99a8aa9e5ccf4726240f75a4060ad8a71012deb2ad55486afb",
"0x29b52fb3d57ee05634b2864e7b2977f7393906c12e903931531f95c5f4ae08f8",
"0x1a565be54d3bd12bc9a46a1e2853a18ed26d6744c98e5cf53c83e6600cc56a60",
"0xc806f9ac20225e54ea2ff82c73c6809497b46d85d51a4b05c46f667bb3ed592",
"0x2aac8b1272085c7986012bc5c7612d5b7eb5933a9140498359b260116290048d",
"0x1ef1b93e5e0c4bdeed8d40d74e84fb0ec5e8bd52af3ecfeaa54105e674611a3a",
"0x1a1fe313685a247b03cc9abf0f0ca133ea119ad01ef6a090baf774491a001296",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x694287a5d6c2f8c7e6ad899f7960ea1abd3aa7829422a66be8e8a1ad6bafc0b",
"0x2aa1bd4878e2ef8252ff42d595d2d0b59d774a98e3439d05682cd28463e15104",
"0xecb968856d9c8a1317c756d0e48d5b1c365e6eaf980989d3cf77d110237314d",
"0x8a950f1079254aa243fbd11fbb4d25fb0cb8a0c39bea71a3aa1c0df80943907",
"0x2ca441a867e40ca07b530a40b899052427bafd17c7a31d484188f96ea21cadc0",
"0x60117f9406bde6b52e0af3a54444fe9cb69bc9ef22405e2b85d223051852c23",
"0x18cfbf11b6c20bd7cb8fa67ff4c032c39fc2b3610cd8f90bca3e6136c6b04f4e",
"0x14addf2c0a38c601d30bf96a82d3fcba2ee369b0d2f232adf5da3e2bd2970a43",
"0x2677d87f29a2a948ca7e8f5a5341b56947563be4acc97c46e557f5c60eb84442",
"0x2f423100c2e9988b6cf5e9bcb1b2aac09d926458b9f1177f841977f39109c1ec",
"0x2549090369bcca257da260694265b951c15643c8103c9cc73fbb6b065db979a8",
"0x205c0e6789ef1fad3b8f1367cf4eb199b400b16499841e1feac1cfb774412d97",
"0x116a1eb2caf56acf7308b5b7a7ca6b98224c93a655d78ca7867a3ee170b33fba",
"0x319871e083a6e2cfa6a69f480121787a71853c4c6f772fab9dea2e267f3576b",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x5b98a534aa4041bb0c7e79ae6b2f5c164053b4c0a65dba7fa318a5aea8d22b6",
"0xdd5bbcdcf0d6fe99e9ab4774911a304957b461e3e2d809775da6d9c66ff2cf8",
"0xd5e13e77b22ec3447adb2487c15a4ced671076f0d0c0e8ebc9072f1d8e37b87",
"0x20468b6dc384b134a4538c25683b468c877cf30b1321dc7c39e0fc942dc64450",
"0xe2bfc13ac065e251caa703abd5362783941ed0060dd9d1b81f50c630dca8376",
"0xf300f277165a02ff123b3078e87e6251de0de93dd81e76e8f8197b949960e0d",
"0x19ecc98c331d8b440400e5a71e1ca2f830536b1900580b3348f3b7ce93f75a5c",
"0x2b60e2012b670944ceb50be1c78808ec4568c7c442933b21f125e9cdfa7ecba8",
"0x2c3e3476d128db70aba892a46c2061ef24df0ac74db004e7731b167f32697459",
"0x2eba0701ccabc0ab29863c74c80f1eb3f6a6ae79792249f4e4fbec63b6282e0c",
"0x1b821e2031ccfef578878ebe3481c9b5db9e7df929755b98059ae847b7871a1d",
"0x12424e45b885060002f66118e487a97bbb10ca97ee0414712f85f2154a6395a0",
"0x22dd55670c91344017558b62f32c530ef0f3387736514af44cd43812c3c3830d",
"0x18c607675f0a99f94f2e7b161c693472ca5963f71823a62bcb4545249ed116df",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x2d16a32d5c9663139709f054159cd7cf6f93c5f9133007b4ec8de3983231be32",
"0x1af2c4175ff13a4c27cdf6f91e6ee2d81e56a4d42d6c13f5e1b41d8f71a985fc",
"0x244100fc9f31adb4e58ef3e56c2fa32b5b534d42a226880d78eb3be202c9dd07",
"0x25fabd23de22009b978a089414dd805837cc0e1d2d68f919a50b7e17418f2151",
"0x22f32d43c35f5cb33a857ac06d5d9777a42b92268f0c06b26d68f7542a6b50e8",
"0x20b44788f504781a9951e09b497f1c1c2d2f723b864b84e74c1523527f48f996",
"0x17192ddb8a67bd2ccbb940532adb6e376759800df7429c45e5a09314e64cf7b0",
"0x116b6619b40c6172f572650a9566ed2b809164b994e388b6fc467637b61cc2ae",
"0x1e0133f2e4adbf08938a9ccc82fa3d3693316aada3b052fb02ed3900e1d730ae",
"0x1664c7e25e5a7d2f285156dee897b4af0c1446a32e575fce4d56a3cab23deb44",
"0x2512c8e3d7d525edbbd4bb03394bc4ae7aed7bab5ed55ce3fc4aeafc329b7f49",
"0xf5800164acb67ed0f6efc527bbcdb851e66995c9dd3ea18cdd9b54259f64bba",
"0x1e4dadc5ca72e83a6f54dc097f0c2f72d506ed77d576abce800858d48cdb9cc7",
"0x398b2ad87a996aec8db980123effebfc59ef1d35be0e6a7fdacbf3929551bbc",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x2e351fe58b5f36389df6c53ace1a5366d9c012a2ce2e0c4a9dcb30cf75f59869",
"0x290c7b5e749c1532ba364061abbbde22272b62ee90ff19be581c4ea68f58c5f3",
"0x1313fd3c761307310d30f5aa63cb0733244796351a9c6077ab5ea343e996a778",
"0x2c31bfd37ed16abb1583c403f09dd2a064e4d03f9487a076f496e0c8c5dbb3ac",
"0x10cabad2beffecd1d735b7284037753a85845e6fd5b7247f3b457ba9cc9a323f",
"0xe02a96e2faec73e916458f940919859a161b6b85894abe5ae146ea4d3736d10",
"0x1d6e090f0acd4da143b23f3ccc565567bdf49353b3416207af2096389b791b06",
"0x45f7f1687d62eaaeedbfe3fd4f725c85176968069afd815dda5778563ae1a93",
"0x2874ad2d5ff34d854490d2f41eb79295d0bd9befdd54580b257fb4f2da1cb9b3",
"0x201894e0f41d2f3f21a6641ff9e3959584a749648f98c6c6b3c3dc6e8285239c",
"0x1e51409dcf81bc661657b6f0cac27edeaa209baffb0c862fde7c0d0610506b73",
"0x2cf3f549a9651db991a798c7392afcb8cfff307af338cee2a501dc1be740598a",
"0x1b7aa8f35a2488bda1d6ee416a8be05035872fddbb96fa56645d0f63bad04b69",
"0x182132ead4b05f9e1a44e7422da93b1e0e94d5906a78f63469cfa1b0ffd06a02",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x863bf81ed562159fc915b628bb76e3bae663dc10556dae9cd432ef8de50b6f9",
"0x16eb9ab36c92c197c99c3d11ef6d1469a9c4f9779daedbe99a8e5f24c8f5c0fb",
"0x2a0f1728e8a783630378d81f1509e94bb9803a47a112d99f7a58c60943c5c97d",
"0x20b391efe82379701a0f86af56e5d22cd881f98d0ac433df14ed990881cb5ac",
"0x586a52cbe0c5a8a0c45440f80dc7fc52451e815c5b0f784bb25f0ce319a1c01",
"0x4af2601360cbbcef49162688f13409f2fb6026f4137a0b9f85d4e2272106766",
"0x9ad52f4be13ee678536dc64d24eb019da0f5cfb36d4c35b667c7ef4c85ed800",
"0x177a0d318b5c0b226c15afa0ebdb0f3d582caf9373d45e73c25ea6dbd1ef0e8e",
"0x1ad9d99de7417cec3a5d831e8a8cc4d633ba770104d76f19740f8483411bc837",
"0x69f24d59c4dbc2351edef37a68c5e0133da60eaf4ec85cc174f5509e4676f2c",
"0x2f87a8a8a421081d17480f0363088e6604780562ec2d97aa1780a7be1d7808f1",
"0x2c2318745d149dfbb796aaed50048227cb01c1885ab2eeec9897423d824e65bc",
"0x128ec586a98e49ffbb2a98e078eb12b4c504448f53a7c59a7e2944ce6636ac02",
"0x2ab7de0aed5e6302873d6cf0f642ecbcf4b84d263c5f60316ea0e434f518e270",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x642e786838ddb539b8b481d50922cf6acba80cbb8cd74d91558b4f7a59cfe41",
"0x1e02bec25bd53fcc6becefa234ab7a591e14d7e1b9dded90a1bf8bdfdee1ae72",
"0x261a2baf4b655675fadc57ed29369e831a3a236768779c26340007d048dabfb6",
"0x10b56d5ccdd0be5391c62cda87eca6a70f12f8465ab4004c6742beafa69afad3",
"0xd1e13710db39230e576013e5b339b6697349b6102a915993648b2097ad216d6",
"0x2d0bd075d622a9ffaefc6998e1d3a845ac07e8827ceb27da1eb79ff36386be91",
"0x17f840bc566db8a3debeac087e4c9d5db07e4eccd0871c09c5314fa935243f1",
"0x299f4beec86f210fa27d718f78fae4f2d94a7d0b1e029c92bb0e33456c572506",
"0x6aa7db000f3f4d915c35090ac9b1a90b269c8d90e76269053befd34b76c41a5",
"0x10dc89ce0e3e131a594f3bd90a12586629af838d2dd7cd9566a66785cfc7b8de",
"0x14e4b1cc172d23e0d5fc7f219fa43fc301be8d8702dc1311fd97f784d0d1d773",
"0x26390978a65b917ecae0242affc450f91c4649139b132aaeb1406b77a751216d",
"0x19aebfa3fa2b4cf836f3d9f5b672a682b20f82ef9cbf8f092608c22327f1663e",
"0x2917d6cbc77bba7388d8c43278a57baf86c1fc54fbf57d0dc985238678c404a4",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x2962061bef3a0b557f60a3af8ca0b4e6b44336359bbfc9d30149435deeece130",
"0x1ab2e3bd8c03c56d30372867a29a5017fc95e868c228c456e318ebb2a7c2de76",
"0xdce3071ee2164d465e882c1f319aa89d169d4216a2b3a29dca0d74244c36a5e",
"0x1c7ff77683589db1c00e5303d9568894c240201761b546d2aa38e6c63831a4c9",
"0xda3ad9016d141320edf78fb242fc386662fc9183a250242fbe72997646ede8a",
"0x108c858506802f97c0a8a005b6f3d0e73e56ade83d3e1ef9291783cebeb0104",
"0x18a041ad99415766535e735d35e2406d99f500507d44c121194ab5d62bb3dc73",
"0x804d788ecca64fcd1dc6eb9594fb8e91b5fc9027c2e0542369f2a125b1cd397",
"0x7731d16594681b792f143ae2ef1365e94c7f0fe15a472a29d71aef1760961ea",
"0x2bfa3cb90f13111146c89385af82d9051c4e02f738f2f996d2a5f1db712ec6bb",
"0x1fddcd4b1429134574b4f66c202cd63a4214580e654e739ecfbfa3fc3bf8b41d",
"0x886c258df023184bd7c942c2f273140834d867b8def498fb10218af80d66425",
"0x19ccae1db1a9300785f134702d3b1c8d13d9ac87b9c2013e5285209cb804e1c2",
"0x7a4b8155eb76363e05e5f00ff95defcbd37b94afd901c13045979dcb63d6ad9",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x11526ac8331c0fb6dd4e34233c163073d83300629288634713359b2dcfafcff0",
"0x2ee5b7cdcb61f59988e2794312192b8afddd8f8fa1cf883c998f7a782891dc7b",
"0x2b88c35e9f5dc25ddc81bc209216b88fb526ad94c189d5300c9476d0445426a",
"0x1947ffebc3ac4ac3ccd1d57cefaf6190f1c1035bc5ba84706dcce44d9706f1bc",
"0x99f8cc64e0503354ea12b5a678143fd74f1b4d69654c9a8baba1d58101a3147",
"0x1afffd8d0170799d162462549921f3c7344d8a27eea55b4f9397c509f59f0e83",
"0x2fcd5239954935486f68514bc4cbb30282b25171bb9227ac96ce5ec9e6486732",
"0x2ca2a102b6561ae65db852da22c3b486fc77c6a2f5583506720a328a3aed8e20",
"0x1002dc58bfec0fd85333fb805a44eaaa1b478ae253a3d4a57681590d0b52ddfb",
"0x139557f5ff664db54d6be4e42e0b4f7ab92b47d9d81da1307240385200759205",
"0x2c89c5c93e90d0a7039ca638e7a1ea5cbc2358e61044b6a09d103cfc9ac4d9c4",
"0xcd0d79c5b4c6e7875b58f2c619fc727aba63df991c99d25ad2f24beca0df141",
"0x184b385669595dd8fa774311e59b2abe04f59546686f74fec70c9514899894c6",
"0x1cf3e5292afd10a90414741ed3287263f4af9515b8cae7f41d45e4109ab0ff06",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x2e764ed9c7bcd1b4f7a64f1afd3efad5476eece0cbc566617cc52bc51885cfd",
"0x2e6eb18b75b4908c063a9204147ea1e9707791f2c6fd201d081703b4cdc97ddb",
"0x172b99d8419fe0858380c2295d156c711ccf85f150ed4917ebc0942aba4ae961",
"0x864eea049a1f9510949a12d9a6e74537b3aac9f670c50d4f4bb77a7b68d73f0",
"0x1f9a772d2f96ded0661156db1ac0bbb7829ad3cde0c3e63bb95a5a47d4a2ca23",
"0xe72ce0076500c498994a78879704743def13b87a1c78bb60557598652e84051",
"0x183ca9c331d42e15818e0dd9fe4cea99078e0cb54013eb596f798c3dc22c4e52",
"0xcf4da57b9a9c07ecd1427b2b437664b5a2e885e76e1eb08e234c7b12761beba",
"0xc7aeb1957239cebeb8c3f35f94ab2fe443234d88b99fa1a77cc669717410a30",
"0x120218ec06b07045ed6b079c2fa91b68cab9caf72ffef5816c4bb77cb3dca124",
"0x290ab4acbb20c93cf9c99d07c9fd3189dd8a395928cf9be93857f3be7a4dcfce",
"0x1da24af446511ae52972f6cb9490df5fb5ef6f0414b514380f9c645a78c8511f",
"0x8eadf51c905e829f936a2a68786a45c09296b064ef0764b59e05398f7601d65",
"0x19b72523f030bfb311fd94c66cb20d105ba2f1ff248bea6c3bc314cd4558005f",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x177f0b80a1de3ab56e24bf4f8e63b45b31685e1dc1da5e30553d6be482bad1ad",
"0x5b07ed986c2df68a97a40e1c227c2f72d5520271666cd41326394722b9932c2",
"0x24d2c3f8955b7a068cf9a7bf1cd3cc1f7daddbf2a99b581f3af4980fb1d17892",
"0x25838298a0cc4b774b6bc89dc923f9d330599a9d122629aa96ed251b5bf10bf5",
"0x2afd3dd5e0fc21f0d9a2926ae68745e8c7bdb307a5e790ea08872e878cd3bdcc",
"0x80f2fce3bab6286e19d950f3372e78d4afe22d2b2757373253b424858b37e6e",
"0x29ad15ea08093d81d74c6fef9f18aefa1a6915eeb05e47f4779c8c44bb17c8e8",
"0xe004451085075e404f3daac34818db8878cd02f134592adbed0cc081851599a",
"0x2c1793f6782d38379e1e1e3867db57bf514320c0e37fc2961e50ce2cd3a61c82",
"0xbf3dd46be8800ec0b7452c61319c2aa365307c9b7e9d955aa7aa1057e91dad3",
"0x2dc74ff53d61799295950b34ea3daf706a0acd6d5cd2ab7461ec706dba082402",
"0x12d0bf8b8fe9ecbabdc9464854f9df7fc9950388a9f68bf7920aebb5f0285a2c",
"0x1e939676347eeeeaa96e3c0bd51e14604ecd97336f72eb054c61fa71309e43cb",
"0xa5c3db062ebf2c84c384588b0e97a0d2431f7334ea9006436f6795aba6423a7",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x41b75c1586f0664a618abc2e19231f4230761fbbf90746fa7ec06d4a517311f",
"0x202eb00eddadb4c0761953255195ee55af32ca0621e408a73eec96f080f07d1f",
"0xf0cbd02267d601b91a1a62e5d54246f07b337e84661c9a7f40de79f8527e94",
"0x14f2c248139059dfe9f4d970c661fd17be54e8fcb3a7e2cfc1160288a01d3904",
"0x1ba2c5f95dfaf2df18985f49b0be1c1892b59dfcde7afcf553fbde41c2397183",
"0xe0b040e8c04374f4ff9c54e6ae1cbd79cf4e46a5a32d644ae35f95b6c924540",
"0x3d017d86b1b62da699920b08e0bcade7c6c365edb3b9b2ed28e1cc5c37351eb",
"0x23b785d6905e142dc5f955a2ed3b4f57c0f18c79b9599d1f21a9d370d323283c",
"0x860b1ccb980266b5c9800d56394061e4a39bb2b31d503e915c8e4f2678a66c9",
"0x1e3095884e8e3e82a4282d39e2020cd3f4dd4c14def98a1bb3e4dfba4f372cd",
"0x1c0063fdf232c7cacaeaaf3243b4acd8511f8b784129c8d6a7fbaca45477c377",
"0x2de234571d455023bde68bbae1fb69b62b80b889c8c8099beb25adef8da9f879",
"0x305e6097b1a9cd0761e08a2509895f2d6ebf453aa7f3841bd97809cfa9a46635",
"0x2bcc7b73e56788e3f70565b4168248b0321f65d941840f199ca849402bd52971",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x1d437882b57028c88c69eab64507b2649e1705eb397a4069781ac10151eb2258",
"0x1af1a36aae7b181df7ddbfb34e34a53ae40e8529c224ec940907fdbcf97522e2",
"0x2785516123326658487ced2a9e864d2a9372df4a480d96a810f3ae1246840a50",
"0x27d476e2c174e2eecb790e9d96acaf1b17c675fd85f84923f0bd1744a0f700cf",
"0x1eb090499e37004464a5edf2eeedeec40e2c2becdb31426992f382a1e1197753",
"0x92fe84aaf6c1b773c1e9afa8775db02848a85bed444d4133e1fca601c6c68ca",
"0x104d16cb816ebbc760c4b3e28fe8c18aed972dadeb94896a2310ff9d61d44e3b",
"0x2fa387f6bb06f1d9cd2e78be84286a7d58cfd870c5c1e8315232361f2b44cd0f",
"0x176b64eac41dadeaa403f9ed5910f11a419372fd90df93bed240c8f79ae5c550",
"0x2ad76ba01e94f7bb8412f271b92d24ad2d7efe5eed06b0852d8f53a7700022b3",
"0x1a8932f1b4cfac9286ce27de3faeaddfa0733d07261297a38cce6399d96fc38e",
"0x1eaa55a6354586d0087e1d042859f63927cf27def44830af38905e3d876ffd15",
"0x34c7817421f2bc213fd6caced95f1cf9b176473e8721a100b1b6eef4348b786",
"0x31efc323d83d4deceef06774dfe798dacc4c5946664b0431d54e67acbb840fe",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x9e3886c90029fe260f4a2fec7d2e1c9a0d07abe79ea3598a758ad63c20e807",
"0x1525c95ae08bd592e2e428803d4e6a493016a47943488b02a78f2d552d16c4a7",
"0xb1011a90a452ee3a6bad8aa9e4885a62472da29771ebb98cee7117ba1f0e77b",
"0x2fa5ca0f8d2c52fb2b4578e1efb6e1a77fffd1bc525809626d3535833c5001bb",
"0x1db0397e4ddd02c509cf2ed25df7b81dfc5ae489bb9415ccb7127a205d3e876e",
"0x27a3012fa6ee7c193ece6fd7692ee96b8e4c89797792262db8d6d1efd755dbe0",
"0x274e23c2c097373e9a0d952f34b70020e233fd2e0a67c4e20729a5fc17f88c",
"0xaef53482e7e1c25fb664756df6ae69506b5e7aef718b3b1486aec64c4078ab9",
"0x457365cb68df73941a3ba80edae9f25aa2250e63cdd3a3b86b031cca2134d8c",
"0x1ca262a197b5402ad0640e919508176a3988519d3bcf91b55930fed1fc89ea20",
"0x2131c2ae4df6b479dcf26ed81a1ecfd47e351d7dc790ee906dbafbd803991c4c",
"0x162bf8864391b12a2b1dafcb658fb94cbfc90e0bddf199cbbc66564550036827",
"0xc7a2f06399f8766bbc313a2f1fbda042eca4ba85734b4040db27cf4ac1e8ef2",
"0x2f9fa0e3320e9ac3cf702f8750b5bd1c71c697a583c34cf417706738314eead1",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x9f933726715613504e7cdc8700fac64aff61cd1899b4754249b7e61bdba19f4",
"0xebcc03b0c123f471bf2e57426211644f0098aac347c81fd12621c7187bb787d",
"0x246aed0e85ffca6527d79f2e223c37b5d7df029c52d38b340bac3b2d3e2257bc",
"0xeed1e00ab5b0ecbf337edc63d27cfcf9135997f860f96befc4198c56e59c72",
"0x4df1a4aa55992245ce955d325c1c08a841f727b9e9ce11cbe54835d575c56fd",
"0xd5e59bf9fe7755023aaf344298440987786568aa06aa9d03f8a33f70b227fde",
"0x2ffe56ed078cbe07667f7e48e1a360d4710d046f0bb51130f9b924eee01dc332",
"0xd13ed4075159b29a4d4ff4f9fd7d768fbd28dd4487a2bdf2a813540bfb99907",
"0x173512477cbd6d2a69801143d1e7fce3a6ce79cfe3bc2a2ebeed24bb7e6672a4",
"0xcbd4277bd737219d8739e4e818cecfb664e369782e296a56290020877778329",
"0x14588264fd7d1fdd6d4ae3e372417fc1ebd7fa434fb945fadc55ee805b81d3e0",
"0x14acd0cc6605c0c722a1d399ad5433d5450614fc3231d5af742ec5926c35e77c",
"0x14320d8cb13dcc09670d6e93819b69d7e66504066f9095ed4ff25566d3a066a0",
"0x1b3e47537a897026a989e433fb7c4eba62144a10781548577de3f370434b6578",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x263d424c886417f9b6ac1de0e2c1bb2e32b870fe671b11e8219760d1ae4ad0b",
"0x1545d2c32ddd1e1e37103adeeb116e09275624e964f6efba626787ea0b1089d",
"0x287183d246f54265d2283b5bad5c4dc4ff3e5765025efb643ed93015c1de8a71",
"0xbc24a36833b64ccaa323f7622d1b9bedcc204bf19b7f83be4c62b8771a2ecee",
"0x2ac5f667d34cfc3cc80a3788402696009dce7f61ad3483b54de3246cfbdbe164",
"0x269ec95973b00d3f96125e7daca220f7ebd6bcb6f08df2d39301ba36c6ea4fb",
"0x1bda71d6e900e79196f126cddb042592ce1b6c0c0b92cd7d86bbb8613c2ee0ef",
"0x2dd51fa2045a74f10e86b8301210f5acf7bcfb7f40b8d984ed23a00e3268219e",
"0x81f8b7c05030b310ec5adfe7f6ee0efc0c44b6facb8701fb1aa3852aaa29db2",
"0x12cd7c92b7efc7b50810ad410dee511e137f3c995e4b8080e98902c5c862452f",
"0x222b991677686866f2059fb4d66bd16b9f3fff5b65df7c782747dc0bc7dfefb9",
"0x171f3e3c2562f120982c7dd903d7b74665f3e8d085e398dfc4d7f73a837c0ae9",
"0x1b7b4bd3c56e17518b850f06f15341f6e610254b420dbd4873030c0f309c3c72",
"0x16c84ba6c4962352d3073fbefa9034f5d7d1035773e84ea47a70b5cf615c7147",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x3928b7c1f5234a3ef4caf7d19b815c0ce64a8e8906f2dcac43a5ad59c24f14c",
"0x254ec8b72f52e44c83734b672b33b630e8931d1522f5b25c69273784b997bb46",
"0x17084c1eb0e0ce6e4baf294ce40d5b24ca44b06ce6551b90d9f0ef7a5caf4339",
"0xc57ca90acee1624f9315266c48c653bd44400b9424e172953f044338a77b27e",
"0x5c7aa15848b5250efecf2eefb8b6758751f0e69ed1ece426fe6f85666b6a5a7",
"0x15ed7d3733abe5c01bc9491e0816d11aec10b0dbfaa86fb47279d7a1448e20b6",
"0x2fcca33e780707db84102f6a8f1e9a652874845769918754db5d936fbdbdc5d5",
"0x2d23b90c995b3b2956fbdb6448195ed441e717a7895dc1e433815b9a8077d315",
"0x138d37c5ccdfefe044ee28894bb422f29e9f3860154ac2ddefdc900bd5b1e2ee",
"0x801587f5637bdf253298bdb8c8fa556bba51f40c6c4713d73e31a0f0e72ce6f",
"0x23cf40715c260876a24e43b5c314c2a1cce16e1f412ebcb0916f2fea18e5893d",
"0x2733d53df2ccff16c87efc741114e39ebbaeff9f12ba0376b931b402629c525c",
"0x23e801d5f635e9af022f077b1a43f877db7241055d3c71b771ffa75cf6eee4ad",
"0xd094fe93f2bf4cd4af61d10a7bfe2b145692cb94337ecbff9c91aa88ffcf890",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x93b40efe6c068bfde4c0c198171a60e496e1d834c28765c9afda090405e4a56",
"0x2305950150a0b9c2cae71061661c181c1a6b3d5c87980b91ca959450e5cad30a",
"0x2107ba64be5e7797def29bd72b72b8bf0b1428062ee8902aaa58f0676ed03aed",
"0xed4b91b00cb5bfa594ed5cb57d703424a8f2dd9daf5f54f6fff74e5cb0198d9",
"0x2c7df01a6a701115c6d07756e4e0359ff5191b58300db58aa98cdf3c985252d1",
"0x5d54d23f2d684e0c609aaf56ce816de9d5871924ba47ea7025885674f2bd411",
"0x248f367c66a05a93adc27d36acc9ecdaceac63385cc5389d01a8d7bed9388525",
"0xef717b148e289194b332dec7ed2ac824317e40beb40d74ac7bfddb23d2b3cc9",
"0x1559abe59817b0a24492729506cadb87e76fb54f9214ac87346f8013c3032b3",
"0x3bd5cd6f008061a1c0b2da097013ed88d28caa10de0036904ca03a4bcfade75",
"0x2ba9dabbe0f9fdc8efff7060142fe244cda2d8feffe907ff23cc61c08b619da8",
"0x139f0add5443dfbe642f4f60a57ab2502a2faeae1b6f12e1e5e09b1909050fbd",
"0x8965484ff559d1e6864e3abadb5d8dd402ad180059473b76e9bf827b7542463",
"0x240c21fb9f6cf7f02e733c6609f9773970098adc7e21b041f7486156b4f78e3c",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x151923a505f13bee4d368e9f471b79b499975b00aabef8962a861e7c858f2999",
"0x20f6374e3f28e5665b4288c722551c898eb41fd64f2878b47ffc9188812c1e3c",
"0x1f26fe05c0ecf99843cc88c28bf5c7bb0f744153fcb405c37d4c9e5c60dff349",
"0x101a3d68872e2a2174e1e73cc53c3034532ccbfc8645ba9bd17744a0a9b7c7ab",
"0x1015cbc312d356c0ce96131b59584b0794aa717ea120efc994512c1dfdeb4226",
"0x1a7b53d07ebf6963fe87166c26f5c041019f2210f4eb48383c9abe98a35c3c77",
"0x8fd8a0e2a1df82e44da83d916b870960f621aa62a5336b9cd0bb124bd30ed8",
"0x2c43cee66409ac215740bc8b1f684999679b5e240301f8030ad3fef640e05c51",
"0x2c29dbf22349ffb1635b0182ea7d3ba41c0748fe4bf06b44a401cd15eb0ef330",
"0x1c13b6b5651a6d7f3929ab0946246f7366f5addc9d360bc5ddce3599638a090c",
"0x10171b916d8a14075abfe7c468b01d239c7043a8f97df103701e716bf5a73f29",
"0xc57c3d6c68c9d2da843ac9b37adcf1c46a3e0eac7c42fda4dfe0ce5c799ae5d",
"0x131e361e5a8725d01e57c3c77bfa27d1f3329533b82ef4b01a1ab3ddad098856",
"0xfd9e076ff4f5dc71afbb2743c74f080a43853793f8f6d80a93f3cdd39012fa8",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x1573d9a6d17cf8af947c125da5f9f64516344307d15be028600d7fbbf3a99080",
"0x2b6645695f714c85742f738822c21a26c8906c1bc19f98e0c34cd1eb463da48a",
"0x2fec770ae63e759af86d0742b049eb76e81d45f6807728e66930d00cb9e1a404",
"0x24ed0296e066560c8dcb239e7e7f39ddcb1898e5836543f8e98aeccb6f6144fc",
"0x1ace8484c0d96d050ade091dbcf0c6cd9bef86884bbec6f8ee56ca5ff46b9325",
"0x110a7faed51892c73e54c654f2fa35e47fd2647d90d6e5e5a8afef6dda4da73d",
"0x1491aa7f36d89ac133fa9992990af2913b71196cb0d0c3511c34aa52af7d4fe4",
"0x20cb0c1cd1adeefa16498b4673c4596b37f34fdfe83a41065c1fab66c42f34b5",
"0x1ba292539d1568ec6a3e2615134dbb5134c73e6b14deca4c1b1a993f9441c830",
"0x21bbe75d7c858ac948623d0de8c35924f28f466ef62a7a473d6a1b4f592a007d",
"0x1c96f9fb4c6bc33d46892d8826bd0c2f24d7dbbf38d9dbecf09e77f69bd701f2",
"0x12d33ecdd6482928f8aac0987910bbc372ba2f107d6e2a25fee34e82f10be2d5",
"0x2c1b610ce987acbfcda328fd40b56c209b6a944bf5781e3a77d1af9fa30baa6f",
"0x2d77c3f420a31d59dc0cf83c4518721eca03f4c8913fac371b553b966cfea46e",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x1e081cb9e91ff3eb0d111f2be59f4ec3febd9407a69ecb0778d7355ed3048ced",
"0x2e0888b957e0fcfecca2a1157dd74cb01a1d8545d15ca25f937c554195da3c9d",
"0x14434487e62089ed7659870346fb4acabe0f9f9ead2a19657a88cac39f773bbe",
"0x9299821c0f470cc59fb688b6e57522d7f57aff1e589dc15722869ede760a9e1",
"0x1f1ce2cba9b4c9aad6bcaf3bf03f690e267acf7e335863a54e6987634279b9d2",
"0x199fab9479b7b342dfb6dfcd8adcdb5ef8cd9cacd897ff15a3445379d86fd826",
"0x2bcff4e8008af4e04f02c3373fb37247aa873ce7b7caa35030fba7360479a6d6",
"0x3b2b37e288090ff11cd831c00b9fbedf6d82e97540c5607b59a1a5ab4e305c2",
"0xd3c39eb880cde63d9a4fec82a68313c912a25d4638a1f6177adf9d841d3d84",
"0x121da38157e113a3b3e4060acab7e1b40b36ce2e2a677e5bef5abebd6d4c94b1",
"0x1a5923736c007cdd31311b26d560615fadc7e01e86240033e1f2465e93df234a",
"0x90f568d806c5c4b1b5e61542ba122cf1f5d4aed3966c26508d824c3228e97a0",
"0x20d2b7987c326a68610ba3cecd0b4dc54c90390df012b7d96170d9693c29cd01",
"0x3020b14b8e1529cdd9289680c5ad441627632cab08b206759d28e76a0fbfe97",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x1aed16276f89ca766d4502fe21ccce046a63cd2f7d44a0aa8770771e2f012eee",
"0x29a61b71b5a33237899eca4e7f4e40d008c97a32bbeb0c7c09d8f24d6ca574c6",
"0x301dabbfd4bbca914d16943cbbfc3ebf006988c86b054d6b613f07ae1d092afc",
"0x2a3c6d1263e470cca3ae533107339b8dfed7700c910039b2b45b2bc67575f9f4",
"0x20ff2a6b8212735ccb82ff59798862854e3244244cb0566f5d3d59e341aa36d2",
"0x2e5dab75ff69d4a42e745287c98107ca9c3e423dc6f41096c039eb9724b8252",
"0x2f0f8690c7cd4737e913653ebd84f51d5f727bb6ec729c78c42972aa34d6e4cd",
"0x2be6c4a5efe483fe0a737eb77df7815a6599f091f021131ef37fd192305c4c53",
"0x2f18439786b79df3460f437b9fed74ffa5d899e2fc7774ac78afd1c75d7d98b",
"0x257eb2e8a7939be6bfc59d3fc6fba75da35049a36277c37513de03f6cae91538",
"0x12f8298c4a68070f15caaf500879659d02c3aa9b771106241917cb6638608133",
"0x22aa263182f19c8abe727e87a2291fdd6af7014f5ee5ac6c198a108dcf02f539",
"0x14cee2715a061bc708337507b88d099267ffd7d71962eba1bf7d2a117106b111",
"0xbea09b03b5e03d2565e9b4f7c43a91ed8137de6dfa41f70ec7b24d58eb7b1b4",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x1c01114013e2d2cc0f452ef7ef2b20226cc69e57b028464e95228e951d1cd855",
"0x25c7e0412d2072062684e96b656c4410dd5d77f644c64b1b1c84ad5e882cde60",
"0x1231e9e375c85c424c5fac79600e91904f849b8fb71c7ab4c37a7ae58c17d5e0",
"0x7a0a63d6b544338243ae9c846b542b213c67256036a719a44a451b8e621d846",
"0x2894d383becca5a477263e188d30dd81d7a41e56ef5c85c10d97a309b8daccfe",
"0x101c0e6bc868c92f99608d9839fb6263313c2ae6efe4d9efc642d577577066b3",
"0x1d2a84f7475ba65bf319106ab571e734611e0aa742df49e03c98814c215582f1",
"0x2d2913e61d8423d557920d0a4ce230a35e6f45df0092e1af389d420902295e2b",
"0x1eed01941020a3099668dfa81b2a57c1639ea6c61ffd2cfce89f696e78023df",
"0x25417306ef421d8d0a06515c241b62dba2f16368b56c0a09f876850c4d008621",
"0xbd0953d640552207b0df37f4ab00cfee2f4585286e008d53eb0124464fd5506",
"0x29beb31dd4af45a599dbda7e3014c88b4b0173b369e9674313022ec3c39d1875",
"0x25305ba821d4ecca68275fbdfe54f068a8e3b5435bcef6b7bc4a8da67f912917",
"0x1bfec9a5d8a1c5ed86c4e7fdbb6b96e302602d14f55488b1b98644e612208088",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x177f31701c5cd86c2135c582fa22d1fa1005ad148e125c80046a52f99a278a07",
"0x84b44037ca846dc363a64737ed25eae81e47527aad42c8b860d2f167fc86299",
"0x5db3b44bdbc42b1b4f26c99fe1a2cf645f28e6ce71253d92a406dd86a607bcf",
"0x1878ea943321eb7644a12615ea82860ffad4e28428239902a7f4fb2fd33464bf",
"0x124df4728f64270968bda5aef3424393b51e84bcc672db75983ccca6e6efb12d",
"0x23650e1dad9d21e3b5a1140b178f9d57e838a0938bdc88ad7c23256b09624fe3",
"0x201a52e3c2b36532a496eb42060c6150fd7dc3ac2db72df850c3a2e3f254654b",
"0x1f4978ca0763083af095848af1757750ea81d782d96385665df0b60121ede60",
"0xb98fdbb00789a5b9590ef157c1907a3e9bd3cb67887bba7a251b58cd45867bc",
"0xa497dff0328c9b639bfb1f441586b3db11c09773623bdbc12c40ce544d90504",
"0xeb016dd39c878c0b09b6c6e86c6527f9cbdf0992e71d929855f0d4525775008",
"0x18efdc04259cca1130aedc7167097d26eea98c38db92d699f7140d3148b782a1",
"0x126f37ef258caacf14662c6e1f6df9dc4fc6d1792a17be1af28439b6b7c98de2",
"0x288928203b020d9e6a57ee9e15ac29d64e2777ee080493070517c1a3338cbbf9",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x296ea4e3760ee3d1cbfabf9cb73a506d7cd78b9a28ea959e977d056cb07185dc",
"0x9a7542033713ab98cae7b350528046a818dc1bc4daf2c2119d38abb2e0877a3",
"0x3034706ae9245292d2aef241b738bd3b0b211757e4c2e0137e2c65c1e3c67d17",
"0x104ca211af2cb44baee1525e9c4887c1ca96f2d147148d6f8d7083ef975b4fd7",
"0x1b523f8867ec145c19ff50d4bdb5606c20ff01ab3bce0c0768fc28a4a3d595a6",
"0xd5edeaf84c1e75e0d4f670c09dfaa070db33640e744336c60b18d1b9b90496a",
"0x5124b407c8fb40067ff8163af388ac99b168031ecc22aa7423e756fef6c962c",
"0x8ca29ea50b36354afce9507079a06f06753a3e21362599c3b72d542050c49dc",
"0x4c3626ce2dbc4d64f6ab695c59f8f51f383a183e5033700af83f83c3189c1e9",
"0x14bf66fe46f1f1180c24f16aeb7dec3f4ad00c1b6e9988c5642b549609b37573",
"0x67b2bfe7bce2dfbfeb90eeedba00121ed2622c38d4044ea6de739dfd5f75d16",
"0x9287eb9fb34d9ff43ebf373466427795393823f8d70c88ea76dbd7ac989bd6d",
"0x16ff59f0d679ae8e74aeafccd0714d966c4fe1936aa0c7fbaf8828168850524b",
"0x2051d8ce6c5dcebc2d7ffe11130757bcf7cd14283103d3fde53e7f7a880a8519",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x1d360ee3116f0744286da43406049bd1b821cfa4c3e823752c00f0451c942254",
"0x1f6ccdc7743ba72305a0491a306aacf4e3b036b0f0602daa88feb8fd8cc62cac",
"0xf8507197161fa267d0c68cd381d423f3880ca56ebd0d7ecec6ae88fa68d7a2f",
"0x18b4a57860ae5f6b5ac2d4f8c924b2bb3872dca3db783bae02da366fc84b7a14",
"0xaf716e6f1286cfdfdd93f1417a064cd76b1a7e2347d61d9b1821eb8a4ddeebc",
"0x14f128af47080db5d122ae1a8bae27475c1933fe73cfe2a80d89380b2147915e",
"0x1f2f97cd81cfeaf9ab80320e688f2af45c9dfc4a74f7227c7205fb05697ce2f2",
"0x7a985fca61c3346a08e8fc31167636507b13885850b9cbc64798de9b76cc57a",
"0x280e7d98a95b9e3ebce1a4d8325d69f42ae8c7f7325a04bfdfcd531a70d0816b",
"0x1cce1cb692b8c6c02c7b6a2e20d1fc36f031bcc44ff6bff0c4abb5b1c743af5",
"0x2ac9fd902f4b6bc5f917228507b403859cb67077ec2beae84ca18677858e5686",
"0x1b69cbf6f6bcec50e71597c63a62a8253a63412612ce4e79b262753831b970e",
"0x981ecb674c4f9996a0f8f019d64520c9d933ad0c6375f17a643430355113cac",
"0x14faa8f8184c8aca46363826f864877722020035970dbf1090d4d3911db9a9eb",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x1a6906fda19b094b2bd4def4b25eaf4d799cf919d0e1483d9380180064116cf1",
"0x1ab6dc94517f1a235d1107902b6c034b5535cfbe94ca9096bf72330be04b179e",
"0x15669b5e4dcd66cf29b6c06a9308f8672f88d069e7e8eac7cb11808b82913038",
"0x132f02aebee7db7f69fdb68ca8fbd57f387664e6420fe20060941344fe5b63fc",
"0x46f52fecf6e77a95b31226d34954f28b9d0e2e8008de5b3d11c274d7e44fe1b",
"0x2b69ede24d4e37f1a8c1d58edf35d0a7f9a0716c3f709cfe5cfa6f069fc7dcd6",
"0xdc2cca8f0d3eff4d287722ba1c50b9062230d5b6c748aa4d7003385ec5424b2",
"0xd1b03d009a6a0295cdbc9f23ef32bc2933f30a8baf2360203ab064b69388339",
"0x1a1972438cf29f99b6802d9a1b24efc501739c6d7278a5f30b1667c2b7bfc5d6",
"0x203dd92f30579361e8ecfe9e084cb41cbaf7b93fad6d7f7abc9d0f73fba44075",
"0x9d6f86adffae5e4fa6d5dfa644e97a5b382a1c7e90514bea8ecd1da42773380",
"0x12d40572e1dbe47334a16c73922e7c4da9675a76d5fe099027ba003cee8f2b8e",
"0xc3c34e73158918b72653147d1e3d059b256c1657fe50430a778e63f6140550e",
"0x6973060f725dfae61acbcf3171f17ae957cd862e86f9fc6a47fc7ace24a8867",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x1b3a5512b18428893b48c2fe915756e7cc7aeaa8ca36c2eff6dab81568264de1",
"0x2ab9670c18ff8edc1c84c1ab36ca686990f07e16b567bf9642165edaa5a6346e",
"0x10660d5082b8fcb7f5f4eb051f926e99a5fedbd706fe191bb18c26d34be30763",
"0x1aecba1af9b70281bc2722c0d82a097305c208a383c68330a1633fe3b59c94a7",
"0xd23a06e79761902a6ef30749c86998c3d20bc827cfbe2f22bba0f484dcc04d7",
"0x282b6bffb062fbebaa4772f808780b00b77da1c52fa648bd74ae0ad49fc62d9f",
"0x27d48b15b151378a1e738977abc4ce2d8bcab816dc32797ca060ee009ac74444",
"0x2552efb9ecebe9e17a82574887359facf5cd61ab2ea64bcd60c50e053124376d",
"0x2e505630db4463f1d226d0e1fcc5be4ce4577e3911bd3262317a4fb32d7f8ea7",
"0x1d85ef93d9f0524c0d579400f62d8fa7f6235c8631bad07509d79e20db614ad7",
"0x24bac63bf16607fb32c48e942d0cbec8b7fb18554f342d6973a6fe3a309c6248",
"0x2403a33705855d9d4456779033eeb1938e9c9bcedc4f1b28f90c7fce3e4f39dc",
"0xe661908904f5e530a16e3c1184aacd43ecbbfaefe6b55899026b9fc9940db1b",
"0xee6336e66fcdb3a64d86b979baab0bd235291bdfb213ed532aefa0a72e5c3a8",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0xbc63f41651e844c66007421b547d69d694573b1343b8583aadeb8f39b9c5af7",
"0xe5cdb3465f12743f71ef5f504e6a5927eb824266a82bd02df035efe08e921f0",
"0x1a0af69734aab2e4304d15e7a69b2e64956b4214c330d935647b2b127f6afd94",
"0x2144915f6e6f829e7179c5c005ffe6c9ee3a796e32de5577225696a77e7c381d",
"0x24b6274d2f945bda6058c3366b6d91e33740897c6e6f133304487b63bf0ba435",
"0x10efc44751f6ba491452b84a92594336c6ff4012098f9fe85420242cdf082baf",
"0x36ebc6a6fcb98eed5d0dcf87239433879d99acf6fbdc570510ed6c825055dea",
"0x17a1b2378fea94d0b1a96ea700505bb45c4318c9b911949a7107414f636a91cc",
"0x2e455a7518e54ec2e0fdcdd2821e488877c594f854131e6a9aee732db95666d6",
"0x1e7397644ed4f4cbb8e931b0db4904f29102b50a3ca839c43ac4c0c399c9a8ae",
"0xdf88ef1f1a67a39feb725316726c97b084981300a496619a38d3fefb6d362f",
"0x24e11fc9c4c7763829d801dd3a205359bb3792da2ef8b2741ab3b2c54acec8ad",
"0x4920b3e800f77d7cc99d8ee4d0141a45d27929e6e4a7d7bc4193ae25ae82033",
"0x20ab7b6abd43a88f684217ef931c13cc11908564c8603e01993b0e277ab29f8e",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x10f8a59f8273eacdb9154a734653e4ff7fce0da404f36b2fd001b3f077ba68b0",
"0x1652153e375ecd237c21acdc3f96d39088fd656dff8d66f867de878470fb391f",
"0x12a4756111ec068e3b9c4a1427b09f9a313e018d831f7ae5efe9f3f6c61c13f4",
"0x11243b19f113241477e4790f89b8ea79666796ebaa31cc2ce3700ff51ed3cbf0",
"0x93d6ab40a9a4a3bd74f097120654c82fecfbefd1067f73ba5aaf031b1c18c35",
"0x2f26911b23466c23bdffbb8aba815752b6d0bde3d12088becad0b08fd1dc4976",
"0x1a03dabe66a3037832d93a1c3c33574c5b28787fa643ec5149830f81ecc92bda",
"0x223b10c2c547e1a2ba41fb918bb5ab602a9ff21a19c37c157ffaebc95bac4870",
"0x1f271876f17d7ccebb222aa3da4cc09407aab4dfdd453f1ddcf248631eec1088",
"0x1adb58add70e22de5100c3f187057e930c9d122e128c3d1159874c304dcc1090",
"0x27b3f7ea1e34373d8183be5e462f0ec51d5d0c8bf049a2b48d30ca821b368afc",
"0x1e5ab69a6f006ef5ff38e49fc34b58d101ae90bacc8a638c353a636ac6e0cc6",
"0x14ebbd0ad1f23e2c7af18b8c43a41e86492189f38299783c3edf8e9fa8a2073f",
"0x939c8f74cf317552b74f7ad2ad5d0accf3e02ac3b9e67a91964539bcf09295c",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x1a55cdf6625cb645cd6090c3f525f6e297864a501041dcbcdb37b6f15af7e36a",
"0x27af5f96cbc32f217ffe217d4d478a315f2095286d6589ae3510e847a7741009",
"0x2210a4f1e6607e23b90a45345ccc56984bc8a6256c661f04292b78523bdcc7e8",
"0x21f9fb0fc7ea61cd6d0ff2d35785d6e7d15c7a9cda7cbd3e39c44166f4b175b4",
"0x1ee5d14567c941c70d07adfb6dd50467eb0668b7bdd1fce1879bdceeb059f94f",
"0x246ed97e4eadebe50c8a0afdebd6598030f27e87b89f0bf73090da4d95f12c63",
"0x16f44dd900dd9f274617e2d614733244838171bf0c89ac30256eeabd5c8ee945",
"0x1e45e42c3dcea63b20518075c16745af5e20536983b16f632d3c15c91b3d7d16",
"0x19fac5ce0028674ce8bb40058162e50f9f9f8b8905540fb7722930cbb20112a1",
"0x1190997dcdb0f5772ca3de8b876a4be62f8ee0b39d6c233c95848d073a8ed6a0",
"0x96c7db7d0085737934ded26317191715fa6c789de3df7e68f00e8af528530f3",
"0x1c21d771cd0338f0c0c00ff71e4af2c1d7db81922ced098fe6989afe7d1e4d19",
"0x2dd43d3c40b768f5625758dc35668efb3ba747347d5ffc980ec0b0cbab709c8b",
"0x1030059f96d75e04bc5f81b89fb7b5b0fff0361adf04c4f0cede89630d2f037a",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x1635019295b65b0190fdd718927dafe4c0c965772665800cfd539d559f0900a9",
"0x2c17c890b715b3bbec14cfc8f060ea84d7c12df2e51cc1e8a6e987f45c01674a",
"0xc8ffea42dd7b206033427a512377d3054fe4f8f86357aac58032fa2dfe7c7ed",
"0x12fa55dfd670309af2d98c8de77c302a5ee4ca3eb08b90f27230f05ff4287c7f",
"0x9009662a5a28a89ae9d6da9b3981767d2cced18677e42773fd4334297d6efa9",
"0x25caebb5501e77f1731a54be0e06f8c005176127f3556ddcbe24fb5804e08206",
"0x195e006734786e591acd92fd233f784503f3fdb5db18299592de56d770028a9",
"0x47885b986f4d10ab44463042a0bfc3adfa3bb9b553bac96ed40f616291bce26",
"0x930f3aa1c5410395f9b17a20a1753b721a0291fda6f32bee8aaa6ede298d720",
"0x24af63803104e8318c3e7a41cf8027ad36a631ea11d56552bedb5f00239f902a",
"0x27c63e725d17d9a44f47fc73f02d7bb2150ba0f6031f004e600ce008440aef5",
"0x157270a74e4ecc8bb6f976c5bdce70912cf64fe9c8816d62d42b0eacd9514dab",
"0x2190e7e822c0508c71e3ab7134fd89a40775be99a1b38c2767f6313835eef8b0",
"0x234f3cd5e0cf731da507c91ae18d28061082ae9aa580746149d1a48f6a8db2a6",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x1433fc6bf42a2541e40c104a24d5cb9d462fb71bf094bd998c85933874eee2f3",
"0x10a8445d83f3b7ec65128083a39f5c759b9f52bb8ce5c024be8e2d300e0cc652",
"0x1a1d8481d39a772911f9bcee025d79049764dceb488a8275f03a39870fb4c909",
"0x82dea281aa11435a7429463b3fadaa3bc680aaf49f02ee5c40d110f63731a47",
"0x13556947fd0714aed251e0fcf91cd0e8d0fef2dac3db4ff9f3b6c5365ee9ba2d",
"0x29508794226e7cb06bc170032d377edc210dabebd3a254ecd4df794d65f8cf47",
"0x3cf4fecc54b529b247e48048a963709b22630ce719ac8a9e9d1f8e74b73e702",
"0x16cc17305b3d333276a9cb43d51089ead04dc2f1e197fff0012d4c7c4db5829a",
"0xc36f031884453fce7824bd724f25e8fe71d3e640baedd9398a719d8f01c560a",
"0x50ff40107aafa9a2e30ea1a24b64129fe55da84a294ca8d0afcb9956ab09797",
"0x28b18039884a6d69dafea66b723072e0c55b1fdab6b247e801d6cdd52c7f81b9",
"0xbe18fb2749573c5b7b7534ef3cb0ad5651a801b3c6bb875fdf30cf8b155d8e6",
"0x2ed3ba243fb561e308a7da234e581898983172e58ce98d9a94aee5b6de925b5f",
"0x248eb1ee129d515abdd9f65a6fa7711b708374187faa61acbbb6d21b2e26dc7c",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x89fb8b0837e0b7c9598c3bb5efc40e62ff31e66ea4f5e51b9330a20f9d5e553",
"0x2c17324ec8d80ef220016641f18bb8ef3ad0d18e4de8dec2ca81215591dae7be",
"0x23c089339439d665507c0e956ab3208b27d643526045f4afcbe6364c44bf1093",
"0x32af6e9b670edec4744d9be16c2fb05dffd7742b035c5d5e34589f5cae382e4",
"0x13cb85e74878132b6a20784e3bf61df1818c4d6141651d1dad1efacd58774174",
"0x2db07c1bff2eeec8c5b9dbae586d6a9e7dff129340512ee92c27fe3acba78c1b",
"0x9829878aad19da18247b6ee680b5d3f8d94c0b046c24fa5641cc07813031830",
"0x1eb00d50e3b0c3ecda0b569d961583ba3ba49a3fdf62eab4137ab4ecd16515e7",
"0x1c92d7b2ab89c954d36a5da4466d4ce8fe3476cab10bc76716e6fa1469d3c881",
"0x29412e4f79957b5aa484f896baa95977808d2ea76cd61e0be6e705aa9c31c419",
"0xba6668da5d5bde10cdc9aeda5a050d864ee2f72f84ca600a303aa2f380cfef2",
"0xe3041c5fe0dabf954e6d9ab5519e5389cb3ed02301755f24be4c400844a019a",
"0x46f80bc5455aac3228986ff1910d988a8608cc8eea186ab821e5b8cb88a8a9d",
"0x886037252df484b3b2e909f79ef69e24c2b0f0a9b912d666cf624b888d7958e",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x1e5db2e40041ad9d844fc08e4932c2a893f14e107a68534c2f70fed480beedbf",
"0x2d0e5945cf1ff11b864b86659e60292c1d76e29a88d35e2d25007c3aff574837",
"0x5eda1c9de06b29e901b43f4dbeef95746bade9533d07a22b08ee2cf948bf827",
"0x92156bc60919beb0e2c262d9b4ca9c888221b1236839a25a9457b4d475754a9",
"0x20346a64ef27480102685c39833600f03276e5e4094eba2077457246bb5b0920",
"0x10807d847901c2b7ae90b281bf84af1645abbcfb22fec7626418273a5c4061d8",
"0x1a02e561e4e6c7e5c33b9eed477176c2927cd2331f07d9eadd6ec80d2d77c3cf",
"0x1a20365486ae8bbffe437fff696c78cb344622ae0d25c8b6b1b1deb62fd03bb7",
"0x10f6bc198813943da2300d26f081cabc8dafd92a953077575e8e2ae4b5b60fb3",
"0x1d7d5aaea8bfae19980b3c529fab08e7187cd71a706f39115ad1cf0b7f57f556",
"0x1df1dd45ad494f1a872a88240c1a9ac86c18265890d36f5b57f84a6db388b35c",
"0x1c29d88c5a7e44b8511c878720f8edbd2ec09956d2a47125ad08cd791a72a786",
"0x2aee9b55a2f615b6fbffcce84c652a3f41351fcda1b830ff3beafb075d0472b4",
"0x1c9ca1baa0f3d242d39a3ab72580877c176e28a5c887c004279a59b0bcf1e66f",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x1e2b6b0bf7b3b4ed5126b8e8be6b6b070efc28d062f8914ba1b5fc68ed14ee06",
"0x2b00a882fcafe8d43e7da424366a73da0b7cab19478446f56da7a29bbf24abd5",
"0x441070dc965c1abb15cc4dcd6668cfa56f1122903318ebadbe52af6495c4e9e",
"0x1804350e3abaa426cf301eb0241d2f1726387efbf0df6f0c303cd0f983997d57",
"0x1eafed7d64d1deab8a1b3ef80d833b3aae94efc9f89286a55789c6b87d637b1f",
"0xc08b894acdae0abb3e1c1f653a150d96e0666a92e8a6f732d8b438e2ff7e631",
"0x2317408517ec88bd778bae7b26efbba777aa1b4460c3af71cac88aa1d4d2d7b",
"0x17dccbe73f5a7b036e83f6233c651c883a7957861eaefbb385468785b5592d3b",
"0xa9ad70b9945cdfa736dbac21e4b4426515ed32fdf0476217415ca4edcdec1f",
"0x12b21302572045aa13728b65b9e6da2dd6a00b49c9acf7418d03431b663ec316",
"0x2f73e6061be74d0dbe147fc3de191cf54657e3516a60a6da650dca53c6d4b8",
"0xb907e76289b21473c0e6491744411e520896aa614d955fa3b7e73d25d4f560e",
"0x23c6f78eb1f358e4f34d7a1d58577cd8af362c8d7a650c9c70b7cef28c8b77b0",
"0x1fe537054dffac7ef4fff98a49f253a17562d32eeb1903ff3172e8089f88a5c",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x22420a556a4009accb54c2b2266ba65776d5455a7944ece37405f2bbb849e352",
"0x1ad1968f9921575a75470f22eb1f2e2e3a6b973c58e22ff30c731f97064bd055",
"0x2d709e99d4fc4d59e9dab4baad17bbd75d2331e8a448c2595c835e96ece5930b",
"0xe1df1d829c920e063cdff32342f223e7b4851df78ffcba180df460988e8570a",
"0x23c4fbbe1b0de3e8b57a6137c331e3b284504bbb9f20fbe9dc2b304194ccb264",
"0x2ecbb2ad59823898278473d8a768598a22d2be7922c292a964c953080ad8a690",
"0x5dba95d04fff06245d0f4ced407a98571bb522547bfbba6c61731884c4d4e30",
"0x1b6b4761d189d1e2db04e13f1702f4a15315e1b4061312633fbd2f7d9c943b01",
"0x1ee6c5f07a003e7f7cf05ca63ec2c5cb85f0137f55e1e62c81c9b4a40d9bdc29",
"0x802b4548da3f90ea8a49c26cf583724835d8add489da81917c17ff7686c97e0",
"0x1a3089854e45defe9e953808e58f14cd0f0edb9d65302732ce5450c92ca79885",
"0x2133779fb03912c1f1db22b59f3a8e96d396173ce7c5abee98f05119b914b700",
"0x18dcc23fdade276e5c1ba4f96a47cba57ccbcd1102fb8d063723523e2d819b39",
"0x2a1b87020f3b905940f757cee7f0b459217ea429b77a9ed2404cf9655763e105",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x47bbdc4836a3ffd940aeb2c8608a75fb37d4e0ed1929fa893124a87046333f",
"0x2fe188cebef3df8090f27fd40d4e1f557b2a13aafcdbd36d53cdb99ec48fa13e",
"0x1eefea2f42ed57d18b8bf7591ddfd0f54a4e7434646e84e7c79a15d2f879aaac",
"0x1394c009ab5cc43d8ea089286a43d30c904d227e9a151549bbb7f4d0cf930aa2",
"0x2a0bb922c5a36f42819d00bec63da58d50b6dd46ff20d2a3b29c1c2e1e0ff837",
"0x270b2526008fda515788b4e38ea86c9c9dc4d650ffce9638f91b85453deded4d",
"0x2ba1e2d2ebe659e779301d63ecde988d55432d5bd7f8a4f76a03e20fa31fddd7",
"0xf56832b7f06a8a3a1c287b8497ae10dc05f216917450813f21ffda4c0effad0",
"0x1959a0963b974ace1dbef8ddb09c9ccff9ecbf4dfa10c2c174d42d523098cfdc",
"0x148da04f0aeb03cea78009e2d1192865f5b99d630681b71ce71f9ec05ed55b69",
"0x51a40af416f4fb5f9f0f51faee0ae6be210f9b93c4ead16f2c9a96a855c41ac",
"0x20973f1fab9890ed48723af234150d1ecca066629dc1d07031c6cab5e60a3efe",
"0x2a28a24ef1bdd75a7e501a4f035c1b431f4d7554df5facd800ecd3f024ec8152",
"0x1d2ee4e18fa1575fb3ff723b3f9ad35cb0997b436f85746c6857882068333148",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x2629999fb52514197199686aa4c0b0961d8aa48404241177e131bc2396fda732",
"0x1f99369d70a63bad0b76652ea69f388fa92ba1658836fa3aed366744ececdec0",
"0x4511f41649be85e455ce74338ebb425c895f88540244a554c9947bce88e6edc",
"0xb696f753615462876b9efe2ee1fed79c49becdcfa3a2d0d04a29051334ca110",
"0x214f09b5557846662636de4679dcd965611c3d78e8d50a2cb0589c3ec90c9924",
"0xbf5835b4c0bc4b13a3dbe0fbd68fabd6ea6749b70450547f0c2e3b658c01301",
"0xc48c640e88a6442ae5ac574221d7f10eb2e67ca30fb0bf169cde004f4ded504",
"0x1a5935756b57bfe02a3efedbae26e5a13200bee0994712005589ddfc1ab5b8c",
"0x386ba86a06566ae39b56cda79580aed0647b9636896a47a7e0e9aa9919d9c02",
"0xf00775e400bdc3e8685b204f07964e28163ecb3c63165d46c3f463e7baffe8",
"0x1a662d8ba07d915cf7504cdbc01ec2a676ed76347ddd4e07f370e249a7b8ea5c",
"0x1f06133283ad793171f99a4e8cbd2cfb465d9d6af9ffb4592d90293421750faa",
"0xf83059507c852c9750d5280c440af49da9bb328ee63d1daceefd0becb214fda",
"0x14d1ebfbc4c284f016134d6ab56daddb4e647593caa1324ecb302a77ef0b3bd1",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x5d4c4270c1e940348df545abf1e79bf647658d2e79eacd5dcbf97d68d05f3ec",
"0x275db6ddf370d2f7e21020dfc1106254f1c60fbb7de07efeec3d6722b04bc54e",
"0xd8e04364c5a23a60f46b4548459c7e7c002b73efa630bd165ab3b6a87f96489",
"0x17f1de99ff5b961493bef67f162e464c42481e448122fa5baecec8cae0b2192",
"0x23da50aaa25b76f0dad9f50db23d12f64a4819f547027b6bf52768799362e83d",
"0x6d4ab87edb0fa0ea037a4f5ea1583c4198129f067829169c06e7440f354499",
"0x18ff576eac16541cea173c61aeb541e0761cddbefb4a90f144818947d16013aa",
"0x1408d644973d6502f93fdd2f69a71093a9fe50d7f8061acb474a0a14ba304f44",
"0x29e8f556928e09634fd0b950e5bf4e90470d45e3c16b13864d598c555e57b1e6",
"0x1637adc0e2bc513402f3a8b5314017d7ae192c809c41f3348226dd50ed82542e",
"0x73235d0a9e96cf86e0976953988a3d9a260ceb59ba7633a40cbd7fede78a51a",
"0x6dd5e9ba875bfe6f6596ba3cf35ec2342bd03422f134ab99ab7dddb9778b830",
"0x18f491c6c3b12acd06a117563f067440ac753ec468a5df0c123498fbdf0f143d",
"0x2d09fae126d15952c2b91d311932c93cff8cda2b44ce74c5d1d6dd132f4cf0bc",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x1022b57f4ec134a8f7e574fb62093d415b876af638133d32d366a9b1adf620f0",
"0x14d51a25fd8d1dc5c7720bb793a275d83d812983965bc9b05d306794cf1dcdf3",
"0x2c6a7b31575f327009eed05f25f94a4f173a544a0d8fac673474177b3b9a1413",
"0x304d2a4701c43333827db71975d9c2c4e675056a2ea1e9b72a0eaf127b25efb0",
"0x11f7c6c76441a67bc5946687a40a28a6cdcbd0ade84c389115b744115c627fb0",
"0x9a1baacd8b557f09fc35e6434ecfe9182a04537171ee1d2bd603f5378206804",
"0x8926a69b2d5a4200ee36f786770139781eb60a7d272d31406b75104efcbd3a1",
"0x21135de3337256600fabf590e04c29c5e0875991a67d17eed5f5131c567bf4d8",
"0x14b248fabdbbed0fd66c899e0a801bbbef4e1afc9bd0abfef471884bfa160841",
"0x86e20d28f53332b9e09c5af815694ff83f10f379937f09105e98529fd4b4b01",
"0x1271f30b82cb798656e4465c44a9ff204325f5fd2d2e204f2b5673f78fefa4b7",
"0x2224a8d0963f1ac4f3e85695e2692e386a3c1492aa58127086e1385b9c2cde80",
"0xfae50434b1bf26f790caa16ef2562cad5d238130522db3a97c1893b0c81ffc3",
"0x3f2a142e4084164ecfa6300a4be6abefbe155f5ad84a684f761e75275926052",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x274d4d833700eebb5cf7c8f4fb81c174a108932a0e987d2889d9b93a95d187f4",
"0xe9bb8c9f9306791b77582a16c53947e12e0dfed0c2adc1ed2116dd451598821",
"0x26a098e91130e0d10603be0507dd975431923b338b6c0a3890fbb815af28f7b",
"0x26d653ce08eff8f162c1033b52ea7e67ba0f6a8036bc64d556a75817579698a0",
"0xa8ef549b90bbf3af6d9fb4db8656b7de9cf14212989422778c52691a0ca83f9",
"0xac39f4fce06a27f59b5f434e7ae2808da542d1cd5fd18bb4b90e4d15598676e",
"0x204aed1de3b314f39afe27b3b1bd589a851183aed39cb3004e67deca646266ba",
"0x158cb2e73c4aec4c054f1759e9f3293b62ae5fdf18f69be4f6ce1c65cc1c155c",
"0x13040aca2fbe7c001c14ad386c756ba465796b9ca677735d95861600b3ce6b53",
"0x2674a9a8dffb96d38295f6edd1c5c008e9320ac1e99672b9d05289ce45fc673a",
"0x57be234d78a86ab47e3691b67a63266519bb62985701f2072494d6343322a41",
"0x12bbfac6aed9fbbd81254753e8bf4bd4c562e4af62548e577ebc973f77d9af77",
"0x103b3e26bbc4767aeb96deacd771b5b694b4d57339e351c10507f61bf55d915",
"0x5f918dc84cbd6a0a32a65b188e3f1c6e3412b76230fc7f6e5b17612c1abe8b9",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x28e6b736e2337dc438ee643098ef22b69c869252509d605d6799ceacd28d6cf0",
"0x17326264714761dfead5cf52058e2559b4c57d30fa68b4162ab616d4ddf70448",
"0x26d0b9ad617c87b600e3b27cb797f4b0ded965500a6548b554d2445f49cb614",
"0x1a57505d738aff598d51ba2c25a4ed8b41f9479332bf95c4a289537dd22a366e",
"0xbc9463f62daa20f0f245379c9b36c48c26b8f2e7d393e29a3ab5e30539764fb",
"0xd2de2c5e221a927d1e90617e8be308d83a905bad2c5a5b29ffa06186bd62c96",
"0x2acfa6917c256caecdfc13513b404367163017f92c68314e4cee7c465c016bef",
"0x2300a55d94c34ecc47785790d4cebb3ee14f43f36ed26b8a69b1e7641f5703dd",
"0x1b18386cd94edcc53b5fc04a4f6463badb0b6f1908c53765eb2953449d3bc3db",
"0x168523fcd8de4e51f21ffaeb5194c5882350e2926f76d76b4908d3e0932b5ea",
"0x230836236981243f35eca0e25d7c73c4aad7b8b0375ebc53200c5a169d1ba5b8",
"0x1644931eb3e15ac27e176ba4a0efa23a8cd2cd0a495e0ff1459ba562c39f74a4",
"0xbdba47f648104678694d1dc3e485f87821387d63b40b643681f6920ee153dae",
"0x2934ee754f94b9cda4b4193c2da7abf8854286bd37ce1d10faff250466663729",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x15bca736827fe042d7bd64f77821bfb98ac7765effc787fda6427a9c1a3d7817",
"0x1702aabda38575c6034b350e4b88a2a6ef6a5bccaf04bc9f99321753dc12b1f9",
"0xfc69497af71268ae3b232540f8c9e5b16fe351e779646f5cf34bf7d41893078",
"0x13cf63991c3ea2c423f0069eef61d41d30b7a6d907a6cc3f723b241f676131ac",
"0x8212316344803402735c663b23ffd17261728f9fbd3d91b2f86e227a34cf2b9",
"0x1d76ef5ad83cca5d452debe5dd11a2a756924c26b546782299e7c9b9e7f6802c",
"0xff4763e1cbc755ebb7308094877f3ceb4cb0d393e00545eca169da0f82c6c1b",
"0x2ee17d2391f5e2ada6745b0a56c5b2915abb69437e28975e466d218efe4346f2",
"0xcdfcd1cf5fb6f404d7686731a9a326dcbab662736555ebe2964d81d7929c86",
"0xdfa35c85f23318fa0188cd8ccf7a174e89b324b94484e9f1efed3be25eee2ba",
"0x3020e7189aa0392850f96adb46c8476a9d62951093438a948858a8bdc3400b8b",
"0xf7d3dc3a1e33f5b68e2b84d9da05e7163b40e8724c46befb4030fa88768e536",
"0x2331b3e5f7f1277ecb6ef3e862f53047a7cfbfbcd001124d96437a7559e4d954",
"0x205334d2a003f29e2eba4a0f115f491e159af79d1871614252a23ec2c81ee321",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x5c88b264202385a48b939b006669c1866bcff2ce9be97fac1e2b7fb13ebd8ce",
"0x34938d22d020660d0a009ac6a5ed48bb0097cde47bbc0d8ce942fb31c464584",
"0x22162ccea7bdf2b786c635b0bc7132a04f76645b467df815cc521e977cc4f80a",
"0x27b9ec9c27c0f868a21ff55cf455c2b3a392dd5e57ce6870b90c217ed051b792",
"0x1d40a01732b59bc72804d5be3dba2fd2be8208fc2f1ffb9a44fbeb30895d6b78",
"0x25a3c16bb29635132684ee4964e4f7364c9edb73ff5d41c613347f90519098b2",
"0x2264db5f2b0206e0b97cebaef9ae578d534c98b8a20894d99ff4cc52dd4f35ea",
"0x8599a766249f3c836cab54623833af8da7345e0f976fc683d04699c33de0097",
"0x23a4e769c41d56c98af48d9d3eb4e65d5c3cb8f1dc50dcac0895f70176c65966",
"0x6863319f9840fe8a57bd754b58b7fed2466e86365ef6e678dbe7c495054551a",
"0x124f8b0efe11009c8a15c7830dac00743a617798bbabda3df6ac877625f3590d",
"0xc399275a8d3e83e832aab6df8b0849b9d1378376e90b8a24084074e85cc4e32",
"0x119e48a1b4a77a3a6f7c61ffb60b93c904286828355b63b3fa1f7efa5cba57cd",
"0x296e14fc6bee3bc2d9dbf89f2482f9891cf1f7df9ddbb7f98292f2bc7fd9a50b",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x26a69af895a05a3493040f735b754e16de06fa2c04c7d990fa5ff5747f83b413",
"0x9d38fd6121029734acccc26a34b6c0a9c5472d921ef1db0545ea0d2ee58dfc0",
"0x9258525c420c9158ae4a5b72f73cf036d988c7dd50700b1ed3796a595c5b6d9",
"0x240b4844e1a39d4cacdaa8cb96df170cc306bd32b46539a155a91d3dec72d330",
"0x2f7bfd78087629319d6485647f8267856ac5974200d94d165da35c13dd0f1c2b",
"0x10c3c9daa9b917522fb7c6bc6c18a2a70968ed139a349805a2242d8587b98160",
"0x42e830892fd09a016aa5998930a085f20871e7305b361d30690064e8680ad2f",
"0x1bd229a43207a8eb670f87a25910257b4d6e99ba62c30eaf92c41c887b92eeb0",
"0x179259aee9804902a592512d691fc31fe7369036e50df52f17899e9f310ad8cc",
"0xc94864bca0ef906ce0f56586a71ebf9cb21907610f55d0d597c910f1832f04a",
"0x1b8129aa9b54faded8b6e4594ac9c66268f761b4579bab75e4b84565ec6151f9",
"0x138fc45fe0e94d2f56d913eee6f4dc8362019d48b48bc11d566fb136a034e7fd",
"0x11ddf7e5f957f4348bd38cc6c2b7b21db6e688426842fe2790dee3e5c7970350",
"0x273e3a99347d8bb4443f8803f3144b1c79081762f0c89996e8ca6f41e2ce9eb",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x22e161940b597798709d5732b35b7a4a6b5738d60943450c0fcf0015f74a978d",
"0x2dc5270b47eb00ed0a19788755286e5153486071d8676de57bf1dcc0c95b8269",
"0x1a70ccda609d7bfdcd04227a1c7b3b5dc51ed832b3209ad05cfff7f94bd17d78",
"0x1acb2e3c8872171cf04e8e12bdf4aed98903f30427938ff2ce2ac2ca07e89b36",
"0x2adaf126a0f5fb02185e741d6944b194959178f84bfcf24c66caa70590d009f2",
"0x1d3244fd2a96a3c547cbcb56974d8a6286e71ade5e026544cfa6a239e32a4a14",
"0x1bd9988f3abf3347a931f562d4c26b2c6c7c3b157929f1d3529438687ddc9748",
"0x1ab2d592b1c45380283e92034c93e5a2e4afdd8082525f32728c8bef6293db03",
"0x25cb1ebe5ef8d7fe207cd159cf795ceda6553f6819f07ccfc9432344648093e5",
"0x30337709090c96eb2dd63569df081569d7cb09cbdf4a7c8c1a982b1a502bd31f",
"0x26767fe5b44f802d1ac590b4af55a4cd28f4a4565a03fa412dac54a2d953d6db",
"0x206a055992663ba140839fb48dde53a37509d75de3cffe05e543ad10e2a6a880",
"0x26f63a141092d97b431869438f6f4f2eafd3587d1759eb8dc51129be57d1c9e1",
"0x651190f970efd04e85ceb47f6bb491b2391e7e4c0229354bdd377435decdf02",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x16f9cc64f644433e68a60294430fa2cb5932712fbcf1d867628561f9057b714b",
"0x271bd08af5ec9271663f987e6d26c91b496975cdf5a2c6a7c5490b62c94041d6",
"0x29f3ffb8c6f14251d4e4e6479afc22e84b5c306798067eb2ca8530c01ef8f00",
"0x3011f9b6793cf8e594cffd490b2255eec2d7c84caf1fceb7276fc50d598c4631",
"0x1592b0301bc7a225be205d464faf0f2620c9879d06b7c97632c4996b255e8b1b",
"0x1a6cb5aa790973bd44ffb4ed2981c633750d9df8e6a122639648e0a305870d8b",
"0x3006f88fc72833b83c57897743bbdade1ab69f52bd8788b4406e17ec42bdae3f",
"0x2738654c515bfb4dd54512aed800e6c044bdb1d4f77cd438945579a03ffa1416",
"0xb321f51e6793cb25dcd5261f44260a3b7c9f9c44c5ff3ff64260a81d68eb977",
"0x1477b46d71b8684f6448203310aaf0f8948c1232cbba64f2e6372b26d3b96f59",
"0x2e11978278f26a764c2c61c66edb6f2964876d189ead6fdc76731044355d9086",
"0xab2312a0dfec5f56d70efde481c1222f08750d97f0f378e32416d8911347f32",
"0x293b455b67ef83fb98b09994d43c30ce29dfb9b499ca17c6774eec84412eae78",
"0x95b635c8679c2757a0299fba438ec55029818e3de0bb66721004d4fde342a5b",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x230291320aaf817c9bdaf62fadc83c8e9d55690dddc6ab42884102fbb8c1313b",
"0xebf9d983145fe427a9c98d8467c649a6b6fd0666f80cdc3edde2d6103a0bcb9",
"0x1b8a2f071acf45649491b58cf5576a862c45978ec121aba4cbc2b344f6adcca2",
"0x24287f43b82f4a84f3a2500829657e4890974e8321736b074241d6d4c6714cc4",
"0x2ce1f1627b642c8dfaad03fb46498d7f85eba85b778efaebb2bac14d3d4c2f0",
"0x11ee152a99a5a0de87751aab98180d05db1e64f3621498bef5a821d813fc7ae6",
"0xce62d91eb6161313ea7e48273122d6a1774f96e571277109302b68c53dadb0c",
"0x19824bcea6e4ccef8b23d501840bc4f3d40837dc60b4370146a4b68f6f889b91",
"0x2d1fc70e199a73668b4d0c37356f575269d258aae7199a266e63c88ab6eb4cef",
"0x321c2b5f8938df1e2cb30488e61521a99706c58f4237e4c61500bdfe47f5626",
"0xd7da06b4dec9fc5e1dff140172e0a84a9d147154745f2678a98aabc3f7989d",
"0x2fc41f67cd32d7ec4ee517c8b667c9a0ee2308f759ebd889f6ac043d8aa82f40",
"0x1fbd55b07a5725b3de1a9739d36114c9340a987b1e66ac212b12795249bd8102",
"0xae9b9d9f2101c972f848f0a2b7a8916a3a2987bcbdcfa1d300e0b781d2da062",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x19f45db7aec76df1b89fee8492cb760e8f6d298cac167d2aaba4702d30f3105e",
"0xeb3de3aa60a1e43df813790a7b02b5774bb93b654bb4f690bbbfd8b2e19c155",
"0xb506abb65dbe55553fa65bc43d1593be440b9c5227fdc84e142ee9365742ff8",
"0x1725cf40cdabdda24e0cb35d12315bb0bcf61a681ab3f3b6ca2cd06bb6f9d899",
"0x5b2e0df1727482fc6597c7ada0624819471e4c4f2dbeef58ced0c2e5a2844fb",
"0x2cb17d3d8a51790efcfaee971ca9155f0074b2e7622abb74d7b8c984feffa7f6",
"0x57cbe9626c16bb67d7f00009f1e7881b53643eabf6abf3f4bfadb6cf9678388",
"0x1d5a175df6dcdaa9375d954c5df8ba5bcfb394070967a231cdf753e2277257d",
"0x27453d445a464bedd2f943123064cf0d6675c8946f077957772f32e02a0fcf29",
"0xf2e2a7f140c38c5d932d2d6fb694914a060efe9e6bffe14fc1dcbb840bbb466",
"0x240f3c285bc1a1c717cc08ef209175ce1efbd0aaf894599c629114fb05024f77",
"0x2dc62be8336218eb9152ec653c5f2d0eda10ffb07a974bae8ee5a370aa497b55",
"0x1544549442e755807a39faa19a9e88cbe26fe1f5f4cd27fe68fa952806a6e72c",
"0x26d85311e5bb436e105c2eeccd768ee32acbcd275b22c135bceb61f6fcc99696",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x2d5c06ffb3d2b7cf9a0dc797193cfda855060c21de622962dc73de8bc7e5309a",
"0x1142dc3dd8bcfcffce00dc87253ce16475df11a72de8b35070e2a947e8df89bd",
"0x1ef9d5eb72934c51099404ef52f846564f9d5956a61fa690c1a474ec6dd4ad2f",
"0x1f875fbc8a4be018170a281b3f9c0dab5e91371ee3101e6eeece15ff9ba2a595",
"0xc7ea4455b4e9ea7958d0549f098eccc22e73f89b049f48558910bb97226db31",
"0x1781c95b5bb00bfc0c5280da9bbc2d16aeb1ddcaeb2c45644041366c0c57b8",
"0x7d46f4970f0af1bddb0baa2b45ea78c3e043c402b34fe44600919ebb3bc638e",
"0xb97d904e55808e8d3d847315766069b15e4eaf6e48533679e0d1dc00c70e6c4",
"0xa424cfc9ac1630f815e1867b2351bc8a7a0577a06a1b3eebf8e1c012883313a",
"0xab4976c40bbc9fe9106a7610e3e611f88e46839e484ed2160086e0e83c2e4c8",
"0x2bd44e217b9b1bd7c5c687ad7653730c6a9cbc73ab2e3eca6533ce3fb568a339",
"0xcce891fce830619bc5fefea2258df3f5653c3ca6050fd8efb3a653643334ed0",
"0x6cc269de739b7f75a505392122069f46ead236c9fe14dad4b89ed3be765ab46",
"0x2ce5dad6f8c706a1e48ebcd989cdb6e79161070d56b7f488b1ddaeb207d81805",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x2e77cf5ab513e1badea5c3c891925f9638bd14587f6e342c5a92452cb2216d10",
"0x1f0a2a3c8f119ff5dc221cd21cf450ccfd2a13a51992e227a040294c78d05bf7",
"0x8af508a7bea4393d740ddce0e6f0fb819f6e333f12273739f8216a7de28c19c",
"0xb7b0b5adc8e5b80228ddc5a3bd90a11a6a58fa87ab21faf6b5ee6b4786d3bad",
"0x29b2720d570c648e23e12c70c5d903c08897ec38e8f79e3dec9f892429df3f63",
"0x2b5d0114e15e9a524981ea2e38e06976616413a966172a365e702aeb81a3e8fc",
"0x2f04e33808a800ed501c43a1cc6aaff9ed0b2431f111836ecc36db9fcaf954d",
"0x75afde514ea96d4ddf31e02c2e3c59b857e12bbef9188703417fdff2b73f0ec",
"0x294c6a950fcf5693a8241c957ef737cb0e9a2ac3b7eb618a1bd1684db4353e99",
"0x2b5cfd45d895ab09fb03ee623cff22321018031c835f4bd9446d13995ebc2702",
"0xc9cc48c4d979b1d5267a49248134fedc8c18e6678c52f82e0ead42df94bc3d9",
"0x1ab81cab0d091253489ee59b36258e7f07ed92223988de2adf4f431790b7fe73",
"0x2586cbe245b6f98d39e52d3944cf6ecd7f6b02fe5125fc06677fa3adb5c4b3de",
"0x13b2352a38dbffaf3d06de3fa376edf5b2ee4e53a57be01229dbac8729a4fe01",
"0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27",
"0x3d877056291c4194282a1028b33bbda54c8c56539d25d3813f0992d563fb344",
"0x708818327e42247f3895bd0af9998a7f3ab275831a1b7ffa2c0266090f86b75",
"0x2f6df4925de2c8eedf7a0dd36de0e83bf0ba0e6649447d6fd2a8dac7d4b1b819",
"0x1333c9e0db6849dd2fc1e56de942f8e59e6ce70f9815f74ec75ee7a710ffcd77",
"0x12abc89e5164e8c1a20e40cba62920df78cd0d31c641aa3526b5387aa499d864",
"0xb976c6394d0a9ff18c3ce234a56cf8d9625c11d0fce863278457cb08e1c4983",
"0x268b0a4cff7f67119358196bcfb46348ca332e1af2efa758b59e922a135d7e61",
"0x254b8126f45243f14dd8211df41fe5516b35952d56c62678c148e73cdbad3718",
"0x270712f18b1518fafe093660f492cdbc2fb70ffab31d8a4d8a1934be68792369",
"0x2bfc3981a249aeaaec4ab9001727d32d4e6fe75598ee964fc85cf30d50df584b",
"0x16060a17e1b11f851ceab20464572b3d78d582ea050014843101485f65ab723d",
"0xe73217a106c402e4c6c166cd9ef1fd2a0b16ac1cb43646bc1c726f83177770",
"0x4b959ca07e7182ca08f2351a03545bd7ab676f740b02331637ea1434c8545ec",
"0xfc9cc95222f92715cf7476010225e14cc38f314071e50e0f3bc9ec674a8aacc"
],
[
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x152fa675f337216339a9274b97b08d74eba0f31110688589baac5df73d06ba99",
"0xa60560c145b77121171f32dc6d2fa22fb894749d2686475001e0b4563ddf68e",
"0x2402bc21cbfc23a80116e7535240403b3e7ada326d3f5f28e7071680d1b57df1",
"0x26770c5cda1a14d4003cb55ac927d68a843b0a81acbdf4d1871a66201e3378e8",
"0x4ef6e3423ecb4bd4137b2b7fe78100b84a1ff459cd0a1f7212668bb96ddf0fd",
"0x16c6d4fe10c08c64f2bb14fc6d8d650b05c56fc689a93d0c4c0a79abfcf96887",
"0x1069cff9be3245f60606f94c1f214a3ac43d2249e725dc57d45716d06d905ff2",
"0xaca974e63942bfe230694165a4f72d184d4b7fb8a1674a70cb19cfd61329f13",
"0x15ea665435c28d287bdfd4978bd127392ccd486c9afa99454e9561fa992040b7",
"0x2545f2cb24c7a7c7af6beac75e34deeea9d532c0308187f7bd3b47b133a744fb",
"0x29b34fa5653b3ac5f3eedd790c7b94be1abf24beeb24ee50a34ee12159e94b15",
"0x3d5d55635085b4d05b57f78094a130400e4b60548da9cf59b90baab8e664235",
"0x2b4768592e18dee0d620b4bb3ec1f0892390a9177108346f9fc611e1cf592dc6",
"0x198e90e2b6f066f99bdbb201258054e8758dafdd397a4044af7fe73ebd0b05bc",
"0x209c25806fd4006da67b80c5f7a3fb03990dcfe087375143a7a09cc99aef143d",
"0x125cff70ce16a10ff53be8b26683420c895d366fa9d3763f14d376cbad453b79",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x2fcc1e873c2460c19aa8ea31876a63c06b6b16c56bf45ea23b2979351661c066",
"0x265596228bc6c434d211a6340c4a331df2be3b1e433aee26875876ab83840e3b",
"0x13cd5d84d4458fdf99666b4f567ee9bc2663223fea98383d29668084a67efa07",
"0xe4546898234e2c9981d06fbe84630d92d6854979472695a2aed5aa1c2fc018d",
"0x15ead9f1be93476ca2a93c83125918403b835eb9547d3ce31856d119ae8df0fb",
"0x2209a03017696e3a73afcb978c53731ae3186f4ba315ed5dc8ed6578b3d9e428",
"0x5b358d46bbf09ffb07f06af770b4c3f695e35af5f32f449a912310c69165652",
"0xd4ec14ac84189f1e114ad899c7dff8da5000fb3726ba88b6ed828451e9a4027",
"0x212a27391f1accc7e7e01e05868e41a62a2076efdc6ee94f26c30e5eb5c63359",
"0x1cf3fedf016306b0bbe65fda50235bc16cbcb1559c3f34ea6ee752f4b70b4848",
"0x52d3e0d566bd58d8097a8d1389d1caf33a2f2662de98f06518670773f74215e",
"0x2852bb73795f54c6adc9c635d5e70b03dcd03cc1229046fe2173c31b10efec53",
"0x23b69fe902f42c3489061de846512d346ad54cbde1d54984e26b551b29cfdd89",
"0x8a501e4d110e059ea6a0621d18bd4346af275aaebef1f402449c9f675feaab6",
"0x17f6697583d43520562d008293a70980e2c6564131faab56fd71c285392f5bc4",
"0x1b7e8e80739ab54fb01d2637963a91622ba49401fd5b961e892f00107781788c",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x1cad07b82878b8c153b0278fbb2e90973327826a09fe720d37166bba7c53acea",
"0x988724d5f424785949062a55133a433e27d8c89a7ec78016db5f064cf786948",
"0x2d81921df5457361416733155b8135b53f6410a41170670e3fc8204a0bec2d59",
"0x131cf6530e31b3541b8312eae98495b9b5435a8d32d35e5247c53f3170a58110",
"0x26ca4df270856d7d89521b850e376f46c84685eb832ff0abc83be2e46d008692",
"0x148832d14674b5bd61f45b882d08ce10b65eeda4a8d90caeda39210526a2930e",
"0x19395b170131e4b969e01d8bcd1a6fd6311b3375c0dbd1e31b879fa6835b9dcc",
"0x2617b1f4ad2fdf615bbf88b4efad44b6a7cd5ec6e2c469a94471d5a3add577bc",
"0xe0507aca633caa740518c6ed6ff9ca084bb59a7d0d97decf2530fb6ae3cf24c",
"0x176ed52c8a9f3f7bef3e084c2e5235496a2177f3418364c3eda28fea7f2a6624",
"0x1b1ddd3ed3c82536d4e2cc47820f37b772335bf4530356e590c69938c1ad9eb5",
"0x13c8300e2bc52c8d4c12f2cd9442cdbad38235a1e34541b42a274be0146455ce",
"0x2f5239bdf0e8f441fc01fe081832618bf1b9628cc80ef508dcd4273420cad1f2",
"0x21a41e1e2c6e4922de2cb723d64cbb9496216429a3a5a3c0c6c0019bbbdda93",
"0x3825cc9ed4f752a3a61be70f3f2bae0a22416870a8f692206aecf4570b4d751",
"0x16e3f668cb7ed8c2bd6cb4687d11dfbd02a8265f671cb58a7bb33a03a5238a1",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0xd94596be2cb2587e41dd5ac38707f4a718dda9076b74a2567949a627bcca82e",
"0xda56e7fef653a7528ebcb12a7a01082f7e23054bbf948da64bf2ec2452d098b",
"0x22ed449e9752660719b8d34f4962772d7c7b08e4882442044c73a8aadab72c4a",
"0xca9d3e4986304f7ff2894c105218dab722390273c42c427c4dae8f29d66ca5f",
"0x10b01235bf874a5b2e184a8410ab01107cbf0648040ed6633d179509f5041191",
"0x126206165d8d964565d3220cbc84cdec26a7643c68f7cc42ac60d1f8618a6200",
"0x4878d524f362da3e3aa6dd357f0bb7d5615f26cb758747cdb30490707218854",
"0x21127103c61b8936aa157eb73855ef46d5b01587aa8a199478424f3c84d9adcd",
"0x15d5439ab67e845a1f55af2ced4e06ce2d577a29fe250f1e8116500d11681999",
"0x16a7318212f1751abe1b5c422ff830f1892dfd76737c7b49433e7877358e2db9",
"0x245579de75e5089b4f5f0de11d5b88bc5e395ff9a0747a2d33b8cb3e3394aa91",
"0x2ee3d749e038889f77c0ddc80bb7cd55df093664716a75f0274b1955a8712a06",
"0x277b64ed9137d7914f9445969c33db2f0db95938df3cdad46e6c8d4ac996796d",
"0x28c9181f359dfa1ecfe51ec8331b999c4be610300576e07d8461d468672e9571",
"0x18a1ec6f905a49044a4920d0a4a1f74a907db755d1f06d2d75551c6e9b5bb520",
"0x269587fc49db8b933a31bc6678b4087a12ff762c1a19c3699e0703a39f822906",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x1c423fef62d7ed3b20636135bed12f56c33b6ed3866b4deef95935b4fdb3fcc7",
"0x2c39e9c9ffd3f1acdc23821afad680c199de68c72500ba9affa091fc35d8b230",
"0x200be427ad5d644255178ffba022a54e5ba811aa0a0cdba615991897d312933d",
"0x5bc3aef5509b9df5380dc3ff1806ab689428626a44293af5a2bc33dfd98541d",
"0x19d3a7be7f42755c49327c0865f7df015df793d73c5a036f3beadf16022d1bc7",
"0x1fce5fb51256a4df3e994252d479c8006547bfa2649b9fcbac1e77699f31e917",
"0x24d5b2801c808c74305280fec1d16f0a2185f4f7ea2709627454797e1d694aa9",
"0x1b4a744a7602f165651e06044235910295d5be42f5e5cb902cf1bd0a449f44cb",
"0x221aa0d3a117f313e2a2a20c6927618baff0fc77188801b96188ad8518b419ee",
"0x2cff615d12e087e7d90119fc9c184c7903abe446e206a02d1ade996431e0f282",
"0xcbc5ef09419a755b598b1517a196b2ba15521c55e4b940b410e647a57713310",
"0x243e638c46a410bef0335b65a5e2dfaef63e3030d9c20894d43dd580fb36aeb6",
"0x11ae740f93b3cbb1262d1a6232a4d8c32a9b4e2fcce71620dfcb541a6bf3083e",
"0x14ee58652277e60cf9d5c2690dc83b833c66db0f8a3524d9d73b4b78846b145",
"0x1bda443673db00ba4dbbe09d15420b772ee22d921a43d236368285d42bced6d7",
"0x2de86a4384d67c5e44837bf469091304ab5e77d2eea4421edf64ba3321a12718",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x1b917b840ef31eb7e0a628bc85f7c2c200daa2c53ed4ba7f6a9e1b24b1ddea35",
"0xc54f4f9747bf23552798112aec65d4e9ea425c25e4ffbbfbbc3de49009f8858",
"0x2ebdec8a92cdfa3d690a4419d1928b4b4d93d5f911521cf06140340913462731",
"0x1b74699cc5eb637115960b5f70998323c9c3db826844682cfb8ea43c375673ae",
"0xe09a75d4dbde40d4e18b88f63acf3ab1ce50c80252a3012152ac38fbbdaa61a",
"0xf7c0e52c6acfe356ef5c75f08788edd3e75cbfb209436f7a5d0c3ac9b250c5b",
"0x250fab500f159fe411838e3ac03d2587f7e358cb6c5847df2b427a6c074df62a",
"0xdcc8241d56d88000a8b7aa90f6af3a4fdffa80db18bf815ff7a0b02032b2aea",
"0x1a34b7894985f4d6b216af15dedc398d4ba39351bd325651972de2a64fd810f4",
"0x277bdbfc7a614412262af936a8be70b47e7e5d31537d85ecf155ac3ee482b920",
"0xd3a2e73d19987bba8d72256028ea7052faa7e99aca09d9a08bf0035e402c03f",
"0x1c00718f76c7b7bb506c09b6e1596c137117668022fcab596984aff97c858155",
"0xdbd5f1c327ae5b775eecb71009a20720365c0e482fde75e1bc1371e5c11fcb3",
"0x867c2b4fea85a4cab294824e2276bda8a7406fbcd5da41b6e0fdd8b69a2f1d7",
"0x1d393af52503c0a9aff9fc1da41662cf9a76ad7d3240890bd456a47731a35b4d",
"0xc4efef6ca45633d4ece8715dbdf4b9abe4121a608606d971845e47c70aa5db4",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x280e2e4d9836fd6f43a90fa68a9220a0e5679ad45fb21c8e396dd7c267e5d3a9",
"0x50dcf95a7b3b535a88ef70504cc8a444e78f8b5ef48a3486112408d1aab3b87",
"0x1ded90abdac843e977abebc17ed03d58eacc961cc82dff032df1e60371acbd1b",
"0xc83114862faa4b053ecd3df00bc7bb610d8f777319da6695211696cacc7c2da",
"0x2f38535fca1d0fcb6656a7bc9f8d6fb0951cac281e7204191d124ee1f9597056",
"0x15a8a27ccdf7f31e9c9bdeb0aa12189a62420b3fc3af4c0ccd527bccdfb31261",
"0x8538ca91007b4af17747450f2d048adfbba6ada49300d46163a6141d0d60a23",
"0x219358a11f299fe602b8336d6c74c8ed45e0af3437ee3dbd73c7415dd954f229",
"0x1a7ae67fd2b95fa482e68cfb6adf7a5f703170ef536e0c07c8f45e212331891e",
"0x2d8a33dc859b421d03eb431ef70e9955863e4bfa9a7650cb11f8cfe45521929a",
"0x23e68686a4e6ab0a2e24b04c5f89c2db9b6890816e7305ca2c92a912636772ba",
"0xc27986848ef557c8645754b95ed9edc215e526d52dd369c0777d4f378465d03",
"0x6e2cceaa215aaabf58f2e6ccb3aa062e24e506f3819645131a1f846cfc24749",
"0x4ca455e242a91ca2143ae13d31d0ad024552abe39636c4215d7772512868b97",
"0x20107d5efa2baafdc19cdb78750be25074d5052d77309209d83feaf764ef4493",
"0x284a8c5b8405a825d8acdd215c16bc5170fb4c5460d6e775207047b109fc3e63",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x2617b4b39592cb7eb00834dfb430ac37e799da74e8ea6c2cbac3bff74f3282c3",
"0x260555fed187679e25946324ff117f1f487d75d8811aaeb6afb29e02bf9e9b77",
"0x29d66baa1db480fa0976c227b8be2b1dff6206980b543319ab8e6e46bf1af27b",
"0xcd6ba2405ef9e333036c7567e0e368109489be5791633c12042106eb0dd43b4",
"0xbb6ef374a10b4538ef1ce3c0cf6ef6c885dbc2f449892bfd17e82e7fe9890f5",
"0x294e76b2d0fc3b732ec3ed8f73b8e1c616ee0012b69d61417a4cd5f18f893c00",
"0x2a2d473497afdb60a7008c7dc7ced5a33fed7c5424bb6a1299c24f373e7f16ae",
"0x60533676e96c73a3e183dd8f585c78427c0cbe99e97f8acdb098889df1439ee",
"0x4d3ad331506308539d84de77d62f6cb661c870bc064fd3359cc711a06baf4e5",
"0x23444c530e318b22418fbca527fbf9fff0c2c92d623f365277d65ac7ab90058b",
"0x84a073506da63fae8ee908965d634da2a789160f1ff73faf58b676e5c914b52",
"0x6c1018af2ab1b629440d513a4971e62b2dda42233dadeed10e4629fb1e15c48",
"0xfeae12c9ea34bbf39373aa3c159e553dcf7412caf17269a6c9b7e9dc594adb",
"0x21f5f23b0e3f44f8768aa1ca35edcf5e919eefc9d9dd47e44efcc99694e51b54",
"0x6209e20306d5ff2ae4443bffed0948b2bab65487650f1e1f956c9e5413b168d",
"0xe981747daf6de6e6be60f7ecc28e84be0e4b7e8c07ad2128fbcc12e0c7096b9",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x20802f8ba4a922457a1aefdccc804a9c34b885a1e9f0fd94473479c74e6ae02f",
"0x19cac2ada760fa14ad038d2482dc86661772ae15de0ebe6a1a767082432bfdb",
"0x2c484464a823c43053113755869610b16e5116f2bb1f3e024d65d9206c3c63f3",
"0x20aefc9cd863f976e7e5f601102158b578357e3072ad22e68028640e5513b471",
"0x1310a6b902d3736b0a50a32048c81feb98e02943bdb12700c714bf6b255f3f6c",
"0x28a2e47b087e9828ea526825aef8a8b4d5a36020f87b4672c36a0b3bea12d308",
"0x2edacc0aa69661a65100e4686e467aba4f2c430f61c77707e0ad3c2fac66c096",
"0x23b811e8af4e671b9bfd2c2d83a00883108e704dfdcd7944fa40c20e72e359ad",
"0x36cf4860115229cc61870796bfb55ab6da45a3dd204e1e66af397018f34187b",
"0x1ed097ff6526283590ece731b725b9f734a7f516d6a8b1eabd4120c8d0fce65d",
"0x2242d9a8c934bd0f2b097e37feea098bb500091a496bf689a59b795c8d7469b6",
"0x2e1dbf3119ea622492c1f15dce5addcdecb3ec045028e9ad6a8bccc85a456ef5",
"0x2d034fb552635fa6bd63f5e91ee8d7bfb8a2f1ba395190a177b2bf1aa76642b9",
"0x12c8e6f621ed980c07cca4bef17af232d32c2fd7cb3fcbfc971947e66ecff2f",
"0x548b4a31bab4692a858acd30fe523c42e8f2dce046f2f121b0c82cf5bd306b6",
"0x4985d3b7fc1a4b5fbc70fd37205abe31e33c4beb6f13777967ac5fc07a3df18",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x176ad5e77dbf9eff47130906d9f295bf1139d3cf00fa5ab42bd3e10d357bcda1",
"0x37fc3c302395fca97bfbdbdf5ff14d1f71300057e7d994fedd19f2d779e41b4",
"0x67b7fa5f5b640eea5c1173aa40084c2893f0b66c4d8eedf9e48444de48cbd81",
"0x1ef50a9851144552374b8b175f1a069b99271337c29a94945140eb7e1a9560d0",
"0x4a8f411eae9b96fceee318a3d82e839354b0999e8354ca66bf7f11281c865ba",
"0x17c90c447cd83ef7d547209c4644ac95cc1017bd65360faf58a8cfb5210bc891",
"0x2b324c5a69146a0b1d502937c9f1764757d43065f7c3c7d0a7979552354b3f98",
"0xcd0a626b860fcc13465134f015336740cef85aa91bb7c919d4f1285dbe4953c",
"0x1f2baade720437f5af71bd826e87e155552a95da11c06402c76c8c574707de8b",
"0x1ce2ccd7a415304ac0e6f1b265590359f970553a10bf8df85a55eeebf5cdabe5",
"0x1498ca31f8887cce647ee52fb4b3a177a3d8256354cfbc83ef0349fe3685d1db",
"0xe6e210f18faca167bf3d82bf9f9e58d6e094c03b56dcbd243fa737e0ef93bb3",
"0x12cf450b5228e1b7823665a58c105ab37fb064d287b28f115ccd128cae7e440b",
"0x1fde1a9a7f3a95883481d25eda60225f3dd6f67b127fd2db690aac68bb53fcf2",
"0x16b2c4b1a4276fd90d0803113fda96bd017491d592118ed721b2660a5576b192",
"0x301ae24bfd116b2a5a8ab9c08fe26cbb20d111ec34b7f7b62ad4a95c95531436",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x887f2970f378099bd8129636f847065b81b3cc57e229d2d00a15f314f1b705b",
"0x19b3b01cb6aabb13901f8fb5dc1490ca360284f262672e7f0d39dbbfe0cf5e",
"0x1b3a6e328bf97c4a2bb7b62451d8d21da221d9f79dde1d20961a5730191499e0",
"0x170932e63d8ed05d6b66499f32e6261b8001bddc0ca176081b7fd35f9c2a019c",
"0x1899457555eb5581fddb51340488569c2b4adb0e7e6e1b59a36293b3aef835e0",
"0x164f7a46d01b3ed26cf79280d675584af03ef532ffca9b0aa1fa4c046ab9729",
"0xea2ffdcabe9727588526bbfd56012495f1d56b06a5737726073eb9aa7052aaa",
"0x7ecb58097193ca637d89cd708a6610e9bff056d5d477f0f0baff2fc922d0334",
"0xf47e601e82ed174b715554cd3d5529682511ac8dfe48cf7f2ccc1093a892d5f",
"0x174f79e424542b0e34f0fba0d6451539aa56c56f72fc1b006156f46a7cb7c2ec",
"0x1609850116dfde24d7cb5510912ec1f4bc416f9a5e57cbba8de63a2556af662d",
"0x10ab565bb9cf436914f214352b48bdb7457ecada07f09215c9522fc79701ebed",
"0x25903539c56c72c86dff0d320e4b89921f177b9be69aecca9e52da81175eb5c2",
"0x24be2bc0726dec8e7e12fa3a18808211b32d0725f4d6414911c250223fde21bc",
"0x5522494472ece35e80ca3ef35636e8e5265563cbe43e50a14d77ed0d9f894d7",
"0x2a9d37d9b9bec22eefffec1acf6a2dbdaf5054fd455c300a6763169d4c4c2505",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0xfb784243c37202b1648a784010d674f2ccc662e3e72dc97c1e76f0f815948a1",
"0x993e6aad24c4d252ac53905907ca3610ef2a5e6e48eb3da752bcca5dca973a4",
"0x15fab250b63506ef0b6fbe565b15ca337504a59617751f3e91e75891e8f2fa0a",
"0x22b851ba2d74cc07a36f73cec3f54f2e24f7a5ea54bb5356e5570a4e55ed1f8",
"0xcc28d557fcbe39f2da5a831f97ab31d4c9748a30c1c027286f47660fca9fc27",
"0x392cb28a2f6f3e8bd6f869dee34d83fd84625f658d2c6b02a6acec49940d369",
"0x223232ed91851f7027a7413f23b889f73f18f20ea91b308360b074250eb5b133",
"0x247502139fe5a4fcceafc47ab0835fab3778866a0387f67c0c11730b7086b423",
"0x574e7796304031aa15766be5b419486db72f2cc43798e8a8ee6ade15ea64cb3",
"0x1d18392864858785d134b2848d7fc32cf91da60461efc01731ad49bbb99ce7f0",
"0x2b927f1d1eacf0ee5d3246fec97f13ddb9ba2e34419a7f0fe151f8d366df48a6",
"0x29ca195348764c2600076d9a475508b7fae52d6a9c92196241ac3f08d090459",
"0x291930cdffd0acc873be352600a12a6aa056da7621cf3324e7636f25ef4d905",
"0x13e6e58779312fd8a2ed9368587b5e4c207cb8cb99621f4254a1704c41477656",
"0x74c6fc957511e7287e7b6065c03d55ab19881e2cabab988bcaf997d96b90802",
"0x1da0150f5a7104c25413c83f1edcd3dbcc49a91881af8b3809d40221bbe8cf09",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x17b4a6a22f90ec5575a31b71aa505b70cc19abc0fabedce5dfc7108bd5472ed4",
"0xfb75a413209d1ea511b520b3ad4e96dd0a548ec6d5ce2de9b0edfaf667bf213",
"0x7229fa12e5e9aec5a258249b3667fa5a1a7e9bf69245efdc66a11d4cf9d16eb",
"0x29344527ccc73bd6ae01d4ab76d7d8205643e8c39628e5975b0e68ac647e7dd7",
"0x2e06815f466128d5b0fa1325a96d6f63e513c3c3590f612d01f0ef02fdf74ef5",
"0x2381219c79d22ca23e9bb37cf7f3da8125510c1a9d7e9e26d028ad61f3ba94ab",
"0xf724878c378b234a5bc4fe6f51c000682ce95721afa4c802498ff5f4e3599d",
"0x2961aca4c9ed99dcc5db33902857ae905af926ba044b93d1b8cbfdd82de72c6c",
"0x1a661c53d875032769a8a89ff224b3703864fd77adba88076f9507884ea8dc0e",
"0x20d8c84a77dbf187d873feb492185f9341bd7d20d4c82d4c588009102389aa1",
"0x273944a60bd81f3c014cff9a5e1b1d99079a7db63860abdc5b850138c3ed89bf",
"0x2c3483ea9e8733bc2df8605d84cc2903a10a4f675f803e33090bf1b96d7b6f5",
"0x2c1570fa771ac87f6c1c7dcb0f5efe2ae8bceb26280adb11f1565bdb3234193a",
"0xf8f2bcada2b15807d4e400663abb7ad2a6c653bd3e27352d2aa03cfacebaa3d",
"0x13b356322af7bf7ed892859c3512f21831d23d6ed46bf4c3514762c2a468cddf",
"0xe8ffc445422b035202aeb459085298e5c3d52ad57a4e0c982e4bf6bc430879a",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x266878c7dbb3ebf725baf09bad62441c2a05a8cac838d637371bcb71f7e637ec",
"0x69ca7aea6fe25ee984031f308b491f2a550e4134769d30dd374c0c97ee16568",
"0x190c3bdc4ae56b9371806f99c5247c7f6071ccf725631c6f3435075889f34956",
"0x1d325902dda87290a07b115f3673203fbb2039cf470f229881c786e115ee6abb",
"0x1b2936a6bb1b221aa267ce939f99c211b758c2128f8d544c4d0b5cbc660fcd54",
"0xf9fff4eb7e28845be6a783736f297193297a7cc12caf5dea6f07b5eceaf6323",
"0x20e98cfcb657b1f49c92a069ca501f89e96d73ce0791edd336a7f5e129e5ea11",
"0x15ddf382f5b945869af8a3bd1a030c98d8350e73600aa0e8e1d4ed5e9a89b5a",
"0x93aa5d4e7c2e0b87bf1135f3f0d94b40d59bb293a582031adabfc2a8ab17bed",
"0x83ea048a2fab7aed31a80902174faa9f1960bc2531d18de673fa873fe688207",
"0x4849567874ad0253387252406f2d8860b26b6b605e98c874a585bc157c57a39",
"0x10315d0548c6fde9fd87ab4a523f74d3a5c791e455f90c34b399503fd9662149",
"0x29b768d0c1c037e2c20b133eeeee017166d2797ba47a2e647595e5f0bb433c7c",
"0x2072b5dd1028087414d36c4fcb845d4e4e719885af8f4abfab39fa404fc68e6f",
"0x1434175409254eea7c9b9fc3dd93314403e8cdd56f9cd48348198334c700fe6d",
"0x2da9b2eb148cca6790f4b12286fe560880d75e66bd4c64ef8ee58d7551ca56d0",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x16bfb5fdd4ef9b81e92336ef013f8430727960333b76b5eb81dad8ef220bd284",
"0xf746438c3f4e612f088a4113940619b5d96eec18099f5b912b816fcacd03ac3",
"0x25f8d85e6102bc16cfcb5dfe2a0a6850c4f7d045a3614908d332702320cd2445",
"0x19a23070f8afa08c4a0a2e8a1067db44e95847e5ef5337057437eb68b023ddbe",
"0x19e74aea657fd4206322de101be54c0a70ed001eb5a3b897aadb178cee98303b",
"0x2a32e9f7f76615c5bc2cea017e1e937997d33d011ca2c543dcbf08664f247607",
"0x2eb2f9782b5103cce27210e54c6d760ad28af00a23b0252a608ee0536525990f",
"0x324cbb7ff16c463fd8860a5c6719122702f8f055f721f7c2ad5121d03ccb6a0",
"0x4fb92743eed5177e7a4eec1917d48ba4bf2df9864f477edd9984b5a1b37d95c",
"0x232e90742d5251ee73e1e55ede489421aa4d9b7f731d9209e18ae772b1dbf163",
"0x2888b0287bd050425c3241bd7d5336708c1d2410434d0bb8a094320552499791",
"0x5e878a6e2dcb5fb6176345fb830caf6edf06061a452e94d1d49a862b1563411",
"0x603e7150eb9b06c9c0b94832d53bfacc98e26386e2de0047d289e44483331cd",
"0x40392b8780bb071d2acf492bc6c49d03ab66a7d7d1689f16a47160923d6303e",
"0x27005786e8d1cba94d005f8821f564a42500562da999b4c40163fd15d20a7188",
"0x2f6ee6456256df4b7b4534f97dc725df7d9e359a8af4f84035db5ead72d85594",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x249d2e3a72d67b9ff1c12f00d2e2d15213b2c3d534ee1fa7e0726235d5f8a76e",
"0x66af81c271fdb20f0f7947ba7689567fa0acec8e8760311b200713a3cbf2915",
"0x2d07f33cec08d772afc8a847245583d60fba733b2874e3f14d59770a6eecc1d9",
"0x2b5752992e1969c88ef2bd4cee7cb74d7af5c73b2c43c148d47c0094163b7a03",
"0x17eed7f1d2c6c6d5a9ead4a939871196848682bc2aeb713409769599c6fb99d9",
"0x2b0443e7dd8fa52629acb60c4d9f489a3b485f9bdaa3049cce07b90494140c99",
"0x52e92369cc40d1c0cfa00124ea29c928b85c7b64c1b5a9111c07a33d28cdb7c",
"0x2d590ad359f3f6d0aaf8317cc35b62d92b05b0f5c685cc8c3a369de6d1d1ca99",
"0x2983673217a3388ea6ec1746e62fd0c1d2b2d774e63564ae271d77dba331817d",
"0xd5ce1123b37edc685e8c234f618c830e87b1b95c108a83cd9d5065ce002130f",
"0xf9b69256d0d0e083ba08fdf1bcc73a95b7b378ede36d8066cb024b8820bb003",
"0x290490f51237cd7ab3824f2057a7a2eb725f946442c7987f7392e4c85e8dbd77",
"0x2bd1c921b2655ffb99e5a5de025d08c692fce4e57a3c401fd655e2d05d92a653",
"0x3fec0bf41ee1a2c0a7a0b7ce73053431a26d2b7db92d42a41911e6129e3fa9a",
"0x2d6233e08181a3c9db09017c0160c2ef359139513990884baeee525b2597eb81",
"0xfbc98b8d3b0b6f2b8eb1e780db16d98ef5d4bf4e65ca518e62dc72f693544ac",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x1f04cf1ca4f6db30e843ddcaabd4cc71fcda39b55533db1a8b61488aafaaba74",
"0x1a6f6a78583cddaa58898327f4ca8e00ed729dd41c464fc9ab0c5e0d1b2e9bfc",
"0x3e70e81573bda5c6ab953bcf41581cfe4c65e2d3c04cf1ecf43a2c8ad250d06",
"0x13fb5b6c8df4a5257dd67b782727d8a7d90ca92c5d9a755847a1d3b6b71cdb90",
"0x4d54595c25b41536d1f203e1a367acda8feed3369537ca2557f5da49f290e84",
"0x13671d8ca7ecb93d29c9123bca96103e22f68fc5a16968fe903c0f30e8bd0b44",
"0x1486a9a8302df3771d974c562e1b03b96daff1e1fc6bebe86595d32608a85bd8",
"0x7cd279d7d44931e437f59bef5027f14e49400b0847f4117c762ce21ea66775",
"0x2358686de458647dcf3873e187eaa940fca529dd9398d2eb002a1e6f0878ac8b",
"0x196d60cd8de82119c9360e9ab96b1bc31029ea6bc5a9c891584febe494ad5d53",
"0x1e18e5d708702aec708672582aebcf2e4dad6be0100a7d84f4822e156f2370b2",
"0x18d0a6119479f34c41acce9a1086c6b1a340a3d4eca4bfa561e4205eeeb8438f",
"0x41e39755ed3b12972463551f41d5f1739433b966b759014bdb9d214ad9a6fc0",
"0x1becd98d1916cbaabea2082b8e7f1765f838f2337121baa896e437be5d4278bc",
"0x2d11307d21979b68119899fc08b91e02822cfb7c49ce878ac58584913d6c8a29",
"0x24b7d69ead7cf1c4c204d6d3e23368fd40db0f2df00a4a8388557b6110917538",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x1c414080171ef43535efed9c5babd2275b89e5b175f3b71314f6c59040c97808",
"0x397889b8011160475bb4d6d3379351bf5ecf90800b9cdf57bd3aedb21053cce",
"0x24ca54f1fda634f9bfc0e39b0d4d6a738f7a012898e9c2bfa4a42ed533e52845",
"0x171598e7caa20c990e43306d06b2fbd5879619ac63904e4395a53ad5d60e60cb",
"0x305dda5b8003c236ca1d724beb0335d07aa3b2ade1ba21c59dd763f3019b5ec7",
"0x1ab2ed07578120b399df57c5f109a40e47eaa956e66a6629e1796bde7174bd21",
"0x2a47862d2f0d0629863c878ad7fe7df592ba7f8f3f94e5e5a85aca3958229f76",
"0x1bbc9591c66436dc5cf4bb562468584632cc91a200b1f08e1a28ae61e5c30abe",
"0x265e971c9adce13dd324bc968020828cca064ecf477268ab534265d7e5e2ea21",
"0x1df96d7436aa2918ea082546a9e3e149130fbae6776590846e0632f3570657e1",
"0x10a8c8aaeaea0414d87c0c1553784b744ff2e8965942d3828e14c484f84d2535",
"0x63e4901d2d6197831f94a5ead9b058847ad67bcd8514eda44ca69a0b0ba9c19",
"0x1af00487deaaba2511ec6bba34b8f248a5106b11d69cebe26fb5f35d2745feec",
"0xceb1792ea63e2bace5b317ceff4597ccf3071a67199612396650e8defea646a",
"0x7fc963b8ac37064379d5a652f999038ee4a250e0e3948cba3b899840a119387",
"0x17aa663de33227a947a00ebad16999a905bb2976d0c997a9a5a9fda6690754e2",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x27e7f01f7e5850decff3c8f5c3ee53951fbe076ca41a7e1807cbfc4b8eedda63",
"0x13e9c09190f744dc7563c578dcf432de2522b7c7f995b2880957c5d2c54b27eb",
"0x291cdae728ab7b72e119248c0646d1a7c305afcf50c9dc1c1eaacdc9660d21a5",
"0x2df268da059255b2d959f934bc217781108e61710f0e3c460419d11f1366f45e",
"0x959f13f2c04b17e795093b408f590b85f707e54795f5df80bb57b35c994dbe",
"0x2d83db369e2b48848a27b55553a8bdb77e067a93f1f28db9de6c65b14818558e",
"0x2cac7303cf0462f21c4c154984fef173c428c47215feb2c0355c15de4dc64ae9",
"0x1f16c3b17497d87c65b61123d1954717fff18f21ccf4c86b4ae27444b535222",
"0x211a857b06dfe2df621d3a89a4bc05dd0247add6ce13502fe7fa37e63888f7db",
"0x1bebd0b81ea6cf89919ea765ea6d04d035d73cf7745eaa757cedfe625d10573b",
"0x2cb676f0cac23cd80bc40f3269d2610fbdeb7f20f5a74d72224525c6e3ff69e9",
"0x1e478ad6535f1ecc579056c6ac6ac8744f8e35209b7a081f47a5b0c33bf144d6",
"0x1669c72208abd4ae25158c9c73156e966504dfbb6a4bf9b6fe37a1e1053b049c",
"0x18a94771fbadbe268f58cc38e48ee81e3cb5a94b8b2cffa8cadaf75a171de693",
"0x203411c7e08bbc6a10164451062b19e131ea52d02dc1588d3591c8abdfe1fde6",
"0x6cff9d23d331be245ca3ea0e37355132a367f5ceedfd64c842dc9aef97651ef",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x167961cb9db6a7f1e253bf7c7d0711beed69fc736276820f1f7df8cfd1305bf5",
"0x251b413e3039cec0af54ae9d0dc7ac5ccf5feeb9ccc482a4a4e93df5dff6eaa1",
"0x22461b5ae9c4937eff6dd0c2ad5475f20abd4c5d13aa3894f20ce1ceef0511d4",
"0xd3c8cb0ca400d52f3eb96f6e403aee53c9e2283a19826f9b770d5270d3f2316",
"0x14fe9ead6519febc01088fab56bdd7826c35952169e8c60782ea746036fcef1",
"0x9e8b9302c470b946bb4e24b13b1692266be83cbb0f833527e1971abc11676e5",
"0xaa736ba6817640b3613ce5c87cac8f64ba74ec23f8f5c75f0cb1dd2ee552f00",
"0x195c4f3bfe08a064f19d6fbb6690f5f723ccf6851db01e64dce49b82640d624e",
"0x10bf96df637b9926a92efe91a6095501db10b10b9b8207e73eecc3147dfbe14a",
"0x6f9ea58e02e97445f704f68bc535b1d9d6ecbcd4d151bf2bf9f6bace985c14c",
"0xdb1da59cb0bc70afbd95e428861a2b708b9894749a2a88e62520a767c4e6d48",
"0x41dc2cccf102bb7168276813ff0dd2a3ae59f4f35de8aa1404160be701d566a",
"0x33b21d96a57d2c1d44c1482289bc607254a0395fbefa3bea25983d6e1d70893",
"0x27b5df4b4bde32d934353e58dc214d02a835318804ddb812a81effded6706985",
"0x16c436812dc3bb29c680d81bbda2fc964fc0cedea2cfbe4f9f0bca7451e2c26a",
"0x1075ab0069e8017ef2b84b9034c0e4e981de009440f57ffc72ac633624caab5b",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x1f158c6c1065f78b5f780520f03c584465ffce26ad183a50e11efb956a8ee412",
"0xbe6ce6cad51b6bc14791f01fbc62bf26f20be46ad5839ddc356afaf24dbb219",
"0x226643746553477c60b99089eaaeac4ae64b308a3c56ab343e55a6174922306b",
"0x2e82b3412adb8919fea66a8e2c0d8c5fb6376944728224b79ee3edbe56334e2d",
"0x25af6deaf2918fe03edb3989dc037a834610d69bcc3409e13e7fd657b6c404f2",
"0x10168c4b7ba5c85008a4f87c0325d238562951366b754259c06402e69422398f",
"0x20441555acd94f03732b606acbb25afa0e3cc39c7f0602214eefb497b4a340de",
"0x200658fc08ceb25b3e1ecece3989b682546d415f3eab6596fd7f63a9ebcaf3a5",
"0x8dbbd95a7fee39cb863987f4a9dd8c40ec8c1b94f21735819fa9d6fc524547a",
"0x1679802a70dd63806557cd2d8dbb8788a91dfc982c672d9c2df04efdb12c6980",
"0x18b5ee46c9ef30ba46b5c242bddd68c8a1f891122ec62eb0a1ce4e0efd408297",
"0x1760042648d3c88f3800bbac32caf5e5fd6b808f50af91cc5d834f3aa9bd2128",
"0x2bc24aa17ef22eb5273e6812a0e597bde1cb74b65fc35ae06f09358d966b243f",
"0x1871a1352a74bfb73dc35b7245903c1906a12dc3d9448667225b1d61a83e8cc5",
"0x15ffecc09ae5dab7e235644f38c84af5aa6ca42f2d23b64bdf7ec536f9e7d5f4",
"0x2c9c4d817a1351cc3f659d10453598cddcb7369f9f5978f44025b9d847935a55",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x258f6b7174e2619e3c94d65ab10273d210ddb46eca06a22f81117fe5f02bc38c",
"0x7b65580ab28befad1640084a12ab11bde32586ed38470937985e2ea07eebdde",
"0x2251fd1d0a5bd91d3f958b9377996bfb6f7e777f3b2a3bec54befd9a19b429a0",
"0x226bb0f7370463f705b99cade44a76fcd63a762a9685f7a254d9bf67d9711d19",
"0x125b1f6876e2cd4548eff5a6ea0598ebe43aa0748cfdc53c83987489c871d0c",
"0xd6400436f874ac40bc4e3e392043675a8f8bd071e38ac56d630f810a6c382b2",
"0x152557b0f424f9188e7c816e36f83ff9be71abffa7caea38fe42b0b7d2731395",
"0x2419922a2d394b1837d8687453eed9aac005a6128ae835110a204cd57663f4e5",
"0x28de832e55c53a37639618510388ac059fac106d2833311efd450dea8b112d6d",
"0x19e9bcba7b55e568c983d797460754fad7f04c39a4d078a0faa9868557f34ae1",
"0x283908c8bb48fee64ac955e7fcb47040fee47edd7810e5ea26e1d9bea337e1a7",
"0x25c8ea766fae5e6a1a1a20af4b178812c0e3e38eb4c5c2340b1fbf4468c9bcae",
"0x18cf37ce25ef86d2f7c9aeef0e79f0abb007fee6222e9952c9f734480bf974ab",
"0xd41106aab9ca69696aaea2184622f814fe087b12f716e2dae58069776e1cc02",
"0x25a1462f1d5a2353e1af93865e7ebaa573bcdd2271b268415b05fe113c8851d8",
"0x2d96abf52f1de16d6ed6d4d9279035f5bf5b825754dc21d11feb94e3b1700cb8",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x18e5610502d2a1bdca2d2cd38baabc9fd641ca4e9ab4be237ad32c72dc880c85",
"0x2bc2a1228621dc365cacd7d5607b93181b585843070c12a7abe98c2ddf0b8ce2",
"0x3e57b7e7ba3e4e3caccb663416bf20ba7df9fd5fa25d95ad29970a6098b5d47",
"0x95beee076b8de68c794636c1a75a0f1f79e694e9470af6557dd0a756ecec4b",
"0x2063d0dce7c0e4dcb6eda83c1d2e9d2f8fb7d2754b2a116c80a5fce17ecbdfb8",
"0x2793560a50cb73953010b7881649cf034817d3803411649c83fe7de6c7dddd22",
"0x927b8161885b12371bed6743e7f3cff4e26596f26ca6e10ef9b62824c6d9408",
"0x21e570ce0b93102f53c6621c813a62dfef04444d67147e86bdcf6d89982174c2",
"0x4da2abb8299af33e497e76256a8829bf2e90fdd6e170ae91514dd25fef2450",
"0xaed6f83384c5c1b36797223e5b98e0dc7e322b205d9946ad59be72a56401995",
"0x1043df1375a10cac3d79397e2572c2de5910c9b0cf9c8a36a8597362e2cad2d7",
"0x102b5227284acad6650de094677a51bce725c6da6fc1043a7668e939829a5593",
"0x71b883401c25bfdce86be56ab497a10814bb19804c57834b4eefb6990b0ca4a",
"0xee706d85983efe15078748f8f19a299283737b33a3c7a74f3c10d2e8d938fa",
"0x1e3ea0d9146581209b7018ac5660e20c5033641c101f09823d5f305220da9b2c",
"0x1135f9d772fcefd07385bb7c8b5fc0bfd38c1c41ab6de2da8c8b3bb3dc6ba093",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x5580932f510469f70096c820d9601ad87ef2f66990c8e6eb98d6a6dfde27a7",
"0xc072aa3c1344e5535661baaf0855759b2489b40320116ec0b304f81402a9a73",
"0x2c5e60d6d9cee50f3880234e54b391aab138c81550ffb9cf7ffc83e118fb1612",
"0xea984db0b29d0ceeef9eb065131137d696b4dcbe9b29e12d0bdb74736fa3cb9",
"0x1461bb4b296851abe76ef1ea0df56b555c76879960935307fce97eba31a58550",
"0x217814f2d889b58d9728a46eebe679760022e1d564c5024f6b77667d3a31838b",
"0x2e34b63991a98aeef1161f9c02adde896d1be685e9887af5ec9bfe845d2fbd25",
"0xbb51a53298cbb5297405c865b6ed23804c9926319ae9c5c7c1ce2478d90c59c",
"0xf0f1ad048e7b93df29617d62561ac209b488f58234f3461286e592f64a1dc90",
"0x24856651f6c6c72ccdb29fdf1fe0a24388247c5dbb8973c1c87f3a933fb1a341",
"0x13161ed9d7133008bfb93eedf4c667744c0df4cee0e0ad9038fd0968f726087",
"0x1ff88f2a80b4078a90df72d706725ed9e450488f975fd006196208e399d8dec1",
"0x2c300ce9260279a67bded94acaf125b7c98cc2208455fdcbff7fe98165c1d4f0",
"0x180152334a015c3e7d433b92f0ed2365345ba1b3dd06e556eb6a39b45b924ba5",
"0x1469185941b34b5a4f529c1b5a724dfac28aa98c8f830f8b1045ecc65b787f4d",
"0x7be7c3b4de9f53e54e3f4f871cf62f4c7720d3a2e7baccb74924faeb3bedf89",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0xdbd81cdf5b54b534485c26ecf29628e9e8070fec90c34b780acd5bbd4e7f0c3",
"0x1735ed9f6fd2ea72803084da6d7e20c4735bf3de68156bdabb3888dd500476b5",
"0x302871833d038dc61a984da78e5037234c7b2f114e495451bd388879b8ee1532",
"0x5bf32698276e20768a54f9bed48935b674ac85bb3d9251e1075207c1edc0060",
"0xae9a1e0aeffd431594e5745e8f4d3e5800361e8028ea0b4ba98419fb0fb578",
"0x2b98b2ea75766211d9a125db8e6e7fb4a913812216365b1f6d2663deb1f0c19d",
"0x15c0f1926bd600c94b15ee1c00e0ff93c7de8b4a935023bb59c664fe01f30bf8",
"0x18f86036c6136aa605da0ad3d4251e64ff31cd436d72b90ee5d3157af6d79e40",
"0x28542871e40749022211b244fce0bd160867865206c873f6668ec51a429f9a39",
"0x2432259e7f4740024bfb2b71fc694fa8460971ff8869fa46f539faf994d23d42",
"0x2cdbbb1f729d6ba0040b0fe63e0ab2e24a1ed05f4c2947f2a4dc78d49bf68617",
"0x1f7d6c170f7a83d6241fbec95436b20478184b02ff7f4cef3deccc92da64b3a8",
"0x18e6f168622d4679b6579a5bbe6419d8c868d67294944f8246a81415b30e6119",
"0x9a3e52a4ddb98644cf4a701766c1ca5ae4a35ef1c11a017dd6aa11945fa53d4",
"0x136a031823304ab94c93e3bf39b189e240a81e0a42b6060e38c7c2064b8148fb",
"0xd82d0c90c41c41fb24d7160c8f1708c258222ef0539a2776a20c742dae0a624",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x2b0f98b255bc9fbaffc4b09dfe423873babfeb16c64a31d8f7ba70db133e8425",
"0x137ffcc374ae9e222e733fdf9d0c515946baf3c1aeacab2c6218180eec5d6a48",
"0xe6a056e92c767cd1fc970b338fa5c7377240432e6bd45aadd958d48f15d6033",
"0x264c9a5c6eda708da60f401ff1171c9ea279af17f1df202bb27cc56773a37853",
"0x1862618d4abfaf9e176dff2dfa86f1b94e291ee3e02dfea816637787edf4f37f",
"0x4d0d2b042b8d971610b3b9433f373d693a306f1082186a35a8ed6a758e0c11c",
"0x8854bcafc5f356516b2df46f5386a116f14de1b197290316d49869ee6dd0187",
"0x4b8696c509d9557bd8cc6227caa099f002c5101ff6d5b7a4e48284e31992562",
"0x125c58848e89261172f9ad256ef6cb755841d2913f2ee2ae9d68fd2eefa84d9b",
"0x181ffc981c54778532d7ddd39ede7dd3e54d655cfe6681b049df6d85f76439fe",
"0x198f1451b611973be77cc3ae7c744af71b1c94e3e87056b7af1e949e92cee5a",
"0x4c9f885fd1b69729a871eb611c4a9ef1e009b0605a0cc3befbb806701b63853",
"0xaafeadc15dddce6b214e3991babc93af04e3c6db03ae0e1408a503e1eec3433",
"0x225622d35902840ed662b3dc9480d941545df10f2f1a8199260a65018d7af93",
"0x209d4d14e8b9192e061a42f149c09d0c9831a1f02c35412f4563cfc03304ff9c",
"0x1192a624780a6633d00dcfc49ab6cacdbe3d4a62f6c7d8abff6094a678714f2a",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x23278ece68d054afc53c1489204000d720cba66a63842ba7269e35e0bbc6d14",
"0x9177ed9f3f33508db8be8f15b53360afeccc2f208bc7143bd226b4c885786ae",
"0x175a7d6713e16fdb34e680606af50037ac78419ba5cf0dece2aba5d849184975",
"0x1bd2f6eff3f24489dd492eaababe1b0c09b50e983658c1dafb2bcdb69a724195",
"0x16b53ba34c5215013c262d62007837ae1cbfae155bc7cb3da840bf945becccce",
"0x2c062183d49d2fd7140548607e86ab487b7a6f4da0109dc8b37955c866ba91c9",
"0x22451ab479c09eecc408145baafa7f51fa598b3ff2d057365903ea317ab9064",
"0x82f7e3f789ae657cef0f342c994968f47fed29262d4242964e0e793edd2af9",
"0x11139d29901eaeae25fe8a6b8b27062045be218be37844305ca3b7e348b0438c",
"0xcbb2e8c216cfa7779e8085a1a8b24ea1ca6446a664b48d576accae16c0e12b6",
"0x48f7ffdaec0a2144b28a00ffeb5b61300386fbeee792be38552bfc8363561b7",
"0xe0bba24d78116594570dd93a932c82b5b6730cda14170f58b73105e29fd59cd",
"0xa4dc036fd4d9bc2561d3d0c35a0222670c59e5a0626e36811b56646b345a0bc",
"0x1a1f2f87b5b4221b764e44a68abc8f56f6a97936fcfec06a3022ce00a3017373",
"0x1dd702226b6b31fede8c6b8067fd51da81ad5b970b023875c1ae5bd2d56cc29c",
"0x22c40118e01863b586d4bc9b2640c4f6c903410c17f5bffc7032420d494d5058",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x18b43cb399d143c97d4f8de9fe9c4aaffb6dd3785d9ce5dc9651b975b9054167",
"0x12c599db262111be3d9842cd39f3a6f34e51abe1c1bc0711e12f69c3cc973e7e",
"0x8bb47ee7a3961cbb9c94a68b2ccd3cf4ac95e8836f7538addff55f926bf496e",
"0x2f5694920b9644b4396caec1b4c4150eb46a18cca0ebd71c4be28cedb456b39f",
"0x307bc951cc2c9d4eff936eb6098bc1fb25254728e3906bf089bced7826fb137",
"0x17bcfa98efb68a8236a23a716d27b3cc4539c8e79ca9026a9b5423a6442e2eda",
"0x14787ef740948dfc067ea4f81bc1346453f77806e6bc39e3defdaf82eb952e96",
"0x257a201998e59bfb34cf5494e14c65dc3f2fad4fcc76aa9dbaefd0005446972d",
"0x12a8d99dd91ae7dc9bd892be2c72d980ab6459d3a6fb8efb96a54dd414906257",
"0x200bf208f11f7a4a4de085188220177b52da270fcaadd23e79e9e879dce364c1",
"0x1a9f530729b8ca369b1d5e6937ae365f01dde06c24722bf111ce4ca5c764cb06",
"0x651d7f9fbca106c4e8b3b5a1ce48b2db6bc1657f7aed28d952e28711132c0ea",
"0x2a3316648cb65a090f0faea9d38323345b7d4a91a9587a9e8d1cae632896dcc9",
"0x1553ad82056a8d74b3bb80bcced6a7779eeba7eae923ca8b492b9bdae81110ed",
"0x130aa152e81341ae6952e6732a315d1567f3ab12cdff38449e42c18ee55e388a",
"0x2162c9c868800aabd5be303b798357d4530f56e0d8c94c99e095740337911cc9",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x138ee349a5126b8c59ffcc05c3e58041d520f8cb80be3db2d0b72af7a24d090",
"0x2e59364c831ea593aad5fe14da76a1d7705b7af94f331ab85362c4b5943b8b68",
"0x24b0f5945c543f6ca8126782d2337ef8dc930a1b77c0e133c6fa94fa2a19a462",
"0x2d8f29c644853834a8f1a61a8965a9890fd8460a82ed2520a9fb332e6a22b983",
"0x1e408424ad586d58ca0a0481dc08b8ee63f96c838175dc8a652ada892c293dc0",
"0x1cae05e2d2ed01ae5077fea699a2119531fc30938a5ae2c55ce656b6eef33b8a",
"0x1f0c1735c782a57b3049ebfdb7de3238a608fb6fa9f89bdfe199c3df1c1db15f",
"0x1c9b672560571e96a5590c64c2c5b799e1e317634d8de5b731bd7a51a68d5d4f",
"0xc6e7bd2073ed42eaf2db5a728b6d4f1245a87e614b322c25fc51eb0ffaa6eaa",
"0x1fae1dfd513367218a20406dde57d573c62196c4e12f5347ef486102e809cef3",
"0xe408e6db3d016f993a53e864198deee0f2aeb8309bd66f33fcfa38f401c780d",
"0x2684ad738e6116f3db8dcccb6c61cbb27fcba040b598ded972d6422299e0c09f",
"0x2ccc5b6bf5cfb7ba1e8a89e76404ba0067c3d817bf3ebfbbe4635a789c7bf067",
"0x2e3dcba12acbf09be187f2b4d453be5dd4f3cce2994f18cd1226c63de056e868",
"0x23e70e3f73723a94ddfcbba70771ce2f5a4e15b4a8f51b2828c05cb07ad2a19",
"0x169c46ee7bf4e148cbe64b6cb8aa1abee9fb5fbb04997f18ed315345a8594c5e",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x7cdcc3b6498adde2756987e13560d7664f1e805180ae0fbbee1dcf1fa417d7b",
"0x2d9b8536ae52537df2579df0ff0a06d4a99757ad71652f91d3d724b4eb970acb",
"0xa1f0085c5a9cd49df855b92dd309c3681293e5af0417301e9e5e68d1b34128c",
"0xd1376badc16946a4a5f324390a4c6fb00baf670827048805a36b06357c39c1f",
"0x106d0427df7fc4dd7aa26de279073df7fa15370084bc27e16f5f12a8b01551f2",
"0x1cadca4ffc5bd9eb861f7ef6e7ba8aa20d7709c633c90111b98e094af29df8c",
"0xff923b3ab95cf5a3957cd89d03319b4bba3287807830e11073542019971eab2",
"0x1202a33c0359b51491e38826ccf21bb0c545e660b3da916ab91b0e02e30484aa",
"0x11608aa64cc3dc635c119d0691f46b0a479e142e0532f9256d3414369f5e3010",
"0x127d38a920bd78f2b5feba943466e85100ead21ffb0bd048683c7e7ba457443f",
"0x21f792c3d068276d10650a4ef8c8e6101d763990945f044ebfc6f51126332d07",
"0x1bdbd707d55dc4709b586695c5708e9973eba79a19d6504181cf8692f7f636be",
"0x123ed252de9f1a986305fb990661544d1f0bb2d12e3e5abf36130d680d61450c",
"0xead6abad94e79729b5e708c60dca274356c3e5142349c43382984d4df096650",
"0x21eb504af959f21f9c7a6b50a58bf5278209a2631dd62bfdf6175af8f22b3c0a",
"0x27a7eed4d44ade3583fbe7ddd6fe43796ab32266aa3f4ee382c20b99debc6e1d",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x1462238c5857d995aa2c7ccdbe788cb06271537ea1a299f28c307a825e8cdfd2",
"0x20c2ff1b99b7a949739ea108f5f462a0aeea077303cbd515bc7591ae02a0d43c",
"0x2aaa992acebf67c5ac50fce7824cbf41e6e5a9f87cf42926fb964505ba60c198",
"0x2797fd373735895c3192ae84ed39007478a4b3435d8a497549edda3d559833c0",
"0x135eb9d0101c2a78ca1b03ca53bc556a8c9af537d77bacafbff7f9bc66be9b98",
"0x2f594669789d1b805b611c27ca33a5a102ca3854938369a172c78de5a4083851",
"0xb8f930192502857b534625bb6ad2ff73e94ef4db9565a7de5c513f46fbc3e83",
"0xa520b7ed463311aa8ab8e7b8fedb2fe271214127264cb3a0f7a32d0fb871735",
"0x17198721be91de95ad64e64495b07d2dfae45ea67b2c824debefece304d25858",
"0x12b591844eeeeb06eed46691ba7e1bd4d6615d2aee6f1c040e6334596ee06d0d",
"0x2e1d81aaa4a22d294a4f57ca1199bdd171c6bdc0ceb9e9e4f7371b50bf3fc969",
"0xd18e43e3b9d5671e7f8080d1b451523e655cbf183ccccbd58793628aa689057",
"0xaca56cd420446d0f57751deb06906cca2c88c5bac6d35a2f721702b1bb56c53",
"0x18370450204ee070cab3e252535bd279023c9ade36b971986e9f4a821bb0ca0",
"0x10717c1af2308a9d4ae527c637257974d71bf361d742cccfd9cbeefb04120e56",
"0x229af48ad01840fada729de64d9ac6c4e2ced8d16820f464b60969310998be7a",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x1f6027d1806f3db36b0e2918305ea28007622b62282d0aa7d2d1c38bc3a14580",
"0xd023c3469f5337eb7ad3f6a1a9a3cc877415f1aebb7e9e5a955ce93ffb786da",
"0x2b7436beb1e205a4e723df370f2c669857eff6da7fc85771e7dc8256f511c547",
"0x2cf4f5bd0389a8d20b9cf97d0b2e75a429f36d01e1a1e6a9eaebc6002e6d7f27",
"0x2c689316dee7e23d23cb31070bf6225d9cc562fb57e3fbdcec3def3143d073db",
"0x1dbe68dff3088f0cb02990e0c030039e116d0196eed2410a30e91c08cbde3dcd",
"0x16a3fcc3080e28463fa4da66d305d58b74885dc099dd32b159209361fda491f6",
"0x2f84ea8936e6f0e98529bcd5d666e87d8c7e68aaa1787fa673b8920669b10a6f",
"0xf67f541e326dfc3555b54a5a8089013085f3cef05dcdae0666cbe4d1476c1ce",
"0x22c68a5cd419b439a367b742715697ce0d2e09a481dae8751d7c7726837211aa",
"0x2063328c09ac22652283d91a52d9851b919051815bb5ad070ee015040835b157",
"0xe78527a4658f58dac40430d4ddc9043ed3cc910a8a0e30b03ea904a781ba8b6",
"0x1935fe3bceae0bc5b8a13b073b2678048252e77d85f393f84a1bbf1911b41bfd",
"0xdc76ca0df681fe5c3b9ccebaf864ae495c8f92b48bb3d9d40274154da97286",
"0x119aa817917a73d46dec3e58fea0eb8ebf74041c1b069b1a83ad4856b1809ef7",
"0x2aa46d04f1238c646746e8df5bd0cf9dbecafd57d5de4f743fdb593379ff138",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x100148238e0ea61c5b6b81fba32193d55597904d4b1220500edcac81ad52f68c",
"0x8243c72e44e0114151fd9b102eaaa569fad5df40df83a1b52accee13fe49fab",
"0x156b1e5836f0f59be75c7f198a5d153ca30f0b79882036489937fa8c3b6d8323",
"0x2c0e264b43ed6c4b0c36fef6aaf1aaed9091f35a830550ac4364d602bc9e9e4a",
"0x534b4de30df58163e970ffa0ecef0738a9fec8c0ec4e7d9d15a666a16f45c07",
"0x4dfc3e86105970cac41059c73d5f2ce55b16f40cf638a85521ff270c6e11e29",
"0x183720d9443c6a59364afe5312050095e335b211598478c7b005249e89ced914",
"0x1dd461fcefb3549ba9a151df4013b323b1183ebdf913126b53003e86c08d99ef",
"0x2656efdbacd1d58ceac9a0e79d35044753ff9b7f6dedbbc6d8a48fa48028fb5d",
"0x2ef319b13362ac4e82896c082a6fd4a64b9cb25efe1e0f5068deb6fddf95d02d",
"0x13e976b891949cb18b46fe1130d4fa1b16342e954779fdaf98258da7192b9c91",
"0x8c80492d0cc609e181c3f9d8e2da90f68390facc7e468d29d49ad9257f55c28",
"0x1aa3c7c7a08d082afa7fb91c6f1c9f989b98f9619b56dc62c7ff1e18c6b72c86",
"0x1d115ed240331ec2adbd0a398df0d4dbbbf2f6392bdb03085e088d60d7f02ba9",
"0x1444e0fd467ba09ef9c1c6ce9a80b4e7be755d0e9f81a90f74f0ab7d110015da",
"0x3ce99d4bd9007aff4e13c2679d14a31d6467b32827e68f234314d3013266217",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x1129b914cee489016fc3ff8d20e2be4c9abc873041ba82bb7e7781e976961b24",
"0x21dbd50af59bdf352310dc018015a605fe2dfe0e8e65ce1feb72f2972b985640",
"0x25a5291beb01d9f13ed31c588755e56e5e6158b2f46341c86eddd86aecd52d7f",
"0x8de172c56eebbffb029ee873bff13163cb2d06caa46108bae1dbb2c40d22216",
"0x1dd2d55f238308639169dba6066e0922ad620678106ac7a1091b7f7ae0d3090",
"0x189191a64c9e4d960a7f281e378669034e779be7ac0cdc6e4fee4da0659b04ff",
"0x141fd736c823aff77ac2f28632342c25d14a649b026ef03f36961bf4eb85d4bb",
"0x113a24d1bc9d10e47f90f308781ddcc9b9249d95bbacd113d88d5a6ea33721b2",
"0x8f0b7b38b133684b73d01fc731f895bcb30ea14364715ea92920501722d81a2",
"0x1bf14ce82aaffec31f46bdce8d22f3baff0f96b8bfa00499581fad99e61f6076",
"0x14b7be33a41e00d0333a0917a729539fdb90ba42f12451c63de66fd411f6e379",
"0x2107e9e2811d6ac968dfadd3ae015e3f71f87d0c5d5c5ce4f9f7c66bc92a3931",
"0x9e1397c5f39d763040b82fc2be1a64262cd5a4d9f32491ada436ce437bcfbea",
"0x1d1a01986546a0812d3a4dae34ab33abe9cedf2060a4f654c7cb05d1298a03cf",
"0xda3f22ff498a9cfef80f63e2c92dbd95928e85463777018a0d3204d1e50f38",
"0x25b74b90af9818fe0fd8fbf33e539dc037a45ad9f433bac8dd3717b64600b622",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0xf3d58dc69226c994ada311ddd4f11174b51c490cf3fdd93047540be437cfc8c",
"0x1d948e7f1fa4705b5ae3e5f030a59ef966fa374f1d6bb87fb74d57b76f2b61fc",
"0x224176ed89ccb581b45f6afac435d9b2fdf08a0f2622a5a20c2ba4ca8738fbcf",
"0xf5cfe8147eeb9451b966cc087d2a9927396a83cd407d7f22afbea6ed6313ad5",
"0x1b73e95446d5beaad0bb2c324a27dd0fdc5445ea8a553289a88cd540a7a8a633",
"0x1b0f4b75472ab2e5ad4482742bcedf3b45d90177dd52680bc781786ea3e96be3",
"0x2e189fd270377427f98adf8a3f49917ebddffe7716ad08db78761da20e671fa",
"0x7c0a2036465c336f0fc397665c86a87ca0173ee19696b8fe7e6075283e5f0fe",
"0x2fb5497d60412c8bbc14b961d96bcd9d2cf82a25da250d7860453dc0c36d3760",
"0x25aa324c8bdacb11e81d612e258814beb13dd01a7de07d57b721a6c83101233a",
"0x29266b9fc1cca7e41d3c58443362cce77c81557f56e3b2a9a0e3165f38fb28dd",
"0x1557e3cbcfa7fa080014f6ceadf2ddc22cc1c6debade1eb605d0cc2755268dd8",
"0x28ad3d8ba97896df26b3281b73de59d9d3a055cf84e24bf4b7cfca4a6f18e1c",
"0x27692be22a3100758923b4b09be3c0e1ca34c62eb2875d4ca2e95199ef57e13f",
"0x26cb523869e976355b8b2ead6493c3b1af3b24b9f619648976a925dbfb9c2520",
"0x2a943b5d83171ed1ba5b2d0151f770d05cf117e28c8a2d0bd07901124b7a78ec",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x24917421c163008e468b59990ce9c9659723c7a143eeddf00b22bea911a23faf",
"0x20347f9b860c7318d8abb5924973a6032790ed146dd51c2b175890e67c7c14eb",
"0xc7b4b3d63f3985e07d15f46bff54c7f1382c7fcead2fc4d2732369ecf62312a",
"0x16c3c15bfb090d3c32b6783b8f35b56bf1ed17cafab462123eb872e18f40bc84",
"0xf4bf0d79b3a4f157a77cb759e8c3a950c2bf08d3b37e6e2252feda118dfeb6c",
"0x207bc2820e9268ac4529e9415d7094f6c4a3dd32c21fb6f34a6721806e60a66e",
"0x46d6e4942fc73df5a5c24e50a1390fcd3971f81416ec30338d988421d471e62",
"0x25d86cb7ab23b7d7829d52fb3d3c2dc42ecb745bc74e6e29c00faf2eceda60e6",
"0x291e27d656977488568245f7d60e5d31f7993b3530b6e7a5d2ecc5ed8bfcab9e",
"0xdde8d80231232c0283b7ad84aa356bbf7a3e7605dba21f29b53fd949cd378cd",
"0x16b9bca3f4757ee5bd884c08642d294730db13f90182970a962c956d5ded06bc",
"0x148e1434a77d59aafd26c76dfcd0d9dd58709b43c99173ceae6ddc899e39d810",
"0x23e38e3fa1713fb566e00717c0a22fe7e056067f7f455cf67c239fed5313c484",
"0xecb380bf60702c006a2e0b413bb060a7dafdcf4d8c736483da381315d128380",
"0x1504e0be27d971001c9c52f6ddabd8839fbf3cda3a42dc01c201788063ece2ad",
"0x204cd425d4fe74aa1fc3966950209bd6e9966aa7df1f515e5ff4eb504623704c",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x26b0354a46c4b6f840abef50577ae0160c403ac2ae154cc44dd1b3ef95cc9a32",
"0x76acba1cd92e4c02cec66b997f2136e03c86a5099967b8d2d6c3fa51ce470a6",
"0x1b9f835efd362eced66b1b4feb359a5a292e5179eca20536bc05fcf71ce8b0cf",
"0x1554b5740239a036650e957cf54880a05ffda13bd4a40b9946d1454b6e5ee619",
"0x2337f0f2350dcf2d2c4cb2f2e3c8cbfe8eac44b18a4e7df6ab9659c6d3bd51f8",
"0x2f70347a3e263a829f4c9524c0528c57aad8197d74f498c96618b82d6e38c750",
"0x2ae047c01e6b790967c9af15fe9700bf12a32cb4742c75ec4f2264355251b598",
"0x12bdad753525224488f0df2411e45b18e6d99df86b64ee5c2e1eaaa26b6b1165",
"0x7ed14a9dec030c79ab897464c9c31e89ac5d398e5fc2330ebd747dc62704e80",
"0x2586c2f08326503a7ccc396ada19284c6381f5402a1ddee59134036c6f9f4c85",
"0xe28de3e58815af816aa0e449cb6b0b68151fc3b74c8844b0433fb556e13bf35",
"0x15ed9ae17b48708404c20e204de218462f5c1de7a672c0400b1a4a97d82be2fc",
"0x2897a3c61ab7e1096d59db7d062d3509dbbe5288e8503eb723a783668f39363e",
"0x19382e0101202bcff4c8186a39e4ced12ada7adcbc0d3d535a37fd8e4e65d6a8",
"0x1dccf64cf1043efc8ff525df9a110883db70b13bb644c6567c0ed56006979547",
"0x14f753284093a5bc753e6e4516dc5f1856c363cde9ecc95745dde82f8f475dfe",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x47ce0768d3b94501b69470f61a3279af86cceda48efc0aeb4f755ce355a8c06",
"0xa838da94e6aa2b7e3c8d24fbbd1abf9fe09cda8242afff691d57aff64a307c7",
"0x2ccf7207714857e1b96f90a10f6662a0a161fef6f8554acffb454b475cad2249",
"0x2c964702e998844a760e735d74ec7fc17e793f656653128910e08a1c48b27399",
"0x26c73fcc286358f8a8c45940e32da21acecd2723a3e6c00003b875972e7e4215",
"0x2503bb71691693c6cd6c045d3f40b4cd2885a71adf5348642d80b44b4274164b",
"0x21abb0f3aa09de0569e24a9adf7863bd965ce656e4ee30611d0f063c1b6b1d49",
"0x1e6c18a3ca281852b9738876128c7d16d2fd27789043907cd624471d1356d10c",
"0xbb323797079be60788e8c257caa1e1e9b52b8f58128eb49dfd8d7595fa8275c",
"0x16ed4d5164745fdda2328ab28d0ef0350a3bb50589d72655d0e0d5a8f1dbab81",
"0x1719e6626ea03d94441eddcffb00dc8e76767224986c45f5f8bf746f72e33805",
"0x20dd2444d1b30a7e45a076776b4366f04e9c5d1b32a43b260d706f646a098db7",
"0x2276006ca87d973c1f5841a3b63aa9e6a4f8446a8a0ee03e068fda23a8a2e0b1",
"0x2d3e7d6feeaad7f3c8700e6293a0d896028d4149d57c219935463621fa77998e",
"0x26f15d4ba4736c73750ddbff4a7d9865f06d5676e449e9d249d3dc9ea62053c1",
"0x3636803242973ab91fef85aa46df13cba4ac9f6537aa3730c0da88b9d05c751",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x2ef01bca238ea43551e5857e412427af1daae81b8d9aa0c33bf392bb9e71f123",
"0x3030333648057d1d46a7a3973031a86637d6cdec3559bc12fa3bec6c0aab01cc",
"0x24dce91bc3df505f0593715987d3e6bab8f1847e5eea91341a9d1e83bfc39abe",
"0x27a2aa95ce7bd870fda385fc945d76269a9cb6d64b85f943430c796311d03868",
"0xf32e1ed6656688b400c42da52ffa8fac2d25ee877612e565f9271c1cdb216e",
"0xd69d7d99a58af860357adcbab763a96d048806bb1b3352c3ddcc0795e6bfc0f",
"0xfca01158c0aecddc404d7561a6d4ee7c6e7baf54eef93f1b4c72bd9468d8140",
"0x24f65dd1622f5993f172c7a803a71af6d9936a45fcf2f11c65a2291693c409c0",
"0x23b6c1c4a9697834526084cc56e8b53ab3ccb20e06ed7bd94e752cae13e04650",
"0x6b0b0674f9e70ca31b8658df5a918b6aa90ee4da8272d7ad50109ab73af2372",
"0x119ea3133debe120feb5b0ff2128b745ade6329c228d8c93ef9ecac933de75bb",
"0x28fe0921f3e250bd0d74df9669ece211330111bcda65ff19fe8bd02779da7686",
"0x121bc322c37b3a84cfa33407bca08421c76577f4ed5009151ee61de9538906f0",
"0xc6c6d133c64df4a3f148d03064ab681f6754192023f96e5c660181bf6708e7a",
"0x1f357b000c8ec106142c05d7fcb45bee3ca8602aceed83c3254d1596854d8e9c",
"0x2c635fbb8a475d22cc9388f33298ca3286d55e529d8167d036cc97e28b5c1109",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x1416e46669e99f6376ed9f1b60b4c1cbe2c13f36ac1a0961b28c0a4ded622be",
"0x83b993a01c06914fae37498067d1cc7575d4d6692e905a76c01012829848e35",
"0x7d66eff962ec6ddaeb23a84cb8fc53fb2435fb0779fdc6de042af8cbf653e",
"0x243493ca2e9aefca93b6f729cd48e89c5b6977dc8b9f128e80f2181a0c9321f9",
"0x25315cd8d5b5f0935df3ad290e18c8fbb1aa8a200af1b3b7acb784f2b1eb65f4",
"0x219e9f27376ebda36a9da6a406a6c2346e6db6c35e36390500ffbdd24c754013",
"0x2784f770d363c088139614dcafe4e82fec4aff60cbb9420b2defa1e5ceaf52ff",
"0x2ef0972f7624a2c71c7339890b350f716c7fc3cb884c48df73788cb38e8efe3d",
"0x2638005f1bfa951f04d3e6967a19ba68e797261d015fb0b4a200084da0520420",
"0x19952bfc2b15a1b7a44e59a4f007076a56aa61c9cb4fec45f42301ef9157a095",
"0x21bfebd7f0dbfa952f62f95d4475c079f623f56f67ec13f29e51fea4b142befd",
"0xabe0cbbdad752e9c30c665546f1b68cdd2d556f659c98c9d0c4048cbf0ba4d4",
"0x20c4f2c291c5f0b15e54fad44d549bdfa06e8405141d07446ecea299bded58d4",
"0xc703a5af22bea77a163ee98e379877fc276a2e60a134bfa6b3e0f3674aad830",
"0x23898a43fb970529f4c12bd16e98f891aed64fcb59738bd5c2ef1d7f5b9bd4a7",
"0x27de205e3b4f798811873af0dc39f91c449bae168ea2b2ca268f0fff421969d",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x34e0217aaa3133ffb88fd09bad59e44d8f0e74e1a64c86f3e9aa4587000464d",
"0xf0d2954a3425d4ef6291aeeca8d1e1927250f8e566688bf01f77206b6a0e0da",
"0x38ae6c953b05fde8ec1997151d62106c38561a6563b7c5c42c3ca3f254ebba8",
"0x129dae3e6abc9b3eef8419054977e8ebb35956b5da4731f87a1558b93d5b676a",
"0x43331ce5bf13e212c36bb6028ea5edc909d6807630483960ffd1e472333de8a",
"0x6edd2bca6596515c7bfa7f82c123947366efc923072442cd0d6cb3cb95b6590",
"0x218d39e5cb24a98ff778833ec9cc9c97154a2f0dcf576e36841e61f2a9d53c10",
"0x7babdb5f969df1056dcd1a4d25ecdaab931bdcd410f51443221f43ee9ad60d7",
"0x51f51c6edca7ad20f95cbd07ce9c5c51918dd6639ecb58e2db44f9da92ac45b",
"0x18d0cb9110ed2c13ca697c51731265461aa40cbff3eec69770c471bfab8547b5",
"0x151c0d100750fd3fc64ac7ca148c41bf2634c161746e664b6403e1d5ff99edb6",
"0x1badce073db9156bc6bc0b05a5f9ad32826ff80c20dbb90991c59b84f1887631",
"0x1d09611b11f20c357da69b64b7f235ea79741583cf177a43141caee3928bc88a",
"0x15903ccf8bd20aaf86dc7a0c1919a20b2beefa10ee9373ba62a75da5db50cd54",
"0xa3ed89f4229594227e8d35c0f775d81daef83cf50f6daf6c92584dbc86bbd7f",
"0x15c5a6fdd9b6ba06ec2cdeb9f465fb29a83a9345daed49e0c27064b2a745f832",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x29c47b21c3c1399dcde464739cd972c2ae7dd8511ef4dc4ab062de40904cd041",
"0x5d20c3e118f7e163803874435eb8c4f939fad669606a0f8823155b46636b40d",
"0x2a8adf7b64ebaf6bbae4363b8de139b047e49cc258d86927cdb17f64d7a76365",
"0xcfab49644bb24735309134d8f1160397b61c23766c13afa2f67350700ea184c",
"0x978c1e24a56e9f48e04a00ebacf84a971bf524a94ff82c9fa6cf2a4145ea323",
"0x1e7feb08ad0759f1632751fda2c80347296a181f33553bfd11c84e3b99e4dca1",
"0x1636f1c4c6be9b16647fd56e418b432d81dee2c09c00d14df526a491d03df083",
"0x1d0941c7678aa3814c49962f80f06a3b6ff48c4563cb563925c87b621392968f",
"0x1ba792f0e7770d294979a396e2c55b21baee98d0be48705b32f831f2d09f470d",
"0x1adfb90be5993e8a8e82466fd94d2142e05c507c38a0095535894369079e2858",
"0x1701417adcc7a63515f58d3fe4840f96d7b87646be925abf5831c7d9f6839e9a",
"0x16669c07129defa028d468884eec4825c1852e6ae60f5acc4a7a7754f9383ee",
"0xc030db661bf66032b9e0abfe88cc482f134b5f39b13e8aa20b540d23a5cb4d6",
"0x6c29b50030b9f9653c8cfe80928a76e6ba1fe5385109b7e606ef07634d53130",
"0x158eff715b637ea2e1c4312cfcfc154d3dcae6d2e240826e791dc661d4122a0e",
"0xb7414bf9dacff0d87b4613d9bb448ef0583f07948cb26d86963b0442a478865",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x2fc5816a8a9d54f1397ed6dcc705505ca28a50d608f2d6b0351d133ea65cf8aa",
"0x24d04d2b53f9f94b51e0300c6bf97e655ab6bb25f790365c64949876fc8e400a",
"0x12c2d385c706f78b68d132d1677f1c43fe555d3d9bd6622de8dce6a01aed702a",
"0x2cfc07b04b7ac6bd6ff67cc6d32ace4717cbc56974a70b9e3dda54b1741ce3e",
"0xdbec9e92d14512f3a95f1bd6eb87e7684fd099d747641e16956e281834fcbde",
"0x11110cac8dad45362476f50536e03d139076972f5e03db946753ed0034ed3050",
"0x17be085a196605f2b021add82a2fefe6c062bf2042537e054642c521dda6e462",
"0x2d30434c0cef5fb5dd60f6b52c01556819bedd08f87f0c191941f95b833853d0",
"0x297804121986231c72d5f3db2bb23cfc41d9091b7f085eebf0905f59854ad640",
"0x263cfbe2843370e8f2352bb41b51d59a8f9dd4a39552922021dae9bd777d64f3",
"0x1ada1b57547ba0b44cec18e94b273c02af369be58ba4ca5dddfc0c54c6d952cd",
"0x1a022e3c7f181a5af4ca6b68ea1e8636ad7a51eb2e49779fea2abda08058ce2a",
"0x1a51a742b5e2a8cb02194fe5442fe8160f887d71a8c624097cc751e6fc9e106c",
"0x33a3c4fb2a336862528fe456e4b28417f0cd5b8d702fa598648593cb27ff95b",
"0x275297e881159b1ff115beb9741fefff245fcebf2267fb7788bcfdb710ee11ec",
"0xc4330cf0545fe0d4d56dcebff69cc7564232b0ba94e58e879f9a838fa43b50d",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x7b613d8cbe7c7e104e3144d883270530e6b3190606a2df92791fee2f3f0db30",
"0x328bb8607f89952c7a0e199a914abfe679afd366f57160513708a57b0bc0665",
"0x2797d2a42bf2c3f860818f92783ee5b77ea5c8ef3ac3433a4ba8f8934fe40e7f",
"0x233e6f522a14ca24067c5c09affc7b53af6c87776525bb21d9058d01fc106af",
"0x390562c095c160aa786394027404bbd6a3882cc1118cc8ed82307c6e8d80084",
"0x17106e1ac0cfcf36e9d75f64a39807c812cc85b77e3c5ada491629f71d978f6e",
"0x1aa28e48122d0a44733a370e5031375a8c9c648cc46dcf3344621e6cd4ca5c76",
"0x18f6e768b9bcf25d37f90fae8b9a4c5cac181b9b05c6bceb922d50d8444bb79e",
"0xfa9340f079ddc476b10060bfb852af827ff712c5c9fea03f62d13d0c670d988",
"0x1db99f295b05ab42a946c2c3a5c73b225ba99ee53dc906eaf360675867efafeb",
"0x97578aeb43a7d6b1b10240c0a6b9b771d65b7c5a3a5555226e3ce45de3d3477",
"0x1974c34d88938d66ade5546a726dcba9bd76c31f1b4ee763af03f8d5698f4a87",
"0xe25a828aaee6f1168bbd9ca2c177973a8f20f4d8bf3aec06a0c24512df222ce",
"0x2e13ee7394e626ffebeaa09712936f8402400971986556871516f2a0eca9057e",
"0x20be54787d3e6d7e91de4a052172de99a251cb83be6fad47ec5a56b053717254",
"0x2019386dbf15958ed2efabc0f81184a6710e0f8239e8932e25827ccaabb750",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x1195db45235e0b286717bbb0e7fb7f4bd5f1346a8d6d47dde45513baa490207c",
"0x257be62b59d6f54c021c27f0c3c0a7ca3222dc5ecfb298bed986f1b6cb74f79",
"0x2fc61e8c69f1b6a89a698d4bd390f1ad961ef1c979c315fc069d1d3364630829",
"0x4ed6dd96dd4ba79b9474bfe10517c93ceb5a6dc5b95497a71a38c42c4171dbb",
"0x10c8d7d4846014d1d37d7aa27311dce9257ea1de1700a7175a03b358f12c0dd1",
"0x7f833418697f43d68c6792ed1b6a4274500d96c2894313f43d9185129ed01b8",
"0xaa1fb14156f9db59737b23efdaccc40d8f609b346809f66d96402e5f9a2c102",
"0x1a3b635b05a022877abf26c5378da756752882d30152a75e75095a4992926de2",
"0x5ff6852ef2c7807df8c68cc1fb842fe07ef08892e6706f4ccb3059f1d80714c",
"0x18e93ae4b4c092b271ce21881f133bb369d09e3726967ceb0484698a6cb02374",
"0x5f1d71fc99fd6e8dd1a4ff1c6fb4d16aad3445b2c5b2698a8ca995b3ec32fdd",
"0x260b2c665cf863248a5c9a03fc5ec713c1d32dd3bb17f3a6dba7af1690317514",
"0x199dc26831d1b81e333ea797e6aa2e76ea2e6cfdd888393682076ce77fbd4cf3",
"0x1fc7841c3762549185cf197f765c50f4da97358c40cb69cf74940eeb165417e8",
"0x3dd8db3c33075dc724dab7416f943e45adc39e147443ffcbf3fbed8068089fd",
"0x1415d87f2ece25dd6da8a9b56a5bdcef4f235a1b676ac4fe0ece8bea54f0d620",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x173e973d92b03e8f7cd54b5dcbd49e5c93046288c5bd8ac95f711e384807a40a",
"0x1e9e9e8f087fe7eae21b84385017d6306c73ee4dcc5b09efe1f91b9df6396353",
"0x2cd39e6fda7b0a75926254d1b4bd27ad6018ea559290d2041a6a1cd485026cee",
"0x2babe32c6ad1c466c0923e89242ff07997ad91281972ca9690ad77806c79f9a8",
"0x1671e3aefead10c1eab057577cef2d003653275ea183f956583dab5e6717aef6",
"0x638040b4e068d6330e2073b9042e25763872c4564b413d1d8df3dc5271cde9d",
"0x13a1be086b1c130fc9b0377bf5f4c7ab4166b34dc1442af15bd9ada0b316489f",
"0xe92a08c67a64c7e267acf28a048035d8d702bc0e49b7157132781f3f912c04",
"0x24fcf21bb660a9465b6a50ea1e0ff6c88d463e5c14cc82e7f333bd8cd9e9da57",
"0x19c3400c22778ad2608cc33d103d7558b909f2bffe1128945021cfa3996b90ce",
"0x1804ddf73341fab213bd15ac4fb0b38b210038ab3097df363df15449ca092955",
"0x2d030e104eb695f158216f2d17baf589c6b7eb3174702acffff3459faa369209",
"0x2ac28b5273536d5520dbc0f2d1ca6225372569f2c1f815eb0d98ea23bde3e0a9",
"0x132369e44fa5b49f309bdb51e3f76481bc7151112c28ee7c6058d4404d326aab",
"0x1030d8dd6355ef0e8b3bd213083f0540158a13dc059335b0a68471c1d8f995cf",
"0x10754be6667d0c88da8d27c8d885c68c2ec53e66879efc8664a313846c8db7f4",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x245fdf24ed7cac6d987a5f1098a3dc2094e8445ea8a34d409caa0de9ee8833ad",
"0x2ddcd4b1ef28429efb5371343d7c1aa34394b214ba4d3786a72ff4a260f80341",
"0x9796da1c54e94658988e1e47f2ab2a18fb54bd12c0f69761a11428d2bf8060b",
"0x2b820079829572e4737fd84b55e00d69b9842681762d614c4cc9f4c83dc7c88a",
"0x2a2c8f2dd7ed7049029ac58e2483bbc92ca9deb979598179962834099a206d0b",
"0x2e5131ed99601233301a58544eb5b390adc2aed2f7bb8975f4e3089ba598e03d",
"0x6f800a70d479c89318ce14ace0c1f7ded913cb3186aa67acc7290b35f941c80",
"0x848edf27122e8c897ece8ff31c76e8e3da4ec246480e769809bebcdb4680146",
"0x3032a7d711f11783b0cfa12d0a9bbaff62fb9d75cbe50aa6e684f9285d55840a",
"0x156bb4b89a15827370ed5326bc516f90e80da2b33bfa976b4c9a26f4c0bcb5d4",
"0x104b800aad84f2de01925253de1300447944ff027999bf3a113dfe28236e707e",
"0xee24634e1374e506d3186a10f60315beb8a311ca69d595c0afa0e4dfad5ec22",
"0x886f6c8618d45654de796ffb0a718eb65e5236deff84adc493e6a49308509bf",
"0x303f792b77de056334bf4b95c535b224edccc1d65b28e52d569695fe0a86f7e7",
"0x2ce5f9bdc64ab48b32e5ed411be107b280119255d976673c14ca2e70c76fa68a",
"0x26f0252f0b0b6f638aa04dab03f6a8fe7875a84fe5c6763aa9443faabd36d6af",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x895eaa7421d5c92db73111875ff0e97d1f1cf13454c8d0ee65ae0c86cb9f0c6",
"0x5a37e53d3c5dbbf9cd972b637bfb018efcfa1fd5cbe8b5dbf9f37608783392a",
"0x2151abfa55e801a5dd55f82b711f05b3e61fd9c94dc77201a9e62c89091da8c0",
"0x1df7040bdf6398bfbc5dc0bcfd52e2cb6acc1e32ea9eec40e1c14a173615a901",
"0x82d9c0993ae4a12a039c11aad12743c5f5d286c648a89b4342169aa4100b9aa",
"0x295f9f8fa059d54d4b582213965eabc5ed6f785e4aa71196f6238be2c511bd11",
"0x11489075194474f063993741279cea5cea810bce027e64ad900225ced81b35e",
"0xc308adc9b0dea53e1c37e06d0576f4ed39c2aea66bf429ac00575a9105112b0",
"0x1c8ae9521d6579b43520c3cbcd712b3dfbbd2b1543d1564f7d918c6e330e08a6",
"0xc69ad644957599bb3eda1d9f831ca67b021b33f6407ff2e56870e7ab3d5a569",
"0x17de4f74815fb3a0f45728b381e2ddf7c1157e5d65989ebde47f8bcb88f36836",
"0x1fc13b76344108f12af68f0bc80c99577f09a266368f0e274794a3cf65b48d17",
"0x2fad04c4a1bf440fe56076df74e5c30a58a6e26fa9da0865bd0374b6ae37f4a2",
"0x20766bcc7f359bfe765ce87998097a7501d7924730fe7325aacceaa054e2ea5b",
"0x14eb221ab65d0dbc5edf6a2065188ea9057f935d028f7ed14729ebdd66ed5fd7",
"0x1cade81c4d562aff84daadd630392b735b948175c064ace958e0c789c9d93bf",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x19b64914374910bacc33326c70be0a8518e71f26b4e1aae5d33fd5dcebbb1f44",
"0xec087bc39e5058e0c5c1432b20c612537441be0107ed759d3a9468ada975dda",
"0x25f6ade6e9833696c4dbc19c765ca2ced09f47f0745dfc850efd26e3a8bfc5f6",
"0x842f674f65a495938dba020f22a476840e0591f179780d72c00153ddef5a9ae",
"0x24b3232f05be57ef3c4c22af9cc37a73f0ae40289fb0fa880630f7e3d00997aa",
"0x2f4b230d825a682520ac0b5326d130a24bb89363318961ef5f65391b8e7f6bc3",
"0xf1644020d8a6c0dde5068f18ab196d348172aadcfd6391c31ff1b54f513509d",
"0x73fd850ca9561f8a645c9e4af943d372a4b8620b78bbbc357a97d14f531797",
"0x284f86b9cce13fbb6fd660d8e52cf27f7bf2723a494278f3cb0c3bad0574d104",
"0x16bee52d1d6d362b9430ccf4d2f1afeafe3572ae4eaa03be6af6f1bcc05de855",
"0x254cec1178e80740cca318d1b5db37b5dd23fa2c44abb7f1535200618b9ba0c5",
"0x113069cf767ed4afc61e592e98a63edaef98278c2ce59db109c94ef6dea9cf",
"0x2829e1532b4fcdb2df9104cc23b3331a1d51c7d0da9b645a4a43dbeaea77d229",
"0x24a03c0f7b51b6e24a889690a3341f55deacaddafc1ff871af6fd6a76dce8bee",
"0x24a7c2c124131ab37ed62a0182114a5dce4ab7e62b14ff632703b23a78f391a0",
"0x19529e943e466da82e6bae8f1750de8620e060306d9df5a9d20a83a4b68fc09c",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x274c0f68f679da53bdcdf9c11393c34ef8fe59cdeeecf859d4ad53069a88789c",
"0x1c900ca5882b107a3b8a8938140b127cd3ffbf539c9145f385cea5e7dc6978f5",
"0x55a3264b130bb4316f4503af137f0d964b753ba575456a74581b68c6789df33",
"0x290033424503055ab2e6b8093a758db0f02dcfc4adaf26a30f467b0e8aa1af13",
"0x1b415d6ec7893774bf9a598a8496f83a5422861a044211e0d525493f75c7bca1",
"0x2d5e6a92650786e6ab35f3a62c5689a0288849d1eec7ebf89b9a6df75cdafd39",
"0x15b1c6c75717d38e94265523f0f6491e22d8b79a791b10b21139f008651e3037",
"0x1f929349fb5222c4a6f17fde7f0aaca6430b6785cc5f65c3e1b7842c338dc1e3",
"0x23034bb8b8618de8c8890fc8fee6422147545d11d45e41ed6326b767ff099cba",
"0x2ab706c6d21e887b5906d4db350e41b176323ed39f88a75b80f1eb2680169f69",
"0x4c1031dda5e43ef325b33a80e6cd32cb22b16ad324fbd90ccf79c1f7e9ee062",
"0x1d663d31705eefca25d29b8894223a7daf06bfecf4e8e0bb845682fce0b1a41e",
"0x18c97bc6dc2ee1c3d66bdad7046019b6d4aba6592823a51ae2a8052824c6e332",
"0xdde410729932dcaff0490adec752faade582e2eff9d05896da43fac32e1ad3a",
"0xb12de1270d788dabec1456611485a6841cdfe411a09f80c0e132828568d8eab",
"0x5194088cb1b0f39c5b1527bd0a3ac4d16c845c2388cd22dee75544eceab640c",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x2a2904f92bdc035f347c6fb6df54ac6b482a2642dd8e798f9df0915fcc86872b",
"0x8bc0f22b597fa12cd8189c5fd0f79b2b10d6c65946b287890dc5f594761d665",
"0x2bb55a554f9bcc5ea8dbd4d5453e188122c66c507fdd08d0589706c1335619d4",
"0x2471e91078add335f5c48457785ef1b469484ed697e2e9f80d0fc73852492508",
"0x2ccf72b7324cbdd4a1b980d883532ef2887c798ef446408e885f8cbd14ac42ac",
"0x1c3b75aada78c1b204a35386f68e09a8ed700bd88685d0e38cedadfbd88a583d",
"0x11164ea9623704eafef86bbcfecad592597038fc1b097380effca4502577c733",
"0x4b961c368270196ac2ada2e66e44a4440905eff5b58341302ceaddfa215f691",
"0x39dcd1dd3ff8d7fe019dda64104e9bbfa1c60fabd54065c85e727302d8335db",
"0x90f27feffe276b6c1d77f6a80d2c25680fb854af9ad1be11268064e735060b8",
"0x202922769a226e1dea3c39d791bf28ec93639c7937eb7be2c10912ee896fd3e2",
"0x163bb1b115962019e41bd1c7cf0d8783d4baa163dcbf6e25d368c543f9560a5",
"0x255dd24ea1b49972007c3b74fd98c3ccc682fde58858a2073be4b90b39e57cf8",
"0x2be5aecc70e89fd7fd3e2683bea0ce600cf42759ec5941f0746f126b11beccdc",
"0x1584587c91f57bbdc41e85ea3ac8ea67ed261cd8d5014b424a1dc01bac478b91",
"0x2131be5b4387d226c22bcd102973756cd7ff955452e9eae429107ab244294b14",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x254b0e91bf714a1b45748d756729102fdab89301fc89d029d5537f9226e042f7",
"0x303c21aa2f173c290af9ea8e0a10f7858ffab7519185843d2049a22946026b11",
"0x41e6ecfc8a13cdf52f9c21662906f395ae172f944c7575073c0eee9962941f9",
"0x19eb35e2795098faffef9ef5baca33da9ecf94d5973c0ecd25e6899630af7a76",
"0x1142d22ec011a94a940fe203deb1997b64f780bf35d06276644f98e48e2c9ff8",
"0xfddc36dde84e16a5c2f631470943ce31e4be6305bca6e5c753c6186f1059f62",
"0x5b14ba6526be3dcc17bf7d609a42aac1adfe0f449a3d9374e0c22e26b2c2362",
"0x16152ab0a00c391d450290ae825cf5ca2769fbbf2e7eb69f8764025f68e9ff5b",
"0x28cc90877e4cce38fd08c1af95cc3f885a5c5328fa0ee0bc89ca190694d8e484",
"0x2df5ab9a480bba00072c401baae420c1800155b9f7d1ab9b31e976ad800929d1",
"0x12640a01d9b60560290065a3fd812afc07a6e795408f988071aeedf22ab75e66",
"0x1b2792d807f55ebab5f4274d43ccdb9d23c155b8b9f6df8694ecc6f67e20028b",
"0x16c2ea687479d257e26a655b5c6c27bc1f455eeeac28c3b3ce654bc76cac38f3",
"0x26da8fd5fc478751e06453b0ecb6cdaabf231a58e603ac4ad14717d70db2f27d",
"0x14f3a3e34739d7c727b010a5022d9f0f3e035e91db3aa947e3ebe3366eed27c3",
"0x366141d1115aafb084cfa866c52ef40a5fa57fdc8e06fc2f1e46b967c9c6615",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x15658afd9b2c13d4bc0c637cef9717e943c50f83b67c8676d67d17050494e5cc",
"0x1f318dc3e277bd895a88dbd9e3c4febd43cdb9064683ffbf1be9e6f9b2a71669",
"0x141cdd5f2c18d63eec6e82248935eaeac4ef044ee76cb7ef0e9259ab6f93daaa",
"0xe4b254bc67d3857f499682863a0f95b76e9d5cc9fb7c2c59729db203050299f",
"0x2cc2b90a7bf9f3663b0f41ede34f60d63a99860760ed6027fe17d4fa9eb1b396",
"0x2e0819713df7c7a942c08b3ea50add92e39214104120803a5806aad10234abc1",
"0x24164a433840a28d2615c719c716f2f7c01f7c3854a327da6c5db75097fef1ee",
"0x272543f2284921391729ae58db1d9db0807629d9211778b0756ea7e4f88297b1",
"0x194af27987f50ed8730d267dcfd98a9a284a3582cfb7356e3dc46bbca1eeed6a",
"0x2044ba55f5e44c7069590bd2abfcb2b7b163d47e0e1bf2e2524c0948da4b1a37",
"0x19d37fca1b67b7ac626349cbf2928b9457863637baa2613b494d9da18cc384f0",
"0x1230ea231084e3641817b74662caf5732556c3d94a01d209fea1f6777ae6cca1",
"0x2f924a42d4d9446cb488295883fdadce8debda5ac727901eabf2d8627dc6d698",
"0x2da745785ae0d3eff1a3281d7537383abfdfba2031a880acd8dabb3388a4ce95",
"0x72fa635414d1673fab8d057107792b3039c033d924cc0b1530497c2c810428",
"0x19db329f086a50781b0c6eb2552ba454db2fcbbc125a5ec41ed2c0e840bd6774",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x1ea4f3fe9b4abfce9e655b05c4f64a0849003f9b349bdbf349ea2a249bdc945d",
"0x23c87854133b5d392742dce58aa01cf376e3983dd939634c4fee6326db21db4c",
"0xbc4774e1e80349b9a704c01709de843f3b20a75be630d1b6c6555adf3bda042",
"0x143ffd0adddc79c51edcfac6ffc1aa3d99ebf2d55349df53a54842c945a82f55",
"0x2b813146b9e70f53e3cb2549a91e68963928c40e02c08729e0fd3f5941b3d602",
"0x13de9ef153bd22f5063cb42abc061c09eec510e4b694a4e9b9bf6de56cc2f206",
"0x30015dd143c80d113c290bf94ee9d7b10cbfb93959e846751c3b3ef9f8d07490",
"0x2515eeb903d6537674e4fb3cee0b3a4c5051ef3cfc1a3d1dd2a25f4ddf96e05a",
"0x20ec5ec6cb5f91d860925a6341af5cb15fcf4b2694083235ebc7ea78ccf6421f",
"0x77160d3b99920220fa591a49f79c56a282b6e368cd1419ef09632e869599f14",
"0x2dc01f61427888cb2d5ae9d8a0499cafc03945dbf111727b1a2cbae73bb41b0d",
"0x1df3b805da3b583cc8f736372e7b16d3d0407e634b6cb7ebef2b168932194147",
"0x224a6cb7f4e964e616ca5b0f23c77859232674745d32072096bb9f12131f0075",
"0x7f74f0de535231775307017a09328c7491bf0fb7ce86ad5fb589594154983fd",
"0x2816d118f59d3cead1cedf5cc76a1a87829b2d8c1fa10adbb2fd4eebc0373b26",
"0x1698c0df24945164067e5d0d9b0321a757818a0cbfae969e28c76dc470974440",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x2d878d0119485477be8dbf01a3aefa927a230065cefa169e34cdcd8e97efee48",
"0x2af377e1ffcb6909a07fb9d03937ce4a8fead2190cabda6baebd5943445dc0e4",
"0x110ffaae8772ac77a0fe26f368484344ff681843ef616c6d73e0dd95d5f1f3e8",
"0x92cde477438d1a1335b795d5a5ae15d0949877c734a0eca249865ae30a4ce2d",
"0x2cb1dcc78144adfca1e53dc251c2e4084970c941855ee6a772d30dfbb1a6448b",
"0x1e80f366933f00562d3facb54015e72fc4cf46897bd71f3f3015bb3f8895231d",
"0x20c5d9b2e153f4787a765096aa7c1f47f990e810004ee7737c211150c40b79ed",
"0x12e81ecb7ef55b86893278ce37c429400af30b34c10b0acd786fbd7b25c3469d",
"0x1cbbeabe0289ed5942f50531a647530f105e72d1f912eb11539d1fc5588ce1f7",
"0x213c4970760a5882661e0e818f43450b8cf9e02dbd0046f27ea4d66403ed0ee7",
"0x286f73e14f72495fbb280d713b0161ff695a21091150ee6c9ae96eddf36e212b",
"0xd64a21cebd1f59801551216c693b181aa963bce18a7f4439f179e7105836296",
"0x14bb39c836c00f33ea9903dba3d3d434ec33deaec35076eafc1a4c5a01a417c3",
"0x2ca5b88e6bb11f61e5dcc2a4ef664b49a3801009f1eb74208313b7b04d59edd8",
"0x2c44af041ac89242a8bd751d96ce0f86eddf8c312e6b3127c53e6017c0d22e77",
"0x1466d21f848850fbea559a4c76b1a00787f997c1a4a5bd40643036ab684553d7",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x220cecbc247151bc202a81a4573f923bc92a2208b17e1c0bf2dfba0de4fd26da",
"0xb71d939b546f609ccb189dcbeed82a34d8f2faa2c597a3b3678369a471d817a",
"0x2cfba88722ad37fda1b7ec9489a96e09e88bbf6649c8b7014bdde34ef18a64e0",
"0xd0debc0f0d5dcdf74f2192da068f87631213a52aaf59eada0bd59bb99ba9510",
"0x1d202504d57a61c4cd6bf007e478d9588d8e6585ebc602227379aaf25bbf6ad7",
"0x251253367a3e28a691d3b6fff1209f6cf0e03736928725dea0f9f0824ae70dc2",
"0x260c55e9c06f653d9202d03f1c184fb70df2f937ad157719685863e4338fb4be",
"0x200b2246239844344cce8854c24c9a9b14e438de6a3ea445151882f23168fd20",
"0x2e3e47be40c7216d9db75470bd8193c3558ba3c61c552bc56dab2713af62506c",
"0x2784c2b142bf3e8639e090358a1a3c81e25f23edcab18001514c617cd0918a5c",
"0x125de24f4fbc6e879b4039af38a1d041e6c38a270b3b9502e10c09f149445d66",
"0x29740adacf9d3689e443639c25e367b23d07d690c9ea8da6e12fa6443502f903",
"0x2bb9d36c36a107db72deb4262776967926f923df9c96cf07708d5659cc04ac81",
"0xb3d9827d898e83333c83c65818f7fc1761fcf632d1b5f03ee95085b518dfb67",
"0x10a6e860715f76969d739bd3c393f1af2c6d27f3f8c21e101dc8cf7a515eef7e",
"0x2d8b0a8bf894b7d607d9a49dc6f8725431f69ef0541debd9a41ccec4b7c1853e",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x2f127fbd7f50d13e1ed144760d37a375a507ac1f0475fd1fa1cab401ecafc7fb",
"0x1577d27a4a8983d54a364994db2232806dc6a3f1ae005960adbcb4352a88b9e2",
"0x52914cca13bf1c8dd7b8ae8329393ccb24dcbb32c4625ea2ba6cf935be4f231",
"0x3ae3cb86c125ba7e22c68fc612f2928a961ba4967a5afc661ed2c32de93fd30",
"0x297797def82244ac873c64c1e3b0586725adff324eeb9b15a9b476823e6179e1",
"0x124a7a8c6e44e7135b58fc2b76062171b5054af0def6044d99637adfdb5b403",
"0x1122cd468ae5a811791bbfd990f5ef430eb1e1f1c6f7469e5746db7ec0426892",
"0x2409be076f6bbfe87a660f865fe5aeb4abf064c12bdada933eed7824ba271cdf",
"0x300cab922f89292915e01a78def7ae323501694f122737b9ec6739f123278b3b",
"0xd743547bd321fbd1b27ebfc7d52797b2f97323d25f1a374afec19a1630ab63b",
"0x9563550bdacc55218984e8413a1226c22b38c12d69ac16bf6e3f952a787a504",
"0x1985c8553ee8e78bd1c65b3f375fe99cb0c14d60e69fc6d205cc54bd173f5204",
"0x1bd7b38a27edbf115143764d25bdac7e921e83b29964101b494f8075a7800763",
"0x2766850751254f44f4e93db5621839bf0eced728a6d2b8cff05b0fcda945e",
"0x135b92c76b52af013119fdf43e9ff79cb40208b2c78cccd727781ff1f456039e",
"0x19da226a03cebea345c9a56cf3b4c7e6980d613471b97894a7d5fed6f3e1c743",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x92f4acca2e0ede5ba901916da9e1f67bf4458f8495eea238d17332da63aa71a",
"0x1641d2d820f16a7e3f48def116b6cd078de47aeb782d8295c5f505d89a9e4ba",
"0x85201a2d77102c3d0c63353013c47c2adea146120e8d6b3e2319d8e63ba0cca",
"0xa53d758d0108ebf22dace7bbbb70afa26f400485dee9e4e7f4f7ab7d9299677",
"0x262d9423cd20852bc68c46fe5eae59a81d1d814a66a638c8c00127fe2dd98761",
"0x2ade8678e1c4e5a88001f70873e9c28bb8b86bc77c1712731057b410468c8f30",
"0xee8ff3fc24bcd3063e995a4cbcd34f46142c9f3abff0f8e46a86795b5b46552",
"0x2b825f9cd4585ef46a5da502209c12464c824adfb18032718bb37e4738cb3292",
"0x1ac8101da6ddec552238fcff3932ff2eb40ba38ed0c39eb5903e3adccff791d",
"0x1ab95f20ef0daa5ceb85f821413b046e9fb8a70b61e77f8f5469711f508f178f",
"0x580d8b79189de04500aa5749909874f8b5968c9204d6511e05ba1a3953362c",
"0x275875a979f31b1c8db47f6dba4c553c8732aa37c4c74d7fe9f979274dc27c95",
"0x13d84732bb3b9bc97162533644a7515d91f08d970584510db56caba62dfa0d66",
"0x4d47f94ed591c3969fee09e23f392dcd0831126d621ff5a07784bbb5178e876",
"0x268be50015a5f4676f202ecef15e094130bab5822d63d777374c8a0b9f4f3832",
"0xc44a75d5020d4aed139ad7294f27763391f2be6bd3343691ea6e122c4356fcb",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x212e7e2ecfce78922708fcaf276bbbded3c0e2d8804d66a13fa020749c48ecc0",
"0x158fa860b8267b4011780eeb782c4d2b878ae2615e317b798961be28a7ca2462",
"0x1def7622e54639fd40813cf1bf8162198af19e07d88a0d42d436368745e3cca6",
"0x145ad4994d42ca69669e4c78ef8db06461047f4976dbc5ad4a6cf2c3ff78bf57",
"0x197d0463b10a21649f25670cdd2504ba58621ab912b643293b32a515f50afdfc",
"0x23398d180006069a68c7742caf4c669b87742b603d5ec75c13d2a835103a0fd4",
"0x1e0258bd63687d7b17c4fa3789f9fd82108a3d38ed4458e50a071c4b622866c8",
"0x423f6744b5b95af35bb9caa720088b05e7fe89176569010e96792e0fd06a28c",
"0xc50436db6d99e5a8933aef29ac83fa2817395c577d0ba3e0152fd383542088a",
"0x10a22724b783a4ed75e92202a6121ad76eec88c3f6b6d2b0cd5a2f829d7caa37",
"0xf49f1ad9de4f057eb3acadbe2279d617384c0f594503c616c8a1f7c05fcc886",
"0x2141c09b30eaac9f355f49e98905435476bfa52fa5339ea30fc48beabece0f4b",
"0x15c1c2b59c45dfc274c111fbcc2b79bd7440d738d0b433518ad3c8ce8d064ed",
"0x1db3bd1d64fe08c2dae2ddaddc2c339ca0402bec8b41b74d74998aabfdfb7bfc",
"0x29a5a2015c3c31790000852191471c62442721881310f01e2fb0b92157a6adaf",
"0xc8dc01d3f82d41bd600fd0759bfe0aa674a0b7d089b0ed0ea9127fd0847832",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x2a824ce1fd2a8c476123e3a989bf2d6709db1ae25b6003b35f4e9a63b414a58",
"0x12ebc9623cf8edf6e519f0b679939b74b2e4b4097992d2ed382afa7dc08b484f",
"0x16be2e58e7c791d1a9edeb27d648d697ac592d085c504517cac06dcccc9b80b9",
"0x11f10e1bbfb29ef8257b3f13add23550576bae71f723613ffadbda16f76e67de",
"0x1ad4858514fea633d11ef8b8460a55cbbff262b90a7704fc2ae9f4de51d43328",
"0x215f4b249b5c5e65fabe4b485656a746d564d4451568c1949d28e35624cd5d60",
"0x1fbad1d2ea18f2f77723b3dcf4acde26751b05615c0af9d607481ae4155b0b31",
"0x21662871d695f76be370b37b3214a511fa6a186c5c856af4f830950ca601a9e0",
"0x23ef880efe39676ca81b90ff6258371415feffe1514a33fb3b944360cebab527",
"0x2821c241fcaebd3a0039501eb930cf9a84760a177be827540ba0f3c7aec6e354",
"0x146be2228a62f0b2678d113c1e9bc68ec984fbc98358441882c3223c5d08ddac",
"0xb88bf45643cca07b10d4c2d229d9f4f8186e5da1b4a7921bdb81082d525ff22",
"0x8fc9cbeac386e14a1121a09f0ba01977c6a4b444528bf675ffa538229fd0b1e",
"0x1b50431a74a6fbb3653b07cb93b41b31f4b8e8f0069132630d85d6247c754a05",
"0x1e406be857f7f834e34e4366a64203a4587e3d15e3fb68fce7cd1648bf281d9b",
"0x148eba772251ed3515118d4b1cd35d1dad67cb449e93053aeedf6c90725deec4",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x2e04360710f57315981909dd928e62c44c44034647842dfa31526f83f4e02671",
"0x2aafcfc0a678286f879baff9f360018f642f5dc0fcdd24efede6f42ab41f3876",
"0xc056d71fbe0367362ee12d47779dbac6784d03b9effcfdeb97b91c57f65e433",
"0x115524aab9917d448fef5342d3773f10c7bc33b0fe015fc39851bb6afb542fd7",
"0x117e6ade5e05bc5efbd21dd42adbec70159c427bdabafa5df3bafe8d48240958",
"0x381334a0ddf5db66871f8bd943e4a54dfd1f9b7d13c52944fa0ff2562250fc8",
"0x43e8c4009abbada6a3350bee3e92556368245a5aac0c1b52f2338e1ce1121c4",
"0x2e88167d899544487a1cff38e196dc25b3b8ebd01a2289b382c965e11128cb7c",
"0x1c308d8fbd04e1e349b4e0ce629b3fbac322460faa3a3731112d44c3a4db27ae",
"0x34ef7e4e0ac0d3d85f4adb5bef214c96512accc1c0f3a11470b493d4a6e7946",
"0x2b6f7ec4e66fade014011c277952b270953966e9fc9def4bcd21052f62315a76",
"0x2a8510585ae4c162b269375af5bf36d48824b1cd4d323125f061dc90f06fe318",
"0x19008b99b3e1da588b1094f3110f9032354d1aaf9c93ca9f1dd0010f974c3fde",
"0x2560926db4543ac9b3ec4ad64b12021d232944ba8ddc47bdc494f5ba051f65e3",
"0x29ccea21d8edecf6359058c36019960b8e0cd6e0878f835879477fa3ba09965",
"0x22200c2de87d7552604e1ecc47c639ec983525fe8484a3d24655d5dec1a4ba33",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x2ad7a0d2da92e10ea6eb68264ba502da9a0a5b35bab9699cbc29fd8fe2e30ab1",
"0x20590023505117aecc066d41c1adbd5ad4cbf0e9b8dfeaf9f9e8799f07534408",
"0x222c46e262ca50113017fcf937c68bc5a2ce66216ece4254ac3d07fdacbff44d",
"0x18e7420a44ea5b1e13f4779818b97a2081be214baeb62671e0dae86c4023ae13",
"0x22ea7ca068c59b65cc056374a848ac65417a6f02d8caa04407d1394ea1ba8256",
"0xd3a07b74e65318c9e1879c337057cc712c0f533ba49c1c626d1b7ab155936db",
"0x61d5292ac1d8dc58ab73a0a48f6f631262c6601fb7c0b48c1a16452b546db6d",
"0x5833012960b055133c9ba572828b91414cd7ba31d68ef46f5f76078c3ca1841",
"0x2f2764c49d1bc1427e519f7690e301a620a62a89bd44dd766d6ca181d02eb406",
"0xb8a8d7bade0db2c62bb09b73bf7444c087ff5e82ef4df25cd0f9ecaa12bfff9",
"0x1bd2b4b1504d8c446a5125fa97754b345cce5966a6e0ece3586933510071283c",
"0x87c0b8b7b9ed1a7f917066f04927482b71b00120114f6eb57c272cb26ab0ab0",
"0x20fd707a8cc61d2a031709dab4ae58bf5032a09b570e7497c3415596d3d5fd24",
"0x1a33b2e800ae297e35eeaf4e3bd055dc56e533f4441bb24bfd130b924d71cf72",
"0x18415cd52a959280d64154df2c538469ce854f7561e19b7d05235c9fa478ce0c",
"0x2e6a310ed3f24d835969e401ff1df8540801ab6fafa90e70e50a8230f334ae66",
"0x190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56",
"0x2fc4ba3b1f7871a2df1a801b29d1eb494e3a4d072b6638da905d5fceefd93c51",
"0x1162c765b187e20f079a417abec80c369b6e1efebdd9a6bad7577c1722b597b",
"0x9a3571080ab89c41d2c53279c9ab9ced52efb9cd1526d24dd58b31771a75606",
"0x2fdf9f81c2ad998f2229e64e084f9149ea3f0948cd928136086120b68ae69651",
"0x178e83d7f2f9ed92d3d783287f25fe8d0d28bef0cbf2315ca03da314aaeb94bf",
"0x278d681f603da186319befa5d2c5567a9fb52eed6061787cefa92b27c28a64ee",
"0x108fd8bc50dcc43af4d73686abf8fd70b42245c1af2edcf11090784a24aa5fb9",
"0x4ff765c30d4e035bcfbc196c646541fa1d27c05d5d087e01c03ef11224b78f3",
"0x607cd8ff9b889773c9eb68b8a4366469d470cd7c6004106caae95c10c424419",
"0x1da524cff60b64856dc1f5dde0ff62da7b182da26908f6ba6e590adebf91b40c",
"0x22f33eaee3c481e65801b761a72832908f066fe21dab5fa5ec1d4c6e99dd6dfc",
"0x75f84e9c719bb8de8e61083290daff19aaa4337454e5ba804257787470f2f54",
"0x2084be9a57e9adb80303a8dcaffd4bb77adb6815168b36a1d363b38425437135",
"0xb303449f1bf4b92d2cbc26ab34b4215b6dd7af010747a705b2a6e3398882922",
"0xc099bc68243537203f97254f08dfb7efc09de8f96d72f3b3e0aaded45e18b4a",
"0x1c5fd9060d4e0d999264429a5004c165570bd1675b09f977708b1ca48e616388"
],
[
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x199593eecc85367004177e717d8adae09206aac28506281403748f85ebe9985f",
"0x8dd94e1b09d8b9823fde4d4fc4a3794d631616a2c192a47fe257bfbdbccb7d",
"0xa0cd01bd7b3c21552ee7c0ba8783ad231802aa4f847d00de820e9176e227744",
"0x287eaab3e59c1cdfce30b6151543b6ef49a3be7206f3cea62db4e80fe1ca1529",
"0x2a8230f7ed05f7e334f91cf214c7bf12852996083c456a506eb316c249cfb4c8",
"0xa38f089600747a6b6e35342c2e321042ebf690726aa9431031351cbaedfb5aa",
"0x1d5301168a7dac6891b7a9f6dbcd505fbf7522f875a61254149449869d316e05",
"0x13abafc765fb2e45f793640bd7f1ea2f88d202f0d7b4200410cd96128d3ef472",
"0xda7e244a420237fbd8730ebea03fff45156a52ac87b9ff605ff1ba20f7e83fe",
"0x271d315532755b1d48814699af18654bb310bb94d1258dde0e589bcc2a5e28bb",
"0x12fb6f92ff04b5d5de41c9508842798a8b9454a99f0cc49a92afead482e84bba",
"0x24cbf9280b713f95571b177799a76e23f555db290a1187aa5ab7db69a2dda2b6",
"0x18f43c99a1b72e7cbd6fd781a46c13c38202b4b0ba7ee75cd36fcb79b5ea67e",
"0x1c69528b3df94c6f7e8a794ea0308fc165f1bc1c1e3ef090c7aaf4405f7cf3bc",
"0x1cb0d8aa6512a7543bd8e8bae1c0f0d2db1b3457e1bcc0ffd372d4eee3c6fafa",
"0x2e1fce1597591bb776ef16340aeddaffdaf039487cb42bfa6752a3ea0cfe18f7",
"0xe486a7b7cdf0fdb88306d96e72161d4549b281152c6cfc98d84b031e95ca166",
"0x1141e26a80698b742d900fd1e734839d51e4d50e0176303a675809ac47201782",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0xe3f8ddade546278648095cc835e94063972b1d55c6414506592ab57e54c8042",
"0x21933a3bc4989347b0703d7cdeddeaf6588a166e6a3f984e318de63ce674e8fa",
"0x2ca6f945f5f755039c8e1bc30935de1ad33312a7cf325b065f91083cfb001a78",
"0x129a9ad876815d96566600a97d41f958d7df9ef97291de611d28d7d9b2af46fc",
"0x26b8f200c0d0371558755081221dc59767afc5a4ddbe6f7d403c5ccb4035289b",
"0xc7c739377b0ad2ff9d3b0a8fa53e39c7016f049ea860e8113b055ec96ee3d64",
"0xd17a36749f8f9d493a0a57bd87618c969cbcf83edb4b207c89aa5ccb3feb20d",
"0xbcfe1266d757503881d56c7e64cfbbc3cb6a47ef4e655565864e01b9bd3f872",
"0x13f89db06ca471b07ac0ad1f4448cb225868b63131700d1ddddda16e6d5fcc7",
"0x24d344ea0550d7720827b6be6c09b027c8e4ad104d57d57771c258177a302b8f",
"0x208ce89913e633aea3a855a854e7daec40afa1939dc1f728dde6b349e39ba30",
"0x1fc4565041d810a750e306a14d21695074e31eda2baf0821774add15c0e2fc3d",
"0x2fa22f80d4309be21ab298ba4bc16a5b20f2ce8f3ed7bc3453135655da269649",
"0x26f3a23903d1e7d835db70f3005b3d5a67043fca7eb62aa8d78942a0c1cc8add",
"0x1ce0343fae8a12e25f2391eb038b2377e7c0c21aa60100818539d6092eeeafb0",
"0x244a2bb870f1e6f4ba5e20f1c225723f305841bd0ab932b7334990cb0572c33e",
"0x1ec61e9126f4c8fd6f0d00b28c5f02334c077e99ecb358d2536b2d321cc00aad",
"0x18b2ab087e3f0a7fa8a6bc1687900a5481ea991ffddf017ff52a7f371c22db87",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x140b91ca0e53110e898a67ba8853d04821952e760e56de985180975ad237ea52",
"0x3385f50412cc6d4caaeab9aaf1099e8c3c61295754345534a1476144a9c2678",
"0xcc396f0b80e2638615bb4a250f84e54dfe33ce76386edf22da2dbb233546ac1",
"0x2810d8ef50de86e04cd8a07f6585a06eabc4ac5efdc4410904d7a906ecd172dc",
"0x1f8b8501e9db678cc274b33246e39eb95635ac4ad2ff759a9201ac0c3f16c12b",
"0x9b10e50dc0703b65199c6cff8510a9ef2172545f366ec2aaedbb2f5ad4e391d",
"0x158a6e9ae44d1ebc7fb99b5b38e5139257c68f0ddea96593ff7a87dfe79cbbe2",
"0x68dba3eb9f1b909707e666c1e7c745192f6ec2d8439c186faf6d3bb978b42a8",
"0x100be98775675cb0864cb56fa3f82b66b216071d10cdf87358c7e46be055c723",
"0x1684c4b116063b5e05cbf4eb9b3a6ba6d68ce1f30ae3978e1bbea7a71bd20cfa",
"0x678cf4e455f8359f498a22b87a3dbfc50ce233cbbd99995cc259e419899e53d",
"0x305d111beaf3f510a104ed93aa254f20a4c539eeca95756ae03bdbdf0c8eebc1",
"0x197b0550e8e09c375f4b1976395ae6051649d6c7a8c39b78676e45d33a8630d2",
"0x190712928fc6ac88f24cd9179348b4a2832748dcf708e01c50efcd32e2b83de6",
"0xa77bfa4113e98b47e8d705a9f60160ba144ba344c274744f135f207b24929ef",
"0x2962a7083e7830d287de0a3436cc093e0fd7c2d9631b4937ac124d58fe3fb901",
"0x91a715976bd99e40777c119f68ebec701e3777cc9b9e52602588a5ff89583eb",
"0x61e3488cc92892520449518af4f4133b52412a19fb8b98d3d0812dea2636e3c",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x197ce59bc87f624e9629b7383452b9858362754ba76cabd0e3d3161eb8ca76d6",
"0x276e2e6272ab2858142f0ddaa038f436e9f4c53eb4d5dfd8812cf10ca5bab1ac",
"0x9c49831a9e1c453d072ce83e5088666b56dfd1ad0977b2abcb2aa9ec83e2ca6",
"0x2a4aadbf31a1c58a26626ef9de341f2268bca243eb859a465911da18af0173e7",
"0x21b0460dfc8645851be88e96ed5f67cc2ea5ee00f4f3025ec4b5253494105a47",
"0x120a8288745f9dc360cb1d580b012b52543030b53b9b97ac9324df79fc46df06",
"0x9f0d911f5eb1bbef4c9ee96c2fec0b0c00945de4706b4cbf64f62a02015d7c5",
"0xdd0124d8c9d7b7c202379a001263e0522ce49d1081f63816134ad16bb34277d",
"0x2bd803e20cb341debccbad79b053df6e53f567874a52ddeb9422758e73cf6ec8",
"0x19b2b4b0e24bee790fba0867847f947f975dddfbe3c11b4c566ed4673684c0cf",
"0x1acda97c75929ac11c21cb081f177a6e550331b2670e6a66c2793e4ca4bcc3e1",
"0x251c70a93b81276ea3438709b96351fd8004dbee0abc0df79329caa4d932bd62",
"0x28918984ffdfc01138df3fba5221a8604c954b7ee40de7070fb0e34e7038ea3",
"0x2ea1cff24f208aed6f4da7cf837817ebfb6f545528d85a32430aba357eef776f",
"0x15b61ada681df7de801547bc9937b1c2e75a4f9728cfb5586f765b058735ccbf",
"0x16a4ad2b453006d9fcef31919daf7ded6dedff3c5b3ba4fed692e2350899167",
"0xe8cdd7c3d33927077543bda5b1777f6369d06876b8636cb95a9060c7936be90",
"0x26152760e5dfe9f0a2fe901bed5e0dff3049827e43a1091e24aee4d457490a63",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x1ce56e15f41c99a2a005acc7f78b735e8330dba4db4cc96c524b4638010937ac",
"0x2b33ef11fc26750d1497df0fa1b969f1c01c5556522150ff976912649af06a99",
"0x47e2b54830ccb7ac893e39afe89b1d7eac35c7ec0f28b343e0249b924f15d37",
"0x2e820332c7266af2a59ddcb5206d404827e9563ca2c5dde5d2d34be269c82612",
"0x28fc123f79ace39838b7af8f86be8cbf89a3540015bed059fb7a55868edee623",
"0x121ae712c922e7ef55ebb73809f3036db42852c52fa63bff322237bd883dd555",
"0x3002f25a7ef8e035c0e82597953a107fc73a5a406770dd47ca93a34cdf8040a7",
"0x23ea2cf159ca1b8a17ca61b73bc84b33ca7204c4120cec087424470dd062076e",
"0x179e72146176bd15051df789ddc3d0f48437c973232846e4223daf05529248fe",
"0x25edc52b2cd7bb6690692d75c3f1b999f2ae0749c5d2741d2b53284b5655d46d",
"0x1cdbea76c865750ceb85ec17f20c955f2edd46df09f0ad90d04cf416b10fcaae",
"0x2edd29ae05591244e1124edc195033a404aa98a863678d3769ddb5797a2a748d",
"0x2d9d2a342475cc1662da5b26453efb92f1549efbac72a1226373414a49a13590",
"0x4783348904bbd884be3c608fa349287d2e4d4284baaac9b6ffed192a641406e",
"0x1588ed490b8448cfb883d790bb0f97a2f1962d14289c946b8ee49a4ddcf7a3eb",
"0xbf107dfc33fc7e66153c7e5d6beedd252d17b8ca1bf1f6499a9dafea570fb07",
"0x201d0f15aef01a1e0b401f946f7b29e6f01147b6257d7ee235c6d319c4474326",
"0x1015804003503668b1dbf9bbc98eea304dcdeea4eb7dafc67b41a6446af10385",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0xbee3e128dae75005ceb095d9e6e0e55285ff7edd96dc89654f5b83570593503",
"0x1853cf3ebd47b13b2f218990eb3ea26379c1d213e70feea5b84882d76241ceae",
"0x2c25e50d363cc08774bee7d9e6232855f6d8977ab169e38fc6fc76de9a63e6f",
"0x21ccc1e8f8b5ad39b401f79c51ed881ec892d2a7eebb8ffbd848ef158afcaf68",
"0x2193aa94ecd57e962604ab428aa0a8971644707c6e85663ef9b3720a685d71b0",
"0x1d3b5cd3133a0533eb15cd908cbbb5dce76ecf5b711f2535e852aa472ee4c9d1",
"0x11f29d358de76ef38d31d6d7247b64d41c42ebddc7ef5e4445c7897f57ad08b3",
"0xfcc2984d1d2b762d6fa16a3a407f4d3eec484a9129763864265add7c900836d",
"0x2f79d03e732317585ff9abb62a371800553f1eb717a71437e225b204c18f9e9b",
"0x2f4f14eee6382dd0c54d10739b354abf104cf134babadf2dff9b8cf286f9733",
"0xd0c5aa4bc4f774d03ef5b2f9619f618edd9afb37defcc420b0aa4f4fd145e85",
"0x9b150f8dc9342c87a8b7e871345e5998c084662c897899df45d73157c4fd0f0",
"0x28148860436280cd8a5fd6645fd1eb86abdb72dbcb02e8ef47065a4a681e9eb9",
"0x2cf619fe3735ed9bccedfbdf3de64031cd203231a0e178417bbcdeaf69c85d15",
"0x32f164c4f4e5122d438a9e0309459141505621343ab1c19abb63ce7c036ad03",
"0x2a3efdef552208ce3441637e2cd610386f41f402bec452d674bd2fe16c273581",
"0x1a9e7a13e4d57cd1ab3e38f0991fcaa4cac542f66fc2a46f9cf7d20029cac792",
"0x20871908a0ec043e1e43ee1f520584f15b3a7f24a2d03aa1de50e27ca599d872",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x4767ef42341d3930d7e5219fabbff62f44e103b3a0905cffaea5a2dee73c19",
"0xc4a1786e515cd9bcab2b7c9723c597e730c532555003cae4e36131a721f6ff9",
"0x147f468c58deafdcf47e57114df0ead2c77452a45020e73955cb150e10153520",
"0x1d1309f96110c70d9ef884374676b9cc3a599fde74388ef68d99e54b5802c760",
"0x134281c387edde8b6f807d253bc0ace7a625fb3c1f65b88e4537febff52e1d62",
"0x2fec2d972ac4b8ba14bbc95cee2ac6cb8c669abc35e77ae2f7dc962dccdad59b",
"0x1782c9e451cbde261da8b4ad3a15e23ef7f4daf7b406732de05570c73040c663",
"0x261bf6a9f68e313088d8b2016d3e7763a6f6eecd9b506fd2baa8d8f3593b4c4b",
"0x133315cca34af406eae080edf7ce27574fb984710e4e8ec39aeb6491b97f98b7",
"0x216763174ddb0395182ebe57e4feb91be8f13746e89949557e023df397cb679b",
"0x9dbb42bf26459d3f9ba2ed5f491b4f01fff6222c6bddb7776450edb6c652ce5",
"0xea832a969ad1d94f55cb34f35c7327f62f24fa140817b238bc676edf1f77b6c",
"0xda7dc395978e8ee00ea5ba5103a39930e284533b1a51fbcd3d7daa542142dda",
"0x183cf55053b7981ac506fe1c56fee73fe3a39ae042171e21541b2b7312618722",
"0x16eabfa4236b9b61ba1b336ce55febf1cc84343f0449a54873cccfce0ff9389e",
"0x2b62c1083fbc23f58fd694646499bcb90368a2e63794b1d39dbaa36bf782e363",
"0x11ecdbc47a72138aafe44263356d01e931541ad49ac28c048428ecd233fe3c6d",
"0xeb0e1c7cae7c3f491cff7216ddce50aeb98935e405316c6daff1c21046af99f",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x2323c898ca30f7e8fce9b31d21283d3545705a71d0ce9577c5012fde6caaa11f",
"0x2373f9b1c4df6c500768ddb13eedecf0a82bda6029c0abf90f3f15f2e7a9f87a",
"0x2b4a1e59a52b1b825f6f8dca5ef66b929032dab32a9d3a58ebb44887f84c18ca",
"0x3034ae984f1538e2163148617760f62569231a619a0e2b620d206211b232ef29",
"0xf1fb16f83c8ddd6959d01a9576a8d70c226a1a422ffae89ee0baeeb37e9a8be",
"0x58d583dcf975f97dbf31e32ebfb0841298f765476b2e4833260ad9bb82f2f2d",
"0x2b1060a96e8a6de59e2deac81b17d40ecaaa4087276b7d5a9ac2b47598c2facb",
"0x70579f1869154a6efcb59f85b43b90affe755efd5d4e62686aff46646e0808f",
"0x21444d26f9de3b9fd22efea95d62f5193c3eb0b2e1a6b393e85996439aa43992",
"0x138671f92f9ed9a8131ff4c7da6806dbc33f6c02cfd3d946aa92288df2ff9d9a",
"0x1e629d7b8f61fa02a5fb2fb163a5a57a593b158df70413fe868b338307a449d6",
"0x10f0f884186e996c19ce4939bf317b3d12cd24bb87bba0d3bb763ab716ed41b",
"0xe2f06ba65a2c7c8500850ba6a489879252d0db2af69dd23fa3ed106c92739c1",
"0x19823b0af9feb33ea07566495f0de05e7ebfa52aa89f5a5d7c66f96ad60c828e",
"0x16b0527fc6aac4b4485dded0afd8905e6b53e056efd33df7b8fc2d3d4b54cd",
"0x8a584f510af49572ee86cf723346066002e5e7621e502e946f8f35003b793fc",
"0x8a63466c0bbbdfe79375f181ed0266c97e6057653d0b285696a5ef3e93c27c7",
"0x28ae69c874a3ab1ee6360bb1ff560fbab69591e837a4bc4d80ffb4d253e232c5",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x26751aa290792a4fb3921d9ff8b5967efdf68b1fd85981b4d96401bc621b381",
"0x1cb215d90f4015cc5934293e248b2d6aca4e0afd46cca219a89eb4f676199481",
"0xb8f12cbe7152d6f3e5fbbe978884a5b7be6f35fda4c00f5c5975158df2f338e",
"0x17d6d8fe5ede1ba531918c33df5c6c9efefbc20304b2fbee19c01aef81299774",
"0xb53ad598a4e14448fd044b8ce15b6336af6b91cfb81c0da827e7dd68e98e59d",
"0x15e20ee8fc573330fa52fd42ec7b636e28cede5437be371b1990898751adeb74",
"0x154fa8d9c7f09c1ffc7fdfcb58fe7b91e6d81b03adfb8f9e2fe0522f6f7c2541",
"0xc17e59b4750d7443f8030f26ebd82d25623e2b8e5540cba1f310828e5e66988",
"0x7dfbe56e6ae749917b93471525255853fba26222d45e0504d8f74784b1a86f3",
"0xae4cd50975a86aff25632e8c9b7c0e915bc38159c90dfd9459e29ea9432e467",
"0x1fd9cc61b67d700ec892a8c09af677c9e28097463010126823cb72d07583754c",
"0x1bb36856ba8992334e795626486a4608c5d9a076cd93c8aa0e1a934ae4e8f3b4",
"0x2f9cce5050f66f493cc95213db4336536a3a0e2a17311cecc27cfd9d88e339d8",
"0x14839ed69feeab49ef110556d96b4f1793f8c95f3a38de800e9ca0df690f958f",
"0x7b5c5afb6a826ccf1b740cfc8aa6f0279ab50c3de8a98f6692bff8cedbe5f0e",
"0x142f7788b72c5fd5a9065ebef59f6e8d32eed74588cfc22ad0962aeb24a7bd0e",
"0x1d07d62eeb6dabe9df4fa00ad642bfa7d36687d6ca9c8f023a40b5d04bc78ae8",
"0x13e55cabc0bfbb9ed41bf205be0674e8668a8908c411ae821d2539d8cc587fca",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x262b44719763ef2a486e59231d9624bcf1ecb95f576bde1e7088dd5a7e4a5f89",
"0x2dfde9e5ea549d50c4497d25b4a4cecd096226253b3c7c3874057fa62b8743e2",
"0x21a567f428d745b4cfdda7100163871a5383e5d8ebbda66f7a305a4c6be0abdd",
"0x1dda63eedb6364b5da1fd1acc28b6a57b9a4033ee7749a8c2ac152a1e94d4b4f",
"0x685e2a27b7ec3fdbcbe3e017953374976ff85371aea9109c2d76f0ae1ceecd7",
"0xbadd4c6541613422a3c2b71626af0df7f380d6f3f6da676b7e6dda463f63ffc",
"0xe270311e05a64fe34fab3018b68616f08a2bf4c06a47ca457defa4c199fb96c",
"0x20782abf7216f6c5e781a8f0350099551c5e9a1a3d4b3ed2d985e5a7f566b24d",
"0x2b1a699f26b1fc4beb031df4f37b8d5cbabf780572fdc64a56de00748a65c07",
"0x791e4fd31ebc85df2e06aae29edd808f129493f8583732492fbd7056e93dee5",
"0x2cda35be891732bed62392cddd00557b6f4b195e000c1bd4fcfb605f8e369d64",
"0x6b17710849d27210afb3ecca7e7c7ad3bfa36075ddf1b46d7bf0a557c7afba4",
"0x2a1ad86529da724870dbf3bd6fc20cccc1998102cf0d7007a6b2263999e4fcd2",
"0x2ca7a691f176d709c8799b5094d28a68db601ffb5d133cdfcbfae9e565f1ed84",
"0x92ee47cd58d3038bf80c70d798516c0dc371ee7fc7715da95ccdd5a1e820347",
"0x2f0a3f3ab9033e8640e9c1b7112b31242b7eb493837b84bbdc9cf56ce5858752",
"0x2bafa447b4f5b878e812ea7b2467c72890c119992bd1f6e3ca60f926e812d2c6",
"0x6f980dec5d6b3665f1cf9fea725ecdad874c5c9cb63e7987fb41e7430a3e352",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x2d69490ba2ee43e841922e9a426a5bbc264f17ed379f8bc91ae3d275e724c21a",
"0x55c6b789c7c9586e4c88fbf4eb60783cdf8e9e58d356bba1ef92f8ec3514aac",
"0x160f356a6a05a6919dc7d2e03878c6eb552a14995edcab05f623273c0cd29a1c",
"0x2a178e1d8e4e4609710499245dc91e66f3795b5c0227a2ba8cc8a9f8830aa212",
"0x2dff2498b5124e3bc2587f3b1cfef4dbc1168c2172dc43f1d801cb75c7e18ff7",
"0x3062dff835ea1ef8f6960d05f57368fb48357ece82fd7ef12cb5254a55e3d102",
"0x7f83dab6ad44900a3be2e049bac44fc5eafddc0e261ed5d1795fd513f12722",
"0x1a037c2eb85f1dd82bc9988c67646efed697444ea2739b6800d214e8fc52c8d5",
"0x17cc92ab3464a089e4f7747fcbee5043b59bf9d7cb744346cc2d889051463061",
"0x36ec634c1127401f9a2206720e26e7198702b85deb2314a37c1f06217cfad7",
"0x13e7e74a49ed94c2a714a46b12c19e3ed6793364b22763ae2c28b53318669510",
"0x304fecd133011329f98954047995691c6991eaeba7141494506fc3876cf8268b",
"0x4e860ca205e4d78f0d93d3b743e2d82d77737faaf2704e5540e163aefe75b51",
"0x128cd6494ecba913473703b110fbd66d627440384a6187aca8088de1d51aaa60",
"0x2c7111b9259f4fca63e218ad354e9107e80a436a3e82d62f180c0ff1c7055743",
"0xb3901ec96ea864778a698866a852170eac53ec5c05c024373cb38585977fcca",
"0x9aa27e7fd140dff6a20f7696c85702c3f60ae58e60233012be3996d839f8d6e",
"0x1e3d51555af4c3321630aa1d1134ff631ce25a12b77d3c2f3068a4a981f79491",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x19b9a37490c9b0507423635e95f10a0f27a2dd48b840393432eb41c3fb9aa265",
"0x7783facafa95b276e52a4e6957b6145806c64f5c0305fac11c14095e6770e7b",
"0x1dd174936ad30ba73ea372209ca23d51868b21e533cbd15ffd438c51c9515c89",
"0x1fa6bdba3839fafe0ef67bb8f50f2bfcca95ff34ccdd072bcf4451e1b3a8f098",
"0x2a3116f7f050869bd4b0181245fb41613f482cf81d09b95898f9f813caf7c97f",
"0x2c16907e9d82fe0a3799dd07efc106bf60d114def959261470623220d9d9224c",
"0x3c373a0664f0389702f966c124355796a3819e6fcbf29583b4a33891961bff7",
"0x2e67195c545bf86e5737e4d28dbf075c11cd21965127da4aeac13b49fbadc2de",
"0xe0d816cd83dfd0535a9706aa8d7225342cd76b82d2c3df0425857d92aec38f6",
"0x1d623c057cceaf69f4438d54e954e59f7f04065ab72132da788b28fe08ae403",
"0xd7f30107ef57c75975e5a489dd2e39053d12cf5ff9f74bad3e647d6b4278659",
"0x32f7466d62e6c9dd8c02064ac112042b9082c7ea2e8caa266d04a68f9d9b15b",
"0x2a4bc62d27e720a9e53c02e6519ecdc684ed42222c063c698a9fa024c1bd0669",
"0x2f11dad1623f57beb48f1f781bdd9cf57752dab6fa75b6442db3834cebf6d5ae",
"0x7448b576267dd9d742ff7a7fc8324ddf3f340df575917d1583256b8a26c001e",
"0x10c06e0e81bba5139387282c3883c5967d1ebad7ed164f970dd697de036db5c4",
"0x30c7e1595a11101143f8997b7b9f63d265bb69efb4afffe36eb47ac4e170960",
"0x2081add9a69f880110449f883df1816b141c11bc52fee4c355821501e3fcf05d",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x288949d7c29bca2b52de67a970192cd195390c7ed0788f81d85db64c98c78aab",
"0x2589eefe89ee66a650a27700d7ad9ee3ced14f507536405c21a90857b6a3c8e8",
"0x28ff008aa0b3a7732cd4059620a76a9d1cf8286a5ef84ee4df54b435656f14da",
"0x2155df46713041cde67a10d82c7c13921f0e394bc66eb78f9047782cd17ea643",
"0x2c16fb8505a4a94a7b5c775792cabfa62e014b33a5479a81c2fc8a52e8044d36",
"0x2b1e314362badfaf84b4d272a4b6509698305104e27fd317fbbd0178137cc708",
"0x2c27c6d894ba49e73659ae668667796a1547338cdcf3c35914b3d3e004f935c1",
"0x24c4d70a62d779e831a38a510142c88b2071251f2737dbda104dc3cd5585041d",
"0x172cd6c4cfcaa0085db59ffa6051971fefa9934458a50b5e3b98bef6053f7fa9",
"0x1068776f66d6f04edcdfc6e6cb9473ee2f57d670941e4a191f6f69e7bca61a",
"0xb5fbd532099ded25d17a8ba4db930a0c9655056fa6a01c56e825843d763790a",
"0x20d62b8df28b9d5677bd4f3ac8095772befee8b2b761f9a4a7d9b9aa719209ac",
"0xab9f332e0d0c4ddb998fcd6da668a8f744260e3ea8947b6f6189ca82c5db01",
"0x2953639aa84c6c0feedbc71e3af4e4a15bc408f5cf3ba2bcb98ba5bc01c9875a",
"0x1afc3b62187190e90184c6f1f1878020f0efcfa38235f5980ec372c2d9b4a56d",
"0x2c67d12ebccd059b365736302f01da9088f2a40ae49d88e58c7ecab80621db4",
"0x23a3292e40578b5fe32b0c7ca158b298fc7d6397ca3d46a50157a528a6ada69a",
"0x2d5a92ce3878d73e89d645f35ea2b179fadea64310ff752a48a94aab957cda66",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0xfb3cf3d82f7442edce7ae58c2fcbde983a9991bfa8c583cc9e8675176f5f500",
"0x1441b92ceeaf3e93bb74d84875b7b32f66218d23cc25b747d522344c853e69ce",
"0xc66500308b0fbfef99d8dda3ee219ee7faeeb6ac7c993572c13a93b172c09a4",
"0x104281140d7c64b5bd415c250830aec689e5868c58a2396c8f4af87c06c0a617",
"0x297d4462db9786475248b39bcdc40ba0ec662e5e772f6d07c3178964c86bb6b0",
"0x882cd69f5f1b0c14f1a5f1473f44952e042d81134a25c45a01e4d997761b6be",
"0xa663c1280a5f4d285524e6163aef8f83a42ac4a8fd6d3c44bf01c5f76393e75",
"0x64ff7dc46adfef44b40646c79afa99d0c14ca6bdbf7da5aa322f346f169bf41",
"0x901c9594190b84ee79b7282a6a5bf82cda6d28d1c513fcc679b42c5da8570fe",
"0x21257b75cdd1fac9c5a38abc15274df2aa318adfad33a5263ea3cdb1a1990577",
"0x255cf0a823fa7cbf9cde67161df7378969730138f3bab39b5be3575dd62e8b51",
"0x1d4b1fbaba2e064f59db8d8a6e72ab84d49a8d82f6a2f9fd532caac3530bbdb7",
"0x3e5ecf7a394eb453de6cfd3fe8da36f826abe096b15add7bc22ada6d2ec83ad",
"0x1f068ef1dd48f8934037a95c94b3740ab3d399a0e36cdf8c91adb39ed90c5151",
"0x13b5b483529badcd3ea50b491b6a042ffe9c38f2761e8367eac4e11a85210971",
"0x28955844381caa81ec9032541abdf3f00b77b9a80b9f6e363cf4369e0b1b6642",
"0x2a3fe34d0e5e72044a5af113255b129d78fdd2fccc280f3d6b81c985d16cd288",
"0x8757825685a90d9476b5bcf376eec9556c41811a9c017fcd7d6ac44fbbb8a0f",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x5454d37baa3a2f999a53fb59504aabfee05108628378a3a9feb587663d274a4",
"0x129a7b8af836412572e06774394c69bdae4033b15dcc2a4efc10d5b4d850fb05",
"0xcbbe121aa60c9979b941f94e86121f984e67334708eb05850777184734a08bc",
"0x1925ac7783c308bb5aa53769d434c44de6faeda6015848693c50fdfc7f465d86",
"0x1e24206b35f67393f1d61933aede02c01ecbd9cd12929e48300e37e1def7b1f5",
"0x4276737b519ede14db1b652fc56169408d4cc1abf043d8a9ce90a16447a06fd",
"0x27b946d91e4453a4854c29cd248e0cda329d67a2ea66450d51b57f8b159df5fd",
"0x2cdec054ad08c8c5e31588959e605ab5b0518517fd809d437edc27f33da7580b",
"0x26e434190d53125fc7718bfae9f34f2124d41bb51bb2c23c37deea8407da3523",
"0x519d0e4b6c1228368f420926c69ff37ee7dcf8e3dc45c4e95c821477d075eda",
"0x2aae1f5ea6015e4acf22f950f6620cf74e7d7bb7a33ec09b372cfe562e5f2e12",
"0x2ffb9c618799bbf03e071bca26d130a936a380f74f6e475f567adfd9adc269ab",
"0x22a6091317f474f780d2c4e11d78e6eb875686f797f82a8ba7b3212879dd63ea",
"0x79b093f80d89162556a653dbe714975928ba10cfd5f1d0bd47c0fea68f03493",
"0x2741b4234834eca3dfd3ad4a3064246c4496defd8197e450b8416e4852028c44",
"0x15adc0ef2ac09ba1689bc3bf21e4fa50141c0089d00a80225f39a8ee63ef0032",
"0x168017fe19343b5d7d8476c0936a0870ac87beb8ef2ef9b02cb773dad72d2401",
"0x2dc5d64afabdf089bffe3152fa2b290726cbbb4d52e3e08ab52b1876070a8b03",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x2631312e2a6d973442d5dd7efea28e5073c5cc17c878cc594e2c39dea7a51950",
"0x1ae2f96df9a1a71be2965eb1f504ffe75742ff7f81a45df9086822ea4ff83f9a",
"0x17a4bb48a247c563499f4b71a2ed4763c579ba38009184f3607d9b4b5b2594c5",
"0xc9a0ebe3610863f0da6992f19a565911e14e72687f798d90b98f2c2b24bda63",
"0x2f2731211090929d349ecff21490ef33747d4a402c8c1995b827292ad299201a",
"0x9b7a78ed8d062af7d0ef55e464376fa6a4ef0de0e0cfddb6095156359825480",
"0x28abb1d3e1bfd68df633d19408b66ec34a580540eb92794fbaa033f8eb0e01b3",
"0x1e2014bbd5d2db2f97744448f2d57d1e27b6dfde486085a5d8c128058fa0e656",
"0x25f9ef11d4ff48535b9301a31a5413236fbb50568745d44af96d5d307490eb62",
"0x241b430c52d322bb0971e127e4e68fd3fad0a845f235b3e80bb514a00b75ebd2",
"0x21b6603896d2fd23cfa9b8db8fd0e550decf29eec015b5cfd665313d91014bdf",
"0x2066a222ed385ff7d9620fdd0343bc67d3fe9027c450917deb4c126ab9c5843b",
"0x148ab2277866b9d0c72eab8df30a3abb6fab1610e164a9f2400ea397e0de92a7",
"0x22b514cdab8e05d5b1289978bff23e2aa763565fe504c7e3bbc86069e0352239",
"0x15adb32fd53195fce581f92dad1925b14c6273d02a73ce8a21e988944645e829",
"0x26514ed0266951c35ca0ef8ce1de46874ec132fffec62807e01831664eb427cd",
"0x24a1401fffe3c86451355add7ffe24db5672d8656cf51377c38351f1fef09a6f",
"0x53da14e5e7a25894a0b0efdb05617d4f0922398022d656b13d24ac31c66838",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x23d4d5f42b19c73015c0c481446416d929469dfa05ec46df0163b835b30d08d0",
"0xc34142c7d90f966770924de9bd02290f2a25d7e627ec80bb3d7ba339d0e8829",
"0x15693ac825018e52a0d4c3aef740c97437e4dc3331d552a1c8e4b8a3c9e176f4",
"0xc1d7701d2b195781d2ec69c9c91b532a326163ec4fa2f0dc4afcc58540acd57",
"0x29f55706b8105e02770e12158f34ebf47fa7ef35f2ca62de699524be584a17ea",
"0x15948078ad1c9f08c03facc3daebcba846a02cd92994d709ae047be01ae1c676",
"0x1fff985fd1db0e045d0ac983e602592bdaadc7ee35c696f55da0bcad75e20a1a",
"0x16b370312e2012c15fa0c6b9619f0ce24ff0586c10b4bd02589d2b7b2dae4eff",
"0x2358120a60a01628aebf65fc72181ff9a0ecbee9ae148ebb4ab4bdc9b216e76",
"0x2f1a1712d5a7eeef8647c7a32c2c9491c10ec872fb7a8280bd5f360a3411cfc7",
"0x23b8d022a8e866d4095cac47c7ba7111429f6c08950a19de476ba2fd836b6cf1",
"0x139ad96c1432a53b6fee35ecd66f2b9da8ce4bea3ebdfbd2c4a75961efe0d892",
"0xd1a3762903cf32fffb016810eb11daccbff2d7dbd6b2a447ad32f810d88893",
"0x1e2fcaecfaaa32924f964b021dd552cac420f822a0a71e37c28654221d472b7f",
"0x12102994668f97d887812f0151144111aeb19e748eb198c3a75a9965176f8f07",
"0x2cb68b7e634347542711e393d188b6fc2eb0f6aab7a7cc9177543b3ec6d7d",
"0x215a89522290e4cbc142deb1584f336ad401aa76d058da586baedadb4c0b7b9d",
"0x508c70de806cb78a62250db957fe5ed69e4c335b86635be74a068f200768a",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x3f5d10d3e2dfdcaaaf5d2251baa6e7deef7fe6016e0e33f67413b576e78439e",
"0x5160b38288f77fe866c353e3fc4bdfaf39b54fb22c0361c6bdaa645131dcd32",
"0x1a1f53585e77207de93ff07741144e90b6f8858f6c68d52b62c96efe319aae23",
"0x2c48ab25015e0bdd2cebd18df7edf7766a28d757827818c284f15302df3d0285",
"0x3001d8c6b2c0a9c4e7f80cb2688f909dbb1bce96b7abb884f405158aca90ad9c",
"0x14ba759b81b8115d220b3bb5e077e597f805e30d961d02b132ed6d6dde416d8d",
"0x2e3b3d96803a71c846f5654d3bc43f69edd66885224a46f6c5b67967cd9b0476",
"0x1515804d3972a797545bfd5143cd3d3c2b85b18b734fbfa60e28a7d8024cb8ca",
"0x2122b140a17e84a1ce854a0f924abbb7941eeb8af8831dedee228e4ed462e38",
"0x1efeffb998ae5510b386fe1687a04b18411e23f5300e26b0dae71a1da6a16ef5",
"0xaebe0890cab1a8d389ad98ac4e56b74e1176dde08cd90b0b69037167d221c07",
"0x1392810e135502a38d126a0dbc2cf8d1977357dbefa4d84484d36a4a6e4c7799",
"0xafe48f0248af7d2f35057667e79a08c2c2bffd8225b6219d94e785c41a796e9",
"0x198eb323d5b100e891e9327f661d15848df9f2e3bc2e34692b0c644ff091b62c",
"0x29c62456a430517fcaecf1a752a55dbf245a88ccd664e1c824da61000919c45e",
"0x2817a686e5a15a89212dfdcf69fd15fa73b8bf0a5c5cd893372a7deb18d1a7f7",
"0x12d401440bb03153830e9adb349d891ae4fd80cbbe414250d9f3c2d71448d93e",
"0xfa1b160c62129071551cfdc0d384b81866bda034159475cd5107b92044b8157",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x3046d1d934cca5a2f7039907e78cd8dcdbb50c5e8cab13a78dafcef27ba5597",
"0x2d724a2ce967f1115a32a74ee7cf63760165fc405621008476db3bb65b346b47",
"0x6684ffbc3e9a720f7ac9be9c867f2532240fc9ed20c21430e2685abbae63ca0",
"0x1e4caa2fe0f585e91bf011c1755396d39dcbc30e94aa4ae3ceefd381fefc0d43",
"0x24a9509908f6b0a4aedc444647d1de173078d900d23e2770b410624472bcfe70",
"0xa444eb331e3a9d4f98039f6d9a7a45482ad85d6e9d0917486bae82a5047f729",
"0xcaac550d739a7699d5dabeabd3bdb5e37449e87f07b95ccb82fa742471b8ef4",
"0x4e0c67a911f80f93720ce27d4ce2815f7c4f2e5d234c259fecbf562f863121e",
"0x1ff8f4767dae471c0c2a4c2ef44275aaf07e1e155989a5ccf1e10537f860f72d",
"0x2f6863db06c9adeedb84708e3b7c091cf44b4251023fe8f6bef72d61519e7651",
"0x2e788ebb5af871b9ed5e9fab07da7b58126109807e5915e6f54d7cf7dc79199f",
"0x2cdafe599e42909bc0475abddf4f10a4f14df5a2c0f429bef913ced315d116f6",
"0x1b0a72225d8796640b16fec15a58e11d4be5a9a473d1337fbb495ad93b432f6c",
"0x1cb387a29a3345bbf6cc407a81958e61fe98f7708f40bb8b96741f730c7e7081",
"0x15ef88ba22652780eb14b3ab276c1dea798361f7631344cac3e771a16910179f",
"0x26893d124895c43a1a271e72a5f99c4fa9fce6ffa7bf6c31e4926a4efb888e67",
"0x9dc58192b21af8f6033bd84e9f5d696c602e0bb4c924f790b27df7db675049a",
"0x1d659f67ea472288e942baa853889e47435056a2da4398acb9ca288c2404c7f8",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x17812ce47ed47b09cf9fed086e7764010e70afef63a806d9890a0c3113fdd15d",
"0x5bc448e17449644d41ef38b762a183d1f9c0bd6f6008b4c902ca3fda45d9e4b",
"0xb8f14bac67ece8b1f9a960f436bfc6a75ae541945689bf78b89e2d768d1b1c",
"0x6e843ac5711fe5e7551ae25506875ba9eefc93563d15e03f15bb5d6e307b294",
"0x37c5948a6f6dcdd4378f4e6220a96e4fc27c8fdb102c6f2fe0988b199ad2860",
"0x9bb55e5908b10cca78ddac3e7a880cf469fc418c8b0ec0e2f96220fcddd983f",
"0x549938eec4ef16ad9d89081f27be2a2c4af49ae918988ae5574965b506f0126",
"0x13b4215b89af0652d5598eb29b34ca980cb1a1eb44eaff0e83ed8b6ef5c5cb73",
"0x2d8f43577fb26728a6f2305e2f868a4298ac5f4bebf8419f072cf709b9bf6979",
"0x58782a9e8860cb1b60314d2b18e437f36c169b5362e07575aca80c3bbcf8242",
"0xf6ed9ca8c19eab0c5100e7dff2a1e4d09b3c2ec9e19a9aabddfa4de4903cbde",
"0x11c3ba734cc607cfaabc73f220cc21f2422ab5e31d04818137793092015a1150",
"0x1ecbe5795e0f92f55c9784d7687271c7f1d99474a4c9f66fa41618d17342666a",
"0x2ed6fa55a83b01452c9e30b9888dea9544c10db14356cace8dcddcdb0a2fd223",
"0x79287ad9db6ce54e8902962f53403735a76fb7eaf2fb92e8fc7e6cec890885b",
"0x2e26aa5ce56c08151e6c8457e0ca280a1cd8117e7b4fe6895058b964859d73a4",
"0xa889a87584a87178ad4b8ee2230ebc06301c08cf8407e631e71d6467079ac3a",
"0x9c2891001f2a119d1126659c30f6123f65be071bf93729d2a76d9bdd41798ce",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x51fce24183d75c4dd506c99b7be05f0d326a972645730c2a76babdd8c7992f8",
"0x1094ccf4dbff390c02df760b78ae8360348f9ceb187059aff7dcc1a3b5d9e8cb",
"0x2d4966667b830669b5fcd632c6f3cee90687341f51653aec9f0214ab5db4a847",
"0x1b6e79f0b003e313be5fc611155d4322d1c56f22957bd201a45b53854291012c",
"0xc9d7ef70784cc153f1a325031dbb8dbac58625dc7610fd453c17cf8dee3b489",
"0x2eaba31d2ad4b02948ea76ed4d931d5a42683adb9edeb564d065363190e766ea",
"0x3af6bf9c7eaedeabe073487509937cd73b00a8fa5aeeccd8d4a9b9ccca1666",
"0x24d4c2116faf69b99c84e389413f710cef10de5cd87c041669ca51c21f3b6318",
"0x1f5cabd4bd22948e2c5cd975f92fd0850731301e6291fce364d7f5d951157b0b",
"0x32aaadbc1decf6ecf33b074eb63f5fd75bcf94af261ed3b75e049d63dbc66ee",
"0x194830799464f8ee702d72e41ac3aca3c4ab419b02428605b00829948a201752",
"0x1a88bf75b55c097681b6c07feaecaea5a7e7a84c2d9b549381c51c9b0cb64532",
"0x2c7969063d1fc97a8d063049637ca6ba63a6cdd9200b95c1ff1c941c390b89e1",
"0x79a0abd9ba495c5859ff6e10ce393b50c9f04bd92a9261ec1ef7f99f77e46cd",
"0xaf8f7e9f3eac9e6e82bc956dd7c53bdf91272cc7ae955d734c8f9c6a4e7385f",
"0x1f45d6872234334442f08c99bce292c089d3f34f4763419d02ca14f24c4b1b8",
"0x3a4a9d99286b1752d6cb735b9cd0fa27d4f1b8f0a1521d18d1517f6148b677a",
"0x19484e61180700e93699ea2a7d64814841cf11535480dbde83f6936f5ab68fb1",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x68117f11b7f8d736af79ab2ae3328e576a95d12b637b944cdff9b5758499915",
"0x118a504d77cc49d22cf454a7cb3d9ae8049efe9447a78201468e90ce576da872",
"0x1e21ecd473c3deacf25a495ebb4301092012529381b52e0d1286fac898e3c370",
"0x2e38b65fab0ea1b8152773205f8d39e6b81976426d0d64cf48cbaee81818ee56",
"0x19414eb55e2b2717e2affe4f6a520a87977e938319b9b49d02db373469bf6ccb",
"0x1f04b3026adc9f2f0995631d4ee83ad3910fababe4e78dc8b211e9c72084ce4",
"0xc1cee5ac82b0ba4ac8578c934c415a0f2a50bc7521d2058853b0a59415f6f72",
"0x1a0b86be3ba0c37e5fcba4f8f33d0af3333cc3bfb74aa262d3d484cbd60fbfb9",
"0x277f4d465b4a3f950592907b651c5ada6dbad43f7ad0dfdbaa4b5c0edbec7e4",
"0x2cbc8485f96542fe22965a7bb768cfcf79f4cea845cd70eaac0f6c383f542fd5",
"0x13b306fd43acac725673d286fbabe249cba9a5194a6b2062953b75149f02cd19",
"0x19bb715b15ee11c3f973eea2656300c00d6d96576c3724b070f38a764cd58add",
"0x2579c1bbae48a8bf9c43de695574e7d4576c2c73358b18dd15a1673528fa4d21",
"0x29bb732726698d3e98745354beed55ada619a0d0e5b8d05cc29f0ce1bedf01bf",
"0x101b8a972da8e777f74c68fc481c37f0b999ef0df3c90b6505ab2a6527c95d77",
"0x28d282b4a80e8079287ad62249731647b36221be836c246e9176c6e243623602",
"0x30f5a91d4bd3a7a00ccfb936619a49c9cae07fdd02d5f7281ead5ec765a5c68",
"0x23aeb8d675cc85209a4f47d7ce9374c6dd1bdc34caedd947a05836f8f3880cb",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x13efe2b7fcf22b13dde356329022c10caf94d0a67e448020cdf70a2a1bac2de4",
"0x20116d8a08ef558a247c6f5f943a982d94b63e8a1580c81a049ae62db7550d8f",
"0x2d082ae4142d9cf00383067665261118fc20b41dd5e3844d95d283ee935fd9ce",
"0x103520a0cf36cd976f2243249d25d74bd11b4afad705051b28f5677e7726d5f7",
"0x1e820f7db38b24a06bbc3dfc78c47d040c9dff7d8ba0160b522c6313c107852e",
"0x275832ae1f1cd86102dd968a76e57d3df95b5c1cbb1ef28dd38fa2bef749dec",
"0xece66ec104a392cd7d1e5a11f16cac7899588ee5f523b93f779b80f56ee42a2",
"0x174586e5d012f172439b4d437e58dfd9c58e7d29ed659a7471f0b80151dece5c",
"0xcc17b4f871cb91bd63924098c54be2744a3131d8a9ad21b1a55069f005ba35d",
"0x24e6611ad441830b7fc88414d4902bfa9043e60933a6d1ba6e12d6795c3c1b37",
"0x9392f480df40275b9d639dd95f8a1e0a62fb3b162b41efdb5625c90155fd3a5",
"0x19fd18a6a69d2e9327fb48fccd6e0549395b2c9362af152d9d7e9901c68154ed",
"0x174bd47eb0d06dcc5f5121b04bc3c61e02a262ef3c77f11c548b8f2580e664ff",
"0x1be5877032c20df6d798e8bf265fe511739db9d9b1042b2a9843a261cb5a53c2",
"0x263fdff0aed026e3b8654e2711dce2aabdc81bf44695f0a6694ec29174392aa2",
"0x1f71c71eb6f683d7b8516f7de5b5f0ebbf0a581077fde56843c0dfaff80acad0",
"0x115b998963794a6c504dd65e1b7d99ff4ccfe24b04462b5788cce32861eeed61",
"0x17f43dba64c1eb81be96ed641cf7801b3a45c614ccb85daa14a8153d4e57e6da",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x1e1c19e05021208ac3fdfe2d3f116c8e72ddd60fb5530005656683f528bae627",
"0x2596fa2a97ea6905c598c64a25768fa5bde504ea3004705ada129f936ed946ea",
"0x429be063b1c6a85e848627ce4bdb658eb148f89887b08e4699f37e1c4d63888",
"0x2571cd3671bb7bd7b52cc19e2291572e4dd8f8d077e295a22907d15cec049643",
"0x23e2edfaf71fb3796d9f00bd618d48df5454e6edb91a509d173c431668c494c",
"0x1a9b4db70aa7cd04e33a10c5f4188b7b7546ddb4b4215611965194caec7d961c",
"0x115d0f27b177d1bac2960bb00feb3be427e4e0184f8f6324d0a06fb47ae2366",
"0x24158958a69587f1c15512552045620f1fe1569c9f3e3668ed06dffbf0a73686",
"0x1c6761dde78638d734eb9eb1a1b33a98cef7efa4255fc3662bae703182c01fb8",
"0x2750d8eade4dae97328c60a645fd3c8431d96ae7482a818b0ae3b4cc46b9bdc8",
"0x1fd32b82dcbeb8c048e9269c2e53002f6b7fad13aa737f386a6cdfc1e2c5a9e6",
"0x594fc59fe25d24b2545c6650795cee8ba30d2ae04dd07b5d676b089ddbefa9c",
"0xc84ab77e8af0ba2da61c55b53cf3534e766735740836aac2427587fbea5c8bd",
"0x53cb97662f38bb4b44b958d4ec02f8c25fcc795969bfb079e664b87cef93dff",
"0x1603ca0816ddaba4cef9853184cd3a94d6c881b73d2d6d893db88a48c3de3447",
"0x18ea8dd9a27ca4410a40bc8becd0b6d42338881ac4c31a3ba7caa40cd1b56131",
"0x1a527748bdf0057723c86acbe4909490d3e2415647a82f1461a42f3296bf4c07",
"0x14175f91c0ddb823543a0167ffab7bd8c50273090aead801da30b25f4550584a",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x25f932ba4af84ae43ba5291e604cf8ca5fd208fd16b78c38eabc57286298d557",
"0x25475d7d649f8bff2630d97844bdc0fe8df6efb89baec75e5ab9bdba2777d431",
"0x89f1655b69d28450d05c9dfc610305d46a77dcd50eaf28042ebc878caf30d5c",
"0x123980c7cf8538b96942135959a4af1708aba866cba105e1f5a382e9bb6aade4",
"0x78cc219ae73e2ecb4025d0e0d90cf09f82f948a63243ddc062872b1070b6b30",
"0xcda20a3684d79a2e18078fea3261650a2cca213f705b56eeba2949ca203b816",
"0x21b9c66d1190ff2ddb30db322ca2508d231f7aaf8f7f5f5b95bc1711a672ea6b",
"0x22016741afc2d1ee9549ce4b74318bef293bb2b2d6495d424cdf700060dc813",
"0xd722902b755cd16c7977247cb28068a616adeaa13c00b1e2ff628c892bdc6d4",
"0x217793a53d0ac28751e3fda8caff3f8003b084c474e2458cda30330e338e22c3",
"0x2d31e0c6e311f327b0e780f291a81e25aebd9660648b0ff51fe8851d29671cfd",
"0x216d14211de9aed77200602ed78caa665a310ee03fafb5b993ddbb5ae2230f83",
"0x2681c24a56759b77d5e0a7afd37d286ae3422745564fdc15d25e0dd158c9f4e4",
"0x1e3b6edad3fcbd9d991c34f5e4d838fb76c255542d27f82d58989912b5bc7dd2",
"0x2eefb7b5eb265aa610c4356f2282dd92a03744a1b8484dedb115321df7518c2f",
"0x5a848b35a8e270224242f52686cf785d9f11ec3bad27529c02f6448a432ec41",
"0x9ff782048c9d9aa8690ed707e82164ad320e1daf646a3b30421f03dcf772423",
"0x2b294de4467526f4914af8f9895903124f2a91249c23e8d012a04e3b6fefd504",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x27d44f13d66a77a645f895ff821ddcf8cced8c8af984dbb8cf82b84653a5db10",
"0xe50c72da36c1a968102edf30c6b810795d41ce41c49783028cd0830acc37c98",
"0x2341aeac831f989ac84a00d127c0809fbc0040495ad77e1d1f589cebe120904",
"0x2071faf6e96fb5cd4400b6c58eb4ff5e527bf7d9492180bc2f4534cd0ae0679f",
"0x14da2ed4e175cc095a8d68ac6e7f9e2d702e82b1791204921bc4806b157be02f",
"0xc6232c7e84ea35400bdc0f7b8d0cd211fb5186df1fe8e927bc51ce0247d13cd",
"0x1f65c4563e9f61ed7f7f2eb3fedcde581ad3b660c5079c16e7ddb053facc5396",
"0x144675f4c54bc33e1bd7aabe8685c740738cf1c7891c5c659b07c6281fc67a8d",
"0x14ece2c3c47e0435cbb019db4708ef6c904b4af975d729a0fcd75e65abf744ab",
"0x118f931e904fffde6ba4e22eb0429be857819f9fd64f1273253b3f152fa18b0e",
"0xbade4f966d523e4656c44854982d4546abfe2f5dec203a45cc463da1093ce09",
"0x1783c94f37d6d9057a1c2e78e0d0f78efeb161a14dc2107a21661829f135d226",
"0xdeaffffd0feb209c00793e5f800761b5419d8725f4c88286eab224160ec43f1",
"0x8746a72fb64c2cdc1ef14613cb535911394a29c802d4a6a94cfef844610c609",
"0x4882711fd9c5508fdd0a1ec5a2a0810b93a6cfce441a192047a827f58ddb2d3",
"0xf2b738d3eb3b803bca325347b7af954cc10492832479183808b3aea72435c2",
"0x2b5d5eba00e09e21bd9202d72e53306361608eddc951ac1f08a53dc3bc6e955c",
"0x16d96e78a6078437404b5bf21aacd5a43d23ddd5bc2172412ad36390b3ce4512",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x2f6fd52b25a9485df2878599be34808517d5eed6c1d83ce497e1a9ea8d1c3844",
"0x2f0dc0c61f11a53d419b3fb805fc2d476837c53c1c990c66fd1539ec9d2e4e44",
"0x1b004ab51f77388c427453263ea600792a6be597e6f736509c2dbe87d4a298b1",
"0xa690789ef915053a2ed12aa90a8621340337bcae525139c9e1ab973e1bf8881",
"0xc925171c7431dace3626b7e5036dfa622bc08747fe849d6a6ae5c831143d104",
"0x27e2a355bcdae99405fcd39ac25b9ffe773ae5b0ed9a87a9e470715fe2bc271",
"0xd44cd56f0210228281e116260bc8aabf64fa0701601e98781fbc6b14faea9ed",
"0x1ee8d9f2950080571a9605c7b454c3480e64876ad27891241b8f62d71d6ebfdc",
"0x13edf09ae8addbf851e00d79fe8b990277b431d72ce0d9b48b55e3095b483bfb",
"0x1d2c7f3a44dcbed040fe5f5dabd49064622c34af68c5b4afecf631fd998de93",
"0x17e04fb5f49c12a6a91bec113708d943cdc774e64c6ec431bdbda3a6c1c0f57a",
"0x21d9dbd68c54cdb2ea8beaf7de31afad1cd404c478c62e8f59653895909a18ba",
"0x276950c5f6c44bacaee68fd94f14a44a07a0033515b10a76203ab2b12bd60440",
"0x2ca5b12a8ff6ee0156650ef67333a07ff08b156454897b370734c4b98977c6d0",
"0x2379fe3fe77b505f5fad59cc93f5fed7624e99f5359c30d56efcd0915460668",
"0x10e790cb3f6be51c0b4fd7f6e29519bf9bec842ac6e0f6f5584d5cc1431b5c56",
"0x20a94567158dc5f7b21cb0358dfd6fcf75abdd806b150bb4ef55756701d568ec",
"0x191a6a82b77415d9a305c90b8189e93ad9d915a411a544d0fd090a157113d557",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x2ce2a89b4c51f97166c6adb43491a88c24a3276110055a0deac88f7e71f976b1",
"0xe85242efe6b78087e6f76495c7bef828bab7776b3b6f5b4ae77b9a3d854933",
"0x92654dcf9e69fc2da394139bafb0592b4cae24d00e34981bddcd4b089dd948a",
"0x152d35166a3e900ca89d58fbdbe99caf3bdb1f984deae8e02cf703dd55e78a6d",
"0x250159b61c5e545befaed62a349cd00e1fcd3ea588f29ead5deb675a0101d936",
"0x1e66442753c8d95188bb9f59bad17a6ab9018f052ce8e1de58790b59bc4cd7c7",
"0x1a91965586db156cc0d4fe08208ea762030e390bc498435d3a04d41b95e854cc",
"0x205d22ff80ffd23060ee1aeb5050c709a63a4eaba0847ff587171db7d9ef27f8",
"0xe92e1e54bc59e642a77b5333ddbb2e15594a1956a3ed0e2605dbfe4cd29dd9d",
"0xecb39d5fb42dc2dc2f2b74c13e24307a1f3be67f35ab79b0ac974eaf4a0c41",
"0x77aebae118635d5a0e0160df4961f3c5b796887d878ddcd2688fe1d618150ec",
"0x2d0db6e2eb4386d10a3719148038523ebc7baf66dc538818b0b5d843002e07bb",
"0x1dc7e3849dcf39a59aa7a87ef122afb09009aeeea37dbdef6e850e57ea37f604",
"0x97559815d3b62c28056095e39c8b1a8e366bb8aa42af85f673e45273d0ae1ee",
"0x7e08fce9a5121c2188a96e591b92b958da520778ac0bca67b59da2b3b06f0fa",
"0xe3d58fdb4543949957ea33bd03e3abbfb109a1691de6696419d4b1207f542c",
"0xc991fe43818ea306d3b776847d14f4019bca2070d200e07735c62da31a3138e",
"0xaec16bb8df541908f11df6a64c676183c76bfcaf7748c503d6099acbb3f2a9c",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x85b7265354e883298caeca1761cd19e2c5c2119b36c37d6f5d666ba8ecbf19f",
"0x10d7d5e67042939ab9d5eed4d520c3fe081f9ef97b3ea8f7ffec5d5e1889e031",
"0x1cfac1f08b7bc16a7482dede1d624a8637eff2c6f5b38e5fbeda6f6bc5cea6d8",
"0x6b10274305c15e9adb7f7fe7cdbb4071c1e4968e46e461c6642a861d0ee68fe",
"0x2cf401be1c32c95cde4ebfc65cbbea9c09f9632239b314f53acc63bf37d86a56",
"0x2fd0c9ebacd03258bfb689a7a700d43b1fec422b22299d73e478801d9533a36a",
"0x4ec21b44c21c6c358789f92b5d126597e1b60f05050975b924cd7042087e630",
"0x2d42130581a19be2488f98c4473e80511c275be79f5077db40b74b43881eb4db",
"0xdf73be8b64e045f882edee4f17e9da2c5f25b2859e904595844adcf3df8f7f3",
"0x1b05101b32ca2be2837624bd01f437abcd43cf6c4b561052e0e6df3d5f0ee39",
"0x8a4f42ecec6f626427ce116b20f3405898759d0531091a87936427a99d5c919",
"0x67eb4a3514d45d7e6468f85a7a606eb86395bef7b23018f25e133f7416cfe65",
"0x3037c22112964f6f3d8e4a607f1f35ee562d505e4a22fdf24b41e6c03e506785",
"0x23c4745c095e5970dac166326b875df52d94db0c9456b5afb55077d92996a8b6",
"0x12ca85b142f5d2d2d87b44b4f190810b0a2ef1cbb96ffb43fe4094ac0bb450f4",
"0x262501f3e02e6a5c95bfcf11749917b22125ff7d02ecdfdadfa374a45173c662",
"0x2c3ec00db9c8e44aaf94ea99dae52f7688c663f0b42d186fc1d030813a4ca1b4",
"0x120aa50356c54653eb5399b101bac1eeb8d728626800003f8858a183cc1320f5",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0xb6c1dd3d2dadac79672ca69e272e4dede9b2bcbace5d12db15fd6c855bcc7f3",
"0x1dc5cfb71f9c9ff08886866b9270504c330bffed807e5f608839afd49bef8961",
"0x2ba9c16f49734f3bbf98296629f2a1a4e6d1b10063193206528ea39b11869cce",
"0x21c37ce612e1b0d5fcb0271e20f27c062dd81f2c8efabe92c73f54d87aeca299",
"0x29ca29c57a516f80006150ba546d332ace95854d3dbbb9ceb57a80f221f45b75",
"0x9644e84f727604d62f2d77c2d5c1897f8b90f362740a8c6eef25ed898e18ed2",
"0x18488a89e78505a807ffca282555f117bc71bfbbb9443d7d06e3060d9798728a",
"0x17f99a49abde27c74d8fe51bbc0a223591121cb9c0efdb32a6ef4bbbc976049",
"0x1106936fe4d91cad9dc00af8b85f8dfdca9298ac4207788a47c97ebd5adac9aa",
"0xb19213f24f13dd43d620c6d4fe77574e3ba66807d606f96055af06344a953cd",
"0x284fb79d4b5bdeb823b0a7e93566380739c2ddde6f2c1cb102f491389af88601",
"0x2bee8122aaeb513f5cd47546f15090cc6730e39d28df08a9ef4f0726dc69a1d4",
"0x109712b4385f9d1941bc8ed4cbee06fece38379f962681ff1f49f2c7577aaf01",
"0x1cee8dbc9e7c22eaa815aab454705b2c2b61ccf56bcc5181d8eb9acd08a4b708",
"0x123f9868d7ebd3d7c576a79f4bb3f0f6f8466aa50c642b2b8fb2938b2533acb6",
"0xc0fbb5f96f795f870d7a4affa961ab0a80a95f9814f2231debbe27352088c5a",
"0x3b268cc3e3aad22d4f8e5edbd7c5179e219201ba62987e3b4a5aa484a30c651",
"0x2e3ff582310fb1449330c0dfed129154d2f8aec3871d2d593b73926a70d8e5f1",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x18b0d069fd19a7ac7776eb39fd607c75bd860a3b2fa17f90f1c016881eba042f",
"0x12f75e7771d5d27c66ce2bf10cc3e3d6d542f3d39f1847e2fa726386ac83c28e",
"0x107b04155a7d9c1881def05be1797dbc8018beb8fadfc9935e569e2f2a2aa474",
"0x17318bbc96a3594382626c795cc986dd77a81a983bf0bcdc9aa59e6d71a59",
"0x132974c4fafdf621f1fadc45daef9bfe5a92a1b59d33056448a125ae2654d20b",
"0x258538ea87a962769068037de62fdd272eab79bfd68489fbbd478a7cb72e068d",
"0x2cb1201c76a7fa15f79b9ba6ea261d17e0b62c2643709e0f984c937c42115e2c",
"0x2e65cfe91bdd49c663d8749f335176abaf6377f582d48484f6748e24cc816647",
"0x2cd3d763fe99f1b6627e6352b95ab5489d191d0e5d41df07810fd7c52b9db26c",
"0x27bc4a5ea2a66172650286cbea4ff02ee1869e854ed4fcc270c8679a38cc8ef7",
"0x88ff579628efad419d54070c10f57b7e69348ae96ad0fd68b5daaf303ee96da",
"0x1cb43928e58efb24ee214ce17d29752fdce31605fe517609a60f8d2edb3ac6ca",
"0x1dcbf79109a7193b75fd86b82c1590b31abb899d0fc5da91e43fe9cefbe45a4a",
"0x2758dee8dc30394bbf30a412c6dffdb1c7b3c1588f4a93e9620db80265e128c3",
"0x18d1cf4a6c8482ec7330af0eafb66fdd2e4289ddfb61c36f76fe87c3648aafe3",
"0x2485597cfdf560f34e11989c881799ceb14143e0d5c4de20ee4a407904cf1e05",
"0x6151f2ab033782abc7bfd3aaec47dd9c428681acf32d745e37d0be4642aa764",
"0x6d2e5ef950f679c0195dfda3966ed8f2db4ccdea5739731627c012a453a9d99",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x2d3138fdcbae36004b71f47afa0ec092b328d2205d4952b47e9c90f286787d9",
"0x1c8e178d93f93f9cc56b13c437128dab31456360dbe2415edc316dd0a4cef579",
"0x25bea2246bf9516b6fd6299407d737b445cc6e2f158cd5944c194852cc32956",
"0xffdd4b3b72bb34089f3b91170fae0a6560efbd23ad5c76bea5e8ce46b7c9f3b",
"0x7c622418ddbf99ba65d8ffe6296f3907c1589d4ea2087034bcda1f7c52218f5",
"0x170dbdbc927d2213df51e928d1288f1bb989cbc074537cf64485b5ff05ab8f0a",
"0x6111fd3b375eb2fe504987aee580cfd1acfc7c39cb7a9171adedaabfa2656a2",
"0x25b706a850ee172c03d98a8a1a04dec56d264d07d7995a7bd3b50996f552f9ea",
"0x13a5b2bbccfed9c5c5f846496df832e8b3166104a183299b87cf2e0dfff8964",
"0x256b7b5635f25f506009162f09e2aeac9a24a22d194db0987e9e0196bf805ee2",
"0xa0d91ff25cbc2ef3a667475f91299ee679bffce4ece8eadf3ae0e86713e6c4c",
"0x1f799a5f2a9fe2846d8fcbe9fef4004f2aab2cfbd8380486985787f9e82f739c",
"0x8f8a5d38982c8c9eba1afb2d463d9b87cb412064271a6d721823ba76b13786b",
"0x13f2f9a571f61c75b4485d9f3f74d84222f1d3258f5446e9afb9d82bbccd5c5b",
"0x1ada050207bf232b77af0445cd3ad24ac2856a32df135462c196b718a4e2818f",
"0x2270c97bfedbe3b54bcabf5df1b60fee20cfa8b1dda8ba4c832b580d71930c59",
"0x17e429879da51390e1253592134df6fc0e6149656142baace891a5ac0b3dcad3",
"0x2ca1a03e86b8e8d2cdc32f998a9a2ae3d604104dad81ce44d7b70b7d2c147b1",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x179e9cc5ce81c3b957469968a01d8f4155d1fab43566892efeb4aac8e730bd1f",
"0x245436e222f18f0a95c5edfdbe70beb3cee0bbe4357c0ad27ec637b8276be10b",
"0x12082995e500dde2a8f5e3db03cfb08fef2e717c59536b6a48a757fe897af0b7",
"0x1ed351a76be7e560be38729f4c221d52e1b2e6b1c9a9906925d9d7fc659af29",
"0x22cea0520bc1691068292d1320ab844c4ff641bd0f3f8b3bce4e50b5302d4291",
"0x10d8cefa20bdf64f680f9f65e2f7f1181485743849125ee5009bb535fbd6737b",
"0x7cd86f2f3733907b2893e812f536766b45c7590516b8e0da820af563de5053d",
"0x18f7e2b8ed7ea1c7ccf0675a588747409ffdc5e0d9a1bd80b54bf47833ba43de",
"0x11ad65aaa14357d137232ee3e2460a65310bfeba447590580d165a80bb87bac5",
"0x149ddeff968dd3e4873a88f82aab2252e424934d62cecebf3c05e04101232c6d",
"0x216e4879dbeb136adcd2e2f9c79d1a899123ec8921531fd19e8f3db769e9b9a7",
"0xb32ffdc93ba89e798035496aa0f0e5f35173420d9605df5c29176b9c8fea9cb",
"0x10059787e4b7b91491cad89e95af648197aab657bef0347224aafea1bd70f0f8",
"0x11feafbb6d30aba9905fc46b2cfa8bd5a1cd6685c3411924f652003f98ce61f0",
"0x18737f1b8ed644fcd203182f9f71ec606dfe5722848319eb06addba0862192c2",
"0xdb96451b25bc2211c315c94b7396080febd132e48883ba5be7c6352454b2531",
"0x14a12c8868c6998c77975fb80588dc50121cb3fe9070179f48ff086ddb44cbec",
"0x64f7699ab015d1466ce5ba0fd8a92531c592eb91011e024e3a90dda0d38d3c4",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x27370d48e084e132bff2e3af0f91f787a9648ebd4fe7cdbc1cedec26c11cff0b",
"0x16f9385f9edfa3dcc7c06b94ed2c0d8609451634db5a4e6e1997cc144e1415fd",
"0x148bb2cb914552eb1ce755beda59e784541d31b0b9743c10e7d6d798afcff7d5",
"0x2e9181388b5eb930247bb3bf036adace30496887c3fe5e51a08501a57834d778",
"0x45e39ea727e4ff254ba2593f698f79e8e4b4f538d1b263912ba9f0d572a8eed",
"0x1174f11359628820efaa3cca1f5f19974f475fd989692911a7dd59754df86a59",
"0x2ed2ce65b2ae9ab3e5c33366e50e7f9a2622b21df40b38e6f0606ebbd6399143",
"0x14a902e483b773bd59d298c316ba79c4abb6bf6e625312672fc529ad2e1334af",
"0x1e68f7bd5130ceb11d06b8075b2da5fd09c5e2401fd816ccf5e6b14f3ce77b4e",
"0x29827cb7a70ff0095050678d19f2eec6994c2db9aac20c2328029b37cc1d94e",
"0x18b67ae206c91b0907dd5cb14430d2d00b7ca10382cfc464c9451accb64b3da1",
"0x1bab9c538b70fbb24712c9c9fcb250b2725138131fc8887dd31c0ee10d7853",
"0x1bb888723fe04304ff56a7c1aaa2a13edbb8c6d9b84c95c34cfaa32c44cb18e7",
"0x15b938c5888d46730f0efb92f3829ee53afc9b4b9b3e2a58729c31f21c078085",
"0xe56668d5e18b59ed8afb9f3b66f03bb0d8d0be49b2ff0ee4cf05802a6840a2e",
"0x286d890c9e0b00dc5a3185b312d61f861935f4cf230267dd147843d085cb9814",
"0x169b367b1b5b432d3e5f13374bb46fee87ebddae52745969b4d80b371a52984",
"0x2616061981a127f1f90517d00c67ccf537e6a1e60f76e2c18ceca5b4fdd39ac9",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x2505d3c4eb01aad3e3759156410967fcb1309f9028133f32b61fe8dca05e7039",
"0x6582da47cd85c00d4e318a61669afe8e1969d2c486e76ebe01968bc21302418",
"0x41b8979d269f6ec28ac184c5b2f02af58c26351c6cd943cec6adf2369cdb1e5",
"0x1443d53abe81ab259cbbe0494e98dddbd8284c1145321c2fe24b0fe672cf9115",
"0x78377bdb2570000965c2505997614b99e6affb63d0f8ac1d8909ffc8c2b7826",
"0x21343622cb874753f0d2c35633e7877c6f2f35247f080a1b0ef7012721579271",
"0x2726e864c23bab466a4e2e9c1e6c90bccce6114a31f4283b8a87be3eefbdac02",
"0x8c3cb7979e51a25092b8e3667b5ab696327cedf1db257537071a718d7a4a347",
"0xeadc7f0735863ae63f6d3a2d980cca143ddbc94203075b1a9341fb52b54e7b6",
"0x302733698edfe476ce1360d9dd8885e2fac48f10fd9b6aa494ccc84663016071",
"0x390d135ec3fb0cc6bebb4ffd755406169d4b71ab559edfc3d03da2739f99c35",
"0x29814b855ae75985f8c5a6475383bd701e5279d430aca51d87671614a2eec37f",
"0x1c8271bcd402c844d59746fbb8c809265247177b175fc929101de73f741709d5",
"0x2ea7af5aff4c8335a4556b1e621c3fb76e507132971a4452635d76310c241990",
"0x3758c3722cb764b0eef270fb45c6c76b9d03816b0feae879a3436fdc9ba2abc",
"0x2122e9a87a29841216a1c1e5dcc02363eb1185edc68f6eefdb38fc43454b588f",
"0x2e5132a0aed649314c6665d51926a7a15bdd6a1a5c6f5134faf96d52caadd140",
"0xaaca5b7aa27811dea3376af9fef0cd8275e8f98e235db83ab1361b4c49a834",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x203898b92bb3f8344f220e9f0790ab77acd669b383111e300fdd94d560eb661a",
"0x1d55edcfada4cde82093e306a8a85e703e70d62f77f83aa4158c7ae06558e2c3",
"0x1c57ec21152ef1becaac482ba2cd28adce9bce68434b291a73dafad3a2a4ab1a",
"0x2c77f75ff6857d39dc5e0ede6ee9b6574764e4ceb3d2235aafaf9d8c296bd1fa",
"0x264024c571ae242f530a593ade47778e04de4fafc1998d04196b3f8dc466b672",
"0x123a17496bdc1d2ece7ee0ab1632b43c278328056b8609eebfc76de77780e8b3",
"0x15d806ca8c7a7c727e02ed3aeb1210453d4d39cc3f2d188f421b58b7fb9b5fe7",
"0x2938fef22503472ffde7a36b04c4b36b639064aeb9d77fdebff756e82ed8e6f",
"0x1d5bd19b2c05765e3c4b83781b4d0037fec97bda292e3167002587051efd0445",
"0x5a5ea7612d82dbbecd031202c5503ab73cf5ac0eceefea81ca45697ad5dfbae",
"0x1dff1bb202e9a71287d999a4436ab81298e44daded91984d6422477266da4fa4",
"0x1a65f01a835cc6df08fe1168ef8dc72e04f3c84bc4129d8b1c57c7055fd528dc",
"0xc6bfebef542cd78b44786f865317d384a64ffabde52f6a5bc29f405d3e45c49",
"0xa06a55ed8f52246944ba9e1b351b0f04e95e8e3c80337f7bf4c4cb3682ccbe1",
"0x237af0b506f0185fc81451144bdf3ccdf7b66cbe1ad77e2ce4212f62d6271006",
"0x1d6b421f3143a560e5066eca69e6939c13cb2fb22bcdbfb96e8d55af76d0a7fb",
"0x1ea4cdc48eeb87bdc70e034a0ee1ce699e94b5b1126776f3bfa43c2facbcaf12",
"0xcfe1b82dde8c5eb500403f5ddedf6165106b28c70cd941f1b65e49725335b68",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x10cd524d82fe05ba307dd3aab96a838f6b1fb98e10e284ccc8f8b2b9585a647a",
"0x29069f8a102d5fd5db23e1e81b42867620f6af7e64b36f7444176a9febaf9a1a",
"0x3021dd41004ec315704a8d77ab12c93d89a3baba330666cf8b96cc8042eef1b6",
"0x173dbe8f25c7fa7ebb28578e0fd3103fda835507d8b53d905189757d6638eb50",
"0x1ec7dcb5fd4210ff0361f44b48f4818dfce283dcbaba35c96d77ec9888f43718",
"0xe52deb0da59b5f92497e0ba6a2a358342a8d731ce2f8c19c8df9d58ecd818d7",
"0x77276a2ab3c0fad69733ad1fd53ca148350ba77681b6bc98a0cc52bed3ee671",
"0xe62986c860d75a4502cee8d7d8932b7c77a9330c4b0884cd7152383cf21301d",
"0x1977e4ab4ef72d06317496905d6cde467a424f82f7491ade88b7027645c05600",
"0xe5fc86e5a4aa5897a6653760a4e72555f0ff79de77d4de9f5aa20db5afbc65c",
"0x133c080c57426c50ae24fbe4145ecad201b964fa12abdf7ed16ba45bb76c0d56",
"0x9809f0d9404684e91754565e4ed714b4853b2dfe29e44aed4df3df632f9664c",
"0xb9ea2ad9eb74df89ef8f3132245aee0f0d0b3c91975aca7660071a8066b9fcc",
"0x2bb6bbb4b8f9011e6167cefd64bb4874f6527a7eacdaa10ef403474e332824eb",
"0xe7505f5d74a168934234e8a83b2fd267bccfd4e6c79dd64fb024268dba03ea1",
"0xa96e9aab6d37e9d1a4d3e0ec375ed16cf201f7bf07d2db66c43d48f7dd06d2e",
"0x19109a9f6cbaa378475c1ae70ad79d2f83100b33653b9a16bd84cce3e651616f",
"0x2455d14dfc4e34f8b2f0c411722c66ec626c1727fc695abd1c849780bd746a0d",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x2720fa35b76500f2acefffd7ebf331c17d96a400b4084b78253e3284f942f855",
"0xaf8af05904f43895b5e9236f1782ff4338cdf90b962a3ac0d086812ae628cbe",
"0x25f57c83e4d1831829078d17e98537d56e3c3ca16318f2792b71a07055b11f8d",
"0x122275903e7cd0419e6c815909fd6b655ef0f3516f9c9767ef7c7eb3d8f22465",
"0x20da2a3fb1adcba29246bb19e16ec3a9f51abbd59aadf30737ff92b8efc61ee0",
"0x1942ef506c145d9b15ee431212e1be7bc2861b49e7e68c6ac9dcee40344749a2",
"0x29c8628087cf8197c8538332d6f0253bfa46480244ba31e30d23704022f55a13",
"0x23ec0870cc4460faa687538179bbb9f395a1715195e86a6bb5240d5477ef3193",
"0x220e9648212c6250017065d86188b9612f73f9039803bd329ba7040a9e53f14e",
"0x1e424309dfb1a00240f4dda0e4ddbce8f4ff4a57017fe888e78790e7bce6e92c",
"0x22dc20b39997ba1b40288caabd9dfd3e9f9dc4fd7bcd9fd11079bd602a2fe535",
"0x22275186225901c11a65a53e0a89f199541fc1212b4e96aa7bd3c5bf875ab52f",
"0x17ad868f1ce516279d8d50fd809a1c40e78010418c7aa4ee6a09f9b523a2a61a",
"0x27dff28396bef2873c44964b33b30e44b27a8fc1d08a09175f1cc9641584359a",
"0x9022e1272e97e9aa32634bc3bfc10224a2eed161b9b60f101595f8df207cff8",
"0x10e1f1602cfc30dc4ab3920be41ec7daf5bbe3d96dab568aeafbc350c5ee934a",
"0x1b1aa6b279c2a5fc8dd9a622891bf4878aaed7122fddeec0a20bcf2f9da868b8",
"0x283b86d8cbfdbc913ffd3849a5e70f92b69f5f7917a0401db92f6f1ea11ef2d7",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0xd21897ac3d9b9e3be9e5d182d1ca0441cb3b92776df8798362a4bb4035aa424",
"0x20b3d4db18dd6de3efb359c8e60c86f1d21c20e7a9f1dbe67c4505ee7a3bdd67",
"0x27db9f494aa78c119ef8358a8b122f4aed87152f92391ac9d187f9cecb07237d",
"0x203a42bc685316f63fe61c9146a7426525fff758fc625540d9ad7a5602c6cda8",
"0x2786086cb07a5e84a7bb5516818a0139fbbb33881cd289a36d55dda334f0dd5",
"0x17197184f893d19475737bd7202447e5ef385d2b5f0a5e75533cbbea61e7d791",
"0x505d0e83c6b5bd0ba7da5059689f8f448b27321c23ab4da273db77c954d55e0",
"0x167393ca748cc53ebc1ae07b28ec6a3a2f0d4113b4bd302cec7c0b398a48715",
"0xd479338ab58fc837c9197c0c1c5a3ec515cc52a1a9b2d42b7a3134f2fa13859",
"0x21c2423dd4c9fd1d183de5619442f91ffda880143e43f16bbfd42806fa6c7417",
"0x2cf480612db52dc3cbcd0fb630a07a92e2ea594304763509450bf2d199a2cc55",
"0x71f821a426e22b9a20cfc997f266c5a7a9bb521f6a7353e25dc163a35c07522",
"0x1461f8fe38f4a760b4f4d09b51e6a126d4c5e9ea529eb18c7c94cfadd1ed45fa",
"0x1357d0271c479b5dbfee4a3cb14ddcedd8cf50365a31166c5462acae0b72b38c",
"0x2b328c0d80b8e81a1de5804422b454f019947f4cc167476ae5ac14862181abda",
"0x2e3b540ace24978dedde505b42c9bfab888ae08d442362449012e0806891b93b",
"0x1ce4c3196ea44d6a2aacef87560cc1df5d652527f00924c598abceb3fa9fae01",
"0x2851d688c92c184c79c18d06e3d80ef439074686397a5ebf0800004ed10b715d",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x196637f7373413fc37b3ac318b969590ff0be31ced0513dca26a263d5dd965d9",
"0x174d93a947b4b73d687a5ebb5a4fdac7afce1d9c34af4feb7ffc41be2aa210ad",
"0x1a844947654e868c7ee686ab18a2224639739de7ade503530f19e2743f3640fa",
"0x2ca2906ae9b528c0ff4e3e3257c8d319f8c1368eb73a80ab26cdf1ce15cd497d",
"0xa94ad92e43366cba7b3db85cb00b7b950f1d221f05642cba4d9519a6afc9a1b",
"0x22bbc0a3d2c1cf2c8556116779eab7110ea892f32dfb0ba1db5ed38c6fde17a9",
"0x1e04ab6b0dd11b6c3f59c29bb6fd62733161d74a9952794eae23df935454357d",
"0x229f3e8f6afdba218d948aeb539787170f4e836aee874123698c47fcf37c175a",
"0x995cb64172f8220d642030a21f1d525c39724738d58054d8cb6ac84a16aec03",
"0x12b8663b8e3a6bcd9e2d7d334c88c0fd315117db2052793a7c2434776efb8358",
"0xe306e47bc917fa7e38db51ab6102290228c40250770884029469817b112469e",
"0x290d8cbe5211d46c41f561e89988de784422a5f75088d0cbf2679d753af7ca2d",
"0x1e0aefaf9cd8ef424965e8ac51a7562e11506da29886ec17006b289370ec77d2",
"0x4df18fcce60a87f50455c9d563db8f7630a0dd63c55df4a3f549ce98663649d",
"0x95973dc58f6505b00c033973bcc95f1d068c316710b63260c75e300e8f20f98",
"0x1d18acab418de031d02587a3df05d9dc50321e206878959871c7c2681d9e9ffe",
"0x213d73843dbd3c4e90fe3ff4afb54f113a94a1e94ae7c93e062ab7cfd7ca42a7",
"0x13807261e197788f606915b736d04f3127e3a532870f6a2885a09e47c7a9bb03",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x250b609ce88f0983f177aa4b1293825acf49cbe1ccc1d0d2218eb7b54d8720e6",
"0x2a3d7388587ce77ad142e1762efdf17d8904edd69a6a90161b19a806ca2e5361",
"0x1905f00fc3b1cf3fadde47cb7e1b25bfd0fc503fa90b34c13b3b1d660fa8478e",
"0x28d30399b0b09d77d5113875af727910162825bdf73eea4dc375729c8b1b4415",
"0xf6056c7c8bb29f47a2337228d5bf342fbedffd5237d233b3f1505e09b063b94",
"0x25e6ecb2921119f783a410b7d24c83a5d9c917461edc62d0cf95d21be424a561",
"0x28da486586fa7a6ee7a2505d51be49e38100470b4ede3b1ee7a5c364ca500cf3",
"0x1e7a7c44e72cd5a635bbd41a543c9f46945b7851ee8b482871b3176557846ad5",
"0xf8529665d21549208b12388dbbd55184f23fd713258c518249d4ee7f3acda6",
"0x1632d84a0d31502ce509b0149da1a5293df1f8c11b2e2f10d214a2f52e4ca22",
"0xe576e8ba8cebe7bb81ab72d7bf1a08c9830ad49016e9bdb83765bc6a05dd3cf",
"0x116f9f8556eac9dddd689100fc4e27dc9a42c4534322f4e18379bee32b53adf3",
"0x2617cb3f694b9d35852d5341c15fa51a47076430dc407b88dc708a57a4dad9f7",
"0x2e1dabfcdc2242aaad7c5601c45aa376f8bf128954b04c477946e91893bcc19d",
"0x20561db57fda4a5d18be48461c4209d39b3fd760fcbcee93874249d4a56dd4a0",
"0x25ff336f1b5fa16576da765273bde6d1966d96264cc4e70766d170cffa123475",
"0x2ebcfead11a0a9f882539b2129420c8c952361a46298713c3ed4d5d6af8ec602",
"0x17f4133aeaa19e905765128b43d633f345bd34b512f2eef16a1dccebc1cc56db",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x1b3a49687cfb69278fcec9c9024c2cca61a3ef43728c21bdd11f378bc219aaf3",
"0x21c2f9fbd8e7212a57051f8e39c6e68f3849797e36692723f44e0861264a5676",
"0x115d3df00fd3bd6e540dd0390165eedc883ee6efc07b409f3675deb598eade42",
"0xe5729bb5e9bad3ee592068ecaa3e9fe83de56e38603925bdb9862a460ef4615",
"0x285440545506adcfdb2776c74d3aaa25f7a7b0de3b7c55f0e5b87fb7b6e0db46",
"0x233f80e930f4324a6a0b146d07acd6fc8f3d9bb48cfe1f072d75f58da84e1eba",
"0x21f9ccd305b8bc81a6b2116e883c69ad27c8455063e66e31d6da818ad1e74de7",
"0x28fe2473f0cfc0914c93b9a49af57b809d9b205f2631dae15c8c9efc67c5ab3d",
"0x2ec03f45ffe70531d6caa30b55289cff6ce7f852160797a2b9c90768c5c4692a",
"0x1b6d0de6db03f0bad2f0d4879bddc431708a821df4cac5ee89cc9c9ef70dd9f6",
"0xa11e8876f08f694ed493dd39340e775eb7a6a41aeeb94b274f24be97e39a3b6",
"0x17ede99ae68e039acf3cb8d353b0db916c2f2e721f19965a474f47f1341cdc16",
"0x18fff4f3ec52c43729d8294575f23f8bc41d85b9bea877df8fd12726dccc4909",
"0x21df71f2c6a62f3945fddce6d52d2aa7d326b29262ef4b298027c26473b9eb10",
"0x11b89da0475d9f041a5380c999272eb4f787090d1d55b9860ede80ba3983400e",
"0x8dc1602808b04a2f3c3a15545d364304f4f7cdb9dbddbdd6f632991d0a5bc34",
"0x7faf1ea463a24aa2845460d38458855ebbfcc9e1d4e775a350a0e88275d6fe8",
"0xee38f40f3c1ef1102552cfd03824d68bea40bfde95785d7a4c3adfaeeb4ea1",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x17fbc184678cfb88bd30c7b1c3d7b28864204d74133ef42de469187f5ffdeda4",
"0x1cf9d597555605a940cde10452784e867f46a2ae74fe0465f4938c46a546c3ea",
"0x1c092bb49f2b4366b33e2dc2f6ee171468f95570188e4b2995b925b5539e8d63",
"0x12f62053127e2084dae1db28a6d94ff62ef6a1a4732ab052b20395d0cd4ad478",
"0x1eeb4476ad29cbea12ad7cb44732113e58c0ff598ab4648df979c474eb3835",
"0x2c38250647fad3eedcae687b1ab54f6daa582bd29631c73fea1d2f5c403ddb7d",
"0x2eec86ab0272f57df25d8453fb38e9fcf0dbcad228ed15b9e7ff30dc91feb902",
"0x254f0f4597efcac8bf9ee78bbbfcddc5781f71565217ef7af0beec6e5d5f06fa",
"0x12a47fcdb1b19d720a4398b659b2c74c27adbd2c24ffae0101c4d129bece130a",
"0x1bc890c0199da7edf2f39365c4118f3c1d1ae24d666af9ffb83ab48b3e00a204",
"0x125272075c48ad5c41dc73c2d27de0026796d6b47932bbeef89bccdf92fb7598",
"0xaeb8e71cc24b05d8b4a1aafb1a16f8400cddb91e6d42fc8588ce50a191b8c4",
"0x60ece14c283b3465418c6b9a9f56cf9c96218b68576081014122ba05654b3",
"0x14728be414cd1dc79e436e4d72fd9392e44ec7d6093af846a49deb20f2823269",
"0x21d5f66e745ef28c0f7178722cdc14bebe02412911433fb460be724281ec8361",
"0x6bc631335961a7b600aec2c433a850ef58c811cecbb74bd1244e0304ec9b6ef",
"0x125b7c277f162a0a077cd6f1981e5f22dbda2a0b0bec465a384387527ce3ed3",
"0x2a2a1ff5ede20300c015be7630d8f1060ea8aefcc7ec0f9606e8aa8cae99bf4b",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x247c5ff976e2ad2713b0ed0c228a561962155f3455fe766e747b3cc613629cbf",
"0x28cb0837980e09daa3e697291898baf1629eeac4e46342bc071da656c7bf5fe",
"0xfa57cf86065e02c71402e6dbdc251b1b76c1205eb14d883d95b957b376c6bf3",
"0x1333d78ac8096483ce1959d954323802c853a4a0369fee7ce1261828501ced20",
"0x14d5ea7f1472388751201a664b15f402974aa24f6cda9a91a84d56b1b6eaa776",
"0x77a697d92ad2c070d058b32564a9efc7e1a037a1d03962db5f2719de5cc6c7f",
"0x27c6793303f3e75361c67fe56b8ede9c3b13ebc8d10e6ff787e69aad56595064",
"0xd69340f71fbe2b9772464b2f1fdb25c5d93cd365e24b6926705a77a890e08d5",
"0x1e2d709a891be7d5411fcb2eabc3cafcfcfdabab79964189758d1afaf70a6970",
"0x2cdb124943fc7c3287733a0a3c078eb98adc3938120ca02b14a58a46a44f4fa7",
"0x27af11497cb4a8d207471064e855bb48d8786f0b14366f833c710766612908bd",
"0x392c9300d049ca31025170880a47ad61b80b1dc03f3e6db3264ed1219db5b04",
"0x2aa58c8c95a91bd321d83ce2682a4b7d2f6e869a0a4cec637a272b0b30d58434",
"0x16f7b5e9d83339c0a151b1142423fcd8d2c1758d677a0ff7d1dfaedd525762bb",
"0x240b50d50ff6a5930a55ed800af55fc621e8b5f0333e022a49e1382ef80231a4",
"0x16e43d57fc3ecee17611fafe5e8e7b053808f780dcb1112d1841f4ce52c15f3a",
"0x18b989d920dbb70d51598fb2a6ba22b1825c2f3f05f7fd4897516fd749e8cee4",
"0xe4db6c770ce5d662b21e5b463d99371bec01b6220af53375b8d24bf76685d9a",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x145563ae8e6e1472ade73ff73dc88ec306cf540be2894be758c99953826664f6",
"0x1892c99793221d1f11e9c5637757db12c001ecef9965c00c697cf49ba9b881d1",
"0x1f965f8daa018ee30596706f17773d33e6835e66b8aad44e71955303fce6eda0",
"0x2935511ac83c99085b247a68119593d44307b95394392d8bc1e4366b54021442",
"0x907907697dec1e1a3bd179fa8ca9a87265997bcc1bed376bbb2647430afceb7",
"0x3396c267b0ba914a9c4ba45fe06a86a8b3960aa1dc12ed7943cc8a45fcd50e4",
"0x679ebb051d64df99a0b2c93744857adaa8802bbcc6c17cf0cb29776fa229e85",
"0x2f93483d03549c31b606b33224139de1998c0be6f9e4b900d9fe9728588c98d4",
"0x1458fbe748fee53d852d83b0e7e032dea42fc174733ee672f833d8c91b811a65",
"0x1a90f8cdc1c63f289f22cd6e4eb3bdd3b7ac9f04cca49d7d7d8cfb0f725805ad",
"0x132a4fa82d6276051f33621249f4c6692cdde99766e52b21a0896e2faa1ce5ab",
"0x1d79444933015ed9a7b37b53da5f35dfdd9da1dcefe3a454ec98da690ef1880b",
"0x268a91dc77ae88ff05486fed8eddebea679c01bde73d634f5cfb29babdbefd07",
"0x1e011a8f14bd69d6439cded45b157075e5d44ce51f4f9fe6279fa269e999e1da",
"0x9d4ccb992e2ed6a7d1e09649849084e4c7af1c79db784e239c39daabbc69a66",
"0x4bd333ef75b6e20a0a9566c7f072498868dbe38e028bead637408c6aa43f232",
"0x7a22ff875664c4db8334871b434ba01e949c60a4264e8724abbec4d9822994",
"0x2ce7c0aaa7d361da7d2d170270aa48f0a962db88bc02f6779be5a5079e40c85b",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x5c14e041616b9d457521c279f662e02245266a12b5164bfe05a7503440ef15b",
"0x302134832f0832bcb9fc6fbd7f03c49e7d5d081d455eb0e3267a6e48677a417",
"0x1ff1fc0a5041e83cf8c145b226ba9e4f38e42e58d15479caf6102d5f0a46c1b9",
"0x743a2f884e7cc1bf16bd83352a5b3324366cd09838da3b7af8c09aa8b907ffe",
"0x1602376f4173d959749ec5daed8394b50facff3fb8765a89b59b6fef0a7d1b41",
"0x7d2cb9c94b0a81818fce3f94e82bdfbd1074e8c5159e7fb0ffe12291e9d833a",
"0xbb2f1a3fa920981b76feca1519db3aa3c26b703facde82423479b244bfd05bc",
"0xef15ab6018db6f518505668756a151c50ce609657ac3a1390df76759e9eeffc",
"0xe6e886b5371587ec93eadca0b54cb77c72d4a709bfd9431c5e4eafdb1f3f3bd",
"0x43868f796a09019cee928cddd4779ef6de4ad17578c1eb5ed9ea01761f46a30",
"0x244a691b12e0202fd70fb283580700f2e25747c504c2a0ebd58993becaf84eba",
"0x7db83a16d8673bbf160b3b0d5d96e7b14040490acb6787052778aeab1bbd9a4",
"0xa38eb2851046d266aa8aa6d124f312e00bd995992adb16e47a60a086d5b7819",
"0x9afd14102f5641fac42f5aad7e1e04fd5779dca6d20f21819ef3eedc779a27f",
"0x17f1055f567a079eebc36cb46488e34062e598ff88e9e4280f0472021891d500",
"0xe742b77b8daced0467679873f984332608e5cf5f573295ab6ff101c86bec259",
"0x1e0137861ce424e6fe1f8161847e1c804525945db0267bf56e8af64c14cc2d2",
"0x26af9938a85c56e60ad89ac9ea7ac83e04f574d33d340f143ca5f058e2ae18ff",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0xca3bbffa94a2440660ee1481664e28729a7a581eb47fb1e7f2b8d19b33a7633",
"0x56ddf288c8533174801eb64e46e332ba077df88559d617bbfdeffeac12c935e",
"0x18f68bd602682d1267ce57ab65f27dce1859bbbf29ea5ca4c1a7c47ee6921f3c",
"0x30595b7e6e83bacac2e1b9744f97c045f81ba17ab940a093f0786aebf107f4c7",
"0x636950f2ee62115195d570a6c43d18e92a3edafb2eb0389482211b486f979bd",
"0x874eb8555f4444b951b3e3134f96d75ad8866a0da0775fcaea7d80cc0be0c95",
"0x165b30894e68376015f8589abacd55512eb63d272ce68ce7d478beab7672b55a",
"0x19e4b9ddc57a559648da219a93cb0ddb0df84b89cb0192814743bda58e7e025e",
"0x25eccd6b96f10e2a0da8fe7001a7458e10c3e669cc6e9df84e4b108c20a7802f",
"0x12cee7ff70207b2601a5198a71c1430fe3754958721cb810b8de2fa6c464488f",
"0x1f99c9efbb41738ea513af1bb140f11e84ce414f08168e165620a36032e844de",
"0x12529d825e81e3cc950c208d2e40375f320daf93ae7e401dd21f31f69ec39dd1",
"0x60570f962275a45bde460c929edce1c9e56d5bfdea7f5165a9ad1f338e43278",
"0x13d11f33f4e872a1d7fca8fbe95fa47baf3e57002783f5503c6522c2835d8c20",
"0x2359f3c444f7908a0e3a80861a42251115f650fa4e66febf815cab17676fde4c",
"0x137c3d8494fafe8b81567121140a8933a957e06a86af79f21aa0786ee032071c",
"0x3527cd631d2e66d0f82218ec1a2ae78d58abbc17519750f028e010153b5476a",
"0xd67de5a809c3c17ec81f87ea47056557cd9a21c12e615f68b5a3b8b2be5ce9",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0xe0a49d17b5fd53e41c716eeb7c3170aa596a3d994cf780bb4fb099a3e628ced",
"0x1b7180247c35af01d58bf18ce746e193c5f9d6cb530deb707cc81f01663c2409",
"0x2093c5ad6ec79e87b4c99af53c32b7c13559735acc74ec744a45da050d6d56b",
"0x26c4d026b6da4a405fe6d74238747fd571561b7265ee49910c447438e9c0e1c4",
"0x1fd3b662959f05a5ca35ae543da8095f78a4544159475be1e9d84592c526f777",
"0x1d8a119da46c01ecd28598b1843020f2affcffbd0d2ab74513903b0271176911",
"0xdef9ecbfc4c245d08fa20010a22886c01234245042181ccad19ec06eecc5aa9",
"0x2f389eb9dd0db3310260a089bb9d0846ed025ac437c1eea56dc5c7159e8474fb",
"0x192d09f6e1f97e95858b09dda316902de5e0b946d3050a296e86fb90c0824460",
"0x2abe84bdc7a81e92248e62816419516f31b9df3c36088df8b0dadfa242af8f96",
"0xec8036ad332bbb0d8eb631bcc55ff0dd1c71823b8ebd6b8e0699417b22d64d9",
"0x212d905745129480f6496bff628cdb728a729394f7e5dfaa13004a4dd6d7ce01",
"0x28b10eae188741517e25e6abdfb63f5c0b8234a453ba5f73d55731b126b8c442",
"0x2b55e73628a3146399c9c4328e7b7c2b06c3f9c6b2d1c2f06de3b2b54c2c50cf",
"0xa288f1c2c2e7b4fd66632360642bd18970ca489714681efa3a79597368000cb",
"0x2a98c6af21ac38e6d8f70a8cbb5988d6aa929c6cd8a7bd41de02d6a461e00398",
"0x28131733b6f0f9dcab73a997d3de4c14bbfbe517135d1a8d0559f0974ebb89e3",
"0x1a0422b448652f8ff28c4099a5857e35474e8864c82b0705aa291052fadb42de",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x759e02ddcf9c02faeb9b1441d3e04e2e26b1c3c21c1a69dd452798b1ecebff5",
"0x1e6e510013a7d26108d160b3bfcf269ff0f51a0759e1e1b2731f7c3fd9f65679",
"0x87b228c959aec21d112b82be8167799104fcf2f6a1311a8f8c6ffbc9b91c0d6",
"0x1db2a8fdf80413cfcb6c77e97c570ad471dabc38e8cb2fe680016f0dd6d2c5e1",
"0x2c866e9e002f7ba0ff4a92bfc05fd5a9cbd2c4497ad9957ac9434acf2a3d3aad",
"0x29032ecf930c2a41ff93c287e9bacfe4ed6435f5bb377527f945ddd90f02269",
"0x21a948d59bbbb4b75d7e62e29f28fdc1ad21e673c3d895d264f3cbc0b9c0e0f1",
"0x1dcace62396a9c5fefb317bf0771ba35e345a4e113a9be8b9ad3bb4f6a62a287",
"0x29f8ae5c1ee78bcc95db21cba9113f31c1046c41d866a70383ce008a9e6aa748",
"0x27c5c8707b69d2ab24fdc16a043d24f3a2aacce0994aafbcb79754e26d7a3c0a",
"0x2d34b96bbc3259695bdc35d7ddb28d896f64b94f0923627193d50d82930a61fc",
"0x150254ed341e43d3a5edf9fd4825f8094317dfe0f198f908355c9ffc0485b4a3",
"0x2c4ca99c167d67e6ad639409ecf7669b0a99ace688c6c9c33a34d71dd3ef3c97",
"0x3930cd56e534c58be531f7e9e2b9cb3efd62d541bb6580a1246dc9a4067a7e0",
"0x24f69e897348f292f1ff886d4992b6b108f1312a3b194296f07314af94c27016",
"0x2334c3ba5fd553bf774f53d77c3f556d404f487ad7597abf505626e5fc34a054",
"0x2d72d7bd580f41990e776a68e9a1252d1c5d003fbc9bed64162a1dda8952ca5a",
"0x2a311a00f6cd8196a6f12a725b9791b49f46a20955a0cc05435e136c3ffaf3e2",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x15eeb7dc60695985cc24a901b81f2c2ac6aee050695ab1de79e300d546b1f043",
"0x1065fd42737ec473c96a3741ef8119bfd955ab6066955d4cdebaf9761ae33e3d",
"0x17c3d9212a09026f12794eee3b04840280b12ab06bf5c688f02cc772608fad92",
"0x1b3d7424ea8664710a024d5f57c9d3b372e2c1f5428683da382464e39154bfb0",
"0x1122aedb98479614cfe5927434d6cb11a1ddea539e33c7771ca44535c510427",
"0x55e9bded4cbbba7dad989d9b1295c5230d5a799a6211895bc412ee24086d628",
"0x30263db0209be791391ad08f2108574a6a882f05b6c8055b0ba9e0ca8715217c",
"0x643bec3e72fe54060c78a6188b7098bbbcedd5ae549f5d0f95594d03501c1d2",
"0x24739ac04c239ad6549658ca1b7e0f62067bbd53c3f0ae9c3a0160dc8982cd4",
"0x831cfa01b84554e6f26b9d604c0f91447c6c5ac03ed1d318b7944c5773827b3",
"0xc0570121f291d8fb7b7a62cae11ea568a394915a9cd70f634830a5e36f93025",
"0x2994d07daf7152b5024957f7188fab4452714606c505530854cec14a582bb6e2",
"0x2e5ad16ef38f802fc789dc46eced2ccca71fd25cead1d5d1f14c482061cc703a",
"0x9f1fd3fd77d399d36089d589dbce43f1f563d8d4d927122bf29819a0224053e",
"0x1cdd5d1efa77002334e3af50973ad87009b6d26818bf78396b7d8924c7aac675",
"0x2bfaf90c55d63a08a0ac948874f9b1fb60c0faa0a530926acf868296f8478e0a",
"0x12d3e6c5009562c1647269d1b507123a2f0b7729804b66643f081bb782ba7cfe",
"0x36e9be313a952e3b77fa42cf13942e292982a7568964ff200356a1c6f82e473",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0xc34e42c97488447c321d23db64b398c6c25d4d9fd1fcfd3b5626674a42d1cba",
"0x27d82eee53199316ed144a5591fdae1f6e2be76b469f606e7ff6759a8920dde9",
"0x895f2c2986316092a0366d6dd018ffd6439c477996b4d2eb5c3aed2cb0c1025",
"0x22ea26e3404fa1f74ca0be2b73237d0a44014f6036f9a96a1ad1b6a1393622a5",
"0x245f9c36081e0229dff1c693e33858b05299349c921d4163c12b8a60cddffd9f",
"0x120718feaf2106067a3dd824dc15c3639312811c1d8e57825aa782de88a2c3e9",
"0x1cda330df4f05747f9fdf518d146f9160556d32d06f8c21f9f22432ae2abbf0d",
"0x17c8bde1641bf784599b38a3ed9568cb3e2a8366bcedd556711e85bdfa71fcc3",
"0x3b039fece617d27bb74f64fb7c0e24adadab1215fa077988fcb513b7990caba",
"0x2585f69b3b7caeb08b4fd4403b72457ff3953e708f20a2a0d40872d5571dc707",
"0x1cf1dd7016fc72885e841cbf7e92c931d99a2cddce535f72b065485b39fde3c2",
"0x11f30f1bb28bfba19b81bf60611b0f26c1a2a7f6623aab774f999ed62be03449",
"0x179f6c3ca3fcbd7aad8e1ef759216d589ab51482a6f7395c93d5105ad79c5e00",
"0x5193282c4bce9d58154eb75ea6fa29683e2d2376d1e2b9d2265103b323c014a",
"0x13f144857af17bff0c12f0fd177a6da9b1b3b10842f4805689f124d52d1063c7",
"0x290400f022f09b1359bcb9812dcb353472449f4be850a28d949f914290aa598e",
"0x26a590e2d283ea4e4bdcc39fe4cdfcf9b8e974b4603ee78ba0cef07e042da923",
"0xb0bc561fb4ba346db8f28d41eb0bcc6bb1c40217610f165c5ccf4f2940ca1a",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0xfc4b28f50f749c8b55bb53cfd3c76ed13a11e16eb3816520d732174b68f9694",
"0x1c2ea86841afa29997e495b0e1cea881562319d9edc2aaefde7b30da0118baf5",
"0x181f1de1e627bc0229055b2c08f12ad3b70d540b24fec6128e359cb8f32a8a",
"0x2a4b0a0fe77c7afd26b08ac0eec6a30854cac5eb8c070db07a0a3c5b80626747",
"0x13f62bb9fa1cf209e303e7626fd734710668d02b4efb3ec507c1f5a4b59ea94a",
"0x2b5f4bcb8b0c0c1aaf90e370e93b611bd34015d4f4083b6feff51c60fc7f90da",
"0xf61bfbacfe1eab14181c0b9ccda1da0272742a0c64ac873321c85af7c0f4253",
"0xf29b98701d484f65bde657f17209bb04d1cdc52d1d45b8357d64153ee0639e1",
"0x4f50fac0a62268e7cc24a64ce7f784bb1d7982be69a9dd168b0f191da33a5bf",
"0x31b6743a6fee9be625862c05ffc4d4c656e30e17a4d1e9a68cd906ba9c5c784",
"0x1b2d7a1f0ad3dce2e4b7fdb43de39d6044b9713b47c82097fb72721de84b629",
"0xf2090d83056f23a0a8519ef633ad3f7454196a1da06db6aa93bb72bab913dac",
"0x1f36ea15e1ef84a869d23f3fc7c3fc0bf425301e98022694e534a564ef69610",
"0x1e7fdf4b6edfd3e8e19e73fc8f938b96bb271f0a8b5beaee67efb0f5fe1d8945",
"0x58727d0875e0a1a590634c527e8b69a4c6e443265d013000cfdd5f00b9faac0",
"0x65c67297180d56cefd31cbde7691cecd344e5517d93d36a2ca00b84f2ac6406",
"0x26efd963a80f4104192b1e66102143aa18c6956b4edb14eac83399cbb957d426",
"0x2d36f46690e480d2cbfe0f647ac99c753cb01490ad79327a1192e7c5bab301d0",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x1ae20386490ddf16dc579da580c4736d5e20066e4ca980efec6c412d6c5fbf20",
"0x13855655eb53d070d6a3b9283176ec875cdd04a2310a8bc7da3778bba3a8bf65",
"0x216a5047fc9a6423e0dce5c2fc7ed22e17a889ecd7dc313ec97da530b0012dcf",
"0xce0a7fe4c77e0d037ce338a7272ed67864f566705e5422b954effa901c1190b",
"0x295c4b9a9a97eb19dd9bc5cbc4704fd57c100276b7af57e07be392c18a953bc2",
"0x2989d23a947312faab571c5ddaf9c4d09c22d1876e7d007847511d6e42c2f407",
"0x185d73d77a0e88f9a67e2c1a59d6473706e24c79b845ce5f9950f0fe26d6c794",
"0x182b0ed46716f64fece882661791a29bb29986afb83cc9e194efe397288aad4e",
"0x22ff21a0030a575a4c62a82b286a37188b4cddf6d4285c60b60d030db206b1c8",
"0x1313437aa7949a4ab64fe85327645748fd2a58e0e3d3b85626e88f7339d7b261",
"0x6efe22994b02451beba2f6d0dcbfbe9b920817d74cb212adb7f738178ad2f40",
"0x301063036e4697bba8d213d35d188697239bbd1b369e7bd294ff4dffd10885f",
"0x1c90fb3a46ac9ade74d20bbfe8403ef060fda9603773064369d4c344bef5e817",
"0x2c52c601cc0042b449329c045fea856de70f98ea8d1b5ce3a30ccf0fa3dd8a52",
"0x19034b0b0a87c257ac4944e0500e97bfede7ed2dcb148c9546e3b581aba9db21",
"0x27b086852644a1c773f0ee6c7cb6e58d7bffa32638b79b2990bd7f1dd683eed7",
"0x16cec1cfec5d548a707a44ddc3afee7db168b5e986eaaa885748a368d1fc7607",
"0x23e0d5c20594133dc55043bcc80a422dc9d59ff92f3e1a9e934d7c7486bbd410",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0xfc871014612f0f2153585878907f011cca957eb00e86bc50f319ccba20a005e",
"0x179dfedea941ec28ce16ad4a6ff320656632b0750e6616889e853719bfc6e88",
"0x2200eedc6d000a31ba05af605292a6ac3db87e5e852b7edcda9ba306192823e0",
"0xe0627308b4486b9922aaff007d2dc88a4cb80da9d90be1bd13d63f3ed7e1fc7",
"0x941ece97766c9dd37c07cae87220151b9672f02bff4006700310b95efbf4f4d",
"0x2d8806727504e7c422452287f378c0a9b859897254372eeb4e4cabd2c038067",
"0x1f44136953c36a85d85da27e57a6dfaf955dc7e1d456790e53526625f470624e",
"0x2ad2db1a37881b1f73e5ae98d404672ece9487a08ccced17974e1c925b0f0234",
"0x1ff27989f4d74b500ad47ef372b8f08396499e4461ca7ccc5914675365cbdc8",
"0x1d9e4bb1ebbf654ac8d81380ab49c45c698f4552fc2b385d61f1729f9a434fee",
"0x269d2125ceaf4911300dab597dae2d4d97714a48abaf059f0060c26a6b462411",
"0x85fe9b1797ff4833c76f23b0dad53a01728edbfd28b9dd5097a727725bae3f6",
"0x2a1e5b7a8bbde19a0e4e3e189a5375543ce6879b8ac6c94b3541aa7b1ee5d73e",
"0x38f9b328c38f8ceba41d67319a3186ece9be1bc9d16142abc3099e2a910e1a8",
"0x3ebea7ba2a89695b6be00973736a209479d0e834a37f5ef2863063552d840a7",
"0x29a1eb861aafda5c9a36ac4c094cc8763b491902b18b9dd29bb1b8dc216bd96e",
"0xfe28a88001c17b2b1ceaeef8891bfc5abdb937c7fc6d51b2dfb56e5347c6294",
"0x26ae83ff720fb65932e831bdb0705d7ae60c0289f7bcfd89a020a5f3b30eafdf",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x1492bdc61b5ceb6fc3b3d91065f585e0d1b037bee203ca82743459c1ec00c65a",
"0x275f2dd31c5b79b5f188ae669923494e6ffed430e8c75bf202132e50b25c1a3c",
"0xb327a4ebdc41f56502186a656ca06819d1d29a32a6e70588f548c4fdb2f689e",
"0x2c5e3d0108521c8af0d038a617f2a0725d5003a5b9dd824a95a59ec6bde20b1a",
"0x1b611cb1e5f7f2a0c4fbcad4e9dc65da5c6a34190fb27a8148359d465165f9f2",
"0x22365c55c48c5736cb4b7dae8fff495e9c661e9e130af620cff5f40fa1210e96",
"0x73fb93220556a2bfae1e07d2d076caa44c085e2ba6644bf4256094af48ebf3a",
"0x213fb8bc8c11ecd95bb3311eb046398f377c3ea4208d14b80eaec8c4aff2bff6",
"0x1a617c5b998762909c55ac93513a6d19ed1c1e28ff8b78fb3f551158a9d0d99c",
"0x2e1284a59a10203966d53cdd502405dea6889490f9bcfc5a33ff9d8b6fee17c6",
"0x27c73897b8aea1c08380d8ca28d0405351b957b064abd17afcc647b73ab348cc",
"0x2bc53359578a242289a79806c04853ab89fca02a6232f152d05b3d1dfbeb6908",
"0xa8ec1ba29e112cfc42aff081ccd3e7e01410696cb5510377072bbcb2f9600c",
"0x2e0634f26f73f112cc5f285e4a232f694b79c05ac5bb9c9dab89dadfd0112ce4",
"0xac9a6885431d005e4aedee93dbcdb638cea5b17c363289adbba9ae9e3fe744c",
"0x216854bce3077af7b8294565ec200c0c455b9d5fb35cc98ca36a323620b5eae1",
"0x1603ef2a582a0adbbac5655b3c3202b60ed3c22e59fb442c2a7962b9031a33ae",
"0x2cfd0eb51e60c1c0869f5dd163666ee8630bb2f3b527af9860f8e23b2fe1a869",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x183f34db24beb7107f0f5bf9fd4c2532033855c37b5463ccbd658b68d870e6b5",
"0x1a5079190245f746de5345f0775f5ea91712edcb4f165f391e9c8f0b1268280b",
"0x249da4641b8f13206d3cb7b3943d4ff5d0813654aa5d8ef4eca39cc6cddcda09",
"0x2e99f0d1ad289d3d780147284155f335f34224f7f8d3db6b008d952a84a12f2d",
"0x1a95c807b653b762910fb0b9d8d0b4a32b000f490fbe925e0e207842a2dac0c5",
"0x127a15cfbd88e0c122b2905572c496df5eac209879a235afe08e8d2e631cf46d",
"0x1c22d61ac34f05eab74aaff0cfc01689132754d26de62038964b5a8acb1fb340",
"0x2ee46c0fbefbfd75eff882d395294889d915a1a1e858e18a5b14c4200754f9aa",
"0xab5eff34c9c0bd9fc90db5b058bdf68fab4f25eb7602e9369060fcb6df9139",
"0xa91d479dcbe07bdbda4249188361f7aa7e00c8edd81eb74dc176f19bf05e8f7",
"0x276a57e2c21843be0b10b8877849309b33d19089838744ffc2454199e6833f63",
"0x2a56e477fb4a285b4edb52b2f19fd159914ec3b384dbad98850a19dd9f44c2cc",
"0x2fc33d4b761a6ffe69a5f4f2ef4f41f727d7131a2ce15f74f67ba17236e89263",
"0xb9ed85bc3e43eb0c395ab7dfdcff5da94fa809bcf5d20da866a2e0712dddcde",
"0x2921971bfb16df44acaf0447858eae04720bff84acedf57d1059016932c0a9e3",
"0x1ef4f47e8d9e92d554c8bf9312e0c80f5850fb5f124421a4a032243627170429",
"0xb099dd3d5498781141cebbaef8b3c9a071d88ccca2efdb8d97071e878718f44",
"0x304a086e6735ef7a00c6d5fbc6a55daba181f3ca901f5de3c9a29f6161ba5f36",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x286686a6d53d085d60793a0815cc1b77c61ea45fc4451e7b99e9c8e6bc80dda8",
"0x1609e1fceea6ca88af1bc5075582363ff305d5f39683e70710f2f85501f4ef87",
"0x124f27013e00d9b8e11f6550ccbd6a2b9426da5f482ae5746601d82fbabad65a",
"0x2c47c743ff1069ae71b811ee87050e9e176a0461d8f6e0472af4a7d8328071bf",
"0x11a058b976dc5fb8424c68192aecab8f56b683f5eaf1559420349281d849d746",
"0x2222ec9d6eb62f5f431eb27a65f792b19817580562d8482027c7e84dbee5d7a",
"0xf866b167acb845b0905fc05dcf985849cc7b32a76c532fe2774353ea37f1fff",
"0x7197c02fc0c5f1e13bcd825e1f0df47111d16be06e4f90e1ce2452ed2758089",
"0x99aaa6bef62d6b1f3098bd34ec2916caada19756bfa2dd222cad7fc9b296c66",
"0x1a210aae2dc13bd0bf76b45124f771c486cd2c4ded5f125600ec961e3eff5d16",
"0x4ae93e4ec96ef4a97132edc6219ee43d41d3d3820331152a83374b363cefc61",
"0x2140d4f69e842e9257960fa14aa526f36d6b3204952c5763551600a17e9c5c06",
"0x16f77df72961ff15724b2cac0f79106cc9bdb2b3d25534263883e2e379722303",
"0x2a679813106d2d1a88e194dd55641143a5aebcc2204fb4e8f2cbb40f637e506",
"0x12582d2bfe22fab8079bbfcd7bffcfdfa6a33221fefe31e74edadd5e0e58a361",
"0x390e71fefb45b223ab77d04c90727eb97540b7d3d9ca70798bf3b3f97d91f21",
"0x26b440f48d1c54c8300aaa49b9ab8afe622d6f7579857ff986966832584f82d5",
"0x1dea175296f5bb238d04bdb371b31bdfe62974b0a219f55be2c3e644e82b5bfd",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0xe0e6eeab1dade829f7d80aa510ed423c86bdac7b39dc5fef6df9b6932cc812a",
"0x2cebbd5b0d62b44d3f06728f5db838c617d933c08491c23b707220a2d6060af3",
"0x2dc31eb7528e36ab16fe4e845b1858b44b7f4ebcff8c5e2916b5dbc93aada42a",
"0x1eb3bec02ab6b2a2977c89984273b17a0156202f622edd7adf787246ccc75f2c",
"0x220f79359bc26509ccbbfc429980c2e65b195b3c8b0695c8765057a2d025a67e",
"0x1590491b1dbde002f869c666a1f9feb983770740ede60e726926dfff31f24806",
"0x2feea161ac374df1bd1e90c3d84f0bccc39efcfa6b34e12dae7ddcd0b3d7257b",
"0x1a29866fc7a388cbc6c3c93ff3eb7f37e1c5e83659b05b0522bac1dcb33534d8",
"0xb8199ba3edbfd7da088f17687da77fdbcce7f4730915cd9f18aa86cd03574f6",
"0x2791b7c58a031d038d076f7d6ac43730933a76ef48f203fe92400d60b98d6a2d",
"0x2f454625556eacc7f31439c8f2b0ef06ff37ed616f19533f9266f28ca846019f",
"0x249369afe3c0b2111d448303abcbc18110aed1a1a4456e4b3bda7e8e2dbefc7e",
"0x12edc078ee15bebc5ad4509f3d44d7c25607fbd61e9d464d84ba3223582de54a",
"0x22580da134a629da679be562a7a84163a1565af42558a04c64579d98bba260fc",
"0x1dda309f47e45f9a6cc38c7ec04588c51a650c8f0f101044ad6c0b14a5b0e6e9",
"0x2ad483577232eb393cb943dcde6c616285468d4b5af36779d86bd789c499482c",
"0x28ebef81b1b34667338b9828e4858f956349d34cc99584e1622e6e676c221847",
"0x1352a39d4ec27f0e72f991c448a1511e1e7ecc4f4e76b705ff2551f2cd17233f",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x2697ec9fcc93302d5f66b3e1c1ad9b203521f05ba99903596fcdb8fb70e4cef",
"0x957519127bd1afa0826384ece846813066831571e2aaacca4494fbb2a628c48",
"0x1d8a3eb38e9a520787f7b37c59fd309e3ecf19a45e4e4855b53dc670de8d395",
"0x13ca248a44825ad1fd500351378a1c873fcbf6fa6aa3da48c274d1227afc90eb",
"0xde6ab6ae985160148e09d5d5b35acc7b0f61cdd119ca66ba72a11c89ffb99ae",
"0x6177434dff8487f01d4e7fe5dc1f5963020409384269ba24b5751da9470fd57",
"0x195ff62cbbd66aa75406290ea773f0e6ffecc1fb8be9b6313bd30a4e0626b6e5",
"0x17ca97378ab5b95fd548bdcf531da28e4336edffda8d3c5adbed45b7f224a04",
"0x5b258f2284fff0798c69fe24b70f96038cef3a3e7bee367a51a7e62907669dc",
"0x20a38dbc01d5a38c6908056f5c4862c351754fae0750094c93cf54bdcfe75b25",
"0x27649f4bceebf6d71f6581d40e0407b020dc73ec56bf16748c61854c6afc6c84",
"0x12eba7df6b9e4a5a1b7b92bfd51d12e756831af7133a79a622338cc53e19fd5f",
"0x8487f84ccd636bfd508b5584d1cdbf24cc1605c779e5300d4328bfcd4dd6db1",
"0xe780d26ee909fc75487670a4cc043740af57e89d045b69ee6babd8089746bb3",
"0xa58128a2fdbf500e89c8b81a8b883bb5004b4b29507158b7947178b58421d30",
"0xb680246f8aeb38b7e4eef807ecb493c3aabad1d705435fa2bb37cedd04e9695",
"0x2909a2616f3a24ab48ad9f50e4f18c75bee2c2f434bcba5ce605c1dab5721877",
"0x143f55ba8ee25793ded43c6f14c92025153c79c964b44b35c886af59bcfac0a3",
"0xb1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098",
"0x216f405b93971c6d85d700b4d991a983737006cc1099f0cc1c6c98a366d5e28a",
"0xefb44ff1e32edd4f8db74ae8764f6493bb0f76744f41f2f1f35205975b49020",
"0x125e52e4d58e859809ae43a4865b821c65e630a0de0a2f4cfd5188ce3cfa93f1",
"0x4c652e865b682c60c57f60bd33a174e9b9b22b52a1d47aac4aa084b1174b929",
"0x9cad80a5de2e6e280dd9b65d56860754dce0ab2becfa07b30853a32af5b011b",
"0x81544e3cace3761ab3563b6666160aec7a52d7331dcfb34e7b035d46d9aa6db",
"0x29c9f89966182d3c7c4bdb1c751fabf9dec6ca6fd0f3d2c4b2651fcd35916a67",
"0x25ae65ab6ad76f18d3423dd2829bc059e43251ca5491c2e11c04e3e241db0e5e",
"0x1821e88b8cdb1686c33ad7c1dcd41c61f47a6435beb00bd8d68644b930e7c317",
"0x1abb95b6e33243a050e563b5c4fd059de5513ec28994a6f60e57c98d3bc8f586",
"0x110d213a836478aa301bc1fd4edd388507d87745b3abfba5bf282afd21f7242a",
"0x18edb2d105bb53b768ae0137850dc2d2bf6d1303a1f8ee4aadf76d8f81990588",
"0x1e53e92df6c53ecec4c0de5b07dc4c9a0c5545f2abcc1fabf4ccb84a0a6e2c27",
"0x10fcb817e10f69f7074e64c393b807cdddf33c84a8b5cfe33f44b73fe18c0e36",
"0x2b1d8c11fc652c593543b6f9800bb7d0c9371dedb96f08bbbccffdc6cc44db98",
"0x19f473e40c05676d5f8d51e11336e9c65cb32828c397cc8125f1dc667b6cadf7",
"0xfcf3a4d9c6c3392de1bdfe25cfb86817ecb80c51be17d47f79750201f1fcd01",
"0x23b02d00fe2634889673a7d04736fe15b9f62652b1c0626a19af8d6085d70822"
],
[
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x239bbee0bd0536587314f5429186856d92bf093cb902a7513b11373dbcbf7134",
"0xac0bca8c1a15d53ce77475eaa398fc316f791caa305403407056f9b14f47f64",
"0x11ad8281442fceb40a4c536b728ee79730be6407d603333ba18ef5b7492cdd13",
"0x2927ae7db23955f84264264e7dc4f4015b070620841d9035f54c501d0d4975b1",
"0xd9455f3c59c9ea9302e721c00003feb40ec8231463b84c2d66c403cb9110dd2",
"0x14d50f175c19900cae3eac1f457e2e02218929f5c6548a6e601f3038240df458",
"0x237b9200970d84323901b9d7a12626a3d828affd132d9ac43ae01d5ac3cf618c",
"0x19d66d04ca7851e0cbaccbe73156524606cba6bd174d94bb79d3fd99da05a2e",
"0x2ca5d1e4cd8007c2a6e745ce9d3581c2661d28ebcf7b723bfafdea4a97004061",
"0xd54ce53ed8160546c3555b48c6dc1a95bfc11a529d863ef3d6d63f3799fd407",
"0x2c21c6df9e87d0942740cfed6b692c5e4868b781085a292f505a9f53e2969b94",
"0x6351ae4eccfe35f6fa2f0e50faf512ebf3bdc02a9b61fc2baad2e18c4c7e128",
"0x1c86e871f69f568ec2e47ce015f7b324c6833ab9fbfa2013173857efc040f95b",
"0x2175813936c314627ae23d64f217d0725097891f1b1cefeae407bbcddeee09b8",
"0x2ec44113a689ea96c746225258ebf92460b065c25e979e5bffbf0f8590315eaa",
"0x2facae956086465c460b678df8d1a10bc8256e85fe5a3dba26ba637f3d4eeb94",
"0x1865d5f9b9b920317a5751591a3275d233aff5b7f6e6ca7c0f6b2e3f1ea0184a",
"0x412169c5bd61a200567219a93b8df6b4391fe1da096b22755680536a2173411",
"0xbef9d4f49681702d6176c94ef8563f7d1cd1556ef5adf986cd9dd6402456513",
"0x10c7e674a66fb25905751a9f355309c0a6b4a622b7c3b29e93c61f64d95d881b",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x1934288830ec4d6ef05046f36c7e664fc0790fe76e390dae265502624f3e6764",
"0x21fe8f4f8f4fa08615bad7638ab88a92cf8f0a6f9e3e695f3458a459fabf9a8d",
"0x4e0a4f483d51dd00d1062226b3266d95da5866968c6abdb721d96f8f7e2bb1a",
"0x2d3806f1ea209c26c7b3fa95f40e8d213829e28811223aeffe523cddb5246ea1",
"0x5f7a9f8fbc8104008bcca318850c76b19c624671782c0104a04b1b03c16d792",
"0x1c429b4f17c25e0c73fca45ee8f69e5afff9bbc21b4648ec497276a7366568c0",
"0x2a5f492892b38ae10a0615eec76d2f514c9f3251000383d1d1e13a90a9dfe059",
"0x1eb8bd92044de59e84b8ff7e28347243a0cf0a665dc38be0a809245cf2632846",
"0x65ee5b5e74d35c9e411443393e2462959a11fb9fc95bc1b627cd0f48429837c",
"0x10829a880633680e7078e1fe50cbbb362a20d7a313647297a99dbdf6578bbe84",
"0xa83ccb34dc841eb9cc8d2974f083c61a9d9f162d6169db459e0544be9935d3f",
"0xf8f126cb3833ae566d7020e8bba5f7ee02525d4378d81d36730f97ddd2c358f",
"0x2783557cf3c6a0b59926f5804752bfd7de101c1e831a4ad421b12d2ec9f7bf24",
"0x91f200acb6c0436b64c4425917f2fa4c6373133a25ca40a19a28cfda9b219fc",
"0x1e4a28170c7a5034f70a700fad1088648e97a11fb4856e22a5239385099caaf2",
"0x29d63ae313de07d1dc59205c4b29f8b95baaf7efeface383982252f1173dfd2",
"0x188a2d62c5e3519664418fefd0fd0f214b101577643ef5674cb5e5e4d69bb7ff",
"0x230324a35fb7ded74a04c7fd4cf7ee0f68cd8851e1e86b5e4c2d9c1857d2dbce",
"0x27e120b07d441aa2864beace6201c4aee9a06aa4357fd66ef765c6f10b3d3c88",
"0x2d6a0fac700c78ef54b97bd61d43e88b5215f352dc6806201f3e32ef06a1dfea",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x19214ffdc30bd79894098fd3804b092c50b04ed072d36155e2003204e1628efd",
"0x2f15bce2fbc19f00682f8ef66ebefd1fc0a67d43e4255f72ff9ceda492c98752",
"0x215fec7c7c775fbdd3bd2317d73399873ec497b6dfcf434c606dc22603b41b05",
"0x28965510c52457b2b0d9e49812da55f08028f23ff9764622f2af19ced2eb250",
"0x2798d59530d1d41a6a311e90c9c37f0bd389a39737394a11829181d1f26c4988",
"0x11542d205011b400201141b40f0e818051b0a983ae9387786906bfa71cdc1f5",
"0xbaabe59e61426a7f5ebc2174ac06d27ca7854ddc67e51b8bb9573911387eb31",
"0x268937a0fa2e75f79c04d9f2aa6cc56ca52f3c34352cee551aff2b99eb953a79",
"0x1bc3e33a03e620069e915e78112c4b39bb36f9f3ce5d75e9d51624f0beb1528a",
"0x1bc41b054898379199236443a43315088018c303cfa8760d7f679149ed53d3bf",
"0x2ee37960ab5cd93080139be75dbf02d205adbc6887e96d278ad3e430a43c59dc",
"0x1cdde27557fa9f3e2540dfe7deec2ea92d7862361a4a7ada6e4b68f2f3b4e867",
"0x2215b23457c72fb4df6cb05ebb6e695a02c0c7fee8c1ea4553d130e9ab7c3a25",
"0x2c0a94bae0c8d81169dc3c1b3efbb544d16fcb0a11b18bcdc68c4b6756c1816",
"0x9c4335fe7a502889970a7670ee8537837526594d94bee1008d51506b0baab6a",
"0x1d54c7fab67c393a91a61e0e2e38d5b7ad4e43f646286e64e31704c748ba9db1",
"0x300b58fb17814ea816d0f7bcd9c3aee0c411ef4281917824180a3547f8f41b73",
"0x27855ac29fa4b1abf74da38a4ce42de382834c90dceb506eb1f1259823889f0f",
"0x2259c5da3d87b0a065ffb5a9fd340f8bc3ffc41113b77bbf66a2613a03b04874",
"0xfe5e47f909ecf12bcfb1e96d2f6a5f96e8e95f7091a921d225fb33bace62388",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x2cf624bcc1b57941669693a6ee517fe56dcf7ae5f8dc152456d68cd4c839643f",
"0x284fc4f8f116661b9dd2690be9979691b33a6af7b521472a36c154c5ecf94b54",
"0x15f336d2348dd647d17cffa8507990c62d9355d63fb15fb7b7181c0aac883733",
"0x2b097ff93c8883e63327f4009f9d0ad5518484aecc9ebbe42ab9ff386beb2d09",
"0x2b0e0d9bb68edcc80f960a98b948c1a172236a4461c5f13d2b7d1fb648d1cbf",
"0x21fb862d3aa99493e303f1fbecb67e2ff829a890338ebf642b1bcebcdd3eeba6",
"0x1d742e5595d6548a4e5cde3fa1a024fc04ba950de76aeef9d094ef3a6aa80e01",
"0x2f00e60ddbc4d8cbf208aace4afbe88c9025e161a5b3dbf495f11520fb314713",
"0x937367d77f41edb078d7efd73191a38ec61b2f7ea633aacc172fc808e6e20b9",
"0x20cc21ebecbeb50a3e7b6f0ffc58f95d9bd9990c8e0cb2b51bea7cf817e0501c",
"0x2153722c6eeac70d60abd76aa40279e600a739a3c24b2d9950e7e0d08468ae60",
"0x170429ceffee65277a55842cc1c6089270d658bc86565a5618a4e1156546957e",
"0x2881b86019bc624704431bc3ed315ae4dd4c6589118f6a60d920f1c4937696a4",
"0xf75ac5249bce09549072133d80f299f5e194bd34f820433eebeb5e020817091",
"0x9a487d60d8c77e941b03d1a4cf0e9a92b8328bc432b437318c0bf096b8c95e8",
"0xc4c7b8be9ade992204bed2fba9ab541af980a47b389cccf61abf5353640bcf0",
"0x13c6f29a13b808abc57cdc98bd5b32326c0d37640b2b1c58a988c50dd0a66e90",
"0xdcf77d7d72c03c43842c43d906862cbfa78b60f89780b9385a2d81e316d96a2",
"0x1af4ecef93add6d17e589cb3e93a7240f2285e18c1882da49b0996fa64a5f7d2",
"0x16500f1e2eb13aef4078724a58c869cf7af3bb0a8eb50236c3e2463ce54554ec",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x2fb22f7c0dcc8f0710df44a538564fa4835d8297a65bd032793c44d1ecbc66e",
"0x186c3597d2e95409839a6577665c9247c61d1d4e39ed975d7eab0407571a3cfd",
"0x268a806ff91bdb7848e65fcffcae8ab72e771dcd9e44918bbbf961d024c4e780",
"0x22a72134e6b344238cfde291a9c27c8d91a7ce8ca75efc932a3ac0fce7229618",
"0x2f3d93275b7e8f80483d94dcb59ecbb02d578565b6f3510a3b362db38b806990",
"0x2188074227737f56f2ed000fb0557da0fce247b29e3fc1e94c782497dfedca5",
"0x2795cb6a4c716bfb133f5aa5e413d7ec0643932100bee8003e35125e908e92e6",
"0x168669f585369a0e9e1e1800a4a64e59198f67da9022257ae38ed2dae2f3e890",
"0x1ffa32112a81bc68e5ce9b45a08becec9463ced766f99e3f70c5295bb287cf05",
"0x24305de92f0bb0f4bf743d990721957c6147f9712ad12bd0970d35471343f1f2",
"0x2553d6aca650db381e5a5cff064f3ae81d10dcf60fdc1b88d0b4a182cc3b86a5",
"0x2f3c1b421f6d478376b135c9d120317b4290120dc11218033e249e6f660738a0",
"0x245b4bed81074004368bbf0206d685ea4aad9ec2c5c27404550b134d60301858",
"0x5d189b960a83b4cd0a7038f8a5bb9fc4f86a1195041c3d5aca8020cbf92a015",
"0x2842fd81790b045c74803f7569b25eff6c992c2e571bbaf1cf9917f9dd45eeab",
"0xbb806b253f4b014dac7ec4b9150635e5dab4505e9194ce2046af74db06e6fb4",
"0x1130802bdbf1ce4ad31b52a3b3380ad274eaec3ad8217a45429e7b8bf9f57291",
"0x236b083a817afa7114155de365d7157d5c45d3ff29a665828689c98c118887c1",
"0x2b1118c83315eed11ca8a5128ddb9fbdfcb0944e37f30f57ae91e81344f76eb3",
"0x26c7bf0a07d43c11dd2460b3d339014666f2ccc0d6f926dc5320693ce6530213",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x62d864c511b8873334e836d12eb72f7552810f28b4b9270ea837e9118dd92fb",
"0x25587eb09d2cdb6628c520a7111ed2287f8ef7d5bf15e7ff0d9415616c14beb9",
"0x20344cc75c81860502190a88a9753741eb82f1355eff6272a687af15b3370983",
"0xcee668ab7cafe0c92f12586b73566a59fa7d9e14624394bca99d6fe9e082c57",
"0x41098b20212f04cc7fed3b8aa272d37dd719e4304f79301d4b7ae6efefeaa72",
"0x193870bbe39e62100358a649faa3ff6f81d1915da932545ad5ae3dd951529dd2",
"0x1d86daa8ff221daf2c5910e1b9adc7d1a320575c43ec64b6f8aca53cab46f16c",
"0x25923c7c452a59c736795ec2d6993a2d27a18b01107b018164dc30ffc6c7e36d",
"0x166f933a262efecbfefd5d1218289e8306130b9b3ae903564812aae0c357b73e",
"0xe710428c953a764b43ffbdd166707d10a6a08ed48aaeb562ca63a19b70c1c50",
"0x14212cc175586510bb7e0107b7e99a1add7be5eca7445e35b23a9bf5e9bc26b7",
"0x7922b817e326535d89ad077f917aa3f5ca180e982a89628502299515bd1db4b",
"0x17b1b0209846528ed24450b5b6910c3dac0d79a35c1297c2e0ad518bef18ec2b",
"0x1fcf8f4d3ba39e14ce346b78e781ccb86fa80a2c9b91b53b2b917d32201bb0e8",
"0x1328e374326bd95e9a909683113443b309c75dd559c78e48589f91d3d667fd7b",
"0x186b0b6795393cfd4a4961f0d34cd0f86d491ec8859ed1f39649f4a77d23d0be",
"0x22866b41e186a1a499d3862f90ed2138b052753dc15fb43f71d071fa54e8ca21",
"0x1a21712b5674e92a8fcdba2df567658a78f1c6409972912f59a3fca3fe10010a",
"0x169c1593ef30d80f8f26d4c287a790cec8e41ae53c718b5aca62baea5e7a7f63",
"0x10cfc561fd16648777627b6f289f95a96fbb95ecd84ee59ed541e7b81edb4d69",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x2f44dd9b3903bbe40ed4f0a14f06a691510f25d683942e3fede322c7f27db564",
"0x1be695baecbf688d6618060b85965e37e50ae175e45f09704d33f2605ae3ed6",
"0x163a43dabce2f70ea0d35c105ad54d85eea9b0953d028fe4e11c604e8b5e69a6",
"0x2956dda14554b0ab7db32968d172b733bf92a1efdec6320b0c3c9114da88bb7f",
"0x10f41dd81a27925bd837952dae5a9c494dd285ffa9a40d9ccb17d71b9098dbad",
"0x280ad3fca7cff3b3cbdf6781f295bc0ee70275c10a6409b7b8c99157753013cd",
"0xf12826ee6e2f4690c360410aceaf27726e64d0c6d39bb5eb8bcaafdb4266aea",
"0xe9f48dc6fbc4706c6375c87d3fbbce3fe78427250b0fcae92e07890d3fd942e",
"0x1c7a967977120a43bfbfc9351f2ccc84a2e1a2b9f440867e9d9257a1573c1f3f",
"0x19d6f7ac7339519c004c1893c15b90c6b50fb09410e9ce523bddd88aa3dd3d75",
"0x1b92f3e79d7fe18dd5a8a7c74fe697b800921cb181be388e65b39cc8114b32aa",
"0x22998601081051242be4d99570e60ca7ff816acddfc3605f463a1221b11e097",
"0x17f81154836c1b89e026090ab505be76f2da2674a77bb65196f29123106f15e4",
"0x27b439487ca8865a03fc7699acf9c74e7589ec1282fbb0eea9f6fc4215fb8d5f",
"0x2ebf049a07d92affe4877c3e4faa5bb176d58c7b514ce03b85ff8eea6b17011c",
"0x14b55de484bf2eda58a874c907aed547c35e892592a8704e330457a6927eb9c6",
"0x2cf300af23253ae125944cac6565ad837e1b4857ac3b9003951c414d167e4622",
"0x11a0cdf58417864a0399eb08e3af0cfca6afe79e831eb14c2c7e6ae904ac14f1",
"0x13f038e1602814d23b07765cbcb44033562f7c8192fd2e45ae1372cd3f9100ab",
"0xa324aa4a2273af5015991b7e47dc180ec2c6cdd3afaa7ca1ffba46e4cb5a78e",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x2335a58b2a4893de3bb776a21abcc6bd01746d21d60dc99407a58ec99ca5394d",
"0x3792e932762b5353053cd478898e7067fa59e0aa0f97bb5d075b83e7f1068b1",
"0x171f0973baffed9d21be47d121de7717d9200520579e674c345741ee2c0c9af0",
"0x1ff55845a587dee8b90bb11b2490e5abb7bacf3963f7739421b471e1f3cb589d",
"0x6db58db2db6fe63f54d05adb8aeaa9cb89f48d8248e45d647b9148d1fd202bf",
"0x207a78198a8af61712585f9e3aa8fb315320232612f83529fb1b5892c30527ab",
"0xda95af66e6e0aa2f1a0ac71fa29c74d75bb9f99e9458079fbc43fcdddfc1be3",
"0x244dff1663f2935bea98c07d041221ff4b866285a999a04e7badb7932a91e7ee",
"0xf1666c15799e77aab89a2b35be57b29222ba0bcb4c690b05f144b61c61099f9",
"0x2e9b5aed7ff481e79e49c949604b1d7dc241700cbf5d6e7748e13f74f30e5ac1",
"0x16834fb2ba464871b1815f1495a872d63e79504d5324e80b34adf43ca7a68908",
"0x143a59fd2f1e040c91f7230be230101ce4e6323eec738f2906357464515206a1",
"0x43dbd8535bb232d99c3535dc3d655a963324bf70d1a3274e40e64393030471c",
"0x7b166c254454f4b8d6fb5aa80087856a5f3affc248c814703364663f08fb766",
"0x2047d44ad52bb40ba8e9f31f521339de3e41cbc7ef94245e7b9c82e3d5239f2a",
"0x1e23eadfe8cd5443f15abfde942370f48254cf355214fead4e4d85a0722e3452",
"0x1371b1a0c0ef71a90bf7c32118ae414f81d593f95f864cea9a1b60607b1ecba4",
"0x29c9b03f3f02faa3d633b65dbf083f24565eb29e36ed1eee4bc5376889b5a0f5",
"0x11c0d488111b7ed7b91e9be524819faeb74d64619847d9e96cd916a50d17311",
"0x2d389c9b04a7aaa0eba8940233e3630c8b98f061a7565a7d5caaf28a3fb77307",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x12e351fea34839d65253cbc1cf32d39e34b1037767f5c2b90627d90d73d3bb0a",
"0x2e27a42188a58299c9d8044c410844229d17a11812405d3d35537974652ead64",
"0x14bdf13946d48ef5a08883efab512ddf10596421d031823284426fe729475367",
"0x9a068a755057ee06efb7fd6667bb62353ec9cd08fbc887cf5f4fcb2ccba098f",
"0x519b4409ec8e3a7860ee5c90956903fd27fadae89854357f81cf33fee0e8cfc",
"0x2e810ccf1dd607ec36f7ab647ca38d42710eab334142a8398b5da402a5840054",
"0x233108c004672dd480bed52d6f25174cd89d1a025a60ff6888a978503ddfd96b",
"0x5be8a2527d11c6c19b0e5c5a0e75a0b54c5e21e68c1850494e4fe7784cfcdc8",
"0x1c4d74ec5ad43fa3f3f50702399181ac51aa69d9260f1b32fe7c1ccbc232a0ec",
"0x2c98c881a993b1aca5ee9e7f559ccdf305e696156bd0ad4515afcf5bd168de28",
"0xac8b8f35d94988510c83febbd4925feedb7115380f6c4e167aaa9ba11ae739",
"0x28b2d2b745647c152ad021d9e1e7e87aa179c49626348fcd0c29444aee62d71d",
"0x232dd2860f628248f1b55a1f1b7f4205d5d8c86139e182b31518eb4fa1eba077",
"0x2d45676dafb1b4e4f2e5326ad8f2d6a382ccce3969091d48ce0635bccd9f1f84",
"0x23c9bab33c8ca65ba9579f56ddbd8967db1e9e3530889762e743a32277f4a56e",
"0x2e3f511a8650b0493951efe1029eac8006bb5d44f214508ae0870daf794eee04",
"0x1fadef99b87a98d042116dc8d68a6eba75609dcbba24feceedc576a5f8c56ec0",
"0x13b1c1adee57755d2c3da15fe50fe6332e5d5c5b5929c5ef8ea0387043fc156c",
"0x22a338fe1a442d6afe886f9cbcac11a4f7f9bdd77fb3a8b78dc8368a5613da63",
"0x1c069ae1b1241b93546ccf9d02a0279737dd1065e075da8cb88190a71fd2e887",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0xcd4ceac7e7f2cd68f2aadd77f8a89a35b39e6fe20795800da208139d3a12390",
"0x1c2ee3595af8de51bbd5eb8567f18d3e1db383bfa37973f87cb36e72a88c81c0",
"0xa7c2fc763da1bf375377589baab4d68685a7d3d23f08d106e5326eea97b0333",
"0x1b50d5a9d6db07dd3f14eb594c51c1cd119a0e734a1f2459cf989a47e557359a",
"0x30161bd3b8b78d824bd26c4ac8eaebf0c3bf2ac2a428c274b458406cba4799e4",
"0x7274702734590bfd2fa48046b2b21cd261a226526c126dc9841a00c5b74747d",
"0x23064c35e504e677bf3c438b120a1c02bd6e8edbc70778e46b7e5f00d1633597",
"0x7b4b8fcf8c2cabf527256c84aaccb348d19a3d8e41caecab110f3dcd563d0bd",
"0xa95e011e6866c8550e42efbedd76eddbae2a133a82edd6308f4c8d629d42964",
"0x180517d31f2656d1cf425f6aaae0751054c71dd9df0a236c6c049a3b33cb4da0",
"0xaa7c1d96d99bf95d733baeb6e88f4a8536c1f846730f460731b2074f534ff99",
"0xdd0dfedf6a1d0e3368d8f79d159d585f181aadb93429e0287324179d1e37e4b",
"0x572df3598f8791d83d3401b87b3d6e6b3a778a9a4a33e1b6c24746070a3bf18",
"0xf9cb4e73d3b6c128f629e12d409ecd7048781ea825ac98c564f11fabdff8d14",
"0x1db3c7279ff54baa1b579a2d00acce27d1f80dac5da005ac5a50052cf4ea6143",
"0x2942a1875714a0c00d3b2d20dc216f466bbc448af3a63e05aef6353073503b0c",
"0x2522caff7f2a2bf9cdf836ec99ab832e3f792614b5cef40cd3e9f00c9b2df92e",
"0x1cc0d08465538de8bc30077a0fca970b6bc309fedf4f48c79ac7ec6ba1f4a6a7",
"0x1be86dc6dca9d90b15bed5bf60edea532e1510007055893ccd65741037c814b9",
"0x2ecc73f82062b8a6d91bed0d221022331d55436042ce722797c1ab25f77a9f2b",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x1e954a04dbc733e4ad843f23a7f402bba126324674450eed047e158c4342f75a",
"0x1bf6934a5502144b995fd7a26c8be4f9507169f7d29691e460277ce8a06886b",
"0x10a770647e157ab71fc08d6e560bfc21954d55647c32096c258e244fec48629d",
"0x2379fd0b045b1b43d59bd7cc2760c8bc5055f3a441fa6288c84a3c7c7488a566",
"0x242557dd84169e034b9c9ece2f2dc4bf4f4b3520b2ec0c62754cdda61aa13759",
"0x24d0e65867e83cf7f865e89a44c0fa4f31df8eaf20194cc9e773188322020fbe",
"0xf08e39c0aca58fd66c96bb21691c0b06fc564cc300040ffd985b0ffdab6ba89",
"0x1c3119af9b3e6b5bff8c6915f68472b22cf3f9e187ab26981b86c3e90dc767e5",
"0x18836e6cd384b031b1a462ad8d0a11c34910f35baa8a92fb3e56f9615cd702c0",
"0x10b2bcb24625ababda8c1c7186890382b9ce83854d7bc4f2460f30d706a4cb48",
"0x237fdf2809ea511ef064a7c036f29c1d555c0b32dfd257334ff535fe42cd81f8",
"0x21b9cc4ec4c0832479f7cc5e15b4ad4722477a5ba013d9d359d540afc5737f67",
"0x258e26b354d7ebe2793cd3fb7c3bf6d170cf9db55cda38f57158d9b865298d8e",
"0x1d48d2d440fb27a8ed1fdf8212e7b34cc231bd2d893402412f96f938165bf3ad",
"0x138fe1103d55fc0267df8380c50775947493bf88f75a73d783b21caa92197f3c",
"0x1edf94fb5b430b784be783f8980634ad92449f73e33c25e9f7d63f3a62f30fff",
"0x8eae1383cf79a2ea6482185fb4b72345ca8689c16e67bd0a253eff22c5cffde",
"0x761d160fec46a8c06e3e055d34791703f805a77bf30042a43b6f04e35dde41d",
"0x2e23c612794a7f8cbce764b156e02bc21f2289396e30ab846536239dc8938efb",
"0x1539abe4d27172e4ab5380afc595d723f9ef3fb7e8063705f9a07c40a67e372e",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x4d800ab616d72aee2f1cfb8eaa194dbb2bd95d9bc9d8327943da4f45befc2b5",
"0x2207ae07dccbc047ccce5415be0c4941ccd2aa15ffe4f4a8e07a60c0a7fad9bd",
"0x64d711ce20b70d512f1ca107456bd158586fc1e3219d09f3de8fdece43088a5",
"0x56adb05c833c5d1984c7f6bd75b02cfc1c7b21dd7bf6daf1b52522c96978158",
"0x2efc241aa72e16ff31abc7977dacf9a6df53b26217544c53bb87807d5d61506e",
"0xf41fed22cb32a447dcf33e989193fff2157f3075848ed1e46a181128ebb7e5",
"0x169291f2bb1381ce3b16e812c546890ef5ce32c1d768d81264cd719e4e1502d5",
"0x2f9fc1e4f2924d82d17c7ea7d3b09f67be93560ba39f29537ec0c1f2befd4729",
"0x13ac8de14556e9b886de3944edae4c601a01f78fb263730f44f7d9991b8c7e2d",
"0x29a69af8e28052f2c56dc24bda3a5e61cfb3e9c6ede0fdb857a1971fa932aedb",
"0x180e9a2e161d21013486fb8598113f7a280697e89643400cbefd587893787172",
"0x29fec555b91dfa57a42cb368560d4bc471c77a2e236a9d7c9c6aab1b6d1117f2",
"0x231ef485473f733d46f0e2acbfe7e3961d045f30244244ab3bb7165863c1a46",
"0xe6c1b39867e21ef0c630a99754d1a66a6688192254d40492ce88d47e5fa15c3",
"0x2e0a260d61bad61b7891e6306df8b2310d8b8db9232fd1f7219e7fba86597031",
"0x176aa7da52727a85134b313308a4c62994d4149bd6c6fc59d6e6c0f09eac859f",
"0x12922be1b7fdc58e582eb1adc46890c48e10c8550eb8b9b11d8541694ef3a9f1",
"0x32268b4c29827a65066e67d71e10cc978a73e0442bb1c9f67bacc883a3f4fdf",
"0x10beab6538e0141fcfbfa8da4cf3070e69b2b49da1818ec8a9e54757a51b3c19",
"0x36192a82ba9eea93a2f4b1994440a11a556d0d157ae5da57192e56c21c28256",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x34207380baf33709aed4bf2cf5d387a15f30dd072028305cdce60c1737ac627",
"0x1eb09b8ad28ff81a7b21236652960fe9bcdc84caa6b21549da93a72d92ccbc8",
"0x2545313ea42693cc8c0d6315d8bf240ae624d66f60f6f0a356a105ca6a7220bf",
"0x1269b1b6e6ffd9938f8b4d7c4ae3c7feb7686b9de06a6831fd957cfc3c3bf7b7",
"0x281e84c6cc599d853fcf8ca0a606f70aadc893adf4a4a099364b8c052f169ab8",
"0xaeee3f27983d8e9eec8d6873cb1cbeb38c3d5912c74066bd0dbc559edb12c69",
"0xfdc47ab86a0a3d8e9217faaee18d9b5b86e9d64deba55018f355d3b9a36b6a8",
"0x2c35a627b5540525beacc313eb5733cf97e1ff3ddb3f9b4e8b4f063b686d2e12",
"0x332c87526e40afec8b93f9735204bcacd4c6431c60b0b3daab4fb7f120bb301",
"0xd5d00fda5d7c9aca26fec63f2565a7b64fcb58a67e7c29a64d0e450fb2b956e",
"0x1b9cb4b5f32f1ba38a685870d7a5f7f44370b9b0e4c12ed349fdf28de5f49865",
"0x1c63e1e8141a5a498ea10713d8bd8ebc5d61aad6e0ab492baff25befbbb26a26",
"0x26ab3869c42b4e0139459f133c996241607f280672e2db244466d3e425c50fc5",
"0xe8a1f3050352b43a39fde443e466884d09945cca09f31f043ef872a85511bc8",
"0x51d4fe0ed70b240156e4fdd7fb3351d55841c4fd97d1a4fdfe0910932052536",
"0xb0a1015d5b0b6a572187b97a4427f7e938485515cbe32e0016d11de7d6bc760",
"0xfbfa326f445e39a06bdb999832f75f80114c3ead6206339d7a5edf276ee54b4",
"0x9ca06de513672e4bf3625d0cebfa2286a44737b84647df4154d524528e82750",
"0x281dba97e7243b1d3437c626fda37e43c95cbe3987bea3be9d19860672ed4719",
"0x26de57caaf86357521f470a899d072f52a41043ff0bf242a845b71b8ba0dc6ae",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x2fdb2e183ab509617feaa6e075cb9de40e5165621c2a4266fb894471e9c1946d",
"0x6188498691a27faf8c8f4a2b3425dada1a87d06c53861823232acedb25d6def",
"0xbfedca0dd5e506b091baae85be99b391358740f9a7c6578c58349f522323a18",
"0x78b237302bdc513c9965872103d4588c8b19a002b784ea4217fb04455d3133e",
"0x25f15182a955582df5a3f58d36648b5cdef4bbbdddeca93eae6c94fafb198305",
"0xa07fd1f3e8a7d1f026578e5999ed3c7d63d5bffe07ff0c96cf8b23e2e0f7820",
"0xbd64bd942a57b8c209d7602bf222a0ba5c84251dde43bc098e938f75a0b678b",
"0x2cbe62c979e608377112ff7050870162a94dc68556270ee7a66e65305d1b16dd",
"0x9da1c5dbe788effd900ea877c8f099af1c03e112300d9e070e6c6f8c07b6a36",
"0x7981ab3c73beaa4e1e775d4e4abce3bc86eb79168d6f157f9cadbbc30ca97e5",
"0x3dced6534fd07a1107d6c54510a07f25c0a10b260c7376bdeb10c4e768d91a3",
"0x988db118a1974fdd8b434549e13ec8654644298f3388bac401b75b4d550ed76",
"0x1deff1662df511afe108d5322ab104e70703d65b729c1dfdc2bc74345d4170b3",
"0x3a1bb1a92965c2cfce4124a8abf82b54e3ca37474728dfbe965f7e04fae0f1d",
"0x281f0cbf3e036b4ae183795116b65070d16e37621d83b3d88ae69e98d8c44d83",
"0x15c4576d8475a4291a8db61a22db870c56b013d0849b1066386e859b996d9035",
"0x675b067ff63a96141eada800b0ad12de8eacad15c7f53e6241feb94cbe87f3b",
"0x201aa00289c06147c4b86a521818881469fd0e4f91be7bb271afcaeb1037fd56",
"0x1d590ada5a94b49917ebf20bdc55e03d0362b3f719aab865957c76b84a4413a",
"0x6011f23c13d5ec3df59516c72371f2ea28e930f73189337762e3d4df3f7193",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x289927a769b163dd67f7165490a1a4d9fc3b8ec189ad4fcee07368a3e75a7573",
"0x5a0ca87482e1f242157b180cd02fa975c72bec4c25d87f82b7c53e3a6830947",
"0x2b328309cfe721d78f7a6e8634f54524c4eacc42ef998093e0b77c24d5ff9e80",
"0x1ddfe1d1e5e9458ffb1d342e1b99a73b0083613406f932d7abadc8442204c061",
"0x2da94a9b44a2e2681f75ee004c7d9cab662ca66c1ce78fb2ebd617ce449ee43f",
"0x1efb5c3e6f22f498ced2f4e63c366b9dab0cb06adc4e92fc3f868709cdac330e",
"0x464f0cbf6ac670c19420e79606bc447e259f8b203a4ba15f72ac220e853c884",
"0x67e3c61a95e28c26b5628f679c7843e1e042d7841a670219194e99dcc618f82",
"0x2d1ec49939d788c853f85da08552dd458a48a197cf0b023157ad04a49a72a28d",
"0x25c69cc3ab094c56e86147024ede9ddabf71ddb294ab37659e9b2be22dd9e289",
"0xbec17f5afb43e6faff2a6b09a02eed8455bdacf16ca542ccfcaffb119ea2c0a",
"0x543caae6f7afe71cde9b817c9a746870d2cc62d2e7e1c6fe7fecfed5a98978d",
"0x142025c358454da1e1cb0de99504766fa297d1f6fc62deb14ae0bec430d58087",
"0x12b565ffd06708fd98bf8353991bd236bdc518c7fbb243fb05497ec7ae08939a",
"0x12f287f0f3686375ba8431deb018fe9c28382d0b3f6d42c0c8bfef68b99b0639",
"0x1b97a4c6e3b1340d563513c29d704429098877af661ac3d14a8e5caf2ec67622",
"0x1160e192c3592d85262513d57850fa5f8ab05a95877afcacdf616cf742991fc",
"0xde9cdc2af5b4780acd93ea46be905a8530e8bf89a97d41041cd39fa90975884",
"0x29a2c79a9dc7c39e8ae57cc00010cc2aec866d9106a8f2c0def35fbc29b304c3",
"0x1b39fe57a5648b6b19ed40ddeeda02db1a6a0590bcb4ac75d52c016bb5f004ab",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x2eaafd2a94018113bfeca9f6f909c380ccb8c99788645cd8169586e66968a6e0",
"0x27f7e86e479c9eb87a4c05e80dd23700a81c2e720bf0e889a6a5d5d2f2a385c4",
"0x15fd4d2d4de641f8d803e4942f19aad8bf6b01a1b703dfd0f0b51acc263aed92",
"0x172a8e725dd29bc4e28ac7a67a7f86bde15c58b1fe2f87bb21d06349bbf6a858",
"0x11820ecad02878ccdd901bf88011203539ed7f14c17edf151f237b8f3f357bf3",
"0x157bb0ec622781bd0485ed79ceb944a23eceb119dac4f88f3aa4878f082f60a",
"0x1a0c8beae4e98f3c36307ba5a8ecb345cc5ff4d33963002e42b36242c7ee6f11",
"0x19398691a16329089e7dd608cd6ea18749597908b9885b7a3818feddab8737f9",
"0x2c92297efa4d689e784dd5ca22480de59b1ee91203331f44dc2c33877789a888",
"0x2b05adc1b6cae6f7b6a2382c527c9e486e825d2f6ba1b1f9aa395fdc793e9bbe",
"0xeac0d420eaa22d35e8f1dcf344a5bf8c05559171f5b3d8490e7cc58244b619a",
"0x1f14c4c41d337360748c3f37c2e1c72f831a6f811893d188902688b43ff7ba89",
"0x2dff4909b43986a532997bb6881979cc68bcae8e01bf9caa69389dd064a21288",
"0xc5cb5da369f1f4f874bab1f706b652ef2c50b297b5340f7f6c0fad98f6f41de",
"0x13c2c78c6e2b39691d5e7da33ce14fb2cff83ce3577f1909d2a9b1b73810067d",
"0x8bcbec544fb37718da2d30fbd757ca63187f342440c8052bd9510314f6fa22",
"0x12d845717c2b2c79c55769851913284ad56f2fe4ca359ee39e569cbd52c44b74",
"0x10c0c4538604fe7ad96a08ea533aadf5307c89534a51dc4d958f769a0d225963",
"0xd2a590e3fc8aa2260656e13a383726d6490425ca80eac6481467c17f1050265",
"0x3030d8c3cade8438d664d3ebcb0b0889f57ffeef914c655e50cb68ae14c2f283",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x1ec953704f6bb2e359a38b99d230ca7a4c8eb37e3479238a282da769f0425beb",
"0x1eb6626b17b9fe129966d1ae7f272514826a0bb877d54a3a7d6fea8e46c94914",
"0x2c31aba1b873c7d14d82ed3b033e75b871a7264f4ff1beb961a532d8a3b50698",
"0xdb6e1d43e7479d449ea8e0fa42ef14a41cc880de1c7699cab480edd8a79ac7f",
"0x21d8a97ad31f1192c8d87f08764c4f9a8f6c90940a6d444d922151dc812f4275",
"0x29bd140ba4c910a6d297d316c9bb12f3a67ef0acb14f68af7afe36dcab638ca7",
"0xa61d2fd60c57f574e19261a4a5f15b98af58e10836f3175d48fa7c361e98ec8",
"0x1d593a571d4d07b6b677c7c987263c4f9ecd5d264071a49e6a65a9fbea46da81",
"0xa764ac4206cae37430c7e6554f45e251bf3a4c8348e686d3103d44a3a53b565",
"0xfc4c56a0e57f381acc4c3d8ccc8f9bc02332375f6a47343896e019f2679a7f0",
"0x1c34df18abe2bd65c68b1e40a634311aee1429b49de0ac7a0ad890d434665a9e",
"0xfa890b0f4e407242899e2812dceefc2e8e5daa8d41964612d862b182fb084bb",
"0x1df4265e4bcb86f8df10427976b496708404d3eb8370ffe06d2fb5eb21597ab9",
"0x14b74c5d557ec1780f3a0409c6d53b3b97190734d6f48b60ea42c5d54c194ab0",
"0x112e82b702e99d25a62f79b82d5f0620605381ae21c311eb3b9b6407ef712a27",
"0xb22a611ecdec54a9e15a98fbaef9be8bffe8c6f65b594fd8647ce0d03b1a819",
"0x13552102754e83cff6a90cadf9a9fb9c9c4704c65200cb87144e7bbef93823f5",
"0x90872282ea971f0593587dc8e0f8b7bbdf36a1a762b9d000353407306f7e732",
"0x101e86c640c3bb179c0805a76ae6f326efb5ce0c7b584c0aeec2ddadd727c97f",
"0x17a1236e80618f661c6b0932b1332b40802aacd5fea74c8575ab87a38bb7debb",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x12398407948eaecd57ed99dce52b4051d9a7f862241f682e26f29366b26e8acc",
"0x1846ebf17d453d52ee6bc5f217abe6a0d5aa43084af5ced178a081ae3e204fa",
"0x2054f2993d487237bf6e4a985c3abaf3ea8f0578ad5eb731f94a0dd533e846f",
"0x1911b97db6f1c83692aa3a44172aaf316d863adacf721463e9b34e93c3499d5e",
"0x1e7f11887082042971c2cf546c3fe7031d955ea7e371cff4d270e56aeb0a162",
"0x12170e18a97a2c89b045eec5263655c47fb08fdc4622c5936d0b9d2aaa721cfc",
"0x209b3d0342a6bbbcea6b3ec256daed1605bb9afb9adcb0ac9ff0d409751f136",
"0x6144e781f4197e7402726ed1e01d1a9df01807d8f679e5bff27837902bf4b85",
"0x129444fc0f4808af8a64b51d94d9be48764ade198781acd87360efc9dcc7a8a5",
"0x1f12b62b42b308fa0b8677bd62e9b5fb6644cffd6ae43eacad6d127f8437334b",
"0x2a1e7df0ce57b7a7c3fcbd73c68791c5aaf538727082f773c41e94fa24433fba",
"0x11ac54cbcf0e6175c34eb7e364adc9a26eea739c22aff79208ae371bfc8b1cf6",
"0x263230c117421eed84437ed926810a77a756789fc8b3cace2da917ee6311974a",
"0x10df3a59e7ec06ae62a749bc6791d1b9b2e7cf0bbcf519f3c023e543514e5c5b",
"0x2ee43f7cbc305d64cddff15cd91b7f6dbc0425e706b107e6b146316a8ed4c433",
"0x15e9ba236c3bd1b8efe4391047d6de8b2d8ebd45ca5912a619f7667655a1b750",
"0x1d74abec20aa969ad6f1991585c09cf7b2e4b68998a748fc84fe304511c6b599",
"0x5ae72091e906e7f9d94e8b5e00f4dd0b43039d0ee9ac1598c3616c86d7ab06c",
"0x2b548c790a449adefc53712a777b2b90bea7061df2f57d337b9f512940bff3ec",
"0xc79e3413149346cf672ce76f5181de7604163cd00c9a5263fec43477ba2fadd",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x3017a09725154c2672bc149b4bcd370771a14807833c069d712618e207531b30",
"0xb93ab490450416ec4a761155768efac5d022a8b3712cb410b78e43826dc07fd",
"0xf7ef4a57e815865508ac5e78bd6ff37c11dbc4bf0773864e943b14e0f79c872",
"0x28d3598fc9de7f8e645588886736a239902008f4c0c54525e1927cf66bd0a047",
"0x178d2dfede02ec9735d83ae6ecb07d875b78360c45d9796753b52162050f2473",
"0x2055e88d1c4873c3fc760261b724a8c8c852b05773e03e4781e03dcd410c878a",
"0x201af7d279732ff24a7300d4a63a327a0d152d481e75701bfb1ae60001808de4",
"0x20b9d7719511885b8e03da08d1289fa02923259857fa5c51a4fd3f6bbecbe8e4",
"0xc0c12d9eb25cf37cd472d0ec9f4e283832823607ca823e3ad30de69cb10bd97",
"0xc413585abc142ff58981d211bed7b8d7fbc6c0538dbffe36105ba44e18b38ec",
"0x1ad95bcc4eb2757c070d732f7f27ca45f4685886ec1a21e6222dd7b99487aef8",
"0xe9cd75323a37d831825a99061f0920e6594ae3e3e94d45a3a33aae620d670ab",
"0xfe94376e19c40263ded62340d5042f64e3708e0c556ab677b64a252de7e7201",
"0x236be50f0fe1b1545413d3a6d2c60cd28cb80b5cecaf301fb32d687ab8639656",
"0x28033ec35e8541ea37b843d7cd1613c7c95de6d6a3c1e7688cc26ac5c0433dd",
"0x186eea9c433f8f5ba4318087295fae6003a63a5250cce25ff3127ceb8ea62226",
"0x1997be30d551c31424dd592c2df897dedf13631320bf71075ebd15dd0eb234e1",
"0xc86b6e4ec0b7673c81e2a33cfab7f5ebdcf740fa723952f5553a60d7866c0fd",
"0x2079ea58606d87fa8eb2de37607a65768044990a0329f877b16141d63675cc3",
"0x17d722901c37847aaa1f74a31f9948d916c880d547bec7b0f2b9b1957ad97934",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0xe81a4c71073cfff9bc2053e730c22f6f04712a44b6fdfa3e5d031ae937ba4ec",
"0x1b643ddf9217a65dcf59a7c4a40f0a8ab16d034cc1281c981940d2ac528c11b4",
"0x26cd2f5364c6d09211ed0c9944602e97e582b47e93f8877923f0367c25ecb766",
"0x14e4f38d385b57d8cef67ce66e5199f2fdda3ff261a139a9a421ec1f2bd540b2",
"0x168e02a829c74f8224d6ec0f2a87b93714d60848920306ad51309b5f2736c998",
"0x2fb61a6b4f14e47f6ec64e4acdc941829a48782090c2f399435382ff67b7747c",
"0x2b8353e21e9a695ae8b58e8a11460e8dd7630b073db22e59ef804f570e8a55e1",
"0x29dc5e33af36ae34947c29d674778729ec99b8ab4fffd5c3d957ce532ae7ec10",
"0xf36d6ea37c6705c7ea7bcc34950a883ec6505ac89b6b5d41cc743516e6876",
"0x2799caf6a25f94e81d9f8e362093d9c5440aa9be99dee55c54f7120492a40cfb",
"0x2bcd01c7e5c45ca9764c04385a1636e247e47382b443d73a905ece066790e08c",
"0xf0d76223683dfda5320cdafcc711a2038f7ef465f9847a8c1c4904d6066adf8",
"0x2974f8366a339e664e9b42672012b8ffae9079796783a178ea0009179fd6577b",
"0x156f973d0d9d785674e3b7e05e96c5b11a582c75655082796018e9dc11bc5b64",
"0x19da910e2a4be9d039440b18d700dde2f65455708e7cafabb61809e4103c87d0",
"0x2cfc58b0abe0def0fb166d114edc3d0d3cea117ac3dedde6e6f4fe7ae4768505",
"0x2c0c40c61c6598dd8aba498ad9199f38bee4e39fc06ea761a2de890aabb5d9a4",
"0x1e30543b1ce12e136f719a5920cde3bc35e1b94142a993b522b96ea9703d4cba",
"0x12fc3e01e274c109f341fd2f9869165284c3c7567e2604dd638d0f2267d63db",
"0x2a9680b2eda565239cab76b7b7aa8089f732fe9f0167c9beeac9ca8b146387f7",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x1421e02cf82980b68a9c81a28eeb397e0ccaf80055d5aa562d9b5f68bbebee41",
"0x217804431d1cfbcd6e2ae64af07ef7eb31e21baa352bcee45c73af5f07db8d33",
"0x2d15bdfb3a952df31cade21c99f2933edaf8d7aa3f69fc1a16a3e6bef6c7f5bd",
"0x27f5885f9ddc3ec7e7f2b43d6cb0c0ae1e0e2555ef46cdbb753d13528e239f0e",
"0x3a37a151a0a4214c78b52217dfb4bc323c833a25e0c6fa5b2c9c4e1c3deb674",
"0x11a6fda46b867456af4f194a5f0571a3053adde7288f9fa84793b3516dc1ae4a",
"0x24f22cde459accabe8eba8e9608341086af4cd4c04da2440b067cf6ed63b196",
"0x532b9c8c9c2627b9822eb7cb4e26ba7356c4c867c42889e19d80903be433a1a",
"0x7f309d33a4d334ca3179048797197b7f6729a3518735d608057330342520b0f",
"0x947f36abcd0fad800f8abf23edd43565b6b6c26b7e244af6527036971340f67",
"0xbb49c33a2751cfb8848554d24c216ddb7e6b88234769ba9304ca0bd580c2493",
"0x1f791d5f90371b44b925e5fe04c2e994a584fc427e4219f551c35215e022fa9a",
"0x1618299c6088e1d3a91f6cbc0956c6afbc3c38fd691feadc8d6787ad52d976b2",
"0xcd4c820d82ae74e29d1915d6eed53be77e06c36f27598cf78773b06b362e029",
"0x158545181f2bd7b64bfa41c26e3d4f5917ef52851c0046a7f18c26a0544b2ef5",
"0x1af91ea8fc2319db6925b994492b65f631b416992595c9bfaf93ffe5839d86",
"0x26c03eac9227b0be2a855f95de0c97d337d763af75f1ba327a9e409cd5a718ca",
"0x189b176cd8975d36e0ef78f2f39f8780769d4c7411a5ad2724927981ccb1ab03",
"0x41d9c7ccbf82c77e0580400cf1f9b530aefcdee51dc5a1a4b5a142d4170c6f8",
"0x274278f69995b40626a7796e2f70b1d6b52f9fcff1dc50967080d9f0332ec782",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x1c9a29a3fb7f2b95c153503276233cb8b1e4336434661d97a25389fbabf3037",
"0x2cb5533d1d73b7b385328261659124419a9a7967483f0e3a3e63e3a4172d1712",
"0x2e9bf13980f73bc9d03f4d644e7757f4a254235e659364b078607b15841ff222",
"0x1467a26136dc7c21ae1d2eb531fd9af993c9c0f7923a0f17683babf7847ff5c7",
"0x188210cd164a330cda3a1ec91c7b55c8210ddf706cbb38ede5d8b6ad98122539",
"0x21789113e7aad51c02f8b3831e2133e1997ed31239ca267c6682b003d00f46a2",
"0xd6ae72f4cac38afb4f95f69e9af3571df0ea4d7a726ec3bad4c9c3ce743543e",
"0x29f63bb7c7b8dfc1a470d95f246c1ce2fd3126baa620abe230e181c191cb7cd1",
"0x2f0fe6071d605469e17000e29ca7b618efcb9fa7f5b296f7312515b7080ba1e5",
"0x2c993b62a92c8ceb812cad18de9b0ca96e041be6b12bedb8f64797a6b26fe167",
"0x2fa9ced73852f04ca937475317f1ca35adfc8c2b89bcc4ceae7fe40a28f05896",
"0x130264e8ed86dcaeec0aff16f605f7fd4577783b348758655222d4b6c003855e",
"0x5137ce88eb7162f2c2ee9fa54b56b951a4479f53ffe656fd6a5ff4c9a03853e",
"0x275c55e247d72ce00068db24abb786eed71968b226330472f6c8a609f2dee36c",
"0x1cd13cb77f0c869c445fa8f9d6d49189f7ef7ec00cb4c00dae22db33c763197c",
"0x6d9b6b1fd1e26a4ca07e71e3f9d40647caa0ef100a990ff9cc4b73ecee81bcb",
"0x169dd62b282e78ff51548fc12731cea18b3bb95e8262d139b1974b2933a7b373",
"0xc0653c4aa7fefb13ab5210cc32133a9faa456bbca5f4f0a4f4a1b8d14702afd",
"0x2ddeae46a42784ce32df7b9f7118aef9f13552acac2046005af17748815c23a5",
"0x2263646d28d39b4b0ff6d2243ea0e67239533523f83fa0f4f6d575bebd7bcfa2",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0xf91c7a21016b36d9010165ac8b1b7169da842bc0a274adb5abf99aadb62b936",
"0x1a2e0a81ccc7ca01220f2e7ecf9189a5f2b9b46e53ff92d8cd238b5d195e743e",
"0xbf18f381ca8ee6f9ff4bde5897d635bb27dec564132e744ef8dd436d1cd97b",
"0x13296783d0803516483338c7df1b5fcf81f710522c631a1d6db1a1feb7efe67d",
"0x21c82f469bf6605a5ee156b2511e0f67e9a242e3d1172f826864a0606ef594ad",
"0x28dc10865221c98f25307ed8eb2e235e27d5a5d41ab3fba09baa0909fc939838",
"0x23cdb14dc014cfc69098cffe231e4d43a20c6b3e4db8c6d17fc3463fe94051fc",
"0x21edeea093570815944d629d7ab442d595b6e468ceb883687bf4a1ad49fb2968",
"0xae1075937d8413c6471b481f04b5f6da78c486c9ec3a39f166de8edbf6ef5c9",
"0x2fce3f0792f5cd047fa8bc04de4cdf33e1fb7813fbe14320cf794b05df31e9b5",
"0x19d1204d38bebb4547c168a8b8e5f9266c5c88f9d30ca6097a5939ec41366bc",
"0xde612e0e3ff1ec8c10f2f6683274e98c095439b57c178a5bc0c322d94ef05aa",
"0xefa0f50e18937701c781ab79f263cf9fd325d58dd4d0936c592867f49707561",
"0x22e1e777da6b3d2afe2a2f6f74ed2487163085e736f587089fb120e5c149f8d0",
"0x18556105a08859a354db011951e9f9c5967a71ce648bf0aba15f2a559fd3976b",
"0x1a5931f9bf826e643d72f1e85104e5108ca339af493cf5b1cc364552a309326b",
"0x19473fd23dcbda0867c0d7655f4a2b99dd34160fd90b3a12dba802b661dad14c",
"0x29c96a2d870db1de1e35ba02b37449a947dcec5e3708fc592414acb59812c708",
"0x157097a50fe704e1f4c54a55088edb174721db69c7b7ae1b7394403ce694b789",
"0x21e90e34302deccd9b3588cc6c5bcf0abdb909e8c75bf618bb5a5334af7a164b",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x1d31a42740e431e210fc1553f20308cd05e93fc59b6bf166af395f9a66fdef38",
"0x7d5c120df5efe5ad44d43cf7966f6260b523a9b25da639017e7f14dfdbe22aa",
"0x1e4a39cd76190bd1b656e2982671758a893fc7d65985929f0c914553fbe793",
"0x2762072623790fc85fea72d6c64a298bfb16f90ca429e91a1db2dca2451110dc",
"0x144554ecdbfe88dc6f0c11c5f6b11fee2a86b1ec4cf9d69750091a7835ed3d20",
"0x1983b95a2c8b6fc3734c7645ebb497b942da887c3f91c054fb1a48d3c8a1fc2d",
"0x1113d1a221def2da4cb7faf3684ceb9f6bd2f3b0f52609bf08b2732252e9294d",
"0xbf64c4ef1310f286504c25a637ec31686cfbaff0c10ddf272a92f6fa8af8441",
"0x1209796e263e0d9999996e9f742ddcc4d92a12fd58ea384fe0a639da9334dcdd",
"0xb1eeb6c4cd2d793bf5e7c27bb55c1ccf4a8d010c6e6fd4909619960ab127655",
"0x4b05da50f761f6e8b2e065c6c6ec74e9277ad16d1829311bbebe773bc234a18",
"0x328086aad9ebc7aa0190d029b1b9ff8c89bd85b90206799d7f0b9a67806e99b",
"0x1ddfbad99857e4b84449e1076c3ff7a80585378d2194d944ed9a6fe227b16b85",
"0x86cc93c30e9bc4bf90c09dffe4e3755ca2272a216434ee6df144c2414930217",
"0x261fdfb4046f9f04902356a5682d941d98de74d39de11374bdc24fc441d7946a",
"0x21672ca29365e252389c40a058d9af3cd23d84e9a5c4c405b7197488037cfc09",
"0x2e04c3ce66b9cfecba87989ded13eba5fafb48fb63088e48010dbe8fa1638dbf",
"0x2c8b25d7c74be5b163c04e13cbc7478735c966253677c689ea1819e760b20aac",
"0xe9cd4551fb4ace8e62491b7e6a32d6ac5eb57fb5f801de1b27715cf1c770216",
"0x17cdc28c38b48f61a48be7d1e5e5c57e8d3caef8f59159cb8017b21d67be834f",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x1edcbf1e8c9add9f39b44ea9a4616fa51a90aa8d376e251e034a309dd69330b3",
"0x123673f7bf110ef3e41b81a4450a12dd2ca03a8e2048aa76f46be766192c68fe",
"0xee62eb21957dccda2e276ed02acdca3cf83ef2d381de42a0952ba4e2e71a086",
"0x67c268f3b750898c2a26b57a4018e3be45c9453001a6205ccbb4abb9a07696c",
"0x15a74bcb36f93b558f2f215ee8d41c64c4780df231ffa1b991e116f0c6e545f3",
"0xfd15b70fa8970f88e689bcfe746a1357b99a5b73354129d3d49673ae432210c",
"0x217e872910c020e9f11ea5437b1dbc0f45bff9a2c050bcdcfa2b6c345ac11451",
"0x1d12a9b49accc9f63862064b6f3d0a2510aa99f1d835880cba6ac0891e172578",
"0x2c9baba92c77edcd883f32d4c34ff1dd285e99653e602c33ed3a6ebb65e70a0b",
"0x2476eb407cc255bcb6509912e6748cff7adeb4cb933993b4f8c9643c03988fec",
"0x629b9717c416be51a6bb98c3716043450d39fc02078e1498121393a09663302",
"0x1b8a88c8fe80358d0e1532f7ea232f1716e561326b5000f53ae948fa3eff7e78",
"0x23739fa9f1d477e950ff4d63f82d632390546879165819be81219773004dfce9",
"0xe7522fcd267e8fac57c87e271f4cbd13d488f4c25aea6719c2a17cfde4aa8f0",
"0x58a36221cf3818847bd604233233e69a718cecf262baa457cf1e5cccb9ff6b5",
"0x9e192a9e456d483afc81ea5fc9cf93bb91a03334eb4d239753802785c6c8fdd",
"0x74cbcb738b033d9e9be837569ad0dff3d8ffc1eb3ede44892566568cb66b68",
"0x283e0b8b91557645c15defd2d8f6e21f27621adae3ffd0a7d7e9f31359110260",
"0x10eade70c487ee2cd5e43d51525ccd0f345a69ad735b603cc108c17b498152e6",
"0x2f01b82b8346c4257c16eff957b22028c5502667fa6874ce956e03fb6939f21c",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x664e78dad6b22d4333a1f9ca0ba708ad6ab875efa8e8997a0a8540a2599b0c4",
"0x4e1f57eab14954bd0b21619ace372b8d8aead861ac55f082aa3bc1d8245074e",
"0x41d00073a80f790beb8d4b4e2ac64f807f806d5fe9057aa196f880e653e6c78",
"0x2d2d71f2fb3d724683423f92661c8f441565d2e5a878b47af687fb9b76e1737f",
"0x2c80f1f732fd19836516ecae7d53f145076edfe857a6cd0749b85406ecfc14f2",
"0x2c4c5978cbe976f81116003e82010a291a0082dbd92daacb0a39bcb060a8d5e2",
"0x13e3c874118b9913d81f2d8bdf4a87a01d6e521d6548c66d7c0421db714dffac",
"0x1c0abdb801cd736feaa3fe7f98515e72f7a8d72ef56b5952e6a0e807e2c685a6",
"0xbd705c574e698fafc2d0979e92e9bbf0ff92ecb0a71378be168bda88c33d0d0",
"0x49067c522e1f0393a320557b41676f2539d7815ef2b21fcf310cf626d13a133",
"0x1989344c4aa025dd6a33c0f2ca58b22ea3f49ee5d29f0150ec05da44a6babd2e",
"0x2059839a6b9192e77c6182e6e564002b930aed9f328d24061701ce784408e3b7",
"0x2e29f425e322f7780dfc808e679480fcaa0761f752420a49075d76a085e80e28",
"0x2b310e22ebc1bbfa6514fbdee2a48cea36c1e938a6927486fcaac8201ff253a4",
"0x243b6f33e43a7d1ed19e7f1b8163316c0408e456180d572d52321b622a2296c",
"0x3028c94e563bc654584b3f335b0bc3312ec0ff0df98d3c7f2d02d710e1c7642c",
"0xce5a4699a96b251fe3c809248875d0b1d60b90cab8a30ec6f882e5ce1823fa1",
"0x2b9f25a7fb74acd52831e38877f95297970b3086d7888a5c2e1c11ce1fab81f3",
"0x2bfb58abfed4844f986fec4419dd8d83eb0d8a097b72b84c81c72a9eb4e4f7d5",
"0x239bc1e4d55fc6ed2c1e41d18252c011fc588e358fe839e1075fb344ff366d8c",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0xa948ca5c1f9c7d679c476d6cdeb6483d28b8fff1f4b3258aca45312da96c7d1",
"0xc5c83d7d624699c3654b32ca98a4da4723c4601cd7609db406bdcc5a9634a9d",
"0xfaa398f6fc63cc36b00addcfd69233489a8f96cac8fac8d91cc3c3b502d2e2e",
"0x1db588b11e10eba9c51ad6d4d990dbb580c64c0bf499a3b41006dbcac277e1e7",
"0x1cb8fddcaf050feb6977ef7fb82625d63f7286e4a0bfa52a9f601de563bcd96e",
"0x22154748d72b0e00f0f33d6d49e08b874ed2c638fe4c33648adf8862748b2f71",
"0x18bd4153a10ebedb78f02b14ea2663a857f458f2708394c628288cfbc802b043",
"0x111deeaa497d2d32e93d6d783dadfac2726f8487093472ec4fe8c36bbe2bb5d2",
"0x12edd647677abeaa0d99f2e4596bd64e1604f69552b6971c8ac3b44e7cd10a2a",
"0x2a1d5873e48e00abde4902969a921782430bec7be01a4284d0455219675df9b7",
"0x1470d1c0f33d2d5e2b2098376d16cba0738c4fe278ccfc3b824879535448338d",
"0x16899463366b193f0dfb39b35df617118d55074561482e0a91283bdf40804051",
"0x2af12631ed9ea59d387e2b2aa14a3ae1d28cc496e7fd28dc9cc149120108369e",
"0x6eefb335586d1eb862c09c79eda3712bf64ee5f51913c14e64787f59ebd4fea",
"0x256768779e0e07e677ca90aa7e514bb6eee69ceb47e749fb90ac20923d3af52a",
"0x5ab1585ae26b10fb8645be74d3e1afe99f25546e0708fd16ee2493844574dae",
"0x9b5ea9a096902a104e5b1fe5188a98ea78a373e7f9bf27f6218fd5f71f6e6ae",
"0x2d34bed47cafecc7b37ca25901e9f5e3c658950001d728722dc56b71e2d4619c",
"0x2d0071d201824d43fb057a0a523c701d2b8a37278b5178c18ed6910cbdceda12",
"0xa770d994f92bda5a4b63e65ff8cc35f59ef5dbc20732e1580f703d41b5b6281",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x1949dfa21e6b27c70609ed2bcc7aaf4f6244e289500c48fd1245566837cc74ea",
"0x18eacf1750c093e10b18f45702a42766f1803f4d2ad79399b86856d56d51f25e",
"0x29c3379e427d4e89862989d63a72321fb73197b029092ab8bf24c127183cdc8e",
"0x29fa50d3448bd783cc59afe8975b7da38d3410fcce680210b3295f8af30929e1",
"0x1bd6d35f109a3549dc1da7f96953f1c38f069e9a44141e85e69908366cd65823",
"0x2a58f6745b90dfe97d3f89415e375c43f464351bfbe3d140cabd8a343313eba4",
"0x1e34e898a082d5a1bb452870e41bd67cc5932031ea8afbf460d6fe4c253ec6f8",
"0x1f2884e10b6e90a0bb15c6ec37d269489c35a9fd5f2f8a548002cabaf189be32",
"0x1297717d266d0f55d1a8d83e85c22948a89227f47408b0a6bba88cad4e4064fb",
"0x2b9d9801a1b0a616582b65b84d5b76da1d6f428807f074108cce867bf1ecac7",
"0x701f771295984199a107564c0918dd3c397380bd47e0a9f0cecc0d57dec9feb",
"0x1a294c810d83e3f3b9bcf709dd22b810055dd3e6a11e456b284dcd40e084a263",
"0x10103201721be8dfdc55548826c8f2c6c5ac249a66079509091b71179eed1d4f",
"0x22d656009cc9ad0ea9a60cbd4eb058c820fb5387714d8b4ff52609638f3952f1",
"0x1d493a429f8db9f3df571b9eb1d25d425a09d75e6bac7ea1c8c0da141445ba5d",
"0x3d1a76c0fecbbd1ebc3b20370894284bbe97b8cf7b14bbc95dca839ec9c4c8b",
"0x230688c1f26ce65d683b5a4033cc5b781ff38d4a4e28aaeaf57b495cf843b0a5",
"0x159c9adea02eeb1276c2e1600930929edbd7e47b1283ed273db5ebdc596bc672",
"0x1abb8a81b4629456b639965a0ffee6ecaae145990d97b2b05546f47fa416e57f",
"0x12ad1b21a9c02da3018f187ac6a54e376f8f71fce321933f5ec8a55adbcd0ee5",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x3c6c55cca4740582956cee40ce3053e89ed882ea253a366d07dfc9a508c2e78",
"0x1fad53f449b581d0ed39dd41975d9330768364c1a97d9fd511d0df16cb3f408e",
"0x1fe8bcb3f7fbf9c21fedb5a0ae4dfb7ca275d535c7847b23cb74c18251b726ec",
"0x218b93667ede394ae16efa07315ff7616f6864cb8293bfd3418f9d5b14756396",
"0x41a688c1fb421db3d8716a64fc39d0e0677a5c43de90fd04dd9f3622baeb3ce",
"0x2987dcb79171d214817a006127171695659ea28858ae18c6fa8e505a4ea02033",
"0x14f45ac12d071af305059de0fc028778d5c1c8afb476d5b7b3ce2ea6a5f3250f",
"0x959f1dec81c5f8225c1f2ff4ae2c67c73e4d379756f40ee9f691c82ee08c6e9",
"0xac0780131779ad691069ecbc4f80886c0bd9518d9e04b99146d29bd7d9ffc9c",
"0x2a7e23e5aa5668bc719b0cc26dcf781d2ca359987f1bd6f9099b953751c61fbb",
"0x92c0b897d36323123bed6c99dcb3b50e397c722cdfaaa9bf6740907a4b653ea",
"0x29b1674c1e4b705e7fd93d10a380145be75934710cf6b43d24817ca38699e702",
"0x25db198e1a5de34b6974aa38ff53572ccc4036447a654aa7f068602233cdc0c1",
"0xff3174ad5ae186606ffacbd55936b65838c2be6a635bf8c9941652a485b8c6d",
"0x1bafb08bdbc32bf6b81d2026005e3ac6390ad3e36f9178be21034262ea674e90",
"0xebcf6fc297c34138661ce9235e7c0153eda1f0c99173970442976ff849eef13",
"0xd729230e5d6913a779746f2975e35197eed83aa613b7f9dcbfd2f713b8740b7",
"0x20870e26b114e1e20c70ad2d6c3c29bd78918bea5bbd7ec8bc0a60980e601dbc",
"0x84a3105ccbeb8137931901cc0a48ca7426e5dbe4d0095c11d63d0f91c64dedc",
"0x1b1e9b1d59d5f4518412a828475ca50044fdaa1c3490491bb508d7296436d5bc",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x1f4bea0f3c5dbf0b4261b9df35e5cf6a5cc36973d09f0b35fad3dcd0a4c69acd",
"0x1222849342a144de2b23e8bd848ffd096cd3332f57a245dd3ebfc26032a6186",
"0xca7b33f1129a98d404e882ed0a70737543706248c7374d9aa6470583b24ab7c",
"0x18f80a875ca2972a4d13d41d81a1cec56cf384780b5738e59988d9aba4cbb66e",
"0x2428fdee2ef9912f4693ee9c2a59e82c625e23e9af79e990dd7884410846f8e7",
"0x154781a2b5c4401f6ad2809fb9ac23f3136a8e3950ea6e3f084600a730c42d95",
"0x2c554db641533606c10532eafe2439e48d2925c9d6e183dd85f0c24986ae38ef",
"0x3b8b288b1e1a1fd2faefab9b4e00d9c503f8574e67112bbe603eea37b97ec18",
"0x93a9b03da561b4ed6aae3a98f4d2a9d1d28146eb0e91464c25a0e8f2f6011c0",
"0x108843f8d4eee7c9df86bd9a2dcf003d3ece8c1fbb2db80a0e225597ccc54286",
"0x1f043a72cb5432a4c78f14505ee630bbd2367e83f18db047defb3ff1a495715d",
"0x15a8fb06e0c14c181244b3f43d4967e28ba32bae1e84223037abb1524fc26413",
"0x1ddbc950967b1769cdb4f8684b34d9bc25b04deb0fe5fb117ad609a5b7f4049a",
"0x246a58e326b240d18618908b13785636f051ca1c3d5accddcf7cf4af1362b5c9",
"0x1cf99a40b8265758ba68441a45b4993993d732a8b3b88b4d983a62044c0bf7db",
"0xd7de5619f4c546050439e79af5f2d0b964ec40ac92ab9f33c617623c9d0479",
"0xe5e16504bd5429f1989950e8f41adacc95bc94789df4f29eb5c623a9ce4ad87",
"0x41f35a7896a627bb884f8fea782cb487c872dcfb82dce7d0e6941765d1ec149",
"0x1537debc183e50b25642a94332739b9dfa8610ef8297d963ad4f25114897675b",
"0x2d702440567bcd957920abfe3ca1796dc105a9d6d69df68f7040d45e14825154",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x14849e30e423d2818b033824be79e994d3b294a7745d47ba7a04412c976a4d86",
"0x136803dc9b44527a2831afd600b224d3be36a4fcf1f1bb12f6f3d9c78a49b55a",
"0x28ceeac4f3b856158657defc6ec2d98ae8222838625951aba51df3d92323af9d",
"0x24e2a9e2a33795f29eec4e3e5171cd1a4f102b387032736248d51da2ca097dba",
"0x176b7c931c84fc51a695bfc635c9b2d7e38c0fc9e39119a5d270be388a7ecbac",
"0xd230fbc8ba30ea43febe4d7d57cd646c1679a1e1a8066637e19d7b5f783c465",
"0xa3d177852fb1432eae4cea8005dffe984df233705a362ea87fd318658b1b10b",
"0xea4e2627f1b0f14a84fb72f14025e3f2d4087b5e23e197b4be18de9bc5d07cb",
"0x2b5a5586e185e6aff9ca42ddaaf4a48fcbeb342a33b7d8c30334f69917695c18",
"0x930ff45950e0b3a55c7b5d59b1bb103f43dad87f10dc01af4f029f1334860d4",
"0x13bf29d884e6f2f7718c62b49b2e4488f78abf3371e60ff6a55f8fe614093af9",
"0x1347ec6f72f1e6424af5dc07e72c8ed704c1de25df8d0298a06ce875337f16d",
"0x7f98eec37ea11c6a953ed4074e0de0319c71c5d80c6d9a7f1a7ed1642cdb3ef",
"0x1fbd5467ac28426e82ee95d4e67c1bf39ddbb0d00c8edc994d01b085e81025f0",
"0x160ad25d0a5b481711dfd537166e9a758f46ae98705c09a31bb5dc9ca672e06c",
"0xd1b059d762e26c7b237c2529c1a2c0420112b04b34071f365768e31c4ee44f4",
"0x576eaf22ed6ba9247a7c1cd5f36da28d3c82fee37029d5a564eae4a149f2ca7",
"0x189097900e6ed2067403aefd8cb2d68f8be1386dac2cb067f346d027b92c13ac",
"0x1d611f1ac08a2fd6b50b23612cd9a2dfbc77d3f1f01cdf0c97776885ee5f538f",
"0x21966ac51d732445609cafb1fa452a675d16df7f7c0c932aa136c7914da84816",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0xc4339f0ecf040eca09a8ce68b829e18174e1838978d18ffc85013bc4569bd80",
"0x20bf882ac8fa2b8a798c0bef93c8faaf79248ddf7520bf6615b8d4438f3e2f4a",
"0x1e097984b47ab98e3f1af30e8db0aeb16dfb7257a5d717b74a0302c0c65be5ac",
"0x2124c450afb451c834597afcdeae34d494f42b83ce16525ddd426897cb85256",
"0xae46f4aac64bbb73cbc4861b9d67dac7a5b9461185f1af393d30e0f14e6c86e",
"0x29608e35e4618f2d31f77f1222d8461c5daf83f8f96a1c3c22ece574bad1892a",
"0x8dda504925b8e72976d7225b9348b621d411c42725054f92bc5ac7f20ee1063",
"0x2d83e776ee847bb606165d71c5395381883eefe3e72db208d05671166672892e",
"0x158c6db4fa12040276f28c52fc4179c40c0b992ce3ff614cc8a335badcb5625c",
"0x2ba81ac87e1ba4a0abd35ef4d5e708098d5b3ea59df026301d29b0c639001d1c",
"0x297ca48636c22e1b41ac10da84d18930f4293297be2de6724d4a1c927ce6ac92",
"0x1ec2fa366088aa3d24faa8b0857b0ee947e7ac412a5c383d80a52219e3036715",
"0xef8e90ab9a0d92209ebc7ae7eef599134faead83d4cdc6a35e11486f256f91a",
"0x1a1ba37ce6b31c46f06b166007b84b1b5a729277769da12ac45a05329b1ab25e",
"0x1ce58fd6bb4c70f222a00ce15e034aa7f951e55745f7eb0e89d9945dc648ca8c",
"0xc96b4aebaaf211ee53c2592611cbd815cd8ad79ab87eb426ac951d465200f31",
"0x2ff556ea91ea4010ae322b26cc3dfdde21b77814aeeecd224d83754b6fa95b91",
"0x51d4d2e3822d407607a763652423f88ab8ac41d836032e330dcbdeb89dd94d5",
"0x1f484dcbd4ae03263c1043e2c67dcd871af9f682bd063efb99d6f2c1f58dc89f",
"0x3625c6bbbeba41cef4419cfc7885a6acd236f23c10bc21eb96fa3329b0aa808",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x132c2bd9c3df321b8329f997d51ea4756f06d20599a69b00d9f5d327f431bd9d",
"0x223271db36c5a5b734893666d05f8c23472da5750c9cc2185251d1ce898cdc31",
"0xe442d13a0489c8ff0792219ab95cdcb6aac03d12617b498eed4f437e9e90f8b",
"0x49bd7714d013f9d4ae5d6b0d8a1966e3b6ec2991f80938e99496db12778c62a",
"0x16863ace52579a519dc0983e73f391982f34daeb311b455cd75b3c7f75c4a406",
"0xb043bbb7a835e934403443a871e8b09789e825314c553ddb593c117ed9f7a29",
"0x2233e42b11b31512cd6662e6e2d0f6123b84428079fd25823e39ac7be086c286",
"0x1eec2344b54ebb5d2d89282cef20b5a8297eca522759df7ee82f9306cf7013f2",
"0x7d3c2f7ffa7d307b1b80cfe7fc4fdc571ee008081d1a37b83d83f928aecbed5",
"0x2040b72eb4e1314e2c6fe28b0e10cda2f444baa97cf15b110a5571ad006f36a2",
"0x968c69a272239d4657b02e1e1157635654c2493c5dc21c80e459c36943c0c7f",
"0x113daea091f19279a75d148f3407940605147f41277347181a2eb45da5e1deb3",
"0x1db9caad8a73497abeeed4ce12162d16c8ea56a6ba6680cee0253d7010c8b0c6",
"0x323906b531b036a422544f9a789b4818947bd7e1010a9d3147dfb298d747c97",
"0x2a17b02e605c66f2e9191f6001fe8d0c054e9fdd72aa912d61b14db3e9e5ff36",
"0x20215701f065bea87da0f51f31fb17022a2ff12ff86a3a7d50bf196b9a1793b3",
"0x2ffb3a8d5050efe66c798eae2e37fcb0e75c8d3098463728f1258d3d15e9c58d",
"0x42aafa50849b504124ea788b0ba7d398ce77b42c09f25618b1661af76c42d7c",
"0x1f0760c47e75e2988c7c5f2729776fd656ca950959500807c33b15d2a20b8d0b",
"0x1b41324592d37fafa8175af1dae1daf093b7bd074de9dbe0f47bf246fd338295",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x1326782be064b822cd54a82d526e0861f69cd054922b7809cb2f1c685b255442",
"0x140941464435a4da425c24627a01d5d0620429caf2b74c1cd8217f6ec0c5952",
"0x16d038333ef8265b4437495d35251402386b448bf2c652bd752875cd6abdd7a",
"0x14b3bded0283d8f82452086053472baaa94214fc64e23eefab04ff3a666ef793",
"0x265423dd06e1bc30d7ba50361df7b08371080b61cffa5cfcb4de6b840cdfce11",
"0x28c4d3106aa551425285a62673853db6ee69f820a38010b1e986ecb25a517c43",
"0xef4196f06abd4be2c6c77cdd3d9fc71b7056fcf82ba878a3c0f4a642184f33d",
"0x9ae72038e07e063172beeef085b160204d41fff261164869ddd3b35aaa852ba",
"0x1e653d313dc085a19473cbf173a65a752d300ac1001b2cc6f868c5aed1d5a957",
"0xfc8d4790130083f7d876b437a36a5a07861bd3fde394a7297affba00cc0266b",
"0x8889eb9c02f2805d59ad7c1cc11f1f8eac7d10cabb324cd28a4ceb64fab9335",
"0x5e2245fb34a0b6d4fc8c7d9b98faaaaa578a4bc650b9ccfc08f2f94596579df",
"0x1f303116020fcf151af2121de29d1237c03b89d27ccddfe6283c1edd985a8e75",
"0xf0deb6bc06f2954f1ff6e7f2b0f5874a40a67621147f49d9208913e3da2ee1d",
"0x138bd70bb31ee416686431f11be6768999f8a881cd5ded3fba47b1e715b98a76",
"0x2323cc181a6d96004077fc8afa78000b67af7eba4a37699675326751ca3587bf",
"0x2cc5a935240839d0916adf0ba2a13b373cd9a249f3dff29d4e636ea39bb2d47c",
"0x2c2f7e211539740f135771a5613be1b9d5626f84bd9bd3d086f6e33e497d4301",
"0x23a3b12944728d9d8aecd5b9ac2c1e8683a6d6fcde6de09f9d4981576f60bf7b",
"0x98c6085a8de8062c4882a80a9b53bf605cd6d3afde925b4bd97dd0ced63a2d1",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x2b1aa48ed061330641b7610a5ca3ba0397bac5aed1220abf1ff3c053799d5798",
"0x27cfd05fdfaab10d703c5613ac9c30f2fde048b85315e4cad39a76c2625878f",
"0x2c6768184cf84573a0e970704987f3627cf4f467e72d878aba9ff0e6c32c76dd",
"0x1660e8db6fb22994cd208878039549f85464278a6d593dd871de03c5fed8233d",
"0x583531effd84ca69b517fded392f636537ccac39575313c04564411eb381b38",
"0x1b1f369306d9312d665302317d2ef8ba8a5673364ebb84b82de156accbc68485",
"0x26e1ae1e46325eef62e0ad0702b7c20411e5687ac8bc8b0c42f2294ad511e36a",
"0x2267a248407bd8dc0be8d6d60a901e6a6f63198e43ce9ded8b48f35117cca600",
"0xaf3dae82886360e75e265f24f928417f3404fcdc18896104e07dac544146d05",
"0x1322272068ace8538671a961e8182ca7379ae8066dfa8824036856446ce68262",
"0x2ad6d87af121d4b9d388dc3bd0fb2160dd0d43deb5d5fce770b3f66d22a865ac",
"0x2db628ad83bdb8c87642ab36796e64464a71c8dcc07db41090014d6824e9e55",
"0xbcc76f8301e3daafd571227cd8dd395fe5b1ef2a88262aaaa30eae1be85a66a",
"0xe953f3e2a6ea919a39845e34a8fff06874f40fa0c021102551523f0052f2ac3",
"0x4ed6096b59252ceee6dabce4945012b3afa929619e124fc1674f9742de6ce9b",
"0xc45fabe45fad457d5e763ba6f401e038a8f05187a50156e2e4f73e9eb0c1521",
"0x9cd9ddf426f07cd7ca72e4abbc3ca38063705cfe04a002396d91101f41a8ebd",
"0x37124c13e8f5393d02c7dda6fc39b986e10f7eee7eb4d8e8b6798aea8bf8116",
"0x12326c23b50b4f2ad7ad2a6e2f81e766da9dbaae3a85d5256c36f54f99504c10",
"0x27097f5dd86e6bd0c09ec07ed1d565846382d11310d53e11e4ad9dadda2d2a2d",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x213719ecc1401b7f148d90bb4ceb0cfeccb1f84a03670a65cf2071a97c55188c",
"0x3ce9eb2e5a78e09fd8f99bf3677cfb69d8d81fac2ed57a3796fda4c4a75e067",
"0x2085f6b2ed31422f2ef8c9e8132320a9ea78f629f40050f9ae1f8d2212822423",
"0x18c42b10a0239a0788ca80f40bca9eceb54cce28ad7025ad73c0441f46e25d7b",
"0x2296d46885d7edc9e2f4552a8f61e0320ab91104076ba093415f525ee1bfcb4",
"0xf464a47774953e1647c8823c1f0e7965faf6e8e51a392f342e27f6b7e1e3fac",
"0x1afa5a730a377f7595ff598c11a257e2b25dc96a71a536671e98c4fef8fbb126",
"0x275f04d5ff1c821ef2729f6851a372c7db62bd3d45b68fd05375753a9ca38ad6",
"0x1ab45e9a2aa1daec4586bc866bac1bae78d8b8aa112962f34c5c19a4588f11b1",
"0x2c2b2b27465ba8f6c19c1b3e4b52ad9e76df8671ac3817d8c467fb7ce1a0d9b1",
"0x3cc2c6cd22dd586414a1f19bb9bb0f8b7dfde77369f2033f036bd19412410e7",
"0x17b6daf401b7e08bd9c414d067a6cb484ee05cb2e7c0791ac2bf415e847705ac",
"0x43084224ffff7fb2e73981b3d2da64588e746e1ff0a8e41021cf814e846cef3",
"0x19d25137be34aa73379f19107fefaab7ed485b5d49124232a91341747818b125",
"0xfbc00ac7aab927fcab38cc1f033d0c79ae42cbd8af8b9c676235361805f797",
"0x2a452e57d835dfb153c5d5ab716c615586a692f22ee8bb70cd32ce786675b85a",
"0x14ee41c5beb4f4eebb844ad27cd712b8b7b7d3bd96afb18417b0bd83650ecf59",
"0x151e1b6f64a2a6ac4afd3ed3adcb59a2f246e4d018a85a4dec29867998bdeb1f",
"0xdbc95be9577eda26c26b97276780a2c44046eff2d20ef3e233bc513eef1d289",
"0x2142c00dc3ef56e58d4fa535297d2349fe5a8720609a459de7d10ee2ac206735",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x14f9e34fb8cf902037da0287f7fd59460ee42d86542ea027f5065f4fdb362030",
"0x1af072ef30b93499a21687071d9596f8c0720959f5aadd473015a320f525f3ea",
"0x1f79f8f436951eab483845158d798af4940c43b6c7606496ac7787e23d513562",
"0x32ac1327d91fda3e58b64a629d066b7618b0d2bb14bf0054f8a99ea94a7f9d0",
"0x1690528ebb80ebae626e4c7ad7808201106c3f6958a8fcccaafbf105bb982969",
"0x28d5726bbe2136f717cba221424342090f8922b607e61fddb1278c9090879724",
"0x2b8c6cdb0da43e1a2436f8c43ab3746356bbd0a40ae0f4bc282c8f24d205b2aa",
"0x1057e1a29e1cf4f016b0ae4b377cb2946f4ecec14d8a9e906e8bcf994968ccc7",
"0x26175299ec4bce279b5cd865110cb0f7253e035e4dd530dc78e98dd167a02c40",
"0x2fe4d13a9ea0682f7c6c79e2faa642823c6ec6166864a3becc3aa96a06023078",
"0x8faf60f2754c6f88af83be51d4d8fcd91a530c7fe1a7e15c04672be2e26ff80",
"0x1125b0b9078268105061cd44cfd53e59b4441c494e4e621513c0e2a7897f2ac3",
"0x2ca18674217c0814c200984a2e6d96fa6ad7a93a350ccb857f291dfa0a6b7c87",
"0x1b654e8ca3777847d7febd35e71555b5fea755b167581b91b8e66e7557a13755",
"0x25cb5e571aef3c5ea542332f3cc646f940ce1ea986284074b9ec9a26028fc3e4",
"0x10152a1913afbe44180af20ec59ec32a3935fd2b531d968f71f0365054faae15",
"0x27d1880942fecf4f9e46d11a1e3db53c0ae9385a676104de122c85c67a61b3d0",
"0xb4adee6ba01707c232fc173d7db356fd6dcba566709cc81dce13db425685c",
"0x1e4ce7b0213b39db08d07fb861278fc32ded0de6232c7e050f9e93e4abecf7f8",
"0x9e5542f2b8481d63429010b3f89aa2c01b07684b08c406d0c85cbd0fd01d2cb",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0xe24744fcd2826a25131911f4fa8edcf83597f52c72906932a58f3047f9d16a3",
"0x17a27cff4f6f9a2f2a1bffc998f0ec03338c0fc3d3ec9794b13af50b3ed177be",
"0xbf90dbe6022bd7df688eaaf3b9030c5b6ad0c3633b351abe5905c2a2b2eccb2",
"0x2678e3c1f390d5459696d950dbadb7b264f8284ddcefaebd120eb27e2b19783a",
"0x26df8104d4cdb377d22ad344e942b76261b457f52d8498fa69de4e1b8ed37599",
"0x29c0d6adeada68a869e934d2350a77c91eeec6da2c0d7dd111b8f03d73a2f54d",
"0x1517295c7a2561c1186efce6e54a6070307540b69bffe623abffc8984451bf14",
"0xd79894bd7300df6fd04a93836438358cc4d6e6921da38520a04fbc8fb4ece95",
"0xbda733ef7b53f5843811029b9a5c412237a72b96800bcdc6c71223d57157917",
"0x27d91c5d822f56a78c86f2422ca4786b94aaa2f3e066fbeb35b81c7e16c0a1b1",
"0x1e6dd8c7e739fadd91888860adf0392f260272a68d32b914f8862493847431e0",
"0x115d86835c20a27ca16c0aef5afdd73a1b6b7ca6f12116720b235274ca89fb5f",
"0x24df0f59376b1b5e39d9ec2aad776278fab288047a2df5df60990dcf935aa50f",
"0x45885167ee8e695c6ac79eaee96e087946c584049012a309ab8ec2087491be",
"0x44b70f5e0df4319827685be272a32a36ca3c4148b97c13bdab2bd0fe365bae6",
"0x2cc8eb658bd3afc8f4209a1c99566705cafc79332571f133979940b14d736f15",
"0x238c44c84ee349b63030b0fb02fa7653e547c4a6329b9902de3602c3c4fdda0d",
"0x19a32cb6029fcc93db2b01deb8264a9eb157e995ca21aa0e335589b06ff77be7",
"0x1c8612ec98aa9278caa8cb6afdbd00c02ee2f551d3d521ff5e9f92748557933e",
"0x2a6509f5e770cc50d718f8590f5f9de7748372d2d39f59a859c9211ee4bfd50",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x1bab122c560118bee8f3e7fbe1712ab2b2a7312af61fb9820b77dee8d44d6ded",
"0x27172e3eb51483dac0c98e32f05fbce687414c3a3cc27ab1c277b13ce2378217",
"0xa9e3d7f3ef34d138cdaf36b92bff06b4b73bc9ce36156505741195b98d049b1",
"0x1eca82667b9ff6adea09ea840efcbafa5e206c97037e01ffbb28412fd2bb44af",
"0x1dd8dfcac157843cf5f94f9b10baa21f00e02a2cb5193944c3d3e970f910cd77",
"0x23a1e6890522a89b9b88d7db407b00dc68a40692a366936de0eb9a57bbf1c219",
"0x204f236b39b9136dc92f8135192c87c98c7984f1c77cb6064c71ec047975ff67",
"0x2c7480b893a528fe00d1ce1e4d22b330bf286443fa443590a63e27aa91eecd53",
"0xc5370a183a6f75b698c0fc6deb4447cba5de9ef2002cd8eb2904adfa4645843",
"0x237300db179a8dd6b6d784735cdf4640d61d44b518ea8848d8321cda2b7b4789",
"0xd9c58331bea02ccab4b9ef03eb202f1955b266c6666ad886272fdce7b289da7",
"0xfccf4375bda2c5db513e2dd0638ea1d2edaf41c2c754482f833e17c62d92019",
"0xc414e955b84493a9a6c827f24c39f62a9f9c2c8bdd9f76c3884d16217d30c87",
"0x20544d89fcc7941ac4972e5528300d0c35d5a650b8ff51f72974008a312d40aa",
"0x1af59412421b520c1171d8b74057dbb01653f41082f856ba5aa6abb79a43c354",
"0x2fc1a459440613daf728da1cf3a258c093bf41706724e6260afcecc13d324b51",
"0x177c1e93ee0ed483c73f148fc7f9891cbfc36a338075bc01498a69b0e1f8c49a",
"0x98c005b2959ede9425452eee49a4b0803237cf111f046511f8d56bedefa7682",
"0x15866d82d251f9afc692c1a115cdc5ac28b4771bea862dc26643e6db1d61978d",
"0x2797e81dc6fc1e231f5051d228081b46fe53fc394524ff424963da9a91070bb",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0xfd25da5fe62ce50a1525fe9e3566e9ff0c9587302f778d7756bd05d8c6aaafa",
"0x2a1a6a789e908952cc8c2e72ef95a937179c9248b091d016f28e38db12312308",
"0x2bb3bf8f61d1ed85e2175534e9a5ba3d17dcadce45eecb3d58749a03e2b04fbd",
"0x1a30a88ce2e48fe060eff18e1c7bca6257b8e39351823a819daf303f5fe641d9",
"0x5ecd325b357e47482e4e749cc8305b45ac1e65aa7ddd915ac37f3098dfd2d98",
"0xfd33eed2e51061ed5cbbe5de05b6ede9152f36b11468387f518a997e4f72214",
"0x95e4c2caedb1de02a6c60b086b8d8b67b9afd186f65e158d2748d2514d37b0f",
"0x1842d38786dbac9400929648db9205d259677647a5024e35caab08260744f013",
"0x203defcfa6213a500d5a788db1e0ffe30874406355502644de206a7303dff361",
"0x2941a9e3edbd2aad6138cb7582c8522c1ac4885b719dfaaf49ab0a138c24c657",
"0x10ff2a2017cba3c024111db07e677587896bf77e0673a928c5c2c9edc53cf2b7",
"0x26f456aaabdad81d33930cd48342be34c4884d52c17c604b45e9bd80cf3c19c",
"0x28e34a4031ce3e5b92d5d92f9b4733668ea65762bbe5fbbf82cb2eca7e208d9d",
"0x9479c03abe2fc4bd11f410d7fe958aa64aad1ed9ce46de12e16dce1aa9007a1",
"0x1901a62758c3b95378ffd836f543a2c2c1922ebb864000184b1a29167ed608b3",
"0x24bbe4299e388e01c96d7de61ba9e9ad46256f8d8c186b2e3a387d558cf912ae",
"0x27c84170d0a49798dfc9ab4d6a96731d0e8de772ca951c3ebb799378d22033e0",
"0xf12a9b9e0cf4da08c085755f42f2c83cf9f9addaabe06fedafbd1ccb7696e1b",
"0x2e34fc5a79f3d7859fff73ee159f8a963cc180ce2351f2709dbcbf6ec0a2d7e5",
"0x6d2b2ce15705618d1574127c9324560d2c222065da0c669ffd2304a1bd31661",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x5b22e29f9914100e09f1d9faa6ec48b849d06dbb567b978c8e2875b8eddf2ee",
"0x121d7d80eca14c71d3a9d568d1fb3d17d848312ac21722507029ec3df61d64a0",
"0x248644294d40fc12cf53892614ec0e91eb6261ddb4de5a54590770b5a63791e0",
"0x8fc50ee296f9fc6e508a23b38d180aa92fec743bb5e62017ee4a3f7c98aea88",
"0x2f233d2487f18e22836df893982a593c74b7294f6cfe3ba3edb8272bd2559179",
"0x10f6d94022fd2c078fc6dacb1532820021f50f288ba40ae4016366dfa703e8d1",
"0x37d5df7e15cf95ac9c4bd02ba53e6d03bddd677a412bee4e0603f88ea1d6ef2",
"0x12354c8b1801f10dfe6c394b08317c7e86f49e212ec933fff49d8b26553f3e72",
"0x79679dd2756be024feb1bb2ee0aa5061a39752cf710ed6c9cb588f33ede8d0e",
"0xd3b424ee9455f137160fa1dd534f67bf068cfce1913a075fdf1cae7e8324ca6",
"0x227338281ee7da633b4b3938f5bb981f838c40ade4a0710875147f526fbae49",
"0x234ac22358b519377341651ca93dad434807cce449087bd4384f46fc732f7997",
"0x2e0c95ffbe680fa7622598933adab2a57c472a0073bffe10c0284739b26700b6",
"0x15e0c89cc6c36a7db841d4270855d1d9b8849197f9b08131b625d5a6d9ba693e",
"0x2f8952ad83b1ffb3c1a4fbd1064faac4f1c9cc31d0ff156a17478a1e3d255117",
"0x1c7c48183ec207dab68d73aafeb96047ccf668318c084453e495ebd5f927d173",
"0xecf362a269cbb8e56c2b0537f108a412ac9a3c6e351d0d27d365a4db7cd75e8",
"0x11cd56f9dedcb991c0c6cd9c9a0def911edcb915dc1904390782a7ee90d0de8",
"0x1ee74e2178baae842dd9658694381cc93b01592c655160923d40f4af2b53eede",
"0x12a2830e24c8bf4e9c7f019526f71cc57bad7995f38c6ed20306bd7b00f0d7f7",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x14e12ee2c2f82a572d97c0b811a25584bbccc9be1b67ed1aa2141b2cc793fbc2",
"0x4f32291e7636221ba7905a9a3a1cae812ad570260c81b3ded9af33619fde33e",
"0x8a081bf1497e5210f6e0413c8b510f000fcf4a46be0a1b8442c5bc7e5fb7751",
"0x284571ffcffe707510d0feb89560623db7e3bf57c9675b02febce95fb7969e8",
"0x204b298a08577c1269dfb8ec9b4b3b502ed6fc3303544047d56d4135d3c01ab8",
"0x484b3ef7bcf5d63934bdcf53d8aa372a0b0363b0241320baa3701e8a1d0da03",
"0x9da34491e52c865a5b080cb9791a1fb80152c04335b1dabc34ffa6ad622842c",
"0x1fa3cef56374f00878372c54070d9c41c5ab9ab1d385968daf9ca2ad67d494f5",
"0x20b55b39b8df6f86a2ca381e2037d64987d1844c599feb2829648955ad16f758",
"0xff1c5369778d4fd96e295c21bef4dd4648fad9531f669e704ad2e4178674564",
"0x4c4c92112d998d5736b3f46120404369c9c0e428e47577c857509fa556a15ac",
"0x27a72f4b6e9896945e7d584e41fbd3cd5f75862fc6ec94651f5033c8da34cd05",
"0x2a1e46726ed9068504f7becf06cc70a5f645811bd65be579194b54486158599e",
"0x15dadcb67e30b77d8b1e5dd79edc36c3d8d0afb29b6e7f0207455e92a301dc93",
"0x29c1bcabaefb4954743a7a04502647c11c9f18de67e21c811c8d2b9f3ed82dad",
"0x7d089a851d1c43af05e6c9243b69b77b12f0c0b0dd25351c522ce8dd99fe5b6",
"0x1003d2e1e5368d1318992f181b7cda7786ec3e721be4bb89089bd794c6e9fc6b",
"0x1747c287ece311b5484adecef423434d71ca807924c54a53e31109e6a502ea15",
"0x134eff601bde8da30e62898b2e05c17f6e74d4ac31919c41363884ce7e30f017",
"0xa2d92f328082a3fcf5809958671e304daabfdb5708edc2cc207175526ba3e27",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x4ebed2d43be5a74e8a00caa83989f16c0b9e82194db68d072226148c0a3d710",
"0x29ab24663cace590f69751506905667079db84d33f78204a31c93e7bea1fa839",
"0x14351a07d387943cf46b65496c66bc6f3bec8ea200d622074ac2430eaf521d78",
"0x1c423576a075f1d7376168b207a6d7203712c523c67a9d38882e8642c8fcee02",
"0x2c0564f1c52ac2d9f46211743b632ff07b210916de258f83d04df68ba0e29228",
"0x7ae7e44ebe17fc24a06c9caaaf787c2f007c640faaac6bd1790793712a69525",
"0xc4e1c566871f3484afba7d364ab755b839b09c5771413b0c31ed6a0fd2f4293",
"0x17c4f2873e2da004f2eddea08a30a9cf2e05f196fd3331b6f7f1227ddd8e7fa2",
"0x26f0a8ab7b5b0ac4593c98a899ed92d839837d520c5f6f0afd65da69a1205cec",
"0x94dcf41915c6c7ffa168dc7137afa6778076c2b63ed63d1ab1b787681bd60a4",
"0x15240235912d9c5ead8feecc29a4d77d8da47e9d1909763294ea18c027f1bace",
"0x2bfec6d12a548b0fb9fd176c7200df86c3bd785d86b51b2076bd9d3e8247312a",
"0x15954dffe4cd018acc436b70b029e0146529a26cdb39151468767b88c80ac82f",
"0x1f430be26a11f722560b348b1c5b526894cb458d8a30b49887713d76368302da",
"0x1360de1351ff67b63c312a8cacc2a465bb82dfdd3d792244068292aac083c8f3",
"0xcae448f98a72597e67867a24eb6ef2c1ce5d454fcf1c9eb4d84d21ce81590c4",
"0x20e9336dd103f61a54f27fab65e5fd1a317e75fbb5b22a81fff27ae4c8afbc95",
"0x2e36c0ee853342906730e7a2061c3aa2dbdfefbdb554b3a330c0ef34bba74020",
"0x21be1082ecbbc3a316c9d73495cc08c60082e1c20ad3d4eeb55553eef1a96dd0",
"0x2c7cec0d47c779dc5b614efda39049642f1ff409a40be89cc93e29366df96dc2",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x287c8d33c0bd8b9ffcc38d1a3501b462711a41833390aa6291b5691321f34f3c",
"0x524f490297bfff16e253a88a02b039f4d7be41c62a47525d615558fbb91a31a",
"0x3a6f7a96eb42aca86cff7e2417d245dc19e8c7934e91f3dedb429ac4de7c61e",
"0x155dd1bf1b5319c5993ffd435ba45f0a0ac8d47ef063423008b858ba214844d1",
"0x1970a0db54455db508f369e376345b47d7df8dd58f6d69cce8330ed48723773",
"0xa17d8e77907e26a6c23a52ef2b39064da014f030b5785f3ced98a8daaeca3f5",
"0x199b42a0db3b829ede26736dc7fef94f2f211679cca63e75dfb6a221d4897807",
"0x1d492d7c7daa80eb64f335e9cdf306b0be4b418fb7edf32eabbf0e89df5b8e61",
"0x17c60af0291bf796fffdbc57db59d03897c671fd729bbd4c498e6069d0671ad3",
"0xc646e58e3442bf43b2255aa0b44c45c87bf5c947ca5192eb906432afb47791a",
"0x27bc23b6488e38e2ea87dcebd6360dd420d7ec90a58601eb1e312c6998a952b3",
"0x1c50a70dabeed7c79cbe2f91b2f9a1d3ca9ccad68afa0a419745160b03cc07be",
"0x120ae724abcc772ec7b0ac90719be72e9c17059b191f6e562620484e691f6e4",
"0x69f84058a0565f943c4f5cff4c939581975165144f1d21c05217d64978ad803",
"0x14a086d34d0cb4c050cf996b086aa3a21e451ae658ee0b037e7b0ec28f5905bb",
"0x2fe2f8e67ac2734b8b1f6eb408f5f62fe88780b37d4d0e3396c8561309f1392e",
"0x1b125268df7d9e01d789ba26c5956069989aa5328bbd46bb3a1c83e29b54f3b8",
"0x3006fe14ef14b876c2e1e2c7415c98b78918cec927d8b711c4e11987c2e2cc59",
"0x19332e6cc8221b23fd7926c431b68c75583036a24b7e6524527eacf775b5be7",
"0x2780775cfe1ae1fe97897c286142833fe289028ac4e51285719df14c4ec967fe",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x1474d911726d98132a38828196f72ba9ea28de0e540822b530d53431c3f787c2",
"0x29778cb7afc99ff62da1a393d60b87bb8573606ab7ad7cd0ce647bc1984cbb10",
"0x1483d10c35376ed7a027168198d871358c79afbba7885d27c01b766770646814",
"0x1a8c31c239faf47d773bdba0f70801eac0ac001c6df938463cce819a72a11591",
"0x2c58e07b869bc14bb0eeb649f5c7d9c278b6f7639874ec404ebf75f58dec4831",
"0x1d649850732837e1c07c9f303d6278bb14f5a54ca14c86a26379029023c3c6d1",
"0x14306d8668280502119170da14128f6a340f1ded7e2ba209004c42fa628b3a0c",
"0xd417ecfdcb5924437742605073656307d039e23dc9cffe05ef8416e9dba3a1b",
"0x1b5881474a4679cde79a4b63249d1f98d8b417f1161599f6725471f582019156",
"0x2c571e0b35cca4cf4ca7121c9de0c4c5aafc7fa6f75498e8ec57928fb1c67d64",
"0x2637d9a03ba20a6cd7ed99a69c38a6d70b79d05904e37c9dbf46ab2c90583770",
"0x1cde7eb4a685a52ecd269169466eaa897ca783401860eba2b6026e513d6d393e",
"0x4f817cbdfd445391ae482fe7248567a0c8b82136358d239d4ef180dde2f489d",
"0xda99ce6262676118f51f86309d5288eb65c95fddade417046403bfdbb087d7e",
"0x2505fbe37c3109a4d1d321b72070a152625ff3b0fb76ca925e5aa2c058879ada",
"0x2783007044f2d12e5db30735edac84614cdb1b19f69901e0f601efb3d44cd5b9",
"0x1e145eaedf86b1c5cabe622df4cffdd8155e6db891ff498ff0b887f4ceab124d",
"0x8bd690af3ee78b6d212cf184b969f3112d45cceb738558962382227a434540",
"0x5a5462e764a4f4780125247cb6befaab7e4dc0d26e2d75f44087af9f6187b4a",
"0x12c972140783d7889663c3c9da5cc43cd1a9740471de97908a62cc21d43e6e7d",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x16109bf9f0eed78c726bcbde7de40cadd12343460b04ba93a52d969201f97f7a",
"0x1e85f44c0c271ef8b9a9a29e3cc73b3b782c60d4ed7cc7624d6aeaff8e492030",
"0x9deb8ecc3bb2cdedba96ab5bd80b15d4abcc49b6528e84c1ed6971fb3aecb86",
"0x7ebccff0e97b9ffcbc6a2b256bf888739c0db05bc5d98d9e591bea4d74b5c7c",
"0x2124e4a429fa993d32f641febec0b25b9725342879f76afdf4e9eff7608eb81c",
"0x1f4217ea25fafd2a62aa709ef72365c70d66a4bd4d756ead776b40521b29e76d",
"0x10fdddc5f968f32bb7eb9555c0dd44462771f57424a761cd884cd0c152a35fe4",
"0x201c0f5551305ce9fe25f26526e409c0968c80b9e065553803aa38bdaff0182f",
"0x1cfeab50c568b3dd5c252b7cbbe28678939231d1287580ff6222d30821191ff",
"0x2b4c60bb89f1ab1bee21f45cf38de8335a2e85b513fe3a9624eeaa1bf6255765",
"0x285dc6058b80d18829ee46322acf51d442ec61ac331af40ffab6cd30a07ddd8b",
"0x13b9bd7d2cc334d2f60d6249ee87d05e356fd182830d3b3e9f435c6240f47603",
"0xfea707f44889ee47e8d9859c523f99c432083d85fdd6a8c75e1bb5771c10825",
"0x809a77036dcfb9ecb677ffe4e09ee7fab157ac28330abde61af824725d9e74f",
"0x152bb1a773b27f82406efdb0e1557c03a9397a6d87d461fa6f2e06ea9dd4e208",
"0x29da79b1af8bb1fd1dacddbcac71ac28de5fbe6aaa9e30f471acc532f5fe9290",
"0x252419542bfcaecc57733b02751f5142834e93f4560d7b95b85ad6423073be",
"0xc9ddd8aed9e907c27fcc361067f1b6c104c2b0a553e6d6053d2f82fd8cf1cf",
"0x2311bf775d429e2b982ca78c015cfb0a863fe4753625c4b63caf8e4ce36e37e0",
"0x2a72547e8d5bb41f0623072d419bcf39d08e5aea781b7358e95757a0664d4b23",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x13ee4f15f3b425aa17da17f6b1f5d00cf09454a9515ae5c719a2d2dcfb41112d",
"0x190daca6e75275d36dd65c372d302d698b1a03757c0b4c7689e59bc1a0169f61",
"0x994ac0e199f04446e19887d6aea50a4e94172fe29818bf60354e92ba3ec6d37",
"0x19d35ebcf34f6d72d2cc738a968ff2acee72f5a54cfede510482076fae55c450",
"0x13b39ce996b064bda9880f5a6ee1677d731851ed9c895f19add559025c0decb9",
"0xd53028037010842c02855ed8d3143166621d870199dcd06bcb970d30b8adb7",
"0x26abf84cccb79dab1c143c12cd741320c9811199329ac1b13c240f33cb0a1476",
"0x2f94d075a38862b56155e5bd18fef09e29267c0fe03259af2122abd935054209",
"0x1d073e9398a1528b81d2a14baf97ce3081340b03c22ece28408cd284c2752b32",
"0x1dbebbfaeb42d7d727f73f93ec0644264cd18a0180ec41db0a558f3b4430abd2",
"0x2fac339c24fe87e3763ae29dd6d341aca13594792f6d48c66fae31b464234fbe",
"0x89dbbd04d315a29ca4c4ab69cd041eb3f8484a1f4a726139de0103404e073b0",
"0x7b9bd575f2ab6d2e57a6112b84c02fd38e25987794b65487f4975d098578ee0",
"0x26563d3ad82384b0c3bdaaf1770c3cd5a04873b239fe06dc21900ffeca0346c5",
"0x24d55232a8e458e4738c163f81ab363774595c7b79722847e3d6341e1650c80b",
"0x15f6a6be40f74352caf5e8c0d27c8a96d233f38d778756dd8b09546416a42a75",
"0x2e195aac1f98bb6fd894b6c8c78d0339d8ad8b48f6753046eb438897ca67cfa",
"0x240c714f2346df0e0a84bfe85b6f624b177e2fbe84b253cc4dd67c84fb30e574",
"0x15f8e5e81c571e42d0ba368ff59ad375c2de65558b61c63d08117bc95de0a133",
"0xbc0472f8203755eea5f4a54c4202293e72cedce2f9e697cef329b4a2e4f365f",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0xc8d9a3a7bfc7f53284d3f2d8493110979d2c58fa350b37572ba8ecb87eaf0bf",
"0x2a431044a8b80f847d099afa8c1e72d7f21894f3946b0126655720f8a6c77857",
"0x1181a1791fd2439ea67078819652478d6767154c7a9d04918373cc072d53ae2e",
"0xf0ccfb008217426f92cc5dfec764630d0861c6ff9be2459b227266741a7de7a",
"0x41f755b4afa6ff133e8e46fc826c9b3e70b45db7edb7ee2ac500e47e9844a9f",
"0x1751a37439e9124554ecb92e3006d8c560d6109b98570800c2edc590016b5709",
"0x2abf7e7390de929b5c7d29f75e5c341be84679aebf5cdf21ce295cae5881865a",
"0x173d1a4bd47ad310c1227e8d26c8c7ac003258ec98cb99c4f5da10c2fed0be99",
"0x208d34eb4ac78f934ee023480a4b55edb26e044d9a46008804113b8b3ea6e237",
"0x125616d001a18f80550970d010e57191b13574c8f737e4c82b47be6b1984fa62",
"0x671703eb5922282742b194f3c2d494840e872e60fa6e77c66fc03868c71abfa",
"0xe335455fdb0c93b70a21ae7ea60638481071649d6bb76343651667a6205ed83",
"0xe83b80d5c774f2c4e2a8c7f7dcea61c0b0f000c7bcdca6bae8781aedc2513d",
"0x58c57cfec4eb7be81eea51addafb135b89b2c5a111bca597f5212eed8547da5",
"0xb1f27ab7d0817ea3f949179fc135b60938c8c20bb9cc0cec20b1bc8c5fad7c1",
"0xae5de9d9b873cc4211b1fd9fb2e0717ce46072da5f7d8610560c9582b7f06ee",
"0x4e515f4aa39a0a8667cf06abff04d87ebef4d85dc32ce64a80be9073b8e0163",
"0x19f6c6c86ba20bec8725fefa5ee70cd0b1bb88b9b20847927e963ecc6f46d376",
"0xb97af80e65d5a12a9178351fe47f3c6741b18408ef108cd73a56a785f657fe2",
"0x11001edf4b5785917fb4ba3f1cb07e46f8f038edd5eba9c657dc39b3f6a254c1",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x1f57e91f818cb6ec2ea89a4c5248e21db4ad238c11e2824455224c316c6de448",
"0xbcbc929529eeab2f4001235f0dc786e792af2641c0db97dbb1780aa611ac51e",
"0x2ffec2a43cb616c220af4bef1265a368c46b0d1c049e79d489bd62e461669061",
"0x18cfa39baabd3a1f352d1ff2571411e36ff0c72a2796a40e9fc2238d89d99383",
"0x26d86eeda466378285e93d468c3686ab5f649a40ed46a52c29c2b9aed41391cf",
"0x2120bae48bc4d0b019112e48f3daef5b38b9991285c3d03e150a21fc03826de9",
"0x2872ab1dad0eebe81027996467b9767b38ec6dfbefb43d9537d0ceff4b0d8032",
"0xcadd0bbb15b10a2a3b5976ced621686e190691ddcf2911a6d7911aace0ee731",
"0x12f83ac35b2e971f68f375e239c28cbfc8010f2d20a609ffa4bf3ca8078870d",
"0x247b58e9d413e3b9647f7204b141fb1599eea15d505520b47d61c11aea6b1eaa",
"0x13e4b5310fafb562358633169e17e3431a821e301a178c33279f5485290de69",
"0x1da54e38f590b18af24713a270573e2c12e2b569b0e90992eb88312117269373",
"0x28b85a60621eb6d7d4633f180f515bac0757a3377dfd68181bf6a65a9599121d",
"0x1a152410d786dc50b32af794cea9b7fcb7fa48231d536b3c18dbcc7509606036",
"0x92699deed292bfeeb718c76b997538a59e7ac548342832dafd64637e738f1a0",
"0x774bf3637103073fe707caa2d322d9a9044e4bd92d81c1e0ba56467c591a487",
"0x1a2f16440b008c3f42154123ee5c0c0f06eca84795d9b104c43857bf528cf79b",
"0x149a1d50c2c217a068dd2ebce1907172d58fd0a3123debf849d13d873648a8bc",
"0x246086052d1ce8675e03b097029adfed9a97c8f67f606d7093f6e412a7b4bb8d",
"0xe2a84c4e9aa19be7da3e5d4dd74a495d308369e4b26a165dab9c4238eafa4ed",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0xa62dc9863ad7e45ef7f77431acd332fc30280f65ef1ceda4ccdea63b3ceed3",
"0x1b2446bbff67b4093c04a6f3e904075a796c5e28a5a6e586d6440753ba97551c",
"0x165b84f51091009c389eabcd7fbbc992996fe32d9f8435354368e1e5b1dcd59a",
"0xc193a00c3e7e8e353d0475afadbe369f9a5d17169a169ec197977619136eff3",
"0x2088473c2b6a6ae33c857f94f2f12b90d7f5ee0569d96d801fa8b87194fc4595",
"0x8787d2cebcabac086e9e7e1fafc216e3f8fe5335bd4642dfd1708a82a5371eb",
"0x11191767947a0e4f9c3f782d1abd55624b55ff7087f34478ce0a7aa7b2715cc4",
"0x2d28a1d818e8eb1efff60aaaff9483679cd5d77a701688dd53df7a9df567f5e1",
"0x2fe813fab1011dc74f8a18e5b039dd373f0070ab1dd4fd126718a087cb2b8f9",
"0x170e6e3fcd10c27d012f844c21af6850284e6b19fd5d1fe8258861d9db249136",
"0x107d6816c1e3db9ea8bdc485fdbcc7f13e6134e807d7e4d686c587b4b02174",
"0x19758af0d83c9505493b5419c17e6c4dd7f2ff338e60e9609259dcf15f33cb96",
"0x94462f324ece93eddd9764f77d342e248121b7f1dede3f149571a9d9890ba7e",
"0x86086b36fcdb387c6dfa2ff39c4910fd0af2fb3ecdedf957350e20ad3c843a",
"0x2e3cfaefc61b8b4800158fede4808cedd9d7cb5b2280c9b1590e0429a83b3db0",
"0x828cdea83f97fbf72dbdafad73f0954b8849f09a7f12c3bae6989012f8d9fc0",
"0x462d87fc2c8185981a6d5efc6e31654b2696a1c42ae60b99eda523fd8c13ec7",
"0xe8224f268418104de9a75f6bd915d2861e8e74a74057319dec312cf8be4dfc",
"0x89163233ad979f94876f77c9717a7cc3171425a1b484d1050f7550e31c5b42a",
"0x13f4fd6d8abcafc2d57797c252abf6319f2d2122dd71b15bec6dde9544f60448",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x2cd268e81100d72c444d6246f8003ebbc08c1b5b5850a508f162541e43804c31",
"0xdece92e3458e7d6e3ed03f44c57b6a597f2a0851662e51f30c7e345ab3fc44e",
"0x2782c56f48794e225a91ffec94d427fbc775704a57e24c93a1092b003ffbba12",
"0xdea062e2b07f7c6afba58a89e4f46c9586b6ff9abca5d59ed857f5b65e618f2",
"0x53f7495e4b1275b15b3f9cd75aa20f9f7693363d4311764a772f2956af6fac5",
"0x2d8223dd32694c54cbca71235970b8f70f1a7428bd738646ca6a862f46f64ded",
"0x230d3770de4960732ed1114493287bcba5a8b219308f15bdf3d66ab0303845e3",
"0xa08b786f3debb023c5ac7f28402aeed473d83cf7345cc4e3ff319ef710c8e92",
"0x1abec3768c3f0fb09fb3f77f12a70683a00aa39dfa9bb1df8ec678d38d2f59aa",
"0x285759f5a94427ddcf1462454842a9d1f953a3d2f7ec048846fd78d01a0493e2",
"0x2b4f0d69284e2851b5e39f369bc98b54d589c08c487f8c89d1eb0c873cc4be5d",
"0x447dbf76029e36fa2eaa60a6235e5462decefe44e558246910c8f6d57b00875",
"0x275415ec216217739aa767153b11ae80c6b8b5c55c70f2b971c41ebe8e2b6af5",
"0x1a7afd3f33137e9fdcb3dc28cadb4a2dc634ec68033c4121f2e55e1fad47d19f",
"0xda8b0bf0f0197a311ecf8a70c17d6b73882fa3d36a2966583161a3f767a5cdc",
"0x2dc11aa7fc35288f4c50ead3bec7cc0e75b9e52e8a3fddb61492ba94948d5ada",
"0x195f7447bdebfa31bd8bb43dd8d1e6875c5c135b15c3b4d609d52345559d71b5",
"0xfb172e6709df3831ca8632986ef7d85745139a51a45c169c830c4e691b451aa",
"0x88051acf2f4c7ba673361201ff1639e06fa376b2a6505a1e62038906a31cc95",
"0x19e57228a8198e58cb5bccca90c63d15e07a0f3e6d5d130d973db1a831af0bab",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x22e5666a758743c42fdb3096ec7a7e4266ad74824b6be3619435d172f438e2d4",
"0x13ea60e7594766cadf7e4aa1f9f005f9d9e06177456cb4a43d919b4538492a06",
"0xff1eeeb246ed508d96db973e2c50b126fa55bc7094854acba766574c0889a7b",
"0xaffdc5342a12d31f878c045e76796ad01bd19a313b08cbe6071c9fa06d37178",
"0x291973a60e03d9e088f91cf2e0d5d4b814b2d84bb97aec7993175e5d6dc519f",
"0x11739b8ee3040e282f6d5039784f6b749c3a4d6befe0ec6276270da24f8772be",
"0xe74e778ce3b28a1acf824de6d089b276e535117c55c361debf0a40573c67eb3",
"0x1a527cc72db1098870ef84543fa630c207a6094df73caca62c47ebfe12c4dabe",
"0x12f701614f5391cc72251c38e11391e9aa2d1703c47e84a041ab471ed77450a4",
"0x11936336d54527a9299aed9f52635b8a53f9a958598336c9848564b86516ceb4",
"0x272318da87365e9fd6249ec7615961b138ae0c7a36b5175ef5465898c711be04",
"0x236b144cf42999283d59501e46fe4ea1d60003599b4046d7a60373f0688093ae",
"0x1a239569e5888ba9ff7c90a4aeb505659415da6efcd3c101e791228149b35b61",
"0x1e9e91cc7f554dc236e84f167e2baecef5a26769296b73a94648d454028ccf34",
"0x148af5b46862ea8269491067a96aa3e71f424fe1bee820cd988fd8b19527bb5b",
"0x24772a606417d978acf26d46756665b3c414dce37ee779c91e98a4caf803b6e5",
"0x1ed8140073fb5244cba84342b2727e8258108dfb63d1daa824f4330932a7f292",
"0x109b45b57572882b3de57c6d043e9477acc341231247aadf512cfefb46159244",
"0x12563836d2c2fe6d077a81786800dbbc8e90d758a5a323f549f9b8d523b630b0",
"0x1ba00aa80b49e70bd2b3748968ce6d19e9d3fdae0bdbc10cc50e90dde09dfe0",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0xf24297c2abe65471b0746d085d394de0919936ec477876d32f44707fe0bf799",
"0x20eb0b298c48450c7f613bf10e04bdd22ed3115756fa21731aedc3ffbe7cba27",
"0x176482f9dab80cb5c4d91f707575f2a2b552fced3c3b96a5bf37f9b80fcc9f64",
"0x1f79915591cfa6648201a28d89355cbc6875e30f78d96a32c3f108bb3a8d5a76",
"0x2961cce7579ff9f9f0e867a02cfa8bb2e7401cacee24f5556e9d2fce5d0cec8f",
"0x2a41178e5d6a04a7a1463ca1799dd1ba6a7b5c4782097e585793f987485559b4",
"0xec4ae2219594ec22f648bc1fd42b82673c47d95bf48e9efdc39e0da9406eae1",
"0x261794a9029605c2a4aad5463047d0cb96f9da25f3b18f391047e684519a6e05",
"0x2e2bf6b18878b8335e40349e7f475e2c85cc279f99f76c0bb717d0ff7866e5e4",
"0x153ca309df24c9e664025e69edcc363ca33cc1a9a2bef69b44f607830195235",
"0x2db12f885abe64af44a3ee3f8478b92cc71fd91b096d65099be20ef87c64628c",
"0x1f2c5b4c49bf8be7e7d4d9f83e18e6ff0c70ce913f2e246e65024ce32e0b231f",
"0x9180876813742a23b9376d01579ef57c1fb39a60e825320fa0eaca8953152e3",
"0x2ddf635158aef59c7d8a6de274b34eb7a5d0088a7fc4b0f7f4ce699a18e73a5f",
"0x77f3965e42d9f1951cc9528c4a10b099bf49f4eb00e54d389af199a8a474125",
"0x23b552370636186071152d808dcf55927b95422529bbe9900d1a1244532efa2a",
"0x10b40997e86c5be3b64959e84b6ff95dc3afd77d7a8f708ba81d649075c74ebd",
"0x19e7c76c1b1e67f86073187b4f730e17bab59bf1fa5a00365be2f3541983633d",
"0x1c1b3ca31b5179b6dcb9ee3ab883ad56a355810877c058d64e345815eb365f91",
"0x75afbdbd2dab2064406909fe766072f532bccffa959708bd53863b53f1323c1",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x2d6bd5f440b052c36e1896ae00904b584661666912e14b5a76917f2a4023a975",
"0x9fadca902762e1b9b2ea83254c1422c3fdb99ab470149b91d818f74c166448b",
"0x1fc2ef7556e6b217f26c4ce8b049b857fa69b7f22ae9665d8fe061e57ccd86b8",
"0x277e0a5d5df37f2272903866a0f10472e3e4d61505b48279dd78f9e5eb18dc6d",
"0x1926393f89d142b831b5a9463ae3860bb088973ee5ee9008f0e1c7965c79be27",
"0x2917f5ea018334c0f05c07baf8c846d354e3945fbd67d5a22d058a793275a35",
"0xf1816fcf77643185cbcd7f0b141007670a027cc2891280006f4e0fb6f700113",
"0xe5eddd2746b7345563203a3a02ba3f3be5c9de6fa3d6819c1dc8c10ca61962",
"0x2fc0ffd1f2fb9e525e97afb88c5c1f16369b7864f845a922f56af6b567abb127",
"0x13a6d507cf38dd7ab84c4fe55fc37ccc00e54ff9114fb7dda131aafaf5e3d8b4",
"0x209e31eb994b1224949ef724609a754624b12e3e96aaa426519369d729d7f0d6",
"0x29b95c4e0998e017f9a6efa329e997d750c315a7091995543108bbf2ef92ea5f",
"0x273017f65d54a8a19e933a2850fe33bcdc56245fc66dd40bd16d1963065a8215",
"0x9a00a7bb4d3c41d31473d0c97194d90a94a4348aed808ae2d9b68d66ac6da34",
"0x58f37eb54a0d174ad881009a16e033b0413350052445162508f2e3f1fbd13a8",
"0x2991d56ab55bed4794d78fbe8ba2d84e0402b704c63e8bb477815b94c0b6e72b",
"0x2cf9ac97f208cbe23d5daadf7ce8eaf17b949ea0694202d6d3b4f6802c20c8f1",
"0x2b2ffc8ad52ca2742997d3fb13e13abcb7c44ffea14776362b6bd9e1c5aad18c",
"0x3f78a9a65aa3f5e30ce1ba2779ac3c5f275ab77961819dd01638a42d14fea57",
"0x28a9d40e9c58592742de7987c8acdc7fa5e622f5e87508936c5c90e5a2b0111d",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x2da971edce5951e175b20231e2caecdd672054df0a81abceac87182f9bf2ab39",
"0x4852b72a76fcfca8332cf2fca53426d44a81025b049c6fe56186da6b592b8ed",
"0x12678cd0dd103dbf00c083c3d563aaaa6e6e39e940c80c14575ea53f7da93714",
"0x63be8111dc061b7b1f827eba7cc5e10703843b6878cf85160b1d8c37f8cf20a",
"0x1292d1489e40b2b7a96a47889a8c08c9bb62ba92c2fb6ca290d3026828b90a38",
"0x131928f8c7f6b292af217e6a3798bb3c3740fe744c9754f71e964e739fa84c7c",
"0x9dd09c082e6ef61242bae94103d3413d8e280c3d824f566b6191d86c3e52e7f",
"0x13a9b7f650fbebb1c30c63886605cfe65fb13044bbf58f6b6d6d4754a8803d9a",
"0x278e646f62cd15b671eab2feb4b10833606a737023c50356dbcc6802c47e22e8",
"0x63a048acaaba44b87639a3d246f7bf5721b2dfef3bc6387eb9a7a1753bc9edc",
"0x19137d8c7c05b4380c5427ba3589505a29927ad701293341a797f8dfc6b64eaa",
"0x4605aab2cbf1c8db31f3530518b1b058e8a9fdd52380d4365e7faf99ab86431",
"0x1a662725c05570d0cb0ce0e3cb83f5a9a0d641d7f7b5f0395b3cbaf27ee8e7a1",
"0x2f00701e4012136574084fcdcfdb8a03d4370327b6778f7dbe08468a3a221d3c",
"0xeeb43bee0ce1170554f5365901cc66aad614c7db44ee7d933114e56ae13645f",
"0x514bd58df752da3a43dd75147804956f833e61091c33e8b6ebc059d1668c3b0",
"0x2e501a1cb67757564a27a930415497ad671f61899a37206e4bd4f70525dac248",
"0x16d477454abad4ab36e15a385dfeb9d8ecbbd645a459befd544456bad6de8e6d",
"0x3c052112963b411255ac9f4937ba4162dcf4dc56fdfb5f11f585a2f973d1ceb",
"0x12dbfa8b1f22ca2b3338b85b1a1cd75ff557cbb18bf220312b18a91a24d55d81",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x10818548ab73fd03d26ee40e1a406f294dfd8c805e21f8689f1001d1d3808e16",
"0x24a35e4eb8df49312d9fefc8887e52fe90b836c0cff7f7c07a848a14b01fcbe8",
"0x2e0f1e7d21d2d04fce40c67c3746330043b7168c16650a4f2c9dbc17eaeeef9e",
"0x230af3cc2c7ce9edb2179f8615ae8a62e458eb13c246f9b673170f1466dfa17",
"0x1134692f5f1f941f285cc493c3f2327065c452ad32cf715486dcebfc2d36e000",
"0xa9d37ced0d525c9d8577b969975227cbfef65e389d902e6c4aadd01322e8ae4",
"0x1db2e2b5cd0288b1d7c7faf003be7703b5c5e45ed5cd77c0f47bb8d3f2703afd",
"0x12d629c5fe0a3943083c96e3e532897bb2f63db5519122159b61723410ada8",
"0x54da7deba9f7f2f2e2180728042a935674a8446804c3cc47c9d15178e8d6666",
"0x29fc7ab2d3d544f25354a989848126e23d60efc67d30c1d7e6dec4f01c8bd52a",
"0x14dc9c3565c4d246607923146b654a06c3a6f33ff2e7b285cc339e7e045b10f3",
"0x257f594d047a720f1ef7ae56ee5cebea62ac2239715a55b1ffcb394af09ac0b0",
"0x1202ed4a356316e5710f9f1a5727b083c1ab217050e8bbe7d95ff5f826c77669",
"0x30fe2beb49b890033bbdd087b9e263add126966570888915b43101888b8b962",
"0x5ca2c86c6b813c5ab7ecc7fa53fbafef3678c328accc49fa70b5f71a1e368dd",
"0x22b38b500c9b360fc2b4ac16b0f8fe71e8e30a9a5fffb2275f40112e01c59f71",
"0x1a85a376a332e4ed41c5b9e85dbc2806bb3c3c6f38c7f251fba31eb492d2811",
"0x30b8dd372a1546b35d430c7592b24a762c0e748b857190aa47ba294da43f9bc",
"0x58804d2aa2f1e9d511cb4bf4459d8747a00af3f8cefa52c3af281d7b71a468e",
"0x2be9874c17f4811897b082ce47809991d57d081de49d4f9259bac0c2bbb69e4d",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x10127c52ea1f6d2ae8cb3a7af70916ab29fd85fbde5d15596076ce30524ade37",
"0x2d887f38f4f5c278b142bb09fa17210717bc38dedc721327c34b5af25fa4975f",
"0x18413dd99e547cd6112c9b3890a4a927660153967a2fa3cc78281aa3743b7ca",
"0x2c8375bf705e811aea8583b90f6004ca186f06ba9005d92cf3ce7317b4fbeea4",
"0x26672152eee139f933ea3a888e343a211776aa698206a6b970cde470ad510e72",
"0x179472871d26f2e278673df45769f49f3943f98b5bc9e76bc7bd639f5cb94a3f",
"0x1ed0f4a870226c8afae5b2719e3aa60c8a4f3f491290ecb6a6fa8ed8fec32f0f",
"0x1e8ab7c5158984fd536a1fcba52e4a9a99d2406c681d0d54c194a1378aae7bf7",
"0x6e50409b0cc763889daeec7624be727dce09632fe17945329fbbbba7336b56c",
"0x5ef96066a1106782bd7942af6ee88ae6c642890863ded5c908a70f0e97188f7",
"0x275a393c79c2e975e32088fa28e808ef7b3a28ed55d7908b3304c6270b68474",
"0x232f41ac9fb55828ad89fb910fd53a80463ad16ad787e2869f315a59ce7766d6",
"0x275bb8e491e9023da98884c13b73892f2b1eb2e77dd1dda8b5095bf5c9adc9b",
"0x761b386807668eee2b21b55ffc77eac91c6081c52308c6dbafc6c07028b4e3a",
"0x493e9a3b80d179228d2a81e903a9fe8d65ad2dd99a733e8ffe044ec71a668f4",
"0x304413ebc59f08c82a9e2356ea09341910ff74938709f03599a4f0524ec719a8",
"0x2d1e1f38f6702b847019dd697437b90bbb302f642fe0d71df7faced0a3dad14c",
"0x16ac849076bc69c52529d4baa1c20d39991d1d1bdc92c8e0ff1c5bcad374f25b",
"0x1a85ec6762d6cbe146dc87cd11c2b2daa1ea599f611965a59bcfc3355a684318",
"0x196530945d3d7b35c950174d0b08a4e423a8ea2bcb1d455f4b5e042d66cf2ca0",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x7052091360f5985cd717c188ee4aa7b12542f1ff3dad0a1996b00fde6e3652b",
"0x291b5860cdbc43b0f0e3d258bdf8f8b58c839a56779bab5f918e042293b9868e",
"0xd74d3b457f71267a00679f5b34b57cd193626e69dff827153cb0a07245f97a5",
"0x6063d52c65712f8ea7af7b3405c330f3a0e1e4a1652cc21d3dc5e0f60cdbf76",
"0x66b0a3103e081f9125c429640d2db5993037180131ed22bdd413d33d6a830e9",
"0x1a1ec3ab8c7e73bee5257c0669cb9e5958eed3d51d6b8bb1a43f2683e2082a4",
"0x25bcddfb7d8a0a191d30fd1325f71e08124ad4b099485d80f41ac677e0094152",
"0x10436855078393e34186a26936181b385e1f4babccecf88b189a51b052d6931b",
"0x13fd2892c02f51e42d36d9d6986a773f1cf644bcbcca74318c486e1b1887a8d0",
"0x2c28f6b8646fe071a4d6eeaabc22f4398d09adc041da503fa5e13d55f280424a",
"0x8283969c57b0158cd5bf0dd9ee3bf1d6008dcc45c1ef3288de7d1be2423832f",
"0x1130ad17e3000bea708aa2ea9293faa1bb33c9fa734c13ad351f0409c649ca65",
"0x741c5c7d36f11cdc84ec58d9e6d7428f8cf2d15110ec45d7218f7991be58206",
"0x1f449a6d7afec87c3391d5f306fcaa5ba7498feae544c6048dbdc847c7dad3ce",
"0x13c20e3e2bc12fc0d3ef6ba869311fbc5b6a3a4d779dafed35a96098e97f2167",
"0x1fdabc23fa86f1b12e840c491a7d7bc267bdccf6eb113729e41f09eb416c0d90",
"0xb18abdac519be96bae35d898d40a26e9d9e0561f6934be88da9a5c24e498652",
"0x28b6810fffb6ed56cb0ab3df49bbeee7cf4f978461189f205aec741cbe843202",
"0xbec82d9037048c805a293a708427fbfb95dea117a6dcd1e6f34f13fc9e088f8",
"0x2f63a41ae9a12da286de92e8e7d65162eef3e275eeda01b2f1dde4a6b69826de",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x265c4fc58d97632fcf19a923a0667b9e9b28b7add612d7a71061bc93a8db0d34",
"0x12885bff48b6298f10b722b699ea5cfefd234005c83ff78a16da563a95758d70",
"0x151d53cc6bbeda594c839f198afdf5419d1c87ca6c45e23b4b5df9ce6590fa24",
"0x14d55af045f1dfd8f49d4f256e081a6b3ed093f01a72e9e7fa95964d274b990e",
"0xd2eabd86f01fa64ba065b8ed26f82ce2fc47e9e016448e3d727a7c66a7abdd6",
"0x28b3060c2dcb657bf0ad4e015552f6c057d08d94e6a7aa8f65ccaf576ae19c9",
"0x29999685e5c96a1b905f85dc5bd585d018468c52eaf77a65a6a7f7252d015006",
"0x2cc36566d5372f76a5bdd4fad63e709b1c9a1fd8c638d508d11386a963949d17",
"0xf45e1a65d563313981d7fbd8646e8b6c0a513e921fa4d91d06d1def1ac535fb",
"0xbe5a47fdf5f5ebb05760335c19650934d3c9fd5bf6a947d230ec07b04b63361",
"0x8e06c579f1e6e0130c801b93e325ccba4488227d52279b600cea03c02f55841",
"0x2f50f7000c45cd941aedbfe73b0022a95ef948e1672e5e4ae7f818c5af7a5da0",
"0x10e83f3ecde3d5babb785328a70cad7f1266ada3811812961cdd561855792100",
"0x2391b1a42d1ad62765e51ebd3fcaec9feda26eb1a8e4bc397b4a7692e5036354",
"0x5dd281f4536f0e512cf632d8fc3bc3b198fcd503172259acd0a43f6f3b2ca8d",
"0x1805c870c9eaa246e93fe07b6de600b300eb1d2cc768abb8a325d1b35a73a383",
"0x735b3cb5309a63477b17662d70e873a588e82e15bc083fca92f3b1272de5930",
"0x15a7b08ffbfad70da2050e2c609621cc2817e9fab3f8e06f0f7d37599f374039",
"0x1c7725a85e6a7f0ebaac87408b38e5e6ecfb4de63ab1819008926a7d1ed9162b",
"0x2371b576f67ab802e647290dc0ca0728bf11fa282a106e52567e430aa5cd6df9",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x2d76222e6f0ba0ffd8667c9cfb2a8bf2ffccc92e74cde3aaf9d515f6770be25b",
"0x21a9df030fc2c38623949ccc0e27da5c02225e2e4cb94258767e67046b1c9ad7",
"0xc994ae387461d0c7104186c1f4e140f224a0c8590490a5d28bf872596eae2d",
"0x27c61ff34f721d9b86250fdf7a433505b8fa72ebe9a28c0f8f9a5a86e25bd642",
"0x115aa7aae6b9596eca97b6726a631722dae0a8f630a3368604dbcaa9811a851f",
"0x18ce760e701aecf766400d3c8303e28aa7937c3c89c3109a5f0b8f9209729faa",
"0x2e8d27465c96902538919868872618261b07e2771f087e9686a07b02744a0149",
"0x100661eb6f7639b3cddca06469b717369b84248f18a9a0250198228d8580de14",
"0xbba9475dd449868c67d4d7394ed448eaafd0384f417ab5ec3582db8962e423",
"0x2ec4cea2ec233f82b5c3afc658cf0f1d5056dfe434c209ee3d3ae5101c5d38a9",
"0x15a99df7e6b5ef0315db045932d7a24de603b0b6897f567626fd1dd9f47c8553",
"0x1be6d866794b25f0ad77226028183b38ba4faffe5a4375d4b2560306acde3c5f",
"0x27257e94b2e95e861b7120ed9762d8c4c94080b7612d9b58d00691fbeef97374",
"0x3af51f300cd6fcb4ea567e6c8513d81dad94aa1d0c125a8408cdf1ed9f103e2",
"0x193b1cb5ebd78dbe0428c993ddefd3df2414c558078f757b3f8035b047090913",
"0xdc86ca1c3c10a634dba579115794017366d06315b67d84381f4e3d530800e52",
"0x1235404239a1bd35d8a5d7e41fbf7979bc1132e1316236fce4704951990487e4",
"0x17e965fa385145f2d79704557938893089dd6a9411e1a4054614bba0f1453b45",
"0x17cf6ef863dfc27d9e23767c80219a62279a7c1df9553c8c3fba34d8d80706f7",
"0x568c86457d66bf962613ccfcf294e2bdfdc444406b20a6563eb382164f6b38",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x2f5139526746698879515dc547fc4a18a47bb7b1069cf42d88c1699f37bf70e2",
"0xe9ec645e63a3358158ca6bc99b354570c61b50ae0b66a9b2cdbd5b7bd2528f6",
"0x110bf55f969e6beb814a08bedfcc429368f8a65317d9df987fdf690464e82792",
"0x50a2f40f3337b14663877a5c5c66bbad6bd40810303fc9077996384fb942223",
"0x9fa261cf5150dae90270799121e56745c2e3aff6c6edeb0d9f37ad73f2e92b7",
"0x18db0fda1f48a43c15c1d72d7a8e8ec2042ceedc57f08cde78484f8a0175afe0",
"0x12cd152e6a482b22678e14feb1d2b463560eb39b0a27bd82dc9cc6791c70e234",
"0x208785a8e7d01f556b883d201a43071c922863abb6b5b9d62b06cdbe1ca198cb",
"0xa2f6f2777331ff62db3918731dfb0f8981e3f15b0715a44a3e076abf1e29710",
"0x2e40f60a955d8717e55b97ff156a8bd9c6f2e806d042d0213ceef2356fc97f74",
"0x15b824ec28269dd4d8e6a563169d415cad68d9c1c7aee1aa279b76abed3cee6f",
"0xcb83c1917e41f61a32024d11b6d8f43c8a9e9547568b817ea72b3ac253edbe4",
"0x131c6c3ae3535f15bb791ba5c1f52051635c44d8e13e7c28d60812a763cf62fa",
"0x274de569e20256784aca3a5ddca5222476b2c06e6976e4b5332578eb744ba058",
"0x4cd6d293061e45cdf3f30796a24e66007a0aeff1b9c7cf7cc869dda589a8d14",
"0x2045eab29038ee2c289a564f10fa0ba6377679514a389b836dd6998b4799a07d",
"0x20f10e37bae5a8193adb95b06981b0f7623baf32b69b61a11696e7a8795494bb",
"0x1f55e36adac5b9b352d7cbe55651b680c4b342c335bd8562fb45aadd3e83e619",
"0x29602ba7068d0b754d8a59a67b5cb83de5a6d86092f8ba5da32960ac4237e424",
"0x16707fcaee953e548b9f04c22b714507ad45c63e242d1f386fe813701e59d18c",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x26443bd83569c93383cc8cd7a2e05eb2bcead4621e70cc188f6405c89e778a7a",
"0x5a35d0e22be0f9bd2528eb55583ced870d362ee72476e9706625e49bc556498",
"0x1021e56558839fc8b5fb2205d2c799e3b31e7657cfa3106b0651ca9f6e9def53",
"0xa4aa165b7771c0810e9caf04fdc8d6b4fa87e2b88cc08aba3c8ec908739be27",
"0xb711cd6dc591dcf07f400fabe5cc8b78ec01724bb2b9e62d11456b6de351974",
"0xdb4f89a973ddb25f113a6df8e80aa798cd2107439ca4c3a7cb4787f23148c72",
"0x24580560fa1df7a3a4921875187ef0cad6db94f0bf7348fb7aeb4c9e31bd8dd4",
"0x1de8c3e482d87d19a3348c786983ba4bae3ab00870d28ae3dc18bdbc0c8561e",
"0x35ec9a49296b184f2225b3d68de6d1d5a623236576d838e557b150893bea66c",
"0x1f7f2e438c0695e2057f62a661aa8e85793ec168e2aac1ce06ef7ddbdad1e115",
"0xdba6ba79098331b4dc93515778b2497c38c3ddb2b20e6dc9df6ed5ad85c32b5",
"0x22fa5dcd5070a8f46ad637e3cbf69c256afc6ab58dc0b0d98ff15740abee7e59",
"0x26a5fd93dff7f5eb49942b51b03b98e9cd2ab261d56db7516afb897ac2706ef9",
"0x2216a1a787d05bbccce19eff5d852b92e317606d55c6b5b3fb02afd41e69721e",
"0x2228040c2cc6457ecb0acf3ef4699eab804d0251bc75025ea928d16d15065953",
"0x1c20e02da095541abc6481a5c1594ceaa688ec99b43ffce38b098ba817af0477",
"0x106f19142419a86a234f4c8b94c9ad6f3b6f4dab9e47ff3c9d6669bed5ff3795",
"0x104c7b997f5f83d8da35fab234f56c49716df4b0a7318bdae91786b0a007f857",
"0x272b659e78a33f1541fcf58f4cb3e64e806f3cd0e2438dce20a9ab7d416a3080",
"0x1249186ebedf49fac85f76d0e10ade878518daa306d2b586e295868576a13ea9",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x1490ad8e9d330e2beaad58cbcbabda75796a6e00166bd7b9de35c84dca1fb7e4",
"0x29cedacd10b839b576f81408dba8ff1cd699b9b0b11e16e5267c217e574a559f",
"0xd55f5e0d31ed8c032f1b31ebc07fcb088feba88583dd5815f85431f3829cdbd",
"0x22c2de78b8f8caee3778d4825710b080807cd14bfb6080488f99e303dea9c4e3",
"0x256bf262a0b931d87affd8233c61534d9f5f33a3ffe59460ca8af7d0d3ba946f",
"0x259e4f6cfcc7a4b6d2246333479df052ee0477b9ee8faa7f47da45d1495d909",
"0x235e716b22b67894aef5bcad49467c7c9e8fb689bfc03f058176c9b2f2cfa6de",
"0x91246bee1d5f4063a2ab453e658c50c994dae678cfa15b73b14b0f48408e18d",
"0x1594541dd396d5948b6b0172b31330333f099973d8a3a1a9d299bba6f45d1bde",
"0x24cc95bb62ee85ac17d1e8c36c15cc50c8c66c7cb12e08f2a8b865653cca586b",
"0x2dba892c4f9bc80cdfa40ee9aa9b1c37f0d4ea781c3fbe5ec7ebda39e2272dba",
"0x2f3f255428b447ee2819975595dddeef9fa3cbd71b62f34aee8594771d350a27",
"0x2f4b81914b52b75c46b6ebcb52605d073fb458f8b1cbf68fb9db225e4919b8b8",
"0x1e35a658cb61031459363447cde6165233b2bb5107c6dbb4c2d50c459940f2a5",
"0x21938bd170ef0b687752b8714b803b82a4358bf72b74265a4623d5594de772ef",
"0xd54bc01b18dcf2553834c7a2330ac8163083186d738637650ae7bbb67e69c01",
"0x166ef423ea8ce954adec38214c8412bcb52dfc2af3ad407cc94edf187e4d825a",
"0x304b27a7490ba0e5c20d3b273abc31ab57d4c9c39f2928b81ace40b26ae3454",
"0x1873ef347ff8231585a15dd61cb7140998b4a07d1ffe2045dd368594edc0f171",
"0x67a470e0c4795e245e75c97cb69745c9d9bab71c1b8836aeff01be895f3634",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x14189f783f0179d6a700e43b6f3412af189203e47b5f6bffaccbb0faa6cf850d",
"0x121bc25b16a45c18843035e84ea0f03e550b85c5d5d865c391608764d8f9da3e",
"0x2e7705b125455c88939ebff9c94d94b32cd19988de9033421ad2497299e1c07e",
"0x4de92a097cbcd0eda877c95e7d7c623205a82e9264d48093144c02affe35f46",
"0x56267827dfdd2c8e13c31ffee09c665605e6d0f76ecfce63a1a3e0ff9ba083a",
"0x214e0300f805ffc715666db69a32b5ded6c1a5e46ce21278ef56df4cf75d6d7c",
"0xa3e3961aed3e8da84d9b2fe01de35febafd742ba83c0cfcd82c48142cf1c42a",
"0x2ec69abd5acb3679c257c3814520f5a2d4e15a9e1eda480e25744cc31074d12c",
"0x1c68a794990b7866dd921b417960123999f52f198f279489f00d5db71205a6ad",
"0x11838fb23d5f3322bbecdb09dd7f8b581465c87a0f6db0216e23c9231aaa5584",
"0x5088200a18b6f27d2d094a42fec2247f9b19a17a2f85f9827bf372ff495e118",
"0x20a562ef82e57831ee85dfb0b18b716e63de36bce2d28fe067a1ce10e365a8c7",
"0xda77e103a18b438ac860d49030a95756dc69c0118e067bba3732b3a29d8fa9a",
"0x2e71181976c28449e32e07d66706ca4fd1b6cab8da61b18e712f5816bf7e94d4",
"0x1321a6faa0815eb83709c5f4bccf3deb91d918ee15267afc6b029d923bff2b5e",
"0x27c3ea888b30068677247481893caf50ad99ce732dd4549e2f651c3e266187fc",
"0x47172c54759f37b2b4d64ac2fb6ae6c6428edb065d5b7f185394515114dea81",
"0x19fa875a5e821b2fa6c2ffe8acfa446ddd4d6f253338376fa289b20e83de1915",
"0x2db07878d810de30ca07c22cee53280d160186e6e27c4c3a0bf895fe2c3349e0",
"0xa8c2b4b98315d9c006a0a54992474ac89e5935a1346976400de47d115ca4389",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0xc098e14e0b8ea8d519e73df8da0ef38276518e4e103d8a6101993f21ade6828",
"0x26a7ab22e3d4701a4d54216b73e906da3d66859bee38d02be8f120e000a5b4f6",
"0x211a846a0b674674aa04b33558a7d8050af880d13e6762872d4560e3f7f55b73",
"0x13595dd19c159220e93fc8bf8645c5b9af252edacd343c89bae98a3a37314c7d",
"0xd839375c08776325c25610cd2e5ecf8a969154c0979ac7f14f1e58a0e7e0441",
"0x136b3190bc5d892cbe1762bceceb68b500861a7f6b590efd62be25ad1c73b2b",
"0x8765d20fa4770fa4979632a6e5b500975b173eca79b0300856e7130f6657930",
"0x3b2d35ea0ad26b1535413a38f690954f224a6f78896baa496b8e8502bf34331",
"0x290489818e00b9c0ea5d2fce994ca9256bcd9775e9ca5bfdac81972b46a4b82",
"0x24b7c1b84ec626f59c7952c4098123e690f221504c68006ae1e5815eae2e233a",
"0x2d256f845196bec5b35c52a663e4cf84dd433348157a3c877a9ad08d41da5d65",
"0xd1150f01d5d7e30b0fb3a6362c631f4664f6c7f6291e6b889544ff778131376",
"0x79717001ed6744cae07a2e491a2338a79cb8c95755392c98459c1284c70ebb5",
"0x2cd2058b448f75bc368a7cdd20f0c67f74206366bd8882235da404d702d2be65",
"0x1b7a766baff43fa8a52e26085427a1beeddd80b70edd992547818c62bd2342ef",
"0xd10757ea13e688a4d99cbfe646f4268cb2498d2f2fc8bc352694aaf44f71855",
"0x1fe27d15068f85f384f63af983d10d1ccb94147d8560d456171c3d741d427f22",
"0x2ec657144f084e48f4eeb405543606e23fe2c1b581fbf942fc3da65d8a6228ea",
"0xb71ff8252f9e1c1d3773854103c48fa3857563e8b2de93b78a54d1c929464dd",
"0x182b99aac23bebb445feb24cf5f4920497d1c735985248f317c36ee35c343115",
"0x26dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e",
"0x1332f4f2281120300496b962963720e68a075590aa803c5c1cd8d3d582bb75eb",
"0x24c4647a7db1c869bda030a3f816ea27e8dc93909416ff20eaf39ba54576b452",
"0xf5df55c2bfac795888d3aae8751afcbc3f2c5bc2b2dec28148a252de9729426",
"0x23a4ad4858fd3c269b1df5858ee89dd659dee776a895dd5acffb17c632b66592",
"0x526ed32d567e190ff5628e6b64d762447caee284b84fa15adc9384a24ac178e",
"0x144d89dd1b606b27d51d742d02deda341a5f96e7ae5ee380263f7a23020cfd5f",
"0x8086e639a5f96c89faaf0ec803513e9c68647bc9778fc779d144991bab029b4",
"0x24a2d9babdafa3f42f87ab39e269c2edd458cc87e9e3c66dbe8b0cce81db9fb5",
"0x1fd030e5d50ca388859b18fa5617527cf0064d91bec5c81dda5ad3b611a28fde",
"0x21e5cd68cdb35c3027433f525cc2fd4f460132cbe83505823bbcb12b11ebad88",
"0x9813c803ff84a3694eedaf4b1c2172615275dc18ca654c799a70440946ccf0",
"0x202973f7fba5bd21ed58bfe7156d7b29010d41090f63f1bb290c1d5da1ad60",
"0x12305eadf64dac24a7913a62d95aefd45f48355576c671e56fde9cc7c8344ffd",
"0x25c783ad66d6a1fc6c84770bd637f6207097dffb0378d7e0395f8c0b86b505f9",
"0x222deb606f13cf28c73a67216d88b16f5958d5d292ba10ef3bc2c10f5a0b613f",
"0x1614d025472771fd870a9e9d422b3571c5494e7d679824d8fe1212177d5fa2ec",
"0x1358bdd6b7a51b1f5b5d094dbd8ee086ccdcfb9c27faad0806e8ef718d0e2b1",
"0x1c2007eba4d1629846bb69404acc84565de5d24620f75cfcd9f11feeeb3f3748",
"0x22f49d7244077e41f409c0b353afd1696e3aa15ffdb4a0bdb883ffe7a1a87217",
"0x1951523a4270c54403dfe3218fd3d4ccefa43114f1b19fb2c2821a4374718b9d"
],
[
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x2e57ee9089adcc51f2ec7d5fc42821e67fdf0a2f3d1add870823002a1e9ff4a9",
"0x2346c226491dde21f38b9eb1be8c16084774e9dd941895eb362c2bf763050cbe",
"0x2c294fa2466a0a9f1f89b1af5bab1ed3b86a0ea730770854684c754750efdcc9",
"0x2519e073c3abea02f7784cd8c841ddcc10d65507cb4e85e8df3bf85a8e41a70a",
"0x21ea0bdd27e0b8b71b91ab46798b907ee094cfaca4c68ad81f9c0c107e7a83a4",
"0xda23ea74cc325d3922665cba17876a643c4f6ed46f9813ad0f403955757dd80",
"0x1207beb18149148fb6f50f1090b05de32ec5d438fb30604f4c63c237a8cc1d55",
"0x1c357f783a3df3f09e57ffb971a7dfc50c1145da9f3f67f323b4742ef3ad7f82",
"0x234747b2d98835ee8b90f19b5ea03c13baeb410f21211383ddb20248608c5862",
"0xb38e11da34730bc74b7f3add58779f2e0bc55734962a059306e4b950276725d",
"0x14732e1bcc452fb9fa40e72910575640b674bb5f90353a52356a6133f26cbb9",
"0x197d6117415de8855e11099ed6c9c4d76433d39fc7f4cc800d5beba27dc7b40e",
"0x2b3a311741f8b94d8255d87810649ef6674c7a6c7711a83ff88f2ad9f7e23c53",
"0xaff38c1f5500a4ee4949e5eef338372179779bb29c95142b3ad18efa9e673ec",
"0xdd0c48ff292bc764e9fd84841939694a761178783ba99381df579cd3385d8dd",
"0x723a053723b6cab73e72b36722bfc52c957f8c7fe0322d77348955575e841bd",
"0x25ca5081fcbc5b5d8b808627af3c9494e0ef74245f9aa45419d3c400dde893f7",
"0x2df552ff14232529c8216996f16bfab8d5555923d2e4a53706da66f4bb013969",
"0x876f56eb6844dda9bf30ab548c8f0b3c4127ebe7fc31e1cb27e3ce62bb940b0",
"0xa8f10d1b35ca9268bf4403635f76f1b9ac2e39ef1b5c9e6d8174f4bcf095df1",
"0x1212b888592b16b273c55c09e887270a15efdef111fb3f0bbab6f34c4cc24d81",
"0x5f5771bd30e0b5160466f322ecc23f28e563a44a80a3df85eb30b2a6da5681f",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x26bf7fced0bbe938cd67479fa2f03e67cb8a775892e972ff4ad493655237bd8d",
"0x10a49b9136eea6f2c3fc79d946f8b8fd64854ddc3a964c57462ce17262ad7d93",
"0x5bc772beda5709a6fd33b3625682927678d5d7db7296f5703ccd7e40e0d8dc3",
"0x15d73afa88e6fb1b74cdf3ea97c694ce695fd39695ff3b7266371d1870f610c4",
"0x20656f69e483c5b05a2c5e26aeeb9f30d17b01054be5d002b4c312a32df35daf",
"0x2629526c99e13dd1862ab8d125a34cc68db0f3bc297d974044668daec9e567de",
"0x1e204bb473dc75bef5f17f5f828e521f657d8c58db1f4e096f5046589275609",
"0x2a4fc3c7b54eebcd023dd0907ea97d73cefc2955a5a8347bfb5c41cdb10fb1cd",
"0x374b0643d980373a12d798e8ce0f9e016a3b3d9c71e56e0b979534aabc3410a",
"0x2d54f4a821cd3a86fbeaa914483d0fa23a7cc04a6be217b4144b668ae70770c9",
"0x29fcf234a9344cc6a8541f6da7b2ec3b0cdf256408c362bd72048d808e72893f",
"0x4254caca99daf3eb34030e734085eb2171f7346ca2e9f43ae8f61a4ee43c358",
"0x2b4c8db3065c297d08b7f1cccb32a84a4bbe657c16ab0d9dee4bfe59465030ff",
"0x1248ae908fd75fefc42b13be685cade6bc106684ae4a4513ad415029374ae02d",
"0x1cbd111af62201c242a38f3a1bd792501cfdc5035c71961c29199a4a7167edbf",
"0x2eeba2b31864903d017a3036f11985a8361caf73d4fdb215c5552d9e477a7a52",
"0xd32eaed9cd5aba29a1f8cf029d022f77f5eb2011fbd7b8bcf442df70261c724",
"0x20971ff3e27ffa9dc609a839e591d688d07dc636d2cc79ce570c2e5b79f63b6b",
"0x2a8bdd4b9b1ef96bae00899ca737d2e1dca4917679af1c64f62677d2d626e314",
"0x26cfb0174d91280bd05b4e9553c044886e8b8c8b30c36f4316eff726808ec638",
"0x29f510be57ad8e8a7358c0697b8f2d761e7e6237c8aa2ee452d645c4fb5f3548",
"0x1c1cbfacde1ca981ae5f91b44a95f4252aacf086637ee431dc81a89d4db6b41a",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x2b7856136f545d69ebac3c459451f28a2a53aaa144ba679023b2161887ef1250",
"0x250c047260e50160cd6586bcf0ea5180821fc71c3788567481a78e7c8b9514b1",
"0xfbf82f8a52984b9d4153dd6e78c05163c8d4720915c19767cbfccd0c3973488",
"0x6bbc95542ed85d6012d232b16d3d01deca662a0f61bcc164b6554b32e61f31b",
"0x28186714392c789ae58ef7134248ad33a5f12470e416718a3354f34056fb12ff",
"0x53afba658da76de92084f426da8b4c0330e7725be947aa266b8c2f9c0c55c4a",
"0x1844872b8235f851728c66e0b29d5cbf1cd0a0ad5ea4885b2c9967508965c9b1",
"0xb09ec5a6d9b68331f53ca5fed46443c6fadd52ea4d9c4640de3fc2940c0deb7",
"0x638529db7cc2182751ea21241763d10d34cbc099c578b2603cb0d0c0fcd89cf",
"0x5d066dcaccac1ac0448d43671f20833fae00c106de7fe28c9803d7715feee67",
"0x65da2f374618a50e6fa3a0164160b1e6af42a76e9b187115b330d60a548b3af",
"0x2e202380b8f6d90705a135c42066f1cfb905077d39e7a02231a740a3262c1e08",
"0x14570c40a4e7ef1c096e9d8fcc0a46cbde32dbb57916695206ab03aac2e82f37",
"0x2d87c245080329821da248b17456f9e7c106ce8a803d3d015a8bfbf952897c4f",
"0xda8c6fc810ca1891938b417de296864f3af15c28d6cb1d59e2de28ebd010fc",
"0x2018992835e00507a6f2d97c728ca059eb76a7fca5237a36e9aad99a61265cc0",
"0x2d9099c975eb32f31f10f807baea25ddbff205c624a66a4966aa59bc8aaae718",
"0x298dee77db6b29e44395264887603d287c45850a18582a8ac9bd09d292882344",
"0xfcccb87f04870bca6382244b43a0f7f92d336e3bc4d7e7ddef48160e2de989f",
"0x1297b03aae9b949e9a5186975613ff59bea3a058d34baad1b3c15178f19e7ffd",
"0x893a222f29077408802aa74dc37c833df480b350eb1ae31eb1b9f9b20b3f02",
"0x1231b1b0d91bc7687c3813b2da32e7c71fc9189641ea0dbaf1556ead8f36182",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x2077a6155ab34ab05777651d0151e0320005731dc875986256e103209606fb1",
"0x11a4f3347aa9f08e59856002487fe97a4ac16dcb9a7962d139a3b80ca952809a",
"0x146016f8ce100f6cdc37afd22f00aa5359d531ce7179a2fc691fd12b00c12d3",
"0x25045870f9da8f4c97e11825c52cf4ce40bca1271ddec4ed01b774fdab83886c",
"0x156094487d4626cd97ecebbdcb8d41d7e70f28a6734dd3fc3382765ea111fd63",
"0x24ade6dedeeb900110df4f92bd790ebe1514d4b24bc88062d6249eec85805471",
"0x12ad265f80d855a7adcc2ab7b6bb9f49b50287cbd36e7d9e41860fc6596734ad",
"0x2f16237203d13c693faa6da2d3162b25d0d1be895c8026cafdeedacec7d7c835",
"0x1868f1766d3e2f9bb152b15a718ecbab287f6d9cd2e9bc5e66423b5bbc76e43d",
"0x128e30bad26f11c3be9a689a10d093822b5d2b920a1b78ddcd7df1a8bfca5d60",
"0x2e72c3b1f6bd3a793b27cd802532d2768deb9668ef00490a0716e95431abbc5f",
"0xa3e8c07a5a634ea815e1f57afe9494515da623e363a408e505e01471c5a2bc4",
"0x1a5c7a54a81fd93762ce79db6dc604f03bf519d683cb2702839662e69271bd6d",
"0x13222674c9603db4a5e5a36398d24d77543ac79a4a31db13b48c9a1998046035",
"0x333b7ef8d75e61e9f44ff11182db70311648a7b78addfe4f2144291ab5987a5",
"0x231ef3a554066132798e544505b11d50106c4406a937c9702c7bde44457d4f47",
"0x3016482ccd1ff28db55d6532420e95b9d3c66d1b8fdcee5b45fd94a4ad77088e",
"0x284acbcd8d3b7c6e7e7fb246fa9b39811c045820eee55e57e68d7a6cbb7f165d",
"0x17751244cbe20f816b7490b7346b8ddaeac1635588b765fc0e7cc337546999d5",
"0xe3b27a81103dd231517acad6c69e41fbf488237d0fbee8f0d652ec72bf09a21",
"0xaaeffcbd016b27891ec8c80384a7356211b9996a5cc9adebb24700a976d71b7",
"0x118f45236c875283cde478df3bd4ccdfed53d087ecf8d85d24bdfdc78b4018ca",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x2cb4a528ebaecb5ce5044e609a9ec5f36057185a88022e8340d74cf48579595d",
"0xb4aeb2205324cf9c91474b3909faa82059ace7d53f4ece6e91971c11d212adf",
"0x2e879ff17f31aa36666dcd42303d4aad9f55bc8d55ddcd7b8c54ef46fbc8e66",
"0x1bf5f6555edef79bb094218b0980f27db57f9709b63a9c94b18552be085a62c5",
"0x20a3689b70840d755fbf88c8fbe323fa7c7c5aad0e8923a165370511585f07ec",
"0x10a50b432864883bf92a5fb77e6003514f43fe4a5a1c070a932dd8340eaee2f3",
"0x6162a58c2fc725a6cd4746c8f229a99f9616dcfc54014a2c41e97b9ec1eb29c",
"0xa12e5fbbbd66f0de0d49810e948220591fa478abfcdfa1ab0fc5fe861b2140c",
"0xb899ccdc1131b112724493af11636d6421db516a59e8fc7f6e8240bd7581bfa",
"0x12506c3ee2d15b082a2cf3111e9bca3d255a2aaa48e16eaf5130461f5d8820e0",
"0x2135481566f8d976d6c776c65949849e7dc5a3097d8a7570240223569350397a",
"0x227608e1587276aed4b92b8c602d81fc32bc957826e2c4c83d8e82a46d8ab68",
"0x1f4fc5d8d275e923bd82f8f2fac04f63bba4fc9558326ac9ee895fcf682b158d",
"0x1de5b21d942edc83d8c79bfea64f54e681143399bbcf58d4b31c8c9d671355f",
"0xc8d9ae8381b7de88ac2894407c8158fe09fec7e372a4548cc0dba4d9283aeba",
"0x28e6f24ef229a25016cfaa7e3007304951e75ca14e8eaf7b19c7e1df58033833",
"0x16c93e94d5ec1faa31dbe2a105286d839588fd1517dca2e03d6b01d381adb9a4",
"0x12c51f2640a3c05726d08197e01fabf7d5da91671d33e40e00f924027ab24ae7",
"0x1ba9324d77e86ff6234db66d6183912bfe23527e2c056744231d99982d1cdedb",
"0x6616e7b8b4f34595a4591bfac7429663b852e626d20bce6ee7805367987d67a",
"0x2b291b00aada886311dbd8e92fa67673a2e9061f87b43a3d4570515dbe9656f",
"0x24bc1c978fcf44441f251c075eee52c7b0b733edab05b4d2081a4b52ea798fa",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x258a9d2af52b4fefcd409d763bd8e406c4355a9c488878a5a2c282adeafa297f",
"0x2fd82f70d05f4bebd46634d329f317e76cff5149a81424d1da18580f5c1eefc2",
"0xf4b503f7be48c09319c5a9b034ce2dbf3040873c284ac09f254f5ce86e88f63",
"0x276d0381d413ba30b831d3fd4a292440091a1f7f4ff919fca4bb2b2c900c1115",
"0x28e661e4cf942f9c9f95c503ad1d0a2d078ac4644c5dff369d5543aa7c48f798",
"0x2173c6794694634cce267bc21991598f3debac70920c9d8775947bcbe3f51124",
"0xa3fba241019270d5cd8bcb540899795fc593b5dea208cf016a8af970cf7cc2c",
"0x20fcd9c08eea8de9d38dd10180e9622d5e7c7493d0f8c511a4d2f9e5da45fefb",
"0xebc5296052433f86416ac17583ef06db0b6abd8d47110b6fc40bebbe02ac291",
"0x1d76be7dd20256408dad6674c8d0e51d5a5a5cb8fac79067d3796456168d002c",
"0xa94d77bf887daf01ce54f21c6891f3a9fe14faec2a1401fa3ee22a0244ed155",
"0x1174fd29cb4654d093226766b105e7ce63f0016a0bf790d847522e906c357a86",
"0xfc72bc5d051c4abd69d91c14cec4cdc87fb115049f1b08aa482f7ac7d7c4e2f",
"0x845158555b18fab6a2be184849b6569c1530d836d9ec37f9e4e14c2067420cd",
"0x28220c506fb21d1ff3ebbc47c2c8d766d427a30b53a3964ba575a21021d8b9d6",
"0xf45897a8f2b5c4214db423321f9763aa25692e0c05d46e9a45e5253aa696a20",
"0xf71e156500b67e356c98999c688c8b2a354d0537660e0852bfe74d038a4785d",
"0x1b933d41cac25dfd0de679e86cafc7d13855e4871d9b61e119b04d5199c09f0b",
"0x19287775fc90903925ac37f60e269bf68dc05675079d212bfc9faa6ff6a49821",
"0x207b6ae3483a8ce2bc1b2f428c1ee240acf3e1ca010f5820b0655c9d8eb868ae",
"0x25d71d41264bd75fd50528062bed8223a243f25d2768169b343334d708740ff9",
"0x2eac8212fc2ad788f72ebe8710f3c6c98625e52894645f3d714ac951daf2031c",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x172fd12d4e03af148aed931034e7060af7b8e8546e9e4e7935a32fe7727ae3fc",
"0x154dd36eb45f530fd949b85233eb745aedb76297c33ab036bca6f2eecfa030",
"0xd6fee6e12761c3832a48a89989abd5c6ac7a245be31dc258b03c12cc30818c9",
"0x1be1815b17dc7aeca4440d5850f787c64f7b251ddb137da5319dad8d9025fa8a",
"0x2be2edb8867a2c4cb3fe2653db4b526e7edabc44418341fb708a6620509b8bfc",
"0x6c0fe57a444d90391ceb5a94ad1de1443bd026cef8763daace23a3b701a5cd2",
"0x1544a456bd7e736ec88816982cbaeef38530e1c8480dc59bb74ce844de7ec438",
"0x13dcec7c410c82a7cf03cdf661e4c477cda63b31d34274653980cf3f6f04fe70",
"0x28832482d1891b799b37a9f34f26a72a8ba4cff953001ad0581cd4080d039492",
"0x1453cd3bc8d13cfcfdb0ca235673e3fe47f91772a386b11b3108faaa8b04446d",
"0x2948c35a60690dda3b5dfabbc2cc392c585671d64ba338f5112d4ac46720e3fe",
"0x15bad7a6723fea31ca2cfb8b79a656a16e6020406193e22d51897bfa4f5a2d0c",
"0x2a3eecdd1a4f9ba57ab6b9d31a359352c49dc129d68d9c509a74af0d1a27a25d",
"0xd1a72d9a9f731b1988ba20f99d8b3d81572f27035d9288d8bbd3685b288f94b",
"0x2099ac63775453e12762b57075cccfc6fd9574a65f15bac95091dd9475351a60",
"0x60d681d211c02f7909fa329f6e05dbe7455ad5879ac8d3d191138b05d207b82",
"0xb751b2674878344d13b251440475af9b37154209de0760456b1dadd1bf90288",
"0x12c11a657f6024257b1d2e79e5a9b76a1efbc3c3fdfcf0392c063086ac58a01a",
"0x17c91cad834837b9a48c46400d3e25e1a9a7154c8fcbe0115452d3d23d265b",
"0x1fc3820af6ae6515fde45a315961e27549884e2b367ff88b4ed93ceb05de6154",
"0x17a167b5b9014ca6330036496095ad717f6e37a4dc776aab1b82ea7fdf751ded",
"0x46702f62b69daf94a105978608dd2c3a8daedbe7823e8f8275c8cbe16a97dc7",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x1c44223b01de8fbda664ca95848b813295f013b8c208c88e9947d3fa8d244cf5",
"0x25c7179c48928fee7e9caced6240b851052322c5820ba2bdc329868ffdcc17d6",
"0x1958a68f02408107fa1e5de776901270181b3eecf421c6aeadc11866a64e2b55",
"0x17ad9adfd56f8195f4cd55cc87a833e9d6a12e091b59529d00ce604e99307f4a",
"0x5638e90a5883705652412ca5cf9fe315bbaa74743995b600072dd4be5f5ccf0",
"0x2467cf163474afc71287ec56cd6d8c6f53479aeb3fa0dfe5f5129db4385e5ef7",
"0x23427150e60b6fc48b7c8d5140c07d0f97f81f4397c0959fc851c88699c8f02f",
"0x16f925f73e091b1749ba5560993157d7259fff13c2010e4734eb77e7ada60aa4",
"0x2dfd7d6796e20ddac5fa12f1e533957c671fabff0c8c74bc5b8ea8ea4a4c87ec",
"0x664c8b4ddb68209c1253e424883a0fc059fd49be46a468ffed7bbb2c8978eba",
"0x1f3ce48c3ee2922ba46f2bf0ed51535e1d559d223b489bea2989116d48e7bd25",
"0x84ae17ff7f684885a4f21d24613d733fa2de7c694722611fc1e86c144618455",
"0xae2be5c975fc9c57eeb14791c5234c2f3e74c8ab151d4943fb98f4391888c11",
"0x28ae3fb3896a81bbc583a2715c9e2193209c79be2a4e9a894ea265010fdff87f",
"0x1a66346aedcb602f39974b69bde3c83fc72944ac6c2dd32a32ea5b3384b4173c",
"0x224a43476e893bd20cae3950ebb698bc5594f0f70ec5be20708dc428b2aa0b05",
"0x1d78ef43d9271f5718da099a5ad658993aa6cc4e263f0227433c1c0700be9a13",
"0x1c2ade57dbe0afc29e9c116a8b52dc653e3b67e891ddd363e1dbcd515c7f07ba",
"0xd3432e9b73c810f7b1b013cd2c9204574e75dce2c85d7279ba1ee5cfa912acd",
"0x10c5edc9f4201dc2b0366ea68593aa279438745e4e98024b5da5300bbf594f95",
"0x1424d5095a3ed3c98e8d59c21743e2ee18e6cd2fb87a4f8fb566a51d550747bd",
"0x1ec3fdc3a02833039f3ef99f01c641c62f0f90af4e2d9a961048e9b87698f117",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0xd9abef260b1cb444cc28166a74e729a2833e12445aabcf151c1cd036d1cb5de",
"0xed6cbbab2f8701da54b8b692304d8a4e8cb2e08f655c88924e27f4f15a9a52b",
"0x2c637eacb602a657668bd513a7a1007d825cefd98444e38b021b2c1d950a76f1",
"0x20fa81a9bf57087cf32bd01facb98697426792c6ebc73d02db7e5ae21b750d19",
"0x4f1d239fee709de5b0b5e5d5de370404d7df82d22b08c30e38a7550738aef85",
"0xa1de402ccd1aaafecbf31017e71429162b1c6d80579bfdc5b1eff7c48bfb810",
"0x1c14d03118d712c8ec5c8fcdc25ec9f15bfe8857749a7d43df91232dd65f37b5",
"0xc5e0c42722e6a74e7c9d75d128df4a564da3e0fb809cf7768615a2cfc0e9183",
"0x78c4b7313d470130efab6d889ce7c18832e610f66981841824e6f1d812072bb",
"0x3668b307c93ec14fd047713c1acdbb0b9248574ee5d6fa34fe883f1c22f3cba",
"0x23d9be76930ec686660aeda8b0cf9753e10c87300ebc641ba98e09dd2f52fe4e",
"0x29a3b2345ec04133c77316b42130de0131eb92263c4dde2ea07063c5c128680",
"0x2094711a12812e287d245d3c3efef7c17f18aa907378ad5060d80712b195d4c4",
"0x5c8d6aed39e2d9fa9a2eba112b4ca0aea1afac2c3a68622b50484a2c356a567",
"0x15235ad2ec7319fc572119534453ceafc36bc0bc2e4507a2a8ef1f7fa9e3e856",
"0x2a25158b0df94b0aa9db35f56bae7b9935418e9d6ae0d7004e23fcbd38de35e2",
"0x12db88ed4056400b8f336eb2d50eefb47c8cb34c31708093cd4f7dc30a13e2d6",
"0x10f2112348242ce97f64d304a108694283ae8959e5c91731b625900540bed1e9",
"0xdeb481ab3456ccc232dfcd50eb82acb8feca59538be59659fbe39426181f3c4",
"0x2bae45f1c2ff62e6048fb24ea8b3f732f6ca9620040285b5f89bc2d4db28e16c",
"0x2b93089446d7130073970ca2059fb0c06102fc91a6288339b687470613fdbf77",
"0xf0115aff5d6fc582b77c744e7a3310f569a0e786e12b526a741ad7e958e1052",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x116ba64981344053dbb50022cf797b7cc2fdd015965ef309453d3f249d581b04",
"0x15d813aa4208144a30d1b4509db1009a7eea4f4a8ba43145f72a0d9231a45553",
"0x1347fc037b2b26fb2308cf417715a9cfe43c2c65f2c71c7bb6c5c40ebf730e8b",
"0x153cbb5ae6b6d48a1360870cfd5f5e0f4c4ea591acd14df7a02b2edcc2eee347",
"0x249ff166662ab43663e65ec0789c6ba6bf1b8594471a26162cafe6c32106a003",
"0x72bc9e678fbc25cf9101f49cbcfc48cc0a51b86aa9d7e66c52897a5d3f5dcab",
"0xa6577ae2a5cabf4c9f00eea76f9fc2196288f1f8b3c16d54c21fbcb28a1da20",
"0x1c610a46a4eca6c1215870d8d35d92712544192b256de5f82ff6d3cd6eb327d1",
"0x2b9a13cbeb3acc4a615f45dcaf18828c844a1d61be9b59201a8fbd9db0cb2640",
"0x2ab0560dff6af3c0ff49de6b343eae05c665a0caf15792d3cbd8321119ce2b9b",
"0x16de08dca0ad6de9eb247866b16cf89da11890bf1285318b92cf302d8fe144fc",
"0xcf760300b2969518645ccbbc9d94ff315b966d828ce76e9e665fafe496dc979",
"0x260d564df3dc0db676e22fa410e41794fdde75c4f19584b43650ba909b44ef55",
"0x78c91572dd1477b07006fb1b5852ee50abd789a190db81c0c51de867ed1fc11",
"0x2280039d47ad466e5af645f064e0c10cf12e92c3d40675008d4c4eb9e873807e",
"0x57e2320efb4234e61691c9bb57aeda4fd11ab282b2cda1f69e91871700c81d",
"0x22f771ba7d2d275cf543283250aea007432a03973c77a82744bac9fd942136bd",
"0xf01220ddd07023709c7b55a1485f0a5443030435aa02d9ee677fe4d5ea0e62d",
"0x2e1da930eaa52749c15bb6bcd34b131e7c33ea3ada98437dd9b7eebb22db48e3",
"0x6d621c55789875af6fa6645af8da7331e54044a5ba01c54891ba11af10a36c6",
"0x1ac30223485713604244857141dacd036ab088f29363eb51c3113eba8ef808d1",
"0x24f06bb121eece3bc8c62e05fa6c0ebe28925e2a47a6d16e3269c5984682da4f",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x146b2acd097033a165d7525b2ce6ccaab4d541d5ea58e215166d393cd5677dac",
"0x1fb587e5904d58efa007310b9d86684fac658ed406c70d0e2af913ea416003b",
"0x2ca7217280f3cb8744c3c3824e46c6de85b654c41b19f4b662f8250f742041ea",
"0x1ae6ea2012fe1e87bca1988cefb126d63082cb3fa74a717b3008a4026a6eb28b",
"0x2d80fe550d7a4f7f67d2b170a430270679f03d119839d9ca72efbb9982dabfc4",
"0x137557593958b59bdbce0dc6594c99cb85c80f3e518e99179d8000b339492575",
"0x1def05089b4444afbf11ff8fb6e10259ee3b837fd0dd3d9be17595ecb5480c92",
"0x201b23b3cfb13fdb40deb239b3ece158fd8c67950c242ededb39540f9d71788a",
"0x22d9d27ccfb5d874defd155bdb5e0f9255e7be972f912c44ada9b7a2831116bd",
"0x239a279e55c2fd47d5872597cf2ce10ab41dba4cde5bf4cd7fd478342234b264",
"0x137724d6aa363143908f50d990be5f70794e6b9fe17beea4dcfea9dc0b6073c4",
"0x1dd6e3fde1b84a0b4a9fd1016d1c6d22fa80abedf000368d34d8c069be2fee72",
"0x2c94522857162e4e67bfbd495e823aed177c8a5d87d237fc57e5355b177e73c7",
"0x183022fedba6c78d0076bb2c2c6bb4722444fe77703e0a6f462dab5579dabded",
"0x2252e07ab4d0fcf8dcda2fd18514f0314282297cc99819dfcf0a5a9f35544430",
"0x719e632cee131b853c0824f527980bf00f18d8a16aa7f265480cd10ed3428fd",
"0x302441b28d3b1cf39dda7be9eced59f318c188274c6adec584737856495fd875",
"0x12692c7d7301e18bcff106c275cdd2dbc67001502b21aa890d6bd70e95a76934",
"0x1eada016794439b4d460b47956301225601ba9273266a9e955fd3e3c347aa7df",
"0x5cb3b0ddfcf2ea8552ef578139d19816d5c3ea7084f80c8cfcc43960ac2c980",
"0x13b78f0215ed7f48f40363ea5640fb9a41bfe6ff5044ad3aff51d755d9bcfb15",
"0x1b3a63d2f5d84163f48ff24f99ccba5ef05b29ca80019907e1c3a789296b22df",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x2957ffc8d1b0a3f2dd026ad7b90fb7eeb555d3772d8f2c7f47e37e913a921fd5",
"0x2a1c6c7b345e260cbe11154aa6a062d87725bb940dfe9798e794d551306f75f1",
"0x300cad430463e7de043c54011a594b2e5aa9f0aaf6558a5194a68a3285bda986",
"0xab63cd76eadd01e944a13e73f2f03afffc11b4823380c6d0f653cf2966b1eaa",
"0x26227ae79cdec5b80aff802dbb9bf4e8659ae92bd8a83be6dcba8d5917c4d34f",
"0xf30d1719ff31c8ac2175e5fd863b5b04516809e3c7ac6ec41a1a53d866a71e",
"0x11c786871cc25ea48df5ad070b2fd3969a4841f05885a80028d910b7b6e6eab2",
"0x2c7a714da7b75d6bb3eb16b8d1599f3729105bae675a1924f43c3239f9c1335b",
"0x24b7026b296c245b47ddbc1e44492034c4b7a8d35b2887cd539513c5d0532403",
"0x2c247c7290fbeec55bc8593b0f859b43451002df189238934b16bf1a20d3624a",
"0xb94893f2502d38fdb691bfd23b211fac95d934cf913f4c52eac9999fc059e6d",
"0x79b6b8524b8270e480562beac696afed88406015d4419a8ff123329050dd3b2",
"0x27e2e1708fc82a7868b3a0fabf059d164ed3dc38f0e6220534928b1cdf59e26c",
"0x3040afbc8482759cedf03abb41a1ee858cdf563190eecfb2a24424d4964911b5",
"0x1741752784ea1fc7304aca0447b2878de168c87b78e2c3ec32d6805b4d2a41e3",
"0x13445ec326f4aefaa2a84547767b65d8884679aeddb391598b219ae7ffd41830",
"0x2b23df120933a79eb1feea325a521ba5d53372e29d279a8c32dec33a83dceac5",
"0x2c6adf68e43f02f6721d9fd6d19e8934ce3a462ec543ff34210e828239177789",
"0x2e9faaed5c26fecc4672723370623d6f563537c06d1e98292134f4ae26f1cae",
"0x22c261e0c7bdfb933e808382fd75da681f46d90e703407326630768407e0c27",
"0x15605ce70aa2918973c4bff136303580b51fb071d5224a1732c10424b1fc7a82",
"0x21ecd0341474c3b4ce81101d267ca95d7cd2647fa4bfbc823956a9e348ddb877",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x2932e8876d985ea09549df2c64e8097d85c3578aa46adf5eafac039999835c5",
"0x2c1bf660a1dc8b26995b0e78875b0c28de9ef7b591fa2bc01a15ce7729b9ac5b",
"0x1e88f3c4efa334fa5bf313a919c4de396bde82e124f0002f1c00229f8dbcb67b",
"0xc774d6acb4fcc45b139d92323da82304fc4e29a919c9468746dd20a6e03fced",
"0x17c11174c9104e2ea1a374b75bea6925ec45a1d9e5293741944e5359d4d34408",
"0x221f6d3412048020aa832d764a5b5e80af3b014139b28f06920cd3a3d3c7b7b3",
"0x2c0b403d133861410859b48131001ac956fe4c9e5a368d9c3f085560e5d37699",
"0x1da9a5cdcc8d5c8e8390afe24b8d801bb87b9fb9eed429aae52aba17570c9d03",
"0xc3e382527280ac6525b3922388b310dc9864d9fd11815a2c94f7378f3d52f53",
"0x2e733c656ab7308a5f77b1747c7c7562f0b48d9bc42b4c1392632840dc67eb83",
"0x5500ca3eb4bd08bd91997d4fc698fa050d5d80d881f634f84feaaac57b15b2d",
"0x112aac301ad5ced619c2925c297d3387bd0690d0972aa21f88d7437f42bb5cf9",
"0x273c9c5526da6130164e2360c9cf111e2a1fb2b5f02a5a463c6c64d55a6c4760",
"0x5b30e5e7b01d8730fd549eef232bd3824b3a670604ccfa2407f2a63eab5f5f2",
"0x26e905c3889e46597070e8b67d4ac9ed44f5a89d59efec7add002494da376c6c",
"0x3a4bd09500b265238ee8fe2cc149e058d35559d4af804be07119815b5b98960",
"0x301e86bf4790028b674b2497deb4370f32b2410defc6a4f3ef6e500a0f29827d",
"0x86d71db143455444d99b9993964b827cadf4feafebddcf019c278f32c8114f5",
"0x174ef177c132d7a3e91f02639d7dd88248435018525f095ef18cb846bb060e62",
"0x57af114d2416184735fcff06d88e734f7d8d5dd412b7c407bb3a0f09bc2d44b",
"0x2cd21076d55f5c9c8c3c3afbf7f0eb2faf05ff80d267eb692d93b8400c9b5fd6",
"0x1ab2f05ede0b3e9790517712ef714568d570da3a0833f8e8317c1644264ce97e",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x134ff00b65e9a214f19212b4750781ba3dd2e28511f61cda7a69553bafb44dc7",
"0x144774a605bb8a7d11b2f8fbc2a0d05146812a9f1d03c4be608a544d18ad8f6d",
"0x2f1de3b0835804059ddeb1d93bbb9821f6e2070365ff34da2c43dff65d3edf8d",
"0x930a41a901ddf9dc66d27b2238016500aec43b06bac6e7113beaff39df69c74",
"0x5ea98895839deeb637c0693c60994afe4950a088d1005946b20c25f48b1f4a9",
"0x2b2ad0eb96fe5e5ca0062109b8c535d32ba984e38547f3d1050b72526884e14c",
"0xea3a0fc0b46da189a9dca213c0288e3369573fa66b3d3379ae56df2a25262f8",
"0x272ea64f54ab3526e4679a0d0982560233af7b7f2e85147a86298fe62afb073a",
"0x281aa6e665287f9540fb2f6d13a077d52e145ed62b38c64899b92a123357c089",
"0x2a432fcc6ed2fce50bf214a31f9546baa2fe8fb3d1d00145a7fca7482ae2c390",
"0xa9809138f12435ad1150f8fc74d401d992c42439a44ebd122991bece3824ed3",
"0x109adc1cf8528ec8f537cfe978e320e2a4027abba83a3781aee0b88444805154",
"0x979b7716c8be6bc4091a376ffd1fc1313e19f3266095bc753da2cd4df883ed2",
"0x163c946685c585d46b6eb8a3edaf018353549856ff6ec0a238f45a1f0d593af1",
"0xd3d1890201c5bb1a7e40dd5575b4267fad63ae91f429efc5f57f52f498f4203",
"0x1f4adf58a1ca1586815ac26a76d8d6a25c313e9b2b0ac7f830e6e1e0cee2dcc8",
"0x2916cd6ca0ee56ce79345046ce1a91a231895fe24628a840852474b240b53459",
"0x1390ae730e0297f1c7ef2e27b3c050d6713015a40370d6a281f1c985dbfe86f9",
"0x2b747562e4956de74f4b115e082bd95c00a7e2a175255c7ebef7cdc70598de11",
"0x26d57a5bdf2b1da9eda88e856c4909c4265ea86d8b7f630caf123aac328e0207",
"0x24410235e3faacc2da4215b96ccc5228faf00709dac6542f589409ee5d833901",
"0x2bb0d85f9daad9891a6ca76117c5912a19e2b959f03e59ac52ca61c6fc90bf32",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x1c53d25cc30ee67b9ca5de92e574ae8e006378568883a35ec673078c5cffffa3",
"0x15809370254e24135947fa4d4c9bb5366a809244c42e44d58ad51041ee0ac0a1",
"0x1c7feb95c74dfad69a598a6569b5544b3138c293c78957c281e16178dd4d2ffc",
"0x7160482689f59cfff868ce436b6135ce5b8d2e15aeddfad236cbbd174fceae6",
"0x1e1716d8a49f0c324485bc3adc0f6a47ca4d7921e079fec272d79aa4d4f5036b",
"0x2234e7ce1e40056deb62ede7b86c7f6482f7a253ce49aa78aa5c636a5f0f942a",
"0x1134d89c4cc64ecb35202fc26b51689c745b812587ea60ae3e2636908b428a0e",
"0x13c6c021a7904ddd8cbf3d0a7db61e044403812726e369bdb97ca31cd05142a4",
"0x1c750f568881fa07bd9d06cf2c36356c5b824b71bf2060b763fb2895667b54af",
"0x8170199a5b260bcb05638100428def3df9efdb5233441d14fc219c1bcfb0a7a",
"0x1c0bf7af434ae20e594924e912515bbe260e21afd030f32eb7b0bf5cddbfb1e0",
"0x1217414da7ee96629d16d8d7b906df0c15bb7bd5bfa5595974714aed8b3de96b",
"0x19bcebdd18dd8cd827850f36a3f6849dc028bffcc10fd5864c0e37c50156964c",
"0x67a8b7fce532eaaf198ef0fd1126b45f7d0aa8645e35b0331d7eefdc9c7b364",
"0x2a92c17b2ba923484475d4bbf164caa1a8f16523b6a23b2dba260d7178530eae",
"0x21bad2c773c7b349b2930be09781138a061c06f4f06fc38e71332b942ff2939f",
"0x28d0786689c5a9bc8c7f2eb62f2fd0b21d776f3cd74725c0bc2aeec801048801",
"0x222cc9d34695b0088ad166a5defde21377627fdd32b789575085363d6d5ef907",
"0x2a54d465647c8ac5df86ec2bac782e9aa560977f7fb60b87ccf3cde01e40ac60",
"0x13822f37a288f99d881dd1e6f6df9a8ffff482f84179be0924e7768d678a2a90",
"0x1792175406aa3a9e7056233f4a70042e8226c943b7aba99805727ff7a9565071",
"0x80bc46879014fd6b55a3e4d7698925b2a6710b7a5478a51292964f64de1d762",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x8aeebda8fdf99667caaa1b7f570e579375edf7fb6438af9b689bfc12e2c8ba3",
"0x4b0ff272995a13fede7f4465a2f0ad2134efef55626e1824c08ed67ad981bd7",
"0x63c3f451fb64fd5e95d21c8eab8fb98523a716c8f83e0f764b41a8e731daeae",
"0x1928de8cc64d6cf21107045a7fcc4e0cba4706e68cfe779044583f2aaf6e885d",
"0x1ef2ec873dca7eb1092b1835b74cdb403726d8fab6cbef50b231df9ab87ce725",
"0xae02db0ea401b8a1c747f50e885d087eea93fb3037870bd36b1440d88995031",
"0xcb7ba6cb4e056aeb2bde61a38521aeadd877772701fa572fc77915050db758b",
"0x18e89e7317025644f8043265ce00d61382467265fa055598066b9b19b47653f6",
"0x167a003eddaa7d10f96e547b66cc2bd9f2ca99d267e011fc69669f71d0b71fbb",
"0x573cbb272daa570f35256fd3826e34c3e2f35f300adea697a306f914db7a584",
"0x7fc9b6fdf58ee181a0141cff89e34513e7b4d61e01786c176dca84b9664eaa1",
"0x2b3af74c7a1c0f396429f7e2d70e68b014b3a268d92897330cb9fdb1615674c6",
"0x22580eb83a854a817e4277e8cf1a05f663d198c0b2b6458fa4cc45120b48883c",
"0xc03a653e7e2061d62e638a0931b767a550722b318ebfc8bd924b22c8a009b40",
"0x1f0f1d34546815b4410f8ddf67bec129e8ae08fe617497a70e85b80802e0557b",
"0x1dc998a827321537333b22cdf7bcf0a5fd9a72cf9ed9d9e05ca82df4105c02f3",
"0x21305fbed36a0b611ccd7139a48b7d36985041687c4b76483eef93d98e28debe",
"0x19caf75550855e1b4d0e580444a73db1d86d507b72031d11925f33fbcf7e9f10",
"0xfdea1098aa89298d72ddfdc5a47c8f9141955ff5a612b4c52ad3ea0461f3df7",
"0x15e15542d8176284cb1b007f4655236b1f6795f045634ec815fbb5f842bb3c64",
"0x24b51f84f0737f35c038d3801de3102fc32dbe223491c5367af7baca0e933482",
"0x22231a672bfb82faf7b867475382c2fc174937b53ce765f4b6fb9737177a0ecb",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x2020cec5cf125567b97756ed7174259dec539b4c40bba51bb64779221b4bca9d",
"0x16b7ffb1a4af4b1dae8d82824c542e81b7380efebf3183208dd87f3368f2cd73",
"0x29474e7fba2de80bedfa9f2f8bcaa38e6b154ba2da3454fd1436fd5bacaf2bf0",
"0x29f55a4fd3170647fad71cf38c80c4cf8af0b1039acbd193732ff1bdcb049368",
"0x2383d1015508e17fa9ff282c175ea5ed655f74bd5793bae4700459b5600cceed",
"0xb21347d3f2e1ed0ed02262545a6aeb4209b1809b132f7f1036af67f9ecc114a",
"0x1c3b4d79046a0030b73e4ed03746ef2898778560012f14b8c151f4166e0c9cfe",
"0x2bbdcab9bc95ec1509f2aec2af8b117c34d8d8079173cc099e658c863088aad5",
"0x32c3e39a7299f29c816d761fbc2abda28743e917547eea1eeaa75975b22b7cd",
"0x2402ee3c6cfac01e1fb6551c34b1591e2b419d4ec69a0a9f1331cb546c31dfb1",
"0xffbdb63b86161ab9648a7bb7e5c25d1541847070efa58c6240937eabd05acd",
"0x2dd50132157285954cbfc6ec6f2e73b0d1218c699a07fb09984690d0fc8719bc",
"0x116fcfd48ab31fc4b622f442566be132d688edf27d5337fd8afb80932769151c",
"0x2c3c7ae7989bf23c86279e146798a3ecdd80898acbb6c2ec1f716eb7a91b017b",
"0x2b7e60fcbeef2020823e799448da1cb0b866d776c8f74c031de2f5452010186c",
"0x2b4a3e4a2db9c0cba63a23100fe5b9ad29b63e1e004b40a16fc00e20a83b7d0b",
"0xd1527b252bfd505f375cf86b9fc95dc55fe1ca65dcf37409ec48da8b1207735",
"0x1b0a396a158fa717511114766ffadeafc6cd82b72390aa908e1c5b496eaa2ed",
"0x25b7181ae26411c1705d3adb389716b615f7c1bb3051ab9b9af4df76cca672a5",
"0x1ce6e261ad4d6353538814957c5184ff343521f18ed1e8ac24dd380978f1b1ff",
"0x2114b703153c05d8a458b86daacb8a1180a0e0e06313c69f0319885218d57254",
"0xbba93da8fd45f0232aac88e242f83553799a5dd893a27697169d9ff3f628dbf",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x234620365d9e508d8b7a01a20c8b84cfe78734bdd7a480a6f3c0270be6c9e031",
"0x18773402938384bdcf3ed2931a34af760d3401e10cca02854081209ca5bf9c71",
"0x12f489609e827ee3dd6a53036f1f8fb80243c0ba7ac2720ed6997504f7f50d3e",
"0x98af099212892af46e34cedbb21e88b9184ab2fccb8b8665a5324601d8c5909",
"0x229c5955c3b6f26373956d4e3ddbce6c4c97dbd1382ed1c141c6c6b8cbcfa95f",
"0x204c3dd1c157600ceb1cb55072ee278292a3003a7777febb080a33168f4fd9f6",
"0xfe2cb3ac38a35f9d943e20a4cd370598e5c1b128edfb9cb877f2d424cba56a7",
"0x2ae0af8492610bc178f36cf8887b6bc86f02da15b1dffb674706df0d9b62e9ee",
"0x1ed1520997dc0364683540a32fe3e4368385d140b61b09672ff0e0bc2b398115",
"0x25a0c2f522b7f27667a93c435c2bdc67d575da8a808bfdf2a43558b1eb12d9fd",
"0x24d9bf46734bea252329879adfb65782fa5c6809a1520a3656d7f67331348d3e",
"0x2b5277817669cc8df0c6b82feb1587ed59210f1414ae609f40def4c314d96e05",
"0x724f33acc2c20822fe7f8d3d1f0ac39b2fa1025dc18dccaa4b258a2654e705b",
"0x173f609ce483747dc7ead26598dd2227107af0521fcaac5efc2bdc3f48c07c99",
"0xcf0b2b3f0ab40d718173aad7993e6213ee48804e3e563f0e531e2c937abdf9e",
"0x17ce34f45aafd638238ac5846997636b58aa04d76b4b0bb46aa0cd078ae14f8d",
"0xaf51c9e93fa5991104504bba90149228d64eece560e4c8bc2ccf1b943cfa761",
"0x67a323bab4f3d03df325818a393ba5dfabd66405cf74e65e9dd52ee2d8fb197",
"0xc3d3445a27d7a042fa2b4c5e2b5d03c1332d38bf26a781449325896df57ebaf",
"0x1b5b3c710b37f195824a623712b2104d821ec8d859940bf0d27a3c50faa2e886",
"0x16fbcb1c414031ba771845e6f67151fa983a4e32972031ef813e5f43ff3a8cb7",
"0x2dbb1e93d3cdcff3ec3bb01debd9211951fab454e9a019fa4658a98f148cc8ff",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x1f580786a86e622d9ea1bfd87c2d7a3a5f19f25105f0247f08b0e1ed89bd9dbb",
"0xe2debc6417cbce9356f75fb55b7ef0347205dfb84b5b0de2c02f4e130453c16",
"0x286b399e2ca189612a8d7dbbe938a61a273025779047f72ac5fc902847dfc0fd",
"0x13144b54692e577de4598ca0783dde7af2a3a81cc5f0030b6c3bd92d3bf76dee",
"0xaf7247e59389d0f9509b168845f46a72b4474d9ef66dd7e35f58450fdafe9ab",
"0x18b3c1a2e20476cef58aeb4b8ec1820d80c28a5309d85f974fa62a19d262f5b9",
"0x22d6ca5d958faf4940b74e3f50fe6eef888799302c7c99399331a9db0a9dde32",
"0x28ebcdb416210c7ea0a9c44cdcc1763bfeed08267cc7a17a935f0e75dd6beb6b",
"0x264522a85698bf1cd24c21e937f975faa4cbfb3534cdbaff55a89a17f947aedd",
"0x170ca38dff04f179223dcbf96e15609225436e47f6aad10c21059b549b8ace87",
"0x1980e8052c47daa2a7eceb160ba3cb93291acf7b84c3a1b83977766d78e7ca83",
"0x2ef55e77f32308739f0831d0a98f7a6961e4822e53027d86a46aa9c9ad39b64a",
"0x284ac526379b614a14c7ea0567aba7a459c269c32fd5af192240c11103a308c1",
"0x1d5a978ae2de2380a458d23f2c2c1f7bc1791d4fbeb38b6c7a356b6f033e6dc9",
"0x1fdd8752355eee4ecb1e8924b6541942da0c3f56e2f6c12e2ab75eebfcd1bd98",
"0x274b47507df843c5fd2f4c823c4c22057b76336affc6631035f28e57f6a6d387",
"0x2d46b1ea87a9f2ed6d8665f43aa1b4f6fe399bed08d9c77bd98e82350be3f379",
"0x21e50a36ee2e6ed562fd73013bb2d34724b4ef34525c51931610076b81d49eca",
"0x2f0a7fda21c19ae55233db913f1dd886bf71e9a0fe12f425d479f462f1cf4b06",
"0x2dc7e716c1b4d182cdb078f38ee7148f0ff45a65f7f6360a66d6a29fe78172a4",
"0xa24d8de1362fe9f8f23609dee59bbb4230f39236e6729ffdd95bedcf8f404dd",
"0x2b1c087ce01523c9e0f97d81c67a77014e6f791a656f8edca33133fe9206bbbf",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x243ab6d29d356d147b7915a7a11f6ef485a0f3ef8d003ac239c0a926df820271",
"0x10f0ea299cfd16da7c54cf4315a4bf993f6c8ed21e1f1b629258655bb569f3b4",
"0x1057e97ac983fedfa508de5e9055c24629b7faa279f1e483a2927e621a45a16f",
"0x13ecb96925a985173e792bcadd76dbf62657e8aee6e732e1fef9ceb1d86688be",
"0xe6f9b2c64d9d97e1dcd59691a2944c4e610f2c9361a93284853c335ef448b93",
"0xf5130dfaac7698c83247ab7d37384c6f4fdea4c423691dbc0466cc847d22240",
"0x719c66d510d88d51a80f22c9ee06cab506ed395847532f0b0aef79e94ff5c37",
"0x19fe7de3a53de3d0cbfbbe226c6d9799cac73c343bb7f652246d3314de2cd748",
"0x1fb5113860f9c3717742da8ac8dc02d3d750447ae00236789ac400ab7b0a4a5a",
"0x28637c9718b8c1053ac27e6ccb68a14daced5c24c3932460d23aa40fe066611f",
"0x1049f5f885c559fe26f7d811c660cc9c6ffdb5103dd3217111b99808a28a10ca",
"0x11ec2b02d176c222bc479f6fba4e427738b96aca1b7c3aa11db89b27ae10f0e3",
"0x194af56781953f69e1b00c8040eae1bd59b4861dfbb3969d8161d77552233c16",
"0xe752eda03c9dc685060d7d0625d4882ee9ccf2748929286db03f0a453d8c21c",
"0x1440c319ce47daf613542b6085053ac22ace7246863f49df6488292e7bc72a2c",
"0x10cd79d6139155e4208ddc71ac9646aeb4ac61a3eadfaf337ff97ed9109e0971",
"0x2ef23590604b7f057aaa0583333f5766d25a43366d99ab87f9e290600b3f749",
"0x2ef2c45fc47b175cb8c6e23c2cd7d26332ee65470759893d167772f18b799f97",
"0x1e769953c74901e1cd39e0a9d7ea12db105fa2a0c3fe40cbe36965e11152482c",
"0x2713a7060c9901b904ee4efd31cbe1bb0ac6efee3756d59392e8b594db57a617",
"0x15b3bc638f4556ac765e5c60678b18ecc5a7aac5bcabef247da9cf116cf4249a",
"0x1df44e6b43f51e3a708b7b6f7a05c67e7817d8fe6f36e357e266265e3183535d",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0xda3ee283edb0e4256891ac9f4166ba14c17436c1ff8b6870f6dea7962f36c3c",
"0x2eed5fb764a1fa6cd387d19322790c87a6b6a0b13f832f24f0fa54f36aadc0d5",
"0xcb9fce02c3f2f82704477407a46991cab311db6e12f14e388c2a4b6093de75a",
"0x2eeba73653edce41cef62722997e5df9d2f76d799cf112d29bb5706a6eadad08",
"0x4318c41475504dce0c6bbd1e76fed829f7c8a71f1b02f45eedf5c3a71e63909",
"0x2a094657153ecc1710c0583c1c3b7e7966e67057c8faedd408e505127a78605e",
"0xf40aee2532a088cda6d1b13c48569022dea6023f85231a5544a9e6cc4edcce2",
"0xd97ae723214277576911235bc25ed81063fcd21b59e6279275f11f57c054459",
"0x82f1e5e8e5087c1aefd0f4fc62167bca4b73b8009e3a67e07cefaef1e475cee",
"0x284f24d43d09bf31c1b59d84a8f2ffd8b1b903a2b88827fba8b02468ff57a971",
"0x2b6538eb36991fc2429f8c38483f7d4ae728b7e105b4ac6bb449258eb89d3aa8",
"0x82e7991093e92b53c575b9f51f8bb8d1d2a405bb94359544a3106e033b3f2a4",
"0x288593b3cdd201b3f6ee7d9ff217e0badc9dde2bb6ca2a63359ceca59ed12d81",
"0x2762b0c05f66a7d3a2c4b46f6da9e207194c32a91a15d0c8c7a8601874649bd0",
"0x20851ccb233ef814435570f9435eaf7cd22baf2a89720b4b09d035dd42d0305",
"0x1e17e4ac7afb5980903d9faaa355d2d4bc00f661cea435cd563a0c08d89f52d7",
"0x11c64762f6e40528ef5f60c4905cd442e137348737ff11ef9fe186e85d88cc81",
"0x135a7893f0df31bdb093e2f1936efde3bf6c80cded53bbf23842d5cfa739c10d",
"0x670c942b19efe0e24ae667f88cf25482988d4fd289852b59c7400bb291fd22a",
"0x2feb899196016827ef03dffaae29bd9f7df66f312f728ac0398d2be90a10c46d",
"0x23bb8acfb809bdb5ed2b2306e5870465cd881e8517cf8d60b6eacb23993ec19d",
"0xa2f66d3d56165a8357ad4ede386e8bd3d2c1a6a51ec4a928d02aa9cf2c94025",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x2621d53d90f51a97a82455d448359f1f876b08ee77917e55298b4a4f7f2c80c3",
"0x2e1713aa13a1ed2a7b57ece72d5599b6e239d5fa53866e407444290254f10515",
"0xb0e3135b9a9bb3900a312bce8cbfaa6bf7176bf09974e9224d63f81eeb9cdde",
"0x1b37ec261be552d7f9cacbdc0d0f22ebefd7c123cdcd54a0b493db30a65359fd",
"0x100051565c2e4d9fed118b55fbef6f060608dfe4555e486a44e6971696042dd1",
"0x298819bac61778b218142e4fb26533f0ab1f8f40c8d8070fe2f1d4170d93c58b",
"0x2cbb90e508952c4b5ed26079f85f11f3bd728140e3b8cb91c1da9152c8a82560",
"0x18e9de503cef0ae3f8901d7d9004170e4661e3792b464e8d7e1a7c7f8bb17091",
"0x240a6c59aa72438261cb26070ca93ef35db217770a207e7cd9af3a4df60768af",
"0x1c5c0274172befaeca201df876ee39b582fa848a0bc9454f6834b073c4ed7f73",
"0x1dd2fcb227876523c5d075aeaad2df556ca76939be98462768f94940ca73028d",
"0x1e0ebffd9567e4222b322bd16275af85e3a09c6db8f053a7027827bcfba8a0ce",
"0x549e3fd2d8b4c8f5e1f6e5ada4adc3125ece6af1041e4f297d14cc80bd7a865",
"0xa43a7e3ba83061b5379f61580f17fdb5068f57a18cf3d8f4431ef14a7fd8bbd",
"0x2a8c713fa0bf5e002dbde544aff988ed8b347afe2b3641a08eab979bddd4d2c9",
"0x307b423ad05a7c6c5a7feac041de1c236cf3db8e0da46368ab0a5113dcfd4d0",
"0x1202dca5513d8609b3e911ffc3c1f8da4138f56287f2837bc1f8820469bd5839",
"0xa109d2e7176796406f7fc25caf837f5c8d2306962baca62457fd49673b0e48d",
"0x2158fe72a1672fc1b0aeb56bdeceff410de2a404c9f4d7a2e39c4cf0800264d3",
"0x5e83a4f3ed30f863a148e66c1771a4634ed52e73dc1f9c35e479744dacb7c2e",
"0x15146f0169d0dcb2e678a62443c00442cc342091a6d18a293a17882adaf6f146",
"0xe27f3790482529695293a0defd1f44495f0adae815cdee0d3ce9f91512c1be5",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x216bf6d0d240ce8a0b430f85259b74084cf9f998823dbf13091042a32b4ea56a",
"0x177227662dcc7ef354ef41fdb3f234ad93e7b70a6550e09be2c947ea462597b0",
"0x1864bb94cc95e4e33b7673809909ee3a156c892cea648f047f2864db12278e4a",
"0x2eba9c8ba56d6b800654a1e805d403bbaf22af7ff1aad92ab7cf420c129a2616",
"0x24133306f286c04d2c2e174c0cce34c64c21f81e0df67c2593de5b422dc1eb20",
"0xa1aeba71ae73f2846cbd57f9dda3c3e24b82291d22108a6a05a9c06e002b8d5",
"0xd2d0af3b16bd738a5e01bb7af549f842a2a9f847063845d36d7424e1d2bfeac",
"0x8e4a4d4fb97473cfd880c9285028c2883d6d08164ae7db26e6900b532e848d5",
"0x2b2ae02b9d6d53220998acbb749c29f4476c9f2cd34b74c66e4f2c4abaab6520",
"0x1fd0ca0b29e63609c2f6a3150ef62616a5fe2160266382030e48b29806298756",
"0x11e7f1f91826d815902e2d9d79e027c44e78197f4450cbf14128d704c2dd46d7",
"0x25ae141d31ff22370a99693adb350858a307e1fcfb60fe175a3279d99879e2dc",
"0x13047c24823af0bdf17ccaeda371552e8834990abeb7ee7a9a646aa7bb9f4753",
"0x266358e11e5081dc2944990007644733445e90ddab20cd50912c06cf1388e92a",
"0x1247a2077d577a1ef6f0aefe8a7a2df21828f69c44bb89b6ae70fe9c3ee1af91",
"0x2c338524f33f321e6f2e5e420edd47f14caca5bfdb7d3e065073b7b20d2814fc",
"0x2ced7c9cfc6cb9727179bfeaf0ffc028a759aa44e97257f72c3467f9a0974c26",
"0xe633982a359333b017dc5b4e683bfa274e74153f4f99d639e48de02fe239c9c",
"0x2ea0bf1ed70f15fc196a395ac836e6a579d4923fd13be32b1416d351a05afaf6",
"0x238f38e3b7a1d517e00c666c6670c099cd2bd7d8418c55facd6e511ea37c64e0",
"0x2da765692bbfefabcaeb0dab3ee18797ec0032c1feb257983ce753a8f286a75a",
"0x2cab9bc1d925ca3f6473d56a4c57ec136f52fcf02c9ee0e25ad07fe24dc281d1",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x1210303a7705212e81f926482699c6d6b6aa13ba342f4576c873ce976435efe",
"0x2e1fe52ad49d5b2cf4c43c7fd551fd05bb0cad132226c92b47e4bd24bde2852b",
"0x16e6198e30d06c12d5535709100d47d0ab174704e4953b696bdcb8318c78d80f",
"0x11087fc4daf5c010f9ea8b66e2f01e9032597965c811afb9ca9c7004e01a7eb8",
"0x268cc3c909fbb19b2d737b0feb4aaafd6a2c0f0da4f6b391ead88673c187e8bd",
"0x1200152bacfbb5e21565b19d0e6b47ae2714cf2bd9ae7038fe9132879d4b4688",
"0x28db252e756f0ffa83fd845fa7d06ebaa301d37edf474a3b71f60539a630f59b",
"0x184e95906f85e4e36b0b77e9d862fc27a56ec38c3178f8904851700c703c9db5",
"0x14d66e67decb7a7f74926f2d5ec6497b965b4de941bddbd77371a3da470e5d96",
"0x12a5b346904fd63b6c52f603e8a0c351d2284ec345e50518492ba935b07ba7b9",
"0x269094e291d79246bb735d3c4a3df2ec9fb60a6b2f2340e63c91cc6d5dfb083b",
"0x13929b4087a818cd5f602ee40afecbc30ad8ecb2b7677530094d09309808ece0",
"0x14f878c52f6d09cc1b32f3ceb6f2459a5fd6668860b945b74457d819a6d18757",
"0x2d91fc38379e50d8addc35fdfb88d27e100837e513f329afc4fc9cbc6fa0140a",
"0x27b4dd2629f029c1ec11bb5f235252371947313993a0111e4f5cd14d47b505b8",
"0xfcf71b4f58f1e845394800f32015de09e4107ce8a7bc786810e3cabb67d5d5e",
"0xdb4f212a8d9f8036174d995937618dc8074ca32f5ca1bb537fbab6898dc679c",
"0xfa6cd0c9a74c1973656d44ae21323b5d29ee26065906f0747bc3364d9fa8ff9",
"0x2f5d612a89e3ff0157b8c05eb81cdb030b3aa80728ee5f2b484e027e9d7b587",
"0x12bc2f8ea309d0aae7cf1fd15767dbe97c288b2d72e1ea489a383169d7e5cf07",
"0x20e5a78984a6e437e16aafd2e43f119233b4bb35cfb628aebcca0ab3b102b4c5",
"0x155ec9570cd3e503fc1c73fabd38c4ae24d31e5a38bc56c992b5817c9a58c18d",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x6a4859991b82108283b6091195b9244714a1997a97833c55c4e15c00747f5fa",
"0x1a17c910b931d2fa7fbf8d41a1ce86a3496148f0a62cbb541a94310c3bb931d6",
"0x13c27123ab15ac6f964022f94aefaa51f07391afc1095d7480acffec7e9cd6e1",
"0x171c742bb0ca2a0282f5fd7628191e6ccaf3e32c38305a00f6593b4fd7527f9d",
"0x16cf4b06cbdd21c5afd1ec787847f6956fc45cec34e95739af5ca67c27da7729",
"0x11e51d4503b1aedbfe993befc9c8078b70d4db75556da4942846d22f217dc694",
"0x8afd62076c7f946b4dd61967b32a6d09e794888c2702acfacead811a4fb4846",
"0x4158c5f8f1b10efa12aab63546ffc8f065ade0bb494a31a58391c41f62fa841",
"0x2f87837b6f5f2807659ec7565173893f91a4ac26b6c2e26e22d09a417309dd32",
"0x7c728d2e8d95bc8842ddf8db4c76412aefae425c2774ebdba4317ea783345f5",
"0x1455d8963d76e99083c896bf0f68f63db992b86a913f3b123a98889fd61a3b0d",
"0x8b4bf22aa0e03b5f857a51c0e04b64565f59c87efb6859f8c7169dec09e2841",
"0xed823b8b9d0f2e0b0c6aaaf3e5621308414d4be94ca3ccbc6c8aa0ce8e1b4b9",
"0x1642b64b6547c137ea9d16920d1d4273ec49148369a457cd28f73cd9098ee6a2",
"0xc9d91924e007af49ba20f16356373ae9cdd408bda9255583e41c1079c5c06ba",
"0x2f1518b8bcf463362e1e927f733dedbe8817de8dff121a6a5527b33e70778ce5",
"0x2114e089d96c5a4b64b2a6ad154fc6880bcad9eb3e8cd1d3ef980efda445281",
"0x1abc25ed5c0fae93b3813bd8fda0cf773df41cced07a8ab762fb36b6564922f7",
"0x2a5eddd216f0eadc4c50a2618f44a4dffd68ec6af8f7c0bce1a45894e6cbc010",
"0x75e0d34b920790fbbd21418ecb62663464bcfa06db3581dbec635c8cf864ec9",
"0x27b7beb430a31d0967dd287dea9fe9d0a16def46efb5518aba65fa025d82579b",
"0x270bcb008b10d32d8b92753219422002494e30327ee71b2379b09d5a8e519b9a",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x26c4a3b0ff9b7f29c97c01b4fdc65d8ed1a07717da9b297d3d2a855fda54bee0",
"0x2c6dfb52d9648d18f5ff9db4e213c6c94f2fb8151aeddd80a1cf95df1ab4862e",
"0x2f7b7e795fd4f392f9810877d44523a6fd9ca59bf9f6f15502f4449b6fda8c85",
"0x5722aaa2080e70ce91c67932130feac2c7ce93eff67e453c4a10c7923d8282b",
"0x305247769dc2fc18b8f32cff8b1a08ebe60b0ce5179bc0fef9e41893007050db",
"0x25c0007547961e0f368c5bd7bcd2335c7d35c1dcd4e04b169ea6676a2713ebf",
"0xaf75b019c88a07fb24d01cbbb2ea86e75ce904560f06eaabd617cc627ab0cec",
"0x4707e08232d55d9c5a37b7378d94cfd74933b1f483a6db89a7f7cc83d17a228",
"0x1cb2bc2b494b4a6f9e502992730dcc6b94aada6d0a04a350087b3c9866c448cc",
"0x292295bf6257bde873af036dd6932b623fea12bb31928bdfc800d1a6bdb7dc5f",
"0x235b612e67013ebf3b74fa41157682a4169a17315695f54c73f290afc4574a3a",
"0x1f412dc0da42db6a648c19e9e9119b157483bdbc7ad3936efb9dcb3e72e12114",
"0x1402bde219d915bbc5f2958edd28a107072ce6cbf62346462754c21d6d5c9d16",
"0x265eef82382e05522d8c113ab42ab0b09da4c166e107b2fd0cfa47aaee5f4756",
"0x2b329efeaf663ff307ee9a682f883da59ea63242aacb620b61ef85c0110fde26",
"0x6004617ad663a46e41d79103d1de6e8364d2fa582271da3e8b39c01adc8aee2",
"0x1a10c1c3bdcd43ffa6ea4d58f408cd7d0e74a5ea38656a1b6fa88e2013025d55",
"0x9c705ca1ee96783e0530b69117d99337fa1aaf04c5fd26e5309c0118f4bdb32",
"0x978aa5435db1ee6896c737ba36d79120681758793e1a1d56718f6cde533dc5a",
"0x1934fc546cb215a23bef42d7124ceff70e1d469081c2cca343a9ebbcef1ffa60",
"0x1ea452043466f1c5d8f26fa48267014833214842b2d204fb253b97c9b3deed6a",
"0x876bcc65ef05f89d90f3a96070a57d48d6a2a09de2aaba161fd6b9e80cd6ccb",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x1c9f9742d4bbbb6c9dec076b4b9c7ebec120c5740e04e3c62d0c786af006a303",
"0x18d9f9aee0ce3ea08d9164a5473ac114ae755c25b4f9566aee1c90d0a06e7029",
"0x22476bc02607cc745322595d63b98eb70db2782762e548e023837c9fb06021ac",
"0x22d83381d8f8800abdb2cced36e1c1d1c2f552594bfd9990abe06d0757eacae2",
"0x16382c1df41e7d0a3a4958656a42e3f1f314b21ff463c5f959b51d1a6c40118c",
"0x9e76815d09daa33a324f5d1d2404b3ee419b8e9b8833db59110c8d38f1373cf",
"0x1b0d5ae4cde6fed3fdef9312557d22f7da589e71e8712ba7d2986b4bdda6206d",
"0x2940f972586e13b6af08d49b838fbcdf24fb2a8a03f069ba612b0535ef94bf6e",
"0x19edcab2af3f18321eacf5fc4f3a933383d26aa37b1e3049d3c36c11c25f60e5",
"0x2deca7587b2175d50de4645fb5601b2599f5eb15ffdca763f0a24dd1dd4e735d",
"0x1f816bee20400357b01555222cbab8bdb2b5a6ff8aadc19f911042092e96a26a",
"0x2e950640b9cb8d14e70f81b06a9dbd4f5e01b81c448cedf2c2ea0b753d550e9e",
"0x6797a59fb805d4ccc041166d71d077763b50b1fac685126c84402f02f565179",
"0xad20de820c01db5e4c800abd15e3239b53a390d4a4a60348efc2dec244f81d8",
"0x174a6b87cea8f7dc3a7aea08317bcde182eb2aa39c927d46bb9b0dcd70954da3",
"0x2cdb547394356c92605c7b43aba9aeed3ec33a6ad515e55d8df4e678487186df",
"0x2d001f86169c7feec284389e39745c1a64345f978bdefa862e8c73f7fe610d98",
"0x2e40bd1d9e8c6b483f91eeea0e7f4f210aa786503d225e1fcf41166735737b44",
"0x149aa5d1015e9f2c509e36e547de312d41fa3d5d4a8062b05aacda70ea3923ce",
"0x284295e910196398945ebc9090400de8e5c509dd18ab3f4743a5eb521bda7d66",
"0x1a1f21bdf16296101dbcba94854f7c4b05d206a1d08b8796e6830077ddf99070",
"0x257f8d5e69aeed2ff7e194f398daf84d053941bfc75fea450fbca498389b2218",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x215c6089e0a9a6256c901e33e306ac9c415abc1875a49add4de6d0429fde8234",
"0x2cbbb480fa68f33316f0d301f3cbcaa7eaea71e2784a0fabdccff2aeba9f718a",
"0x143619ab2212d1911a586be0f6acb6b8381e47b5a3e34b91eed83ff54937a34d",
"0x2385e3c9ae95a0459e974d29cf0e35f283144cb2ba13aa914b4e17ae5c988557",
"0x2bbe7e909fde4390a7cd944e0f309103447e91f3fad40b752733063fcea07054",
"0x24303758e4ea42a45a0419d88e426c95c68ca5811974c5b0c3abadd9c29d2b5",
"0x260bb40c5f1b22fb87dedda1706c608f78fde0e5b9735ad1fde63459244d4674",
"0x21f27302db4f5b28fe8845806f38ff1f0a04e28434a3e0043bcb57e65f6f75fc",
"0x16c95bed15dfc954a1a4ba25327ee14c5b0dcf76fd8dcc529027230e9c4a0d97",
"0x20996392773e30c8e64d792b010907d8848f28f691e8b2de13ea8226baea34d8",
"0xe20275c14333df445b794b515bd07b8bf90bd8035cf43cfd845976af63519a0",
"0x16422819af615c4a947afa3e272275b5d5bcd75d494042bdc81d84cec30f7f1a",
"0x16329eed1887886307c5a94706efe31795136ede8e9511bc42c77ffbdf22276f",
"0x1e9f59aa3535d598e32de9a4a370c6f4e5f8e6090a9efb2181560fea28519269",
"0x303df7dae20bb862e852232d75fb4f6468ab85a1d36472c3dcf567cbb233dbe",
"0x103c4294a67544648daeda2ec0a2bf81ec40e4c01d75d35be0a04fec32907b03",
"0xd9fb810fe920a795ae2c3dc1b9bac0ec25aa7df2e3628241ace688bbf78fa7a",
"0x235f2eded2c0024a03e1f050c1a32820b3c33f03445a830bd06bedc4654bd320",
"0x27fe4a10ee48d2ced432a47a2a6dd4083e4fdb9d9cf44ce4889b9c7d581ba529",
"0x5c97d4fec77f242636ebf0933f378eeb74467faab3477d6b8230966db1e9e56",
"0x17b0b7d570dc76bdbf3cf5d3def37e0a005c9b4e0b39803490c012b453ed60b7",
"0x4013b73ca35eb02837465c016ae8bd13994c335fa05de42835003ac53ce46c1",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x4ed491d2af18388da53711df4d29318125bdaec68f9134c1b3f5e3bd7b831b9",
"0x16e1f43d878d2cfc40e58b5e77386d360cd3937828d8630ac2e736de89b0d118",
"0x45f7d97cd4d95f8e4e65c183869d4c15d354db95e5334ea1a5f3a0c34ad3bbb",
"0x242af80de0ae9607f5aad4250667e1cd450995afaa5293ceb1f184cc97ef25e2",
"0x2d149e6319f8dfea1e2c1893f5afd8325013eb9fe57e79b3655d626e748d931d",
"0x78a606fb0fae37d1e1a6fe99977001472cb272a670901f0da8e5126b3ef0899",
"0x1548a537c3810897af4f919f5e48b512eb727f3c47c53cd3ffcd5e3a559640df",
"0x1e3e9d29194598291365b7b7deff55f05a137b343cdb74c00037051b96cdc202",
"0x2ae46fd5b2a10a6908761a50c2f71e5f944abf11b568e0a070fb4a4cde0e9d74",
"0x1d5dbbfd82c2f3704059a5e3bf3db7b7f4dcfe27bde2786ea26063cd0921cd0a",
"0x221089932e5ffb0d72b8d896bb8243ce3d6adebcf7bae4ee56967e2b34a63946",
"0x2a5ba9e0c62d377751d13b5fcf5d8e7ba1087e74cf277212405440b3a8fa55ab",
"0x1ed96d07a94876906d0828524563f987414b2a45b4891092481659e053c7294c",
"0x1619ca922cd3654f97cba5f102327d7d6a0695bb3af22e94e33607f545c24641",
"0x93f881501a90112f530fd9185176fd85475f3427ec133cb5bccc6f277a16adb",
"0x2417824b008ac5a7e819ea42ac2e1bf2becb58661528bdc20ef63cea2e355a7d",
"0x1efb091123948573d0c0e6b95a628a617567971c5807c5d3e08bf566a3dc874a",
"0x1f2fc25f030934b6115600b1453820c4c70f8b454da461bc03cf773d033c0fe4",
"0x263a77c0aa2edd316947006fbbf4b3cebf660809da89166c7041c52169764b61",
"0x15d37f58a9589edadb9923907f947842ef6fb4b61251f8373b973dd422a1b940",
"0x76d6d847fcb997548c2b12beaa6a39876569f53e881ce861d85d9c41ce40820",
"0x1e220162696cbe1575cc2f4dd2fed5117c116d52a9965b434ddd7913272c5c6",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x12eedc290453cd77c01e543e57d4d7ae0f6e7a76b576e880e852ea8b8e98bdc6",
"0xbdc3d78a5d0f3a92fd690b227d948ae6ca94d4342ece41593514efad7086439",
"0x2207296649856f043e2d7158f68f5b758b354cd022cfc04e811e1bbb4d3468d0",
"0x21430ade4c0144f819a79b2b6f849a968fb758f76a30f3e20b5f7999110f35f9",
"0x1a70bdca6f11701536dbe4d9926b6bea87a08f6f0efa754b1132dd4e123f7c0b",
"0x285d8e90abc1496915dfdb9e2a4c4d8c42126a3f15f4bcc1d8dc721fd813fae",
"0xe57676068d4b4e3a856f2cb7b22531f5e51bf1c6f09e35a645aa8953bc45ede",
"0x1053abdbffbfcdaabe5b794ee6bef5dfa367d198e7644962afc90f37590c025e",
"0x11660d7d44db731012b02f55c5a19e4b1a10041e0085aff26ff088797f54a057",
"0x2bbee9db0a412ba731979594cea45cdea2a1ea40c90bea1f3ace29d4df767920",
"0x119c59a67e312da970edca383f4e1cc1752e7fec6bde83e437acd6136e4dd63c",
"0x2a861198a0bdb354abc6d273b4f13854cd31d745e627c21ea107620242a8d233",
"0x1a8ac82f57894230abc7f3d010003d5914170d820095f3bbd01e977142351f12",
"0x3548b5e02d4f1f988144421ba37cf75fa0963b14c2ac961ac494828c1e655d0",
"0x2cfe3bafce8aea2bcb3c145ae29dedeb9ec7123b4f3295bfa5d05681c366709",
"0x274f38fbc034b51b94982df30832c69961d65637f808541c50a395c8e0dcd32f",
"0x1154c2e042ce659dfe447ef58e09e4514726945cc5abde427500fc5411a8a365",
"0x2b6203e305e19b7730ed2731f994303777fc1c2a52422d929ba6488c2c164c3",
"0x51917b944afa399ea1e621ee2ad62ea629a35d29387be06c077b79b9569e2aa",
"0x7cf3b4f4f274f711a4bba652eae5fcf6c950fcdaf92e77c118dddfb738d9ba7",
"0x1184568d03c28368300bf5724d6958355470e629221f5221676f69e22b717352",
"0x1857839c2d8b0d6d08c21279cb8a2cfe6138df1eaf6649888cf540965ab3c168",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x26518ee75c590976af8e213b42e5988a7185438e593c9635a28ee89c60bac357",
"0x23645455ddb929ee2b596cabbd5f40df59e219b4efd8c1fcd4fcb67ae42bb5b9",
"0x16d0126c2df72ad69f419c74741165bf6e9f6c2abbe95a022efc903b62d25ebd",
"0x195050200adcbdb5e72bd63ed3e1d4d3d54e4cffe5a5fecd932e9c5684021dde",
"0x23c26b8f07749697bf6982f2e715c91f541b173fa0a3e8dfcb6bca01499134ce",
"0xffacbd7cec2233ce5a4b911dbcc61f87d759ba6e46780179e75f91ae5a720e9",
"0x231a2beac360f4917f433d7ea9eaf185e270778902e6e090ee5e207fbd0575a3",
"0x208cee18da850a2625d1500f835a216ecce022c8b08235c387b8cb1865ed8a59",
"0x2df938f310cedf2df8530cc3ea5ef1254ed966674bc08ab3f1ea148057b6c9",
"0x5cc71f44f496cfe8d69850022a141852f7dac001fdecce67de6265b69dde3ef",
"0x1e04cf375796f4714e6b51552107036d16f71fd0b77e357b61a2014449ef845b",
"0x177060e5eea7e3b800aee099735b074d3bee92ac18918a1be042ad000f861c17",
"0x27f7183ac04ef3b5307e450873f5a4cbd1ff709677de1a3de89476a7562127fa",
"0x272c4143f3f48b711d9e78964d27fde0614c2844861b23c1ba5ef6321fe64877",
"0x17c29df44b208e4d5b70aa3b57c92d0c65e0c4d780793000ab5b3ce79e90ac48",
"0x8426585ef062b24b9c4de439e0dba038e9d539a54ae8c4fa6554924c0f6b03",
"0xafaddc71d356bb01e344c03336f6c97fcf6c0ed9822cff5114e85b7fb18f3c3",
"0x27de3d9113a625f578e74566a25e54bb1d311364887d455699d89e65379e11e5",
"0xe8ae5a0eca1465645dc6b31f66d8356d6fcf434daf1cfba59ab08a91417e81d",
"0x1e41011401e99e5e548f813eb6c091f1ed7d03c1005affd1984e0149a2e59836",
"0x2fdde0adafb47ce46bd4e5d31bb8e840e8b2edded884c6c0522a0a323b078403",
"0x6d047a14724da146ae1314d38a559303e53808f6ffa90af4f2db3c52d2946b2",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x27e98739b0e44313ce32f7c5b552a0814abeb32da96cd82de769b4d0f5c94c25",
"0x96c0e16b0dbf141e6bcfdbc0e2f49d013f35cac3e4235db39c5cb35f96a5e83",
"0xa5a4adbd74977d24c7cee2d6421ee7cf5e0534388e5f9e09b811a0544d1ee3",
"0x17939f4a2fe98de1c4f37b079b35e28f9fd918492317fe59311ee844fc3e773",
"0x2fad1489f14f53e5380db86b119e1fc4ab02fa84ec4b0f283bc28cde6b738aa1",
"0x2765769537137039a892f1c38aeb083dc07de1b728a580fff63f9bcaaf455bc1",
"0x1e31bc0fe231bae89cdd1ee8c3df3d8b06da2f88825e635df9bc7ad5c128f2da",
"0x1e516c3b9ae36f836ab9824f1c10b86a622b2f49f081cd7a50ae5192d296eabd",
"0x47cc90a4be717883e0189e898fa7d9f1dc998f91d255553a394b6b798326043",
"0x1c56d70a6472d972e35698eacd7ba8d40c9fe9fc9b04927d06404ae10ba35f53",
"0x205c05088541f74e95a23f5c7ee1d9913978e98fa759b621d0d2e3b0d57c5807",
"0x16874f1578735735add0540440cb042a966b8ddf3e51b4d812c673776bbc47c9",
"0x240f602afd2d97888bf4b64b23d6e44cec734a2746cf4580c430f72e46feb453",
"0x1abe8b11e0bfa0a5829568b66934e5da83b778ecfa452ee2a6b7140e191e7b98",
"0xc276760c90c65c9f228140185e42f3a7806840c8825bce562d0766a06dacddc",
"0xab7dd18d0804d394424f2b9e37439eb4bf3324198c44e7acc78d2e595d7dddf",
"0x74abe46b34d1daba12f1e78e3cfbe69a30dcc2b090897c040564f023ef7b9e8",
"0x2f240ffafdd27616a2eac36181dd8e9d9ff82f62b54537c48d497609858280bd",
"0x1009c918f84e7180e4864c0e20912026c62699bd562ee5bb24a00fd69a30332e",
"0x9e29496159b70b34f9707a8de9ec2cad82369b2d16885e98bada319d69e4512",
"0x21afdfa37d1b9218daef0b7abbb26e4d623f8ee412934fe8ebca9d9fcc2c6672",
"0x1ba7bae9ba2546ab2fa904877151066a9c5cdd44107d8aa829ba8ea0610b18b3",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x2048256f57c9c8c24337bbfbd097c2627dcc0c2ae00ff560c3e82d32a55a4d4a",
"0x882758c559a9a38ed60d1113da22600ac3de62a8cc88e904342dfbd81f58058",
"0x54f6c1185a58025ca382d00657cea60c9667682c060fb5f2fad74f3d070d5a8",
"0x18da33071f0ebc4b2962d4b061144009608aae89e8285a326c0ba8eb0c370153",
"0x27102a58751c96a0afc1846801937ece25f59ff76675758d5388cce403ab4af3",
"0x234028cc85b8345eda398be9f3fefbd6d59973ded29c6ee52fca866a07b1f7a8",
"0xc3762675631dd7b529256732681b5b48ba5fad34019a65b1ef191b9211bbcc5",
"0xdb907e69984fa1f803f9f19d603391ec580bb3dc8357d170e3d4dbd9c107e6e",
"0x1c5a1126b94c62d06a2b2ec580e5e4a165deaa7cd1bfb0872440de9606900dfe",
"0x2e3aa301ead4fdcb606e9aee72ba7a2cb90ddfd72162ad9478e94699f776f6c6",
"0x279d20b786fb6a7ac5d4fc5d78faf9c47a3090bd561b2fa430c5db64a552396",
"0xa951ccbe5d7d13404cce3fe60751477ce1088102dfa3732e323d055cf38340d",
"0x26a8d4b18704a5aa8e41ea652ce2f60e7975c0b7eb478abc55ba0ccbaf8149e9",
"0x787247335760468918257e7dbb38f97dfadb60256f603d51104f62e4e662953",
"0xb0a7b524cb7c7519436167aeb4b5b185d16c110c2b36f162abfca872b3f489b",
"0x1efceec837f27a592824f15644f3889165bb1bc56d5566179a951333b255398",
"0x2ffa74a07ef6aa2579a1f68f1de64b58eec51380c7dce9b8966c789b4777fe01",
"0x304582e03ea48dbf3043bbaf216ea5970d49e23aeae55b774ffc615ae80d1be3",
"0x1fede6f02a4595564cd768fd400cb5eaa28b2ba191240030e1d757d6a019537d",
"0x1e33187373750a7f284427194876c8ff05ee7aa94d5b3514f6083990d4ad0561",
"0x1c5a22361e914dfae231d634ad2c502b20e84feda4d506a1b7955128e9b24bb7",
"0x1310273c02734e60e3b1f4c7607a48961c3ab97ed9690c2b26c38e36cf56361b",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x2eace5036bbf892b106d6ad25bf3acdc3c94834e60cd380a1815cc4620e79dcc",
"0x2cf399b03624f2fe3ddbf48c2fa326e788f3b6e4b4469ef0d3e6c0cc241b7ba9",
"0x22d41054830f4b29ce6882b49839e9942ae7a1ae84b6d366a98f42f7baf9e188",
"0x15ae7d83075b047fd367659fb588806f23b6be3b4690cfc3ca92c61e71f5c765",
"0x2825fd5f33d362703d2fc902578dab75ca7076ecbbf7cc916d4ed3dc43b3a0e6",
"0x12d12504ba541ca2b28129a673acf96d4f246e340574ffcdf24dbad99bd572cd",
"0x29653490a05368030d3690d4497e930fd4370b0c89d5996b75b420ec803189d6",
"0x21188ecfc9b8a96b6dcf99b67bdf3866314046229ec07c8767cc26ac6d2bc169",
"0x4ca521fed16e4c8271f4101514280093d189d84bb4129d2e54bbb1508b72908",
"0x27d867a046afbb0c3cd2eebda088e476752b08c462fa1a91effa16d22403e4a8",
"0x1e754e7744482f6d43e6990f631a35d9564f0485a116ab971d7c1ba0fc6ad629",
"0x1dff12c679a235887e6c896304b46e3833f216398da1338be75ddfba2d77bcec",
"0x1029ffd3ca881002e4f00872e7af3299d9ae979a0d9e0236d8bc4a6dc36dac09",
"0x2099a9d66b52f0ff88a110bf3247146dc2a39777bc01bae0ca27f3b3ba3f1f5b",
"0x212ed3e424ee90af48f2dfc1828a78e4c50fab366f51ce3fa716164c89787e85",
"0x3fe48adcb5e56246e6cc8968bc0a62eba94984a1472b01f5a4475628aa38cca",
"0x2d726e790f68ce53fee0841e1a8b8fe36b8a756b3a0444ea08af369ab6ff809e",
"0x168de57f2f5a7a31b7b9c96ccb8fb7b33fc545cc19452cc7a5342b70cff74ba8",
"0x1bcf256686de35f672d4e52cee81f74c552e08099b3ecb8c8e8348cd3f36f2e5",
"0x6f7d1f39f8bc8fa314984d88fe0283e64b452e260d4745f9514a012c31cc946",
"0x267158ac0a27dd2e94f422285ee979565877516c414630ca5911efee1a8e311",
"0xc4d16ebd4cb046bf8e0e7fe3218a3f23551c79e8388e65b1c7a557e2034f957",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x22e7f291772140723c33a8ebfe15373f0468e295d1b724f6e94d522abfd5f535",
"0x2c5cfb9974cb2299069f8e21329d54e5ec4f6b837f1727daf66a21af858b56a8",
"0x27a1b5dc716f8f70f18e6eef36ca15ba5df295f9b6023d0c8b860ff0948ae9cd",
"0x1510814b5e9ea61f47e924bf9b21496b391e2efd97554b057bd9d6905eaf28f9",
"0x21ce0a7da429a54515927fcc1791f25c658766ce48934cc1937dea204f64996e",
"0x2e2617468ade83de353a5a7cf3ffb4aadad12b05bcb65cd570c7200059956b87",
"0x284052fe9e822298ea89afab784617fd413448012b8a713d8b8db7db9d111f",
"0x2f1299ecb664233c145d53e9ac62772c9f917ef5fd354f595fd151a739610f2",
"0x2a89d81e36b4e71698dd2968fe86c8bf4acbeaec381985f3a5e67a5ea1318d1f",
"0x1bd908426f44f80f02514742b4860a72c00ae90ded7aa472090e5c1062c3e764",
"0x1a43e9dac11dc11ac20f3cf1edc5eb8a25dab4389d675d9322237a05cfc6b95c",
"0x2692699c30d2cfceb23d589df2a5aed5a8219ba6c436d0d920033b2254ca6a28",
"0x28857f7da86b117cefcc105f4e504eff5f11dc71e1e3718d7ab027ef6383aba9",
"0xdb4febade50738b1ab87405bfd46d20cbd4a222a1f1f8627752cf1b9a76c6e3",
"0x18724360a40cc50d7046eab1f3ccd6ded2edafc5cb4cbffdb9bf734c1dff33a1",
"0x2187d4118b5f752636e205eb4982247b95dab037310349ddde471c782e60fb2d",
"0x709ba7ecd374680134ef58e9403582339e3a55166f7f3943f281c57a275e588",
"0x202fd3f05d2bd8e2dbcf6e44d3ee0db6cf72ed53b00b7f0785605d89d139ce0",
"0x9a760b6af4b4eed3ab69ecb0498a75fc71b815b6bde4a569d39b6086096898d",
"0x2218e6abd4e31c4e2c4e21dfc8a266e946c599fe44b9813f282ef3ac6d24ece1",
"0x3fce74af211c178898a2bbbde84568bc09b8c2228481f7ad87e7b1dcde6bf8b",
"0x2201d6ae9382dc02c5345b141db249c120b288860ec8f99d504eabe8e7f23573",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x17b549a98305619700b722d1392e3f22f3515c947ca97bde2cd79a761dd9a7c",
"0x1321911b787b6c29f58b50a53d66c5f436848103f333aaeba5589e43db1208e0",
"0x9ba5765272979602f4c59c7d7ce1516f48137e61938e30460d262b22efe1fe2",
"0x1705b7f07f5aabec51703713714785de6f86c899d97f3d89ab53459801ad77e6",
"0x18ac4517cd9c3d9b13dd398e5ce614022042b3ccc82fc8bbabeae938af1e896a",
"0x2d2dcf4a755c21bb49b4028fb3dd8bfb641a08f00d045285c0ca64180234a26f",
"0x2420e764bc7ba63b706b6b39a10c092ade7b1873fc1ae1bcecb8374934383116",
"0x10eaafb36f88f19fdaa78ae39af01dd9dd5c3126eb87df41aa55ac344e440b2c",
"0x1adb582c6692385a8cefd33e6ed3c7f23a3252dbf4ce0ea80b2cb5d957844a53",
"0x17b3f1bf0717764c2f01570716b665e2ab308ec61b511dd3e65d6bfca9030a1b",
"0x27953c6c48de10d405e8225bbcc73ea9fbfdfcccaf0a3eda80ce4d7e5ec27214",
"0x15e794fec75f7c4f7e63dec570cffae247d8bbb1d0114270d44bd7ddb5ab3c80",
"0x40632b4454c59b282560f814afb01e9f60c4f24013cb1a8d450f2e23bce9d5f",
"0x1e9c0e04247d8e1f43b71350d991413eefb67c273a3ada726e15d81737717a6a",
"0x2f8dc731a366ddd2b76c0bd1418bc03b207d7065556f4796cb325b8dd1db30e",
"0x24463e539fa612ef3028038bdadfcdade3c8475e0637fa4b1dd3ce10b0aacbbc",
"0x28762b41feb35e6509ad33ea77bd88983e6fa85ca2f6738a1a1653d3bf54d52",
"0x247c44be326d67af902022444d80ea90776936a81592baa6702002b27d6b0737",
"0xa8ffb6524fac8a3820378ee0c9adb2345fea97112c2bdb9a57dd3b04be7f63f",
"0x264d334f14801fe44177ccf924d22e91f3d98e1cdf5c6388b735d60fa32c7000",
"0x1a96bd9bfc5432ea29a24ae3c46b126769d2d8f05cca70dbab11711117f2ed6f",
"0x16542734a0c4983f8b8203a8e67f1c2290f7de67a02b2e4285bf5d1c3049eb14",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x46208656464d4ae0a420f4aebf63b775d2974ee08535ef11014d4400cca822c",
"0x15f6a9ef383741e16882272bbeb9ab135f295272ad7e45a26e063aaf656094ab",
"0x40a8985a8323dd3b2ad3c285159f2f158db48b9fdef72c8c859a462d7f117f9",
"0xb9b4c7ded97f1a7fbb1dbccb8fad09ada8183cfedb790e2f11c77074634a80e",
"0x10700446bc61701c9dd17bc4354ad727247a997ec9e541ee42d9d0d2acc376e4",
"0x98a404fdb1c37a38842752a31bb1d2bb5112fb422bab40a1b546b97c719d923",
"0x1843b850d5cef8871bfd1e31525996416a8550b748cc9fd13fe42aa1f7193bf6",
"0x279c28f81499a1d819fb67132c84220d124b668cc206dbdccefe9478358a97e",
"0x1d6fa109f9d33d9e144c5b25fd5b2f189273545fdadf88af3c4a7ef1f7189e35",
"0x1e89c2383d920c8a80837bcaabc2ae9060bba4a520fc7eaa7fa5dd3dfc18d5ec",
"0x180670edb0cc070ca05eaa724cafb4ed020561150ba343ac5877fd8585edcdb",
"0x44a14d1f731de503ecf2a6438ed17ff8a552a01d9fb66a36fbd08aee8a27a6b",
"0x1391644b83aba3c7c86a81f240efb147fe4c1c53e08ae3d3b0aa02fc1033b02",
"0x1a9373fa92867334ec17aedf833ef19fe6f67a68d031f7a088091730b2d5bc91",
"0x1c5c46a6852eefafee39b8f31935c3325f450000caddbb35538f8dfa02b3feb",
"0x185b3aa7a434a7225057c6bcc8e68180dd404e58e3f0a8733fe64a0c1d534102",
"0xb562eca994127ec94b90e76255955551cc1d6e8412918f9aaed138e19cb903d",
"0x1ab2db0ae479301dee234d231988298fd46bdcf3d1ad8cc11389ee780c0af1f4",
"0x2ec8c3feb4e03afb11402d5929fbc332b5bb7109fe326a5af8613dabe9a6a94",
"0x4dc3fb12329b17a70b760ae75d620133889283cbf88035505ffc97ce4641bc9",
"0x1297d2ec92df98f1ac1a318dc100557237dd9c4a96685f1d58d0fb61ffc4c094",
"0xa84c5d2f491a40654df4992df98f681f157bc9fb4a0a6ac1aad9e0e994cddf9",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x1be6b03ffb55eaa0fcfa4ec007ad655c776ddcd62e7184dde03b1c90b1af001",
"0x2910d31a4ab9e0aca79eddd220c56905bcaa2dbd29b6d7bf389a4c50666219a3",
"0x2839abe3d67b01e69ced2af2ca20db9b2bf359230d7bf3c6bbb79232624a57f4",
"0x2d0c50609fd4832ac428bc6ed4606dc5e5cc48e9965c600c81325a8d4ef87ae7",
"0xa9180406884b203bb35bafbcf2f4abd0ffe90aa9e3e1a82ceaff556d2e22dcb",
"0xd5e3761475ba3a3d55133eb45a945042ee26b747e3eb42a077749f4f3676e4d",
"0x811919e5bf03ee004979e2164e244f1ec510eaf5fe6e5107e5e6f4bd123f77b",
"0x23d92b35fed4accbdc074695f6d1393c5c2bf6f2167fe239b2029d56579405b0",
"0x100576c563ad00ccd2b07afd817dd2f8dba2535b5c38de7bafd08691b04933e7",
"0x24cd184d143196317be3f594f8ea091f3442abcf3647c50be545e510994dd90a",
"0x128748993a58cefd65bafc84f486488896bcc8088006a3f7afacc28afd6fa380",
"0x126980393d9f697cfeca3c8cf5aa466cf7699c7b24ed1fe2bcdcb3d98e01eda",
"0x3d53b1b0659c95cef35a515696e13d67643790564a80ee3fbe3c5b2ff7dbb69",
"0xb1cbc1218a01ccaf22711fcaff805b05bffc45d21458e41527f06dbf423fb10",
"0x2d2b944d4f9dfd80472bab4f0ce520fca635f74c8b9f1e1ca0fd52ec8af49ee0",
"0x286ea70600778faee3383939faead69a24821fb400920778c7529a1b1c90f54e",
"0x1238e08378044550a836bcfb7129f0f0d6253eba654e96035de06513f6ee738d",
"0x20d38b283f1f0abbbd99af81d226cc6503ad86ea1a2ea8e9419ef15a74f8ad57",
"0x25f5d1c94a4423c994f81d1f5726c8133c5d2419fa58f226a94c09b61815c2cf",
"0x1ba4948c72f33685df0f9eb2f6678fa6bdde0ee261faab0a63917fdc30f0973c",
"0x2a306087a9453e96d0007ac70600c3f1e08b4fb5cef04232b64fe8c0598674cf",
"0x9e528bcade9d9b1e99ed53a6ca87dd8dc46140d57d0699a8f120e0c77af65bd",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x2a779727d7ab06dbd553a840294589296f3aabb6a314afb5b083f650e39db967",
"0x11aa7127dce97c6f4beee5dbdde1d5c7de812e27376e249f41a52171c108324c",
"0x2e6df565cac73a4a04c2cb1fe541d9e3df002054622c790a6c8c778e484da06b",
"0x224c4dec007432ecea73e548cabf60846d0e6b72ed2f4c907dd9e03dcb381e92",
"0x2095194e2ecab4e0e731ec6e1cbb0aefb3bf646f6e6c804be5971167ebc58f76",
"0x2ef057063be57233d59137db76c7252f1d2cbf5f3c4c6c8ccb22203c98d6e2c7",
"0x15185ba1b9b8060768c5af0f70636dc62fc29ca5100d76fd4f9c4767e8f87fb4",
"0x1ba274d2184bfef2d0be986fc2d41617f43d29a30b328b6ce3fe41a406669532",
"0x27528f734c66543901cb1afad7414892ae14cdb75ed5fc59fedcfaa399fe74c0",
"0x1185229ce9c183d7dce8a64999623a469392ca6d2e4f72bc2b6c4772a6b04896",
"0xb36b20c33f83d20c1c49c00c65ba85deee8345f8563df448993a99bebbef6d6",
"0x1ee843386b3aa0c38471fe7c60b638218ef9266b542a9b1526deb8dc9aa3c559",
"0x107972f77e0382e5d3cff5b6858e85fe6ca29cfe95b60159a9dba68cf55ea21",
"0x2fc46021b9841db9dd3cde3ce58785eb5f5b9600c8d5c0f4086130cbfb261f5c",
"0x22b8c705b7b675b691343c7f19f68e23745e55aedf5eb931c37bd89563f14a8f",
"0x1db0aae1de8a581770c890de5e66c763301cc6d522ae042db366f330e87013cf",
"0x2b17c19b2ff64a3d9a5bd5cd0d4a21cae7b7d7c899228050f593b2da46652d3",
"0x1e3a4c2c9686927495d6cc3c6e90b519deff0b55ee3124d69ce5161c91119baa",
"0x384603dcc8e7748739a4f85462cee5fbc25345e02db231f40e50a851758452d",
"0xe842866ee1599809910ecde3d7ca9f1d867f96459985ba119b51066866224aa",
"0x19c09d8567e90a622516fd1973ce27ad5fcb66aba8b248d06de9ea306a6fb2c0",
"0x134176d3a40f1bcad9f536bb92b8aeb9a4c3d424b14cdec9beed77bffbe754cd",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x1918c06693a26c41f0025c99e93ab46213ddac227215fbe5d1972dcdb6265afa",
"0x2c2d3ad00fcce75da6a5f510d5952918f446016a8fb4b1dc41af9321803468f2",
"0x18ff4731631733dd9f048503b481b9b7abd2ad7dde5a002d8e0ffc425f574c09",
"0xd14a3159cb458b4c5d65765b15c56653be2cde202d8b285f5c2cac7e01d57eb",
"0xaf7d40dbf6a9d2e138095f1499e6505c326422282f1bd30fe98d19590298e96",
"0x1f728b62200f84d56fd916f1033868066c5ff9eaf81726ac8f43f08f311bd806",
"0x2f1509a804a1e612847578f49ef3d4cf0067adf3c3575dbab3632f6e6e3dd5c",
"0x41c67e015b3770721ce4b96ae6219e6813ccffb152dbfa13fd37d25ba812f06",
"0xc336783fc41679f67e808e2eed1be9cda3fcee2b04394812df95f9febd467a2",
"0x1e34badeb3d92a88aa84decc7b70ea344c8852c9a17d3e0dcfcfd49f9d103548",
"0x2539fed64ca5f8bbd4016404921a292c7652ee3a7fba314d675e02ef29f01095",
"0xa83942d60d14f46c3c9cdaa90390faccc4fcd2e9c3ec8cc06604cd51ac820d6",
"0x2724f8dfd70e0094d613f65f6b48d42e22a961d06f589ca1a64b74e0ba9af8a5",
"0x226e101fcd7f365ac33c608817ee6a4c143504927affab95f4d7f95da55983c5",
"0x295d81ade71715f0c9071986b3771fa8621bf634006463df3b53dee9bf37b189",
"0x14aaf0e78ca5884fbdd6282dc2a2008a1b6165adffa6e9160a9e36190eb81afb",
"0x2652e6b66e323877eacdc4e0f32dc9f72d692ae7501d7fed6c96154529f45a39",
"0xfaa22bf6ee7ed51ebb087c35bd33ed34bd4474073349a80e9c9654883091a95",
"0x12bd1d8d922cb20e1d0e02d066b120f26a1979f4374bf0fae43cdcc0e5a366f3",
"0x158c1a5307ed0d18b58986c274968b23e404084a78aba5687e2e2c4f009606e6",
"0x28b5ba99540925c874c6b815bd7303dfbf774c5e1012ef2b305ca47559f597b3",
"0x2b845d95e442fcc4bb8a49be773609957b578e19ee28baa880226e3f911d26ef",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x1b66e79c663bec66bf23b5cbbcbe9bac308c47817c3f242d3f66b6d565be3b9b",
"0x79f775f411c9c90149e59e6a34d6f6f47947db4337d9d3c18bc4b51d4cad270",
"0x3009d6cbb50dc688b7404cf82d589fbad43d0742333927bc049e48da6913e606",
"0x1fc70661054fdb2111e49907222387ad311058d73c0befd6314478175e356942",
"0x1ee04e8ba0265fce330585518894029b62d9bd50c9d0a6f87f1280e82859e9fe",
"0x644f526b432da58421456fd00e0e29291e8d0df2ed27626c42d503c62e4fc9",
"0x27e99dd0f8fe2ca6883ea897815b333de616c56c483c0c9e45283067dff3c4b8",
"0x581ac976cadd2b1dfc14d8b3cc604f1e8e79dcfef24b8f67032c18b90c17e9c",
"0x6750f648570d1eea536bc3842e8a9673cc564c9784e57793475bcdb399457fd",
"0x15822b758ce9dd864fa21222839e7eea4132d1b800819ea095a6465d9ce6044f",
"0xd9ee290eeb8ccad8fc7bd054d7e10ff3eb0e3615f770151fe6a276d53da7738",
"0x2aff79aa26d195d6001c0805b35a8c05a08b59a0e819c7689f176ab29deb33fe",
"0x237fa4d9fa2fa84b58ea68d75927afee778a5e476073a9b30d6328ad62f2d807",
"0x5d20936e308b6eb8373a899e602831ae0cb091abea22cf044de6f0cbfe6723c",
"0x20470a9f2d2a3cad5d2f92c333444b429333625d0e07e064fde8454fbee764af",
"0x2e5ee062393b836f391171b5c738e5d731de49e833031ce97055486def2d6a1b",
"0x15066a745e56deeb113b9dfa9e92ec1fc4003f8dacebb4f2f0a591e9491a96fc",
"0x15af3f3747ee7d63738b4b137be08c44f0c90448307d1d2d97788fdcaf30238a",
"0xa9db2ebd67bcfd0c5c2e2baf93fa206537a0be5e295da9334c19515018d4dec",
"0x9d819663eeedf9ce5b97d71abcaa195f6ac0ffca2e4a99d89510bd29da37cc8",
"0x43e45a7ab55e8ed770c8bb140c5cf98a079f0a286c76abd11486adec2b9a69a",
"0x267390f339be917c18588ec7f9b53eddda42bbad0e44351d1cd46421389b06d7",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0xdd2adfb2aa3b4128b087b5250d5e754672ef02ca8495a5b8f9c2e51d12fe27f",
"0xe44bb76a256740fe47a818596b6dcf40b9db85c744d3701bfb808a00f7ccbe1",
"0x68a25d2e27da4305caea7b47ed35d9712720f654d72d094e4d9b3796ce88a27",
"0xa6624b2e2d3551843723976c9168b1acd3ff196804a6cfe61555ed0048c3554",
"0x2830c3937da98493bda628849823e656aea96f309f417ee6a4907009a4957fe3",
"0x1dbfab542ad1a8d1b064c18f2da82b6e5320e8285d33d524229aed44da0fcfcf",
"0x12f049967453bf43dacf198aaac17d184f44850bf49820b37f36df953e57b08b",
"0x2ff0b4f794179f6cd4d0431d7aeca0e320270aa3b0e3f63d832f1830ced770f3",
"0x287045969073b1ba8007b65f351ee152d9bbb0e68c75fcf8a3a3e0dc9cb9935d",
"0x88750a390f67a5b19a63ee69e6055949015e796d41a2150f8b83f58c1086b4e",
"0x2a1b684b9357c3b9b675c9a56d3690d3b101ff4c50d5b7f97d68d6a247ad6e3f",
"0x924a953beb10fdabf6088068bc42d18c47a292d33fb12b1dd11c0942051a5f6",
"0x5fb81ee2e1ac5e198c62ea767270d3b52af1e24d4d6857f82c2ef4b94f39740",
"0x1afe1a783a2d68ce8f79cacb2bc57502c6c5ec9ac0bbe35f55b34bd4d944e15a",
"0x128e66b9d177d588af9f9a10ebd195f03030cb2806560ccec1c0469ece8ab9b9",
"0x2a89bbfccffb647312f31a2b0b68d731f65279273447021b716f8d7d1b9eddbf",
"0x2d2c1cc8346008effbe81b219d8dbec37bbf2a6f6dfeeac3b979b761663404ed",
"0x2a10df4948ebb56a6d1edf6b2d7bc7d7bc3b3a6085565a90bccaf53739093eb6",
"0x29f0a91579b0418cddeb5fe403d13c929178124713655833284ce4386673625d",
"0x2d60032c705ab2c8e457ee0d225acb206a5cabbd75b088d97656de6df83db165",
"0x1adc61e3889546408f21d1e1cd9533415a7cc177598464799da86e31778ea854",
"0x15d24ec281355e28a085dd996ea0c90aac7efb5d87f9bd70a2a6b9db6b50b7ba",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x1be40669c4305af08dd9cfeb05bc7fcfa40b998bc74ffe11302c4f5b0553a38b",
"0xde0e333621fcd0fb11e36805f9722b7d5b53bc39cec2c63a02ff853f30c04fa",
"0x20f0930ce2a982f6372e84ab5310be3beae1b0b7f90b8e562c26c2e757702d47",
"0x299a425dac7d3a4c877808a7459597fda5984c422b6a994d81e195f30385f8dc",
"0x2f3b6c085ecf99a58b7507dde8971a225c511bd6f802ee3a6cacc0530e8a33d2",
"0x1dbfd1be6281a5c77b4fb2c7dc937a25dece301dd371ff67769ec907ff76c72",
"0x2057718828a717820912bf7aabe85d74d0e759d3357db223cfa111b82ef48f32",
"0x2634e710d328db82ab3d5c000a6e16e4cab4cf0b5c10975bf684488df5d7767",
"0x1508d73e31efd2a02b601a7151ca176fc79f3721fa686f737d66b4a43c1597d3",
"0xab1c757a2930fe704ad42fd54b19104397077d5e52947a92f810b0ef5d87871",
"0x9da497dd64c5e3273900635d09193df06c1d2426a0fd73d7dddc99c18daddf2",
"0x2381572e35bbe9d3fbdb3bb1f1963bdccc535817b1d3c077e51d7fa9cd9a6cab",
"0x1435a49f928494a49e2a67e4028810e23b7f26843d1e22e2d737b40f01da11ac",
"0xa41cdb54589156aab59180023dd35374103e5a4bbe746ed8f2fc3ddb26f8e25",
"0x14c484fdbe36491934a1eda09b63b86d803e7059cd8e3314e8d774b7910a7cfc",
"0x2a77a4002da2b4e2ab43232ac86e8fab1586b84ef60705d4f5aef26aa5421749",
"0xf63b8eebf3c4535bda0b094c007bec3bf0ebb888ceeb957858bfd41e3b33a49",
"0x1277d3fe5619089508669b1a53372f2f10ea0acfd07e684219b7526be3566d69",
"0x242bed90744413a413be2f93566487aecf7ed35f2f6886e79b95fced93648d2f",
"0x2f421f7536d6fe02069b4a2be1adef885983ef7ff87af5bdbb73904f96cc7044",
"0xdcb8d37d53a5df0f9ff37d9f8e111e005d70c93bc23557f6041711a167e62a4",
"0x2b8d52018de42ae27a896a6100b02cbb428bcef7fc95c21e0631a0edd273ecf8",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x20ffc046123c9e7c161ec2fc0033671938b1bdbbb51504bb48a6bb7691f867c4",
"0x37fff4149f4439e438ce162d27ada4858d0292fdd5cba6ad88b72e73e552b2d",
"0x1de8c8e615fa608fe89f596053f7f2aa3b21158cf1116eb6bf12e98bdc5cd339",
"0xbe3251cdac6825fe72f5f701c19215869c21db3e146faec1b7d83e291deea6e",
"0x25cc68e0156fb406fe6a1d01bf926214705937bbb2dd5af7d2feb70cda04b273",
"0x1e6d41a49f875455a20e395c2f5466ac44d906c5b77e21cab176934d6ec92fc5",
"0x2e67c91faaf0d61303858bdce074a2f61220d62977a4d6963640808413273f31",
"0xd12fb42faa45cee5774d38145639dc1393ec43ceec5d54b8d81f8ce3d74cb49",
"0x23e70a4146133f0a77a4e1d743720692125531e4b83edaf6cac156afc870df9c",
"0x2df6f710ec27c2d652198613afc234f4c6d65ce1cf6b5488b3984e0976f75cb6",
"0x195ce59e69ed9141b51479ba07aebb50eda0d40c16335c1dc3371581b006b9d8",
"0x210f8fd97f1707c4ff9610daf5bece6fd2a7e0b4c61801662ba3aa177decc92c",
"0x25f1b7680e11f44ff74657d2d3bd43aab044798def28b435e75686606d12aa67",
"0xb2c75ac5a5fb6d2b4fd51256d3aa84daf97cd4611e54b1ce9aec26e298bbf88",
"0x78398cda47317311211740262c08710b86d61c54ae55636a4d15220da5b85e4",
"0x166af5abc6ac2210fc2e48e17a3426b597bdcaf849cfb535d3a4a83a16fabd84",
"0x27194ca79ac4773ec964accb35e09bfaf60f65fec69f6c53a45ab6a7720410d6",
"0x10c46d3c254d57f49a985c74732f27a402232da4419eee8d59c39fe0d25674ff",
"0x1621881967985ae3b969ef554ded7e95027c80a3fd24ac8233b7204c46b67b15",
"0x28e893994343597be2f4993da693ab68a1b6530fa187e0708e6dddd65e19f65d",
"0x5b240574850357b93cf99c2a4fa39529f34cd568be5b51fd6bbac19d66a13ce",
"0x2a3e91c0f5583245a4519e6d5fd37530ea97eabdcd9e0d2655ac4709a88e6b58",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0xbc9156ea781bb2f4a48a6971a1463c341447af7640c0dca22fee678aaafa67f",
"0x216532d67a620605bc236aa3d9967bba132c18ed4dc9fb1c7d0b6e414b69ed68",
"0x22ddb91daa4a4545901d12772b1442f5ba4e85eee6a77637fc31bf513fb116ed",
"0x2683cdb3a1a277aef9c2b9cc42d9835ac8731f42ee8c1d97c91843e330cc797e",
"0x2be49377140f55de27dd9605e7ae0438bea87e1027be1ccbd27547bb1882a71e",
"0x3aca5d3892e4e23a82e32970ae06cf7944979744108cd4014495820f3f3cafb",
"0x67c57ee42c925a4fd7f0b70805e871b1dea5c0c64eecf286f01a7f82496d0e",
"0xae7cee32928e8bb4b2e5428f6ed56733a955dbb415961e58bda4537603370eb",
"0x270c6be726a888900c325fce8361fee0766b4178288e29892e43ac4bc5a7a53b",
"0x2dc8ef31b5b489de3a0218cca5215bcd23860891d4be8eae01bd6b6a9fd89e0e",
"0x19643edd20d71982a49a09cb1e0db7d981d928413f5aed74a20b339a45cb3a1a",
"0xcac86cfd70c7bd0f964e2186efa830356866dad5402655391b164da07230607",
"0x1e28a98366dc2b5a1dd651c8cc239f7d6a65784260e4f99d5f22d3acbf089df3",
"0x65e579467ee3caf9abf6427ee70e3f04350efd4f240a721ecd614bf510a6d15",
"0x625a0ed5662a51dd09f1b361ee979a3d90999de6544dd012e0a3d0ca7f54290",
"0x14ca160eca3dcf16f63e65745c1fc7da76bd228af16cf74d2a322a02c2e63e9a",
"0x174e5a80b5654227609644c29b2ae1f7346475075b95bcf09781b29dca6da8b5",
"0x159f373903a0a9fa1b30f1e77887b7f4a13c034eee827f0bdce9efc244d50300",
"0x1e6a451f0965435e18b8c68ed523a5f5700731fee946b446a4a56d697a65e136",
"0x292002d89878ccb5914c5d7951b45952eb8a48c0d4b8ca78af9db15c0fffd2b0",
"0xcc6c8b2dc526673c038b258a850a754ad3da11b01690ed359b1073e37ace2ba",
"0x2abfd63285e9ac80fb865ff2fda5da230f278f9020001f8172727bd6f257059a",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x2854b5984bd6b9e733809dfce1d7fe5ba63fa8d58d57e4cd9f540c2368db0dd3",
"0x2e88865414f2b4557548e383c7f525f471c9fe0d8d64f0b8001e630ea88ae41e",
"0x23790eec3f5a240f8398eca3719dd949c4e1b4c483a16aeb268afaebdda79a0e",
"0x2fcc8669dfcf04fa06c75b022b77b84d090df3b822dbbaad1fb8e3ee948e86ee",
"0x67fef650a45711037a1f204eac29045803fa922ccf8ad518334c03a29178838",
"0x248f8c46bb3f0bd3aaf83f0c410c0e56d9dec620820ae91d41c03c288c0d998d",
"0xd3b6a0004a85b63a85061b171d87480cb262b1fe4ccdb71be2114f4a8b13fa0",
"0x7b065a9ccab6b970669bc32838db4c48147f0661f53929f561a7a835fb9d567",
"0xe02b6d12d48362677df07056afc1bf5eee55cdeea65044de0648a0c7c0a7894",
"0x2fab90c9d26772010fe914e4b88a71e32f5563f4d4a138855f7ab4247252b84e",
"0x1989c2e54741cdcb6cd94407dc6ed84e7817384af807ba6ef8b85d4bcd313c5d",
"0x28de889080866bde3f19d84b253477607071c34e59569f2fb0aa180b44df1418",
"0x2804b79f457cbb808d034036efba0011bd3ab0419c39b094a7341eed26a322e4",
"0x24eb9b802012e11386b4ed5ac52da70957cefac5d3911ec1f042917e479bfa80",
"0x1666ca210112c32bb19b256acbacc96f58cc0fb7dd93874d50021fbc631b80c9",
"0x20799de358137dbfbc623c6e4acadc25845bd214d4073f52b8024ca43d99cd34",
"0x1bc10c44525f82f98f44fe8951d669c8bd1087ec8fb25d08c5da11ef1117e052",
"0x1d8dd037d73544d78d4811ce0d6b48264449172217cfcf67186eee425e18cbd8",
"0x2fbb2fcd6bbca136c183d5f94582c61f194aab068f915bfe0d85cc5d4b82bc08",
"0x1eeaaa5f7e1834a19655d80bf2daa1d2cf50d73d18e1973e6a74c487030474e2",
"0x1f7eb06d961fede066bfc2773ce8f36dd7aa35a727a60780719f0b9a627f56fe",
"0x2981fa5e6672d977bb169d70e070e73ab9d7c3f20950b3242e9295b45390f46f",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x28776c75f54ae00f3190d1e711194bc03ff39d248d96027523b166f942920a86",
"0xa4ab73336b833957012f0e7bcc36899849b2db78f8fd707b692578e14b80328",
"0x21ebae99beab3aff541833d68c75fe506d857d8919a97e07e3902b919d3e143b",
"0x3029aa9bc55b8d1ae128f45ba368cfb20896feeabf39b966d0c12742bbd28bd7",
"0x239128973757a7e9c8d29d5336d1a53b277387b48afa946628f45d03eba49de",
"0x10a0435f8e32fcd6cd5d8ceb3a3c078227b5cbb69966a76d7f1d751e594479d6",
"0x2f5d49c2ab9c95d09cb160a6ddf47a0763fe11fc3504478e45d1d07e641ab29a",
"0x1181af9db194b4bdd65f61e51a4f7d562307f5745522e265198b320ae649556c",
"0x1b9d2c4a0df2bc6d9d56c76317180d89b9660b0e3ac54e2e7ee83868ac39a621",
"0x1f5c2501487912b1ef65f072a108f1e6cd640b1eeb0dc7dc0d579032000b8570",
"0x72c3f6dc95aebfeabd7b79bff8d0073670c5fca43b5b067caa4828e67bfee02",
"0x2328cc21742ae15efdbbba3067e95d0134f49ca25303ae9872315e29eaaf3d1e",
"0x1a2d67aba6dedc8f6838af4f2318ef7575a0de251cd8bd4b9944c0a96d703b20",
"0x2eaf6ca068bbcffdf36dbd475ae928d10a2055dc10da29f77ccff5204c506876",
"0x233188598d95df9ea9c86b38db0027051e6a4bbf4bf27711ed16489783187d5a",
"0x7b462ddad87175e51fe8bad7cb756973ce7763ea732b3f64dfa38a0a0cbde51",
"0x14bbd08ca052562716a460cd30d0c3d20a21db0742da1e4021feaac3a8da738c",
"0x17bab12d3266540f45d4ee8beb4e4f01267e296fc291ed54d0f4181a87e0a53a",
"0x2a168a263170030f88743436b706dfe82da391914f492e7c48a2f62d56cc9d40",
"0x233927efe170a047d3d309380bcdd2d2c7bba7541dac277c6cfcf3d1bb16571d",
"0x10b9e5f24f1f4ef89886d8ad3f571f8f3e8633eb6a3ce7a00551d123a1de0548",
"0x2767b7f7b872770da90c9b9fa57bbcd766b878f7bf6db0a1249ef4dab08c56d8",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0xded85a7aa57678558da049aadb3f84b88357510e6424702731b6f39e9824eb5",
"0x66bffbba5403655a7eff0286ea82797fb1b78ad448612d5e5ffdd513979fe8d",
"0x2be44851213461736ad1c62746a446b9b9ea157f592c1d54f3bdbca0e81b1d28",
"0x13c7aff223c351a0136cd825f10e41da937896c3eb153e712cabbdc0dafd01a9",
"0x1e1295fede0148bb32d784c659938de19d63cd8f070b793f4af6987d4b0a2ca1",
"0x108e731bd672ffd58f3bfb3d66c3281da9a79214ff667756c3193331f15ec2ca",
"0x28ee2087caa404a7b9c88d871ea969073c05aa2d7f8c8afaa372fbbd29fec908",
"0x1929e70c3df9677a16e6bc3ca6c8f45435f1781bc7d3fab5c2d9f21836bca492",
"0xb328f15c14da87621bf2b7b1482557b0e1e4b62ed771ef0b5c0dc2839391a9b",
"0x2463924e854fc278f78d41ac3ba4c82e9ae33933c1f673d8fb988f5257ea48cb",
"0x206b2c50fbd93e4ab16f20b5e1dd4e31b40b410bbba02146d1a7e7120a0bde78",
"0x22a8169f4dc83f66b725c9db0aeaf6944c49f7f59e084741b74dc75f17a2d582",
"0x131beaf6c38d2a148c91b01285e728d83c5b40309f89f2ee1d69ccac916cf9cd",
"0x1f2f76bc23a46c9ed5441b8e0e91058e2eb16165ae943eba8b61f7629f38708e",
"0x350963d2c0aa84941005b7fc8747fc61365ae03a600af938753c62384223d64",
"0x1f43a719acb173edf3cef4ff57b3e3b54434997e03bca2ac3164d6d206298ce3",
"0x2ff2c8be1964373563d96804dcba6db4f2004109e4d73abe431271981c9c8004",
"0xc8aa745ddf7f419258d9f829ce7abbde1f5be1343ff89d90a597b8101cf3317",
"0x8ec029d60cddffc7b81dc89586a6afc233826c1641ccad7dce7da7a0d552002",
"0xaf6f27d2211b12aee10a405ba1959fba32e4da7012c94dfa822b683857685e1",
"0x23cc9f4ca99d30fe0d7780397d7281775e7359c3be70471bc6482193ca3b318c",
"0x5de7e88f631488d23cddebbab25e128f8cdfb524acbbfeaa7d2d0bf47c2e7f3",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x2ef97e821dcfca90bccc266cd3b7cfe86037c961414b970511a845251204cdf9",
"0x1e74c0e015eedebe75a4d569561ce744107d8f4f5406e65685a60f97c00c0c77",
"0xb9e7e57a6287f13cbf8760fcbd1bfb988e1dea2f70bb4352fe9acfc560d3a4a",
"0x1daceec3e24e703f54a27a8804d960d841af5a0a10b4ed8f2d5aca46b61ebdb4",
"0x14add4559507a7ff29e4e915a30bcbc79787408a6cc31c071199e81f03ed1b12",
"0x214af846405e33b9747a25b176edcd7c1934c101d36a2abb81c958a8be7c06d7",
"0x8f62c1e4c1e9fb62f1ffa5b262df316e32b769414445444c4e345b6e6a8e3d1",
"0x281cfbcfd9fe3fba3329b1e3d6da6ac72e3d401483efa9946cab0ab530342c59",
"0xc4930b204d10bf30ac793f21dd5cf84cf084aff28fbea40474f34056c4b81b8",
"0x75717917a0d4e210ed37f81df652af88c78224d99d13d46dad5a3d040907c65",
"0x10236e639476d565e1de655b0f816e859b5b3b38897ffea9ccdc9d95580dd0fa",
"0x16535568d792d43083a2c8a155e09645cb214c088e40b70589a610675f2b9bdf",
"0x209b82d2cbe5617f7cf4b7ca05f0bb1dd80dc2a652b50a23e68de856334edd78",
"0x10d0843c37e9ffcc0692fe6018d480df45f96e2ad41bf9539197ebb12ae5dcb5",
"0x175f7935e1d6d289b963b039c85cb1a3ffcba2f681cb27a6364566acf5ff2d1b",
"0x12f9631f7d9cba5b34733142a23a76a4e9bd76fc838bbb865a72aec17a3ba09e",
"0xa27aaf6ad1953f49c5240425b509144c9998735a59e27906e98518f7bcbcdf6",
"0x339c108d3ddd07caeedccf45ba3a1729cec3387338d45fb0b7b896faf618118",
"0x1c7eb764b1b6372c8a7f18549edb2dec9e713ec618365f169f0633181ed21da1",
"0x2d06b5cc446ac8715cd21b1c8889728aab4d3b5e7f4eed7faef3530fe3766440",
"0x183445f90535b07b08b20073ba06950f500eff3d0962ef609a221fc0df504b0b",
"0xe05fc0656468b85eab718ee19bcd04d0154edc633843570adc6e7d10592445b",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x6941082d94398eebb54a701966a9cc45b303a0989725381645fbd0ff97d9d66",
"0x22ea9d22606530112502f8e40f9277e1a334e8eeb307a03e3924ab8c6701f186",
"0x16ce67e884bfd1782872fcd65b18b3f27af8c1edfc8ddefcda53f3669651df33",
"0x11fc35853f485f0ae0902c650b9749b481e336c553fdd90f9767d8bfd52c63a9",
"0xf04c0f3525c56f533b23a4dd4deeb7b31938dfb1531863ef1c2066e8758dde0",
"0x2e15668ff3beca65235e7912fed8b7ccad0928136db06090fb6938ace207f363",
"0x2fafbe916d3af6fd0924cd2973e1e2474b10be1db252cf038fc32e732484bf7f",
"0x9749b2bb5e6668839c8be56fa468598f7292780e294e47b155c12322e34a0be",
"0xc81643458c5af368b81dcb405aaeb3000b4c0ba29c376855470cfbf2c35e3dd",
"0x2f7745d6f815dd3cbe2c529c63f07d4a646015842c6678456406a248252d0f78",
"0x2540261ae5b2a3becfe0ccde660cf756cfdfbe8fce0713c061da7eae6e5bffcd",
"0x1af533c9109087f14eaf413f798f4f0e8d9453e7cba136d9f5b2e680e80ac911",
"0x27115fa52689f8b86f2966af42504d25dcb23d541dd6a1f5d328b37b9f982352",
"0x1f955bcb282c2c0e74b4169a61a510d4fa506ec8a905051cd4fbdc9ef1130654",
"0xf13fc20a68d983add2992ef921aa7d9294e574b8a0c697c5d56622a585ef6b6",
"0xe480c1fd8e61a5ed800036d9110caa9a55309bc46a4fb1d7756b7e96ebd2768",
"0x208a8b0cabc7890d78e18028768a0a37120ff1e0d81cb9541bbd781d3fb5a679",
"0xa4bd40c175726b644c3dad0e29d158fa1b1753a4a59a1606738c57026eac391",
"0x859bd87fb95504fae2c58816724777f1c93a172de0b231da82c08935a950dfb",
"0x1572f4f0f2f44e7ab54f3d0ee208d13bd9f4a16a2be71600d10651b35483ccc4",
"0x2595802b887ba581a6463dc3dd4e29be1b0977c87a724078d84fa16da9b8adad",
"0x28290084f5f35de74591e06a61e7a1d696a79b2fb8db90d5a3deebdccd483987",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0xdd61a5489d4bb7be05223e75e80040cffa4469bbc1d2ecee02d0d5d99412e85",
"0x6c52f4f90d713744ace66a17d3171c6d83f5abea58367a3aec7d538736ae17e",
"0x284ce8cd77c9caeb5222618bc77d4c3d299b41cc74812489591bb1f23a5e8a14",
"0x1e914c2446466051f961f69baa9b00c56f018232a1cae8c6933a1a54efdcf1aa",
"0x1f9f1d5d61c22831aa9647a5b81bc92666882640968d63c03a338173c0fc392",
"0x1381629462428cc21dea769021a08fb83f68960303ac1368cba88b871865f06a",
"0xb272b9552f9201b03d7ebe1a1887c7f8271ebab08e81ed125a70c8f7764e1e9",
"0x7b4d12c7e949d4ee6e2e0ea93dc105afbfa277b9373af2d12a6ff64e45356a6",
"0x1b38520ba1c4589fd42014d6e8049acbe95daf2c4c2d910c44ab141a86e21ac8",
"0x1f9ad110bf1bbcba3edb9173790599a653793009ec8ab285cb9567a868e41952",
"0x2e5b599ea8d25fc97e621eae08d130909178d450803edf6e853584304f3bb0ed",
"0x1b15f498744dd45c644224cbc078e921f7c1b3e1af764a8467257d6c069fa18f",
"0x1d4cec7d699719620437c0a48f205caa856cbfee94146fb0d1d8dc66c465f4a4",
"0x173543ba0e2d1b252191c8b9392abd96810103fa3057903aa1697429a9bb9185",
"0x1b9df3514d0b3177ea22b6d61bbba61e6ecc5ef8766404333fcf6f91da0127cb",
"0x2befa98a6a5c83888ab8f22f9504c9db9faee563278a894ce253b34980873ec8",
"0x295db1d483a66191171deb6a0b95d08b843827b02f5e691aaedb0845baa64d77",
"0x16fce7e0da0af20b730d87e50ff3b8153e377304d9d262bc3c1e2b4438d0e189",
"0x1660401c207ebb47773a099e512b117987bc8d102a2ca0a7cff9947e2f2cbd4",
"0x1bde105e9ebf2795607de216e544e9638fb23ef1f598ccc6066a5b1acbbdc1db",
"0x5ff2966cc2aeebb42f6cabc2aff4ba67881a3653168b1da8919ea64188d4a4c",
"0x1de18595180cdece76bc7a389c725303f8114625785e4f8e7cb987366b7d8b50",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0xb75306c52e9faa2532157457ca751484e5de2cbea41a357481e6be641c4feb1",
"0x4c7855c4b3a6e6db0595c294ad58c4c3a41ab7a671608e04eadf389a77d5dcf",
"0x2596ff7a33d026067f427e76dee78cb0cc93819ab599c3bdf93191bb9797a3c8",
"0x8aa0063dc5903d4aee032268c89e865b3269d7545ddb1084af2479f55225ade",
"0x1548a8bb67459d26258983882563f449a56c01e3df7a608d086eaab22f93708e",
"0xd5ce47fb827e13d9eafa9befefd32eb089ccf1c0275c85946e2dfe1f43e8cc9",
"0x1b5f4423b16a0cb4af1f7bcbdcaffdf51b021924dfab1be7fd33a56647a51999",
"0x18d535b7160e89968c9633cc71fb2d97df3139814c12fdadc1e5a6f7622a7c00",
"0x16a0d6cd63bb6b5ff4c2808707201602da7d6b0f44b701e8393f98db43c24fc7",
"0x232c12d6ce6ac0ab8eaf31cf01f9f8d2cf50d24b18ed216c6292672c8d5b490e",
"0x27fb96c5c58c40aaf14a9cef49cef5a5c0b60471fca8e907c4d56c092d8ba385",
"0x21ad1bddeb6296215e8e20714f3c301769cbb0436139ebe0db55fb961cf97738",
"0x19b16870babade7b8ac30c9e62817064ae98a876c93675b2398533783343e63",
"0x16fdcef57ba6577e0c963d013271e70215c8a3bf9e4a0d6f93be6a4e9faf2d00",
"0x830ce701a93a0d7f92677aa65d53ff28af57c823098c256fc1470b3005f546e",
"0x2295d7c8b14f2ad4cbb0f762a54c58383fb6a8feaf9d4e9bde35b95fe58ca05f",
"0x9b1e43bce3e52d112b238e8f72d93493f41a8620de6e4dc9b52cb5a2a1f3dbf",
"0x87c2f1fe382f705024d1bdcb8fe8adb33b82361d8cb931ddee3f9fafca2e4a2",
"0xb17d752334a51d02c091a68034489d30b3b4c7e7659422e50b32d07a17a10a6",
"0x18d4520269ba2bb7428758e1c74bdbcedf8f058f696da3bd8fafddc3f2543e88",
"0x6d0e15f1f1c2b037bfdcaf6b1e724b26ef28d76640e68110d50e426cafe5688",
"0x29b7bc033acd92ae8a6df93def58d498b79d1de519f6aed8de984fa296d8d9f3",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x186d603bc6d93626732b1f85ea4ccac141cc8f45799dd48af4123a4f2e7a13ed",
"0x1e9fb44d51ec4915ed9a5809c50dd0bfe11b4edc69e99befd9ec30604445abc5",
"0xb48f62bf60c1124bd7be4e0b9ee6c66a642918a465fa1a50e1ab500d677cf85",
"0x247318154581bff6dc6333cbc14ae74202b1d419241b047dc891c0f60e68abe3",
"0xb26cbe5ceca89934bce5543f84e42bc739f25f298e556225742d987b0e6c269",
"0xc60ad9c62b74abf92a69f3f0c2559630ac51bc8f84c426130401b7890278a30",
"0x1b0470a9e3485e6cae2769f6a9b7aa5e3b56f101d7be6bb7c91178d594560e44",
"0x264d68f9e933b7f8263a465260aa839011aaa117eb02358945fcce72e0c93e2f",
"0xd93de8429c70415df7229fa233e610689e3145d5346511eaf5b8de2543517d6",
"0x24a99012c1ed7a1245f507ad4a9c8534658a4d1ae47ad653903dfccf66b4403e",
"0x7da99b57c2bfc56693da809691737e832191a765a51a276971f167c3a82ccb6",
"0x1cea1b13af00acb6c1f1596831afbd4be16fc313d954baa221204eb1035a8a1e",
"0x123bfb0630e8aaf56cd3744661919b2a88c0dff13bb0a571aab5253f98bb4762",
"0x1af132231252bfc602eb9d982d46f7981470c1f81d33bc2d50764daa4d0c33d4",
"0x2dba0bc37236d5b612363efeec5db5c4b8dabe365af1de7eabc4307d5d13a0e0",
"0x221ca65c9a1d3b45b69170b26e5a64921485f342c9d1796042a9d691dfa2b626",
"0x497f939c6b45ccc29d57e1291021d7fe4186becb765967766b7ef50e5f2af6f",
"0x20b8117d0bc5b325f5a6985deb0ea6c119add748d4432aaf52f1f18100c4c4cf",
"0x1fa73e129c14d72a4e3d45e1044b4e0237b38cd5f7a44284bc0e35fdce08e666",
"0x19f24a1c686e20b06039e60a1d522f8d521491a40698ea48a43219d401615c11",
"0x21f4738cd989617c3e28dfb8072f349b44fadd5bde90f169420bec4a0a89655e",
"0x14d1cea4227f6d369bc6015328bec36f0dd3cf1d9d2d088b5fe413ea7faef3a2",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x985ccba651570f4575a0ed92fc815c4d262c6bf7b880a4a2e9a6f062e0539b7",
"0x21370081514ca3496f035319fa817e42c182855c938b09f5737bd5e0b040d387",
"0x28d51de160b191dfe5213005f019a3873bb60f2b9679a3df65617502d21538d4",
"0x1ccdc75e435b8deeaa4b0c8b715f0831dc225c7538266e90609f6a6285a2bd48",
"0x15ed8a603516e1f5617875a6146dc9c8d511cd100f9ee41a1fbdfd5810408c6b",
"0x1cc5e7a4d7ecbf4bcd15e2c0d54532f2c6f367980d5afe4e148b7bd8137373a4",
"0x2289679ed75bf564bd924ff42f14a4f63663e95822eba74b35f6c58d6ff54ecf",
"0x28a844dce08ee0b8fb55e7df9630e357928dbef92ee9be0c0163b51cd555503a",
"0x2521735424459701359a4c27c2cd0d55baa5380e4f4a06ef897b2ca89bdec56d",
"0x225abd618e11689670409cdb1a66ab70d077cdc0f5efc2b387258f280a24c36c",
"0x4d7a23e3eb7a46679ac5fc1d8a13d1670dbb5f00343cbb20893fc5576120b65",
"0x166f7e2b14c9b1776ef74e4dea3147b014234f58ad5ca5a41f5cc40775185157",
"0x12681987c944d15c132a93d6dfecbe502b5b7ae4daced230eafdb89d3e8d4ee6",
"0xaa7558052b83cea0ddba30060b4b443b3a4f00ef388d98aa6081641e7ab58e3",
"0x2c817b2fd2e5ec32c6bc84f11b3c63197aa4ae8c2f372952bd016162c5d71cb0",
"0x11962159a017e25334049df13f2bd013d77cf18b3decc7f66ff81041dcf354a5",
"0x1d63c9e5c4b133a0511c8624795f54474b2e6e465afd90330f50a44eee9e57b9",
"0x2d82e29c044d1096b8c16734a6f9c726ac5c5b47a199dbd7b1aa0792a16141e2",
"0x1b28d232a19693543110917b0ac82983b78b48fad53f25fa007748f630d524af",
"0x147ba0f7c38d875d1eeee53ee9112b75fb0ae91010332de8f9325aeb85e2e22a",
"0x1ccf269bf476fecbc12491a10b7a031a43c6df180a74fd76340546abe205a7a1",
"0xfe407a56ba91ac174fd49efbb61e8730a4397e8df24abef0666c46e1696f27a",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x53ab7883a6bb37977a9f6c04b7430e1f23259c71bb63dbe2bf0fc296793b2b2",
"0xe791a7097b6e2ee5dc314d57432975400f92d69d4ffa60d7c9a004e8a8326c",
"0x4074d5f47b8529c9d8c79f8869dd7e53944046be065d4cf1d9e400cd30e005a",
"0x105b47899898ce40b7b74ce948c42b1a7f1c064c17a5588cab02b9f593b55744",
"0x2514168dc134c9550d7d4c5dd03dd3b6fa0f4c10fc363137f17a1cb71b8dc451",
"0xaf1d61be25cc6a191184e77234542f4946de687cbb08aa8cea91a61ada0548f",
"0x1dd5bea55d34b381ebdc842200ecaa4ffb28b9edc96025a7025da4d28af0c053",
"0x1c39e9f8a25300f88afc1d5aeca648517719f5c2f8977865deddc3da451f739f",
"0x3adf474709643e45b573ffe296c0cf64b0bce9705b91f83fc1092121474942",
"0x2e2bd30c5a414e196095e3e2e7acdf0762c6a54ea74dd82ded60f8e6343c44ef",
"0x2b53a13cc27545adbed481418cbf2bc4db7ac6aecda56492735ea2e9c828e876",
"0xd90f7595963d4c470a559f222fa2b6e9588660c9ab42474fbd3502b14cffc96",
"0x263b73e3488bf2c208876b22bee8e28aefac9d3a4b76768e9ec0b8395d2fcedb",
"0x2a0dbef5edad1d5b0146a0630de8e8588c6e9f8e343ceaeb1e90f1163e93e477",
"0x18c06136a1e2c542dd4cabafbb9232a98301c91bdb294072cef62ea4944b1f78",
"0x1652c71884fab33b816d894c62c6c773cc63179ee35cb7e73a568533547d323e",
"0x24c895fe21900e49b6c1e90825ecacb474a9e919a9d3451e170ef22189f5ab17",
"0xdf80fd4f963e8fec47fd44bc51d94d1a0489477b2963ea46739a99a3ebe343",
"0x1f03fdd86ee29e48309c79e90e0c1225a1ffb47ba0ca25e4e261e17e82567266",
"0x27ce3b368152a24912d9493bd7f75d54666d1633a7f95ad94ef9cb63b72b73ad",
"0x75d95500a93ba86bb52fde581cbbbd7ae1d288b85e9862fdb6a8460cd9a4d04",
"0x2987891ed79215bfdb0513344a736a5faef636e4dc1aafb953a27e60763bff4f",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x2fcf686a3213ddf2ab8630b29d271f1c038040c01d6d40917e7665f59c0f411a",
"0x261ea88ea2119c8ee660600c1c26964559b0345f3360be71685620821638be7a",
"0xfe04a27aa636785c583c247067d0fe0328b8732b173b20171573497967d8a02",
"0x2cf0912ac2237a5091ec27db0a7d5284f13bd4630fb6b58f221a68f5f4fe3232",
"0x3041569dd972c73b88e73eccc715d7043f36ce79412db0df57ed902957facf9c",
"0x2a4f9b5c59b09834c07365f58f63ed64038366bd9d17c7016f04505abb878b3c",
"0x1fc17fccc2b1f4d051595c0e4151406c29d2eb02537696aebfb7b85e98371718",
"0x16fc002eaeadbc610d53818fb1a72c47f07e7834b9433e0276eedf4e0cc779c",
"0x2fe0f6bc3242cdc940d4ad67a40328a51da22100cea8628892a20d3680e6d9dc",
"0x43423406385c4db5ea885da5766246096064fc77dda460fe8d8deb97d34ba44",
"0x90ee6fd231f2b7fa73ff9baf6db0a47a0057e62664ddfd9355924242d050e02",
"0x3005c2f73ab58a8cadfadc4dda1e3422d7c0f6ad0fe7a752045ac72001c6d445",
"0xef228d7667c66faed8d7e3c7bbe5925a55d7451df7f51a6afa3bbe0747c1ba9",
"0x2161f7618113ba7d7842db94ad2ef24f21f8a31b4c1124688a2e4dfac810f01",
"0x20f085669bf228d7ba11d93866cb3c268b2e031ddb9697d80cf62628686938e",
"0x294372804d6e2359003c9cdd1677565423edf025a9933d0b25faae3947171bc7",
"0x15d37890f0af5bba4b3abb37bfa5d5e115ef5a4e805505e2cd021c4807ac901b",
"0x287ef1d880b317586e978d5fc8ea277aaa451ee6be1bbb8de5cb447b7db251cd",
"0x5d0ffe0d01c752afbfbc3e2c49f0d34d35ee5198603300d727a11b8e7eed593",
"0x42e5fb819552fb66da7667d664838b4bf65a50c422ab1e9a85b1ff6e92d30d8",
"0x1fce9b344a773117d21974d9c3a070368065377845171e46936cb95a3d38051c",
"0x217e2377d39a2d534ef281f973ae22fe8ec4f87500899431cece3c75c410248",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x30073c53bd5375c642148a247e4260a05b56613dcdce4a093e85e10d296999e7",
"0x237c0bac139ca6595c3dbe7f8130d399906ec0710818ff44c05774b479d54fd8",
"0x1f2e23fcd2259faa7cb33a243bd212e89baaead143a7edbe6c6b1c295690db9c",
"0x2ec7439229a284f2c48edbe15599d462b1d073b3a6037e8f7c8020777f26ee4f",
"0x23c268b84e8c118733c2adb6b3b0935ff631f3b47843b112e80cd9ec5b5acc5e",
"0x136b39ab04af56cfda16f3f99411b1c3cbd3ef198b5f056e65718f52fabc7c9",
"0x29358a02315a9f5180f23577b3336be58d4039e6ce4fa251c4cf8618a955d9a4",
"0x29139674f1ed5967476c8dd777624e49bc90890a5c99750922a4725c81105775",
"0x2fce35cabeac14beb49bab9ade7e3811bba9f32b99a78e3ad655b77c473aa32e",
"0x2d0fbcf9cb5fb78fa20bd878ee7e6bdccc2eab0eb7d232741932c0e785301f0c",
"0x2ca38f6f88d6a37b8e126f72a82237850d9f26edc5b577558da58c2e55b0767b",
"0x19e38d09cdb939e187bfb8822e5c2297a897da1f16555a191157bb8a5af115a0",
"0xf61a58b977b2fd7323b48941cc010140e9b7da31271dbf3e4691b767dee7f9",
"0x22b5299787050ae04bf9fb86cfde9589253870bed1a0213b143b33eba1153df4",
"0x2becfc510eced53a873daa537c21d79a1d5071aa734f60553ee809520a9e22a6",
"0x14d5be5c690883ea5b406c10b0120725bf1e4c5de2177267d9e38e9c792bba8b",
"0xdcdc68aaff548dcc7842f194b1b30b604e4df04bca89830c0bc367e7703ddf8",
"0x1b0aa07f9f3f5aedc37e1f7266bdb1ade79a62db3714cdb833d1af86cb89d9d5",
"0x1e7b9c8adc9bee22f859972a13e0213314d43e1829f4f99fbf019de8ef79f3a2",
"0x3d090fdc48ebc009b4cc7ed3546d69ec87dedbc67970dcea6052642e517fe39",
"0x2fedb8119885c38398860a6e6c5db18431e4f0d981a2fa274a36d5c31f9cefaa",
"0xfa5fa0299ea7aeff8d357bd332f13abd6935460588e15adcd0ec76c8dd6750e",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x12342a1391a6b59ff25a5c84f352a01a24422046622625d79588a43c40f4ea8f",
"0xe21849b6b4969714a121558331c18a2a8969004cd750c3fec6bdda6384f5a30",
"0x143fa84e95c7893e11c17306bcb7c7a64e395e3fd9f1f4f086ce3594728931d2",
"0x216b7f99cfbd8ab9e124fd7ff4b172c853cf23a2ac95cb41b3a42190f035b144",
"0x18bad0594a462f033d2be7d2151cddabc6cf21ed59510c1e56d080872fb95490",
"0x2c5b49fce206c612947ff5f4a12cf1e4763a3a1f7b9407c328e30b3497d69f3a",
"0x13fbbb66309924fea1153a649786a33fcd8dfb3e4222a3d59393b40ccb39b9a5",
"0x3b44f905e3c8a2b3e7487e0ff0e1277d5abe5e1301c165ed1c9258829622f7c",
"0x56c2fe32c1944e7c9400d0a6ec21aa54cc056562006c48458386c8d92f565ea",
"0x29c47e53143446f7bfc43afb3ee84548b5caa25f4987796415d68e318889ab19",
"0x2e43c52d27448282177163200168574de40c584fe61d4fae5dcae495890217d",
"0x2fcce12507cd0630f06a2992a515f45c2b469f2742e328e07555d22c75e51e40",
"0x1d2e6d9c5e8c220f9402b82ba4ebf641b2173e94ae76eaf7ee5559d43dec7611",
"0xb1d1a4591f233e710a8f245cff5cf759fe0b4e55f46307bbbbf5d4573a860f9",
"0x163aeadf9697fd15898344233a5a30236499b728c6fe54b2534c7c9fc648bb99",
"0x2e3345617de88523b5d09b27c9669fdcb2472c6cc832ae304ff960c0d4a5a348",
"0x1859a9bfd50b4bf8d40885c992654775ce35ec41a77b896206df0ef2281efc08",
"0x1232a777b5141ee4296798cb37ffeca708d0eab3142357e4e917b65e424ec478",
"0x10c4ce967cef015fa466bcf69079f8f23bb2826cfea14c78a3b4509ab2aebd8c",
"0xb980e8a923bd3a2a9d5e9192337f070f18c11a16c809440f426126ac390b7c6",
"0x2b1d91f4222d2984db754e4133fd4060d12c1dbe6158eb34fc1c1fd0f6327b99",
"0x19ca1b4e01a1671c771897b741b03ca691c2df986c339c6f2c6b24663fae3129",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0x15e4fc48c95a30a9b34e39c7e2e5b23cf96e72dca78d25cbf1d07f6bd1f35269",
"0x2d23fdc4c0c81c5cd12440066758541d7e4b9c6bc29cabaa7bb3217fe5580c65",
"0x1e1db0902c0b9743d3e60f71c53bdbccbb995466f39a9e044074a32086f519a1",
"0x24b7c98c30ccfbd3b3c87479bccd71122f3a41e0eac0c5a82916ad9e1c77ae80",
"0x22ac75fca4d3bb5bf0f9f25bee0293c50901c2d45f4c2e1d19d7433b2771cf91",
"0x2d0777b0c575fc2be9b13118b4bac03bdc856c03c9b7236f61670dac5da95b1b",
"0x2252fa35e811593e627c8d6ffedaa4503728b6d6d9676f2e3270545cd190be5b",
"0x20b37b4ed7445a96acb5891bfe84d9a5b96e8c5a67dd111cc4dcaa8269f4f0a8",
"0x2347986652295db79f804ba06d9551d3e2a6b5a1ae358d94a1d71c34f36fe0c5",
"0x19384ebe245dce94d5e68070e3114b1c5be9123e2a3728ac3af9d340058a35e7",
"0x1fc74a00232310ce6af9e233a4934550b0f3ef063f221a3dab64c2d907138a35",
"0x104721a9a6568d9e67db56ecc61ee18623e89e26a47b9e9e44f8977da8a7c16c",
"0x16d9fd4e5dcf75863f3ab7971dd72de63e09cf77787931b0868a5c15be47c163",
"0x392be8203347a51c9157a219aaa6787f54494b61e62c54e1c91bd995addd474",
"0x1728a3905a9130b0f570af0165bd2d00dea61d61f7d103ff7c13172b179099c7",
"0x145f03cb3abe12eb5f0cac73c11dba2bbcf94c72f2e30e22193a33906507934",
"0x87ae2a368db5f3d666730029fa0ae971b6f50432881c9c0d86f5f3aa716b842",
"0xe386543bef330d6c3cc14294ad86e2408894da265fcc041225196ab8064c737",
"0x1faaf3ab79da2b30406f111cd42aa6fcf187b19448b18f4617712bb95aea6ab2",
"0x1c68410bc6f75d9d773c5cc57af29ab138e98480e1a0de15195e64afdec8c525",
"0x5b529d09da83d895ddf1aaa9849f98955d81280eb9f4b71cb7694b2a21ecc0b",
"0x5b8ef58138e7c3284d9afc4541e7f291d87b2e26b50b7feeb75cd859e3ddcc7",
"0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6",
"0xd2abe6bb0c097deeeb3f2162b41f9e969035ad6ca31e71eaaebaa590edae407",
"0x1909ae6f86d6d43332fd32caf83152de39aac3f2701441302012d3b4349c458",
"0x2f0ee3a8676b72e7e5ef4794aedc88051f0911ae43d036449d7c07fcf2f5dfe1",
"0x1e378a1fb4fb0b0e168121f86be8de342265f0d9443de37ff6e24a8f31c63003",
"0x2583b1b0912cdf162a046daec4856ba80ec6df1f1fa080101ccfd225176a0e8b",
"0x11d9e38aabbe2391dcb7dd17706edc894dea224f6cbccef182edae298800e746",
"0x1d486e5b90e3f3c789830bee968e6d544b54031477fdc8c9d002d6f9cefd598f",
"0x234434965f05028a4f5330a590ab06619914476348aeb87a1ebbafa1e568eb18",
"0x3eb55944fa1e36fd16239f7b3ddf108ff5f27955e2f386139493ea05c1bf509",
"0x22d683ecc91253d08e6e535a4b62627738c2cb877d2b125aa9b190b3ed2ed9a",
"0xff142864b0e14d2734c2ed0642a474fc1f0116d7e1c5dec18bdceacb2721958",
"0x1f930557a284998225f5f4e4dfbcf5ac211f1b12d91b0562ed3d63285d7a714a",
"0x18e8222f6907da5745eeb9cd4a9e62f28b8b710aa85fe729f9ea73a3ef0099d",
"0x180e924d757d0be4066feb146ed56212e38acf9df4957432653f370f905b8b07",
"0x2f7d0715d1391190e7b14a1242b6799eac3142e21f08ca02c21755eae77a55bc",
"0x2283ed8d5e6f9470b3f4f49a771061e4a4fc7dac683defcc0348a8862c6ce71",
"0x21f60efb132b62909990b9f994f381a9c02abc3ccb54c5c8e8c9c5664c6913d6",
"0x1cde82acee60b84424e9bcee49a5464ee05d1cf0b70469208a675635ac715495",
"0x118a24510a2153f818f0a996c87de913587805f16cdb1939d9406941f958e8e1",
"0x164567b0de16b7a5550fca229bac7cb0779524325e4ca5e78a86078881660264",
"0x188ff303194112a7034527cc9dd0b4deb0960c9c106ce115178dd7087e4e8c02",
"0x83d832adf9bb4a25f686abeda9f16ebf53263dcf9ef4311781d09920d094ead"
],
[
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x235ce940dbc6ae2af119016151581b3928bbf5dc663dc5f4b6cbf02305a440a5",
"0x1f41f49e23f371de6ee0539e873506283ef7303dcf1d6171a47311e9fabc25fe",
"0x2761de8796f7e0b5915f56fdff180ddd4f22001dfbf15bfc83fb8b76c2ed95a2",
"0x2030fa119e7ea727117fa18d61bebfdc5945b9ccfeb4173b77b373a88362544d",
"0x16fade125075ec0ee8bfb5acc676076d14b76e79b2daa5acd76fe6719476c017",
"0x154054c752e6e827543db8d8d6baafb02726fd7cdcb71489510e89dd2faf5d5d",
"0x1b492c6aa52f42a57aa6d9e9680c14875ca28a129fddb2fedbeebccb5c83cb4a",
"0x23d1d1bcdf6c2c14376e6619ef855a718aebf7d9918f578b59025e9808936311",
"0x1e509e854698b837ae62db6eae7730006480f64ecabc6189a6e923708d4aa5c1",
"0x104a16aecc2dade9539007d7a631cb12e7ea1ab9fa18e4c8d158941e13322bfa",
"0x167e341698c1e47880a08b21374178b7e318714eeb40b54504aea93443249f9d",
"0x16ff745c57280b832126534f65a36e051fcf161483d1a9ac4d2a882d55c4b3d7",
"0x16556da3145b12699852213b53eddd1859bf0c06464a69887a6ef1319cfe3dc",
"0x1f52e72aec02c1085861bec46d3c952a7b17e3b859e1e119e29f9d55b00a9d20",
"0x1439235c136533951e994a422857fcf8fd137963c823113e777cca92d5772330",
"0xa70ec5c87c2873d1927e525972dfef236ff91f79962eac7db98fec13c3ca6b",
"0x85c4d1ec109d4fe0daa8548c7b641d62bdcad7b01f0257ea54f9e6371d00550",
"0x2f4b2580ce56a2b5941abee8b7f98ae4b89e652a005b6d378edca751823992b8",
"0x134520116944cb30a05c694e90ccfe26376a23acdf44719d5e94a40c0cb4eba3",
"0x2c6f46236b3de631bb23dded37fe4349e986b9c26a99382a28125b2123e9612a",
"0xba54fa736725c45c9aa2edb10e2d160ee499707fc5d3fad092c6f6e60830363",
"0x9fec55075da3b0d949af21227dff641435e920034b8f3a054f6ceee03f8bbd6",
"0x2123de2c4d9657466e2c0994fc75161b658fccebcadb25d03e1005480ff65dbf",
"0x15190bff5104801efbac26fe09882fa5d5aa2bfa702efcd1b9e8ae4aca9f2ee1",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0xebeb78e24789d13e315aed03d6f9a7503f8027ac8c07bb31cab7d9f7c867273",
"0x1a7408d356b546b06ff9e11e706fe10311eddeb564d15f77e406c4a17eda0fae",
"0x7b909e9b3d766c0562bf5eae630eb1eaa3f486b67385e9f15840dcc75a4695c",
"0x2fbfae64d96df063622736669771b3763fe4d7e32a253b2e9a432fd404a5a1d7",
"0x2e8bae55338b9e7a202278022d1f4f1641e8dfedcb10173f8ffa47a394a792d3",
"0x95cf55bf75f13b6986a1d8dc6e23ef27c6e20049be69d275cca08a95c4fafd",
"0x590c80761bacb1996152bdc843ee9bc8d9e1106d6b44143cac61a582c93c707",
"0x2e2c9e1b232536be64e82e3fe38c9f83cc1e2ec77eb98d690ed88972c55d4dc1",
"0x2a0bdd075038ef925104da5f80d436819a8896b46194b795f9ede6451882f668",
"0x25e3f54e8788cc765abcbecddd2326c7ae8720dffc3df2e7cefb06bf572b019c",
"0x2c4e38ce29ded57148964df0816fa57324061c515ed02d9f5ca4cb4231e72d9f",
"0x17816a3115471f4af63e353a891e5c63a1de21b079324c7376c7fb778162d597",
"0x16b1e612a7910bdbb55b44174b22b72b63ccf452f485aadb834a8883f7a1129f",
"0x1cdbce6ec5631b7df36d7fbb1734c066329559906cf4c9cc7023b75445f2cdbf",
"0x8527bb0455abf9205319b4178ac91c89d27d73af39ca3eb5e267b407dc122bb",
"0x295a5be07d3fad3d9622f92a52742786741d19fa1f85424e6bb0383b2b3184df",
"0x1d10e15e892ef5c67b06061e9230a13aef08e3a2422e59ce6a7de3bdfced494b",
"0xa1cd7913f731a263b47880b483792d1eafe766bd397d6a37f9b03bff649ad97",
"0xaef18db0541091f4d0a8c6c0e04bb191c3b3eca9abfe91b336f37688f82381",
"0x2c240c1f57384c0eb11da2fefef668be130079616fbe953378ca4cee358ae80b",
"0x1ef04e55dbb7768b7ed264223a560b7462d131ac387b0e06e091075b036c2903",
"0x19df6cfa53448857b40764ac927e45c59a4ae69088b7bfec231217fb49bde976",
"0x1b794d61ed2a335a1b6ca4fb2df93b5de924f51c742c97eb1f45262f4cee3ddf",
"0x62906482824c01daf001d0b01e1558d7a2e921bc124099fa704a167305b0432",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x1ee5e91ba44d3919a02a4c05a704d15dbd6665d3a0caa7534f062cb702e12ea3",
"0x124e5670301689bd1d21125260ac980aa77f9927abfaf6625cfc4aea0542c38b",
"0x17f39c51b4f9aba0b50cf36cdb63d6485b3f79e0f4c56fcdeb1668eab22d2ee4",
"0x1e47876883221f61f5a85cbcf916e4255c146208100bdd75df2550b7f23d9ab4",
"0xf6cfbc348d0c46f2b4514fa4aec63685b7b4a77cc187f39f90352aeed2d4196",
"0x1ec916f0f8ab3534a45fb8b6fd52a0db612345f94a7d1047b9cb15bc4354d259",
"0x2299e8cfa278c8ff8acb571283f8d58b07285fd3db093f52816286f8059d745e",
"0xe63ae084d4165ef23463637d3c6c962642acba1dad62f5df322c00aaba6788b",
"0x2c652dbc12391bab6e6b1642278935adc57f028d75ae594e23e869dcd807a04b",
"0x23cca3a96c87c09a758f977f1e8e382898bdcc82debfae4df05bc7c16e74aab",
"0x2f5c19ae2b06aa09ff617a2dad69858ae545b8a63f5c730d50312ca740d538f6",
"0x185c013083f0dc7b1eecce3045555f593a1516f7c0486900029a21537acf8e03",
"0x2e4ded90ce2c40cad391f536718a6f107838719e6cf002f2e914ee1db3fda861",
"0xba3626706fae4da22a59bfc7d0b7c3cfff221ed8a6984553a6b605fb7ce4cae",
"0x228687cdc81f4bd727891f41911dfbfe24107d60dda4ea79b5b094886e89c4cf",
"0xc1a4374bc29963f2c4e68c51518e098dbe906d9c3a664e24938a403009ee28e",
"0xb49ed175ec0cb65d9fb76b9dda5859af6f7eb12e0a4895c3de51228e33662a4",
"0x26be812425de5be3e6f4fe6694d8b883ad156e67ebb1aacb6cb64fd41d64b19e",
"0x17cd4b4c75b978ac369c026e0e34885bab4c745ef05c471d7975300eff003dbf",
"0x28ecb3b468e0867e4dbe29f05490b90f6210108a30624715634e3cd6144085f6",
"0x2ad2a688d5e1fc7a853d17ff8e29487e6a9fe8e234b6423425afc192fd6926aa",
"0x177b3225d90e7c43f46ea85579f408bb2394983faa33d3eea7b7847e10b71a09",
"0x18c733d3fc6d5c4ed730650c512b0b2922fa4ede0e4281279df25cb57faf1749",
"0x25c287190fdd3f0fe552c72c747c521b8e47f042dee30f90c88cc49c425e2269",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x17223e88c5afdce6f98c3d3096fdaeb74fa99a0bf6237bb328466b843b5b481d",
"0x17edf7bb609e24ab634349d03bbac5d92a99f1f54571cdac8e155a3767946556",
"0x16384369e8e866d47b74c849496796fe485290080acb6d05a78b399906654ec8",
"0x38414054cab9daa6484886487f9b1491a0424c75dcfd6e69c00f88391963260",
"0x2add2a9f58afb253d9e9729b8510c6ded8cac2647871b4b2daf92c1ed8026670",
"0x2f59f831ed16663ae1e72b27df74f8878583b088726e2f77e2a9b71bd5eb4e8d",
"0x2c8563397614e4c977762b73467f74812d61eb6c921df0b18bf84dae0a448cda",
"0x10844b6d701b264d333ea6d5496ee62b7f99b0f3e81e4774f271acd4e6dfc452",
"0xd90e1221b226621bab0f84164c6bd657cedf457c1691c6492548cb503962f2c",
"0x675d5268e859d734fadfe6aa6a58f5bd47e9d9bcbf7311d928562f772a44312",
"0x231539abaa71d18f3c100449d2dbb5a78c8c6eca61debcf495670ab6881cdda7",
"0xc5e674c55e57e981b8de7f89d00aa088f47c5b01c39bce85ede170519bceb81",
"0x2e6b1e65cf7069fca7f5ffbf0760e5d2c6acec8da85ff34f2c3cd55f744c8446",
"0x348474ad39c09ecfa686a8710a7737acd19917fb66e90a3df84d110b5b26048",
"0x22380985f6c92bddd7a02d0187c845fb834c9b7e3664e1b064ec580536d1192",
"0x215293044ac2044e97d2d06e714e937bb16844b2c4e834bc3555633a31ce1d33",
"0x1076db0b38f462a6a9829ed423572f05d1658c390fca109dc6a5baeadb39ec85",
"0xe0b3b39e33b5f0f7689976066d5aca89f070fb078152378bbe4cbf608330e0c",
"0x1decd713548d0f04ca0fc3af31ef53eb04fafa773cc696bd5d7959d5b8781f3a",
"0x8eea1ae2e1dbabf4e3969bfba914a7a5be05a672d16aee9029c3477ad75c0b7",
"0xa3c813f669fd0550005be2ed025fd263f496cfc0c88708c5723fb6d4783090d",
"0x1482b39a31e48749f37e6cd63f9fd7498b70623637fae3183f1805deb488df4a",
"0x92c09a074272c56f7611ae231544253242fb998f1faf5a04032c897705cc180",
"0x218cae97227d24e5501a8c68d0f9b298d102b5bb4870acec8ceb068b219c5de7",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x19fd38d0a9fcfe44eab81a88bf83e966f625dccfb8c8e663c92783d2f36f435a",
"0x105b69e0c16b67fb448ce467efb92c03c0a03d0ee652aa1d3f57276bcda15b48",
"0x25d1fb19588b96b835cf451788b64356dae74ac4b1dd04105f4ff71ee538e69",
"0x1a3d3f0584d9937628708ae5bc1a677ca0d9734ba13f9f9bafd4d40ed09efd2",
"0xda29cb284f0b19e45ddd3688a097cd2fa147726da98e7d7565480753c3d69ff",
"0xbb245a4fe17933f1a323de946e9c79ecaefe27cb72746f02dd7f8a12fb97465",
"0x12968abc1e49e916dbfd8d32c99add0f2522613fdfa603384acad50adb3c93d4",
"0xb72090055db8eaed15c53223be0d59f134b6e2bc190ff8aa145de2bc81fd905",
"0x2ec92e332d64bf0a6d53aab3202f16e8f931b0b3a19d08397981e4d67f7e6149",
"0x10875e45751b9f7e6d229bcb6035a0f64d2fc266087bb15b46ed8dbac225a875",
"0x20a28d7e7bf2393dbf1e8fd1b5957d6696a586df80ea755679bc922b32214f06",
"0x2dbcb5a066131fe70e1035acecb96d60a3c48394ef025f9469318ae141b59474",
"0x5d382b11621ce81dfa3b2a5b9fce537f18f3e1a3c11b744c44b7daee0f539a4",
"0x2aa1cbda3b7224be26b553b60967d1e49a79cc1fcea1e28dcceae95257195fa5",
"0x119d098ff4fcd15606264dca209fa31b8f90d343d73408afd99cbc60bf31b38c",
"0x2d6a5ec1decfd860f606bb717c2d6fe04d5da0a512677bfb3b88c6eb828ccaa4",
"0x1d44cdd7e0f9ff30fa262b991bbd4b25b9798c52b5475288dda93773873b70f1",
"0x1a52bfe42c699db0584e9908947654007f895244c01b0827637fff73ee586351",
"0x26bc0e722f88daf0ae3100dd3603409108756c81c2d2526d432135867248f06c",
"0x2151d6544b541cbe98b57b17bcc32174691b7dede6da01a85964ff4d03c63ed0",
"0x1dc401101c1f1df1931569efaa9db035fb7eb1f94ae9ce86cd6dc0540b1a1fff",
"0x219d8e0b575d09e774acf4018fb6302ac990e13959c8bef55814abe703d0a4fe",
"0x7107aac0c5aff7df10b39501354acdd1ab5dc0091d0166c55cd063c3a3100e7",
"0x1541846836b18159c10af51567f8cbd22556df4f20dd74ed1cee58b3144fb464",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x1a21b2733e57ce5cc36d9770c7eff1ae09c59af2a97deb649f35e034173963f8",
"0xaa74005a1aba9f35de88f256300d0f55c9a568a0a3f962547fff0a2ffcf3faa",
"0x302cc36dbcf39b2bb8f4ff9da06a95c8a904275eb4ef75a5b82fb7cb80133143",
"0x1ba8fadf54ff193f90ce70d81d068ef1caff816cf4298a9e9c359b78c7b3c77c",
"0x177e25961a6d2d2538623d70bd43b86651ec63b0ab29b1e706308224a0b7f68a",
"0x29ade22a14cb16e95939ac85e6c50f089d187069df8659609634290249efc500",
"0xc3cbc360d3cc87126d6dc733e8c0276e1b576ca318d256669a2777f70d89308",
"0x138a5c75420e198be86010c147c10fb0b6c882ec10683dfab0ef1b8cc023639c",
"0xa350052193a49d3255030214d15b36a10e7b2561890a4c851128603b6a5f092",
"0x1002580094079011e6c17ea867b391cfe05b5e73c6de87869cf2545c10084594",
"0x8c06521680fa7df05e7c8fb8a3a2ffdc0526051a59411a0cdd29e5f993e8f47",
"0x2a3a540122300f3070651e9198f9d5bb0fb52546c35ae90a4deafd9baf4e65a",
"0x1416a8824238910444767922e320d38b543cca200ea6c5591db9092e224be615",
"0x507def96242fbb9a1ab87fef1da1a03f4c3349723ec4ae6de894e171a1b4af5",
"0x2d03148012d730729390a74fec2d3e7ba9fd23f45e801657fc5e2a49b43744d",
"0x19446791471a6f03c3e0e557ea0d4b24bbd2930669ed23dd286e81b7fe17abe5",
"0x23c198ae993dfc34a55d2cb02226db49afdaa1b8cfb934a05ca594e616f43f35",
"0x49ebd2c1b2507a1399a21690d0e6a900184d15280bda27f5b53099933aafe5a",
"0x28eb35a44903f387f0b17a692fc99cc80826f9f36eb1b9576e2c5c4c48ccec56",
"0x2e217b29bc22f5d1772b5bc1fadc11af5afbe87b223fd501b1b63ec28a77435e",
"0x5d617f4148cb5ad818ca83e3e25d1aac33119f4862592430498b6c044ae087d",
"0x196ddf78908da3e629df88726541e8f3dc6bf7b3434a93b25434b2773b546eff",
"0x19f43813c7b1361c536509de373c74ebd978b0f3613d0457e59295ccb3447940",
"0x1dac98a00317e1ad75b44dfd710de43a70e1a99afd151dec478a8d0b4ebd67dd",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x248389b6c1215ae80412361e031f9d19e83e305fade25b5151787bac24151f30",
"0x1d6245849595c3f2e658dff1f825202f744288c73d5b6fe3e47be01c85231a63",
"0x2828197fc5ec3d0b61e3cd35b39ff7ca0582844ea9893e47575ac698fe0fab44",
"0x5f98baa94403cbee299a7c38bca231773951a9b5ec47809445687c1fbfcae21",
"0x21c21725d982bf880516bdd009e9c82289429fd8470ee4f009281b6d610f86d7",
"0x25161628bb96c434fcdfed33abfb03d4492060f9c12e5d6e11a30da401f65624",
"0x98dfc41ac8db685ac12e9fcb277ab8b38fa0b4b943b5f5863189e57a4ec1726",
"0x20e5160dbc32bb70dd2b667ff122aac9c9a209830d177d065eedaa37c238b6d3",
"0x2282b92a3302808cdc7032e874419ad5b9445a5e6948c67e35af7b59647e6072",
"0x19183560ff143e5d855665e03136bd60d6e627117857e45ce3b170d335d19805",
"0x1cb1080ee04da98e9a546b1eafbfac68d7bbd31acd6602818742e1dbd035345",
"0x2e08e6eb7f7299ddbf4e83adb2f544c8e2bf1733140eae2a24ca09e8e190ba93",
"0x17313eb73d301839abcd85bcb243a96c662a9225d70e923f4966024ff3fea376",
"0x115a8fa0b0211dcf5a0625e77bf00d4eec93b313811c61441d04e2e927f99a1d",
"0x10671e260167bb4a73650275e517b30cb040d62e5d8bc65a23e2bab6fc0927bf",
"0x697b10896487efb0a81d149a959b22c8edd1b130e18ab45dd5e4f287fc567cf",
"0xe23561be0a6b6e5616ff582cba30e707dfb2d85aff42daeeebab0a41fdd2a9c",
"0xe6c17540a1832e4aa8682e0c1ca4471e2ad131c70a6abd6333268f39568dc32",
"0x77e8a2a9d0da541d9357eb1b603ee9410d49eda3140ba9abbe1b6cfbf8d4e36",
"0x1ef5a47f9491310e04e85c853bc42a12227721bc8ef99acf866256c6f0ac2b05",
"0x2d756bd8508664fdb9623bee29f62db368e7e9fb8c2f8cf806a2028a34a54ed8",
"0xb6440027e32df5bd12e4075461952f0c0a169f47e498833a0338776f3cfee4e",
"0x103b3141b18d49495ce38d5e0ab2a691e78193978da5888e36604c51eb757e96",
"0x4502bc324657c18c59a6bcadcc0735e706677a556f0ab33468abf64bd434649",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x226880584a57a7c552da325ea532bf382c67482108870675bac5d3d9b6a71abc",
"0x178d0b7b044c806c180b95dfbe188f99e7dad714554fae1365264f33b5204d38",
"0x110cbd05beed208043ab1cba8a604abe596258c516ea0c68b804d2e262989e28",
"0x2b4f9ba6e2d2e31078ed70f6a147e329d1c4b83c76119951dc7bcc6d2a944cd0",
"0x1712edcd1662f4dab78bdb08c5d2208e096d26aea6d8b5a2f1ea1a575dc29dbb",
"0x20e7ac1985805214842f811423601b3f18c8634e87b1433382bdf397b28b7e21",
"0x5e6b0e267ea884c7a767266b614d9f23883f297a9c40b2be9daf6af85f31fd6",
"0x15adb275543fbb0e083a10e1ec448b8eebf82185f0a99a06bca805737f0d7db1",
"0x23f2e8816906f5fc349e99c8241230167b50d8db22c5e752d640fc319c7354e1",
"0x8a8a0eb412422e0ff3bef4e8f9e98d0937293d8bd96c9ed823de14c7a60fe44",
"0x147392d188c52fe487d5e14652ff175b37253bd5fb04ec9e316de4cf5100500b",
"0x1a1a69d5bda4c559702d87b8ffbab347d61d5d5ffba016055b540409e90d050c",
"0x26265b87f8fac4c16383d9763460242746a0fbfc7fc375a251a39e5cb12c8ae",
"0x562af273c7d6798ad1772d383417f8baab7feffa3f8fe1b5061e695a63ea362",
"0x2277d743f99daccb8223eee9ed2647e6bc22c5f00a0dc9b45c26898227530c02",
"0x2ab7551e6b4731a0b2c00c1a1c57ad9dd66b2239a2754f64328d4023249f331c",
"0x67e6bb5600490688a67ca30a941a68f15dc97eb418f8cecceeb1d1f49af1cd9",
"0x299b048827a0cc67b44e53fb5897f27c57c448ed25d4be88b1b81b22186c0017",
"0x4ce6cdf689338f7df3c3ba84e7ef35ef59adce460340ea0d161a45123c4051f",
"0x17631e8c563356367e1607096074fcd220d0256a60e1e6d145bd243c5475cf9a",
"0x25be84baaea86bb16bc3de4e5578c796e1888ac898d37f1f835ea87f1aabcc04",
"0x7fd81c59493a306dec9f05c012a96c113a950a44cea7de572af401db8804f2d",
"0x2d71abfab45aa0b3d4689b2518ae16f87cb60b0fd9d40c3567e5dea122815ae4",
"0xbf1dacc9ee49263420b6b40b061e1de77884556be4629a011bb73c3cf8fd282",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x207e38309d97a6bf02d2c9071fb8c0243a8f6570c15c1dea211dcc2cbf45ea49",
"0x96401efc3b429395ea5c187ccef5c551ed99043ce3abe10e0b2f6c0fa0d29f1",
"0x25e2fb13f405f8cdc60da80af2df8f7aaea21aa8c5ea1b80edc22261c424810f",
"0x14f942438d0b6308e88366af640e59b35e7b90dafb9949cd395fb9edb36e57a",
"0x1a732391895868212d93a33c0c4de589333631c8260c991f7885b916d0037272",
"0x1e29088ed2ebabe07ada9617c87d6ae3eea384cca222ea5983550c9d25bb0648",
"0x5ee285acce6181041543d01d650e8314690f337372341336b4fb1b27dc1bdb2",
"0x252b8b5dff5e6788b2389b2e55c939e69871912bbcde09be55a0baf9f8c7a67f",
"0x5198e4ac3158c2f1f30e9c7333b8f185372db43467e884f9961396b75f7d60a",
"0x245a5fd31eed8204f89bceedefb467b89e3cf7fe91d24a33a3207bb6f083e19a",
"0x57bc812c85f04480fe94410a106b281d8f3e2d54b39e4fb45e0a5ead0910dfc",
"0x1afeecd7c598ce3f7281378c2e514c5be72109df6efe311497dbe12a819e406a",
"0x2fb8c6d1000b2bf11eac94956464fcdfb9633a271fa8b070f4b63efd7b5007b8",
"0x32899458487c72b4c48dc1f717a0b2aa3ce53b6a4b38558b7737ed21cafe78e",
"0x662f06913258bafb5bdf1aa929332c7c97d4c4490c6fbc8e798335ff76e126b",
"0x1584478d313986eb0ae24f5d342d3ec738138d749b5071e839c1693af46f3a3",
"0x2dba025efcaba3d1c4cf07885e8fbc1f11c012bcdc009087f306a399a7645111",
"0x9883180be89d40f292405a2d44f5b9bba1c37613ddf84bf28c4fe593fcf06ee",
"0x1ba2bca86f0f3a73f392649f65c1eeabb57e3527588289b4820a391a46475dcd",
"0x148b95dab3a784e6f57042365a46a01e5880f17e09f3141bf99c53ee8a1ff06",
"0x209b90e92015a18f13bd1343a34d905fca3ed55b88bf1eeabd3e542987a08628",
"0xb50cbb98c4c16293795735e6cad9a458e2d37f1c02af95b15272aeadee5307b",
"0x28f083282c1dc347bb8049f59580fc82bebfaae2fd4d5c3198eab42357656c01",
"0x1e3cfa063b3cd467a69c8a628a627faf26187744a879ed796956bc1e3b1ba00c",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x22063e51a25b5a045914651b3b3fbb41a432a2cd49fafa1a6da1f1b3abac6b39",
"0xed1ee65d2b2cb52e5c72dc18084cdaffdc8eed2dbf45309a9b31afa3239e0c5",
"0x9f1f1407a395396be8efd490907e71b2a1e1a761f5599060b1ddf9babe3ec3",
"0x24e22c3cd40dd01dea8ca00b4ac1dc8cf2fe8ec7404f09decdb5f2e27e4f6a51",
"0x297d190c65439de912d9b19a51a34f3af3062388bc90dcf02c95ac55f827f393",
"0xcbc6af2a7286736fff8c442d20accea23f927c42de68c5965be6b73f787871",
"0xbf4731c628503367f3a0979d34ebfc4e1b3a6ee8cb90f8e145ea71108f77b19",
"0x74ef632df5709022478511a69f0c35f167718dd3943a871dbabcfcfafccb99b",
"0xbf311d6ae97647aea1524d5c401392a2a6242420918607c8595073f00163f2b",
"0x2fb17a27e5d93c8fa198091d288eb25cc9a75a3cc2bb29c73b7c4962ba6b02b6",
"0x17eeb974a4bb33ec349adc4e3c5e9141c3fe5b52b8a9eb5f55897fcd3f13dff5",
"0x16c75dafa94b13f4baf5a849aa93deda4486711f92188ee41083f8ef0e2a19ac",
"0x122da8189ad70e3c28109ade01566f47039ce2a35d85eee2f2212139d7e6a83b",
"0x260972f4d1166f0a53272aaf203d54909f372f9ef5175fa8d15f863299bbac2e",
"0xaddc83c8f239eb4617cb1a6a99b9ea314b775252379d4a28092946834ec18d",
"0xcdfe4ff760184a4b1e1c7df835824830c35d9ae719993e1c8b61968341c74ff",
"0x6cb7b1d7ee8b715c2b325853d8374f2f1edd1c47defc42d560fb1ec2ec4093b",
"0x8d48ac917970f6318a8b999fcfa64bd0026915cfbbaf2356c0e68415b42cf64",
"0x20f5eca934a922f2324ec4f5cd1423fb342004e24db642dde32d4f49b020f19d",
"0x2926c1107b74752a5b0b0326f9775d3c0290079b81f1ee7b3540c857a2e6e7f3",
"0x2ad7b40da5583cbffe41e7ba8a9dcfa0aa04526e17a359e380152ab05659aa3e",
"0x157176042c8c3678e6a57db77c420cd2aac6658f392eefec6bd96ec3d75d16e1",
"0xd6e65707b940bb40ce868be699f58d8f328c635900db4f738d9ae05b337e4e3",
"0xd794b0f796362925d3c3f8f7a5fc0fa8995ff16b7cd198a7a4f2978033d3e61",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x20a525ca48bf502bca0dc9aab020e141e26b38ec47a44e1580c0d1b616351398",
"0x1ee320963332762900b4744bd20f6f06d90663c9a45ccf876dfa46ff7b6a648b",
"0x22635f8210cb3cd5a5f3d6f3c05db35f48f4dd99ce9689a4a49c1396fd0254b4",
"0x236867069537dc76045fbcc34387c0d659f274038f60bd46092c7c5c6d2a93ac",
"0x2949bfabb09d51a438ba0c845a569c3cfd415a4767babba43d49b4a7d23efe57",
"0x1834d2d0982cc3e0a6783a1817d0a70935296a1e1cf6ced2fb36e49399ff129f",
"0x42688f81e90f021c645ab69ead85df5637e8c35e5f747da2b9353fba3614759",
"0x2cbf3eaf39ad0427ce377701b0aed081ab11a4d8425a5d85eb6ed545e02a3e67",
"0x28ee79339c57962491524337981f039783042a61ba46bc4b6d27842ce253e295",
"0x2dc6b0d76d332c582bc225e0e3852a84e670441a34a35271183dd071b3a8b9f1",
"0x7cf8620fb65b2763c494dda02d454c32d86918bcd972c81af8896daa2e25220",
"0x19d3305037fe6d5dbdb1c2cf07dbccfbb3771dd745a1a776027e76b829c38e15",
"0x2e6f19575b0e917c325b5455bfc97e65b080d5ca3b0d866a13315efc1f5afb43",
"0x1e726c0acd6e169de2eeeaceff128e7691b7d4fa8a046ed41a828563547a3270",
"0x2527a428504d8fbad1a95451f6968dd7750e9b88eb737094d0d22806ea461bfa",
"0x1ee0e151bffcaf72aa962734818b53086af9a5eeeaf821fa85a16ceedf5006de",
"0x1332d8ea514225643ee26cf14ed13c2936780d3b0df8d13a0d80c7593339dc1a",
"0x67440d1b5c5c1e37921583ac6081d7c0b614430461abbce3445fdca1c25e52b",
"0x217e15b68bbd0d70328ba92eb9848533a76fa177015bbe167d9648e216d72fb",
"0x1d5f55517167e8f4e07ae1d8fb025baafb68072f0ecfc39c2ab6917e2883f001",
"0x1ce431894721293173604b5423cf3be2aa2a4c602244ca33cfc474364261e219",
"0x1870cdd25b0026ceb6ca8bb7a4abe4c835cc54fb5d4a2bdcab837776e4a41f36",
"0x13b6c4c8a9796559718d72ff32d05acd285d4e36b24a0dda09181dcc0b821225",
"0xe59398cb50c995ddf9469890c14f7eb35b6d1ff21b54fa88d75105180cc9c84",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x2471cdf128c6570022fa1786a35b379627cdf4a1cf0c888cddf80196fad77864",
"0x1eddc8c186b5952235d179801e4d1f5526b26e72d637d482d34aaf8acdfbc678",
"0x41287596ebb654ec2703cb288320c78b03e252a98d304b5c670d6a9f3b75f11",
"0x2d27cddd60f27e931720ad20633a2e0aa9e9fb34e53a1c92449c42539836cc84",
"0x386464e269edd20cd4abedb92ea083d5251633ec2ed40b9c9298a6b03d0c47f",
"0x7b28d6f381e7fb054165533e6c22be7235e01dc2111c2586c88cb6b13915daa",
"0x25a51836e32d3111c1ef3a5b222a45a8647f491b251a0e7d548aa579f04dd532",
"0x4133c14bb36f4f02735144703cf36b0e6eaec35a23b23a5b3d7bbccce729e3b",
"0x1a107c44417a85fe63fa5f32beae1188f7ef9c7e9887840e06c41442065fb590",
"0x11963a7f8f62abe87fd0e9f059bda23e56ea044fff31672c16653096035d6e60",
"0x63942281da7187cf115521332a5480ea6297764540daf35e844f9a9db14df1d",
"0x28323184f7d03f5fdb8c55416291a0f2893f3f8f704345fd197335bab60e6313",
"0x1d5ee3c314bccd0507e0e1f3d22cde05f8beef4006bdd196d1cd972a00f328b5",
"0xe3e7e1bf77551287cb3436a06bcba1356aee949507c50da7075fba70259055f",
"0xbdb1ba75288ad45c653e6731b73fcf8c2e5a06452a7e9b1055349ca1b954a8d",
"0x163efbc5313a19dfd299b4f7d24ac36fc09dae316bdaad22f2e7354890487b3c",
"0x655a2ee9811be4138b87caeac43693187ba723a4a252e1fe5aa481cdf35dcf0",
"0x221ab7029ca41cb3703fd26fdbfd99f83da62e3d6aed9c715fda493e703ded14",
"0x17e06a11e4766ab95ae693ef77be2fd5a816abeb8af48e77812af31a9bc97556",
"0x24fd79ff869a80007553fe52dae87841d271b05d3465e21632e97808db658a79",
"0x2937964cb5feff56156c0a2d36e7d717f5133c52311e8a9250e3e538c6d6a2e4",
"0x115b54ca59723ddcf0b8b72e014a3532bfb9461db00c87b805e6eb6f950eb2fb",
"0xb83ba59544995c109fe67c59e1c6682df4f0a94420449255f2e42125d1522e4",
"0x856ce0b9c472642563a58f67fbe8490d213f1e60c841539d6593ce72c8caa75",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x1234cde55f1ce07e8add8919dc2786c2a2e8baa0699f9309a24a6977cf4de312",
"0x2728518406453c21f80cdfbc5ae5a7e5bc660853c39c07f08f4ca48b866fe708",
"0x263c6e870681a568879af7059e9eee6c2107545775a707e5d397e090bb406681",
"0x264b910c5d9c7677ca26b01c95b2eabda02155d239a7525aacc9e7c3a1b31108",
"0x3626d5425f196e0ecc625c95caf99c1788ab08826db99cfc994dfc07cf7cde2",
"0x285b7fc8640c5644ef5acd76eba635788490408488d4c1c7fe5e154882885b20",
"0x806dfed34a9e837d6269442a1ac7f06b9329bc91b841651f866d001457a7e47",
"0x17d501d18a443c458bc2987ac700a167935fc95c0b43b2bc31d3d1e66f4f4185",
"0x1c265144d850ae945f896d29b8d25558fe572437cfbb23c0d2974ed75a8446c1",
"0x2d349fcab317e2f10486728b85b73fd55ef9e72913db57a96de3799d79331a5b",
"0xe3b16089c86c7518eccbf3e7b5d6c93a7f57dd663e313bd9278599baedbe8d6",
"0x16842185b0a19379239ac6fc9576f9662323e9ccb19c73ca551dae5a204363ba",
"0xafddf6a0ff562cf8cf83b9b4aa7f77ca5944dc203e6716ee136947b7774d185",
"0x1a7b9bf02113552d2267b66a6a183c58bd9b0a71b607424034ca249f48056aee",
"0x1b292db8eb2df955d186044eb865b53c345855fb04e0e7aa34728f3a33dc8f61",
"0x1166bc2548e4dd1a597827e1ff6b873b8c029056733c2b15524595f6646fb9ac",
"0x27ef791b1fb45f73950ca3297ad2eff668164240ca0fcec4d505379347a4b32f",
"0x94e36712d3e0387be23f4e8d2e8932333c2b5b329ff01b0bded642875aa8d8c",
"0xc3cb8c9451dc65e2baca4021012b4107b1277ec1e8cf85684523a86f4452caa",
"0xc16066d636413dba5340f2dc58657da3d04fd4f649280bed2ad6c43dba22557",
"0x26f53db3a19fbbae833e6dc50733326512531bacac05e1142b5169e0a6f37b16",
"0x17bfb665418fec0ddd649243c3b77515e92eba58355437ecce39a21b3da565de",
"0x21ed66971a5e0e1451a9657918e2bacc2cb244d2f101e4a870b7c40400d8e004",
"0x2fc72d372345e9a20344054b130f91cc301d409bd2ede08380b1d2cc9296a0a0",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x242b4eadff11c6d3d54f5372755d36c9829ab3f1ad36cde7fad1b4927bcfdf7f",
"0x85e6d5205bc517634147ec300edcf4d8e40d319b2774da859a677ee823b3474",
"0xd7857f8c2ef1d3f6cc0b9d269080a8352f716ced9a8541b58047570931c9a8",
"0xb8a79f4d635ec38c11720fdb6bca9a37e4ef8bbfd3c3a753815ecc975c6b1da",
"0x2d581f4dd4f7a4870f6924d8ccc3aead2778ef1e6dd93b766faa89733c57534d",
"0x26a82a89ac34602384406faabac1204664088042b012c62c312d10597d4473e",
"0x119c9ce0168defeea8eae1085b57836db28898019661e84f988bb0c5dd3cbb1a",
"0x1fdc49eac128a24057128d92ee2b8ae3a28d2ae331e53e898a9cc4baaa67e144",
"0xe63791edc085e7e68fe844a1e288175214f53697c447a06af668ebaf9624d7c",
"0x8e8a95d72c8b0f5572e434cd1e8f29a22c7a051beefe38bcc1c8c67021b6cd0",
"0x150bfbe651cb129452581c0ac0582068914d6b6225eee54f3d041e8a04ee959e",
"0x1f67b188cbddc9dfe73228557f41e28d562eb71233399c51a1120b6f6aa84fe4",
"0x3a94eec3b3b00da129a13059883d56b89d02876861ccafd677f1b692e74dedb",
"0x8a03a992c391bed4739308e90e2039caf26422b0fc314841229d9e65e29305a",
"0xf5db68b751ab629eab8876005534376e79c4cf2a3c0ce2c7681a9a67787afd5",
"0x14c1cf9ee31fc11c4611f6def094e6928ff1469cfad92b71c27eb02938999dc7",
"0x1c8430170e0d27fc8523ca6c5878db717b75136669b58b0582278e4b6a43207e",
"0x2eaabbe95b7e6d41e239af122c392f2c8a422309ca8fdf3f73fd18c4e266b50",
"0x28b85f746bc03b1a6497f9a85fa07e337b664a8e01bf96a096195cdd8dcfd78d",
"0x2eea090dddfab6d9d45f8fdc01e0697db257d6481ecee44eeb736310a57194a4",
"0x29461ccf449b9fe3a48b3527a1b792f31761ce88a12a1bd185d02989048c6723",
"0x2d1eba58a7196aeec7ff60c922a6a37d238bda29e3578e754940fe55f6b44f6a",
"0x1d8488523480035454dd45ab1136e55b48ce729fc37fb3bdf07cd401e3df9864",
"0x169904bf4f7348ccd343513cf038cc546cd137c740b77d3df58ada6cdd49b292",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0xfaa555c1adf771edfa1b4f67a73108c7325be034cbc2c2e6d24554e62efd737",
"0x1a4ceaae57de9dbb19bb3701ae021b7b246fb7550aa505df8f95be742293b7e2",
"0x22d8eb68a906dcad75da8ce62f6763cbeda8004739851057965302696e185ae8",
"0xcfc82aa08b2bf7faf7de17be9adb759389c398441bdd294ed0dc25d3f7c4f8c",
"0x216a462577d231190606ef2920c63455045b8d51fbc6981a103a5135335f83dc",
"0xe63715ac0c89614281493e16b0bfe6d11194b36c1247e22838771eb1ec766ed",
"0xd024106eade54b9f8b5874bc7c3499487354afa2db7df3be1a971c8d2405265",
"0x11daebdd919b5622e294312a5e34121ae33104fb3e1f9e89dad0668f0517158",
"0x274a0198961e0c98ea0f75fe1e38ee5e5962225738d6c8edcdd5623e7b24eb6f",
"0x136d49834864e42917bce7dbb0e439d28c2007fbf09beadc78497d1da2593b58",
"0x18daff02be933186319ae1bab91e42256c5b56ea3d2d0698189294828e2a9076",
"0x13fbadf8255db09ad6b28d0a13874e8586fa565155da2145f80fce40f0c175f8",
"0x75a76152cb77f3a74ebb64a8b949d032a2e1ef7ef0f35fddcfd89473b5c1e71",
"0x1d1a9d3eff8079f2fd739a8c1ec1a1d2c391befa15c4497ee78e2cca6a327495",
"0x29132a7d6dc081cc6d7a5c3524f2805c9ae3c66a7de1714c4e75a9ed06206bb3",
"0xc1457b4dc6efd6f506f14d2cb839adb6995e2565223add3079801818a2b3b9a",
"0x66406956a8af95c2f8e84f977161005287832eb4860d0e333bc2a6738be404e",
"0x2be8ce6965272c3ea5fef305d80056972b0cc10cc89ba56df234736a8168895",
"0xc624c5b84f86974e5992e2bf99aa7406db0bfc77db799e680ceed051578bb65",
"0x1c9fc7b076255b1dd44a3f77be12b8c0c7136880ef39f02aa002253ff808aab5",
"0x1ed5752920052d66ec89e671965ba4ef5beac9b982b7405174c8c2cf62ba9c2c",
"0x11a79d9e71816d2f90a16813583dbcb286ac19f81016b01ffa4318be074997d1",
"0x2332f2f0231e1a5f4adae2661a4988c773f58f806ad73cec7fa8410327c29ef9",
"0x92041cd3c1f24dc8700053b6d0b4d130f9709bae71ec397d1ebbcd08281e1e0",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x23402a04a12ab3776b14119bbf85cda4e8866dd1c8c2ed209c5cf5a94832d9af",
"0x21f6d7c6cc0750868e0310bb8a7fe02b70afad0229fdad5c5cf38f7231d80528",
"0xaa11c91a5f547de0061ad5ac646b4f17580e985d926dc48303da965dd994672",
"0x2542d51f269de541f7040d7d707fd4d8a045f02c7f0a662e0458abd1c787cfa",
"0xe9367b46e6b89363dc9cfd523f4abb4d123a0af9eddd5e356e63e3d49092542",
"0x13d2aae41f6b1c1b5bdd9c576c7458709c75eeb7af22fe0b7f5d98ea20609007",
"0x19a2b2dc5988a9ffdd458384dd5e0cee7970afb38c1823fe897e485fcda9dad2",
"0x8dddcf32490be94e7be38105e717382f7966deefcdbc67432c312b8aab15a1b",
"0x1a30ac3889e0467ad2178fbd85b93ccc493565c376202982dd16ec9bcced261d",
"0x2dd2470d7ca5e69e5728e76adba044e821425b245bb5cdfd48132b4df5f362e1",
"0x104563d762464be13f51050d3d210162ee31e4b14f0e37202aad99f8723f0ac0",
"0x121b7e910a0ccb4e4d5f220628cd64c2846fc5f470a7c2b6ea38170b9d058b38",
"0x2fd423fe5d1899fe054ff1b9684ff93540bc396589289388681b90fcb8e76c11",
"0x298f732a1a912702fa4c4090d00861d99bbd4eb800b20acdf1c9d4a6c8226a62",
"0x26f56ce61eaed10294727014eb88ada99fe5015c911705cf7ed7bd8f04269daa",
"0xc316eb74780def4c7c08420d1a887d3f3b8028f2d65ef3e18822ba972a50c96",
"0x1db5c65a2d669c928e82c2ba7a85213d03976e7355bd3aba90444c8d8ecbb108",
"0x29fbe3f0b5d6936f4e42cf5ed294e1a18f7c597faefd0087653f06f1cd7ce55e",
"0x133f5377394de76650324177d895cff11b4edb902724138669df63d064254274",
"0x1762e6a990654a18eb15171a84030e43a93481ec520b86ff65263055551d19cb",
"0x2bac62e64e374a494b9ba34ac9cb872ccef42966e1c98c9d12696e1b7b9caf0e",
"0x1dc2f5d192b065461e410a353b6e9ed48f8dd9a5b59e0d4567add1ca1edbbf74",
"0x1e78930fbea45070dc63eb82fa3b44feb8811842c8040f584482e5529b9c08fc",
"0x1161dd83445bc4ac05e88f82b6d4b395dcb7bc08bef6bc0394e2860e1b91a45d",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x2d84302b2f1ce369033aa5de5bb8498f718102642636ea98a13d9f2f9e03d70",
"0x3aa0b6d1722c2e927078f0d0d2a9e1651a387b0a50aabe4c3e9f9e29ce5808",
"0x1851a25520c47c40439abf21fa5b9007ae1557a0d7a737ebd36922e1ec2fe713",
"0xc88238b7bc582be65a3d9780b1c502a8b2a6bbfcf63863ea988e4caf6e75767",
"0x1231dfe4ea1c60c263b7a7f849c8d8cb42c5506161b7fa87e527e917c942c5e3",
"0x2ea0849f20d6ff258c0f184ca8057bfe236245dd4b8642c64e42ef4a1a9d8ffd",
"0x1ba62148f57f420101c599eeca0abf930464f2c0444acb90d2fb96d3db62f7b6",
"0x21f4a3066fad0b05bc69b92e00cea13278d1a5a67436c1f3f2139a6ee79bcbda",
"0x1be4c6e03d2807854d234372f267581058b173ac8b3c7483c6e8dc3352798b79",
"0x369cf9d45a15633cf75d2234f1014f60d1ab30cca21b0fc60af3c0fba6cc06",
"0x251ba00e6136bd990f4db7457a27df54e6e6a986726cb005ee21e173dc9c982a",
"0x290465aa219c5f39fc7dc5b210ce805d70d3137c43ab354abadac718f5357e1",
"0x72153d3d9304bcb121e16ac43ba352e3492aa9264e39abd0ad500003b2c1a0e",
"0x9ef6ef37f5f703229c7c5171a54a9e7d70151ab47b6312a3b592208c192cc2d",
"0x1041b9436273bece36bfd9801372251c2e753b50485953908c35b63979d9fd82",
"0x26afe74d2bbaa76d568a55b8fe35f02e5e913285cb5678ad631654ca03e11f22",
"0xab136a0298a4bbe0d53250d7be1179123aa3f7390c39c08d76facbcf387efb2",
"0x2154df61438fa728853b1e34064bf3bb988f36af48ac6097d2845a4ed924a360",
"0x59b12d8356358cdf3690ca2259447a7147e0e6d33dd5e0c62293c1fae3c7057",
"0x1a01646ed40505df3ebd020f7aefb2dfcd2b194d697f78eb2c6706193e25c783",
"0x27080e00f575ea9dfced456747507b55a0612618d5377ba4745b1a2c007fc4a1",
"0x3b12781eea743ad978032243b55ffa3c23ba980f8f1fe48f72ece1ffe09b1f7",
"0x10ac2c9f77fcd414c3bea9acf7308733892b1802d061fbe3e5ac7d93a437c85b",
"0xea74b2639185bdaa176c285f7e674e4ade050bb08aa1eaafe0a0516d5814623",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x42b91f98007bfadfc37f8c7be01e1e6d1a5a001f4163dec7e6fa8ecf7e5e9c1",
"0x4f0196b4cc4a2fd24b603ca65fa4eb23ce4523b695c34e9323a1f55693f09d5",
"0x20687749f9cbe6aef88c27b6bccc40204246a670ede772decba2f34a61bb824f",
"0x2f9039a4b8b4ab2278d0fdc4b35679678b1d8243ad4bb814b8b7bc3e1b8a4b43",
"0x6012407ccdb4f5accc26888a094e35750aa5d88775cdca0a9881e816fe240f5",
"0xe35046c49cc56a7ec8463053e159925bf55109e8fcff58caff08765476d823d",
"0xad83c2a587b98cb240f3feec78c6578473f99bf7224acc545793094333b700f",
"0xbda24254733d7bcd642ef47c6731761aa67e1ba0ec64e03609d3652e495fcaf",
"0x1eb04acee8c325faf51f6ac53200bd56b052e48806bc12513c165e90c0ea75cf",
"0x25f00927a77b2fc8aea3e3df5a038ef8249bd29e7f6422529dcce7692efd6376",
"0x86ff48a930b5807dacfe436fcc67766ad4253e352907c1957127d6a41b6387a",
"0x22d31103b21aa0b791235ce90ef06cf972c8165bce3c68b3714f89446a42f265",
"0x21f10bef68e2b8437330ebda744e2c3e1f26a92c3336c7de3b645a8f4369dc8f",
"0x2e3ed873b0f6ff7facbee3a110baba8af030fbccaeea386ce3a960bb31a71951",
"0x16d86751cd45d37bedabaca6ad75277e9864d3f6d30e4c0cc2dd25a9ae58dae",
"0x3d059764e5aac685b59387aa484960ed4ef9639843fe308f8cc3dee87e3314f",
"0x63f962a68390a818e545995d2b3d53f8a0a5f0aa23451e6d14b0851ab8bb573",
"0x2d7df484595413f83861ed05f30146f9a4efd46b0b90f7ca9440e30c27c9b931",
"0x5d966e25cf9cee974e405c86aa2a1b7ae63f5a8928e136e12249dae3cb12132",
"0x16bda6eb44145f870e0818bf6f60a068288a5ef23da1bc264e01a11fc1e013c1",
"0x287f1bc804ef51375cf720b680501f7ff1c97cbe98074ccc226d18bd5e18b381",
"0x27b1edf001e3a0a8562b991a2790a5b48e3bf45f2d637ae7b5f1ba7a6ad5822d",
"0x74ee1772d860b6ad09b16d82e458eb305228b24a28c70c5f690abbedf70d506",
"0x218ef3d8be2c4cebf3b2c6a75ddf98e77d79729a0f9d6b111ac0895ebdaba6b5",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x2e130f21aa3bc952d00ba26b10b65c1f55c92f34a51e0d6d6224d2daba241788",
"0x1e6f16db6a97a384c7164733400ef142c41deb040573adb8b0fc71efc2f76468",
"0xda66242a6a2e27b519dd2335e559ebf8334bcb00614dfce963dc07fdd7612f2",
"0x201d2a470fdb240a6d4008cfdebd4b579df34c273ffb66a52ec89962e1a59b5e",
"0x4d1c70932221e3983756ed5d5ca38ef603caff2d2168f5f937c1510775b0e9e",
"0x2a43db76fb42a082375f5e21c4daf3853e9c57d8627c2caee2d837ee857fc6e",
"0x188d71e846b0e63c5d65535a6d121a9648d99af72f72c3f38bc33751e999918a",
"0x1cb4d77c20517ccf346b92567ca15a4b7f7079a150a3b7fbc95b474d2c07d241",
"0x2de6abda392578254c6c2949559b851ca312e5c098ea17bdbff8815ac4216810",
"0x97bac96307e8ecd42940e30d9bde2904025715f5ddc8d6237691c3689635adb",
"0x11ef6e021d4e1b51f156a1c1863d497c95fc1df010d906859d510a2c2d01e537",
"0x54ed7f2b2e4cfea2ea62cb01379d94041481dc85e94cdc4bde08da9b1ba57fa",
"0x16d8390b0ba3174141236bf21283588887ce3eb966b7d45cde064d5cb2a35738",
"0x2db8640099fae4b29bc2ff73424df4851e33eb823b577e4354ccbcb1392ee0ae",
"0x1de2025f4beb8b5b58acbe6126a092ec0a6f3a664325a88e9a28bce898edf98a",
"0x21a514a8d477d92a308095092224f5562af41cf964d34be181e95370590b5788",
"0x140ce2c9605e31576e464e6cbfc8c9712ec8fa2e46f97422d52b0b6401aa5b55",
"0x20313b2273dbcf225f74da13f3e0d0909f47e77e53e833e4a12e439e185dceae",
"0xb8251930e6623b8c062163d973ecdb0f171608c126c7db4791116621f2869aa",
"0xd0b3893c4f70d16172884b37d6242f07ba39e4c7180462dbed175bb0db0714c",
"0x26917b241a12390182932069a99420c31580ecf06449a9fe7871e3193cda0bbd",
"0x179bba9ed0bc1ad6942990e43de2abcd2e7094d7d9fbc02dc2d82b50d9970e4a",
"0x2184a1b9adea49757d59d0c17c369efdc044f11ffa1598f2f3bf4bf1dc7fae58",
"0x65a085cec70ed53a9d53827c7766989219c6474bc5d415be1706e953de20273",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x13ec63dd902be70179d9a190f2e5f1dded28d2feda5d6ac4c9914c3bedcae90a",
"0x272d4b6c21e2f7d2c83b28588f5b0f462919554cf4faab4bcc668ab86c877eea",
"0x12e29b20a5157f1152c41c4e832287b963b6c774de743e4d3d7a5554cc39aac7",
"0x2c73520466905c9230aa6968c6ff3d7bed3130cdceb68bc5a24e51da861c1153",
"0xb370f950332b70ca2c247e2349d2e2e22e2d4a4f519efed6039504fa2b2b280",
"0x1c58bd926fa20dfa0ed3b7e53fde4e4d7bc4df78d13969fac999dd858f0df678",
"0x9d50596628e021f264983ab61a7bad3bcdecc9d6cd3ec46ecbd83bab569b66a",
"0xad3dd8c790db77df35aa78dc84ad3571f0a70fd70b5ec02fb62f4a459bb7d74",
"0x154ec11de0ba022622b33a918364a375f4632bbbd3a6c0c7b8fd77c3831584db",
"0x2bedf29086a4a80d125df6fca693c198a424226bf0eeacbf4c3990b7ac08c7cf",
"0x204ba94b0e1a592391c9fb397701c62d724b55d28665ff3908d277f2728c37e6",
"0x1191741fc0fcbdf5976b32953adea3cf062a2da42a317f0a9907426567d759ce",
"0x8453abba1a812cd70189049a362f26960ab98640e98233a9799ff9aebc15bce",
"0x2faa16a34bc765b803fc320e5c9c3d60cc7a62bc4317fe5996cb5352ef391f08",
"0x1073a4c13414e4f47e3dd58f411b86f1269b4662a27d153b2ea797f3af9d840e",
"0x20827cf24daa915decca0be0018f95f33da122dbc9d31890b45831132296dff8",
"0xc184be1457cd3f30372671039b63894ec186f79ac12d4155c363cf60da9c2b5",
"0x1d1037585c8c002e4fa645846b83aa46d418a7ec475f36a310b5e93ef30b4f19",
"0x1bfbe62e3714574bed5c8915cc913e23ce5654d217fa8933208cee6cd2a7a733",
"0x9ac8a47968e147d7abfcbfb80e479a5aa83ec32fc9a21fd80277a05e36d6900",
"0x6673e8c09274a6b074bac39a9280285cb628f4c90f329c27d3ba1d79b1cc17d",
"0x2a513229a77a36862deffa4a24f4e1d5602d52e7abb7734cb6a5bfb006a14c70",
"0x7aa8c2df4a2083e46169b3e24fb2d0a9867ea17103a19c13fc08f832aa17dc2",
"0x212c78bf0b03c88fe1681497cea1b03064c87db0aa244f061d8135a365168163",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x3a58dde40365d7a0250fc75c67454329da04685e04a51bf51854954a6af915a",
"0x70e75afdcb3d8000ab4d459e8be1c4c0dcac213e37c3443d5d33de59a31a0e1",
"0x1dc99b8142e7cc81ec21bc7e5b37dbe2b29e69c290c6c67aa4fc3a7d4d6f17dc",
"0x2f160a3625bcdb7eec2ebc6a27f6d3aaeaa28e9ab85df1d2c1a34126d2c648aa",
"0x1ae4132fe8261cafe562823d0e2f059cf7917203bd3e1ad0d71b58a0f0804a67",
"0x24d5f4bd7441dd4ccb80955ecb60b72e676401239370ad526851b7b2358809fd",
"0x494f46648ee996ed2e7f654ae6c07216c090b6c4f3599c6eb18aa4e7cb761e9",
"0xf5f67afb9c5934a2d662532a7ecbae90ad260df4189e76f71bf51ce6600ab1d",
"0x135cd20c46aa1a429fae22bac540071d4baa5aa1f7cc662549c2a115e1a0152a",
"0x10b14b45ef38b4d3bd1247e2da3a65dfe290fd02ff1a15ca598b05548d1f93c8",
"0x22bfb1953a1022f21f1738c8067d26e250c3da6d950f0c17a26a420f898c166c",
"0x22dd1a3efcada96371c4b909e8c42dc426e0e040d152910bffacca1ec9dc4b72",
"0x2ec9e354b5f7415057e69782bd7c0db477b2ebc45909255dc90dd3e6fa157173",
"0x1d176d1f403b4a44e598c6dc34fdaf9c08e582e542748d9f18c9c89887a7ca06",
"0x57d65c1955ac40ed215d39c30bc61d015e505e3212fbb230cc61caf6dc9ca16",
"0xc16cadb3191773117e0038e8fa48c9c200bbfe9f61359979c978de8dadb9220",
"0x228354c24667b494d2cd53dbd85eef57c0b3621228cfc75ef08ee11fb331521d",
"0x11dae093fb04008a9d994fc7cf27d09ec0e19ec3ad1d548b5e1d205e97de99a7",
"0x1e24d8a3371d286d6a87358c6acd6757f732bd816b6c77e2193f456c237f95d3",
"0x14f5fa99460312481bf2b2c6082e5fad5ac3659eb5a13978b2bf2a26627d076d",
"0x274f78864eacb329a3ebdef354bfba6a7a5d20aa8ca57917c01d5ea57bf5e449",
"0x1aef2197b2a3930a466c9f2f8ed512af424ee99cdedf0d939bf5323cc13ddc8a",
"0x241e5e13407be4e0e123f9106ba3342a687e6c966d288b3b7feda4af532a422e",
"0x7914b11b3cb937283ee3129dbde2435825df1ed64d760a62c30aebf0ea6d522",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x2ef64fd1945065ca12f48afffe7527ade3289ad350ffe9dcc51b2cb05886b4ae",
"0x1e903fd8974ca0ef97c187e30a5dacd75151b3de2615bb2b832a6c81801e82eb",
"0x20ecf1440148c2b31f9a3c33f59da812efa0755507284665a1d5d4bcfe47ef85",
"0x15e956ab5a1c5a357e9de409a19386abbac37b453bd1ddd174000079b106366c",
"0xde22a61fd6607441d0894264777d660bcfa0cdab9d1da887c81e70c7bb8f7be",
"0x14a1ab44de8546185905ec2bfb7e9b0c8a330266a62fba53b8c5356cb5f20e76",
"0x1427c18b34b9b1962db5e13937a3bbd61a2af9e9b3760eb42ae17394b9c64ffb",
"0x276b0876d63e316c4eb32dbb64a4f4db99aab13bff6d666aa985abba4e9c0b74",
"0x1856468cdd489ea75e75dfef8d33539afb3c3e8d57e0725554897319c692bf48",
"0x23da22d7fadf8ce07944da0d1ab4f4fc9e2d2bb2ba50909ad99c86f556db0481",
"0x1c41fdd0f5fffb3d99ddb3a2b67e62a13e0dbb521bb4afedbc54c7fda3406bf7",
"0xf0bfb6289d76f0eebab2d4b5fd854e030f11672c8f362334290e0cd1f9fa051",
"0x18ac33130e605df004d682d08f9b16b888f88c3e1562bf08a24f7d254ca270ad",
"0x2befdfb192edf72525e96cd3aee3a1e54d4068121a0eb34d1064e8b7c8c44267",
"0x7839fa38ddc35348448d92a9122d84ba951ccefcc88e2618712d4ef896b7a2a",
"0x2bc35b2b57bc9b2be7b8a728125403c5a78c2f4d645da33b408e6cc79674d515",
"0x1f38bf25ca2c67ef958d3e92a44c3b4b80b910d3e10c3d0ee768f28628d6d7c1",
"0x1cd11f045b25737df9183843f5fa01f7b5ab00714100f0a05bff9372f063b52",
"0xa7f87799313df2c5edcaf10983d8abf938467fa5df74bcfdf0d51efeca406c2",
"0x718d416b20114551ccde2747cb6b15e889cc3233fad8a339465abc3273dac24",
"0xb45368b0cf6a77ac6e73ed23f94d5f8fb90a77421972dadc0d70c17ce39cd62",
"0x262dac40e77efee5a07345c63e77e946aa5d7640408dfc0dd0f27be77f97ae9b",
"0xea488fc1f7afec912267c19315412c10754a080c11a7873ca4d027935fa8b89",
"0x297db1b6f71749696ce48fe0862fa63d5f28306715a19762ef8ba915b9fc49a2",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x156c90ff4f955e0fc967223524cad6608e4d9cc8715c249c3492353730d500b6",
"0x1f4644da64c00905c3a6e15ada27cf593998574f6ee744e85fa9723345632886",
"0x10d4e58ed6e17089661c0bccd2c4564df12ebd6c4a88115549e7147491c671cf",
"0x2ad782fc25c4f0db520280f8dd92871f7bed6d0e23337d36df2141fbddd7049d",
"0x2928371625d6dd4de31102aec7726a15d88df0da173ea8a047e46e4562162e5e",
"0x2665ff9e95204c0eba710556e91dbddec9f5060ddda6e898a06b9078d170abc3",
"0x110d5e6488836ae4bc344cbe2406f494dce067adb21d69eb96b43bb7083c0b1c",
"0x16f7045c1cfdb025d926b966bf994728ef8a9647acd20b245ea1c41ec07bd704",
"0x21533d8130aba1fda6a31d4be45e3b6f27e1165cc7acf062d9170a874f44566e",
"0x29b6d6e0065b8aedebd2048ffe74b6ae857373d583adef571b7ef4d8c1376cbf",
"0x2bd0d29ed27a49e3cf5804bc515475bd2482830530485f253279fe3df313651f",
"0x2e5a5bc179f78f549317605f271654bbb727f5b35fa38918a308374a221b30f9",
"0x17aa3fb8d187b2f16771319c0890cc9a814c4fef3c8fd90277eda73a7fc9c1ea",
"0xfecef506e9a1c5363eaabd2e5d75ff06657ea4a701577bcc0d31cec282e6e99",
"0x104e7bc5cb52c3949d4ced53464aa25cbd419273c7159717d4243b8ba3e66289",
"0x2e2d87bbd2649ee3d7feb4a665a658432b9864c9a4d3a5b52bb2813f43af845b",
"0x2a737d085c1ecad2baf1eba7d7b79f76f3385ec88cdf0d8823bc721e7f7d5ef6",
"0x134ffef044d6db42e7de09eb3151188391d4a52ed4df145749fc20b4d0aff94a",
"0x1f46b43cc2e57fb9f22aeb6cd6c9d671cfd6fa043702b613f3de6cf5dcd4a648",
"0x1427b946ca939159e1f36e6a4e88d850c84f00698173d8ded2dd3a649ebb811f",
"0x20efae422eaa4272a255d02f80c304ceb0eb99dbe70e734901ce8303b7e75996",
"0x1fbcd3f2b5a6b08a9f835d2c56ed46fb2b9b9f0008e71fad6f072cc23ecf4e73",
"0x1ab1d914d85a78fbe7db057ad0251cb103d0f1fe4fa9f1565bb1defeadffb560",
"0x185d3cbbbd397b4202e6d2d23a5475ef93aaae25e9c720a849189b38475f3ebb",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x9a33338a814ca4f92e0eb0145510136d27d1a970e859c461b90350506c0ec73",
"0x134919acbc6872a886527ad4607df32a93f8d4f86cbb15cccd389e3cff0d5595",
"0x2988cc231f59a14253e978202e190e60904d3641819600eec68e3bad58e6321e",
"0x7a7e7e0247dfb327857f6cb9b2cf9102847c8c16209be817cc8988f4aee731e",
"0x102415cfc2e84e3b54b636a1125c5acc86ac2414aa2a4a36fca51c0902e99a2",
"0x1205491dfda96dcd74d0ea64c9d05b74a7eb0b98cc4dce972e3c65072ec779b6",
"0xadef8dd1998f07ebf85734cd2d480c380b3ceee9c1669827f9590f1767dc148",
"0x225f99bbe94d5c93ee09123f4655dd2d6bd80aca624e4d8f0a064054e232848d",
"0x1e8c19265e6565151258ea11206b5d8a9356cb614709c31e4167046d52dba14b",
"0x452cbcfd4d1de35a869a85ac1013082dd4ac1470e430452d4a8ea1530f5a3a9",
"0x29bb179886a2e49631442fcaf681e790a8903c96d1eff6647945ed626dc4d68a",
"0x1e06f246e926b517f3de008067cd6bc9f52e8d382c458098bed8c4d2cb183ed8",
"0x92a8624e09cc127fd7d1a32aac8383e510e37d6beca3fa117cbb1355e6eb8ae",
"0x29e31cbd24fa9de5d401438492f9b920ffa56adef762687c61ea562893ce02e7",
"0x1d47bb665d1bf9254c3ea59be757187acbc504b5378076fe029c4570f835722d",
"0x224f1c92c0c3e84e360222c40aa0f4311563bbf62bc9f255a3d7641378a2cb8e",
"0x1021a099460d801d171bb0db1c7972013146d1b09625f028bdb55242d8c51f8c",
"0x1cd67c97e764b8097f62c6402fccdb45a9bd18e0bb4b41ae08c2a25c276426b",
"0xe5dbdc0ab1a14125d19d7eed9cc36af6bdd5fe07f8ff269842f0aeba902c2a1",
"0x1649e0489cb0aa3844e97f61bb769f039f60b9638524408e3425b3f030b5b068",
"0x2d8611f69f27f599ac672277c1f0787005b6fe3c162d836637fc1c890c6c70c8",
"0x19a828de992f3bb86650a8a9f3844ff27f70b612e158170f81b7e6b6f4eae660",
"0x157a427811761757bec0b2decd1c28acba88e70e8e2b3a7b53d732a471572981",
"0x1f66ff45f17e0ec5690cdff99c1ae5d22edbb0ae12aab18ba5c1adae5b36e52f",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x9c9fa00fddcf694e98845212afe04048b34923d4fb41d05f99d24955c609c01",
"0x1ac154fc3f42165840c54a350d8243a3a28f55fd038dcdff628c52e17f72aa94",
"0x28859cb23ee55c27bc363dae264a0494ae77617ba92f595dfbb1454aa2678ef",
"0x1fd179a66fdb3cb0a06e90d1404c50c38d2bacbfa030bcd0b26e6ae454e3f5f",
"0x87dc7319f4e880c7136373d13fd6fdb2e433f31e099efdde56de5f8297a69b3",
"0x1a93bc3018ec7d3475863fdfdaaab0233df37c3f6da5a966538b13818c15c43a",
"0x1174a66194739850644d05a902b25d188c67ac7bfa816f1a3b9b73ac9731c400",
"0xfde9ecbcc6fb8a9ce490e809277b9dbb717369641b96f84b3ddbaafa39d1731",
"0x21d4b10d2e577a751a1284d0d079d066f6bb300db35a9289c5f5eb39e1e4adf7",
"0x1b491207581efedddfcdf23376324b9969e36f6ba8018ec2eb055a5dd6f4f8e0",
"0x12490e92c38fc269311bdc1acd2410502ac8d7b3334e65ab644751d1c6e3ba4a",
"0x3c569375b94a021a27a56b34dfddd14c01f7feebe14e231e53eb811c0d4fc89",
"0x12f5ebe6a436e8551778858bb53f9780439eb09fa2ac457096d7158e7af3afb1",
"0x2817dca315e7d8c25ce85bca47ef2424701c91df547407c8920d4a974eeac9ce",
"0x237f87fb2661d3a16840d8b115116d7b61d99ef94043ea2fc2e311f63bfeeaa8",
"0x13b8b1ac45db6a26c854d447f2750c09dea12c26f6d4083e9e8b3df2428aac6f",
"0x1429fffd68050249e1275110a16addcfb1300f294d63c0b50b7d4764f4797077",
"0x27003d2b7f980530014a1f5e88c4cc2c4178613f657c2b40afc3816ae14e4e73",
"0x1e7c9269b68e8ff2ea5f21c376fff7f3c1dec1df43a0207dd41aad1ac7213378",
"0x73bccfee0274ee3704bac0788527f8708883699084d3ee9facecd19acc02d5f",
"0x1a23c2e99e22f60e0ecc9dbd269a6f8b56aa74bf318961a085e42375d92823f",
"0xb0b38a1ee81114a35eeeeb54d419459b1729450789f14202fb84f009f728206",
"0xb08bf53cdcd498a9fca9a0775d19a3fab7cd6f7709f007b0d2fb07d8ea7452c",
"0x1d37550ee8724571acc9ff409226d2075544fbe2b38276726ad1c8ef3d096283",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x8fce6150b67f549ff898958587c36655277440c4c8bd9565a7ba547580f81f1",
"0x9a3d90307cac625bce9dd71e513f14642153c7c4a411d59f5db597fde888b44",
"0x5e2cba2a305c29ccfe1a49bf1cfaa3f00f097ff163feb7308c40ac654c594a2",
"0x151eb4fa0b1ce608925e2459726afddd5ab7982d4749e6185e5f033d1893ade",
"0x2e3299bef41097ad9e56203ac25eb52612145c8b411375b15be4c60faf9a0e8d",
"0x2b5a4ff11bba3074f0e0c3dd34eb3e21bd00c753717f19509c49e2ca01ee48ce",
"0x1ec7a76d764fcac86c55ce076344f7bbc51826ccba7e90ac703216841fd78931",
"0x19fe7d31b79e7b1a85ae430ba472cf699a814227f0325d957ce13df654430b3a",
"0xc1066dc7ef478b2ed0fe10c9c7a0bcb9a7974a4f782d03f248087fac50ec851",
"0x23b371f53de43570805ed4c382a4e2afe26207f1e280bd963347f973cd8e26b0",
"0x15b58fbe273944415ee68b4e237fad7005ced82fd6c2f8afd13c84eb29488b19",
"0x23d8929ce30fdfb078938a291dd88e7f7a802f172c7f9d792ab7aa6ed0866b77",
"0x340691f3b793cee0cadac0b96aa26bc7072c5d1815117e302afa970e6449ef8",
"0x274ddbc823611ed63e8cbc2929430d025088373ac3be564a44a739d11e4b6ef3",
"0x23a37eb726b1fc29841728eb657191d290fa6aaac92636b177bc582465f1af43",
"0x18ee2248d9512725ba90308696beb3102e7ea86de2719d2c52b4efc02fd0223a",
"0x40a14cf4ef9e74d44383ae681c3ab35d7c6cd0ad5d94ad8fcc5050e203ee6bb",
"0x2cb32996313c6c6cfbcec54c4f5d5b5057bebbc4fb0c103b9d1436726f0b7083",
"0x2b7dafb754789ddcb1dec0ce4ec50fe340d6a3a37c8d81bdeda0755dcb14c344",
"0x13e442da971a4c71620b80f9cad48d7105535596d4b8f1fe550c3ee07328c440",
"0x198e90225a0ed6b87bd847a0102a61267f6cee4d77aa631e355cdcdf93b477d3",
"0x2006cc86ed54bf7a5fc389fa5bca90dcd5269aba4ddeca95de1719ed8ab63777",
"0x889ec7712c598251a59839e389dee66f6d9946d275a60c2ea2566cf586edf98",
"0x511826135536efaf9f5f21aee371125bb78412a608bb6c2b6d97882b672a08a",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x2f10170d2aac17a22b211248629533d81da00ca55cd8d70c6fe1b0689aa550dc",
"0x2a35dc09d4488fcaf436c893a13d4489677901a07f875537c538048ef51dd771",
"0x201b1978cbd392f6ce28a5c8d8296732f503ad63e6fa616fa639d7010f2455bc",
"0xcfdef165aa6bea35bddbdd97133f24fe5861913c9b6274f61bdb8ba42e68ca",
"0x24a14555c418ce41b24b5bf1430ba76791abd955022ba31e9ad2cc3a2bc72868",
"0x58d12e15c9d023ea1348b2dc5c9dc2b43c5854d72e3fe9841e1a2b084859ed4",
"0x29e5bd1a9bad6bebb5aab55558fc375c88a8a84cc5d7f3a569c7553f6b4abd29",
"0x1d203c249094728621279f6b8d53a7d2aca571edeae202f72656ae21c825f638",
"0x1cff362b0f9265141da25915b3ff9e4fd8b33d301a1cfb4f606b475fb5d2153b",
"0x6c0b55e10a02f6a9e5e8653b6f52029e076963f51f5a7ef4c2483781303db61",
"0x29baa73ca3725df97d26afb6e2a1a781059b81f8109082c3db2d2d076ac910a1",
"0x16bc71cf059b627baf4fde8702141c5c2ac31a8620a25f36f0f479a2749be7a9",
"0x1cb4f4979c4ba37235dbd8de125bdd0bfeeda74d1dbc8f87a9108468651cf8b7",
"0x1d9097b4f48e52e207dcb5ada14a004918dca62a16f28760d0516c3ccc9090f8",
"0x2cf444d1a5c6ed508013d34ff40f271027c9a9395cac64e6443cf88ad7481201",
"0x1af6065e84bc5d9f653c36a0c86b0f0d9fa8ff396c0cf722c97b8736aaf6ff0d",
"0x2e2c4ecf622db6f1e55623697c70b3dac0850e0369a2eeecafdca37bc120d719",
"0xae82700364dd6c301ef26d8440a1e0fb71e410355cbf7981fecb0e8ebf439e0",
"0x2b3bc2007b383da42e4f34269a47f629392643c0fd903029da5d60540aece8cb",
"0x9bf1b127c22cd17f462ed4972af3af610b5beb2818a9f405d852a168de34c87",
"0x1230f23e20b6011d5c3871017482fd38f82923d9eb4fbcf6c4c12fd744c8b7f",
"0x1b47c720f543277cdb27fd57b57e4a88be4a17f9367f5cc58a541ecd995005f4",
"0x2550ec7018dd8a12e43571625d58cbffc02e10c95e0e9297ba171d6087dd799e",
"0x2d357b96b3252065e81b5f1406be8027ac20d3919c668a746fec4e3205260dab",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x8500e01d94de904d7223966859b160af3f73ee1f67208935a726ef1f04a21b3",
"0xae88a58cd6d7dd1d38d427daaf10cbaf3be27e5abc2c2dbf94e6f4782cdfeb7",
"0x2356cf14cd716531ac576e30978c3e9af33fe0f5465c6928a70ab06769fb7c2b",
"0x4c9cc7ff1e61240f1c0cc8239aaf4522f564780415fc47bffb1c28fcdd5efed",
"0x2ac119534017f94c103fb6199dd0c4bcf237d435294d16269d69dc39be170eb7",
"0xf0389ce2af0f62066e0f0aaab541c7f1e013fa0edd0bad0c454a9befcff9b60",
"0x1df984d5fed72bed8d287cbe3bbff9ac811b56155a8d8f768b7222620bab2ab4",
"0x2464b6b8837edd47eb61562a8c1339d59446dc30b12bfe3feb6a676a5754fe1c",
"0x11e670fa739dc17de5939770830d3aca8a79190d413a8a69280275aa8848096a",
"0x8241341db938388de2e2f02c9f6dab7f2040a2a0fb2d674bd160c8fcf7513e1",
"0x215ff7a8bfce31939d8413ba030f72544092ebfe06f99f61100a6def22089576",
"0x2c7cd496518937ec37c1a7ce9e231f15087c0f266a2b6d894bee197b94b9cd58",
"0x9bc5b3a291f8de24754a6479956a704772bb305f1ab884a7a57a49c6ebc8d97",
"0xb15a0dfc22c6eba5d6617504732df69e30cff2c417d0dd2f1cb49545a026368",
"0x299e24a6a2df4e3dee797a9d9b309af7f38aa11c61bec87b3d9e01bc1b283474",
"0x14a1683e0ced5006fb58bd5f1e8fe10b5b4d5db8af6ee11f3542683d5cfa0e6e",
"0x25595e5888505e87a18dd8e2f3fd998387901198cc9823557e34167d2b6f4220",
"0x1a8ca160cb03b1c6e074c7ea982b1bb406e4b996a70f430da8a7855435dbcd8b",
"0x48fa511c78d046fa7b3f960ddba5eb39e753e40c03e026a13fdf2509362717",
"0x28606b25ca030890e0ab9d58ccb09875465d368c8fff1a9401a18a046d929341",
"0x99c988ee50b5a86686570aade7a07d7f3de7d1ebbe4a72161214fe1f59501a3",
"0xd423b8393f806bb9445a55f82aaa3663b257bce07981b55a9dcc640f9b3a6bb",
"0x20fd15ccaffbde08b904a96f9a18ce5e411128da59c299ce6a1886ba554e8858",
"0x2b8b731f93bbfd2ddf132f1b9f37f820ce2efc76485de21bee2229d03d986e54",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0xbcb4654350348f216da47f8a9085a24211feb151a906c5852a36eb7a590e5e8",
"0xe0bdd096a483b3c7159aecbfbfa52a4b66e7704b05a7df05c3fc79bec0aa903",
"0x2cea662f7c24e8a6111990ca10f7e539dca435c022fa5447ad17f1407b9e2c3e",
"0x260494fff3079a35eae887c593cf5791509815ae31538dcd7432ecc6c00dc0ce",
"0x15c010a4fc6cc1e54cad7f89188e2392df27f7d6fceb4958b7ac68c23b8deb0f",
"0x2f199edbca4bb59669b0e4ddef33a7b45821852699ad8b03c8d3dddd75e8b58e",
"0x1b63017c3c4dc94e32f7c17d67a31901875b20dd6757cbc80eefd96bbf73685e",
"0x21819c86119eee2a93533cc0557b7095119a6c6347e702aed6c41cdeb5436677",
"0x2c7ae6aae298a99a0dc53e2a0aae2cebb636e83e80f8ec2c0ca5e6d30c0de075",
"0x241559cb0c89c416bea1ee0866c17aeba29fdeca75ab98d2890d7e10697d7eb5",
"0x21de885c1616f460af9be2385dcb90a8a471f9cb4a4be8e76b45d0d0fe3f8e50",
"0x179ba320374c3c6c268f02176e13cb0d883f1ae24b145769035ba0cd28879e67",
"0x1ce20457c1471d83720591f79a33979ae70ee1e3830011d9494b7686f90434d5",
"0x9bc17ede919cfcad02017b4c83cc9e1ca6d4695eaff8e983c8451643cd7eb5c",
"0x10993c2085ece5f1f09343dd532543213ba3f046c5a39fca941374a9e8975c19",
"0x11e0deb1da2857341a2c4e2e59d5731fd240da2dad90a1e815b706f926a8f657",
"0x15313d500d879d6db9446e5465f9c08112330c9d1dca21b1cd298117456dc175",
"0x1a3da97fcba266c29d2f3b755892c4438cca1703d3685fcd263728372eb19dda",
"0x1ac3bc17591802ccf54210da2d2bf627725e11a8605503966732d16d82c7c0b6",
"0x13fd9ff54bff1a560857af2a620b2cb2d725ecdab99603c58d4b3d8311f86bbb",
"0x10cb890d09d7922b970d479473995d79d935256c9fd28f62212104d69f3c38f9",
"0x131649c6c37c467b3f8d6bd684c6cd121e1414ce5a2647fcf8d29c84fb22646",
"0x2784296e81cbe1ba5262170b35d24f5a9f428577c73f51888deee3bffb1245f3",
"0x262b646e6406d39067ecf4cd1c4e7d6dbd8f0929a1fa778906f709b8ddec0a7",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x2b78023b50bcfbb73b4497ddb0b519c703dee853fbb53438f906e8f03379822b",
"0x1834d6485429196629dfc50775e881aa5bc653d6186ebeaba1fbfa70d5459977",
"0x1e223eca065f07910015985c8185846bc6104889355c02eff9966f18aeed7383",
"0x21ce2cc395f1ea9eeb8a83f76d5ef268964304f891db51b907b57a39d40c74c0",
"0x3010da41b7bd91017bbe2f73f28d4847f1b15f7caae6f197c51aaad94942d5a7",
"0xfc7aa208e89f615b2b5ac6c1c84db0c87ed0354d3da012a505d3718205f8898",
"0x13153924c0fe679002dc1912a9669bde6c0bfc56893155fdf2e96e05a186b0aa",
"0x1e7ec9ca715167872d062b6a2f92ad6b425a3aeb45e5a44e0798451a5f3c6af1",
"0x1839eb87798ae0b89e6ce405734b770fa2e6092b0670b2f59fd93500ba32bc1d",
"0x2bd925800a8f95d0b2b6ca1ae4aeca0fedac4fbc889f464be243aef61e35d531",
"0xf1ec631ddc6f753f4288baaec5d90881966062d8e00a94d1c35caa5c1f87d81",
"0x9ab5e15c1e1cf58d46c55f0df4fa3a56cf3a41e52664b1a125bf3388887a1f9",
"0x2048f6f68b4dd0127d915cd6d7056a0104145aee77618077505619117f588ded",
"0xeed124614cf28d97c99c85a0a1456d303c6cdd2d2703982a42dd688b65559a0",
"0xe8fbccfb62b0842aaaaae01e8418d005687d3511606ee56c978d0dcfdebd825",
"0x7823b7784daa9ff5853129e7555f2fadb3898b5c4cbef6f4dd5d7e8c78bb73b",
"0x161e2a1db0ee0e75b26abf038ff6ba8b396d0c03d27b794a2eb64394680db0ed",
"0x2816d7a51708d99490bd97f5443df9a5203608feb1bcae4268d3da1e5198dc79",
"0xb298bfafa57aebe549b8f2b0f98554ae00a1761427298040bc8104ad81843e8",
"0x5b5779be0c8c88b6ef985df851f754310267048c6e68139baaa4b41d02cba63",
"0x2954e80ed49eb91d655f32571d6ed24724dcd6d013c62fd8daa0661b4c2e6f75",
"0x11f97bde1a830e979a7647e0eaf37967f2fbc2952bb50ca4575961a34b43ad70",
"0x2edabd7a99b98c5f9f8570c778e460dc19c4accd2de09381db2ae25b87affe51",
"0x285b59b5e4153c7188c7e918dffc0ef798d15695c9fa2921aef01e87bdf9bf98",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x8ebe850428b3b2e7534420e85cc70483a11f33d2b5fdf04f61382f7a12e9594",
"0xbc84e22a29a0c39bf8854d51235e45e1857ea3575fce20e891ea92d8f56de81",
"0xc546f855e8fe5529a31ced2d538dce04cbcc05379ab4f8dcf5a05b8e0030f98",
"0x4beff2ac6db7fc5ba1a66114ef2591000f8822497b661cf15e052719c05209d",
"0x17fe23f62d221e08af428582244a3a31d64a2fbb37f58f8e94bc719b2c4291e0",
"0x129c6ab33dabbe60b52c9444dedaa047775dd01de878636cb80b7d014fc98606",
"0x1ecc6d3b8bbf86ab614c85e5cf2c5dca31d86d2abc8ce91af23d37b52ed78562",
"0x2fa06eb4828858d3a737fa5170fc77e726e8a0cda438a8925fd55e593e204419",
"0x123d6c4cc8a7fd77c53de32f88e0e06bfdd78986842c8691cf7f3aedc43fccfa",
"0x29638f75c4d7ad4d6da92cc3681384bcaa6bda0aa14503de403f330f87700abe",
"0x2ca5b3f0ddb7a5c6ef388e33e501e0fc41a8b16858bfeb10882bd838238ccde7",
"0x1e7e20601229dce04a57f23005d7b8ad0375d4efabb3e276a38a0cb2cce2b7c2",
"0x1bb9781ae7d7cc141e7b72e2fff39fef57bdfb922f8ff88bfbf395738bed4043",
"0x2617acaac7e8547ebdae0bf2063a2056e5b42e39283fcef6578b256fb8ae01ef",
"0x1524426376418adb2ecbbe82913bcf05a08c0db6b1f3d80b5ba1771d72b80f1a",
"0x23b9a081fb49052cf4b2521ff600c471b22cec1c9b9c32097bc91192099f0b44",
"0x1c6cd0f87731287ebb12883e63991ce5aa8c768499f5c976285019b41ad6a272",
"0x564f9765361d0141a69ada9ac521ba33139a1bec81b1c39f9fc79d56f93d89f",
"0x18fba1f537d0bc06888730bcff570f62c8eba352d2890666846ec5c102bbec55",
"0x2ecd94fddc5654494fb41d46c4c91d264b3e17d5f37791df25a42cb680e12a55",
"0x25168b700310216d4ec9fa5c3e3514e712d694a46f169f7791bf4b01cf23fa0d",
"0xddf38a36dac9337b4add0d9a33a2c589134aeeaf141ec5a5b059db0a5466905",
"0xee74216109c48451af32cd7914b41734bdcc37c60e505a9845e5689313cbdf7",
"0x20b4aabbb4bbb48c4fa8155538d772088fc0ccd14ec9ed274c7f3356f9799e0a",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x18de85783488e68b46584675ff74d2bad45d686a789aaf80f0ccf3e3c331d973",
"0x23ab29889e8aeae37282dae6aee3a16624f058208c74af503deda66641d5b82f",
"0x2fbc8d06de03926ff1c3114b375d87283388625872b2966b781d26fb2ba5d7e6",
"0x219e0c4d566bcb09609118df2231e65e9e95f6b6e1c6149617acea7083fd9ed7",
"0x5b21b2c119617eea6edcd24e1feeb1cf75560b65b80af1027be2e1f14a15d9",
"0x5456d41afae3296fd4b13f8a096629d0b471691a4a29d9fbe2493c3ec377ff",
"0x14001dcf0234cbe8b3cf799bce377883176a4904360f83fb5908b5b7df92a447",
"0x2a5e9fdb1272447d7e50bd0ef668bff9fbc860f191c1e0cad1560e74f6d231c",
"0x22949879c5b83ea97413d666ae0eb3739decdbaacf1a33742bdc04f9e449f2c8",
"0x21eb23c8742f8d498029de7d0170a12a031c49f992f07a96af0494454e37d96a",
"0x70541062150a2f25267a8476f41bdacb2b3579c7856ba4904999f92d0b32bf1",
"0x2664518ca87044340bfd8c5a7c2b863601b8226dd566368da36b808691b9454c",
"0x14aa81c9279f3505b744bc86c3acafd4c5b03da18129f6a2b67d73a9d8e7b5db",
"0xecb94b163b561ad361efd85db88614c69a89bf74f5ef3a9387556ca3343a303",
"0x5a6d9a1efabce0a10d3389ed1571283698c90e766363859acc910968968b676",
"0x16b4dd09c4b2b3942c0019d9d39d4212626c492b7c0e7178196899f497f83082",
"0x460784ded949d3691d5bdf7d6029ece2deccf562f0e12482f001714895cbc9a",
"0x2d634ad66906cd6bea2fad599e45912c992901508aa915f0c219d66373c4f7be",
"0x1658eb086b54351ec3573b8ad8201f5a4d1f0026b8f04aca66c44c16e7516ef9",
"0x135a011e081cbe5475a1d316b78c724e181126ef44a9a352515afce9665a9d92",
"0xb4bc94836903c9787cd22b2962a05c42c7bd08182da579e277ec3977418fc64",
"0xa0a37d07785069f47e18f245effcfceb19f2405ca009947c9d2cd95673d3caa",
"0xf8ecd23da135c880c76d216fbda0267d32aee2b4a8039aa5783034d66dda113",
"0xe88eda335ac1a2204aac356a58a3ca503ae4543881ddd282bf7492f253e1930",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0xa4da37955db5d2bb893a0919e4d928361880aad89e87973b93638d9f46323dd",
"0x182420fd6b1d8bb94b35d9587499825eb5055d95f24c5a061f56af516e71c5b8",
"0x12ed236d1a3dec40061f9af7aad3cdbde95e5d41763d8b235c665d25b01151ca",
"0x2d2c50e36f2c2c402493fd98edbb914d591700011d383e289384c0fd26e46088",
"0x2e8ba0e65f5ee53abb58da0c792869bc7429749fdc88ccf7a429c1f35575c11",
"0x8491031ef5da5f6a50fe3e9fe4abccfeae091ea0992cf72a239d0dcc7000c0c",
"0xf4894b8ed58741566403ffb6a468cbe036e365d3b391b72bba73b3f916aed40",
"0x22727bcc3e3f1e76bbba95aa7aa2eb558063af92b5f624433aadbbb0ff33c700",
"0x1b120f999042730b4d2e9f4e22c528510cc26f6076905f37d5a3a6bfa19fd87f",
"0xb37ff36e5153c7abc2c0bd36db33be84dc7378340a8c6259deae5d1422d2f76",
"0x1655564966b05b47d171db24f81917a2296777b02cb30f893571217662009b93",
"0xa64dedbf4dabe0685fb8e4bfb4db52e4a3e1bc178bf7f49f1335bc3cff8fa6",
"0x21a953f0d0ca1d43ee920c54a8a1884a2dc58366e195f4a03270587bf385ffc2",
"0x228dc2c9d913d4f4588376be12a9cf6d55d7c59a14a15f9b8ebf8f0cb801a264",
"0x2b487e5c9abb4812830141572d8b1936b4b8cc3119a0038f773f3bcca83d49b0",
"0x285712493e67ed422052536731a32ab1920437cd807dcd658836beb912022bea",
"0x26c1b715b64f4ba9d47c1f97d99f91ea4b83ea105203bb5e4bbe8b3e6fabcc95",
"0xc188a42d4758ecbc3d35a73e735f3daca1295d0d93d01eed6c3a085ce1d95e9",
"0x2796103374b26554557f1efbf137c3caffec020e1de9d2e75f8a51b5dd52524d",
"0xe1523d8bab27bbf5fdb85ea4eeaf57bafeaf50481cdb89b80483698d4b47604",
"0x172ac77c37aa38790506830facdab06d091a9a98ba0a445020d87a548e68fdd5",
"0x1ea828b052ccc8c21c1417b2479bf21dbbeb8b07f1d294542e6b776c17a46ca2",
"0xc530e36f104f93cd29e9d5f6cc76b4982c8f06d52684ec9b6b6dbc6cf3e1618",
"0x257497d432a5ddb934157c1cf3218a104aa3fe58ec7de5002f82be85ff4a2992",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x9b0b4483df9298317fb5b068ecf3291dcacddad122d4f98ca84868cee25fdf6",
"0x1569ffd3186a443252de5569661c3f8eac7dfd987568aacb86e576d3f6894290",
"0x2335942544da68a26bb05c3c44845f0e9612fb8a6b33a4bd81b0da1811b1538a",
"0xf3fec305e46f3dec280a826087df17baaaca704840038f56f94f35406e6571",
"0x1c4fb366b69eea6c1ad580af7130f33ebe1ec91b044ea1c5697bcde572bfd4e2",
"0x11066a30034b0f5a0ac2e2c5d00720c5e11c1fcb71fa57e7c8dac938e7f4f8ca",
"0x136aece7d25ab58170f452dd50dbe69b1f9a77f060fb99b0e299e9bdbbfd244",
"0x656fe108785a97dff386df1e4e2edb6d68dcfc9cb961e7d44ab0d14847f3810",
"0x2132c9a946b2cacecc75bbd0b90e0fd7f1c864ec818a13cfc266379a48740a1a",
"0x26ce19f30359f871b860f7e740e1361a8dc3d4faca80890059f68742b50c1bb",
"0x7b34bb73c69a8befc171d04fdc512c2e6d29993be2aa537a5a927503d327f19",
"0x1d2076ef57a75151297521fe1aead57b361a0cfd90d9c56e5a4d94a03aea4d59",
"0x18b2d7645f44465de9d875354716726e36f092b43e11aa2feb4f749f5cc30552",
"0x29d9e936a88283376c4cc4105b7bde94ec648a2b02c4be0325ba0ee4e8e59466",
"0x8433318e395064bc720a18cda24df578cab51b13834e03f8303e988a8ecec7f",
"0x2981efbb1e761374fcb20715527de197d32cf4d87871619b505d3f5f67e0cfbf",
"0x28a84e7609bc4d9de494b53068730c0ffd154de77011ac4baa3a00bc1f565c94",
"0xb98fb0a42ca497662d3655e0f0b215aca776b94b0e842e7cc7bd80f6aa01470",
"0x92dfb1809ccdde8ecf61a6602a69fd7ab9ea0f883798425b9ca464637ca1feb",
"0x2229fecf42ca2b725ec5ab861ed051b30ad8dd362a8445e6e7f6e6d888cef6c9",
"0x2efa745708462a56d941659e4d63bbf2b15d7b5cb00f57f7d96de4987e0eb545",
"0x1eb88f6512326db22d5bb8e8ab1ce26efb8b551f8d6010438d0f26f972c9c868",
"0x357f464028357825ef34691fc07baabc77653105a5f895777bcc9fef6e4ca9f",
"0x2574b6b6eac59402740cd9ef0f50e229e4db641825d2fd7f0018dcdefbae67d1",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x22cd7ad481a520d21e467b2fa248d2cb54462c3dec29de294a16787befb181ee",
"0x1ea716292c21b4a96dc9e245738f17f364b4a9dd5cc762c7ab0a24b8ce63a95b",
"0xee07db295084e877f193bb734548249c566945980a987e853cf283e0de49c43",
"0x237a31e787ffab6bd803d4683ca9a5bac9ddc21219d119d5470a45678d916af5",
"0x22d591498fce7c5903d695cb79fdcabebb591fc68fe7a8ab4376279f3c8799de",
"0x25730debdf5daae2460cb78aceaac1540d1b32c4ac3fea8494a832c0ab9f4969",
"0x2f54afcc0ab9ef598814c0a9f83a16d44ec48ee96a06fb1dd7d8414ef40bcbff",
"0x110855e59ebf6c99c61bb7b3728db0141b0c7eb6877e3d867433277bcdb12ef2",
"0x100cbb38383038a7f72dc76e0ecb80487a1bd2afadb85eeaa6c4b38a6e2460d7",
"0xcf9ef03acb7eeee16d21ff6eee6b658c426551d5a346ec3d2226a74b9bbf085",
"0xd047f79f1c409f542bcfcac407087dc0968f9e0b82bc760d1ef72639bf0d3b3",
"0xc8d35b27373860acee2d851f3ff195897a5429797a40948ab0c18dd279cd35b",
"0xb34d4ccd429b28324635894a84e2d095c29ad520bc5434bbc004e43b79a3f90",
"0x15aa8094e890c3ce98ce64cd97f7c21445ceb3c863bdf8a788d49e233cc8926a",
"0x11637553427ccd52d28ef04c564ee9af0647215f7f4a764d97e34b3da65e664b",
"0xd77424bd2852d485495d929abc8ea1e5c2a07a938463db4e75b35f11646ff09",
"0xc48776d02d737edc95da3941a1f78a976c5051bd630deb38b10240cda1dba1f",
"0x23efafcc9a8ff43a2ee5067e9a631b0be21c1e4f028e4fa7cef38919e4f149c2",
"0x24dc88d6144669f65e8c8b0e0b84081de41ef00c3f872dabbebaa4ae3db80522",
"0x27b45f6635340a77f857c72220ab866f70739196835a22952186bc242cd69873",
"0x704b24632239ef816e17b12e0b1f95c1cf7b8f3367a263ae87cd628582563cd",
"0x176cb4987f9f3df738f3bc87712a4635656b484c52ca7624bd1245c2aabf3e79",
"0x227eb80636039b0ae67aa169b29b1ff9966feded7d239c51c6acb427cfb61f9a",
"0xc315aed179cba6ebf5470feeace0db2e1693c9fc11931f51265541c508ca784",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x1b8b75d83e3e955dbb4063f6ef293b4aee18c4a3be9227c3102d29c2a85df08b",
"0x62a3721fc4009918e908846ba5635032aa2eaa7489d5d74b13994486e1b621e",
"0x1f58606cb7e61fb55157784342ec52455c66fb882e3360b692a4677360134a68",
"0x41e93249e317db4958b8849dea281ea81d0e2041006620c78636354e20c45e1",
"0x156d561a4bfbc4b557aacf5ccc4701483f4c44c8256e619b6f7a7dae09d23c3c",
"0x11ed5fa9b46ad4b3f57a8c5084724469f36ba46cec847825e6245c4537a0e217",
"0x88a5d5188be741cd0e0ccdb10875d3fa01889e4f80e5be6ea7e127d5b28963f",
"0x271a632b843846485e2ab0f5c7d1e14f7275fc53b8cdcd8a743b7566461219d5",
"0x26c0a1c6632015e8689db93c50a3dc2e408d3c0521774aac099b931d7295c6d8",
"0x294070b0ef4e6a55e885a12b5874de04df23adf8f0a84f875cb18c4ceb8d101d",
"0x2f78931d96c5fd9d0ff47089e98809c64f5aff58b2d70080998bc0fe5e364303",
"0x230be21d8ea9e4c5d2139afd1b0eb61d14b227ea864c09175b23ae4a647d67db",
"0x23835945ae05c678cb2b9bf9100f51e7ffdaca93e74329a968c392bba321a232",
"0x187c39fab3ecc634166d78959fae651ab19b169817b7e508762ee36e8a88033d",
"0x194c8955c7e620135e624ff5abad58e58b5332c390e60f772e8b4dd477270dd",
"0x651970e3e8b816227d307071d84fdd9f417a2f1b844b7ec56a21a7b0241a684",
"0x188d9c9d0fbc3459f6a82532f1109a06c591d2b37df750c287244908f193eefc",
"0x3b8367be80bf4f8e3b9008aa9fc640b6cfac804451c91a6c51d60840f9e166d",
"0x8762e109aff306b803a0c90ff1031403458429b82dad5066a7c61c4fcd52e10",
"0x7e877480703f745c67b8bcdd6a1182bfabea54eec3b62b87f53e9eb6da0d5bf",
"0x83a1d0511d5576651a78abb8a14ac92d9d61a43f977cb5dc9befe2150e0335a",
"0x108f56572334a765f54db2146eaf1b44fa39b91203a58d3771eea19e46f3b58b",
"0x253717f1b3a60553ba8c5608d2e9b33db2e5aae1cdda665006620589183158a",
"0xf7d259d6a6986193bb88f21b9f687548b9793b1120e10386561ca5be801e762",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x2caec1da928de3ef257ea69d514c718f70d8d3820fe135dc81523d2e13494c2",
"0xffcc49b0327d4dab23fe993539c71e78cece70c65060fecf775248a4f3097d9",
"0x7d2f814a0d52f1676986648041c5ae57ec9b5fa328dfee5a22206c0f554fdb8",
"0x563d7a79d5f32dd2397acda206a6fa4947572ed4050aab01dc732ffeca2369d",
"0x2783fa364653815b9474a9972f573d171d08b4dbc9771054f0bc376a70eda070",
"0x26d7a7687e6c207f5fa597c84565bbe9d511243c1917de8656babdd38ba0eb81",
"0x1567832cd70e77ec20ef1041351577510628ac2a1c7d5c179c98315ff78c42c3",
"0x1c59c4c25db5ec760ad403047f3182e0c2db7b557883b227f8bd1e384a7b76e6",
"0x2fb984c5c36a06d07601fecccbdd1466c38f2ee47b7dd526a34bbb9e859a1fe5",
"0x193c691789f6f175105e969cabbbbc781119daac0927a2694d006edbc0845084",
"0x2934cca891879574e44e4b94f5554dce2e55070b19de421b4d2b743418b287e3",
"0x2223f7dc3c04faddc22f1c05e786dd4fb2837a1425c62d4defdcec15ff6fd6a5",
"0x267a1cd4eccdacae7277169d9000761606b0bdadf24dc97b6b50ad18f4084e57",
"0x23674c9dff69d9b06d1a41103f5b241f788624c972203d3a4804e2043eeaf97e",
"0xc86000f5a940dc4c26b7c2dceca10416c0de08242d8057506a867b181691451",
"0x237c120402aba89b701d7db41968e81e7ca9e63b6242e56d9e89b1e94b7b56f5",
"0x1f2adefdfe27e85d550a268e382e6af8e51b93d0303444311050a0bdc3a86b13",
"0x21026ca9e6c15e7e7754c24c15ef12d36969bb2505ea8eb9d24f21762063639c",
"0x257dbf207d8341ebe71a25c67f0bcfc71edcf46f5e655c2f94bb0027683e4ee7",
"0x297fc3567244be37e4b1ad88a0c3008e1f1326146b6588add2e12b812c53c7ea",
"0x2415eeb2220c514b4b50cee8df2f4f605477b540d75325287fa7df4957c388ed",
"0x2d1efae2ebd54890a00e868372dde24a8ab026c7397b54827bf51bf259371921",
"0x1f82db95c67b46b630a40310d8081c760e1bfffc39e91f179b99995a8e355615",
"0x2e817c24b08cf9346a21658572796f90b8132b6247e43a1d099c17b7823592c6",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x588c5021b24ccaee3b77fce64c0122f3cf21280619404967af6be821ac9e37f",
"0x191e71b4c665fd095461c7eb21794e3770c3b40b4bc0e22a210166e9c74aa0bf",
"0x29cb8c9eb9c4cf5bc6e1c2a782ac0503015efefe2d640a154e26b4b934dc9713",
"0xec1e3897905c451e98b774b636e1dcb80edbcaec959ba90d20a0286366ff74b",
"0x2ab786b7ffa171bb876603834679f4be8a18485f93b7b89f2dafeff334d5469e",
"0x204bbc64ac07613fd02f871122b8ef0206d670cff609fc1b2fdef7b8f1e1542b",
"0x1172cb8f6bfe22d7851f746626399b3c0536bdc6f8969c3b5ca6b697a87aba5d",
"0xcfcac24e6e99ac6a59d2946dfec1c87d4c14c95a9ce2e81ec8c8405f74ea79",
"0x25787156a9a5949b6493e08da731b2e15abb30e1d460dc238207d04302a7378c",
"0x246ac305851f4cc5079ed10d769d337af9649c46f374951dc674b2734840fe38",
"0x2db9cf683684eb9e2cc772571cf8da1bca70e222aab6ca7e60df039de8b23ff5",
"0x166212a0652ef46c22f6d8d8d8c53d99fe339c7aadc68b233c882f57925403eb",
"0x98c9afc1526b5729198f7f58b905563596143c611e1b2c8ff90dffc677d1e66",
"0x2358d524ec260f839956563785d1a727fb364547edecef5bf664e5706301a599",
"0x1901be07be45b4f8d3380b0a5e52c1e6aa94dc4f6f2e40baabb9f98fdebc91fb",
"0x92d99a4ade91479cdf8bcc22c05309ba07d86401532aafdff17bee681dfd12e",
"0x13af4969555a7dd69482d1c130eb70e05f0f9af3a93769f7fb5437173c71e1f3",
"0x28d3aae218aa0b296476d0dc373481f4ae746de4aaa1c8328370f17655614a51",
"0x14311125be69290b098c5ccb7e7a9534732886959d25d677e564d71ae1ae7647",
"0x1454832e2ed446d6ac9a981f567c57663450bb35ed147e4dddf8e7fbe30b0bb2",
"0x11055b5dc675e97c22358083da749bb066f8a99cf11a37083c1c991af56736b5",
"0x20b2ab6a88373738fec32590661140fc911f31be20d8a9b938717954ce5f1720",
"0x2171b013bb62ffa512500bb1ebad0e10cd39cc7094cbf806b10133a9f6ce3d68",
"0x13d9ae507067e98e67ca97ac691f2808251ba846c97091c99e46f8c03d6896e5",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x292e6fe5591c886319d394a3218aaf4a8fc00b2c98fc57a395ed2b52d72e5d1a",
"0x2e555bbfc78425a4fb2d9d8922252a1edb14ee448532800a36538eab6d3c3134",
"0x4b797fd25379849c5fa7039cbface5d5f01d17102671767c51dcc547a7c7f44",
"0x2bae8ca68718d729374e99bb9991ef4399fb9a5a14ff7361c52e4785781521cc",
"0x5ddac723ffda8067c2147fbae890884bf8572fb7b30810101de4369defb5612",
"0x1ec8e17ebce279adc46dde550fda171ed22736ce4e102cc8e36f3844ac67d77d",
"0xdc57f55bf67c1b68aa35126491d6e6b78f9883b5efa10b8f695e2a8fa0b83c9",
"0x2d3f4bced64b64b958b8d91bd0b7b168ba52bdfc7d5df18bbc1a176fde11b23e",
"0x2f10a6d7f877c814bc7693395dc357075d1c816495a4f03b0ba49d6d8d97a663",
"0x144b40fba529a8d725cf78c898112fc3e4826c83c1961332ed3bb0e17051bc67",
"0x9708226dc1bcda85d36d65ad6d0ca69340523e970daeceb5cc48c16db6cf3a3",
"0x1bc361e4208a017e152377add553852dae1b334c7948e008f7064f499916c154",
"0x218d7075025c32bd6ca4e15ccce886ef42a54823955d50d1abf906be69a1a10",
"0x2c36609083d08ad8df8211a51e75bc9b52691cf5c9996dee6cb39a13ab18de9a",
"0x2ee25f7ef8fed9bfb691d8a5e21717736795bbfa76df861492715c4b41261112",
"0xe02bebff560e49b14818c02e1535c5cae326071c0d74703b8ea9f1950e78e5c",
"0xa8e935c09bec781f68587e8aea897db4d3e8d643d4e8b65af941e6b56b35d82",
"0x24e4c8a3880c07950af15e4dd7785fdff4f46709f7e8a2dff46ea7670af9e69c",
"0x2d680316bb7fde988136fafd42ba36dbed8d09522f48ddb19a14d39e2305e4eb",
"0x151fc0242f88cb4b820f7960e519aa333c50260f1fac77ee841873ce4830a5fc",
"0x2a930a97b841a2680717d8322c463e7b4258340f87258c90f388f322b86a173",
"0x1a2d3151d244173a73624601b54782801bc6c0f8f7a70a3afc708a23b0af75bb",
"0x30ff291a9139cab6bc0b3568c21ad6e4542cbb3c6ec6970f01f4ab3f4e65a8b",
"0xc6142a38ef9e3709c786cf42056291aa1581aa5cb1e1c2aa01326501552075f",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x4478466a9c94183c431e91e2d96fad76caebc38cf4b6bd63d40a883887aa0e4",
"0xd2089c7872a5e0d120339c683d1243e0f56dfa30bd8ee38e9e9020be57cf9d7",
"0x7835f14f646ef12bfae699393ca8771079e5e5b105c549a6f740989bc71522d",
"0x2eb138b8e96a72fed66f988d76a56425930f788d23294bb16c006c15ba7a830e",
"0xd65fc46a4f555afe4d613d16960139d1b0ab9e97409be48d2c7d0ad708d57b8",
"0x5cb9d6fb0ea5d7c36af03889077124e159baf3f95d68f5c74b98db89b1fc3fc",
"0x1228b6eaa51d6497f12fcf864b7dc9d681b32176cab3dae788d5cdfd5fff3732",
"0x2c74a92c8d33ab0a358ff988fce0aa0ba475c783989734c9bcef6aa3d92e39aa",
"0x1800e5ce9cf840e32bbbe62d828c95e79c3e1c493ef70ff8743a88431b34dddd",
"0x58ff670014f46b7ba4bdbd48feb903fd37fb5eec4bccf5af21bda415478ecc2",
"0x21c73fcf9ad1b0107fc527d61e6d1a289ca1eb4616db1bf402579c7a9f141c61",
"0x2dab5b1427ba55d3fa1a90d83b0c569978e3ecfa9247509dd3f9e303b58dd0c0",
"0x13b905c6ad4434dbff6e782cf470c7f37cc129dd74580eedd8a8f85f984486ea",
"0x16542d30db773c54daf9fbbe3cc6329b0f1e30a5f27659b5718e073a6a3ff993",
"0x2fb9d2c332734cfd46c26f65328fccca168f58711368560028e2953c2a70965a",
"0x1bcbc6b5cb163a446455ed0879da1196a6bc4abe45d7b81af746f47db5292e7",
"0x1ddcf7b0e9bc54a5074e021add723164c981f6bd04db9e150e2f0e21a1a6a3d6",
"0xe49ca4ac1a6893b61701a02e1dd02a35f49e32a7efa7f297ac4d2c3e545b7be",
"0x268309dbe299749682f7030227677e5013880137014437f7433ad9e14ca8dea4",
"0x1bac242faedaafd205ffc4e05cecec603beadfe07666a7f970934a2ac6f629ca",
"0x28e2305a80b016478868cf732f9013b976fc92a34d1a4dca77ae572c3c69cdd2",
"0x145de9f18f59e36a93415b33aeceb48554a84eba20c56044880e1466bec0d0c6",
"0x1acb49bb5f0d3c9385fa202a23350e945f57259a6ece8a15afb3bff94fe92e13",
"0x26add7d9ed34ea73566b208120678707b1da9f64243c55a41189445672f974d0",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x16051748ed54c9e8d56e45a45a4eb202c4c91fba4ccfa8a05ee3a99100ef028",
"0x1a51e1a75bd54dc013a8365e8be4d93fc365ed1f85a41e451913a035c1a975fb",
"0x26dbf99d1718983964d70e45be99a786dc590c2b06726631e73e42cf19bcdad0",
"0x1132f8662c582598c12b82db868060fd02ab2dafd730d149f0f1c3dbb5c7540d",
"0xd20abd1b87b2dcc09f4abb60b6b936bf3196166849307a146bdda7953270fbf",
"0x1312f989d76c6cf93d0386523c2b447be5eee1a76770859a33e08baf79df94f6",
"0x28c79fe778abea865b37cb9fb6fcbff83eb5e3a6539a22c18cb0a7bb1ee3fe",
"0x19b577228ad8e6ee6c9b669d36ba8e0797ac74616e3efcc9e6a7e819610005de",
"0x152dd9b7778d894130a215abe32065d7adfe95428d02982301d4390896ac4a40",
"0x47e6db3dad97b60f47207eaa4dbf769e64880abba447ab42a64b4e9bf580f",
"0x16f9ad0b2919753c49509ba57e9c915aa32306664ce92ada426a22c9f6360d66",
"0x2921d7437d72b2235761183fef2292d581d60883f6f05163c7181e8930598142",
"0x361282380fd4190823218380191766a8c2eb6ef8f084426f9ab27ed7503d0df",
"0x2661574bc57b6eaa30224ba10cbf4c961ec5d3beafa17d846e660915b34b9ffb",
"0x2b50d64c6224a9fd03f14c5142231a82b313392062d70bb835116f71f861931",
"0x2e43be4ca9acd39a0b869ff361bdc22679619dbd7fb937ee499ef99c14b929dd",
"0x7458dcba827b917c731799c95185ebf349165eb8bd8837ad4c9a7a946acdbcc",
"0x2e565ac1c012c9b7001654e5c4b389eef1604d14da21e2cbf4682ddbde00ffee",
"0x2be1797b6ee4dab5c76f370802650571f72ff37afcd535e80c02a984257a4a31",
"0x13df73795946cbab79f5ab95a1ae07beeb368b6a672eeff9533467574cd5b637",
"0x271f3f4aa97903015b64624f4d65b15cd2fe5f18fc8dd6ccace0c520d5daf9ab",
"0x45e4c5231979d20d30f98e26acdd05b44c6101af23bab61b22b9f2ed4c2bacb",
"0x265d868fd9eb462095cd18e40ea2aeb074153cfc06fe0c62d268fc86e3fa1e9a",
"0x1c2acbdc137e6a8af39ad351f8e89255387e69c7d9cc4aa0cc0b4a3c9a2b2dd3",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x18b4e73dbe4d9c83510458712484b5a88154a64e4f000efd8a5d2d960b4d799d",
"0xe2fdde439a5f899cd7f813089c26f68018a3b0ecbfb2de15589e589c77c691",
"0x4f2b25402a03ac3a6fd61ba2e73b5acd1dcc221704afc22ab41ba3b158b7a5a",
"0x2ce09acd57a7c33da7a3083fd7336f59f1a21bb7403cc3152101127083df270c",
"0x1dc51c0843736ba1d7b5ca4ecace075a61486b9781deecb73ec0c9270880a5dc",
"0x24c96270bedcecc4ec08285665474ba417e43f1277878e25f64c7ed59d518993",
"0x1567b25ea10aa7639e7754e07fb26140e6b196466301266acb242ce0f80baa9e",
"0x1b8405e13b06a1190bf60e3fbfc762ee365d6e42a551c9449ac6e78c25c313bd",
"0x1ae7fcaa790af2f4aec1458d5e8fb9d2f6e9c4e1b3877eba711ad016a8f75883",
"0x230ffda3cf04839dda573ecd6cf6a765f419096e19c41a27e219f7624f63f918",
"0x1c821c8db96ded0ea28c83e01769d47e7cf531e5ee167154c5942dd1552c99c6",
"0x654e2ce5de54485cdbf636ff35aa519d3bb0ad0f65553c089035b399cd84ec9",
"0xcfb61bad637440ea70c21616c0021531b797dcc910b94583c7fa278feb71244",
"0xdde58a2d3a19ca8daced15c92f831571b71a3bedfff56df64ee3d3fea7c11e5",
"0x121e952932b7e95de7ec84c86576ce61bbb862ac2f13270054fe25b95540345e",
"0x77174b4e7741e4131a2adb24c6c9f223bf77e2678d9ae5b3279d86e55f87fa0",
"0x5d3eb46a0d9a2f0f47f0962a63d534c9a77d3927234620d2c928bf09ce7e5c2",
"0x246f5a9f3cb48cf1f4a13aea5a54ba53d8d3046b61871dfc1fb5d9f358cb51bf",
"0xa2e62faa91efb3dc7d4c6482d41ced93aefae8d13275135e509bb3a117b19fa",
"0x21eaba42c45ccbed93fe3468dc8b98fc42a9855e60ce78562080053784c20256",
"0x1e2cfcac1e924008271b086131dba3dd0044a03a28dfbb2f008611fec230994d",
"0x2c97d275a36bfdd250e2e2abfc4953d8e04d5e92795a914aa91a168f1a993059",
"0xb1d67cb1a69e071bb57b3f4eaed9fb9989c12e249c0900920bbfe0fe7ac6c93",
"0x1f0f655f87c30461e7c2d6a3b55d5092e4542c805f29ded8c499fe4603df979f",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x1c9a4884cf6e9cc19782fbff77ff6a2df0b1353c2e1bcc80f80685b4da9a9962",
"0x2031dbc469ef5d2ab8bbf080e779c81da08a138d18b1bce086d9650d044cda52",
"0x26d411c661443edb9fe290206a84618128d1e85e1a8fbcb9908859876db87376",
"0x21083c2f6587d4d94351b5e8d4d37ca1ed3bba605bb05ac45151c5b828acc8e2",
"0x252aa5220ba089fec5d79e776cfbcc3be42167e2b24ba6245dc60c7cf0fe818a",
"0x15aae505663cafd83758de1e586058a24e69295863d59c1221678d0a997af128",
"0x2d8e7eac5ca3205436aa38fe08be53a0fb7b57e4c35abb9c8dfb722eabc4b4f7",
"0x1d4b0338ca8f97e7f6da84d54af30e30d065138190d0c36098a69db08f44b97e",
"0x1af838255d6973d5b0b19585c52f4dc7ac7ee024b541e4c103942b7485a5f82f",
"0x301b9339d3863e05daac5aa39aa79eb948f6be9a56ade53ff27fe98531f1ba11",
"0x1e03df8a06e4161781c43cd5da85f9c521dd1f5987bcef858048020944852c7c",
"0x2caddd2b00b5b15d18a3ecb0d013c71966ca47d579403d64d0b41bd736ddb7ac",
"0xb87a369e470ab99e2c4349ce109985391d848aa3b60202f7a17ef6a0e4adf1b",
"0x21814ac94b3e32f6f295c65c4b234aabde202d9607b171ec00d826f998a6c92f",
"0x29b1228b3346a79953774564fa631d8aa6f2314f2c9216d4aa8d89299909f352",
"0x1a5e40ae67493e00371f4796181b9c0ed9f909bc5a6d9361f9b75b4c5f48d270",
"0x1ac79eac0e5bd64eff5d74fd02f19cf0a066d6e5ad8d169a2ae42a935f454e3c",
"0x1cc1592df343627349a25bda9ff38febef99da952ea6d33014b9e062d0b9c65",
"0x246ae2ade241e443bde03d8e2b323db4208434d53428628bf92a2fad2058ec10",
"0x18d00d6e9f9ca8e1f315aa97fa121430125eb2ed841bdd81f1efe69379f786f3",
"0x2a147b464ef73244b29cc4e4fd24a29f0fcb62711a840ed075c77682801b54f9",
"0x30188a7d39b26173b10d7767135b841640c15708089e2be2bf8f5d31861ae140",
"0x1cf70ee72aeb25c85554b6de9c01877c8ef5164a1e118250aa14bb0ff8cc5d94",
"0x2a27cb25999e82f8abee1351c8083c8393e5038113619e783649651c286967ac",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x16f3b44e7a69563f9b9cb04a43140d2c51a2a2641b9dd9ad5dd7b942b3898e6e",
"0x1ef9dba4b9fd5363a7c5855a1c3ae00c1874ef693336b606b1f25c4fd32c5b3c",
"0x3be108cd7d21185b6364bd86883fab9fc63c9356edefc708c05882280b75515",
"0x21631c522c8f458394bd234946f326f0a0e0caeb2dab4014e8e089f36b25d766",
"0x2b469c787003cdcf37233bdb9f3eed9dabeda742284d6f7286a426bc9022fa9e",
"0x409e474d3841d04d8f6a521cae62224e4d15d729a48f7af7357288e1af200af",
"0x239db39ca9b31c21ec61b7f3306cfd1a9c20b3aebf0ecf4af7df18c2a498ac32",
"0x3062a14d58830bdfe5c97f9111ca779b253e09f8337e457a6c4ecc1ba1bdd8fa",
"0x22e8958e08ed54020aeee58d8bd6bd816c3b99f53d664fe6c1bbaac2bb5c12ac",
"0x2689f68f2ccab8aba87dad5aaf8f24c89f24d94c33a3554413ec94c9309c2201",
"0x7ddcd764dbf337080c16b4c68e93eede25a567bde1f7dac0e3bcf6edfb4c472",
"0x293c704451a1aa66e1aa0d4c7dd56cc5392fd8cf7b8cc998f6a54b8c30b24e19",
"0x2cbffa47d2c28e5d0ec4a2dc0a168ae258368feea0ba17662168d4cba27906b2",
"0x208c5ef46b238daa217fe46cc26ae7460c70eb25fab5f1122f4edbd48318946",
"0x24fe6c2e5f21c4cba02f4c15ba1d07c732017ac72f262626eee292a4c3484c8e",
"0x1dfde7457418ea9643108cc1d13371791b90fb3a4346f4ea6830fc8601afa196",
"0x19eba78507eb7f4332dde5342776cffb8b3f53973e9d191b0f312f7f05c1e732",
"0x2be0c4e211e0892ff5d3f3b7aa0281e1602cd23684b82ba12cb61be1eba411f",
"0x9cae53a049def9f8088909b1ba59670f0d8a2180b04062eb2c8cb2c3893c11a",
"0x2e2adf7ac157ffaddf5ba5fd0b3b009b13c8e1454b54d298e5a50f15ba24a957",
"0x960206a1b5fd7f8caa23c6f979a77b2df76e53ca4071a30e96e203f6d611945",
"0x1709ed8801ed661f54156b3da294eb591aecded73dc4bab8e884618899d61929",
"0x213a699fb63a980c7dd352008ad46d6c423e77fdd87348879208531b1dcf7de3",
"0x372666a5afcbe6f5458e78471e9ef6fcfa3420dea49e713a8ce1c19cad53b49",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x17f4a43fbcf12508a933527a8912f2842333780fd30c0c46d15af216dbc9251c",
"0x2c5744c9ae7f6d8c3d5b66d4d43b95afd79ca38594b9049d886488cf10cef463",
"0x2dafa6f3c603c4c0b0ab7dea2b559314dff4f7b2a1a65894613d2194595f4476",
"0x2f7218004fcb62dc5ab37c7b3803626296dd6f876ea5eb4834eb7626c1d82217",
"0x6dfa42020ea166652a7a392a6cec8a63171b943d6853730df3c846e32176cff",
"0x23f87a617f1e8f021b83f41ccfe5e7526864953a9eeff56d62d85731ec090826",
"0x1cda3fe46da8e3f2595bd22ae9327c2d2968ffc0c686741a13456fe5b2185861",
"0xfa8625bd9c3af09956eb74e2f983eb6079a050c0186221b1a32ef5050969007",
"0x111520b0f559fe2476e6a6f48060038efb0166ff9f6bda812a02f793228af23b",
"0xc23dee172299609bd3dbc9f2ccfd1e3f76e594c5ac2c3e5ddfaa62289ed7656",
"0x105f42aec8a1b60c20e7041acb94bfeb6f6b5f8c5b71218fee02047d57c0c218",
"0x299f915785e8adc1c2378fedef3083e487db1f6f1807cc7bc66e51b73bc39147",
"0x1ef3836591f803fdb8a0bd89373dd79176fbc2e92ede7006faa5d95e9397d81",
"0x1a2785db4d9a3409adf3b7ddca9ec408b2f93044338ac23122588de468c59408",
"0x1a6ead13bcc1a5afbc63d85db0a41c4a031e480585fe7ae5fce9b64bc866a216",
"0x1f5996a035a306096eff22ff3aa805378e9f4e3ed56f9834f62144f57eb2d414",
"0x238498bc99b623c9fb4daf8ca4e4c87607338433a9bc2546c9f37c86af431840",
"0x273915d627d37ede450dbc5e96ce9489b78ee048f5756082227e62db6b9a56df",
"0x21c11618cdbabff657a20c8d84812b984a017810e97ffc169c585ee296fff9fc",
"0x203e0bf4be8fe2ad1f1eeb4926647caa4f6e429ce794db082fc07ee5330e7cf3",
"0x294ba4a28f070410c4c4f8cb5c09a56252ad05dbe4b5bccd24a4adb4fdf71df7",
"0xe403cbeb904d1582f7872035f81eeab4010de844540a9b2bfe5419d43f8bbb3",
"0x27c86e516b80bede0756a21db1a6ced3ac126996f64f9f6edfb2417fcd3829e9",
"0x26c02ced384da01a247d225b0931e3310f7f689426b3384c65bcfcf1a1e0d8f6",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x23c28b7d927210270a66d02ce14454c7608540c1c4111989c66fa5c83b953441",
"0x175c47171e64b9fcfd9a0e5ff2cbf87d0911c01f7cfcb4287a219dfb65a3c946",
"0x2b0dc6705e72fb39676c099284f87987580419e380019cec6529297780e9f143",
"0x2cd30e4b096b2ac50182c596fc4bd8de276e1d1f058acc010bfe056b50498347",
"0x213717e1ab4fe340c8edaa0f2b003ffa2adf4890ee9ab0bbe6528a2f4e436184",
"0x167ce1eb87442469edc20f5be85f41176a2bf1a7e44ad9a920605c5be99bf975",
"0x2c0874699b7fbae13046dae49db97858a6950199f9a3f3bf8238aeeb73501797",
"0x1a565a10adafab01ae826b619cb79c9c7420a140d41365669ec361b37cb5c8d1",
"0x2c8c416f3d61924456ecc73119c6ee327dc717b411a4ebdb673b48e8ccd1d4d5",
"0x267fd0effc34952354f05332b71fe925b3548f0159ee361467784ef8fb986315",
"0x2bd251e35bedda84bfaff55de37d2835277758a60db4a9bc4fda3571df5ae523",
"0xb7a443712b33fcd61028542457a0da3ab1f087b58aacb25439af6e1e55375a2",
"0x2404133570623570acc718f19ff26c6b47ba03857394f55d17e8ddafd46cb5d1",
"0xda485d8a8d3a97968c8b0789dde653796430641c4dfce40db5cbaea4f392071",
"0x2146d7115c9adecdfd5ba061103729167ca82a2e9e58df7177d10645a23744f4",
"0x2c957d723ab55cfa5de8995ef9904c3be5b70b5774a12d17efd71d7fb10b2895",
"0x80bc3e98f6ec909c5161c498e0613bb736889eeed8ce7bcc93bed02f4bc5be6",
"0x19dcf73cfac4b44c2761e024d6cb2678cc104a528c02799bf3a091908ae780cc",
"0x199422fe9fa1f5d2dbf402c9bd634d4bdc9cdaf70fcab9d0ebfbafd12a02e49e",
"0x1a4077b1cf49f41fc3a2240a37ae60309d6941b839ebf51e1e118c16a23c6aef",
"0xe53e5ebd64346a83c1e7f33878ac8753b1b45f0e1747f680311eeccadd89a17",
"0x5aeff75c7b60d39afafbcae4f99e77e223c35e301db1dbea5becba73535885e",
"0x1f9764d4b036ee9b186d5dc379c2826b17595849ac829e2d52230e243fff309b",
"0x1cbd64e54e94a1499df6fd784df7709f93942071463eab3db602a804337a436",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x190f2a683d41d29fa79f653057c0851c76bf7301c355e46d514e62a2116d7188",
"0x358bdeb885279de421d0b5bced75e4b0b909340f8a3445a3dd17d76e4abcd1a",
"0xbf755f699b7e4252b3fd62793827e613c40b0c1285a2eacd4ef65e3abfd281",
"0x26753dea98885ca2c4aa18a49b9162277722858ab51e3a482275278c53842496",
"0x2c3bb4bee55f665db599acbbb270af82a9f8320f7c3adf113cfa86d9cfb4754c",
"0x149ba255f720eda11444f804e9814260008b187f26ce17e4152c092dd477b00e",
"0x21344c682b1f31453cafeda3081b76096340dac56062762ca80a78870dab3bec",
"0x11b6c7953ad5ab4ae16f501101b9b577f0b8a1d7c6a793d66e4fa161b1e06e52",
"0xeb1bee9bfa6eac0e22bee9a13fa2155ebfcabd0908e74145bbf9428ae0b0209",
"0xf89e6f767ef77ce6ec818807d30706fc114d9e02aa610c0f3f77a3a08aaf9c7",
"0x18a72ade9ee9765de8ccff2950b0a3e8c8abb4a336ad417ea75837e8301b8dfe",
"0x239367bf5652c2b293bf645bd88f1169b6f872ccf8405c2b4f09f4d135f6fed9",
"0x239747dfc96f5ef11b8573b4714b20381ea4ca958761b44e11872f306722792b",
"0xee7d51ee88f040e9c21d5362bfa085adbb01485abe1ed5717b55b8687e40b31",
"0x216277a3d920e1266639f61d0c22d76858e85daf5fa83d6230c6b1628a077051",
"0x43527556626973735d511d252e2a1dd3b55026e3d5b38324a50d1cd44d0f9f1",
"0x16e435ebcff7dc72244e74fef07cda6add05c08a52cf07309bd2eff2ea896b39",
"0x128020b31dce80e89ac5e01bb13329cea3c62ad115a5d65ce68555e4494a867c",
"0xc840cb172dcdbb1502749bb1beb46e0439aa167caa4317282fc78056262eb46",
"0x542b0852563c2bf928db174369c82da60d6d41e9c61425d417f009c46fac67d",
"0x22452f2d9043bcbab68e526d22af55fb835a3e554e5101a82ddbbcc047411884",
"0x11b919c0b7abc6b28c582a84c158d5d68c928475503c312f86ad3a2ca97c0ec6",
"0x2d1e6445ea67dca7ec1db0b08659adb177c9379f4569bd3efd060e06d0bd01e5",
"0x251ba02f642cd5e0ff35e008a0a309c4c6780dafa9fac55b163256d39a4e4119",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x2f09e5f58f262c5f4c9ac2458e58dc1c3f5e0a409ff3f095d8ecec957ac50f2b",
"0x1315b742c5de4460a27229e970e546750da9ae91fe8ca5e51548c60c12aa8359",
"0x60e6ecb8723e793eda04e490c818bd07cc8a972dd900d0cbdc4c28c9e3ac13",
"0x1677aa582feef6ec348f1b194f4f978d6af473133203d0d22a81b08bdcf26a9",
"0x106e8e67c7213d1c649b08f8163f849d0e0cb36391672b3dc5e632983451f457",
"0x218baabcf27c9046b7ce52309a3d6d3a2ca1b3924bd2fb64c157353a88567c8e",
"0x2b2717d36fdfce6e134f255adafaab3d1a9f719b3a661cc1fe490b1e190f2b10",
"0xb0b2c3bac72604b4c5d568e4f4cf53596050af1e7bac3627e9b2cce934eb482",
"0x217a15b51fce1bdfb5678864acc464e95225e47ea40bbc78155c14a41f2be20b",
"0x1ba5231ae9c793948686f7dd7be9c44435dd6a981b3e880f344e2935e14b64b8",
"0x253e39215ddc07e604684a22eb2e7bff9c138b17d2089ba9f451cee209f14177",
"0x291dfe1da2b968d3837a2b2b94f8eea9606535776a260664e8227e212354ca64",
"0x1d3a7e1e04c422de9b7e0b090180518372473ae8ecd8d1fb81f4981bba63122d",
"0x217d25ca6a61a6551abe4bde579165d171513a7c15fdd69e62b46269a1cefb04",
"0x1d65f0b99037a8506c7ac7811c3b8ddfec719fd951a7337dd01e22c6e00f4d34",
"0x2288e24daba6872e61c70d8a4b8dbc67c63a495d41649761198efd7e4275882c",
"0x29811fb1aa54a2592816797a866eb8126f4b333f1526eb6e25bb626224493360",
"0x2d8f4b4f41d9abbc9f03c50e4da5e64fdfe87c5d07545cefcd30131f20f00d9",
"0x28d7a552fa2a86a8dbe41059439b0e35614cfdd841e0d6ef1db1af78d7108e4f",
"0x96cddca2ab8c7ae201908ba1a671a9117e24ba7bbc16b331babdea12bcad5c7",
"0x23e387be7e8d63cd8b769e13b718b560bca4a602c8992be3d75e71747a10dcfc",
"0x1f77dc7b1dd84dd7ec1069c065121f51c036a41237408070c45ff15d2462a60",
"0x7765f1e2b28bac34ff4c1574654563e8f672a14fb105676a57f2554f49da9c",
"0xe1356ea8e8068b1ef8287fe1362ced74d7e1ec18a1bb36e6fd2f22593b51e9c",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x9d1f2588934f14551f899de997bdbfc9192ea76d1490b6bd5e1d691d3403af8",
"0x1d48285a000b66b39acca3bd48ae38d761b590d846ebec486db4899d1d3c4d72",
"0xbc56781b0480256d3661ac6e0898a7084005d607165224d494103866e256c47",
"0x88867a8bfef1eb88b2ebd34daf3524cdc118d232bd1b91646c11a2a54556b06",
"0x29938e679bf6bec4d293fee8615186bb09287291d69bd50953790fb09db7ff36",
"0xf3078e2dba998b8202b3eb91f500e8cdf87e2ac9f86edccd8b907b1d73f10d5",
"0x2feca0ea4cab180c357b1dcef1e8816caa115f572fb2da374e27b2f7d2a17108",
"0x19a53e4e1a8aa7a15029ff45f528f42c8dd0360c8dacfc125ce7d192a0a70765",
"0x18ac83f6bde2bd90432ee9fc03f0e62871969e8ba27aa1dee2c72e2fb42e9351",
"0x2cf369a36a64a81b17c4521b17c8ef65d09442ac2858d03785fff1f8ae4e3881",
"0x16d6acb3b445a2dd2ce6c6bb79f1f61f15019a090285fca38fbe54e04704c55c",
"0x1bfa4fdd27298d16aa06bdc9ddb3c29f48aff4fef45b5ce80b4acdfa43fa1355",
"0xc6d30e4b903bdb97453a996931ed19b556b3887f54d63084263d278bc2de531",
"0x173ca2118a8b85e6e3667d2dcc1c480e163a338cc2d47992b0e6f09f2d363c24",
"0xaa825097578d91eacb40da93cb739f9a435c8a9bfe2ef8f63d4d392672506f1",
"0x2869d724819d09fb172258ab1fddded25d8f0afb23f1a87b331d229eb61e032d",
"0xfa3dc0a38fbb92e5f714183536dd2cec7163726a64117973fd1d927ab7b0c42",
"0x1f0f50f138ddd25e9c77dfa15f2201bc43fe818595195782fdce833664fdd244",
"0x1a8bd852a6a8a26b23057e5bb85facaf706a6487a0651c7c226d0cdff09f4507",
"0x20d045353b22be410aad1286b4a362f79c73f96103392c5c4ed31889729807d7",
"0x2830a23a528b1c1e7e277f97424cbb153b3d316fe1b167ea01309bdfa6a0f623",
"0x1f8f3d87ef4767679cbf773af4a2f27614124d5270015c7d64c0b13d25ee63b",
"0x2843847fdedc907101ab1b8915d7151dcbc7e27419d2cc24490d2020f3193683",
"0x1fd3dcb19e924d226e9b428d29f70978d7715bcbda1ec70e5984a67ae61537f0",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x22afc2a215e589f41511280dcd9a4d2f7714e205f2c4d0b663c9d2da07a231d8",
"0x256117a01b4903a52e27a41f92d7a65de53876e832d5d0013fbbfdececdcb17e",
"0x1bd505fe2027ac17a51db28bca97087a4336103a375f5d726c4957c63c1377b2",
"0x1370beeb7c62a69367b6d83f639e5eb0744df8b7197e44410965c697938a9e3e",
"0x1b23ee8b148269858c2f44c34f1058f44e4f066b2b97a357f81a0694bbf3baa2",
"0xc11837fa154861251a3c6d09c4590cf5b738abb440c9f221b6fdd86b62b950f",
"0x1e41b6d8be08383c6279628ffab3e3329bd391e954f5333c2c24bea41b1b6107",
"0x7921a5cebe4c7e339b84f0e635a48591367584d0c12a64b5637d960f35b3d11",
"0x14969d5919a6d85c58ba30919c0f0e52cde9197db39681160c5be3b98aabb92f",
"0x1d6e48aabeb209860512a8935eaf23b1bafea8797a6a81284fbfe6e81c1f7a34",
"0x2e3ce888f840d34ed8c660bfd5a48b4f4a0c040f5b39165e2615427831f86803",
"0x3383db94e9d7ac3e3abfe0d27482c9ba837264a10f482ae80f226e51042cc26",
"0xaf89e9e5eee9173993784fb566e6d538efe46346ff5cf61b1c993b52a42e46a",
"0x1ef03efbffd92cd2da93741eef43a8bed80a76f4f68cebb61493e971b8b7e7e8",
"0x274067b2a04222952d6577de3245f38219ae54f0582d9e05b7d8a01330395345",
"0x16ba37bbec0a43c8f30d001bbecb30bc3cf3db728da538ceee4ef9ff4ba486a9",
"0xce229b9c289b8e7cbc4e020a0372a370a7f282201b47781caff3d01642b8c2a",
"0x2f80729c7338be1c0dd613c22e836ee2e9a9d0b06a2fb5e52af024ba8678b5e3",
"0x1cdc6d2ae50c1329a117d13ebbfc1fe86d5526a9f9c59a50e031f37b6710dc4f",
"0x2530a467ba204bca45d83f9ca4c5ac9a568c053266ee1126607ac33c7e94650d",
"0x371303ff0fc68a7c62e17b71ff98bd5715c6717d794b69df439a6d7c00011d2",
"0x378305e20bbf96aa0c633930f4011bc20789b5c1be3f2929d693e704c552bf4",
"0x1a3636567c1ef3005e7d5839bca900888aa34197fbae582cf6826f855020d24",
"0x281e2a06fed1cf5b0e0b6e03fa2652cd608fa474299b5c7d0e59c6aa35c0b17c",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x2b3d84e5c61b2b97939674b7ef13780988f0c2da109e71d17d0598f080236a27",
"0x29e2b9bdc8dcba3617e5663dedd89fdac40bc1714f767f327c6503d7f146fa2a",
"0x216f7ae6ccd7bac97e2bb068168cf18b23505999ad5916e52ce95a23894806e3",
"0xe8d298cae881515ab0f74ec935567a5b249314023b3856d5f9ec1a5599a9b55",
"0xf1e1e45f847cb03591997bc8812b0f422dd0db2fc99c2417a81989f2e46",
"0x5132e56caac6351c00de73247be0cf09de357c4780bf705fb1d12954047a302",
"0x2c1f7dceb1501489cd4782c13dce297dfe75af4b4065dfd0fd51191e0f03489a",
"0xdd3f24843220bcd4a66586631e888956a0ed26f717c556dc5e20f38b455d4e0",
"0x2f3224043392306423d22f0e9e5c15889df84a9c1c6e2bd406a469139d132844",
"0x2b572f7e5208c5e52a759e04500a1c7d641ff06df5984a926dcab2e17ca28503",
"0xb1988858934c8a353456d44c461a763b6c98ed3cbf72a21e2e4690083399907",
"0xb0ce76163a25f724929f8ffe5592bf64313660ebe1b160472466bc091c5c3de",
"0x173b128e873c2dd53e94e438b4cd066ecfa28eb42d13bedee742efd4ebe4dc3d",
"0x22f7d627420794cb514df36097c3dd8d2e92e2890af2c1afd4b5f5bc26a6629",
"0x1f343201df3060d03e313eba7690883ba77fdec3d663fc6884ebd401938af261",
"0x2472c968883b169ab912d4327cef96e6d4fb7b2c00959bde150b5ed9708929e9",
"0x134c248a14ff13c4202f997bb87ee93058de60144cf2f5141236f01455438526",
"0x206b6361e6139253e6070f905d6b7d08eac74e4ef2f54ce09643926bf5c8e814",
"0x2db2cff5528de7a26e0643b161e7b318e554aaab93fa72f9f475d9aa7c6ec8bf",
"0x25e05b8a3965fe0a250aa7ca030e3a7439445478e59dccab16a621928d014571",
"0x2a8c5a77c61420b6b4ebe974da7140a25eaf9dbc9092f063111283e773adfd1d",
"0x13389b7bf63bef6a68983125b86f93b62b6d9e4783f96b710e2ebed3adbcbe2d",
"0x2731cadff040622fccb533fd62a0d43090455881080a898488d55c89083395db",
"0x1886f751efed6e401c5851f88bc285e68de3b94062bc810b092c3e4160b0e12c",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x1a1de7217c640816ca96d69dfa3a9ead0a32f62b2d864c5cf3d66e2977616a60",
"0x21bfb88e0d52b7dce5432f55c443964e46e72879baaba7aaa04577b59fbbf100",
"0x1e1c9ba5f1413166786c96401b61f687ba50dc735d815a4e811570bdd8954a11",
"0x378dd10a31675f7bcdb8018c96cc8da6d034a42cdb62b406c5bc00900a3377c",
"0x274d6dc05dd550d77fb31d349b2adb5f38eb4b27ec15e8f9cfaf56fe2f8b318b",
"0x24fe1bc328cc95e0857e89e99d2ca97f327c21aa4de5c111a72c2c37235e7d1c",
"0x2a98fa37a16d2f8369b3ce72873960006ea67075c023fed5b32dfe407e636057",
"0x1097f947557042baf445bdf5b8a92021976c14cd0354ee88e43e8c8c5caec4ab",
"0x7734a2111d925edc13496d0f5922ab36acba8467999f5fb727ebfeb37a38077",
"0x2fca881eadd43cd4b9b3bde9046f6a2505bc46132b2c24da4e27c102d63eef34",
"0x27c952411017987d666bec758d6036c17e440940b77db47b40d539ee1156c1a2",
"0x1b329d612f773e77721b7a0f9154b359c24a6ff2ee0f5b9733a78a798caf0f28",
"0x2e165793b072eaa3576cd18b9027582368581339ba3dc1acba9cd4a202701686",
"0x218665404266df9d5ba6ba1f5a7d9a628ad7c74a092860e287be14f0bf58774e",
"0xf42176ddc2c84d12bb3798fb2b3a06e44a4c33ac39ebe036c7d6ac6ffdaae80",
"0x21dd47b40fc1e454614ab099787fe65d6d8ea9eb0e4055bb51e34c51bebc1dcb",
"0x7d3a26830f8b14342a63c1ab7f713db81ad94ee6e5c519cbba0bf6d2b87b265",
"0x13a106fb1b648c8490a71e9c16886e0049270240189d44278c63a46f744edbaa",
"0x1caa59825f86da2ce09134f4ad823df1faec3d556f9756312cdd8991c3b56d60",
"0x15cdad7e7f40503431e7a8c20a7e1b48ace6d194ee7d7829805a38d04020426f",
"0x35c2a4fc2c424ff77ca180b9b522abf519f1fd8b5bb7ef7f1f8fc7d31c117c4",
"0xae2ec57575aeeb3814613d2390f8ea28130ed34725d1605b585b4e8cbbfb4b9",
"0x1ded456ffe562fc6df999ea5cc80de0ff6ca5fff1b0fb2607273ef1ba5262edb",
"0x2ae307a4f4670d11f5ac1c7a3a23b6dac613d3f104e107d0438e2ca6d0ed55f5",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x17570a15226e3cb10d0e0cf627fee157af900cf4b22d8bebfa0f05ab45d56306",
"0xec2cba7becd9f7b3b07b59be1f747b3fe3f40ff31873dd306105ffdfba14106",
"0x115a73bfcecc700e34ebe87a02338ec4c9e1bd0d95c2554b12cd5cafa1f75f87",
"0x271882e1e88d3a90e536ac91109d8940ae411f75de7cbd43000d6316c5ef48ab",
"0x28d797cb88e36cce87e39090fedfa11dfacdf2adf148618d262e46fda6ecd899",
"0x903165475cdefc056bf3cea7cf26e39e87e7d1c8e1497271df24330ad02d8fb",
"0x521dc03abcf3c15278e90552e8162b2dac92220d99e69ef9e449b5a0370afb0",
"0x1f80e4baee043beb212593df11501a79c07c898df6cc578190c679e64c34a2ed",
"0x1133a6e8c5d0315d2775206b849588eaabb0b63a8faddc67806ac13faf127b7",
"0x22af22b064becadae113b24d113f0cc3dd0d178f9cc56d78e84bf341354918ab",
"0x16f91f204c2bd84fb907a7ab7442742ff24ab831ba252806ca7b6e69c77ce94d",
"0x1d2c02fb8f7780faa24f3da1f29e9101c1cde4461b7d567b949bff5ce1c71ee2",
"0xf8e78d6c9a055af147b74439decce135691562dc5b8bac4e471fecb73562363",
"0x134cd1d2c86faa3bff3a72cb6226109880094173ee2cc808abe6f9586bd47844",
"0x1b9edce59f36f20f7acff0cd78bdf614f6a8f1bcf95ae9d6ddbf5c8c7fcf625f",
"0x5a6771daf1f2b83d0a92a118f30d42178846e5e209b82491656febef65abf3",
"0x1508cef9d99fd03d1b6479b90399ca9dfe3792fc63bfbdd35661e0d44bad8096",
"0x291cc5c3f65ae5bf17598f432aef5de08724ab30026f25adb70f85fb3bb0d455",
"0x2c7723a807b3944705b71db8c04cc468820d3bfb99706528f66965bb8c9734d4",
"0x9bb171d7c99e8b5b35def3624957074dc2f0a6beb861bdf417b2ae290832dc0",
"0x1943ca5707ee772b8391b577e295dad4f10c2db1c770e33d8c37fc2280d71ae8",
"0x1d7852588ccf0c51663abd65b87004ad5880721019214e00190cc8e939eb22d0",
"0xee871118f882a42a8acbe733a64b7333a2d14413c511b6a79d58aa96c08ef8c",
"0x1ae19930e083754140dd85378ca87078feea1703c3c0404e2776bbfb4cdba8d4",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0xa7c934a0347f0de7e9e7dda8b1ae9b094bd6a309b8323e06780821d7894fb5e",
"0xfcfbe728f5c1f06572e5a750260efe423bb6992a7b1bf8f0e761e7277e71d30",
"0x170dca9f0f6e9057372e380cfa924e65cb86afad866a330ec9ed35ebdae1973d",
"0xa4a917f344bce3b5f92568450a4f17e6a17e251c7357e708ec3d6e559bd89bb",
"0x127ff432555f7e08beafe0fedba0ea990b49ca5df42cbb999c3bd7b911195362",
"0x65b6e437cbc026c1623071777b10b8dfd605a3598fbda0687c74eaf525dc1b8",
"0x2faee8e6ee2f7bdd25ff36c3189aedc3b05c4bdaffde640c0e4d9284f7d9a8a5",
"0x1294fbb432ac3864a9c12eabef13d07f732b652836e66a954c485735899241d8",
"0x2dd3ab4f03573f3362bb7ddf9648bad1b43ac6939d6c4fa9ee73dc7fe66deee3",
"0x2029b79d88ff15c860971aeefb2ebe0d523faafdd6096642b018856793e74b4c",
"0x2e5c56ab0934eec6ff8c8224ffeea657f1b99f880a002f6ad5352d30f7c0b85b",
"0x24888adee436dd67b6742858809073a5c4393d61283a825b65b883114d44220e",
"0x1fb80c654292d64f24d331f4f6fac1a20a76379865a6331e7528de236f44eb11",
"0x3e8ff048f23e53a5c6ef02dc7d37f316cd4528da4e1f6cbc4582889e1470039",
"0x23a4cda868726fac1665985e13d800d100b56bace43f67e29da05733c2a351f8",
"0xe25a1b132ba0bf76f1e361bff6b9bb9fa2d3aaad114f589e100625225a04b9e",
"0xf534c5ad59c9d1c4a37bda4e52ade866d305b982309a004f3b2c6f8b10e9854",
"0x1269fd5d157f5bb62bfdbf4f3f88c1b2b684e40ce07749cfce657a373e1e4b91",
"0x1fb70d1ec4776f91b42677c88d2983442b78ef00e03b82b5de606a45ffd3b4e6",
"0x29eecc22d8e5725e00c85a0651edaf5f3e9530505cae2d7a3eff6ef496d7b1d2",
"0x2355c9e8fd9fe0eb681e8aa1e3ad43740a79cc9d930a029fd161c3ee32f7257e",
"0x390f12f658c6d9291b118f5e116727e2f4a07140e8f3563ec5b12a0ff6f6a7a",
"0x140256a4a9cc33d93eb486b96b737dbd17580a77f20924e4a3d87c23b25b233a",
"0x2d2be9983d14c81d2cb8665b0c08f89d6140539c712cf4c2ac8cc75b2daffe46",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x2cdce0a94aa8c1acc2db79358c3e67d954983ef0927dc6b26f9abad820f1d420",
"0xf49eb6531ab1674ea9a6ff88bd8148690c04addf9a9164b13ff2c4cf008443",
"0x26403014e3cc48e1cf112ed79bee8ee1467acd303d0da5c88b8683e38bcb7205",
"0xc5f602b9f3fda8e647ef7a42af34741d11abbe0a99f464c101e534b51cdea4f",
"0x18ac38aa55e95efef98c347335a80caf7fc5c3efc95901321e3b13b12cf46a2d",
"0x2b1960c727b10b666328f0c37f5cbb3b06a1ad54f61b9503f23b02e5c4678519",
"0x16f13b53b3c6a47f01c73f7e26c2fe6ab61b3e1f5e553413f2ca127e53ce4879",
"0xfc4ef669021d86d29dc04139b88f55a5a57fe0bfa253631918e0d808b1236c7",
"0x8834ddf96f673a786dc5af125eb83c9ffe1537fc773c21d101768aac7ada57a",
"0x233f13c0ce9b48867dedb88a15b1461cd1befdeb99a9c0acd863dd45e0672508",
"0x2099a619097f9565ca65ac96aff19cbea16a90e056a33b9b49dcbb725903edeb",
"0x269898a890a0eb11e9b84db6ae0735714123d4f0aa0a30db183134d279f1a90d",
"0x27fb03bad7fa46a625fb06a4799bf7a07ce3bf8dc01860cf6174f5d9cd49522e",
"0x1f0a5bd99fd979d0edddd243d6966152706bffc8326fb088545b38d95fda103e",
"0x1b082065bfb2e151552d1aeb3f2435ae8c522db79c1c3fb847fe73b728dea05a",
"0x196840a15a65ee462a8312520b868084ed0213c1a881adf907ebff992226833a",
"0x1bb7d7bc4ea0f7b8fb5a3b059478ce7f5ce2069e7d62a307c21d0400f386049c",
"0x2c0b3d687226a36e523c0677e0f3949eaa45d0d3b9c9c2d11b0431d8ecc7410d",
"0x2a22096acae1d75aedd8fc843d8130cc869b142405d3967781ecf9ff0062cfa9",
"0x11d3df41e1d31751c5b00b775f33925b4fd5f8f66dd2c5b2e2e04cb090ffb97b",
"0x29d0fc08ded332bba4a34cedcb8e3eca9d9a6929a5efbf58a72e849856a9cc67",
"0x1a0ae664c389dbc11046bb170c0ddb422c4c6c2f10c68ee98ae7ac8c00c4ee83",
"0x6f3c77706973637c7f2d5b9bd92d6e2424b926c38a2cca7bca5dfa0794e5845",
"0x56965616b2df66e2918ba840e0809b85a567a3e7d13ac5f1e532061af856a57",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x2dfcf11eef61a008f27f61a5de96abc2e329dced7092f941def6b523960afc93",
"0x4f73f5afb82d2297d4e51498f0828eeb3eddc016ae0e15a2a9e3cfff340d500",
"0x26290fc492220c99dd821c4a4d1acfe1b7f40b37a13bbd3ab51405a9f958ac93",
"0x7b53809466ff55e2e4f5ad0f029ccc5a1ac5d261732ab2b010037e8ad080317",
"0x80ca5188ef7378b939057774b2ecd1f98abf27dcd473edebccc06ac7a942e26",
"0x2b6b01434a47ed188b43157e1964f3725cf4f8113fb0a6cb4c01ec7dc2bd47e3",
"0x2c2106b5cb401bd68e15746349b56238f670e58a021ee2ac8915288d5361475d",
"0x88ee10bba489475547984b890d7e794ab25535f1fcc8fae04a33d300a5eb6c3",
"0x29108e4588512ad0ab28e432c789fa3d3e0dc0d6002e19cc3fb6795a75d6971b",
"0x241c4817a914814ced21c06ec5351e85ed7a90f2843d23bd5363aebbcedde7b9",
"0x22ecde699dc8dbd7cd3d81e80d9a81ad023c57bf3aec5a8239871472fabc551a",
"0x20dccbfe3e84b40f3908bf43f0512048facdd8686ca5f17192f983599daac6ed",
"0x2c96389333c5459ec65960d848b06bad4d6b8abc6f2602bfd81824cf43c7218a",
"0x28c59dfea6fcab6ae73beba612e62083a58bb80306a3bc2746ace09d650c83e6",
"0xdd478a62c6871c699ecb4ea12e454027212fd8f1e03a8efc005df6d20ecdd40",
"0x28772e7be45e36b90c2d439748c0d77c0b523711ea398e7dbd85b0d7df1300d5",
"0x2a37740039be074389e76e1ef0095d7d111f778072d4a57334ebca290d667a4a",
"0x2f37845d94aec2d63ddcf2cbd3fb56fead92ea8ecd819d7eac3c2b036c6c2cef",
"0x15edccc5a7e695dff4db9dacf405612f00ba80a16dfda1b55cf4beeedf90ddbf",
"0x2817134845b5ec6aeda4961644d513269f86e07a21ac3b7344d582ed07b5f46a",
"0x1ef5390790a2a3214140b10962d9435bfb0b4e6ce24b7a1ea0c9af689234b6bc",
"0x18427d6f7cd9bf7ace6341d16dd845cd1bd18ed4b9b8ecdcab36fa45860855d0",
"0x9de33bc7e2ef786db74db7eecc7ff8720454637bdf51b281a4a1478f198bae",
"0x5d2c63aa2de4534fa4df7a6c5f6d10599412fd247a59f778366bff5706110fa",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x23aba695154e684ff482751cb761dcc1637ec5e99aaea18d0bf2e2fb26eb142",
"0xba208c04ac11ef4543112dbd88212917dbaab5a87268d8158a487ae3241584e",
"0x1cfed0b58000d3ef4cac1e6fe54e64af54f393accaca4d5b8cb05f61ad9cd776",
"0xba1df4ea027f8349fcb15d1edb328a76fb536ab65ebd535787945634d09c5ae",
"0x1e136b44ef141c91945c8768805ce01001958ecdac9b065874d21717da99b408",
"0x20643e3f3c68b214605c6df2d802e1e539b465b98307fcdd0f8d5bfa1778db69",
"0x2127d0e7d940b3132fab6b1cd719577f51bf8db531e37edad5194875ee74936c",
"0x17249cdabe9c9db4a1b88bd5636d3bdb48eb0ba6a17357452c97f695b080d5f9",
"0xa6b94822882ba1ca1da954566ad30322e3458a6e0ddb143e4f5f306fc9e3336",
"0x2486410df8f9b4817d82adfbd24aae41ebf7c4bbd8708d3a7c3b18a999cf79bb",
"0xc0b7684e8ae46845e7766bf7620d2791a3d218bfd812d008f73ad351ba86aae",
"0x97d3ee321f0db8c04cede13ecfa87cca6ffc215653dbcdbf62825059b8521e3",
"0x2bff71dafae458bf4854d7957865e2362b99a7891cdd38e17f76c5828aa16531",
"0xfe15f8b13351058806bcaf16fdb68f3ccdf3c30f15a85a58df2dcfad72e296a",
"0x2bd586480aa18c155f688c75ba812ff81990930c1aafa4058ebaf667d41e53ca",
"0x2b91cb72fc45f6dcb1dabf0473e2455f28be6eb1b59cff91b5fef3b81d628ee9",
"0xcdacb5ed20f18668a7c3f21366e04150d0e877756e2ee1cee11921184a31a71",
"0x9239d69b632ebcc1f559752a2fab086bd46cee120504a8c94b4427a2fecd5b8",
"0x12bcdb6b20dc77d3d5741b3fc61e1ec6f53137b01a23f48c2a267d6fd59ca0c2",
"0x11ea73b3f04690ce2ddefc2af3bf8f8054ba74dc313b09ec09c96fa29e865b0d",
"0xdda6467c64b0249d2f065df90fbc7a685022ace6d9cc6d9c983dbd7d29eab53",
"0x15d7c61e8a8308e4a43d992947c0262b65bad163a8f101423dee64c22bc3ab02",
"0xa825acf9f09d653e06be5dba7ca63648ebd6060377101080daf3de7bd9d5380",
"0x2dfbdf5d427e2fe6892fd40d4e97ed7808dd823ead27629d894982b7aba08a66",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x1c9ea68943d8c846364060646de0e33534d528a23ad82b8ba6870754281db559",
"0xa15008aecf43fe4b9a3bdc26ff03e3867e974352926cb3ad1535f7459648a98",
"0xab17a8ff84f7fa5d0daac95c36e606fc6e133e7cb04f0f7b5334e8e6c44ea88",
"0x1495d888378f7e12c016cab0bee2534903fe878d5650aeeafb3814b3a8b1ccbc",
"0x29a054aa447d63b2124f50ddbc4c2d943636ed53f22651aaf90fd93dcedfc941",
"0x395b15a827e37a6adf3175a2691c288aca68e16154c2d98d96bb0dbee6a3f47",
"0x2f47066bab9349dfa62b25ecb43354246a47eca6216c1d12c36601fe3413ea6b",
"0x1b1ad81eede52f8a8c0aff49a041dce0b55a1f06c826b441951b6d654b804012",
"0x137f27f0b79cf88476110b34e7ef630d03ea21338c200322990157f50a8f3fec",
"0x131ff85cf21b1a68336160757d135e1d605144f82b3adac0fda110084d120349",
"0x5f848d592e921b0c3c7a36a84765487b1357d0ec01f8f329aa8c6f266f4a85",
"0x2f8999412ae8dcb4475413e72f68817ec1a094272744d32be4b8a0ff74bfdf1b",
"0xb42e032237f3bf21ae95c4062868751dd39d0f68c06ddb849f691288f33e261",
"0x199c8b45cac96bb0db0f2dcbf92c361191cedff0d949606a140d3420dfad31dc",
"0xfda38b5f5bd1100dab719bcfb3889371f5ab9ce9c42868e7bbb1ce2d5a85f58",
"0x1bbfe63a7558b0e9a002b3983058c3cf399d479f7e2193d2491d585d541a086a",
"0xeb005763e3b3d55840741f0cbfc95fe55483854e817b4d7cfb4549ac79cb34a",
"0xae77d49a777e5a22a3fc6aec242a7a80f52af3e1cd395cb8862b09bf3230ece",
"0x25c1db48d2561608e3478c8238b3872dea6de1de597c4f26ed8baa958480e5b9",
"0x150bf881bbd323068ed07cea87050866e7b29818f3d36e08fcd35b31de21b85e",
"0x2e9d25423c272d1989d6ec5e983812e73575f6040b3f775fc9bd1c7817c55",
"0x229ed6f052976bcf9f11e48f4fccbfb450a7b92efcfaa532c1c85a059db33cae",
"0x3ba04ce72a78038c64773239e8f8c1da608b93fbde21c2ce94af9615ae10f44",
"0x2ea6dd6483856ca2a36102227dc147fbb29fcb62ef939915a9db66c103a99abb",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x29e75237c1ee6bb877b6e95b7355cac03170fbf57421be8dbcc50f08693db587",
"0x137b76a84a30e906a38827cc4b62b1a22e942d835192a98c514eafd9013a2dc5",
"0x1e2a3dcda8868ab407f15b612c405069a5c1c545af827bb0f8f6e32dc55e0277",
"0x5b71c5d1613cd9b6b3cfe9400cb5d8583a16dbc1142cf760ca6aa9f816e9f28",
"0xa7603ec122e8e0178a7cb29db181e2a9a71f825effc8415b8d09feb7bf6ed31",
"0x12e4a61dd3e9834662b78d9a820c25660926039237ef579fd1eb260bce13112",
"0x17c89d0343777a479dea31744f2848ac06045696d8f0017b7fa9d3abf88cb373",
"0x104a21bdcb8e49245acd6fc281bb1263976f138797f19634c79423f349d6dded",
"0x1e6ad3ab8037bed2e36c872a9757a796696ee2950f97cf31eb83bcd4f63805",
"0x248ad6966b401086060a913af010da4ea282c2d1461e3dc100569b3bd1685a16",
"0x1b4d21b426441caf2545938d41bcb3b37c32b3fa15ed8ffd1162e65242ea4d39",
"0x29c4422c99599bab17470ab9388ee796951c249645ab164e90530fc851ea1fd7",
"0x1ce500e40779238422cd47a0a6d7f3dcfdc0c6902869966211b0b6a9acf5171d",
"0x19102e3c727844fb898c083bc1ff45d106a293d8dce6ed43895782daf691a7b9",
"0x12947f4ac2f6fe4b1125a28d17cc4a3e2db92fab0e0b97728c8b7bb2047078f3",
"0x2a7639bcd6591dbafef49fb61db710e9ca0d712cbe81cb86340d0f1698103515",
"0x83ac15141e94aa73277ab521d9eba44ee30f4e02d6e9c1568172bd18c9b7e6b",
"0x480635cff8314d917d8a55b349529dc633170a143f4865713f10007f7f4b7d9",
"0x1c03ca2e6ebcce9a2f4ce66bb039d036b2b7424ae916bda6240280d5e5ed0a1f",
"0x15e7db7d25266f604b8f942efb4e0c32c1e45621336d280f1b904c3f4052936a",
"0x2215b41943b064cdbc20179c98c4a6948c8cf249f04ddd18f519e9595aa33b",
"0xba3d24e5581d6959c2bf9c0c69560f1dcb6486734dee56834898b97e8c04b7d",
"0x10de6cbb712419d84dbecd375963ae617b7496be8ca89c5cf3ece9d30f4f854a",
"0x2a4f4573863cbfb189e17e80bc465161a508dd069ee4fac346c2b024c88b5cb3",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x79c218efa2fcbe1cac587faa89bcf970134391c8edadfc9d54c666c091a6829",
"0x112316416efb7fa45be2c134395b446f048902531554fd38e0bfbb364d196924",
"0xd77ef457994c37f8a3bd0068572311673ea26b0fd473aa1ba9c25c6a627692e",
"0x189bfb671bf421730764e771fd68f01e883f98b0aeac6e5c9b623bdf1505ea70",
"0xd77f35f4ab33fd80625be829594190adface4ea623ab12520920ff8e707a591",
"0x26288f7ab16b1812ff362b7d283539b18dfd08362e2a7c4466744a8b815b0fe9",
"0x26f1bd644a7b3118e55d6beed008d72deffbde92815b8871ff8d861153eba032",
"0xeb8a1d5ae4081352c7ef3d50b0622816fea17a0fb9cb163c0e544da8a7e8ae0",
"0xdb56b6264829c99f094eef0b8c5baf36f6c9518555a9b8ce5845b4d32eb96e2",
"0x20883c599a195873758fd917f44d2079778ccb41dc128b8003cc007b6fd664ee",
"0x19f29faf9c5393cd0b7c07a902457096ee6543d1dfaf22a4f897d2ea6599860",
"0x20a2bbb3ebc1f46f939e64356d5d1609b5e50b5b3fdc7462b4faf735cff66ee6",
"0xdf989faa8055df73bc2acd9e8d9842bfdfa81140488ecf67db886d58d2a84d3",
"0x1c208f8e89b2c7fd65a95e2fcce432f5da8e71640467d21f351b169d03395c9f",
"0x1356fbcda43f79998b2833fe6eeaaf63886cf799f55505d81164c882009151d4",
"0x2e99fece2dc2aa38fc4055171969feafb838a5f2735ecba803bb9f4d18a5dae6",
"0xe39c64bd29c62c85340ab8eb5f7086e1c9bd733945179b108891f966b220874",
"0x8432d0352bce6861217bfb3bdf0a04f3ecbeeaee2d360cd5a28c5d2305911d1",
"0x103424d7f89182df35cf2d59dbc2b453542beafd78d95995a5e386aa2e55aacb",
"0x10e4ff8e36e76842ca11e222592d318986689fed7328b94cc15104c8d86e2def",
"0xa6b0020177e766bb234bec7dee733678251b1c8899c516ed2832aec23623c5a",
"0x7514523d425b76b3a7812057725c07333577023bc38d70d079eb2d524d94f87",
"0xe666408d6019b0c96d7c9dd5ab9e08a47cc988d93292535265f710873da5b08",
"0x2339395b0617cd94dd101a4d03051e9436327044ac470ed0420b6e9bd876bb5",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x823e9cf59d9e29590ea5d5caa60265f1eefb9ef497a8a653e21e6b884bf380c",
"0x25015bc12c22856eddaff514db520795225428b8b63b82d54e6ead88904e716f",
"0x147f4836af834c89e12c52da5d778726c878bc2005e78e9c0bb46ed47740bc8b",
"0x695c3ae3f6aa362df3220e3b4b230d3aea7ce4dfa4629a0b3da2cf68ab08b2",
"0x2de7695bf1b96fcc94dd6b9f46184a9843a90ccf1891093670cff21e6f9a6fe4",
"0x21326346451906a82345ff6a916bc7ffa139b3edf1ccea12b1ccaa554eee5faf",
"0x112efaadc386b3c1abd2d173beae1b5a9424fe57fbab2c2825c2e6a7e663fbf3",
"0x1a2a5c2b2990f00cb8bde45b57589cd7fd1c5e0df587d6718999a1893f0bc8c3",
"0x2087e95ae6df27098e3ebcd46f3e4feca4aec7df172d5ef293849f671322789c",
"0x254c2d79bc6811203b55ce01f1e8295095201f0f03613708366a7af5f7b9600c",
"0x10f23dd383d2ea9524e512e2c7a3b75b76acc7766a95067116493a0d1db0efd2",
"0x80154347a02980ff5274996369c7d439951efb11b19c3607010b03de802b81e",
"0x155940fc6e3236f82e7b7257f0828b1f43cad68677571d814eeab2a6986b223e",
"0xfba722c1bb656ed1c16203506d15a78c79088a9dcbad00a18e707b71f326ac7",
"0xa31c81db83a6746fb9747989509010c547d619d1823298f1f5674551479bc09",
"0x16a2ffcbe9959f75223188ee2d7bed0c4cb9ddf552c98fea86a6c01f1c7e0dd0",
"0x2e7e9b9c74526581808097354419679f2d878fe4312934613b01820d66080fe7",
"0x2df5d5cf7d48de207d7ff06b292961084478a6023f4ee1a0da7619008977d815",
"0xe1c110badcba8d0d3190b37de62dedfdc2a25675f54d4c5bd6956fa5b6c1d91",
"0x1257af1a62fb76f7a2abb3ddeb256bde2cc31596ed9a5aa2da5df05cb56b9ebb",
"0x1197774ef4175d674951e91d56afee6229e236a6112a802c20621423b0a66f3f",
"0x15787ba0abf814438a3c358e48b84cac38c4dcf66441e29b5a89bb17b6dc50af",
"0x10df04b3f297cfd58260e1933420a96f126fe4a3f9d53000e140d4f55c2217f9",
"0x26522aedb4ef7245ad2e50ababed3e320f4ec30b43f2bf1904c956cb3b9f430e",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x30084328d537eeb68e55d5593d350824f01bcc9a9d8cf28558982dde43bb8ddc",
"0x5921d17d596463a98fabd2e90e2ed92eeca8b791f75134c9aa7538ecf90e450",
"0x1349f05b3e3290ea030b6f2696ed6df35c27205e6bd904b569c363d985c81fdb",
"0x1d92c460a4cd6ffe4582a5aa95ff6a8369a804f55d0341dd94d495d538dac09a",
"0x1e27ce95b6ad61a67da6b7ff01d06998a5e66b70ad7086962f8b6f6687fbe00a",
"0x260b78052f342b0f62c4a6d75c2aec7321b71c084fd3659255713de667cc742",
"0x131e63069626670c022ddda083bfed93280ed3db252d51ad6a7ea8948ebc9a63",
"0xd89b6c7f1e046e139cd4b937b5f30e293b478845aac1e1e64cd90738dbd2fe9",
"0x13b662585b95a62cf47a3d74e971dd1a2195a9987ba5c35349b2ac299bf6daea",
"0x299cddcb1afe110299b2c4589888afdfc8b33293a4b4f7cf822a74a922f4d61d",
"0x243f933137a5377ca39a64f788a1bdd25027e4c1579908aa2329c18f13654b40",
"0x152517da46773ba3a5708a14db3239e59b4cdaf84ca55ba6b7c61e9bffb6feec",
"0x1811c08f29173c3ffd29aaeb2d9123a5e2b5bc32e5d74a23f0dc026199f9c8db",
"0x2beb86f7fc3941962809bd8c7209613eb2f403a1db90acacbd487034b4e734e0",
"0x22d40f04d25617323bf6481a7116f5c77922d4a98d867730e9717a181c24ebdb",
"0x7984c5792dff5a244e45e8d9ca13d787cf5725f45513595bbff1405f8a12f62",
"0x54f16dcf84267fdbd028fc4e88d51fa7624405920d6f85771606130c735454c",
"0x1e14b42a14dc7272d18f47c28dd8050fb3993b0c0571a12f3b3e4a4c49ef788d",
"0x125ddc89a4aeecea6d3620f026c2a9372fa856b53d8ad5d8ad495a5eec7ba24d",
"0x149d09583cb39f4124a7145923205b3bfb7121c62a39d6238cfb380c782475b2",
"0xecae7698bbf994d656a1d3b3df5668350112f80a5787730c8d32436aae6ee32",
"0xd48fbb1cd222f052942818e73b12562f7490892f474402274151763ea668369",
"0x21ff6e0e9dc2c5eeb19793fb2b3e64cc11233b81df41803b6524ae510cf0a29e",
"0xdee76eef76340680e4f3d4a0c51b87a162db5254e981a7684756e55d8b513a2",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x1c72c610ee727a6dd1e885a0607d35cca9127f006e26ce1f986bad89bc3bf3b1",
"0x1d8bff20f53a1b7fbd3ed4f015ca18fa484cc6fe4fda3821016d43a62db85681",
"0x1c13c5149e5fabedd52729f4e4502a7d0d5058c532728db8377aa92f1c3e70e8",
"0xa2044c5c41c0e874f005528327e695ada2337dc81c9257b6663ad1e37416a31",
"0x27a159845c8347dce715b4de7d305d529b7c9bea09d3fb1615b69d5d0e2e9991",
"0x28a37316b111822f43ce287c632cdcde70bd0a094fbb0ded49467acf199cd86",
"0x69b007be4fffd6c1611b22a1f73aba8d334eb39e36488f6dcaf8f61b07cc842",
"0x159cfe01b040d2ed27293355e3ddc2727906018eab4f0be23a0fbf924d74bd12",
"0xb538e8f3455ff2d7f95203ec7c7d12262d7d25b224a92500923726f20f4dffc",
"0x1f188392740ecb474a4a589a3b83deecab0c1c583c390ae1e3654bc90d0705dd",
"0x85e8ab77fc680dbfddd3a41d1f749a5b25f207a10fbb591b2b2b70705d88911",
"0x18038e5ab85927a21df17e8a5db6e3e62242f7bdf6e662a2f973a794d132ecb7",
"0x25975674afcc9637d27a23b97bbd8b82874bee41e7b84057be13951531fa9fc2",
"0x2ff9d4e295691f9979acf589c59991f2f8917c6358b76e61a1b53e1184dd3611",
"0xff8d053d841882947fb4d33026c489c53b410dbb7afd04a3461f2c6b46869f",
"0x1c6d41952c53460b094bb1d727059e7ef08feb073f1d844845d53b9640a09f64",
"0x291c286327312c533d3e244d73732e212202e546807d2b5d7582e7bbdd28b10f",
"0x2c29cc08dd040a2ccf3c5ceb34882c68f0c773d055766b389051276b2dcdafd6",
"0xb51d6531aef720d40d878bdfb54a8dc43686066cf85e6eb5188c094b173930a",
"0x2eff7e9766928007d29d2555f466ae211166ddc034d13531728246b23850edb9",
"0x1c856f1e898cd9241df7e1bdb20857061acb1d825ce2b9c05c785be35a5066c",
"0xa88dec27698d5f11c3e2619b75601bb5f8bed6c59defa4270341b8048cadba9",
"0x171ca4dba69a7f21c315e9ec1d4324f8a365828508d62c205a0c8ab55322458e",
"0x2192264db77dda74e05a8c7389bf314447eccfea329054f694fad2ac11a8997f",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x2f9db1272bf8daf7461f68a046226bf5eb50de5222634ff09f06cd08c8d90647",
"0x2dcf0a905f69dcc006ecf519557f50b60cec57e406fbe85ce719240ac8ad4d96",
"0x1ef1e8e3bcabdd9c59f5c8bbe9c8eb2fee860feb4aca30cb0339394dd9aa845c",
"0x1f11157aed6e03678558e187e731f4e6c70b98fc36b5337562c565680e64bc04",
"0xa38ce884c10d28d82a3b6316f30c7fc833f4e1204c984b7c20098a13a0d5a2",
"0x1db78e384fc722f1290a337231d3c8986448b867adde280ef5eb72c45fbbde08",
"0x1e815a5b2ff405454bffb88b3d8ae428682375fdd858d9fc2fee3f76cd3a6d4c",
"0x370b02885c192b687c2cbb330888c9f4b3f26a6c054f70b092acf96d93f7c90",
"0x8203f9ff8db7576e14876f45be708f58f48e5f951be08bbdb4e9cfb23c244b9",
"0x29dc1ae19a1f06c6d67ad121f185ece6d0751d0ac335a9b7c879bab33dfb0e84",
"0xd3c1af0faea85e54e7da575cff80e5c027cf3876da141377410a28026ad4619",
"0x29609aac1d88be4d5aff5dc808e01361309a1a6c8c0defde126fb554c79944e2",
"0x2da5231bb84b05c467f6fe2b9b3e3bda77854f6de32ceb380fe0309c3c8c5d50",
"0x24658abc45d1109f9cb4ef1cfcea11de3ab442f13e710d10c0bb6bebe5b012ee",
"0x1f38ead2636865f16a72e393dddc1622ffc5417e5194d6c15ad8bfbd0073946d",
"0xde6a95902d88df02192471691daa4ac55617b73f448a4611f3d89172831542a",
"0x1cb8cad4994c3af3a2ae4584827640cd9dd5012fe4b55136bdf53357b4c168bf",
"0xc4b166f5e4c3ebd2ce9c84e88b3d42cfaee7aad923d9807b04a2bde61151b1b",
"0xa125c564bd818b114e3af44a87e694061155e19cbc84c50e0d29656de2a03d9",
"0x18cd16fb943e369664b89db857f6787b1d82a17b3940f15add4047f8bdf4dee1",
"0x22100b866fb7d36e656990a2c832bd09d7d0036ffc7d2693b22fcf5c26b05735",
"0x2228191716f3aed9191659eeda5fe346b80af580b666159ff25456172562c5e5",
"0x2dca6c96c30284bb8f7cf3467103d39f922aeddb431bfa3b62a7bc1f61fd9baf",
"0xa242a4882954de8d3d1e8cf0984236cd4665abdbb4d980c625c1d470349380f",
"0xd064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592",
"0x116c85a250d461dd5bf2249536e50de23ab8e0287f5cbc62363c54c690c6d716",
"0x750eaaf76a03769c97c684d448ac7ae2ad93950a75c24f3482340bd29f566fc",
"0xde057ca401a6fa8a17d35a643f71515678944f33d6253778d116b55b7599cfb",
"0xc944093f1183d2fd822cf70dc124a07ac9397f3a941a50d0c35da8df5e35180",
"0x19376e5bb4d2266f833d7fae60c8c5f2f484b203f008003038515c66e2677233",
"0x169bcc309d7b6f8c73594d7563262ecd332ed38cb317d2c43f6f8dd704d32178",
"0x304811527f616bc8ef59c55565337f63a42094023b3abf89ae99193034cbc9c9",
"0x24bfb86617225eddd82f86320315dc68e8a7fad755ec408012968449dbe1ceb3",
"0x242f4b3a3535d5307261e9a75c570e6c06174ccdf398c934958ca129e7bde3a2",
"0x2b2f283271455095d3c2012a1f4fda54ba8f365cdbe014328e0753d94824f643",
"0x35a852e7bf5cf60b00f15be184e707d345fa227d8e44e1f4c37050d79a53a1d",
"0x150f777da222071015c6c4e025f67bc356fdfd678d9840dd2c93ba1a43f98ef6",
"0x2d8c70035731ad9efba92821a88119f6b8183a362be641729a93d6a327c03809",
"0x7b620c8a78e09e49ce547aa783aa78f3e4594c49ab3dd6f602bc6c0351d823f",
"0x231996b592528575567d39d00645a83b13929093bbfa00d6a661e4a690351d0f",
"0x4e47a72e49b9c5aa3f69f6af22fa0ab640c93fc524dd3c508486d66f079852a",
"0xa8cb4b2bf3f0c5da671e48f83e5c1b3018f0d31200a6f19fd5195db22eef7f4",
"0x18bbb002b46f2e5fec2b120faf87822ca8e77ace94e03aab5c16c4b931739dc8",
"0x2bfae1b054ef2e924d75a8a01283da29103c57bad129ec8396ce274ba4524df",
"0x6d101b19477d1627b9542581bf0cdfab38b05cdefdcb81965c5be00d780f192",
"0x18af61f6184ff85f104c2bef179b3ec5a5d242dfbebe8e27a2918f620e8a5be8",
"0x11e3a7c2d5f74371beb188c6e3d7a14b33128af8ee3287546d12d7777cef70cb",
"0x2de5d6a7a27343dd0422ac71b8d409b43ccb0b672e978f8fdfd214f4d7866404",
"0x227cb43b9818924f2a2588964a0ad7ddfa3df62284b4b3b10199a501ed970622"
],
[
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x1578623ddfe303311ac327a432aee9ac8552cf37d7be9b4323c9a792c5776c4",
"0x17536451518c265209c2d9d8512a80f5abe4df372bd9aeb5eebc2b799fb1d978",
"0x1025b7c8b5b38ccd6fff7dbea3215f6a1cc80c64973d8972c0bc7674c733a157",
"0x1a7c14617cefb39cde217f3c2583bf35d538750ca9818e2f04268322c282012e",
"0x27993e8fd8e80385b78a6214675405361deecbf2c86441634eafb7c99fcdda8d",
"0xeb7c2b5ac700501da181caaa6d42837f6f51713924eb3e5d6543801ee3c974d",
"0x22313b179534e4b6af14a56f8eec32f02c41988093cc7f4fefb281956250b170",
"0x277988ddf7fa2eccfb2560b2b169e12a48dd0b3707ba3cf1c0a514c4852ca68",
"0x2aff90506172c4300c94d20c37a877bdd98630c899aaa00bc83f1b7d99e6c943",
"0xad7537b0825edcd460d01970323bf5f0c336d57b4ec04b155e361068216f859",
"0x16573e4361e87edabb67f04a10a84b8655a796aadaf0ace71d282a03ef73369e",
"0x7befd625351a2e970860afe5ef0eab07dc7dd518eb6145de77252bc4769a4b4",
"0x250d2c639105c9c5a3ce4b6df01973cc41819fb85be886084076f4114fa0e654",
"0xcd782c85933dd07ae0f3f6b0e3c440acbfd915c2fd7da79cab1cfa57f634f4c",
"0x23b6198a0c85767848c17cbe8708eb23bf53938a60a99576e4c2a7caca25d18a",
"0x1f7e50e68a089b2286a3ab4c8764b2cb8d0da8b26b85c0f3a468c781f7cc114",
"0x258ebf40c08515d8976fb6d05da5f7a43455448d998e8682aa49acf25a307d24",
"0xde67b3b49cb60cf0f2074e36325065707c58c2fed40ac7a1e2856a8fcc3211c",
"0x178c746273a2650cb608c7abed3bab595e8c1403a7d01f8a8d1cb4197e3e96d5",
"0x2ab3c9a0a6988f6fe5e3739e7ab333de77084e6177b0778931f004083f807de6",
"0x2d86755d3a375e8b14ef5aae6e2eeb5105e7ec1607de4d61258de2617f790ea",
"0x196725d332dc50d6d916a1a6347fd70973f461d2a1fc2b941ab891aa04b3f5e6",
"0x132d62cf82833c79ff5136eb2e396d5719f76ec0c556565b5a7869234afda829",
"0xae37c618053667860b08f31cd97e4e266191da715708bb84444741d9eb591e",
"0x604994f682990576a6e1c907633bcae2b29d2b91ef8af1911b41fd3fd168",
"0x182aa4ce666d170a3aa6bb17e7ec00bd00dcbfebd02f3fa500e8a01d6b094a49",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x10f8dbfade79085f2d9cc0a15334272898e50848407cf0d1b6866cde260a043a",
"0x1953bff54ebfac7d02d5cb8e079d56c84eed51d6f341dea31c6eeabf1a65967",
"0x1344c0e662baa299ac79300aef7ef1387b1926b0c323ea279be046775a8ead2d",
"0x2f027dae71476ebb6b5f3b1630f9a92126bb31a72e50cfbbe9e19ba8942feda4",
"0x2b5570a23123c5568920deaa8d1f8882ecc0404bf73bec01f67562b600568862",
"0x2485dc5ae845e8acc0c38c7ac313607479e4ceeb25f35ebcecab10d829fba247",
"0x25b7907ad098b9a7ec9773bdef17a1d315baccf502a2a303ae9292fcf24cf86e",
"0x25bb66388a0f8630d499fd04740c16ae3f6f8481b2f9637a370e921489558902",
"0x2a00221d8edc58656999ae7406d58758e795a9741c004d3b99e0624d1ed9651f",
"0x41ea47bbe1f576a1bf165e9eb6c82b74cacc22011c02d1295aa68a734108477",
"0x2fa5eca22a4bfc0739f0671dadb74de19a49bcdbc6b23b3e4acd659b3ab7e2ad",
"0x1a103aceb4a30c1289f86ee6d359ee808a1075dbaa86a9b590da829f89e0e56a",
"0xea6e1b215fdc970b74cf8f31e3e78129cfad0e545939cb6ea55b4e72f348838",
"0x1017db78c2c1d169597ed69a3dcd02467e30071dd418eb6e9db209805314814a",
"0x22002c2422ecc59939f303b6e3d02d35aafd288b4f7936838314e2047b669672",
"0x7c83bfe3e0cd2efa62ff8cdf694ccf8b3268c2356be960335b45c9d57751940",
"0x256b5d75847a3cfd5c4a79c7890ff08c58b73a31f14bd07247241b70e3b892d4",
"0xaa8d8fe4f42d5ec00f582f56d0d64aad9977a43b185d66000c139614d9ea30c",
"0x221dd9b914aee821ea23c359b337345a22da01eef81613e55c97fe275b42c4b7",
"0x7a71841bdf7ee0dcf51ae4195cc8adf79be1563616fa5f6b5d932eab3cf4d9e",
"0x3f7813649d46bcc7419f8ef37cf29e9b486e285da3045d96b5e3c6b636643f",
"0x2e4b8a3c581c527e8a12b4778ff69d8405b2dbef389d6bc8ed143f72cf2e3b89",
"0x17c1a87f4f960d913f5eea140959526f4c8ed7a7fbc2744fe37ed332e26bfabb",
"0x2c46585ae9f6cb77c3217988da69423b71724cff7fbd8cd879a0c4479af148bb",
"0x2d54300c647a770fdc4340e7422d79b643596ee6ac6f7e1b3b6339022a1768fb",
"0x1bfe46241f2211c6ed0e7723765850aa6da18b5d6c692d33eea7647a73d097f2",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0xe2cbddf65c2ae0452e3eb2578ac21a1e5279c42481e4a41affbad2969721705",
"0x16ac1278c3b044618e61a767b13dee22fe364509ef89845b2fad1a47c2b9b5ad",
"0x224149478db068fb7141fdf2746d34283ea9e42313f8bfa3e9dca597a23ffd95",
"0x1a8f0b2c1be34d3d04ea78b2c38118f6e05ec781ab95c964e9fec00e9da70f45",
"0x9ac6d36b9a63d40259a98a78c9a223de633299b75cd49a944ef361e6f9fb9d7",
"0x12810af0ee251f24fb86894b758bc4e0db0db4522260a9bd5406baae536b23e",
"0x13e21a7cb8f49dfb990df144ce9b950ace2762a38331d90bfd5121a7d8cbeaf6",
"0xbf46bbc35ce9bab54a45c3b9a308df40b6b771b3a0c82634e86f0e8369aa2e6",
"0x2d3905ba22fd54bb55e4ca78722d0c3c6d922ebee33c024e3b530414b0e27819",
"0x21e94a20b029bd68674fbe1179ca813dfe61b3ac9a2cbec68fc63f4625ddf20d",
"0x2eda11aa8cf8a13cc36a5ee865c465bc8a7b91e41061abe33ba2a48945be03b2",
"0x1e86878d1a99e02c9108ca361563f8120dd46552dee8cd864599bd965905acfd",
"0x213f9fb0da20d21d4bd549eb2cd60f2e951cdf11bbaed2e8347637c28e90dccd",
"0x9ec04662663c012175d047b3badb9cefdd56abd0e1bb8824f8b1af84c81cea2",
"0x2cf6e22ebf6b69c9dcfb9b5e66d03f2c9dead8b168be2671fa0c900dc0349c62",
"0x1cb3909eae030fd0ae2a623232e8daf5a527642386e6a1a5cf8cbf36e49c9f41",
"0x2a954bb1d6463b7b6723ea7a79b331b5201cff98ebdf77311f8eaab7a4bac880",
"0x1d232685a73dc553d0e1b8099acd8936bddf42a40813d52edb2ba0e2a72a3853",
"0x252d7955742982802013cedab484c8d461f9315fd6c30a13a076ee1fd84ac652",
"0x2144739dc6440cf4f08908cadc61413b30e9fdea3d600ff64f05c5afe2742a52",
"0x26d2ef597c02295f490a26be40bf56c9505e4a977f017b0ee1b4539bab40f92b",
"0x2effc6807ad79b837e532bf4a9f65a83f920df891e563011c34c585b8b5118ff",
"0x2e095a7e1c68ccf1cebbfd1d9e6b10661fb3cef485f2ecc8dedeb107be1a99d2",
"0x226f0b52596d08e12c5d979f74cd74461c37b9ca4b74c2d3d72a467f682f67a1",
"0x27e4dc61b7f4c719754040db80c2c2103197f34a54a5de92fde3460eccf92b38",
"0x2a0121e238a13d0dfb1507f0ca6c1686f838aac334cc1ecb2f7d1ffb7b89c130",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x33c6d4d77acdece9099b3b1c2820a64c2f753582562ace2cc24fb4bf2099d13",
"0x8158a4f4a451c60b9c190787757dc064f45712636cf0171e54775a94bdf1954",
"0x1d18e0af711abc6617c0385617d21b4c1896f0199ba927f33692b3c1171294cf",
"0xc8ff9debc6b5b90f826623c99e25cc8ba5b83f810b1c2be42298e445cd1e516",
"0x7455ff7474bf2511d200716e916cb97e0842864cb89a42fdb87a479a63f5055",
"0x2b796bc4350006ffb852f826d4261ff6fc792aebc1cd37f273e652180dcdd65d",
"0x2231f46d69ae4d0ae2429ba6080b7fe51f3f934c3d6607aea12139450e394dd1",
"0x2e37b2806360065a4e80fa3e6f3acf0cc90fbfee5e8e29fe20367345f8979dc5",
"0x1e52b1dad965f7d359b8dec0592575d918b48baf65dc217a442db727e46ff8b9",
"0x266f2edefdeedb61c866a0ea64d019f31d1ddeff9607667a5e89412393765810",
"0x622b99a4f10e3ea4c1a9f0a2c0823602a1f37fcf2d70b6e729f8a50751dde06",
"0x20b6fa4bb93ba74bb91a9680f4dc15e2436baaa16cbd85173881a89d2d39bf07",
"0x1edf9a959b552bfa30461615955d8bd5ab7a2d826fb2b440d363029b7d8a16c6",
"0x2352faffb1f4d71dcc7870bade6df391c49d4046451de035837feed53448ef50",
"0xbb1c8476707800ecb7b2cf40d86e6a7d5aed4214b9d535b21a0292790294b29",
"0x1a004861dbc666a632c6ef9fca6214a36256e7b0ca97cee63d02d5740f7f72fa",
"0x115cc0fb69c30646288e34277bb9d59f5cffd364b3a48dc5df13936780e452cf",
"0x20b9d6ea816b25eef2eae178eb85edf16d922e259758611f8ca73a8560e5f612",
"0x1b7650b9721a1589244d0bb8910acba3020e5a849738c729261d229252d7570d",
"0x228969388482a46d9d2c33e3cee3f07ce2c8d2438e0023a20c7d5e7c1c84bdfb",
"0x1a1c5996f580dd93a0d48654c03d9fbd053a6d4a64b21d4487b7d16d586b9575",
"0x25c69df2d6d1a1203df21d682d24907f08c34b941f5351caa2b3c26efff3d1cc",
"0x12848ecece4c7385b709ff7c98962c528865e86bbb652a874c495e5931986f75",
"0x76bd3756046b7989e8aa9115b57abc352f470b3e8e981200cf37548edcc00fd",
"0x2884069a9ac9139181cef297a585728448ac6a74a26a6fe56bf9ef62d13ec6a3",
"0x7feff811d5e99b474c5fa155004bea6a6fcdf03a681acfef2e25ad334f71e5c",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x1d20333ffc3cf745d561f12c425d8e1148000b7d042aeb5f26c5dc223fe31865",
"0x28abbec7c9caa428c519415063a6f2d5e1a0d349e3061f05c40ef35803686d42",
"0x3a8e10fe7fabee8686830b8234275a3abf3cf888d9ac500bfc643c47d476c3a",
"0x18c2e2dc3d8b832d050468b7a71e26bc0d6e887165176ed06c07fbecd3d15a5c",
"0xd50f1334b2bcbc0cdb0117a17c5542080751590a269f4530441ee1a428cf53d",
"0x13806f8807551b28f4a063f853d51c621cf08b2f67259b03c7b1b10734945688",
"0x2b08fe6c94ebbbcaa380b0dd6bf50430c5bead290a5cefef3e75aeaeaf7b63fd",
"0x20196101b753985b8d81c33fed2d02bfc0594ed7b25aec355a1efdee746c5633",
"0x3745c143e9794534ba8e09393a84d537e45a0d9f4777e77fbc14d22daa2f067",
"0x23e0047f3bcd71895bdb2030e2656ed5ba74f2340b2cc87626a6739b65b69299",
"0x2b7432db324f5d63ee6df8a327ad7d03752feaea63b8483523e1b1ac50af5356",
"0x3230e5463fa892ae37f38ff6bffcfdb09a881baeb117cd45199c5f78498334e",
"0x6d227987110bba2e393ccee1a5d01fb046f88e9e82c975d69c25505fbe2f7e0",
"0x2137c2037b936b9af605dda34fe4424a2f095aa784956c7e1a8410602381d2e",
"0x1b85811f361794bfad1d365f9278b8ecccae2e29f16e81a4e81f8a76980b06df",
"0x18ce9e29cabc3a88ae1032aa09a664a307f07c41d0d495fd88f4729fa471d83b",
"0x16117eb08d088c3146a297600420e21723b75d24767e3e927a465ce543a442e9",
"0x143137a07224a1f3df382f66ed1eaa0000006ace56412ba51954dcecd725f03e",
"0x104d16d80f93f2955a067d5b615b3169cffa4c95c7bd28c57df7a098608b52cb",
"0x1d486d6cc1ce7b6f2b3aadc680d663e9afed57c6df3948a99edfd8d21f3283e8",
"0x26b9676c3f4be27618037e6b8681c624cc2badc95e3dcc2858f44e4227b90ec5",
"0x1b9d6e78b161f530bc835a17a56ce26bb302ca73846a159744389cba664d9309",
"0x133c6470bb5a345bbb1e3a3650b9a5f39295bcfb97ce888cb775b07188be130e",
"0x2eb4042daaad9726c71a3b6be579dee9df64b6aca59cbcdd4e014ddaf860cc82",
"0x2b7e6bf97ec1a114b17e6bc4b4808ddff15614a70e43318f7840ed715603338f",
"0xa1125917e9750fdb258e4113f2e3beff8cd77b2e4840d2a0a3efae84324f1fd",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x28f2406d5b2006a8163fa449cab775337ec435075e08f76dcb360575f1d0f9a8",
"0x2833ed76d81d99573f405e2418760ecbfad333f71b35f293fb3fb2550d32fd32",
"0x1329680ba1700fd38f42d6f88a166d7128ee68baed48025f1bd8273c6d13d5b9",
"0x2e406c465948d552b82b4d0443d9b4393e9d034c1eb96779b25554850f8d582c",
"0x16870864c7481c37732c1226601c0fd0912ecaec9c4986893da2ecf1e7e9bea5",
"0x16f0206a256a1eaf579b789362d74a6df9b4e8f4c3bc43a69d5d84f8e2b86e1b",
"0xd3769821a46417d7c41de7fd8a44cf0e6b03851b33d35f9105b91fd045f4364",
"0x208072d81c7b1e0c7fb8bcf2e372a3a6142d3643084a78bfad3232dbc4d0421b",
"0x1b00364bfd8258bc091a61caf85bdb512a8319ce47c9dce782e62103c2c7a71a",
"0x39d9478f244268c4803f9dd0dd5e63217be3c8118476c3c36c463acecc573cd",
"0x1702787253c770367113ca024f835dbae15b5c16bcb2121cf3d89bf60993d771",
"0xd424c24ab70fe46dc0b70ac44f1560b98a7c179b6fd59f87b51cb1580404f3b",
"0xc8eec67747155b02438d197c9d55437492eae235c05e385f5aff238ecbff493",
"0x19318a85cac2967adc34c434ced1261abf43e1bf1184a43a0897436121191ff7",
"0x100d0e39b0ac4162d13e523a8308b3d1185ff1abc0a44f80aab198f4d4af2e77",
"0x1dc9edb515bd622a09d6f164eaaf2cb987aca23e7a0a79c8e00d02ab44c71cdf",
"0x2cb0a4d99188559afba7226f3a7dc66b1293a6d5dd7ebf396ac96d3bb1b0dc69",
"0x457e9defe2b2e3ace40217181c5cf8a361c3303bae8d1b867e62386ee0aec8d",
"0x27cb603ef3700431472d85ceaca537bcaa301d220e8cd68c8db9b2e1f53e99d2",
"0x2a0f737481bfdbd65f8fa4cb4463e56a31bec6e77c94e27216f4d5aa734df9ed",
"0x88e30685326b92f6007d6efa42d8af737bdf42ec7e1c4d565318181d8295ea0",
"0x185dee7ffc1c09332fc1436f1c6d67eb3c6dccb36bb98177de5f2802302c68a8",
"0x1a3c2ca9dcba78005a28af3b621e50155295f14ac746057dcce986f6368d3d98",
"0x2c899f8d46c18eea46b9b431d69f5449bf5c896b07343a5199e587c748443f7e",
"0x12b7b81c78c7112c7f79de2eba33f1859e77ee9bfe54d5f3ee15bbae2d6b90aa",
"0xa9c41fcacf18941604fb129682761803f162c0e7cc1152f70bb76a28995aee8",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x18c2c80c193bf893f8e24328bb79195e1cb8ec5c30fa4d0aeb228c820e7edc8",
"0x840212cc8df69cdec9a5d73b33f77e6630cd08a0462709391407c8857b09be1",
"0x23a2a69b4c1f2a9d5da9bbc185ddfc88facc9958428e06fba83d67a6bb7cca8e",
"0x2990a00237ce280ba705df85715600a7d425d4ebe2b13ed3b42b1b44ae48fe01",
"0x268d4b3af37b5f5ec11836ac54c1ced9c569390d0463c316c2caaf71ff452c50",
"0x151286c34d2d1a88fc9f696e6c762e833309a6710e03831212d317296b1c211c",
"0x5a0f37b771fcb8d26bea09722510af9bf510ae84c5f0106d3824aa274e80f4c",
"0x2186448573dabfd800c596cf64703bb0bb45ef5b8a91fa21009862ae3aae0c0",
"0x27ac5eed415340d9907c6b414708cde2b99de1a550be1c26d6ef95c6ed5fb9ac",
"0x118baf60eb743773cde629142c30f86d49d633c5879f1977aeb8496971b3b956",
"0x2206f4af9dc21a5e94a00775629d9eb46a104ecaf0d2188122187fbd9c5f666e",
"0x1874fa5cd6fedd8dce56a38552b35512bbbc6ca56a4bc6410406ad149bd30589",
"0xf22dcdbfea00f4bc89dbfeac7b3dee60b16ee9a74f13588f5879ba714c827aa",
"0xedf94bf49c040df972e27701e16229766d84197b29f023406564e32cfd8358b",
"0x2d24ceb96532b06e751d109a7efcd29ba741e61e3472bece30c7128c47042813",
"0x26fb8b8eb2d90ed4886b9982bd3255b9df4690f84047ccd4bdf21810720bda44",
"0x1952641fff4b577803eac12d290acc39f4728e3fc086f3f76313fb2b78da5b20",
"0x2233ba51923c10394d1ef8718a6e82d84d9054de8c8498bd05d52787faa25e32",
"0x10550f7d00d83f1e7fb7e1c9772f545e32e0a60ca3ba0ae168c750147df29eec",
"0x7e5e890c3e62c5109e3790d2bd1406f8425883abfdde19cbba3b5aa7b7f2bfe",
"0xd611acfe2f91f645a07af0ed66ea813d7395b09b4e4b3cb92afc27a31e7cfb6",
"0x1fc4f96fd7c7a69fee8092b6d11c7bada79e851324da48e658a166d00e66820c",
"0x10b23d2c5bd7e976228e19064ff33921faa59f2eb4c8652d39546479d26ecb7a",
"0x2f21166be2ed1b2da47425d6bbf4ea1f2c5aac82b83265913f6ea70a3321cdf0",
"0x2ab0952fb29bbeb0d5728f07aa4d67431c1d3c348a0f1db6126e47cbefdde394",
"0x2a10c76f857e47245d3c145ce70c87a1995448579647698c122d3c7f8087639b",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0xe8bed4d86934cc84383480e2301331becf2a8756e9098c8a5541d39b3be2084",
"0xbdb68bb05cbd1a32bea32b8daee97ede7a999c31e66621b4ecc57e806e9b68b",
"0x1c68215101419d83d15a0260a0d19456d8a4d552edcef12b8eb3c8d0fce018b6",
"0x14c45f6a32e995585ac81545545d2803fdd9cd0fa462a89f2cc8d2f2869289fe",
"0x3c63147df05188262fe56d1991f872b8069a6c07b7358d166003ab422a2bf67",
"0x27b093996711ee7e4d1d6566008eb46b53bc45925a385ba64c4b314e68f5f939",
"0x1a67fc8776cf402c94587340f50ff6a0037570c50f24daf71d3b14f12c37515a",
"0x368384bc98a519dd78434f63f92be511aa6ebe497a0f202c40dad53cc9ac41d",
"0x1cb8fa7ce16b44e38432742589d4857c290e41ddecf1c04d19475381588dbe15",
"0x23597b850f364b4569de68f1ac728565dc30fa8ca25fbc7cb04de5d7c4b97c62",
"0xdd8ff19d5e1308fe4266a519030fcbe2a9dad492bf87320fee1b56378548b74",
"0x20feb7de1a5e96b834f33f0cfd2be704639c024c4d40b2e130272ee52abd43b1",
"0x20885682bab854ad9b308b29e93bcd9744b30a32a86b43656eb9eb398958c569",
"0x19d3a25bcaa553994b945b1966f0e88877b49a0eba7cfb7436425ac980d1f4b1",
"0x2ac8cfd84802b67174c30e48b6b805af5ae5c0e308beb82cf3734fab1cebda79",
"0xe7309eb986b717f72684842ee44266078aa935820e854ecc26e86b304a3aaf8",
"0x2bf7eab7ccb382e902533c265b264ffa63278fa298fd28467cd075a7e3bc332e",
"0x83dd2953c55d5c2b9f2835c418fabe9f31d712601bb68964101149a09100404",
"0x714ed30fb5590de5189a271e1a8c643e52ab0e5f138671efefe328d85eee14b",
"0x21148f9fd3b0722bd321a3f3fb59dfb18dec828c71a820e50e2dc0b77ba06c28",
"0x2232e4d97bfb4af6fa023ed73bdf899e040c85e086ec61f64d9e76bc8aefda1e",
"0x2f130c81592d14daa4a108219e2381a3c3d43f9a7fd9407eac791568a7290d97",
"0x1bc3006aeca257aa1e0a79238a6aeca17b61c6dd8c5e38ff259cecc70c6d957b",
"0x1e2cd754d9765e6bf4ee604c3027dd1553e6bc4c96f0a1860de5ec1ed4e7789d",
"0x1b03008489762f18d350e6f59491be94b91125f6d564810b226020fbf1266feb",
"0x4139587c94008d2ae2862f17f4623e00a60f095650f0f954d33e2b3e028c8a3",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x2e92d0d003478aad469bcb62a9ca4fc6a4b8b7b54aa20082421047b49526bc1b",
"0x2fa9f127e186da4adc277ed2d0fe8ecf65d7686171b3dd9b5ba57a41d94be782",
"0x16b524b227c91d14ae22fece795ab7b4e0672f93bc0be11a4bfdedba618ec632",
"0x1bae132d3cb67233efb7501a87ef7d5304d43d84795422a5980fef6deb8d9e0f",
"0xd64e85826004f524fa9633ff3dbd2acfe2147df88df435e71935e5184c0b5df",
"0x7a8991e9213182f06e7f27126e583ff1002b732d48fe69898c3dd1854468c4",
"0x78a71ff06f3a7037e3acea1df2f04e326774ddb20d6717052065d5b48e4d9c6",
"0x2bdbcc0653dff0b864ba7c35a2053688b9a13ccf83fc78b5857a91183c634ba0",
"0x135c4770b984ca724061061017f6fac63ce3fd5f42e3271af748221eafa486dc",
"0xbe4b3d77e216a0284da484fa0ec171130980d6648a10e81494264284df500af",
"0x1d33a1eac83aa2e8e33f90bf9ac51bdaa186d7714de7cee4357b5768bdaa03cf",
"0xc80a19a319c0095d10de1473bde0636e199b13b8d838336a0133f86e9fd280c",
"0x1fb00a5d5448228839fca9b108ddf4cbeee2e5c6a7cb8d6bbbb33daf72e5dff0",
"0x3428c5cf5139a60a19d3faabaf6d8571c01242000e216e3e417d37476da91cf",
"0x15313c7636e93c90281b5946d1223bb25d849c6b05a9c6e58e3459d4058b424c",
"0xbe94e5c44e86577fbf39b9db0d3ab08a8e90a14881360a3be8e77b1465d6a08",
"0x215f4fc3b36e8ef41ea226080fa331489bb1f5d5b2e9924b5f419a2900390614",
"0x16b0162d774c50882a9f2739bdb279317918d0f75e2fa75bf24e9ec3f1a21102",
"0x12c30feb12fc441d6dd5059c269074f10a69decc148bd2283dfbe594d2a538a",
"0x1649c52ddf7788ecb2150a1a48aad096b4dcda9f517ab877a11927cc3eb7fe9b",
"0x6edf4bba85eb1927ffaa307aa9385c0e11eff4ba249a8e605d624f35af6f9db",
"0xf61ad25f3641eacf1ca4fcee3830d5222f357f046c474ebdb732e0211e49e40",
"0x2adcc2f96c95a40d796e0c8bddf303d75badc37ac9aa6cd3173b868f6d177dea",
"0xa50edd8bd899b1d15dac22136bd3a3ce00ad0d581188aa6c2db96ff696613ba",
"0x26a9ed9b96681106cac0e7706f4293fe79d078d918f25f07a9243b912f5d5238",
"0x19595ba4019162353cf21250cafa1aa64a7c0597c0d0af5b1de0a18131520439",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x969363ad2fc56dedd932a66bf1193a1b96276f16e423f78cfd790850bf93477",
"0xf364b0a5a1b00f7192697f5ca0960680b217e3fee2ccd320cd408fdca0fa7fb",
"0x100fe28b46e80f15e12ef4d5759fddd560f76bf74cee6051f23ab10c8803f474",
"0x2dd0aad73d277f8bc1c76d2133bd8c8a8ba8bbd573bdfc1adce1380345bf233d",
"0x1ca5603c3bd89198d450960c8bef433ae368efe4be568d1f8f63418bc67ba269",
"0x1eb4203b299398722feb50f86e2131f870ab2fee6f726876b9a213a69c8b34c5",
"0x20d3eac3a69ed9d9963de0a1d4b554ce0b5e350033c7aab8742fd258af31392c",
"0x38ba0b5c2b7c3d41293047fb42ed9df347056965c4d73994fd38e0b3d0c3c74",
"0x226c68b53ad316f22f8aa803a90ffb02c489364fcb807ab2a6dae085a2c548e4",
"0x1159ad22fb4656dab10da606d298a856831454bfb237a222fa393a997dada332",
"0x22d898f074eadbe133b38174e7629a3fa47f8c92e8e67f62130a00fa7502b956",
"0xe118395fc451a7aa4612da12097c4372c92f7b978f5af092a4771e09a13343c",
"0x5b91237560989a738bbcf80a2175422656dd27e0f5f96741d141fd19392e462",
"0x1bb3f133c2d5f7930a9decd0caf63f17c5528844db26efc336e5101f1868545c",
"0xa39ee8089241c5cbd69954994abee040ccf43b9510d54a05056194912963bfe",
"0x11d1a72d9666be10fe5fef74e6e06431532f5157ee24ada70683b9f0a586b585",
"0x2a0872f23949f213b46b463ad828919ebe034950429f91fa3bffb275d722b47c",
"0x1da2741d74cfe7a159666231eb9981749a40bde5cea6f1a069dea57cf460ed45",
"0x225046f36d161704c26a8c378e2fa58859a2808f94d5242cdc3c742c530f60be",
"0x2ac5e790d78a3b19e40fb98b247ed9caf78b47d884da4bbd70359482c2f4ac84",
"0x2a9febeb411787c59c6b8e51108aef6d9dc63aa97cb314907602d5f6b702175b",
"0x10519bf4b5d77f8397a4e51ad3dedf5b0dee2b25e08cb5b866eeb2a891e0a6b2",
"0x21e9add284054cb149e67ec3fc4208b9e0f8a8c2011ab17bfb3c4e4419ee700f",
"0x861419b33d1a9e2a944bd86a22a03490fc560a6e3f3922410b1f4ceadbf2fce",
"0x204bee088f716345187c1c25fcfad33eef88a8be606b0441139f03be3d39de21",
"0x21a8509dc07b690f149ace959540eee40d485db5a21e3a2ce9dbe808f621c92f",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x2bcc9e799065b89040280d6bfa90d9b0f98ac91d5051d683c4dc19c6d078592e",
"0x2a2af9ccc8cd9b8976ec203de687836e6025e0197a9e756a094168da234c6255",
"0x22cda8a2057a524f13ec0bfd8cf44482691536cecc3218c934ca7f21126903d4",
"0x195abafa1531518d101c427496305c52e3d2c9e5f7192207f23985a15a85b384",
"0x226c92973e2bf06e8800bce486d3b5c5b086e9717d93b79e4084a9a3cbf41dc8",
"0x2d4b19bdffed4790eba5957e4545ccc65ffdc300d945b11fead52f83825cbbd7",
"0x20c83290d5ef608ecbd330a998cde98936060e1fb520652c9d6eb1a57558f91a",
"0x2baadcb57bf46a22bf299c393d1537bf2d612cfdc70413af5e5d8261f87dd73b",
"0xf09875c2570527eb866d31f96e357946cf01307d89962db0c6f16a02097d08d",
"0x2a29246703689c0d7c52136c2b548245b34bd6b6c341ed99c340e114b856e0fc",
"0x2f05d7232622eba1583bf831f6a810ea116f0fd933e142650c58d6af1bcb66c3",
"0x1afe5d1e1b64e7741039d6c26a054b7300ecb7d052d89e8df8ce8f1fdb5289e7",
"0x1925f2484e57a2cf13139ddeddfdc2b9235640c4e40e7332d1d632c724801f88",
"0x7752556340dcd48531bcb144583ec742cf7539c9ac2347363f9636ea060f39e",
"0x43c28a9d6f38ca50f057fa71bb6f07c62295fca2197e056160e93a6c82fc15a",
"0x417aaa17f575f42328eaa4ba22be7207ffe9d26564b42a24b41967f3e3173bd",
"0xe6da876303fbed7ee756fd87a8f3e1636325532adf26bff8910198c92e0caf5",
"0x27fa572643a35732cda21571d390600f9188739764febb8ddaf9c01bca807ff5",
"0x1a510cee95e7b6f4efdba5612e8c5121c1ce9cca1a376d8379a1fdc206a55fc8",
"0x14424c4b3e51ffba1869ff6527ce3ae53dc13cc1ea19ccb5c8792ca6be287753",
"0x21a57d8854d6cae5d0818d294fcd9e1a2dc71691a2e3f9b227fc7889cb72182e",
"0x225cb50db0b73b20058ef3f671fdbd2c0877a0defb8392630a01ceefda042d16",
"0x58641892ea470cfc83e363c5b880eb8263212533f8ba6728527c4636f3e0113",
"0x1f4505746ce4f65004b43f9f0017d2602e1bd44ee569e08fdf832d91531cc2a1",
"0x2a076d8186db2528d94fa47dc41721629bcc2fe83eeedfc433c20e8cf4c3efce",
"0x1dec0d6f62e19a1d2ab02d6c4d6a6d7a1dd1387a4a1fb15edc8622e1a3def5",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x2a48253491abad4561b2ca9cd08cc1ce7ae0335240facfa6efb4fc653a48efa4",
"0xcfd514f09e0699217166e20a7eda9b00512b6146af51fc1776dd6980588083a",
"0x1937a11923000d95131baf310078bfeb84b99a77e027e8d0d96201b918132ee9",
"0x303cfb90a228509ecf58fc6e94dcfa0860d206b34b28a8368a3559a57add1cdf",
"0x28930e4b9ec17c58ffa7934c216ab1af55df309d115d0789233f84f2c441a535",
"0x18aabdce0da91d3b644bd5ecaf154ab7148f3c3326cb01b593f8af9efcad0728",
"0x391f2ddcc9bd6fac600eb0c26e0b1a9a27571629e9b00f080d876ee2f1b648",
"0x1d765c20a588ab7217fdda5e01dcccde23dcf9a9cccec4d8f424735f39e25f3b",
"0xd914d807b0fda1cdd76d1955f170ab3616a35ce53516a81e315825f93165905",
"0x22492619b16183d3180c15994c2508c83737ae2a42d968dac85af30392294e7d",
"0x11b3baf3833cd4a6039f2bd42af1633a47f240fb88a7f0ac0902fae2a5be3510",
"0x207c403b77244c8018d8845714e68566216fbfc49acd0107c55ebb88e0de3949",
"0x2c9e431e04871524a5262b21286d04333dedb393a078f2fed92266ac22fefa6a",
"0x1fd093032821a7772421e62b4e3c23a195d27ea4798f9a3f5a6c7d4d2db583e6",
"0x2eaa82b7fd1c061940c2a77bdd2fb653842bf1b0466696b292cd304b490752eb",
"0xf98f710e410dc1552fb69cc85076b89b4fde8f27428a30b58219f52e422d130",
"0x12229b56730ba20a6a52d21bf8f7312696e8cf6537f1f6c50bfdcaaa4ed4a7ed",
"0x1c2fb95b64a0f66b65d9060f1f065bb82ef882af760419aabdc6cd3529431e7d",
"0x2f2fce632964228eef7908478c90107a5dde45af647f2323ad8a612e41c48154",
"0x61849aba4451458f718c3be3f76a38347e512cf422d1f907a82da750dc21478",
"0x2cd60c32d6ee36c374016bd4f1c0b273ff87315f6bfe1dc9a81fa0ecb1264599",
"0xc3e897a8b91c108ad19b152e9842cfb87c4af0aec8dc950e0fa325ed4d69ab",
"0x7a38f888ba67b2150b0e6431ce02408681d2ec80c8daca4c51e65b59d329fff",
"0x1af524a87fddafaad82b5231a1e75e8076c66c44d3b527a259a15422870db619",
"0x1159290a4743365d781e01a0d6bc626832260b07df2d0f288d15c95272eb1f9c",
"0x9e51cd15182d20f87b09cf6966f9268578c3d9cc58b3e7f981f67502f9478e2",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0xb0bceee45e31b08c0548711d59c548f51b7d1a80ccefe6599b5dbad0db4b738",
"0x241c6fed92ae4e391bafe3af5103035f9fc1f727a6dc8ee5f61ba9b1e3eadb9f",
"0x26aefffc4043b22cedde88f2bce76faf6fb3c21b4eda9d682c14dba06fb9e87a",
"0x2673296dd62cd736659080d030b98914f6f799752403ba5c29bf9af6afccc8f1",
"0x22ca97c4de769662b071f7cd75657c15e9cb20d744edd0a7911d78b6a4aaabe8",
"0x188fa74b7eda792dc3660885901c82d57050e74b09a12b5f346d34e1e5f67614",
"0xea0166cc4c51c2252e4f3dc92fcf33a03964a03050f9f125b87a7fe074dfea6",
"0x2134da7fb4f089a21363011b08fb72aaa8fe767c618bdf08d7b87810d5fdb594",
"0x2be62c9234dc7d3db66ac72c758b15628df1cdb781c90d0f2f23de2a29005105",
"0x282ae8812d729f2eff86f2ec478a65707c4b63d33443bf6d8f872569c40e442b",
"0x189e7984fa57098dd737293a19d6f60971ea7c74fec600b4e6fa20cc314f015b",
"0x1e20cd3dbf4a75643421e4fa713f5ceaa35ed0197150182f653ae9663a9e45c3",
"0x23bd66cfdc54f92e0d532ff413a2e2ff3cf6f561a344463e5e0a0a8c5a010304",
"0x42657182ee4b72e3e4408528c19b71ccf1d4f5f38acb0e5a5efd641cdfc6b7f",
"0xa11abc1daf1ff8ed6afb6b0a6370bd55fbbe7507f1da568f39b2ab9dbb6e340",
"0x200edeab8b94daf3135eb6046388ccf8c7140d91873d2fef04b9c60f509c7de7",
"0x58546b9e80b2dc22250fe5c53d66aa14be31d5d92b5c04a05e3525810fc78a8",
"0x1670b9e07e02e88814eb40a43d83bdc010739e9ad6799c10bba24e1f40b8afd1",
"0x1bf39f979c015af4af119c137d5c8a334ed0bd0d7f89626d4f79ef4793b91324",
"0xe19dcdf5b4a1ae01fcb6c6579db3fb615bf176d53e6ad047ccf905861acd584",
"0x28f22053f72ea545761afc9557c84b05c6f736ebe7bfd2c8c5c044d09bbd4d4",
"0x56e7854a96d6bffb29945d76b51fb9e81f5f19ad767171c568b742e926054c9",
"0x2aecacf169f418d8f47472db625ac3bdb5403667c61457666d4238bbf39d6638",
"0x15b04e62d4167a166f14364bed196d1d0e49c8ccde5bd560e261600dda4d3c3f",
"0x15f88c4b31508718af67c6e3c30cf3cf594fbf481a837e80e89156d9c2d1be74",
"0x14e6645c7627e744f9e6140679c863325d1d95e1e4786e573a498b0a790b431",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x1afd97fac1f6e77c5cfe4bce848b93051a26a3b7d3d6b18dda048863a013cce4",
"0xdf68cfb65503007db81044af06d38ce63fda1f569a7057f1848ee4597d87c01",
"0x1086b32477529f9476fa324d6d9552bbab58956c2e2095548dd1bb20e9be078",
"0x1611046b126acf5767561c32d31a36c5070d645bdf08684240a72b9832c3bf2a",
"0x1bf3eb5fbf1e5bbde992521837a8d3a15a187921832989b4d357a1b2ced9b36d",
"0x799a349b10cdde87ae631ad3959d6f9664ce23ee91e010679ddcc6017ef120e",
"0xc55d0ca35aa0d453acbdd8993d05b479e13fce555b634fc6d3e470035b0de8",
"0x20444c1bf67d6ce8afb0a20e79d6b691bac54bcb31ce4182b1579ee21ea9fc8a",
"0x22e8f59cbb4f92639cf517fd119eb650704b00e6eb3f58e92eb31e713c1b91aa",
"0x1b4841aeb035b2e896d64b59b47873cb9c74cd05ba12436e9d1865a4a74e8be7",
"0x133d49d56c7809b942db891b424b30d56ca44ee7f73aa028a5e577e82f509968",
"0x698faf29f83281d3fd421c78ebe694cf5eb371e29a09354741c59f4a4abc6ae",
"0x9cf68b95e1a447226a8c39440513f965a41fff89a1e1618c70ae4be00e92c66",
"0x57a0141a7ba203881e5a90e6d422e6d9001eac737fd9860344191026c5fe545",
"0x1b71aca0b352c5ee4eb06dea7f4202fa1b908f08e2be55dc0834a1a873607597",
"0x142915304bb01cec99a22a96d1af31c3133829bea002ae98d7011fa1516160d2",
"0x4aad51b11363b30a26aef78b4af431dd8bd65dececfcd1a6673d8f96a0e6c16",
"0xb63c18b78503b6a47a88f4d54c4da7a9c23fe346de39a8884224a2a85a9511a",
"0xfe10d1f3c9b406bfb832e85b8a844c5c4dac7398f2dc3ce2541dfa71260d259",
"0x2a42420809746917645806d70631564f61103186f9cc644df5b7b0ee4e6a27d5",
"0x5a66c6f50d393da791e5768de874774d066f0874118f0f417b6a036a657dcb9",
"0x21a4d71862dccb7c0a0a9b80945c5be92307f147f29917684378111cdbe9d2fd",
"0x46f855f83e16426aed3c81f5a2f7f92bec7ceb71e3dc7e2453514c1081ca202",
"0x185eb4c67d4f479827980a96827cdb79988cdf8d31c2f8d2532765f4155cbef7",
"0x2a4294d3919b5debce649b27b63f40e5406b2f044e1d41d58411bc00719d3e7c",
"0x2a802da0e4d59259bbaa7dc3227ea2d725f6cce50332661f0837cfb87af4af94",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x154eb8f04d175057207d617931b51ba18ec3c830e1afa755e8ade5bfa71c1d44",
"0x1c5fbb238cd09b4ad76154a2fadb7e7d732bd534603ff3cbbee8031cdde7b994",
"0x1c3a7fe14c3ef7f03426643cca0e6faad2806f9dee971ba41c0103d42f4f116a",
"0x928a9730b25d647c4563b4a7273307c94c347565eee36c781c3b8adc53973f3",
"0x2aefe39f4fea948261cdbe0accc5c7ccff6714fd741fbdcd6e298249560dd97a",
"0x1feadf4aecbf7c7f1f526d0ab1ae1513f1b4fc8731187f9b65713377c9062037",
"0xcd2f2d4d826d98ce3bf08da02ad5866f34c9b43f2068da4e5b33378d93c4c24",
"0x2e7b56a6409134126d411b560967c46ddf3a46fa47dec457fb82a070bd448b05",
"0x23ee37d1d1e1f8a3b10680bdcabcb89268a4958051e8230d14a0605af857d190",
"0x1a910c02479a6795981001f40273c702cfbdcc1c00fd03de1f8057bf2809873a",
"0x2786abcea27c34cf4ff274769e51787932001c0640033a7c89914f44bca3297f",
"0xb27d402fc69e2f23ef8e60420a38e429da969f038cfceedb073e12f28a5a260",
"0x5c8f462872ea76897742babd1099b0aca77864a1b165eaeb8dcbb3fbfb95286",
"0xd29130c3cd0ab2358ab1683597256a2f7ee611376b9329b8aed30f69505bda1",
"0x167beb74665c1a02b90450914870d4480472b6b2bd22563750afafe3de5fef8f",
"0x2574275c7bc58879004d63dd307638b057eb9bf99388ad4788659f957ef5623",
"0x1bafe22329c00fceba1e48c5f61bdc519b20eb352e183859b2434eba6cbfc4f",
"0x40f25fb048f262d0b88e5a557234c4f35ab898d104cb2eb960905e1e8ba5a80",
"0x2fc7cf259a1474e83243039afef87ae87f1a07bd433405084e3e4241c413aecf",
"0x30144980af35b582d434cab99e08835bb09644dad47fbe036aefd9b19b713ae1",
"0x140f2ab47ba1a08e4ff8c38a8245b79fc20c2916fc3470e4eaeb0b3654b4a6d8",
"0x97cb1acd89b5b12e82e14571e4a4ef516f5c2693f0bf70d4c05cd4efc72dd9f",
"0x30435adf792ba5a8a2c9fb599c91a1de531c7fa809f3fc364761e8e68f3c99de",
"0x17acbbffacec919a115cdc4c303f9335febbb1dad12f0a1825fd41359ef73491",
"0x45ac0782c8edd00c6d7c0eb594b799de598bf538c80f467fb7a4eb1f6b01d85",
"0x1e15d1be8d2281c6f25efc56b33d72bfb59a61bd91518a3de93caf2a357d0256",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x125b96c678d2ef181f7e4bfbb795150eedb5b46a913d6571d1b204790a2c7b0f",
"0x130be605c83bc01c1fa0e64c79ee75b27d4b4efd892368f66959cebd8ef1d79e",
"0x3051c6918396878ef98b13b7c484c6695a093ad607bfdcd87f01b79d420e731d",
"0x2635445a3f66389b4638ebb81a36f4ceb210d5fc5466209ec215c08023aca95f",
"0x10bce0fbd3a8796152759cc25f72601dcd99b699a8c34686e43fd2b6d1b27d89",
"0x17dae8299eebde0062043e9e93267fd1b38d6f0bcde5827c10822b137e4bbca4",
"0x2664e95646ec5ed0536a1ae2ffc84165b5a3c295c21e58606c95037ab746a878",
"0x2b8b53c8e90382786b60fa50994f281866ace7a311a40af07b633f3c30fc7776",
"0x16ae53f5d4c63a81f4fd487793eaf5cd2cb03e3c8236be7ccab8c20372f911f8",
"0x127dad336628ad2bc403718c4983c136f34cbfafdf3e45c616af7c7e1ca8793d",
"0x10a10801dfd21422b4f5a264c2eff2121e0f716512a9dde5e6371eab17e6e7f8",
"0xac6189eec8ef4ce3928d7756fac44685b425ce64bee3d4852698709e769f45d",
"0x6f49e55c72efdc84f7ff6306157d770310b1c4e6e509ba3919b9466bdede393",
"0xad1247adf1e4bc8665343425bee4d3f35429c54d6bf4a8ec3b16dfdd1dd3a45",
"0x9f989c92995f86daf29a92cfeeadce5f105a0ae272b2253bb2de3758a771c26",
"0x1fef396daa237f6467f62441a55b75cb5a09fa94cb1fdb270ac309487fa682be",
"0x130d74deb88099e35362801333bf7fae8abf96165fae4b8179579761ae1de1d4",
"0x1b1e63b7d8b5f8d9612dc59e1aa9422f962761a992079a8e8bfc91695ca204bf",
"0x2d5d5c8feaed5dec95fb9d6674066c03d6cbd0d584084827214b09553adddbd3",
"0x2278a2b596a3d0af0a9365f954adbdd2c8a1514cc906369d3b0402811c952a48",
"0x11291006cc6718940fff0378cb6cefa09db4b7b7c84d447ab132a7a47573babb",
"0x1e0bf04d48d54e8cbe871bcdbfe619ed38fe69bf9d2a61fb5def330b2d7f4078",
"0x2b0907cd35c62152c10e47e930dca88d4b12c5afa7e2836c2637ae73500b765e",
"0x2e5051c91020bf6c73339f653843436ce182cfd487c02a16578cfc96d27c31cf",
"0x1227e0c86ab02adcaf01cfc56cffc815efeab33ece8c164c31bba50b28477b13",
"0x103b328f8e9fef02f340e3f679d91d9508bb1eed21d98d569a41583aab595707",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x1e3d52642e16240dd7e2b0ee21cf4b3b4cc10c805fe52009dc7520457180945c",
"0x1fde6f3b98df6104d07b84a703494892d8fd21cce53cfe9ea41c4ac6e5125269",
"0x6934a63e04749754a1980371301caa1bc00ce38505933b1ed0e085a5755856e",
"0x2897d663791c69c9bfe9b313759be1cea16299e667c3acb3e9f18079d39209b4",
"0x2f30ba6752d0900a64be8d6be8b718eda67cf96af95a1e0dc91e720dde3eca49",
"0x219898fe3438a5e5bdc5a79611084e0977456513586fde2b23b5e8e34d7eb7dc",
"0xd90f0afc59b011d2949f998d7c5e4c2a53953aef58f971a458704fd88f6a27f",
"0xf21f3710b4f641ddfdfcbb67d13f845216ed16a0f1c0b450acb82e81c85a93d",
"0x2eb036baa89d926515281aba071798e7397122fb51f4504e07b6acccbaa17af5",
"0x1adb3f0ad3c7e2300c717a6674e22ffa2611978d8c29e3d21012fbe7606ade6",
"0x11e1d1fe7ad3865581a1a8930698e676212b04c64773601034223475f91a7b69",
"0x14648747b8bb5b1e8b433222a964b95c4e143f70d6b26e6aa620e1c57c842ed6",
"0x14558bf2daf718b30756ccb88e3890ec47f25b4b5e087cf9d47f33423e97a902",
"0x2e6d0bac325dda6331e2117c682066a1be931e8b6bf889e5aa8f716bc14358b",
"0x1bbe690c183e54f281bfb4bd843afb3961bd3e428c81dcfdaeb8220a3858736d",
"0x23528de8742f3238128e65c88122a5e74f26fb2c1162fdba69f65f7d971d52c0",
"0x13e395afe32392f6fd5c4c5c728eae324d9c247649a6c3412475c4d04c6b0ea7",
"0x1ff38b45c4e5b8682a7357723d20949f7b792ec55dfca74c72dcb53fe68c92fe",
"0x245ded3dbd6c3db094bc040def9c4e8a96e67498f9923224388fcbb441109dfb",
"0x1f6ec4aeaf3545dbe65de9602ff4a22c48911ca6647bcc632c857ffc99a42d99",
"0x2431b237299f1a5e8ef22569cf8db020247dd0e7a298716462106e5519d3fdfb",
"0x2e4939b015f27fdc938f5f1ca55e5d7e912045ecbdcffedeefcf37ac77ddbe5a",
"0x26c061cde477c7011c04505b0126eff13fa555d248df1968878956209d36e031",
"0x1c6f21300d13f52bed69b2aeb3dba9760a94ed945673e3283848cfa5c4555c44",
"0xaecfdb86a64315429605fd463ed664f224d10b2e0a32d35d3a5acab914655b4",
"0x25a11f201fcfa64aede18e05fb19be93cfb4c15587759d5e5110420a267a44b7",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x133fbbd86858b9143bcc298a4d783e5b8b4ffc4290d1d61e87d1ce5fa4f9856a",
"0x2cf3bb0c00e204f18bbac1f7f093b9febf2ca7542f44072be70cd915d2c43b53",
"0x13c1a4bbd3a938e8d0399ff791d86962d7ef1504597419c2c00f421d4459c55e",
"0x1b008db98dcf53332b67c287841ed73838203b2d8598187413c17308bd8cbe30",
"0x1e42bc2844c8f32ca38ba9a1d029c7250d75a237eadd2d40969ed5674ff88fab",
"0x5e9909d9b2a8645974d54fd3ce3e734fc0b99236a2a590e6fc564fa00c806d2",
"0x1e26282b7dbf93f3aab257ba1e13eaac39ab22fc81b7252c079a192c113ed7f4",
"0x102a6b3d3a90d1f67e639a27e76023612e096c02df65bf64110ba239361e35e9",
"0x1f8d425b3b39db5096f4897d43838bb2cc77b4ed0f1d99a7208fdb45faa3b3d7",
"0x3d122f74d869433e1457806b82f38cd91103972e456ced5ca9fbc375497ca3c",
"0x17943c0d333da5d18d0856b442553e882c75af5684f2a8127a9d52123b350c43",
"0x1cf484412484df0cb49e3916db14d6bed50eee93dfdfdd081480da21b5388ce1",
"0x3e41d466271e7fc632ee7e0acd2c4c446957175ebebf55463ef9e16f48bb9f5",
"0x2abd2c1f5f2ee158080419092b91d64876bb73f9aa94d20824e06448278f88c6",
"0x1e979043b35e1d57826c8f7192a1866ce1b287772cb266eddbd177b3c6186d8e",
"0xbdad4e92dc796512c4daf27a755b5c5dc6c666084c648c4bbff65ff662c667c",
"0x305dfb6283eebb8f5bef8a33e0dad282ca92ba895e85853d210c7cc82f56aedb",
"0x273238f0bf3b029f5064ad1beb0129b9539edf1ab828a4d113fa7652f12fd273",
"0x14b12b9068950f98de141ba4b38cddb1e398b0093d7e118651d518a7980cf6e8",
"0x3015c78de17c6ccb86e47c1ef08680b12b948b5a56da8a371e6e2e0147c42f51",
"0x1989f7bfdc360a572379c14223f75aebdf04254a589c9a9aea6d80e020e13a21",
"0x2a65e0ea8cc0ea69c631c16bd174828cc79e80143a51c35a8dcddc6a36e7e717",
"0x718f6894c8d87898d8db2c9e3fe7e924b9e31221235f56a11d91c64e4d65fac",
"0x26fcf8cceb403f4ba44219c27d6e595b794f4fa99db88133fe1a031cfd32b498",
"0x78d5c5f6e5f3e7bc47044a82bab78a85279d741c5f9d5c8f3522d34da3d8b99",
"0x8f0b5ea35e699ebc6443284da3218e73f20e8c7eefa51962ed8f0706db54bdd",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0xfb6c5b68b5bf3fc0bf849c18e813e610eee228716ce01fad6f05e005802d35c",
"0xc602aae4b39cd1a84195fc795b9f4650d45b791afe4368689339630feffbc6",
"0x110455540d38fc9c7ae7fece8bcfeda5602ca72823a8162cc4edf21ff54867bd",
"0xb380e9795f1ae5eef24029c17d3c2f1b77f2dfd1de38d84e4c95a344070ec48",
"0x2ecac08767288364ad3ab00f106c9d45fe106b02e624bdbf2bda3f92739ff03e",
"0x1743f85f877aa121f1a8ebde66a3ced16e0e2c61cfea1f89f8f050d872929332",
"0x4d0cbd1d1dd0a87474e35d15e860233328e67057c1398d9921f930db1c32b97",
"0x2d22b693ec70adb123adb300d69ae39ccdfe6873afbe66fbfed0fd1170f0e49c",
"0xfc8ea8eec07829ad468e18f804cb685425a7f56702c78bf3ef9ce424d2ff611",
"0xf4aa2f3aad32e709a407a80affce97c751d6d188b6c9ed4dd13bffe6ecdee76",
"0x5374852d2261dadf1e1404368b67bf8377399ab2a4371ac71ec0c6ec525150c",
"0x496f544992e33a4f0c52c8406887623656aad3f25ef8feb0f485903e94a2260",
"0x18a9a16e6ed044b20459820025be1a938747b97db166552581a0372127a75ef9",
"0xa2f1c011a921def0baeecda662d0cd96c5d54efccc20897ff67bc18e6359636",
"0x22aec007a72e506f9b0708c0dcadd6a95a61bdde90849d9fa0f7d6ca4900252d",
"0x12f1607ee6f4c110aaa5575fe992f47e024df0955ab3a985ff5797c7447db36c",
"0x8a0e21aebd5298400802ad68a96d644378b580aed9c46cb70bc39408bb5d961",
"0x77214bdfbecbffecf5bf823ee5dce410483c9af4906d7e5e3a6966e446924c0",
"0xd8a51d698768c1f62ff879f0e478e98f1157ffc88ccc234f8322449689ac79d",
"0x2ca7d5473e3a7a69e048db0b7eaf1cbe2d15bd97dd62c088cc222af396daf89b",
"0x1db504c331d3895a78674b2f685fcab2081482fb20b16843abd4c34f91e754c2",
"0x226760b82659919d5795bb171b21f92fdf931045381c5f341d772a6018d78f27",
"0x2c6ee4af1e71f1f46a56943cd1a40ae76de4db5447ce6603eae52581f81b35cd",
"0x18f11a6b7218237066ddf0f730b11e52404b6418028f591d2b03dde94bf407d8",
"0x1c726bc6da34803fc45168badccfbd6d0e90838303b5256be9f3e29ff5f6b2a7",
"0x230da928c59a36907165396cc12f5155e3358dbb891941e3a70d239183132785",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0xa6958be4b971b6fb712329b991d9c28ff15be0c1eae89cdd4610ce27a2c7c12",
"0x18fb79983ed105bbab4fffc7c6c532808676e702d5d4deeb82ac9bf3ae9118c9",
"0x2cf2b459fd8fbeea84fe88a081b89db2e7b502d94d149126f6a532831e31764e",
"0x24879d31eb0e13c6968d486a3bb01ebafbfe6fb47a67f3634d1294334d834e5",
"0xb2103302dbc0c7c6c86efa0fc45ccff544cf89e07377b37bd81b2e8453d953b",
"0x2e2e1fc4c5443e2ee84483bb71d753ac2c70e0993cb280e0d6f6e420763fb7fe",
"0x1a9e105d58a6f8fca7fb505e6240b2fa3f7d84d1bdf1dc5d60baed683049b488",
"0x2a1042ce88edc0b73ef4c2c44c12d6d9ca419b2f8144c4af86ed8df0379f02e4",
"0xda87077919cafe94aba4f234b6fb078f93704bb4155e9a8d55f4c7c8b887529",
"0x10df86ad83b48800b7b66fec0843926e7d958f1f69e0c2ce3305a5aad0d6b8ba",
"0x5ca67cbd464f830c5633b84cf3d172f88acb852692358e4bed0a5b69fa194e7",
"0x6f1f54b5acc18eb09f7ac569c51177a0248e9e8e9da408cda7f06826cf19cad",
"0xedcfcb405af9c2132a3992aed66c0d945d01ef726888c65a260f3c56f208b2d",
"0x3009525f3f6c8641daa9fce108036bee7bd265e758ad202810cd526101201528",
"0x943a87f4b786f072e9637b5b58e280b0ef10cf747cf13729fd4edcb5c09d76e",
"0x2fcfcd4647f625c42f4c129dc9d782771c761134be63d3140279960e6b5e3223",
"0x12afa4b24ee867bc58bc57d2e55195215bdfc1f29d541b09bf8f1311d8dcdb7a",
"0x27721fde56e70f248964e39185a35af7c38e46d8f86a160b508fd63b623489b0",
"0x2bc75c98655a355c8ef7d48b0db3654bb2c579f0fdccdcee9cf277f2af834077",
"0x1f49b0d6af4bba3a9d89764eb3fc5a63da95b559607ae0df206034450e40195f",
"0x1ca12480c0ab186896c01ecc28e0a41014814b9a28de45fa0b79b90a7cc8cf9",
"0x1040b4f3bbeedbd2ffafba407c214cdd8abd6555cb54d590f2edea7145d9a48b",
"0x131f9b70a247303bf84112dacde19a9b953f26e7274279dc974b643314f51d61",
"0x102a78fe962133773dcdc7e30a00f87fcf3a3ef135fe4f01f9a9517b572e0379",
"0x1389adcc893fb4478e38b3f3477b8c23c41382aa0bffed4b8a54f8c87ccc6285",
"0x59eb07efee98970dd36e2857a183c43d6ee9560b3c90fe54515a5dbe55621b",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x2ff7ccae4b6aed16c52d5cd2b2be44d66968914941d91a3c9c4d38d5c76ff881",
"0x27404d8154cb43997a5d6576fa461096c9ac1d885a17188bb9d7417803697661",
"0x41f16639e3d600cb3859f701e46e5e38b88927dc20e429030894d0d2bfa5f07",
"0x280cbce70a5f719bdf3096cecac201b2c79693c13f01d40af06b7dae353685a9",
"0xaeba2eab11f80d6527144cb8f13afaf2ec9cb4c55ef424bd00e2ac6f09cbbcf",
"0x11473e38a5168c35404178e0c40b35a7b2e49584246518c521375af70e99e194",
"0xdb9935eab2a555400c37dcf884cb2ccf1226c4d931ad3167493ff0a272fada4",
"0xd9a481cfa6ef0c5c441c790cb8c9b30e2be0adfd2723ea5c1cf0b962dc7a40b",
"0x2e8fefe6bb8a391222b65341bd25b01b02ce0d88b65a496a9c59abaf25ca0b5d",
"0x19dad0c5b078ac863acab028bede54e6c1f5d8f4b8c8172176ccfb53740bb10b",
"0x1dcdd9fbaeea72955e6752f92205e88e094fc5aa4e9b75fa0e173e0425a95e28",
"0x125eb35ed67f035219169de7f612c1bb3eb788e3740b9054ec89352aab2e506",
"0x1f64f0f4b2802abd8f6ec78b6a061bd3345ddd898998ab9160a12ba55f997760",
"0x1fb921d2f30b13504d31f42d0cbc3b3e83714a37353246e6426f2a8da6d26c3d",
"0x241438f09da43d99917952c9f600d47a3f30b79b5ec80924f4427326d284abae",
"0x2ca504ece10e731645d09ebe52614c3e0fe99679b4e210297887f45f99f055d",
"0xef909466b00c00c4d39e13ce788fce28c32eb73e1e4575f396110cd78c690ca",
"0x28aa2ad31f21f32f1b898fd025f6a9d34abd75cbcf29694cc35178717db80d69",
"0x2e7e619b01a79ef24869bb8a57f0c1668ace7d7b721e253167ad661f279f67be",
"0x10925878a22951d216c53068b9e2b8d2a2d4c235ee483963c68e75b246392d9a",
"0x25bf71cbaa22e93f533d72118b04e187d20eaf3c07c96b86a857e4435e870c2d",
"0x2c12c98fe7f663cc207ffb753b9c099ddc0de2d774771a7c84fdb379fbadb65b",
"0x2879d4cfc6efd84feb0d05d1546968f98e11c38374db3f72b753412d2cf2e3f9",
"0x213c205c362aa0d41804809efa5f53a93c4c26ac9d1e91ecd081922fae6346ef",
"0x1a65b2fcd5d9c0db8dad898a002a9c11ec40412378c107a8aa0ff70d7416d3aa",
"0xd6ad0b286a355b4026058b97cc6a952a6ca1ae3ae23641e81bcb757831405f6",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x13b5aadba85b01644fae9e2e542b8ebd5003686bc751399421a798a1ffac6d84",
"0x207a44c8e2044f2f2e6953c2bf4568e8abd69824f301cca26972266e0e18577c",
"0x20366c61e53dc8718125d04f64ff70881d22e856a3f4d9224cf8633143a9555f",
"0x7dd546b57abb0a5f0fc753b8a97526ef3417b06a79f30e5a2f2833d205bd29b",
"0xbb6251b7bbceeedb0b366e3fb117676d1a31802d373e10117cb07c8ef4abac3",
"0xc19b0d2fc9236505c7c7b6a4b1bea3f91f56b56d2d4d6b0dda2b6e0f428777e",
"0x3238596803492252af333365adde8b43ba1ea6722b0bef2d89eb8b215e7a568",
"0x119c3970cc386d6f0e39d351d0d1f308c857c3547373173d673b72c5d555fc96",
"0x13574c0b39382b249280ca5e86593852ad435417157fcc4a7d7af23b1425bf3",
"0x2c41dfb547330e3cd1ab36dcd14b2b65f6db6bff0cf3fc858d7b4555e1ad2c87",
"0x151ac386d35911a265199613ddf17d28ccad77333887120cd6ec04b1ae5d7844",
"0x2142f184dad54cfab54f49734a6dc8e858cdea2a2039dfdd261319fbd8ed1396",
"0x232960591ef4ac647c6f02bd38cd0b4e0f26293eb1bbe703603714676de7e4ef",
"0x2d33e28f33c118eaa8c9a50322e0796a657acca1822b9caa8368199501a577d9",
"0x12da53680185973a1018f3c8ebda54b5fdbd196a2b192f27dd4e13bda2530a6c",
"0x2cea06b27f51acf0607fc354f64c2c3687f86bcf5616dbe9e56385ed5f7246f1",
"0x12ae9658e5e33252bbc1761824ec8131cddd4f006d354f1dcbd17c6133fd84ea",
"0x1500265313eafa13e4db72b664aa06998f7d0f08603f3b59a2d4109263c8668d",
"0x121cb82b95c9461189b38b4f9d1535debbe5e49954ed684767d191d8ffd5d613",
"0x2792672831f5282bcdb13cb16e9049386e09bc11a74c1b34c2ae3a52a3d69dca",
"0x9c49e3fde0a20b1aaa8e0cfea69eb95377ad867be9df04c11fa23e9e559ca3d",
"0x2b2ef2807d34d975db74f912e385f76efedd545addecb765209f531b82c957df",
"0x7a76c4304adb61e8611d9356708e26b98920a0a3fc54bf7e8341e9e189e365b",
"0x1175aab1e1215106386e7d6ab6e8c8ab11898648556d135e9d779d932bd654e6",
"0x95881e72157a04b0e21686523efcc318cd810a2d31afa2c20a49bfa3ceca7da",
"0x1bc2595f9eb575721f2cc048180d6a1dfd39b2c9432c4288b896ff27338a0c15",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x2d72542a02d6093f229924f57769054f0c9f2341187cfcb456b25f659cca62ff",
"0x2a00d2a68a415131906040f416d85a4293bfe098ef6c6cad01deb413ede2cec8",
"0x1cb01e5cd271049bb0325eb6957d2e04fe46c4f43b88948edd3b0faea5b69528",
"0x2e83b677673216f321facbd90699c9f22c2e2629191c76f7ef99b51449c8f763",
"0x2575e049e33d2f09c8ced4d3f663f7721007dccad5ef54af1bf0503a545d78c0",
"0x27885d131c5352064f2b1dfd7eccc9c1eb563d86f3d11a4901a4ced089dd2537",
"0xbe09ca0f50c25da57ac348af3c0c51483babda2e62b2c3b55d00f1eab40c7c3",
"0x20ea980b40600cbe365168750117a9d40e156e1e7633ff512573544ee7be34cf",
"0x3f0218ea64202e828409a7c012c47419edcf7ff1c2902792c117fe42756ef64",
"0xe6a42b289d3df7f5355f32dcf2a507735a0b4e6b4ad2ec1dbe976187f62eadf",
"0x224853c3ca29c4fa226d98c4e2497e21000225c6a0e0902b3d801d8522606b2f",
"0xc5295480691ee73d8098e95570a794cff16c70ce743bb8a42dd627715648416",
"0x148645a642117f6c5870fe24306f9b0401ffa1da04908e1aa0f6b9423986badb",
"0xbe448a3f7e892d80d18a4f34e16919f8547536c517b49ca457fc4ec9162a334",
"0x2bc573630f948a668f64606f9128f8f0105c11b08a9dce89aff3b02a00f0a5c8",
"0x2519650010b2b9642414e33338b47f1d33ce4976d19f1fabf8298db70deca1ee",
"0x2825ddb803da718800beef69a8630fc7f3b58206f06c008c9876772d5227736f",
"0x2f2c24da651d81f403fdb4dce59e64a2a6bf17e83f562426a52b79ab5e7401cb",
"0x3bfdef37744dd23f5ac9e47fde12035773eb7a1c666890f3d8115a0c0f1749a",
"0x2df9d9e9d2c54cc87d0cacacc229d561566b56b0cd00a68b31dc706e3f06351b",
"0x14c29bac822f6d9d454c11d35520dea723fd79b06110c8135e178536120a0b8f",
"0x8b6fe4157191851acee98ca63208dda32c9bf73c833dd1caf158e992847a5a",
"0x25a3dfe68d7513c1a26bcda26c412412a2f7ae80cfda7afbf996bc81cfbccc54",
"0x2d3c0299af854fc8e64fde3e0ed04c3bc54292273adb103f74bf623e889691d2",
"0x8cc27272e1668638fe3f85e5ec76f5ee1595328112a949263afc8d1406d3e48",
"0x2aeb2bd0a8da3fcb57f5b428f850f41790fa68f5b54b506794af4db04a30a1d2",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x11ef04a3823d72d4a7e073114b2e6791e38b5b6aed376228ac4a20b2eea244d3",
"0x101022055653fcd3d2659d6a42694578ebd518b5738e6cc884192e1091f58878",
"0x180f05913fdc0f67f5074c976b3ce2137afcd1c1b2940eb951b8de723397d036",
"0x29ecb8a00aff8bb64fe2df4221cc57bb0cd6eb6b002eef1f735b0231a72c7e91",
"0x16156078057591db5810dade70d6c21de3a782d5fa3143211da32ed8f22c0e8c",
"0x29af8f09441dc2c0e1344abf63fd38ba7f08490f435fca75a26390b4e59b9ba1",
"0x24d8bef242f5ea95cd238844e9134d9519d6682b7448d40bc9f1ed8920eb49bb",
"0x2b76b5027eafdd7a6a3902665416cb07e713952521c74857cec4a829375fcba0",
"0x293dcd5247e1143980134b15f9efbdcad3e7700b6effaa97e17339745e004a5f",
"0x2ac6a13e798388a97a5d9b856f8fa5aee5036fd0422f9444749f3b8c4b9e884d",
"0x1f5dc64952b9c1bb892ddae76de8212aa15c49508cb760a4f579d608c665eb68",
"0xeb5587c5c438db178f2725efc1b739d53d261f52cc4340f6488a8242b74913d",
"0x2f58f77c4c03e9591ab2cc38567d41272c1dcca473cc4bcdd0a4783d2b07bcda",
"0x1c908cf8e41976b7d63c3f59cdddcf83cab22433870351c60e4bea21aaf373cf",
"0x23581184440c2ce0f3acbd6ef778e504f6162f1930e06688417c82d85a83e9dd",
"0x2fca62a378c65e6d2a0b3b6d89489e8ea6bf5d95cf27f40b16c58a15f05e0ee9",
"0x2390511812e8b21ad50a44d1eaad9690f187541f7ffb8a0ff44e35ce3b2733c7",
"0x24660a052455c262cfb78be90a43345338dbd808c422e880eed6b19a76a42d9e",
"0xdb011c8a8f6df9cc0163eec3eba51b230837db2013659415ffb24b3958cf107",
"0x1bdd458fa2cd40ad49ba12709f1bd117ba67639f7b52a7732c56b98e6df5b2f8",
"0x21fd3e66b238769774a650e1159c04c47ea364a48157df08d90d4eb53974c15",
"0x7556eebb12fbeed954d3e9dc4d5da1ffadd578d4ccaf273acdcc0635edc98aa",
"0x200a1f0fa4e71fb1aa1c9b45949185769e97d29d11caf13185fab33fab36e09c",
"0x1795336032f18e1f4e392b03b65bc3dd268813b2f9bebbec00548a18ba37900f",
"0xb3d2d7ddc758d320c61ee6ea8137f08d2f31f3d159bc918b0fae895c42fedbc",
"0x2bf1a39486382c117a286a19ab96d73bdaa9c9b45096518f69491f157df85c0e",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x22dc5c692d9baea0fa2685d2c25fc510a43bafde0315da1c52c108124bd40b0f",
"0x1c9a763950a409e9363997de4e3beaa0944b0f1feb3d917238409584e9c8fb68",
"0x15761f0591d99bc354aa0bc4a11153cfb0b5335993e4e600d4da4ed88fb33199",
"0x19374736f4b0ebf7dd3aecf4e7cbb669a53b4dfba1ddd4b951769ee44c51edc0",
"0x1616bc37e489b1559a3e813544f2d3f6c05a33dd8a39c644e0179aeebc274cc8",
"0x2fbed52ea54d56a8aae40a2f16262b5cab2bee4e964f32acba16067841ef5edf",
"0x1ee85a9999931500883944493baf240eb51de8e8015fabdcb9ea68797bb03696",
"0x2b78ea79b23365607e821a947bb4ba8035f28820f1ddddf1caba7edae1eb2919",
"0xe84e11e29a4b9ac41c2e953f61cc86d33254120f426e217d2e5727424cdd81d",
"0x2f28c96987a9aeea275da5f6bd86a15986784da79796f308fe96d7b28bc3b2f4",
"0x2c14cf8c8c895efacd96c501d5461df5c2f9494911100a4c1baa5b40f8751ae7",
"0xd311aba1168e2352b438015bd49b31d9f5ca1e8460801bbe65ebf019776ce17",
"0x2d1ff9afaca2339c66e640fde96fdbe0e586e71d79e76d145acdd126066c119f",
"0x1c5ec2267db567e8d5f1880899e3add17e7ee0c611605320bf32fa2d3b1842d1",
"0x202908d4f1a4ebead7acbd09fcecf10a8fe557435ecf51e30834bf136827a83",
"0x188d37c6825523715475a10e21e432d21a8f921b32665cdaa6dc91d31913d982",
"0xd976b5ddbc8409fb64b65e1c5f458bd058ff8d789386fdd595eef3a064eabc8",
"0x19268d14b34ccccd93947b6ec6455b6dbaeeda1ca9cba82f33d6e4e682066db6",
"0x68d38aec68f918213eeb15a3d5e65b3a3a4ff930b59b733e34b0b295f6db1b0",
"0x24cf117219d823994d2210d2bc2b60585cbf6d667eaffbc726c2b68a3fe466f0",
"0x122577912131a547f85c741fffc4d5aa5f6e45453119a63c3004f64651e821c7",
"0x1996ff6a6f3dafad0245a77ba200d39de3371ca2be5264952657ac703241d4fb",
"0x1c84f6cd3c3b1d091534dff90e04f0675e6c6e60aa660c3dc4366eaab3ddfd33",
"0x11f23290442ae048c2622f3be83e52ab302660bc6df31171f26bd42a5f356fe7",
"0x2311bcb36c72d2a3f8b103c39583be307ab91a5b020252f7c8015e1c9ae7e56c",
"0x125707cf76963d6475a5dc5c1f832166070dad40eaab70cd31b51e83ccadbcfc",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0xb4b8a05506a055387dd95d95f3c91bf6a1da689ded43e1f548f703649486988",
"0x1d0c6ac842eccd47045e4ddb34e04c1938f9e93aa78b5fe2c0f44b00c6131ae6",
"0x8eae224067879f0830f967241ed0821f41b0e20f9cd8a6121f07aac10e30cc8",
"0x73f79694b751847664cd5da30f38013f2a52fc2530a56f01a10901cef975cdc",
"0x1294381efbe257c11ce6136df76cae6caa4ca5ec1934f1a7f5d4895e97391a5f",
"0xc80e686ab09da319588f7c17b27db8dc60981c0feb8b2dd58be98ff6b3f553c",
"0x28b442efb75aa8e6b0d277ac13613d59b09959b3a1e90b457f7d93fa7bae6766",
"0x302904181cdfa19f33aa2838f6ba83cf0202f22054856155d5c10a0d5970042c",
"0x2b17dcbf694b6ee011663776b422100989f2576d78504227d547db889adc4dc9",
"0xb89fd0b5f5fcb94a3fc154664390d7dbc7a8f028db060b7a594f205eb554de6",
"0x29643b0ab6cd148bffeb6bad54e34bf13cca00ea98c538d900e949f8a223d1c0",
"0x25ac40e12ff5d3ab47779044da20a35fd1ec747e7f9804f951d3e3994f0be643",
"0x22b19dae475254f480d6ff651654f808e6c99cf54186094f5a4fcb3d9c992524",
"0x1c5591a266c5ac14f1c83848bbe3f9bc926c83b4a19031af0334da64ebcc0f57",
"0x22dfd894770188e65c40390d7ef1a907800ab916118530a0c1b736c885a42643",
"0x3ce73087e6cf15f4c0c9e94c05b1490f58f2cc4ad3fc746bbace3ee6134f65f",
"0x2d391381bc0ec52a224a9add14af01b875b9ffd69dc115e348c1d6c3c743ce29",
"0x1561f352a096cb328906c091a612b9ab92a4433f5d65f4f55e78b02c4f84414b",
"0x25de146f3cc4f32b6cf8694fdd876a1c9f0269e89d63d48a8ae9ca064ab2ae64",
"0xf410294c8d91a9bcc60d25f4c73a4797913a27067d1f664771da8d1284a77e9",
"0x11a522b6b25687e258df304954bb84ceb1aaa9d977ba292ef1ba49c652b033d5",
"0xd061366179c02608f06b6984ad53a5adc8b1effc60275817e79e7eb031f5dd1",
"0x14b4604d095f37b5974254e48d7dbccb68da55306e08d00fbbb8f06bebf15f8b",
"0x2f0d5f558fd4454b062fa33f1e52c5a6559ac1379ae507aab152104f511eb53b",
"0x11b307ffd788170d196853547920b916d6a6fb63a15d4cab5452e215f62674c2",
"0x2c4b021e2b757863b41bced2e1aa5be7e77c152e396026fbaa09cea515001c35",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x32fbae1fe345271632403da8c2a96a35805c2a3e87c4457c8a251137bcde383",
"0x197360c47371eb2f8266e052762cbf42283dd8c4ff1446213c1c11752c6c30d1",
"0x213ae97ea4c10ec4a64720db8810df370ce3e9d8492f6806e06c871f0dcc4ba0",
"0x23ea027e72e70e5db4ef89316ef3a127454fa082bd84b255763878395ce18af3",
"0x1a522fc99812fc6ade296385a9f64cefbabdc59b664d33b02cb1c805465e0bac",
"0x282bdd7da996a1d58ccd9e4797e17d6a30224531f3d773b48ef23daa5077298b",
"0x278f051ff5a35ad9a0f1e5ce9a99c9e1b669f58b127b174b1573e76b9a95cb66",
"0x14d2d438ddd5fd9756f4afe9649c2ff2c9ddaf2e6d1ad10b8dc4550862f7424c",
"0x18dbca4af7f465ad6968bc7a1837c03d10d09a94f03c3e7fd3f2767e86be7b9f",
"0xb2f4c4bb0ad8c2047f62d2e6b1024da131588d16986b03e63e8ce9ede6c7fe0",
"0x21316797b3870762390b31a48e8b33b319da5dab6cd4a0c28170eeea58f782",
"0x6b3f86ee68e72580f8949c7ce7e789b629efeecb5e71a64d17cb1e8f4b57211",
"0x21a36423378fe8ddd4d3ac4a6ded8b65b8ba023593a99758ab917ca0b67a324a",
"0x1ff68d97b4ee71f22110b03e7e9f14641d8e98513a9b70c9e1eff000fd537006",
"0x2e0d1aad3b8bf21314fd506d418cd7f78887789585a28aaed747cdacf7765b7f",
"0x148bd4a9f6dcf19bbda66f4531eb4e876443c729ece0612fc005dd89c808efa4",
"0xc11decd7766f5601e8d5dc09960399e2a441254b57aa25bb3bb80724a8510d5",
"0x653950fb31c1384207cb5f22e6adbe9392e0fd3b6fbbc9eb25f4064656e5b7",
"0x61c7be518e2a7e7d9ff8af58dcacfcb3f0499cf7c35ed13929affaf57c95818",
"0x632546dddba57da93cb55ae4fd8dd0065ec22c94686a63cafb6b151d94fefa3",
"0x1458d6428e6cbba4df84a44ba6aad2a9cb0d1c9041283c1ec5277b2990418750",
"0x1c58296b3da9f61460610a21dff1ba812b726a9011f0180e4f457874f7d8b8fa",
"0x11b039dcb0af8c795298f360dc7f55aca201c35487b1b81cf009fefc204bdcc3",
"0x1fcdbcfd2065473d499a075bf5857bacba94563f2814577e5705a020211dd0e6",
"0x2d9f02a658742633b88fe4185dc29bc4297d7aa9dd473740183ae46042dfb040",
"0x100e915a9be179a7cb25c2332a3d48481deec2ed9196214a55d765309cbc8af5",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x1a618c68dba0afe90df2de9e4aa3091ae73582b53555822bc903932747e520b7",
"0x2cc1683d5312031d06b89710f03b3889066006177c574ce3cadb093e7ff5a301",
"0x16e6197f7c10ac35b2432c0ca10249b3b39a8e3eb83d702482ffdd8a0888fe09",
"0x221e4bff156c6a15260b4c5651064fbe3b3cf8f10721e87ee9f72e7021759490",
"0x17ce9f46591fb9ea7e5794a6fa66b1434fec12507de6e8fbc1e4472d27109b28",
"0x22fce270c4b0961c89d92325c52c85141461e0994e04132d632ee19d9c51e556",
"0x15cfedfe30848fa55432b62e7791109698a457ecd5469ecaeddb9f083f66590f",
"0x3343e9088cfc374b61b75ad600de6236aacc4769e5ee8b9aec9f07bd0969f51",
"0x233d73ed21179810ccace1227dc72f2f8c80ddb446861d6e833a29c4084d44b7",
"0x20c8fd20ca1ef20c39e6c99478f2bde9c46dbbc0afa8c840ed93cb153fbc0be3",
"0x696b187d4df08aaa80aaf272d12f72352f6be2e67568dc45b9b22df83b4c672",
"0x26242eaea95d43830574a5378f27299753c7907135c9350cc0afa30c1873c429",
"0x2db7e74c58283b55cf6be1fe422fb2f2523020e04549b7cb88815694bdc078ca",
"0x1c3db6fc9f3fab8d9e62d048cb1a820bea78c43a71f202f779b8996a1559d821",
"0x14eaa8042ada3a2a7d247d46b7cc0138b9fd124674823942d207c7c6a330d395",
"0x7de2b61b5d7796c55c6c9cf4808569d61c78671f7484453d201d29cbe419aa4",
"0x1db38a0c262bf63e0aa7929777ac0914eda83aab24aa47d84e60ac4ff18bfc4d",
"0x2f2c6dc0cbcc26d091d95038e04a2886fbe8f4b368a738beeb995255fff09df9",
"0xcc224d62b63572de577993e48205d0a7f574cf32add5cbe518e55163cf540c7",
"0xf301c14380b822e1f0319cd575d63e603ec8666f361b500d1d6c28494c309a6",
"0x2e5cbdd4c1599557d596522efbd078c8e2f9deca7503fa533ea5230b622e7a9c",
"0x2b7b5611c6e8b5f05fe9fd010bda63b3d6bec1a90dd4e4d95da40bb720503d53",
"0xac828155aa6627ebf486d5491bac13c32b61cecb4d3178cd4701369c2740155",
"0x1946be8c11cae21fdd176eafd23fd635352031a5df260edc493c820fe05b00c3",
"0x19f2dfcfbf6dfb65a8051d60ccc08795e63fa53e3a4acf89b85259e6f85f0030",
"0xfe752a9169dff4e402c76a809563f0d83c6e26d9ed3ab2a3b0e4070ee7baa4e",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x275833d56c1035de1383b7eb6759e6971286af950f5b5b98ceb2a2a9fc52f45b",
"0x2c02e7a87debeb5cacd4f9c776b5999b8216f0621e87720a8f672ffd3051198f",
"0x3a6f6d6dbbd957561e33bff1e7f97ce1b8bcbb97e5e363a58810cef7ee91851",
"0x116fa8d34d5c67d290555db1263b34d2bb0ce83a89a81c5a0bd4110976efda34",
"0x1e81d2d2d04f5cc16db99fdb340df3e85d75e9c305b541d2d933f8b808b6e075",
"0x284898f56dcde9b85983aabb51a7324472955b62538c8c6fbe554080a871497c",
"0x1ff3a909f501d15420e9efb7f8071c0f4c55649d5e0f81a4de0fe31bc4e694a9",
"0x47be1a9fcf3bc7845474b57d44fb1218bde905cfa1da8c052a9614280bd9cdc",
"0x2a3787a31e5611ca3856cc840fad2b0a07bbfb4172859fa6fe527b7e0d5b35d9",
"0x2eb3bf4b3a98c7da655259991393cf7b87eb9f4908c475f00facfc5572c885b2",
"0x26aa5f863ce3498db1f5b71c96457cf97232cff235365a2a1091b6a85fc94d6d",
"0x19a6bc7f148d056a10ed1610f5f9b22a827ba85e51144c0414400ff4d2e91edf",
"0x196f5c78726e289ecfca7a2d2f6f2a5e82f51df54cd54d4ced1627b9e7f30a72",
"0x1118c048d3dead019a262810944ef9fe5fa017f472d5cbe8d27b7ffd2041db4d",
"0x4c7b810ff3f0ded46f2d4cf346e22e402a529d4793314a3bc85f963a6bb428",
"0x2e843295db044df4ab207a6c7aae26693f37a5e5765663f22c6809e22fa0ed24",
"0x17cbf9e9e90196672fcf0d0530c0a02ddf4879954bccd82f75bfefb4833842e8",
"0x27ea08561c8d05998b53f428166ca0a25ceccde43a9ca8bd275b4f7c537eee18",
"0x3491984564105af9bbe74e7d14e96eea58d73c39727a8ae616bdccb8a2451f8",
"0x287011118b922300780d5ba09878c898c662b7d5bcc838fdd8750170b643eeaf",
"0x19af1b66a5d2c6e5a4c34856b37a5a2aa1992546461d6cb65190f74d731e7b82",
"0x438f8d1a68e04ded124f370274324e9db5b35c0114b3d5e19fbea7d867e1b5c",
"0x1b7df25e02c2d88bafb19b2f9725a3ddac024746f30b4b0232518d3d4b8e9f1c",
"0x2fca63f9577b3f88ce614fdf17473f7d033bd30f104931fac24fb3878cbbe2bc",
"0x1a782b1c4732869014b1ef8926206360460ee6e9b7541f5eb0bea1a0ef184db4",
"0x16bcba1157829125674fa67f49a62a3da742c2639c62cab43c92362c29c8c186",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0xfaa456a4f334a6d64ec7443330027c0f6fdc3d0232029ec5e0b7299ea372295",
"0x21ae168025d871601564cb94712b6fd70efc57a75bd794f96e09556ac9fa499f",
"0x2659b387d06b87d28b97c58326d60f8a8e9e20956925cb774f4fb99cb0fc7bf2",
"0x6ecd6537384d3f96bcfd794a53b1cb3d4ac7574d23c753e20185ac05641a510",
"0x2c47b359757b6aadaf39168580ca135268ee4030f857e83079409db9f61a7a88",
"0x2e3c4551ba4ea1bd2f3bb46f4b411ca86accc38c54777867e6b6de8b6381e60f",
"0x1aaa42d6777c0cccdf6dd9c4628cfb4f9091c8c4e19b218d13c5ce8d41b02747",
"0x101d7175ecd398cf6b5e339400ed17866953ffde1fd49caf2327ae39ea805e2e",
"0x47aac02ad51c60e7b013d7e76e0219a33395d4103c62d76426b97fb8a720bdb",
"0x2159734df6ba0ebfcbdb4412f5e985870f836d55eac7278057bdb5fa002139a6",
"0x12c80a7f80bc5789e17e76a5323cc6e879e26b2eec7f70adc14e91a679d715fc",
"0xb37ff835c21aa08cf5e82063ef6dec2dfeddcc987e7fe222a78bc9827c797ad",
"0x136a6d023c29c33b1812073bf0cf9fb61603ad40ddeb3cadf8f202598cb3f7db",
"0xbdbf9722d2aed63d0059307617c47ac2688d9d01a8bb20f4a61b95252dd7b32",
"0x1d90c4f4c52e4c8157ec6ecb3fe1a70937ac8c365100935c3ec4c359137d468d",
"0x25d8cfba9177d817bfe2db087ca7ff74f3a4ef92986c6e5cfdea5703affac237",
"0x30562348197f23b21238c777e3d7f366cc9e69e796cb218281b210ac3f1a142",
"0x2e6b5b67a5f7449b426e3fd32efe3df98af0bfad5006d6370b574b40c645c1e0",
"0x60c72ab89831fbcfd1084cd3dc94aa8f69794540671bee622d6837d41add442",
"0x949047c842cce9e422d779c80fa13ecf5aca5859086ae9c3759cd3b02d7476b",
"0x8c9031e3f9fcc8fef60f82e8026db19bdbb5113c77a4c06fa4af3dd7bdaeb45",
"0x2850905ce0c275e427478ffb5bf44685dd95cf1f57056bc19108d6c85c3e7cd2",
"0xc76f19ff9f52168d20cb4f0cc0d10bce93d28b3acd6d479ea38b8a96f944455",
"0xb66fa2f9d2feda710dca114c22cabeaf616c70ed2bb793a7eaa328ea1ca3c99",
"0x6198754cf90bc048b64a8e925c41c9298890c946aba20953090e05e55e768ca",
"0xc637cab8864b9bff868591c6bd14424892702a1d3e654037d0625b258126c6b",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x21325a5b2ae982ee23a4c911b190b63005919d1ace55a101818397c73be72f7a",
"0x48d6872b84e860e934e439b065e7a162d5705b576d4fc14c47535d9e08bec23",
"0xde725e2f88af9c238e880d725e71d8a1d79c4be4421fd9529cbda976462ed81",
"0x27eb4b06d352a3404e16264a0fb08537ddcac2add0782481c2e7735d7ef1803",
"0x1b47254e3cdd4412e01829f03e74fbfcaf9f882b745358294012761106a0955a",
"0x1b4332f4bc0f47d8728dac5d12fe99070a53ab0ed1462c6add9ba42c2323f755",
"0x218d22d5f13b09ace89e377cd7e02d3b52b74a1285072d62540842686f728ae5",
"0x68ad6997a9ced270daca95813e82527f7e6a4d5cc4911c7e0fdde7a1a062d03",
"0x67a187bc1e0d1740ebc7f7343397b235ce0034bd6f6fdbe43fc50394edd65cd",
"0x26d27d9b4d504feb1adc50f40bc7171e56e9cc7b17086d68ac09bd337ab9a756",
"0x6e901afc5dc879d75ef7d324c7b7c8cb8772f7948829dbd2293ab032a9ce962",
"0x14c8e19997ea7bb4131f9765ed587425a2fe5f91aa4f4c918201e74110bc7526",
"0x273abe5cd98541349618c993b7192c978fb02fc236bd40dc3a4a4f61dbce96fc",
"0x715d346135f3b13f84a62b794f2d00bc19cab24d35d168d1f95429d8856e296",
"0x2b9bcfa6deb252ccf6a2550e198f21b5fe0800fd3af70329500481a1f472f174",
"0x239f7dc3817df74d0e93174b1564fbdb7e4010b69b32ad0618a169748e496c9c",
"0x21978d48e2d9c7b097fd4d0cb72c238855c33bc79834ef7b08405b1b6a25b3f6",
"0x269c70c27b7564c9d24a631fd3604d4238528e20b010912916e2c1927df5b950",
"0x2c583dc96a0a9dc9f9efaac1de85327f007597a5e812fd564df9e490b5dd8f68",
"0x121e4187606e3b3382106069e0d56de26dddd453c81d009647a9cb5f48418094",
"0xbeeab0c615c4acfb17eb9f8dd647bf03917e1169c9c38d0f397c10e9dad80ee",
"0x1e07049aefd34f62eb9b702cdd93e84e4f5bc2bf88ac583ee4c8f7f358638c3b",
"0x59c6422f0c9d34dc813948bfdbd3d525a5050122abaa725261b21794a4bb03f",
"0xada60827cce301bb3aba3c0dbc1a32d14cf5723ab4a85abd48baa37b85b318a",
"0x10370b82fad9fa38906fc9afd3d2103760b279a5a79803039ac6d7b47fbfb080",
"0x22b53d470c374ee90f3477d1bb36a57a7cd3e39305dbf4895d1a38df65828962",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x121bac144ebf731b7e106308001501b5aba39256622dc16b6832959ef32d6a8d",
"0x2ce538366c9cee7a91c93252cb96b7c42b4e4b26a6be57c1e5448524e5acf376",
"0xe1eb214d4443a823686062d4f44fbecbe3cac0513ec37dc6969a24a5c2f34ea",
"0x2b10f3aa519015cb9f2d8e03efc3e54d82cdaa8825760f40856158eea75583de",
"0x13dcdc97aaf8d23d666426b008a02be78565ea485fc5b3175f2a36d3c6589a4a",
"0x1e179f5a8d8cf761188a1af7f3aabfd0c6586a3ba2da4ac2e609406494d8b04d",
"0x26350c1076435ab7615ef9103dbd8224d3780d72055c5bf265bd8f5bc459c5cd",
"0x2569aad1663fbf0c512be5d7549b856f5058b8d9254ba788ab4b67f957703dd6",
"0x21d296071bb18ffc608d41b9284b25f99e896f90b73c4b6ebc6c7e845dd2756b",
"0x3403ad2e4edbad53108b19db3580bbeb575989bf763939ace10bf3ac11ac946",
"0x2e87a068e7e10cd0a27806e4eb87fc4a909b75602e7ef4d9b49732d30f8f68b2",
"0xfecb01322ccd429e5afeee9ec8f3888c528252874e09ee6c82110bc67e1133d",
"0x21b1a2e21480c8623fbf9fec55cda799a152e941e99d0d6426d24666ecd9a7ed",
"0x10787afe51951f551c5ea3de6eecc8c08adae2debcf2c0add7a578db5db669a",
"0x129a75842ce7f380f4adce069972a00aa0550841e41ad2f46d1665177576f052",
"0x33844a0d5987a19e66c014e83db7c903b6aa7baff5cae3ec6f2e7f9870a7102",
"0x2af0d00127c68081dd29a5c0858f6bb0d20d0e8c8c1fa50d0d539436a66b4950",
"0x2452bc4a8de2db1f282d2d8063ab568d11cf00ddd0ccfb165523b0e7199b4278",
"0x7053595c4f99205b79bf985336e456422650f494c2f79670c0d34257ec689f1",
"0x1bad1a52d292401b1a8335df15429443cd8dc8c5e856e185b8c5f9d0c9bd2a24",
"0x24635b7d3ad41a5bc44a3a17d80a7818355ff8f18379004e5344a7b1713a31b7",
"0x2e7876129f03a5f90702ccaaa35e3d3c2709756360421113997cfdfb1ed927be",
"0x1f6028d50d8a7ee644320cef9612807c7ef8fe40223751dbf8f791ac516fa897",
"0x771c9d46f602c613a689a8334d46e0e5cd1d214a4831ebbc53525ab2d80e5bc",
"0x269f052ff6df5ae60f76c891df96d8e4a23e80371c82349ef960088ef64b141e",
"0x2961710040a2b2d6ac5101cb03a28f3bc2fe649baa6efc5100592077f15de362",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x10740ce6766bd5d45ef53a0b79f688c0c9a075938902c676cefec8a82c3da53b",
"0x27f3dbcb60ac79ca5eeba26c3971c64600543857b0d7a6019b292df5d6084e02",
"0x21093160140db2a25e4a17cc7600123cee22ba57790926c04610b8c95f1fd186",
"0x891be8d562bb6feb60c7571f367d6048c3b083b2adb097a27e62e336cb27a47",
"0x2ffb17d674958fcb7a8da2d38554bc5571c6efebc77e89514688212c68d50a1f",
"0x94c68828cd769c940b27f645dba1922d26898c64fef55d5638fd6e1d357b75",
"0xd55cbcf35eb4b2a41cab995bd1b90571e4a87677a90e62793f6073343e798f0",
"0x18e91bc3e095f9b687fe66cfdbbf8c234c27af317f13fc27707d271e871e7061",
"0xec0612f29bc32d89f73f7f0926fe0b3f3587dd7eed49c772b3aef2c5d41019",
"0xccf5311099aecc81a34b567999eb4c663d907a8bf4b22c2f2ab63a324ac3451",
"0x183ffbe622900edf9b6a8021ab80db00676f619dbc1732dcc8fad67128772d26",
"0x8f4331aefe28fb6f009e17ff632db3505b18ffaa61c6b0d341fe0b6387ce2bf",
"0x9eb7f33498704db8dff1c8777ff539d1ded2bd207fae4bb7465c375b8747161",
"0xa531199830d7120018b3039c7afa9a084d529d930f865c38fadcdc40bb008e5",
"0x194b3cf28d7b62413f9b837b687bbb4804733c8e174e76bed846f92068c066f1",
"0x1b8604e1486a35ebe8e6b900127d0dbb54dc8aaca97a4eb0c8956773035f3ef6",
"0x9b8de36766da341c7e0b810a53903be22879912b707e1f3f752e6f079ade75c",
"0x1a435eb920d2b84fe3c0b803ca2cf85a6721d31f21778706d4a87a923ad0ac35",
"0x2566d9e893c2afd892f4702accbcbb979c7cceb980d234de549a3c6c34bdaf59",
"0x18df8272b0340557ca8fa98dc6e75c6d788484702d389f13fb82bb09dd5edb19",
"0x20b183f7293c68cc2324f01a2693d3edacf0c28691685520cb6c1ff79f25bb29",
"0x128c7a2624a1bc92093ebab7ea53e0d5d53b059e21004b19cb0d2bb3dba74f31",
"0x40287c11b5a3f980d59ec06db46c6fa3b54e9d4fe0f474ca15a7aad1ad0ec1",
"0x21d7fa42bc56b52d557e34b091518d6a694595207a099c718b87b6f216ffcd7f",
"0x169dc2796511017c3e4ebefbe57d6f93194a77513fda84ef7457afbada8a5d58",
"0x1d74ad732a1dc804b9584e557a9c18c0b497200e0d27312bd2432691470566cc",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x2aca8e251964d1a3261f98ec83cb17d611d17f5758aeb8b34a8121121f7eec67",
"0x12e284f43dd76a9f1751d11335d43514ef963ffdf2036171cdfd4f47c99eb5b3",
"0x5071e18392facabeab0a39fea36c393572e98073e18330d9c4c7e654572065e",
"0x260d7455c8470a5ca5cb7a63c39b0d1fcca3eb1029d2994c5f2c19a39086eae7",
"0x1cf8584e37677b19fb7a05446448d550fe72a4fc79c92e93e7576f101dd05099",
"0x2d19dba2b7658adf60d8840e9c7b115fc37503198335c9050470ca3c098cafce",
"0xd98ea1ad72116cea32da96c74565bdb292b6f62671c5cc9de0904e1ac8a3918",
"0x24ac021320aa1f1addee655d4feaf537e470915474a285ab11b80fd166a20cf0",
"0x216feb63069f6947beb294a1c7240b202d132ae945f7cb81368a2c79223d1131",
"0x20ecca83ee5156e6092763d78973859dab5cbf438b6782f4d4727f07e7951bb",
"0x1e632a42fc326036c1f3313f372803cf8912d762b3026cb4b868ffbec464da38",
"0x2e652d54941af14d90b4347529d6e8734e184f48c5827373e35e96a0441d56b1",
"0x251ff531befaaafc6933e195e6327a853e70f7956ea16f99bae74ce703e13eee",
"0x12ac47acb9b712578207e429b989e017e010e2f8e513e5fdca0d5d70cf69cfa2",
"0xcccf17e0d61b8413ac667303d31b27e5bbdbe2de4fb79272fd26a96a6033c00",
"0x20f2060a29ea58ae11aed61e371eeaedf8c49f7d2d310a20daa4b08742a9c195",
"0x1cb9f0d68dd3c14610ff690400ac156b0f88ddb3496842a82976bec878c1fcd0",
"0x1e75fd54061e8660fb82a6f24ca385580d37c17fc731ecb67aae86ddcbd2c363",
"0x2d29ebc4f807741c6975700aac34dd02857b9ca3f389a34d281aee269e9509da",
"0x1871cf71711f4036a0104f07506e2211c40ed44327c7e19acbc2400345eb7bbf",
"0x630b7ea40ac6a040959e71933395a414a78ef993f03d2306233b0aaffe4a814",
"0x1ea87ac112d60f22961d5b2da26c0a06bd4dc1e73788a388ca3bee772cc78e7f",
"0x26a7a6c245da9cf530f87c9b20ed86af369087bde004bb6dc3eee8b32882c7cf",
"0x1adf5a028ce2b8a0787eca43ebcf427dce7bb7b3ac19fe0a8c0b7016afb25e6c",
"0x5e2e3348c9fb090e628aa40101db8b4f46b6adfc7d31fa82e1f6c9fe5b55a1d",
"0x81d87bc2e14f185b9c19f4cec48fa501d99c70a2bc881ccd6ec4f6e677721aa",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x2a7ab507906adcb6522c043a1b2cb2f221e5470822f048220ba731b3933f3212",
"0x1e0791ec0c83cd1f3a0007ff027dd589fb0866c6257c181d293cfb70b62abe59",
"0x19ad62da7c5d8766ef927edd0f7fbd997d0e6c6555a6c38fdbee7f5299b26d8c",
"0x1cf518d282e00b1894f86c42ccaa292dd208bd0d3576ecd1cb1c45d426f660cc",
"0x86e5c668f2c7540e65a379bb9738416e1f43e0b41619cdc040c321aa89db7c7",
"0x2bcd694a683fb621601f2a5f0f900f6bab1f4291d65bb8c26537029484b38496",
"0x2b6f0a65bade0adb23efce9c6e3629a07cefca2718b3949029362c6da4baebaa",
"0x12b25f49fb1cd92da7fe1fdfdbcf0ab1d715ee92ae7e2c0b2a60b8f4106abbfd",
"0x797c7a863ba81aa2acc620e089ac0afe2f713e46fe4d52ccc637953a4ac2f02",
"0x113166107727b2ccd9e2bde6285860c912a318ff3cbe1cca006973f444238f17",
"0x29d8beab8a793123bdb47e3bd56d6e0d6e4c9d957b38d6ac7ca7d53a30fdc94c",
"0x68f99bd269ec2bcca30a5c05afd5136feb63a3315e05dadb2acad3caad1c7b0",
"0x1d8a2e95f5012b9744d33e3db84253261797fadda47ae08eebd349753511d342",
"0x26a6dfcbfcd2a98fa147bd0b18f3e4f66e1f1a329a168e3a61336e4da3bb8f80",
"0x1d5bdb15bbcfd215d8caa665e9687c2d8add0b51cf54c5226ed9b89866f767c5",
"0x2bea457b568fc29ac1a23ff4322caed5463a9cd648769e8a1a118aae84df1309",
"0x1dbe7419ee59dd580a0ab4305440a57fb651830f979f8d21656ff28b1590ce4d",
"0x17ab1d55da8ff17391ba874c4b6e52c77dfd316a0cd9566d1e28c5dc9308d309",
"0x4a3a0d0f9e1b091bdd336acd117c4ede9d64621c6b2ea4f07726e065f17e2cb",
"0x2634ad4e91d1f63da6e2534c1161abec660d92371ed85e8f0e39aa91523b9e60",
"0x1afec968060a10697a3889bf3456a23a4e98c3781d0ee88e29334b14cf7614c1",
"0x23a5fd23ec8919d62176ff3954f983577d5ea821cee695387f096c7fbb93808f",
"0x283039c47dab36071299505922ebc21482295f95632d17c49fb8f07e382641ff",
"0x1a0084bc1b3e951aeb3dc6388708f8ebb52247527a393209664d43a1812e13",
"0x16fdfa540f269b40f27696610cac06faa7eba7d87542dfa42d28d3f453a70622",
"0x638bad28fc8427c2349d2930b08631be095bf0c03572131f3a8132f38f4c0a8",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x2b960b4aa6bdb5968fd27106ed926399bf40c9ef7a0abce38158191156d94b47",
"0x21ee2ffd320737215ba399d91f5287b56286e5f286441b29e7f4950f2a108d82",
"0x1a912af8a3a82ac944bc34390ad7af703d1e4a8f32996ea0eca203709bd526c4",
"0x1e2d77fe49d12a919d8ee0b0bdc15475f9d3d5dda831b098a921ef8547542ab2",
"0x1e461b0bfa65838c31b66e8973fd153308af46e6563e523b4c97bad304ce6bce",
"0x1222b1bba586c324581ddde55054315ea378754416b7b74406a44d90468839d3",
"0x231cb90d301a6e6e3f6c47a07a3f262f14370bda5a9844a4c128076b5fdde8ac",
"0xe3e66e543fb59290a8d57f5fda43c4b74b235e00adf1e1440859d8f252fde19",
"0x1bcae3acb52de61f2f907f6fc16c142016e053640c8ad9b4e3baecff97b2c13d",
"0x2a2e7e286f90e3554ac96ed8f80267a3bd9f747d787fb2533bb98f465931f724",
"0x1729e7b06ac26c624dc5c6cc6d761f94d93875ca170cd57f87cff909e922223d",
"0x9565b3ec6e63401bcd15d12f12d8c805ec5c8936c2223ca4dd510a57afb12c1",
"0x1ade0fa28ee13df4d382a505b3893baf5b4568bcce7121b5d48d29567da13a9e",
"0x2301dc6a1236420c051aaf16a095e77aa88f23f63cb30b410a323ba77f21f7f0",
"0x158c6a01fb01f542f7dd93ddf2ba1771d726cfaa7c39ba5260a5f6bbbce3b9de",
"0x2757b9eec4cb27d4e4274cca6e00289f2d12e987465c267b1fa104b02932a84b",
"0x3043d8b0cdac25b084aeab7475766326ccfd15758870a4b47a8783f73f5e4f36",
"0x1a1739fefe6488c79c6c32818ff62a65afdefb9dc62a23bcb3d46428cae5cd88",
"0x56f91cf9e2444d0d477c13c994388d88a2d8e1b88d6080b5a415a53117643ca",
"0x28c8f42ca93036c7226451ee7ae0c1a7b87b0c560de7b11350dc7f74e4ae51e6",
"0x18dcb540315a43872fc246fe3f6779a237c61ef5527e87a400b24b3eda058469",
"0x1ba374f70de60473f60fb7452d42c59f4748debdd345afdcf94d09305b601a3d",
"0x1b40af6c2e106fd4756b548837d64bcf6dbfb9d9380e1a70e010769efc2281ba",
"0x2578f4a6e3dbbf2ccc5e1837b4038327925cffd00f96e8d2fdac677f2b0faa3d",
"0x2ea53ec4f2f8900d39df68853f2ae9e969819d33bbe6ab9686e1185c37933660",
"0x1cb7cd707a851d764b7c3d2da544afa59cb87f6ae19971eef7f403342c205aea",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x6bd8c397b1e2d8e3b0d32ef2594a311d49a259567ae4c635582de9cd15689bf",
"0x291adb6944892dabcf5217145ff77361815e58600ea6248b0c0069802557ddad",
"0x96477873e56e5691171631e4eb74c7d2f9b2806b4f0e45508220739587a890e",
"0x1ff4f6ed8be43e079ad849d03ff3147fd6b1fc0db8c1b8477d65c096d4b25a48",
"0x9e5e4056e55464d9d5e6ecdf7127667de411a716e88014861d5436cffeabcb7",
"0xa73b0495d174fe15185e4bc010a545402736752585288200ea5922c5f8d29a6",
"0x108e0279556e28f04c5570a6274d115d4b3b1bffd7fbcc289cebae7053f40427",
"0x20d97451d83aecfb5c0f6cded427ddd517ada729de160d4ebe2429dba9d28a53",
"0x2d8a77024da1f633ae52a6cf17898c5b908f50ae49fdbe65b4662853337cc919",
"0x10571ff92352d4e69df05c3cdc65c0e52747e03f86476850a47f092bc272b263",
"0x18f7cada1c661e5f8f2074f16e72baaa705c2ce42b68e16fdb4d6945a33054e8",
"0x786ff337450d3614fc75c4d314a61395b71473e735332d78a7aeb270443cb93",
"0xcefe88f60cb9a382d5eeded9e7bacac15e7c906dead35cec09ee6e6d0016b3d",
"0xf163a2012b2484e1de36b5991e59ab0ffd4a531574f6c72382fe92576ce82e8",
"0x63dc4f07d9f069d06a30e7c5a96830d2731ca8165abd9ed89d187753f29c682",
"0x71a3293473c1dcd0ccd5a08dec6a321265ac88dac53eea581264663e1dff0d7",
"0x41b8d2a056f60d8d3ce5e3780a341b97592920b170625c1a69f2a23e1290268",
"0x2deddd6775308aa027b3449357f8abb6a6d10e11cc3a14d0feff23e3a8597ff4",
"0xac050f54534015c810863a63b7354a35fe52279ce4b7a142b48f5502702a4f9",
"0x215bca7ae4832c5946f9ad54abc0b3e7c547f8a5a962e4df85d0b82dce914799",
"0x1efcb27d3c098f574e7fd799e2a585ccf54a59147400ce00c86da0ae0ce90684",
"0x24ddc6ad9a48856da363007a1923d1106affa889e44ffa7959bf41edba382efb",
"0x2ef8e41f289aa4c64244554413eb515b9759a6b5ed9e2562d1a674267171650c",
"0x2f1c219c4d272380eb411db7ef93f6e692eca339fa507b656e0d532801c0e205",
"0x5f18c83d3464488a90182139c312e753a60ca4499e3c2c13f7c2e72fbf47395",
"0x179165ec0d175758f57172f5a9f7d1ce6e435a4a1351d77139b92c6ebec86da",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x11c208a0495e0e7c3e473f98dd1e8c61b27b44de88dae7850122421cda7cfbe1",
"0x297f95f2fbd4565360712a71bf3c80b798b17dfac6c54d884d99f3aa7d673dc8",
"0x224ceefcf32d746010d8069e79d356d69671e3aa9403f39892e5882a1891e718",
"0x2732b23001c43c62c459cf0a1f48790deedbdc489a6372138594a5a74e5f85ef",
"0xcffe59dbecf21803d789c62b67f94bb027de571a963be229c54c84ab106f9f1",
"0x29b8feb4a9a3585ec376063cff8e0f5a4292f37f7a4b7b1ff228f03f5fac0510",
"0x26a0c0e60a2ffa10be7d6b2c878312de74cc43fcc7f9eba49e05fcfcaa3a8b90",
"0x2e570656db41e2f88c3de3c09d68baba727e76e3511dd4d1291443db29aa5f70",
"0x12bb58e4672200ef2816a8237dfcdf70a9fb07b2ddc8789b748d0b559b7cbb78",
"0x216e369c8afad59e15e88e3ffdfbb1e137e9b314785632ad2c7c81bab01a77dd",
"0x2279e39d7921b8e04b6f36503059b1bf2ed79a3b94f15af97b9720bff85ac25a",
"0x60564813a0ce62e4ac21a85ba36fe359b53e84244f908b866568084e31c4afd",
"0x2268a405631dae60e8eac4f408fbd5268b40b1c254970e3c22eab22fb8ecc554",
"0x300263f7d8a2567496a37ab94c57e2015442257c062ecad9d8412f6c6ddc0089",
"0x1963bc7aa03a152df1eb518cd9588bd04f3fd21a318314fe0e54c1f369be3c0e",
"0x136b67c2b78e28a9c5276c6fedd9afad286d344700fac868de5548c404abee95",
"0x29a329f4a94c6c6c9fc81e8cd90f7f1c9e5f6c89875a280dd9ea0b4b90b8ad2f",
"0xc3d92aec4b647cb21e6f0ebb98ef3c65c3450672ce4694f49f39919ce6da1df",
"0x2f5235ceb5912869936811f841c3ee0f648bafc9edebcba4aad0168d03f9b52",
"0x63a760609f24b3692d205c9b3bebfe088c215877de8d79deaa84dff83abb2cb",
"0x1965360730aaa2fb621c470e9042cf5db28c4824575c994b255c92b02d0b6524",
"0x1838e4b596dc759d6a97b0b763d959bdffc4ba10f84ab4b1c4c71d50a924d179",
"0x258cf09bdda431facd55b62aa65712248056e3edd9428b010a809ec78c41ac86",
"0x1e587e52329f0a29bf3db7337442690422a9722e228dec682be39df28b3bf14a",
"0x120effe3050205b3ed1c06aa186bcacbe860b61e77bd06b9b71e78a710a09500",
"0x18213dc619ab928f68d5aac28df923f90282b6ec64d5ac376880d31fa3bc1d5a",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x1f02f7e2e07843a88bcaa2797d91edf88cbd70ad743e938e35396628fff818c5",
"0xdc5a85d95f105d8e4b18eded697c62a032136374296ea9b14f54cb0ecadb9ee",
"0x219b60e6d5a22578775e83f4474206559204025913238a98fe09297e6c473c8f",
"0x435530e014db11e2bfcd58362982d8a33e222783a5bd6db56bbd327cc5237d7",
"0x28c1ffc5c10600c0dc9dc3d193bc58552b235922bdf46161b6f8c4cb5a6cea5f",
"0x1bf7a2f7bf358cd12302582a3b02600994fce154fffc218ae6442bb46026f98a",
"0x179d43fb87170d3d97f4a0166d1663da78664d328cadb544dbf5d6c5d611de99",
"0x8cabf5f7d8a6d458bb6576754fba5a716ae9e484a668217adced3296b7cccc1",
"0x177be1eacf22f916417a28651e18d379eb44e5c2000e329c1d3c8df516c1194e",
"0xa5fae0f09f85d5ab6b22833947da6cba0daa2a9671ade494b7f9d8367394987",
"0x28df87b43e795b370762f1d3f9dc2685e91bbb7a6854acc152f705c89db4938d",
"0x58de2c0fe8e6f09f1b853dac8eaa473e4f6f80fc20e0f4190875d94cada6ecc",
"0x1ba657cd2bdb97e5d24bdadfe5cc11a7543f54c18e65039c0e616e138de5e368",
"0xea5b3a4116ce4ad61e32cfbf9662a60c542aac16016d551149c76700ecc44f7",
"0x2c219d3a2b0e433c1ff243db27a237fe15c733edf0f0084d7a5ba40123fb7361",
"0x19ad974a2285cbd14d04045c6414f199a891524b798cf1e3d692b742cd6d89f6",
"0x2c7d9c944d792ce4b7535207891386b722458c54fbd627ba39521ab9cbc1ebc7",
"0x2e71a3a451566f8919a27edb83647652520bc5b920531fcdcb2859a5ec77bf73",
"0x6a4b1b530cc5e64e84e725629950bd7644f65e7223dfd4986161de535cee83b",
"0xf55042c0a72b5b62d2107153b60482981bda1190bc8b8ce4e30ad101fac7464",
"0x20378dc7686d64b35b84440493ca10a587a5505169d380fc5c5f4a9ee803fc11",
"0x26c526f859170915382b65592aa1957e73f3145c970cd7c891dc86b7d3cd41b3",
"0x194c4e5ab7214877317adfd216f34310e5bc07da13b67139dec08cc25bf2a052",
"0x29e0d646063e27cfaf0e4ffc0546f1b309333958e0ecaa3632bb9fbdcd0388aa",
"0x121b4451014b6382209a13bb0fd2727e59f0702a081fd34e04c8ddeb87d349fd",
"0x3018ea843d3f3f525b9f96b6c6c07e5c86d4a113d183cf66141aa80960048ef7",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x26a889065a9131ee8541587286f27b8ab978d106cf21e7cba567839eb83cf5c7",
"0x12f2322938e02f96227e539152719a6fa62147cf82937a0c980eb011c62b01d6",
"0x2a7052a220aa258284d8bcb1e0646c0266349044ca3c17bd0bb628ec5422a75b",
"0x1e01d825bd60d76a2040b5de5e43b90d1bfbb0876dabf550baa3a5dd47ad62d7",
"0x3002ff6560000420d0de98e87d335432be4a58ff3eea053d2d332354cbc22da9",
"0x3d28736a2952e396f2de28f3a567902027214706657773431d54cd10c0a0464",
"0x27716d5bd3e14b61afb8d6ba91b27739f9075ff2630b19c6c2c26c5d5496e195",
"0x13cde7afb44e0f9b6db2793a51226e40aee9d5e7fc75ed7c663fc2d06e9b8526",
"0x503aae89801bbfc5f702f60ffa566477a634dc17aff8f9747d1fd1fbb3cd336",
"0x1ea910a5da3ba8d8a39930b38b64ffce7616fc9c8bc7fc1fdcf12b650d04089c",
"0xeb1ff569a325e123ede757ea250df5f41f75dd2b75c6532ab96dfe64cf7f3e2",
"0x16cc1752c575ce984729208e79714c336bc3224f951fd6cd0b82a2ac4d43f892",
"0x2653378743d2eea387c330a375bb80e67878a9740fc2425a36315206a140175a",
"0x175b14e3bd393d825ff9560dc4ee5834c69beaceb5f8580156ef162c6d36369b",
"0x162b65eff59b3bc39a2ddc923c77da7a17dfe79b7557b8383367922fdd8aa5e6",
"0x297d9796101df9152043297c780dd5137e6bb2d9a25a8fa92187b5de2399affc",
"0x292db1438ce4bced35048fa12b049bfa359709bca7dc314c937f0514679f0d24",
"0x19c2715e87c332adbcd530ce981d8704f0a207e822f190baab421d4d03d24bd9",
"0x139bf2e121b6694f773a58f70956cb782a37e4949e482d87dc820b034ffd0f28",
"0x281e06a2a3e9c7ad29265b2ef8c1f4814adc59e5b3b605a05c3cce8a59e321d3",
"0xbaa4181dbff92f83386e95c6cae0c8efa07f0cd6e822bd3769e4ae8c64e7d9f",
"0x2288cd08659c856e697d93558197d16c03fac590096ede68e959636d09956d9f",
"0x2af86b3b3cafb3ace42a0cba5c99dcce7b0fc35313b2edddf0401bc029373c1d",
"0x173806fe4b0512b715cb7e3cc8679d3a7a4c2b7174e8cd710574b3c142b8197d",
"0x25b66da637a8d92f088d8faecf034ab77e2b2c3f88fce5c560922f648eef960d",
"0x12f5922b95ad36bc7a81c2fe8ffc729342bd3aeb1555969590bf2248d70a3e91",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x170bcf0294ae4059d95f36684abb4fc2cd0369a67be4bb919fe185aa39467569",
"0x17d247983fbaecafd39c9dbb1fc2633ee7ccf02383978abe8bba05e7bf498144",
"0x275c74ba59d68ebd78d02ea7bfc087b17708544436bb5438b41b053072df4836",
"0xb97a196195430ef69cf23dfd0906653e5808c3593449bf58c374242ef82bdc6",
"0x25bf621be7fe04105e8a50b02ed9025840affde6bb3bbdd06df97f2fe9e02e38",
"0x296928baa83c1016ead86e5c9011b134d5d24179b1970e68dc89794b73d024d0",
"0x23e6fc3b8617b6b51f35d983c470a99546099a6361ee1626e6e44e5e3e2f7dbc",
"0x1b9b57f457f685d54e7f7f332af4233d293106f56ac093a07c209205217108b6",
"0x290f0ac712987d7956e8b4dbdd8b6706399adce9506e3373d229d45605637311",
"0x262a3b6b3986c250d387fcb734cd914f5e8bb751b571fad1ff366a479e3e6538",
"0x295b88ac50fee49245bfd9bd911734324c8d00abea718917a4dc6c21b3e507de",
"0x2e7a6894330ce6d6478206619aff889fb1bbdcec80e6f09de69398f344a4f6e1",
"0xc3bf1bb2ee94489afed3633b8ec12dbaa4b6a2003eac80e7f1668ff340bbefc",
"0x2d61629d203317ea4449e200880be2ed8421aa6f2de73aaa56810fc304eeaae5",
"0x1d94aec8d967eabceea3de4acbd2c3b19fee00212d2dece58d5ae53bfe6037b6",
"0x2f76d72fd59722c377e315583f91b326ea792968fbe6bf73582aaf7af697d3dc",
"0xd243da739e905f8b000912519379de3a3bad6de3c3aaf91cfd78f9735b0c1bd",
"0xacfdf5f69c09506cb85199eacdba0b9b3c5a0fa1a60cf283877ff7efaf3bcf7",
"0x44de47687196189473b125ea91ec1ceb1481f8f49fcd47becef1b01f4c9fe09",
"0x27e155dea5a1134466a8e2ba58e2b03cad8c38c20716a7d3e78c483b019e79b0",
"0x2860ac51f3e70148561d5c109abdb096225aaf9b7bbc17bd7aa31ad26e243e75",
"0x1a33e054ae45916951f73826b9badc032ed3d0f3c21acc7dd18d46f268cd2a86",
"0x237acb3608d9158738b6b37b6f6b287531d9683bbe16b463c946b752c089ab8",
"0x9328966036d95ecd345f77dc984391d09732acf567d010b855e0422365c6209",
"0x6a41ffd9721ef018d7e9e2d67b8d9820d6a80be401e1617e07b29b3c5f8e53a",
"0x1bac3b3b9cd40ec41b542b47ff0dbda03997f88a37aa23de69d0d5113e5b448e",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x17dedb52641d9f9e688a673980bf47c462346d1d6731db6bbf0c27ccb2565173",
"0xd947949f35e75c29a986ed662cf1e1d85c2e3f3a9489da6d7a6a6573bf3bdff",
"0x2bdb20a8327ea3f509eea1f81865ac34f7e7c5dc43d516294a29c208cd0bac7e",
"0x2fecb170873731d070ccec6d88733be3275e5be22a47cd294ad7247cd75247f6",
"0x1183c981f815c35119fe4558a0aea9f533f9d7980195d96d75a80cb1fed40c02",
"0x5fa320ab5dae365f8a114d10921a5fa13f79f44f18b57021a483eedc2c5bba8",
"0x2b951512add2c708a010d1ca59bed166f3726cae5cb1525dd379156d810e6c2c",
"0x11f646514881127c9f1067238c06a7ca39b9c1a0234eb1b8658c2bc70404578f",
"0x72413e94aca278eeebaca63c7941b548147387d21578f97e58ec27198fd4e58",
"0x2aace8cefc1be4d4175001aebebe91fc87a46a280be0a90886383ff2d561d7b7",
"0x69e64230343d9ac3c6130b300cfa24cec6086c85a1aa1c8edd073a7d33adb2",
"0x1ce84829e4e67cd9fd3bcc8d1169a15c731e06ba76c77ad60e84b045d5d731aa",
"0x23b52a113ac4ea90a8330c189a63fe9520f2d73db94406abea72150ea2b7ea0e",
"0x160218f2b7e2d22653b3ca12190f5538563aeb27ad8ac8f2f71943bbdb0c5928",
"0x84c1a87e7fed6aa9c80f455dd132e06f897f43b6bc12f3f5ff56a4297eaa153",
"0xcecba653fff37ab5fb266ae654c23b2cab83b0f7ba92c706a078b4de3221adc",
"0x2ef80d5e15aba6b2652fef7e0419167f804f2cf713200eecf30682cd138781d1",
"0x14bd930a77fef4cdf7d47bcb46ee6fa596c43e9dd40ba87a488c613d5968cb58",
"0x1ced050594cb02e43a97cf4126a5dead21217e9b5dec28ffd803a381ada6dbc0",
"0x2efdbbe781cc22b39fdc48af3424a354c48ceb17113136ec794a9b3319fc9429",
"0x2070e4e04671601ccd0842cb7a374ff2b93838af86ae464f82ceae2f1539c1d8",
"0x123741e7f63e77fa3e2d8abd9f222b23dbba1c14e8af53385cad56594f065e1e",
"0x1b75035c35b201efc55a1d47aada8976f5fb0dc1da22482a6b61d33d555eceb6",
"0x25d76dabc919ef40ebe597d4bae43fdbd2197e9b0f7b7dda83a1360295e9fcf6",
"0x666b59c9ad666ed3fc9d1e9af97fcf7ab94ba3387573d8d31f03084f9e5c976",
"0x654f99795543eefc6e1b1e646108896ea5161c9c9a5e174f2e1cb9093809b4c",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x2a4984518cf4d03a9b3598bdc254484a1805160612b943ff7b509637f12a70cc",
"0x36731a2bdca86fe011dd7bde4043f89ca492084165aefa6ad9f74717ed54536",
"0xf5fc4d1e67992e65abcde194f07cb07b72800a4f4a26e5020e96c5d4ae3a952",
"0x20d02c9669942a2fda0de7a67b8c5cfca08b2e914f65652a71044ac9a09190be",
"0x20b3c785c2072c1016dc316a7933ad541fffa7df2d289b32799e106dc4f9c1b4",
"0x1007df7ccc98951aae782b87985756784a1444531492615315080e2c80a33131",
"0x223a10997957b12816110049ac7b56d550cd7a5c0b47bebc1f8b35167189b2da",
"0x358632186da4fff1765d4d688ccf425c333995bd7438240be0cce1428717270",
"0x216b1f88bf14a781c99ad7a394781182d40162fddaa8391917aca465382be039",
"0x108441368a058a30c565ac01d4145056d5a5614892879844c07a1c0289b2c928",
"0x3df1a412eb02d17bcc82088f46cb5f77ec6279ff7161856c52480d00554a366",
"0x2cf2d9f080d1219e2dd3d7cda1442b178464a583260e6d9632e12812b08c38b",
"0xff8f5f8d239c9afc6c9d041ff0805ee22c3ef3cf5248fa2ab198a303597d82f",
"0x22baee6a9025f961d95afb122fe50ce73d0acd9a913f2fc8d07a050f4de65dd2",
"0x1131e942fc36296247e9d9013e71cc89498a7090a683bf08bdd23e267340fe1e",
"0xac6a1c394f929725acb0a1b5e11ad9e28aa1c79da25624596451b04645d8a76",
"0x3cc80ba68d89cdcc935b0d872d775b3b8f2a0cd50df89edbc3a6269290d6950",
"0x1db513c2f29ae454a99bf928ffc2d93fbc363d0bb6cd0bcd93106d1bfe5f789a",
"0xd05dae2a4b1ec3585f98d84bee7d10717da3b17a71281672e3451916260a301",
"0x2adcd4c6f191ccdbcd5a98bdc6050ba95009e2039de7f0fd9bbeecf0c4f1ecef",
"0x4d0d5708e1d87ca69eb4d44350313730d9d8403801606def36f035183ae03e3",
"0x11184dfa1ada7118e79f8890036facdd47001b7b63b74c3d2983fceecf3ecae5",
"0xd32f8b975e939f7efa097c2a3d4cee8340deae3012758e3b3a4ee0a2fd193b4",
"0x1a24e9162049895bdba49f57cee0396e4734bcab60d8ec4305a5b685b3ca66ed",
"0x19873998ebfde4a585f34a40a6e1fa702b7fbd29b09aa141c5a878e448e48e2a",
"0x2d055b284ae3e229cbe0d4901ce6b687eef40d815da38cde743f3851c774fbc5",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x301d2bd94a2a85a3c802d0467c1cfb28e2aee547d2f7d51c2af108a549462a23",
"0x19ef6ff9413f7a05af63f528a7f80dac32bb3fe601e02ca15feb99f91a844d0c",
"0xf1cb5dd8ea58b523d3e9d9de030ea9db932b770ed97d2755da22a1512696ebb",
"0x151ec2edecad41d2a4a74e8b09748ac3d11acff9c8a825e0f0c539376313fc8e",
"0xbf605154c6e6cfca764590093b09ecec2e38a0426d4f8f0f6f9ce771d4ccfcd",
"0x10d1c2b4f3622195ccd9bc64ab73145907e7358d92beb85826770d174810cf56",
"0x79c01911499171a82059606f1a0e1683eb2f076a4a72314e51924b61259fb79",
"0x1886095782a7c6abf9faf6549080c2a72f8ececc22bf58073df90be6920473dc",
"0x261c4081f13edba795488c906dfa2b59917affb44cedf1727cb27da0b0b2c20a",
"0x2cfdc7ffc3609e9d82b3bd1f2f1d42e15d1e0b7eb24719123e0b67d060800dca",
"0x3c9ce71c00e243a950dff0d9e0a5d3c42f823983f6c1d3d50e0de1822993d84",
"0x13714ab10fbbc54e15fa5ff0d6bca9846fc940a9c6bdd87b044868600f89bbee",
"0x134d4838b8c77e7270460739fb444e60580e951d914a5a20493a2b03d294890a",
"0x1e6f53eed7f86f7291436624847ef6451457756a213c168c3bd7a5945a4f2873",
"0x8c4e9815652721c5293235dec1eae97fb8f93ac48d86c37ad6adfa77055665c",
"0x18d007112ac9205d16ff209b80cf0b5260387ce770d4e6978edee9e0003fabec",
"0x5140e8f5d27d7248a3e50e84c6bf700fa31c1a1a7ac144390f4bcff5ad61243",
"0x19f153d66e44c662af026dbe5be9be834a10a3dfeae59729555d709d61e38f7c",
"0x11e0299ac3f3ed3ee71377dce3b85768cd2a6b65e9d3bea24743d150e19f943c",
"0x190ab7e9ed8c741d54fc558afc96b35d9319d317ff6d6332ae4ca77a8a3a7911",
"0x5bf8fc4ad0126d42c22ed2c659b66f053ca3604f0968520ce5c7ef06c5a8793",
"0x28c05200db6d51df10d8a4986cb65c078001f295343de608d68fae45cabdc5f0",
"0x1d64d0d4143f869056ecb1026a361b48dd5162f38beefad1a6d139843d3dac9a",
"0x56869389330224064b29f958f37fe90fc2bb4dc2454425b0d362b892be0fb73",
"0x21124fa7acd6d96ec308ffca46465e5da69c44814c6e40e705b7c6b4d7eaa333",
"0x210de4f22732824523dd4fd0587eebdd78cc339e8dc44fbdc2a317244132f7",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0xc231a81780a5f9babc1f4137106d456a5cdf0a356e0c3b79b330982dde6c5db",
"0xd2286ef77f15b562ba8316151a92458c52ab6979d36481abb6ee9420befc144",
"0x14cd6adb239444df9b510c5e1c2a378f3ddfbc75b61371b688931bf3c6ec2563",
"0x1f94577cc0cb87a180811923adfca9a8cc77b8ef41c0efef36e1b319679f0f10",
"0x2bf8ecc53796cac7b1b4b8e8cbfe8f92c31f726dba638783eb063b675fa96064",
"0x2443dff5793f12826c9195fc95caf2162cb739d837c4e15d426e65eb20c44884",
"0x28807445f05857e5db18c6ba6c0f3d67cfd08d7ee0a1b5a3ec259c11e57f6581",
"0x2d7181a0eb717fc3d9554bb1996ee527cc29fa9dd3ddebabf346725d84389a45",
"0x1d467a0dad4ca6c95707e95f8780ca40fcc983a7e1171b111a8874b122574488",
"0x2cd6049a0ad06e9a9a9eef6333566fe7558db0007e6e92d71250ce582189453",
"0x2ec06f373cb79c1143d0ead6ea94a531574b642a2a88ed6cb21bbafbe2932c57",
"0xdadde1785a6e8705856c47207ee42045dd0360c3cb332e866dd032ef9bad925",
"0x26ef0863b7b4eb4223c88b5864b903526d84ff81c099ea942fa99ffa0e376678",
"0x26f1a2490186a61de95667c8672dffbee6bc1451ac11fe2e9d159d308f87caf9",
"0x913a0a4317ae24b6cbef39c87f10a3f47b4fa74b6e7f9286a6991027af81d6c",
"0x101d691311e602f1bf45e2bad29994880376f57804517525eb169240d21ef3b9",
"0x1c55eab0a94644305995dd5b9a4f2724390d88fd3e982be43b01a627accf5b16",
"0x1f788dca1edff5172b4e948868bc18e7c0ef3602033d72ef3227f8776bcd40b8",
"0xc5dc41e36fe501aacb4d8f8d33b12da167a12fcdc10626a1cdfc90cc25cd819",
"0x18a6e567865d428f2dbbb6e9bf298ab8958c5d1737618e5f1c5679c76787bac7",
"0xcdfb3e5975fb90caee98497768f37dd465586e1669d6bfc512b32a3895c62f6",
"0x30edc8429fa6230b5bf9553ce19f0a78055f2d68dec10957d0d64e8a3bdb3e",
"0x5ff6dbf8c00e9f32a61f908e6fa7518e49ce0bc92dab519524887ad9bcb3a8f",
"0x187c0035a20f42bb04a4d3f172d8dd71761fbe16405a0c73658a18e177012b32",
"0x267e0e37151a8018949bd766e65170ad7944b54b191df4904b67d181a3b0341d",
"0xde2f39c45dc6b47bad47d29d8ce587e60c432bf03f9924e3d70152bab232ead",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x284591632913e57214bc02159bb3e8e81c06bed2fe6f302a3d238f14152cb3e4",
"0x2f6110333487576bb66188bb38170601a18b160a41c655f55b366e138ddc3c88",
"0x10e8a25fd4ff737b1fd8eaa1ca0fdc107a1d9e48ffbcbd86fe2b388dd10ac80c",
"0x934ae9d36b935e477c1d92c9ea1b80bcd2d81f3fe0e37a4df894293f7ee2e0c",
"0x1d48097697bd76fe5b0fe21d8c182a9a032700c0aa94fa147765147a66c7a732",
"0x26a007b8e7c5a0f095c47c27e9a68c6be8b08766863ba33854b2dfcb6c708f74",
"0x1db9c979d26dc221830cfd85bb16b9bf6e6ed9032c917ed64046d24b19feca2d",
"0xeb6abf55ab892abe5ed8ad7223d04460eb7cc6591216c260250ec0ea22852f4",
"0xaf52963d2d8ca1d85fe433b3e20e360f488dc7ae40a074925f612959482fd7c",
"0x21a08ad9c5da7fbfa096b1773acb293efdb29b76a2b0d54f107110e7f7e7ae8c",
"0x6cbf675121397f0657bae080980b2b22566613e0501f74eff8f71826a5aef4b",
"0x31a23d2ad653f7306b849eff0b4373a7a2eae9279e8f048279d90241561b192",
"0x2f086707d317470467a8e0ae03ba725ef79ed1ef014395b67ad4da788237769c",
"0x24360122ee8c5a9ceb21696d69d5456a3166419377b098388a2f19966ce62005",
"0x17c0f7d233d0fbcc5c520f1ce3a5d4b095bd11fe8f39f090ab7e9d24ebca8195",
"0x3f293140b7d07e158f63f94792f943632ced772d71cdbd93e171a98a2bdb1a9",
"0x280d4d680de44f4a35a8d0baa4a1feb3701fec97a152e977b5352563c797f68b",
"0x1633dd4196cf695bfb9e5138ccbb381b0bab619ad1b728802c0e9b35770503e5",
"0x549cb9c6b3ab14ade93f695dc31df816e13e6cff79023f91c5ead9311fa37e0",
"0x12dcea4ce3927ca8c308751550a77c5ce4e095e0e9a417108c18102e4b0aba31",
"0x78331ac4c2c6702655cbabe212124d4f1a1f5005a75faf2c6fee507b9996541",
"0x5674b32b037c937ab00bb7ef41befd1c0004014b66acc26b117bd0b462870b5",
"0x165c541ff3c38f4a9af878034316bc4c08ec15fcccc77657e7aea32c982e26d9",
"0x16477e2f6956b2a232be8389586b0569feefab7d635f173ebfcaaa06040441db",
"0x1698424bc862b0a96fe6843dd5c7626ae0182d50f8323c338917bd9e8c8a8744",
"0x1dfbc6764488855933fe75e10ddd60b09d67d98c622f36cb565931d97e922988",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x2f722fe53b252f8256f3c9d613fcb12205dc97de726ac8f23c6d4ee0a9575add",
"0x4ce7f85039445253ecbcbf393061759062e52a54060331db27947bb0e04b101",
"0x2ad1ccb6918b4dbb68bbe0389521d418f1930df1cffc91de8e8ee648a6a4e62f",
"0x119ab9bbd433ff01c7e43079d288d053e7e0c4a76facdecde1a77d544906b4ed",
"0x17d263f75f3d3f0d472bce50e641017a291f8466e6c03a768c138deb1b50f3f4",
"0x248be6746b30e18cc13259078ec848411532ad11d4506ac6ccde131495c9fc42",
"0xb02fe4295790760e1fa72811dd63502ea36bed8eb8652e6b35f4faf9b554312",
"0x148b519dc0b5daa50f0073094e87db4449c8a068ccd109872696973f9eb806c0",
"0x1bb5e7ef82c1a2a02827a2f16a34cbe60209f8475d3bfc0b6652e61f4113e6da",
"0xfb76804e630b9b522d9af08f1b53880f5cdc691bb22c27151f541fc8e1bf2fb",
"0x25f15fdbcc16e5c1ab1066d294bc774db9166ec45d4dcdadc4597ede1da532c8",
"0x18cf6ec7ac6dd943c57b9472b58af18929a94dd92a340b3e43c074f62b7cffb9",
"0x28993fba9683f72a8727701674e3e657fdccac4649f82879df4295e858857317",
"0x1fdd6bf585ede657728a4e97eadf195c08f8e6144b28bd92ef6cb706e4f6b05e",
"0x1810b0fdc26d123bac819ba150ffb6ac9455ada7dec6deabf178f0dfffab05d7",
"0x17935bc39ce241e78bbd64ffc72166b8d8054be62c494f3b89abf88810808fcd",
"0x23b66feb87a9b7a105923883b0ea0c73f795e445e3cb6f68c9217cc0ffea43ef",
"0x9f6acc9470a3ca1b06e023cb2f6d68a46ca6c434c521b2d0a799cc3f7b29a9d",
"0x7059db933a49a59d77c7dd8226ea452868ab183d14aa09ba3f62011a08ca31a",
"0x110283c2d84ef498d54d8cc89f3ccd48990382ae73b8993a3644ab9961b71141",
"0x2e0861925cc9b76c5b0046d8178cb36a13b26aa4ce4e5f7d3be453378928627d",
"0x186d7f00229ad745a0123ad95fae9d1136d4dff9fb693f954ad9fca972ce9d89",
"0x22c7a666156ed3e7813e98f60d15e23a461d2e9cf389a581dbf8be0bf5afd011",
"0x1cdeb50c6bcc3f9cd2f59588fd72fb929034685f88506e891f41dd572c67c360",
"0x2978a2a151c95155411e8acb3c12cdbcf929d675fb978e636c93da663800c33b",
"0x167e72f7db7e8e21f7daf4f02fa830884851d562c3b51606b52ad3e80d4757bf",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x1957be621bd6207736b0374c7077ef66cdcfa4bf575a16d2724ec94e2d764876",
"0x3b264ea2c2a171ce3bc6672fa95706ae37155fed16218080f33e469bc9b6e54",
"0x1cac742468595a01d58239fa27bfd73e5e4c811d31bf2307e3ad7d9f7a440c82",
"0x1308e2503e1623793102a3c6ef79b0041696191d4cd1a089d440e717d15675b6",
"0x135997d11a8ab3d418e1b34376d3193d0b8355902aedfdb2f29aa43278e2790d",
"0x6f8a541f16f9f3d8bb1757aaec5ed1fdfbe7990e7b046fe6deb8c6af212ff4a",
"0x9a4037450ac7d74675a6abf0169890a2161dac550cbdbb257ca22f4026ee4e1",
"0x1bb22813c573e8209b7100e77ef81cedf79e7ce616b229a7540505854c2612fa",
"0xd5235d7acd8bad965dbeeaaac39d599543b2766dad81dfa738988f8c4fecacc",
"0x24522e82642d0c00deb6406ab28a1867dfa50cd6d0ecaa0e18b6e5824005abaf",
"0x51808f718e4a3898d1266b473a2e0fa470b9ab592f9e1efdfb177a8f1b1a863",
"0x2ebf139bad53a7408b452fdfaf8847141346688e05da4e0e5b478c178bc36c17",
"0x18f177bfdabe5eccaa6dc0fc28f75e20dbd9e470ad50337724be79e46f4b4298",
"0x23f5e3e09744ca3e73ff2660e40ac6b8152e1c0a93e507f311090e6574458779",
"0x23fc5867bd5b4d52686ae8ebe3c1454e266bc576aec1f682bf18f783853d8527",
"0xde2e3ab296be75fe02af329d61d80c5c4d29886528315b4698223699ec70de3",
"0x2f4c1d3cf6793b0f8a707de4909c1df3f888a37f5f8e382065b500936c33d207",
"0x26bfb7031fd16e59d70dc1720d4d04301d97e07a0023e58765b2b6b735b02443",
"0x8f0bea4f928caae9d19e71f19dd85c7d700b1b05b3170548784677bcc4dce73",
"0x206dd86edb0388abd591546b376a7ae6dc433041b7d248ea75d908c4b3740afc",
"0xbd896df632e39aad4e575444b0bf49de0e10183b09137b8f79f704cf2feebe6",
"0x2188116488e4192be2569647ea81c6caa45d08b896ac14e497ded7a6b80d9852",
"0xe95540fcc2df2d1f630191f9e5f48b7e4695fdd5f4e9a7c930f16598b3e9e53",
"0x29d25da59f9b238929d0eb4c669216770673bba9a48a1160793ec66e75259040",
"0x998c56e22c0fe57c936f19774ec4368ff33aca06589807db3a1e8138395b4f9",
"0x1f460a24b80724cb88af9fd2b73b512e6d5fde9ad6d0b73801db0cae1d0c0357",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0xdc5b4d3482661089384d18500ed0afdb1a635c006ec67b3137ef97cb03d27d0",
"0x22c7492f2fa7b9f297c2f0365945ce0e262793331d3cda1cb73d083fc8a0e21d",
"0x266af95c1174ed0a5781bad21a2397578ec4d16642d729c4daca8f14f6c86a91",
"0x14c46169d20fa3e4a67fd8da381ac224d61cef48dd27c1971273519b6f9b703f",
"0x1269bce1327ee515c7de22ced7aa99a4df202cf661ea0f2c520ce2a721a640f2",
"0x172bcf2621fe4e5c2919490728ee5d19f6d1b3db328addcb2f70a792490e9bc0",
"0xf26dd040a3d43e4788c20be85b4bf774763729fce73037ae53a5f490ab99c49",
"0x2fe304bb2aad7c3a3fe30b77087600d1da7ca2d9053f7ed264c1865cc8231907",
"0x2e365d1b4f6d9946faf2ba71fade06bbbf2f8475eec5a56fc4843765fb4a49fc",
"0x25a82f1231627dd4fa32b82d274658a1b64e8ebad06ee903aab649e32ffadbcf",
"0x2cb9324b95c056a7dac8511562fdb8049c4f08e6fbd3ee222bab96ecacb89c9a",
"0x1e3c03ec4cccb96e93e7b8fa96f6915a0ea2f392b4f5ebac5b2f251013fcd3a7",
"0x21011730617a2b7c760f7758dfe37725189c39224023ff0d819dbebb1a81c07",
"0x28b05c0a2e98dbe8f090863730a24b597d97ec3adb4a00f3f1a176d02f495138",
"0x27355701c30ec033287bc103652855c341a8e80aed9b0bf7a1633b3f0ab11a43",
"0xfad7793054577536c56651b9585ad1ecc2af28c4065c6fae4ff47df4289d5f0",
"0x21bb038dbba587b85cf0fbfcd5e69de9f329f6646bdd40e8e27a107161f624b3",
"0x21b1f094f3e78cbf60067b3b785e3b3f24c4161c91c452318ee990e07e225524",
"0x52d8b24d73c86adbc8311390a5b2c9b6300671f92717203ad7c463bbe0789df",
"0xd7039ff767a3d8bb07fb62d6b2ebe8c543277e3da1531da94cc861d4574f648",
"0x1b916f0851986c4edc2b927aa8bf9d92178ebe75b77552ce47a63ef70409bc03",
"0x33cab9f4d3c360924e9227254f4f9bd52fa7712fb518e534f9fe69d04d994e",
"0xe26a5327b3a023b0d1a432d4be5f7f0b09f8c4143ab881b985f2cf7e458fde4",
"0x2ca57bd0c629753607a4c9e37b783668abbec7e8e306f75b88ba97772d371595",
"0xb7533836731172ac9dbb56e54588a5eb800fd80d6754af74fdf13460c340ef3",
"0x28c3653d647bd221d2b3c79f3da382a937cd1be9a33232748f04f8e1c880bdad",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x7fc230b6a36abb1c7f4b7504fa51ab01aa880f7b3c0a60eee1637ff68889dbe",
"0xbbfe36421ba52a2fc87f6d7976aec0165e41aee0f71cbfc87f41b6b965ca6e6",
"0xfd2424b028d4d8ac1a8c66e6306af2c3df213a3a7979e367c2957eb631f17af",
"0x1b674725a1f99e1dfeeb07dffa4d961ec24a31d433d83f858cf3ffdfd2fabaeb",
"0x12c9cc35e0ea2482935ddba214f21a8c08df3dc9d6b29f75619f9ffe0d055f10",
"0x1ad3b10f3f584f4811c804d95b3709ded70c5a7d3bbbf6f91339943d85bbe21c",
"0x2abfcda5b9f799b2d0af0861c17c33253781df51eb186a65eac958b34e8c35a5",
"0xd9cf52fd20c189982504d02aa80500a5c732434dfc9e7cacaf08ddc0d0c76dd",
"0xd87620da15c58c50af67bf3533b399edf83c1e7dbc0bd9773d40d5ea287aba4",
"0x289e55051ec741e27389dce0eca1cfc0fa57be3381c12943fdfc6aa392b60af1",
"0x285ec1799c195e638e16e4cc7fe5bb7ce06b1c82105cc4d61385dc2d2ecbb979",
"0x284ce6e7141920ad4159f9c97ee921a24cd188718f7000f1ccb091067d4ddeed",
"0x2403b3f3f99fd0daa8ad77cb3f8d515055cf80d1d5e8d32e4e4627e95489f57e",
"0x2ef65bcc67502169c5c5d324e09297b7253302c82a337f00033c814aa33d9cee",
"0x2b1ced8656b92329d623a85ee61e310495566ce4effcfefb6e6606ecfcdbff4e",
"0x2cf6166a9183e66bd94be5aae54afff0f02cc6eb68d7456cdfdd86e0e7f0719d",
"0x60d392a31de88d78b696e7238af3ca3eaa5e412437c66e59d7049b69d2507c0",
"0xc2b62bd89e35735926f6474264c899eb2b5956738a478b6e76d792bf420cd16",
"0xe070af64e603d24608847ce8677d0291e08d5c10ec31f23d898d716f1c39d1a",
"0x2de645e3763155f48ca18d06dd21370f314e26382c6c9e883d84e387bd892893",
"0x17deebc35147ac645572140ca181a81785e74dfce063b37e326ce6e79c66a6da",
"0xb035d43bfeca4b7a464054eaa0f892cb035db06a3150ad9ce1ce45f6ad0b811",
"0x100c78328ef5a499443541c1e27f78d0e77f65f93738e393bdcf4b098681be52",
"0x180cd1e5a1262087a60bf156e8ed528070936923605d5fb078f4f6f956a55aef",
"0x1409c9afb266f52723089bcc3b495bb15c9f10cb55b32b73dead030f87e6e24a",
"0x100ee62d3a9d66d3b6360f540f954493d7af73e6cd95a10ddbcdd79d6739fd38",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0xf8533b51bd9ed54a1703fa8399239d3a7fe77b0a55210917343e09342a0fd81",
"0xa38a8515b1393a083782c40f7261e921d87155c081b7039db8f409beb2dc8f4",
"0x1dbe26b8ab56c6de11196b0ffe7355348b99083a94d2f2966d227fde43821f7",
"0x2fae58b811204fbf3232b298e274df120020289d06ba343bc9532fae7ccfa76a",
"0x2c33c971128abcaffde44567163b071c1c845d5e04e4b3e4f3256c690cc61efd",
"0x1d6879298603d7ce919895eaaf857157bfaf20b46ebad48c36e85927e004967d",
"0x154e2b495b2894e24c7b64fb83c0473186b256f83de4e7b5f82abc3e97b9d176",
"0x1108e6590ee097d6177f9b0e8f6df631e91ca6aad1744fdfc36a5a7cf73689c2",
"0x30e4cc0defe07e0c0ffc72ec35cfa5f902e564359dc27e6f500c921db4f22c2",
"0x1c4f81779c8633490f3e3e276603162c4a5e42fe6db58a53316f805c5c822922",
"0x2954c55e5111eb033ad80c867317b4aaba9d750b9f9bedbfc48abe8430ba3c20",
"0xd519d7237511791c479d178f6500e54532625fef17aef20782d15be156830b4",
"0xb18f5604bef3748e0e8ecb40e7f636d2452a42ed19299820a5d41241e3e27ac",
"0x2719c5dffb3c5e099e2ebe58e16855ef505dd10daf7cc2f213113ff647614b42",
"0x16e635dbb0038d05bd950a92b785afacb3fd0e6b86cce3d242132d4f1c1c0ce",
"0x3920a662038566aca072b265532745baf239bb3e60326891222047605015b23",
"0x2c4f137391f3b5e4e6024a97f1c9cbdedb1297d123add7adf4d6461ae5a875bf",
"0x2264a7d603db95df9f07582fb03dce9340e2de326cea846bba043b0946f812d9",
"0x2f1f379f002c49094dd938433a986b519a123c4d9d0189d66533665d0745067c",
"0xd29276a5ac511cfc3a3fe7b9244d4b7010cf0bdfa90d7df0d6c4000b9585d45",
"0xac3ab6802fcf30b3b6d2b1a69e54b3699179b4f30b464e0b71b6b4b6b1124bf",
"0x2dc0c34175e61183601ba4dcf9ffb457defd36abc2e24babedbb0a9450155fdd",
"0x6fd088a7bca20b5570d68665ae17172c13bb3698f3640cce22ab74ead7c5663",
"0x1de87003640c024ab5d55c378a74e14e1adea072f8d22ee932b49150dfd1126a",
"0x2e01b475d78e669a868129b1f173a77a0b28d82a89b4ebbfa274a0a41eff3e06",
"0x1ba9c82ee2f9ce1b70390faa1d3c40585d751775bc8596e32acf34bcfd58f814",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x2a61fb95295b3b5c0949c486673d1ce6ed7328f42c9dd1c82e27fa3dbb0e3bf8",
"0x156befb6eeb13f52ba65eb7390b7c812ba6aabc5d1acfc189b95f71fb47db283",
"0x13422f783a978ed5ce35e1540d99c3cbc67803de00a3a4fdbd37f7c120d7aac3",
"0x1995d00ce7c99415c2727e89618e705a87fd4456149fbd899c40f43320d5ec8b",
"0x24ebb318e440a45956fae1a46a3303ffabbcad5acb8cf98b6ee6805672ea84b3",
"0x2c6c1b35e7979c2e34b071a03101db8cf753b5c26193f206e2ad214ed47387cc",
"0x2fb55d17e5a50b80b168fcdd0d618f2da007510bdbc429c5ed7fc9e9a1ee5c0d",
"0x117c39033ac0e1f5f8b57844220b7260e3085bb99925eaf937d4a43a06bcd2bf",
"0x154a4ff3064027d0d4aaba2fccbb05fc4b074ad7bc4443132ed23c5f03d38ef1",
"0x16ea33e7327d3fab4e15cf66ccc4e99104aa40a4ae0eefbd478517475c274d62",
"0x7af162f6a41d5623cd47181367c6f1f5ee0be7b9e0b53fb8097789ea9a0cdfb",
"0x1a732e3765405223cdb6eb28abd2d425dc7d1cdbe575e08568e1028d8ddbc398",
"0x1208ce1a3a017db5d1024920a6a0f94fba55f5b88620ace2e180c3d517163641",
"0xbf9ac6ccc83f71dfb86d40b19b7609b555fbc1ad465b09f9b47b21cb230e174",
"0x1ae8cbc6e5e4b91ea924aa8045967abf4d22d687639e7f64df40e1baec14a3d0",
"0x2a1be1e4d0fddc88eadca5e835f30bf7ee39b0aadd995b48a7ba601b87d16380",
"0x1dcf4c29bab85ce96ae81703ff26262a09c8895f886a71c01413d440a2f783fc",
"0x2bde5bc567bc599e209587d01a8e5b83c9f27fd4988c978294ed9b680b03047d",
"0xd7f63416aaa46e1a5ab07653c98721b3848f7f40dda0cbe24f5be957249bfd6",
"0x201c0d5ba18737cce0bcf6069d82ac70b7c6da968029939fd793e7dfc11997c1",
"0xfd4dfde771c21adf5ff971e0bd0301b0f9c0079a5ccbebf6cc05a578218cf9f",
"0x6e26ebfae0d7f5596bc1719d578b1645bdccb473c802820e8d1e73ba95fdae5",
"0x153a90c4a4df503ade4670a019c1c539fa9abb1d7bd85c5627e2a236816e9e94",
"0x268ddb0d3607d6d88ab21623db322f70881c865d1baa284eef7b6f504649f5ca",
"0x10ad938c2c97c8785232011e8e9956ca87ab31b6e9947a3f5a9cb2dfa526c178",
"0x100a9d42b7617d60e4b3aea5150d059bbe751456c4249f0d807247629e61f0c4",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x13bc85e2ad431df8a6705d1990ac925ccc3df1282405746025b8a5b9dea661fd",
"0xcf2d89cb39c2d88605c0a34e07eb31436a77a2909604c6917c1c8ef5b490d8e",
"0x2612eaba8d6b833432665b1334d612cd9bc430a3bfe2ebb3e34b7a9d878f4054",
"0x17f2915802e376c5827e719a6890d90fb067762c96bb3bb86bb34f2f14211011",
"0x1ec7edddf6e2543f5e457ad0adfe66ff55ec07302a6051d90797b65380b8f07e",
"0x1d4406aa079fb976bf4d8a3bfac81347bcea2cc9b8ca732d3064f9413f202082",
"0x29b71a20d311389c672d8a857b34b04e5b4c95624ca72067879cd312d8b17cb0",
"0x6df0c4c7d3b8552c2298f518a19665ec355cdedba299b20eb193c67c0e72d43",
"0x26779e10800437760c7bc212ceaa5d63d53a234368296d667f1d19784f47cda8",
"0xed1c5edb7053068b07ee60910ed3d1c1e41684b276a0ade50c654de10a44cc",
"0x24b4046af28ee5013cb1662a81ae6b60c9431724b3b16202a5d9d5ecdb0dd322",
"0x2710607671674451e9da2932f51616f1478e7440017bcbe5f1df1031baa582fe",
"0xba845a38009864ca2478e043645bb6d035ab0ae20053ae65c99ae914819878f",
"0x15c5c54f3efc26d2836a2ce81c045bcb20e137945f8a64ec93b50b05fcea1624",
"0x2f416e4189aeae931290aa08d84764da18dce217ec716ec1ad530d21d035c1a6",
"0xc92385c63d6c451389a83dd7a46784f98852b6ded3100b65a8b7c5b96d89305",
"0x222e8105aa188083af23785e36e1eb3b483fec353b832f97e2d66d79dd0e2926",
"0xe98d7f5e45ac6610fd164ed687041f2952e6dd3c9fd12ebc8395a6893ae9fd",
"0x11591f35ad1543a7a8398cc80d8d46980fb2d5a91848942956072a3b58c3fb7c",
"0xfda43471cb17ed2c9e4ad1bcdaa962da09fb99a5bf74024d3223784df4e043d",
"0xa12e81049a88849ad74b40f381be30c2c2e9ec8d8c50bacec5d1868f498285a",
"0x7c6d194a73f848f7d716d6f30acb48ac7baec5affc571b6b8b6b84996168339",
"0x194f847f3c7d048a1937426a78e0784cde6075dd3ecaad21a4d8b0c29e6dcc58",
"0x478225c0df10ae1047eaa6bb766c7cba55d1b2f4ad2c92b579287d4afabd622",
"0x7098d85221394b7dd9d5e01bb8d8fa324f52cc50a01d04959f7cf47a9d426ba",
"0x152237727876536fb0492b77e2ca5083d39421c48dc34e5079a33fa3d2a86379",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x1420a14de2cbafff2579616faf1bfa74f7c6542b053a499ab551a3408f0170c1",
"0xb9d1c211a3135cf248f2ce8bbd1fe9c687788d37dca581e76ef796a06abb333",
"0x2d90ad8b96b95e07f313d485195a90e8cdee4c30fd11b740617caa864d20ba4f",
"0x1841439f401d20be41e3aa8154a1ffb5b06a7cba6987fec7f41df5f92a6bc91d",
"0x2388640642c291a6a1eb98d73ea78b7d176c2b70c6d9bb637abdb842c0f4a78",
"0x26847393fc7364e97651b2b787111e2863ae61218c0a21b8ef93292d6d3f59a3",
"0xa97aa86b7cbf546c5722540fbc3257e37e701c44023e6382785a6b8f5e2aa6d",
"0x1e66c9e1d497faeee46a478ab27fbaf5f9af29f43fde16f9a6385e0d05b17930",
"0x15dd9d1744c08352420e756cc25e76537e8dcfd70c5e0dcc445f77560b730ee8",
"0x907dbd7263cf90b8cb5dfb3bf60610d4fd44beeea309945d8205cdaeadd2a2",
"0x233dce7ca21fd1e909e98dcf2b584e9ad879edeb0f395bf9a44aa7fd588ff23d",
"0x28d0f25cc88f3d33af54d011063c0a2900fb50e18d1517d52d63ce72b435a3a6",
"0x20db88c936bfe7c6e86126581cbf8bd7edddff26237df67c02777070d012ac71",
"0x27531eb0037dc5b938ef188fb167f38039f82f2cffbb8fb6511b05676af6e230",
"0x174c8436d7632117178d777c3174aaa21b1908cedef20997afd4f9de59dbaf61",
"0x610a7245fb111b8632cd43f8d356a839751a7ea383870e108f45815e7dfe527",
"0x51ec3ebb56094e6fd5fb48401dc97a7aebc08c0321260a03ce15a64401d57f7",
"0xe79a17117660b79651058aaa102bf530a98c0fc27890c0e572ecc6d6669c36e",
"0xad64295a0a164517040af0cef26fa9e39b1ea67db4ab22db5d607c4fca3de99",
"0x2861d3d53c2665d9ac962a2a78fa4fe8cb6e81e7ab229f66c432a80dde7116c7",
"0x2ffa7a7a62d5e1bd03cbebfbc5c758444ae0d0734c4a5d667a158fba11a9ac8e",
"0x2fceca53023c3cc3e8991961644decb60806c5e26bd2ee6459424033cbea06df",
"0x1b315dd83c8b16a2aaeb9119436076344d2fa321f3359d6a9ef6cc15b45aaafa",
"0x27c786865b0c424bc2e21f43f42168d668ece1b7707b62b6ea77682a60a4b1c8",
"0x2f55ac5fe9c4deeb92cd318504423f31894b80e6a340fd21ada215856fcbf5b5",
"0x8484c73576645af031da8d059f7cacd28c66906a7ae10ad91c196373601335b",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x1f1e99a24da4de93564a110744d481be210f6020ad98006f0bd4610a054bb397",
"0x1313ce9497a6e074c155fc0218d858202308ed1c1241013fdb1b23967fa23167",
"0x20dd2b7ad2c4f1f1d19f18b29a3ae436405b6866b8dfc4fbbf0877fbb3e7eb1d",
"0x1d9a3b14077a7c4d585632de9c1e0d4a68c71203492d5911cb16f3afa68bd2e1",
"0x1731badd5397325e2221f6739002faa9da0372fef8043ebf93e4627a3fad156c",
"0x23e7e3fe8c10b5580a79f4c3298c8e1862b7f5237942f23a5455d4eac9275685",
"0x2c014180a6ecc47452808fea233b82f39e3b7caf0175687777ace7544a29e37c",
"0x292a5b755731fa19173af35e46536550ab67aaf5f7302a003d0f6df204e8976b",
"0xed8c6981ca41600dba450a860b85784655bc05193481ddbe475de4f351d243a",
"0x1a19597908036c20ac63ccefefe74a7d4a34247f7471bfa743f7d1858c8fbf19",
"0x21d82813886827e8c1985bae1dd3b8377bfcaec6e7fbe0924232f059501eb278",
"0x1a3ba88e071dfb03e2af64d4efbbab382517f94566c7268650899eb6bb1971d9",
"0x1d48d408a857660c5fa36286c7fddd68d2a4831cb0cd055f950be3c3c9607347",
"0x23a912ee06a717208ac5f8e94a3ef1c0dccb7cb14a2fc32be71d8d25e65827e0",
"0x24f16318b8064d97d3543dc09c0c2895745bdfc96371bcc99b5c6d6ff6af3e13",
"0x732c0b040e6bffbae6ac8cee5748cc4b1dd79559d2b84d73347e7868ee45e36",
"0x28d961a33687f15d8e4239aaa2edaab1dcfd543bd30437afc151cba1d8b6f93f",
"0x295338d4f509a0e6ac18622299635bd3930bbfaa4dec3b885b817bad870885dc",
"0x20bfa91fd05c7fbc2fab0619637bf4fed31f95731d89c2f7040f4c893cfab9a3",
"0x40df188035ab2406a932606a391e146c51463a5129c2bc5ab3416e6455dcc03",
"0x2483ffcf685a6a42aba1af8b1c9af41b66796946957e69947f9790615422c61b",
"0x285aaafdd3180b1543fc1994846ffac22fe06908e5a6bdd3fa3d22b3644b6ea7",
"0x2dc5f343de5cf59a69c9429e96289dc1c4c8cf08fe69184b68690f33e233fdc5",
"0x6e3d7b62ce4436fedd0a240d7a777adce79716f5a22b5efeeaad0abf1e8b5f2",
"0x1482cba9741ff1dc43ea1fc5189a2a59fd5b2bc2f1959c164241662658f2507e",
"0x1348498420e5f9e977c9db960818c96b1f93cf370a2380138bbd56e0c9d0d526",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x14fe503bb439d34ea8eaa57cfa1caae71e4284521ba6240b0afba874b93ae8f7",
"0x1f9c9a83a952c1e72697d8a93b00a57bdb092d66ebde1ad8b169343f93c3f8e0",
"0x24fbb0c0f2ace05a5faf061867d2cefb35494ed9fb7e5b590db562486c88b0ac",
"0x10f738bd7905a3db9f0d6fb73b2cf3c4877dce60cea5925d5bbece78cc5516fd",
"0x2a62e245b8b68d45298987ecf40a0a3419ea8653e4da0d6a6f55b2152d85ca67",
"0x275b72887f4a3fd32bea4bbf47394106963761ef3e007f2f1e4460140896c168",
"0x1552e36d16435150e476fa6665c4f058355854cf2202d91573072ba3dfd2807f",
"0xbe9ef904aac486fbddd1b8da7d57f9ce8d1bc5fc7ba2abc179c1fa20873b597",
"0x1e81ddff4f76a1b2dce1bd10aaa16530f8636a0e563bf33a02cb9801d7f762ea",
"0x1c9d6fd38c151b16888ff3ee7dc7a8f653fead50f462a6045cc6bdaa72231de2",
"0x249f6caee2d3f22549b753cc0857a89a85dc00258402594a5ebfbd7235c85a4f",
"0xa5bae6c55380bc6c3c5cef4aadbee3d7ba2e30ace0dec7fa2c3e852bf030798",
"0x1a591bd8ba8f5c6e64b984ad9274257d38caaf25b99cab177c84c8f0ace22c47",
"0x2f14e7a4d071ec394f43f46d60b1552aa9980bb50e7c963d42f483da3211a0ee",
"0x9dffc259c60af5ff5822cf8a170477695ac5775dc1b90104503cac64914f86f",
"0x295af9152dc405a43b353775e93828dc0dd1ad4657f1f324f75e25fc67d355bc",
"0x4ed39653bd52f01b25db50f75b0f9a7868dacf3c6f2999c23bf95f58cd5333c",
"0x10e815500f22b57ba8056deff42b51f4a4130f6e6d364bc1de7117b9023c0b37",
"0x2286d75a72832bab29d58395c45ad419d3d1273062c893a70c56fe9e38750886",
"0x111df543f14f2ae7ada849b80d01be30e23fb49ae805d09afb7a1cc98057a27f",
"0x25c1d1e13619f1ad04831b2339d163ad83da3809a89efc10610d5c62bc03da3d",
"0x2fa4fe7aa2dc0ece1dd482768838b9ab913010539fd9a94c00528b037e4f8ec4",
"0x1950f2d47f38a0976e8801a03edd51f982faa74392a70a0d381194dc258770ea",
"0xe6945795a878954644fd4d36dbdfa856c6b1513c8c38dfd71e3f6f648d568cf",
"0xf15e86e69bf0d747c7eb9d100a26930e44b558de46b2e9246c4cd269f4e0707",
"0x132cccee9c47ea27484dc9d759d93d560988d9a42ac6f90be4737761e0d438f7",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x1f19d5b58c771b1022d6aea73259634d1c9e1db227bd7face0cf3d7ec6f04a89",
"0x9e99a9892ec5c92fcb2db34f0a80d01f93db6675b839e54ac081e2616efff4c",
"0x2e39982857d71f53bdfa8b2d2fd8481727267c00bf284a011e75de1090b5ea11",
"0xa4c0ebe2118c2ac564272eb8f8996dc8ffc649480a144bda57e7c33f14ad552",
"0x25451345b35213964ce431f6f9ecd15934443b435a7f175abd80d97d999fda60",
"0xbbc4376c1f85523bc7c8ae9fcd8a172f4a4f9905d09f1de0a6d48e273ee9809",
"0x2bdd1037469a47d75d5b8994731ede44306e137f4460f2ac7c178bde7bd9fc6e",
"0xf677b2a55e756de8223dca8cbe59954989d27ca87f57b8b8e59078ee30b2748",
"0x2fb0b17b679ed6fa3e528b009e444bb34b173fe18925971a3b6777863a936411",
"0x8e4988e8ab1a27420dc600aa4fd13ea9d701291e005defdaa33e0df72d180b4",
"0x2aa3f6fb81b544fa5d338c2a7299d28d499bf86f77109ef9cd91f3156595f0f2",
"0x202ce667a6cefe69a1d12ec6f0b7674cae7fb0e02dde42e47fcfeb6afc011bd",
"0x13fc451c175cd7d0ac88a8b7013cd460af9f68982753e01eb0b9ccccc2c7b57a",
"0x1b86a2f0867f4a97d6f2ee4701f23d7e05c7700ae53c0d57284c69e170e90858",
"0x1fbf812f6d014d7c0134b54d9d6aff50f0dd76d7889926aaf59e86e69c720821",
"0x11ae5f1bc0b2f10956e35b2a125ded0ea4b312aa52707bd5e98452f6ed0d9d2b",
"0xebfd2844a28d08df2ccbddc8d52e51bf9714e9279ae25b7f7015d37769c76a3",
"0x1c9e2830d53d2fb38ec3fb2cd6f45061058949dd18312b212fde7082778eb970",
"0x2c89a19cc675823c61843f218bdcb0cccb5b9b4f0069ddbf7e900fd643c2963b",
"0x8da85ff8b6200e090cff0a2c2f05042e30c79e425907ad9a055a9a2a496e73d",
"0x960180e5d5ff549130360038aac26bf7d2f5828e88327a1fbe2227194ee270c",
"0x17ea53188c77a5760fd3da3213f549e5a45c743db6b27f4f1af87e4ef28609a",
"0x1cd300160e5cbe7b9cd7ad1180598c065a08ea594897a8b2c667508e93aad2c6",
"0x1b8db86cfd31fb27ffd05312139ac8594e4b9a587927f1d5fbb378be75fdff94",
"0x9ce92eb753807b4cd89cefe94e7f31b0eae43b4cd6b97d8248731cca7817df9",
"0xf953e8b043a5bce5c459ae0c1758ee52707f6f0dfbddc5e407483709df22a70",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0xe61fb7e75ef9295c4189d5926940c65bef29f9460fd6acab96fed3d1be3e626",
"0xda574faa3851b0f89ee096792e722ef02c0e09793b829579e62d43e9745078b",
"0x29e8bfb4394174320d8c3521f9a665b547cb0560f726a0d70f52f613b0f24686",
"0x138864a60c066835f127cc7fc18ad0bc92774eed55a5735b8f4e58f1c4de54b0",
"0xc4061a8556cba5eb98d6966f7014b7f093e6c16ca1c498bab266918efd24982",
"0x29a31f9aaa8ddea5ffe0debc4ca6968854ac196215df67c09fcbd03352180b8f",
"0x1cf3ae0b1b9b5d99445a7f94998c5e59488c6041a6205045683c42f7417b8a57",
"0x297c9cf4083fe500908bd1f4c886306df9b080e77569a534c558ab552bc61a14",
"0x1fee3441a345869bbef74446fee4f51e9303d36e0a3316905b917db8b33ee846",
"0x29f81a706163b55c6e55324777703a9303ef8bc5650160e0f46e5b800d62abce",
"0x82ef985b1721ecc770cb73b1287f745769f9652c7aa177e43706ffb01683fcc",
"0xd2909479aba19cdf059dfd28915cb101756fd0be6fdd65af27163d3d4db80a2",
"0x2f9cd946fd1c2dc74bd0f3ce5737ac83b1071b7d4e720bbb2d8f138c24e9f336",
"0x24ec8557ae626b291b510d9ec1bd354247dc3727f72832da7a79c4fcaf8cbc8c",
"0xf11a41f841b89ce70505543d7028f8c852cc0df7c8d840917239c3724114e6e",
"0x114bb82795b43471c48a7d4f21e17c270f98c6907c37f2fb1f99856266cb8089",
"0x2b62ff5f01bbb491c744a8286db0aded602f287abaec3b1fb1b4212e58e6a4c1",
"0x65601f8bdd487ec395b20fa5fc276d78ba591835f481113b3a5c59b005e499c",
"0x1fc7286cd0168e84301b48ef87d7cab67e45883e166ce3d5b398389230d9ae4b",
"0x795f23bad239c2e465601e109ffcb16e153f5e47a47354138940d99088c5069",
"0x2e953e715e0c47fdcd618c2c5291215a73d3c1a29bcbcb7b9b7d362f211072c7",
"0x577b3abeddb1cba0385cd479d5b80be73ac18ea5564d9726681d8c29857b509",
"0x17f68ef80fe53b639194195275d6dd5671d2016e67b777a0600d69fd4e72384f",
"0x20ff4e58659cb0932f9be3455d13d0e6591b12da8f4c61489013cf9060b12ede",
"0x1e22384181c19d8b6c515b275db8401e900192f0ae54d144fa7c43c0295de2d2",
"0x2b73bd9ba3aa22ee4fcb81ac91cf8ad03f66f640dfbb1cc7b61a83c4e7aa2ea8",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x6e077d5c2e4e5c9705827a87bf1d03ba0d1ad0d1ad6ca1d634d25e4c66a0a15",
"0x121a212dacbbbc0ccf4c3b4292f681523da7c9e1a46e1ba0856b900911e4f84",
"0x14a5405a71e3bf12ce347c54fde1d22398fc616db34d6d6ec57d8d0395589341",
"0xf09fa7c4eeaba22ff000bda61bd7d4e87734f3f8195b38bfcecc6ff221d2863",
"0x16c25869bd517bdef88345315641374ea86e66541f12724938ac7dff3fc14353",
"0x293cf96970b904d201ef1baa8bdaca1321ad3ff0d67548d7ad07287d2908518b",
"0xc5f2232813e8dd413410645a1385493ba715260b3d968149f307b53ecc793f8",
"0x2e620a39a57898eba4992b7a1b2bd9b0c28573a1ff470f544c625a60ef624173",
"0x1c68b64c8887d3dba495c6bb3608065f7b26b8d39050099770330891de2e8722",
"0xfe00e735c41fd0086afc250224c2d48cd0e771edab73eb5e75c58f957082478",
"0x1b668eca521af2f9222ae86819b5aef6d32d8179275e7b98f6b9c314b62653a9",
"0x285025c188e98d4e6e58b0eb6dd46fd1f8d26ad5199eb9b647e99f70472dc4ba",
"0x20dfdbeabb8900090725b38f84f661cd2ff5b11ceb3c6835ef698f7d8e02d2a0",
"0x7d91adadd5a4f674b69907c533d124ee9f15988cb71a732d1c31888924d3729",
"0x22c3db5b12155b945c7cc04c0cdb534db2f8836b88742cb32db40fd0e46c9f7e",
"0x14b640a03dd9207764cffecd90500a5f0901946bf55e6f37b4fb1764baf8382",
"0x1e9b912709e85957b58fa0e0d424c7262cfcf3c0840667012cab0d06542c6594",
"0x1f4a75e965d66b9d9665ddb5a15ad09a9d688eb2b774fc8a86af46fd72796bd0",
"0x3d5c637f69677e08331c185d53ba9759ae018a832da036e31f00dcee14513bc",
"0x1e42641bb29a48b1b9c8a187dd6cdf6ba6029cb0760df90734b5d3bad8e212b4",
"0x2d80ba897d626e0d3bb15479044bb007cb55262149e10f53e63f42a53b3e87fe",
"0x2071abfa33f109a693fd07c4da6a5ca1175ff0413513d36add5bc72012e73a1b",
"0x2857675a3c236532833e6c04c6c9cc91d4aa3e18eb8f38cea6e421c4933f058f",
"0x9d0978a861b9d85265039a22191824e4974b2b113622dd453c71b0b1f8ec663",
"0xb1ffb601c946e8089d531bbb8bc34d4a36e257e8596c47a3c773d71c68602b3",
"0x1b8cfc651b9b2a51849dbfa72c4f39ae01b098997b226f58616383513c76ac0a",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x27d167fe78708447e11dd1f9e1342f67a9d2be1dcccb7c0bf1cac60b0d1f956f",
"0x2d211a9a9b13bee0382fb707a0744ca47b3cc0f5a0afcdabb5c34e52dc8fa277",
"0x41215a7139109b953e3f75f039c3019d9a32526461cb1e749bb5e4ae9e6df14",
"0x139255318820d9f769864e4b9011bdcac24f5491a409c8d0088c0687554d0d28",
"0x26dda446062c11b3ee8a7d9f8383db1f189859d91a03d35e92c2ae1399b994e5",
"0x2a9d3359aa3ab359799d23c03f3ff677ece3080df978214c9ba08836846e31e7",
"0x25571de296a11ec26c7f5b378dbc5837c3e8cf09679fc63da463d5a26e99f24",
"0x2e9d042c2deb3cabd6d758a54cdeb282891e695d463cadaac01a44b64981e963",
"0x1ccfe17477787c3bd72741265e5ac419cf04f60ebab95dda3cd74efebf34af95",
"0x1aabcbbff42769176f05c33ed6e957f6efb3f404451d83c6c107313eb098d57d",
"0x1c3a79dc7ac79b401429b1284780f82052b0217a69adc6ce431fb6de7075da31",
"0x2451bc265dac3547353b487c443d19230f1d4f305ecb2d61baea643f183fd1da",
"0x146ee9dc5bc8dddb22c7ce8a3be636d69c0c0609709b7d183bb8a5230f490c14",
"0x1722db13180d33ba99b8199a7e6e14bfba7ddceec3bf35161a7e875c336fbdf3",
"0xf90b19061d11f2a032bad6982196c3ec2132eae07e73a7d7b7aa1a1353712f6",
"0x29dc1b8c70a75052d431288905d64240c6979f04290472b941f943deb7f7893a",
"0x1cbd570d3b626cbff744b8fab455a37c54760431142aa6780e7b346a93f32fa5",
"0x122e0d5aef6a9d944211b3087266a4dfdc64c2c1e129b146e4b45c93e8128789",
"0x6a2e87f6c251c2f8a54661ac4c177f2ead8c66bd42cdbfcf0642e4b025375c1",
"0x121b14b512f2b6767bc67691906e59d0c6f1f4be4b77e15e277526a51dbe1a62",
"0x24337459df3d36f14130ef1c8950fd267b58a86b37c30ab87d57245719f3843c",
"0x2d751407d72c38bd7803630b12fddc7a076db32d9016d3b0a938231b5f667540",
"0x1fcfa3e97394e1057eb5ef247b47a0f610ed67d67225f4c8a246f54bde575cf5",
"0x1ce46568fc2b31fc458c65d79893bacfb0cc96b0e08b51e85d4d5432e2447e84",
"0x2a2035389af7aac382d3515d999e6a687c9c2e93918c56253c6ae9695d16d79f",
"0xa7485a573492c38febb77b703b0675290ec615974c9f705fa63b175628b8548",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x3c0b95d22504012438e7da78b1a5dbeb4f95569d68fad5fa51f126e434251a",
"0x12422748193dd5410de675c58584a4b6612ee3cb8fd929320a9e70720756cba9",
"0x560d13602278afd0f96096d2554342cf3bc86970f27fc807dce69bcc0b874cc",
"0x1339418b7b039d8e68260015f55b9d91fac69bf8232722f941738aabea21cdc3",
"0x1cbb466b02755d32eb5d7924147801125833e9020af6f52be688e5d8c071bc77",
"0xf5c38aa299be85be03b8f06c2908f0aafaf67662a714edaa407df93fd1a327f",
"0x6445747eda857a8191b68e27d640cfd91d68273e54d888ff057001e476f00a3",
"0x1604659a656d9ed6e5dec461a593c3eeb6a5be5dd722675425cf883debc696ce",
"0x11fc146f9aa45f748a6cce102854720cbfb60f5297ed2f77b16c9f8ec9a4acd5",
"0x22ebd4f9bcd07c59828633805fc99370cc17c8a818e04281fc862f425a83fae3",
"0x51c3a4921bd206f65a1cab1bb83da2ec6128b927e2376508c74a7bba353712d",
"0x1b04cf2d7a71282e57b33b3a67235c89acc5a03e6e5b8c2fc784891eaba9e221",
"0x242de34ed5316ba97ae4f46f05aa9e7c2c1c15dad9dbf8695288c13171bea890",
"0x2046c91a59d50c271c09271aa40ded980c91a88ea5f7e3b2b08858464e082c12",
"0x26cd545999428c5142048b641af7077594238778d17196da2e5c8e1b253b36dc",
"0x256b2f4800071aee94ac6b9031974f26fa6dc520938c96952878364f6f9790fd",
"0x164a0f897508f50e81a4a51e1abe56413d3b53306c3761dd408e1743fb060a33",
"0x1f7569343079826f0b1240702ec507915173f38d7a39bc75ad1c86cf79bd4414",
"0x5272bb3e84e9d0cc586a7d6af710026f809ea06526ffe9da350fddccc09d1a3",
"0x22ac9bed266b94c00d2f9d34f71a2d36c0d09bb30d9ef6587be752ed8b7fbc26",
"0x7674836517777ed3779e8a584732a9509e49db9d94a77161b7870cef981c1e7",
"0xffe7a0170bb48fb6c3e0b80e6244e1d6ef99ccf3e8a3061aa3136b1f7956cf1",
"0x1afd9dce91b191147c5f764300d8eed362eee907616d0bd56c931aaa7683194d",
"0x1ae34688936fcc0968249cf2077a1a982df5358dd5abc8deceb6f33b848b455c",
"0x3386d6e82aedb6f4bc05d34e96805cf875bbdcd9f59da3b3b95f7063442b228",
"0x1a1c06ea0926bd024640936f97377319fab6833349ac323240167651f3a01037",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x30192336409d16bb77389625d09d75f79f82e3e249b9b80a56d541a463184498",
"0x19c8967febcf45820a2fac7a8f7475b591f3dc87e263392789d247b39eb74b29",
"0x97570b91ed5d59d977e8e71ee895a590b529db6ee364fd82bda34ac18fd21c8",
"0x1a4393d778fea4efd093c5a43b4f0fb318caedd91ed30e2affe80054b6cd8e4d",
"0x31f540e1c1038a98ad3b80d8fc9bdfaea35d1d153da0011063b2472004b67b",
"0x165f001bcb8a3a0f9d4e00eeaed05614063d65735dec8c39737a83da4a293f6b",
"0x22e6b223b3e435309ee74f4920584e681c03c0382ad4d4d45f7f1e04c8f1e29",
"0x153d4c74f674e56647007566cfc575d08220dd89f88e9199174e81006f4bc589",
"0x46d4654e5ea12ef7d79ea7b540efd8cfcb0f8c803be7a9f3133227f8b673919",
"0x872d96c258f6400c031024c81eb9e49f1aefbad34225fa5633347f615910152",
"0x15e8a238d295f566b70246488ae7ffd1465a0efd12d2d688ceb2ad1cce50fb28",
"0xa7c019933d1c0a25cb8de67da2926591274ac799ae7a0800e79dfb1a66b09ac",
"0x1271c70f8805321068c895e1e0370f17bd49d7b75cf8e055b87f7615892c6c3",
"0x11356c90cf6bd40bdd299859f2439cd098f43baf710198aaa457bed29b78dcd3",
"0x1cfed55f4f804d76ddbdc211f248a7a7b9441ff124e31bae6f9f7a734f75abc0",
"0x2f9fc15fa8a7aa7217dfcb63bc31e6e9a2ec67668ef14499eb4a6b932234aa3",
"0x682ca8b867c78c917f04c2a7745a9a79182816677c65a771b019e64eff93abb",
"0x21dca8a6aba3d3f01bc0e27ea518f049bd57897f1354141d461b4a0c8682e484",
"0x227615abf38c854ee4abdef8b53b2687832b44eb05210ca355082ae06d9b5f6c",
"0x2921d807cfeed7a85927966f1dd5bf26835d3877c7227ad8fce96f28d00b66f6",
"0x1c9045d27121eb200e99a9df2b8e956f570e7cb06aaa424872e64da24668fc04",
"0x40850a1c2d1b7b78b59dccb79077605dc647e3971b26679142cfa657b3e77a4",
"0x4800dd5d34860acc745f73e61c474dc48e5ed88cc2a6556fd7d8ba47f7fe19b",
"0xcd605cc107283534180cfecb268068cce0e324f8eed13dc548d238559feb80d",
"0x265a4560a8a1ccecfd48264d9ee16af19c125244c13ee626b23d72bd6c1b69dc",
"0x2d72b58f878e0d96fe819ac630ebae41297a09fbc79fff372928e6bf929a0850",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x783e03e1c20687dcfa329bfe762847ef8469b9a16f1aff46e721bcfeb4ed9a2",
"0x7c549879769b6127b1fdd9e119c7f1088459b2444ca62f946f80265c08d96b1",
"0x1025885c29c40db31ca8f1f490caa4bc621924e88725428fbc670555e4222db3",
"0x21f0feca587fe54622a731ec88768d986581c07465c474729691e31a8b4fdb75",
"0x66df9e27127d7003f397e03dad246027125ae6c99200dad3cd5faf2fe43de22",
"0x27f3ab0ce10f55f231d7d249eaf38aa45375dcfae6add9b21783d1ebc38e4913",
"0x1e2dee4d94a3cbe678af8b0a8bf277469150364496efc0ace58540865a6288b6",
"0x9972d0bc51270751cf7fdfc95ab7208812d7e9d93a9b45386e0bbd3fb23c709",
"0x147d3302a23dfa4867fcf2168badaff8e987e90f6c141e92bec278ce816a9566",
"0x2e95c0b710cc179b4e39f3d45c97d0555437195d3e894e5bf238ab9fb9929c54",
"0xedff84d026026b621e6de741849300748078db140c9fe04236c2e05a35d7f0d",
"0x245d05ec0b5dc822bea9b8a2cd6c56da38bfdda0a4fa5744da442ba833098574",
"0x138874360b6e98e6ccd8fef742dca0d8ec44826aacce221b311cf421a6ec0292",
"0x1cc05be64c2f3cd2b68699c52f15d6265d493e7bd5ab4030a53c8be2fed67e89",
"0x2f5edc508ba14e8271fc7fbccb3e7d8750f4322606b2e5dcaac7239ba72143d2",
"0x1557d4eee207353143eed1b01c37806b4f0b6e688069a13b296214439bbe0949",
"0x258650e8ca6e1162e19f92302d2a6e8e40b00bb161c7f2ca5b92364cb553b5fc",
"0x12ec2381a018b71858df6bf6b0c9e02f14d8ca492878055dcfce660c7d915532",
"0x2aecb59a26510953e9d38b5669447df6bf4c2dc1a9bae6f4b84ffdfdff6a2a29",
"0x13201907ff8421dc74e517a6b72e4f997135c8f0e8ea5446907c6fd26f1609cf",
"0x1db130e5583c812ea25e107e27899c895214abb225bb3807ea80232015d21e2",
"0x27db99bc289ac5e1ad7b1192ca0c0f3b1614c77a77781cf00ee2e411835185bd",
"0x21a326712c5b109272d6aaebb73cc74cd389543fd17e6f12cb3a6c201ae735e6",
"0x2716f822617a359b60ba9d853d76a5d051c9bebe9ea9425d51b98475a9485809",
"0xe99f2580adcf372f1c99d009a22816c53cd5272d479fd64016a45e75eeea381",
"0xa3113a6affe5598d9d8ad2ddbf83ff94d56ca7f078a48713d0af15c4529291a",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x2cf67d5d1a9383ce14adf8d7b63005e058980ca148deb3bf0f17855cb115097e",
"0x14182d28f17d764f790f9185a15a6a03144c9e41ed22e8a2269619775dd3365b",
"0x2d63510ce0f51ac8f325327191ae2e8dac8775c05f87b87897e73416a53d1007",
"0x11d2023fe50f1147998bdb7d03b70f70f1a583a67646b055be252e3393bb0fde",
"0xd5beabdfc8def1c0fafd2b625bf1f4eacb6d3dd8870d0557af54c9c98b5b799",
"0x2e8f4e6bb6f7a28422636a7d3b0fe12ca20ab14cd0c5c45c4ef13f326ea5fee8",
"0x1ae5ebcaae05bedb59194e96c92c288479dce2ab43fceb24541ca2648245762a",
"0x24cafb4c21af1cd16216dd42b7e5c42457d5fbf4bf87bdb65730418efd682a5e",
"0x2e139e0df93864516aabdb86d6ab65d6598a0017346fd732e7f895aff36e9481",
"0x2ff83bb2884713055564970f1e39cded077a9205cbd74adad70411e2f963159c",
"0x2552f8295742fd94e0f264d182e9e34023f4163fc929c6b143cb35dbc61a32c5",
"0xb05c0f1defa2ff4e6a56a7582a568d650a7a2ae9ccbc478be52bb4fe3452299",
"0x2c0588283e0bb713ea7a22fb189fa359dcab39f137c9d5953ccd0ae136770f8",
"0x18bfcedbba1f9279d2dbd1d0b4b728a4836b9682905e03f6d9ab9992ee702bdb",
"0x4b314d086daebc4f33a7e8fb2ee578c668e91adff3ac3168dd3183965f51ec8",
"0x6cd84135ffdd74d9c315bfe319d01b17060fee963e8373d1458e181027ff005",
"0x29eea9039c59c939cb82a69a7def6a60623b9868e1a7137590b930140bae4ec2",
"0x1972fc96c24121bddcc76c44074dba6ac02ca1a10bbaa7bb49ce6d7161b4ffe4",
"0x1bacfc2d72d57f6bf695f3d82859859b329b87539e0c18313a1d3f27ab9afbe7",
"0x1069e2eda47e9fb6bfddfbb48d740256acd9be07d2ea9883b63e3214d0ded0f8",
"0x1d87dc8c8e73c38d20d2edd3f6b5abd456a881deeda90d0780176cd7770419c5",
"0x1d08c8a0952b5e4fd915b39382a0ee45893e3c207e339e6c78f28f1787bce94b",
"0xfdbab60a929d492017a0691032f8042201a3223c7ad628a6e1b6340d0893c",
"0x13f25826edf3001e3d8ade5dd2965989ae6c2578b7e886116949553b6f0ce244",
"0x44fa02e1da99bc4866c220784a4ba55ae28cfc47c4b9e5ba488f43b6141c7c3",
"0x7492d98f774f6c8f67583aaa485ac632906a19003a7757119536b19ab78b9d8",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x1fbb89d438ac14128a40437352ed7182d10f22964833efe6fb46eb21b780ec01",
"0x6ae819a8e0c57d44ee1ab07a49be82ca5544d89ab8518f844385576aec43234",
"0x2b3d3a7605543d350b0838b9b3fa9656cb91a84287d6f06e9338154f316cbadb",
"0x1620323cc24fb81854d716dcd972c108ea5d3b062841752a36c994c594199774",
"0x53924bafabdf89232353e5c853dd8b946f617a28f094f9f92badf1c233c925c",
"0x199241c82a57014e3375029b265ea7683611ead5148a8f83a231065c7887951",
"0x1e8b6db0d447c099ae7433fae22a2e779d110bd3b8feca58aee056f7ec325a4f",
"0xb3908d2ea7af26d42a913972fe10c3565f627cbf3b05af7b03a03b455d2745a",
"0xc337f61785e502287e274c817e5f380e5cd314d1a3ce42887dfe19bd20e8348",
"0x965a7d0f2799aa6f3ecb0ab4fdf5f02e0fd5386bf137cd2bdbc3e6aab74b608",
"0x18d8dc79d76890bb7586c65d83acce6185e11ba38d288f4933f33db74234eaa",
"0x2048602c11e8e771bb35415db4519798c36b593ea0b8fd4560410a7057d5d6a0",
"0x2966833633f29aaaf9d5f8d206fd1353f140d989a7214cd13bfed0657b0b5407",
"0x1c6ba85ab5f85ed4b53dc40cedaba63e5ef8006c724440b9448d64ac2b394b08",
"0x65adc608aa6dc0878f5bfcc2b89b3dbc18c5944c5b868dbd6d263cfd386ccbd",
"0x2f5c69bd32960af29ce7ab14150ba089073d74b14c18b63dce9242df8da666e6",
"0xd4e47c2eefa2d97991d58198e147c5dc3f856665f35905c8dcc0c7981979669",
"0x21dc79896380c9936d5da47117ee730c16563d40826cfed9a1415636bb6d9f6c",
"0x11393d10b1b89df9a2e7c68df33f1ee41656ee8509570cd4aec6d68917732245",
"0x2501a832c4be33ce1a4752aa3c3840b89c7eb9d7a2a267b16f076d9c90a6e98c",
"0x29417a7ecc3faed51f8f4e599e13699d32073c5f3865d8ac92f664016060c84a",
"0x1e6ee4be7b5f89fe5eb7f50ea73935fbeebc6ca8756580099b3c9a41a8a66f3f",
"0x24b1094cffa81631dd9fc78b33cbd8d7a93d0269ac60501af8ff82fa646e30df",
"0x1bad44f174f12802c4ec1dcafb6852b6b99dc3723bef629361b5bea594a7e3f6",
"0x2aed2c26dc890d5283b53ad5f30f9354e22804016335e4190b551be5e28e4e44",
"0x247d59448600ad981156c2e19e2be924d7b83bed1bacf16899dab7d7a8bf7f51",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x105097314bce2c2588aa56f191b813fee58479e8b541c13bd6c9bc8e654172ae",
"0x28d5354a0ceb5dbb339ec880b3b6fbc0e7e4f07ac0ecf5348429e1af57069bef",
"0xa31c76780b39b494f7334a7a2ce004b80f56d898ac155716f65172fce3dd454",
"0x1225a8ce4e27af6625ad1a92530a1fdb3206135eb09f679b2b38c13869b9370e",
"0x98a16fe6c6a2a433a045fd0d02346e5c024d7b4bcbe12d2594469a4a7a2925b",
"0x205ad0dfc7a7298bcca92aba3ec23f7dcee21785c96aea116bcf71e07d9ba361",
"0x148f1eadc8be731f95ef81b8e1f3634f44182101b2f13d8fe46bb3aafd2300b9",
"0x4372474a7938acc947df6d261fbba26850a09a16587d069cd877151e287e1d4",
"0x2ca6979a079cb2f455da4e23b90e191cff23e2d76b7d0a6d613e0c1a4507c4a9",
"0x2ca59df55ad4923070a4669629aad754a88b50fbd4643d544045d76148451dc4",
"0x2a7055f1e24448b52bbf572d0efc12754593d59062345f918ba7d90a27130580",
"0xa644e2fe975a3d062ff496a17e7113a395ecf678289de53b2137df5811be1c4",
"0x259bb7d88bf3f1c2f0521ff84c05423a250fc32477823c44d53e11cae6028ae3",
"0x27d551eb8809df2e1c200a661838fd96bea30a7a0b7ffb20795741a46ec359c9",
"0x17e37e4432360ed9a16dcb9cf0584b47ba049cba55b53ad5b5bfdb55cbd36ac3",
"0x263693f36da574e9f6b1af2e2817e803080035a19ac1c2ff754f0f970d20c6f9",
"0x1a893c4de3717842ede135fdb2a63f3c05c834cab22572bec21d57db7c3cb052",
"0x9bca88fc417d85c16bc98e2fca531206336226ba3a02a51a7fbdc2310e26f51",
"0xfe6944c3317d58ffa98fb3a991c22698ff20765d34c2b8b95802b83fbbd9cd0",
"0x1ba3d144274a073e17ed52348cd82eb3e00c743b7d9d3e944a1e3f5a361474f7",
"0x2cc42995586265e9cdfbaa845525177269b37ba7fcd3294074613d2d12af4070",
"0xa83811bff1e7f22000720d598ed2e3508ee14a9e12ff6125dbdb78cf07a2d62",
"0x4242918a5fc9ca3c34867d674dc7d1d1136ffb519de0eace1e6f911ea197350",
"0xedba1a161aae781bab92363fa0d12d8fcfb5e3b818cddef8844f94e9db890",
"0x230942de72fe0db9196d787b929144bf4faceb69b6f12aacb6e0d6b51cc7931a",
"0x1a9561c0d020fb28ea2ebf3851832058ad1cf972e99841f4772a8c578b6ef48f",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x22c0fc9c00f53d4247c908976b1ed1e55c4138b96e9c3ac1dc1f4d268e64ef49",
"0x22729d77b7b881af2f484a1a8438f52cb7be3b93c607310c5038a1d07253a184",
"0x14883acec95e824ab505756a5336b2c5e1b984c6a193d4bdbb014c097734b464",
"0x120d96dc5b428589ffb9f37b5001c6f5915b3ce4460b25331c62d59d65adc01c",
"0x130325a89c8e74b5feebd6340dde992f569aaa3f9350e45d0904027087e89b2e",
"0x16e6e793c81a10719f613ab182ad57ebec76df8dbef775cf03e1e316646d05f5",
"0x18bb788f4ff54dc0981e35a7178809d1f2518cbd12e5e78a77c2e366d0543cf7",
"0xcedee51d5b87d9ba52d6f12490b24cee9e61c1889ef46f2f882644046626461",
"0x1bfe0f0059a451175348f8af855e1f384d1299adfd1f8d852df6c325130bfdc6",
"0x1ca82eb1aa4d6081a46094f403954399af76a7d7dad88d5a9ca921a30ae1dc9b",
"0x11e1d384eb2a64472a26e40594253acd255027b2bf1f7a9a518b954d0de04321",
"0xdc70139469e918276bb65ff8334f64ba442cdd64bc1865efe3e788ff0c74341",
"0x1896f5f3c754db9d8812e99665c89c873620d9f0e599c0b2db25f9b186c05bca",
"0x2b1eb292fbf05207b3a916692003abc04683db775eb3e97bdd5f388df5b9e6e9",
"0xe822a8b6bdab9cfadfc98982d3d27df53300922ea795b29e1ed4e61f2ef6b9e",
"0x14447323538128d076a4a7c5e7d487256a671dce167e1a37f69601c64783ee7",
"0x1731ac8243601c9ad1c2d81f6ca118d479b9d71d03ab34c282bf68f3caaca5a5",
"0x1efef24cd417daeb7fbc1789fc2381fc194f515d6bf1b7a61bccd70a0fd13c2a",
"0x26c6de8f5b580b7d222bfee2f19dbe02580da4e383217b4870f1d4c8f7b692cc",
"0xd3823efb4c4808c275f720c340a733ffaab28c36479978b485b346e4ebb1ab4",
"0x24a2b1d438ee871cdf765b899d2f068811a6f46d02422c133ff6695a7f304593",
"0x9fe29e36bc74cf6d477ce054610f63a43855a08c27b86af1ff58e98c9fe686d",
"0x123e4ce6ab585e748a6424819b24aa2fd60e371b9842355df95ef13318346c10",
"0x257d0d633e7b8e40fa3a0c30548ff79d268d90296d8b5d3e9e7ee4f39ec814f0",
"0x21f4b792c1fcaf55e70e1b1804cdfd952a7ea45dcb9982c315024446e36b4b5b",
"0x18cec0d331cbb93e5cb4c1d4f1080de356f465e2ffb2fa712feb858bace4f5c8",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x1e5f08ebfc9f997ece7730536dd4cff8b519ebf519ad1342de3c2e26473a0b5b",
"0x2d77d34a218a752dfa4b941b63d7b02ab6078037ce22ec0608d3b7b402e4efbb",
"0x19004b8f6ea39ba279e5ecf8210460c112c1a563cf106736d9a0a46b7b842695",
"0x11fb4988936908db3d50905adda5065ee297a7e7187c36212ffdf5f81220f256",
"0x1081ebe3ee722e4f687bedf259ccdcb6fa46420c44d0ea88389917cf6717c04a",
"0x185aa8d933cc96791097565775894b15e2858ec2980311e55d9827471bbba810",
"0x1ab306868bac9a5ba65245b93f2c9b936de449a9091b45f3473bf97dd425aedb",
"0x2f1fc8f6cd473593cf38527156e482897df8441db84c875587c24966f6523973",
"0x17770ba5bd03c9275e2fe0ebf158ca85503ce65969cc9f86e3fb3be24e1fbada",
"0x1d0d275c4971978edab4b7a7cdd85ad72c204a13415f140d9d28b8af514bd692",
"0x1ca07f602b20372b8d50c9863fb5ec9fa033c63eeb293015a4bc91038be3f7fc",
"0x4782f31c8fcdd4898af76effd524fd0739c8ac290480fd0f32ddfa082dbbec6",
"0x68de12e587aa2c26e2e509faea0fadf79602aaea46e45b608be969ebf46ede6",
"0xf47f3f88ec297c36cc16581fe223a95388c7c3baffe6cabc7f4f669bf746e96",
"0x17bc99581c7bd39bae9f593ae1d72e99d7628db94135a65c2c510727f6148029",
"0x1d85dc0db735b4877d9f1639020da87afa6580963e0c2dc95c30a77ec57ee2b1",
"0x27c21a6c642486aa075c9a7757b96e68419cab8ed819e40d179992652eaaf1d8",
"0x1c15013e0719650306487b07e421e718ba9c35256964071760ef99c6b8aaad28",
"0x26bb2e4e2bf9a53e1147608d79a93bf730b09f4e651d6b08db6a509ce44ebbfa",
"0x2cc7e0fa1e964c48a3e0fc90f35e4e74cc01b2f74cc4de884a2dfde37331faa2",
"0xb9c87dd914a25c9d75070b7997507399970d9add413b9a8e4397f46ab8b97df",
"0x7f9ce6c590326b73f00c860875f2c7d4e6bb52725d8e4d6958caac8f46a4ae3",
"0xc289d670c7e2e743fbd60fd2a2a5e3ca077b4bf44df78babdffa232626d3900",
"0x190ce149a93a528cb01fb27da9eaa39de2bbaea50552a99286d4fa80b8e7b22d",
"0x20633ae2a05b6d69d765ab6fc2e335ae0c5dbcac130b204c01f88f9cd091b12",
"0x2543a932d6cd8dbd7533f3bf5a905c366dd1ac737290f6671e7ad6adb557778d",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x22187dc1425cbf505392f976a839df01c17067dd9a7e67d09e9078f1ec43abac",
"0x274579b98b4831b89a42351a2bef67f33a0741af871e3b1911edce28d6b1320e",
"0x2c52925562b2b08d1d1b2696af293157692f2a0b7f34052cbe8e26e80071d256",
"0x2e2f8231db4f3786fef48e7b65f9c890f1aa834729f769feba60a3554b9284a8",
"0x521922aba91806b1e4e13a4bdf92fde9737099751626a1c4d6011cb0d28d488",
"0x2ee11408d02e460309bfd46344e5557bb6711504030c84d81d127a17aa72c787",
"0x175981ace0eca15153600235260b821b4b05013f3e0e3cad3323bd32588b398",
"0x1d17093c739566880702816f776d54eee78164e5716335708fd67bae6407b863",
"0x7a6e2b3a2495845ca96a757a279b823bec23e6e2c2ee41f3ed6705a9df22548",
"0x1dee69a0aaac76360a66e057a8eef5bf7d845cb09a3eb27bfd152239bc8a6818",
"0x15df16ae54e8e3e211eb27f95f7da0bdf38da9530007085afc20553468eee2e0",
"0x2d85cd78c80244f0900115c6f5f5cc4cfbf8295c2a0b685f987144b9151618d0",
"0x1e894f052db0012cb83762d3fb2a824db10684db641c6e3eaa9fe45c9561541f",
"0x19bde06d6e7eb6c84a02e9a0f224c77c0b2cafce0fba9fbfc063a46b69e81406",
"0x2897de5d9c274ad4302ae652103f0d8d3a041ae93c0d461ac15d30d36a60edbf",
"0xfb0ac77f9a6cfe96bbaa646fe280d4b5449eda51b5cc1ac36325c3af0f4f830",
"0x2c3f06f6f736cbfcb1b6927b53543c31a95c648d4828ec34401c2474c932a48a",
"0x23e564383465f1d1f7cb62a80d4995fa2145cf6b06fa2f1e0541effffc19f5f4",
"0x18c139146446dbc956ff95270022370c93ee09947cabee3b0377d1524ec20807",
"0x2bb3b1a1771678092e80390f181fdc6df345e7641c8b7e4932708ac1f332f0b9",
"0x8df0d04a0d8d1b2b80f219c33a9266675bfc080532e9e66430bb67e05360f7d",
"0xd39efb103e032f986c875db6b9f6a6748cfaeb333c93ad7cb45e755eafe48c8",
"0x5f47c6fdbbd7b4e59cc7877eeaf63cb8c16c4dd77f214428dc94b9b2c0214e0",
"0xee1051b33292d8a7dc350916b62440745f2f47981721b80496d2aae0c9ff288",
"0x2bbf58da087230463a98b210824453823aed830f60432ce3156c583e06edf08",
"0x1674e5bc670e98029ca22d400ffc19a4200352fb152c784da88be0b67ffa14a2",
"0xe30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68",
"0x8a1e55de3e637ffa6b051ee33ab203483029584daf0c57c454bba30cf6363a8",
"0xe5b4497c397b27ca78254adc0c66a45514929a3dc0cfe2ed3c447a5d3926088",
"0xbccfad82d3fbec329e684d19569993c855483814fb2547e7b96cf79ba875616",
"0x1908c79adfdad4c4aeda2295a9db560a33e91b01050448491632705b189ae1d6",
"0x1299565dbf2547b30db50f5dd49ca835c3213eeba0130e835aea4add65037abe",
"0x2b4906e765f1e80f6e84d5852f34da89ec6d996c4a40a066c68b6a98100a2f9c",
"0x124a247b0b866c09ee5d3783bc715de3244599016f0fbe385738f95cb5dc0a28",
"0x77d1bac0f5b226607b2765d8d48118b1c55380c60aaac2ec0940afd0c05b24b",
"0x2ac41a842793f693dcffbebc5c08ed6b4aecee7db956ec59ddc230a7b3579c1d",
"0x137d327d41a9c6e42e20bb705fc3da5a282c911c8e7a79cab4e3665fbc3b529b",
"0x2dbd1fe87204abe2f9c27a8343c7257a93e781451d8e159feb4ef12f38b28e58",
"0x20d9cb838e454e9841ddd4792e4ea7b8f51cd7d7f271d6e32f3fa963a6d2cdf6",
"0xb34270663039e315f63a5c992e31d5d09451221504f85b37e1480067fe92174",
"0x12826e5b9be1c9b85f7c98aaca9ce28a870687d3628d60def0ab3072b57b09b8",
"0x22fea1297a4a5f08904d555c2e15d016102a4ed29c32b4bb10809ef14af42c77",
"0x24cc6751894087b831598b5bc7f9db3cbb48ce294d9208e1aa436cb5fa2e80e1",
"0x2cc3d0503a0e1da952b081ba5dc5b117e646bed572a645266c6ec3ce0a1474b9",
"0x11eedbe5a5969f33446503494b469a2b83f88d3aa477e5d6d7963a8333a61315",
"0x189ae9e9b162ab1a19d599cedcef428bd1325c78740aaad6715b710bfac4c1e6",
"0x1aad11449d6e2c6e1adcf9e89114c336c0145528f356ac049f52fd8cb084370a",
"0xd7e1eae2cfec406402d34c259e5966f6e2eb261d4f08e29088325a6bb669a63",
"0x796a23ad6ed2ac995104a0d3e6c75e977ce29aba1d25e62a9a8a20364ea1be0",
"0x299b8e8621d7d8c8d3d6286cb126b34ee53b2dc9a3697b8380c6e47f5711345c",
"0x20f11ee81d2ac9a9ed1cac61d9cfdf10bf1b49cdfbb6d232872a1df1427c1839",
"0xa403e979943b8d2f947f6eda6d41170881341bb5e4fbbb3b4fe3dd7dccdd777",
"0x4646253380f4bf642972ae81977779454aa0833fda36b1822cb9c09719e3dd1"
],
[
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0xd4e118218c553f4fd17f1dbb39ba942efd76cd18298bd6b72e1fde271c74372",
"0x1c9814a36ea57e27bd838375e1c1a562dcd2af6a66aad460bfc8afcf3d63ab8b",
"0x1c573e2904e49c6abed20981459d41c560544306978535d6becd7106ed3e41fb",
"0x9e39b302efe7ebc4307cd009e6bd6f7b5128a23298b11eb8e73047cf2f2e920",
"0x1fc427692601beee8d5f6bffaa3faa89af61a2ce7a048f9a596cf2c38ac2cfd7",
"0x1e5b7cbf92351abd6a71a235d9d2ba54bebc40e693a66f3b893174ccac29766d",
"0x2ee69d018063e4752c402c2255b267a05e49736814f2c9b7247240d61e8b684b",
"0x1eaea919368dbdf57be4a55db999baf940ba81052b4e4d5b8e7e16253274f5a",
"0x297f770923ed719ff3167e17564126bc6dda16c8cfd27aad29dfa7a466038453",
"0x13a94e1e1ffd11c4a28c86290a71162f82c03ea2634b67d98c1a5c1d06912186",
"0x19cea28494b1210a4098ac0e79d99fb546c2c3588f3cfe4a068359bb6082e56e",
"0x13841448d03b83eea61935f4d495503643436e90a8efa58be47c85e581b050b7",
"0x2df272af26c5aa5407188de71beb7cdfcf870c778b2093cae868000a2dbfaccd",
"0x29fe73f14e2420c982548ec713b85e374c1d8a43c2bc2ddb6302bef9fb2b6e24",
"0x9070c4406fbd360eca9c300edbd0a65fe8f59b876c18ae13bde14e3330e3175",
"0x2c82ea6755166fd89b688200788ba82d29734ca1b04494d0643b8689ab0b7cc2",
"0x26e76b10c0dd0dde0a57f9b731be061ae57c1d964e2e525081e1fa6084632b57",
"0x277298f3554969bc6937d1b5d5fdc5821b3c809206a3930ec894caf9a37240bd",
"0x287e53a89a23bf624bf6613a821ee5d502838605198c699cdb6ae5d274bb8453",
"0x2e9f85b46415dab53d2c1820226d4e7117e6cc96b7ddffa9f6a96cc697256255",
"0x17fcc4d649ce2696bb0e00460172bce45e5deb8c57904e5ca0d056c9df3e5297",
"0x2c971b630f9a4bca7a950159ff4411578bb39eedee8d9f0171b61ef7febbff4a",
"0x9b526beea2b32c93c9205ce33c6dd79824ee0123e0ee8309814432299a9756c",
"0xc8311c2fe1acce872212bc73164132f8fc89039b4b297090ef07e1997704279",
"0x2ea4d48161c13add4b1dc83b3666ef388ada7a353f3da4c8053efafdd1742bcb",
"0x447cfb281dd95e5bcf7a195bc52e08d78aed9e64cc9d7973873d06a42b8964a",
"0x2828d9d20b414b800a028afa5e61ec4362ada01cbd66f3a4e018f941a9edc227",
"0xf37dee2a8dc76e8cccbcfc527cd8c3383032e1f3f5065e39d2aa70b8fed775a",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x2ab166f28cfdbcfc32e51fc1db9264b527e40c696357cbdfa6bf90bf09fb97fc",
"0x2e156785cef17b7d942ced8e2ee15ce4bbe2ba73c0e55bd50eb898a1bedcf3c0",
"0xd4641251d71b781208156ca3680d6a5676f749b7588d5db0464c76ab985a43a",
"0xce5cf743d721f040dec40606144f5bcc8b068d2bbb11c3623eb423b1030e147",
"0x15e35852381a52021bfaccaff799de57d8dc8606f2465e875c7f9e22a3183ba6",
"0x7e9b4e0821320afbbb23fbe3a2027192f2ec891fde602faf446d06b3a770c04",
"0xb743d70dcb58a6acc70835a005c7ce366876fe3efe504909b0cb87aece170f6",
"0x10643f7d6181a8b5df1e921eb1a841476a937fc6a473185d8322c9a18c487a3e",
"0x2928df7c94de7ff8a3770980f0fbe3cc4e4f5908537c40b9e75247bc31e6585c",
"0x168d44f63e58a5c713c37e067709bc369c27f428af5eb3eaa79d445b9d073318",
"0x2b8845a96842f965343a94e76efa217b83bc1ebe804c7b25e8b3b58dd165e79c",
"0x1f44fb02f387d2ce14dd149cd24fb411a7c738157715d6a1be66ec028fc01bdb",
"0x217b5aaf9893ae41030f6c64ee6870bc995427c81e04a265e1774401a5412a53",
"0x45a1e21cd1e0e5b296cc6e02e249a6cd0eef3f6487292f0f1c742de712a4a4d",
"0x1901d160707a8edfbb7d4533914b9b8bb06f565b1abace77f7f761eb33f39e5c",
"0x27dee99b80374f3c665a4dc5c89a8e365a5a93d07e51c727ddd6a896c7ef8a7",
"0xb1c7058abc3ca4f1633d64c0dd5f068d7fdc10f96e3ca682d1b2ae6e289aaf6",
"0x1c495d660ada6c32fa2f107a811730d99ec01d9a17dca7001e659fb8454b9a1c",
"0x100885f5765de1733a91853cf668563b88c9c36005cb54cae61a82b6bb65160c",
"0x233544636d02f161bfe5bae6e687558cecee34870235d36cace44c6d372f0545",
"0x222a180a868a589137d947276e3cbaa74ca5052e685e02c178f64767a4e66446",
"0x22b1b89514b6a597c1331e24ec3f4e3232821a7330a525629d4d7e04950fdcd0",
"0x229fd163ea1ae80446877d78272ce7c50b8abac8fc591ba25c22661cb1e1d5a2",
"0x5efb45e61466bbb89d081dfbcc8bd398bbecd324d5950d65151b80c102a0503",
"0xcdf2465b92dd04b968ea8419be7466b0ea3785fbdf1a7550dc5b99e781853a3",
"0x2acbe99eeb7c3a167376c64ce28e10b1628cc3f7f480e68dba68bd470f29ffc6",
"0x21c173647249e75c7c8cb1d097da2d4ccda1031ccb8be5a1d2c3d392fdea5bd2",
"0x426c0054e199f89ccdd26940f3b6e8e30bb744886d5ae6677ce75f0abcb1a2",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x2664a99501d9fcc7afebe82773b4ea88245d531d59a7a0708522c437a2c63c8",
"0x1dc35aa8ae4c95f4a17d44a790157b7f27045bfea974ef5818a2ad557ae4d1ab",
"0xfdae6869465240d7a6280616afc83e937cc5821d8cdef8ae9a085395aa708cb",
"0x1782b019aadd454d509149e265b8474467c1ac219af05a53b8f671a3d1c7ab8",
"0xe543d031bc1748852a333f2e031cbcb39d5715e8637ffa18f18d620de3b1ca2",
"0x104993ba9cad115c79a58320fb01233fb0124a73e040581c6621429cf2fd8e2f",
"0x2aec2aa10254227e5e0cef19dc491ffae856bd5a9b029d926b60cdee38a2e30a",
"0x14395653083408edce60edf4f3232a9614c781cfd7f6fd183ee22e08e9d46daf",
"0x2e200704e49142bb68b20d9f7df040a1bd32118b21d44f74dca2b31818693012",
"0x2797778f8ed2e9af3fc79ec16f248b6209c03036a7f0d5066237befbab16e11c",
"0x25e0e403bfbbb31be8c5360007aa9f2e36a4dc4b5b2b0823f8cbd4349970ba35",
"0x2e8423bdead0b3ee1516ec6c5c816c7ea3004a45a0443192427bbc4415251771",
"0x2a34015d21144652f722f141385ba0510cd38da886bc0df34352ee7ae76a07be",
"0x2a3fee652dcedc95a0b44a072aaa54f5155b036b22bbaf7eaf0b9c3cde42f4cc",
"0x135692d47c5a0d4df037949a54fc72f230314fe7629e0dd7987b620c66543505",
"0x142093c728ea36edf0844de5e3c4b4f1e1b44b72a413b7b2a758b5be41c8d616",
"0x2a0b459ab3f636567fe0f1330ecb15453f62a6993b748edab79ad8cdd0d535b4",
"0x330b0a428235522e1d5e4728b882d56a82cfda90452ab9187127ce73658a9f2",
"0x2c44b22ae15ba0f22763004e8fcf0af6c602a0cbadc67eff70a74000b67017f9",
"0x1c68c04dca5f72aab61b7b60219e29d1183c8d1de5c7c8c09460738b6bf9760",
"0x1c74af78ca0448531b773a27c47800cace7f86e68e4969d29a8a12f1b9d59330",
"0x14e2ebfdbf9c76e96911a23a9f9c7076b38316393fe11a0a7492e605ec7a9c42",
"0x119a85d4048b76c56f636acfce7dae71759828d711dd6b28ed0e9a236e4d8fb3",
"0xde9be78e2e3c344a0b76a171b8d7ce1a1d05f25790a2451102e05a91472bf35",
"0x1e91cd25f12f2f3cffc2490773f8af707fe1a6843a766a3c44eb5b8fc134b002",
"0x20956c83b24ba2bb0086a91f597d0a902f2d74e53216bbd9592d35c438648061",
"0xc716d79b1bfa9d016fe75522d771400fcd75862133046a9b1011540d2331e87",
"0x2c4f3e61d58aab9d3c10abc4656fea493fb3d6374708cdb2e084a67e2fb6ea6a",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x15762393eeb335167599c130b4b6d22fc3f053dbbaf7635f39701683f9642dfe",
"0xd7579361389b5dec0c5817e57dd5b775c48facbabb151eb0f7e2da5ae19d158",
"0x265b9eb82ef9bb6fe2f70ccf516bee6b9be401183f0932784a40a61186f47a42",
"0xad7dc8d9d0b28ae3046b8f23c3a7cb614090e05a3c9ec3fe8e2fab367df2272",
"0x2a3f87839d7b3e0528e7b9c221379203354304e363684e38f5fbeb698bcb19f7",
"0x2834e210d211aeb395ae05198f7a1c475be1cb0d89a8c0877d8e88a9d62fc5ea",
"0x8cf6af0f8c7017f0de1cf6ea6947009c1041169d5b57c49938a6a4c863debbf",
"0xf9b0115c9097f360d0fb624b14c8b4a1ceff857220a181da4c32f619b164bed",
"0x10902d17db9823294cebb8706f44e8752e5a3abfd8218ac27718a4c0fc8a458c",
"0x2ffc17ee98848d878ed4315e3ce007667b4f18bd43993e4d969e9cb38d8d118f",
"0xf878f0a4df67255f88423ffb527014656515eaea2e9cc36be9c37135041fd98",
"0x5dd3e66670174cdbc764ce0711c58f427dc503c798e29140820053da7694d26",
"0x2de49ecdb01104151943ace205edcc81ab91a9ef2af4c33ee2aa2d08bad6c023",
"0x2cb9a3284c718a566d7db309aa0ce6f8e61dba64a225f746b757ef2eaf0b9311",
"0x1d1c9593d0c4ea4ed9a491dc73821969ced386145cff808364bc37335ccf5a69",
"0x23a29371ad7760d5c5de4ae5024a4612743fa77b09eb566c9f41d216c9552854",
"0xee30c0ca292c3dbbcdc2471f750036531b0cb85eb8464d3f92466008ab94247",
"0x1727f0d18b422010f97058ff5e8ac23fc850951774b431a38f60a1d9b5560175",
"0x2ac5457bc236f8945365b828183f8266e3d1b5b3dc2d9ca52febacdcde11b71b",
"0x166d29ead2255e356ca2170969b7b9b94bbd88bb34ad7e5663f4d3a25a330ee7",
"0x2e386cdbee46199b48299bcd0cc8ec486f6c6caadb087b52ea86e51d4f39e736",
"0x7937bbf56ef747bfc1543e6cf5c653434e85a225f09199ce11747da5d44a530",
"0xae9d9852098390b4a5b9a075d32020a5d61d0a2a05fc6037408840d43bd04fa",
"0x1181b5e009f4e51aa287e113ed3be581245601ea27ce4b35219c7317087568f3",
"0x2475a06052db24962d86bfe804db3f65205984e5966c1a8695351dec487b611",
"0x1e9530a8088a3c241b2e5ced4157949565aa90425ec8b494def155581d6e10d4",
"0xc9c3bdd72c3442d12734c0f3bcf2bd1bc679cf8fac9127abfb316fbcae53202",
"0x2fca60f1092c4d48164a2e2c81fe134cb4bea555f4569e095389e181a4ceb5ec",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x1115614e19e210b59b4b0e708130dd845be5bee11aa1ce43984ccb99beb3624c",
"0x26643a2ea75d103a87b50ca1690a55117340ab3f4fe78e63f81187f58a392382",
"0x699ce3db9d5882c04716cd74bc49c2bcd5cfa34039856d27ac7354b60ab8412",
"0x147e382354cd1bd30bb3383eff03f89974b035a00897f89d9545cf501ecfb243",
"0x76e68370ceb55cca9757765b0c2eff1e05426fd3b1eeae4de2bd9f49c121700",
"0x8064483b1ee3733f6b6e9dae47a7dedf7baa9b67ff8471ced25395fa38cd884",
"0x26225db4d7860e869a00f54fa10923c8041cf313eb912318aaf8f4f897401f44",
"0x15ba41ce4e4e0b3c6633aa83180dab522a28b25887f78e8acb61b6cfc6f837db",
"0x29bf9692a1f8c909bf1d0fac4a04de3804e89c3fcc2b081cd25d44b0afff7b09",
"0x29838b380b43fda29e4b8824229a76291808c2a9c4864ba8e5577fdac75a85e6",
"0x165e81bf9d1b5b89ed739b99c84c53dc3fca070e83a818d5bbfeed37630a0b48",
"0x10a7013127742057201e42ecbc83099b49a60af2365f8bf7cc403a3095ed3fa7",
"0x223759ffd12a39e3e384c76802544c3778f14149d0123c1280fbb92ed556d9ff",
"0x707296bc5dc73b70944cfa07f21c77042753a479540db83d9115f9fe9ee3e59",
"0x205f5d69af9f4bb66c51fbbd99ecd7108c76240f97f758a17e60f46bdcef86d0",
"0x1210dd2f4c47992f4d5c7150f1bd9346860046534bec9bcbb3a977802fe9037e",
"0x144ccf1aeb8b78de9437aa82f7a82ffcb958529cc51dd5a283635ffc0b0a6c8a",
"0xf996b911c7c650ebcbf4bade79e10411e3d4ab0e2ec01fce87928c4c0f77e80",
"0x1b46a1b0ed04080cb068fdff6e531b02c002fc3d66b3ed2d656137001b7926af",
"0x19fce53edadf9d4cb5eae86fd8b1c68c238aef46a5ca33603367b8de0927b2f1",
"0x26b0885672f6494dfb46ed42a401176f2a2f42790725f14adaee8e9638a986ea",
"0x2db620812477b8d733297937c52ae01076f5928ec0b7488e855dfc5b938b80a2",
"0x20d30fe0ff4f57a3cc6e6330182f23fdd72c24aaf0a5b372a32a19e80a638112",
"0x2a5e3d7b9813aa7a0cbd2ba1c425d80e81e12de4060b90ba7eaf832f00f34d2e",
"0xab8b6d9abc9cf77de47f36daec39db0f7e3c7a31db631ac6ebfa501a4b3f94f",
"0x16c8438c2ff89c19e2f9cdce14dc380a8a31c1f65d059e23931f69b921e5b4dc",
"0x13d36ffb25914bff0a9c1b490db18fc8fd7a2ff9fa3b673aa2ccb2a64539c7e7",
"0x28b8ee6f7ee1d8d0d3ebe26bf4246e8eb545148ca86e60cbd0bfdf4e9b22660d",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x10dd321b7a11a2bc96b3f4719b4b443d94e5aa2ddbf428d32e863d7b956aa085",
"0x5fc6b8b740e55f5d0690b7e2309f312d089c4555f057172a6214835460a342f",
"0x2951ef2c77380bae297a4fbc05ea97de562ed3d80aa8a986359c3ff00bcad10b",
"0x2b7c767b440ca0ddb88adb86af53231819ad6c21c222b09a8fc8f9d61108276d",
"0xe44d122f91c40d9470afc3e484ec8f8fe6ad0fd24146f1d38d717da4db7673c",
"0x1ba47ae303c2e76854d7f399c74f48dfaaa3287c07b9b79bf1fd08f9da703c4a",
"0x11b425d8000810e925867f7a9850aa799aa2338185b6f97ebbeb7b481a52feea",
"0x27abc591fdfc4152cee25f4fb6d0a1e932a396b72c311c05a99a9f923b1f7014",
"0x2a7294a73da17a02829961f0cd5b34c67c909acc3874a238637fb570d4c23046",
"0x8b325e346b09a1eef8be7fc3d81867135e87ee9958f16dab759bfba34b0adad",
"0x1d8bfded258e085fd2c871a9db0ca38ce5e5d232d2859c9e3da87829057ff232",
"0x10321b7d5466be1e92a7b8f17a16a37baba2987ed57399fa903b5385d81b19bd",
"0x1385299af14ad7cefe90edbd656d72126e0e9078317306984f201a98e3e87ff6",
"0x1b3f863460bd743da42eb33e47d2cfffd9a1855e9fe571674798d3b0d2aaa8c3",
"0x16f65f24d40213e86452cb242e20a222d8bda274251b4fbd82dc110ad78f1101",
"0x271aae4782989dad19f84117ce0466a52e16551386b42a74552db0c6e00442f",
"0x2913b1df62de1405241829ebd6bbf2719510cfde2d374c171f2b0a3956beacb7",
"0x102108bf4a73ec9abced652ec51ca12fb06e48b5df049b9e37102ce0a77b657d",
"0x206603d022cc8608f807ace7c0ec31d9dd98c202be6d1bc47a4d44df54bb48fa",
"0x28c4e8e4ef10710d1e972ee6a4a2f88aa08a0d6fbbd77cbd057ce83ab6b75bcf",
"0x1431769f19552b0579c9a23e91e9f017ccef784eaf0b52f33819bfd72ae98f42",
"0x20c42490a8ca07d9f39b11e720b833ccc033e1ed16a310d53222877b0630336",
"0x27e9b6a362bfbe53ee9fe071410ca804a9bbfd2d2e579b95a50d63a16c988da0",
"0x2e937b74fb17d63c90d32c1258c1cb4108f5e3f82246fd704d44233653aab860",
"0xb1b6974c506d78acccb5e1b6c9a5583e9c922152ec0d113495dc49b14a61c8d",
"0x18554cce997dedb95d27bf135c8bddd3b0c8aad0551a6f372bba51613c0335ac",
"0x132069ecac9f244a5e447a1cc19a998073aec780e8236c827a66bf9fc6ccf8a5",
"0x17d40185a9458fc6b98948ad7da77f035fd7a3618233a43af0d0e511e5fa37b1",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x275d28b52043874241a3fbf29f0fc8725346929cb378a7e4e9e8c7a8ac1c4128",
"0x168eb99c86d705c289b00227d74828339e88cda8ea726d3d9acbb57ae75043b1",
"0x2a76294553220b5ba2abadf6bc42a902641312f0bc1953286b08ba16ae65f435",
"0x4f55222eec01a996c9c4c70c11f6375714c601e1547cd47f1dee0b3999be4ca",
"0x26afe145a5c9d058fd25a6404e4acb62cb13d299de81fac1deb35ff9f4a40c33",
"0x2cd5c836e175ed7a902fe2334f239d499f51b58db73bbf2b1180cfe4c4df7936",
"0x29b7a4911bb67a29bd7368c0f42079aeda1fc0d452efb2b129b0ad93fec02eb1",
"0x258d09a47dffa2af8a1dd733c8b08f63911dff878a2fdb4794e319d46a63df7f",
"0x22e2643fe45193389fd7981bf191826724d5ff1f0a68651c1c98ef02d81f1b0a",
"0xecb1213c8df26deaa40d8f6c4f0a1d4e3c72da3dfc1f4370de7dad7e32618d",
"0x14ba09c0956dddfe7410192712238658b4d65506c78e318ae769d2732c63adde",
"0x2dcd28c30f44c2ee7d8121acb638debab46d0feee4dce60d494acb677134a60f",
"0x117c6959729d1d774ce1a8fe1fa28251592f3bd62f86253929ee45ca959e4b79",
"0x2c290cbd7d76fc9f9cdcfc47b48fd66ab55d20b7e2f73357e68319367c7fae08",
"0x1f40cb5c53ab688c259fc3a2bdb401115330f3b2850955a39764374e5f2b5195",
"0x2a58a19ce1744a2411fde6401a6f33d899f9fa9c59eb6375530f45bd8a751339",
"0xdf6ce7e1bb5c41d366d6d7d5707c63eb3ae9478043fe167f712758a05b49206",
"0x2a32f08c015e3dba1d7193b31362ea88156b370fccf15c48abb7133747833ae",
"0xe549b8f127e7ee7a8e67f9dc534fc8e3a627059b406379c63d86a54a593d86d",
"0x2ad6b517cba39a16caa6fcfd53d3b8a43758e360c703aed8691d721a523ac174",
"0xe000e82e93b69d72b8385885464cb1531c74d6255f1c1156539c89dfc84091",
"0x24b57d1e4c920be2b95c0fc8a84f5d5603f0c286e80d71669d60049b94770419",
"0x24c65f0e2ad6e614ea9a53b058651459f966152275afd3cd6924a1e990e7d201",
"0x1d0ae8c3033577ea4b1f2dd4b68b83620a1ffcb4d5426e9603d4ccfcb6f1fb66",
"0x12c81853619d70f737544addf33b8d104af13ee311ed522df131bf24d83dac85",
"0x50fefb4229d0fbb58756c49b28c0ad0fee9338a1fb239f8d8ef12e168aa162f",
"0x1dc4a881539b03ca1b5493a594be14ebdcb60bcb2b4d1b58868d3a6558410173",
"0x1e7e5f574d74633a061ca773e969dce83ad758e4d08c37e3900f62c5f9b805c5",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x2d030d498dd22e5f9b3761b019f812c2df002ebbdbe5da92f38be1ff1cd97e65",
"0x227f6e1b292aeefdaeefeeaa2e7af21fcd012a794ca2c18d284661cb0fb1dcaf",
"0x9a991758be8db845ca4b488dfd11e27f0c773c88c2507ad584dd73eb1709358",
"0x5b3c08cb06d23cedf2cd4c5cd248514a89b09ff70ff56f90221492081480705",
"0x207e60dbdbbbef1f316198b79e4df3e688c3c71b8f82e0480763cf729b6bba03",
"0x1d94aa3d4e98c691b3efaae72ae18d50d90ae56629eb00e7bc324eb2362d27e4",
"0x2f99f4602d8a7612c573c3ed2232eba3f91f030f8b5c2dc6de3d8aa60bba2869",
"0x185a7fb027b40f8efcfcbbde02cbe15567d64ae6ac9bf206781703c07d6272ea",
"0xeb85ffa7ee5e9fa96ae4697ca527ee7bbfb69b5df611a1b6b715a30f9b69b44",
"0xe6507cc613c091c3f6d563b24b8b78d78262d7e6a470ffd98a1ca6cd0da5ef1",
"0xfeb286fa095e4decdc49ea3f57da799b2818746837f591941e67a93f2bdcdbf",
"0x157de51c339785fabf4ea584b55e158485bce7dd521c0a25160247a84d13e6b",
"0x118b39a323a6ab543f005f26c89c673480204a183a1f68e0100d6be4d55df254",
"0x200f0d9065e79bf29e35fa9ce14f0d87038e43ec1c1c2d4fabcca003e2f2d724",
"0x271b6dbd7bbbf9d98a9c5c8814c58923aed6e4a31d7bcf8d723561f5116df99f",
"0x22594da35eddc1850dc757649b53c126403a907c6113f39e940e363bd2830509",
"0x9a6a3e13a6aed0fb709786ffc8a7d560642a59f2cee2dc68781130407455a81",
"0xd5de9b94917addd8b8ebc8eface4fdc044380a27446e5d0170c4aa965b8e48a",
"0x1ba4f74d7dbf44f967060c619e429485254c8aa06ac08bb8fb101a4c88811cad",
"0x2bd393ac0c6602f63ef13835a3601f6c4f84f09cd47cedf02ab0a92f0f59e813",
"0x132cd8a625910f7fa7a999d0338010825c353659385ea10a419255dbc0a3456d",
"0x2bc9e5ad597c8f773a7ac2dfe21c16a9d5493a1e319dc942e635067ac6924754",
"0x21af2adf48b95cc677f255d44aea3d1132115782cea08bb82a526366b7affcbc",
"0x1baa899af3a60f883362aa1b88ea17778e258d3defa44fec1b3f4f9c13b890cd",
"0x1083673f89cf1ffe18b41d3cb7084270363c519ef6a16484220e30209f83d976",
"0x5a5be7182497c5c2ec9e91b1a4af88703cb01ea7e7d8dcc535d72a60611f271",
"0xff6f076a63edf8d87f70b60ac0d64f311eb1771d961b6b33867a6378181088a",
"0xab810f3e1dce08d5e5289d8d32a3ab20ebe56a1e3f6cfec818462804b0aad37",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x36339f709425b44b4b4158479da0b011c1a67fc8edb682b0a4437607b9aab74",
"0x25f49340da53700404b20e59243b4e5158b8a2dc24acb8f072504149481dc8da",
"0x14b076d2ce8f4cb8d8323ec8d743947a7c8fc96f149c0dc4a74d883939d620b2",
"0x4a6fdd5c06168268ddb9886b5b9d23f146ee182a155e175d17b07ddce7df8f9",
"0x8868cbb867db89dc7895e3c2c06466e0cd0936eca7e35ab5fb8f63f7a4722ac",
"0x13639b2e24f941877911b94bb9a0256f480021097c2f8d713c088c628d8fe61d",
"0x2487694daea37ed9f66185b6ba5700abd9144c18def2fb87af3a4fcc5b8a6b5e",
"0x62db9b179c1677bf6cd17e9bab4cbbc17a113c73c137dc6664bf4938f723352",
"0x25d7d897d92a0fafaca382402a1034b20ffde5b709d6092aad0e89ee43f48fde",
"0xbc883b75255e0e7b62094e1ca2aa65cb2a2dc7c4b30233f6e057257b25adcc8",
"0x1e902b42eb37ffe108655260991d4f28d286585d6e9c172b6d87be8e08eccf31",
"0x41a3b254a2c8446d8e99a292e24bc1858eb3d8fc841bc7e1ab03dd5f1c40ebb",
"0x21f4b9d60cc5ec13b8e87d116b27d89626bc76c0e8ff4caad5f825f158feefff",
"0x246be41807bdfd90b7cb066201cb33203cfd557d218cca9ccfe1451a86f4b258",
"0x13760f834ed0e52211b6d9b36080dafe079c30c279777ed992882ede9fdccf3c",
"0x24e75fe9b1f75436c465b22fb0520ac1afe2cd26e0a2d7b6476a3c9740e1ada8",
"0x210a9a4b2b1e03dd5fd270b8303f7bf9eb268844761f67473372cd665b1f319b",
"0x133c572bc84ed9a77b6651162bda90620f004f61aef467671ff8019ca6c09bed",
"0x1bc35641ed2b845a94e93bb2b89889d0b9d3338d45503f21f1fe9b0c09394eac",
"0x1ee1cb63ff99f240cb1d5f11c0abf418d696a0b73560afd9302a5119750daebd",
"0x25e5840c2abad4b937edcfc1ef54894d9556774b1e921d1a437278f8c3386222",
"0x137cac7ea18f1785a86b769785cfa6d919af27b77d7e1cf07cb4070275c91384",
"0x2e39652c251cb2e6a89166be880e1021996ffc55dde4b823cca3c305a1836794",
"0x3ec58cafe270aa7824551c1948911a0412a4985d79feef0324bd63960c6995b",
"0x293b947e1e6860bd81442b2c2a6fb3ae59375d12f857b5b8161e0f4bfb430ef4",
"0x2727bae7d504f2181e1910bb7eee349eaeb0480d214fafd019662edc067a1290",
"0x1be2f1a5593378d6fc1505e59c4c28ffb6cdf5859a5e2e1bb5b49a36051f77b1",
"0xb1e3d4a0d6e3bdd411c1f8dd4f2553ae84544b84a57b1f09fbdd26670d4b007",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x1f1099181737a09a66b13631030982bf438bf84d3715a0bed3cbebecaacac44",
"0x249a7a0b3a015a04fc08a2c6cbc7787aba1cc983c94a3d5074f584edfeb2416b",
"0x237bace2c06976c536b56fb5acdd2ac51fb2be8c204834b011106f03eb3a297d",
"0x20d83c51cb9e2a1fb0a0fa7f32c69cca88e6af24878f21fad622e364a6be6c1a",
"0xe65df5618a774c899d19e6a6d8f0aad4a10c347b12ac1fcbfedf7a9f17ed09d",
"0x16ab51042d2c056da53bbedaca317fb7543846fe6fb147279b5872eee7821e54",
"0x2e2d8b570da9329bdf02f5feb01f2b6e32fb795631c6be29e03a1c0ce31c629a",
"0x24d1fd499e7bb80cb2d0ca1fd09039bc4cf518ff43725796bc2b48d237c82e78",
"0x6a96b7d99b2b7a6e57cbb355217ecb8637bc3d4ded1e046783a6d5f63689392",
"0x19a143f1c5ff5191d99a6f144d8635ee4e4833b0b80a86434a494a6a97273239",
"0xd4e60cac8694ce18785f94c5c2f18ddd5eea3cb8a70ab4bc3e533b3baa0c674",
"0x3062c4cdaf43e790dea387e5bb1bb16a167f30e644e5411f9252042d516b8f0c",
"0x1b378a25d0cd861fbc9491836aa9c1fc169456c2027b34ac1b61a6d7090faed9",
"0x21cc1b4f8732b2a733b42718b6a48429df379711208deaa65a7eea4af1cc7d30",
"0x2115e1786ec90fa373ee1a8f50768702b3b89e4c0aceff138ac487343d707792",
"0x15ce8b9c8e950b1292ee1f80d7e271d3c0b714c1de34b76063624d00a686a39a",
"0x1d0e917e058eb6cb8ee32e9da420bd6399f8b2297876d84d997ecf8ab3b0d156",
"0x24d9b1d31cd6eb19c0c63513a6c3fb04a43033968696e954431d00f128bd6349",
"0x1e4dae551bca600dacc58fd37cac50bf2713052e2a4935d64471f585508f0d9b",
"0x11b1cc629721ced48c3494595863dee3de1598c11a681412062610ac859735df",
"0x26ef5031ab96b02b00df512752c7165e368f406857478f18d7230b6e4a1c80dc",
"0xd83775fafda795718ca9d4777d79b9c4354a73bba6813c415b3b970fbac6e62",
"0x20be2cd9b7d6dabd4db0dff89911987ab0479dd9c1c081fa64b97fb97c8d3143",
"0x255bcd5c215aa3bb5bd9e05f4bae4a68e152e3118fd09368fab9fe69e23149d2",
"0x1947d75ae45108e7a86d0e3e034bbaf27b7fe718451e3a5c206dd5a122a917f8",
"0x17af7f16f78c7b517171424fc4f47ba88cf15c4224bbd13afb3bfb05df96d89e",
"0xf736ed6532f0b90d30bcdcec9b05d1c59070f105255e7d60f8d3178e753c5c4",
"0x223efe61713a8d50c4d8f00ff69c45ea5f27defce0f08a9bc74e7a82084bc788",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x13a0d52fa98cce5cd43bcb4aae2038de35a787f86d375b019d7279a135ce710d",
"0x57d3beb3548cc7650f10f293fc2d393227dfb72422e89072dd8b90466bb57c8",
"0x1a6533a65e764adb163780a18df2e7f0233bef0eeb6276895c76a474998afb79",
"0x1913a71c0e6f8c87f433ed6ec0bbe2e7397544c0dbed7199c5f4b7edceb06a79",
"0x2266891fa5e56d0240ee9871ad7107c0d740398f8cc9165a1b09e10a2b740c17",
"0xf5652567afe30f4d5e934d9852bcee7ea0a8fc142b4822d2340853022128fd0",
"0x5bbf0f89f5ae6f5713c18b57ab2997abd8bc8c0fce08e2047ffee7ff4e8bb61",
"0x1a7bcce0d63b580b6779957d56f9abfe5aa8ec1fe610e952c4259091046d42",
"0x2b775827170698c370c7fc1706cd95b8f6c7750f338ac0fcde91ebe40cad9dbb",
"0x1b9c97f57c84b5f780373eeafecd7a4ec3e065219785272820672d59e985526e",
"0x1c89b9708064d8558f1361c6acba6d73eecd06c4e4a157abcdce2731cbea3e95",
"0x9a22dd01ccbf3e6ed2de7d74e16f58edeb748843b19d0cde8756bdf30e7f222",
"0x2678274dec9c2180d4f5b5e07cfb42c2489afa4673c61f091a5dd00ab0e6018e",
"0x1400af0c777fd9934b9fa5d1fab3576164ef9b31a6c8be59f72cbfee446aa148",
"0x2bb2d320c6f15fc80d7c78fd8110e715403df00154b1d275fe6422aae8d68cc8",
"0x912b48b8c530838be3512cec8d4c210726e17d660b2a726bdb44f686052300b",
"0xfce537edac05ca8b03b6b472dbe1813bfca33c05fa1acdc695c6e91d60529c7",
"0x1be4e4888a092ed1691160e4381ccfa8997237e78cbd7ecdf8c12066a49c19e8",
"0x28bd303aebbdad8a14ee284102ac2ac5e23680287d8c3587a71cc61ccd6c5b90",
"0x110b79c0bf8f52881c24f4e7598c5f5b30112675a2655ab183be54c69f8a85f7",
"0x2d17b110312b5b8d233dce3470269203776b47b85d143e1f45d59c1685ccf272",
"0xdff609373bc4eed749b401df1e7948ce8c8084f4c816844c29ea7a07cdf320",
"0x21445547b6584627b60ff1364308b6d6d1d08615de63a5c2ff1ec7f7764304e6",
"0x1ad2606e3877709593699f24a0287e2be54a2ba74f3551ddb1332c7cedad0d30",
"0x10c695276f9d6578a7bd5c351c1cab9affdeaf9abedfdbac72ffac057b67d7fa",
"0x100f820a8faa0bc1165b8a16f64ab9baa87fc7e94ee23f5a16125a71cb06b838",
"0x7bf7f1faf360f65cdf14fa9ff38b2619b616f2913b7403a4fe0431ec15a57e7",
"0x7b95e787e34c76215dbd3e1c548e5646bf3a061d087ad6477cf962a3cf73dad",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x2ec7afda93383730c9043913c6b866c20a5122081a7744f6d6a317b01177affb",
"0xeceed2a6602d291aab1064254c70fd4113a09bbf3527f603f67f01336915d35",
"0x284b37b2fd2c4ddbb2bcdd057a56680d46b7d69fac63b80c991f14db1ab5b345",
"0x10ddbb4173b040104f12ffb5fcc87bf6730ea0c8aee88f9e2c00eaa1a4231804",
"0xb87d2c0dab9ff1ec96017e8c43bb5281266fc92231375e78f02354355eb0c74",
"0x255c350cb26d49d41652f9a27f8d6c223b8756f8797c0c960aaf36fe91b4c910",
"0x2ffb78c0bea2534d67c0b061f4ecb9cff5cdc0bbb9ba0567b35b5434329ce24",
"0x16aec970d0f171ac2f7183d67c969ce69cf1f4dc73b38e3a72d8adbad367ac92",
"0x2e74c92c412e2d6943dfb7946c80f5fa9ae87255fcdbb98c437b65f97fec81b4",
"0xbdb1fbc8b81f57cf6725c95bb9428bbed046d555dddbaeb02b3fb9baa750fe6",
"0x7bf15085936894c23de42271ca102d554a45b54ae80fa0c7e6d7aa9c72cb65a",
"0x12e18b956f687e1c43f50a6571caeee8bde8d7da9ad5e5e27ffad30f833eae36",
"0x2c45b659cd395880788e5215997b77761c46555ff084f24a0d28dacfeecf5c84",
"0x2805d6c3bf0de9aa5c7c354947020efa9489995e8baac233ddf04e8ea8ba902b",
"0x18187c330b42dbf89ecc0435f0d77a7cec28d256f65047d4a3e1ac8aa6cb199b",
"0x2fef8da38b7959eacb7ec6155488836641655c11b8babc8f12e715afff115d4f",
"0x88011673864ca6778bb97d51eb1f2962b69d07a496b6b7b370cec217c601ae8",
"0xf6e83f3c55d5fb8b6b6c89e176a5a4f81a3a0acba7113ebee661b411613438f",
"0x2d59be2aec0efbc67f59da156d934313e8be205c1460699f0e70e7fe5ecfebcc",
"0x2aa0544263e125a82d9ca1beea6d9cf22b40afc7155bcb0f1c8b1ac23a24f6c4",
"0x7e3a92c9ebc149a74d4180ffdc30e8ac7bd6598d78bb8f3530403fcd9b12221",
"0x1827bf9f11d4061c506954039093e66e60041b2c96b8f7e1e4e550582d1ea13a",
"0x2e147c8ee46a45f0ecc64de8647e833b1ec708269b37f4e29b17c91b9bab8280",
"0x3117f4c71dc298ea7cdc53dc55f0a15541a369691622934416026bb1a65b8fe",
"0x122fefefa669bf51b544de5c0aca38753c8f32419b2ece3a97f0232e523f4cb3",
"0x18e8e58431e6dd229b88f142f9cdff129883bb54edba0854b29a8add15354d97",
"0x12e0b4787edc9f9d3b12781839f3edfa715accb3e527bb66bb08d355b87afa29",
"0x2489282bdb046d49227adbf0c44fdd3abf0bb2ecb21a2886336554389d452c2d",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x1e2fa77b090a5c2e5f1d37e25ba7d06596bfa3b546362103a4ff19bbacf7e9bb",
"0x162a1276d397eeaa3cd6ee80478788dad2650b1433b55b07919d966a1b87ce8",
"0x26eb2facb83a5a98dd405a0e6a94735a4c04c19ad847c53fbf047732eb114fc",
"0x2b7496ef4e35f11f739db9bd69ffbfc416a0c45512e31f86141641bba04f3675",
"0x26792a375f1ca2315b76d17b3f2bc3d6a3edc3c54f8ae682171143a91e48f091",
"0xbff276591776a997acb59a579846525f8fe7634d66c9477f5406b05985e7769",
"0x20e9af0c21b5cad7c87e554c98052eba561458f8f6b6534c4a1a0d0713681866",
"0x1f5e270d7be396c13a4f29cdb58c7e4f267423ce2d242c93049edea4b9fb4ca7",
"0x26ff7c1cf25310bd71e59d175c3c3a0f068a54c8493c401a3b67030922b5a757",
"0x1276fdeb195702a6a855465cdd5b807f685ce377132b625b3f1a5e934636e59e",
"0xfb72a4d993f139baa0ef2fb229cda32db7cde0f10c9031ff2f9ce3f2b883491",
"0x15a52948bb2ee184cbfd9d2b419836e859f2d39291654c082261a8a1986aac6c",
"0x1a9d4106f5a30c459a80769db1359ea4a3fa0e42cb32ea4ff03c9b800dd8bec2",
"0x1d9250e3e49f0b5829ce06d877703ee0c8e9a51b516f09df7dac3410d6a7b5d8",
"0x2524fab526c690d264888df207397be10a2626b71e97dbc66d1928e358bd243d",
"0x508f820d3a3cb5e0d30b4a9712a99eddcbd3adac2b1301f123e1556e975d30e",
"0x2ef65d57e70b07fd0a22938cf1065e3ac3996df77e0c100d354eebb224dc449a",
"0x26b914f529af1a7e31afa5334e60374474b998ae18e99efdf19e40b2dedd49fb",
"0x155837584dbdbc23962e00fa5a6115c10eee76681f25c51280a1bb2842d8488",
"0x222e724b780a46377b77fd83af70b53cb39a1dddccb0eae70e4d5dd6dded8da6",
"0xd050bd15578fe41175ad1e75a8ad0b27fe8943d894ddd74aed4b463b7f02790",
"0x5c5f00321782b3d2fa6fdcb67fa63d1a00a9f63d35f4ecb08481ab535907d46",
"0x207a0c370129f953e15836e8f91d7fbde34553f94d6b899e8645c96f1731f098",
"0xf875acc749b0abfb86f3bac9e8a8e56be9b9b55ea8815d19bee069150d27fd2",
"0x38a70dd168196731fddef341631e16a97447553f924d6c204d440dfddc0b1fa",
"0x1502b8a3411c7391414156fc640e8a51a1171ad07586bd6de2be2e38fc6486a8",
"0x7984908f8931b938e16c96dac3b58d151c4dd0a92d671cda98e16953c2b7f6",
"0x694d96a531fe9e369427b3457bbed265de03924ccb0331d4bc445c4260c551e",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x17efc478730ddf82a8540cc83c4770636959f1b0d8cf438b239f60df816d7519",
"0x6d6d06423d66562ef9caef0773f3fdbdced70fab47b0de7876b7bfc1216df7c",
"0xc750b14cdfdecf7394c6039339cd465a8a010272c1bff8c9190ffe3f0018d7",
"0x15000d48d85c719b68db8c9ed7e68cd481437c653ce647bb7c965ef9fc1c07ea",
"0x1b18af3d53da20198957288dca6a567b798666bc14c13dec46429100e01f94df",
"0x16e129dc67d5c08c79c6fdaf38def1b90f6257ce0017488b42ed2d46bdec04d2",
"0x1c958e9abba1ec33523e756e8be1e0fac90cf1ed314b37d21a7b4d3c84e574c",
"0xa4487b4c046d0e836db729d214a2b6995146b527ea42d9f1b1008d321a4c7c0",
"0x169b2c93aceb1182e58c94204e285380af13476c86b6c6ab3c3a65c15fa21c4",
"0x797bc2c0b8e08a4eddead0572838c237d0d825e236b725ef88269b0eea4d28b",
"0x2179889dc88d5096ee6914c03f347b9d9e7c5cd8c8b9930b5faffac69478b6f8",
"0x1057d99f4e9409dc2a83b8940d79e8e1c8e9c1b55a2a10f4261575653bcc89ee",
"0x168c49e73137bd006b0b0996b3da6d2562db2a94f94a8e763ea36f950c0f6342",
"0x588b7dc72c564a70347721e31544dfac82344701d29b12bcfcb99c951165ff5",
"0x30052c56471167c83d58a970764a1bb51f602f45b8fe42494182d48386d19001",
"0x284487bda08c8fb308bd9f50b700e107e82ac7ecc25ce91362303a2a2286af92",
"0x2e1e79d879db7beb9259bfa882fe3a1a34345451b230d4e27d7cc8358e43dcb2",
"0x1fdae630269a40c8ab1a64d8fa09af3a160bc7ec218f7aa5ebca2346c54590da",
"0x1d6caaddfaa7d7f98b2a093524361dbccf489a6d2bcc0ea1e2e13abcb025c83d",
"0x5c7c0b2bea90e985b2fd8c7e1e9801335eee69801dcd879edb5101739294534",
"0xee54de6bffe8629a8fef48dc9de7a50885054a28dc85c6649c42abecd607dc7",
"0x93c826c2837f20a15a7dab825f873ca79fee1607b2a1ed279d561b346aa9e63",
"0x21c75ffc19ad7b92256ac9ecba8768feb4b6eace676e2f6700c87b8ea6867341",
"0x2dec2f08ab0884ac001557f139ba7305a30d8c342d4ee53e4d4e6abe61879023",
"0x12612b1a8d7ce43e1cba045f5c0ff9cd61ff60a4df948847a5f352996c0150a4",
"0xd0bfc972a52fd760da54a5e78a4d47042f43be8ce046bb4522be2beb644dc8a",
"0x1bce51a4e501309316d08e24fda303a3f39e962cf2776588c22381009c08298e",
"0x19e6822defe86285515bdee389f08a4cb9e8042ca87435a47443cbdb76d30814",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x2e931e74616f42a131d4a8b56506fbff77845d8bdd66420beb3325097c35d2ae",
"0x12cb5dfc2abb8252e9ff46727444ac95b3ea73f0410424424488e144f8699673",
"0xab23891e07d9b14ab6468d8b54083479ddbcc3aa385804af4531058b6f52f21",
"0x76c297b77611e733d1e889aa59629450dc9a47d6b0f134ccda083f436d85a5f",
"0xbeb7545c1a73b517a6c89f22ad332b7e343bec5aab4aa67759d1bd5c513cc8c",
"0x4c7d041c29a50e697120f25caaabd6be874d81442d23142978d9e30a18fcc0",
"0x564102c95e897c7df22c2a4ebd2f41df79b27754dc83ddadc1e8fb5011bef46",
"0x2c05ce35ea49db3699362c4b4b64a5ba68cc375ad8aade0365ef5421901a5a94",
"0x1656b1dd63124d1354b1830de366e2c3e19075d195f6fe6dd5b28a599f37dcdc",
"0x2507b36b6b8e24780ab4b7be3c26ad57c16fb9da2edb33c3f1dadf3ad05f6119",
"0x126e91f50c4a00292aef54cd15052c4bc6114e85478479b60318e6dcca5d6c32",
"0x2f9ab42a46ccd83e7a7005d4553ad3414e5211cc2730424122170c92769905de",
"0x25aeb979b8ba4e466651dd441683325ca06867a60d27d0b51bab47a73ef3b303",
"0x1856e09404e55249a6d7114a4554ed94bc09dbe373ee994cfe64a06a70b2cb46",
"0xb6edf4c57e87dc5eb7cda564eb72f7673631ed91a612fb422487ad732be85db",
"0x2eeb7ac6201d76d7272b2b8861c44f18045fb30837baf0040fe472d972a0051",
"0x25e7df19e834ef4fc02b6bc24f1e45c42d935dc8e324467f216fb7456e344584",
"0x22254c3bfc63bd575812867c85be048ba6f3cd2d2b600594703450a16ba7b35b",
"0x1f04d9141844aee56a08a3e8b056715e347c668ccc6f1fda6dabf94b2a077531",
"0xff41228c1c85b1f6d2df6e37422bf7ed8b7dbeaba7da63f6f96bf9b3a525fc8",
"0x286cc1fd10f3b5e4d3b48d6996d85e284b6a6b215c0b862d5a29972f6ee1b681",
"0x2cb3455b4afc670928e65d5aa1461ed1f048865f31b87ff6bae6f1b13303a69c",
"0x23dd832c9d5244d3f7d185b3e8b3d759c11b86ce8102dd3811fc743e62a44dab",
"0x128a2af0f0d1965fcb13344373cc1bb6f4fda4a5c28cb7eb31fdec881348eb90",
"0x2b9f84c295307fd52151b60b7b676d157ecad172fc2a8cc89f8dac7dd6696921",
"0x10a3da81ead6ed37cb8334cf6c7d65b69862ed22f485b092bada3c0e516c48ba",
"0xd34d3d1a4e840d8e2cebc5d527a72ce929fdc7ef27e482a0f029a7b8c6875f8",
"0x5a6ae7b5423c19aa7ec80748ae9c1f5d189935cea5723cffe87ee7ceeea8c04",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x1578614d9a2967236aeda5f4a4dfff54693efe351787f006c743eb600a936bf2",
"0x285c79334945bed5f5c307dd65410ce6d6093d95dca5550146995d79028aeb09",
"0x10b5fbbefe482164a1e9c30bb4631861a12476186ebba60da59a8172a24fbc4e",
"0x1cdbb43b87d76d420ff6e1adef1ade355edf97a1646107d44993af476b78b98",
"0x19733eab4c8e4779cc914f07598df3bb1c2aca04fbdd5a116f864a85f7a81fe3",
"0x3009eeefe893a6b04a2d51a027b63406170c305d525e5b959e057825757a8ff4",
"0x2fe6c9de6a79e7bb2342a0c0992a9b8488b4bf43da0ce566e53bea4bd24e6018",
"0x2d40f2520a5df3a80ddab03db8ed7af99ea054e3a159c4a3fb6fe79a769b685c",
"0x22340e058329ac548f679421e17152d6106de7393cda87a9f7351cedd26408ce",
"0x5609d6cb0bc2a003ef02b3f62902f51b49bbed72fdf724675ede239432cdb29",
"0xa4481c88c41e347a2ef5fd6b915772289c2c90b91b3fff301844dabc1c51cda",
"0x14ade810e267932c4023ef6fea6ab0fc56063c5740a256c89e75a17264fa2898",
"0x199252b794492b2d35beeae8c1411bd1b5177e17af65c6f86ddd3261c2f8999f",
"0x1ef0142a7d35ea276712c1b5b86e1386201c18e3f774321cf69b6a0d2ee3f226",
"0x24cf18fdd7098067ebe68731ff580f7c01de7251814a4666ff518222130aa2f3",
"0x1087f37b188ac4ae2e05051a05b60e0579df8f4223d874716a6c251ab62e5b0",
"0x1f0aeda37e4d1e81150239b71a4cda04f0e4d8d7588ce691721df28fe9f18c61",
"0x1184563ea49c28693ec800bf53d6100048fbed518e1317ad922c095d486778f7",
"0x28bb14de4caa8db804e9cfd9e92cde9011c829e5cc88a709d1761638c88a0593",
"0x5e1f290e1cd58efecd18bdb15575356b84677a59c118b465b9671f81639783e",
"0x25f7a0d0ce8b40f8b02ca63dfa95a68e391df9f6d24180cb3cc976b4ce04fc11",
"0x480ccb16af84b2184c6f5b529a3d8f444f83dc11781a106ae10da23f61587ba",
"0x539296f5b7b7008de45d5c8516fa99db18f1a822529d3266f60fbb9959d4eed",
"0x1e424153fac06000bbadc168cd28c2456abc7b0be95eb89d8dfc7b9bba75769f",
"0x932c03c10fc912a134329f330f819e8d619aa8a9b6f52599e0761ba32c60e01",
"0x1211f6c693e1d0dea72aa0a0c505dcf1f9fd56e16545cae0818d554937473906",
"0x423bc3cd7620b919908d77becca14373a0fd5e3e9ba4470d967da7ee65479",
"0x2118cbee96964430e47912132f0d6f1c2e6fef1c001c8f55ab591052123d04fc",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x1f1e2374f0f17846133ddb87fa54430c6c3ddc9c532111de01eda3684f397a94",
"0x208b76b6732f2ed681d8ab9f1b5c510c8867ac976a3fae72d5f9d88676a75a7e",
"0x1fca7fa1aef782e5f42195a7691e73b90033df38495b91e5c38e820426446820",
"0x17f136e334658510bf76430b18584795cc8bef7a11c33a61b5259339acca3353",
"0x2c03456c81a5e2e32aaf6ff4f1d5720677c920bce4adb99d1d89a60618da2320",
"0x1a5ed510e6e51803fd72011c2d6de4c638d51c6d9a57dee093680dc336f5d34e",
"0x1a936bc6777c2da71bce31f6fbd646a3d62a815680203edc66acd1148132029",
"0x1b4a61fadb468df53bf54dc94e9a1892f69e693a26623b6c768c9b6f08eb260d",
"0x22072ccc189a669fc9c1dec178dee22e6810db51fb07d2e1c4aba223a89f25f9",
"0x1970d123b4ed8e8bfb50c817284430e9349f042e456fe5d518f499c071f89430",
"0x259064221267af8baa25e034c726164172e8ac0889f3d62d29ef05acf962f9b4",
"0x2287530ba760334e46b1a49861dd542fcf4151293041712c8544a467a9071ff3",
"0x840062bb032fa90a3eaad025fd47a6353793130aa0b8626565b48035782aa66",
"0x1d555f3bbdd6465b30b7da0ecba9891624d6d041bb781264a89aa7b16d346c0a",
"0x23d4f39d8b478d9f3fe9c56850eb091e6fb14326aa5cbc9b2b0d7d87c283d763",
"0x2901b8a58d07adf7c3080c1a36cd9d70652aea9b07702d07ad0923d758cdb949",
"0x2d5fd10271ad1b7fb5f053107e3e769cd3509ed4d501be13cfa1421b5394605d",
"0x207c3b106d337e3362d760cc41cdb5be011fce738e5f485d2b46b93c64cf9b83",
"0x1492c0ecb1dbcfa1c6635de3f6b7d9eed6613a602d44fee471a9757bc7b42898",
"0x1644d335356808c816d04419514ff5ec328dfb9ddf78e623cbbb6b20b4ed3bea",
"0x2fa67fff02c7d3ca002389d54c6efc4687da94708f6e27d1bc5825f164cbf4a",
"0x21e1ca08175564b26d688202433c40a419bdaf250b832229f4a1f31e8ace5464",
"0x2cef2de85c29234f8717a47931f3e7e5d26de54c4009f0cfbed5742defb3bde7",
"0xf9101275c6d82c585bb03708869626a1b0edf857aa536ba105733f0043efda3",
"0x13d2ac8ccf60c75462050c8f441e1ef92d1b9a842c36bfc82ddff6561efd49b",
"0x23a7cbaee856630abc2b423732eeebc1ec3e071391d03f9c9b51351c67943e5b",
"0x2d3d1ee5d3afda1af49ea526d8f250430e61921b93adf072ac5202b5fd8d0f38",
"0x2c40a0792e0eec8a8ff8b91a36835ff0774e11e3f13120c7a6a0efbbd6ef1f0f",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0xce2acb8e9575bad440cc92c82f19694f1ef1e5f0dc1dfc83c39ed80919709db",
"0x255e8b6bfcd73f20e6c4bd3f61ed3b8bd17626c5e5a843858093a7ef55eb1d61",
"0x71756e3a68459939af3577f77567bf688b996b47f0003c4509df83345846c16",
"0xbffe3446589b3eea6ac107b311307d20faccc7bb45dd5d6849cfdf7ebcec41f",
"0x18787bd666cffd2d76b9b7344eed8e34feb8f96edbc138486fbba2cd628ca4b0",
"0x24dd90cfbf38861e307d9dcfd5507b2298bf6b2618fa97d7e36b07690fa7c13c",
"0x1410db3d1ff17500d908b029552bfb5c44e3cad85b44d8b7070a60c359be7abe",
"0x114c5d80f6a4fac9b3962788dc0c542378352eb593c0cf88355d8c8032efdea1",
"0x1faae4eaa27310edfbc782b40c6ba0969779c813807d81630b192d053d4d5c71",
"0x1c6a9217a08e3d6b4961cfc839d6e8218df84ad042219111f80d068524566422",
"0x2779a31633b41cf11d988b3560faa03f2fef06ac2b58f88d89fc5f386f28b6fa",
"0x1fef33a133dc716d8477f6c00854b9bbbb087ad39704e2aac12ec22518ca42c6",
"0x51d3217b934abd02e647c9cf0f9642b2c35af886b2a45cc7b50fd3268175a65",
"0x23e2976b87ebf7b64a5a3aca1926bfb61744e0f4f8360df40500f479e052e17",
"0x266d4f55ce9e2183ac237c1cb82a138cfec9b415769742b2feb57d27eba7027d",
"0x220ed82038edb07e0f74092c809db76ce01adf533a42b51200f67cd58bada0d5",
"0x1739b7715b95db81ac96c21ec1fe7bf0bc6766b37d0572066766e34ee44500e7",
"0x270da5e7651be197e4b200aea12cc8b88c633d4086a0320fbd7b25ba6bb603cf",
"0x6f6db411a03949e6bb5c0a24f49967f1eb39c35eae012aa873ea0b3447d6f5a",
"0x117a292cd83ceb0d341c01e65590f4b38741c3ba51c0d717d273ddaae5c59cbe",
"0x263e482df03f958b16c2130b9cea9b74b47ee5d7f070ed5a6ab849074386f863",
"0x2803f7d7e3cbdf5be9306a32a90b58cbfc5490d1d74609cbf6384476b29265cb",
"0x142c7e2c2e91322de905b8420ed32d6ff157d64e792a38ee29cc9b316fcea3c8",
"0x147d7bfb2d88839714acc1080d935f9c289434d5d0af4772699bf4732c13323d",
"0x24bdce338ee348af82a60c960800094d5794d7a2607d5f3ccdd1fd4fe7b95583",
"0x10a0a7c38506d41a52e6ed0c4e14dc1283848beb7de73e0e92d4a065121c25e2",
"0x2f5162740cafbc5f21e10a4eaed36ac331b046f846c46a319b54d9e2206c892d",
"0x2c74369be037f8a5d985bf78b1e89838e0f7c1aa845979b6c5142747a0bc6b0",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x28580a3d76cb8ac7d4ded32ed3b70d34ba761e0b09803f10d1196eee812c8e69",
"0x19cf15cc84de7c87a59a44d02e83f88120bd3f7d1ab07ffac878a17320f4b2dc",
"0x21ffb716f9f4688f477d2b03bfb4c4f57fc37c75b46f85ff3d8da6e028263594",
"0x1c5e5652ee5c51f74663b5612d00e002ecaeac6dfb26d143e8f52a7b62c81346",
"0x309be74d7ea79ab9868e691afcd53fdd6591a5c8cedf965a1895229eff54a7a",
"0x8533bd365bcfcca44a62b4a3d7e1b0963ba990d5bc5577aca90f3edae8e319c",
"0xe7b927fe75b3e3322651fbdea1e01e7b5b9a3022e640476d39738a016e11728",
"0x2c044e77e1889c9f2efa9d217fefb1003978eaec9d8c99a494ca9c6bae1e980d",
"0x16ca28c9c6815d47c13eeb8a6baee797a2f9fe8fafccd65bc714c8165737d172",
"0x10e2a1c88ffa4f4f58ef6974b6f612c37755a1aac408008ab7b3b47160925666",
"0x2af08e42bfe36b6a795d78d34a4d4bfbba27adc10a144920d5709fdef7977301",
"0x1312b9ac40cedcdc7154c3a110803222b42b2b0d944ce7308a992074c0fdc257",
"0x1dc24b75a241225e913226bb4e43d43c7d47be4def03fd1b569eacf726f4ed27",
"0x13d3a4fe3528fbe42ec423e367bed051490e1b014ede6b776b07d8e15509d882",
"0x32d8f0cf21c697ffbd788f3f63ee8fdc1dcfd3ab649b39cb5e11a6bd2a24d03",
"0x28c7587692973d407a133b2fb5502ee9a51a4671568fcb05435cf0b5fbe69ff0",
"0x28e40378256e3cbd8a7f8cafdbed2021aa49f01a7d7056858bd3eaac1dc0538b",
"0x25d943e06d1e141cc39bf61f79e7af2d71ee93b361fc7237a2d9a8abc986056a",
"0x17081444189ad527d5b845af2a97df8c7a4293f485b483f9e8ed7021102f6443",
"0x1c79729fbddab541d2ecdafb93faac1db19b4de80d06b964cf4cdc81e1e6da71",
"0x45619b6eb27ecb55a5fa865895e4bb27712f4e95a84af9bd717b58e500de857",
"0xe2a9db5bdf2e81d036943df530d84e17424ec54f39c8039d37dd85ef65e3dc8",
"0x2ce50979f6944eb44498a1265db4d51ade51e18ca81bc69c0324103cd4116d6a",
"0x2a77de1a9d04ffe3b955ddb3ca44d5cde5ab83aca3057ad21d2275326fe032a3",
"0x17cc644fba9e3aa9ff2cb6b1386494c67079d7904d5d02828a84f100798d4ecf",
"0x231b0e5dffe1731eef0342d728926ae7c9d14cf32b1873115a3d47b231dff70a",
"0x2975aca67d081b04e4e00d824d5007a02f47891c5b0e6d74fe4bdc36a2c3dc35",
"0x12dfba0cbb1703dd03aa3c6e434c14e50ce09615152380a14b97bad4aec1a8d7",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x138e38994513bf4cda526bbb6d9a7ad3fa60bbb5b8922f3fa889be7f81acc688",
"0x233a737f744a6f8bf1fd4d3099a005b4783893e8203403271ac14116bb96bed5",
"0x1c8af617088b03edd11e2697f3f1d61aea527eb312465a7d1d97120547e5eeac",
"0x29e028abd359a281cffcf8e6def73b243c8c0b7dfc781fe16d85c9636647b689",
"0x11cebc3218317d6a3fc99fa24c0297c3c917d2c79953fe6b195043c1ef2a2911",
"0xd9eff7d690ca6de96fd8d2f757fabff01e7cff5f9af21a331beb5bf3c2b1384",
"0x2c10ae179ec436144d591b58693d48867a3080302df8f221f646d00519233ac7",
"0x195340f99f3142d58a8374368ba7b0aabe7551bdf4c84114c543733fd41633a2",
"0x175a317578f2686003214142b6ac875027c021572904376694f8469ea2da5c31",
"0x16ffe892781788c756069f60af49a1edaccddd1252b0add84fa3850c4f80002d",
"0x82ea1876cb380488c70f7cdc9cbf6c494a3dc6db449b27b2ad55500a9132673",
"0x1cac7d7d70279321973432ff45248a4497541d07c9a2b26eac2938d661eeee13",
"0x8755249140b336749da4930b6a82f6f7190eb05c7daf28948aed60049d00f71",
"0x207de9d69726515af8d068d0d26537798246579d29ba32be2dc2175e53cdd044",
"0x1405eac8634a44a35197a6503a005446b48e7f415210523162c39a8a8df15829",
"0x22f87c997cd1bd13a3cbb02d3d534c897528939d9e6714fe0c611c673d67d86f",
"0x143d40dbf8cd786ae5b20fdc9242fceb6224b64c187b36a7ca66489c86489299",
"0x2fde0b770674587f1be3feb619b4276125f643518ef715e694213e3134b7773d",
"0x160ea6110b10e9e3f0d14cacc486c0ba8f9bec3498024257ca96c50b2d2dec4c",
"0x15b8418dc1c46f3f546d70d983bc32122e40682185698f7f567f13590a1ace6a",
"0x20d9d10cbe767a538eca9be227274944094b9e9fc01b61b657afbdf6bcdff00d",
"0x104952b13891c92a6d7f1c5cba983aee4a3dfb31a1772d99192ab343d4e8519a",
"0x107209e0e414a0e40dffbdc7b52e2ae3de04e4385a8c810e92ed2bc2f67411e",
"0x1bbff156637ba8444d8679abf776687b8dc2462d876f17229f0d0b62b6eaf9c5",
"0x61f0e30d8aeca231af662496c1a4a5f4c6b283a79ac0e01bb677cb14fda83e4",
"0x3062b61d13e9c6d61471833d8e6b52f8669578314817ac28d650af7512e2386a",
"0x156a1c93bb1bb19c46f2d621ed100918d9f3194221788493be08644da83e4aa0",
"0x1366584ccaadb9ef95ec40f53e9cc7905204400b52fc6b9c0d21672fabf65753",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x727060f004a12682948595634ffb74c7351aeb401f8c16c31a333c8638cbcee",
"0xb43e5d620c5f01be5a5a3193bd458a6ee196533aa8fea3efbed64a83ef2ff93",
"0x711911f15ad7134cb9ff97051a0f73f346b4be3f9754508ffad823c11e60415",
"0x62c118ab0b9ee4f81d12e70d751dbff7d7047c895aec5d87b0e1dbfb311f9bd",
"0x1edc90b1e2679d7b61040b272d2ecf8d471417e3df89be715d5a85a6759ec37d",
"0x2bd026a17123ff82ef6a745e786ce3b69171c73f00a518889c320675a4a31824",
"0x18b9a646b8279f3242e40800752742093df705aefdc130e903026d7e6f37711c",
"0x2b6d003cb10653085f4ca141b8674a257140e4ad022a6e85a5681cd3f415f3cf",
"0x29ca967040bb4ef6fdec0008a3a1821b9a2682629abc6c2f37911be83c4d7b51",
"0x29c5fe585036f56f24bf281bbe3891d42d867ad8df031759f34586abd4341cc2",
"0x18250473c36c6b2fc023d9f980e9117d2b7d815386613cf518a5d5e1cd98fe8",
"0x21ecaed2c0849f445ce370dbbff7a0f4e3ab45444ca614ad818856b057d0b559",
"0x50f18bada3b7265d2194dcf45262069827248a1f68fccd800ff0c8f498fcf7d",
"0x1056d0bf8e1c158a403fcba81d1b25ed10ce7bbf7436a0f82af53417d7758da7",
"0x10ec2167737c5bf2fe50fe1c44e562a4fa629576c43c31c2a067d3f7e199aec7",
"0x78d695069c5a1d37c71299f3f5667516b76a4507a4320117ed26b3b6c05efec",
"0x302b34000b8a4c5f411458a6c12a335a1e0f345bd012c03e9afc62c8fc07dc72",
"0x25110107d94ba32e47336fb64a434e02f723e7a429eb23b8413ba03500c56e7f",
"0x239c9ad23c9efd9a7be7489e4a1240870a605c5b8e84021f3bace86281f5fe6d",
"0xa71eb71ed1cfc23167804f59bf51324c69d188602e732e5cc5a6e3f73455033",
"0x22f12028dd01cbb90141cfdf5497ad73403416e437f063e1ba391cc18bc0bc5d",
"0x1d2ad4ea7240a2f71841635c52eb7a7484cb97abd94c70bdb187724db31c953d",
"0xafc6833626de473ca08a5538a64a06cf9b604242f029c4ec576ba6a1376cf97",
"0x19e01b3ffd3d1c30017cbb3ed8dfd60838f70e001773558fc4a1c9818bd4c197",
"0x26db05b80a904a64db20297cc63e2d0a190ec9fcf9d528b9db88f7e079ca4d49",
"0x2d8286dfebb09365859e524291676812918ebcd2b5e25131884e71037a5def72",
"0xf3c76d71a422101870aca73667ead0b355e8f9a8009aa29941293e5cc105d",
"0x2c7142225dd5a38f329349d4bed6e06f58baa1c3dc32a6abd057bab3a45eedca",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0xd4830722141cace7a3d588567117cd756deae9d215cdec0d2c55c7dd293cf31",
"0x826bf62570b5a5f61782845b349810b7a481153e7ec33bb3667e4a2c7ce4912",
"0xb74da59928d6c22800edc212200770147b8fcbd5d40217cba2c1ae784ac3c66",
"0xf5da0d1390cf5d4fead2ae4e463fed71d0b1d5095428572009022a7550864f1",
"0x2704d9998e1e17d5a61ea377b1b78ed6d7ec951afeaff523a406624a99447c04",
"0x300f822aa4b956ea43ab45b043adc967d41d2f7d67445ecce1bfd3259e62df82",
"0x43f2876cf4a9b33af023d447bb90b634b37fd6a432b920e2dad4fe1b9f734e3",
"0x20d982fe655c37b7c046a07110e57fa8649939e376a4fd1bb6bff3f13f88dbf0",
"0x21d6cba8317dac264ca383630b4da90214d803c503ea5520c5b44dffe2c138dc",
"0x873018963b4084347ad81b085693cfca0345ab963f656890c90882cfc5dcaf2",
"0x1e6176f2c8c0e6acb5b02f4e54d245f806b9fa7bc126b3435b79e5819fa8c9cd",
"0x21d440ca5e509e1ae0476ae546df34414d7abf9152806b4c799177b87b153f90",
"0x85ac321a5407d7ee948b0cad303f92751532cb1b55ff17e7267c0c9821bcf80",
"0x225fc6208bc12aaa5deba3688931a2bc8617e6b4ae76c1de0e85defe38e2f14a",
"0xaa6847f08b61d6fc7ea711789b76255d14b6ad7de89124c962fe57f534be98c",
"0xbb3bf6dc922baf1d7a9f555396d78f31cfc3cbbc534c016ba6879d02cf400a6",
"0x24118b406a39de6a222bbb99be1828f9d70c24cce6ae452b20644f3a6730b95",
"0x23f88043dcf501f06a9ba388b05f1c14ba29078b978e7f9a3aba55cb0bf1a7b7",
"0x1e9ff4d090215f88d9af53bbf57282d31a835a8a052dbb19b5c0b366b451cda1",
"0x26ff7979c38be718b092842e02cf124d1cec12b426a5ed8351b832385ddee404",
"0x62eed7ae94588f149905a7d148f763c8422e7e0b6bf5cf5ceaf80f7a0754fc3",
"0x2ddcb93912364f750150441743c32dfca87fba3bcfd285a5cdd854cc312a6d7f",
"0x1a61c812aa97e5dc63b827db3b987d759738826488abecce0592af6e7281336d",
"0xaf260c0175dc1188ad11222368b122a1f0cb5f71d5df47517f2190748f803ce",
"0x6c547f8d368f03ec5aa00693a85d2b4cc56aad88006aca1e46b1eabb84a5d54",
"0x15a040ea72ef3252816f453da8dc97a9b417011e9a65b0a8606248591e597199",
"0x2e0ae86bd039654fcbf8795450a36958139b3e0941b98778395b8ecbf3b40e84",
"0x71936ae5ec7e0ec777485d9400a8c414ce233e07352a9ce683ae41943341c9a",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x1fc8ace75c85e6d3a7404fe02b03139b6a67dcfe2d14f7af11cc30a2a8ece33",
"0x263815b2a80b71e1222801ac39bd44faf23d0e21d2f31fd213d300689a720d8d",
"0x1a91fe38ad898189e9dd7ef77559185a79d80481808f4044daafed03742d3ff7",
"0xb99a6192c5bbf619624d1c7cc7d90930f1ffb79a6d4cd145bdb58a85f35e324",
"0x29df5b722979b8c9c63743c5d997b720d1f938edefd5a7359651bdce60c352fa",
"0xeeffa5c228914c03da9a2eb5fc92f23254bcde82c459c81266223e6fcd3d89c",
"0x2b3647ce374ceafb0ee9c4f5ed4762db7240d45a5b01f3873f2a4c8b86a68be5",
"0x21e2872db7718e97286c2239b5b721a58d89ca37d43dde81d5cf049477dd1c74",
"0x173909ac99ccc3ecd1ab2fb89246a648ae3abbe251ce9c0160bca5712c0626ad",
"0x2e2fd250ad31b0f543e958e16c10b3cc9e62e52c1a40ec5ebab4061d3880dd32",
"0x2dc7cd826f2f2b963a180b5a0fb1b5d20d4a7cbc860679267142a707c6ba48d7",
"0xcdf628de6b0bc2b35d3f9a0b2cac4cad27e7e1966c39af983d63e1461592bf0",
"0x2bf2f603e91d6eeeb104ac9141798accd525fa3e241b1182753d4ff3f59b1630",
"0x49c9676b595755be2f328863936312442c1c07504c5bfecd793e1eba7c3f675",
"0xd1fd4d6ff542b060b3b90ecbb825f0f890820144be4bd0334a2eaf8339c9af0",
"0x2206a93fd04efa7e79130c0aac582fa50c5ca7dad614331281c3d49ee4c1c67f",
"0x1b8b1f32ab840765cb6250f4c9c019d994fa5858c67bd585a5f4a7663143ecb0",
"0x55cbd5d71b787fb96fab44c8c6a1eaf3aea505c675c32f608ae0b6ae2e71319",
"0x24a63962fa639928e90311ce846f99b35213568b65cc1db5fa65555a0141ea9d",
"0x2d41835ec9c8dc848bf62b784a9d029cf7632369d3b6e9f6877c671495831bc6",
"0x1c3ebf1cde47404db2c523c680ea3df60668ad37b67fe50298c632b77bd3f625",
"0x4d92032856d1eb29140d9825a6cffcccf00f5fea91b85aaeb68d47391a67f46",
"0x13fd59cdc2da8766343e9dc78d0604c7a453c4a4639f1e1f66b154605dd00cd4",
"0x2d56a2d39a3db620d7b172bd74553d09cfada80fe7b1f2bef3fc4cc115f76123",
"0xe8cfc663445dc81cd06b084d36c85d946c6eb49871add263ce14f2b477ad27f",
"0x2233e0d00be5b7a77da192a5fdd91db5f196705ea0754e4bd1db5a357b335092",
"0x153dcc887f5dca8999d51ae06fdda165dc03e01c67bd8790316bc465ec4b961b",
"0x1e3ea34066a170114f0c76573452033360809012bb9ae4c24b6c1fb476d5d5d5",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x6662bced08b16d3d3a50c9dbca0743d66c2b0d5060c68983d8448ba7e09735d",
"0x207357fa70e47358e4df94e0fe2860bb2ade565460c2f2ac9968718b512fd761",
"0xd88b7243e4ba947985ab06738bfdbcd72be75c0539fc2c65e016612cf48a0a8",
"0x29032f478c7b5fb111f8d32720abc1fa050676c58f783bb6740b5876211527d9",
"0x1f58b00a5be5baf9e1da120d8dbc12a767e304eb63c0c05528efad2b95f6d010",
"0x5645d027e203626b8a8c15707cad7f9954b915bdf620a343812470c63d6fd5",
"0xab572420dfe8794515a8ff4fe71b0838d46a42e63b488bdbef2c6721668758d",
"0x1876c13f9de5d341e254b3d2c4bc8c272e270b58c863ffb16324a178986dd709",
"0x21ff416c00f6e478e470f77aead4decff3ab847e058e66bb56b1c75379d67d55",
"0x104056d5d775740ba150f6807d251607c5072fcb6d204b3a92646b76f97db4eb",
"0x2859bc2f280545367b3844134b23d2fb6ca07c51c42eec18800cfc795464ffd0",
"0x232f777c06ca70171d09129c01814b57a685224a3a752deefde04487f731dc54",
"0x2cab0c414d906b4cdd83f08fcd68d3b3554fda8f17967c89d0b281f9e6e8085b",
"0x291dc030472a4633fe37225419e9e26ab406b12c6c78b40bb17a9ed3af85841c",
"0x11b3be92352e34d0894a108302d097e94aede2b931b40b162b6792f127d0dd51",
"0x1821450cf9950eb2f0ca14ee17385735c0c0f6b58ecfb4c341732c580e15289a",
"0x2c7185a2965a3dfe86d2f88a14e66ff3cde5f1a4072fdc5e903a5367012d6bc8",
"0x19f8b88431be608148ecc8a862b043c66277c6d244d4bc9b063488d470f91c57",
"0x2e07597ce199e34f1a907e135ef8c7f1d43ae46459065f5ef56dbfada7b14086",
"0x20dd50883de922f31411aa269a38a809f86ae985da0dd572a02b0a115e57317d",
"0x1deb58e4db0e059b5e4233a27f3ebfd5c56fb7c8a2e0952870ff89bd985b7fb8",
"0x772b8311e52b960baba8f9ccb8d74d520f5653608ba810243854ca306e9c5ac",
"0x26508ad8ff73d70862d1ec04e406f165c53c04a0c3e466a11a2456656a2008a8",
"0x2e03dc18ddda2eea605f357d82c0a7a9e05f74d078d0d940a0e7506dd7dbb2b7",
"0x2651122e5715b7d5d0d396b8b0a6b3b219e1b5c95a0532623d9976330dc0c7a2",
"0x1d2fa1a7f55da05e2e77eb2c7ce09b4f4c0f832722262e7e57108223bf2e4a75",
"0x20991d3f8eb785ca08fbf1695aa09c0664465858de5f63e628cfd6dff4dfa7d5",
"0x2ae4c4986606935874c81b044f450a6ad91c1c6aba4670091cf83dd34d8bdd45",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x22d5dcb58b751b33e61941e034ec6a5da20162b44a67f2f2c2a32fb2bb19efc0",
"0x18a2197cf988fa8737f9ea1f8f7cf8e1b3da3a130177b80c47efb5fe8ab3ba89",
"0x56472b01f8796af3bb76fc84acbda7f174f54c3129f03f6b36d80375bef622d",
"0x28a91c2f74f72ecbe75a6fec418b9ff6bf08c731ca114d6609478e2a498f947c",
"0xecd04c63ed1ee68ae94d51633155868402dac39e3c8383e8f0d45ffdd1daef",
"0x2865c65b845d8061dcebbc8f2e91762a9af0a69c4d7692d60e3dfe98400a40d9",
"0x2f50ae99cf9753fc9a1344a654574dd7d4bec32df7d1d4b1cb4d03dd1f7319b",
"0x26b34e635792eeb315bf2e03ecfb8b00f7b6bfc137e759436fd0e5285fa5e8fc",
"0x26cb59e555d2111646327f7ec9cafb3fb4344b894d7746069794c491f71b5f82",
"0x165c43eda77147c1408da412d24ac1314a327a371d2f6c0e3dc2c7e956e96046",
"0x172edd07fa59daaeb04cc4a4c783027401ed8b47fc6fbdfce05543136805e1b2",
"0x2bc36f035f7bceca4001545d9fd98b0f2eae858e5c4b0f0e219121591762b378",
"0x22d96b2e558884ca077f0fa9c41a38155875af1e91f5e69dded36499c5786cd7",
"0xf1146e591fc72056c2fa40a35b202e6ae29a5e6d91180713ccf8ebdaeedb917",
"0x29510d1143600cbda4f235f0c6c480f436e20daadaf9461a032204de009d6fb4",
"0x1dbad14882314499c14316375e9b8888be4351bdf3b96e2651125fd03ca89a29",
"0x19d651b0c567b6507eb6a7202081fb6311e8398a80d53195a5b327b7e5810427",
"0x196d972248e180296caa0f943f4a034746a000205310b155fd0071bf6a20341d",
"0x2e823807f3a2c2db81181bf7761447252307c8c7e088f9a470c257ad83a1fad4",
"0xae07a00e65e68f06fb34219cf2f0b819ea6bf147168ab5f982c9513a661e10c",
"0x1f3ffa4e4b5ac02fa89072fbfa10d169ff5cf382ed54a86b69fe5ec3b025c3d4",
"0x94323f9b77a979d42a49cb1fd0f4a5ea253e908b0e96f47a308e44085f0bb51",
"0x7568c62660c919b4295dae1e761a5e9bd1ddbd05f77de4977e99ea46ebddc59",
"0x1d28e05e1aee78e0a9c10c97e01193eb1771c3dc84ac0af0b7e9b7a5df35937f",
"0x1479d6a6a967e7a7672a01c2c541bb92b677308c3e365b73349327f39f4593e8",
"0x6872919996f740aa2559418c0da042d15ccbba1cda06c95daef9f0ddde4a6b",
"0x587b0974583ba3b84934a500bd726018b08125f5f007d01856fb2c124e00e4c",
"0x2ee0bbcaf6798f8cc107dc4ec3157dfcaec549f36a87c934a83f1c080035adef",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x76373d256d68ccdb201590f87f661a13d618407140b6ec21bfcffb267e0dad0",
"0x13a5be09677fa0af3fb23e95428b7cf9e7b8276baebb1a39b87a1bdc416b270f",
"0x227a7259c3b2135612d12638b5ca5973ab9d6aa6d6a335781d81821fa8be02c9",
"0x25d96493ac371c2ba8dcdc9bf29b1b512f43aaf38fcc86f17e9d44d59d870cdf",
"0x1ec1120411deede740e7e3481b96ce1492b47232b208f15afb2127b41189afed",
"0x12067c9f5be28c0974e55e19274c65f752c82287637ffc5104b35799362b0f0",
"0x462ea3958f9c42d0b2406bec8e38576c88d964597ae61f1f07d811873c464db",
"0x20450babc7a6e637d32d8b57f218412a430fe087706d88eac441d6871f5d639f",
"0xb29f887572517d826f977c371341f2819995e65a2929c078cf4a937dc68558b",
"0x27d93349e2cac8325e4006aceccfb9ab165aca3895697e42e23b78bb1f172a54",
"0x1969ee0572799902a937545397b4fecbb83446841ce8525b714d765fb25d9028",
"0x1edebdf580772f616131435b17c46e0e385b3ab83494207efb4d9a32f4667bdb",
"0x430dc17c3f1957758e57ca93c94c5623073e5580c28cabafa400c2e5eba5fda",
"0x1dfdc9b2152615a4dcc8b252f17d97b8998543e84b9b8cedf8d683d917186b64",
"0x48a9afbd6c11ff4a680204e895b655e004211e495f2bc46dffec598bf40ce49",
"0x2511be820087db2191a273650de721dbf7abd3ce15bc9e95e2a7153443ca7fe9",
"0x1b255c37973fada56a1251fe07d617ce802b4ec2f60a002e1fdd9052090d3884",
"0x5c36fe03574074a04ceecbbcf02d231d9d868aae698b20582aa556e6ee34bc2",
"0x14071daf49fe401a508085071812c378491178f66712eee8f1cd7f611f8632b0",
"0x1e8a45f66dae3bf77aced336508d0b566ef1aa9d582d9a44b9028d2e1a5c28a2",
"0x3470d55418841efb8777bb16984dc9d71ca55b601c6a9acbcc06dd8a3a4e4b1",
"0x194cd0a75e5edf346e694e78b831d42070d93b69555b692da6fb979a78afce0b",
"0x22d1fd9d50ef28dfab1c35553601cebb2dffe723e366e956a2d9f2001517b92b",
"0x64a916906b28a8a1a2df80019b67d7e40dc686d00333fcacd63ccf129d1e281",
"0xcadf1f120a7ba6a73fb4f5980c5aba2e0e44280b5c9478f5d800e61fc39c824",
"0x11783cca91ae0cd06b91cacd517e51d4f2e7fb59202993dafde30ee181115b17",
"0x1563d52bb66c227361975dcdfcfd8f6bb9749f86297a5bd3a6be74b8d5bd2bc1",
"0x2e3cf2cbb16d4b6a76f171d80a9b92c4b8324721e6c3a29b77e2c9727863314",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x106cd44586872a1e98d029a76a334797c6950fb72f241e344040ec5d1e766ebf",
"0x267c81eebd4f9bec2d7fb13ae6ab345774192825ec38779a8883265df4b743b2",
"0x5cde6fbc024c52d0dd9c940b9450547804aa6aae2bf06ab7bb2c3946fb09aa7",
"0x1db696f29132c9a065e392e606d3bb4110213b88b7125ca0157a776212418837",
"0x269b78b6fb577d3a5463b0b88bfa91ad56c1f7768b55a6908120ebadf7faabfb",
"0x1e32a4b9639edbd369aeb322109c919476aa85e28c2b7a8a111f9cd906bdfb31",
"0x2387b1982e0083a0621b4305c2faf4aaa0abd33dc265069e9b1d59673f5b1816",
"0x16f2a181e0d79d0a39169a1c9389d0b67e50fc5ecd2598d2d875ccbafc659ade",
"0x1c418ee3dafe2d97e5b84ecd7625b8598c7323e4beaa809d77cd7a3ab52f5c57",
"0x235d1dab5f72d1b0c0cad82e5f46ae1972117eba7612ae0581ab85d4dd9b77de",
"0x11eeabcb505206e74ddf6a4417f4d6c302d843dad5e5c1e536004e100f729c4",
"0x14b4f6ffdc590f859a491af89cdcff26ec963551676e4e109f333c34a0b3eca3",
"0xea3a8bd722b025559ae438ef85f1fa8364cebc831084a3129b7498fc7067aca",
"0x26a63daf3c27700bc4e5a0c13c12a234e8a13dab66deb6ff2a8b805b107a4518",
"0xdd28ac1c88f9959311bc53387840e131726a6ab9b7fdba12f403a3095034ae7",
"0x1221db6f8687604bd35fd586e0944a36880fdd1d1da2b771fc06bc80480d89ba",
"0x5dfb8aad4d6b89619e41ed02e593f0de05dde06b6aeeb1ee8b89bafb087234c",
"0x10ba8b3d427fe867422065e1b2a8e0d06d567e73717deaec3438fe36b1bddd55",
"0x13cc217fbf1b60972234be03ee877b96d287e30fb869bf816662d2887d2dc68d",
"0x1031f3acc4288235e55b67f3435fb1915cba9ce0d0d1f12e0e602e2d605497c5",
"0x18ebdc6dd67f2d5853541af16af792756aee1dd1132d3a6b1d0734db793a46db",
"0x10a4bdea8bf3a0440f456c507069645ab3738171f896cfe3b5890c9a0abebc0c",
"0x21e5b46f2b85977f8e4c67f37c30ddf03556eb1b56d8339f046a7d1aa8d9bbc2",
"0xa8735e02e11c8a1e0a56b24ebe7a39223e2beccae352597972fadd8f4fd3abb",
"0x27d5d5655c3a948d91278714a40fab8da89ca600e748a238014c98b932609fb2",
"0x18b4b6e0794cf364c6d4b5fb44a2899d4ab038d6b15ed634c6c12accead7e73d",
"0x1b89b8c9a5250e9edb3b9fff6e54be5b8c173bfbecb8eef3847d8718de0fe29",
"0x27a5ddf99d9c4cdc9643219a9cd3e4f47f63a581af9a499f8e064f4d2c726a01",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x237b081a68e30cacc4213ba3d2b153672483ed173125bad4014448763d2dfcea",
"0x29af4e6cae10dd99b672d741c5034f91762b99be844b0a938e967009578e6ccb",
"0x91bd6b2497eaa902ae05480699f34734c7f74b073af6c4c559bfa3a33d4e6e8",
"0x2f7f9c0d61cb36e331f2780b0edda03598067caaf184dfe95613950f8700360d",
"0x244d6e7fa5583e36d41ab75c679191497f27583a7ea7f5cb4e87feacf2b4dece",
"0x1f174e5f54c883afb9ae5b7e955380190767072e59db3a1e1b90d7035521359f",
"0x97f23268924c4ccf4659499274ee72a1a9c83e43178454d49d675f4e5b27150",
"0x3d2ab62fef78fb69b7049c41e34e6f1870662b336afbd1518ba776218600fec",
"0x2718711c73da1e256d1b5c21c6b2e5e43e2b0039e86f78fe5790e04b3c7938a6",
"0xd396383655c27ca25603d88e3d35c3dc6334506a93d6909745e52aa7854bd4e",
"0x1c66fd746293e23154ab298c3e4ca0ca14980c6a0a3cbac979d4ed8fdb9f692e",
"0x15708a52c8abdc860d066e0ab2a6b5b5cabdf1301f676b07feaf5342a971caeb",
"0x2b821cfd139e0da4c55cfbd8b67a7d7a4e7bf5e3ce1932b96f6701fd39e926d4",
"0xaafbee598eca5624a31b7f40b836023f364d41b6b24d0d7832eb180a60885e2",
"0x15c92eb4730eb68b229bb67da73fff3ca720814450162a81d1a7a56c83c3fc7",
"0x2f7200c5afe273cc787b0add86e9e0380db97cba269f59d0fd264b9ef144e839",
"0x2eac5180790ad9bb069b4f7e1842ae9fb0b069216c9b412da6094e2a69572126",
"0x1b7a0422eaf807c0c824c511a7b52be353c2a3789591deba9bca9a99e4d92869",
"0x1662fa1c78a1621b5bbded5e9e5880a86aee481fbc455b3849d16a37cdeda515",
"0x28972f5963c0ae4ab2b03cb80b4ae1f1dbd905fdc3c657550648bfefc4c719cf",
"0x2424d119a1299933b209b85d4af1aa89f8523801efeeebbfcf49c1b6f95ac740",
"0x262a05cbc85dc177e174047c94905083a27b4d887f8050c1b98a07608ac8e373",
"0x89d1b0af58744cdb06e1c0636306751f6b6ede06527eba770eabb7195465a93",
"0x26d8b08764b7240789d927ad67270da8521ffd23995b67f3b25de7fc60f033c0",
"0x19c594f452b69d9aba24aea1f48887b5b2bd351e7bc6984e56c346264e5c5f28",
"0x9a984983ac12405239b7d71d7e94ab74a5d7e23b3e651f61988e258147f5a61",
"0x2edfe7a5c13ee6fcf27ca3a98d230c3158dc1eab9a12a734e78e69d7bcc5ddc7",
"0x190ac6e66fc0244544a3780ae6c5a0d6e56894965b345a1b731cd96c89defed1",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x24888d5352a17beac4d1196b9ba56563192a21650b6e8cf734abbb5dc6fe0b86",
"0x27f1a77d912fc4ffeb051b44845cdca1360b3dff10f646cf4e2e31b0b52706ea",
"0x281d4a45a8beb80c2974562cc98785b37551ca4258c7b7292006e387b20d5f49",
"0x1d06a2f6b95d207416e97b18e0a33aa504251bd5473313ec4ba4aebdbcac8dec",
"0x11dc2b5aac6c6b58904b8370d622f408d4b8a22a54a59f060a9336509285500f",
"0xf03457b87c6491c043633bb8f90a9dba8eef6067f86926dc4df4a6145b9cc81",
"0x17982901cf92be1b7f477e61747a5450b97ddfe41bb5d7760bd1c25df17eb204",
"0x848af60d2939b3983df6d9fe56343916aa046933c4517a6c0c29025a3da1781",
"0x1dab170558f1782df01501d1a810d1f491caf3a03a5563c8638eb6649d852272",
"0x17c31798bf48cc0a63986b914236ba21a04dd2a2bda0afcf15213df56c46370a",
"0x2ebd4bfb0ae3e1f540f31fd15a70e59de4ab8ffacd899d56060ba394e224ccf7",
"0x16c3ea32466b179ebe57bcbbe97e3a7f94b0a4b3e091f15e3aaa9222e8b182f2",
"0x157740e3058872c28ca7331055f3daf8b9aeb36e9c2d7d231f22171c6315733e",
"0x6a974a75d941a54412814d68e6955b7f4da2b281f2a9ac426afe81b98ec27eb",
"0xfa950037d21d72090c5bdcb8bb6be911ff4a359f3e76ec625c64f1202bab37",
"0x19065585b553aa2649a420625c707e61f7e0e70c753dadf474bda8fba0354fd",
"0x183bb2b9d85c3a9368017cd1e1cd884967c0b048dc243f35b6813af5b279872a",
"0x271a9d19b99115dff27a86779104a54b252373c18105cf5f86ab5ffcb2a9942e",
"0x284fd24cc3cb45ca644f15228d786fb82cbbf3d66f1a276ccc3a1182af4fc1bc",
"0xe62b392dc27b2b80a868a9501c9e1c72410bffa12b77732ce1df084ed0a7a30",
"0x265311e1422fc3e5cecb4158eba0b249404842b16e8954bab3d80d6805fc4f65",
"0x1186e446615d83a940d96d2286d9b411b62697864531172f5e8d3d9ab6a5f9c9",
"0xa22515b9c7fdeadf64fb896271bd8d96f1f53bdb32ddd9be7cb22400d69ab77",
"0x1343f2ea91b46be725baaf77a092d6b790c1429ba87a3d4105e005b85c901551",
"0x2a58da207ab04101d89a09c69f8d8309d8e8a938deddff70e2eea30f4c884bf7",
"0x1bddc742015df54718d5a89b181f3a0110732b0ab1e014f63202f6d9eca2eabf",
"0x301144f5830574650e6093a4b75b9a34b59066777ed21d2c008f2636177e9b61",
"0x1ef4af22668248890aa7ad05b07462d777b0f09a98d8c17d59ed2a127fd2c55a",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x25b20abb9883f59516afd1b89f80c4b18be2270c4ad70f7f9f9b9188c9809ed9",
"0x27c5f600e46a854a26efc7ede1108cef8b607dcfa047c259ec32934669c1d155",
"0x1fcb1b54e79f2f06aaee7955186d71564101088f13837f11bf2ceaf9393619e1",
"0x1d24da31bcb08eb64df9e69b729ab135cf1b63cb23c4c8acc073a9d50f33bb79",
"0x21c0a2bf8c0ea05f8f319e57408ec4ca46f0003325efdeb8c84b23026d9a8952",
"0x1931ad5d7ab126465234d8fa1905de0f77eb5858758e6c838d748f23508ac1df",
"0x17af6e15929f2bca918d404d56b4cee0ccd8969195f2f3edfe56dbd1937baedd",
"0x36b2cc2645cfadcea80c47cab8cdf6eba7fb8fb2bbad631a5cf24fce6966854",
"0xf10bbaf98e0b1ce2cca1977ba2e271b89cf46933d4c7a797671c8fb0754e10d",
"0x1ae0f9bb7b72a3239de677048151e6dc40637e6559d726158debfe779a72a708",
"0x1912fe07ee7840b055e68317eded61b0283418138b9fa2fee286fb999da2e6e8",
"0x24a8a1af47ef25f18b39b5caa36c1a6df571d3c833fc1c54fbedad560aa5571d",
"0x2d3f665ea69116d266057ea4e9ef5225800a1cb2ec6b7d6ba9f3edbbfe1faced",
"0x2c5b2cabc24bdcc0e95d2e54c52c0fd0ceeea439d8fa83c0036feee0e9730e3f",
"0x1a79348c882afaa9480c28acb01547d816148bfb8e70f22a0ad3a3f534bc0452",
"0x3942e232a30d4a941a32ab45958ac49b08b0a8a416ff6dec7edf4f0dd16b8ff",
"0x24de94fdc7fa872eef8ac471ba7719d5f3f534cd988248c154ee122ec2090ec1",
"0x13af3a6a5530327a659e6bdb0e3f2643db75dc7e9eb06a5c139d84a2888aefa7",
"0xfff230d63a7ea1823e5c5eb49fadbb46522853f0d6eee45948d326f54571ead",
"0x1f67b3c311ad5eee7495b1e9ac1236f8acdd8dbbf5b20aded3c3947baa0d7fc4",
"0x5be06d2aaece5cdeb721c87ce053e8523c8992c91a1884edcdd72b96e8e448b",
"0xf3b86d20e5d8b37d9c47c0a1e0e5654edd5bf9fc4202959848cc3951f58971d",
"0x28047bfb585f17ad6e7cde5bc033d8072f3b3e90d63b884df2ea6f3a24d10603",
"0x1186aea12da52c270bcaf4bd0f87943cf5cd9ddb63bbbb2d7f34dd184baeeed",
"0x1e4d65e0bac14ec3fc7970af0d64f4ca9b932012dbee59b3a93ee42b8e52e06c",
"0x265d09835a19ac5c29f4327b9df3f35988ca8893c1ca8813a1f92b555550aa0d",
"0x255b843c053e9dd9b00d06db176106b632b4ef0e6e345ed96775e4ae313dae6d",
"0x1cdbf2d9c9e1f4099652361d830c6d691ec5eb951ae3164acd715f49aae612a2",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x26cd056174dc2477de6fde6a95b7805ed343877ab35f7bd16afceaa9771fad20",
"0x286c63dc377caf0ca4697164bddfd29a79aec07b52ebe4fff1a4601bf3178ef6",
"0x4404a2d97266886b3a00244a049d2232727c70f864afa44d11a2d37ba4179b1",
"0x2d7b33ced5c2aff1ad6b4ccd8482024effb1dfdbfa20ceb1f2d59aed40da523c",
"0x1a5a78c756a7ee0cce31b132cf6752a1fa0e904e2d6dd9ab3818fbe9426d24ef",
"0x26634b7dd87a8c0e9878b1383582b9a3bf658dd13c467e52804ebdb1698044d1",
"0x2222ed015dbbe37bc2578814782740abfa00c4118dcadc8e6a656587aa25bec5",
"0x243a463d1befd0cce1a46b772f3d11351d47cdd86ff8e0a6e6b8d0f8c7486da8",
"0xf4a9dd0ccf52f31360db5fedcde0405406d4ce2042b1856c7c14bac187ad37d",
"0x25c6e507371aba88824acd8974ec363c21ddd450a13b130f38eacd5dbc5e8c74",
"0x864d7ea740ee93ec7d2ffeb7adf4a03174c89904d9c33a683d8897eaba353a2",
"0x146cae6d1bdb0318058f424e893e0892b0a1070de370a5f460444ad2e535a920",
"0x1ebcd64df7ad6f0e1619e26eecdfe6e2ff1e69210578cdc6c052e1451e9c17c4",
"0x1a7f76a8b9a868b7abf0bbf29992d82728ad277aa0c48d2db00ab45c7a77bfc2",
"0x32b7050fdbd512fdcbc9e9f530c139f120df1b53f26240c01dfa397e227d62a",
"0x118e701ff219612ffe9524bfa2e515bbe11f2fd581a4371f18d7f45f64c7aba2",
"0xae4dd0aa671c0a3dd08f394fc0eda68ab2beeeb58c6c94e60229145f0869468",
"0x187cd95af561e161bc1a2954e04a82488721c80e7b970b51a11e318b43e3c340",
"0x13c74e83abff731872630e45384b122ed9fd07176f336d1c3e3b87837adc1c39",
"0x30392808edc88e0c24a9f0f4a384e3bfdbb65382fba12b4e7ae01b712b5073e1",
"0x1bb68781b9f841dcca210b93a99320760e7f3ac43b4ed9d621fb50ebc3440467",
"0x514eeca7cd002d04a4716478bf62c108b3f314a288be687fcba7c6d5103ed5f",
"0x1a4c1caa217b647d099e3c3de03d9677dc2398277856140804f95848275cb05a",
"0x1959d1f1414c9a59879e9489315264b7691dacd96ad16f890ebb2ec8c55f40a7",
"0x2c0e761217503c6c0b20014558eb78e6314e607130844c97ee67dbe1940b3d4d",
"0x248c9aa70622ffe24240bff18d191276417eff7762d96594e4fdb9d6803b9609",
"0x21dba9d46e89f5875fd5e925eeffd10ddfc09ac71634e69c61e9805bd0a07d1d",
"0x21280806713dc524e7eb2c697ee2e197d89bd2e73f1817609be21c35dd5bdd5a",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x3cd1743a3de44e9a172804c7b159ec17a83d2ad838f9a51f5497bb5aefe9666",
"0x64682ebaf66d718813a4d06db5e8bdf665dc8654df4af96578526fd7eff644c",
"0x27bdca50a989caa4dcad2f45d2bfa7e6d455549753fb3e8c4c3ff2553803b024",
"0x263a2119f3bf5d5330c11f3036d2521e40f391da9efb1879bf1af39f5f4dff0c",
"0x2df2f13f954b1a7cb58e84ca4f3e2ab7d0f4272b559e58c7dce7ef229213c5bf",
"0x2ac40d567d483e8d671c8e194075fdb2ddf9ec51a174219e8c351dce02d32d52",
"0x159b9154fbbcadc7209c9978cf5783aa8a47cba1a729bb297182aa674f7fd820",
"0x1a2295de4f8dc401aaa4a2b1a83d62fdb4828ced253dacc132ec9d5186e1e2c7",
"0x2404bbdf4995ad241cba1169ca4d85d5ad276ca9d009081ee3e2b5181d46d29c",
"0x6fd221e32b98c2db6dc1602ead395001edced38761cf45ebbbc340ea35cd7e1",
"0xaf3118afd7dcf599b5c65b5a3e74a8ed04faa2791f47cd2cce3a31e541032",
"0x2b2dd6d065365f0b808bee0a2f7ec63eacb1990cc04608b08549d65024113ad7",
"0x180941c6fd6e1dc8a0aa4fd86020ddc4928884b68074c8d78e52764aba6c9f9a",
"0xb86cb785671c76300f9e6d4dd23b53aeb9e2d5b6d209f966986aca09ec59801",
"0xae841f0d25bfbd009e0011201b47e2042ea8d961248d90ef9d44a360b317617",
"0x1b2f66bcbdb6fc59dda5f34ee11c654d0f2dec29e31928d5b111393c8e0f943f",
"0x2f16b66d80614604ae85a13440d46bba9d09d98d5161c878be67a0dedabe3aff",
"0x196328adca8167c649b987ae985e9e54c0822077188b8af34b3c518dc21416af",
"0x107664f2d3f3bc3ed01013faec284477785f08e9932b4226945efca7fcf56b85",
"0x2fc54bc47cdc7f7146f9b81462c64093374c71647d4ca27439406ae6e6f7cca9",
"0x8779b3359720a0f3e0898942f611aeae102f875627f2c973c97356554911cc9",
"0x2e30be5c5cb07090ca3249386926194684d1f3d2d3ddc114bae2bca9d4a07f9c",
"0x1ea45a4f0b12b578b58600b9d085aa8d9c68a583cea665805b9389f8563d53aa",
"0x1753a308b286260ee6ec2934cbd59f0f211c11647cbf22f6bf5fa7c154c0f577",
"0x102ffeb8a2a94fcde9001e08ab603aa8975edc2465d6de14b73c14df40d61db9",
"0x1ae8a9e95ee69c8774f8d3a8ff484788ab272d3d174f526a107b2c8ac34ecd95",
"0x166b84b5e6975b9e8d7ffcb7be641fd89c53d1b7238748e85f32084ddaa3aabf",
"0x2b2e47acd6445423d9e61e96965da98e206b611f52af1d13becb4ce4966e1a3a",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x10e7554983562b62de4660b318bcd5324003e95edc617d6b1c23a97b93802e4",
"0x187483dca9aca475f85b9f8cbd78aa6048bd2c848caf3973c8feb07573883a99",
"0x2c13309dec41b4df5d8fdda2b063e8264c35442bb120e28de7555569ee771f8",
"0x11710271c6783060aecd410a60cc5c96641c1cb26591b21632914aa9fd94eaa2",
"0x12bbd77d7be4e06b77b5c40e1f9888054041bdf4f8af2c5378e6386337716b6b",
"0x23ee2c9a0d3324166028728c80d60cf0e21a7bd9ee90817058ad3b87c6f28cc9",
"0x58dd3f4009e8ac3fa07e285bbd7391c2dea81930c732c3a769c9c9249084d71",
"0x128d27c4805d2365d84c754621ca2d1a82297ea43dbeda87c0baef506c851079",
"0x20f552e4cc3a62cc2f3eb768b69d8549ef4c24d2887d7de0550b17ab4f7b436d",
"0x235730472fedbab358bc7dcf25b1d0befcc70746de99e78a6dfec8f626c5a9f8",
"0x280c2ed868aeacb6be7c9e773b08c56f43ea871c01acfdf9ff5ce9d4443d3376",
"0x1bc74fb92afe9db8c0da68365326cd9944db988b65f46d032989326fd901e923",
"0x2d9c89c56578fa5031afd1a53d21212f1c3ef24cf7076460ff533ede5fc360",
"0x1e2413f3b8f23a2304735feb3fde9d2d0f88d8aa72c1c60eac921588bfaf69cf",
"0x53a4cbf4b57d882174b8891d918af78b40a7caf832c2e2af02b8ba5bf5c1cde",
"0x5e736b9e5f8a1b93fe3aef1ee0a69234f7fe62ea998a9f2559f650669d76dbd",
"0x1e88d8b3d140ec659d6cb33736a0254e178fc6c0c37d2fa5b36ae4a85b28b5a5",
"0x257237c9ee699f5d79a62f2647a3b51c8362759cd955f10872346ab3b401b04a",
"0x2b6d25849d6b81e36cd329d20ee973c15cd9b62921e27acff048e7589ddf7739",
"0x1ac7317e2e5e3011420558ffa430fcab50b2f3fb778311bb25b1019c88ced146",
"0xf3223d7e88918a33250b61acdffacf1965a5ba9807a23cef7c89c837afe5b93",
"0x1f733faa9efa2db68363757b1a50f443fe9bd4e3b8639f21f1e12ac25ef00b79",
"0x8e2e6b13aa7a352b8c33d0f52939c16819e6a92f7159986588a09e2196efa3f",
"0x208995a721ababfb4d527db0b69d35d50e263bb1c7d97b24ac52c2b316b58727",
"0x1f91d022a78f70863204042dde629c18af85757bcf4863b3eb916a8af132ba1e",
"0x63a2f4c8d518fa72d9ab87e414eb7ccae4ed3ecb6d24fb734d68b43a92e8cb0",
"0x2915c64a0bf35200cca5779c140c7f9e888ce72b9c458a9ade0f0108eb2ccf5a",
"0x17a2028a54a30e4e0eded3f7d8681d6dddfadf26ef5c43cbd1952e584ad5b0af",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x2aa225f58d57ec9fcb1d6a6711daed13537cc6db5dbc485b21a8c4b13ee4ef5",
"0x2a9a824715fb8db1d5d27fe975f011320887f593d36d6ca7e2be7cc305eabbd4",
"0x9bc4b62c4e071e43c1e20d96810ff912dab86a98b4870d66af75d10ab6578b",
"0x2d7d326fb2cd64b543ef4afc9d2969abdd53042e6038cf53f12d36ba07c21807",
"0x1e66dbd30fe311dac75382ed3843cfd75e560bf2634f4213a0d37be91c269cbc",
"0xa6115e876e097c8651c2370fc0c0a79d4f67199cbca00b3c69891c56dc81cc7",
"0x2b4cd16c063e8d125a334909b5f9271bef61a5e6fcd117405e24b7a8d505453b",
"0x19734eda61ff0dc7c62643d71daeb291cd8f18e1083f82a73ff05e5f8be31906",
"0xf44441cb1795b60b9a424df927fb54b55a53c75a98eb90708fea4b42da18eed",
"0x1e0b6f3e7526e310b7b870cccf69b9d716929e7b1f078652588617ea0b71feb9",
"0x1abfb56c8889d36a1cea7d9658016c9ff5418745bc418d8134eb44e3700d56b7",
"0x450b96e26195e4290a1e94d896daa601b0bdf44651b8575602ffea487fb536c",
"0x75d3fba1c1f0b0869714cc5b4e54a019e13c5a9b745bf38139f2b0f09c93231",
"0x22a1e5663700b7b7af22ac5604b120c3ab73294147889f73b3c986a036fdd5c2",
"0xef19ddef71117af6afddfcb5ba454602d35ebb7497d65ee1e7805dd61d807c0",
"0x293a52d85a881e3845f02993f54c6af700f6344def2da90a2dc13a714760e224",
"0x10f47c70823694adb395246c750745eda7fb57dddf5f6e71ce1a41c2e9839cf7",
"0x5b7b0f8a9586e0ecb9df50b8450b577fa537c94ab7b770ccd883184ae2718d",
"0x2694639d8fd48e40ba301e56097cb270ca1e4a6d0cb5b09933142aefd1c44efa",
"0x2b40678245e68225c4c9d8f78d2e660c5e7fcbac631d1299b1a78df3b283b195",
"0x88322cb02937145ffa566b2f0256d5c8dda53b85ff611a658f4de8aa9ca5672",
"0xf5f45c91500d38fe1acc462a8622298c1a6f53c735abf1d4a971d3d9fd10cd4",
"0x17af880583031ee7067fec80f5b3760f9e19dbbde06343e59591da9080b8dbfb",
"0x1248c5b2d3ebd0f2870307d965eda53ef7d83392cf601d95da0eb124b05c35f6",
"0x286b506a8883d6f29ebff1bcde7429156792da00142bb1292f378d0f8962a158",
"0x2fcf9e1e6970e8b883f8f72bb1c48c53541fbf72f7b43ee9f3273f9102b5548b",
"0x17f7f929e38a4357770f905e9cc5ff7e287e043d06054c78d44097a446174e7b",
"0x8326d0c8a128c073a72c7d722a129fa450fd429856732886fbda3ef61606bf5",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x244fd94ac9d2b6a02aec10be6bdfde0707d8a95440b04a34feec4eac0a881823",
"0x18f0be2e75ec1ac912920d0403ccfce0ae11a66068ed5e7f0e60146c1eb78757",
"0x67d513ea87808ec1cf7f5880f13c4ff07cb83b06a442573c2e74a679363edb8",
"0x2fad3ebee463c805024a9884e2212288d97d343a199eb1ed449d7f0cf21fb86d",
"0x29e2c3e0e04f7685d1e2cd797de07f3de790cccbcdaf77f1686f159d4e90b0ea",
"0x10bdf28bfcacb8635108ea9153bebce77eab04539700acc64c084f8bc3f4a20b",
"0x10b6a895914a782aa94948c650f6c045d9a15d2706b259acf5fd4da311e1d425",
"0x2cd506792539dbd2f2cc3c96795d96831c21fdca7bd8988bbaac60f254da8ffa",
"0xca9da7606615f15506a87151200b468c11dfc0e28dbc306bcddc6d4828ce2d1",
"0x20d854f50910c52ab1f923102bd6ca5d82da15ba3f0f54f89a1becb7ce1f94ff",
"0x10de4900ee8ec243ca53404556e6dc15caa2bab8dd7f83148dca55a598ea88bf",
"0x1b6a8eb28c126c8682542278e4e4b2c922caf387f9f08980c8b469aefbc69b75",
"0xc2a3124091527d21e1bfd56cd88f9fa0616f2209454b5d1793cbc1dce9d250a",
"0x1d4744f598a2e98144d017acc5fcf08c5187aedea146de6ec74a5612aff8c7f6",
"0xbd79ea1a224987ccdd83f9ac4490b76bcbc554fa7c2418e0fe38e9da27dea1e",
"0x2405592dc81a66a17567e6acc20cca7179ae3c0971658fb792c0986882e57107",
"0x14f497a9e8110eec107450c0fae64d03bc8a8416db391d4c4770dde9bd38d3ff",
"0x29f8bb3529da3fe6152c5ef9cd0046568adbdd9daadfca8195ff20a0df7a5bfc",
"0x2a032300fc92bf19b9cde88cbe9da3f72e3ff50c62b6342e57f713b118a5fb87",
"0x1b59a7709a531a650d5ec2ac01fb09ced8327abd4588f619f36e0886c16c3df4",
"0x1fc0a3436f100a4d61ccbc321771ef6f85e421d5663bcb4c01c889ea5049fb5c",
"0xe9acd5d917d4160434a8fe7037b041c269eddceebb9129b6a176c8a00910d22",
"0x196cc8a225f2c2986abab4268b3d6342ddb645bbcd692863e93274b717d02844",
"0x11459356b20c2ca8913d1c0b45087f5a28559190d486f04038c05221381d4aed",
"0x25e96c07ab87f3f5c0688608c095a86f80ddff5c250f0f6375a45398034d64e3",
"0x15d58252815ac471aee3a3d097d799e9efeb969cccb08c33ae0b7adef18f0250",
"0x6546b3b7f85042fde21f23c3949c39c2276f87701537434f147a3cfeec10387",
"0x1e2aa3704b080c4cf11798a00cc0c8619c8d5997bc3121a17553be7b2dd65678",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x19e24f5e120e53bfe7fc01338211f4faa1f95084f2716e5587660295ecea8d03",
"0x2ff252a61572b7b92960841bfecc4bf5940bc0d682f1770fc272f70d41682844",
"0x2b9ce87d63d943afd940ae87979d5ddf50b784fdf8cd4d1ef0e7c4f220c98647",
"0x18eef6bbabd4d2a581f11e2b22a591364f5a4fba59146a97551fbeebb865fc2f",
"0x1b094af27259dae5e2f1929f16f00fe53d3acca1867d359d4681ae8a71f9ed65",
"0x2f2fb2e00ecc111f573d8002c53959067f3bc7b52959d0269ccfea9729d89435",
"0x48c4f81825c5584e76fa65b19b9b9fff7db07039d3750f3a65faa0a608b71f6",
"0x20be19e025ea25f85f5998c77a52710dfa5dc65bb2665e58faaa5db7a0c8a92a",
"0x222a05083d24105754e3f7fe45ece6add87677e8e64df3f44041618593aaf5f7",
"0x14f3d89c38b0249acb03dd0e1130100dde039b1e442c1c92ba36f8368ea16825",
"0x13667b7bba6c07aa7e18db6ce06e1308cff4eb1c0aeccc1187798aa1e97967d5",
"0x2bc234f4828ddcf587bc65d2a2bd5ad0974f5acd1f790d590d66e8f2ec739e1a",
"0x21464644fa0fb22494f8f6a7f7a929362ece3b3eb9fcd77cfbc23b2c9066a9bd",
"0x8b65df38447cc47455b407b32c8bc2c740c0b7b37ebc4c61d867b75b844fbdb",
"0x2369e1c199639bc505ce0da45601e0a51eff0f26588d74853d07b41a40b5b701",
"0x199051763385672f6f8303896f959d2b24b4cfa4d62faeebd54cd43e190c5e6c",
"0x201ac20d62b94056b6da288cb5a75fe62dc788a8b0d37063e22318f8c8b5dda2",
"0x18157f398ab7dfe77094ab6e91a5ef4e0ec471fa1a04e89969d1c11a2cbdce5d",
"0xf33f8f6546777c507e2a79f099a48d743325864e9e90a927478545a21fd721b",
"0x23703db4b584d2c4873e7674c6f3df0e16dafd344ffa9431cc3348424e2fbaf9",
"0x4501063364805e7a5e7d0a9b8797953e7f08a5caaf873917dfbc3da3c5be895",
"0x2ea0b23d55d50d907bfb16497f56a979ac7f460172477dbeda7b450c7625d243",
"0x68dadf39001f91f51a0613004e9614a54402b6fcbb0f4b8bd8aa546275e3075",
"0x241c7eecc6aa39719bf6c6ac8a980e2100d8c341565d138ede2b374177333aeb",
"0xbb9576b315160e6d9e5878bc54cdd9cea38c935d75fdf8b39daa3479a29b27",
"0x202599b284bf67ea50cacca315c66218f4c59a49a27e193edec4b9f93bf05322",
"0x170070a071a8648635667f8315e5412c48c3196d1d551ecd114857cbff9b9d3a",
"0x302e841876fe659903563549979b9e27ca6d36f004a559bd2461d5dcaa40d2eb",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x2731f1ac5dc030ec117fbad7b53c6b02a6c9e04a17f64bc0e56885fba0c2ef3b",
"0x8e4443070b7fcb1a28f620f990800bf0a23bd32146d7eaa824f2b02f50a48ae",
"0x7f1ea73f15d8be5ee132c68b1ceb3573909753f86582c57150eb71932972e5a",
"0x5d68802b26f0b520b248a7d4fc2461df7756641131a1ad109fa2588c462320c",
"0x2c6db9f72cad44c3dd15a83d5ef9eb7216db1e716bd8bef960e52cabbfca8101",
"0x26365d95008667a1e1b2653e98f899a378e08643d7bbf706c7d3eedaac0b16f8",
"0x52ff974b2d04537b8413b1b0c85065f727ad6da454f909dda0aa5994f7cc2ba",
"0x2b769645daa19e2b07470aae4cd88672e7160cf3c07c7b271b60668382810327",
"0x25f56a0ae50d333f294efa08376a37c386dc4cf24367139c640514547dbae38e",
"0x2f2d49b2a257d8aa58b838af6357d865236ecb76e7db136a09a5a094ab7c53dc",
"0x2b173636674e54aa05d0bf2c60c5df0b31b2e801e6afb149eaa2c6fd73d6a626",
"0x2eb41bfb627052e1e7373a7392264e7d680a19cde030d8687053755207c44037",
"0x1841952650b7215b249cf50f8b6c78511c2983145ac405cebdfa1a8f54b986d2",
"0x16569fbfaa5e330f4ce139b103980e0569db854d701d76a233ec9c5a8f7bce2c",
"0x60c71281c4ed3a23d7ce20dd30c22aa172e245ce529234ed18a130222a9e611",
"0xecd53722d116536580be7b8a5c43aedc798e1110c99fe9d806be2140f5c7786",
"0x213c0693e38ab9e0cd02d2447613d5033fce7f5444387652f03e95b9a18dca64",
"0x772d0faa6c722c861da9582961e239c0f4554580a5a067f9d9e9bd71f978f85",
"0x139feacf69de1ee3d14f4fb9ecd06681b58d4ea37d309f6062a2bb34806e4b0d",
"0xfdcd35d68b9a0a9f0d39ba065449a7ff04c9301927aef113c5f34061299da94",
"0x125be84a276a6acba551894f5dc8e14f3734797d489cbe94542be8bca82c5e23",
"0x2be65bd8dbfe8d435018dda75806ee34820686caaddb53f133ccd9877913370c",
"0x78ee87a14ac262c2d74b17aba71d620685987727ca21484bad37052d59d3bf4",
"0xdff2aa73f9fc438777ec8be74d494ec8c36fc04ad3f12113624a58ba52abab9",
"0x282f6e2312ac752d294d116b0308981e7ed45e2162403c5ff705d136fc05ae60",
"0x2791a0a3c213582e9a272d6b667c740e63cd918d53ba444d23d095df767b68d6",
"0x17477c566355c80fc784384715356f69c8f104b0154533af3c92e0a8a1319ac0",
"0x2fe67e79a807315060135431a9b4426982e90f3b38ecd5d8e0ed7a0cf58d6c1f",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x957903e40cf2319059c20c0fc70a5f3f8a79a64f3330d165e2c60b5b2e7bff",
"0xfc99ae6ab79445327c6d487e32997d5b476717bd26b47b073471c8367a3cc",
"0x2962bbf10efd8a8efeccd09ff80e9ee162249389094019af228cdacd2e42549d",
"0x25a909692ae443abd87eddd74f8705c80584216d5be8a42c79ca3079fddab520",
"0x1c0e8c1b8bdcb489bb68d7239dfcfd5271c4ac39d27e222be925de97750ad5fb",
"0xba6ee96962c66ec04c070eb3e71285d8c91cc967d20d72de7291f020f2c35ab",
"0xcba1238e9ce747c7d499320e3bd270db14cd796ba829328556f7c98d64c0d5a",
"0xc875635083ed6976d068751efdd6cbc3cd65da7c97f642b5361ea734f970295",
"0x1697dcd735de9b176c4d10fc5ab1228775788ed4beb16dcb0629efa99a6a7e57",
"0x244cf5956b0289a789aaf00f2e2cad480cf0824afe8eae41e259df395bebf2d8",
"0x206c3705f63d7b871045c5245bd3bcf720e12e4f0a82fa89a1f913646d38babf",
"0x20b58ed4e80e868305522f5eb670ce452ca9b1d541897d51ad7b42c4ecd13205",
"0xaf72e95de70f64d621db85a37f69f5712ce06e7596aa97a1188bcd3861d6c2c",
"0x1c1d15ca4b3e0508280869c3ef38eee25c3d0cfae188b5f3d59d5c7c5211d773",
"0x4af306d94e8e36627df09ffc20ec563aec05452b6b8c1a17e93c8a3f30a9207",
"0x2f697c34b59c559aa232e40024bc6da390426adae165002df519d7f2c71461ca",
"0x8a7299528acfb65d196dd9a7a136401178a7d03f6fbf5df3c69e6629895dcd5",
"0x221f628204240732be38e2d0fd3addb1080248592ccf3d655364e171302b4780",
"0x2b4a05f00a373b8fb7938b4f8812be582796986113ba1d80749be041dac49088",
"0x16d94da79927c24b7bbd25defd5c0fcd67073d738f31b93ff08bad9078b2a23d",
"0xb536adba2330baa9a070a63f86c465e3463d4afcebadf59a233a0319d1bd21d",
"0x1c57a599441a0b1474521bd0470a9cdcce3615e2575ee4baaa38a25958cf1784",
"0x1f13db4a9d7ce5fdeaebf3a571fa14807e979a23d8f1d426fa16ba9941421c60",
"0x12b527cd8c1fe08e9d909cfae1c405f11321538cf59af3a2cee67a06b11d9859",
"0x1f2c0fb5f11e6d74db0c30125e48be344c15529c61d4debb013a7b06f07fff95",
"0x1352f4a6320fb513348dd5f02ca53ceb1a47d8616892608eff2284ccb7fb1d01",
"0x146dfeab263219dcae7613a9b5403759d5122c9aa490e36ba5b4a37d489f8e5c",
"0x1edaf73615e187effe0d876478e3682fef5d63e3a12edccc216dc302d776680e",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x1c28442722fb49d44d40b2b6e86e2218f956de3f4b376c3963955666a8f57189",
"0x20e9e5c1b5d8cae475cd16e899d1c9d923d8d20ec60727d9266e66cb0585a67a",
"0x2f8dfa1f54af676eea3d05bcc648b8f511ea011b5ad23e961e1b695b4b5267f2",
"0x1a1a5037e57e4ae723753d3d22f965ad8b911f613d6b0e5d64ca9050ae43633e",
"0x1ba983e3c28f6398d73ca8f7e2963564a9be471ccd5c3eb0c4f8e96635059529",
"0xd4adfe4a7dfeb3cf86702e54888304e36057c89f10d46186d647bfa700688ff",
"0x15c0166eea20cd705dec4b44aaca007e6c9e4aaf131b47789cf70e53c069e6be",
"0xceafabeda1dca814433c969943e534008012b6555b08cb2a4abf43793fe0e5b",
"0xbd15d8a31cbfbdb7c36e540f4c70a5eeead9d43a9414023c763d2fb643fbc76",
"0x17b69dff9f9dfdbf6bffec7c7ee15eab02eef17254a526022d878fcaffaedc75",
"0x272fe422dd56f28e6375cb725ad469069e1e48aa945dffdc1e9942b46307b763",
"0x27d2db5651e5293ff051000a36a2c949a7a3e7ce326b8c993845ad572ed1816e",
"0xe83466c2741c36fe6f5f5e6e60bad5bfe3ea06a7db58680dc4a518f42b6ddb9",
"0x1b97b0489274a5912c53c18137e918d8f7d3985034c617d9d5dae4cb75990486",
"0x8b09b027647befc8884bf237a58efd361641e4a25ab1e8831616ad9096aa157",
"0x22f46a0157b70196720c57a7636285c4b10854721e4533294283652b1911bfc2",
"0x2f1f803aa4a96a296bc8dae8d07335ad018e77ae6d779789bd718e72d8709a53",
"0x2245e61dfb52be01fddb5fb4179140e4b5bf8cb1c7afbbb6976382cc712d981c",
"0x1683f9bd4b791410d1a889953b716d95c440692fe4b4886107d052a8d50307c4",
"0x242e864ffee30fe0a080e21e4d275db8355560f07b7745a4e5aef58d09b653a1",
"0x1eb483efd8310203c93a42e06b18be5b4a0cc9612c335cdcc82c104c38b3e8e8",
"0xa5b1b4c8982984b6ef162eae01f0a53337c0991c27faeed2b61ce3cf99f6503",
"0x10c25a14e51fd3df8e34f70db38cd60124a4f4837d0b024d5a0cbcfa8e316724",
"0x17e9f3efea4275ce4dd5a760f4215644cf5fda3659cc82c8cdc1c66ba5336c29",
"0x25c1bfc4e679b3b3a692755b3313ada05f6d747365325250e0d6c0c566070ca5",
"0x1356277171f1d2a2e677bcb161d9d760648150d1f297247ea842abf2633d4715",
"0x28aab6b87f9f0f8c708695594610fc99a820dd994d63ab25829c0eee980d246f",
"0x148d7520ea0a3d7ab3ee550cf30cdebe434ca7c84ee346a5b8b6d5d35ae06e88",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x24170fadfbcf05e5d3c5d0d5d051f71de23175002d1f02002939eb24ce5d6d29",
"0x29491e9171d578c03ba302262531a6d8ff03ab25af7db467947e543553b25e50",
"0x10acd03b983a457e3eb10f10666a7540b46066effdfbb50a1c5996e8e42879e0",
"0x1fb89a866bed5ce87cc2170f998132512ebfde77a2aafa84f288024ebd9e6c78",
"0xd98b830d880dad4a0755da7626c0cb7dbc454bef88b16992f3242c9fdea3cb6",
"0x1c0d9302769b138d161d471195f06bb20a5a59f53f083731bb4b9407af705880",
"0x299bbd2c9b64bffc601a51ce60185e770765abb952375055e0f8c6edc3c1e7e7",
"0x1e3e012a3a23cc56b69b92c5a82ddef538fa2745d68bf99e6c4f65670b8a2581",
"0x11f5e20407ee480fba59b35af723c3c1e7e60fc4817f92d6394cd7a9c65ec766",
"0x26d3be3bd30f29131705a60fc4f5d51c6617919993bff2a9e9cbfe08819ca686",
"0x2b29ffafe79893a89844e650ccc01ada03f91f4853166006e0efd05aaf3e3647",
"0x1fbe32c5de07b6d625c86ff0062102ea1ae1f63e80ea0473ec747ad9a67e8a08",
"0x24e36875d9f11a3fc2dc23d8ae5270150759b92a7dd422d2bb196603835715c4",
"0x1859e0cdd36899ba3ea1a15b6a5343985e2429576894dcfcb39b17485e965a37",
"0x2e823c343fa815b8850dd85825f5ea80cb32e17ed0a8ecddc478609b094952c8",
"0x27ae666b5dbc3dc0d19c32a000a7df0fdf669ef25691627c4d7b17c6f4348d0d",
"0x13d3988c983fcb3cb784b222b2bb8d4e947afdd3fb1d0e5bf2ab876eab1ebfd2",
"0x26055ed2f7cfe90bc54ebeee9ae37eaf62f11d4ce7ebe370e7776167a51779a9",
"0x187a3031170f0e0ccb8ca67fc2cdab2c2a5274613a5ce191a1790b91cc6c5888",
"0x979a5a4f896cec804a633285c9457728b5a6fbfacad62593a23aeddefffe055",
"0x17a9aad3bfa4cd25d929abf715dcbda7ab2933a6868d33720a5e6c60f88e31c6",
"0x51192a624e65c0f7590c37385cb1a0b52b46205d2ae7109e076c08b307add00",
"0x2aa14feee17ac6700e5e58952f28d5435fbac37769c3275ea9fd35ca622fe7b1",
"0x354581b4a29a9ad673f3c57801bbb6f8a57098c9cf5c15860b4dd240d83b536",
"0x23bf29c02d8d818da4257fadea084078a4f7d772795ddcba9e53030e06cfe36c",
"0x209923e9cc079197d001f330069b05b75547e48685afb804931af5a3a241390c",
"0x6d614256aa7a08f67ea8d06bf03ae83b820669ef7d7c1c7fd992acb22ae6773",
"0x1131b48492673e474c8e23277571bd9f9b892b8ecd3b6af754ef83a1f30a429b",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x17ff3c20af33dcd172bc3042ca7ba8b9acc7c5d35694a795bcc8ae3c35d9e748",
"0x273eca5bc74073b2f6761b6b0494d48407c4a021056f88b79f0dc3c475802c39",
"0x24edf79bc35300c727d39b301de82e8cc21435e8ff3f34905436bedbfa6f9d91",
"0x2cb3232131a5d86145127c61ecc8afd66fcea63e3ed9b1ff1ef3099aeb2047ac",
"0x1ea49fb0e46edcc3a90651f6e1a4b36175bdb25505cc998a101710a4fceef13c",
"0x1e40d394feff0707116e1d43c523a36ea293d11ce3059b5562ee678a008a594e",
"0xfe47524266480df132a54698b09e844745eb540cba498623a93f36e48c63bee",
"0x1f113b5d7c4a3e1f1156dcc68358318ce699b352814ae0253672d6c185422980",
"0x1aed347277640a0a0cebbc2f4ce523b9a51b3750672eab8a9e689c488bc416f2",
"0x1ef98e57380c6a8084a8d77b701e23dfbb56339ef9cbdcb9644460a72a1f32e3",
"0x297ab0678798b06a4cc7147cc125baa11a058cf0889354e63229f185336cd356",
"0xee54e4f901531d3811aa6575c60409c7e6ad4b475e249fd3334883b438a2097",
"0x1b9b0f52375f34b4210e078d4824d0d385e6e412cf177f862aaafc3b6f11deef",
"0x261fe98c4a6882bf586ce9c03ba90555d428567bd98761ecb57bf8b1ec408458",
"0x28d8a46abca186e9fe9b326c166870f98acf6655eca805b881ee02ed4f3e8134",
"0x4da6035fa7dd89980485ac0feb277b1eadc58f522abf010de5bf9d33974f232",
"0x1a9738d1389ca170c20ab5bc4d39eb39992acf40d0c4da20ef3e3394ef369b88",
"0x183dd4932830f3f29bf1421cf0e03a90321b974c93a2779cc64031c4c0166274",
"0x1daefa57c81865e8a1e3163ca39d400cf5ce472f21a1888f300741ca61d61a3f",
"0x2ae49d27bf8dae3b5f8499fe9f76fd2f247b3825a8f4e89e5c53596a6ac5b13f",
"0x9063107e2a28ad8dec4ee2a43760006c728ea07dc7eff26f34c0e88becd87b0",
"0x327db09f5185889ae36e52db244214053b27bf18d3f240552dae62b60badfff",
"0x6e61b73f704a3cd70cfe843f37956d0c35cafe6bd28c5dfc1be98399c734fd",
"0x484994555a799cbc175bce4f3add547300ea3bf0597b52f08adba0d0d7478fb",
"0x1509af8f777631bb65bbe5ae68fb4bfd3e61040cc4c28250704e3e52e393a7c9",
"0x2502148be563d2dbed722eb34a878e32686eddc63235292ff336430ca6bd5f34",
"0xa90580e651271747716e4e65ea8dc039345e0609e4596fe65fe9539daa129fc",
"0x1268ac93435ddc3de28c7401ed6612751f4b244dccfe1a75269da8036a1173bc",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x11aa913289660f7deb7ccff2f4be6dad755ef59eed4b716fc8d87e247a6fdb45",
"0x29e72a16e4534eafdcdd6139bec5eb95e22b7566508e1b748614d450b54c15ff",
"0x1a958e6a0b1a339f1d3dcd38ce1328571f35f09abb1686e2fb4c3459f036c58c",
"0x2ed8337208e410744d73bfaa8049dd98a673eb4734b2f1e6c50dbfeed2532eac",
"0x29377f640a7f6f76b922b18954b3ec12216ba9c13e0010002b59ea34fa974bef",
"0x23454f27137134b9af8d43dbeb2f146c9a943bd5ec7fc7642da2ec887e9bc4cd",
"0x209816b4da19597eda949b4db4754061c72a3c902f9130edc98b592470b0ee5a",
"0xc1eae8b0bf925b0a155e42b2e51678cf5efc23a07e62a16ce7de2b5fa23a43b",
"0x86f81d19a31671e41a874adaa71edac75c4eccc6a2115c2ac96bab6e4da91b6",
"0x4c599ac0280aed84f94db0e328837392ea3338153ff37de61a7e28bd24392ce",
"0x2c4b7cb11e988d5451ea53bd7bc59c1d92a3250e5cb1b81c8017efd00693ae0b",
"0x20b49fc26af7d51f043b48670b79a409c4fc366332e67dcab28cdaed5fcb8f32",
"0x2b2de9914033de3d614ff1cc2a46234dd1f3605a9f4e52fdf2169986b31a754e",
"0x2a0a9aedae2ddb9eabbe22dedd043c670ff098249bca89b2d7b789c1a200e832",
"0x78bbcc544330029c5703ad867d374a907efee1f38764e417f6b724ba2156685",
"0x27f2b059159be5955c9e227e865d0a8add82aa951ebd9b2fe43545704f0c4bde",
"0x7a6c429e1100125d872120c307bde17b721dc31e16763cc096a989c97df7843",
"0x10424964905ef646913f708e8d4321e9ae2263875b83e5c65d096516581d4090",
"0x2c33aae7d921d4b90a0376b93aef9a02975fa8343dc0026066d791e9030e04a7",
"0x1232983e555c7d4bb4288fbdba3df682913813bbe616c9ef9568820e02459b4d",
"0x1ab5023e5ffbea8d4fe8e006beeebb3162a26e2a4546f51b1d836d3467816c0b",
"0x1cbda131f20b33ebceacff9339451b84854e65775fdc1f5ddbe8c35fab2116dc",
"0x2ba0bb8404000f7361cab18e78692a17d953323a30934ab439e23b6605c023a5",
"0x35fa0580ae06fc96e0e4af43e63b089591bebe233c526a67973f25cc7fb482c",
"0x70babb38665a3546e6e23f8f3b26f058bf131abf19d3c13d6d0588a317c6d8b",
"0xb642882c1295343e9ea28b89a62ceebe0b7919b6ca5e18811aa978bc181849e",
"0xc68a36f6df8c27deea1f66f891c80fc215aefc646f545d63cadf22ab44b5914",
"0x66489b3cc989e807be1363d97207014a2a14052de80edcd15c4e2f88d2c65dc",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x1026e6257b43e0afee22a0189f28e10718f4cc5e49b3d15405df85d8153e8e1b",
"0x3947588e943dfdbd95694ddb3a1ba7f51028c847b8a45164e87b5522418aec8",
"0x1b1cb2c496ae764bfde288ea50405ca6ae4ac6f9ad1998b83b7557787120cb1a",
"0x24fa4f9ef707a77f4f3742aaac6b8fc5bc59fa8c4046f9d024e3d5d80ac0c38b",
"0x21dca28d7160687fbc8d0d144c062711e4207f617895fa46dd87922777ff10fd",
"0x82cd14685bc3b3219e1a76ba6b2cd6b8286405a38705273a7faeda1da62b3a7",
"0x288c7734ce6cf001742b8e84fe502cf5205a623a3f0fe1d79f0fe916df073c4a",
"0xcbeaf576571ebb86d175b804c4655da7603096f9865f983a044bd8ebc416714",
"0x257aece5dd9d7be08e83df64b50b5ff1e31e4cb6ef8610c6dbc9eab409ae7383",
"0x178df36af677df81aba8a9fa9d31f995378d1f69d782058f7ef769555ad5363d",
"0x889c87f38b0244685014312d379ae5ae934531ba20b7e89f6e1e975e96d5bed",
"0x28898ecb6a12d999474f7cd98e7d0e3eb9da404cb45de9285115b647caf3102b",
"0x1544b607ee25873cc317f6eb88b72ba9371ff52bcb64753b0e90dcef61032604",
"0x30b741264c73950635ba61ae3be32eb643d9a78fb6a6f695ad4046f1b29a87d",
"0x25052d3381e118c1995ce20ebee9f1cf615053caf4d2ccc143fb1e6c4ce154f9",
"0x2f30bea892f8f2b335b8e8bd925f244335e430f0c77a2313013ddd6ed40de0aa",
"0xb0d65fa768e06aa8e5b1aea32a2d0eaa75d2548296268d7bdc1c4b7a2234989",
"0x1fa1a1014ba36436c1a7d8cea18580c577928229ed8e30ce94dabd98b873fe27",
"0x301c506433828eccfffbf89757d52692c7ec633f32e726ade9fb89f7839150a5",
"0x154a7110569dce2d4dfbb0c4d590669811751558a06207a1602bef10d3428ee",
"0x2f27c0dd673d6353840612d1cfdec89407d7a23e25678d1fc57aaf210355a84b",
"0x48683bcd4388885dd3956fb83e1890710c7d1cc5d103b48c2eb7a4e48d3c5ad",
"0x151c3648a02ad924ee9afe8dfa7f163033d1683aa8ad9508a6c96ab29c08908b",
"0x14baa70addf9eba4a80bbda03d2fce92e571486eda83f0c0fe59a7e4605eaec5",
"0xba6cd972cbb3905ed976b62ed34d972444d8211c71f82a79c089fef7a030e4d",
"0x25adc9138d823eee97b0dcf9e7142c4d791bab92c10215d5b4f44ee166c44018",
"0xf0416997a418d2a20cdac6c53e67640da3ab4b5cad5aa3c9c442efb895b7744",
"0x1dc3e4e5d9f2e587fd95028c6372a304d987eda0525879d1b7da7c775f0a417f",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0xcdacd248084fbe79ef314cb06a96f929ce94f525301e8858e6b0ab419a7b247",
"0x28765df4d0b75915b2000538e00a7dcc8219c6e428e82f452ce8882e609eef99",
"0xe81a5592eedab517a051cb7235c8bf0dc0c332258a65ca6e29a8625a334fe8e",
"0x88c064bf7c553c7e4d1b38425883f54d57f18a7f8e9800e06a3c2310f01b2b4",
"0x1d24333468728c030f01a3c93fe035e9fe913f3222c7149cc22e21d444fa49f2",
"0x81e4d01326c4596d16d5d9df406a063f0c6b323e2a8e406b2788391a6b2addf",
"0x352a5a0fac781a16a2d8bd72c9402a3b1d36199bd4ea46125e33c33732ab311",
"0x26618bc0fd81464f23f6e22fc19fad753df1b3c076275c95e0ffc437760fbbc",
"0x228b70124680c991be94ba0f8016e384609e7a7fdb2ab40d661614d65a52193",
"0x1d0ba067834fa54b50347297a3525a6198bfc7d47dd47106072c7901b900a4a0",
"0x196b16b4a3f2641cc6b343a57a66867f96be45005df9c9fc9d07710010a1df0a",
"0x2f45695ff148cac7bd348b093d94e075a73f4f60b52227eb8ed6048fbc47aeb0",
"0xe93289c741402aa1bc152dd82b4889b657db2944dd6cc5c9cbd8e72e69063e",
"0x123380ecc6c09da5e9f5ad2d298dc60dd0a9d37a4b67d4833d2fe428ae7a8db2",
"0x883e804219d5edfe1b0bfae68a76df18f1ca939207b6b0bfff7bef4309c7187",
"0x21588588decbc2f33ff25a389fec95f429fbf43b54ab23ab20d3914ab844eab",
"0x182c5a52fe6c6d2aac38a2fc06ffb65595a1ca4110cb09ab6f5070f5962fc478",
"0x6a58def11f1c27cd234bd7d9be04610f52b68575d9560d3dccf8ad9b5b741dc",
"0x29cbbb5cab2c9dffc5b12c9230afaa59c7d0b1846ff9bbd0e31de3218afb7742",
"0x9a1d4f4f00323630dc4f2d326a5ca2823e77944ebf1c22cb9343963c627f17b",
"0x25f5157f8a190e6bfbb1eae9cd55819609220a196fd89cd44b5b4603e80e87a6",
"0x2f0794e7af6874b7463bf9d7f7f6cd2b9141b2c71754e4a8e487e26b723d0d8d",
"0x2a816cbc315eb725995b6ab706c6da8757bec6f588849f85d10b31767998bd4c",
"0x2c5fd92cb6990590e62056205768da25c8132d8bed9cc787e73b81dd9ddc5448",
"0x2e80276a04b486b1a36aaaf7c15d1b6b4bd48238065cef5eab1c153235ca6937",
"0x15257a77d445dde9259c6151c0af6a1771f5c23924a4c4f7fed58669ce49bfa4",
"0x1219c007e9664d8a54be73a03262d03bfe15eb3a2f8e7c9194271235eb435814",
"0x95144c721ba3b18324e55e532885ce67613444d3cb3e95955d7201d779812d8",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x101a646241a8315f204d41adb7fad83b1a502ea09e7cdd815b21625cc0ebe09c",
"0x19282d6967bd22091e34c47fe72266e1cadc9f58d4f4679dc9255c09c2854963",
"0x42b2e9365e95f6b6afec41632d9a933f4744106315e3df2eb6633fb87356af2",
"0x86ed6b49511d6bd4815c76513809a77c277e506c3052c2beded9606623a4c99",
"0x58a4f66ba158c1aa28b651917f1fbc744b5286b3f6672ad39fe177be503345",
"0x28dde10bcf8969aa7a5b6ba1d48e2dcc3f69dfbb224566cb3fc977244a196cd1",
"0x3842b61df1832bc6b4e0ea70d7131f7b2561a94f78de3371aa976d05d635894",
"0x2c3bedddafb94b9427993c19bfa19472ed8cc066084c7cfa5c5e7f803a7582bf",
"0x163541b79f81db7f2742efa3584f07e1e7dd25a19ad934623e14b87f99601790",
"0x1846f2e5b96f8abbf20a2a6ed0d9a263337310372cf570a318dc3c91c849f112",
"0x6c7a3cee3f4166e6212f93f7d6eff60103cf16e252df30d110cfa0102331b15",
"0x25be194f6a3d69e3bf5f0b7cf58030a761e628b1a4de003d9e8a02fc2080ef74",
"0x2699fb6f71316244c10b2c672b2fbf077f217e1c910ccef06524af80f9c3fe0f",
"0x20e39137899fc0d2c5391fe185394173003faf87cdf3e438798b1666146b56c",
"0x22b9615e9d1b58292148c5aaa8c9eee5d540aa62bac93ccbe16c5b657161da59",
"0x17a4039cf90fb2c8ca78a2ab8474e5fcd1bcc7dd4974302128890f792960a722",
"0x296a7947ed0816212521f82cc836f1b747640ed9311e5a8432b24f131abf74da",
"0xe6222d1f658021ae1a8c83fef1078b54fe29719d30a30e33e95530140b2ac5e",
"0x24a832d0b62d7fedb241b289e95fc7f4507556c422183cdf1bafd1a516301960",
"0x314978ffbd36b1bf6b6efff9ceffdfd22c3128dab03035bc4d1811ed3a22465",
"0x23456fedebbef43f154140b56f0106c7b3a5b7cd60f7ce2a085a59d219364080",
"0x2bdfd3aa4bca894312e9f392192596efe7aadbe7b2c22aae990c18ce32c56f2c",
"0x1767d8e87ff8dde844b861af172f011a8094f2c93f14a367e3f4008414779996",
"0x9afea3b803901209c60fbed76494748e3af704cd3d68f6dcd846b5b37efd752",
"0x1eef9a7f080331471dd29d7d0106b95b1cf30854c201d0c7354699f2c0ff18fa",
"0x1ac0df8788f7b6b264c4b5fb1d15f9f43ccb6914fa627a6454bd7b107398f328",
"0x153587dd8856ef1c5ba584cbc5c6206ff27316111bcb089a37000e01fe12156c",
"0x1ec3422f01d367deb6566ea3f37caaeba6e6f1ab9b487e6adcd9abe7fa2d17a3",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x92ab362071be64ee1defe4c464b18ea957003ddd4fb25ef1ce8c93eb0da67e2",
"0x2087c4812bd0d03d971979f341256e284a686b63564b913c6203e3a3316a0bbe",
"0x15e9d37afb1e0877c55cd521cb79c5f20658f8f238b8679a50abfab5edd498ad",
"0x2d3aef5f158c34c12fe84c4d48d49dfc4b27ef3ad9f6e9c29b9516be85df233e",
"0x244a3d476b0a0690158a1bedff28cfab8bf6f5ba4491691326e6b1b71bb2650b",
"0x10e9d046cdec45124f7bd3aac446b7f0eba568df3462c86c60751ce3e51c3ee1",
"0x2590289589edc3112e5d87b4f474904fa9dd4dc4f26298d1e9666c281dd58357",
"0x13765e0ca93cb708b9cf1ecb6427f1a0df0b53a7d112bc1a1439c3afc8e8c13a",
"0x196d3192651b1e8b5b1cf54e775eea3a4f4d67e60db2f0be380ee48819fd495e",
"0x18c81e4ef19c7276d9cda9d9bde0b3d4334f4748c76db52bdc4cb0de91def3a5",
"0x25f4226ce2c992fdb6affc2c85c8ca64c9db486e8471f93e30d97045eb4aee58",
"0x2a152c83769c9a975382957eacc862459e4227080ef497775273995c3f30c3e7",
"0x13bdc6f2694024b1e21e3fe7b281e44a48e32c31ae815aeea28a283187bfce73",
"0x18be50dd564a7b862bb9f3fd822a9e6cf8527290d0fffd2986b6efb0e4ec3ecc",
"0x76b689cf6fc26746914c11187642ad45b934b9dba8499e1e0f645d1e7360976",
"0x24cb96220d02e7d183cd28cdd89024647df21deba55e20bb0a529909ed483db5",
"0x109261482d8eefedd9555eaa2d4466e1b9582cdb50dad968f73ad96df83b6afa",
"0x24f33850fe4d7019ffafbd669532788d02c6a0dbb39948ada0b07f444aa824ef",
"0x175369adaefa269a66baec32ffd60d1be0ee1f39ca8525dcb73a6357860abb2e",
"0x25b9fec7cc7f651e8354d7aae86dc9b3964fbdec440c6c8369fea81eeaaae8b1",
"0x2d0c8b82de5ce4c55025fcd286e9ca575c3b0b90a7da5f677a0504c05a4b0cb7",
"0x227437dd063cea6ebb85f7b564232d22be29cdd7772640936c3698b7c9fecf66",
"0x1bbba5bfc8a010cb25f637ba686157eea46f820848fc2c2fc636f933d4014101",
"0x14471102a5ec4909add2c73da2c60ca518809f1e160be7dfd14a6e9b397683e6",
"0x1b13fb4a716a8661bd984574b55249784576b8346fc245fa7ff1154e748623e5",
"0x26344c34f453274463aaf170748550a3e5cd38fb0dfff173a2ffca0a7f2dded",
"0x2541b62c8a52ffbdd29ea87ae0919225e12dcabe2104b5f4708708a2cf4fc38c",
"0xfbd922b73f16d661458c67bf7b4b325aaf303c5a12902a667a78c8507036976",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x2355f03ba072a620b568e7d310d9fa639d134ffd98561cdbd2297beb13ea0f10",
"0x25ff4bb05b96f0a0b05562057a8db99f97e1e2951137c0c40fa932de73ca19ed",
"0x2daf950c80154f6e7c49704d705e14871273499f2f619b86c5c5d157a6203dfd",
"0x51cefccdb8cf6928b91c3127747d700e86844f1148f0a34c6d77c5b849fe690",
"0x238262ec5467d6af343b33543cd5fdcdf909062c84f812fe01aed5cc87fc476b",
"0xb7daca406fc36c69aa958fa616f4838d61a9dde2e45ac8bc788fb2cb21019e4",
"0x15bc83c5e68048d36ab9dd5750982c086ebf0d155254d898c60e644231c54e13",
"0x1c63961d501d08c43558a7bbb6adf0248ce7d85c46ed8d18cb57fd255d70da87",
"0x2509bb8169fdbbd47da25a7229eea6ded1c619d3c047b7838aaace2693656732",
"0x69a50d4c1eec1a0ed50274c6fa4867ef658dc1379d8fbf9878d4b35e9fa99bf",
"0x15d74c0872e9b1164992ce0394cab9fd723220e0696d28ea011620716be1af17",
"0x10b0c815190863422b42d8bfbc68921d1ed561055ae5057b45c5e46be5a6eb4e",
"0xc11c306b5211eb36fcbe505a754052252ddc622d02f4420c77390851d6c42d2",
"0x150cfca445b9336ce22dfcad1175f597794b2f4bfd18a9780eaa12eef2ee5c55",
"0x194de31d0ce18660aa746a9356d96070ce237944e5304630884874a2fba798d5",
"0x14c2071d9d7df808b50b19e77e314406aee8b339c4a245b2770b802af790ebb5",
"0x15847c79aa8e1c92c18c3bff302c31eb38f001804c8291fd590cb9025a7d12a3",
"0xfbba1d54897882de6c7d26203aa96c3db29d788b0bd435c1d354c271b126973",
"0x1a3b7ee6c4f24ea92d2228b4b760223f9a34d8f70c3872400920bc066465877",
"0x2ce61015cc1e5520a83c0124f38a8359caeda53051194702485e00cc2ed02bf4",
"0x2b8be03a29a0e8fb62bbc207e587deb46eda5bdbe99e522e773bf63e6cff6334",
"0x105e1aedf0cf9f12ad2416a44fbf458d6237ee895960bb8c25299ac72bde12f2",
"0x120c504e8e99eeb16539249612eb1a9687e2f99e4fec80123f0c29378553bbf8",
"0xf35ac3925b66d52bde5da31655b11df9975be00efcbca7da24e85509dea2f50",
"0xf4957169958f20b8cb24ddd2c1fa8668bb5694fb82c2779a93e2d993c2a4369",
"0x7f61b3cc5f1220535cdc630b9033172c02afa0a7988a57c373a91c13263d805",
"0xe16429a495a0878289a4e187af2b3b9e0395ca3401938b70f07c0647273ad8d",
"0x18190cef50589e6c73faf348b5cd88be8dcbb44f37ecdf70e94a3b4045fb2620",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x227f232164c4e3c741afa130d206cd84d835e4817c4bab99ceabe0bf4da575df",
"0x1b1d09c8b7aea951d45cf1390c95b03c29f6820492ce2478739df09b9bf0fe5a",
"0x1bd040cdcfded9e6d08d3d6bbbf55a86aba6aa5c13cf09ff4cc6db28420a1830",
"0x2c4d2f16535632f050256086dd4e2c88479a1d3684ecb8c25fcf3096b3e1a6ca",
"0xead790bfabc7e81f7ce3b6d68134286977c619a13efef5ac110244721c097a9",
"0x8900754358a5d9716c6e2fc17133da9069794fadd42410213b5e30e7dba7565",
"0x24c0631f518904d6a003e225b34d3d02e2e5645f7c6bcebcf4f9944fad419f2a",
"0x9ec6105a057621f9bd18fe13e9dede1ebedce6d72461dc1c4faabfa1aa7f105",
"0x79b0343c865e073462767b20213ffa9443db0387c9506503586ee533302e802",
"0x7df63d142bd6c29ee03aca8d1d5428920a7fde6437b949149327c2967d14245",
"0x2ff26c8169cec62032f72ac25650a6c94a18afca7d04da0e3291d3ce71a7711c",
"0x164edabbfeeda046884e4f8595e438127c32f8467d9de721fb50a816688e33db",
"0xbf8306af475136a305a5a78b818c1f2d49ab9fa181c11de516e38a96ebf9f55",
"0x16da51bf32b4e134bdb05926f7b975562a7f2fcb671bf0584fb0e4d33f33638c",
"0x142930caa1828bd842e28c8790df9d033eefae7b165ddce53fcd46f86d3be2f0",
"0x1ae7e0a72e9bad383d09d0555a1f5a0bf1753ce1a17e254b49bef0fc899a6e99",
"0x280313df7e066df1cb639a4b30ea2aa78ba46720595d77ee31b55de2a713dc54",
"0x1ba62055d4a6b3257fa66b471f11be979422c05d3a839ee6aaffe7ac1c0b247",
"0xfddc6ca4b45778c49a7db293c78628431edc830512b7b1c8e5754ed2f39ff04",
"0x929d32df53f196e858a97b178b1d47e42247d5dcf37b08b4852ad74f9cc78a8",
"0xf967d1490ffa3280071a718013b3ae7f9727755d261fa1d85c3ef7b0559283f",
"0xf5490a89b5fc95c115da17e181a7e95b3d3d2229e73581c6bea89a0edf5421b",
"0x674bfe177fdc1301f1d49c2879734cae162898d11000050734402c75384c736",
"0x18e1ade3d71eef67b1499555516671ec9978a13c5da32b3cc87a373a6515eb66",
"0x1f9179afb7f5975be537568da903fe09944e257b2757934ccf2e36149021f009",
"0xc11a256c35c638a65f02d745d35712fd303bd7d3137311a1322339402479ee8",
"0x2ab557843dbbcbff147b3f03de15fe79e8d40e9cd6cc556b12958bee7a900f67",
"0x168dd127ba4582848eac364d737e87bd02024b8924b4adda31a9a37a3415cea4",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x2c4d427a7bec8d19617045360e52794c7a1a6de79c4e919698a87ec516366cca",
"0x36d01a16f30bd802544df169c77ea02c0008342cd8a415e67e49f2ab20538b8",
"0x104dada7b72b24405dc07a4feafa385fdd6e87d0eb0d0b0d461bce56c4f574d4",
"0x1d189ce1540193127426e68c7efbf6116be294f4e39c2ac7fb43eece2a5230f2",
"0x20969c1c5a7537d61331393f6a5a2ad15ebf51efacf6b61f37c08c8ea0823cd6",
"0x1727f8b0eb9595229baf305b3fc99c51d538637e2d2ea8931037c7350d5f96ca",
"0x1897f619c615a92fc082a589d89a7c522625432213d6a92fad9e2626aa0ee79b",
"0x1f62599143f1f32cd4efb433f14ed14544681878db55878f13e69694a226b3f6",
"0x118c2c92848d6aaeda5c8b61d8ed6953b7b659a25efae602f9961353f7c781d5",
"0x18997289e946839e6c3554194b87e6c0d4cbf30f47bc73b126d6eebe47a1cec6",
"0x130da6eb344dee64037fb513703caa96d8aaba83f7c8099308b4e6c82b14cd83",
"0x245357b0b612c4aeb12540db9ae1526513e7885ce50ee8ca0b58c5bf54261563",
"0x16efacd482e07f1fee18c96ad1725aaa33cac494d4e7301aa173f1c29a625581",
"0x1aaf282a0db417234b2f0afcd782874ec2a635899f3ebdf33f4bad118acdfaec",
"0xbb16e9a26f6e4449016a392f58cc0abdc15838cec0863a15cf24737b7a9c804",
"0x1ab091e043a032a1a8a17875c09930f2f3f8f014966977c7672e052387a88724",
"0x17a1b1b5e07302afe1156372691356ad32f77ab95b6dc1766cfdd4c02d260e0e",
"0x198f8c2021281502a922a03b04b3418571d4ce4f5359ca251015e477fd983d96",
"0x1cd705bc50da7642e8f41975abb2ac63593ce9575a0ebe0ec412e33c2955131c",
"0x2f634bc6e688daeb64b11b71780307d998916ea7db4cd7ac0761a03dd3fb1744",
"0x70efde061570346ca148955dee284634e28b4f5ef14d09018e289a5b6b5c643",
"0x129e1fa03e4374b6aa7cc2ccbc35e20a6124b84f3df49bbcc3f5aa1c25f8567a",
"0x872750e7e4e00867ca29aab19b0221191e89a4e7e17fbc0e0a97a6b99d79816",
"0x23e8c43c57b9dc6fd6b899818a44200e2544bf0865fdcac5b4256777fc765928",
"0x2a6b794cd03c70ef06885cb5ad01698f2340877a5a848c8f49ede93b5c9e830b",
"0x94578409d6462e7e25ad9d0816a6f6e2b198c464796c9c8d4fd566df266099d",
"0x1b2b611f853458bb3f92b07d97f4a8d0fe323b635959664d7003ace44646b9c6",
"0x205b0fa2b6f2ebaad41abd2b1feb4f7af003b5e73f91d342dc196ae182fbea21",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x18813c17a1991709dfc3d21cef51ad2b5a728731db369c24f53c9c18f7537922",
"0x28e2f1491faa1312b2fc0756fc93e6faf260cf3c9a798c4c75567e6e2450f189",
"0x2456cf94d7ff6e124cf859d5c41e4cf38e76e96c66356df4959af90e84caa6b7",
"0x19d01fae3e6bf2a3d738e5adc140ccb0566748abd79323db3085fd1bd3a938a8",
"0x15b9bb8c1653e644f0ce9be50bc599be543d181a965c47b1e55e75c128df6451",
"0xaf54a3486b44d6cd344d767948c8bab86a3b770730d578d35c946076ba55628",
"0x2c403933d9fdce9b2356ea5599a17ca6fa2c527472702d33a1bbe1dc6481585",
"0x1f8600480399291bcdb8f2bd4410cac16f4cc035599a6e7f7fc3896dc95595e4",
"0x20853b736e1ef67fc8dd165d3fe11a6734287efcbb6524fb6eae1a66a7b1e8df",
"0x2f4630a0f0018b04c6bb77e84776e06e3b2452d47be2d16220ead1da61106b20",
"0x2b9036c48f9af1b32085e3eae9f541c4ea7b650f1a5226ea661b9125215e8995",
"0x16e06530b370ba9ce030ecc30f063bc064d716de78cd74c2262d483406e0e68d",
"0x16965fc262e0ca879a932d721e95d16953229eea7b3e95cbe325b48bbf4e851f",
"0x282361e61365be447c940bc7b8caddef10a82e8a51423e7ce17f4ccc8ac6826e",
"0xe5f05bc3d2f27eaf48ba6efbb95fd33d29dd9d371afdb46065089f07b5aaad7",
"0x45e49d05e82f9c8192a3fd3c936e73ed07f0edd6db0007205695a23c9272ba6",
"0x1aec3601dc7eaf614f812cbc025ea069d2ad1eb2b1c8bb602500cdc8b4ec97d7",
"0x29182e5f19d8e48e13b7a98a19be4552f09b452d0e93fb876b3672cbdbd48d82",
"0xe82f9feb507fd178f0e2c0c324e07dcedcdc0cb2ad743ceeb4e2b62dd1355e3",
"0x9c0bf03083c7a7f84dad628b3528a89001d43100039491bb3729319bd75f304",
"0x1ac08c4bc322282517d3e9201c601823165882a09f83e43fac846c1620aa01b8",
"0x25661bfb76d976aa63291de2624e7f306a50ec4a32128a39bcbb6cfe34a227d0",
"0x2dfbf71289f57fad67be3438cc1f0dbc969529942a623a899addfeb77ef1945e",
"0x805aaa9f12a17bf01288cca68aec10cf08db6bcf49a8bb56edbffb97f6886df",
"0x2bfea7d79a17720df5f215d42ab5736098c83da075facb964eb2fef730b22564",
"0x297315ed7ac6f9bc92b4dd4a4052519a5029ce7c97eef84ff11a461864dbf9d8",
"0x172960704ca74222cdd9c8ebf1821031312b4c21cbb282c1f11cdee3ec28284c",
"0x14b30a8e90ee6a1e22fde21503094bafa3d61004b38a69cf94b493e101a3dd29",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x25c2fb93758a36327dbeb7dfec90e331cad05a04e5c84e6b40e65987d73ee448",
"0x15be6f22cbd5f38ec70f9133e8392e8fdb41f28d831c27bcb36e415fcf9fe843",
"0x1d2187e9af970cefee949d0888c73dc41e7e257e327a9f20e4648928551e062a",
"0x699ddcb91e856bd25bec8b21980bbb163d38a20d47fa9d813a32324e80ac79b",
"0xfced0a1de64093947616ade5773e0f7ba22eac4862322dd5ec787fdffe3325f",
"0x27768b29635a400d365c934202e4bded719df8effad85e6eeabedc24a4154888",
"0x1b1f6642ad87106cd16ec5421b38c40392423fe0d12f282efc8474efeb957d1e",
"0xa3e365d3159084cc673a44044bdd4260e1bd25b74f746772a3c77ef3e48cb9a",
"0x24179d5e64991d45a0634da43510ccf0a34059695e151682b9d356411edb7cf5",
"0xfbbbb67aa88655564de38814ec6376f4da97ee274586c5287c163d1b0f98dd5",
"0x11edd5438d9b4168d6e2bbaed31f31ea464dbab80ed5e702126fd82ed38350eb",
"0x1b76cf5e219ed4bc311a00cdb03e28ffbf86542cbd0252d0715bb48469c15dd6",
"0x148437b32c2bc48962d356ffcaa4edc05be984134fb75f3956d5d91044f79393",
"0x10942207a5f66bb8252988730fb82f23a45be26389489f66da6fa113a40ab0c0",
"0x124681e28623f42196e8ad7bb2374c77487c37485bba1a9075859582d10c061b",
"0x2f9dc5b15dc408e7e97ead3b9d8cfc654f6914922e33d7bbf4c061cd8583bb2e",
"0x11597e8f45721d0f8a2900ec7823302003282aafabbbdfffc64e5f3caa274777",
"0x14ee771b1e80f23b2fc58d2f98d43a75dde2a5c7d37fb0ec3a90b661ee4f191b",
"0x22142acbf84a03df8d16dd2ea6dad8b4100f864e5dab2f6afaa6a4a36612a4c1",
"0x17cca25c3d45d22a57fe904ab20f916d9b1890d5b7f70f56e5732325a790e637",
"0x3120041b1c3a4c87445672333283fe28d18f05deb5c7e9fdce6cda7fa4d069a",
"0x965b18e93bde84a1d8424a74e69eb6aae7a73fc920e5cf5e86410a46511ffac",
"0x3601f2a0058f85efa835c5ef0276719f80779d854e881370a3d4150a68a4b65",
"0x14f0454cb6ddaf09579651aaea20532036ee6f54bd9893614b2eadcfc041d756",
"0x11844e3d73731aa76edd24afb82a49d60c861eaa25579c45fcb23de6a45667d3",
"0xd49b3c8de5c8a009efb91116d019f97c01ee5289ca666b6807fc89fa0697e32",
"0x15ac66208d53f730d995abc5cd72d50ad90909c8cdce17c5aa78bc0b274a8571",
"0x1c9c5cb02fb78be508a818a070deeb6963c687dce2975aa4593a89ff1ea675a0",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x210b5dd8b7bfe15189d3aea8e53b5bb7b462204e8eae1f9596bfbf1cab727bcc",
"0x1e72e11f21abc22a4f68b374dd8726a2c72f9891deb6536f3a4bed98cec40858",
"0x1d0ea48d109e37ba4d144a4251066d6d7b7910bf92f44aefe7081027e1e94ffb",
"0x19c6c9e54dd8314a776b1b1e8d423cb2fd5b6d4951f3abdf7176875a0837b3e8",
"0x1722bd20050713407ab428b4a1598dbce86e6a04f9093d0d415b546bc1d265e9",
"0x1bee9ee0577f4a46e9500f2066dfbffcbaf775211450f521e13aceacd519010d",
"0x4f1c326c88072a05332ad14d25ede90d430394bd8e80321dd6869a561282e37",
"0x2db49dfe6b2f6f8f38102e019206a908503e268cdbd5fd7689855932394952e5",
"0x18cacf5fcbe1e383706c2ae6e294c691eb86074e611439200f39b49db2739409",
"0x251e39efdd606e5efeefe439a1d01dacfd6c29729472ed884160d4018d1e510",
"0x20ca4abd314e386d0154234a94bc5b85522a1730c005528a74d7f2147e449437",
"0xfd8d3092bca7b55b7ccecf94172ad86eeb0336257108ca5a1786cb88be7249f",
"0x14a262e3bfae15e0345a1f837f1343b2b245fa3dc706956bdd64a74c48e86e23",
"0x21e54491928f3904814373340aa65a0f97be52dbead9b91011fc454b2dc8f6ea",
"0x1a41918b8c68ea8d675330f618419302cdb44d7c4821561bf3f75f10824cc06c",
"0x21930445fb5f525159a17da94a2dd4d28485794801b0c9a694b03b849e0878da",
"0x17535af3d952f2a356554ad0183697eec1c86ed9db1121036de89df8f758c7cf",
"0x1a82f3c943c80fe4ee37b238146142decb389d69918a0d7abd97a691e2ab80f2",
"0x53b942c6f210f073fa9c58f6e607da4fcacadae35e5bea34eeb6a54cca2eebc",
"0xd34f91b743a6ba52c32052bd0623804fc8cf2bd384bc98002434a2c9614337c",
"0x2749b7c85c71adfbeb5900b6334c4dabc9925e9885c9a525e74f1edb1e630a8f",
"0x2284a0f1ee6a86ff447d51e642951ca76a50fc3f4c0d009228aa67f9a9b1f953",
"0x22c7f25053d11e887909b02af7de7e57f5b5f9d37ff75acd8ccdbb74b717e23a",
"0x29c30ea916675045cb996f3d2f3662cae115e6822329f93a4d159f18afcfc49b",
"0xe555cdfb1576e9bb5cb70a9234a6e9238b912c9d65100f2dd5f3130bf5a000f",
"0x2f16e6a9e0bd6fc0b41d91bd065f60dbc36179607545fd58f0b1e6efbc86e172",
"0x25f261e99981d3fd2b094a13dfdd14e1ace2d0100973ce0331081826b8c69ca7",
"0x14d1b4bde07ea82505ebc4f4f9b599ca214a099e081a286a223bf8309e9b1348",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0xc2161d0dfe1fb1b030d25ba9e72e2d0f9c7be11edc3ee0310dff7dec3ed10e0",
"0x1de725c7f6c995721e1a1d0a90cb31563110eeaf81456a3f8a9809440c9e9e14",
"0x12389968950116f0177afe2b7732608bafa5e8d50393668844f9db50455729a6",
"0x17aaa2062cdde57f4a67c7052c0990ba08b3e874633dd41237cb6094246d678c",
"0xb9984737ec0a6541f484c9fe4837a7639b58d017cdccd2beb305a937a0b79b0",
"0x320982d756176f852dcd74ce8be156b5d7f92db99df5ccbc5cc96e93d83773d",
"0x2a4319d0bc04e4c18b9b105983c8744ca4cfc428f20ea477e9a60441ca15cd52",
"0x182b9434e89db547bd499a5122ad77854562962cf0435e21d960d1c4498edb5f",
"0x1d26abc0becb0e422d36f4c59b34f6fe77ba771192b2fcadc8cd0965bf0ccfb1",
"0x958a9dce1b6a17620dfb54c364af3ee428dc932d81d1dc4669503840dcb541f",
"0xa8a70a8379d71136fbe77851617cbf9d52257c32c9c3ca4c8078c90ced7160f",
"0x208a9a840025bc0c38b883213fbbb42c311c4d7a3f1c2d53924999892fa9f931",
"0x1f1acec1766b25775db439929b1550734fd8204b77afab09e4251a2e1e123664",
"0x387e51920edf06b64c6bbf3aa91d6de80a4c3a6a55493c4cb038f55ab379b97",
"0x283a3b099b37a60369426569295e1919635a5f557c26e2d9bd62024ed42f6cb1",
"0x3a82b07486a61e769d4f4a9691129b1497ead1ea2dcd4d44fdb626b31fa4c2c",
"0x15aea7b6a44e01bd2a1993a824bb751773d6ff20d3459974f00602982b20f837",
"0x91383aa8ee58024a7d0eaacba661fa0afa042d4490bb02061a005799d8926fd",
"0x1c4738d32fed84629967a249121d25afda758ec66b825730f4c0171f05981826",
"0x5e10a29beb202a5238338a3cb6f3ad81f78d044a791cb03cfd63367678373c7",
"0xe3405582a614f4ec28465cccae382ee3e56fc67f4574846f5a011c2ae4bb316",
"0x13c2e18736871254346e7951da5758a3bfdbaea4a37c62f5204e2d833c9ffec6",
"0xe892a08fd4d17f277eb16d8cf6ea60a8ab263ed317c20970c54e02655bbbd4d",
"0x38c23026542424fca9729f5959d6b7a300d7c8663dc2de7d63c98fb737c885d",
"0x242560875a24ccbded928c30e4c78e28f36975b1767933888f3a3eedc4e56759",
"0xe32ec6d6c80d3bac0aad1635fb195ab640de35ed9e19e60033751b9b17b7938",
"0x127f81d915a7546cb2d35659181f70a31cda6b1c0f011cf3d4d2d908e44755fb",
"0x2feeb1c3f308139ae4f23ced4a2bd3df75c7dbe7ff9d89ab31405ff4e1f88034",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x1abfd157d65b0faade670c600f964a0582539691f909a27f1342ae7f1d1f1659",
"0x287edf9809122fe7f424748beab604c04270dc4bb549932ab49db3e42ccf675e",
"0x574627cd0b8f02033621b45ee0293376d29811f14dc701b6aac4565c5e2346e",
"0x13be344cefe3cb23d84de26cb8dcef9ec21de4e275675cb81d8e071b52dbbc54",
"0x2bd04c2debf244a79c22c363e0656dca89ee4a641137602268796e048f222ffe",
"0x21671759ce3b7fa3b8dd29ef4be836d011c802e90a5bd2850db423f0b84b8f97",
"0x15e2eca1f4f24c534ee99f492613185b6eee35daa601ef5c73ccc1b2183b5928",
"0x1ac428a1c403acacea5b19eb5a9db448badb082eaf12a0bdb39e33de1b2acff5",
"0x18d056fe0886b5342e70987aa78d6760e87ebf840fce54ab3790159a2359ba63",
"0x103478de82699756c898690ad0431b1a62d0779b072728b2e8f9f1c3dc0fdc44",
"0x3ad3345d4e0b9af20a5acebcd23f067ccd8aad3109ac7d180430242a083bef3",
"0x84a2a0a197a762bd6c633ed789ae1c92af3d189421801e2cff4ca4cb7bb4b9b",
"0xb9fac3f1b5b7769bf369780edeae7d4009586d8eed37df7613d8532240a4b2b",
"0x2b6c5a5b0b2e999c52d385c1ec41bf6fa8bee62c6be1e4896ec6eebcb6577f",
"0x2b891566a83432ef436b4c379f8033c4297d73e413ab6d3dde28a446727d6d01",
"0x215093cbac4cd6a567810f829abc65d556c7c7d81937770546c68fee9b0bc5aa",
"0x59542cf02d9ed7aee0b72da0ec5092043be68c53e4207e4c9d05cdee2620c95",
"0x2c5db84b283b99e21c2d7387fcbd3d71bcc262ceb616379ed537e29d3d4f4511",
"0x23a84bc9d5e7f467120927f9570e3c4646a6ab1d7177df4a0972c42588ea47da",
"0x1af62c1dd6f9e0526f8c4eb716f2cb087122b6efbab08fe32af30d76825c7e59",
"0x240df1209a4dc3cfa2e57e4e0b8369b81ae2d530ee1e022f45476ef3d5541f14",
"0x1d663e716dc9e681f325217cdd3394e128afe26e727a3e74df24263781c370a9",
"0x280935cb8ce696be4fa88e7502cf01612d955d783b8703024a85cc776ba98bb1",
"0x13dcbefa8c14a98bf73e722e6aa233610b00c4687a29badca7ce239074b0b6d8",
"0x10184429c03a6a7dcb093b06a4180cf8c2b1ebe3786a5a58149398a80bf85015",
"0x2b9b91c8e29a94d655338b761838c1698e4b8cb751a103b0a35bca7380413e61",
"0xe8036f74c51d11dfc744f686ee20f62dfb45bf99bbdaf43a5512b087566369d",
"0x1e20b85a64e45febbac3f5fbfbb8b1efc111cd57c8cd56e83dd51bf62a4b2903",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x27d3fefc3fc713f9ddb2e3fb5a4943e55c336d9881f463532e63bd3257825095",
"0x64c66b3bb1fdcd169d3d15cd51d5f7b598642e290207911002b652693f48a9a",
"0xe9a5387f39fff6e25b4c460cc50c1d9a9d772e889ad7b3d357f016eb7bbaafe",
"0x30372e3fd7ca7cf85f5c5fce64deffc2eb2f6bc1f0f81b9447ced714e4dd47e3",
"0x1c698c1fb76b93d6036f01961482e8db670da8178aa66c57ea8d6f02218046c0",
"0x165745c3218528545f671cd07fe2a521f2cd6a5cc268601b120b9794a583b2f",
"0x1bd6ac92ec06f6ac1f1f348ce1f5608e60679a7a13c7d37f881c147233749072",
"0x646a2c8ed477619f611baf19f5f2315d030d93485d7c72a057d7521b05126cd",
"0xc5d7ece37cb949c5fcf9dfd72b620951ecfa5411f8ac7f9cf6706346077b2ee",
"0xe0f95062611089d30cf1641ef9f5142d5c09677428dde2a5b70990ce98862c1",
"0x1167dfcdef684e802ee0ad2745b448bc9488677fb4a9f21f4306ad438e8a7154",
"0x8b58d9c87ea695ddef4557a17c6c6ce8b34b20ecf1dde355d4f564f529d9e52",
"0x2c0c0c0caa80990aa8b3db0b093748f6d4148b7d56d6ac8448363d592d495bb4",
"0x22cf8f510e15dbb54dd7aaaa9acbb79d93c91caa6790069822f17eadc58f3bee",
"0x1dcbdcc87c651a39a1cbbf4a2429512ef5d3d5d2ef8c2c272bb11943f15dc73f",
"0x268f76f1dcf5f445f31a5c3e2f77f9370f0c039da51a0bcf499e89c50dde72ea",
"0x12ea4be23cef2bc588a2c5d3f0a473d86fe2e62aa05e4993fd8e3c3a04fc81de",
"0xaa8a1b42480a433972000e6b714bd6205cd020e387ab80ce788b4d244893d9b",
"0x9c9635e93ef111fc995b0f41181d644507a96adc5036626025d14c67280340e",
"0x2f19542276afae3f9bf2d8bc1ff25277634b5e44631c88a3ededd309a35fc238",
"0x2bf08e4ad9318465d011b6fad36953dd572e1a06e6ae04acbddcfde42ea6c978",
"0x2e415ee818590fff4a8eba14dc2db89eab455471fcb48723a23d28bd07f22181",
"0x2ba1b1348857a0dddb145fd370c4a5145794b555fe90aaab30eaabbb831e57b2",
"0x2c45b38c22d1834fad94146ecd9e2084fa0801d4d2500d3c9b02dfdae2c686d5",
"0x55fde4fa51238ae151360d0bb3e53d6bc88454434e0a3e7e81886971f44f1bd",
"0x1b500c091d518878d60bb9c1e46487120fafcc07d99070f6abeb94cf72d099c1",
"0x1507c80ac988a1d66a9b7d7e0d489e3dfa903dccdd39cbe30d66e70a4465cfda",
"0x2c5389c4c3d7db5534ec96975e24b341bb8a3950817c95fa6886ffa17e3729ad",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x220d668f431ca31318ddab3a7d699e1daccc2681c19e28782245bf06aa393eee",
"0xf82c73508a680275741c5449a2108b0b4deabb7adce05695c6a9a56491b09c9",
"0x81d2dcbe555ead7fea3650ec79e20c01aea1bd8694204cfcb53f440ee9f0c4c",
"0x12d6def4feb3b9695f3a33305c190d41b44360fe4f7edec96b9ac2ee5d19d237",
"0x188a70595236991b549396dd83dc110ab7848143320ffbd8bfbb8d067daa0dc2",
"0x1ee5cd9ffc83473d252da6d5f220a32b0f14054ed87e47d163f611b0a03c0500",
"0x336f443081e4e4ef2f80daa0d427376db59a5cd44d09c4ca4fced8213c49792",
"0x2e31f59a54ad75b935c7968deccae44c7651c6989e7a194d8eb75db56f3c8e6e",
"0xfc66fe6e89f9c6b8fcfb1b825a394b791404b4c535db02105a0cf9b814718cb",
"0x19392614602253f18fff6c6add01041fbf1ac573c430bafd1be9d0bed661f9e",
"0x26bc696c9022801b5558f13a240c2f2595cba3d923740bb15f857012d65b4e30",
"0x3e41f8254eea920e176dab66a494aac26a9050a6083321aed3e9c60da60f30f",
"0x277e13cf936573c9ea57fec54bc20dcb76b9bb22e43dd7d3f0c88ccc4350d4cd",
"0x100790eb28152be3bbec49d19719f1e819559e0b83cd3fa5f55b3f11e2ba7c5b",
"0x8a5bcc49a8ef4b71ccba577422b91bf7b0eb873ed4f819a03f84b7b22b3748b",
"0xfe17cdcc7b34315c294c9afd7ada649e535d66e18bf207d0627af9b985f0fc0",
"0x8423e16c6102fbc4eab76ad8b96e75ab86107261c8be93c4fd3312a65ab5bf3",
"0x24659f4e6909f198d2da3d29a4be15ff86b279a012972befc5ab6d55e6d38807",
"0x145fb5febeebb5b6feb24341d5ad656cbe31346d4146c778f495fb1948270c4",
"0x13ad1e400a7375f25b79fffb3e0ad1d1022bfb6eec76f9f2762919eabe8d63ca",
"0x1d087711ceeef2c9423d13cd5d262f9c6d536fb84d1c171bef1feb446ecf88cb",
"0x2a914d202be77991a1357bb453bd09062b6073f195f314e552608fafea4fb38d",
"0x1660b2ad261b31ed9a13147bc1ee06a9f186e70cd619111a21b51b33d2d1169e",
"0x1bcc7790328fa163162a0e8544eed39b1a7a96cd61e0aa49b117ae18af29e75f",
"0x2ac02b109eeacd4b06cb5378f08cb37d622a856d0629fd3bc03d8e2cabe54ea8",
"0x30616182ee240c6e1792a51a9bfe54aa6851cc10b377c468021dccbbfa60a3fa",
"0x37e7fc430f341384ae6aa7f96a7173a91f7d896e77d464e1f8fa8c470e187ac",
"0x2c238e1df2dcb6d7c94bff7c9e3a4951fe54db4e926c431fb6332e3f6ad23da4",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x200ff178d06931904472b00fe23a8a113d17ceb33d6d0c910068fd5168a541b7",
"0x2c3afc766aee27aad8b1ba9fb14b3d56e2217c9c7e9ad3363d56fe5b31721680",
"0x2128f1a125e0c64edcf0d03a397dbca56375f0fb87ce41480e525c2470391e7d",
"0x9c62fdb776c4fd510eea089910bd2537f8efda0286768d88a2c9ffd4b8151f2",
"0x20426c548d66b90866a7ecd77278c69e33b3d1ab23f0801342e4064b3be82618",
"0x7adcb9b76dfa25de61d2902ce37140c9cfc7d51fb2f8ef8e2317163f06641d9",
"0x914a79c6d02adc94876ebafea2b8e6ada5ac238e7320147fdfda370afed4e94",
"0x3a5d3e37105e1d08281bb2840176dc462a386409ac1e7eac82be7dba931e9a8",
"0x12aa83b029bfb3b8f742e689995ddf71c0aa28984dc073e73a38aa8dd8a72de8",
"0x1b293978db1884bd8802eb86d98477a690036f148d0a07b165b9437a87c8d30",
"0x29f5d2ca3bbe30251e5228e63e1eed9c906c4d98647410c4a3c74315101fd5ff",
"0x7bf47ac1aeee2ae48457ad8031ce6b2c072a65acac7427ef29ec2166c2d1f1f",
"0x1316c94951ec5aa5a37e96922334dc116d22f3e3fb219f8195e25d93e62d282e",
"0xe5a891e769da4c1b0d10fbde39d81225fa6c48216717edfbd9443541130abd1",
"0x10a84451b6d2e943ef60255bb33321f4d3eae64981695a27bd75d7c72cd85d",
"0x344e6fa9e638ded4d99a92b2dae4381ab2401aefd50558fd8ea90764cade9b3",
"0x28a513ee6230bebef34ead9978b224ec3d8f252f2c3956a781854d04a293d5a4",
"0x1e21c489a47bf56a811404304e04714ece44f376ce998e3499ba91fbcb0fd207",
"0x2563badf855b5dd41a35570028bf5d97e9430a60962fba0441d52860765a4120",
"0x209333ede8112c2a18bed033eec46e7899c53627cbe5d7ff49e932455ab51612",
"0x1b740c4dce2fa0cf3af1053e8da92456db1f2e31c99caa6918c8297e3350fe88",
"0x2310a0173db9d135f259497b3f27551d01feb64d4e0cf2233f7823c8d4e16219",
"0x2362c8df290b748b65a8680c1ce2c43c5fa82837c5f84f8107c12ca823709f6",
"0x24bf53879bc6be25827e47537248702baa3a4773fb5c17476e142e70ab17cb69",
"0x193b4986cecdda54bf346868bb20f1d62e3e795ae49a775191a01eaa4bf095af",
"0x171de60c3b1f06108a0ea4c621016c0400fc9b96af211250f9c25062aa3f971c",
"0x170208c0bb8840367fc496ede9af48ef98913cc6800a76318fd8fef208860c19",
"0x19305439f5cd0d17d75d1981b097bf61709a427cc09e83e6e983b41bdee4d8ab",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x14d4a3a0742364a9f659b29349bfa5455751e48da07705179afb0d01e8989db",
"0x14507c7d18dbf71926567faf318f25bae7d15d1627e930fbef4dc76068a1eb9a",
"0xab92e37d54cdf29da56dfe18704f6517ee8894c9db8e42ac9d3f8c80009e6de",
"0xd3a5cce50b706d0e2d5ab6d99cc5ee19d414a99901ae56d8ed2b90c70161473",
"0x1faacbc551048977f44fdf37a9c68496027dfb6de98761ce68087ca0892cf084",
"0x82e2d6fbcfedb2a32622e4c9f6d4ced6cf0a570062df9b838c4684f4a8f6c2a",
"0x15345de0a699ca5370e036b6b65ee4d4d3412d46901b471ca44787cfba69d203",
"0x125429d4185d9e71c4e428cc2cd6b98da229e56e941f37b846d46c6dfccba94e",
"0x10f072b77d74f20ba0d03b4115303bf37ea98a20a51f03b54756e770e3503601",
"0x3a5a00dddccd6eaa0b88cc6ab2ef6b0452a206a04bb5bf2361baa3f2136b2dc",
"0x301071c4a6d3e6b3e274dd6ecd6f5889e65e92dcb190e6980d8765f946ea5ff7",
"0x497842511b8c65d38dd10ea79c157976239b771f5ee8a72930b45c15b0ce6e4",
"0x1a7f3811571bf5bcd0786a27a61702e4165a02f734965b52996a6cbc1abf6248",
"0x29b6c15ea8aacdc694b94efd98045716dc81aa60c6ae224970ebd0395a6c2039",
"0x1ac6bb7492d1e4f715604b57a281164ac925c56efc0cd0fe495e189914f1478a",
"0x1671405a7351ef20e4b093337091a308e1858d50656a24a08993b416dd0750d5",
"0x29784e4a72baef66066c6b4a580e5ee0d6010543ff0edf90ae6177bccbe3f34a",
"0x15bb878d0c3129d4ae1e3203a7e88cd90f025c8ba652403e8be7241c2908a334",
"0x145ff66f889d0eba5e243c1c4780f5ccefc25775a82f555aa6acfbb1e6f44792",
"0x2397dc005d52a49fe64bcc7e71398f4668e4b1d7d23e2cd41f5a240b7fd2015a",
"0x104fae947bc81f5ebb40171e9ce8e51d91d558d686cb92d39ab245db3b7f980d",
"0x11d92195df064b6bc2f2702af25e1d57a49adc4774f769d32b632ad5cb29c38a",
"0x1de8fb3988b840fedd6f1ec8f4156fdcadb7781b895ac7267ff16635a57cfa81",
"0x27089624e599b1c50dcca8257a778965238f557d50adeee696f52f5656affbdf",
"0x1e5b7ee2346227404b1492732b5e6f36722d8bb7c99f2ad8f48c6123519218c1",
"0x44744daf2989bde9d3d36878bbd2116fb0e6f03f36ec8c360ac7180c6a87a9c",
"0x18b6b8ae538910b9634a54cc1903d21f0e9a4626abe012f424ff26e7a4f389db",
"0x1ea586928d1078d44a1a4bdbd2e566b924a14187c428717894ec06f47d01269e",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x299ee7098c20a8d8485fb78b37b5794235fb37625243103d86edaac65fe67351",
"0x173d58cc84bfde0327aa48c131cab0183f9b471f25ecfff26cd950bfb4c4f744",
"0x163536baa734cee7b3ed0d01cf2dbefdfa8e8f5b26e6fe1eac9411f87cfbdb7e",
"0xc348237f64f9f76bae51d147a191aa505fa9134ddf66975b7f54ca99b377894",
"0x23efe24fb00b171697d7a06849d9eac5e14e032631c17ac0dfd273eecbaaa293",
"0x1e7878f760e864ef15b4039e253047ddee33b082b6e3ec3828e35c184d455a66",
"0x2bef7ad013467126fe0cd58abb1dc92d50314c8ae9410163fbf8c886f86fe02a",
"0x2202801fc79b3c1ce769d85ac6bbe8b8225e81bad63c2a26fdbd813eab14a147",
"0x12a9c7120c9ac72e58a53bec642e04890a20bd2080b06717d971c5cbc74e9d31",
"0x2dc68da29a775c40fe59bfb40d1bf330871f453995f7cdef71b67e14356086e1",
"0x110afe2764fc7945d4fb2f8bee04cf7b8cb3859bf62c54bb37d0cbbc8fa283e5",
"0x21ef54ad10c3962befed62137a17e8cca0ef4476d68f57cb31290cbd089e9123",
"0x1c4faa0f27dd17f4d20fc930a295dc90afe4b2b319b72c7ab3d5d67fd659a716",
"0x496dac1141cce7811aa16c3cc7ee5bf926b19b57e4c2a3fef441f6a4f3e5e0f",
"0x1124c584f931153f9eb51cc7bf62a908c7d935eeac92ad89be0cf7b3b70bf0a5",
"0xd60e7160e15c49ac0535919cfe58b9bba626b7a560d187d93c02a2013d7a25b",
"0x1fb86c2a75e7eb166c625ae15189b3395bbac9ca27fc7140420929c57f254dfe",
"0x302e9af922d3af8a056f402150e34809253afae3405b769561958e2ece0eb937",
"0x208a3e5caddbd869846894744991f2d5b855cf126f2fbd0da3c7655f6c44e6a7",
"0xfd167a0ef538adf695b83b0c7e2b65edf204f994296f4154adcb45d5afbd5cb",
"0x1231fcf2898720a22a2a98204af8bc2b06e0cf72daacaac1af1b08d1310e2b30",
"0xad52af94770e15ede8be17b72e4f2bc1bfe73902d78b7f3a52a254898131b43",
"0x63dedd90276c2738935a71b3acef9d2f2dd3b9bd49e54ea8b62261422d3d77d",
"0xf58416b4af85510a6f3becec11d8db6c097194ed62d4a04e5a2a295011a3bff",
"0x15933b922f212592a806daee6209c9a02ecb21ce2bfdb1353862d7629df1ef97",
"0x1228654cad70cfa7a1f1f30b4cb5d9279d2f49bfc233411477c333cb630256b6",
"0x1b099efaf6a089382b0231daf9a65505b77b54b6af4491365b9316f988bcdca6",
"0x75756cb31cafce46aff3d873280c21ab9253a0c587f5a5e107364178091e73b",
"0x4523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe",
"0x2e36976f35a34be56bf3881e93370f08203d1f8b0be967cad4ccf4d9d2c83c52",
"0x1650b34e0e8b2ad5ab5de19ff253eaf6dcd3e20d22bc69539c834437e0888513",
"0x2154f3f4c1b5b2a42078df70bd1c6b4f042ed01adcefe5b603b4830008715af8",
"0x281286cb63e657f78e369c0f6db3c980cdab1e57fdcf32505ccc325e7a9e8c40",
"0x3008b3f202e3d206436f7dac2412d51744cccbc8e1ac457c11e0faf6d6060cf2",
"0x2c0268fe5d032bcf88a2803e4ddd2f3e1dbfb58915b47d0fca518043272d5b27",
"0x22e8ab4fa7bac348cedbcfd376a8ec6512fdf78adf936f6548594d6584953227",
"0xbf717c0f092d04fa4598afbcc898ccbcdea3eb9d3d1f5042b0f325ebd57028",
"0x1f500e6028390530690b82421f359563c768803db6fb3d0135c5366c9cae12c1",
"0x1b9881d9fb9346520e1e411de0696df0a4dac3684a15c02154dc0e7fae528484",
"0x24ecaab85ce3beec4c380c207c564f4ba6995c3290f2766a89b73010eacfca19",
"0x756a8ad9f562abf2600b8dc808abe6a2bfb0d4352824251e07be2c0e64dca67",
"0x2a1d50d0f3da33a873e9dd5e5e2966bd40445c1e6eb9504dd4b276ecfa0b318c",
"0x1fad2242540d4366495a5ad4fb69ad25b8261d2e1ee56d56669be07686e9217d",
"0x113ad8b46c3eec20c9965b5a7b2e8a51529871d0401b4de6f63de9e5211623e2",
"0x1fc50a16dbdfa1c3b99038f47f81a1c5d1ef6e7b221d4ccca6e821220130e000",
"0x1214a9d6d7288fe85651a8cb83048c7669c83b5ed82ca2642fff01e852a44b4a",
"0xd421a7c25af5538788f49475836712af5da156f88c5867568cd958e305026cc",
"0x2de8ba83d2b6ab6a711fb9230adee1cba46de8c930c86d266acb8c1cb9684e24",
"0xea7be82f1cb493b1bbd83ab7ca285bf0a1559ea05c3f59827b3b013d0a91fb2",
"0x1e3ae7e5775d352651d713ebdfcebf9ca8e905cfb792bf7874239450f914c8c5",
"0x5943e3618a32cf050018a4e2375f4d027b8c14ac82a0de57cbb90c5122a64b4",
"0x603755180f66e98215d61e5346b116cc00cfd058274d7d969b3af95e78bb335",
"0x19817db66fdb8215ecf70476c4044c3f41d78ac5a549c684e35845947dca0b11",
"0x73965f7a9ba8cb33a955d42da55fd7c37a3f0226b029d36dcb3fbea95d642f3",
"0x9a550431430846b6694125b5642b00607f36a1a29485361a3cf427da77eccd0",
"0x68eb4e9d6e0a588b61a6ad501f380da0f009067666c0853d156e33d59c43515",
"0x225e00a0da5a7f7496b70d0923a7cf7ff332bff06958cc0f3fad439874f6024d"
],
[
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x2fb280a1f23df0c4566f310cf31beafdc3e238a7d873fdc50655fe827868e909",
"0x36f175c993f4e409a6275e71558b9e1a0fcd7e4183891a7471ea6f987d6d0f2",
"0x3be177a0fe1bf76a94d443647e0f69c0a74cc5dc7af217762210b2855e849f1",
"0xed6491c4fd0f129acabcf5a68f01ebd10df6211d4d1fcf54ed75bf6c7cbc146",
"0x2158db47b374d9dd31d47c20844fa870005051c013941b2d710ee62e56c0e4ce",
"0x637d7b15c4259de4866d36005fb17b866227447e5dce4c27794413980eaa09f",
"0xb745dc1580e5e3d6319028050cb792ad8fcb5b1a156dfac6595edff287d4bd0",
"0xdc8bdccc8f3ddabca39be41a609714af65f518ef34738fda76e2755e7378699",
"0x1fdb7856e27d608c397fa9f7f6d2fdc4b31b17f45c8a347124c8c82ace7e1033",
"0xafff33732a140f6759bfd5b2949356a349c26c64b5bb018665e54acb329d3ec",
"0x1b1d97c16995fec9aee31a16facade0e2cca653efebee3d5ea70c0f7b39c1383",
"0x29ea18e6e4c75a1c3694bdbdb3fd274c37f51e2917f9e0b01d81870ef9235387",
"0x15d5f5aaf91baaebd34d07b9634610b85966c008feec7843fab7e50b0616427f",
"0xbd8e0c3a167d9eb943bf19f18d765230fd7d224df0645851e669591df01239f",
"0x129293724e2d76cbaccac841326365a0b92bfc00437147de6390d964cc0e055a",
"0x2d70576548941c2fb6bed6c525db5d0c33ca6c86f81db33838548d672b7b2641",
"0x2becbbc12e49825055888292d91ac7439a3cf337d5f9873c735d92e52a054434",
"0xcefd0b81bfabcb9920230f3a729ae3303943d8e396c5c0e5ca01f4611f3f617",
"0x6e47e966b1b597c61413dc4f996f1456719742257039015c9c1d0aa33c0b0ac",
"0xbf90647c85cbc82b06e3a94198e44335720b8afbdff06112e2aca505a43c47d",
"0x239bc57d7b109caefd8c614767a590a68f658c69cbec21fef283a50324179227",
"0xa36ae4cb35b4f865d7225191366fe691dd65ad5f2966b74f2adc28d26d2d322",
"0x11244585fece886e4685fc703c807ec8e0d591b575fcd089a969d684be4ce2b8",
"0xcaa7779dc16bdbf99a3f45903ace5079185e317efd5733fc7f766ce57e29694",
"0x26996b9d086885f9bd6908adb4aaf6deae8306e463250814dc66e00674193839",
"0x135e66a0ee13b287e51f5f1e8f79d4fe7ca55d9135e8921272920ec732bcdc16",
"0x233e95062085e2dec808029c59a0e8230077331e358613563788518a3972e5b1",
"0x23ab13b15889f8bb381efebe71172f91a0ad65d9f05af6b59e00d0c99f8ae082",
"0x1ede4de25a83103e2dea729f0c68a908589fe0e604c86f8d57e058fe11000742",
"0x2b5b5bee788dcb23bd488533ccae1431e3f3504e3b89e6eeda4ae8b5bbeb4c78",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x257363f01fbb108ce6360b115eb038270946eb8c46b6ececd68596765ed894d3",
"0xe06611bd4eee1605582fc2f0a195524e57a552ff9f2c76832189c382d763944",
"0xab70fb6823f52c277b8dd4ff261d965a9427d34af4afbf19f3b24260c15f8e0",
"0x179c941d644d804a3a4068884fd1c6d7a82d411d4698c91e1b242966d3bbdab5",
"0x37f916e90d419042d297bdc952c7cd02746cbc188149a51a0987cfefe0dc13d",
"0x43f3dc3d91b0abb531882dc015e1d9d05dd646d42dfd9f4c1493a085cc00a56",
"0x143ad19c1249acbef488ea0a074f56afd3f5b89666235cbf8bb5e6fe44096642",
"0x1b76610fc8cef2eb0f4fa76df7ce299237fe7b3a9d024b7d405ec095719c4279",
"0x1a5148d68913df74c872a1ea5aa4b542b3ab1b9c0dda2ec220cf2bc36d69ad59",
"0x13f11022ed02284972037000666e2d3edbeb9a5350c37fedc293be998eba32dc",
"0x806f266e4c35c6f066925ff73d6abde5e46f5bc55b01015db95162159092a70",
"0x2e14cdaace09d09b49d437ca48752123a6efe3c75660218f408878871d073f64",
"0x1c4fa8d7c6c8eaf33116df7af0abe56945403e111f0ed36af029a17a88027839",
"0x23436fd3d8d48c7de5ea32899d09e601877896e044051e59d481f26c6f44594",
"0x437191fdcb2c0fccb9dd2b70155e1e3eb91a104b14235a84f9c7f715f666b10",
"0x2f68a6ebb5daa3c1c0b1f8e1cc3ebbbb29dae51f21dcab1b8f24f30e52f6a1bb",
"0x2d82def6705911bbfa278a38d385fe17c9810bcafd7126f48ffbbdd197e1fec5",
"0x15fead0f7cceb9fa5a96b903121d234539c447f776bf13290f0d0fd9cd776a63",
"0x12390ef95e294ede3c435f9f14ae4f121cdaaa6b5de4f3f79969a8f91fb37793",
"0xa9f6f1757a4b1abc8e0a5b0fea83cd2b8e565105fc6d52e692dece89a6c11e6",
"0x996db2a2060b0454ec8a132ee6d810df2df49031ce420e4e790c723f578bd49",
"0x2670a74f37e6a32596938caea3cec3e05b337ced6c23d2bf2ec5987dfbcc6905",
"0x28ae07ea7a529805d3aafe9f5a2ae662f908b17f864ab59b98452ef28e3fd44e",
"0x24002c49771a2fcb63c046d1507b8b2259b4eff63a7be958329f6319fe8c787",
"0x2703e03745ed8810cc93cca78ea613cf39f492180d6ac47300e4babd4f357dce",
"0x22930293c333499085eae55a01cbf8c32b04d211a0709bd9b758f733e2ed7b7b",
"0x2a0ac5d7f2daa3edadbdeaaa440967d97baec637cf48a67a36810430014a902b",
"0x25fa48cb70003175db4b2241e6bbb08a9d30128c86f68bf6e79e9a3dd4f3f4ec",
"0xbae040ff4b1f63b97474a971446b680c23ff4d55212a99d03d1e27278770016",
"0x2fa5db728b6058cc42348c90267158f8e76ab99c646e66664dc2b93963218e16",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x114401a4ccc83c86ae0fa520a3ebe4478fa6d7c4c634b4a6503da334da8404de",
"0x1ca6273af6d2e51a8b7c2ba869a1bf10de7a5b9786ad947a02c2b1b6ee821274",
"0x2c7b4af671ec5fa12531b63b511782f1f46ee5428b9184d960caf0deb0e08d03",
"0x1230182c434b2175e9362b023e55456bf97d514e5332e4753ffeda60f5d97b0b",
"0x22e041c288ef26f1d07c86d6c24f48eb041d83a8260b6772892181e2120c91e1",
"0x28acbc69fbf7a25ed38927ba63cde5a18284f26ad6581317782219221cc6bd8e",
"0x2487337fffaa7fea6440fb59e8e888c1724bbd1f1118d32ada6a3651e46ef543",
"0x61f4630cd8a70b5c6a1950def1f7eeda1d2cfd750eac8bcd21d0928d54503db",
"0x3cfcdd58420e81bfedb04dfd4e5b57b03eb8afefb5963b81339d92445458b6",
"0x1211f09c601c31128561f10ffdef73487c927091f10086ffa889eec1378757e2",
"0xad6247ae3bacb716899003f881ae2cb44e40ff4863dc07a400bde10cabc91b",
"0x161bcf48d7d37906ef29d522a6631e22e344ff951be2f5418c1f58ef81106949",
"0x1615caafce9cf99656045f01b9050872d167219533072672a6261bdafc405e27",
"0x1f1fd1b64c8024c19dc4c906e121bc5023c76b1c9610fecc02e009e384fde164",
"0x1a343f06c742b6ea01dcca051e7f812097250e81efa506561817c2accde13fb2",
"0x1aa5ad37af4cf033774e8cedb40c36cc1bf2fd2e73c135a2145897e255644ab8",
"0xa8e74375e1ca92003153a84d2a88b38796905e42f05a2aeaa22b6174545679b",
"0xddcb524f3d1e36d26523b37e7a7a565ca7aafbe8b9d7d21805d79b391345944",
"0xc64669d92336353367ff746030b946691eed63a8710d15b44907913558ea892",
"0x18663caed52af3125ff734ea821f2b1c0ff63e253eb8df61c23998b3852eeb2b",
"0x8aa2a6dc1acace95ae99cfae9f48a5edb8d91e6be62ef97a8e48f7bf9d22cc3",
"0x1d810d45be42ede9157e37dd929a6b74d0ace0e72b96d6f1e048532027613e9d",
"0x2cc11816c46e64c6e7135d72c00a7dce65a7614cbc164dfca2be624668a51767",
"0x6bcac935d9e6233eee8555d901d6cb0b5a18e0baeb0774c42bb2c2216a8d3d7",
"0x81f422bb15ef7e9b57b79cad63226fc53cb080e6d412e790b5051b5adb01208",
"0x17233f2458d93db35c213a72c969a94aaef62fd6a76435c683129a9795177bfe",
"0x223c464793888525ecf5d3c873cdb3a6bd67587499a00b440d924c2fdc45f640",
"0x12ff515ef3e169b038bbacf953537c2b28dbd1b5ba3fc7a26900188aef36e2e7",
"0x55e0568770fbc4c9b3d698e621b1980736ec4259f0b09d9f1e820f7da4174b3",
"0x185b90addcc3b674ecbd0987f9480b74625fd07c91bdcbf048a647d561c756cc",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0xa4ab29f428a1b4040f5510e8b4f10494ebdbf12885955ce937a17360b4b295e",
"0x2a64788ea96296d7253a3a9e357715234f9318c08376c15de69487fbf9b0996d",
"0x2385278678bf43e06271b87c3f984f1b425b166ba786b2e1e723739a6752f6c9",
"0xf8d204bcf2efaa0866818f1c3986627ff998995317a960b56d8aa3f5c10fbfd",
"0x2d07b5bc553344a4887dc8f3db5858e5defda22caa9a6ccbe23e3332ba18aadd",
"0x1e1a6765877cb93580433e025985f80aa19c9089c17138480426bcae49aa1c7d",
"0x15f1a60617344d29b6da60f57ced335da1dadb402ae9a56ebad3c0aab3b69e73",
"0x6be01da4de9af6b0d2937bcb65697fdc23e8bdbf5343938315ef4dbf045d914",
"0x204479ba44f6c6079df123ba1a54e248db6d4d0480393913790ff1f10b9ead7e",
"0x1967ca2365849a5ba9abe3419797885af9736c42439f1481862a00cb4c83b24b",
"0x37b78ab4c6c1cbe83f197633c4c83e22fd38219786d9c5744ed4224eabba54b",
"0x21202d9fece3b3517c2d5e79e8a5b47824fe47658704341ba7bfda3a3414fc5a",
"0x18bd7e46303c3c2a31e68492472578708a68d1d6036b961650057b7d1ce55eb9",
"0xc5f32f34e129de8d01bf9010b16047bb2c2128ee021fce0ae2c03a2f0b20c55",
"0x1ea1c77b9ce7d24a4f32fff661e414f0793d9c4477fcc5a577b0e5145c80671f",
"0x2abb7ec37e2a52a09fa5ba144d29b8fea69efa205b4690330013d2da27fab6fb",
"0x196d47ff262f5a90329962beb3c403490547808ffe4fe96c699195d9ee5a2326",
"0x2da5dc389b073e52f92970aaef0d061beba25bbe8520b781911858598682f57e",
"0x2cce11343f974369dd5fdeb7a8a796d3a83feedcfa0a78db72dbb789bbe1d847",
"0x131262e283cf0b05fef60886f32f084a47755fcb4cb7ccc4c689e4e7f0437b75",
"0xae1188d015d3604fb38931c02d790fca244b8b284d547b62fb03f98ac887716",
"0x7579345afb1c183eb92a630bb7d061969cdc515414bf9399797d7413f8b904d",
"0x2429aebe4a674a80f0a8ae9b38a3f253e45b897ae71a7b5d0afe4fd77d5d8769",
"0x1382b92a6c573bb195a953dc0c697bbbf30dcf6806f6ab2a5f7b500a80052de9",
"0x1d182578837b58b32dd31a315254bb0a49b04b3d5ea49d582f6426637be87413",
"0x2d9888fc8880aa1e4b265cf60218727c3556ac8d31b7a3dc6a1dd5d51b902207",
"0x28fab72bbb99f1a6eaf2040a74ff55e87c5a48c2d392a7752c76fd2fb33e3390",
"0x2678f1ceacfa8e3b48b5eae7f060021a4f58cef56b12d52b9f06a09e4eda55af",
"0x1f61d359d1619ec4ff2f1eafe57827c9316e10754718b9f51b36c71979cc448f",
"0x1a1d9f64b52be377e509d5a57f004bcb6db0edc85aed26f51581d912da30e95b",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x23884cfd0f045915025a44e9bdb14491e626edf74afffee874c3e4d125a4a177",
"0x285d07475f22446af1515c134b10ef890bdd927d0328230d6374ceae21e5f169",
"0x353d664345c344fa26ce90da4f498fe33a62e8c46e7e05b47ce11b669bcccd4",
"0xa5f24df76f39b004c073e1cfcab0880702b9e84837cbcb21bd002e2449ebff0",
"0x12dc4fd8b792019288d665292050cf58bbb2c55be723d6678ddcbcf55cdf5c29",
"0x193f04538e44b693b5f03c328610092e8b253895beca308625b8bba24229e6bb",
"0xd40fe93ed90a0196dc17eb24b05dbfd08a2d9b85103dd44d887b78bbf08251e",
"0x1a1e1f731268025c10698efff9a1898281733296a02ec2e4286c0aa9d766250d",
"0x27e53cee0536c3e96bd4b78d76b1b99d611466b687c60dc5242304cf2c7f04aa",
"0x1e131e762835f631765d6a0548f8b99786b3379a5423669f348e63c1a3cd4057",
"0x18377b53a6b68420631a509767ab747af54ff52fc6a300f6759e89d0fa81f62d",
"0x2b52851f9a2c117d24b7b3ef861d3d98145e18be0ab17461bef9170dd124f2a5",
"0x203131dfe05f4f3859a2962ce2736f5f665679cd543440e5bbdf8c9e468f8f1a",
"0x11ba7216dd386406bd1ee9de577c3015b3b568f612b79d2b901955439b5f47b4",
"0x6cff68dad82139580b6ee40346acb41a1b88e34344b1ee124cd845ba4d8db12",
"0x176b605012f38593df0d0e12fdaba43a024327554f045875a394ab6d66596693",
"0x2bb40088a1add8496b2a0d0774c06d99000d9f7f5e78edefd8267bdc2602823c",
"0x6ab5edcd1a597a55efb6f5f3028b5d46dd1838af7e0a7618fabd206ae02db19",
"0x1ef4d4d25e3f6731401c06e2327e1dcdd251e5d868a49615d7c9e671b74e52ba",
"0x1132917918891833659ae5aa5d4608e9ee52f8bb8c6a15af2bb6c5b2538ee108",
"0x3ea727908383eb9c0c5fd4c8f4477c7d7cb3887c6b7408097c2a099ccdb436",
"0x1c671af55a23385b16b41f93bc5c9df9244a2b2917fa26f989936d9e10f58965",
"0x2877b09253cd0233d358dd5c03a15ebd382a94f65bb32f81a409c3209c83dd16",
"0x120ac765f71527adaadbb9e91c78bfbd17f30b1c5824bbbb6eb82d2745bd3352",
"0x1c2a7fe3bb93bafb54e3a35f4fccd2685dc5a59ff6b9e76538f37b7c79110633",
"0x245676b487e217c63beeb368b204d8fe8e5e051aa91efdbcf6854d9d5ee8aec4",
"0x1a0f4f24f3fa75b07185d59f382ff63f277dd1af0a902f7107b63fc9f450d87e",
"0x174bb5947efa62f904759a2e85cc92c84b797688ee8c2f05699d0305f6a68abc",
"0x93051276353b63507c05bf904de6f8d971f7d386c1748053840b7b775beba02",
"0x20110b96b513965874eec9b57166abe7a71dbac4300ded7aea9eb190ef9b082a",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x17a51da68d46000951b06fb3f9e3d5b83494d28feae75a0d77381129d1b5cc11",
"0x19124aeaabecf4135010e1a965341e48ca4fdb7b0cd507710ce685bece85a51f",
"0xd4eff1190530bdc2e0fad57504ad2d927a0d5d19c94424013818bbedac93ccd",
"0xc4e91e3b7cef308d9d42940dbf9a496e5e23f954bbf9cd9f6a141bc043c89f1",
"0x2a91fff770b866c8ca8c530d786a522131c1526c4694d8b7b7ad3ad8678c6140",
"0x211b948fb5c8a9cc45f8dff7f19d5092c441a1749009ee7b0d26d02d15302df7",
"0x1e30b1031a24069cc93961bcbe7ae460663d24ac25b376fa8d2a8cea3969e66a",
"0x18b82e2032f53458de5b5b8f6c69d0f59033e0e843d3523a0e433aac75004ec6",
"0x1dc22b5bfc2732c1f3481351752d7895f5594716a57b22de0953d8675f35784d",
"0xbc687ef3b18a77ed8495a8838fa82e35a2be17ae2bba47a9f5abaa26021afd8",
"0x2371c26d8f7425cee8f66acc9f647d889b78a20c02fef9bc8e65295536d55666",
"0x1477473a9e49c36a60b0415dba5e832e23ba2575682cb706c5cef38c2ee8b9b3",
"0x53e482959dcdb79f52e64a3bbe20793fad3af4f4d052c0cb9d36dfa396bf4f5",
"0x1f1b58b95eaef51e442d66ed24a23e300b3df3032f45040577402279da01620",
"0x141411af50e95784b5365ec3d4879e78d311c06d3b031a47b7b1989ff8e2a05c",
"0x2252323b3ec06cc62710778370917d94635eadd0ab946d83c7211df2fd18b12b",
"0x1f9f09cfcbdcebaea2b1053db41f39406c4bd7c08d69632e5fa88d11d8db2ff",
"0x69d5da11e6652375d70f87ebbe9b7df0addda9634eae09990b68560ac4ed710",
"0x1978e5d647456a8b3a66edba35753faa93e3f3af1c89f418aea0f68bb513a0c8",
"0x25d9a4e603b812f39a20e6e5eb99c0ed2845d383b952b42e23d65fe68209f458",
"0x234b43e3517f8573d5b4b6c905721747501928557ec4165d9513940880050221",
"0x3e66cf2636881c8a51bbb3532f0ee3abf099d16c6e029eebc7ae903a9b74d74",
"0x1e98f8fa7b0e98762453c23bac6735b00b4fadfe63c0448be0ce344456b7f189",
"0x8aa709b54a8df091ca048763f4573cf9917aeac083ca1b7f7eb84c060d0e932",
"0x52c7ca7fdca9ac2cd344a294d322f1d71d1384d5e0a6f44d0ac8b34e6aac4cd",
"0x331b02bc917bfc6691d8d7f52eba08a5fc3f47d16f02e440644390c39ab7361",
"0xd898949994a6f263a9f8225ca5d4a118b7955a4a79606262394ce69d7a7e127",
"0x10b47b130c16007b5379d744a7bc19e45f6d92e271a299766420139f20a7766e",
"0x1132f014fa7599d744c6d40d1be4ddd44e62b3fa4bdc439a48ca4c08caff36ee",
"0x1c5e38ab4551aaa2ab2ab5b69f5d6478d668719523787df968bec6e67c349a0f",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x11c9a8d1a7cf032ef4eeb3976cb45ab2639e2328e018f2450eed36a42b51724a",
"0xd68b0ef4859a99d9a3d358f48ec049222b4adc40f5211420ff9792d3380451c",
"0xf7e3fbe842d222839a6a28926d2b7dbb20cc776f5cc35ebe6de1972a8061070",
"0x20ee52f4c572121f278ca8f09daad2f1c0ef8541099378b0bae1913528b01102",
"0x24177470839e90548fe652abf877b6e788dfa4e0f4364a20487089349d2b14fa",
"0x1fa98b63c69a198ee335de75179b230861470a0f60459ed53930f592106154b0",
"0x18fed7ca1d352fdd257bd8999e955d46f48c3fb2f67e9c8b29ca0fd6ed5cc4dc",
"0x1e4afb9b1400def427a1a5c956e761be43bc3d15ef07098cb08bfa994e5c69b4",
"0x2b8b851fafcc041cedfa64521f6fb53a58788b5b166da469192a1d5aaba1ab06",
"0x91cf8ac82b6d84be9f81ac1351faa0de2226260a1019d1dfb24437ca34325de",
"0x6f7d61897e3a765d4e4526de3cc13b4c657cc5ec81e08388c41d94a808a9a5c",
"0x2862142916a2c23432ee3563951c646c4de7552008c928fa13ce3e3501ed8af",
"0x2cc6cc5a7e65d688d27ffcf1c4749764e7294c23d0108a57b29af443bb93f5a1",
"0x140d2a34847cb9f0776176010d8070cec8392f612f3573d63e58d69a4c9565bf",
"0x19800afc9d05a5b0386e87a855acdcc743a1c80b0f71063d56d0f4d6eafed03a",
"0x2691df476c22b56f9d6d0cfeb1b706d66a1e41e69de5f6da9f02b9dfd8954d35",
"0xe3d1a370a2c113f55e8be6a59667f72e0bc9018c6c2b7dc154de2ada843cf99",
"0x422041cdbb99e9110963285e90c233f1843361d8d36878b2b2425ecc9ad1468",
"0x18b3970150586c60e36243d9f787e9cd234ae54249bd47d53d8350431027541d",
"0x2608a620c9370842cc1e7eb75ced965212717b22032cff3a90f1916d5d6e4b47",
"0x102e638d33d73cd137a4bc97b16ed6ea8ff2114ef025e123a47fae1209212fa7",
"0x81127c379d08c86b6283e3ba2f7a163f156ff1efbe2d058b68ff1d8198115ea",
"0x1003330e6c9bb087c4e374163f1d93b51ea2747126942a891b93247dc3b9dfe0",
"0x26286df4b90a6d6a80afeb845b9b574c8e114dab2b23abd4d92c90d05611792f",
"0x2fcbce3693a0f365c77f5da41f04606747334c0e21ceaf4719a9c6c55a6db034",
"0xee49f7bf8d9a6b4657cca9a553b12ee1e0375a2251402b6233f14b3ae43c458",
"0x1a9ca035a5bba9e01a8339c07711d9c5e79cae3441f272af3e6fd0fa56889e06",
"0x1202f2ca7d4f98e448e3cc47113806ec2f94885d536976db84ac4f06b7df6567",
"0x89a14bbb8f0965a914cbbf83049d95598ed83fb7aebbc75a4f681efce3130fd",
"0x13488f3b0456524d4982305fef6e6c81f959a37da7bbafab57f87e8a2e3f264e",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x155c91db5f59fd8ea52fff20993ddc3285ecff97ce2ad697f4a078e8440361e2",
"0x5c61ec06f5561c87256ec21c6aa92ab1d3dce01496072af5c5081aed70a073d",
"0x9849dc13d2eca871c4dc1d117cb0d5eb5b1a98e63a1821f6e0895d0109138da",
"0x133c60ae1597bcae3f030cf1a3ef515ef77f8dfc0fecfff084411ff40a6505ce",
"0x120e93850c13de3d06be4ea933f3451cb3d4836d55f8b65b30e3814a1eac7cbd",
"0xd29374214e1a4abeeb8d36880e6f43a2a899b3bcca7ffe0fc1482411439cf27",
"0x1650118703315ae3ebf1b4f5e333373428251036a1245ace4134f4c9bd3f7a91",
"0x1853287541cd687bc66770237fe3e86db9c98208e838ad1c9fbb3c2e9f0d2f5b",
"0x845a0b9344d795ba81ca6dc433abb5b9d1e083d460254569573e8ee3e9da5ad",
"0x1903d07b2722c0dc818dda893d74a9ee7fcb8b01d3b24ac9d7604c970f68e002",
"0x2b153908b83d6a3fc4b9406f891c3d51ee429c8f6906c24326de4baa2c22d6d5",
"0x1074ad520b1b0be2f4590ce97d9927f4ba582fdbda90f73810e0a75475fd0d47",
"0x1d7a66fca345168c4cbb549ace2478d1e8f0a1906cdfc1c95d323f99d6602f2e",
"0x7d8e73fcd6a35b2d8390e56d670b9ecda356fc1da46551b8b4e15380f8cac0f",
"0x24398fe811ccf72bb1583121152844be014995a9c213ff371d0302d402a22ab",
"0x303c8e1b06ec487e715699736dd043dd4a6308ea6264525634841f4fb530be1c",
"0x15186cb1c51f7abd9485ea9ba77cf8fa72584dbc33f909e7e04b01ec550784e1",
"0x1800e20927198f24e362f7719ecbedecbfd8bf90b0aa0f804cebd483ea950dee",
"0x17b074100a4dda67b9e89789201ba089d0dc1553f4b75858f689d7f9f2608258",
"0x12a869d6d8348519d11d32e678bacfd6fe20d7b02422a1e63b958256e786f4dc",
"0xd400992babe16a1b5aab5e95bccb91660f22e401082eeec8a2a562cbb098832",
"0x67fa6a735e49401ad6d0d4043563326f8e063be13b28875f6f4a9751bed2879",
"0x8aa46ab3986198d493b9707ed84a61034da2a8bd1224c5ae8aaa3a839cdb114",
"0x7d061661185186a26c40bc3d65c84064b6819dc305e3ea6df08716f415e6be6",
"0x164b5a80cc2a390326f6062957d7d325ac244c8c497448f4b96fe6734dbe3058",
"0xd267132ff50a0e61e859189065f6bcdafa349aac4881cfeb1b0b68ee179981",
"0x29b34d0febeb62b856aaa548a5a9b7308936bd163a46f67f972d4cb32634b5f8",
"0x1b1dfe465e4578869a7a113457037d7d3180b6f8be40346f061524e76f9c7812",
"0x219d6d65c86a3850cf3648d981b51681ac8e1ac0a5d4d2646b780c9e46895f0d",
"0x1709bed140c96224597918a6d6e056c2a6f80c4d27dbba0269f35966aaad986c",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x1db013be405e1edce86acb997ef8ea68ad542ecb25ffbb8adecbb9e323e9dc4b",
"0x4672cb42f866056fff733c2d9b23531608c1b541ada0026f292d08230520f43",
"0x213116708c620427db2bbc1a422b8dbe43c50614ea1ef82ee32a92c71ba78715",
"0x1810bf41c304da8f92060da2bd4632295b784150716ec8b59a3a663925fbb556",
"0xe60fe1f6ac34ccee378a7743a96cdc77f27e36027f3ba4439f599547efff8e1",
"0x150fe3d5f19845673753c10d21683c39d806ba8b4401785d8b993d5d1485370b",
"0x106f91d87819b33c496345bfc0bdbaf0a4a6da037e2ee628a609716b120378cc",
"0x27f058d01a289b1ab1bea5dd839fc0db887d68fdfc623085c8aaef5a6cc2a2da",
"0xe0dc820be1b5a101b96f1536c465ce27a96436616a4fd1580c31e3f0be69d57",
"0x1150f83988fd71cce9335017391d240512eaa73c15f11973c28c36eb4be580b6",
"0x605b14fe858aca1b47a07bcafecb571d61c2a7d3f3559e78be31efa13632624",
"0x18579a82949ea313f07863f545e5f5365a77926f972361cf7104f2fcac832318",
"0x21b2b1c8062f7650217eb2d090922460361e6f0777c227cb685ea04e70393062",
"0xf83178738a3442e7e4ce6bbdc1750b29b3fc752d8d529d8b28be179f2808b8f",
"0x259a80dc2ea8a894232f5592feaa42db627973a90f50443e08bf743273eac236",
"0xaabc1bbb9251a3069e43205b96a072e8f69fb446dd7410e4819d6298e47cc95",
"0x18f44db51f091bf261627ab6e0be73c16b257fc358b36508627779722f45ecae",
"0x2cc4a9fe2f5afe3a0ce906c8339748dd29e2386e5ce4b5aeac22aeee17c3d79f",
"0x2c254dd92d7f002da3661a83147bcb7ede550313124d99c6288cfa538db4d904",
"0x2541852cd7c4fbea1361b129e8901ca32d9c4b20b7d51fa12c87a074a7fefe31",
"0x8c2f801a82520a9a121ffca321896ec7ad60ddd9a50b945cf3f430a05263413",
"0x25dfc7f152ac74084d93c2c517b91857c51a33f8cde248d393fa1c326916e93e",
"0x29760a2e5d63406ff254da4bbc97152ac8a6a38ad087702e594955add5c50d46",
"0x269b6bb00705c31e909147f919817dfc81d8b491b9a76f223e56f81e64a9527d",
"0x1a02cef4a79e0643edd8bfcdf61a009605843c26ebedb1e9060473418f75f0b3",
"0x12c0261d1e3b247b69e4582b3a80fd958762b0b3d3ba914a52c9e0be24918f0f",
"0x263f9acdeb8b3ce3ac83bccb1918a5d5fc712680a72fd8cfaf5e1c6712674375",
"0x207434df901289e8916ecdff56dee469a913970920c64804a7ed8a26f927f177",
"0x3a1c03c9f1fa1b8391f32fcbaa1efc6ff4b1dee7f377c8dfa5135d38a9c3ad9",
"0x1249e6129ef7507c99a866d902312d3876998ad9f62ac34454055d8ff1d352da",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x68d6807831b6e785e77a20b94dfbe5fc6c23484310d36a9fb74220671804ad4",
"0x85b97abe28e068ee5ef7bb4ccd81fadecedd4818c5a6c9cf4f53dd4b44ecad",
"0x2d2caa3b84f92053cc406a11ad2985c860c57a75ac356b95a86a83ca504bc4ee",
"0x230561c2208c63a3d10b95a64358c5bc4d68d01ae4447b5c6993c8f6132031e8",
"0x151f5672052113e6f14ddd32c28c71436daaadc71d57d830ca551e770c5035a7",
"0x2733c9d71eb1f1ce45ffba8efb3de22aef7b84fea901bebe793ffcc3ee20cc1d",
"0x122c0d0a07c233c687e8156be1567492ad00e6c48ff395d98541df9044d26051",
"0x2844674637b223f5779e688bb8adf49dcbcd9256d5c314a512707b24b7ffcd53",
"0x13a9188517254bca715d460f9c6f183ad8bdb5fca7770277117e9c477d0d3de6",
"0x1ddd8eec094dfacfe2f915e62129fcba3601daf332dc8e248b4d423586ebcd69",
"0x15f2e0c38ac84bf50c136e68f78f913f74562eae48a2c20820841a471208d051",
"0x1dd71e73cc0baf4aca734d106ac1a48cf85f182373d81a854575e65ced0dc73e",
"0xd3682c39a2dc0c0808498cee222076cfc00f11da2b929fa5e063ebfe307dac",
"0x259708945a214cbceecfc4cffd2905b0628b3dd3fa652f3efe1c2af12e8732f2",
"0x71baec7a429bd060593730c150ff1fdfa050aed0d708343259063796e831195",
"0x26865eff75e2f6fdbc66213ee03b9455a109aae2e97cce07b9319bda64cfc6b6",
"0x2864c12ac61c22d4f35fda4911370070e8b588a8ee4a82a89e15c0f1a0e2d7bf",
"0x2758b8b601674ca5f526d246d221519ec40a0498db997b8aa855545b3659127a",
"0x9002afa8899112493dca6ca6f5c6323db8f352008f7d18a048d265e8cfebef9",
"0x173c758aea38f6a7812683a6fa4589e1b4a956e8974af260ddb057519e20f7bd",
"0xefe6d624981ff5e0b45e575d0b648600bd184973ebf9d9f653d4a5a8ba17322",
"0xd14a691145b25ca49c49605c64a9bad81678ea4a4e8b03fe39321c87f09e1a0",
"0x247342aea19afa49a8dbb396dedaa253930af22b2d44fe96cefd464839482abf",
"0x161febe2355426c2fe883e58dacff6e6cdc5ad5a65b28335275feba43df71f8c",
"0x2dff5bf2cea76d0888dc40cdc73f00e3057e6ebf33793c8551e211aab41155b5",
"0x1e6b6e09f8195c35767dd23c82ef5d8862ca77e999d65c69d8dc6860d494e81a",
"0x3a8fc10bf4a3949e8469732b0148594cb3759123ce90ae3e692966e31040c61",
"0xb185f3d4ca214b2e833301ff4e99b1f9ed7179b41191c9960797b39776df2bb",
"0x1ac6b03901fdc40b1329bf3873ff9277c70fce9610151a0ef7921ed08567360c",
"0x2beb77187ad776989902a94d06a98deefb1312d0558513c3dea6df48bf637ea7",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x149e18f1233f506859275485cf5fc93cebb94ca26cde5d980e6fa2c34a2f7fd6",
"0x8a54ca25cc50b034f63d2e4d10b4c735aa759c422ebcac71f6f73c841976105",
"0x1c1210f2ce34c2958d640d0a0aaf146eedfaaaef0d37c0a0caf671a8332d34c7",
"0x17bfdbafe9e56498cb3d7b15d5cd41ab86ecd47895701cd2d6f26526aafc992a",
"0xcd27920c0441d98a8992d408c219f85989ad1056f9692e3db6e9e4196bd6d10",
"0x2dd7fb93c20805f91565bd67877e3a4ce43ec79dc435f8c7a85e82c6e5d16375",
"0x5b1e6892ff615742f728d3c0cf830aaeedb93ad22d870691a96d951dba7ff3c",
"0x831d0a313ccfd57b1cdc9f30e113c29aa35e574b1f55321ae09961b87b6d31e",
"0x600e0c844243eadb86618043d2a618ea1f5ed77f1aca63f5e0ef19f6ae09a80",
"0x5f0c79e16349cab481128d04a0cbc80b90c2bde9884a94c41ad1b0c4f868018",
"0x2aa7de5705ea010daaab30b3b20cef0e74874384af31c04de33a4e1ced8e925f",
"0x585493b750ddfe70e3eb6c9be7e72b18e65de229e357d4782b17c76deb2f566",
"0x2848f8e38361bd5512352609d7806af1fbc6b1fc285b1c761a78baaa68ff5ef6",
"0x2848a529d4f7cd4bf115528eb5e88284150af414523e25d1c012f38842d7a117",
"0x30aed4fbdf98cf0212d56baed9bf952466b5347667153e56bae4b0650d8c708",
"0x2350edbb556ef46cb8c21bd9841af642ff8b3a399569aa698ac63cb317a280de",
"0x2ae5b47ed7dbdef58bfa65f573639845e0677877926e63c9929e47338e4cb926",
"0x26e087a50e753431ab4f1ad7dd65cef00d9da6058601b8525a6c517e5259ce48",
"0x159d260467ef69e897f646782f03c24d7b3e1dfb3aeb48c469603f51cea2ac01",
"0x1e6059ee0ece798edbadc0f3c244b4bdcacb5181e9e470d0591fd8cc3c8798dd",
"0x21d0c6c19bc6bdfe12717c533169baf1a57e61fb65b7cb76be2c1265c2c90eab",
"0x96ff7a0c18ef35be9bbb3e0af410e1e4b3b902f38cb838150f8db8f034f96e0",
"0x27d16991da4e246fd333112d5d5092cd3c888d8ea89eb4ab90f3335f1e11fb80",
"0x8a1e7d8bc46b6d0b60d417e4894bdc5ec1b0da7d468cdf0f5b672544145480d",
"0x1bbb994d74d79b698beffb2c1360ad7a5da1bc9ed065a38072537bdf998d4ac0",
"0x6eaa75b2b8fb3757194332442bbe246a82300fe3d9aeb52548095747567da26",
"0x35066f49fddbb428a2316e56cb7542e5ee63e2b84a38caa27f5c07e37f0d514",
"0x1a8df2d50679834c0d1d9df72b6a33e1ff4d1a2a02659b635f3908b60411c8f",
"0x1a69f234855f2099ce018e287b94696abdd504ffdb8695755a89aac7628ec4d7",
"0x282c66cf66f278b3c8f0ed2e1936887b3f4a41968af38ba8435b4dacfe4fa1a1",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x85cd4807b25336e1ffefc9b4e5d618c7aba4c4c42e34b0ab5ec21f1e264e3da",
"0x1df72bf6d33b417979d0abc3a5879c9c18059bc954a21b1753f44c98a86531c5",
"0xed29b17ee6bc79f0d0da95407ff87f10b937c1b72f78ec36499601c536e027f",
"0x2d8f67cb6abae1b1cfe21f91b55fdfe5e62fa2fe3c7c2d61254d840c2e22d0e8",
"0xc4a844d33d7410ebfaa0be3c062b2876c22b8f4e6a4459a2942eca9902f72df",
"0x1597f8a417fa1c847018051e70eedfbb5a6020525e003b207a241f2251c88188",
"0x2dc8e5d6f14e2d43cf0b273522b35e2acc391774793f09014b27484e7b5fd137",
"0x2d24d4794146908185f2354fd271608d3098e04ab4e5c6991653a1e31ef4cec9",
"0x3343e0c40457a059a893250795a6c6ac5085fd7222dee07694f6c562d966312",
"0xaf7db3d2850fc1037428a9b6913cb57ed2b17ce12775d10a2ea59921e9ba3c1",
"0x2af76fe3326af61814f0596d1e9c7c981214efab22a78ac52e4c0d2ea5f3a559",
"0x28c5facdf2832d22fc8c7caebe4d49c28a3eac34e1c06aab03da51f4c675498b",
"0x67b910e6a3555653b7d646888b1620dab05b82afdb48c08b91422e1d089e617",
"0x1a8198a68db555bb70cbf396e3acf926b66dd19e4ae5f42a62e1870e17943d9",
"0xff3bc5a50528f42394cdb10000362e8b645cd1abca45814cae31c0c1736de96",
"0x17832e2f6a6abcf1dcf5084dfe2cc5ae9a5a9d51f3d68e74743efab4826951eb",
"0x707d9a111e2bf4971e1c28f0993d0700cc18742f7a217c4c1e2027c536d1d7d",
"0xd4674bba848291e0bc0b2c36c3e3662f09831f32af732d2163f7873dbd61031",
"0xb81f95f06e846785c898ae8f150761bdd156f063b744279ab030cee5e996788",
"0x1a4724e7a15045d9cec46bc059a6e06c0abae7410697e867f97e073e7c059e8",
"0x195b3b718107bb2d25b6546f49e1a497edc07a78a37c1de15b39b65ded042a6f",
"0x117c5877ba019563589a57a738d554caa7c8c4e3342dba0f33ecbb81cf46f7f7",
"0x29f739db99ca7b670979f4a8f3b852bab3b3a2fe0b98a4693c49484b2872ab71",
"0x8127119728f625a3d35d9dddd7d5393a9086e4192d1b203efbfe9623bd38162",
"0x143607b15463dc48fd12ddebae93c174396b76933c25dbf0b2433c789b211a30",
"0x271c4725f01cd9767c7908c9217f0377f0da33e9bc492d187df0a215cfe3e886",
"0x1053f9e74f700dd3161862102fcbe460e41f0a30adc546b62ffe3ecff5c142f0",
"0x19f6aa64f3f2298722cd31bb3789c6b74f6d12f0dbd38e6ce1ff23d667a9122c",
"0x1475d80686b48bab18eb1c32e800912b26b82ac0c4b9db036c513e0b30fa7e26",
"0x29f8598b62b2e76dfc939ae61c5e7d0a159549f309ebfe2f3f097aee1c41ac2d",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x3010b8ed80e49e580f884d5e98414cb0619b5381eb0b72bea15185c32e7f2ea7",
"0x18e9d0cd62c490a574aaba9b03b0a11dc0c11b4e632094c91ef72c14266a26d2",
"0x2495c41de1debd0cb51280193a02d320e978099f54ec96a970341abe80d96a85",
"0x92517d7731c97a877e552eebec76ee7400fd53d9be12d55ff9c6b170d68ec78",
"0x643ce7cae313fccba434207e99649376ee888d3e309bc8e5ee454466274d62c",
"0x2fa4485f1f97ad4c54fa908b0b25424bdc78255af9c77da99b95095619489583",
"0x1b327749a75f8db71a4c33e8b99e2c01808b9090d049e1ab3c7abfdf5aa908c0",
"0xa062169c4723669623251a50a4318e3b1381fb5c68556df9fe137474b624234",
"0x16c33ff536f271145daec8f03d97b56d0f8cfeedb7cc329290fdc1bbfdc2c74d",
"0x1280d067c4c7eced7dd8afac4e4cb3117be7901d7121ab53f3d43c4630f7b07b",
"0x479c7cdfb220e4d8d7aca9b5fe7380b2cd447ebf3d8a204320bf81fca29eb19",
"0x14e024fd7bab2d5031241686c4aae16ee300422df8b41919ccb73fb15ef06073",
"0x1a80d20677cd1bda8c97762d6b9a006cad73d95e78afb3eaf3b7f3f112e39bc0",
"0x1434e496824b8ea1ef9ea7f9e324c937492e33eb1af18459d89b29ba30549f84",
"0x30485e0cc5588a2f49932117b4dde4c933621ab227abe326f429c8688134893",
"0x100acb69114b53c1027ff56df9de3cfd561d7ccc81e881555696e0eddfb91f86",
"0x17a974539888ada5b3ee0bc7eaab414895d2111c3a9d5c51784889ec6d41546",
"0x194dde27e3f6373c944cf9079a28d68c7c73b7b60f5a1f5aeb7cbda3be4b9e85",
"0x2b563b2786180439fbd6f3bc4ab5f3ad52f9f20d7aa31c40b0f7906f2b0418a0",
"0x1abd1c97e97d7b5e6e9183f21305dfbc5855ed33636aa7a5cfc39e6329891c61",
"0x2aebca431ac4c7b1d96c54432751d6d20134cc8429a51bbdbf10d6a5da4dbcf7",
"0x1e93b372a671214f000aa220af2453bb8431f78694d76311abcdefde664b5bb0",
"0x195338e68902e870547679d0f4a548d1bc91eb3e144b403b6d9c05ebf879e274",
"0x2bb7a0b8bcf9f7540697e3bda7793d42e1ff60838f4b59f86a1ada0373bdb1ab",
"0x11be3da5945ef7d140bf9e06b468ec44aac37eb293dddbf871f9292f6969567f",
"0x481ae2c70bb522764ba40c7fe992913e56fc640bacb97794fee400861cd20c6",
"0x919cadc23acaa8b5e19a54a996c64b59a9032c3ee6b6aacde02696ca462116b",
"0x262de0b03fe8c9a6b04ace3660570271804c66ed640998d93362919e13dbe851",
"0x2b3c90ac3a4edfbe09b333ff56cec2918a5ef924359ad5e225e08bcf17249df9",
"0x1bbbe9819a05a6fdbb2827d1bac2c0c9736aa78280f8a81fc5969b576522014c",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x142ac1e836fc30278704b47fa49a84cdaec95cec40a60abfe73a30a10f2d72f3",
"0x102f24ed9b7cc4a98957278905f772fe4149fb11befc34b05c7556a0ce1a9444",
"0x59a56c684c34007e174577c81d669d1e0b9741d4d2b9d6077d8f8e8c1803df2",
"0x1f22f8c87034418d3a79a9f5fbb2ee493c6851499ee2a84800b0e711ba76a918",
"0x2614d18359d21d25731090abb6877365f49d58ea4e78a44a9e7adb4409a3aee3",
"0xc414a0ecac4fa0637e9a4c9679085a7bb3b1358b396b2bce7eb9af4f0c337c3",
"0x11930fb18ae2944cfc25c856cddcff702bbcc81a2c2a8a81ab68e2abd0d63d96",
"0x2ae750321489ad6aab14cf7f3089bee01f50f6f1b3a1c046060804d204d6d4",
"0x1532fb2f4f6a0dc23fab57fb2988ae3a61bd61eff35634f11687991465849525",
"0x29b85c7d9d52c98eaccfab07af6c2aaac1dd55a087ca82cf636f2868dddf398b",
"0xd50d222652f613b3cf0a36450c848108600b2c98b5d16e4b75b92a1fca288bd",
"0x16bd29ece6542611c44d90e72ca96e7e81bf04cad858b88f65b3cf059348be75",
"0x114e95888f1e263e9304531e672fa0533c59aad32e19a6c8e79a0be3daba9dc2",
"0x7ed4c3caca93550d939fee72f322f5c45c45c3262481dc6d3fc21a39ba4a9c0",
"0x2cf1d8e95a3b2cf8d4c1a0dd53adee6e975640bc902e05c357d43ce4070f6803",
"0x3730a82d1114f03ea0f98add20cd73889491c2d362fcf76eaae54df206bb984",
"0x2201627d02735d6def85f3d4409b5f675e4f5b670fc8fe334c2da72e9ebb74e9",
"0x1de69df65e50bff05222e7d15bb7c25935a419532031efbea0a88d412658025c",
"0x199e9757b4a447a466924aeee5f4e3c6c0f7c0f1545808377a8c0c436b374da9",
"0x1cc1175e9e818a6ea2646c194f36bec3c37c63294b25baa9c9f48ea3c312d08d",
"0x29d4552088b3053c16c885522c794ca388ba38c6b9eb2c55e011532a5f099fbc",
"0x23d3b2dc1c7ff3d298997d064606aff743e7df6d7834c775aedbff099d458f78",
"0x2388ad46e7bff8d8b43e0ef0fef084fa60cfe32993ea7183504ee738f6445cc0",
"0x304e1e25593dbba07c1aa88ebb4a80684d9147c0b2f9247b49b5416f13fc3898",
"0xd63f23dde7572c15586188a12a7a1c0b2bd109f6343294fc8f8bc1a778414d9",
"0x19cf6ed79057a5fc4398ae7569c1b85519c97218ab842723d6212cfa9a0a2dbe",
"0x986267435a69bf6ebcded378d2aa4a02ee3b7a8becaed9ca1e663600fc90c3f",
"0x2c1575ee85e8cd3cfb63424d84ea5000786e5927433aa8c0b0211e5d87929c84",
"0x300003af788c5a7576b764f88be5b3b1ac8cb0b9466090fb331569d4c6672c3b",
"0x9edd428de05fa06b6410c57a5796fcd1ced4e3d20d42bbdc40b00ea28aab387",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x1fcc025724948f53d0456e85fb56f3f81e0c8d4c2bced5efe3fa3af8ff77acc5",
"0xc37f3e2d38cd3138ea93327d59b885873d41ef32b76409638af6455b5bfd932",
"0x1cff93735f5e8bbdab731d6b1a60d946f268b082d912fed0b3ccb525d8cb6485",
"0x115632e11c1704f965ea72407243707ec477c716cc429f1a7eb457f4337a5b01",
"0x10d1bc0b019f8bc6d1d6f5b74ec4e472b855fb594585e4458e4c269750912717",
"0x1bfa4745da3b7737814426f2b9dd6ae7ea034a00263dd091cdd7e118a44d38c7",
"0x42f42c6cf5ed0f29ea6535ba858409145772498174886db7dd44bf9ac54d492",
"0x27da68d3c98d92e4e93777c0bac6c7cf508e16e748fccd3c0b7b9fb54e605aa7",
"0x1c0dd243e40090b31d093d35c80719303b7c49b088bdae82b248fc1dc37fa340",
"0x1c3e2814b6eb0de8347ff2db9de7d3bce67b5a97585fc9933bf45f406edb6ff5",
"0x4487bf6eb305b13eea5a82659858a64226428712237312fec1f6bd536d7c29",
"0x1d4dcc7fc6d31a37c95bdb711a21fa490f4786064834c25d2e15aa82dcb762ca",
"0x1ad252b23919c93380ebfd7fe5bcc221a3dbc4fa59e555b8d00bfad872c0c14",
"0x1b9bb478853c46abecf434115d5730c6dc59d0c70ae580013d216f9ff259656a",
"0xaa2849da666039877d1c63803500ddcb59258d9854bbd817c690b32643a696",
"0x1a80c40302e2c50b3a9a9303f10ffce49d7bb5f7e5e19ddc85838f01df61cb28",
"0xfa31af23f2b7a127dcc29d7a7896ac68e3ce309a70a86f7e680fae88ae11af1",
"0x10b6199654c3e28a05df36e3ece1922c3ef4b7641b2fa8fc80a84e3e47d15fd3",
"0x23002a3e74809dbd3de94260eccf0c50b15ad8f1d0b34296d06ae58e4a28b6f6",
"0x149568dfaf3fac96b2638c3506a8d25609ca18e846ade9d19afe0c1e05c02c68",
"0x27e032df87f6c1641dcbed6816aefdfda13783c301c6e0a90c31a98f4c0b9208",
"0x18d75157ff16e95990d83ca5bc9366251a45c6f7935adcd1eed6c944dc87f5e",
"0x3019b560b7eb66353bccfe2531464754259870d8246d7f35bbf10c6862bc73b7",
"0xf4649bbb3013488fe2f61ad0d590433f5c7876a97cf9c83e821f078834c45b9",
"0x2adab3e8388934d5ba7cf03b98c23defda5c4c153364936b136828d06db12d99",
"0x149faae0107b1cac1e064cc54d1950602711aa7308dbdad89ec173da0595ff69",
"0x18601dd152b8ac338eedb1278d537c16f70e1fccd0dd9f1b1ec673b4b86deb0d",
"0x1d65cc6e7ccb7077ab51de992f4282456b818da240f46de874bdd4f6af329aba",
"0xfdc0f5a32b65a84e134027c7353503c7e9ed38f49907e28a5969419e8438aa6",
"0x65d3e753bec13cdbd2d4cb085fc25c8733f52b5372a4aede46eba19258c2a6d",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x180a916e94037f9ef13f05a1ea22bd41ca2d4b0f5eedad386a420ba6188d4882",
"0xe6fc284e88c1403f06ab873ec9d803191655d35c290740cc682caca22fc13a0",
"0x2753bb09a0c4a77b3af2a69333e51bb27703615d09d56f86423f85cfc8827faf",
"0x272db4b6d71f80f52e4aa1061f6a24e98dc041a0bad07dc46aad59e67d96b010",
"0x2378ce2c52074b027940891562743047b7b57ffc1f6654c2dcc23bedf1cb7608",
"0x26e90f7cfd4093a277600d2c564b6cd8f4ba3899b646d7427ce907a96d25b4e3",
"0x1cadb3908ee02353a3c45fbb57dbf6b392d5b1e59a13d58b57b7e0dc71c8d3be",
"0x4d30d597f9dd6720e85eabb0a7808098f72d7beae23e0f5845283cb04334e2b",
"0x193da68a7a699b7cf33c3ac942a960c154f447a016d957e241786253101b1c88",
"0x26484e7897f16c30babb9a4eb821b94e204411ea78e3759bcb55f5f9e1f0ec02",
"0x26a496b2c2b5ca5ba3dd8af6dc73aaa2d8bfd2f6715876fc5703ad68aae6a1ed",
"0x385b7c09dd2a1a0c2595a940914780d61b49f081e20149c37d920a06dc8ae7c",
"0x215ad8b91b54598e0ad7129f26f6eb4e52a27da738fa5ec2aaf3b471c2ef63b8",
"0x25c029bc5468787fc40f8b968f9542a8cf39632ebdb520496cf9ade72f289656",
"0x2a8bf45fd684c408e8832341397ec0589167c0d26cd7bb73227cc83273632bb6",
"0x1621a4527a457936aa11821e0e183c83008e201ac922ef2491a720767d5ac282",
"0x2146604597997341b5b512c2d30536fa961d09b5195f4ffe20efd22f4e4e1088",
"0xf469417d25748e654a60d7a42da219c2c1ab164e0ecf4950a3c15aaec9d7b4b",
"0x854569ac15311adb77dd8f2cee810aca29c09a47b6130b51c16b95178d76f2b",
"0xe1696a6980d7dafa5bf5a2e10ae664e0c29153272874153cdbf2b303c6c8762",
"0x3eec28f72099f4081b58deb0a95abcef4ca06afe5250a29f565b18fc8c0f3f2",
"0xf0359dc677a2208a6b0c627912d16b736e91ab3fa83eb825a7b1ead71d000f1",
"0x1eb49e2d0f17845b3e559dc12cc37d706bf9e048e6cb55a766ddad1100a07b7e",
"0x2837d91b1501a5d4b95913f0d2c24966fef7f5c347aaa897c210ba15913def29",
"0x2bf39f6cf1cef6ccfbbf97a4254acd478c897c8cd9614d3f8f9bbef4de646c94",
"0x67912e7144d6029b3bc72d448dcfdbbfe0f7e9591293ab205b389d61eff77d",
"0x191b47b69e8adfc904ff67ab36d19fbb1021c70898b9d657fb6a020bd6bfe684",
"0x2fbeb5d54229ee582a6275b9977b77ccaa8ddc90265b7c5d59f8d19af69e46cd",
"0x223504acf848236a0f7cd946c84289c4b4aba0e123b1db8e588fde7de06ef2f3",
"0x11d8e8ef78b313743937e16395c1193c3e46d4b84c78189076d7941fbff04622",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x20d2e36125e681535785dc294c751d7557e31dc99c01cc45fb67d0e0f7031e5f",
"0x2108085ae6246ae7dd76f7b3f3e0e731b7e4067602f6026c9cc61321806d4b6c",
"0x19046a9fb27aa59fd7cbb075905c65e165d16248d948c1fab9ab472c57d8ad1a",
"0x93a926faf68ed92e943507a893163b433857a1dc564f3f26c2f497164852c86",
"0x2971a879c70793d54854f7ccdeba099226a7034fa5d9911dc81aee80cf49f279",
"0xf5f5ba9b74aed76259a159321e26cbe1cd7e5849ae8562ff497c1af96285d1f",
"0x20e7786221700e467df64d8d73e4c38753a44996aa732da38e621bd270a16e0e",
"0x1f4fc008a41a25739bd41118baabcf2465fcb0e05605bb2193aaca167737e6b5",
"0xc4a3ea3f708efc883a4bce4a0651d8517c70a1324de4935aa508c3c0ae24dca",
"0x2e7610fe10352af47b616891090714c6802f3fc1fb9efb21248694ef6246ac07",
"0x2eb8ad40c535f3b7b05c2fd963b8569e956259227ef21a24b7afe546effe4184",
"0x154989e705cf9e62b9416e28834a4a7bce6b573a1235264ce89d4b046b6ebbe1",
"0x184749a0e1bec0f94c8f3c5be0c76d87976952449c2bfe6304413dea612e2e1d",
"0x24ad4bf83c2f3341dca0c72a3575fb12805568e92cae4472fe19fdff27f11d50",
"0xe788a096b2d4192046ee742981fa38918777b65030ef53957571c3b5fb54a6d",
"0x1e22b9d4c274fad52d4e5640b4acbff2c4810127a087c42f9be9ab58809d0d5c",
"0xc8a3f2ee3246714404abf0521e74a63b83576496aaff85c2be74a7106846f12",
"0x21adde943461bfcbd7eb10345a94033b25d4701157c694519fb2b4093b756709",
"0x1ea99affaa689d6f19f8a6b82d4b81dfd1f17682831e0c00d7f2f8fd4938a37e",
"0x16949199fe4a38750de73fa737a283a6a9ad40a27b0deab631f9295ade2423cc",
"0x1e83bd581acd61c3b54afcb7a0a9a0138d9ac4c8739cdae89759da5150138fa",
"0x42a61a84c944dcf754f5a97b1dc8c2ee7bdfbde233f789210f506eda56973b3",
"0x2b93c28b157ce32bfa3b8d0f585061e75a03b79c366a75856cdb5ca2273e30bd",
"0x1f54218a5daea6045fa60b06ab2520c52560282b1cc3ade14b664bfa49752bf5",
"0xfbfdd369bdaf703669fa5e36a00aaf0b251a50912048adadc83aaf092e7f2de",
"0x3633bd5a72a51fdeca62aefe9434104b52e152655cc42f06e70455cc15f8e2f",
"0x2c0eb54b5f8cee8ba898a242dca64def09dda346d06323892957fa30b3c13af7",
"0x165035983f563b1e3bcbe6c873fbf911d194fbe54243e039b3cf7b6f2afbd822",
"0x2fd9820b3cbb131e3575de4ecece3471352587e10c96e72ad867bbc57f4c778b",
"0x1204b919d86a12cea70e977706ab2be78259c6c608dca628eeeccec50b829342",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x2f3cd03d82e80e8521a2366bf79e8d4ff5cfc3b4f46db99a4947e1ce4993b2b",
"0x1cac3fdc9674c64c1614a5f48d65239daa601e26766fcfcf29cc385d6b3735dd",
"0x65415e4dfe08e357c669d145be5fa6cc74b0126f099faf1d7e85fe9befd30d7",
"0x28ef19ab4bb2626906730f539497dde648a1a967da5ea31969feb620d115c8b6",
"0x3e88e9732a1a572e70d7cb6528857143fb51a949fe9e0fa0fa281b85b64b7d",
"0x2486ab5c5311e4bdc65ab49fc60b172f851908d6753f6a9cc40f9b1535af072e",
"0xc50469c6c6bd532c6f805d26a30a7e5d703e0537657518cda0e1c6044301ecb",
"0x28f8be525277b0346bcd664cfb0a24a028f90b89ca402254b4f95833cb7ee870",
"0xa68990da12f327a6d79b356c1d27642392b1b2cd9cc0b5d675d98436066e563",
"0x2216dafb41776a1941b1f17a5dd8cca1cbe0f60f81ceaac465861b3dc2ebbe61",
"0x20e6c97c374891d9328052361d932372efcb6c0c84628b6f3bfcd41c47d1521c",
"0xa2565ccebd103dd144534c109f53c5de275ac56e9170ad9e3ed0b600aa51ea0",
"0x1e79a45802b9e7592e60d7e4964e8920a458862cf40212db96483540a62acf3c",
"0x29f54f1a96514b9b42ec9d74b5d715e61c265b129a7061bac126bfd50f696fce",
"0x26bb61d61ff279242f1e5c7bccae627e1942ef8e103a915b64527fd0eb31a93c",
"0x1ed4d606d825d86ddee16689f24ee5d9832a140f44b437258969f41d4c442c7a",
"0x25131fe12798f1c8712f4eebbc7213e8f80b23e7d1bdebfd255c18793734f251",
"0xd921ed8053ca270d60349d85ba38dfcd05bc96c05a68677185956707385d626",
"0x25c7ab17f3ca72fef63042fcfbe1a3d5f1ef5d6e52da6d6dbb5aad46b1e17421",
"0x1ee03839ca2483009bebf461b58d11cab852212642d38d1d33e48d9956fc48e1",
"0x15a5a2eecd107f307d9565496448cfdbbd14ef42323275c0ab6597aaf1895475",
"0x3fe00f465767add4808ec12aab687e16cfd702c1453267b7a2575c6cb557ba7",
"0x1577821b07e4ba2ba893bf15ce062c0290a2c757ca7140f76c2f03b53d84edaf",
"0xc00f28af5cdd011907df891669d0a43892fbfd24ae7d2abbb951b67334158e0",
"0x11f2f4cde668fcb28b27153f0c0d85c86fdb4d0506d38fd5b76d33734868f4cc",
"0xf15bcf82d1d583869605309b58d382a4750fa8221ebe8126ee522ae696abfa3",
"0x2a87c83c58f55146158830df52d74403e32569179b409d8e97ca8a27c7446bcd",
"0x1b655b2c43eaab5b8d104f472d8d84a836246faf3733debaf470b8b68b3c6078",
"0x2b4c7891572319263680116a7a29e9ee3c39520dd8bbf33016e31b88444369da",
"0xd57a4ba309a380ed8f907c68adee0e2ec336a33d67abfa6d33c0b34191d5c3f",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x24d7026b9df6dee3dfc366bf883301d2f5b0d769ffe6f625614731c81638a5f",
"0x2ffa9260d3bc1a98adb5d9a4566a673a4ac815d921f66a78c7b6781f5a45bfed",
"0x1c49dd9439a135892456c194c0b8b727f5f8dfb8b46332cff79b0e88af0897e",
"0x20dc0d730c188f571f944cda64df0385f31ee47784649b38bc8b309fa731002f",
"0x2a57e4f3c1d3410302207d53fc653b091b9215b9914f7e21143c5ec3d6080206",
"0x18924496a011f1d0f7334c75efc82a756b5fa7b739ac213742e747f0bab85110",
"0xb488da92db9fb460de597bdff5917bc07393e560b75df7412a23f86782008ac",
"0x181707ed73abc47ed303001ae6fc388dfd30bcaa57b75d4667fbdedea39addf2",
"0x2f3fc44c1a30bcc3419b88de657072843f3eb73178989484e010a66c74a4bf41",
"0x19fc475149f3945f3fa3c88aa7bb166e056cb353a2bb28e98cb2c647aa72601b",
"0x24e52c7ecdfe59ac393a7e3659fc038f582a29f0907d9130e1615a60e0d8ab0",
"0x7be6f1cf7191d8cf88349cecd3f83df5493edce1708f65a305c3e749f06da66",
"0x1f21a4d143a3496cd6736f6462d52ce24b40630d8dc8ccaee1f4fe83d2d8f8e5",
"0x2d26efa6adf5af54f46c6835f4d6d13874b5f0f329b21a280b19399f855401ba",
"0x189d55e9c0ea390f2e219fe4abde4c0ec6fafa1b68f5a029e4d2d5f2698c0572",
"0xb825420f377252cd094db40d6f37806ac50896f01a6b563627b6fbf45bab59b",
"0x1fba0c700b9f301109b83fad61964385ccde2cde69510b66334feb80d8dc5e13",
"0xd4c0381cbbb23ff4199900fe9e98b0588229e95cdabde87734b7da4a96728b1",
"0x76f5d00e73e4dfcf13f558ced96fd848d34ba5ec48bcc141228c22d18689433",
"0x1dae42a7e24553210ec1d37a83e7e379f118af2833a638cfb2f637c2731b167a",
"0xa7cc5bf24de2b7a6553cdb103f7b93a2ca50e7b8b2947563fb8eaf4c96ac22a",
"0x2b027765c2982281f3f552c9fc239b96b0485bcd6b246567189760387d54a530",
"0x1001976662b6ff1ec3f6510318e518e6dba3e69ad0635a41153e18435653e16e",
"0x1f0a377816189522f724ea65404ef22847bac0fe95e2a6c666aab27cc4dce446",
"0x1e7a94ac5ea43fd868784c2943205aa45994575b494a0c0c469f6be322077c78",
"0x2791206766f62a06b3a0a0d71759944425e50d392218b999a86bbdd590184075",
"0x11ad87aca6c25e04cb85eb1557e42ecf5851a9d24d20f9ed554ab9de9a561814",
"0x7d76ff83e9aa3f5924ed313b0d183a5703f49eb17db9b5192bbc1e5935f41fb",
"0x18eec21072c91937e53d9fd0e38007a1d8ecfef89ee0a848e5c42a73324c0897",
"0xd7ea1d8a141670f5549461c8e6649e7c0dd2692756c6c25cc4525d437728ac9",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x1d9e4a0d2a85dbe20e640964806fa1e5122e2821f6f46ebd2f614f52586612c5",
"0x1b0529d2ba99f99c7e4958a1dd940160e451ad60a731f482e0eec4f26806ddb6",
"0x2d78de90b2cb9901ccf75821db641e2619beca024e3356fcd20b0744773bec1f",
"0xacb58a5c68bfa43b46977a9da02f76727974e24f13f1e6e7646fcc17235bd4",
"0x133449d082b88b55b324ec110cdb4dab792843e2915a039b52f1399096abb13d",
"0x1e40b0c57597c9efd9e21aa03b9e60edcfcc6313f2b325a1bb552a227f466cf3",
"0x1dc4ed7c60899b410745ed729ea5a0066568b97dc007b6e7e804769dcd4d7d36",
"0x1146cf1be34558e643e2850cbf90d1e25e3ee122f8292a12b8be4cbbc3b02f15",
"0x24cc8fc4c875a88eca4864b038945f81381b829ae63156e314ab257829531a0f",
"0x29f9668dddd6103594c092b4955bea42a78b762b014f853d12cc8a435deaf507",
"0x423f8acfb6425857f07e45bab4474b2746c987eeb3cccec94f838fe25d524eb",
"0x226d21a206f17d649306ea18a42e50d395d65136d082d91b09f226e63fb6540b",
"0x50d8e0202485f6ed926f1036d1cfcdc3252b49bee257218aa058f8b7a22323",
"0x2c6998a3a1d4988893eaba746cf07ec665089ee1498736a1580f2a7b3f840a5f",
"0x8f07def8f9291f940b044443a720f15109a6602e54670e4ddec4f9bed773f4a",
"0x15ad9c95848c4eee4228b1da242da640ecdbac2ca6f216306045c794e0cd41eb",
"0xb6c94ad59e7195e47046f5e2dbdb395bc45ec654b60c49d8f39d9f8b895d1cc",
"0x16915ac62623b19ce2101c05fe7276c373b329f20e1fe2b86f85e3bb18f2eedb",
"0x241c174139afa0867f108586e337df3173bca36eb41a669da121cc21cc52e157",
"0x2fbc48a493da3632871d2de5a8c22f22112afa88b1e71395eced016a149941d4",
"0x1faedef5274cad9d8a55c7f763fa86841960a0746745c35950bedda80b6f4224",
"0xe5ca90496f6ab2db273e54bdd99ae0d8bc1c6f0904de14932958f6c837c26f3",
"0x1783f5edffc02d572faa7798200083b86b2b1ce2320dc7c8a0b1ebffdbc9d567",
"0x1108f89b2285ad02285b4cea8eed22d0fab841f21df3d4ebfb398606a6ba3869",
"0xaf33de737c3e1f423c51d89384242ea23bc564bf402282002cd30e3b163468b",
"0xc5152ce065fcb30be4405cd338d85ca50d6a06e9344fcc7634d82e0e9759a74",
"0x29b859531add0b7229247872552339e4ac2ae3d4b6ca8c705763cc8193103aa0",
"0x87622acf27810277fe3cae6e270483d0d53158900fca1849650b0b5ecf0150c",
"0x228844894f0ecc516411b0b864dba98a8c26ef510627f2de70e1d13bc30a6e1e",
"0x196d69516c701eb00c670cb577336806429642be8b0e301fe0bb12293dbc2548",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x1f70d88a852cd16c82f70637d9d973d59f7e77b8268aacd484e4e53500f72b24",
"0x141cdcd52cc304528f7f93f23944dd16b3cca1a85b2a84670c504b9792beba19",
"0xdb56745ee0dd133af6f37bff1f6dac061ec7e40069f9a811e7d034d7a30abff",
"0x2569e01e00c725b48d55d26fd8c49785fc36248299eda8abd3b92b20b15020ba",
"0x353c1598121daacd532f8b0ffd175318b309bde28b7ffada32bb73b784d95f2",
"0x23dd1ba2b7ada18fb1337535b938fdd5318a1ad228cf00747d07efd159cc23cd",
"0xa449d239c51400de8f275b00787790aa508e1e160bb66e87d0f4e32ac5a5bb5",
"0x2bcc35ac47eaefc5ceae93b97187f199f4ea9776095a98efa5353da21540b9c9",
"0x22e49a4378b6b69566529f55b874d2304e24cbaa5d790f76900ee2f8478e3c07",
"0x66ad5b80133fd0a6391c05b7e20b13416e40c29a06469326768f24276fe1841",
"0x3f2253229c2810aae5c8411d5130ab418bbe077b0f1122623065532a259b857",
"0x2662e6c8a1134a005867e103901a5f6c67ac3737a6620accf8034cb83bdbd4a7",
"0x20a86066eeceb6979baadde6a2359befde49875bab142e57e171b0870b292086",
"0x13afbc5573e84312a43160ff4045190adc2a9db03980e7126381f4089e7c91f3",
"0x7d6db6cddf350cc1d59a474d84fbaad04fa0f2bff915f077708df41d5b2a746",
"0x268e93e46fd7f13e1a359ddf6ebb619a21c1068de6d899590aa1048b8829ddb2",
"0xf889928b305b304fce28f103f2e4194f2b29cdff231b05efe561e1cff4e70b9",
"0xc547ddbbf87c32bfe454d8e8b0ad4402c9b979caaceaebd9d59484d43cd37a9",
"0x20da83182faac059a9d00b35dc345ef0115117fd24a15f6b91b501728497ae52",
"0x1f6b643b60e535d0f2731a326273576ea723671e6c51e7b74281028ffb0462ef",
"0x2d14d43ab2196fc70e26a6b9ef3f2e9d18f60026af5833359f2a4f694ff6f9cf",
"0xe9b85853becdc05429b0a28a7e23baa59377d9037615ba740893eb971aadfa2",
"0xa664658bab11525d7086e1206ae3c6abb9ec31e3461d6b0b2547a5d6c2ed54f",
"0x2e0498e8539d8576df187245d0b1222f43cf4d3f8f0209afdcb2f68767633406",
"0x16c87c7662e6724263b44dec088080333793ba2002fb9669eb63dc3b1189b6eb",
"0x9c5eba75aefc04d0436380c834da36d20a67fd4e11653498b4ec21b30900f54",
"0x1066b5230eec70bbde6c98ed4e48e392feb18967be71a12ac18e732a04ba9841",
"0x2dd2a9adc1fd3ed04eb259dda630b58c0791d7ee79b85fc20ff8b37ca0dc0464",
"0x2e94a96ea1f18a9d99bfffc3fe43f0f751bcd549d1e5992e366943a85ccf4af4",
"0x8d72e9dff20d4f5c4543b725e43e01f1cbd2bd0d9ea8ce6b0c1a9b0b2e8499e",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x230050eb9901e2db2f16df59a7f5b8a1c441e5fe9cf3869a4ed073ba25f5d13c",
"0x1c2f7f401da1ad989e6cbb5c81e3559a7930ceb1916691b9b2d702eccfa3f844",
"0x9b391cab0c34b91b155483a41334a9ae97203942d7683850100acfa35c51600",
"0x134816b73312aacf2f573418283f27bca58d4d23624890f7a3b9ca81c12e9718",
"0x124b47f9ea87c94130ddcf77f87f4bc53ee087699d0e5f62663a63891c1675d1",
"0xfe5a21251a65261e6cfc3709404711f727a610f94057c304e1ba67b2f006526",
"0x28ab3b64f6f6f0ce2707fbe854295616d676dfb0d66177af6679b3ffa512e8d",
"0x1870499da8f58f00acf6b1133119d757220bb54ecbd793f9ed42d65c31760fb9",
"0x20db70356dd8d855ab92b28a96429acd5ca77cd9e5211aac448b991c1650893d",
"0x1a1ff1c58192f748174691a98d8c5e733ed80ea5c2fed11b098fcb815b438516",
"0x1ab2399c7e7ce1f5d3ef6c3cf33f39ba83f054bd73d8c5d7425666ef390e4f69",
"0x1e4b5f8ea2fa22e568978cfd90777937efc072338e173f49cdf7761a9caa2b7a",
"0x2305b22483287e9568160f0dfba637f50c63472dd89e56da0611b76cfe869104",
"0x1efc74710147e4e7df6580d0ca588b6f338befeb4c6f8e8a0967cf5c9dc07399",
"0x43c5e4ba3ceaec4190acd05a266e8d339681eaf1247af047fd0dce72fb37c0f",
"0x2ad5f9fe59cb81bb3eb3ae9985a905adbf2fee8426fe0ce3c1b108209aea844f",
"0x1f36ba0d22839b3176e55a9ed07dcbf0255e386bcea0a5be9823dbb3300ffc31",
"0xa565b3ce5c2aa38618127678d8aec23595e365f5e51d97474b85b16a13362f7",
"0x271dfc29144730cfa780f9accc99caaa7d14e05c42df401293d24759c12d8ed3",
"0x1119a78dd0cbf88014b97e6e5758b64c8c133a5989b758af60df2ee0540348a",
"0x157970a49dadaf8b39d46ada19fd06b34784a6f33b4d85547c2493f27f389e0b",
"0x8697357bac4131984b26ea8e352a3c5e5c33ff22f09019646f43b5137d4df31",
"0x29fecb3d70e1bd21087322a9d0f0db92c65f141f02b45936d9a5b8535f0b955e",
"0x14297a9dad6ee3dd0ad87ee9c2dc63685caae7391012e267da21ade2aaa434b1",
"0xc8f3a7ca1b4242199d6a0999b30cf3e61dfda56b98dca4c9bb199a070f9c782",
"0x2105bc020b9bfa1a23b0b2edbdfd4ce7bdedcad57906d2f58053b8ab35f11b43",
"0x2deb04f6f90c24a07d2f36e40d5bdef34639b092d395bb4a4fb483f84aecbcbf",
"0x2964c5940985822a64ac1443efdc41cf37e87dbf858535bc7c87181768091c60",
"0x20b68c1b5ede99ccfc7cd1231b13e90d5c9235c36f2f955dc6ff5352133ea9de",
"0x30096e11896ed1672687beb4f6725b749550667e8da418713bea7db5f838efca",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x6e21228ed894978b90a5e0b691d8916aa63720a5c795b9a07381452e22382b9",
"0xc9bcf80dc5fd89ebeb604437262768ae95fa7263924501540552e7a4f2414aa",
"0x9a6be7304c6da043de4c03ad5c76101a8bc21f1aac8dc10a695c7c5fc2f9072",
"0x1d78923d01c8ac2f59ddf5f046cb5bfc8bfd083ec61b1af080c79c2ddb27a832",
"0x272ae649640a5da291be7915b01cba87251bc6272140ff420b36f27774594209",
"0x4b1441ef166c520f9309f2f984011a00dfc71d6139603ee90496e59d715f775",
"0xe8d1281ac76ae45f6f8116bf74982ba76109c42a2ea163357febe0422658c42",
"0x1c5d4250da762fafbf313804257126fea15085a8ee9c103a9992950ab4af92e4",
"0x13d55c7c0b5e9acfac2196201e8e4a1ca091505b12b70064dcef6f9d3b1e18b7",
"0x3e8a03e1e25fed9131b3de7150da5ad0b53da4fdbea9729dbce40ce2535f0f8",
"0x12623c6993f1c30108c7c79868c88e3943a64595eb7bfb5814791aaad5a09ee5",
"0x1d38303334b2b1328d7453019c571fc28f1bc5e4e3c9450b491eb870d2c8fe89",
"0x192231ebe3469dd102a003b41ea79237429cfc4ae4d7d7b5f49154aa70b918e0",
"0x26587d8d2a074923798fa95b78d558a7357f48989f553ba03bbe800e4d4ee582",
"0xdbec60681a76725fcf9b009006e1235f2ba2d3f09ec62b50011d19ed58019c6",
"0xd79206c8a30d26abcfb375fb8c5a117f3cab1c9fda8ddee17c0991b11c63e13",
"0xbc57e048679764b958ec54b82fa3bc4690e99591f42216447ec6ab89e5752ee",
"0x19b73a25670160ec2631863fe8b93691a30a5e6cecff4e91e4b56dea4e9d75a8",
"0xb02dfd4eb79d59d665794ed829d301ce08e2e5285bcf6f75a83f23815f8c5c4",
"0x2e8eda48e5dfeb71e3302274f516a74131fd336a617126a1435cbed8ef6c9d90",
"0x282c1f1d562f2927e694715b631a176baaf7621c44a55b90ad2f1af512f2b499",
"0xe24552e72a2717b254956fce21df810fe3f1fb66ee0224be74aacac4f9bafee",
"0x619d6bb9fad7fe7a063998dec9888beec2a1c2206bc97f6853c10e62ede2ecd",
"0x10855580bfa613c21a4efdbb0f302d4d30a87a79a77cad82b37ac76abe5071ac",
"0x12e7d2df332cc5d618a22900e665529f2c22bd2b2aa387d9cb30da9483f71155",
"0x108fa054801185a6aff619e7ddd9dc8095884ddcf3c85b8c922aaade7fde8f66",
"0x2f8cddd8f2c5d14ab14b93182197b8073b4e9c41c138b6764ae3569771e617e9",
"0x1f4622a6c051e3696414b2024a39391743479968b4af8dcf07186d5c2ff07972",
"0xc379c514adbbdcce4502cce0b85fd03fae98db9d8f36d3f3c56cb9942ab7877",
"0x2b139708399f0c23fb51a4d24e7189fb1e619f5c7e03bcb8c8c32945d8e1930e",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x1a67fa389778c9489c495deb248e754c3aaaaa63c5ba3c6e5cfd96be4f516c01",
"0xa82b7efeec16e6c5aea5e99597b098504973c824edbd47a27cb33d65d7d09dd",
"0x58b5d72d0fb9836dab90890a9a9db183959618b7de3d6b7b1fc07621644bc7a",
"0x24411fc9331c4465de389c157199ca24f304424c0481d117e7b0ea23657af1bd",
"0x210351a45fa4ef26b2837ad06b46629051a464602e52b36ef24fae76d1d6d34e",
"0x1e05e49db66c3340e7db14921c0262a7346c687a8c26137437b510e30840eb59",
"0x2e6833d4c2d492a05a1c2be458d06a65f6be428714d1d44c2dcea661571da703",
"0x2747e0fb93ceedf91d0b703ccd88f179e8f10331090321660985bc63897241cd",
"0x21373fe7342c29074309be92546ca3308e28215172d43899d8b34e336e0c2feb",
"0x7aca07d0069a023d78e0a91f67dc748ab58990af12f54b14efbf83f6ea3f959",
"0xd31908df90c1e9debc10476b0f17dabb3ae150d731c20a321f5ad6d28213be4",
"0x28b90adb926df7693277ffd23ca737852a441517a8eca29eccd732b90dc0db56",
"0x104147d1f610150c79c7bcf61ef1eb1d1d620af87c49516a193790dc5cb1cd77",
"0x22704b0eea545e93d8567947f5736159b8c7559da9346851ef034943a9f64ea8",
"0x12cf13867e1f4c665d952955497197af8211929750dd706a6a65dc654b99e8c",
"0x2640c797ab409cc3b3ee21869418ced6c6aa32c8d96b9a3da85c99d8a2bc9501",
"0x123e01798d0948749ff8ed24a732705e44162826c2c7d28025da133ec358b822",
"0x22f5988c47c36f454fc5c2f982b854b4f4f64ac69db58a7820b10ed05a1c1b7b",
"0xd71a0b148c465727aec89bdc6601b3bf341159e0eb92672fd2cd29670509550",
"0x9c4450c0fab5b77b7feddc8f4c50031a113df973d3dbff0101564f4dda5eb64",
"0x216909b9a7ec927ff4be81f45f34004b80de648dccb64e956e689755c1d08c9c",
"0x1a676535420e170fdcc7784668b421502d69e5955992d13133f9f53829fbfc74",
"0x2f45e803db63d86ba61b8ed3af38c48a00d0ce69c1507e85647022d6f39ee208",
"0x3cf89993c4654efb4b1e804dc5abb423ff507f7abc65cc8d1a660671264a2a4",
"0x2eb840961ae22d47e776bf9f78d8f09786652eb99782097010e10fcdfdeb9ee3",
"0x13b3fcc3c156042dd30d9c935a465c52827dba78cde25cc87a436845a38cc1da",
"0x2ac2949357bcdc53d8a234e1954aa94813a0825a9308ee3659d5d386b2f10e59",
"0xe15460bf314de3c67d868973288483bc62926bcbd2e7042ea807888f7d9c19b",
"0x11c767a3163182d5eeb2ae857a5b3010395f9640b440f75a9b859c30ab1800cc",
"0xde4b8312d23ffa47cccedc65de54ccdf9596a2c26a8177b78890f9a0000f1ab",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x22a306748bbb7276a025b998d053c75dae5fa78e31d6457189abc977665065d7",
"0x11e89b2f5a9f708391bf115992b295c5df50eb4793379139749cd3718dee76c3",
"0x170d1801e156ba73911ab491c46bfed177c6cbec44bda6573298cfd6e925324e",
"0x99425a344bd24801fd74847ee7524054b2c0be72a58c42928008d7163340593",
"0xcb13076d62a1cceafc495baefa2cb03ddbf7bac1a8b24afbf0a84236a1fc1ed",
"0x105cd167cbc2994138f2492a42e39c90c71fa1112160c2c3cb86f4a3dc6f36f5",
"0x2fe235ad0ae252a09231abadf1884793e1479f8953587d08f0fd843c73cee60d",
"0x27b02875c28bfc1217490eaea552ce39441e6348a660a8dff460564b37002abf",
"0x1a48ee09ed16a03c4fe2c433bf85bdf4ae6ceaec8706c97bff764912bda1dcde",
"0x175b14cc4245b469dbffa6970992a1bfd6c61deab13c5dab26b1481b9e616fbb",
"0xd46b0974195aad4698bfd176ee33fcd84a725be4c13009c15d2d00fdc176a16",
"0x1aadcefcb3f21adf4b25dc908e1faabcbad408c2b2cc24ca5a35e5649c787361",
"0xee80d214b808612daf959f09c2314312cfd09a7050243e69cd993c351f865db",
"0x2b92ed72f750583d1091332acc37a8c11ff616ac98ced2e2ab47e2650b783ec3",
"0x7bb6c047a0ab37343ed2a2d1809345f72ee0921b06685f6356dca855053699d",
"0xb27c5c1f4f08810c4c71b00309204a5ea1602065f18c7c9568a073630551272",
"0x10eb21636ad3cc5b882f8eef50b164f5c0f05e3a45245b1f4517b3ba19693feb",
"0x139afa8d7c7016d8b50351f05260a2f1661a7be1166add0f281fee3a5fa57c22",
"0x10a8316597468b2f19a7ede834ff7ba4745e614ddcf43a373a5afebc45849d74",
"0xe7bc88dca5e934a90b30c06fc33c46eb88311db5ffd138d2cdb2376bcaf4ce1",
"0x1ed3520f1f7eb308510f20f8ad87099d28c26165a9deb3338c76fbc7b140b4e7",
"0xa5b057fe093ed51de90edec1f4fc54c24614c3540f8d36af16022affde42d34",
"0xfe1a3def2a011ba748f9b9f263e88aa32335ffb2e9857bb3a2e0a1d14edbc3f",
"0x1f6abc03a0caba9732b313a2bc3ee30d379088b772c6ed9e3d9d3cca471c249c",
"0x32cc35f494c7b826ddc1bb185d14421decdc35c89c4353e13838ec0de0e777a",
"0x3526b4fb75965e49be0d73d43e706e756d84f80db93afde6863cc49b017f199",
"0x19033bc3c4271ab5bafbeef999077c33386c044f05405600b0cf174fad12b8e2",
"0x17775184817378f639fcc8dbd97df0e13baccbd90c83f0b4807ae9a486bc0d4d",
"0xa9e1c95520650bb3f61a8fb1733069fb5eb759593c989c7c8c91cfa6108c3dc",
"0x5261006343d0f17ec876854ec7d41315565a07796e7c1735825e9dd2bf16e39",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x2fd7377f9006f870d0c079c8b10b62647b7c76cb481b2a330113cc7507effd1",
"0x1aa6d67de3f86bd58f04498f5e71270a58c7ecc20d81891ec7bcc29d92c84447",
"0x267b52a174ac8e9d118dd2d021043961fe9686c7156c324bfef84286a70a20c8",
"0x7131b4b73af0697a2a744e3483a653379f9a6f66e05821b9d12aa2b8fc7f52f",
"0x678652eac3805c1636bb62390323860ddaf6f1ebe10b167a39b975cdd89bb54",
"0x15209b10675cab6f50d0496771117e050ce5120126d241672e991c2dcc0cd1a2",
"0x1a1977bf61184ad35c53ebfdb3af41776eab03b2db826652e35ad3a12f745bd6",
"0x229644c842f9907a93becb162b12af3144a7c7f25d064d457db70e9c9cd9c099",
"0x17ed9abfbc0e4103e9e4ce7d1fcc95f2a8a0f8adde891b55e424f76a93f7a915",
"0x2104040d07bc2a79abc7fe60e6d2bd8ce79b937d7772ecae4e21cd38cef7f792",
"0x29b17696048b7c8b2805e7f2adb86cc14a6c54577d4d4b741c844203812cc98c",
"0x155b7c97543d530c1784eb12a8c8e9594d423dc45a5a93a6e2ab2aa25210f1b1",
"0x2d95cba17ff1a2f3ccb165e7009314c54d1f5d2ea514c54382ec918f0d18822",
"0xa9d8db94925ee88c53578d0312159ba4568c4c35b2160748f7dafcc99c966fd",
"0xb6f19b020cbf0eb74ccdceb22d7ae4730f72db5fff4462bd39941cb0bb2298b",
"0x2f709aa70fb82604e6614b07127fead0d6c889f96277da8085f886a592d8233f",
"0xc05d5e71c8ff96a669190965b0d7aed88d1c5df73b70de1783986bf8851507c",
"0x8facf13f8dc731b2f216581d4b35f10f3d54b6c41457fd83347417cc9a4dbd0",
"0x1bb219a4559f69a5e3ca3241a56ba26e36c86955feac34676c2d13a671f470ee",
"0x32054ccbfd7840e0fefec1ccafe4b21091c2b9262c0337b269d7bdeffbd615",
"0xad0e2165ff04113883d2e76bc8d519702644c1e938b80c614ef85b966c7ea95",
"0x5d0cd6f76ce14c2cc307b211409329b29fe0e80742c329b6468d4cb6c4f8938",
"0x2ac21c0635d3d249610b57d8312443a9c30fe4f353e75d7503d4cc646c7cc2f9",
"0x2c98f53ad12c6d2f2c1f4ae0922f10c9319cee3b55e1720799c16fa36c65af2c",
"0x1fafe9cdd001c028a8c9895b9075a18f93f8ad25632312000154e1b07d6cbafc",
"0x1c66e585cd1c5651a3b651ceba4e33bd7954af808b69f4e8171a58339b6754ae",
"0x2b8004d7066672e9c51b5efb0810da89bdc481658149d974641e43a8e6150512",
"0xf19a8fe86ec9c9146083520d9bd83bad613879a0e422c27e09cbae6558315cc",
"0x12199adee14b8fef20070207a6ebfa77f4f9202df37972a31e11cab9c622a3c6",
"0xf34bbf250e5eea168f1772d93ab7f53e1dc570c706dc9818639f0181174d8f5",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0xb2878f79547242381f83f53d71b4a5bb50ae79bac3b09690c2ec04c27952831",
"0x1636796259d819596441f2418e0c425ccfbfe67fb7b497c4361122748225fff",
"0x230101fb2086c3e4dbb4e19b17dcc891db81d3eef3b5c031b2b1429e46fb956d",
"0x2033e660632e0b2e8411b43b8b0fc9d23ba811a64aa846b0882516d954738316",
"0x244564f0c62510a5e6f69a1a8fe77d6bc22ec9989b0f97dc4113a2fddcf2fd3e",
"0xea22aab739936a78b3b85cf512de08c6ea303f53fb69e073d2da9b94d60ebca",
"0x701868cfc18808ef3f8196bdb7bf2a8aee96cd85d269db60a4cd5a1ff9b2e88",
"0x904cf11c0b58e3fe3aa7d70d8e365f6f20424f7cda13492c3a1089c3e209378",
"0x1d5930f08045de1418cfeab3a30c08015f77a7a19aba209b992fdae1837e01fe",
"0x13d07ccbe92ac9848da4c5651b692c3b298bdd002c76c1673e39b0c56c92cc4c",
"0x29fabafec859d0eaea7b49a815141e2d5e826c1bcf4fe2e2c4d80d0d9026a9e",
"0x1af5ab322e026a1b28a1dc06cba8585550db1bbfd3ee2355d8dd1c7d413126",
"0xc60f6e36113ce5d3b8824f68a33bce77f8a963eb0ac4208a35c0fec601a813f",
"0x17ac4c1dc0678e3afeeef3a11fabd3d699456839342277c4b6a57256a94cd1bf",
"0x18d140a27d4a76d1daace46e5201c2057b4e1353e6e6a90d250798e59b055209",
"0xf1336ac56c60c4bc9e27765f43bbc4a25830e514126dedcf518f1f501cab662",
"0x240e3c3a7dece37a8e4674ca411513bc5b2ef205d6afef56978ecdaa310a5fc6",
"0xc1f16c8ee024584c6e5243038d7324bd631263e4036e9df5422f78c8b01c9ca",
"0x236b70f7b76e6f16b6f4d08f6c6755776bbbf2beef38ed9f187294607fba3e4d",
"0x2fae92d9a4260c0eb67b8b5c535ef6f43913e506e546b3a1f217ecac1eb0ee5e",
"0x1e69a926148d04785f08760176dba2be1ee5b4ea19bd09135d5b68e7572cd1c",
"0x2a96f11408f216c5ade40371fac2bd452a578ec23bd220897aa3372513bc4530",
"0x1522e73fa41cc4c23e9ac6a6df46dc33e6921b802be72ccaeb06de4736cfe988",
"0x6d2c787e7b336c0556293aa8a6bcf7d31be6d8b6d4a644ce77b313bee3cdd01",
"0x1f80057bec504946a3e8d5e8d31412d2fb6461b5f174974017f2798fff57c306",
"0x139e43308691da278944e95e910ff3c4903e2faac75a6533e7f1fcf0dc8985ab",
"0x2958715623868ba98fd982a092a9eb18fd0f2cc9d3ad44d03970b8c2361ed38d",
"0x3d037c068aefcaf62bf84b4fe75a8a46a5d85d63b659278b049508fd31d673c",
"0x25f8654c412e7d630f046c138dfc4c18332573d9f2cdde26683fb472fc8b2edf",
"0x1874b9d07a26cf2fb8c65b8d47c6647008b42804af1e7ceb2c7ee466a2b5807",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x22b74f8ab6acc3f3ef0d9352aad479f2db3f5171684734ec6d18c69cfe0b14cd",
"0x28ddd3e0a84efcc63090346d5c5c0b9f7a6b8a20abd001e8ad01328ac5ff90b2",
"0x21ba1ee2990e2ba981f6e7e97f1aa879eda6e3e4a7f192be055d07d2332aac26",
"0x8923f775145f7243003eb5089160d2e0b4be6b68e77211d796e567b026e92db",
"0x2168e1158db076bd2c7503d8d78759b741f3d09e8c2863f1bbf77eb8a52f2bd5",
"0x2d91a6046ee638587087f34f8f3a45543e5a12e80db1462121d37f3d2f574ca4",
"0x19a362b36092714b50b86238ca35b3e9106efe2f1cf4a8f091a687cb71344a16",
"0x93ab3a1ec4ad5be6235fb805314d7e9f07ad5aafb214ceae7ebdcf81db72fd0",
"0x1e6f239f1cd9a373e4b8a283c86c7dd710a5aeb00a35338dabcd80e14079828e",
"0xf8b272d893f2288be54151a7c6e3e3e274b96a395616976d267ba31d59c0bac",
"0x22073c45cb975312538a8a8bed28c0a2858793e1e2a234d5fd8a6ebbf8098fad",
"0x5a2cdf46b89919b93bff18da44a4cf470a0de6b9bda0ed97d9ef3085678c9a2",
"0xb91b6af7828f5e23b06d2ec84a5acc0f6f670e64146bf82dba2cd09d8b9b160",
"0x26919b3ee33e46e95680cc8c216d561996b65915418a84d7b3d7bc0d29e3e56d",
"0x1615d651e47167b1ee9c70737c1376972ce475a1c66fd778ff5591b2e4e92017",
"0x1db6ba6e18012adf2f43482f224541dc5b5ffd5522f9336449fcfed6fdede339",
"0x157aee78ba392137b06bd8104872ec13558753788e044d38644249dde49b63f4",
"0x1bec3f9426534d61ef5ce8b40e3d9199d929a295c4b2e5768033fa7ba51f628f",
"0x1cc2614a3be0eef53905687b6d666d957c6f47b4f340d59106fc5add588b1272",
"0x17cc5ecfa4bcb4d4138bad0db4d25b8bdd921969465ce40c3783190855c0f9b6",
"0x2b71f219cdc5fca5c1ba861f3bcb51aa08fdfec6c8600ea26ea3f433090d9ec7",
"0x209098b02905832cc62767fa60e37a962c4cb7e51b23b6510389b56c510d3a61",
"0x22202b42235a0de23ef43301055066d26d87d0ac4ebfb8d4391b05fdcab190bc",
"0x27067a1a9cfa43df1faa7904359cebd06abc41ef694c89954ad076e296bc77f3",
"0x1dda2ec6fd0f92a515b4b9f0b80aa68260fd6570fe28c35acd8da5233c655c9e",
"0x20fcbe551e628d29e3625c948d92057dfb16a486be9fd88ffe308b886a7f3f5a",
"0x102b63b63b6594dba0d9502841aaa0bdf0d2aad08d25135f1090f0ed94cadf5c",
"0x2665d2b3b1f4711b362b28c1581c139aacf681f189d29cccde608c7f44dac4f7",
"0x2534e0a770bb00179e6f7621d96dab342ff960d361c91adb0f8faea486693df0",
"0x132de3965797959cbfaf61a239c5f09e1672d3b6387a1e34a53214e9d15c8201",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x1b6466ab641f7f30eb2dca03dedb89080833b2bce7b84b6a7b1eefd30677d2d8",
"0x690dec480f914c6f77ace87a47b0857ac7fdde73463e4b2445d4656c53653ee",
"0x65e0d65c2a3e1786c2bbfbf47102e427e9e31d2218112a86d821496a316d68b",
"0x2b5b1af812cfb77b30b821bdb2614c5f09aa73eefa9f6a48bf3eb146148b010c",
"0x260f7a81271cbfdc27a85f146221b30fa12e9ffba21d654a371bca4455a37bb4",
"0x2a2b6602a481c04475dacea41b360af3926cfcd4627112a8ed4192f213a823cd",
"0x11439386af5e26221df0905abda34142ce69f66151192d0143dbfddf3aeaaed8",
"0x230508e632c716e903e22a44c6002c2d39b1a0ee072bff9cd0901b3c4801e69e",
"0x23ce4e18ef472ed4e4aeb0dca528f14fb7301c6691d43e9632a65f1ec4e7bc7f",
"0x237dd8e70aa173bed421d4d488c4326af456322620483fe1a393066187a7cc08",
"0x24b0ab054d180e17971795754e027a756bc1f68ecf9cdc8b92b30b4af2c078d3",
"0xbaa7bef4cb2a2cbd1b33f9501ad22e365526a100273b8ef1a39152d779bdecf",
"0x1fb9b3569c3be925e480fd102a3432ceecdb59d346486b99d22284165df08262",
"0xed3418179e711b0a2d9bb44fdd0ff0c82741b531058111031cd123f508fc7a0",
"0x2e92aa6007576a4f815c645abb2e9ee10fe75baa5e13ab2a0b0aa700e084f071",
"0x2557fee713e3ed365d7fc7c6c07f113506d48dccb98510d84457b6d61c9a448f",
"0xeaee37321492b0595cc477585c9fe9573da00ad1619c7409ee76c625c11d447",
"0x1b9c9d4230433a193f315fab4f8cb8a7f4b0946f6241dbb2e858f3cec6c33f85",
"0x35b1d3045381d5053d0c329ef11458315d69335cd2371fecfefc8a2149a8583",
"0x2a0bf648759293e205b62ef858612f4e54cfa78dcf1fda84715cdde20acf4978",
"0x2d1f77f7bb34c7adcaac3e88bf34cc32e7aebb82e1dfec3491ed439c6b71c4a",
"0x63218d076827fb18e8fd4c14755443dcc3cbfa5bedb57a8aa1ed4b1a69b5261",
"0x2808b917c9417f47e1893c4a5b0053c64a054319988e721b42713d4abc351024",
"0x4c1b265648f11a5ed40c135675170ff486f6db120056d2b43e476bcda4e0876",
"0x1c9625a781c3530ecf4d532c0f1876e8281a454abdc914f34dec624dad8276c6",
"0xd9c2ef763966292a4585c0d7b4a1256c7b4687b8c19aefe0f2c5afdb8cb1093",
"0x11bacbb8c80b3caddc7be415c49d19c8207467eca352d2d65b3c950df899cf78",
"0x2f38ca64de487d59b0332f142c0cc9ee408f947e17bdf1ba7fe217cd50e3b088",
"0xa5b42f7d3ef308c007e91ad0b859f46582ca96b8a3fc12c6964b4e3ae230bc1",
"0xca6578515e51c2c7da9e898fa1541a6e93bea88ed529e5c1f411141884743cd",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x986957cb19cc10c36db88648feeeffc017bc7f344eca7e278313887c521b66e",
"0x2df451c36b1789c3b2a6719818a62d1d40597c6c2881225d9bcc95fd6d090f50",
"0x2bae223a93b08d3115a949252d906887fbbb2988c127c1e2668c55a00ef22483",
"0x5bebef52bb08431bbb9e92d219b4a0b2fe15e2f4346d0e837664369aefc1803",
"0x18842bff3ff8988d29a3737afc113f6bfb80c08d5a2cd06473baced406d3e2ad",
"0x2f78a8fabd2e97700ab4a2f2b5773ee348cbb2ee491bf33a5671c10e6326be6",
"0x8b3f1bcdba14103876b7f57f60d08ee3aaf9ea25f5495680a0c11876117feb5",
"0xe536221242a02f1c78e6c59133ed1768bb7c5805ad1a3e59066ad23dc8ad422",
"0x2d906eeeb9d7ed09f7fc504db42dfa79bdf74d094eab5d29fd91e70be78b472e",
"0x25ffc50d32b7badc1066a06268cdfe0a329957c10b2c448cfca1ff6ab6e0451",
"0xe77d99818d5d95b153667917050e800f778a07b2520e0cb2a8d9f3946a59bf3",
"0x2434b0943c80797cc13905ed7ee35a700a61bf601c7c3dfe20bd7fa3a62d0dd1",
"0x15f77d11fb4fc7c16e4a6670614d85b6eb833f0c96c9ef96dcc861bfbe2e1c8d",
"0x2e1db5f958cefae9e831f4d55d6c883847a2eb9f1b8ea404c6131e9cffcae8a4",
"0x205947544c2d5c9d1157bc26697d8e3c1949786e6210ab9deca2092dc55d4498",
"0xb9ba62195d29f54053e5fadce4e75e7323915fb2d047f61593c0cfe351c406",
"0x233eee9f5e744bce4d408b2c0fcd051285199f5e876fa3c6f6c99a289db64542",
"0x1818a3f0d1552f34caa7dc40defbb1ed62072bad77ff5a8221fe1bbc655e7dda",
"0xa8c36ed2f64ff121cceccda4d723afc80e17c1ed150d4d4afd9618a9be52fbd",
"0x2bbaffb37541a9f521ee370836ae3b6f0555f49b0569032f848e15e5d054054f",
"0x2dce53865aec616cfd8143aaff05c7bfbb728a48f2b81bc68eed629ffd6537f6",
"0x26a4a63df26dbff991a0fea4b9d00094354de33aea2f04f04312250deaf202dd",
"0x47dae867b6ada4550e18f2443c44281584a9b07e9104ab3790d65d0bfc2e15b",
"0x18672943f827e2833a8d9db988296aa281cac88816b11ea2ce6fc5ebff8566ee",
"0x1979353fb46d8cdf3b518ffe145af6a533b9ebfb990582fb36f31085546556a4",
"0x1b394c0b4ff11b67a1591f7d190c74f15bd83812ab056d7ba186998adfb5fbd2",
"0x2213fbfedeb46fb9bab30d5bbf854cd2945a30d1115a3e2cad6b771bf53a9c45",
"0x3045a6b98fe71341427e894e351402342da59067fc44b8a1e321de8b75b5384b",
"0x1e560b922f410efbc72ab3137afc2b4bb9d6d11e3d78ebc0c1ef970b8510b0db",
"0x793ace2e045d6dce7eb0c50bc654785c69eea92a5ff129ffe2b8224a4e66987",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x515c94018effb2fc24a7bb89b1a1055a274cce74cd1bb4fa3751331c55a830",
"0x228884947d2d1caacad64b4538521498e6a377f1f531c032a41e8c5999ce7fd5",
"0x2d7bb807c37a5dba31490c8996097552a930e55198a0c8f787cab498e4adf8c",
"0x15f5cb124b0a18bde04db081df667eb90d722fe38420c7a6a2340dd57823d4ef",
"0x2fdb6f2f83a138c09aaf67a5b7f4f2d21f9fb72def9246f8350b3d50fdcff090",
"0xdcf875be3c34cf38d62be56fe936e1f76d10f01c9acb657e4dfec02f98c84c",
"0x2f2bf29d6b7637980d02644b98030297e4ee87d51476bfe02e430700993b4e3",
"0x121dd63b185a3fbbf1e26721e1dc9207ba6ce83246856c780f1ff3f457925f1b",
"0x20e79bcfbc14855f607ffe7efdc0408b2366241ee80d388f58fc83f1140b4fc3",
"0x153dc31be4cd79fbc0f1757612c6316f994560d88ba2a0936aadabe71d3ab4fd",
"0x13804b12bdb77d63ef5f9807e60e1896a5212e1ce314a52f1e65cd6051545ae4",
"0xb6cecf0b015284998ff23c23a7c003629f8ee8f8e52d85ef6af13147fb8bb22",
"0x267f992fb1c5fd7a2adea64c4789617a205686c01f9743e29c3a36910902f83d",
"0x7c739e819b23013c6b2bba0db1f914573d0be98da778fcde3c44a82e8db6a76",
"0x15da652416fc44056205298e4837860a96e1accf42af4ddb4b6eec42fbd303a",
"0x1c33739471d1bd4fc613afe1e38b71ff3562acde29dc58bf6cabf73a192b372a",
"0xedf8c7db59823fb1f76cc67e0e3ebf8de8dd7cbe69ec468515a5f5511c8c1f5",
"0x8334b72ea2d0d35ab3dfac4f2696b0d980b65d6e0ec61fe2724c896bd3f517a",
"0xf4329ad37ea22a16517b9b1e6d38afdc75a8398df9b9a32aa2f8f2c3346e289",
"0x1f8d3e31cde1c2b3564ec9b8acb6d3dc56b946fd1ea3cc6067f04515fe80c352",
"0x94a21c0489acb58fc118cde1013f08105058d9e97d6a780ed30705c0e54a838",
"0x133b634d187f62fd2ef6d63daee9d3427ac1c9e215749786a2e17cbabda7dab4",
"0x18e1b03bf875c00f97c2d24bf7daca95935d8b176bc767f5659379937658f599",
"0x18242ad22da674a26206f354d85be06760137fa512cc7f30a5e38737854159a0",
"0x294268b5fe2beaa0c99688e9a9e4f7ceab6a87dd42bb950a25022247c790bb6b",
"0x1f13839b65eda77875e30eae082527d8b68a45094e0c63295a7130b78ee8ddf0",
"0x2baa1faf25902d89902124eda3986279278cc6007b1f7b0f193732e5527fc69e",
"0x265cf033142c6d433d701a040d8f9f35c15475a6c7ea5875d74927d37e3a6968",
"0x1c4eddd1412f02358286bf07dff4ab2e90e5adf051ff5adc369e93c3fb78cfe6",
"0x2fb924230c90e26ac6d37357a6df214f13c24c73725995873df37da56f7a3e77",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x19e494853af32baea08fcd358d25c37baa7b42e14a74e62773713083679489b1",
"0x24663e25937795d723aba2f413377e470b84418061ccbf2e7ab06545d4f69b15",
"0x28194cd3daa20ca6ae03a8dc12cc30cab003f2a1b784c9b64436a984862ad41a",
"0x3004d9469414f0a772c99f896e7f27c8d08abf0dc7e30feb91b51820e4591fc",
"0x4a90138ae63af6d831112c04dce879f943302f37a462f0c84b4f4b543737a2",
"0x16328fe8bc9d3c883accdd09cf2861ff33f072bc58cfe580113864913a5820b4",
"0x255342bb3760148dc048617882768a4d198230da53b4ddf87e5178ff4832f301",
"0xa494240f29dc89a98ec7fd0f8a70c3e82fc12d2894d92b36c5e472b51cec0c1",
"0x26d9764b65cb6775899164e5bb179aeafcaa7c262861bf582c5d6419f86946da",
"0xdc64acc51842f225a439b650e5eb3266d2ab80e7ac705ccad646770a338ea77",
"0x42d122c394166798b946f03da9b3e06fd5ba1fdbba49d3cfc9ece8244426044",
"0x20715b9135e15fd039a728fe347d6825e7cbadca0c792e2755921003b7cf9cee",
"0xb8465af4ffc725e0d9d50079c16f1a5a7d8df1fc7067728535b10e19cc70e32",
"0x1b3fe32fdaf4a4c9b5186604fb4746695561720c1a7886751635b2a416b4e37f",
"0x1ae2fdac7b7d0b3c4739dd9eb27377b3bad124823940e12d0bcb1177c96e0788",
"0x1e6b8f955ed56d144d1650f250bb0f8a8da2b631d38d75e6bca34a687eb96a5e",
"0x262dc534f682c8f874d877df14acf8ed7dc65a6e42198570d15f49520745c708",
"0xf9a4f0271d5c6aa02c42053a8d2b1fd8179a35cadd4f16299cc0037b0b16d6c",
"0x6f078c71788acce7f48fcd7271d85077c50ffa7a82ff67d81a10ddaf70d9301",
"0x2416d74e36b42dd5519bd3a03935b57120b33c05265a40cc15fa0b36e695185d",
"0x19efbe964add94b60109cf8e6795b8afb31ece021bd1e99e06a39b868ba5da18",
"0x217825dcb0fb4a2debd0856679d5f138bc28083b0583bcdd2fedd8226d71ea20",
"0x29ed9e1b8a1e7d0c5dc4e51ea5f277614970693b65758673625a6b81e0ea6305",
"0x8e7139bcf5e35d8c2826234a00c56696400cff2b012a94a6eddd3d1ea94e4bf",
"0x23b45cb4566041748ed409f32aaf3b7d59ec85f8ad75bdf008a733d500a24f7",
"0x59e1a9cc4208e8f4adc17e95a8dd0a0e0824aa4671a24075116ef1cd29ab280",
"0x1084b6a7bdcc2947835bb7f017c5fa4a018dae7a14db23c1f44e821a65434e3",
"0xae92ed115475902606d7f3e699d95659acb152108c586a30a912750ed18b0d2",
"0x11540ba858d368852b75bd5e3d31e289a182f3068ed6c2654ed4c92e9d4a9a12",
"0x219ad9e087618d15eae3780c3b2fbbbcb68667bbedb9d51490a04e4a2986b734",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x1af405bd496121de8bf68db182c52f8dcd863e5e9d0d07c332702c652f103155",
"0xfb5adb4f2ddee2c786bbd630e10b6af21566e13887264d2627e965b8a7657c0",
"0x5735d0a20981c3443c26321ce6aaeb22867087fb482f3fc52564231fe1fbfa1",
"0xd5f25ea7cd06c95915cabc11f61a2a640b5109771238b53526673bf353d8efa",
"0x276d9d19b50cc160870806a1622acf7cf1df7a5c0afeec2dd77a0962acf14cb1",
"0x2d52da76429ebef4234a94a2cf6a41afd471193888b6fdf668885a0c578d3c03",
"0x24f84ab4d1acc7cc1b4f842e502865a26591447b8bf24439782e17e032b6f535",
"0x21069f3feb18a6d2025501270c070b1bae6035caaa50bc68b6b402a909dca262",
"0x1430dd6ac598deab9432e5227ff5fa9da4994f08ea28a781f9fdae630aef746",
"0x6fc0f56ea9867dcc10385217771bae7c1901deb59d89d694a14fdad07ef7456",
"0x2ae95e39f51c7935a52f31d1e92c2fa1e2a2a43ecfff3849368a226bdf1067cc",
"0x2b53d9abe894c47db9a2e81ddc1ea0cfeea5ca257e8c0ae61d4c9db5d8a918f2",
"0x18dd0925e43f821fb7c3c9a72e5d409c13e5c42f35b1268e9b36685ab6c60a84",
"0xff74b6d96a8d00bb97508280e98c10a1eff834b46b15f474b9f4fe50174233a",
"0x18bfa382970f3598061f30c5c18b3e71105a5145ca3e6dd21f779395872e3616",
"0x1dee9f00f2b7548ffa9cc5a39edace63c461c528a7bba8a17f59b7df6e247b99",
"0x12c5810e9946497e1b6f928182d8511851683ecf234de99c649bcb3dbb8f1e76",
"0xe5953881e72ff398e4c34b50c3d66fd073fe79073f7ebd593fefdcc7bc4fe32",
"0xd25061d2528dd5351e4e8367c96fe57446429956594b2f752783f06251e1ddb",
"0xcd02124b62741431f4baa64fd8a759db1fe86465b36f26e7e91ada1a370e031",
"0x2d524e2c0a167d163be6863fb345539da3a8fceb3db496b765ea2fd7c4fedfaf",
"0x9f6ef3fd9b8eb4dd5cf6393f681db544e7339f6a129f9bf8e380041e0a43cd2",
"0x28bf2b88d392ba9823e2db09d12cda5a103b6e2f581a9a3abb8ce25c5d93476c",
"0x209e08cbdf5562b051300a64f3cba7d75c25e5032a2cd5331e6cc386db38c373",
"0xe18e80edd86792ddd92cee432ee33b15fc5102cde0ace9f8f7c9fa0663d51c5",
"0x27bd8795292bc68b6a8e0ff451cef39f92f7af2d407c1cfcf60297100a9c4841",
"0x87d2427a36da27e525bb1956015bb2e0811c037a0cc272f230cc4f18a756a13",
"0x5e017f8cba3d41aff70fd421eddd63f464254d65c086e7f5f07981790ffffd9",
"0x2eacb959ae5429d219c66b722feea009060a093d33df0cdf225553a0dfc8e7c8",
"0x27a8c07ea74055992c66e0003c03b07c090d30d45b940d303e51212a974f05b1",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x25b72e38946d8c146ee356367981e74d001803430d4ae023d08a9c68ce8fd58f",
"0x29d3d7fe8af458f8f444fc49c4cbb3fde970d6edf8ebd7bd3d067d45994075ed",
"0xdc25ac6f52dfc613dae0197322a98c7700cf04dd9d1627c90076bf2384b32d1",
"0xaf71c0bd1542973007bff10dfac94ee18f5da9221d3d6fbe04078971e3b80c0",
"0x1406d8cf97827b7d25ce71e62d17eff80c493bb0e1f2a6b951723431dde17c18",
"0xa177d75332f2aad209c9eef8004879afd6acd5ce56db116f834053ab51296cd",
"0x1e42feea60f7d4987938dd58bc9b53d4b5ae4f8ee14b2ad58d723c7c86c130d2",
"0x2c5921fa4ccd767fd2533f308d1c18c63cfdc3f7d8e10b217fccbeee2aca0ec7",
"0xac4e3d803a6c602ba6fc373c31988c294649478134d462772dbb91e40c56595",
"0x68fb1f094571ace723b59d1a0595cdbd2631d93806a5f5c758ce986289ecd0",
"0xf5a472661affd8730cefc698d6688fbca3ba07b12637beb8f0722f2f5e8c8d",
"0x2ed5af998e49f3d9c92a5badae4eb43a516b1ad840cc01d11c8a441786316c60",
"0x9929a608a5256575d7c287db82aacdf5381830b9e18b23ebdfa2adcfb46dbd9",
"0x26639e520710e998ed40fb1369c7cb039bdbe0e2e5778055072c8a5466ff9baf",
"0x2b3225c35a88f757d4c773363b825191df51b0e1cd4082541d382aff5f7b3f3b",
"0x1c1a368cc023f9aee70e3e53341a06e8095022c5413ff1de4286363b4e1b99b",
"0x1b39049a6f7088294202da65d65bb190d44745fb93f4073a00d473d38fc37392",
"0x2b966bc8a897d76c04f943c5a7aef551f3c6040d0586eebe1f4989a0248ad79f",
"0x67a2085143ae9a245bc66bd3374eea946135f565cc0efdb6358a3ccde5b6c6a",
"0x27c3ead3d76039b10f3bfe13f32df2823fb8ca146d9aa6b14d8cea182aa76bbc",
"0x13ae8e66bda5f40ad3ce0e83305176d5e73b03f2950d5dd78b1087651446f60",
"0x267e55ad34a8788497998b79193846c2822a266e8f60799978e66ffbe27018b2",
"0x1a964c5c4550c29516171a8a8766faa7159a1376a836d29809d5e901a584a686",
"0x216cce9e5b6062cd063ae93e53efdae64cf5479ae01d7549f8cc7e67a600d184",
"0x175109dd08b4de441ba589607706769fc506fdeddcf56ad57d0ec008fc3816c4",
"0x202ed46ac0e68827ffbab076167ceecbc7a9614234fd6621c6eeeb7283e439d0",
"0x2d265e49f35dc88b63abad32d14302d3555c221ae8eff1d3399a66959ee87e6",
"0x593f84a55c9e3af185e6e8e689981a9fbe1ab6282f393bf4ac2b77be21d91d6",
"0x2fc4427295d575a8fa93101a1b916e123f2652e7e9e94c364c4abae0a424334f",
"0xfd26a5a97c3cbdbec343e616c0d93f25d7c5eb827748114e4da61c017e25478",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x163e039587ae8bed242103f972c58d7b3570846f3a9ed3b6f65ca9935e0599e6",
"0x17b8c9347540a0cf46955fe40c29fe36680969a074eb4e1b7c40ce0c543df4ff",
"0x28939f23d63d09adbd1dd196dfd73eb65ffe2fba07a79e2049a8453c7caded55",
"0x22f4246a101673a3d58ce953a3740bf807f25fed08cebf1c124565310b10caa1",
"0x1335c6f50549b22023d2a973807c510d8c1b7e228e8629c35b7ea3a701ed0277",
"0x5cc88a2ab03f9f720d841583cc8387313503e804be95d3311a64d0cc3cce9c6",
"0x2000d4715746fa36d8abf22861719b23aaecfcdadcbe71d567b1bece77601904",
"0x3c2c00765201729fef4cb1ae8cef326a7de4f3fd5803521e715257f8b392e80",
"0xc5affc61d51001d7b0d8aaa6f99d44cc683af806ea1ea1d241ce56f386b5462",
"0x153a431981ad712ae13b7530797e5b2ab77c125bcf530880ac8566ad3a5ac417",
"0xd2047081d9a8fff7773d8011bbc0b61a6057fa6f9a1627a3cf321fdd666e8da",
"0x2eadef1fd011162138dfb0e0200683a3bc27e1ad12dbfb2b94b32203186e591a",
"0x21a05d0434000fb05886112242958d74bae54ed2b6f37ece00b0293322e53253",
"0x19732c8f836170ba403a0d379561bc5aa6eaecf21c4fb9fc26cd44bdeba475ea",
"0xff30532e9f7305c94c298848cf0d54dba01341a79da4db0f2a975c2e4380372",
"0x2afe8d3ea06405c8fcdab50d6d6e55b6faa676cd36e6acb87b3836581b06b46",
"0x2fd228d6e4c1a1acaeafc4597d69fa30e56282d8f11d4cbd09c360dccf546f80",
"0xc203a0ea25b7f9b4066daccb2928dcfb4d1cc0cd2d14671fab5a7928603c8",
"0x17ecb26056f6708cfa3aeb6274c3352d6bae402e4d2414526e4c2a2bc9b8e0b0",
"0x2b5745b27a5ba71c7afe5d1bf955c578d1ce3c915f4d30974f225f6f7bad7c8d",
"0x1a6eb6c48b529c6a0a166e53fa399fb68e8b414869b13ea713c1a0cab8480c23",
"0xac89d6b741aee6c180408d6006f130ed945185ee9a213dfe3c8baa49330ee36",
"0x86eca38e64cdf2e252134d79160d437d92537324cab25cd8698c5e92e94632f",
"0x2bbe2bc0467c7a4d9d1bf2157cd5cc3ee50f10166a0d442c706d9691ee60b8b0",
"0x22c4c3d27515f300d879e8bb85b0447341cb7a816d6fda516cdcf31386998d75",
"0x23e31259e8fdc69a23a603b4e5b47a90390966aafbb1f4eaf02f783219acd1b",
"0x20c0c0f899d24401bf7084d6d0be314dbb3ec267f87a2e8d3769a1f64b469a81",
"0x2daba47175558a5930490cadff1f3deaf100589f676649a3a2fb1dbd9bcfd3c0",
"0x1e759b766aa310dc7aba2245608ecaaf4fb90f509cdab694155b47e768af3417",
"0x135aafeb5b230e030273e42ba704da43085d0ef96408ea8323e7be8b546643c",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x2ca2e70a3d8145f60160984452b26220f303eaf6bf539c8055fe2ab037a64883",
"0xb25881ede6015137cdf99b53a8591aa6e0c042a5a8c6a9e6fbcd11a37023cf3",
"0x258b19d1bac9e53c3c5cc4c59c87543b0e9b33a5e631fdda56298997a5781a7a",
"0xd6e7177ca87aa3326c9420369803583d1a1d8d96adc6acc33a3e58cdd3587d9",
"0x23cbecf6d9fd7bdc4c426035908bdeef9c9c7a801667ff2b62e8ead282bbcab1",
"0x2841e2ca97eb7de3733f8a6d3299c6038e8b17f9d133ed12efb4dc6d923d804f",
"0x2bf228ab9b7490f4b0ce01cbf31bed2ee4a6ddc6d5a00a608ef1c7ebcb5a203a",
"0x22eb1fde7a1c175f0c152d5f7f85045961d2b01397db24d9de95ff0507627f0e",
"0x100932572c12a0bd1f2ee8c6b0af317dc5191c3bc2a177eee791d6e539e5b237",
"0x27e881557b4ec0f1128ef0069c22a6e5ce4fe48f7bc9d9789c48d6948bc24c85",
"0x25862853fd1b44c6aa26a414ab4f295aaae0fe4457e0fa0c4bc5dc9fc2972246",
"0x3947c7ab7d714f1f8d4503829e2edcd06baa8ba87d5b86354bd7254b841ed64",
"0x2676b506a75643609e6b0dd8986b8865a93000fc38eeb1f6cf3b026d6191ed47",
"0x1f45ca8395b4868c3b68b11911f52425202fcd2108aaba02230dddca7b36546e",
"0x1b5fe89e54f508b5188c8487302834d08095b14c1e0938aa82f9365ca3b2b44e",
"0x25826f9ae3904e80f7ded17b954c8989a04a060326ca40371dfa204e02b05eb4",
"0x2b5324e42bec45328632622c82644bde941e015946d2d9219dd0b805dbab5c26",
"0x25e011cab809208c9447ce75dbf6c90f76c6d50640829b861c2392271a51ee91",
"0x58ffecff608099006fd59ff7d75f03a528613b3633d1dde3fcb5d6f239a648c",
"0x26f052daeaab76f2ca8e18584b8586ae9a8f591a8b97a673d82d50be943aa00f",
"0x15d305bc6e3138c409925caf3968367850c6eed0384e46009d38bae5df81fcc9",
"0x16f0c3de9b8a76ff18370cc489da46a9bd962742fcbb0a0ab0aee9d12c3c5fb2",
"0x137a4fc5e63da4a366b6edd41e255fc4baa73ba9662ab7d2b69e0b7d4986b562",
"0x25a59d3b46f5c8b7a763518797faf55cc4773967c1772b01c7c23f186a75178",
"0x13df1d61814fda2e0d26ca861adbfe9b6a92c05bc3afc953cfe008d176be2c30",
"0x15b63fe5843c661cb40dd42feb664dbadbb27866e119a28f9ed8d35b537870b0",
"0x23352a3a3bae8c2e34359d75bcc9a5d870b69555ddf57948caaf074538044a80",
"0x2d223c52d6fbcb0e82e9fef6b9bd7384a2b789c4d9c273ebb35b4efe8e51e75f",
"0x1f208f14c51b48c7776faea01878bce6507182ea071505581658173217492863",
"0x194984a1a5106ddcb1bce1299b1b043edaf26b85c4afd80cb6785cc5c83b346f",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x28bdf0652d4964a6e9ea2faa6ce2d823253364d311762578721f87736aaad803",
"0x1183224ea82a68db5fdf6a21052477c8c8ff500e97b8cedc09427cbc02d57e6f",
"0xc61d22c912bef8507c6b08cbd36f7cb7979f3b56b36549613794515eb4e02d9",
"0x2ee8c7f8684dedbb1c177fa9f2574a20cc4ff3c10562877bcfb0d53c90649b77",
"0xf56193999816a0f4b15e38974273b5c5863422b93da9e94f47c5f10351d4705",
"0x90b70ecafba579d37d6d211358523ed992e26d5a7752598bbb68b637a59295",
"0x2de97266af0468dc5a587231f1b1e3aa2cdd4d1d7208205be90826491f263752",
"0x198553fff8aa46adc9af3b38d6c01cc00f1a6594ed0e1a8b8f370965f8a89669",
"0x192b3300ef2574b4a7053c24d7dbdea81c04da6f3c803269ee85c22c110782b0",
"0x1f4c7a76da30fd0e604d14833d0ceae25eaadfcf937d4ba5a6bd7507b70fcef3",
"0x11194b46ea91741f761662d56b64c9d127f2bf36142f681bca579af2e8856cc6",
"0x13233cba082bb1579428bd4a19847aef4c5031956805f6e2522e00dc9a92a087",
"0x6fc54c9a27cabca0bd75d53cefe2992bf4b744ee1f1e0cf7c254492e584886e",
"0x14870645f35e85921f579a47d013cf8812201a133bd14b6f5604f77c10ba8ba",
"0x246344f1ccee4dab0e0409bc96fbb618937e6bc629d9b1bb83a669055ee9e210",
"0x1e1c72c73d9444d6bc46a7834c66426ce4bb91446e804909153e6bf86511e628",
"0x662c514923e41038cfd078fee4bdbe72c8f6e90e5a3cfa51082a1a4f7523754",
"0x25c7e06ac250334f38bd664db0bba786d54e9d40e7c104b95989232ba0776db0",
"0x1c63774bb6aa72c366712c86792d85668f833b7af35eb91f36176de375fb2522",
"0xeef372e915f3263f31e2c3c4d214b4c9aea86fda813ddbe1cb15441881ade05",
"0x29db12448c6eb73422accef5a2a3794c7f372c283f37b2b194cbcf09b23b480e",
"0x161b72d834fdd269571186b3847084d251f4765a5b9ffaf77fe720319e0dc7c1",
"0x2434332138c93a69feb06521af0ef32c08b680bb50eb61398e377447ded461c2",
"0x140867fa61caa3dcea10be9b46b76871d983e8a7952e3d1f71aab2f531a85714",
"0x1e3877e58d7f25a988f737f229650cdd345c308a37c66366683771f9e249acd0",
"0x2e00f80aa5ba054560070a3f21c0bd37e311ce8060a7cc1c64650560c9715088",
"0x9673ea23dba537a4a0f6dd66a13df85d8887dc3431666a86730becd72f04fc4",
"0x2a05b10d1faf68ab7e607388f7c9b3de54bc151f0b2da02702e471eb5b786a50",
"0x2e8fb8bd00af6741fe18ee679ee378e8602ce8bbc429ca9986d016e17b2fb22e",
"0x23cf3f042a56c7d2da94772521a21ae6bcb3fd0433f8778cbf68fe1c365c8c08",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0xd4d295bd6bcb6716dd82907d89b8809a8af69859728773689e073bda41c709b",
"0x14f8df38aa9592d59519054d8f0ac2c79b6a1303905a9770731a3a7081b2bcda",
"0x27ca9533e2a56a644d35c53fa9cb66187a7c0ef7322168932c330724edbfbd0f",
"0x1acea5282de35d35337503c8c8a221fe22bc24d39164850efa9a7acdf1377f07",
"0xdde135f69d5ee7253d1cfffdf878b3ea75ca2c56b15907329147969fb120d46",
"0x8565cb565140d42d33d5b907a0e23f7af7daf91ea5aff759fd8ca916579ce25",
"0x19343a528505b6b303ed193e33810a005abe738057cb00f34c9a3329ca808b",
"0x9cd47fc8ac46b3e49d737eb4714d522ce235c1b0feffada0852d8173d4b080a",
"0x2b87d075e7fab29849291a7700eae8317cb01676a36c0d2c138257b852732a2f",
"0x106694e160db35b2d35998e4ebbd1769c69c448afd1ce6aaa8e1bc1ce53dbf4c",
"0x163d91a57022a4734ea17ab01fb85d94622acff6582dcf7e4b46dd0a5d72d823",
"0x2b8cbbe66ed1e1d9c5a1361ef0a80599de75573c62d6e3aa718ba233e2594408",
"0x305e4c4a93d931f927f0a213cebe1a5a3b258ec726fc912ca59590febd9b6020",
"0x26d0c3492063959cd8c3dc0e5c791356b19b9bc6e39b4da13a4d2a612e56356e",
"0x2076ca2026d04b98f821b9bd52d64fab129526fc2e626fafcc92d0d2e23a33bd",
"0xd89c4483e40c415d266d3c7f2ff6d1d66412132770be71bcf1178849502d231",
"0x13671ddf2f49e97410f41ead0e1a80564d862771c7543664bd20762324fafdbc",
"0x19694e401d2bd6b6ca4d8929129a85c9e8834e40fd1f6089da9bd69f66f840a1",
"0x1a801c574279164c937f3798748bf115f09f56044461771cdfd67c9606f1a170",
"0x7359e7661550f4af1bfd7620cedab2b030fb9645b06945a8c166a617423e588",
"0xdc31ce178e60f8dd171002e2e5849759d9caefc7dc7a1fc551b677b410c4274",
"0x3b7d51b2b8b3390923b28d0f1e181c8378bfd0910f03835a1edce3ded58ffa3",
"0x20feaca74003f750c7d517aca7f2c181745a7d26a47051da7209fd1b3ba67aed",
"0x7c71a9d84dc8d9b2d223b3302e1804f6d6cde6702ebe991c5c976a4aab0971a",
"0x1ff2e7a7045e92d955d0b3a679eb1168aaf735a7cffec5e90fd0e47fc946ee3b",
"0x1ccad4ad13abfe58d0a69ea967e9477f20630d928dc93970033796ca8049edd2",
"0x1d2277a4c8ac3e7ae945f05461d7a72caeedb456f30c1e12911c8e3dcc3a66b2",
"0x2ec2d28dcd7e75e100c13ef572e9e270d251a774f44b7c59df767ca50fe10434",
"0x2ea447c02e059970eb92d1fd14b1ecb189dd900b281e67d68b3e742523c6a801",
"0x2b4adec5ee014b305fdb460cdb1ae30796202ec0fe11d13c23dfd65703f0434f",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x1784bd17cb0965878549fc4b0e1b40bea37668f94d8da890caa7bd27d22cb2fd",
"0x149f1d9787366b84b3fc40ed430e96b646eb16901093590e7b68ba3601c364ef",
"0xe1161f13b91ea8432e12df3ab58706410da5e6a10ad20b1f62d1c34c09cdfa9",
"0x7e6d996431e217b60bc4d3e74aa3c337263f1183c92cc73807d19e59c4e6804",
"0x2086834b2a03db22c71e71dcbc89688aa02cc362496e4992be9845f57e8bee9f",
"0x1a593864d072783fe6e1ef8ac83665aaadd593b63b3dd3d4919237bf5b2c7106",
"0x1570ec833fe8f21ec48539c6ae273c34cae3bfee0acc5578c96cde92b493680",
"0x13b62a93db33b6f0e9114d3f2f19c083b397a193f6ef0f5b087f2079c2581a9b",
"0x2ab8bd24dd963ee466e2e0c3380cc88a4f82397cf9f7dada2d80ad5ea21db875",
"0xcedea082a17bcba725bc9633d2e5e67fcd43650e22b22df9aac3037daeef8e4",
"0x5df20d895beb2374b5ed6d81ed5494a6ae0e9c3bc184d7861bffbe7243b616a",
"0x1ab529db00143d7038a6e01e23d0e9d56ce89bd34002727061c8e56944e4003f",
"0x2548c562cab2de540520c050393f949e10bb8d9ed4c3fc387e21e454f1ac83cc",
"0x29042d35cc97955a80eb09f15a15b66f0c4193a58193a080662b6a5e79e68051",
"0x685b96bc1e8d70b1a7b70216b5c74a4e5db315dc36faa59eaa39f2e0494ac08",
"0x2ddbbc66fe69dd188a2e9c306cf6f7de9faa106756186b82f3fb440dd0b912a6",
"0x18c70260e52a67ab417aeea60b5d3f88eaeea2508829ae7ea3c063443cc0945b",
"0xfd423845f9f9970561e33fb0f913821e1e3180dbd45815a9238ad515543a634",
"0x6715e87f1daa773cab6957c11605b0c6ff2ee937057373dafdc2f284d95b1a9",
"0x20af32b63bd2e6aa4adb6d0f474ccd105b78a2dbb269dfbfcd615d4ccda0666a",
"0xa4333899e37c411cb633251ea98d8858dd944f73c4378b66fdfa5904ef8d9c2",
"0x92b057185e62fb11b22b5f3583d1943d561f827c54936cf20d7106b9416f3dd",
"0x1eda5120d5fdf5f2cfc9e303a45a4ac8710bdc7a9c28b5e801eb248f60ae08f6",
"0x1282a8b79cc5039edc8852ec1bbd5835f3b8004ccbc9a669f88a331e966db3d1",
"0x2335e0bc60883b59b1390d2b3652ed0bef230324e7fdab725a5d4743d5fff8c2",
"0x2e23e4d93a4b72ad0551b740879ffb0da4ee65bdc1ab71f8207d2d9da0f26d01",
"0x1b06fee7ffca419618d3bb646a203316838a684e7c878024bc058645fad01e55",
"0x66ddb3bad4a4b1374fed6b3a88b1bdc812ddf9a6bea1b028735dcf90a77bdbc",
"0x280b71aedbbd3761124fe6fad719c6930ce0ef6695938cce777ab77ea3536637",
"0x21d130fa258f6e1fe201071b3d0f643832f4aad07a3a983ea00c26890b546e5b",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x305f7337dfc2c6591e5b3d53a4783555e1ea91efc44648529448fa3e463333eb",
"0x1d69e17e5678ac53a1c046ed0326666c84b909b85e5aa9e34e516d26ab655573",
"0x1f5d0bf5a9c458a3c9c9bbe3fe48211a1127a176d4f54547aaf34589bf9128c2",
"0x2385bad332ae963b60ae73862cf86c5f723dfd37e56b05918373912d8f9754ad",
"0xd68dbe874d206f45efd8724adfd9b10999a7da1226c394c4e7959269a17a79c",
"0x27f8bff9822ba76b43b54939686caef37cac685d60efd3bb87b468808b480c1e",
"0xf2cbf2fed229b81bf91c08a642730c9633136dcf1e68907c192e34464560b24",
"0x27e6783451cd61e229f062e38e360d9d022cc244222ff2128d4901de0c5b3c1b",
"0xb0bf852c95f2476ab5280b94660b1d9d2cf5439c34d7b6a928d596b13555f32",
"0x2b543c7e1d2f84fac470489446df876c7f64956d82c8897e268cc4e2af130a2c",
"0x4367a2851e9b84ece7172ed126f7cfb63d5fb445ea19ef5a31a67517afd2fce",
"0x1dc8a2abfce437021fed52e83b1e6708a20e07d84206e4c6038bb9ff36b325a0",
"0xb217141d35c2aadebbad8d9a426b52df23d7db7c3c72f0914963046e120d5b",
"0x10682c3505cec77ba65f4af68963f3310562527b2bf1c812c04a2eff94d33376",
"0x2f3fa61cf4696622abc02bd664be628da8ff5f9b49d93db65af12a0ec0d25593",
"0x3798c88da7c1c70322f72888f6fd783585ad279f4cc06029f3bb23f3c32fd3a",
"0x154b3f2f885e3d61fa5c27875fc9b03509b9f36a18981b13e1aff4d29b7d23af",
"0x45e3caacff06ee391f46ae43cf78a2ba1e2134de0405120228cbad0694d2fdd",
"0x21a443268cf1db0a1edc3f7c366de6cbc690e1939658278de9679814a5ad4a30",
"0xfa574382520b0170ac21d000d9ab5d2523b5f86758226d49bab96fc1ad9c59b",
"0x1b8f07226473c28fc3cf78ffe2f5fb3967b6beeed42866814c648f5d4adf5fb6",
"0xdc48483de7d0df83232e5a41cc287618b7957ad2fa3db03556429286ed6a2d8",
"0x2327d3dacc8f80fa05d075b7f9b8544356c04f4e600f53d8d4d2d0f147590eef",
"0x16a6266bd6ed429272c69aac579c9032d9be7e86973b578f27d5cb8d2f6045da",
"0x9eb4e66285aa7cbb62217465768138d73953baf7eb68bcad15b749419255e25",
"0x15f3a6b27c8a2ce27e931cb599a0bbaf6042cc6f8d411d2daf1969c02c67f5e1",
"0x2727c9236d43b41a34c74c52420674daadfafc76eb313b17fcae0e77ccae7bfa",
"0x149bd00eb1da39e22ab0d8dc78d7abff54bd9c13ba38a6a531f696cc993a3f96",
"0x13ebcf06a5c9485e1767a124c3e035223eac6be5816041fa077d5cc6fcd10228",
"0x22aec7f8873c75702e0c55c1b1529b1290831cb4df73c3ae6441da67c21e8169",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x1d45f9fa11307f6de88e220e633519a3ff18d9dd8071a39b38ee29d5910fac47",
"0x215ff3e875d70ad4b7aa08800aebf47f83fdd05a246186a8ec09f674ef5aa160",
"0x1552de26acf195af643fa2625cbd3e1723284c2cfd05bfbc23495a0cf88aa369",
"0x1f9836a1eabee49b2d2e6cb1f1f666753813f5201323d302faae128f08e45168",
"0x1f8cf510bcd58b2fe258f3f812dabf08a301a71ed710d4647cd60fdf5beb779b",
"0x2c446f645eb661152de44865a3ac149bc20a76447616094884c9b6515ed45674",
"0x50a3718e48640cb644bb787fc184aa61f4e44044dc0f3f3006ceba81b8dcaae",
"0xb370b71f98dc10706712c7f348474fefe5dd772f6786fe96cce94999cb09fb7",
"0x287473939b5c47568612b150cdb25b30808c058b4b5a3633c03af83f7a7e26f2",
"0x1f5ec7598f6da577826ac5afcd6ec3721b963562999125d9d356eac51d0d513c",
"0xa9850058f74f3196f58585e6fc80ce0405dc510ea89e33eb1a9c87ff91e58b",
"0x22227d59d1ffc328aee2ff956f45c3b6adbeb782538809edbb6a1e70f262a23",
"0xac7b869caf4e71585f9f567e94b1ee6e0d802ed6af49d30b24d41b1c784e448",
"0x6d671ea1fc8bcd0d824e101c3732425de5a4435fae1bcfd1c85f501ca205d43",
"0x6cff4c2918d4ce74f4ebde86e5951ad143b09a951d136618cacc9cb40dd5799",
"0x2d9f0ee4ed51e979a0f1a582077e8e5f6669f89d79225a7da2687446184347aa",
"0x12dc6ad0e0daf28768e85b026179300312feb26584b2a4b50f830499e14f5e06",
"0x2f94df6b211d8a8a514facf931d71a3f23e3d9a8a51a11d29c0221fc9873d756",
"0x29ee741287f545a19cd02af760d56286c27ab5d4122c001fc297d43db2bd030",
"0x7d43ba525c44a894d64b500aca3b68f2e3c2577927390f60181ed36c0df68f",
"0x252866633477b3aaa0f9fda731b4dfa0d78905ab39c177ae1f4f76da5d9e5547",
"0x2308ec0db73437f83200db8f914733431ebe5149e61cf3afe3e67304c8fa8d44",
"0x517e4ee288992d99e59515e91c5be6957e839b8ba8c9c7430fd31eac44c56a2",
"0x2ab15d8887615c04e22f1e988b9d8450cddc2cfaf2b582bdb006204a50e596cf",
"0x116e33a713748ad93004391adb07d5ca64962c8af2a8835e50eb7e1b6662a557",
"0x68150e1248e7ae44ef5619127e8cc28616d7277091afb4c209ddd504923f50f",
"0x1e9e3d2964594dd5bc87a93e4bb67e6ad71b037049f90493165954fcd86a1e4e",
"0x1751f2e99cf8cf643a5ec6b3cbc81def5aa8679977cbd2779f34f476f9496911",
"0x248ef2921bdf968c74dbadcae0db56cb022ca98b983628d7110c724cdae048d6",
"0x2fb6d1bd57da1cc3610b201535bd42a2cd405ecb52b28c215237581257354352",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0xce40ef4d37ae58008a4d1b02e78aa4fec563e8840cc28fd1af61144986866fd",
"0x1f94afec8fa62f53e4bb20f756a08236e40e98a346afea85c78280f0ea33e337",
"0xf2164352021aaa641a7176ca76674a465b3b728d8af12c7b2a5f9339d6f5e47",
"0x1b86c9a7cb8287520b3943987397e8c7a742f3059fe12bea664989ae08d00e5b",
"0x11e4db5228177f30bb2a2f96098eaa7ea941229180bed1869a0d0be04cc60b0e",
"0x6378bcef2ce91bf24365b51a0970028dda29ebd7da3054a8440207c15eda844",
"0x192ef0949ebb3224247a83c74eba36e47252f4dd8c3f20eedaa39484ea78ca65",
"0x21c1cae79f5fa8283d7a8c2acb29a4f46a76b8b3f7d51fd93941bdf32d38fed8",
"0xfc260daea1f470febcdeb84cc58f03b1100ffe23ab52e88a7832c18b1b13213",
"0x1f6f7bc07589916ebe3fee5025672ad9af9a3ab798fd01c6c2228ecca20c395e",
"0x197e205923ec11dafeeb697b87ad973ba4a85d9d9d3817c364c3609ff78c18dc",
"0x2935c393a884a244b08aa314b2d261c999959d415d00857cd883277d439fc00a",
"0x2c639ac544a75088ec7aee01a854471f7b6538d83fc1c7541d9018c0a87b1916",
"0x25b2c9c2f413762e843c10e546ced0572e1a30d1a9b2c5c781d24de864ef4973",
"0x1d28735cd6da088ff72fe8cd4eadb8bc28268e15a9d754a5eede53d3513e0317",
"0x205c309b41e6c8bf2fea4671a502abcebbf0aa33c807369adb9869c0d0b1661b",
"0x2e8e8dbf8f9ab3be24fb4e8b95c2188103a384cdbcc2b65fc5b931a730416e0e",
"0x20e1291175551be80f70fa6ce6e111ad5403d1765c4bf47f611103fda64b098e",
"0xba9120de0cb289db8a951b5d348853a839af34529c972296703db5c217054dd",
"0x2898c38f27c64311d90346dfaaf3554ff6b104e56124b35af7cb322402264620",
"0x286e3762e815adfe1ce18e59928e04beb43dbdc6d4d1eb52b5741326da3c688e",
"0x2d316495c1c92a8ab5fc456dd8e7b1ea97f5cb70e90624d1af3e4bbc18cb75ef",
"0xdeb856e2bb0ca11bf197de3dbe8e8cc5dbaac998dcc275cab91acf7af3ff347",
"0x247b87e0ea690afabb1beeccffc7c12fb20f31484d684b97302ee67f588d1eed",
"0x2003afe0fe29cee7641b7f41a31c8a2fc27bdd619f85a8fe53a4536884d684f9",
"0x25d9c2e2d66052c7d5cf3d56c8865d939cba18e0bfac725dc04f468837112253",
"0x1a711ba1a3eece6595c4ee4dee4ab3e865dd77e6b58797c3677e1f494d13144",
"0x7c74f66ff199856f077f29b06acc03305bb03d7a1beae045e199b9596ac9a31",
"0x1a4d513506c6ae66d0e1a077b9e9604ad4359a6cba7738d9721db0ba826fe704",
"0x172f82b5caa7f65eb8044ae3faefe81d837e53b8e615c2d46ed02e4036142ecf",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x1c81a64c5d581191f40a709788a4fd607c71e461de2ad166b9bcca742e0a9db8",
"0x65284960bf09eab2773324ead048c3bec54af7ceba50805e3532a5a11b96b94",
"0x234f635b921f9d7a056c0fe63af46afb8b9b5430d81905bfb16ef051369fee7b",
"0x1488199577c500214d8d9c4bf6d64db0811d5e69b44f3b86a585d9410f875be5",
"0x2237a1388bd8962921cc637d8a4c5d0faa6b5fb138d589db98a508bdf9c225f6",
"0x1b89bdbe9e9ab40f2ac20793f4182a7f33ad93e907304fb0440d1e7d40063ed4",
"0x20bfe61092f2e5cb0508a73ca1dd8983127a395f6800ccbec4ed56aa95ad8c7f",
"0x5acd0c7611cfa9170896d7606a8f5c672883ceb42c2b829c29c8dae08df2ec4",
"0x2e3a22fd34491f153094c93bcf17a8e45940e4a1191fcd2d1741ef841681e0a8",
"0x26504b2d5b079c4aee6f588f825b8b28c337137e9ac1f945f715b85b5cdae979",
"0x201fbd4f4c9cac24b23d8bbf86efe15d86abe8f18838bb542975fa10e9f2a895",
"0xb13dc6afd9a8566a90cb50c82f1876fad84ffd092241c028b9ee470cd64cbbd",
"0x9c0853fae2070c4ea816a54daecef43a5940c647229be0fd869ef36f23159e",
"0x1a926cac03b4e6f41bf021460cb129cb4b20253b3c172a6f2b531d57d7a7d645",
"0x2334c0b56015f6c5a9083193b17d225ea2d977932521f5d7e328c3f0baaf7a5a",
"0x2cbf73905b5489ed3b0c5763eee04fed6594411a1381d0bd617a208a9e38d208",
"0x1e06c4d1e2edd5530f226649871f8fc83b9e7b5708d75bdf6b9a31b963be7bfb",
"0x260c2e5e5364bd914ccbfb785d01ab898a2a961daf708f5f3e34bff953b24b00",
"0x26689f7259e1061156947b136c0dbd5e8c2c1972b4823f4dcf04df33e95532cd",
"0x291df0e62b563da670d44db58d0060e20935852eb699daee6e342b3c59b6d73c",
"0x14e05591b9b889b8899134c8079886d87829cfc39538b78b7a6378b30be1c683",
"0x2be6bdf824d2cccd56cec6d1953e0f6b3117f6cba035592433b7daca12ed43db",
"0x1dbbd7c3c3ca0eaa01cd309dcc57d0c6331814ae9640071cc6bb9483ab6f9a8a",
"0x2227b2d0979591731b87cef94237e7068a5c5e03d609e61df240b7f7944e9264",
"0x1d351ed4b59e46571e5727529ed92e6ce55aaedb36e3d54cbc6c2a73fc4a2786",
"0x2312bb7364e690f64210acaf695e5d8d03a9059b261b9f5bc2fd2dd78ebfe499",
"0x1532d3c7fefda9a7e81fc949f72956bd5f6d55bc4be421d27d64847d81cdcbd4",
"0x8916c1ca3dc2d21a671ff4989f5f7ae581c2102c172054472cb63e25fd58101",
"0x199a3556e4c7a370f0832fd385952688d469177c78a0e77107ee586aeed025ca",
"0x4297e87f69747dad1391582ac26a54249d004fbd16bfc50ec12d7e6b95faa92",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x63db3a46c3e1e822357db637c8910722b22e531454a1da26f2768f59a8457bf",
"0x82793e5ecd44bfe57289068ca1bd6dcb1a9dac086bfec2ce99aba4d04c46b2f",
"0xb5214e4d1f2227947a3aa13e7b57a4d85dd94df40e39dbace02df0e7c0eec0f",
"0x15fde89fae0bd5593e8f2bea040a6f837a7bfd5c5e13b04514c39eb1ae15624d",
"0x27e7e6eea879199109f7a165585ffcb5da626a4d0c39b2681fc7b55402510f1d",
"0x82b46075b3da1e178cd6367971caf87a3676229dbc745e031b45136618255db",
"0x176668330b14e97d4f77547f3b9f430b7fdcfb1bfccd46fa70839bae63df4872",
"0x10104450f5b03a0638bddb9c1d9db41998094de2cd8a8cf7d3f04143122e5a9e",
"0x18c84287abb1d81afb7c16b5380aad2edf054867661c07e44b252ed26cc7b68e",
"0x4d7f1edeed756ae0598fe4b0ff7edc488b75f0376b1923fdc417fe7df3bae7b",
"0x16b3bcf2e5fe28543072f71ef9d83e31887dc632c0c86b4389ee730449207658",
"0x2f29c8f376d462946533c1f349391834f2ec826c08eab0eee6a263f759a43797",
"0x20d394abb3b23967e223f5b9f0a556ce582128c8ac5193f66f8c959a1efc3344",
"0xb207d38d762517ba978fd184ccf152ba1c46333dbd979194b9ff06b27a792a6",
"0xfadffe100a5861695b7059f6ad8e0d5426ffe92c2bff0d81825b72f6da517b0",
"0x279aebdde647b4118234d886bd169f051ed193b0edcf46f54a8aca2f4d3cdb4c",
"0x119f36daffe8b2be75f4e64c32fc2ecd118f319409499fa007819ce95ca2df6e",
"0x1242a6c181fe90f95fd6bdb02918b14c7bcef634ee3d02e30bad0caa161b1bb0",
"0x13b4546c3da77fdc8779f6ab0d770bcd3cd72d927c72c69fc1dd01de9ead8dc3",
"0x888fd59a93f104c423ecc2271c5926305abadf9f458f70ebbbe28a6fc401f71",
"0x25a8ff35f85072e4f8ac148e53991882409a73be3156a865cd00ce4f9fd05e39",
"0x11ebf2fa3b30212183347f0fe5632e3ac31f93a68a3b8ffb47960b505601a7dd",
"0x24e547cf052f879aed9d43e772fbe7809c500603eaf4ee69e41df75d2cdd213a",
"0xfc85a22c05e5ea21235ff75ce1128c7bdadfd9fcdf18f1bcb66e5eeb76125e6",
"0x2a9f2576a85c827399655ee856b94ee757335582e476846106dbccc7028bf19f",
"0x13a5b0372ba5ed8b2718e46b25d797b56a6cb0a2f03c621e8969b371a5d1f2dd",
"0x2cf328cd5a7f16316989013b1db59f8e8c148cea1a09bbcbefc464ec3577f253",
"0x2c6f8ae3d08a528068b4ff4da059a1a0dc88e311f87a1a9c5ba99738369762f2",
"0x2108fe376f8ae97694e36f575eaa0aa0dae306505c70d5a0575f5697daddf530",
"0x23a2991e713b01022cbb8d2d3b81cc5b71117d663e3be0f7153757231ad22cb9",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x1e9d125fb7c35dfc0064d4351a05731b95b37e5ebee77e1ca055ea754902c75c",
"0x119d649d362c0f09efab4076c479c9833ccbc80a2f0da6c362d653ecab381599",
"0xb682593d09250dc35e376127d33a34d30ea21f79f3f112066618f947872c35a",
"0x16670c641709033c5f1bb409f530b7799d280e7c9025defdbba706d9e1371733",
"0x16013d4393fb316871311a22728aa5de989bcd030f2a54ff08fbc7317375e8da",
"0x2a7d4518b4393070d22a8d824b75d8a474fef8ee3eae40cacc38d40cb525937a",
"0xa2af4ab955f7dc6d09a9c72bbff55d30ca01013651b387523782487fd6bfdb4",
"0x4fcc21d258b270458eb662ec8b16deae2c8039d68ccab74e19b4573ae413940",
"0xb5547d0028fa903aa9a2cf2eb9ba2d303bfff9ceb1d4070f87cb2821cf684c0",
"0x4eb04b4aa22c6ab9e0cd8c331a04aeb1546b58540f460621f2696f453c0e0e3",
"0x27757b5fad20eb99a306317b872275532a31ae4ac34dcbf20e80843f2511af23",
"0x23c5cd44bdc3e761827ccfffcf09d470a55aba69e7ad0fc83fd2eb7bfff41e67",
"0x21bb1a37cc6a1ca1d65febe7d1868754bf85d082215397b8985df2fa8c47c25c",
"0x2050602a2f6da4117d3257061d22608527508e58e8a578d00f2c3685f601846c",
"0x2a896c598d40d992207040a5f1629dc61549fbb0dba65e33a8cae98ad46afc16",
"0xb2f10b968c76b4a1c338057e1c67985cc3f571380db66b1c38ff9f6d630e34a",
"0x7a1e6e9dd512b10eb0817b56839e3bb85b736442b50f32e18f07a5ebdf3c191",
"0xc0a72a48434504036597a74ce362796f9021d0dc8d318ef086225a55ca1a9f1",
"0x28e3e34de5c1de1c85186e7d604e5e4a24ad603b676abbe3674a0ed2d802be72",
"0xa6d55bc7826b1e2b03850d677928f501bf4c6398104c009eccbc2b2fc5cbf17",
"0x2c042a68d06b5f7110513182d5c54efd6ab0dbbdce57f1eeb5ab12cac26322a4",
"0x18cbfbb6607f28f928f1fa2ef21ce8be9d4719a8d7c33a7fd1279b6722f151a3",
"0x2d7e6e039f81c66f329b2dc40ad3b116bb9bf4db88bd3e44be39acb676ab36ec",
"0x2ba3cf36a0580465928db18f630e47aaef388d04aea7f10ac3c600df5d2108cd",
"0x2403116000d75fb1a8bf3d0a18ab068fccc0c149c46a935d91678c45fc948b2b",
"0x62b5c358a18921954449fd14b3a2dcf3f2974710e9616b9805f715d7a9f9e50",
"0x14307431f749d428d15fa3fc56a517c677c22e0a80bfd0fa2bfa3f35f323e156",
"0x2c04854c96aaceae379bc0f7474cd235436186a5f9f01f4d059e0fc83037a57",
"0x1ba6107ff34a8cb1ec3b4536325f2845a05b0c4b8da6dc5c0e0327419880b484",
"0x1e7b9fcdcabb49b7aadb17219fb4a0bf4da78d4dcdbb6d1437e7fa56e13ff4fe",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x26968495cbd99f547d94c82d24b714e3cfea387ae1112be450ef48a93752ac5f",
"0x1ddd4f2ebf1e1ee5b8b6715e69df13d58c524c6b0bd5120777b78e26a054b978",
"0x1771396e072f342e14fa40e37a4f9e45a385b5badab8a10b8bae6bc325392c75",
"0x1334b3e12b51d4e658735203dfe259c022ddc5deac72bfc942bd8970c7d3f31e",
"0x2e7aef8fc027f0f4ed42c4ac674ff86a2314b9a88094a214325ae5f7611d3f5d",
"0x2f66d8f2e4c63ceff37adcb96812010dec93be84a18b260a659909f18ad00789",
"0x1cc80a4e8114c2086b90d7c7f0f33007d33b613444a63823b465939af409705e",
"0x4eee4396019744ef67fd43fa3739511a2370f23f80e2b5ebc5c5a1c9655135c",
"0x28ba26ef284bc535f288779980dfc0da8530588823a2f83a3d5edb7a5a25afb9",
"0x2fd84d8520146a01398ac84f33cfb557ac2850195fee0c5b28d2ee1d629b4d9b",
"0xd831e57b1adcb20c227a1adf2a6ab52a0a1cf4104e493c327cbea8897cbffdf",
"0x186b1b6b8ac98a038ece2b61971b0c83f28f32e097e28cdcdfb07aa8e685030c",
"0x7630c5932b486e74bfccc6d06d6ca99e499c8913a3a1a2ace3f6546696d9975",
"0x2ea3fc0c165f38d9aa02eec6a46e19a5854a0bb2584c2d35354e1c814babb896",
"0x1c62f3196e53f51fcda6620317b4d088d2132531a7367c8e5793bfdd5dc07395",
"0x1f352e27dd80d315a273a3ee1a159f18875744c5169bfdfa5ed6a29113caab02",
"0x193d8985e3f9126daaa4ecb2b4fec04425eafd71dafc86ff521d81fcf62cdcce",
"0x2271c906b9605c4dd48e925fa831f1267939342ec2a6f2d68dddb62a5241bb94",
"0x32817d35a0d57fe0fd10584116d3b5c48ddfd6ebe990e91ff469b1e679b7df6",
"0x164540210c18239fd0e4301e0e729018a7f419f438fcf829294179bb2c076221",
"0x2de749d2d5c5c9db3652813190e49ecd8ad1d3b3ae308c3c9efb6e98822e8dea",
"0x2a562decd5b704192adf41195234f4e1bd8d9d58b4cc48cf57a2ec9dee7ee410",
"0xdd5762ff7a8f652831aa96e9c74370e71b2e0fa1ddd1db85427bd2e79f84724",
"0x260f24c836dc07efdae65db907fd8390b38f5341faed0fc553cc7c0ad7fa549a",
"0x1a9d4050de78961851fd12689cc0f93fdf5278e1430d7295cf620713b01f2901",
"0x27d255a40de38041587f907cc4d84a8ab1a5ca07f6abf6d5342248c0df6dc441",
"0x2187634627013d30fff1a44ecd3d5a018c06352be5d480bd3146898cc004385a",
"0x2e0eed49a09486c41002557ade478e57b8ec175f9ca36fd481536189766291d",
"0x1abacf3780a60d304e373bd2f40ff6112b068c0c5d5966a3327c386e480c9181",
"0x2839a53cd148fc18db287c3ac9cbefa3a479e414095fe667b74151d2b78c6342",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x121ab2b6ab8e2c5ecf89dfc2bda8337d7f52d76cf7a2e444859fa1b714be8f01",
"0x23a405c7644f6a9b7106d4ebc99b0f2c6c5543352d391d31a2965478230f2c13",
"0x3de1ccb8e26e8dbfaf06a08bf5189bb38e8e5cf181d154fbb0c4afed03d551",
"0xd594c3a1903abb67bede24f66447fa6cc8f8696ddbdd54830a32ef205495e43",
"0x2d13cfd974b0624734fe4a5127b23dae16f69033c9b1b0d7a8ffcbb55158737",
"0x4ad4148506cf6e6d9795ef784c6c1875e322ab0cc3b6380311b19f9441d8f82",
"0x5bba1c4d35ea9bdb593e19848c3510f2450abcd24bc392456d97a6e4f18e49e",
"0x9236c366e97d741479d565c45311478a3c918e62d52d12c5f54b7366c5bf57d",
"0x2a5630fe33c0d5616c41d0953c305e67503306f2ab6942e472ee89cf34e4403f",
"0x2458e51f0164821f0ed092a42b94fedaf0d801a9e7baef3ada586ce5e8cd3c64",
"0xa3218660ff4767aca5b77aaa3060a4e1fc8f5fcc0fcd6813c9892deefd7e96e",
"0x10c628fb41830cad0df1d4045657412e0833451d9f6fb341987afcbb98cac300",
"0x365b8f2fc30b7f0e91046966b67e804b88f2e1eb7ec6c132456467e05d179a3",
"0xbde78ed9fb95b8dabde79d55c92e119f0ca502be0ed08a0dc381f89ad85cde1",
"0x1e98a3f1c8e8f9a35eeac2782615c96e12950e627ba89a9ac0b873797d30107f",
"0xc0308caff3a47cc92f51163e05a00bea0517f621a4d69cb9e680c79577542a7",
"0xbb209639cdeae029ede39f912e33007334877c0004842f75035a7ee26a5e4d5",
"0x13ffc065d98f8ba997a11cab00fea19d1efe62e20f1bd7103de4858e210b011d",
"0x24ce589a99dd7149b8a0a25f95e766a44b081e5d475d17b7cec54daa028418e0",
"0x2ab971f8aa28d7fb11b7cedc6d85bfb947bd64690e6d6cc0fd9cede6ccfc1e10",
"0x1b2e15dd9e25ad8b2506ff8f0286f34d26254d2b4732cab5dbb713d2203ac283",
"0x1f1c3559f788fed19f86c71628547cd1d5092b0d30b4be4ea634b744923cea21",
"0x1c83b3ff9fa324bc9a5316f0a85a8657123a493a9b0220006ba1100a393919a0",
"0x28958a5831727ed80010116885dc7c66a1c245f6fcab56362c986ac87caee035",
"0x282c38627758b1648078b241bbe3557375aed2e83f18278ca6c962963297a142",
"0xddeead8fcccedced8e4d4376a2bc530466bef45054731d5243454ff4acd04c1",
"0xbdb032ee13a67d9c75df4c44570244e4f78e19a039b30f9f12c532e9b0ad601",
"0x651ba2f04803d5f77235caf50305de5e55431a6abfac178f524a5a01fb4f1b3",
"0x6541fd461b311dfcdc647b2c33e272d9a3733b5ff38c7e0a2cf51a65e22c19",
"0x32293b2b6e94545d3606b723f7a3149ff5d997ff1e8097359e0e0eb2444fab4",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x1e47d96559f3d9eb6bd2fafe210c31f4a8140b853eab986dc12ee2527613016d",
"0x1aaa3fbb3f33fb63d4504fb8ea859f4156ee20b59e198b531546e6891a2497d4",
"0x65c97f1a22d2c6561ed6b3e8bb68fbc299fa56e40bbb54d49e02ec33ad6d913",
"0x2ccf556ae01de7dbe15ba504437271b8a33651d5249fc5282b8cd38fd23ef378",
"0xab4b8237c68daded18da81c5a6bfb657b4d879d4164db2b2e6ee4b854f34933",
"0x2c3329b267d11041b788317f56c3fb8a685b69c0f782ab2213d393befc80f0b",
"0x22f60f1fbc046baeefcae40d2b7843cd95c8dff7d49e0e18851f7fdacf3a4eb4",
"0x1d22dc88706281f80405f66fb60fbe665639969df32efc6e47d33635da644922",
"0x1aaf58dbdd1a14018d33f48de1b98e6f7a937d81ae46aa5313e9a6ad886e7f60",
"0x6f13d3dd83b99f56b8d840e73d3c695efa8ca7a38a891c9df57fb945b8507de",
"0x2d7c3ec573e9cc8350964a20d0a2ec03d2e948a3f8eaab6d520406808d80576b",
"0x293a2e55abaf167cedd278dc3d355975bc1f29dc3354310f21f9ce01574b0d23",
"0x2682132e373c18a17f78601edeea4f8772240bfb889b3db93b2e8ea10b2270e1",
"0x301508db6c1f9710285b1e6e44d46a133310c29c28426d90417d7c21e4f0b20d",
"0x1834c2d44e5774a7e63ba311a3896fa595c04c96df216e3f04ed409c2de9b112",
"0x76c49e633f12eb93ba03d627acf0c95d1d623b6cb42f773f3a20e02f23120af",
"0xfea2b1df3510f6e74dc89be1a061ec7f8255cff0eecea778e1cca99becab586",
"0x19c3a8e23b946d64526696670270f49298ee4eee4402888bf2ad3ced11f7ad53",
"0x86cbbeae69e83af8d6af50cd4f161f345017a925318acc46be5cca969697042",
"0x1a8a851cf400ea4e9b7a51f0bcd5b636e7894d05f3e0faedeba662bf80e901cf",
"0x1fb9f1ed4cfe567b8183fb0f9f5edd26e8af56bbae47cfb6fb6a2c5323303797",
"0xfd5bdd425e00b499e57e34f19cfae9bf0396e405fcd9b4df234a73d15f96f03",
"0x2dd4591301dce89c25a6b690ce98e4cb6c5603505055f6c84e9fb8980cdd3025",
"0x11cbe00cf364a4bfa71c70b6a4b180724765a2a4cc0f31035e44cea45c1719b",
"0x1919aba9eae5d5cbd57d3851ee4011af47be08e151339d0fe9b32602d1fbb827",
"0x6dc27862b0c4f31489bd8c0c6e2a9d8e1c8d52284f4f381b88f6ca94495f798",
"0x1911c33355ced9c551e5aadd528bde012e913b283a67667f4f269675ada590a0",
"0x2facca82fdc63330a3628ec9435d193a47caea8fd2de6617d601bbad8adb0faa",
"0x168bb7d0c7b38df856af9831f4b1da200df248edab92ab41e638e6800c57252e",
"0x33864c3cc0a4cc3fc23c51ba07bd1f797a55394f4e0c39ca4dec1dfd6473aec",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0xc732637dd53a9e2035cb048fb5ac32b68613e0cd12f68a8b8d07fabc738cbc2",
"0x2b44e82a5cbaec37e208762b75b37d4ad4bbc4d83192241a4acb22383f26dd06",
"0xcf7e6a8815f6122fceeb778851d85155384796be9a1df53639f5d81631a2555",
"0x976401c8c12d415f389d4bb64621b71f225619dd93897525be9e8134ab912a4",
"0x1a23f2aa5a0ca939496eeceea3d7a9e386f641a248fb689682a8616ea98202d3",
"0x1295f50377875eea2b8757bd93e3543b59a727da7874e646cc3ef523ffcb79fd",
"0x1f4a65f81b3fe858fee5fe292da8d2594efc08a385f89dc60be97c9c7cbd0032",
"0x12e6d92557037dc2fc85c17c4148e9018fca489e90ea096ea7f400c74297a2f7",
"0x2f1e3906e4a5b87c714556abde45934dad466c1044609b2c865e5a835667b38",
"0x102c4d0a2eb569486e7c6c7893f6491c03626259388fc7d55b519a55e377a921",
"0x2c427c75876fd20b334a45663dc28359937368097c46f7b685eb6e3fbda1a6bb",
"0x12f1968b1e77f14f0f2e90f5fa44799cf2d5cbb3b77558d1493667db2ae55267",
"0xb8730598feb9ee21584d55d5447d8bb6540b84e40c7d4f14b6062ec02ae00c6",
"0x2e13857a53b9dd57a62a790b221ecd3d8ac27dd7ddf4f10ec48e680f1a17041b",
"0x86f9752b777f6b6260f53770c94056c12f444af68c40c75bf7396dc1ca7ebd5",
"0x144d5e3d11651e180a16152b3106f937942d48ee746f217a89db2e410f06e08f",
"0x27956794096d302fe3cec23f3cd713e1e4c7ebf7a9599ac1b3734cc032811a03",
"0x2464182f248bc3f32e7d5650870a79c371dd8fc8d67034dcfca621a1f1bc596b",
"0xa75f1c2e431c46447da58c4b53b5a707030003dd525a6746963b144c9a51803",
"0x441eb396ba8329b88880db7d7b29b57e7165262b02108544170278e444e11e4",
"0x1c271f16943c48bb48f4e2d178b77e4c31f22355466d641974957a5804e78765",
"0x209c46dbafa81cd4c62071ab840fa1f138a8289e87150177ce20c6f9942dff38",
"0x3002dc8c48624cf7f6e207ed3dc4656f6c6fd56f260c96c9362714d4cd667726",
"0xfcb2bd431b6f99702c0f6b220885e57f93fadf7a8d3a365aeafa0ceb1fb7447",
"0x2a74154c3f7dc063f12decedcee953b7e7d3d71dc48f867f72c8a75b5dc7ef62",
"0x129ef0b882070816acf093a88c660245a4e58261b307457eb99fd6c697f0ed7f",
"0x24f76ebf17e1a43056e1e4767cf4aff954b2f9fde49f05fda6c18ee7d2909471",
"0x1d099f0d638efa534bd9c758f9856a7943eff18350feb2d90dd7bffc48e80c16",
"0x2c9f441f31d9aea42026c0e7cd8765aed321ad391f4c869d87118b7a1107e94b",
"0x7af13e241cfaaec4578b52b9315b5017dad324fd69bf1a6a6aa79ce75b044ad",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x255345cb88354e31d381742d0d5b42072662445df9b98a247d617c92f27cd9f1",
"0x17e5c7c425cad2fb89e6acb07a2cea4bd5b1cb02fc04fe38dbdb341be1cf7d89",
"0x146fa4eb974c8faa9f821f63aca3727479d548d9f663f6934c1f458af3999ad",
"0x727942876c6eda2c90f98458ef4f4d6ed010e0562236f1febfaa72bd11a5fff",
"0x1bc84a56570ec875efdf985272b5df66c86cfe58a5be052d91787a8e3f8d49a",
"0x1053ebe1413b33bc188e06fe047235dd3028615fed58dbd6c1d014980ed7777f",
"0x20b12ab6f4bfecc04ee5c75f4108f2d842f004e84437e9093b15542dc26803cd",
"0x1ec0cef9e5ffc3472ebeaec671ad6ccd1fc85e2fa7c5e02e619053976eae5d56",
"0x2a42e9eca9fcaefc84ca320b72a0415eece1512b0afed7bcf4938985727b633f",
"0x1a172b2e81e2559ff3ab9b31a103e77c71b2e617bf7064f7a910803ef7cc9f9a",
"0x2f2cb2dcec93e9d768a5e77302b98fe0c291467a8bf3922e270123e45f06bc56",
"0x73e947e3b071d91accefd64d9242ecf3516181b583e27222d05ac64e57e61ca",
"0x201e11dd656c3292b05c202ea3916c78752b9a796fb97bfdb2fe67a935b761ec",
"0x12ba1b074f8b55da42206d4637431163a1aa6c0891681fd604ee17a7b4a4d054",
"0x1caf77967696809dd4e470183d00c935860fe2758b85ee6c6b8212eab0bad880",
"0x2e2c8e680ddec801ea189dd679d2e16c364bf28a69d7b79cb81842ee2469b8a1",
"0x29fa1929e7f6864a6c4856e9cb2dbf44d4c77cca135cee9eae611cb42d1e950",
"0xfa23e57bcdb977f185df4258bc1ac55957909e6613086a44a6581cd275a7160",
"0x2bd1a5ba49a19dd33ecc36aad236b0e0b4a03942f42a62fe825750889d4a1524",
"0x160ac4ad5eec95bc5910faceeb460088ab7d25fa15cb698e9ed17e1612fe2bfc",
"0x4c78cf3e48577cedb8cb5245a9607cdc9254ca8a8704f78d18db58f2552b2e3",
"0x1e9ef315dfdc99112d0e410fd65fccc9c7ac728617537da3e977d7afde414c61",
"0x2b4421616df11dfe94cd2b5500891f07eaf2900bdd8ee8eb42b0175be52be74f",
"0x8a13f8dbc82ec943c8ecaae0690bd0a4bd51a9762d670c8d059038d4259744d",
"0x14167eea5c641fb122863698bbf6897cbcd778d289c28685417d02e86db36ca0",
"0x1b2d84e924984926c742b426b7ccc5841c4bd193d3e05bbd5c5ed5868991741b",
"0xa14c4040634221a68633cf4f4622251ca34e42c9ae254eb7d02a7eaf1abc3d",
"0x1aae6b2f56d3acc7ed2fa5f310a29d4e54bdb4e5f531f68c59ca5b430e1f3f81",
"0x1c6bef1a7a903d4fd215a1754ad8f30011e676e498a3812d4f15d0a8422b35d4",
"0x260d34eb550364a018d509e831a281cb5b187033ecb4814ef42f240a5c1ea119",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x29455194183fea94109c945206f2c16429d01c0a34919ffcf42ac314a969ba28",
"0x11f4f3b6a1a747fc1aa22c66926e6511a4cbf6269f30c62f36f54b580f891a86",
"0x2df1cbfe1e9ff79c44eac7909de01dbee45e899e3500bcce8269bfca310c5d39",
"0x1e3ed2a6dd4ec05059b8dd11063a93d0b6c48226115d09b7e58d6d0f620be4b",
"0x235eade019a1ac892102280841960624b179b82bb21f7a571cfbb8f4cae5434b",
"0x1063dc692e42acecc27654967d85f8c3b48760c3b269565f3581c30cecaeb6fc",
"0x144c087d0bba6b2651508013332ba01ca36cfa926efb37633cc9423e9b257275",
"0x8dc44909d34e4fbeded6e5b8802fcb8ac3c31e0c2a966956ecf0cf4c027eabc",
"0xdbb16e5b88711eb895a12babfb81dbedf8de29ce530aff091a3a16f9d363468",
"0x2bcf5c9c863de574f3fc6dd7e35b84d333faabe43e1d6cd827ad58061476fbce",
"0x13cc6568623778319060d01c7e7780d9ddf3e6fdc11dbd6e0d1daf61c0ca5904",
"0x17a2edcf8bf40ac243662fdb41e4156e987fc66e00d5077523caf74b970cecc1",
"0x193dcdfd2950a934cc3b92c1b9e826a11e6829cdd6bbf699d702c902c9c8bdf0",
"0x1f049cb7d14ebd687ac611414b6186ea76938c1d239f8bbf5f83972b778dde5b",
"0x4d9595ab4d18bed55ef3c3fd0cd99e829d8e55b8c101df09c2acda3acca9af5",
"0x11a10e1656c16d3c53f889073d9f910945506af2e029aacfd7223cd45b457f23",
"0x1c84c1b888ff8d6396ee63866219b3e1d7473ade3c14ceed3c1fdfa44b51edff",
"0xf5531ef3a85171c99a9927bd9d1cbe04e84dc94c7ac68c06004d99a391ed06a",
"0x6ee08fc691f0b4229dc871b3676f380042f6b7ac1e5344149cd7d64cc9ab46",
"0x237628e422a57b51577905847eec949cc0938adcda2e97fc960492898d0c8d4f",
"0x4b4e368d0d486b2d4772a9fb808db251fdfaadaabb59a5bcc20c97bfa38ce7b",
"0x2a0484d90b9de4de15deca9a4f8795a61a8cea3d5eed0e938bd5c2203fbe45c2",
"0x2cfa30139fcfe50e07673bfc8029dfd08f511118dd4a4bf0a77a7bb3e1e894ae",
"0x278fd68bb5971f9d8b52b9e924814f3e07af8931796fc2b5d09605eeeba95c3",
"0x24ea4315f2dfe3e361e0ec7213e50dd9b25ff8bd654d83f6d26ca562e2a7ddc9",
"0x8612599ae2e4a878ecd88d9194ec5ceedd16b40c51e6edae2cc43f5e94a2534",
"0x2003edf69a810b8a3eb8208b455fb3a6e04bfdfa7f6198f2a0475312da1da37c",
"0x1ed96d9e0748ab37d6984b7be85b6c4342d341113d255cbaca749da545d34981",
"0x24947686594e925c8ce4f919309d5ddd789f62d268e7c6340022fe0d45a8b816",
"0xa42b268cf646e69a84152d6323e1eb318392a14827ae3241981f6ef34173e",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x2c16f80293a1d647de56a4a26abf5cb6840e67570999e804d434ba92326b0758",
"0x10003b7c47202671bda6e5bd46c2564c634d600e0fb23f898d73a217eb1f7cbd",
"0x8f99c641f5a436daeb9e269146b505771e8d18f847cadd3028c959e39e47f77",
"0x174ecd880d0e89617db1a52d076801bbddcc8f63c753467e7e4b7284f9c065c6",
"0x124823019c96feb400979fbc9e8b3ea028ba45199a99118e5be4885ea25c594e",
"0x1476f2bb8bb265ecee769b8092d9687ce6b822ea2d4fc8d9aa75927be24bd03c",
"0x19dac45643cf0ec46184ef121ab7e9a1c03707c7aec4620bccc80ae83d4ceab8",
"0x14674e4b8eab3fc1f80cf57e344d0fca2081743241898bcad999dd7939cb9b7d",
"0x1ed72b8e2da7a2fd16d8accd8eafb4cbb51c59a9d05d221cc608f74b7230358b",
"0x1da5ab440f2cdb9bc079ecdeceb673ecd86b906ffc33509225c6364ebdf4f9d6",
"0xc751d0ea79515c1ac0584876431dc1ce6226dd8420077d52dcc644638eb389",
"0x6a9dda83669129d53d499be9d18471ccc3decdaa7ddb14c4c19981f7937033d",
"0x280a6226e729cc5a5fef6b66266003fb72a99a97e1985f9c1b2f3d6e1c5f4696",
"0x277ccb7f226a1920bf5ab883e320f05c6edb580037be022f9a699079c9ea1501",
"0x207e4c2a1f9d4bfda41396d244cbc313a5a5755ce9cb8780f6a6cf8ff67b090f",
"0xab72e9f2261bc7dacdf730b02c9772d67b34b71c154f06480e2576995ab7fbe",
"0x26dc9a65057fde68cbf2b518e47e52c3089085c30015d873da81924ee8117970",
"0xee4ec60b28b8ae1bde8ab75521531748078f397b9914ed1d600f94f65edb2cb",
"0x26f7aaca92a139c5e2a653e9ebb132aaa385aa192ed9e1702b04f2c89d9bb766",
"0x2d2f1c2e5326bf8b3439310ed43a8721d8705e6d1c031af9facfb15f4ff8de85",
"0x1fd6ab80e45a94d9ee539f3247f22d8fab16026c5d0126cc5570514599c94b22",
"0xf94a3d03ba6eb3cbb84ecbf443474976b4b610b2c7e0be7bd18ec026f26833d",
"0x9fda6221cf5e2593d796d7185867ab6576bf2f79813f55b6a1ae9a1fcb3437c",
"0x26846396de6a8b113b784a7dfb9c63b0b950a69a20e63634954936f520470063",
"0x19e400a2ed9606a0a39041bba22cbbeaa8547c89ca0eb006c614b5d6d1b9e0aa",
"0xe2a3a5f42587d60aec0abbbf38902fd54d392c4cf26f8359deeca160061a02e",
"0x165836d2e5f94bd9868ae471de1b194fb407c3c27a3b322c956f13789d95fa23",
"0x2bba296744ead7cb7fa4e64b0d9854814e303a8a685433053ada126285b12dd2",
"0x1c42b83e0bf8cd6e2072b5602d85f5161ba6cc9aa752366791cec9eee1228510",
"0x2a8345e521ad75f61773023d905bc873ae8754b28c0273063d4970030cf6afd1",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0xdc769889e4e60328ced67e231f45e241283d9435602a724dd8d1f8a709ba50b",
"0x1002f962d594a9b3a1cf2dfdc940b80a6b67d3fc3148be7c0d11be50e277f1fa",
"0x11604b56f285ee9acad757b62e0a8679ec868a468c6715500cb84e72be72c7a6",
"0x2cbee753288f68a90a3c4a83783d30862b6e89e21ec3ae112af1b016ee9445ce",
"0x2df869ed85aad1cf7a17b58d217df7738c29e7ee5b0d254c1d4976ab71916b6a",
"0x52b2ba2fc76a7c40e4eebc062b1c353e2c7af8430a11222e64b8f1c09e57b69",
"0x23446fb653ba07d93115d3413ff7c9676f57d1e17a08329c153eb0e89d3e303d",
"0x11f1fad8b82ef8c047feb379042297cebe6f2a6d5660e7a993f67fc10e58adff",
"0x17af0f2c5f514d29665cde2023d8662f453954101bb66e15ff582604b86147a",
"0x11d7ceb7a58360c894abafcafbbb0b08e302ea940d29f5c403971e7a7a014fab",
"0x74ad08dcce384bd2df324e56ae0ec65f035aa90479bf25d940ae94f25bcde95",
"0xa9e0e2b8db72860fd3308d7982d4c51766d89ccc8939e0087c3fc1e15d53558",
"0x10053dd72d3e24c8040482217ea6d61c3e419cbdefe8709bc58951fd2a0711a6",
"0xb8feb7949a8116ad1ec2cfe47910318bd5dc9e54ee0caffb08a23e4fa0ea22b",
"0x1b3f78f18b178ee8df4bad8cf2fade21d1698ef13f78d3598c44a063fefdda25",
"0x15af1e8fd71f0799f8c7dec891c12d89bb687b8f14d0f12b4a52084bd68af74d",
"0x147d419b1999d7896f7f2c9ab68937f4e1ddf75ce3615b51e275a33e5fa8fe96",
"0x28b7cdada2f2cb2b1ae17064a61f03b36fe64faf9db752b7470da8398a1578e7",
"0x2163e931b6d3e6641d34369bb808b3745c1003771dba9dec9bf9d5fe24c43577",
"0x1fe3bf03ba1752e0d93486397e28ff2a9350c56abb949f7f6a02575b1436636e",
"0x2ec24f69b227550297bee72b056181c91364f54f9cb31e0b14d38fc2ac37f147",
"0x98d9ca655e17d9af5fc7933beb8f6b100d78644eeb19c1e7346bbd6077fef4f",
"0x2e296e61aafd6d219daefc2b994d52310770830b5767a3c8220c2f5251e4d786",
"0x2f6884b2602c50e4cbdfb45ed64863dcb689af3b917fb10dfaf9cfa8307d112c",
"0x5e81ed97199a7c32f5844b9e3c48c60dfcae2e703bb19855260479d6556b63",
"0x7b3281ec445d3a58654d72a48b86be8a10380910a57602460c91e4efcc812ff",
"0x14e55ee2871da3b1e051cb0857adeaefa5e9101d9b5d7623580fa70cdd041385",
"0x53f6a1c6bba5a4ce92962a6a23cdf21096b5c1c0652444a52174efaaa6287ac",
"0xf55c1add25dc95f9602356a6ad006ec557378a038b09d9f46daf00b359d88e1",
"0x302ef214c4c4e78688cfe22c58544d3cb8888bac5512044709e1c56fb3a6a513",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x1e97abc82dd29d2284a66edf1d38115a8cf9d2316c79b2262afc5a43487217a",
"0x18c844b544ec0da670ba7fcad86b7e4cc3b790c3269507ce0cf608308e63d5f2",
"0x27e894e463d2d999c5bb6c29e9f5573603b4e3f55fa4b1eb315b0664794a8897",
"0x1ec3f26b1af76185f0de2d894157ddf696e80aaa3661e94163e9106a9fbddd3e",
"0x22978d983a255eae6840d50dcf586263d5a0afd5b8eb552f720cc0affc8cf533",
"0x1618d7d7b6d7ba2dafd24690ada4cfa7ec3e961f395b9c7fbf7d76d0dd837125",
"0x1df2e4ba9ba44ca6f24877919be6d84c97a6f6cc318c7297d608f1aa4f050848",
"0x1fa6c7cfaefb71fe88191e62ec1e69611c76c503ca8c6c2b45e0ae286588cacf",
"0x2f00266e50bc17514d27873eb92eee8038696ada6decb01a1138f09aaefb625",
"0x24b0ef6c8ddd8d74acd34fd2977a27c6e584febb5cc1ed119e43333934a5efa1",
"0x2eba590f514eb52770d140bbb2bfd1909fbb0056559a5bb18fbeb72f9bf1c7e5",
"0x1c01664f520b12562f93bb93f40874300703ca11b39eb1e8bae9f21944f0c4a6",
"0x158c6e1a418426179c9216cf35095705395180c264802302c2b5bdda75b4a4f6",
"0x2609db7fe10c939e0289595aad97807442c4ac5b28205bb6fd6ef7bfcb55adaa",
"0x68bca148cf00ddb73bcb32b580db9423292a3d0ca547207c281222c5ac64f05",
"0x17bcbd81a901026df975e1a27ca02b7db2b6c7daa5dc0fc9a7d71e4210c16715",
"0x2dfab84b8b358320cfd6fe1fdaadd8ee01d4658d701376506800ce70020c680c",
"0x120819aae37b3d91fc8c0babac388c536f3f091923ca13587c8fc91d2c27a9c7",
"0x12313b69bd606ca46c7008f6f4fccf3ddef09743f311adba1200581089985509",
"0x11e9b992c04a4ee4586a62142f37868d6535f948e89ebfc54151c61e1fc4378a",
"0x5f557dea69dabf8f49032a07a021b292a4cd73e51dc82f9b8e4d96d82569a53",
"0xce2bc653061b09a271f64d5ac546f7b2f3a270910f2505ed186e11b0d4eea44",
"0x195b61bc0d16c176128158e7463b3e3ee0df476d31cf641e297c8cb9f5d6368f",
"0x1d0df7d7da33f468a43a413dfd4e4e188385c6c87bd767486c4a4a6babcda2cc",
"0x13904564817a3bf9e98b1a21f1f360e5830764da4a300f059268111b51b0b761",
"0xee010fca95f45250a5ce94a89a91fbd64f2c118e2755127a562ebb00fd27ef5",
"0x279d86c488716103a7ec21aaf9d2139f72c7f72a18eabfd581ef619e0c3b20b6",
"0x11b803d7d692745f2ba754f16d795a2c51bc5576576c244edb6f80cd790dd8d3",
"0x3d093d2500c614852a3802e498bdd965dbb993e8d07397b6ccd9c3832a0907b",
"0x16652d5f69932fa04272068446046190f9c83f85e9ccbcd36210c5877778f1b8",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x2959b7c18c774ae5de1749af01c678a88eb32215afbd962a0561d6d198525e79",
"0xc26abdc5e7b095a4e2237c872e90bcbee8a10618572ec9aabe2d7b1a377d6a8",
"0x17303e79bb1728eecb88e18d8b7db784ea1a70e4eed67e7f9e6deba761b863ec",
"0x8f1351b765587773fc254d4e9c6215178b81698a6e1332bdbb16c5626879b92",
"0x24587c5be08773ab2fc2250421c4988b332bfc432cd4e283fc86de3882b7898c",
"0x972bc46f752662ec72acc9851fb74ef8fa89a03f2ceea01849ea839f9a80d2a",
"0x185382531567193bffc137ce0a17f1f087da191bab36af539545a6929b44697c",
"0x2f835f068a500a33e6b44b3a492d8f09228c2d660f84558123e6292e93f906b2",
"0x159abee658fae6ddaf7329b5f76a81e713dfff71c438f7e678a5b64365285949",
"0x2ceaccfe0874e534eb39a86b066ca9b40e25793df513a2e1a8edeee8398489ec",
"0x3e5251b721d2cd67a46b4e7bc90015c36a1134a8ec5d25194d5c7c309c0b029",
"0x1018c8b0a3de1c528680503ffa391ed74fb1b89e3dc09b140f7625249f061249",
"0x2c0015ecad1833f9b004d902644feebfde2a27e50aee9da314e4e7480a1eb9c0",
"0x24feb7104d161a328cdf2dc7c125422879578cce893fccf80e5bb265bfbe2e6c",
"0x2944d98697f7ddec78e5165cbaee2bbf0cea6359981a13c27bbd17a60709b7c3",
"0x1eb6e93cbfd035bc4f79bd6d32e25c05be28216616655908dd394f8e4beb0c17",
"0x15274c4215b3498cece507e5a9c78c728a2927ae24b72d580caca25885158c01",
"0x244439d87914ea7af64471c047d1afb3ef3e4d3eb41afc5ff4551e34e0b2e03b",
"0x7c60d6d98c85efea799c2d359aebd1cf865015712f99f6f5078776b44455899",
"0xb4448d85c58321886de5cad02508cb079e475ad06a5691610848e530cfcabdc",
"0x2d385f71e742fc3698c688df7df2ac0cd06bf1eda4db74246d5b3ef234d66603",
"0xc3c7aa72581cf03932ea40da64bf0454b26ca6c02b25798eaaa3ee0893f1479",
"0x2f4091dafd791bb3cf7089c8e714a34bbc2f5fab044416870a1110bd68da326e",
"0x9a9203152f7c7a322535f3c2445dca0be8621df8f0c9bc63a8e3654145b2388",
"0xc9944612dd0f8e184d07ec5a44ca257d67514ac9ae15e4f5be49b6c0356915a",
"0x465c847c7d119bdefe896bf452c77f78e124ee0bb245270d21ed2bd79e11721",
"0x1725856f51139de9097ed3842a414f8e8f63ea6b9e6414e5eb220842583af5bb",
"0x276c1b109f88cc834ed8c2e68672a592250c6cbfea5f9bddd0834c5563f9a886",
"0x2baf5485e19edbc5772e04a26dea28931742966fdf39011b1c16f2832ffbe3d7",
"0x2042b1e0d4a962b95c5dbcc044fa0ec53a00e8ad677a6dc39e36b41a016eb036",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x1eb87ed83839103c87434e39c910399447d9c63134d442335fb3e226f84b47b2",
"0x80a226b8c5b7ae68105818ce707b2441a0da70860d771bb4d58585ea1a62866",
"0x1b038c8d59fa36e1dfd4cca8bff7d38b6161bff01ffaad9e95e3c8591174525b",
"0x2ae9c92470f8f4d5ef9b96d9c1c235c46b5ca275d4e08dd1d193abee581d763b",
"0x21fb57daf9b4cdf828d74de7723985b3a1b0226d90f563ef1cbc0d9232fe3429",
"0x22bfeba5a5a36cd515fa31b9da51ef26a15ad6050bb42853f59ffda0277a99c4",
"0x20f3df888830ae894646d1166204af05d9817613c719cda745c09aa141590c02",
"0x63b2355acdad1a0032a2f2c7a2ea5f307e3c0321d261c9d7f5fa10934119f28",
"0x16de60437f4609882b9eafa6ac6ded955b8225b0985fc4e3983ea640add5028c",
"0x2ab849a10d24540498ba4c7ee7afac4ecdb81e0083fb82ef56b91d025e33756",
"0x25d60a27489116c12d3fb8af52c877f5691d57ad645946fc4dda53db186e2c50",
"0x1b1442dc351aedc7917b1008bbdc4a05d92e4639e7f3af1b7f8c1efc9bbc79c8",
"0x2502537d03523d64eacdc4da240a03f6981a89c3f3352ed51b95231d129f6efa",
"0x1b786044b15312f04f057fcb32f799f0176237a9e5c70bf309a9860ab90fc724",
"0x13aa1eb0dde09e3816e83ef9027b5b12fcb298f469d8523b588d728f6fbcc841",
"0x15d72e8723e077bfbcd6fc983a47dc7b580681f0c4c4225c58011bae84f8e1a",
"0x1369471512c4227330fa0c25299570db00e2db62554fdaae3159988504703cf4",
"0x1b7142089a165fc6d053090f4e2797f7ebd8faf20861604b3ca39ffa78d8fb6",
"0x65028c49121ab4bb6dd4b70ceda8065e546521a801b3690d836602df5c07a4e",
"0xb0c93a4ca60bd6782440a3ed7ed610e4ae11dbb6d73cbd43bab80e55c0ef062",
"0x538fe578ac88710d6dd29a5916aa739c9a9ffcf0f692b1f03d0e890a26a7ae7",
"0x2aaf085390a5682425de02d9feca6b1713d016d1682042a9283f70b773eb8388",
"0x12d3a3b814c1bbef754dd237698ca763867b464e9a81d9bb031ccc91574878b2",
"0x24fb699b2d537bd375a53a4cfca82569a0f7bf3417e1d05c2f0a996c5e85eded",
"0x11dff9e9c33f3786c5cceec919601c95a9569a01502843f7d4ea0a7078111ab3",
"0x261e407b0cd0b43f5b9e5c229e1372500707db45aca65d3c28421a3583367e4b",
"0x2351bf0327b143b2094e336337c156efd6dea461b8c2d23baacb18abdab7454b",
"0x1ccff891ab723798b4de646bb5ad6d3e3da5970a79a4f25dee25aee7ddc543d9",
"0x476e4b00efa019c97bd3cf545fe7a670aac04ebc418c4937827ca368ed3cbc2",
"0xc1e697b8e69d9e6cd15a5b7e2d446038e11a06250f693e21a7ef4d9ee11e53c",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x1a09d2b7e646521dd535d06cb8c4de0a1b42910ea066edc264f59380e26cffe9",
"0x17cd99a103a4adc1725b545ef98b3cb45b2bc761caf0eca510891356c0f6b6b",
"0x6b9bdeed92c495a84a828dd539be8327529a051131bea1a198bd849018a5a8b",
"0x8680012993a07914e68e1df59d14f13f130cb8c1099833fc0d2d2d11fb311d3",
"0x247b79afdd0a99fa80e82045bf81474ef05d19174b15ddfb6a5eaee7d98a66a7",
"0xeace989a2a643839e86a96e5f8a1e99e868ba1becec4171ed39c7bd2aacffc",
"0x1537fa1eb45e0b8dca81475c350eb64701fd14bacb0a2948609c9fa1b9d57fac",
"0x9ebc426effe66fcd5bbff51e0aa1f60385dbc0c7feb0d9c6f4fe06384456ea0",
"0x18467be5d0a4e54aab055cc7dbc4f876d56097c5eec5b27f9a15264059b0eea7",
"0x2dcdc0099307f6a54c05fe4f82494e0611c4909ebe6643697f44ac932f533934",
"0x3fb3d6990d8e8da405a112fc11f9caa56723a2f6093e1870a866c21d2f3433b",
"0x7903dff1ca5b78cd6e95e1284f7a87002f00a81d612f82842bb2af82fb850ab",
"0x1ccb172a7b0f1139bc8118dbba6bda8ef321cbdf153a4db826b08ad2450cb8a4",
"0x231cbab35a8a0e9dc999dba368451cb41d7456f2cc0481a14a2a7d72f201663f",
"0x1185df89f8a40ac6098d898334d0747a5b3d0285d41e2038e38712cd26081dba",
"0x2fa064d281be156cf97dda9141c6ac20d0e19d85474475ee359e109bc25a5670",
"0xa2114ecb4bb88293eba241bc0fc4a3b375da6aba30cca76e84810154a093044",
"0x2bd5621d46d2dcb41cd8f8a22620ef625d6fcee5d6d507250d157b39e469240b",
"0x1584517e545411ec6c849b82e0fe8cfe70cd715c5a657d78fe4dfa92cf690d64",
"0x612bd1a5329c91f6c6f6c31809951e143c4b5ecf97e2ff8c6b02463fe29ae6e",
"0x26d3d348ee74cbe27e5a4745e738151b3f61fbaac3ca334b1c6f0ee18a763294",
"0xd69c097ff13bad16f04826fcbc91eb99221410fdabfb06a04c69daf5d0d46ae",
"0x19df85abb6034b86a237f3c2a1849853eea70da522f725111bd78831a70f29b2",
"0xb67940a72701ac24d81e056c7ad73e3dfad45f6c1147693e8e56ae8759c75f1",
"0x2d067334ff4cab892a24cb40846b591176ac47451dbbcde9cac1de766bfd225e",
"0x250e8bf6d939e2294f6723c8b2e001809923b7157ba297cfe107b8220cbfc006",
"0x106265f59a713f1de605f071461cc7765c6eb2ce12b7494c021e07b5e0b0a121",
"0x268591932728ffa445ab526d9cb60f6a1de6c10e244cff633ba59b9bdb957e04",
"0x28a264cf3eeeb2d81d4c1532e63e34496b3500da9e62fc9e8070bd5967c5b9f5",
"0x2e289ec9d9fb747c577898f2104373a49adc00a51974b8fb1c63793f22414f2d",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x292cdc4fac941966f3f2fdcd0b64ced5ebf1766246e1cac45abc40423575d9c0",
"0x8f9166b886a64e24bd5cb9f5327942cd66aefe8904bab3ea68f1c93da72ff30",
"0x1d9346b55cfdbce62471674a48c93173f222039ca540946df8cad8f1adc4abbc",
"0x284445af50c975330a1d48657b764cf7b19c8b5d8cfd72bd8cd1aed812458804",
"0xe5caefd895dbae4ac6d9a50ba9da1fccf2e99182801e50def13f656cc52e823",
"0x2c549e8a4cd3cb9c925dcf4af0af39cc5d419957e85a1734fbe0cd495b4e6239",
"0x2f691c2890ed7ae20244dd12ee9fac94cbcacea42bbd323484146b83beef3964",
"0x189c18874e9397abc281643bfa747739e2ab4f51c2ce1c64d8e0f6e0f65f065",
"0x2eb6705a02c7da98061b74e10ca594d9fa85f2e8a76991313d2720268f65223d",
"0xb8c7b073c91922a0a25ac24de7c5781f5b95c1d29676b097409380c6e4f0d2a",
"0x2b254c1c989381315f1b091c685873377c05d1d40e3d20d41f56506756ce5ce3",
"0x1f9e68c2a44b9a206a5d1c428c27604031de91570926a23190329781dda14dec",
"0x107e82331d1a1db3aa814c0e3854ceef0db0270c842945e09b352cc69e959fdb",
"0x17fcb1867c52d50eff04a137a183d3f0dae94b5656c8818b4fe024b7a343dfda",
"0x263f802111aadcc99cc129d051f90acde70278801f4dcb1781b744c208b6aa52",
"0x27ecf8ec238d8089ba1393e8bacc856c9b4bb554dfa37c89a6d6bcb0a5954c9",
"0x2aac3bfa20e64a0c0012512611b5460908616ec7282197ab7345172daf70f421",
"0xf822bf90a6d6c7e046af505fa63c58152f880dba55cefc639313d104a99435",
"0x1d482f74f7352cc3b1e07f0c4e0ca4685417ff468574b7694f6ff7e9b438323b",
"0x9efb3fd5f2af95e1269ca6e40bfdecad8ed10297b2261e7a27cfa076bda8348",
"0xd70b85544585d7520bc48048e716d4bacc8a357c3efd735e10376c3a68e58f7",
"0x2a96c2d2c57ff7ff8a1fee90d4f30a427c4ee5faad1bc0c7640dd2628d7be337",
"0x467014fd75c87da4bc08542150237dc948da566956c03a7734f8aa3d4ce2a0b",
"0xb26d2f933b0b528867e896f30e7045af1f496d73a13e58fa1456f4aae1a911c",
"0x25d68e5bef9420f64c42a4d44aee71b216ad9054d968dab70bc5eff77556c9f",
"0x177f027b0cab57291463ca56e3be569fd5579d89ebf5fd528742f123718a79f",
"0x2c5132a44be83d88879ea114016e67092bd966a9ba0364ba501fc05b63887493",
"0x14bf8d2e43f7d1338bd93c4350007077fa9ec02ec8e64e03950d17efa18711a8",
"0x309414aa73703addc97561bbcecee45d25f19b4591dc6d772fcfe0801a85f30",
"0x40ea41587d4a40b935571880dcadf45e722e4273f0f2b32dda53e53e70a7a87",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x10b0d37ca26e90c6c139a01ff17861c46ebfb646f348fa543a44fa933dc6c7ef",
"0x175da5183f974e9606eb7d7e22cd12ae8e27dbecb9bd3c4c12b3f6ee0f7518f0",
"0xed8273a2cea837930a2c09a3f7b24188cf44b7d3b2fe41b13e03bcf26b925c9",
"0x1217c887532e425c1502f9fa496dc792acbce0cc79c661b16e4c35009e7d84a6",
"0x1903752f1c798c095c24ee714d1b8124a4b4b14d2ee2ff49ff7169ddbcd5b4b1",
"0x2803547df88fabd669511738ffb17cff8919c233c053e2b10d01bb398629deaf",
"0x4ee5ecf2b925246a34bfeaafc9239f9a5f7277fb1e39131900b432baada6dfd",
"0x4c37b33555c362050a25021d96f000d1a1dbc15c9965b2536bc4ef59b52fe8f",
"0x1a68530699df479a39fd71d5699898f91c440b61d7138d4c95a353ec2a60f0a4",
"0x62492de9362ceef05e663b2e14cfc1065415c4dabdca0d4b49b602228ab9aea",
"0xfb5d4b500ecd21e402496acd0c39a0ce6aa93741dd846628387324004b15dc7",
"0x1747b55b705c98dbe7c38903fca5260a313fb1ae77984671f6c2fd594bfddafd",
"0x2d5a953c65e21d277459d6ac17330055536bc85c49205e6e75cda3a58faf9b2c",
"0x12246b22f19de420b776858c17df7b57d3dcb9dc48a34167b9b92a429fd7a403",
"0x1133d3224669f992858632b54a9a2f3cae9a86979684bca621d21fb8a7a84dee",
"0x42c7ff4112c72f96e2a90a37d0b9755a935d43ada317de49047e45bace9214f",
"0x20948256d2882d787bd97ceb71a8f9413ca287382dead6b80ec8511a0f820a94",
"0x1a3624b0bd43a88ac7c7de460e246ca48ff71a5a23098ce0a713ed4cd3b42b7b",
"0x1df0dccc539de543bb1cc2f5a0747c1a1d39398b7e5d2542ad7df388cb9a2c1b",
"0x21dfd5ed89c255e1c584093f98d854f81cfc58f92674fe0fe8dfca8d7c1c70a",
"0x2161ac36dd50d34ad7ff8e2af49bbe1088d3318678e3a8d8e0e0b3f430d55d2a",
"0x1ed3cc39023610359593bf3e49a58dfbe99ee1afb33acb553bf08012aeac1747",
"0x24c8d8944de112708df57b28fd012d576868d998ed87276f7192f8fe82044fbc",
"0x183fb7baba3d12e905bb7184ef691982c1dd489844c06e9f7a048793c46a3b9e",
"0x67c083da1428ce521951ba41ccef834d99cb41e8b92a4c4cc7ce8dde2de4adc",
"0x1a18a9c1c45e95a541ac8dfb96cf2bcb5f93ceedd0135bde9344813b3b5762aa",
"0xddf7ac0878db5f4f384ed02d5fc90adf7215e4c3bc57d37f4c27ce4379db9a4",
"0x2adab562b4f7991948d9cebbe53a821fa08c96b9100b17a92d2ade4032f490c5",
"0x1f36cd6e66832646861d1a44378f81777cee66ee7b66ffa4466e9f9827d3efad",
"0x16c514bc623520a3c63d724ff9f8e2128de3a4e93ec26cd60596d2b74cf90df3",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x276235e6cd6b4ad073433414a39f872c42ae47d5caff6a0fd2b11db226627d13",
"0x288fc36fe0e39bf7f8deb74d5edcc5d6ac0b0e13f715a911a696212c8244cf30",
"0x1f6e77bcaf2e10160d53e81aa4bd1fb9620841cd7cdcf5626cd1347714f1790f",
"0x2c50c513ccdbe60dd9d14262db601d085beb529f9f9809e734b12cee63ad60b2",
"0x1048a932b87cf43cf61b9fe7d5e7824a9c0be2d3d8a6927819a1dbce4de7594b",
"0x258802f01620793e2b886ba9978721882e6ede295ab05ad492dfcb56055677d4",
"0x1fdefe23f71f9c4e4b5a27bb8c5ef9e97f8a272361f8e6ba93334d5292ab1c4f",
"0x1f46592f6d4c77467466a48358c5c195e12db247070f684bb30caf332e050b15",
"0x1a0628c0617ed94340450e8b212d19bb6d80e0c336a0c73ebd489718d0245512",
"0x362fec7e50a9ebf5cbc1bbd06320a44839f3e1a24c6dcec2cea98dc2ed8958a",
"0x1434da4216548b811c240f289b634c70bd0217c2c78d3515981a08f0b4228a56",
"0x2a5a298ee338866a51ab733cd5d912aefca609abb924c3b91334ff31968db1a8",
"0x2fe35de4f8239cb701957994cb678fa76b45ac2ca62d155abc6bd0063d8477f8",
"0xe81871313b59264be15b4d24465ccdfa520f1aae5e34762e48814c151eae20f",
"0x1dccfa84663bd168fead0d648a7024cc7f45de299a1552c65c9aee69800a21d",
"0xddcb95ed4ccd6154052d0399bbb3eed354d1348a26e7e3e3b767f888b7fc1c1",
"0xbdb5ed04d13305bc7abdc9a1f72a3cd3c325a8d5d0b37b3f6bc32f5bf2bc30e",
"0x1a3791a5d480f586e225f6a3419d92bc7c93d3c2c941e201aba2db0db9f15d73",
"0xab254daa5ccaa47e3ea7ddf885a32e8192d280ff8b96254036f22562e3280af",
"0x10d084b180585ee9000d1537f77b4d6d3befba3b2585edb286f9e382257acbd2",
"0xe99d44a8d7b3633a48109e8437a866139b546ddc3a43911413edf9c0abed951",
"0x1abb36484f304e28d2b406edd5d4232f52246a2642bb87e5e8049639a5a7e48e",
"0x1f24c896eadcd0d5f6b1067845c87cae3897a454e6093fc062b6e9fa9dc327db",
"0x1f8c613272cb2e0085c3de18d2c0063422bd3a3f7b34ebd39462a54f96690dd9",
"0x3f8600811917a21e6893b3147b75a987a7ad447437ad24fa472b3016129f86a",
"0x21268f597b84752db51be08a3a6a2a8b1b2284d8b0442b549ee5aaee395c020b",
"0x28d3ef83eb355a7d306caba33c70e6e86900ba153ad61f6b8b41ce49daaf52b",
"0x25d200e83b7288530086b690322a530ec8b502505f3080a7a46e6e822ac90d2",
"0x2a7f6b2aebe3142b2662d473a358fc1bb9d816498b3c2edfff86866e2ac00082",
"0x299afa0d0121fc23c6d42fb127eab14f2dd8ecb1ee0c04376b9c732e97a5bb71",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x292e5deb4d74974e5601e05fdd2a01a57ccfce1962e3f12ffc47ecf62cccddd5",
"0xb7fe07627b2b86b9e560c5c6058f62a23b9cb416af6d749319a5f0a731e9b99",
"0x1be04625c4aae2000e9e13a7959133e86b7888be0de9c4bed8431578d87ddbf6",
"0xd6b21b10daf3f589d71fb89c727278c0cce92db0d4b058ddb3b23e379fa5c7b",
"0x208f14de82a7cdf5b8f2d2c2d77fe963748847574dc8f168c53b1dc68674daed",
"0x261b3202a10a92f8f818f5c9b768d891b3fed3ae03b189e5a743b6a2f631210a",
"0x21da24b99fc179077a9f8ecd8f3ec7a3a6d4e8c62c3721f5a3f4a12fed074d91",
"0xf821357065851a94b6fc9d8d679679a05ca9ca81839c786603a98d92cd3be72",
"0x146cf2ddedf7045102306285a0322a26b9b312d8ae0d5638e122fa42221bd203",
"0x1f5595159d4bf74c70466f5a5df27f878727f037c6821bd0b4a16b9a1f9e22e1",
"0x2e555ab81d4af50711a229745a65dc974ecbbf16d855767d3ee973f261c6958b",
"0x9d88eb8fedc6dfcad4ab68ce84e1bf329725e89adb094aac5a25e36f8fa1248",
"0x5becaddb686664747af21bf5a5e4ddcb030a20314b123c58dca055cc8f47200",
"0x2b5133b32b578393ff342e4ba0169b60ad72d1082fda97c4b696610dcf06bc50",
"0x209f4bb986abb2671c9ac555ce282948dd3ec049e67812e9add90f3d83d62346",
"0x2986e1901bec371bcf3f2bfadcc34003a901cf3c6c8fce5a86715bfa70dd05d1",
"0x36f213f560cda1028bca7da534b8bcebf84ce7b4b275d873de14b03fbb8ecc",
"0x220d1b8cdb11be75d11b27932ab7026a54326b5b340ab065e1e4e35d26398677",
"0x1fcd7370575ccadc60429c962fcfd8f4b3ec9614c085d1383a943d7e487c4e37",
"0x1c49ea5e5ab4635be0cc07f0d40a8f6bf68622bed5daf5c3aae2a2001d19cce4",
"0x2c33a36c54999aaa2e54efe70048654f4d8fa8bf7001a8c92d86cce2077c8f26",
"0xe70e72a3a3d2e267a2b6af5dfdd55a25435c6f581a46ff5fd461f08d0e9f7dd",
"0x6cc0728f4993107d1ad1cc3c083d7f23847df303de20d92b5ec90ff8785e8d1",
"0x14adb5029eecd4e65bc58af84408697c8591fc5f6f74b6cb8335e7766a93ed1b",
"0x55d9943e138d24cf72d400134a020e38d4ffab9f52f85610b0e5e678b6ef47f",
"0x24659e5fd5b9d42642221039b404c0940c7a560dac0e780c59ef19df7fbb1134",
"0xe5d9ffb29775cf1d63fc54110f1e384ff63a353331c2935bc061eb0bcef7bf4",
"0x231f3394c59385b1e8bfd5709fd95d00e580cdf3e37f8a940c4213d03e6fc636",
"0x1d74d876aa5187f518188bece8d3f4510ad7c73380c362ad8252e6c61c4cbe88",
"0x22873eaa2fc0f1d24d83ad4e8c090f276cee48919965304fffe237a5c555a0ce",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x1cfde7b00570ae56d610b0ecf469c6d5417dae9656a9b36a35c5a72dd38f14a4",
"0x1a5111cb0a961ae216f5a1d83ac8da38d6910c2f74475efc1d49a8e494d161e5",
"0xcb1846e6664d919ddcd95c78357bf2029b750dd3cf02f4731b4975b4cac64f8",
"0x2cf7d663f92d7fb9c20dbd49208ff17b66a023c460eef5837a124bd89e3e607c",
"0x203ff2de4108ca7567b52a45ca3100b18c3015afbaa01b951010a46fe7b3a2d6",
"0x2abcc429149a29c4015959567a3aeb77ec781847dd62ce295a4cc9487f58d2e",
"0x172032b322c260b66b56d12d9f27327bb14859be5cc0238dfcb9d1f3a8a7c424",
"0xa0e87895274d1193436e943de47d8ee0909c998fa08a714a375656872fc5702",
"0x21eee81004b563924c0089d162a2a0b5047ad60910a5931ba25103364967bd41",
"0x19271e4f9e7b8a7f54041ca93fa5005d76e5960bc6d3dc132e1de6b2ea072329",
"0x42dc1a29bd582fd08c781efc0e67506afacecfb6997ac871b203cbf71df7120",
"0x6b8d08b07a1b58558a9dd55596a67cd72960514db555a0c21c6ba29fbe1d563",
"0x116c800fc674c2d6909c1e55568650ca2439ce3fc1ac3a81ef5ad8fe2e9ef30",
"0x21b9ef80d19679af571fb185e6c0eaa780bbff382e8bb7ed8bbd342c40aeaf04",
"0x1aed5bf3d3bf68f2ec32aaf43e0b43e380244f25666254b23a0321a33a6a5840",
"0x276ae4e84f3446a707103550805c52c0510cb0c2e253ec32f2fcba255e90ee3b",
"0x677e26ecdb28f20a7d565510f73b24c036bb6ee0636010e6bd2654a15ce49aa",
"0x144b679dfe4fdf64adcc33da78a377591421c486df1ac1247f8962762eec6353",
"0x2b3e47433e01893ba1416ba93aaa4e39de8ee93f6782e1b1f9d709701d26caeb",
"0x21007ada7a8cf858670017f02b6f452abbeea2cff05ba63511a32408bf8c55de",
"0x99eb11c109ca74fd589d0647392ff6056a100ae0659e60d0c34b9da3f27365d",
"0x256f44ae0dcaebe716aa9569b9373053ba6fa022693bd865017a093e029231e8",
"0xb43042d175b108a0e9c553cd99a4d288ba1bd0ab4b2cffc049bd63ee949bc2c",
"0x2820651d09922281a40505d755c0951dbc15977d8f3ac9c9bae3929044039a19",
"0x7c75e7a56b94c4942d893c12b0e8ba3d7ca49e2435fcafe0ec9fdf4520bb9f8",
"0x2407140cad6a6c1d58b3e8bb6f083b3d1ec411228763dc4cecef95c56ef9f801",
"0x19f6713df3399cc47648b497f80707e11c962f694d9486a1884214d63b1e2423",
"0x126880836b31b2ad4d3941a65eeb12015282959888382bbafb662ffcb146cdc9",
"0x10f48b8b5d3586007a9da374301e5246ab668094850451f601316f889073b66",
"0x2b35da385f9daebfec630113748adcdbec531e80323e00627efaaa55b9b9e977",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x413c2aabbde38d94bf1bba05b680f5fbeb526118e75df7740e03c6497fc2a93",
"0x1f5a1a9d111269b8fc9c4bf295f95df0068a17c12544161132d3d06cc6c28e17",
"0x212d07b689f77ab9b11d9c58b8eedfbc84a0f3a5c3d011c43558d04096b3c595",
"0x7c689aeb8426becf2d38e8e501aaee897c6a9aee5e479b40bf1b84a50fee324",
"0x20ad507d2e6bd8caa8b7b879d8a0f22b037fc7784994576a2053e173b8799f6",
"0x29a7b5d1df34024626bcd4d01586e1ac5addfc06e8ae7e20e4856705d6921e7d",
"0x1cbb5f6c2ab4fe1fb5e81b5bf2c583b7f0f6a3e23f51899071e6feda30610084",
"0x1ddfe3794bfaccff166ddf4fed76cb5ce75606b016aea81a4decd295fcb73d6",
"0x2b49298bd3a4415198bd2f444de89a1ad359aa90b14caf77d1afb21ce7a50b30",
"0x2c10b2b301be57504c8689054ac301f071e6aa6d9f60b9c428fce09a60acae5a",
"0x2672e1c103d7a3f8b4f25389d69b884d9bf997dc4caba63c15f4ae73f7db96a3",
"0x414ada0c4576f5279952e118e442480aabc46107cfeeda9ef834410483d7716",
"0x1c20492095f5c09599f0ca32e7df69be7724356280f799fbe074b29870e67700",
"0x3ac96e8e3ea740c8e808309ea5dcc35d62ebe5d72b66c239d5bd07be9523ce9",
"0x198f45a7fcf410eb81a12e1b309f0f95abc6608e847c5a68e3c352abf72bc469",
"0x1f46d6ace37983cc1f2e530296fef1142b1b074c0eb50521de863159edc3bd7d",
"0x95d0ed6735b0fe101e3b7ee0586f060355513c443ddf49071ad90dc1d05e4d9",
"0xb912abd1261b825f9e4b3fba00f8250befabfceeb00ceb5d0062b71e99efe2b",
"0x2fb34c0ec0486f139c4d6c674da593e2a92dd88b4556ac05151754050bf7870e",
"0xd3eba1daa20eb618ce265bb1da966997f4c131b3ff2ddafc0c71fc035a12f51",
"0x2364018273755eaac29eaae7e021dc0ee1e87dc603656b32fd3c671b7076c84c",
"0x1f05f9d5508343ae4597d0f01502a1660a8e5975a4ccf5b8915712c4e4a782c4",
"0x129498a8fb3540f610123f3187faec3fbd0f49e978dab3781e5fb0b117dff678",
"0x219e082f6b2eebcf1de778082e847881b9327f906f9b8e27d33e9ff0c10d8482",
"0x15b6568d2a70fdae1cc8b0ad01d746ff2fecba144f504261995b8c2f116780eb",
"0x16da3ade68d775f641465dfa1468999906f61926e73d3e08da7509b4a78888d",
"0x1e0899f2fb6d2385316656b5e8f64867b83dd2800633538a195f6860a750022",
"0xd5c49a0cfc9aeafaad6415787b8cfa7bfe62c569b7d69552f4c138b12db2710",
"0x58e978c6c092939294d1e723aa97c2e6000a5ca187653b0dc4858ceac8d1d56",
"0x188a71a52f914ec4bff04b742907b84cf6e1c57e855aa0097595f86caa7cb23b",
"0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099",
"0x2f3a7566a10cf8d3ea9a794c4adff2f557808fc43b07e76fa4c61431a2063453",
"0x9a8e3349ecfd2e871b454f2b2e931d41dff9a96fccaa7ed0cb60361edd4ac48",
"0x6a81b30ef222ba0b2fbf14165d46c175989d325caedaf588014d126e7585a96",
"0x27c859acb50045e87ed4b70aa9a561acf5fbbc8d0a5215fbf0c5d49063f122be",
"0xe784382f4defe97fb1b1053651feaa5002b9d1c2cb522a0ccf949d59ee596e1",
"0x179e84bd06bd608d1d8cec72c4d182c13bc7d650ff510cf2b1f4e584eb24872e",
"0xf23d189f57b74ae31ab04b76d0cc3f67063ae1ff17a9648de59cc281f54fd1c",
"0x1f0d550989ea2cea26108bde473296824340fd2531a2b2c20ac14327b009d62",
"0x14a346d622c46513a5da377f73edb803a705ee18f9e447dfed88d5ada5ede42a",
"0xa71d5e77eb081c8570d2601466bfbea27f143f1b2c726a343034f015c81ece7",
"0x11fbd1c03b7aa3a9f5c607da1c4164f928055cf6e2a1272506df242230e9945e",
"0xb5dcbff27d668509bba8add0632d65ee5ddca9bac146648c6caf2bd09d9e46e",
"0xca07ef6ebaa5ffd1e6f748cac7192d6470b170355a8517eb697724cc1c3289c",
"0xe0dc71090198288bfffa79d2237c162ed9dfb5354c532f2d6369ed73df6374b",
"0x191093f164dd4120c06ab66dbaecad8a5284a96ab607afe1b0ad10048ac86920",
"0x111d04c083f51a6fdf87412a537f6601076d61f435094ea16946efbfa4893e97",
"0x133c5913f25ff5eaa860d0318f6a4b4349fd22f2d53530e5c785b70988a3a88",
"0x8875f47d6f518c8c2df51a786bf2207aade284067228f440e7d0307520a56cf",
"0xba9f44a107a81cb23fba66f2bc34152728f5f5ca68406649a7efe47c9473f21",
"0x542832ab23b6c7a4b547a1066037152a2442e998c5381ba97698413153ba6f1",
"0xba1f764367360952942ccb6edf051c8f937906a816641e0d1e9e2ed26906fa8",
"0x2e0611fa4ca3985d7bfaf512f21a4081141f4ed0dc4b022834d3cb6cfd8b7ffc",
"0xe6f23c0ef6f159dec68341a87830fb864b6c08cb954a14a2500876697897fb7",
"0x1a7a2a4a08d87e75f720302bead7ca21c8f7c2ed2debaced9b8b1b2da461cbc",
"0x1d8005df48c8565987dbb442b482cae5bfc10ee486ecc5b670ce861345979d1d",
"0x28122254823f8926acb7e98f557e796282e5e1271618858e76d49d0886da16f3",
"0x2414d4aefc7b4857df681328e68a582d23b2dcffd579a8e6aeed6c61050e05cd",
"0x2f710c72d6da19c7d87cbffd55665b472b0265d13e2326a9a33b96e95d3746b6",
"0x2e285441d0bed90bb41d6480836850e4d76da8211b04a236dbc7c3c30320c00e",
"0x2964901a2b42e9aea1a6593662aeb9e12077a287434bda4ec2012e36a19dc95c"
],
[
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x2cbd265ce3e5beccb09bb3189ca08832cd4fe102f39f9ee2bfe851a8038ce383",
"0x1e0217f13e7f212053e2de966a7ad7fbde6a7d47335bb58b2b148ac4ad7b8cc0",
"0xf885c4008d2a4c2992b3337f1c0eb3b21bc5569e7eb6aede116420d33f981e5",
"0x2e9c594b2023ee628c88f7a8cd002e06fddca13a014922ea4fd489d7f00d0cc8",
"0x217afd05c2e55b85675cb39f0aa486a11691557ca9ee1b7ee42f06952bdae058",
"0x1f8f067c1602f54ba576795e16bc269cc4f34416fa619920126eb16da9878c5",
"0x25f3633c988971494c6c37a0de4b737a88cd5be9c14dfc66ffcc4c5200c3d6fc",
"0x18cdc8b1d7543efccdebadd46b6e9096117758a3e2c638bdab7767e74f88747c",
"0x1cd8be04f1ac72a0b7daaef83a36e688046a41b7d4ba83aa5ef3a3a4de8e58a5",
"0x1a31f69bd76c670a3183335cf97746f6676698514467df13194007eaf8ed8b8c",
"0x2ab2c3d35698ec035746c4131c8d4cdae3be77eac56e708b6fb6a9832afb3869",
"0x2217b8cac3e14934002e24683cb6fb96da2b282d12447fb97789670e716b3bb9",
"0x26d8ecc33cf52610b26d55145f298e5a387c1b4587d44bc89afd2ca81a21cb70",
"0x19b5fef4d9456e93fe0799c1b568e2f6deaf43067e119ee89cce7b1b0074e8a7",
"0x2f0ee317d5a1d6c6d6c8b01f100eaf5389bffe269131af9eff36f71b3cb7f4ba",
"0x1009a43a6a00db52b2d0e325312220738c996b79414b70b2d04f61bf8475759b",
"0x2881d241ad316ea5b04bb05c86484922c0b6c6f01173a1e84af83d8b69bd23d2",
"0xa3aa81c611a57f509b1f971352d680f75a03361e74a5c12594987287972c39b",
"0xbf1eb01ab9b46638fe9d0a135105ed65848bdd9929b93d37369240a6e5ac276",
"0x1666fad124b64cb1b1fbcc06ee6180e2d3d98bdff534ea0d4fffad2413b15925",
"0x13006947e1defbcba51ece18add637d08c38b973232ecc68b6b2f7fcc0e40f7e",
"0x20cef2fdcdcbf581527d5fdd9442d7d80e8c122c60aba74a349e318119a9b077",
"0x29308abcbb8c3d71812419611e6e3f30b64b8b3670579e5f7e6084c57f8180dc",
"0x20a651bd8eff8989f70625f7e1db0da19b408d63385e63f8b1f066d0c3912e0e",
"0x2fe8775003759af3f41c2f923f0b683c27cf89bfa609ec6fc26714b8fd7c5ea7",
"0x226d37fdd9023563a4d6e2a3bbcd23137d949f36b2d9b1b8dbafbc644ff2371d",
"0x2f11eaf353125b5b7110a75fde384c14365c2e2cbb1140f8b520204118ce6897",
"0x7cba6d14f09fa2eeec2242ee401fe0fa089c28bc77f02f0aa90a564c10b4e29",
"0x757d39b861897f4ca863713452abb9e6c14f8736417fce8359c5b4dac5be0b2",
"0x58992f42ff62ae08b3daca79a5ac83d258272802dc6556aa757b390ab22d6cc",
"0x1fa470cc67647213df51fc636fce6b6e69de3a665044696f6bda9316fadb5a1f",
"0x11049230da628e01b2a11af1b214327c58092bde0d949e8c08a0c929b39a13c8",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x29e2fa62bb11282bff23cddfbd44a2d9fca9bb0ca099f34c63153d32257e8f76",
"0x2ec58445b13f4e1b14d47aaa8d3c01489e81838dcf6a8fb2e79ae1c420dbac0a",
"0x2a26d88da92db338a1de3d64aa9f78389c45cad24daeea74fca5c5721cf0b079",
"0x25240495a831b1128568257ef0c438a227576328351ef52cc3f6a361ad097666",
"0x10356b86c6b5b46fd0913fe632fef7bcb9507005df6fe46be9089f96008fceb1",
"0x23967538833c9bf2f3a2387251089e68c81a47051f8c3154b5863fe78a6ff6f6",
"0x3dcf91d2608f94783343c6c1c9cd24847ab2cd6778f568418527be40ac23e89",
"0x1185195857959b965104d24285d2f83365412ce31a6abcfc936d74af9fb8fa13",
"0x14ef1e17d68e5cbcc3a90ead42b8c438fb56b5fbb950d8883c2d1660fb2d1ded",
"0x1175100c6ed2ddf68ba552b4f40c27047fe02cdd2b533a3b9975454399294205",
"0x230160f538e3585cff4bd3cf7b4fe333d2b2a35738fb135ae6dadc075f92ada5",
"0x88c4e4fc1b21270a933a937f739bbc7b6e7eb3e316ca1b3ebe5727e381742eb",
"0xe3e345debdf5cfbd7bb9a4cb5d36d89c20713e43323d4341795448aabbd76a3",
"0x1a4ed87c8037af1d025638bde6b974caa276671abbaf0210cc7e9db2fdc9a345",
"0x11ed48467664df00548f3cfc70eed4039f6a59e826e73dc4b95990c03a313829",
"0x18ed0bcc41aa34c5556a7ebdf27ccf1a50f32561793053215a03d931c4f72eb0",
"0x2e73e5ff39e58205a16e013ccd0dd935bebf06505cdcd650935840062e8b1f8a",
"0xf66bc73e8a87b0b028720dc420534528d2fe5609bcb3d600507a6c19d20cd59",
"0xbc095405abc012247bc4a7277cf59e25e39834bd5839542cab959ad534a23f1",
"0x1fc384fdb89e274dad330eef9dc51855c11fdadb0b9b052fa220eb3e38d61254",
"0x2805a26d24644536da5f7e9f5071443189a5f102b92613098a8c23dbe887cee0",
"0x2a2eab082079c60e24bb5dbe3549bf6390708e8ccd034a2a94a71aa9c414cfa1",
"0x5aa87bc4fe90cd48a59fcfa82226cf759ce8f60f8c208cf9632a28ff7b680ed",
"0x2038aefd81a73ef09b7d0fd466d2b3c8aed99ad9ce559eb2aa80d7e06996909f",
"0xfaf97c7bbde99e8853c67af9e2187b8ee3708e48da3446b3eac3b3252a057d4",
"0x5dd570bb1e0feb5e6f13b9dbeae629f6f3ad06a365d9ebcbd2c120c6f76deea",
"0x124548796b8905caf386a61bc868d1467251cb29948ff1f3ae4847c724ab97dd",
"0xdf9dc278a65d06f8c477dcb8b562c262dcb7f9ca4d875070b36e9c2e7fcf277",
"0x725e0e87db61e62269f56d25955fcfea65fd3882320ba3187611e7bca42c2e5",
"0x2f204d469d9ae7b364fc44f2959956654f613f60cf669afe7b69a944b6903390",
"0xf4165ffb8c3cd0c8df2a1cdcc6d99d487b204cea36ba8023e6a17c90c50d3cb",
"0x1ab6363cc8e8594caf364c93385aab21b86de4aea09591b34df2152f6b663079",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x273626b708fec9b5d1d1330bcbb2d80d97ac1c84b89895de0628a0f15fa73ac1",
"0x232c260995bc29571e821068a7fef290fc1fca974214b45cb6eb63c02f56101c",
"0x22a91317e4cd0f048e756b7b41c10a9a10f85683df9051b1aac41cfb73dfa959",
"0x1789ef31e5469c8fa9e265becaf3f6f0b66989dfdddfc52491933f990624062b",
"0x27502f81423df0f6f223bfcb038b0347be96880b4d9b26d685bc87df88a12f80",
"0x15944d6894aed7bdec1cebe81ea14066dc63e49db38b79b63b5711cdea0047de",
"0x2d5d79c75632ff589cea134763ba602c43390e05fcb6ff8e91fe8376c327cfe",
"0x1f83f223b3a559ac092b5ce1bfe95f81be64ed69bd2aba06181f9962c09ce680",
"0x1d9105ddf213b013cfd5589de071e9a19becac29cbd9f5699314f7163f14f642",
"0x2d8879a2f005d4829b5439aa1630fe03cb581dd32be37ec112cbc8fb76715870",
"0x898f42d31a6838f40ddf7874dd4afce3481b6e1eda04c4f22f82e3a7c339078",
"0x1e5273fcce91ec174a392d2b384eaeeb2856c1bdb4342e1a38976f97497e51ba",
"0x24a863988061d2464b7bcc8d4ed630e79a471fe07c829d9d6b5eccdee1740779",
"0xd3f2af2fde3dc00461fe65fc25d8ef32db567495a78776f0f4eac20d4c23222",
"0x11130f82fe058dbf04d8ea6be3175f22ecfef9c4983545870967c73267e0dd64",
"0xf327ffc10a298ab4376b35f28b7eb90e794b6c9617b9a9cb1fd60d1e6208fc1",
"0x2fc6a08cdc07224db9ed85c48555e9b6747d401fc30b477a376470a19189428d",
"0x1c33ad6d01026a48305011699dcd1ca89d10a95b096e2b7d60363374c038c62e",
"0x1e5457fba2d9da56d4ebe957e2a4960a45ce9bb8c941e2b1bcb861f1c1d88bfa",
"0x29d2839ebf586fac7dd395ce00036e0530bcfaf01c6619489494f78a6f7d5ec4",
"0x4d8bcbbde662005d7bd4ff16ef911dd1fd74e44d850f665faffe0d4724063e1",
"0x1f110564e1708c2705cbd95f592a618406fa8ccbcebfe3b4fa9420636764c7b8",
"0x1588d891ff3d8526d281bfb900ea2b4de960a5d2b3740c2562f6a8ed53f374b3",
"0x639f2677710d59d2708e3ed851a80e7133f603ae0276ec542b23181fff30907",
"0x2a2e29702f1ec78a47401585569f7b48e63e397bd64ddbef59fface62fb5591e",
"0x172b91ef6574d5d044f3e03e69e270257e80c9cd0f1000cb91d7a718971dddc6",
"0x93f4d3b969bbc023ba1de485797a6ecfc42e2e9f034ead04b17830f297c15f3",
"0x1eb585e563cd03b430e0947955e5b906db9b169af33cef14671865a04bbdc7c",
"0x15167514d32350029469eb274806d81d6ba80981c4694fd030f0bd93c8ffcf31",
"0x1240581c6c08675773597b9d50b9187f160fa7d7a739630f943e4df9b1801237",
"0x1598daab9828ae0f9490eeba9d3dbd6282a2490db8ec4789605289a3109a3079",
"0x15f48fc5ee41eb8cb97fee7e78b55d3fda674fedaea91534bb506a4b440ea560",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x6b19393be5286a5cad14b6fd12c51219467aa1dc7c4923753e7b1adeeb464f",
"0x12ab8709e0b7289c712a002a6f0bfe6e72844177720a0427631540c7695e0905",
"0x145662a0788a01d81bbc0df72d6eaf0e887d22a1e4aeac090900c432c4132fa5",
"0x1d403655755dcc00c298137bc7e029f140b9d9e71d30e9145f6dd2a040febb9b",
"0x2370434b953dd1d26c4eeed6cae501a3758014dbad14bfef1c3d26cd0f615837",
"0x1f13968a23ad91e74be05489afc4b2dcb41621f6fb8b52f73c27bc2f64d198ef",
"0x3012f6382c1bffa9df0240a0f66b310a7463e49e7cf74facc054c7fd124e20c8",
"0x1da5c938033392ffec34887bfb06e6317655c3094671a68247eafa70d630c144",
"0x1a94414d237c4ad29cdef25e46f49e5e939d9699e9a36824f51aa65ff2adcb04",
"0xa234e79999d9f55a21dc03c43eaf5e018035d2b588d5ec8cd2d1df72f83cd87",
"0x9f0c86d7cf4004d071e067316a8da875d4405044b0e799616e22c96a1140c26",
"0x11bdf8824a0955d04b5fc96abac08049c0fa9cd678bf055fec2d43634170f052",
"0x20e74a475a9faf92f4998eb559ba0d8f05659dde0ecb757950e8a6abf015d4b5",
"0x1366321b06c12b977c2c396974a2a6b0c4e58f09a53531213c6206d072f4d074",
"0x1b2b47e3ea9a39df6a054879cee1ffd2cfd789acd7823e765c675241c3acf498",
"0x1e94a144e18eafc014b1aac9157ec2faa99affa50a05f8a8ae8ecb152bdb85ca",
"0x2fc95ebe62bfd5cff9fa2464bfc67b854ab2aae650da63c494d87294735305a8",
"0x1ccaf110504e1fd4eec6cab1d20f863feff3910d832fb789ec7e31713d262bdb",
"0x151066f81bfe7b4f1ecd0f7a8fe09a48ed40b0c9450476042bc4303602891d0d",
"0x22f0502a277cf27f336d9f3ee1fb7d67fa355a2421d4a01d121f1020e44ae43b",
"0x234465d17d5ca11607fb6b7f3ed5d52d0c06dab7b1761356cbbf0227b5777de",
"0xee0c8ce14909dc5d73607dba19e39706783488f00b8cac649546d934dbeaa54",
"0xc1a12f8f600bcd0dd2963fcfb7172d5842b12aff081a8163fccf1eaec3284e",
"0x27813f720b7a7fee3b44b2fbf89888c664d960bfcd775816ceb70050e6d26308",
"0xef129ae227544508104a79cdd0fbb9e8247c352c97190b90b5e5892feb828ae",
"0x1c59bcacb92f3012c6299cc6b43ba9269481cd107c161406349db4f728bfe66",
"0x8944ab7daebb6884078a8d618105b8843503a90ba51855c079b13b6aaf5b4f6",
"0x215bf9136c8b81f9bd5b221d37fd0fa327f923dac9d52ba825cbd3d2d62459fd",
"0xea608a14f0b4b405017fa637237863552a98cbb9bc1e151b7edbe8e6d78b598",
"0xc1aad9a675df88deccc3864f8c6e16cbee74db5441a6fff425a2bf2a6f84d67",
"0x243e3a95bad03705f35109af4c8c377983f06fef4cadd95c03833dc06ea51296",
"0x29afdf61d86b2558a0cf6083069157e5039ad172997c8ae76857f73e05ca3eae",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x1a85e806efde07a54e9cc83eac927ee5f534b01fd41388f806298b28501a5f04",
"0x109d8bbad7c3c77bab1a8506d4d588e7f5b703361a6ce70d47478e7464a73574",
"0x12f04b1f932511c8596a8c3b5f3dbf1f7f1d91554020fc43db068d95b8e6168b",
"0x1f28636d87164d2217fb393b23d0bfbfec1d912dca3fc000ba1f3e2ef46b8b21",
"0x16179a1cfaa92c905e039047db38e288d336b355029b1ce1048168e55bc1d701",
"0x16c3deac1173e14fc8b54c4da1b1ff61b7bc4ee2b9c62c2871d70a14583432e0",
"0x176d6148624c45e210837dd7fd87d4dc9e89f8efa4dea7c3cff0702fc2bf042f",
"0x20dbb69374e977536f1cdc4a084edeef4ebbf0c9c3cc4191fc4a707961fa39cf",
"0x2bab10e7b585d418399454c7d80fd38bb23190eecc5f85f410d85300487b9ee9",
"0x1bdb9ff621833468a0476986be6d6d719779ec581cc283a11aaa42c5111d232a",
"0x6660bc2be087e505eed7f1d4e5d8418d55e799008cdd4f91bfd536900e9f7b3",
"0xd4beae63787b3447f813f245fd8b7d6f49c83d63fe74a400dcd66cb3d363af5",
"0x1d76613f447ed37b64000a928b3b48e2e8dd521aae874d97dad7fe9b4c57886c",
"0x1f84a0ec9dadcd3937a045561b6205385c12c2ea4c562bd420f3d27ce32677e6",
"0x1f6424f12e6950564745b305080c881ea931d9083649631687a5a302f1d86fd4",
"0x2bf626dec6b3c130ebf137a656988397de0601250e39822152d316537a891fde",
"0x134731482b66f87776639ae513fa3245540fa1d34e6d74d32f7e9587b851de32",
"0xcc894c9be43663bde1317a4e3591aff66c18abdf0d8b90d872d86012e2fc8bd",
"0x22e690f84991940125c64d8513be14cd3fa81c1efc12bb80a6beada80c7091e1",
"0x14287659216a6cb96496ea198bfae1408696c5561f01e9504d5904044d9cc1ee",
"0x237b66703bb797da48e0c64dd6633de18ec506dec2d4d72b28fe93aba30b1621",
"0x1eb201c3e2663322f85acc8d641a362ac1eb1dab575d105af0feac86d68ebb14",
"0xf2588703431e1b9b0d059f900572f8222df5e7749dc0f93c09a24285fd53e4d",
"0x18a8905e765a49b51060ddc06eacbfbfbfcc0736f621216de0f9a1a11cc66484",
"0x10e1e120dbf75198c342b585b49bd0999633fd5310840e725642ae873af4a53f",
"0xe65310148d5dc0fb00fc135ad071d9b07e28b32dff7dd8fb1a2e0670238de99",
"0x1b924a6cd822b0eb0c6227c810a51c540fe9d9d07f906e24a57ec6fece7639e3",
"0x14f708f7a7c1430e9f6adf3a23f1dc38c92ae2f175b39671aa297d590f7806bb",
"0x2c870cd5699f7a402a473b3610adc0b1b1dfba1798b30681de9359334891b5d1",
"0x2c2793cd489f2a0ba8efdda84b35034f81bc47c131a3c6b6f8107f7cbc5ab058",
"0xf12b486f743b8613685af0b508c3b3c41608d34b82c7dc3d8f15277e31842b6",
"0xea23cccde8252adc358410548ba3c53e224a3169e6ca958458940f318bbefa3",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x1e5a6dba6fde6063136d0d97f46d5f292f065b8a9db8f2ab07bc17d31566ca3b",
"0x2f5bb6281fb3085c9cf508288a809476a23c142a459949254f99e0461496897c",
"0x230133fa9c214b6cd63701c3a082ee211c2d4ffa7037d0d0a4cb63a77ef5b696",
"0x7b9beb8ce1dd13c153d36b636a7af56db3800d97c16400284b5563b192c7803",
"0x18a62bd663f364bfd0c79d7f3edbbaab5f58eaa44c0fc207291c8f71222059d3",
"0x909d7276a02aac190974de34558921d3dc8e6ce22964f0e97b69858bbf39108",
"0x191ce266e49cadd50eb403e7fad07cc9ced8d81d8d23df3dc653cc69a8e62310",
"0x29cd029dbaf281a5b72c6d730674b53cbc773dfb542428d45a11d443aee0c906",
"0x1235f2e3aa2a5663b1dc32d86d32a8e2ddcbde4e97a3edd894c7cf2f799e545c",
"0x11310308464e805034d840a94d25a3b8bd0c206d663f41d145fa66415c2dbc12",
"0x2007f67c3b1d638da29631206a6befa6e21365aa1edb39a6f3a0abfe94fd2392",
"0x121d527f117db7b0a614ad1be6fea1f84369a4c6e451c0d5d2537983fb6b913",
"0x1ca4a6c7ee32ae8f3d55e7b5f8753ffddcbc125e170dc7b7c8ba2d62701aeb80",
"0x2f4ff9505df9f5dc0ee5584631e6f331213d654435b5d2593d249b3ff4e64802",
"0x186af707cd1927045cb8ad1b1510d4150928d839d07c8c9a3d93411262351327",
"0x291caa38b2e4083119c579ad08328807d4ace7deb24f78a5d4d208cce95055a3",
"0x27e62d562d2936ef5dfd0aaee64cb42d6aa90006a6fa74a7ccee794d78c0faab",
"0x2706ec2021ef6f28fccac547cfb1aab2da02f453dac5b2daf393ac9bbfa63444",
"0x2c6c0b69710326e4bf73840601626d94cae75c92ca37aa5b5c6e61706cde5a5b",
"0x3bc51987425528eee7a4a3177a8ee4571ccbd028c70ada4bbb3f8e6da3f58eb",
"0x1273940d422f16d7b918e5b6bc3dfdba2b22abb42cd67aa154ed75496186025",
"0x253094fbc334240ab67c86378c9d8d7435f3d87d5d68f3ae901fad214e0dac85",
"0x1cda718ea0bd4ae40920c54c9d203f88deef3e00b3a6c3a5bc9243957c20133a",
"0x125308584766a4ec9815951c72a099b9ef423fab29783c9c8f8ba14ef8221ecc",
"0x130af16ef6729327847344cdc8439079d47871751ed3f0b871dc248c6b856b44",
"0x2f730d5dbd23018d8c91be93b9e666cfa9e9c077d3b2724c43a16092170d7040",
"0x278ad27534ef1afa5d3742e03bfbec8156aa660b0d663b054a5feff049aea2c8",
"0x6d35c831095f5def4afec1841c74aaf1b18880eaab4256ddba34e49653c6169",
"0x2a9eb03bb2a3ad110273c506031de6f432b6673655255c4189fd2db2d9956d24",
"0x237bad6e8955fe0485f4f72b4024855f35903b6d795cffd27468a7bd0e47056b",
"0xee091319736fcc0a648bc6cb1b31ee36b95b20c4d40f91392c315e5fcf26150",
"0x40a730f39a665fd9cb0c93989b291d281958057e9b898d0b50c752f9371a96c",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x30478f2543e91a3b1c9b3fac23fc86c06032ca0fca4bee9387722862c449cfc",
"0x41b7accd8054a88f4ed64394473fba2b13d9b9ea06fccd0f75439c8a09f968f",
"0x11bcaaccaa00dc4c80c43172a833a6fa50fa47827b3d4df0c221eedcb7e935ba",
"0x1276b1ec4d51cf23c53b104a7d1e127058b91f5a4cd2bfea420c15355b43553",
"0x144dc8dfbc21918abb47ec061c7e6a2f7fa9b32babf270047a2f465b7f8f6de5",
"0x1dd046beaf1e8476308af0089af19da322852346b18ffa584af9d98619dc8f53",
"0xfa7e283d56ded23e03a16d79c94298143d259d8c53c8e0de261d197a4a1c071",
"0x2e1a819abacfadb55e98efdbc5bcb57e216fa7ed9d60a4ed920b2a1de8fd1316",
"0x256938ee3b182642f778f742bc3bc00a60aaa25bb3ce9f7fc96559cf21b28570",
"0xe6a334e357792b5182d8b44d893ce322996913cab640a006c1a8b73c023284f",
"0x24073e4154b684459e0cbea690ef583feef556f092b2b17c82c31776725da906",
"0x2dfbe4b1760808ac37902dfb1e18691901b413b87c6d8c8ae54d79894ded6c80",
"0x20f447f6a67d3b8929e1efdde6688fa53d47964873d86ea01126f1e0d447d951",
"0x2c502b5ab202577f015431cc2b64b61f85f486161ac4ecd64c9603fe6d353d01",
"0x5caa2b6ed2b850a5ebcc686b7198604941d48d30932a09e2de9006ffa61afb7",
"0xa3d02ec260b02ef2a4d51c2979cc1b22cda27b543a1bad75d9e547b3a5c751d",
"0x724bf5486c9bd20c2427fbc1d6936ea65d052f442a417215cd089b9e4537843",
"0x1ea84269caab7c273d92e86ca287a8850995c9adf2624daa858932665fed66ea",
"0x1d7e6d3695ae5003b9dc6950af38af6b5319cf529a7a1d5076512dfd92b099ef",
"0x99642d891092eaa8df1bfbc45d79b13934c42f37f8e1dc969fd51caea4fc246",
"0xb94bf0fd8f907040c14c1fc8aa290aea61fc881aa82da20ae568c34990fc705",
"0x28fb0d75533a8263ef2ec6b85c97b5af21e526471056355253fc5f6fd3361375",
"0x10480841e4451bf366c111c8d3fdbf0a7ac9c04b9aa2d8d547285dd891e77eb1",
"0x112274c48dece347a089aec971f0cfb9d7bb1a15b32ad3678e77d15cf7107ff6",
"0x1a8c6d411ddc6e2dedd2fac64c324d88ab8a946fef1174c973dc0f658275f5e",
"0xd0a4a998536c490396be874d02c03de56bcafa3cf45590184f7b53ef5c3cd87",
"0x22016b957df82fa5c825f4fb8fcf8634e654988b63d9f9933bc7b7f256e7c67",
"0x26d2a9b0db83259f6c7d081a2d50317039076baf6151f1734883fa6c322b243",
"0x1593b4f33dd3053258dbea8117f435f21d6876e7fd2907e98bd81d13e1f8aefe",
"0x1ec80ad7ee2b685fd79b38b842b0d420b685e3c090acf3e7507a57739ff76185",
"0x10573113bb0d41c18513cef083fbba91266dfa7178674888ace5d566e1308eee",
"0x2c5bca238c2c3be6d5cf5971ee92ef3174d4a040ddd6b0431354ce434de989b4",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x2f77238c057e187797950c50dacd539a7b7a1be7baa3a3f3a617f88ec05513c1",
"0x1e4b327ddf07cc065b37a9af7f6d97b89c40479908be61b2e6312c351a4d5ef7",
"0x1fa0048409da60cdb12a2a3013fb60257940ee5f4f8c2b1bb56362e121b0c8a5",
"0x1c92ce2c35358268ac56a756f5ca943b43db8c7ec965770da62b649c45baf1b8",
"0x25a62912bc39aacc66055eb6cb404b6a4f09b703a344b752c526dcb93e768c73",
"0x2f3e3c91be6f5b034b00dafa6fdb33ed00735f48fb2300a783ab3307a6aac793",
"0x12618073f72606525b743e3ab8c2749bc83ebc31cd47ecff2f851adeb397b5f8",
"0x7e1a14a5fe9a127930b1ee9a4bbbaf3b33ecc0c23d7b3b906f59925c0670f85",
"0x185866c20721e1018a4eaf241031b69ed1f2aa25e05310a44a015aed45003576",
"0x1845f9656990a68b36e47e83b67e6d53f42df6a83cba95b016c349ff191ddbc1",
"0x285db5bd04516aa0416c2c52cc651c2690bc846621ddec2ff3037165c30444b1",
"0x230697cd1a79c303489232f2d060182c4101e0fb4b6d3ac38b82a370d59ca295",
"0x2d5d42436b19bd4916f035f323d6acddae9a252ebc7445adb1d7bf560b464bff",
"0x1ef94358c904246669907524ba5bffbdbd7c9a5afcf160e44d00f19cd804fd87",
"0xdc902c1c2f63aaebc2a69edb37331ca6c053513f29991bfcaf6dbf9cda9f8af",
"0x38cfec7101b2ee954fa5bd1156da5c5662bc77e2b4e16d39139bbf165f5e331",
"0x23940e1b0657dba41ee3c7edbe86d7ef9f3a45016a61c2dcdc39f0321af50fa2",
"0x300efb612aa09a721c8feb5775c639204c092bf5adbf9d4268dd3f24a406e969",
"0x1cdaab41d8141524f40389418576088f7c8aba62feb69e895d39843068dd5679",
"0x1f035b6f957e84c1eaeec71e31b19518f3dec9964753a2caa1a33ba14879d0e4",
"0x9ff1b666e47a433088329f94545bc44a179ff61e7988ec8c86715cdd25237fb",
"0x97ad004ad339a6ab46f92a80e303e5d431fcd77b46a5b4435f383af68f7d08",
"0x2189b934e1602af6e30d786a0e283f0877720cb8fe77369c37f7ac895886dc1e",
"0x1903bcde38ddde14e22209d72837f9b813e437099f71263f84e18bc6414ee74",
"0x81887e6be9c14e1b9ded51e9cdbfeba2001c9e6098d6ece905a0fcea98f6452",
"0x26c7af1f1cee86563e9292336fb6573a0970af2c6d49d469b682188ad55561ad",
"0x243e21405367c02b78c9da82c9102df9c32a26dea21da00beb62ca9e4e71fec5",
"0x16e3e6bb95f28d2f321e7b63f6acddf3dd6c2e9a05aef8ba4b9151b1de10a78a",
"0xb011142c18c2fd3740c07513612794c14506ad3094f440420d5265f225a84f4",
"0x836b51afd8ef110a57d3d82bcb1c294a3d0c942ac20f6f407cb20ae9f0addc3",
"0x1ef12a547707d7dd27529e8675e5e58c3f35bd50de464d5e9b1735ab22d95565",
"0x12f1b456a3fcabb116586107e089ccb38b8ea0ac2fde6f6d464302c5f62c5776",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x16e23bc3ba612e8d4104a5a608cce0d28bf3a06c6f9024f8f829edd7c84ff5e1",
"0xd4acfcea237e44009b358d998961b4719fe512aa2cdd6438aa30dd5baa6dab0",
"0x93cad17aaed41e759cfeb15461f0222addf78c3a0aedea7186431c535ed46fc",
"0x25e68166acd241fc301db582f896b8e314e398dad56de9f2926f9f131a81d5c0",
"0x8d9b1a38c7c71b2fd5dac87ef974ddb4f7119523d81f88b0d7e16d577db060c",
"0x150c5bf06a071be6de288b6deb00b6ee51ee41f96f71cdcc980a366e4049580d",
"0x1820e0533ea75404ef263e570250e25f9c0bea1228df9fa90a5da8176154f089",
"0x229fc7b637cf8316edc29145ed5f060a9188f10f71e078dbcb887d195e8da899",
"0x1cc5470c6bd5d73eee63996481a28466499751a0a9c784abdb1c3fefe643dd81",
"0xc4da78b5310d04853242a11df821ba84860fac1a2fee9fc04e25c6039bee8f4",
"0x94cc155e114ff824b23e67ebb28b2bda53aa526fd3f11927db7060ededd2bc1",
"0xdd872678b808e11045a657250172181e1fc7d9e2eabf893f09fc3c6be3a93c8",
"0x2177c7830ac6b2cb6d01ead266a371320f7069a0de0454e5dd3a2566ff9eb716",
"0x232dd9ffd97dd5068b1041fe3ed6e08e162265e9e814b85116a6561430aaf72e",
"0x87726ff3cabb6294d2106931b3160809d4d1e669ed7de25374390af8ca39b4f",
"0x364f607b21cfb12929ecdd65f7618ef65c8e9caacc4f42c440994d8b5dcd35b",
"0x304b195fa0bffadcbb23ae2267693c7da7607eaaf40c880843ba71521edeeb40",
"0x196610368a8764fcf4f0278601232bc0a5aa7ba6d20e2c5420a7862272b06749",
"0x218f52826b8e2b82e86d87d7bc87fe5cc69171430488282062d7008069c89dde",
"0x2a70f39b2d8cf212fe706545d1cc154d07405c1417712b388c919b35263c1343",
"0x65be4ea4d6caa4125badaf16b830538527414ecd718a923c3417c474fcf5032",
"0x527abf8fa6b64559c86b69eebb3f0acd94c9f23a01438ff78f034c80291d964",
"0x263078abe4570cb96d27cea17fe9b493fadb3a020605cc474be08ad173dd424e",
"0x2616b2e0a8970da8019208335d4cccaa489c6cb8da6a862f1867e246e1f36736",
"0x255f2df1f986f154768f0fc8a5a2ced1f18d395ff01165e77d6cbda3e8b7bbd9",
"0x1806ff1795d9d6c9292f980c957038acfa02ac32556c9ab826bc14a968dacc80",
"0x871baf013f2fb16c067858844cd395a520d8a8bb17abe207d3138bd591dcfbe",
"0x28f0493d5c747880a71a82644c20dc23cd3bdf84e05cbe0c0a1a48fa27312484",
"0x2a45ef02fe1dd41641c787b8611113bec4881a56784fcfa21bd896a8205798fb",
"0x7ed262400e2c66934b968e3f8713d66e85fae72ab73c6cd33eaf5b2b480f6ce",
"0x17984162d397a2b3b3bf3bb04af70532c4beae81a076d0b8e1b4c54e5feb2f7c",
"0x296ee291fc63605db9594241dfeb6576603a30c42d6d631d4123982adbf54cea",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x19933fc7d1aea36ed4516ea4768628c08d206e8cae12e53a61147f2301df7c31",
"0x2efd792c56ad19032f4e2307f7ee338895556de653bcf50239f56a6f595a59e3",
"0xd6c9475058e6029ca3162b0db37e71ca570a626e7812f8938db5bb9f54f352c",
"0x2d6e38ed12eda3856592e0348ccb4fad2477619bc8a37237d4e48a8b12d0d7e5",
"0x1b22798bb6b6e5711236933e2596905ec1a4eaf3c224cb8e18385857df475aea",
"0xee2bfadc6c771b8279d82f54770acab798e5d7e6b6c93123cd6d871ac0f9cb2",
"0x21dc8e7e1951b62eaca40550618cef0d32ff82f425264dff2743e287594d7d54",
"0x1e75bf782b602b28cb11f489a17ab323dfe881a7654af175cfabadf765d2b48e",
"0x2c49b7045f45347ea8498df2f5d5eb560154f3579016772dc017f6d43cfa563e",
"0x1a0ac37735eabe257b9c0c25c0e8ced477833e2368678c6449c1aa4baf0f2312",
"0x1f35e213914c01a5ebeb34838610578a4fba2c4a06d248e0d6b76212ef339560",
"0x236ab082f2cbd2668f53ed5a9ac5f29822440e4b06543b6ff3944739edb00a52",
"0x12261534f09c4b4f143717ec4e8b0afe58fc399671ff29f5fc8c3dd302eb70ee",
"0x1421d8d32235caeb8e90379b3abacea1d7ce42bb1ae928840a8739d85acb3127",
"0xd330afe8be63d8ace3a3a83b7da18804912e3b3c1a8ab3e556b3256f0c551c9",
"0x1563b55edf443890c4729a6c84d523e1133d54bec37000b9afda8ec393c0d2fd",
"0x2f6aaca00913c8a056867f42f64016d72982e3eddd62f7508c4b86651d2fc253",
"0x2f31927a218ce8d5931907542909a9a8a424857218573585e1a11aac34a4ac59",
"0x2245d56c69c9bcbe47ee570fa2cae8008a8bc3042410d29f84cf65adfb1d65f6",
"0xa6d1a50326bf87096bcfb5acfc3a84bdf112eff86b9fd10e935b3ea5cfe52f2",
"0xdca2fcb2fca35419f3ad6737417350e4fe4b3428e65d4f418143b97204355bb",
"0xeff0d35806c692f93f365c7ce6d5489b513aca79eca0a6663e9bbd8820f568c",
"0x761a1a536cf23aa1f57a5a10140d4b1cb968e9e3054833cd33b769db1cdd0ab",
"0x4fe0a5f272499e111984cb95f691ad3533008ae70634baef9e60bb0808feec3",
"0xe5e1a69a0f2521a67cbaa96783214399818adcf5104c8da98d45f3951df3d79",
"0x3042f99a1751ea962828ad563e8a6d6dc438459f9b912b3b5f2567ae31b74cf5",
"0x2191f2dd5699e7f46dfc7a0fb01c5abb9a34740c534690ed789a3bedbe15fa65",
"0x17886ed47f13d1d49c9c24836655683cf481f3e89d2b65b9de78b591a97b87e6",
"0x1913d17541b234d83fd9f7851782516da4bf4ffe9355c19400adbc995c417fc3",
"0x271e99ead6dfaff8400e390541cecf5146ae0f3b86d0d94898a77b67d0f59b89",
"0xb57c116f3a607094ae8b3e7a2b7ef123635bf131089ca8fc8d0264715bb72e1",
"0x1e097d47d4a82b797a5ab64eecfbc5026ad25c9aab94cbcfbeed04e47aec7e78",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0xeff65c0120d6929212be55e8e6ec2e468d7fddeb7951b01ad014948c174b971",
"0x2a5c1de1bf17f1fbb34987d445e22e3bda9510062ee81821d20944df27d1d6f1",
"0x106178470931e69d02288fd73abee97994704d2cf4c2142498fdb2487afffc91",
"0x1f2d17deb1a25ec04570838e8f5caa47250c1bc16c0406017f5b2afb2b2c8b4f",
"0x1ded3f9efde2ddbca11e2280038ded37eaf9a4542c959d9ea7edb29557118c00",
"0x132611d30c21b4909aa39e4331d2fe2a1f532198f34588e67dc92a375b1d95bd",
"0x2f5741043ed87b7272c7a0db20ad4626af621071cd0aa6759fab3518f420e751",
"0x20749c10519279b7ccb82ddcf1cab67a14b26b3080022997c05ceb47da0211e0",
"0x2f4b12cbeffe89cc8e0eb8fcce01ad903d14750534b107d1a5095b53f2eb994c",
"0x19f437a4cf9d69d918e2bd2c1ace4309e128fb911926c4396039790db1677211",
"0x2189142b8e8e62d3eabad7d3a9c92a2ffc07677dbb3927a55035436a4fe99084",
"0x26deb902804c50f44397613473add31799f85b20d1232ccdc220357e87e0444b",
"0x60feb6d13dc7538cdea6274969507ba784301ea76cef8af0eb914ab2339be82",
"0x76ef42dd0bb069840f761558e2005af793ea5beac349c3dfb9e610933b1728d",
"0x21718df0edbd2d21670fa990fc293f89f53cb169739bf7cd2b732967fd4e936b",
"0x21e9e1015d05a67cb7a314fdecdd1dac563dbee2b9edab3388ec4ef9e58eeb22",
"0x5fc174109c8e7779d39321d9b843cdfc1e0d89d8806e199e15edf3cbd724f8e",
"0x96aa7b7315c181d4bb6527c1abe5d758908a11d1443ee30c0706b31bb43da3f",
"0x100171ff805f808f17a40a9e80b4f6516ba5d39cae9cf62919e085edcb46e0d2",
"0x28a6f6698a4d25726a7e7bcb50264b66a9f377f6dd42e9affc077b5bee5680ac",
"0x2be4c72e7f354219484f1f1873eb38a8aca5924509c892c1fd072241d02cc624",
"0x120e09a9b5ba1d13db63a4d011a2ff38845564e057c641657ec24bf5ce8e532f",
"0x26c044b1e72e2ed87e620c3010acf302d6f19cb8d4d5c8554931d2e29a923da9",
"0x1621a950244b5d32dae27f189970ae10d14f0803d92f67d8912eb7588469471e",
"0x5065df755c536ba54bcc816f308c2e341f05d16254116d0e29bac9cd827250c",
"0x18165ae1001648c8d9987e38bff84bafed3414ba2dc09eb937b73a1e636f43c7",
"0x2e84dd68cccd069cad6fee65deb27c501b2a0a8c75fa6b012b6451977a1cfd14",
"0x29868ed0bed932d2ae0f4ef731251a4ae59470cce43250be9f7fd55c543ce635",
"0x296b41ce4bc8cdd06eef0021c564646332bbed4a8cd4216effa4a09a015b1e22",
"0x2c1558f35552fb1f9fd96fbfa1cf187ab296c941f0dcf1af18063db872028d57",
"0x8b1bc5debafe2cc01e92b310a9bd1b62278d9aefaf78a42ce169dbd7ccbc769",
"0x2c64eb96b29fa0e07efbd86bcdaa1fcfd342ff26fcc11adb163a3e778092fb44",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x1942e0e4dc6666d050565e3041b09d79fc20e99b393b2a3c53f67467c3dc9cd1",
"0x2a61fdc217a0fd51b44cda5669eb8c81b4e4cda33c07d96a3b3abf75bbb593a1",
"0x27676c9245df29af49d1614b032c86d99dbdfe04e1ae951e91ca88267de9fe59",
"0x796165a50209865f0c12eb768681ed7107f6e7976c76a36fe196ac36fdbc5b7",
"0xc3ee0c7cbf8623447c90b90e13d290d313b6d0c466e0c4e1629e54eea175092",
"0xca789430e09c72971ba49ab8cfbe88c7ee91571c1bdcebdb512adb061597f20",
"0x55c78ff2ca4e60c8d1fbe3c55b15ecc28f86f30e893fbc001836cc0632c955d",
"0x1b1ed198ea5aff5e8750e4fdd1b51c9e4db45a651b2d9e1b211acc3b124e31e",
"0x680a0131921ff15b6f737ed1ef99bbf554e5c41ef4fd6e200bf771134512a94",
"0x1c04574d4f435df24a38a6afd056c49edd61ce1dcbb160c69c6ab490716f4bd5",
"0x1f79fb349db705a247e689a2db091244c30680dcbda765fbacf3f36fb7feba36",
"0x1b6f45bdf0ed13a82c330a5d26eb992dbc9802f11bfc2669e3feef1c310baead",
"0x1ce38cb2bbdd94c03869f6bd81e5b7a0c359a932b676c0ba6369fc4ee9271584",
"0x2d918f60f8c7be29a0b6eb2d6c44c56f0cdd865fd8a19ed747f4c83a41a2d29f",
"0x2b1e6bef26c3c2a5f7ec39c3be4de1c0a5bb8c1dc434570d1cf9811c71c1e2dc",
"0x18231a4625a11e057412d2789b10144985ad15966fdb26809ab8091b06e3ce3c",
"0x2ba1777ec04222a9f98dcaba3a5c2023e77a8071a279c726b35482d6347fece1",
"0x183e2d6301b1e472e01e2360e02bc855b6f1a262a4d03517beca13ac2539fa50",
"0x4e6c329b88633c6a45be6f77f5a9d0d54eda85a4e015ef7c368bb145c6978eb",
"0x1f7d2b53a2456c0d398417386d87f4f760fb541cc225d0d84d9d000828b94fee",
"0x1e7e8f07fc7bd7b462f36924ade2a783ed2ad47f6a7d4a5051b9774d61dc480b",
"0x8ee6dc4b9baa362c6da82f6c3787aec48eee1f6ed33157d1a9bdff0cab20781",
"0x1fedf46ce5f0967f0d259a7ae19e5b781a801467ab97ec9b8d50265832471e92",
"0x610a62079b0c8c00ad3401ad0473fed44dcad28affdde92c74ca927a018403e",
"0x2f8dcdd501988f6da1f3d80308531ea26ad2eb7017eae7d97e867ccf9e5010d7",
"0x2bca9ade6aa068f60c0fd6a44e549bfd37df8499a589dbffb64b00d3c48fb730",
"0x1a145fd2fdce8ce3fd02830d4c4c8a68e315fe92a38fdd0f5ff7a38d698c1c1d",
"0x3874b554c5bc6c3988b1601616c70756a3f5f9de40edfbfbe0120631da540f0",
"0x2eb0cb6d015c48ad9d3065a505fd42ad811fb70d9fdb5c2d537843f63b378e8e",
"0x11454221dfba7bd389e8f03187a0723828428a6bb434c6d7bf20bfe5fd114b83",
"0x2a10c14110838c69329a80b0b2613bd9943a3ffd25f6a1e951d0a90fed4ea8ff",
"0x1e52a42d152b85d8a7807288f6f70e69634da7844d995b254f518724e4c3609c",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x2d54de07d84381601063b6e9bc507c93cded3cdab6cac3878cdc3c29720278b0",
"0x2d8d4a2f762f3df73356ba6bede1b007449304d062b2267b388e058c30d321f",
"0x109f39baaf3fc94e73d04fcc393a6b60af6c6e20d5953ee4a1b572857b4c0e76",
"0x12d501a7112aeffcc039e330790ffb66ba390d1dde79ab5ffc723f9fbae2875a",
"0x104a8ca53760ad5d9a630d85bf1d2880fc8e22a97c26864f6597b78ccda8e39a",
"0x156bf185e618c82fd5622d81779e5538941258d1ea3d26923f59b002ae7f48c5",
"0x177774923ca426cbb54827e2b0eea99d32c576101bac07394a15d89354e6eddf",
"0x113a5bceb59274549fc1801d16c19742fc8fc2139fe584c52a7bbba2a329924e",
"0xc6505ca747cb38e435eed24786617d5bf69034132a74f6464c6e802fa1fabd6",
"0x118069d4c4bb4779a3c231b4f9bb10c9e51bd7bc57cfcd602ee7a6fc0e1abf95",
"0x385980d35d14e90d64e9768701ebccc125891654fbb8d6b79a4ea17842a4975",
"0x1916313365e0bfe0bb7bed5b5f7bd03db314de71ce80422065c503181bb61c2b",
"0xbf8748279723ba405fc30c18b22b4d1c8bd2ee8a133b73c3e36170fbe2a04ba",
"0x18e633e3f93f527805cc7bdfa61eab0efc189b556f7c549f1596eab99d2e0e6b",
"0x152bc76d070352b5e3b4f350f4b07c8cefd23e9fa5c425a8b974d68aa3c07730",
"0xd27de87e407d89aed983b9db0f81620c9dfe423d47d3de44cfe3b273bc2bf85",
"0x2b50440572a0892b1c83bdb6fd2037c9ad720f13141798f8857283e01b1290e0",
"0xb5b0d8f6278e41ff57cbe18be038e3467f1bcc255156a660cfd16aa2ea9ac6a",
"0x1c4bbc69ba7ce83c1b223dddb0304428eb67dff461b719504d2a55c7bf380a4e",
"0x224b7d772c7a5d6fde26f2ba95e000eaf6fbcfa50398579c0833093d6ab8d7e6",
"0x130d060491a6bd90c3e5ee6bcff4181d9126f520c56d7d8233120e8449f0370f",
"0x26e1f7aaa668655ac3e092b9c8899994ca9e596ba992fa8863b52b3137cda92a",
"0xd910dfcde2f0b93948f265e861563afd9dd6326cde2a9c9489d22d62dbd3071",
"0x1a92a6fba93268b439845332988535624c93b616d2e972656ffb15175455e542",
"0xdb35e6ee7b9752c564e9132696f3052e39a46df1c4823fd05e246e928963d64",
"0x190484fb8797efff338127ac69877789cb80eaa47f674cae2035e2d903b6dd4b",
"0x281b15d146c4d56debf9f66bc0c8138b7c5be54cb206a9180987f1104347646c",
"0x2fa46d89ce68066bf1ab4d304d8d9163c8203f14758eeecbaeec0725cd663813",
"0x2f2ced28553cd93fd972e231deda1c8b53ec3300e9617dcaad0d2d25f2d61fa",
"0x2aee5484616632c7511346d4ac900eb5de7a04994eb95b4343d3af1e388fa74b",
"0x2bc085981337c2500fb80f2259d55e956963ef377ec1e2071c84639a19a581fb",
"0x232d9177d238a7e2d92ff1260e60e1d1199365f4cd6f911dd08315297bb6c648",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x152e232aa2f0b5ce86a9bb8ec7c916a66ea7d3eced20c3119fa4b32227a44224",
"0x2d541381556b2db0e934c244bd4f8ebbe198d35bcdfa56c77ad702ce2b4c0c5c",
"0x2e3dc0bef8262414d80245ceb411511467439879f538701e9ee094f7c14e408",
"0x16a011d07f05d6aa059d5c39ec295e27d697b94e0eb8ee80d090253627d54ce1",
"0xf2e71fb8b1efa67f9de9fa1f2a089cf8f1a995bf2efa733b40cc406b6e25cce",
"0x1231d7777e2dc2538a6a0c854cda59d734f0ce0a877b5271a1d38c67e682068e",
"0x24d78b8526e7b1c0637f2797968911f101462535e1df4d7a4c151bc6ff2ce040",
"0x22a988364a2deabc2ce747418dc02fef38ce6c811ee6074febd426aa59e135a4",
"0x15de00a932e2679f01402db621f4226348b05436f9cf4b4d6d6419e7770d1565",
"0x299e0373cd69ca5bad2e2ca004ff6dca193a9aa2e0e51de1c89770d2c260e229",
"0x1f48db87438ef28954de5702992fc180e1204b139cd825af6631d8eb0a4c9bfe",
"0x1bdff4383ad65036a6193cfd9f77601f48095adb5ffa44bb31a4acb8bf68b74c",
"0x17644aa682a852335aa5b1532c6fda9a980fff5e94c2b6358ca83ab58a9a77ed",
"0x1bfdd4600de694368af6447e16dc544f8565534d30f9581b5d81cc24a6503e26",
"0x18c8230d4cad7c815b3b71d905826a94022a81cd18a26427fdba3236667b24ff",
"0xe19493f16f0b05a6cbc8c6ee13f334f045868cb36c7e6013b5600e2eae2aefa",
"0xd2f393e71214f36cfd6a8f7f4f02b164c0bf4116e97f7198440fb9122583e4f",
"0xfee312ee60e18d3e7a6ba6bfa95e826f27a8ea0a865e3c7a7fb4e130d1c4c09",
"0x22a056cd7db5815347a2d035ecefda073dcf753bffe9415afd254621fc370eab",
"0xf5eabc9bc5fbb19864ef2113fc4c756e6b5f3d1dafb8abdedd3b04d0b80ae66",
"0x7c235ac19bd9379c4cc01b454b43218af5b573522aed311148404f3a5c743d",
"0x2d942aafd44c4635f7cc2f58e4b9314baa46e187ae91b69a70ce5ad08aae42b1",
"0x18b7536ddf2baf318f7d95ceae7c059898a997099b0e006b14a9619734d101ad",
"0x783549372d830804cccf9bfcadf1bb805df0cd74fdfd8a58ed78b2cd5493037",
"0xd0ff56581899da5c5e06929f9211224abc1701cc590571e4243ac5380251d75",
"0x10eb2ca01dbc69cf143a07d1ae33d465c21b004d93fd8ab3eccc330e8897a06d",
"0x1caff794c32f783cee39dee2bf130ea89316a74d9bf6568e1d0be5a2362f4273",
"0x26e43873787a976ee680508db2668f4e6c8ede06795ce54762ea9b7ca7654dba",
"0x8d378aa3982d2aee08f51d4ccf75af2b06f52ab03864d95d56aba9bbfcce7e8",
"0x2ff5d0d03b4b4f9d0b01d3e0db319dc28906e4dca3dfbbb4b37f99a85d1b38e2",
"0x18520d1a0bea45e0d3d8bf43f25ba325c6f2fc2a854477dd7bebdd9ac94038c5",
"0x48981c51b77cae321a249b580cb97b327075fbcc0e789b617e8d3694477e52",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x1487015218138ffaa0a59fa85396ac51e075d8925a724fd325424d928c654ac4",
"0x158e7709256be5b46df08d1e1b0be1938aa6f4e5c70197431f5f2801cb81ce9a",
"0x23ead31e3adb55af0de40f8ec4e5e40494192a137f36d6468cac8b9f8eba7888",
"0xda52b842c39529943fbff3afa9c3a75d580025df3c708ca7e312396e7c7ba62",
"0x20641a12ce32094370652c635921aee03831de2dbbe854b52d983dc669a0cfa4",
"0xe854c479dbc2e4674a8fb297f33513eaca7d1705e71cd403b3bfda7d594d063",
"0x22e3bb4d657720df9174b5bc721ec49ea213157e0a59d0fa2f2eefe9a8bd2376",
"0x3f35d5ab9a8715db37918b791480b3190493266747e93b2b922f17c4a8d303b",
"0x71d91869ac439a23c518effe61ce68bdd578204dc70878ea949b980e8ca5765",
"0xa5afe6671b39a880f2953d521327679dfc02d2cfa739e10ec0ce898a7e606fc",
"0x1a13161ee9c83cc5dad2019e320b65c9c0fb13afe6a473b03242fdf77e80607a",
"0x3026cf4032ab73cad3fb5363647b3617179ff403dcb0738688848252d5b6f2e",
"0x243e0c7d13dedc00a5a66e8ac3041de9cc0f107c69e38e0a5ac807fc57523424",
"0x2a9fcc31d5ba75ce13add9a2fbdd4bf8478f3d286638267e8d9889236ab48999",
"0x12355d3aaa77205407a218c67bf292f7389e48078ead3ad8b44a7f26b193a571",
"0x2fa06fd721aac5819fb8d72118cfc36835a96a57466c5d9c7ded627ff5f0925c",
"0x2009a1047f9adcaf5d077ebaa1d827ba73fff81d486a9bde79f66ddcf7b95670",
"0x23afd3d3c0e2e875b2a847cd2a686c1fc3c5837f41935caffa4bc413af451491",
"0x2726dd1f3fdfd05c33efe547ed972ad36a60674889b98d1786a505f73bcfe296",
"0xa1f79f8deb6a176a4a20a89c2f3134f7f2288e5e698d8daf9662f79a7df7253",
"0x233dbacfc9ba8c6e47588085cefa90f7ccf223ab050c4900ab2b262de8235c13",
"0x24e7c1d18385735c7be8ed97b21065ad3446b3a44540e129605efcac8b1d27ed",
"0x2218b114e6a493d7b5b767736aadd097ecad86b0f58972ac0efa546a5f1a4726",
"0xfe60e24f84080950e79f2dd5dc8ef6dcc5eca3bc6cd608f91b9e05a4575db3b",
"0x1d3ebedf3c91e56b3331c235edfab0c1de1b37c4fcc7506755a7e90b86a988ef",
"0x5b18530d7ead1dfd0d305e24244c90f8e66be3ff5195efa2c7f9317db72f17e",
"0xddd0529998868e7616a880793d4bfb9d9a25f7cbcf4f894d7c91443dd3a3e0f",
"0x58611fb32de45f6b800200ab76e38d4d88152beb86ece1462c2129509732672",
"0x2f4954ce179d833366a6cace0bb216235b5fc8331a0ef36ab40cf00881a1592f",
"0x10dae4642d4de29143dd5ae8b72f56fb7800d664ee0c121c9990e88976ceb878",
"0x9d1b3f83888c3b9a018f779ca69c7480aa60868a1dd1ae22d328df4667ac672",
"0x1f8cb04b5c6155dd321920c129465f8033161f66a6629acbf67d0ce8609cf2f",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x697468fa48ffbef2def6f8859c1276f40ed8603b54f336a9f5bf6c986dc4472",
"0x14845ae5256ccf9f52ef754d6e9f93df1320a86b1d085b642e9ac35fc8c659d4",
"0x20a0e20ca969d47c57a6fbf1d7c7be6fa22100b7c59f0701d589dc3a150ee595",
"0x1a54b1065df96a7fe52babdd1c8fc70975c19190d7e3f0cb6ff113eed0ac9601",
"0x60a95bf72d45427efcf1df7d0374ce564d824bd9371afbf03b58a7c2b8257bd",
"0xc6bae2f35f833cd1099626a254a8dfda1efb2aa199b74f9fa99777314688d8c",
"0x2e075d54e2f7837c58a23049c4c5bc210731775ef5ca93689d8e411d3e25c05b",
"0x7315b60ae704cd80a3649afc32608e8475c1b87ff88966d8e4bddd6bd5ca97",
"0x1c5f8d20fda642dcd8db43e9361d4188a8f48dae9021b84073ca261ae50f32df",
"0x13671823102cac626ae6c133fae6cc40e2a2e2d7f8a1191889988154b605a740",
"0x10f3889ecee1bec4a5e6c7f0336f7d193acb1cd6cc1b5de815daea4b3b760f8d",
"0x6290c4b1f8ce6ddc74050ca5d58142389edfcaaca0b3b23514e864e8aeade79",
"0xc359d3a8e6913715c369908a57f93775b7efcc28d300317a9c80812d9915a1f",
"0x1b7906c8c29ea1eaa52ea3073c80c666a686912cd52e0f8804d61087d3968f86",
"0x140e7636bb9af6ca0bc1a25757a7ddf14325f99ac07e34c22fac95cc25b47d2a",
"0x1a2ffb754f4df24371e274a2080def1f1eae921b272813446142b708219a4277",
"0x8925574c3dd6d39347dcf0d188e603ba86c85d8ad8c7bb96b503be1a4b01fc0",
"0xc4d557652fd1a40449b5245494f461ae0688771c6f4c6e287632ef3d9e19d86",
"0x2e9c11f9d848f461f467311174d68af36dd75eaee8fdeb0938fef3412cd09e48",
"0x198350eea49489bab667bac0f4c78b18f31c0d2fb615f3475ad0050bc0e99525",
"0x1feaa21fb6aa40e6d3b99d464f0c9f21c0e6d29fc4733bbf6513a40ff15e4db",
"0xbfe6c87d65833b8b7963d8c909b789d379c0a822c03e33591a77bde69936561",
"0x9d31ad63366f19f5de31ca26fddf1223533cb9809ac773c664e86ef943a5c97",
"0x2092b2bc145c4332074825b2deed1cf735a606687b4bd62d6b70147734da47f2",
"0x2c650be19dcb6005092570c6981b6c6701c999aef85850dd7524c99b0eb50772",
"0x1987da1e063088e505fe1c22279a2eee2ba492e2daedbf9bb7ff7fa0ea0c2244",
"0x2d964e6c97f1ce9fe98ec13e03e39a1418f7b586ef6b624c9b14fa7a56d43e57",
"0xe44e2dd16cd81347aa62325235cdbeac7496fb36bc98a405fb658891be8335d",
"0x2b3f3be77f4eaf5ee65b1dc9420fb479926f707b6494e45c0c3456c9b1149ac1",
"0x4510148cecaaa311e8815f62e0c11155a204b9e8419430708f270cc90369541",
"0x121f5e52b5ed6d974d5d8b5e9d535eb69c207cdfa494e75a99a26aff13c9c3ae",
"0x250897c08d5b8b109dfb0a60a31e2509ebfb5a453a57044cb4d1cee1cb36254a",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x170ded62e47a24d031e0d09a9739c181a05ffa6c072a0ae4476c8459026ac92f",
"0x7a7d93f07720b729d0fc11ea7c60a819a915cf083fc5590c8034b3e299ba0c7",
"0x2b38674819134ea743614550a13ff1e8c4ae2dca4c098dbae7179c8eca382411",
"0x271289dc176782bc802a40e2b98935e1f0cd9cce1cf75187e8bdbfc5fdaddfa5",
"0x50e0d49763f9965169c815ad6d976f2c1502d504427294ec650162b32d16249",
"0x1e16a7619369f7223562609f8571294ff3134b6d2900818958abb801ed25a2a4",
"0x55be327e8e9177db48e781385c7cb9fa1eaf7f944ad5806b8040d021328ff4c",
"0x1e218f8a23818b358a930aaac6880250eaa814f4e5f4ab3720bcb53cdb1f06d7",
"0x344ffbdf73e00c5ac9603bb8205edd7a75d44a8663da028fd643d4d6f4c2ba1",
"0x127fe6bca0178af93f621d5cb8c0f000c81096f0b6d97dbdf51785ae1d35581a",
"0x286df223607d95bb861a49f083b6dd9eac58b63dee9aea94b87f4a70e6e06e52",
"0x8e3e56ff4056ea0cce72cac7f1ab3a3f039d5948bfe24c59667056ede70e1ff",
"0x5530286c0e7eae0c6b693a0503fd0271785b1a9a8d159ead68b2777b07fb552",
"0xe5a8dc54f4762a808e384f96b9af4ac56fe9a046a3ce354ce3f7b02fe5f8840",
"0x12ae091a2d3ceb050262f732366d0461725681ef6a2c98e6cb2246e0821462f3",
"0x1bb12b01d476fb2d879e3d80e38294091670654bba4f2cc2556bf47a7fa3e533",
"0x183408f575aeeac085a605ea9934dd45294c7665bf3417c2ee55fed79fa3ff4e",
"0x13ed068f2325d6098bf97f4201013c9cc366c2212817303a540fa21a530b2186",
"0x86a1854cc12612ddc29d8130a224448fbb3f07faceef1c457b212865cbaf7f3",
"0x28e0905fb2b0cda24805076055e7a974487c163f6e275de6f0a79c2953f42686",
"0x13482a7e8bf17cbf0d729a877b9374b9bdc382818d0829df7785161c845df5a4",
"0x411f1eba980a1c2246e9dbbfc95ed50786591e99706eea93b50fd4eb7732792",
"0x2e4d2ef29fa7855a8479c385ee585e191afe05e4948d3afb261713ae3846944a",
"0x14d0b018b332223d8d3a458536fd4bb2c8ab2765b35cfbd1b4f5af2bc7eebb85",
"0x7ada6b05a15e228c703ea1deed0d89a090c888e04aeab93b903260d31fb63ab",
"0x2bf8f1482d4178227da9ba8141f98d764d7d25723d12a474a0aaf2b6f500fdf",
"0x1771ec5e8d202af9fbb5a6ccd92808069ff98a103ca38e60216f4c29bd138027",
"0x1cc45818383e71faabb1f0947a7f2e2c6fdf84ce43bdaeb3108eb95c853b951c",
"0x21ca4fbb38c5efb489a858ed9b5550cbe80765807ddeb5403956a91d3bea3921",
"0xb264544c114744badd140a81312486c6ece15085107fe41743ffbc42457190b",
"0x63f973d8f7955b230c3f623e86769a8f1fff6a2f16f542aa5d25450d77dfa26",
"0xca567c8c6074baf8976cfb1c5d6f2d339dd69b91c3b86360bb72b6cddf2a05a",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0xe84546d43156eca6ea9945a1f0bfe0d070c7b5f596a165d6f5b2db25d70c898",
"0x255224468137fa5731f4a79531b0e41467fc167a73eff9a2f8606ea4b8854157",
"0x5e444e0bfb3002592edf3b1a17b61aca96cc4f55369ea0b858d00a2429413b",
"0x2c9547cc8c30279572f43f6c98e57d007a8d8e00afe3232f22c86d92cfb3302e",
"0x128d1e7dd33b8a7eff38771210c3e2e32542927ab8a5bf70b304eac65a5e89a5",
"0x117ea550387989a27267059d04eab27171d97ad177b4722b9076ac7850469259",
"0x9c2d962801e81427424c3b82a3c2590f3d3a015f5d05dfae03f1646e85b83a8",
"0x26d1151c34d444d61380f618137cd12d3856a5112c1a229087d5237fce352402",
"0x71de2aa9593a6be60d825df98f433ccaff569e8f454b57a1a92a3a179419b40",
"0x78af695ca1926d0211a0c74b15ca6a21b21530751b6c89f16a7653d7b749273",
"0x10fac024afa92974f4f4b43777c31f0eaec838068e24173416e3e55f18f74229",
"0x252a24164cb696970f2696824ed7ab40a422cd2f561c1add5a7b94d9c8788416",
"0x2dc1cca380599b8d9c74524f5f370ecc41d22c4c792717a7ff91893c9e878bd2",
"0xf1970c566c802ca51f328d7a61668732660b84701dbcdc7388dddb0d503d32b",
"0x14410ae146ba19441bdfc99f88fd2425a30458ef81a97cb0757278de7c71b6e3",
"0xea9dd39706c27da7b07438387714c8e986a37c6bcb9cfe0aa413edb1d426620",
"0x12a0ec57214d783396e73e66cd8d163ae207afdea093f62ca08c1d03849eb81e",
"0x15f6e3cd0868b4e3bdeed8670ccbd35b084b2ec7d9f70e1b0e1bf9179f4e7aa2",
"0x273ffa3f96b6f990e5bac3da9121fead4c55e9a53a4cccded8ef7768777e04b7",
"0x265c7d50300accd451f9d10a056a0a9c4b61960abc7ac07f405544d2be981cd3",
"0x25704ec82bcf245817c0b0c38428f80e097d181fe4be674c56a431704b81220b",
"0x2bc004a70f93825fc7dda4611642819d5667d0c84de02d108fa24e7553a8ed9e",
"0x2c67b0e93decf3dd43ecf2affb6c8ec2681b530e89f028592649fb853ab6913d",
"0x25d1957093005c4eddf0f50960ec66bb0a71e99dfe635f3882224ba50ea2a19c",
"0xc05aad7df610539bee690ff338426700ee57012dfe44b456047c168d9f230f2",
"0xa09feb45b441685f960784f20a9daa679ffed8343997e028fd527f1c9615f1c",
"0xc3317b6e0f17024f3e8d48d7be78de51e60037b098935f715c5f7afeeee5559",
"0x186002e006875015c7995b512ab297b9b6a2ace2f8b1f23384f545a47a09eb4d",
"0x607f219a0a42d65871803946f468fe1a990978f7a7dc0a6565282240befe85d",
"0x83054c73153f2594282f425afb21bc06076820a2a936ca2e88aa93d198ad89f",
"0x1d279f18a4b248bbc61bf2647394bdced0fb95c8acee6dd036c0ede0c250049e",
"0x2e9fde89ba2dcecf4a0d11815b6dd2a93ad007660b67c14e84e4845521b47755",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x66bfcf07a648bceaa19dec1031fabc57395c4dca3503000a98eba19c54fe970",
"0x276ac7d1569f671ee8f23ea68b34b200488ba7f18d905e67ab0148bca152d25a",
"0x2f20f2f426186af0ee321282b00a2a641ee2b251399734d15e19af27ecd42de3",
"0x1c96a460e778f4af5015f52cd38cf2c41a6a9e85f6a30bb5f3435dbccb7b9e4e",
"0x227da7c9930fdc00476ca6928729411b9e65bdcd361ad27b66ec4c4e5b529a57",
"0x27b1127b1ce6f0686e0722d5c5a0cf8847ac68dd8eb498a1a2f6124a4e7d3eca",
"0xa510ccb52f446c48a9d886d6b7a6705680356500e63b4adfc43608a30c0d5ad",
"0x187297811a78c845dcc821d8193d2ae2ccc8be6fc0552f3e810ed9a2d044d7fa",
"0x229793d98c198e355838ad9410d16930e88ff01e0a86b8074ff75336afff596f",
"0x1214cf6c699c46ef88ff3713be9f3beec4ea27cafeed293326c7db4166b31ce9",
"0x2099cfaccaaacb25e8c1730ff9d91c6f82fcf436589b18d1a092f61c766af9c2",
"0x2322866854d0c03dbd891bca034f176e411dda04203b47ca04ca2c2a82aa5f23",
"0xafe4184fb8af7ae9177ded93afb51dff550c90fd4ab624c95b9e0bdb275ffc5",
"0x18981ec4e7b2dd5b75057171332150d62e2ebed5bc63ee632a6ccb4146745f94",
"0x1fb6ac0886f9dafcda077d270effeb93aa074c26a62ea6cfd141b82324dff556",
"0x2aeadacfa8410a4c07abda74bf85806b7034785279a95b17c6ec7a0ecbc4f72d",
"0xe640d01e5ed243961bd4361e2d3b669bcc5bf35bbd30181e231503e0ea04329",
"0x2e878ba571f0ae43c5d79cc04becc7c8e65316c9b6b83c0cd56124dd51966ffc",
"0xe4671548304dc6301e30360016f37d8289e8570c4fdd1189cc7fadbc02f6719",
"0x49f32a110437e1552ae6163e0890d534b044bbe2ff3839eb980ac72b15ca83d",
"0x29be7fd214d5ac3a21e930773ea4404cad8e7b751b02e186711e07797362be6b",
"0x6d4247fe770b6bf51c7b739fbecc3aa418f5920eef7624676835ac1ae061d66",
"0x21c02a9eec894a1ac2eb56d27410ad620122e3a5adfb8a8f83ee617f9525cbd2",
"0x232b4705581121f62cff2b79d0c8ea43db47514fadc741b3306a6900a0bb9021",
"0x2a3137d0e0a9987d06f2fd2dc9f61c22e3df55d4929a2322242d6a6b36e6141",
"0x12814250a734500401e41c65da8949663d7afe8c6868643a1dfd086389c29d15",
"0x1d221587e6acdcd041bc0e164a9ca84970807de46a767383c44262cbfa1bf972",
"0x115ec085da8a3839212ae49e93243a25f3b2f34c53b5786d5576e8a5e626319e",
"0xcdd08d5c710e497a583166923360d16215ad9a3a1629daaab0587b45de950b9",
"0x921c454f7b3d19a8c766875963305f4b4d6f7f8be1a2c4119315dff25c111a8",
"0x1b87d132d08fe5a6478b2ce4f40d73b8d4522fe23a4b26e96b31c9bb6a3bed69",
"0x22ae2be55bb3c7640477286be689776e1514c8872e1e0361ee36b13138d0f6fc",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x237ac6aaad2e2ade78bbbe46b6d53646c7404a2fba31795c331db8da4145e5ac",
"0x2877189f4c0d9fe01baa33a2b820b84a4a3a8b92964ea9c7b2149e4a2547d527",
"0x136a6e0031d277288d586824994cdd3da32221fc94bd9c961cbb4a371c6d16e4",
"0x18a97e7a120e79f25dc87650a56a580604ad0fe99a7b5c93b295b7231fc13e35",
"0x298a890330408d2eb3e6aa31347e4d68c1bb979a23d9c7266e63b47580fac913",
"0x191d5d7b95a739bb75bf19d63f8e787dd14fe945408aa987c749ac01a4e5d476",
"0x2449e2d526e2920627d993eed7cf4de57155a00e5f071f059b94eaed73645b35",
"0x1a0364ee68cb9c8a7a0e801daae0ccc07d92b82686bf5bde72c074247f6767a",
"0x1e88daef2272c0f1f9792a6d85f29b403deeb1f4f234522d28112c466790ce71",
"0x2c4b0d1c66062af96f71c6b23ea770f5e53c39967f0d3b1a950df67c9766432e",
"0x7ad869f9d13d9b270b37cf255b577346ca286f8979e546182c4b9139368d186",
"0x2015d96937e823b49d8eb2f7bcf3be82a8b6ea9bf53b5fdb52a4bf72c4375a9e",
"0x1ae82e2228f0080b37ac0d77083c3613fad8242b420de1a24fd6376cdc8d79f6",
"0x27f0ebfa6e2ec9fed23a25c07cdf68a7dd8bec39ce045c15fa0e921b75df31dd",
"0x1b129211eadf48d228e7a13a9bada042edd5164ea595d523503727419a5b6a5c",
"0x1541b4e3bd42e9287b5e0bde5ad7c3ce76dd326a0e53418892067a6cfbbc1bf1",
"0x3cb9cff50f4d9d174ffe46e382184d9a99306f350971156b859d76d13a4200e",
"0x2191176d2fe6b3607227f17aecd711d31ace1a71987962dab59e2d4dbdfdca3f",
"0x333a98f84a220a59b23b41a6eec5f1293aae65a9c1412fdbd05b6c730e7fe86",
"0x1d3133dc479ed041791efd9f449ac6b7a2ab67089c2aeadc033b12389534c8ca",
"0x11a957c8acc043e1dd0228a3bc3e2ca5054dad13c1c685d3fd1c7015dc541b88",
"0x9ab1d5764d1ab372770e72a734f3234e944f231d55b4802feeea21ff00cffed",
"0x2ab07fca009ae3784d9172cd0de7a03ab1b413207754249d54e0115671c61648",
"0x2f26dcb5b014b72bf8a7df0100847754ec09bf69ab23050aa6ab45b8bd49a8b4",
"0x12831914375fab4bf02d5923d4fb07f59ea7ec76fc424eada862287fac0121aa",
"0xf01b766464df2a94717e0b5670db63546816d0ec951e74fabd2070364513e10",
"0x1eec1596e07215f120c71f3b7fe2c872c0d1f0ecc2447cd0382ffc1b3d74ccb9",
"0x13a9df3f6c9c0363c8e81bb2ec06ac0124cacc3aafbfcb99ce0d12b15c1d960f",
"0x9941a17ae1ed8d69ce140125c49306cae9ea0a037563cd93dadcc09c1b8994a",
"0x790fc3d447ed1058bd5eca57d37adba8d645d5c42e7441e5c508e6cb2a7d581",
"0xe11f8951edc551adc073326138ef3493ec812ed643400c53da02d49033963c0",
"0x1ef50d438e0fb3260e615f2044df40bcf70bfadc6b819481222ddc36e39cf1c2",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x19a6c9e51754a1ba0ac6f28381aa453e929951403794d3f57566adca54593cee",
"0x2fe2b32027a048ab3c9fe57e0e0e63168c1beabe9cc3f5328bfc6e2620d1c0a8",
"0x252a353865d1bf6df4e243baea612d8d67a58c9b91b68be6f6ab9fd6cfa6f052",
"0x2445b945a65afd2c8c6d1e12224f0e1b5a7a4ea158a67dd4617f8d408239bd68",
"0x2aedc3a83dc324a21fc06b06f1394d6a5636c2f191f252e9d927ccab3b8a47d2",
"0x11ef3c2372ad8e0fedad2ada9740cf104fddfe5f26a74759e174eefa6f5aae49",
"0x16540a4f6d867388866e79a4f327c50bc06c7abf88df4fab1af55b9693c0833d",
"0x226a8cf3b4fd93fb027602a84e5c84e19fabdb3c6b0641903107238e7473f4d0",
"0x15829949331aecf0006a9e8f46f028a13efb7754976721622d65b6f9cac5756f",
"0x219a0633cbffa129b8be664c32a15d8c6f307fb00fa27267628de8a7cbd4da12",
"0xdef3ce304e0b1f868a4036fb628bce381a92931de8dd658f9a4db69808c2c5c",
"0x2bccbcda22270d6c62effb8e392bb7fb97637993bc102538c5cd58e88a228a4e",
"0x188172fe781d7b1804c9875e732ae5ba92da30e3fe79193172a9b2ad266b912f",
"0x1f30e5d70cc514c78a878299f52f298eaefbc73811fd69a8af04d6e1b235f8fc",
"0x36dd7eb2d37c58f0064ef539c409ff1b2866f3e37995a0e6b63d2e12794a65d",
"0x2943d171cc678d4b3e7bde9fba8cc6bec123fd9e18001704074c6b53b2d7fa55",
"0x16d3bd98a136cc6ed17d71e7ed150e659bc21e304859d7e91db4a75311b12c17",
"0x2cc46361954b156f22dea4b4e5836d017ad5e866df6f9179696836eb0b9ecde5",
"0x2093732993458c1dc5075a90772eeb28239503ebd2aee0b0831f253b5795f431",
"0x26fb0a33d8ba99f9d666fe22149b4b9c288f7a356f7d4d62ca019c426eae56f6",
"0x2ca9e5344928b4c5f6f6d72ec4bbf9f331563b93f78c5b6c693f9ca05a03b9d7",
"0xf86ace9eeacefd133e6f9e5b27e768d4dc41fa8a4b6d0b643d59a99b972b97e",
"0x16aa6528c3e5ca07060d40caf2050fc7c1199f3ea08c4bd2841f8816f8ddbbb6",
"0x1aaf0a3512751441abaf663b51bccc82b4aa9e031f95fc5ad831b6f5104b32e8",
"0x1693d12dc33373065921094c6ffb59f1f0361b0c5ce1b20e8f3f4f1bae805df",
"0x1a5b1eec5d855cc716abacd6b5ef79ad4813bc74fa3265e0f4966768088e24a5",
"0x1a98219aa97845f039309ae314e1658caf33c72235d5a045a11231048dc85871",
"0x27d38feb2f3ca73be6e78b2f51db9e904bd78d3f7ed495634b22c29b28847943",
"0x27b21eb7516a84220bc79c6ba5a35fde0c5804d4dc2b469f034f93245cd58e64",
"0x10882cc54c76c057e84e296d8568fd68a41a86bb595cfe644def5dee16e2b60c",
"0x2a5a015eeff7cd48c5f9d66baee6647ebf41fe73f15999b85aa738249667f809",
"0xbb55ca8ec263593081a7f140c88ff0eca81548ce6c2fc66d3c9041e7e61a52d",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x11a95faf7782644e66dd690770be8d58aff9b21c252a17353159e8e6a9cd2d04",
"0x1809bc4f74f8da0e56320179b35cfccf08531a383f8f38f055567f54de408856",
"0x29576ebe8b472aab3c418866b657b4bead5aebeb46731ac1686234f997c8064d",
"0x15fdd752a74e076a3bacc425ac17ef974ab4ce00d98e3b766e4e9da506338bf",
"0xa39afeb11772f20bd44212cc5274dbaaeb912c073ab120a0e3a5cff2f95321b",
"0x1bd3c83976780db74f4bf261b609505ba17d4269a823fac360138142fb482bc2",
"0x2455035975952299afab678e90178017ae59c02e88b66acbfd33a9a97e4053ec",
"0xf54c6e582707940d37a81057e0331967328f0402b139f40a152a537050d4eea",
"0xf3edf4b1021df9ee75bf77288e35c135bef2e641317adbff2cacd1cd63dfa68",
"0x15a4b29ef2de3e66e4ecbd99b63fe784c3d163534087d6e752935e3a66a81061",
"0x22de01c525edac04ce6418e44df62cfce81abc3238c0832a5721e81410124db",
"0x2f75cfbb2d72a93661691b3c313d73cbf48e570aff4a8981565691dbe6e7244e",
"0x176215e6dde458ba94fe6cd32886ab490c44d3f35708fb83ac032957477470e5",
"0x125224651632beae2362689f3f298c3d1cdde20786b700cf154dadf04aea02b2",
"0x25adc0480ab90662ace18ed71d4ec243b5d118bedf866880e5112278621657ea",
"0xf1656323cf512ca13dd9d53b6fea48d0bc03b7a0a510a1d1c376d7c879c0a6d",
"0x1f7fca35f19d9bc9a9c510bd904477a82a779df52b3d938a34ad370bcbe107a9",
"0x1650f10d70200c4cf9188ae72b638a48efa885d0d57e4eef3bad1908117cae47",
"0x2efa5eaf0d9848a2ba0426becb0edb4127f4afa0b9532f3cc8f63fdc6f9f14a3",
"0xad402c14a8aefcb0dc67b5d3c1df188d1cece3de0f53cb313bd630594e20123",
"0x9874e7aac804e0a72c21eff6800d99327636c1bd05752cd398c2e19210a92c2",
"0x127d6e66dc4de7272bc0e6174ca40f48618e1c90ce71f173e0363278e6e26edb",
"0x178b0d219dc9fb0d491fdca28d89d4f41d0e650c29d8097a6ef982a3d45686ee",
"0x856563611627d9d176f629668c19a7195b0bef83a02011485596c0fb37595bc",
"0x4f01e13e7e01f0fb607f39a334e5ac5a14649c65007df2e0125d2c07f165f4c",
"0x2fdd1f6a4746ffc3721fe601b31335874a23c0353b217cc6a65f98b52c48c32c",
"0x17732cc9a7ab756b3ed24f4b5cd348b27c476b0804a47e8e8024fca28b858022",
"0x8f9e4a25ef65884dd6b159c396447f11f374cf781a8932b436e428d8407efb0",
"0x185536364010888ec827263bd36282a0609556021920ad8349159c80d6895398",
"0x1fd0879f9628b76eaf032db092bb6caf8a03c437a8e7cc0c81c9531213d61b8b",
"0x122fc02a0d06dcaa8bc1ba52dc7905ca13f2766023a8e7811876071cb0bcbaf8",
"0x8130052ffef7fbdc6d1bd38334212f34f3715f0bd1dfc1b36eb58331f5e9106",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x21c85453b5c8f53b3e43499159ccef5152fc9bc3b14cf1d67e4a80e49bd83b",
"0x273d34ed60e945fe972b67c2c155653e1c5c38c4cdff7c5753de7c68d3bc3261",
"0xed8f8c0b64423895664ee04c994ffbf1aed16eb8f6d2c05b46edf07a56d2777",
"0x9dbc162c39375cf6247de315a85e1730c451e59671499b7bab9f73ec47c70c2",
"0x2bcc328db7c571f892d3d934ae7c031792571d716f51494e8b10fad60b9f52af",
"0xf2333e3ab2c7a3c13420d4380f2a8fc867538db7882a5fa6a8d899e4981889a",
"0x1bebbd7c3e88b63ed37c373e359a741a38d1b8de608adcc050b051dff7b51580",
"0x101b1cfce09e9afbcc995aee85711574de371ff76a293ecb26b4796a16bc57e9",
"0x9866b876de53973d54aa01a3095719031e0a5ea78e26194422dfaa80c7e39b8",
"0xd34bbeadd10a0556a40cb0e5f84ffd96baa82621d7d850260115312fef1a5ce",
"0x1dcdcddcc0aa7ee28522e5b331b2805fb95a75d2e90f876940091c4c57345433",
"0x222013e1cb04b56d232f806664f4b950bee1c8965d49dfe59c7d9a7f37be70a4",
"0x140eb0a40f600989bc70937e2fb3db0e1cbf4ee953bb5dfb11c3ac257105acbf",
"0x1c2a10c01046a2bd06eca1a7850d8815dba9dcb5002710d469763ee12ce733e",
"0x4be5c9c1a16eaf24f0fd62603edfab2a731488c6f0066a29bdd96f8595f903f",
"0x2aa1bd7546c15d05452c1ecec07be1a96d1a916f6306f11eaf52145be3efc41d",
"0x1ea9d7108069582c4db4000fe9c999d50a6732feff50099ed5863996a0f4dfc2",
"0x244b02346c1e7aa223e1cd73cc84de1c6a729e722410bcd9c6c21c10f81aca3",
"0x818f382294f0d2ad1e50c908d6d58b0567eace452491c7e7e2ec8f02dcdf30f",
"0x1a889d417861f076033045816bd9d152dc38a64344876435c43145551e938c57",
"0x2a741e0f1842497fbf481fdb838af76f016c7c7f902d0f1cf91946d9b19b8f0",
"0x6da5a57ba1e1f0e02b65254d7ba4170ad9f42f8c2e209dd3482d9d100dcb69c",
"0x2b015d97e986c22f639d439958e5582192ae2a3c5e63a93876ee2cef01cc64aa",
"0xe6fd84ece440532b1d2a84794a2c0905d14dedf21f1cb88ef011d6d40a44966",
"0x180cc40f9b1a551d6f21a2616a31fb14ae3de6cd3f90905090112f08cd2a517f",
"0x113bdae7dcdb55a5a29449e0196a7ca19785e8f406aaf81d74f7c658604d7b5a",
"0xaea1a111b956238e2034bd82eb6566729d6b744738d0f907c24e91cf0e270d9",
"0x2d877c0d3637dccbce6fced14de0db189ea37e2192595d31ef7be35042b49789",
"0x64a1369e5439801597f5f4e2a95058e001cc3b7d449aa87f991c81219590592",
"0x133405bb6e5e245a0ec3785cd300ed55706f465191cc6af05debfc09ff323eed",
"0x228bca7f9390e0cfe1125af0b7ceb2b228fe7d373e3bfe077385682669dd6231",
"0x90116384ea569082bdf437341c03094a1f388ee217c0e6aba3987a55cf62d3f",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x2dcedcc12959aba1b815150ec24051fb4dd8440208b0f4eef706f364709fd64e",
"0x4aa0509e7a94554490885f0bc0055b4f23a003e14a2cdc51a8f1500b738512c",
"0x1ad3b6634a63d1bd97d8d745888387e7030be2bd5219c84de5a4b21f6e6d5c9f",
"0x2722ff91fab311d5cd493305ca2e581d23ab35103b7a31d7436fb4351e5167c2",
"0x1756e34f7af0be32dc4312c914ac48b60ed892e0a941866b5990c475326a0a08",
"0x1f9681a26d581ac87fc486d845382aa8afb31782fcdc16ae3e996bf79e8910da",
"0x2c407593aa6fea946d0ec1289e59dc993dbc1d689a02efefd916c42b56d4e056",
"0x12d5a1f35a3bee7be87beb690bef3b422d4db19f18f457345c5b13732213de41",
"0x1e444d4510e2cb542a4bd1af5232ab8376e5998f69193243509b05648b59e317",
"0x1c51186bd573f6d8e39dc9e5f85ad954ee64951ba2455dcd9f415b2ef44813ae",
"0x24c84617d0f0266fcf18464eb08422f51633915380696b571dfcd52fdcab3825",
"0x4894d26fbb969454287e1560c81f0bd33e93a0ff0e360f882f03621ffbb724",
"0xd669e170c4428089bb490e8af37bf2b4885f61f49154eaf4bca6867321330cf",
"0x54ead1e70a68a2a5bf0f9831c8b37e0c4692840a5eecce2f10842aa9ff4c77d",
"0xaffcbcca6d353dc0060f6c0e87a7ed6926d6518e2e20181e76b0ebc3e55738b",
"0x21fca621016a771a181efcaff53647cf8ac55c30813c7e1b7e0c54b1b14d4fe1",
"0x12f2e46957b88910c30c9554fd01780e074870fb9df0252cb735dec70dfdd6df",
"0x16baad45361a5052c6008a02803656108d8bcf1ab65f3d1ee9c866e2a04f1713",
"0x202cfdc4cb85ce703b7ac41cbf904593481c951f9faa52e44594c3d0aff5f070",
"0x2782837366366c2f9b943714e6a11097321394713577fe59dbe72a78f4d93741",
"0xdd863bc6e9a0abd947b2684abe555a269da1eb7a491ea6c5d3c44e0cbdbc0d6",
"0x2b1ab0a5b5516d7a4f31b68c93f21638a3bbb9ed321b9915412b422929e8d42d",
"0x247c684cc872df52c2396d52f5c691e459e181546cd644fba41843beda35f07f",
"0x17b09bebdffdacc6d3abdfd4fddeb0a1d04150563119def60d9ae9de6b13d0b9",
"0x20377c6ac1d667eeaf88e001648da149ea26ecbaacaf079f0a089fd6ec42694d",
"0x27baae8b9a93a09459ff4c88150b93e9fa3fdeb4d719d37e4fb03b29afde1b0f",
"0xe105b04d1d6efb0def9dd3f43655181cbe4a1ea329e779cec335e27190d0840",
"0x1684a9463b01286e5ddac76b990c6ae285c81fc4f7e7715b1ddc827e5caa82f4",
"0x1a1171d2f0e3c131bab4ed613fa111bb85f3605028028f5c1337b4ab542af356",
"0x228742f926c112c443bc2e362be8a44c49ed66e17038f7be297d51482c548ad4",
"0x10bd84eea945febb47f7296e5bb833378ec26f61c36d954b87a5423754b0d1d1",
"0x2d17cac96f225898038e5ec16560f6563f768a7e127bf10ff8ce1bba63d032f",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x23091d6274d72f0516c11e52c62a89e2c218acfcec269d8588246bc63dafd307",
"0x9400b7e97812bf8321b96b3c4bb695dab509934e197ef9393d9921a320fdc5e",
"0x1c9c8e269b7b5d2527e20b5d340f2978fe4f0b969e2b1f33b5ad8ace05931036",
"0x29bcaf9978fe301ee64f032f3b6c5aee47fa89a118490ece975e4765a688e277",
"0x2c43ee462e5eaa57409884a4bf82116fc74f060cd3ed87b249066bd753e57833",
"0x1045ea9efdd2d37654f2f419bc1c1e07dffc13a78e78329d66a80e816b75e0f",
"0xbdd990f09c0fbfcafb0ad5d2e7609fc639f4643262b9fe6064b1cd9f59fea9f",
"0x1cc3aecb65d88c117e077773b2ac321f1e35552bb82ecfafc19a6d7f58cca0b5",
"0x234ca75eda2b98da7aa4bcbdaf01b94a0ba116a7cd4def0864e27ba56623ac56",
"0x1e5844a479ef874349416efe4ad14c691bbd4d60b6a069ff6fccf0b4268368a8",
"0x15cf4b909eddcc0af84d45aa2a5ce40f004cea2337de82214b5b1b8bc25fafc7",
"0x21fcbaa23db9816f459fe5dea6035f4416bfea9e46b1ab150335fc986a5d3454",
"0x23096d193c542015f5ea72945e427601d8c5213652cc7bed15a26118408f3528",
"0x11ef3930fae556e5688b2e5c5b646a9bcf2cc8c9ed84699798e380534da1ba1a",
"0xb2804a0c39e0406220d23e5180ea34743b823259dc5c037e27fa14d97aa1236",
"0x293618a713ae76e001654396f1e7ce9885f07515d1a52ae6188bb68411cde19",
"0x2083bc523f48f2310fd04db4378e73b3e4a774c04c82721c347d841cd429c1ee",
"0xaf7b362c84812df2052d0e04ad07d830100079327567a741f0e33b05f20a3af",
"0x2f0a9bfa024571a9eaebb8b6c838ee153298f8d66282665b8d413e67fb9cfe75",
"0x8e5f97cf239846c4bb22151c4fc6b54f6c078339d48834cb674108ebcd533d8",
"0x2ad7be60b34c132d62758a699ee2b9b9902b5a66f4d0a1732957fa312693130b",
"0x2bd813ea81fd2be04cf74361aa9ec03890ae9dc9f2c62e392aa0077bcef5c39f",
"0x2e720551011b0b99d8a0265f870ec80f9b866a0a5f158a2baf5647f07ebe9982",
"0x2bf18b6a692d4c64185b59523fd75a045a4844d8df2d931c739fa453740b3cc1",
"0x1c166f7ccb69a59db6b374b355fb08d50eaf4df7760b2c3084b229e822d858d4",
"0x79b610d77c02e9a71628bdb9524d75ae9822b98d32f5bc8624e3512fadac097",
"0x1916de884fe9cac13806c4f7061488f0a57abd1ae403ab0257d21b48a0e411ee",
"0xf107fa1c9d4a774cfc10bcbc3b38fd7078e0f374b5e9bdb38e1e04d26d3c383",
"0x1b3ef1482c15923666e1cd5dadca82661bfec0a3a58f89e54fbe8fe2428669e9",
"0xa27ba24a2a7ad35ec53a125a0447abffccc68a9158523ff88cfd738b0212802",
"0x1a525ed62eff06bd139f3fa58d088c836c381a9ef859bf16d0c4ed2400463a4f",
"0x822eb9645c965d4f6b677191294e0b5c757d448ce5266f76ae8ff8898b6d0df",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x1af46f08f6cf19a75e2deca250a062244a541413cca7183cdfb8ff3496283677",
"0x1839ce61b8c72bdac116fb26e68db1136b21e762a80dc263434ceae93e71e226",
"0x7bcd29e7a46c57bad325631b9dc70f779746e4e3e83b6149cf7d65224299cc1",
"0xa58deb34a1aa7a97fbd6de55294ad6ed911731da0f1973bb30cc4e50f974633",
"0xc189862d767c9d55128b55fbad2c53c3c7f09f3cc3805404bab81d881c1f79",
"0x3f08f5db02c8c4197fbb743163fa98e215093b833ca0c1d709a30517f1bff67",
"0x1bd997c5ae62f46a4fa08c71dd8281fa20da177c45a5b5e0ea4cbe42a9d768bc",
"0x1dcdc615a1d29786c2a6b9d356e15f14b0516022da0c8237329d9ce31e6c9064",
"0x2125c1065d8c42af0dbc0d44be29723de30316bb190e487fac79c6c65180c6da",
"0x2a9dd846b9a9250303ea18da7dd2f67d8525074d4259656b9d0def7f2ee018d1",
"0x2a1da460ab707f31653862ab6df0bfaf474d39cb909d7b84314482ad8015bcb8",
"0x2f4620be83dd42a9810cef816801cd8a77d59146753fd9589a4437f43c44e295",
"0x2390bc3ee228ab2dcae07fd77d2f2b82b39be4a3fa9d15a82678d487a4ced7e3",
"0xa0245ae7c93aaba110979562f1bb38e2d6e47f8f58146c2e0af29a42a8f2225",
"0x27e3d9f7c0d6c32a9db8c79a3fff7227825679bac449cc5567f21edc213d94a9",
"0x2172e74151fc03eb201e3e300b2a085798e6d27426da9b9e2eceac40374c95b6",
"0x246a685246a9403eb01cdb380b39b49b35d649136870954260afc23e51129460",
"0x4f050f7043b183cf35f65e5590bd1ef9b1a88b9a1154e5a6b48b90367679ccf",
"0x1ad58c70ac13714b721c7e1e43474983524bf5ed75ea0a375964c17eef897acd",
"0x9d3719d52186421cbe870a8dc16ca12d479447bbc1b7209991d2ada9cdd0552",
"0xb2d605b80d2d16b8bcc936be91a9b58bf372160c58214d5d05340268db293e7",
"0x15efc1be172f0c1cf80c28816163d6281796fe3f767449dce700031a9809382e",
"0x18a72ca7580618a6772dc37da2d0ec3721130a93ed2baf7ee8a458215351c5bd",
"0x18495f1fa2b09573b0122a6f3bbc62dc8eda0c773c24cfec946631bd226a5222",
"0x22835e515350739783c361cb745419032be6d7a16c27cde776cd9a43509d5027",
"0xfbf1fa536a4d74e1eb517dcb715dbd57e9c879fdd1184956e1aea742c4b0c11",
"0x1bfa4ad591bc024f156f69c1c6ce033e65507f6f2a1b50f9a370ea96dffb4fe1",
"0xb48ee00c1a3b873da040822c8d84a7d413b07806c5ef6ee1670502a2797788d",
"0x1b0c2c9ff1649fda06155af9c401957dad06ba11c9d6c284ac3d7f6b2e02196f",
"0x11b9857c7ac1e55d6696b9323eacd2b75e8e64d863221f4c49b50c0af4ddc907",
"0x4d2913e434864bcadcd0a0f187751dbcfee68f8d42eda00afdf9fcc254a9297",
"0xd47a86ba4e4c33ab37f00aaefefacf692c1baf9b37db068097f619f44061fb1",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x2ee08c0e4d7f163fcd113539b4be76d5b8c6dcc306994016e2f50b4065ac0c65",
"0x2e4ee3771e570cac361666fbb6230033f0d2e5df5a43207f4c8c4642fc9ca473",
"0x22e78c9bd18311d225b9f88c117cb18e658747d500bbbf61c291fe7ebe2bed",
"0x1b015cfa490fa705be3b9f5645d4daa23c2098cb0939f019d1697019b00a4435",
"0x153d716532b1856b425b07c5cf73f7ec4bad3458ff9e031d6c191da0c5150f5a",
"0x25ddff7645c1cdaabb52a3ae26931620a4186ed35cb914b0cb76bec51f7b561a",
"0x21bdea71747a451c7e825e508ee4c40df40404c011cd5f7dd62ced05f3841437",
"0x2feda62db255b655f3be96a4847d2f1691ce658456697ecc602589c3ff0674db",
"0xd3187541007936963cd4bb6c93596b7cfa56d828df39d9f8ff05d934def0ffe",
"0x26e633f970dbba038ffa30d735ff34541108e2f7bc0e58fb25b8d038eb574c1d",
"0x23c8473f9504bc04266fa76bf7064d8980fac8454fbf44f68c5e93fc37bbfd9b",
"0x187a7a328ebe30f3fef7620ec582ae3b457ed1d8dff8a30d60c518c1d3f8502a",
"0x1072a4199dd532ae3d36f2c3f07359148be4d81ca1f1ec06bcec2c94b50030d5",
"0x1d9c9c64cced19734c56f62f6adedccf54aadb170d499a91617c7bc34f0207a",
"0x1b09945179822511bc0b3b20afb76f146b119051e2c6c8f5b9dde03cc761b170",
"0x29d1379f40c09d9a8105f1814f9cf4cfa8419d5442c22575a0f9836ff6728216",
"0x200809b6e7114084a23b259cc6dd8d4aa9beca3ee806557a250f98523363d583",
"0x13169f87f4d5bcdc80277fd4bf931744a09d4b0332e4e54dc351ec16f256db24",
"0x22486dcd2b50c5a6e8b08cdbe012907083817073b975a842751aaa497389a092",
"0x986aed7b10fc9cff4a80d5e338f69eae4aa25b45d931499fbe7080fe13a841",
"0x2a3346c974a7faa8f021c72b4b516dc527033dd96dd87a29013a54ff235069d0",
"0x1ac08487b535338f18f39bbb2410e0c04feed1b023c2b31a69c42843b46c7b4e",
"0x2db4eb2420d57123dc86f82c289788f4f5882143e70237ed7aed2b318f2f3f6a",
"0x179e156f0f6229e6259dcb656daddb273efbdc57b78b1800b3fd492ad4e2ee85",
"0x18f1ed42c2dca995ba6b2b418378159005da5fd6d46f31d424e404fdf85ecd0e",
"0x12d1ddb3125c15c61e1a07709ecd1782cad928312bf4d32dabc0f3244b98c067",
"0x19a555ee9a57b0f249f762e63f02fc9dc41421569e40146d27b805d6926dbd17",
"0x22905039eb92f068da4da7f2bafe65b1743fc2ac15dbd1dfb50b6a8b890fc933",
"0x2aad30b3fda588c43367320323c66ea6cf3137cdcf1306e93d173f1a5f5bab0a",
"0x661d95dafea3da65844c73147d86b8a152a0c737c6550d2a590597b6be28986",
"0x149f69bee6b12529d2a1332a22ff6cae413b864da5232181dce528343488fb9c",
"0x2f40107da2eba4e1d816cf7cd488861863a460e5e00780c3c07f56c946096b24",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x89517399fdafcc090ffacbfa0f82b1a356c182a9b8bee5a125afa14416693a0",
"0x1eb0320ce68e5c0a8b9b6c8ceedddf2eec4a8dffc775f43aa9545f4432f1597",
"0x9b3b380291ed46dae5ec6779af517d4c8253ef609e78a3611e09a6a9ebcfb76",
"0x2712ea45ea88a54e4899de133f9d02454004209aea0434ed07cd33c9305c0107",
"0x13e4cec6c5fcb7a55d2c5c9e0dcab0ff3a3f7c26edb5c0c5f5bc00c036817e9d",
"0x132f73f3a5a70fe12bd077c340752e6837ebebea4e7e8c06672c3e0c09aa2436",
"0x24f5ae848c7765ed4cb20417114c602e8186fb02d209b22262ef6b2f9f4c2d4f",
"0x1f3203e2946c3e784da190ea76628d98ce46cec50d7720c6289b9a10b029102b",
"0x405b17b0927364ef8a190472cf69cc8fb91338ad0a037a6ccd6b71d3d8a5721",
"0xd7be909c6d203f7ebbb26f688c104599e34edad7bd4fa7fc11c6be8d2005234",
"0x23b843266076f360c24e39af50a5f74adf3ba002859b6bb7d503abf45cc9d338",
"0x12ecdca40e7a5ab513a78862d77f90435ce4ca0835a966112e42457c93520039",
"0x248096c473071c7c2d5c8dd84006c245c6152e0f86221d82f9d0b2ef68a0c1ea",
"0x1200227f631558e2d83c5b6c386dbccd8c019b327190ae6c21f5e6ab44bfc644",
"0x1d757abb199a6c84d960aab443cefeb6d6e433b5cebfeb198f803eee3effc0ae",
"0x273c19ee6be35b4b8999349c7b7b83cb57aa165f0b302a2d852be61e83409d9d",
"0x2d1ca26ca5d5dce1ea42db19426bd074157d35e28ac98e9d0e25cc710354ed88",
"0x2ecbd2ea29341b707d79a20744740982390655279542f9837e77f89b127d4a6",
"0x266a6643f4b1c323fd22d8bd34c4f9c431032f05b0c856e107d92c70d4bd5134",
"0x1062e99d5dbee4ab0c047ac41ccb0121b492e604fe10e2db4ad43ddf677f4266",
"0x15f2b18d006fb5f2bf5801f8973bb94ec3d4b03e8d656a59bc09954783ee2b6c",
"0x72368c0d5eff7b59f5b07b27540e85ea042a1c80ef063554f53982bc581dddb",
"0x17aa521645020d9a4914e5679bdc70c0772edabae0f82c0ec5ec29289e0cf286",
"0x2f968cd2126db9260be98ac5a64250d6b1dc60db752ce86342dea9d7d6eee209",
"0x1824ed09caa77169c3188a0a3287faa284ed7a51977826f1f64a1c2be32c909f",
"0x2b8fbabf299d9da38fbd033dc61444ae2500c1205b785a5fab8996dd9fd2ce68",
"0x1be598eea60828e10e0c4cbea95736584eb83c6ac8427320802d9083f5e6dd31",
"0x463af34caf20c7b2cfc3ba540ac128fae440690c1fbf4bd815ea2b854183ea5",
"0x2dbc1aa280bb43c06573fd90ab5f0530ad450b992bcec2797ce0adf60937ebef",
"0x2aa7cd41625eeed2f8e460ce63d2bafd64329959d40cc2e6fe1d5c48be5c501",
"0xe3c80439636f2b40b1ed8d33f792f2a5d2e602da651491913ba45df63e777de",
"0x3ae4d78e90fa89f943dc0b4c56d32f5c846734071ea1bf6bafeed9e83f40f4",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x1f3ba6f2a0ace67807ff54fb3752a740b90d4098ff54718df07cf6b99b4a3611",
"0x2b2d8688621a0b62968c64cab0db27f41a51b32a84980ef31760d2365d2c3c31",
"0x27ecb287f3d9aaf1137d4058abd749febc280bdf70dfb7e5b61a7efbdb32371a",
"0xda7a17691f64048331fdfa135dc56a636b1bb8e1c08ba7cb06e9bb1a8f5dc22",
"0x228e87cff48ac1eecddd22fa3f50214fe0505cceb58e8aa515a9b21a22cde940",
"0xbb1e094527421fde9a1229ff4878eef766152df2998fcfa44ac7b71906bdefb",
"0x2162e5b127d7ea5fb675aa6be31013c2b9d9429324fab62ba9ce1ca21b3c5f2",
"0x5e7c2a9c59abe90189615a15ad93e146c27642aadc29e4e40b8dd9cb735f4e7",
"0x3b7e7cd0a61c8a953ce16bb6adf8f61f49b560e1991497ec3af678413535e12",
"0x2b48a6d7de08553fae906852fc7fb1661e6f5036185a3f1a75c9a9abd0c784cf",
"0x1451c962e6d5dd24e45dc7e078dc64fcf59634073c13cbdc5b8792a51ffb8e37",
"0x22aba4d49ebc306f4b7b4e2bc7b7a1ff4411d89890f9fa5ba2408cfdfbfd18ae",
"0x8edd76a666b9264c34b0069c62d2cb61bbeee55882ea1625d3e178544cae4a3",
"0x1cfa9bda9fe33f9db0b1d190eea07fb0dc6855b74ef166743abf80aaa1504fbb",
"0x21825a8220bc43bf14b06dbd2b92424547a3fcd0e8b0d7ac7543f56382f98732",
"0x22a03c9f4361294621f902a43008812d5bfacad871172c3004b7b58126690dc0",
"0x2c4d459fcf7b58e7d7308af04d943530955cede00e37d3ed491b86f05c49beae",
"0xe099659a946824830b1fc5e17d4d60343f2879ef488fa45a9e3b3af3e80a143",
"0x3b256a5437fa8edaf6d7bf9a7b2e695f06dcbe80aebdca4f30e28c8c4a49882",
"0x473c1deeb016648a6d5f3d0fa4bf31d1d4b9b6ceb0c7f4a76051515104a617d",
"0xa21735e2b1040d8dfc4685c5c5a42ed07a02c216465ccdd3134c157361995d3",
"0x1a0b96ee186897808d9130525778e13d2259a406282456b2edf84434e081716",
"0x110d5d3866aa52ac620b233dc0d892c39f9e376307a7310c994c8aeac1233f4d",
"0x1fa9ce9d08bc9ef43200929b5512236852d4fdfb607f5ef24ccb666dbdf053c4",
"0x8b8fb57cdb79ddadf41dd3da20efbdcd502e89c8e21323ec99f0aa99b27dfea",
"0x20e451f487bf7f30afe6895258df980c732440567ef2be720f683b4d9bce93e4",
"0x18934ccd6b94d3d27af8fcd8f02b3b2aebe21465b9259c7def51799f1d971901",
"0x2502b2fcb6acfdf7bfdda3e968afc622b949e55d567100c4007fa0b9405936e1",
"0x1e22a9af8fdfe9185346e22a28e4fa435f64c8e0f382ef20f27c0f19df51e520",
"0x1bacd78770219cde479b8dee99d460c73a22f674ed0066ecc55d2344c72a0fed",
"0x1c5dcc7784cb1a230304a6905b05621618b89498a827ea77293b96d8fad9fe3",
"0x1514f7a6184d2f5de98511d358572d7d89d33bb2c6d27a5fdd768178af4d7789",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x2871dab4aed8cf27bf0e9a2f02f0e7f9c46057ea80fa64d358c4acd2bfbf35ca",
"0x16b48bc071b2d9d75c6715e959788a5c2c634a7ee951f61c6c252f9f4c96e139",
"0x2423991e2cecb8c7d0cbf1f6c75a96fdd9cc3e1d3404891054070888cf58c027",
"0xaf6489dcffa0471166ddb75d46bcbae57d239e90051d360100acad86309bb34",
"0xa8fb4c80f28764fb489926f032e0f6bd6bb878ab5632b94e6f960e841780072",
"0x2ab3c31cf9ddab37f0742aaee26190292952ba391eb6764ed69434d0553085e1",
"0x128a537033583b876442e4b5274483d0e766a01ee4ab310839f6d8a66c052ba4",
"0xec7bfaa62f8146ef2bb13af733cea64631b21106cd47d456823b3da92e41530",
"0x1d26f27900c3cf2629a540caa3f2fe0896977782cebec4a7c5fc610aaf9f288e",
"0xcd7296fc0086a3895770b3d0a7e27302c80383a017e432b69fe2503001d14d5",
"0x5efb5ee8e22ccf78945ddddeb3f6ab0ccdd2980aeed476369011dd2017d2cdc",
"0x2fd3058e8276c3e1044102e37c8bac9f9ceca3d4898dec5227152bdac4876063",
"0x3041d0de272cc4007331a1217ba0462b41f9396a251407964e90f77d20d2be54",
"0x22b44b6dc784db7a40c2e670800e462758b5249d78921516293fe1a51866ebeb",
"0x1472f9c6b744713482cf7c9f2c82edb0cdcb81f238ddb5305a14e164909a963",
"0x11cc50e647086a21c18d924e5cb407e0895d44337b760d95fc1254b690b857a8",
"0x1f6870318a97b3458482c2b2e8f4896d1bbfab317d95478653847bfe27f73a56",
"0x527b77967bb4404a5a78d8e449466ea5dd85d36d29792fcae4ae26f30c39253",
"0x114776906608a453804a6ab3ca1fb1357ef1e68772ce78d4fa53c219b47c4ecb",
"0x227cabf1187a8e8c8b983e4452b407d3ad0820e9cc000ea38d2298cebaf5ed10",
"0x2cdb16e7154d3366e88217ff94382b8a7dc86b47ecd50620b65ecd5f98aafd89",
"0xbba92a567cd15cd0923cb79ec491f17595d6af80463e9b7e2b2c9c6e662fe41",
"0x1621a037774eb85fbb2ae136893924aae5ec0394764f2bd204e6e3c2cd053e66",
"0x1b2f4b4974fe9c4d2f6ba8f3b51084b886a115dada554e313910e6a0a2a736be",
"0x17f058954543b8005d9e5cf0393b669790076e523dbb5bce473d67d98b4660a1",
"0x2a131d0e2c1938f53bfad52e5fb33120eb12d9412dfa7c2c79b20a4a9e618a96",
"0x1e1f17b82c8ec06747b63629d99e72f5f3cbebe8bded20c0bd7fcd7ff8422321",
"0xf92dae5b5070535247aa7062d15dff0dcd533f7ef798556b1f704acc72a1a91",
"0x1e26cb1e67c4ca4884975a5dbd44df8c05f6a7a813d9c3267fa7f735cc144db3",
"0x278e469316bcd00829620e438af377734719124f83c509d48472294be9910f9b",
"0x2d931e21c6bd70dd337a21eb006cccc570c8e248358e256655d4eb409db88256",
"0x1f3aae749c86c139151590615fceb9b55d78b0436d6846e4ab2c30abeed628a6",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x164cecda3aec3963de5deaa919a419e7c3e7ed67b00ed3fe37c941bd3aceec41",
"0x1ae5c087043dc196e76f2c1fcd004f07bf7622f91480c2f43dff37466824e28a",
"0x206d121a5d5c0e50c6696a4f6a3ce23d86e842db48b98006111cdf9eb6501362",
"0x273853516d030f966503bed07d9bb25e9a78daaaa8a16dd46ce4ead8b0ceb92b",
"0x2a473b17daa8052023496f81ff3471c76bae27ed780b23b659056288f9c80e8d",
"0x126700ad12b26c87c8f7c90e8a6edcc613530f09d04258d1d0ecf0732d143cf0",
"0x70f6900e211a2d3ed359a44c1949447264d51580679fa84dace529a0de19d42",
"0x1d196536166aafe99006756cbbb15e621903ccfb19346cd45ab951b01348abd1",
"0x16a6413bfd363eee8d28cedff00c8c86e15745dee50b2ae15d45f4d796213d15",
"0x14fe39f6bc1fb0e0a41f9cdb142b86ff95f1003519cb3a77a05e96a30153132c",
"0x2f3719862194ed2deca377a1f1b58eca9aa0b726d3d82859ac5acb5513159f08",
"0x2ca365f66b59cc38857d65e1ab5a841574d5bfbcd0f9c2607b704232d7d85a02",
"0x1823d36e1b33841eb34a4601668596fe20e08c28f8772ca3958fce53be2c6c20",
"0x15d27279b7f1b7514d007345f4702852507d07b64a2f1665718efe5b74578898",
"0x11b3efafbd53f96ed7d09373534f299562335045a51e43cb1aedf4002b7d6bb2",
"0x12a0a91a6025546911068e6f50fdd1c6e368a52afc769952c4fbd9734f5004b8",
"0xa9d7fc64fc90b912b49748faa4a4dcaeac8f3e15df09fc92f7066b55904538",
"0x15371b75e8adea4894822544c8d7cb6b670741aeb1f1c465e35786fc9c645df8",
"0x25fb2eaddcde34519e511e656d51a90db8518b6375646ff92caa4a914007d517",
"0x2dfbb6f1e212006c39bd89dd4a6543eb0fcf94882febc1c958eb81012f17cc53",
"0x29593bb7f971b987c1efaaf91cd3d70478b3b8f519e210d109413adc4de72807",
"0x134ce1956a848bec4ecf9b6033710c655b425fe7a2e42a9143d989c876e07b6e",
"0x232e589b327424a374dcc64152ec03029cbc6b1e6935e1878c89f7daca2fb8c3",
"0x2ac4f4d9d1ed520e21fbfde98b4e9169aad8f701b95f7aa6e1a2799d72b599b",
"0x13843ac1a48019a500ac2aa8313a9143b045dd338120bfc4b4e91c1750b27bb5",
"0x123366fe683fee8c58bfedfa072912dc1bf50c906115880d4954763e648a7c92",
"0x147bc77d1f7ef7f0604a669c3bbfa3aa535711a43a8ebc25f786db8c951dd7a9",
"0x2bb5eb86f2837f69911dc3afe716c5fc897ed54a1ca84c7e473a92012394166f",
"0x25e9535591df883d7704dbcd8ee87be36f7a40fa9d360b8dfb5a38892936d47d",
"0xcf22a6787e93e4af1d585205f039fe30280460e02c64b4aa6a0fd361fa09210",
"0x15daa89536023119f4f32836140088bce9082cd32db18edc2a4b963ed61665b8",
"0x26a41abc8b0969da23c9f511b4a47a978406ed147fb0687d146ff73f0a3f2908",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x24603e3d523263ba69d2161f7bd3c01b990b96aa479b47d8e7bfda5779b31a70",
"0x6f06827f0a52b2434751f1bd23bef70edc803704890114a33bc1b173cd3fa16",
"0x18821acd1d1a183b3974714b4c15b9aa338da2999ab219a65ef04d6538c9e681",
"0x25d1c75c19bd34c31e5dead0dbbabecb70a1952af3b9acc945e6bbb7af79ab85",
"0x2d16cd48d5eb9d3884782960fc5f27529562190c5c9203f1b0b220b07ebe2251",
"0x1bb2eb154cea451a7591bc895cf9cb65658133c6f63533a7b45362197d883e67",
"0x2c1c099ec563345fddf03a6c54e2915f1a7c890b6554cc496856553d2b2173c8",
"0x14de7c8a6f75d5c098439608aefd9d3f2224fd7ff2d301c62ae728c13cedcb56",
"0x2a12b1666687a8f3a14e61590ab004587a058e42c5f45840bcf0c7a03487f34c",
"0x124f681268028f4ebb6678e070951caa96bcaf09350bff4f72c093c2973d16ae",
"0xc61ee197e59676973cb1b0dccda3d618981b93d24285440f223146a7aed3f8c",
"0x1d6a13345c16963d0fc372a33a3ccb9d7113e42b8336ce4a0cf68c6c1c3bc24f",
"0xe90fe044265e093e82a00cb140c9ec848c3807ca216ae5ca0608b360547e72e",
"0x28a0106ab648b3fb1963e8b51f6a26cce8ab62d75ab26214c389e0c719737002",
"0x1903a3f14cccc405351a0a3ba23106102830c134d14c378226d3a6599e75527e",
"0xe69b6a45f98dc94d36e7f80045e56fa8927416f96bf9b2b603c32c6d0026730",
"0x24028083240f0415ae27d250b5e9d2611c5baf6b83ca01c5fa08b2c3984ba37b",
"0x10b97d7b32b7541cddf569d3fa3ba4fc792f67fb4bc8abf142bb9765ab3fbbc6",
"0x18514e6b6663e92d0b702f6830542f841872a9865e8116b68bf03d55352ed948",
"0x7e84a91c22df5f22e465c35f665c6a56c7d41e6f20f3d63589aba4a168981a0",
"0x24c67c3debacff4c75f5ab6011d39a6ba905a78980603f9b520dc5f07826d2cf",
"0x2302d72a48f7284aa9dd46013f218acf1551249c22d8331dfe48c181a06ca28e",
"0x1332fb9ed5a5a86c5f70cfdb899cd053af1cfb9557af1a5137be1e727e3169",
"0xecd3e7955fa603af46e69fcd1699d5d57db5eac3b9095c0c7e0b6d24dc7f542",
"0xb7012f95446a6e56b35ba5feabc8183ef882ab5e99b48dda6a00aa4b5282ef4",
"0x2d9a9de40201e8aedb6c83aa64d6801af749b464ca23db2a743bb6df13c72986",
"0x29bd4a19c267732d1f213a478c9c677a47804a525df520ae995bab6c79f0c375",
"0x1462f5ae05431a649833f4d33d7199c6af0a27a33c6aa74514d706bc5facb110",
"0x291f96083043911e45b87995cee2d52a0c4c1f1a2537b6e890d293b1fbfc05da",
"0x411cba90e608a51a8d3635d7e842ff58c4137db7eeef0ef16422402b588766f",
"0xf7b5ea5565816bbb8c16bfa946c6145d607e773ec10b74844511161469baf60",
"0x338cdfab4ce8fdc9f081c77f3b7a58f5331d3220cf548229c8bdc9f5e49baae",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x124f60ff00a0e62ddc0a356926a83b8892a7fb8602d5d3b955f41f9134953107",
"0x7ec673039830a0f06701ad707de762e97de268ad8218f4e771ccfef70fcaad6",
"0x740e5d063abce69067b719fb33e30e4b3da7b6c66f26bd2d7b5320a04dce396",
"0x7808acd3ea0c249f88efc1360f1c6e539561f31208e860921311b1c29b598a",
"0x112bf7f10ea174a939adcf38e91511c7c00990bf176d3478ba5c5bcf9c46d89f",
"0x197b19b25c2afe93631a78cfcbefee4d7ec4f7a5e9c87f5aa30861aa5f441049",
"0x1ee3070e40c0e0e740a67449c3789b6b1f5b64047b9adc4a1a7f9194a7ed7c62",
"0x2ea7f970eaef265df0ba7d65c20bf474925bbd7eff4c9af087c38b5bda5c8a40",
"0x87e362b638c1e17cd837e14f954fc02cc1a020c62e416bcf5106c0e84a42e4e",
"0x66c70edf98939e555fdc29bc6c8db703afd5f7317a97ec805c1aa28758081bf",
"0xb7cd01813db20a6c56bee471eb16719fad273719aacdba7c475b9cd9fd6ed2e",
"0x1baef4e284700ad99e75947e51988f8b21b306e85552c9586159cd2fa62d6208",
"0x2d70435bb7b0d2242b1bf4cfa9bd48cefa4f4949305956f07c6ce9f40a4f63cb",
"0x2c9f4b07125840d0a8db29b2c8f723da914abd2357de2d0bdfc761ed1d2cb190",
"0x1a68c6eecf6121045900f2d146f6e0dc1ffa95afca0130f4023ecc854ac90979",
"0x2bde9b2172e01e033c899e7dcb6910441e0b26ba61885817c19257c67a704459",
"0x196364688be6c007d5caf7f0aa60dde7a9d4df5a72201a010866f51d5b8e44d1",
"0x5e25bdeb203c4c1c10272422c44f883df61bd873a1181005937ac6897b820c1",
"0xf9392975fb3baceecec89ce8dde33d612f7b51809c70c79560e5aec4ea0f97e",
"0xb3a94a0d7fa6808d540ea7c94ac84329500fc61c1c921f6e1a02be72e0552e5",
"0x57f2f77f6f39fcc309ce2227ac987f88020c1156a521d8b4a6298ea3bec1f95",
"0x287141748ee5782d46d91412095b8ae8a817341797734ceed2fdf000f7bd2ca6",
"0x1d457716f5e27115f1b3bd602743ddb625242575ce407e78cec5c033380fea0b",
"0x1393304221b7afe064f39562a25a21c896a65c27cd93ed89f500e9eb5b39b2d7",
"0x1000b0acd83b8b51113119fd1783d3043017da2eb32954456b6c61faaa2ae29e",
"0x19c9c7938f860731025bd2bb1cd4add4ad7389433683ec7fd1c2c0a40840400b",
"0x218bd78be9fe83b8814a959ef810968be0cd8f20ca7778496f52251b1a5703ba",
"0x2724bc9c179c6b663419051e901b45a3c36d9f59d63f41dddccc120dfc3abbc7",
"0x1e9130d0ad5daa81b807d86cb977eefe449b9081cdfba59bf8e1b43bba4c1077",
"0x2d75c84b8825bad22720289707f2709c595d7a5ff8df9b2190359400d2e925e1",
"0x27628d274cbc76c2bbf5005702ad14bd8b44ab8cdecc65c2f323f232db788557",
"0x2a39cb3d3633cdbddcd0b7cc3744e46aff3450524dd573b8f67a3c7e3b9c7a09",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0xa09afb1c54f1db4544f6c0073aa43c0fe17ddede4eb2e965a0020b3734b3e40",
"0x18c1bc97aac4cd9735588413be17348e71d1a7d14a7bf175c8a48b5b85e9b54",
"0x1a3730dc03e7f844e8876edce2a2d00135702da038a3263faed39d048af8e466",
"0x25176e26f891655e4ecb9a383846a2aa15bb49936c1fb568519615a0d10327c",
"0x1190921ca2c2054af278beb8ae7e902f2f9fc032f1ee2e661fc045dd643569a",
"0x27301f456233aa2eaa5e58ca623471400a5885e066556edac068e8187bd53fc",
"0x14df7b40c8531784271338eb6101a7c565297bb9fd160f5633d1fe8a24f22b0f",
"0x201b7bcedc3f893285dd6a8d70641086091db277c47d721fda35ade3354d3756",
"0xd7ec7dce868dee03f3cc914c35bd061c8c075ab2b3a24d63514e43e61137f25",
"0x1f4366fbd21731723a6377369cafc1ead066d0e96336a6c0cdf44437ac6999f8",
"0xd4f720bd1b1d8dd2da533015643abbe2569c2142b3827f769bd4c8fad9eb7e3",
"0x2555325b985eb37f57ade931b07684d313c5fd72badc53f218cdf3637e28ac20",
"0x19577c98ebc619f92a0ff099cf5c3c78b18f4e5230eae7db5e2f88a18148bb4b",
"0xaab15d18bc399969878f0303b29e85aa3ed5b5f0d302efa97073d0580bcee54",
"0x15a5b74d5f80efff02db1df507fb260724238371f9da217db249b80650fc2ab",
"0x7863677bac12d9c8acb8e235fed719eca74497e0c85f1191132e72f877b4594",
"0x4622dd48eab686a6312f00bac77e56ac609832c1a3710062e2d19fa13b25059",
"0x1bfd373a0dfca60070a9cd0c5f70106366eafac34d74cad65149841c31e57659",
"0x12c3c104d455c723c30a2582a9fed0478089ecdd6256a6a14d5dd3a73e57e58b",
"0x1db62d5a9783dd6e3721980161c8e9f40b29066471ec2bb395b4de71521c9337",
"0xa1338e33d0d79c8c1143c1e94407be350de016aa190237e0fdf6aad194ec3db",
"0x230cd81310a9978fac2828de4ac38c19fe35aab2179f1e83a3127745dc709846",
"0x1d46545374f8b8117fe6aafbf40c162cfa3b13f7439191c43572ff8ca713d874",
"0x2f0bb6daff69ccbe41e11635d1a451816c1a39e3baa7359493754111c0d453d1",
"0x29329695f168370e3b3156e3ae2824a662edb778c2a23eb016d135caf72cd9d",
"0x1b9f8f4a4d8cf0878c3b5b57e82096972b7d773a197b6cd412956d9994f42393",
"0x1150ca485896d1fa88445f18deff9e46639579453dc8bd952deb10c53fc69025",
"0xeffc5e98f228858e49ca15bb98312385cd06a57a898b82a561f6fd9b5af1170",
"0x76a9c5ece422164d7689f5863a3752ad3681a28385e022c66dba35b8c87df7",
"0x1ea44dc1364ca5d1a9c217488e96b1138da5eaccfa62a3418d687da1308199a0",
"0x22390e0fb5c982881d62f7af9255b2c677559b525e70e1e993120e39cb386fd7",
"0x283880c9af3c5ee2ad175b97a9110e904ea6f1172b0abedd8726a1942bd21baf",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0xeb1b0ece2af5cde42043430b9c70ed679c2bae1000903072551ecada6dc0a6f",
"0x2da6e90774ac9bf5a07971085698cdff633c28eb52f2f57935b712c406e37066",
"0xa8125b935e8da1db2d1ad9a841efb10fab0966b438e0a6dac204ccc832ba951",
"0xd4e3b2440602bc4d019da80f29ee2ce86a44f098e32e6a47c512fa73173eb0c",
"0xca753aa57fa52ba572587eaa47c18ad91aa498048483d9a019457d014ca08e2",
"0xf9ea814187bc6dba58c6f7c1ecb3dbf62ab2ea29d075afb40fa75fafda6ccdd",
"0x1625e36facb0ba7558f4163e2f69b482cff1002b6e63a0297dd035b51126e214",
"0x1a8f5986c3af479a950f2f78c1cfb9e6eefc693568db3215ba3da8b95cf59997",
"0x2092ce2830d91cebd97e69ad4aacbf5947c8edd9e809d33aadff0a9c44c60dd2",
"0x2c34396dea567e1a3b6bbf21518b8b78bd08527d955ec8c3f71c153351975a48",
"0x27ef5d907c12b2473a024ef1ce2bf3770bb767118ab957911608ab99f5011e3d",
"0x1f290b20bef457eebf0ccce00bbc39ea19ea4c2625e54e0dccfe3db112e067d1",
"0x1db57788c30f2f18fff3908ce919ea10ac851b862b505246e81d61bdb51e0f70",
"0x2b041dbcf7846c4e72de5a0e5d201fa5306c8e797bc0c43702dee216497eba23",
"0x22a31ea557261176a10f8036c7f9aa32d7392a33e64ed90dae1fa3d9800f0077",
"0x2eced0082a7ac90051bfd190d97319e34021bd571d994f4fb633c299759876bf",
"0x171f3f295c67c80f97bb0678ad05c216e6df17c46995c7c8f801811b47f75db9",
"0x26de076f9b9cd4cd8e7f4373b3569c9c2ed867b182be695528c71e1dfc34553",
"0x18684d0ad8f841fc32151dc50ef602e4560b286339d9a299e6451d535596f41d",
"0x17baf0b6d89621ea69420282c32f94ad3a52db7394baaacc2a1ca3032656b834",
"0x19bad38eaa92c43ee1bf9289e9e66e32a2856a141ef2e36868975617765c0a13",
"0x52eda69d77234815d76a5a9b04e8f7245b9457541c4145d00fd263bcf9ac56f",
"0x2de5e640d8c2fc3acf28e99df17fd56dfb91fc1091d304773638a453037b17b2",
"0x7b075e004bfea80e69fbe1c460586a50b260289becc26cc92ea6ee18ad5c897",
"0x24ebb38197057bbdc006a2ed6d1c280e500539f98dc53f83c2b58503bafa8ca6",
"0x1ce51573e24a435d75b654a1bb80df8ec38f12bf9660d2abad366ec89770c3f8",
"0xff21e9bcae93244b09bdee7feb1841219d14b6d9e8ce6c5aa07915b5d81903d",
"0x9f7f1cb180b8111b6a3b22458cf94dcb289ef8addc4adcba913d99567bc43f",
"0x228a30bb9161835a3ca58ead6b9752d0332fd78608b1412a402fc045ef430f",
"0x15e9b1e05851c96b3bd7f09459669d852e65623f1b68f9f597ab7a0dda5e208b",
"0x196b3d652ca59d59663696ef17988ba14ada02ec506cb7e4caf2706001953bec",
"0x1c8749855c159f2b4cf83932f39f2676dc56258d3cbfde31d526b4b5ae3eeba0",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x221dd8a7d495ade1dfe6a6e119845add28d4fca1736fea74f367acb2f0c2c6b6",
"0x4b42317716dca3c5d82adef996100935cf38279042de9b6bf50b29f6a202f34",
"0x475894cb64dbaa6fa6a2ddb74816670bde6ed2bb1f535a9d5f86348369494c6",
"0x1c3946b391ed069e274939cee866a5f3d4d7dcd44bd28c59bceaa7953ba45dd",
"0x1825b793fd2ed840af6848d88c10fad3c14234a7dd3834121965a11926c5ce5e",
"0x282ec6f6215907e0cbece72ec50a5a90a2f17c3f514d85986b9983bb68f73cb7",
"0xd8f7801683a6488f5d54d9289e6cf33631007771a3580746446e05d48ebb741",
"0x1855412ba202a2a97b4bc4d141fbd547a4019f23cda4da726fd1aac4d409f48",
"0x1798f1c6901076abd77d7c40b401c93bd711d58af1b975106de72a6f6e2b250b",
"0x2edd97865d7faa4649469ad96a5e0542c35628e903e2be373a0ab7f1ca5a207d",
"0x13676cd7961ec25b87f7ab8b623d2cfad86cb66236386cce469386fd7998d956",
"0x16c0a91e9e9c2769401f26728c935e467693afac35f6476d7f45c3593496a4bc",
"0x29553d069f113822ab939a807c89614214d5866a2fc17e32d21c786ee26cd91e",
"0xcb66808581fe375cd41bb5410977379265c20dfe402d5400bc93ac24b4b03f3",
"0x243dff648c9f0c7654669b0628882c9309e5bc28587cc2b239bae21dbfaf03ee",
"0x2e171191951cef52833064fd4d4067816f2e9c892d7ec9595fcf15286fc58306",
"0x2bdb95923550209fa7cba2a746f0c2681195b0eccc5e6c253227b62c657e662",
"0x85aa13a52f4b623dd516a6a478fcd88e30c39642c22f7dfc0e4723e31fd0d5e",
"0x15f5dfb2f22e20cf08c1bf8ca7fe18ee12607615c5c3c1a7c2c9fe740bb9990b",
"0xfc58949bd8a136c38c706991c5288511da276d6fab95ef315c7ad3043f5f619",
"0x284e9569fc8ba77b4045b856dbff1c29eec71e850bed17e1533028e2d07cdd8d",
"0x5fb97885d94f32e89b37ed816cfe79118ab5f70784b3a546a50c32c52c5d7ca",
"0x1588f5edd5db73e9e42e1038f3e6817fecff001a704d18fbe96ed57022d6853b",
"0x16814981024fdcea5abca513e5674e7ef7573813b650daaebf34430a930d06ec",
"0x1b0b7c044e5a9cc60631dfadd62bf75f7976460d0a1ddd54c91f5ac00461ba9b",
"0x17d68098ed44b6a6c42a6e7e6f9fe2da0ac7059d1ecf0b26eae01afa117931be",
"0x6a32a1b358cb5288830b273671306d6e1af65718c3b4ef1a3c2c6ddf0ebf48",
"0x124899206ef866ee3d3253024894741166f53f48ef7f86c2955184d993cb6d98",
"0x282d1b8005e7c5e21adf146bbc3a80a41207d1ff7ee7b3bd2c3e6bdd5bf3121c",
"0x2ba860b0e392214dbee6ff237989665c30944617abb4b31d64b2ad85f397e33c",
"0x8dee425c9230a537b33445ffd0f032a8cd335bb0a6c95591e1bc641cfb5dac3",
"0x13e1f729e82032ae05a37e3eccdf95591b61a016f5cdfde65b9d61c84e0f0a09",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x234c770889eec5a24bc88f5a31d56e761f7487199276c8a6eee5b1a68997812a",
"0x245bfff7477831205a76d0aa1e9c55d24bc04143b3bf5dec9010569f945991a0",
"0x8f4069c0b10875a6c5a474a6632faa9ca5a971d207ed0895fb92f8ab363771f",
"0x837729d4fc85301d6b047a6dc71d2ed7ba33ee5e25cef22aeeca59f015ea9dc",
"0x294ef20f328ae6852d7f878918cfdce9ed950be58925d997ac533c91d5b6afd5",
"0x1f62b4ba6e7650e883f9c53c12adb7ac418d3d48a7514f183218c8d8c9f2e881",
"0x88e62ee0805a12f7512c58ebbbe7925c8d94d13ccae933af8ce5ad1d9c11fc9",
"0x2a15acb799a36536698c1471b93d206320f2721c13a32df2d30f40fb9b1fcf4d",
"0x2255ef233b2e051eb8fe5fbb4f03d5d0450ab225f926cc2ddf4e0f0d9de599f5",
"0xb3324f75f50fba89249228c37f2c9a3263a1ba03c624ff6b41d1c0eea4f6f7a",
"0x267abb876cf130e5ec0e545b41cb614e6b0dfb5eb2b668ca6ade5220de6d269e",
"0x19040678722dac94cc568ff3c0b9edd72deeb3cfce3f3d9fc81af7d49554afdf",
"0x9015509267d3d74355f8b8cb583ec4d4c41b01774fbb745ca58b2ee3cfed608",
"0x25792587eee7e693a2dfb7ed5fd429f501a3eeb917e6c17614fd3cd80b7356fe",
"0x2588230455c1640eef883b2650dea4b74fa7c0b2675869b3680a867f3f9983fe",
"0xa5d8e426e8a8633cb0dafabd4f32d946ee6b1c9d80e0172d2a9952e0f85ec56",
"0x2f47894426cb6983d71c100a0326090c8ec978454b359a02d618adb71fad8282",
"0x23bda45e45e20fb6c274f9a99c7083fa4ec596ec283a78d1b3682bc44c532383",
"0x6428e25941cf84268604cac47b8986bf3068257d3be89c3d6dac8f57093a650",
"0x199d93b935756b0e6f1ea60c72667b0e5686eb1b12d6cd88dad5f5d44d9bf6fa",
"0x171ce4623f0a49ff1f0b33205fbda2909f9c189b275cd7a717f4a38a5abda910",
"0xe6db378ce7e1de03348d3f7b7b17264be5adf0995de8e0273c39aad38229a",
"0x17b2b86cd66a73a60e46511acd7dec0fb3a32d6cb8bfaefcf4479b7d358fce81",
"0xd2ce771ec4979abb30c8a281fbfbe701aae7112066a813393de44e56161207d",
"0x86998aa35a19fb86ad35a9116c272887a26c95743d8214f1f2a1fc75050f867",
"0x5be1134da0692b8f92545cb326deb862136255794fa8383e1d3f266f3162243",
"0x1bcb6b8de9f866a39768466d15f521cf1e75e1e9ddbc30c05a45b53acb5f58e9",
"0x1b9e926867ec402e4fb4bfd240a82f240eda7df61c9b5ea3af1984f74089a93b",
"0xf408ecd2413f30c5794e777b8a0bde7dd69ee0e24a918253e9cefbc7d98913",
"0x2d7f052ebbb9bf5270016f796759f98056b8928efc35c09fe9e1aa26f18010e7",
"0x2da951984f4f03171413e1739831201e7346a45bbe9af89d3b23ffa2d615a952",
"0xb557ec46a7bfb8a0bc21bcaa56edb6e1c0be152d88b57fb5750cda2851c6231",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x13d3fef3eaff9b9563a1827637ad00789268d2b55a1fb6681f8b052d049a3fb3",
"0x2bc1cc959099f62eda527d7385cead603b637a28c9a223e817c9848fd78f4754",
"0xdaac8774332e509986178344e8caf8a91c6d01a275b9a1df469e5b735bd5082",
"0x27773f22500cdf92fec80f154847189a3f75f85e8cde35ce9171225d3cd8b676",
"0x79c499e130ed874a1383b978dd3c00fd5b6d0c18bf3b491cfd63787230cb9f",
"0x1ebfdb369fc74d1469c6e461f64206e4907b6f5b51b02496368aef1c54198cb7",
"0xca9e23d1f4071112543d4e8c1b303865a4064ed4e4110eea113130292d1e299",
"0x2357dfbdcbc869ea8068bb2ce056854f7a0a765a217af4a0a317888b08ae0af9",
"0x2c9e7d1ad79c49b37dfd93ff2d4aa43c8532fcc606927e975b21564a9c1070f2",
"0x837ff288c0aa9cfb3fa7cd38312ca6b83b9b2a3ff4dec506aca1af1176a4248",
"0x23d8de04d32b88a1b5102863416318011b412b11f1e609386c5d8d87da878e54",
"0xe2564431ced9aaddde433e7cacee42a04d09d3026f3ca1dd0ee3fb3085adbd9",
"0x61caeaaba163fef7965cb665f0cf305deeef1642cb63e122d845c5f6b095be1",
"0x23356942ef4d25d2b3542f5dcb54a77cf17d8fa64ba060462a3b71cb3b73d50e",
"0x1866373902a9a953c0768646f37941c805658c31f761dd39e6b4d292c8cbcd",
"0x86bb5bb78cb1149afeb670e1ef3470c5634f10b18eaa25450e87c5a9bf35146",
"0x2451e0f1a7bade779aaf54dd8a628b92d9cc8a7b7c0074076f860f87be2f8fba",
"0x84bf3740a546012b610a5bc78ae897973b85c2be04afb32fae0e39d0c085255",
"0xdef7e0528ea820d70cc9fab7935d6cb5b3f47fc8b5aba924bb237b7077f0275",
"0x1b7af60a579f6d6f9625a8b0f7c4fdb2a6af598daf08501f155665ab376f7ec6",
"0x4f92ee3832d8c4253278f77e9ed900be186f8c182a39662f59e4700213c98dc",
"0x147b948eeb385d71922becc54ba12130ff5643e49f71b7327c323ff0e2571c95",
"0x367fa68c919ef8c6a24c79f6bba07e7e839c9512b92a690d1a646bce08388ba",
"0xaadb8ffaf6b02a6a4f42e97afacf2b4d49b5d4201becf3a013dfabfa068b5a0",
"0x1f29fbe41d336788cf666a4378b1c82d5819c08e27115762277637235b9084ad",
"0x94397da30fa8ee480cc4cbc0cb3383218cef9602ccd1eb4655071c7bdcf3001",
"0x16a091b9a5cd952667b2f11309cc4e39f2c6c3ac2eb43465d99b409ab07711fb",
"0x1625cf4e2fbb6f7a25536a24bfe679c793e3bc01574d8af123d61d6b98ddb0cf",
"0x17f1ddf6108819ad72aa91411e08264c5a0756eef3101351abd131e8332e8276",
"0x272ac6af8670ef04eac5d621949f3c4ec7edbb65a38c4bd7d5ff440cab1f7a15",
"0x2ac81ebdf838c893a74deb1a575c929da0a6e12d2e6e1b0729bf0457cd7e134d",
"0x28198a6a7de09abe545ed428f83f9ca95a7bc9f91186305adc80d9a561045ddf",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x21c8f5212e43a884a0729986fc11af75bb7d2cecdf007a7175d000aad1c89e21",
"0x12e4a961e1801660228bb592204fc98865260be10e1e0288460f42b527c486d8",
"0x9ac00881ffcb7ff45a4f4530d1bf63af3de4c3eb7e8982f354d119d099b20c2",
"0x22b92591debead5bf556dfd040688701939a2dc72264c1b74c0e7b89b4557670",
"0x2388a2dfce036d5c898a465ab3c88fbde3fcdf8810c87e639f7abebec9decf80",
"0x9e2df6b54d923dd12bc44406c247281240924567a7a993e41a6eb027e959601",
"0xb05fccc0674af8deeab7d73646e2a28df0f4d76803a8b6fe7a2a5f9f444037e",
"0x148c72c32e02a21dbd3c4859046062f7a0a3a0a9c5425a5291beac5f3f54361d",
"0xcc72447af3608c9090af67a3a683e8d989688f2239bce43734d5808de3c048b",
"0xd923c01448dd3098d10140067ab3f5eaedb0a5b73fd6f29f28cb1f33a1615f7",
"0x9145690a8426952481e9c5f53c587aad25faba2f2af7a38d464c6c86e889c80",
"0xca36fff3a1b4bed7f8769fd50195c1ccff723fb1bec0db30767e922ed5c5bba",
"0x151f1a9546c4380ac89496bdc078ab54ec09e1ce303bcf99f5f7237cc7b150e9",
"0x16c046d8404c441eb03e5c0846fb9582414123eaf996781ee0b7268eb4b20682",
"0x251c3f386e8e92cd6ecbaf2cc2ad9d910f94135d41466698610f072e718ca410",
"0x1475e6349fbe26512b79202c02555f0fc6b0df8c74f12a1cf459fabdf4ec982c",
"0x2b4c00677708322d7af2ed6b2aec44c4926456b2d3829b3517f4064933e85bca",
"0x8c06b592eaeb2fad227fddcd082cbc40359d7ac8e01bf16f8c907e64c170ca5",
"0x211e364e0eeca2dcde7b7e5e45e21931fec7898963f20579ee0acc0711d66052",
"0xcd7ab2a448e03f55844c4bfb6b169790a0c8d70638d7ddc4b5e72375970a738",
"0x1930ac2e4e2ab703874dae8d6d84cb6de266b11470aceb681dc619889e61e454",
"0x1efe3fc036da6b22a66529ea8f04651ba88c4a88512711a32f4dcba84952bdff",
"0x1fc575f7be1400b0d7f57217a0993649494f6fd4dc81af8ff4f469ee25f4d3ca",
"0xf599eeafe4afe752ab67bc943a63bbd559b10d6d7340b19c5a48feacebedb2e",
"0x13161ff12c338e5fea3eab7086ea1b5c9e074e8c4343f5978dcaa9fe77d23bfb",
"0x19e8ce8bccf4d36548905830ccc2f9f13c6e0d997fb57c89415dccef20298d94",
"0xbad7770ce2057b3cc20f21c93a69b44be7b95403e6d4ccd373d8d855f42d48e",
"0xd68c25929eb71425958c7bb308245d86a52c4dd57af1f03ec17d73bd14a7b15",
"0x1a20f6c97cd59c0339e095236fb2955b50356fa59244f6173f1caf18deac4c08",
"0x13fbd61eec52c83d2dfc6b62cb1d1cb40e71c63fce17265ae9d631de6d683f17",
"0xc5c24fe6a6fce7831b9c8b2dbc30bd9dc8352c78d4431f5afec5d94a18f2522",
"0xe6f63bed21f2cb9b2886da97bb0d8f0e155f008c1e5039c2ed7080d6be70431",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x13b9e4a669c3fabe0c43f333992a5f698e08a9abbaad77cd400b2912f5ef7e8",
"0x2b0cbb582146576933f01c91c0dd2b095a2da43cf528f2273131788f1a6987cb",
"0x2e30fb85d199dca95475521b50700b699c50f1d7aae5b2de4e9b990780ce29d6",
"0x4ff7ca87e268b4a23af154c1102c8b705ec4682f08ace1273fabb3a865cafc6",
"0x23b371ac3c5e45d6d930df789f60ad510b784afe9ee4e82876081ec0ca7ef7e5",
"0x28c5fc831601998b96cccab01c028d613c200eff1d0e2caa7098eea165c119a0",
"0x1a649a762e15c9e33b6dd3a4c5daaed08ac2e5a7845df289d2c7ddfdc3771f97",
"0x1b76809608b2ca5793d346c52426aaf7228b7e4a09083c2b551bce8fc3022a0d",
"0x249de6f6cd65afa7bf206ac6a1fc864898a5135d0b0efaad0f4c86774a153d9d",
"0x162c8b3b5f7256af0a7bd83ba37d258ad7d4ab4f29d248bdd00ad36e612f6055",
"0x3a8b1979dfb950c0451ebba4e9137d78943d9eaf889becd291a669031680d1f",
"0x1fb9ae665dc60fd17dd0b4284b2eeab0845e6d4a5d6fb81b77e9f7c6b43d170a",
"0xe61edb12a4174e48a7b47b660e8175f42aa7926ff438c90692e43bc396bc6fd",
"0x2a21ad8241436a75ee8a90867aade180589a8c9c63b05253be876f192641b1fa",
"0x166620895a93525094f8bece65ae6fb9e14951d4bf7cf10a2169ce5cbd8b4cb8",
"0x22f7441fb0e816935c8813854ed5fd6ccce5e7b6a85d91d2b5a3a7a5c8a4ccf0",
"0x2523733ae5275aa5fb89c74de7ec80091727f495e729ea9bc557516b25e2cdfb",
"0x150f2ac4f573f5f9eda0d8e65fe866581f1bc11e46acd399cea41dc1ee3b4082",
"0x2e2c6a081127c11a80d60de162c1d5bd70c9e1b1312fd31f974d419d74e72a45",
"0x288f5e4a35d6a88e411113e8324d2af60b07aabb48650d27261f9e0172c063f9",
"0x1e94c48d6ccec07a6aec467ce9db1c7cf2f48f20406483bb873f696cb6139c7c",
"0x2317555099ef118ac1a6703493335db895aeab6cb1d7cb1e46caaa0e9d74ecf1",
"0x112b653324919b4300a6e9caa08f3a36c372d86bfdd4bcf10526ef3c2e8c8665",
"0x10d64d9dbfee84b7d8e426404f4f6302cd2f507c9536559f0050b2b77a15b85e",
"0xce3409a692acee5372266c97c47c2564d3268f5124fd3094ffb35d252efcd1d",
"0x1976232c6b5bc6ff77e7c6d266ea390c5fbd4fb3cad9ece623ced56ac860996a",
"0x85fe99053d3f947a665495f68291ade2c706600e56dae991b62833e75d21c5f",
"0x253875f4394f5962fe07f784c7fcae1df6d36d1840eaeb0e7c236e3d6786effa",
"0x811ef3bdcd3c837aa541d0df32d447ec54391911911e3e0739b7ffd4aeffcdc",
"0xbee1c554f9fc98cfc6b2f986fdf207859d78e2757d199e9a92b1501ef92ca06",
"0x2e46dc3b30b54925c313731501c5f003aa8d1490b16cfe28bbda33fcd0b9b0a8",
"0x29a557272646a8b096b2d1e8aec172491852af8f055779779043e048ed8edc6b",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x2cf567daf1e32b7e212860583eaa1783d871a1aacc61b1e17274d29d43c3d42b",
"0xde4e81211f6698cf1b5513963530b7b9d0b8ecc11435e75e1f8d3743dbedb1c",
"0x2441c69e3451809da5aea5422d4e21637469b4384372f06c5d6d9c14c6680981",
"0x2aeab770ed2acb63ce4026c9fb0bdea02bcd6d0e45b1c89854c2c827f09f8743",
"0x18086bea417322d173d3b67f0bbea727011d58a1307664d208687d50018c0849",
"0x1a5554a104ff43a6e64b7db4766e1ce6df735dd7d5d15bc04b224a81453b5a60",
"0x2372bbb558acc8f0a26eddb623338755aea1b2793d7e1130190fe2c6ec6393a2",
"0x10c33d11fbe22b97736174eaae79eba40bccf31bc846d8d0a8b44470c2af8cb1",
"0x3426163d8365dc4847d5bbf779c5577352e34ff6badab833597ddee1bae3f54",
"0x1c63281e368936ba2046f4c7f0b4279dbfc02ae7af0224d4bb03d847e157773e",
"0x2192bccee71b6b955f146efcc1a1781c1e1c5ce24dd9a55d2658f054614751ee",
"0x465383b8ca4136095399e23c44aa9fb454a47ce6590eaaae8517b97e476c396",
"0x57e4c25881806bd449481ec352088627fba202db4cd4b93dbd1409efcc8036c",
"0x9075ad76e6eb195188a775ab16ab65a001ac6eed2fb1455282cbfed80a0594",
"0xbe868e7bfdfa88434281a12e1753cd13b44df13b9e4f31ade7108de24a409e9",
"0x2e510e83757137479bf6a77478344c10bb07faba1f97da9c0537da9be515c5e3",
"0xda0ea6a6106068ef55cda415d30f30ac0e30877e2e03abf618ea2d79d980820",
"0x2452c916a252ad3c7c27a5257f4c8328d9027d66534d98ccc9a43421d70d83b2",
"0xf9c77bb51cac4d5ae3a97243b5b967a65f647598197721b487afdf40a7f68f7",
"0x1f9e045050fa171e0ee29df6cd436b6bf42a576b4ff50c2c913aeebc084f9115",
"0x2e7d45b66ed46a7205c8af1b5343d1d3fe32f2270741c450069783a4c5be0dd3",
"0x2516935ea1d2480e4350f961e778d72f56e02b57a98e892b0bad80ff8eebd7a6",
"0x105de12e7429ec594b85708128893f8ff201f6fa6b6e58a2f85403e04b3e3852",
"0x1fc9f7ca915a6cb6b67ef53d985021ec23469970c5eaf180b0deb0dece3bebad",
"0x2811b669db5b1a371c847093244ca2f8d653537d382f16c072df917cd59cddd2",
"0x117cbfbcfdcd7181ea2b182bdc6a43f72a78bc9a6b1c27d5a4d4f073b525f86b",
"0x1e8a05c84e5252cb9f3f4c81da5c5419ced59382540f32cf949b442f67512f78",
"0x24337a6b1cba32ffe53d724439c4554a2430c42da902997c096c26e7a3e88c8",
"0x2f90aa6e654fcb74227af9060991e0a68d47d8021f7968d384404b9d4476724f",
"0xb181fc79032f8437c5bf21425b264aa28adc4e92ab14a1e57964c79f150215b",
"0x99da6058ed7f95fe4cc85f3bd708620f371c9b32c18e235c44b415f4c12bf30",
"0x9212f04d8281e62b36d022532df405b8e5dbd81c15f00dd094130d43009b4cf",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x1107d939e735721d6dbf79d5f3060247a39316ea524ab8c0ec617b2ec201a26b",
"0x2f1c347523299d959fc1590f33534fc2a0e5adfc5de0fce0fa0eddaf5564cb21",
"0x149ef73788c5149f643a0d35623cfa246b6b83f3883475060ee613f74aec616d",
"0x2a8fd18e8e3ded0ad1e39b5e159e9b1298bda05646ac66dddb50e64280889670",
"0x47dbcd211f6c7ca6e60ad171965e1dd49d07b055b8468d33eb7c162b3627565",
"0x23ca2270b14221c76b77a1f919764a9399db0dec3db5bd28feb2d363e45de608",
"0xae18b193b1142e262a16d0d122154e48849d5cd821b8852a2cc2a2e7401e996",
"0x1857d1b6def0af45ef7d3d24dc7529d2826ffb00bc7c7c7aae74c740caba3caf",
"0xf3cc84626c45ab94e0b872c3779dfe3f41597c39094884678de39d8c1961891",
"0xe820957878be6285a630109dd71d5ab98ecf1c1e341c7f05be144a6808961e9",
"0x1dddf5d71605db9aab02d71866bcaa3f304707010eb12963e30f54270684f686",
"0x22cb55eb86c682ccce666ec7fdd5167af98a04c5731477cee41401f70bf05c89",
"0x2285685b32e30facba36b7813a94ae1486502f7c550c49b865cec83f46c2918b",
"0x89eb80349c3dcb0f5b5624debfba7da90f041de9bbcb5f0dd5e915c92377197",
"0x1ae6a640e952299c2aed2ffdfeeab32732e9c5e2dc95314d217f0642816be3a7",
"0x2ee58c48db87e8787a65b7adda68a844aa2dce2ebb95b85a0372219d5469934d",
"0x18e425f1816a3fd2371717b0210df14a186a184c14811245b0d2fb38e34da7f8",
"0x2d0b4c00ef039859dca8f5ec2242dee07eb08b40c134813ddd20f1e49cb46003",
"0x1bbf1b9e8426a43da69f0b718a93348b33ab7bfb49f32792d0b40a1df5791f2a",
"0x2bca73de43111cc97e7c860ff86c75c29b66c5cafd04f36a0673d0be35fbb343",
"0x1a77d34364e2186eda96a4c0576a632ca53a8579ea24ba17291eb71dc932e5e5",
"0x12757dbdd1ec1b481648041f49b600350ed839580fe4c022810e1f9ecae80b12",
"0x2491a75bb6c3231b90483b0f37596f07926a746aa6884f087f1b7694d191b51d",
"0x998ab89c76bd9f620abd41cff82b3d34203f4e6af0ee0f32e7f72f88e4209ce",
"0x2271c33914091a7b0760c2752a12ff2fccd4f512175ffdd949bdefe9b5444486",
"0x2b76d998c8fb9fd7a192e5bf3ad5948439cc061182456f9ecb60fcec97d69ef1",
"0xba089d24faa83dd9d34426596f4305119c2baac05c4f727363cc07dc37ce00e",
"0x168be56f3c38107ab39578355ad8f49ac0a80661977c3a758c29a08a3a7733ae",
"0x2cdd0f5feb4447b5120e670adba86c12d71e5f9860ec4b3eae28524825ca6e3a",
"0x36af5faba2b1777abb199b35334d12a4a01a92485d53fd6e9211949c43309b7",
"0x2c1dcb685cc47c1dbe9db43d809ed56ed6f5f9ac92d76bfb271c10b66b62fc77",
"0x24633d05c06303617624fc379b46a788b0d69bde4057dfc36eb3359055118bff",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x2224f3583f007840f77ac63371ade2a22805ffb999a54fd0feabba444ccebe18",
"0x26714311d757b433c90cbbef69da79f27493dd48c26aa00892a69f49412d71e1",
"0x2fcc716f7f57adc4e9cf765fa7d0d6f85b2e71b7d495d12d41657da92d50b402",
"0x294a3f5ca5239bb5a7b165470474ab58b5a07e2b3da2b4543d2cff4e1f0a1624",
"0x14b4beb63d909345cfc2891d52be18275fd436dfe64def3ee9a056da6df31674",
"0x84460af87c46a4276cfd2a1ceafadc83ae5e917669e8393ece9d52102d44ca0",
"0x141bc6edfd3d6ab0d76ccd6452f746e1e2a04d7dbea197c2ca2a6d498585de6c",
"0x1e757acda92690643a370b9c69cfeac5f2cbddc70fe984afafa7d8eb1519846f",
"0x9e92da83e2a6b8bae2a65c80e94f8ad0dd5aadd9374f9b666e5292b1c43edc7",
"0x28b539f7cf1b63612fe0e3f019dd8055760540cd2a998b70bdf5c755554a61ed",
"0x4f1315a1e31ab3f8eed8312a43dbd1b4b72362ccd637ed4dfebad3d350f2467",
"0x106aa158cdedbb22ce5caa3df644bde2d9763b32012a5fb391dfa3a761e2e33",
"0x205bcd60e27251d356cee0c9fbfe5cec10606aadcddf7dee7b6d50429248cf29",
"0x1fa4539519ef1cc1bc573c8af5bab6df0ef869778770109f8de349b606bbca41",
"0x17cab2199c1a13dd4608a9e1e4b3bc4965622d8b574ca6533a252aec9395ab05",
"0x2c34d65810a7e5a4b851f02a66ac4d1ad54ead2ab633ffdd88c95dd364b16420",
"0x128745a9a55f406ff9327e97690ef8137648a8ac585b1d483e87be00fb1e8866",
"0xd797eb05630c87b72ac57dabfd5e897f0679bcf0798652a327bb6a02bfcebce",
"0x2d49ac3f9e3ac8b8c0b37442e804c4487249047cd6a6ba32282c55ee72b9f4bd",
"0x2447bb4feec91d4b048bffde8de39dfdf87c8a9a3623cb563ff9d6203c6da1d1",
"0x790cd64d983c721f883cbb6f4aa15ea76aaa19dc39b1f44c4dba993bc9010cf",
"0x163a3b62e1a26e8604fab78ff1be0a3699a6b08d329feea137062fdac214b0b1",
"0x64d9003fc12c06923f798fbc0f49b33a6250e352180eedd7fd846b7f9593dd7",
"0x1f0d94af29f162d084ad70c2b138a6532db8d967573418a3ee82cb31cc8daa26",
"0xc30c7df8956774687f81e3881acce5c551fa89eaa5ff7369d2c9b68cf97a283",
"0x1814723bc7c2396b80b93f41ae3773543a232b0fcc80d78f92d48c908cecc77a",
"0x1efd30a08cf062ea109229b3bc2dfce564232dc6b181030d2c03ee486bca6d35",
"0x14e923cc919ce767c8d0c308031f1546740d512c6805a48b81ce2bd7e95cd9d5",
"0x21d74be8e343e93f759588cd7d29cd64a3afa4ebb48e1204a3d573ad1d56f4da",
"0x1b8e0086de4de522d5c81eb0a996955ea7004aa6e90d3dc9f37b3bf834b08430",
"0x17e5a80ec135e0c932f063972d785d9f89eb45ffe44dda9a8ffc11468081645",
"0x1a5caf74532f2c590fee8503a13bb0ee8e931b6cb92e8f1e52c337f3c7e188f5",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x1ac42d7b0a6e8b8f0a097d11d8651798aa5f2676574418f23b7fe6168f28257b",
"0x1ec67557d1bf0e6f851c89835c29d2334967383b9677c71e10f12ceda3593e41",
"0x2f47ab58a58e52340df845a782d6ce983366fa669f4d9373f849c0e3cfbca272",
"0x8f212a5650c4b2f68a8b7a14789198ad2c224facc562e07360904f0adb8efd3",
"0x2592c7276c9fb4e962b8f7f5bbb95018d17303a6e8a5b513b2f3ef87b66d5135",
"0x28eee34c1029e6eea0cc12e202dc1f4b50e73865acd6a7b69302a1b45f2c1907",
"0x11bd9407f0c9e1b9ebe379342b2a426ea14d87335522e8aaa880236f5129fd0",
"0x169f293f396fd012d20b323f9b3eb45362e5d272d2342696ddf1e3efed03c069",
"0x1e1f46890d389a50ac16e5422f79d449a6011c5be9e53c266285afcc7f5b2608",
"0x128da78e60b0758189982ebda43acd77c51eb6455d720455955ff631a922633a",
"0x1069251fcb9d2fdff50a041154e6ccc7579a360ceab1c360d20404630de5565",
"0x1ed383a4d6c433c6801b6853b5c40f67cc4fef27c2610aac9540d5355c6cdb88",
"0x6e9b3357bd837d1a5b8c7598412c78216daa02bbb25970182e089872cea4e1d",
"0x2fb62dd173e44023b3e784ae457bfc93adde1e08e98f3631c6e01bc6343c5bc",
"0x204797d9b16d45b093bb34c6ef5e27304af9ac7ca7c4a252134d3b61b6954b4d",
"0x2fa8b35e4e9405e7ef4f2d80820396ca8f026f3e330775368850d423394b2301",
"0x10c38e859ea854e2c6bbfe3acd613ed59d70053772c6fd7497ed2d4d99b2907e",
"0x1f44270853132e2b71724021bfd741e39c3414e8c63f7b148371a921355b5085",
"0x2eb4d6a5f16de3e5b2c2c33801421c2dee87a222374f4cb2c2fca1fee4fb1ce8",
"0x71e2443b4b9018d2a7ca057b35e2050e59409c688fdca9289c96444378486ac",
"0x1423a5126a2789082bcfc21a6901111b6b5299c4f76d341c8b0c2e9dc4712726",
"0x26e1e7b62d89a75f94630821b5385e6c48a97b8c5c5ae1b3b1f114444e8a10b8",
"0x14fd3ede10aa7bb382991a1128340eb1e6ce0a8d573f643bd8add5a2d8e8a45b",
"0x2aaa9048ecdf21e06da241868551cf548f683880615368a6a2cf87554d893b11",
"0x2e083ac42fa88939d480a976e73c6773d26c4583074073d6c2a9f90071bc830d",
"0x12cc2a0dc5c021316bc97e26a35a9f5b062087b78224526541f528acbde2d1c4",
"0x22adb7b0e9d4c335e55c7aff8bca2048a59c0101099e8ab99b79e64be46ecc7e",
"0x158cbe94e139620090b700f9fdef637d70081aafdf1aff2eddbb5e2f6bc02dd8",
"0xcb42f4bca1dca294e7e897d0a0b9e6cc72531cbc872789265fa904aac00252b",
"0x63156236d87d3673e07b739e18d79a22a6f1c99c2a4c3de4b982b5765c4de49",
"0xb7f0818b640763c1268912be50230493391a86d9de957810fb2d1548397a088",
"0x2aaeda58e831430d69a57059f933fa5deb7fd04fbedbb016a919bf5f4d8857c5",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x1d3a013444e777bc4e816c6f9194646b6009d5ed09931bd8011f5d3bbb01378e",
"0x18e4924f258930420b1fc45cfaa31fae7ebed37f375a17f1b8ec6e97675403f1",
"0x27c63021eb05577b17d50676669a6d590535b6114f74d6c14abb3efd3589781b",
"0x159d12a40b8694d9dcda1149dc98bc3228eedeb19040682a2c5254723a60bc61",
"0x1c04115e802bd71622e1b1425496f939414737bca8dcba1f070d8a44f6da2d21",
"0x4d0a06d0ce3dc2ac28ee5f7774898d7910714459b385b5874ac46dde92d79d6",
"0x30128d834fa6bd28116aa6cc19453b6f731a0970df12416c8c4e7830ef3f6f37",
"0x1ab7eaaaf3e533054595ab5a16d37af4b028bb6612017235432179802e34ae67",
"0x2a30c413b8cd102148977b0fd1f51d4cdd2684995eb899156438afb7bb4fdf9b",
"0x1eb6795f1e63f8933ed48dce55d257dbf972298f9186c56d0880ae76fe562730",
"0x21d1ef33916e6a7ebe055233c5e38e388ef6e2bfbac5530ec587719182cc0b40",
"0x9e2af7ab3d9206c3f54ded28a08f8b78396cba9de3d7696964d2529a0517c59",
"0x24564fb0247a0a53e81946f9f0365c5d45257ecef288d6d67d0bdc91055a80d6",
"0x1b9ded9f11fe5b6dd79066bd0e16b9253935e8d0bc2bfc130db23a8215d0de13",
"0x192711d3f80d452839ecbfff6dae32c92bde74d051a75bc14170bc690e69f9c2",
"0x1b3af1fa25c32da1a5467fef1dffb9cca1b7b92c4d50e3f7ad0548ff2c4da1c5",
"0x22bcbbbe6b9a39e310a03a9bf0e491451698d4d874aa192b828c1a4fcb86f3bb",
"0x3a947c69e09d64be68d7bf2316f4cdc647c912a6bc4a936232cb2b6d320af52",
"0x2d21f4596d98ac3b62dd919550859a7592e504009d268bb7f5bea0f38d4aaa46",
"0x2b2708b2cafc826207f80189733e6c53d6ec1ebb3c54656689c10a8526967bb2",
"0x13e69bc7a5decd620276116f40f9743e487cc219df1dc1d769b1aab8eb74316a",
"0x118aaa8f364cff4865df9535488935c34afa1943b1e28aa08d440a7a7d72d80a",
"0x11ad3bfa094695c23a74b1f23d9cf7808e7916b9f0eba90ec571e06e4f310106",
"0x2f4b6c06d0b996fac689e922707ad815b411539f857871cd1a6b9aa34386f108",
"0xa6288360ee10c1b02a2a6a6d34052b13ce79fa1ca91f8ddbed485dba92eeb9",
"0x25ddb8ea60be41e7e99c97b6b5a7822f071027932936673c02900ebddddaa88f",
"0x24c8c87f88b21ea24ac03cf1a498d64157a8bfe27ee0df70187f6d11eb856d2c",
"0x2f958a89827eb535aab871af8f3e1fda9e0b6dd0541d7c9830321202d467410a",
"0x2d2b3221d9d7539c627315e2422ae26dab5ae103cd8a8bd19d895ce97e19f866",
"0x13bddf23791d0989c17fd99bd435437bd8bcf676c689ca0595a0d04afd9c2603",
"0x2c15a1ae35281bd2fe7a611523dd767be99c5a32a8501ca19b1a8940e1062826",
"0xcec5e18e50beb5ab2c7f5c9eada9fe3f3e8689b0901afac80992dda3bbf8803",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x1d23ff4f22dbb142a5d4465aee8fcd2fbdd8e450d1cf6f29182445d4496a2e5e",
"0x172ee58685e83a795c76191742ce9df18765ec6f1e9d1233bf73ee4fbc53276d",
"0x352cf61f75587d4a82226e28ed9a38863d7e3fe6647117cd28c736cb2893b5a",
"0x1e571b53f1260a7fd4ed79e03d32e23b2627804ea5c038618a239b2873961fdd",
"0x150d7efd3ec4cb7eaa6703bb78913527c77b07e38c93a800841a123ebf3edebc",
"0x13cdaeb00438b5c6a40c0d8a039a8117269e15f580b8044214e5638f2e87a37b",
"0x9d76e8da13f87545b74c5f505af00e204eb2414a186b54e6dc3b7b8c24e27f0",
"0xb6ec96b7f761247ebbc27f64fb4275f1128472e7ed11e8a712a206cb9e16477",
"0x1e066da048cf035bcc17fbc4fae18348f4bb1140d9519f1bce81144da499a536",
"0x426afeba63d285758165a95db5df2aa86932ba9f50314c5f7ca4408bc3eaa86",
"0x2ce68ba3f40fa50262f137219ffa5e343650976b2d5d2d1e80b687e40e426d1a",
"0x1e1dbc3eccd20a0a96846877182b08ebdba8bcb16492fcdb60acaa42317ef8eb",
"0x282ae2fa425f91419dcdedfbe6800a0122a5211345524b9c320cf776a201b467",
"0x14bde086cfb19372690c53b0e04ad0ecaa78a8babbe21de8a47a796ae9730e5",
"0x114e76d2755ba6fbf01851955b051cb5e7d677db3fda594d6658ad4fc099236",
"0x2796ec5da2337effa6fc65cb8536ea82b5e60b14f10b005b07308b52d3011d2e",
"0x252c6e37471afd938b2c840b2818ed18eb7900adbe9209e038939f883a236f21",
"0x2b6e07212cf2e4304a307acfd16edc984c170d96e7953460d1cacd3e84dc9e75",
"0x2adaa99cc0a5150cfdd4e17ff6390c973f2491d4e2723918d35ac55b5deefb49",
"0x17759cb89386f9365fa875620b6f6e7cb6b5cee2d77f0b7355d9c33ba0e6a460",
"0x111bb071c2ca17121de11f36ba7cf79f699960dd76e09295610a136afd200e61",
"0xf394cb8fbdaabd31e43d4baeb5523945e29df4f720d026fe115bd1693a88818",
"0x241d58e1cf3ed5d94bdaf9f0c463fb645b65fa19c52c193ad67f1d38fcb343fc",
"0x16713a7b5d8cf3ed4c25d780a7968a80f70c566e6ba208859e6cd69801995242",
"0x19909ba7fd3b8fcb03b6f810f246f384563ebc5896fd61496737f65b5362dd02",
"0x2a9dfd2dd3048b0347dd42aef6561a277adf3d86fe83203df1778536e6c24aca",
"0x18532ee14e86e608555da020892086f155c685561272111e7f4b6c91781864d0",
"0x2509cd9ebd96c0d7cd88a3bab280b42068691da92e03f6de5930ae67ffe04f51",
"0x11c0877290f334877a26326ce2e6ca7a96dd732288d273efcabbc0294e2daf09",
"0x26009dbe4fefea6739e28a0a6fb1dffb35d8516e06914862db8738bbbafbfd1b",
"0xe9f75fd533fa509a499945055cfdd603dd9930a50634e41a935098d571012a8",
"0x1f3592557428f40b9e6582536aed2b7264c9166093b76df3ed68ff033c7ff93a",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x1befd6dac2acbea83cbc882c661e80b50b85af2021c7ce770cbd4e4cd48f69c",
"0x2ddb55369f02ada084136f4092258eff0be8e170cca9eeb6e2b65311edacdf9f",
"0x12dd67091b9f1d7101cb2cef74fd216fbf49d4cf33548e6d8310446e562cb7a9",
"0x1e824766a37cb1d1c7e75e3f9c261f4aefaaf65080f870e972b14132e7aa6cd7",
"0x4af8f03823d37cedd40c1791ac745b768c735234f5756d638b200e1c134bb1d",
"0x1b65a271d787e78382a9ee5a1715c9aa23e3570e92dacd75004aed46b5e4f778",
"0x1b239d4ebb80ce098356e864632edbe6affc3e5a34d92fb9518ab89f16ca4f22",
"0xa9f23337f4d86a82c5dd9a9216cc182a5a6b6eb6fc5e42797df022e276846ca",
"0x86e0f2ecc21e30809e1f2697cd036bbd6241d68668b26efcba5a63bfaf84037",
"0x29bdb60350b498b5e1ff14f7360deee6aa03cca4dee1a94c4181a28f0fd2a9f7",
"0x2ed66c1da1c54cb685c48a32d650d24c17162a3c758eb19aeb9779fd35ce5499",
"0x23731d564560385b611877a371f26ef53a64244728a8e8c5fb7af1d793e0c7c6",
"0x5d2071dddbfe020a1d54d3be85485fda55e94634c3c7f92b6a0e7df8c54cb47",
"0xf43e2482200419e7d6bd3242598add21ca3c7a6f1297401a48aeeeddf8c42c9",
"0x147a84a37131c4e46e9f9ca597b984d7b4a4239425a12ce32f8fd114874a8cb4",
"0x6acec506161a2536df8657ccae9de73d400b734124368cc4da6fd86ef670a19",
"0x23ca187dab655ca80e1af85d71cb254f05d27b6f8000e366443afbe83c4cc725",
"0x2f8a17922cd86c60691695f93bf0f432f1ef9f05e2e63e9532ab277fa47c0297",
"0x1846b9769a8f327eddc2fa52e235b3c54833f35db8c7989f4342d667ddf2caf2",
"0x243270c2e4a32bbc19d2bd52271b9a8da3f760251ae2f2d783d2854d749d0ab2",
"0x29e4f01c0da1655d98887dc01ea2faa33baf934660f2c934187ea6902f5e0dba",
"0x3e46dd55965a70ac8d048f6ef72742efe897a8a5cac24a0a323452a738a4271",
"0x3032ada92a06e725cfd5cf71879293c3b862c706221b604bf004900182588e87",
"0x9aa6962258ba57549d5496104be1d44d36adad0118ce7780f470655e7a79b9e",
"0x24f4c3f9b2fb7dde23f455ab4a5e76ac60617e46bb7900dd97769420911b59cb",
"0x10e408cfdce8d6f9b7b710d2cc93937cdb43d86d59580ff5417160745c80b7fd",
"0xc7e1f9439ed6f97010e5539ecf56bf151a2955f8ee20b2ec89879d81cd24a16",
"0x20bf7ddb42d4c9d7c8bc1e1b110f065665dbe466145402ba3a3febce0fbfb3d9",
"0x485724e08555b73d84eaafda9702a639baf4de0046875d1f0cf609a1270d720",
"0x2e67be03421ab1f822047861a72a6d08494e65bbfd13c3f7fe6ff48cb863749b",
"0xf79509c03da0c16557c73fb11286f9fddd8f86d235071eaa7aa71a85f547133",
"0x1df1ee0ab120c8673cd3cc8c6ef2e15d74810a03809c61e16e8bab3f20a296cf",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x214e36f5e05f24b3cff586c96031ae938f81cb8624b76697a7e1e79986f1cb94",
"0x26e5f56af93c25c1c66a64447449b0256433d47d6413c0b2fcf6210ee5f138c",
"0xb31a4ad9ec066989d7421b0f1cb06d7683bf5a64e0c3067e0b1a3bca5a64a2a",
"0x8561474777e7f179341123ab782afad4ff632de09860eff6ebe29e4fb1a0c36",
"0xffb57365252bbf56569562327f8db32f337001a18e56fceb006741a0de303ed",
"0x186989821e7ba7588a8634d87210552eec88f846e3701bb336a5b7f0507d01bb",
"0x2b68655758f842d0aa6dacaccd461eafddb981b75166e55dc1ee2c208308e5f3",
"0x2d399f586c89c60556a7651f9409b01aab8f7d9d9322ecaedc93c590d9cd0fc0",
"0x2da5bf9c9e9da4c394519580405b41e6545886063a830437dec32d7f1bdade47",
"0x2b65554e892585688e54d5bb49e321f507bc305fe56fb780e41d816dd9158369",
"0x2ba41319cdf6a416c9e11bca8441cc610c6e7e45c2108dae471840f71deac714",
"0x240f23cf9066f8f5308a2cb0f33e1b40cf634980a9f76bb6ff07e28730868f54",
"0x231ff9a1222347ab20a05faa8d43bf8cb62f0ff9df561f7af015c73d191ffe98",
"0x482fa25dc024367c8dd5429b56e7a0736c866fe84ea1afffc3f5d0f421fe651",
"0x2923732da6b8bf6ee5c73ce34d3ac60f9660eda207235d1d5af9784103f0fb3b",
"0x1753f96bcf7911bc332bcffd151e9e82248a44517474204b3e9888738e58c5f8",
"0x15e1d217ad8bcccb9a7b3009f26c09576e9a83a00f3751fd4ae4b396667be084",
"0x18e3a1c74fd50b4cf58f3096ed129eff1e129302507e6efdcc44c577ff23403",
"0x2ba6780071d6646fbda80d23fabebbaf0272a953fba3249e3af0b56f22ce8120",
"0x1f7f5e238b103729627d5c22c78d92ede19a56995972ca46a317efdc27fc70e0",
"0x2ea1bdf6dc4bb3ba6c3d068e085a361ec8676c6fe2ce66e842885b830315378c",
"0xa6fca77ea6f6437fc2bfa7f2beb768dd908dbbbe87aa75ad303c62790b34d17",
"0x6ce49d6e3d7f46d2175ae9a176153bfd3a3b8f93237a5e45ca9c4ee04ebc5da",
"0xa01cdcd06c3f24187bef0d4a83b8e21a54746f27f0f0d919e08b7cf0d241776",
"0x13c68e6f75234dd86b9568ea56dd98bce6c1b8d64fa4bde97dcd7562d0a9844b",
"0xa162dbfe59de052c7f1bfd5a6a0ed87c5d6120d538c40a537ecd0f3ac12d88b",
"0x2af4c78dae7b20fd7e337e83afb1feae26c555a544d8ca8fc5c9555423fe1c1d",
"0x2f6c75f43301c4a5bdc3d32fc1d66fdaaa4f3b04236427ede87ebcdcb6c7fe59",
"0x2a4aa9b8b9464b6ab6c584645c872959c9f68ba65c057c235b7e2fde8160e42d",
"0x2d8dcc78c6658c1188d60d080fb3cd8b34ee5fd1adccc8a47d499e62ca725b05",
"0x14d6380547e6c54a017d04ca2b2cbe305a4638b32b4163195b459db073fa9872",
"0x478b43d35f78cb355796e0ea0e8e9f5a8b8d6c59cd2cf58df4dbac1a55defef",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x1ef96c51c2b7b30f1e2c59a13e9e76f079c907a4718b3b1827228823b9d8172e",
"0x29321a97121f289220eb66f5382ef63c56ab3d289391c4db61c9dacd44a823a",
"0x1481bf24e7b45de9670afe57fdea41b8beeecfb23422e83c83de9f6845ea9576",
"0x1ef847d3c1b94f7d5dff4319c81691a1354f76fc73dbc600638472570c8c465",
"0xc266666de2f8bbbaa20aca7b4af2de342cf1930552784c300342f3896703b9e",
"0x149bb0f5b9d904cdef7c045ee236bc38a33dab8fab24381bbd14aac30b12ebc1",
"0x2ee176ae76a9196262b1d9b78ce2247cf2133e707cccd952e37d92fd71d88d9a",
"0x1376c5573ebb7265f70acb843f749ffab6f69d346c01e8fa59a1c61091e53f03",
"0x1098a7920a98fb50caa3540c5efc8f6db3dffe9b2c806aeb20501cd0e09a5b45",
"0xb01cc70e8b9fd48f7093dcc2ba65898771cb4302388e39d95095b446fbf6bc6",
"0x1b0e1d5d686b5c6879413df5c510fb672a6d6622bee86008f32c0c32d237b94",
"0x1f74ab5e561a3606ff3b9b334dce7c65d772ca2c1d8ab0e2591d7b8dbbd7870d",
"0x20de7f8e6a491ab79a1d638f7ab760fc5c27285e90c87ad512e86a1bff3b247f",
"0x2e48491edee5daef9ee63ac52cb1734aa69e15b68d8c9e0da68ad718858397d2",
"0xebddc875be02613b22701dadc5f3ad1020a797469a02c064545adfdfb73daff",
"0x171d043f251b701475bf87b388ee12b5a469cf0b5f4c120b34b7b8df3a50b898",
"0x11c7c2bb7facd8c4d0e37f220026818496ad96f0009975cade5a85dd0b319d3a",
"0x2b86058c080559f84c11d33ce0dd77e8f4aceff8644a1ccf78907b6f02f2a2e",
"0x1bd631d67d9ac357a1dfdde1c92a62b0c7fcfddc06376746b45231878b83da75",
"0x2cbdd86f5eaaeda63428d4a39c788df7e08cbe62027d423d3060f7a04fe40d13",
"0x120e0960c012805f36743a540c3b89f519e39fa631ba17d2542d13ef27469cb8",
"0x8e188acf6db761e26d65404bbfd7a0b5537d4e05d85f819de8bb08b1f9e6dd",
"0x2da3a719e3b97734dec894cdff62842dbcaf8ffc37040bdd3f2249d32df42e65",
"0x176acedbe2dc8cdbad093b2a591292b231289939391991be3b9ebf27276879d1",
"0x15964189dfb203bd5cb0a49c9d0fe330bc82a66e62b4bf29cf9a878b74133c92",
"0x7e6833725a1a694e290a34cf6d725401b7ba6c1b0b740226bfd38b66acd1b02",
"0xe4fa44c437c0b7871d7db91fee425aef4dec5461c08cb8f7e8990ab8aa30724",
"0x2e3f0bedffebdd3509be6b792530f2041b04171e729ddc9718a2caf15af84b38",
"0x1504dc8d0dcecc34da56ea5522a2bc7960d0dd2e0ea24466b84f59aa5db015a7",
"0x178c9a3999106b047952fb93395c214125f988fb1cebfffecdef4278a076e3b2",
"0x1af7832596eef3c4cc8630615883a143b7b6993e90b4332e66f36cdf167bc838",
"0x2822dceeeceb7a2e1cf3f25a018f8ebdfcfc720a39e370c67d4333e515ddc724",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x25ce0d19840e800b798a9033269b14f1726a4fd660cbd3b6dc3cb39c07f27f53",
"0x175f82195ac38e9f11db0773887a93338ee07d2852587fb4226f11d9422b8328",
"0x2017bd7838d0bfa3ea272ff2e883a80e63c7288a4433997b18b4c5f0da5f7e3",
"0x1818b2d93a4d80ce0068fd9ce46ddbd200b6040399f4355194edc9f2c55b5ac4",
"0x17c59d81c21e6f83f8972fe07e0ca9b352d04ef730fb76dd72931925c9a78427",
"0x13694ae68e1c55dd02a5b8c1915f878edfbddaf12b45fbe9fa27a2954b213a9",
"0x120221d8a84571726473bfc84ad47f1b04ff70e7a8d8e9c1e91e1165e9b4f18f",
"0x14d65cb6f3b2e4bae5ae5ed1cafb3e68ea86144d27fa8f33aeaba929cfef4d80",
"0x1a6104dae9627992b627b87d84e656009bb69a3a7a9bfee98aa80dbf21bb6ca6",
"0x1e3af87bd45255572d1d14ccba0d7b2f8dfd79b79068c6f3883ca9fee52830a7",
"0xf3d0df45aa7bd62a9768cd20f8466c37b7ec5661968b2cd18abd57367319079",
"0x13b8af0004234bf35f20a7cc7b9fccc999d0d8e4f5ff6f26c237835a1fe042fc",
"0x16e0bf0c9a24d467e38c3778c76b2e2250fb1c06fd4659fffa3093f493a9eca2",
"0x26d28c3453b3d7eca08e87a6c46bf8a698385ff358e23edbb1e174efe5c233c5",
"0x26fcf8eeebb1ea7b1754c047bac9ad888edbece428440fe2102d46969daae640",
"0x2731ccbaf234079c1038e6ab182efe0f1dba3c47effc3e21d2e195e3f0319503",
"0xc785f0fe165d5d26f6b5f2a0ffb7ded4408eb4a92f3eb3d13947eb094290d97",
"0x2581c7faa23de18b2596cfc15ff01dbc84bea0fa4806c7d1a0abc43e76ee0f3c",
"0x27e3f76b7335ff9fccffc865fffb83b368995521e989bd4dd6a86cf595d4a17e",
"0x13234d0fe49f03c4a28ed5ec2b8044e9c7dd20cb831e541b7c540db6c1800637",
"0x11a6eaf2aa5518374eea4199c11f3d937a426494ba614ddbc6ac6ea1dc804ff3",
"0x1fcc367b6de0eac68cb524cf8008e6adbd783e8c13821889031f886647664a0c",
"0x1458038bfbc93c12974f7474afe5bdc94cbd539c913100169cccbdd143151a2c",
"0xf24afffaaa9f04e88599ed696dbd4eae28447c2f05b997194ec832189cdfe25",
"0x7c8e157325437ae945c3c67c4c757493076bae3ae720b00d0c35c36453f6826",
"0x11198181950b4a2475dc01088b72115a94285ffec4c2a5ca614d13b1a14fb319",
"0xed57c8d4abec5e290ca22be70bc5e754e135771d5348f7d711d7383617ecf36",
"0xcec6b37e0709d4c9d5a8ce252840ada6dd5fb95603720af648319370941bfc3",
"0x192f0b18cf17855bfe94214aa47604eecc598f8df429d9c7a9f0c807a467511c",
"0x10323d6e384414dda110f50d67bd06633361960a357f9c6de63f837553cb58b5",
"0xadd901bde5b672bead23855ffaa43194e666b932d604f47000f08d1d2640511",
"0x16dd65f412cf9f1325a3cf4e9a8f02c27371b2c3d90888e7d4ee82713dbebaaf",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0xc86afa39353edb39b52bbff89c5c1a2bfbe2b4100df0895fa7c82d8e77c482e",
"0xc46613d67d66e8ae31191ad6e5bbae2539169134c5311d25c06ca54e9f3ab77",
"0x395678f2449c3e1a76b5b9df068e5dabe76e15ba8589e0703efa3fc1244184a",
"0x19cdd035008146af2718d7c2ea72fa725be2d10efb070b303c809b861b788b51",
"0x1a047c51c9647354891ea4acb582296dfb90bc65c97e8889f1d075fcf217cb48",
"0xc6cdfe9a0d4271a15018a2e3f2d80dfb7468e216397e85e138d20be790b2307",
"0xbc59105470408a58ed2e8816aaed1c29dd3af469e2e7eaf3e1ac366d40d312",
"0x2bd71a360bc27ecd0f2ceddb797ffc5a662dc96cc64cf15e03e2e63a19aa0453",
"0x45e127feeab8d5df95789dfd96426ae84c34723fc735865f80d98ee53eadd5d",
"0x153dfcb519caee780dbcf85d14af1fd03d6888a8f8f35e0f5d16fede2fc3be20",
"0x14e6a09539291352d800dcc6d07e0d0a15b544460b6a00c00b236fe5befec431",
"0x2eb026a3350a6d92b399aafa7e52a5e1730d63b9212e6431473dec34b227eb63",
"0x1641bb238c520d7b2da80d743f6325b013f7f2af04f83162314ca4554e4c034a",
"0x2e2b3857032c8659c4533fdbd59d3e118d810ef879943988e6239fa808bafb4d",
"0x2c37d689e22b1f332dc12fcb8490ec1b679a5e15b1f4b9b5edcc16507adbfd92",
"0x3025a60ca5e0d56b9507310cc9a8a7a6dac7bf6e942883c6f73356f8a0c2afb7",
"0x7f9e146e6c775ceee72b28edabe0f4735ac136ef900a6147570f0ea6de0782a",
"0x318bc71cb7dc9d5f8b099c165d26545fe0bbf112167860825c84c180493c6bf",
"0x2c6fe3f7e18010025df5e6b84648d0669067a473d849b4e181c3f4e03d42b128",
"0x2bfa2ee15d1c06192533994513500e6386bd767c78391160dc4ed7ec323e57a9",
"0x12f7e0085d724c9e28547f4fb7583a6b0fd4685f1fa9d8c012baf4701786270b",
"0x58f27cb9e4bb8bc4df8b66ea9b5a5f8b90cdc72b345c4b0a300b1ecb6e2aa63",
"0x1f34ca32f956eb4e099ab646d95af278ad8db5cd00ddb1c8a44593ea2fef03ec",
"0xc73343dbd1d62046a2df0d555812babf2ee35b1fc103bf6938d783ad0b44499",
"0x18e5fde3115a19d207ac2b687e135e438d915cb495c74a0069fda3370f46083",
"0x120fde4dcc6a7447775ff4e871e321ebdfea69a589ac90714ea4f9a9608e1e23",
"0x2d4601dddfecfe13175df8d48155e9aff8fcf449dafa39a245b8d6cb1706f490",
"0x173632b4f61f2083cbb3e04853acb5bafeec8c75dc4407123e2133c060905ed5",
"0x26b288e1ff854948e38cff794996597108b335f67b1fa2598c5ab2691a927730",
"0x2a688ae162bad939c6de4d889910df138d1f7dcc8989d48caf72e1e22b956422",
"0x160f4b8f49b226f36e72359509e3dac329b1372a7fb63f055d7f9b004d5734a",
"0xddb062d06f99f34542ed03bcaf07a59a456201d26f15d45b8f122e9565d4044",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x13785c4968bb97c8c769257653ae58a73b94a24553fae0e00988b29f47ab549c",
"0xec91cce07b1e9b778fdac5cb9ff8d8e6438292781351bedc3dda454afee474a",
"0x22ad585fe3ddddb3233f390ec3cf43a570cc4f56076ed366a63a50b493a6d655",
"0x11f51cd707f519aa4d0f07de79bd18a1f7b65d2b96b6023d18a87459396cffd6",
"0x16d2290bff342fae3e0f6366c4a3ccb44c611797e77ebc27d7f5ac31fdc6cb51",
"0x16d4e47f82ee3b3d81d48a335be28f4521f90a935641a451097b8298daf0a26c",
"0x269e6a80d58dbc19ef71e682b1faa7dc7394636fc15c747d04ac950496f6e118",
"0x2c1684229f0eae24af14f894023cebcab0e384703e71ad56199c4c8c70e2dd06",
"0x2d9ede2e8993c45794928190781b626fcc406ac3a977235f9d6e50267ef18fb0",
"0x11d67805271cb5d86a927303acd7fc45218098ab99eeef9756e62135bf77da70",
"0x170206f9a4e4e0d7ef55c5cd644aacce231f7727c7f98d97417b720bc37c7881",
"0x14a30c6b5536c74f98f7fc57d004129d4f887cf18ba9f869bd5630d66d341324",
"0x25804cc693b0e118e811f3a191a9d6e47a537cb64129293c947206d9290e7d10",
"0x1a7a17b400934be92901d4e91ad3cfc98231aa841e09627cce975bab7c15f2db",
"0x2c0632973f605ced6998435a7d0cad76c8c9c223c280080fb6a8c922ad09dae5",
"0x3044b16721e5ed81d39f2abd29d5f0a761c13fe26bb4f53d09d5a05620997fc1",
"0xe2cb4e18b26e4ea445c704748bc7682bc2834cef35ce6bdc043beee286025d2",
"0x1c033ddc1a9720312cc3541e886cb227d2d37eac1cf86c4588e98203692941f1",
"0x1ef28ce82fab806a49fa311c6f4e8d0423d051e0a3500db978ff731a9378bee2",
"0x51d7d3785234a09db1939ae4ceaaf14a46928189efc8ea0fa1889e5ad0d1224",
"0x462c9e533e4745c52df23623b0b72f3c9eb8e3a9f2a22a71b5ce6ca41927425",
"0x26a33280331d48e2aa9c5f8f63c4423a6dc8019b9633f49aebbdb6a55ea5cc93",
"0x8ed8b1b9618a2db7e4746115d96cc25ec51411bcb07985e9529b6111039e90f",
"0x18fe5d991dea77a7b18f1bd5c183a377cb9e5c9c2591867eb2f8e876c40c41f",
"0x25a3f5cf66d0e82be05ea92e3a982a6b3289d9a8e51618f9b21ea0e39a30e5b6",
"0x6182fd61e1b35b6f008e9909fe99904bfaef6519618e435130155d28d1dea2e",
"0x1af6ad164424b6c90ca4241382ca0cd2660ca388775973b08e6728570a22d844",
"0x6b534601619e55889aaa855c063a2ced889c6b4ba4190da327c8a612c255544",
"0x50555bc03cbfafbaaa38191f0cde54e8dcf4fde1ccafb5af5c7e00c316d655c",
"0x579cf40adfc069a0b3cac02a495fbaab0175fe948dc97ac85f7699ec9be97a4",
"0x1d9670b720e7af8fcf67b3c832d43a0e9b36c1ce11b679554086d3ebd3743815",
"0xb9f1b4372ddf2b552fb55e7d029267a0ed4f09c4f95d1b99a08c1d6585a6e74",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x80610bf8946c2cc782c83ec3eaea36684a2cb66366a9a801b63fad3332e8ec1",
"0x2837c8ba7f104dbc7503abda031731b4a7a1dee3ee8fdc708651a7385e56fc72",
"0xe4348619aa405bdc4f9fd965dac265ae73dcdfc0f71bfa3a943cf98965610fd",
"0x199e9e250ce12b1667cb730f801334157f29044410b1d98b2d6f2a261a2f7768",
"0xa0409a4aedc8480df4a99f9bd0bdb0151e5ec3cbb6707a594d8aad6334d4c75",
"0x2719d9f1e85015ea06b50d406af582c36d5e937522c974727b1e7a4eeaefdbf3",
"0x1066a17fec5e6cd2202792015dae55345167ea35b6a65ab7a7f2af91da59ca1f",
"0xe4b0a49c371457ba0eda6cd95fdc3cb81264ad715202e43e2dec5699fbe4d82",
"0x24b58a924ae3bf6ac96fc11ffab9221a2283830e95377deb2e5002c2bdd1323",
"0x259c8606be0c6467b6ef056c6a4192776c6c3536ffa82c89f038c856862af24c",
"0x21d6c0a2a54c5ae9ef9dd5f2aa73764f38df1e923aafd242e5f523b5332bbd05",
"0x3c099cdc3f61caaa2e49d484abb2b30e969416f4e1a5678bb025318e416678d",
"0x1d4d4b8c552ef0d318a9a8edd80a2f363c1c0a1dcdab35880dcc6bf3c548262f",
"0x7e4cf648e92c276185c416d6ce6f5b0c0e7cbc2eef1e250555699afdfec0a0",
"0x2992b02301dd18e00482a9940d59a69068127f06aaa50a32322dfa2af211f3d9",
"0x16871531e6fe81173d8082d8059270e70ac4125d0951616ff37e4b4aa6975598",
"0x221c08a0b7dc5aca357a52f0127797f9e9e01eb05d73655f6c779ff43f295f1e",
"0x2756a3d44e88bd6547d02fa4460c09a2e982a4d505a3421625b9bca2604bd862",
"0x2923fde3bde5751d8eac7a9a156d2444db92b629185e01e5600c4fb5a2ea53ac",
"0x179ebe0d2b17128a67f8fce5fc42ee26c654d2a892c4eb3c6577448d5fd556ba",
"0xa1814edd4f8466f7221dd98f8ef29107a18c66320825acdddd8de64feb0275b",
"0x1cf03d03226c78b2369f79beef10f08fde37c150d4e7aa197978365ad0bd316c",
"0x2fd3e923ee39fabc387d2170ea6b9a629b0a7e28296c84ba8843f8f03ec3bbc2",
"0x12c6bd4f25c2d042e4d0ed3a1e5cc01247c78ae90e49ae722d32a584286e1b4d",
"0x11b78a0b243bd45aaa4f3cdb1c79ab206e95c4011289c44ed4d8ca99686c9b9e",
"0x8945308107ba56486011898e6bb26a99ec0f0b9071ad9ce0af820d2727f459d",
"0x2172f85afc450cd67c1efebd6becbc01114bc8b3b62b4081e4cca3418693b323",
"0x2db81bcc85e548bef5059b2595b4f06b55386b9aeba12f483f49978ec6a9cfbd",
"0xef5d0ab806be48c7d0b46a2cec1766083eef4ba4373a16abb2226803305207d",
"0x17caf822e96f4cb68325943442e65736c0f1e01b845aa970824a3b193ccf8b30",
"0x2315b8f0ee989b11b9835d8ad7adb67e035f85c24835a4d53cc7d7b59ff15041",
"0x1f5c7dea1a88280a88e2a57c1015af5c5d4e84da900bb30de5fb8c5258b46794",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x92a67467c379af9424ffdcd9a81657b04289992027e3a841bfe322924e000b1",
"0x8c70f58f02446463906891b2604d2faf312cac00e6c254f30ae85874c112546",
"0xf4af67e5395b62af989d01c1fa9fbd219ad1aa4aa2be4624460940bc0c12a3c",
"0x17f7da080a7159316a1994a87177f0a4676e249247a2a577c3fc54ea8cf7fb27",
"0x1591bba9c620f87132b8ceea1de4c4c5f09872714fe1d63259e0ef80b5f333a8",
"0xcc30f15280abea47abe01145e5f35bd877550b79ae4262f61be65a5ed0cb24d",
"0x1fc9cb670a57f842d47bb906223b02a9ab6352ba622804ffa51ee99da3edaac3",
"0x8e8b798ab602d16910a34edf3f093333041aed6704a66d782d7a319dcda091",
"0x1548714c734096e2cadef4ae88dde9c8886029e21e9ff5696971f11dce6ca6e2",
"0xa133a39d296d427598f8acf721bdc057f2cd639a3317bfef3eed1bf38c610dd",
"0xa4190ed0b3c966b6d7d0bf0bfe4d586e77b84cd55bbf322dd62c4ce7a262914",
"0x26447ee04686542296d06c8f53902672e79514770b3d6490735ee9f5df35859e",
"0x2d1d51cdb7a8fdb0cd7da5fdc33db94bdd8d5128123693ab1f4aa3e78e177870",
"0x17b204236b11bd5c5c48edfde61d817b73d7cf2f5a32a888144c7b088d3ffdd9",
"0x1915106b66fdf208607ed6888d503f44723c87a5c5aec9eed658514f3692828f",
"0x1c171f06ea82d218b24213479856d66394e160dbe0b27e659a7294e07faa69c",
"0x2a4c40c22e17c0bc9f509eb1e30acebedd18ebdda1825e391523a74d4ab23f50",
"0x20515a5d86581b02f9176d72bec69e785a77c41a16fac68e1beb2ad41ee21f12",
"0xc401945dd3d8dbcca89faf8e58b0469e7e7520f2e8982214a4dc244dcca5cd1",
"0x28bf080eaf7736338ce614a62cbb2805eea22b0bfaeac1d0cd2cdeb2830ae0df",
"0x20ed87ececd54dc49ce955a83fd4db61891865b24bd09c3eac85037bd69c52c3",
"0x2baf7d6e7863aa68555f8bfd7648d1b4426f6c39fed82bac197368b3d22eaff6",
"0x1fcf69944cc889569269c5031cc1fe8a1efb0b1953ec7f9573bf63671ec7a947",
"0x980bdeb30e0498f3c45ed4e17a4ae4c8c3bee91095a6340207b69b4ddabb83a",
"0x2455522726c3c95dc14e7fcb5fc1c008b5736e569f80505e71454f8aaacfaac5",
"0x23541590ac6650296ea9c3b935009e79c446280d9bf1010b8e66cdda9f8970d9",
"0x1d14af4f4b54f0c9398e051d2a223193c78997d591a639109818b8cdd02f556c",
"0x22a747877bd35dcb97520a0f4a812c7b78702bad181237c01a05fee842840e4d",
"0x2eafe1740ca67f80d8ae595e84c17039a0560bcb9628b084a97d9ff4afaf6b2",
"0x1dba84e994a54a21666def22befb81abf49fec76c43c3f20da9043c9874ef2d8",
"0x137b47cf2f3d3afc02f3469e9d165e49a212ac255691a1bd3565bce046fcf153",
"0x1eeb1a0edc33a3e69b8445581ee8f0ddf84748fd901547d49440c863ca10caea",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x3e5726f2b2c60906deb00a314337a9c6e4eee70497a4a953ea206d200db8d69",
"0x528d0374310dd042d5f80b2e720b61c4200539fd1e1a23ee1f8f347041af0db",
"0x1da41de720a61ccf6e3b9b97ca36d7439da12c92549a11d238475e05f9037a03",
"0x21c1d92ba962ab12631e4f710fc9b066c369ef4aed709fd5f6992f57be251b99",
"0x2ebcb6f494b7d06a34d2d097c0f46ef929646c529f6efca0edeae7e733b0278d",
"0x26ba18bcbe43ee1a2ae6e1b4dd89151ec17e1341839b94e4b2bfbd70761aaf49",
"0xf05d9b39c0b9b3ca177ee5a8b12de457d00643d5a668a8fb30d6cba0266ae31",
"0xdbb12012ec467271d189184d086eacb530c1bc906895850bc80af72eb6e49a4",
"0x1e3d63755488479f0502c34e097c74fed1926b613e979d53a5353ea959ee6c9f",
"0x2939fe43f4690de6ecc251b7cbfffca082fdf3c841d5ec1aa77de64016d23c0d",
"0x29b304c4af9503a5a1ed74cfb37c9e98235404a851e915f9b476f96cf97208e9",
"0x17f58faffdddb92894ca7cdad4cd379da8c174076a250c3a69441d649ce04bc6",
"0x191456fee87886a7ae3d41901a05e755d8a3cc2a2519cc011a80724d430e918a",
"0x4301fbb26093e59eb5818971467c137eb7633a00e8d1f51856f2e38596f3d2f",
"0x127fe9f3329bc33759114950d8afe484a98e33011da6e40a41dc1f4ca2ce87a6",
"0x201ad991da475d146d85daa85c5ca3d2d9ca48ff7886b06e37dbacfb7ef69664",
"0x24a3d85006e0ccdd3d6fc62623fc5b36b1827ad57f7511a9677cc36327cebe65",
"0x273193d9b2986767b8934849938c7d1157ebc32578efcc7528d9a6a18a354953",
"0x2bb64a3b825a61f6c8b577993aa63ac00659221cafe92405be881026da729676",
"0xf656e73593dd090547fb5b3b8361d172c93f94a334e5feddc059fd03890690e",
"0x2889c18fa2eb572d474b6eee810b750942586f2792b146f455a023b89542d353",
"0x10ed5f7f60bab5b473285acbd59f0e3dd299f6d2d1e6412322ebf9378f4aa031",
"0x94d0f2d2dac4b549a1ac6b1e112ecb6e9eb337c0086cb2c39c5b98a180391cc",
"0x1b6950296c9a98930d2acc173d41e4788e70e42e3f568a97daa0fb7ad8d2eeb9",
"0x227c2f6979d9ca34ed1716207f3d70e78b9b76b1fdbf3ea97ae4b54826190e21",
"0x33ee70ee09fc264ff1cfa9060778cf77b725d24c55967846f6aeb468189f68e",
"0x103ab98622a6dd1bd90094a3b69b635873a4bfb0b1645964b8d03390192a264a",
"0x46f5bb0ba2b9a8cc19af50bd1fe9d3e73e4df3036ee569beef19fb47bba174e",
"0x1955685f6f6f936a887f4892fd66ae962f38fec2286788bd246f7eca45b5d7f3",
"0x7eaa9de669ef1442dc6d616ec080d6c921f95e73b87b7c3752782d7846d5a16",
"0x1103c98bc60cb276ac254178b668e743b6793de46309ff72291767e697516522",
"0x14e1141e0163ad2a79522578c5025149d4ad0b484ea0837c427ffd798b5c211c",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x4b913e824903a4b78ffbfa9043117402f816d24b695be147d26fb633ace8fb6",
"0x11b959c95a4da45d9da05602f07e696b8ac0ce6781702a1368d807d21eaab72f",
"0x1fbfc86fc58e1fa4032309165184ac8b6dc81dc1f81c09ff100758347243f289",
"0xfa7865327aef8246f45ac73dba9666a853fa8e71e1edc2409647207922a9041",
"0x3020170de7b6e86b2b0fcd04439ebdaaa8ce01089600b801945dded0c906d83d",
"0x10e72d8e4629ac7c8fffddca3f8374759040f8f61e1b2419cf266255d68496d3",
"0x5e90f1892363b99161345ab49317e3792eb9a536f473e85fa47480b90dd2a86",
"0x240e190d0b92f9aa7cd7bce008719c3f8d5fff587df3958c85f5a1286288f63",
"0x16e841b2ee682513db27e23b983f5fabbe6ad3a3d44303962910302eaf30840f",
"0x8a397b575fb86fad288ceb48f43315d70399c8bd9cf4af25faead935d02277a",
"0x2edad52145b10b3d0bcbd0216574b52cc2b442f9308ab528a018a78ae97067f1",
"0x1caca2ec3c3d6617fefbe6901c4252ec01ec7cdda757bdbd5f9cc62e911cda61",
"0x157303e9fe11497049ecf530db42fea5c87d7b14cc153120babb743935f30de0",
"0x20d93803a35f06d76ab5daeec28e4591d0066271d84edf26660e0350d30a9049",
"0x970dae33627a299a9cbf049505d94ce6cd1256c80a6322ad47479448bc808a2",
"0x178b6678bfc5c1d9fad6fa7aea247cb6b4facffbd49fd846c64f1411b2c2f6b0",
"0x6503b98a6cc525bd286b56e7ec81ab36835c969d4101ac249d3dd65834fd99c",
"0x21218ec0a783dc924ae7d9f38260750f0a0e039a4004cc095d5bb88e1f9be771",
"0xc0289c9220673997f0393267b29ab048761034a16f6b6e076b063ec6031846d",
"0x1984f03779ff4d9b4ccfd87d23700f204b38c3a606b0279327ca81ff9560b48d",
"0x17aa6042676f383383262058e28ab7c70d3d19b4f8ad4f54a43869e037470258",
"0x2ee1b009aa9a1ba5894110394a79e739754d9f2356ccf9293b2d851ddb6a6c52",
"0x22a586eb8ef3b8257479bca2d919afc56fd0846dbff4f3a9db9e42e4334b8727",
"0x643b1de630b4b9a250b0eb1857c4323bce1701afdb02ff2c6537a04847ac5b4",
"0x125bab28f5eb5c15dc0b3e9ce2b1e6bb246ebc56c44fe9943dc1ea4915830033",
"0x1bc10af70f7125d85f34ad4ef6e7347eeba2a11321da19894c5f826880d770ad",
"0xf6baa6289cf76db86d915ac19af0535773157e39b5423b43b1f3d0df2a4ef5c",
"0x2e80ef76053f6d815f5a779fba74e9b03bf8dbb8a19d40550c519a35f391301c",
"0x31efdb5d245fd16283ceaab1fb5d4ac1cd08918c0c22265f7f114a9ef22058a",
"0x25efb8eac91f3ab3d77ea8ef523c86fa555516d32798397a6ad00622095b9b0",
"0x14cdcee9150e86793e59fd2690a2aa102c2ec7f78d1da286826a37068c8859b5",
"0x101320abf4ad5bfdd7bf37fd1b5e5afa8f1b472c02e062a7058780fc215396c4",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x4d0659feee688cc4dbaaea4f05b259f7614cf5a5d970087016cb2f2eb343bf4",
"0x291dcb25510a3655066e860ade461e23fa4f89bc26f523b65b88aad5a753623c",
"0x1c40b5589a51a5bc3e746f93c18ee86f51331e8da3a246909b6a3063393a1b6e",
"0x50535d58a6b20676d9dde187a15c9676781eb6c1e46159f9e63d7db750c6410",
"0x1532765d3af5aad33c7cae523592894cf354ad9890479d662ce3cd51721178c1",
"0x8a6818b3d448d43c1b5ef357488c00883e342690a21d3fed21f7d62142dd589",
"0x17db4c5c59ff1ade79c01c45dbc7b6134c929ca5292cd7893a016573e7696756",
"0x2a7e1f2d365ce9b5abd3eeaf983c6f6434cdba5ea59222f6bd3a5d3ecd763f5a",
"0x6261e5b4d7188ac9e84d341f1152a4518f88d3e701ed5bfd7110577ce1dfa8f",
"0x199c5a8f0703767fe32daa280419f8c6793bb0888ecdfcbb4eb16332fbc028a9",
"0x13388d9d87929845924e078243a8d7e2476d77ccf84f1c05f7fb7c7da371bdee",
"0x7d044bf7a4fd698a6757c186c08d7c39c2083c8cbc5be29964e481592ee6684",
"0x283cd95f4743d216af04c17591b192367280dd2440ef47349a8f384f63887cd8",
"0x1356391f7516db1ad0481ebffa73034416caa2362bd2612a9f42034e35e93e27",
"0x26fd7e1f6d657b1bd8333e3f9b548f54941b9d13830bc88b8210e5b359b00f68",
"0x27ec948ca2028850a977addd6a9cccc697404d4d4b47eaadb54558c57435f916",
"0x27529d815efdab4fa4f21829ba3103982ab79e6052fa863044394fb5fc8d5dc7",
"0x1dce3f61f34639eefa0a344fea750a5751da0695e577434f20a38658cee96f09",
"0x917c97d46d5b4ff89b5cce4bd785c4b68f38c53beae9cec7e8ce31f7b11ab5e",
"0x1f389f75cde06c7ca3105a2b5769cf3915292ebb44e5819229fe3f33ff11d03a",
"0x2d9aac1c72b0a36a067ec7776c0ce2138eed3e90c3c381d13b28c43f297ff300",
"0xb8f7a8e4c0d2d5757c501e44a51e5f5160a01440281ebd4479b858614cfc09d",
"0xaa15536df2ec5905877e2ebf9d07d3763a3f94e9b4deb5c6639bd89efb86aca",
"0xb03dd77a7424fa8d945440f077f848e4137323442e11e1b4a2efe97df3214ae",
"0x70898a71952afad3ef0062e8420e92d94fa7bddc55beb355dcd1d3526f538d2",
"0x29d5413ba2416a2db49c14b165cb247362821494d738b57897a0bbe6cb53a287",
"0x7f3f807872bb8ec72dd2ccb223407a19c5b64e086cdb0c38a7b92458c5f7c8d",
"0x2f69330924f5ca89e8ea41b0334796a9961df24ad0abaef5106d89963a038f0a",
"0x2abdcf1940bf24e67ab4c8c0942df7d3440d04359da428541b0f128f6f53184e",
"0x209de37635d57f9ff0ea8a6be7cec5c70d701156bb34e25c0948c7090b319ec1",
"0x79b485de26ad58268a3b1bd5cdf3a1dbce291e7e30a1d645a7268d340a8f1f",
"0x2da731b7942de735663698b5d20570402d266df448d8a80110557643a906ba3f",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x2c8f848a56c338afe1290f12b67b57d00ff8e974e804ac53b174ea42c9970efd",
"0x2d02f17717bf0db48ac36ad0a19e621cbf73b049364d945ad2a962d481001430",
"0x2150b09c7e10ab5208e632f8dfd30bc323807c5c6b122a6783b9fe5458a859c8",
"0x5b10ef00e618a270ddc6f313e86197af2bb111ec623f2964518938e4d1ab8ce",
"0x813aef08c1ab8116f2ed8caa7eac00762afad0fcf0fed79077845b2b81888a3",
"0x217798429df3f4efe0b8010a3305f618cfa40b31226a7f01aacf05750f85e308",
"0x13dddd98f07da3c85a8a7e584a541a3d1c30131e58fd19a79d3583e1eab08db9",
"0x200c75e95d154cd5d9f42b940fd7090764594e0179db56e462c80da1b57e0826",
"0x24c60aa77eec80da564202803e367806e84056ea84571e7702e708eff20350bc",
"0x2008060f910cd57bd018a7fe79edc508e11897199106323a04369c0b2f110193",
"0x154b1730e35711d6b5e0596a7e9fdf40a369c96e9889573772e35153780d06a5",
"0x20b48f4a5019ab0f0229c8613c44f40d6ca7ff80ebc6bd6f4f595947c9e3e9a6",
"0x8da6678cb4513c79e70618c7f6a247376292a28f4b8a26d7b22cfe89262422f",
"0x1e32944ecb0c8e538be8b702f45748cbd910c621ba8c0462a03a6d536e8f3cf8",
"0x130383065e342214003bef6cd7ac224dfc22a799b13a089cefed9c8872c056c4",
"0x2bb1e946f9019e0f0a3a6f31c54d13d900e95b92657fb49a0bb1d8b085aa7bdc",
"0x12c6706724626b4a2511d5ef4cdc22e569da5743363f598b0985da3f74ebcc66",
"0x105f4876b371512fdd868e75e02332cb49f228f7f6c3ce9012fca57b9587fda7",
"0x1ecdf6fcce9eea60179494be5317b761a337f5c1eea7d4bd7b36c4b136ba893c",
"0x9cd2ef6d45dbbca0dc657384ddb563f367042010debc24bf026a4b9c59f0da7",
"0x254ac6855d05046745889295c485aa0d141421c2e7e46907c6ae60a50ee2f8ba",
"0xa99c054b9a38bbe19930906e64c1126c9f0aaeb16ab6c33d1e0e29418edcca4",
"0x220b4016fade57782896ac3ac88e5c69dca5e58f1d6ebe25f7caee67371b85a4",
"0xb1979da1c048f6ef5e0232ef793f134dbb2a9e2c8f83a710944e1ccbdb08da5",
"0x2eef2d924b88414b5f89ffa9dfd4b62047a12d0e08118d0d39a1a1fa99dd91e5",
"0x126ae3d2dcacca892ec8b9b2338953d3bd2a0b341b7ed5986138dae14b6bab77",
"0x19e7c32cf6e235f95e2ff6e9537b23f8fb2ef50b5a1f734eb757352a74eaf498",
"0x2f9bcb5e0cd5660350ea6151e4a514ac84dc6064adac393e9bc4daa628297fc6",
"0x1aa496f96372589a74cdb1523691b1fd072bd35560d30b8c48109d86c7776b75",
"0x2ea5a8d0da13d3a0051a7f1b186b35d6f0eb986a2769aee850d3945ee2409439",
"0xa633c25ff6bbbd07e365ee018c76dc3be74b40619892f106cdecf3cc4ff8372",
"0xf412148158955c69a302b9b42e5fedb330d5ab4a6cf31b25d4fd1d8135c9900",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x2f2ed1486990b9431be8fc1485b6eac869fef5cd8fd2a94c7d4d5da7e496db12",
"0xd5140886c23f2671e698c3733a296be1f4ecb97f7520b027d906189fd755860",
"0xd1b9427080a9865543b6fbe5502899198b228d02f2ee9287bd1bc1b71680370",
"0x25f14784419e0d86eba62a9cf2cb22f063caeca529be18af1fa084c73287c3fd",
"0x1cdf7679aeb1784cd81e69e41807377671163372ca50143e5b30eef5a31abea9",
"0x7abd6f3a4c53c8d3aefe49b257b3e7c0aace886107a6168a9f93e33733c1224",
"0x198e8dde62e4b800e4a5081cc43fffce5ba02ddb349795a9ba8d2ca36eaeceff",
"0x2a10fcbbc185ff7ae275115f56640a9ab88dfee8d2f371e21fade31ff9e7d249",
"0x3f74e702559a149c3ccb5dd839b3f80ce100c26671929236a4d703c6e53d53b",
"0x1e9cd241f96559366079809b034d98dc345a4814a7e947e17b41a19b4a119b75",
"0x7640b3b48b2cec9061c87ce4740d281ccaea62d865d0b3da726ffcd67d2d426",
"0xf224f2a3eeb002452e25fa54b360804dc9dd1a065655a31230e91a1f7896eda",
"0x296b25652ffb82041356634b505aec0d11bc8ffeab06b6ee76f97d3e90e11316",
"0x24b1e852a6168ca05bfe0e823f4a984b3b99ed9bf3f651cdd3ca31a2d93a21e9",
"0x1170380f35b0c131ca5d2ea71f42fed8b3caefc4ae2ddb42ffce4c72df975521",
"0x2a21146458a9b5cd2232544ec84b9c2e3c07b75cbc4a2e27f1458995a5cf7665",
"0x2cf40c380da1e84026e58bca73fc8821a6956f7866bbc6591330c7b0876d1e48",
"0xa4e5a8c25c79291e6e7906a8bb9897dbd91567061abbe4eb2b80f7e591abad5",
"0x219cccac1ff828ee50d9413629c80b870ed290d5b2197a0b9db61960913eb29e",
"0x18a4a743a05448844b46abe129001953306236ecccce1b8c885e712084ae40d9",
"0x23f5c0a65d6d3f4b017a68d513413e702ab2195a12d3007589a7ad4230792a99",
"0x248649d22bbd35db3c317fb6f1e20944adf80720fd085394e606fe58c93b227e",
"0x1da45cba740db4b50fc4b2571e40590ad20c725af7393d2e2096f782ca8451b0",
"0x59c9894d39a728ce35f569c8b59acff2a98903a73d6935236ac6ab8bb65e7d7",
"0x137afc1da2a1dd16e4049c3e23951f23e5324e12fe046652beb4cda449a21cd3",
"0x1c67f00b6836091d6642592a40c27b9b875f51cc9eb804221130d3f883d29765",
"0xbeacd79129b9b6c793b29450ce6458c86475951ca6f0941ffaaa73622709bc",
"0x1d7194f0b9970b103e3d4bd5a46b5054ab45bd42f537324cb6fec3c672cd5f0a",
"0x38c741f8607a78f328725ad18d2baf8642c005429c53f5b7f9b8be51c8a507b",
"0x1d32ee86d0a10d113b8400a3301ee9df0b4f9666c4c962073bab7f02f0c55e7",
"0xec78e82ba602f4ab67e987ff3eb4562b0818c481c6e8febf4a4a157ecea15a",
"0x2e0de6aecd184a6d47a6a7ae42b76346f15f98bc4f0f68ee1a55929939a7842a",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x93d13cd9b043a5b6a5acb2de0bc54de68b71c88e8d61c2c3c3bd52febfab688",
"0x80fab4e2e36da9276e4610197b32d28ecff28dcf155f5db596037e41a2888ae",
"0x7d2d245764c856372297c49ff64365a99137acfa81041932b4324877e33d9b6",
"0xab6a369f3d47ab68ba9add80b46b610d39531e22a75a30df3f32f4bede18a73",
"0x7a683cd3c4e68622283858eff121cf3a5ec2cb48763c290a4984f7e75a86139",
"0x1fd44c84d9e254b1c6e60cb8c1682f5e78a5c9f9cc88e53b8bd1d8e9bf20638f",
"0x2ac2bdddae01ecad6c097ec139f7d442b7a5c48c491c0a83a006e9dd1c44c9b9",
"0x24a03800df78ab8dac3b172aba870efde663176598e2489fe1371f1b8fd9ce09",
"0x12e453652194ddc8ff5f249f04214d2e0571ae46eda251ed66c9de6f412e08bf",
"0x592a798f42fe58f27f503f2ac512286fc9a0271edbbb43d263358697b731668",
"0xa92a96d55b5e02c8fe846f8cfef92f2243cbd535b6b3c0e44d3c6fcafc01963",
"0x2f43e2c6e8af0638e163e2f4d34aadf2debdb3a5df531296ee2bc5dfd2aa8d41",
"0x3117e986130d1c25eed39ddb3e1e4afef783e031d60bc17e0681288f2d910ca",
"0x25cafbb434aee06df5f90241702018c6fe677ba0bfac46f6b5b8314ef8f5d407",
"0x28b797a499c2b1082b6a674ac02ef5cc2440d6eee1ea1be1ed5a527a6e5ccc95",
"0x23bf393a579394003e64cc399506807aa684314a29992e3bbb3b67fee7f50e24",
"0x28656564d677d58df440de43115089a1790d1aa95183b390349688e8c8aa3e32",
"0x241a69500f5e134c993252fe1052c9cd7e235d501b3b2343ee0e4857e2d0209",
"0x3744e02ce85e599147162a48b8095c61ef582bd1b4027649a4b706e9d99f355",
"0x59b7a17e1c0e884def789033664d88ba112980ee5d7ce4320f4b59092a493ea",
"0x2a6efd68e5dabc912ec2b5f7814e6e1b7b8893acd10e93d8e88af5cece9e433f",
"0x20826fe980809fbe57d7af7d60262abd566278d70e03c7dbd24798c9c991ce5b",
"0x181e562d37922bad979ac96f562011311f09187613e196398d3cea64e7fcc7ca",
"0x1c4e70fbd4c9e09d3b341e1a9ff87d088e6bc4d88a5cb20bc39a2216e9a2e78b",
"0x170c6ee37a8fae5a940388717c1ed8237f9c2c51e0771fe1c5114f020720b1c2",
"0x68712f00eae99b3109162c3a1c8a6b836031f7b3fea61477d274fc39cf53b53",
"0x1937a02e7c8e39d7f3a88a82c38dc1b2b6a7f4326ceaf7aca3f8a2fd163f1388",
"0x8b99b6b338adaaec87f0f4e4106e1a76938bdcb0b55d66b9af257f46da5c6de",
"0x136d1108a8d4bcea80090baee33556f59dcf26a8365b6f657a6625029b73f354",
"0x2d8a56738cf6dc4785fdbc68f440fa3b2d4de0d5ab6d2d7c6c11649ec2e4da65",
"0x27f16feaf6fe1525cd67eef458297d1696dc45bf5f8f1ea18e17801399f3ca4f",
"0x340f8d664a1afe4fbd06793842133cd43ee4e0b2173405efa10445f43a1836a",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x14ad435cf9a9f41fbfaa62698ea2b01d778fa6ad3e6d75d628e535cec66f6183",
"0x229f1484514708285cb6c866fab78878bbc39aec362b9db5e258c101a7382806",
"0x55104ec0dfbeb910aa081864bd59497cfe65acc2091c2cc675ebb7c7b2a318f",
"0xd75b1f18144371f5a0de32dc9124230448f17584ef93ed84300270b6ef3d4cf",
"0xa1da3a581de2337e823d10c00af64ed8152a3375abc7c8e038592893e02f879",
"0x15ce644c9c753f2b508595d24c0905b3712411f8bd78c1dddb60a61e3574f50a",
"0x249251029b3a7d83a4442ef27a2f3bca3edbdfca88c33095f557cececa23fa7",
"0x2190e0657b7f4592ed17884e486aa0983f96d05d497f12d9bb08fcba65e146a2",
"0x18e7e7d031ea4b865475eca9cfa2f156d2bebd8f57c6c66630f2b3e9bdf3aa1b",
"0xc23dd68ce397790fa9d48e22108072ad02df0f80f684926ffa4b66e8871b1ee",
"0x1346be394582712818b12e409e1a2f80f258be08e8f5273e4223048a6ec68596",
"0x227413a36ae6153e431c4dc592eeb597ad18b0a119f1c644d8741c5d1302bf5d",
"0xb0ae3714255eb9abec3c60d3e9d3852c33db950e87bc17818ff0242955aa594",
"0x1f65fc46116912553c6c9bde179a09288bc29ab001fa7f58b2b36e10049da7a1",
"0x1c35284edba1cd391d618754b17f642eebed4127382b82f7c28b2e70a8f70d40",
"0x1080a3fde0e42ad7dd86de041cab7fdd025951641942374c1abcf62626f48a3",
"0x1428eb2a1f2d91707f546af2e0a14fd6f11eee2ca12eff4d36634a08a2501d8b",
"0x33503c434487731d754e92d6e8ce327ceecbae661711045060e165ed284fd29",
"0x137a5d67d8c2d7d92f83451a20d0698f3ec69d9bedca8fdf23e4cc761c30895c",
"0x33ff54a0543a859d10d23919d9353eb1c7df8c37cf77d71c033427f8785ef7f",
"0x2ef45d95ea7a2a6ebf7cd42d1bb3eede45cceeb3c13124fe3e4bf9bd43919aef",
"0x1503cc2c9f6869e97c3f356fc0888cee11b122576b7ac19e53e22e64541b864c",
"0x13b7e00bb153de07cecadd2525f0400ec81c7f3f01b2f8c0d4d923626f5074db",
"0x1560e82a44438c75cbe5e7bf4242e9b318e84d0f70c247b4941214a54e2ecbdd",
"0x16e6cbda059ea98cd388bc97b407a150d03cbc54db44314acd2fdcb856ed59ea",
"0x224e1109c1eb450d665db9aa5a324754e9de0f3645c36a4f42c06525a6a02f17",
"0x1fae1e95cc145b1b611ae98352921e5621563019bcec54ef9aa0a006c5ca9c0f",
"0x29c2c9268343afc2448493205d8efe3ca12ff4ba45195e125b1a585b3c15362c",
"0x1745aa01a6decfbf4742ca4eb4fb46936c593a8fbb1753e4b1bd8ac26107dcb6",
"0x2b8e149f0ad40ad21c74ba35026dddbf89dce7c2227dfcfc94a55130b282348d",
"0x21eb20b36f906d2693f37e6b25f10a251dae88ee9e5bed97d0bfea9d95eb6155",
"0x2e2d367ebd03ab9e863a272a0cb40240222f32d1ef3f7a79de99160236cde439",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x2e142d51bb3c63e11687bea27b03d2c1f47ff4617dcf1784fcb06139718bdc",
"0x2f9a0d8d22bb17dc91fb40146ab611c24fd7aff2721139eebc67f103abaa8abe",
"0x1cd3446fe74bd3cf4e8790869ca502315e2cb5e61bfd569b79e4bceba7dd18c5",
"0x4882cdf369a6b624cdcdf140521e2f5d4f056d5be8938eafdab02b2b6b28365",
"0xdaabd96d080089cc09b753a113f03c79cddb879fcd4fe92f64086af355320af",
"0x11fada765d840371159d393d9383846a758452164778b156ad07d2f97b1c81d5",
"0xf1bb77c65687d588f3afdd2e81ed31b0b14e7a6b34b3f194013310a430e72ff",
"0x1b6cbbda2504b6c7157070cab18a64cfa67b25174430ae34f88f41d06a5df61c",
"0x2caadb9815edd0b00891c8952f439654bff61c480d34304a559b2ee106e8555b",
"0x29d647c2ff17d90d8ac500cd862bc7cf3bcd63cae45d13ba2b2f5bd819cdf00a",
"0xf9577281c0113be755056c5a200c03b651cd175ef4c1c51526a262db78b6012",
"0x1c7a4104b1eb344a9d10ae34fe9f0d9b944b1f27b9ad60e78d076f14b1579dd1",
"0x28833764307c07236b8d64f1e872a15f26b93cbaa63062c5728b6a6126a2b3d8",
"0x245ff91d36df9a9301cc998a11ea027605aea0dac30a20a32fc5b9546ff5f22d",
"0x9c3b8ddc3c8a83b3dbc098cf547b51d197fa16571ca6ce1bfa603f23474188b",
"0x23123b0f1690f3c61a3d7877f26f33c4c26feb8579966b878f9313f2a7bb0724",
"0x2f42ef2f174748c44f63767b95d5e66b2554f75a164e00833336a9d990fe4279",
"0x1d8000747e03e93c37fe21b889bdbefdc234baa290a68aba51d3517a260e6944",
"0x103f779b0899d4250da3fc25d27e0444a18498ffc0bf0ce7ad7fb106ba311a18",
"0x7f4c9eacabf180b840cc30448d4926692e4a4d4b6c970e0e818c5e11d7a984b",
"0x17e5e03ecf01408a520c1c5bb8e1a4477b011178aec18404e414554fd78da779",
"0x116cd1a5deb317ac2200d91721cb4c794fd1bdb9e04c80d222b2ae77cdfe0412",
"0x259847fcd69413a8b787a452950cb9970981ce86ace933112f205b18b20af1ac",
"0x7244b4174980899193f70318c4c09239a011431b1f0bd3f5c79e8e36347e52c",
"0x27a6122c5882996b8b87923a9b66a2a4970c9844cd3034e847fecd91d6b13fcc",
"0x2c0bef6885d9a4d76f43a29ddde616fa8174cd24ab58d4dc707ba5f924739c41",
"0x2d0cd48e3952f4d64e4f37477e2c0ac65fcb78682dcd8fa4c4e9d744c1205af9",
"0x8d8edc9e81dfba6cd7305c1bfe73f42d7252dbb19889e125c5c9aef137804c7",
"0x20860a731c157ac1b7ad854b3b851d0c739f111995a8122aaa7147ce61355a1b",
"0x2b242cf51e3fc841f925153bac6ae94b84c0e4839da70c3639ae554a2ffb538b",
"0x71642f8fb008ca366c562ce0755bd0edc2cb3b1851d91871f7c217c6c17b812",
"0x10628390eb8c9489dd00520c4d1f3bcb7917ee849eaec5d03d662192e40e4c05",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x2c657cf556552ac00d3c6a312f941c21752d80f6fb971f6f237b9f067f55ef50",
"0x2274e5afd41f484d4bb846c23f4d15eec892ed12abfc57aadc71c431dec0ec94",
"0x21e3eead8292384cd4e9ab89698674acf899b310c4fb1474a50ed68ab15ee79b",
"0x275b0e09088d1a143b3834ed09babfca45694301eb39680c7e01456918596140",
"0x129eae0d0efd6629f2846e2659d11190f995e7f7976dba6706d5275f8ae42e2b",
"0x23c3296abead985b298d2f7359d6fc6b66428469efef7f33cce72f7d261e200e",
"0x120eb3949a1bc6dadb99eb797c5089f6c81b8489e8d2fdb648759f9b7d950c92",
"0x277b28338565bebe62ad1128dfd277e71dcc0f5cbf15884f3f4431aaa022ae2c",
"0x4f36e389ff9ebb3bcd6810d8b233c0cccd2d0a9a86f0c6eced01bccdf453a94",
"0x2548fa65475658066e282e043fb7e3a2e5916ad635f27977d292b0ad3ef3e4e5",
"0x4565577c55373eed95c9aaf5c9d202c270ce37dc1a1a2232c856f88dff9364f",
"0x233e72784c11da8ade7b9f172935e44a748c8cb94959122f9da6c7ed65a6cf10",
"0x158b72f3087e0267336e27fc3921ee3a3a534b925fecb827ca25f7dc77523334",
"0x15c260f3c32020be493ac81d6969ece9c8e8aab39cb11ad8c69bd97516886522",
"0x2396362d574b22bf4f2b162ddb6879ae4aee803609c5af81b0cc96e1dd77fb69",
"0x2d0bdfbd9147195907ed3568ae8309feb349fdff397c36b567099ae14a3770ff",
"0x2cd487c6239575748dce9a1b1e9cbaaaa9df4bdbbfa64f68ab6ed9f9685898ec",
"0x1e73a3297684b098cfd3e270ec4299fc88d970a924596014e9a7f602ee9b081b",
"0x248862b26667bf9e71255c8473c4d4f498bf02d6fe6c554e9d6a8194b443c7b1",
"0x12daded6502d15cc7ccfd3998e01c39851611629fd9a6562f628ef83c7910b8d",
"0x15e998f00cc4dd24ff559089cd43bec5566f2505b8136c5ab74d9a426d875c75",
"0x217fa23d5b14a9ffa837fcc744c4a64fd13e6fe162777fc834bf119df306c8c7",
"0xcadcf98c06aba7c6f354cd05bb28857f3798b83111652ddda6e2f8fad6a0518",
"0x1c5c0906f02d4a6e3fe315f26891dae1132436b3cfd048f897a2988abb14e005",
"0x8452c4131a7a4f5730e877519de1b927a02260f56ab0e7cf23dd41010093ced",
"0x72e4518998bb2aa7df1a094e4a1032a4f1651403a006aff7d8d3f8e0431b39a",
"0xab9888d29232bea4dcd77c9627693a4f292375d6ab81482eb0cd718adcc4752",
"0xfc2e5df60bb4a189253e73f07025b34dac9f8f6c215a26c53fa5b3b1482e105",
"0x50e82e90a419f91e690625c51ad3da156afca51ed13531b0e67a3b89385273b",
"0x2f88a4415d7e88cfd3cdf0a5b4bbc26b243319e20d0e4ce861a2f2a5042e93cb",
"0x1e10e776d5e15e0786cd5d0ef96d1ab332eb05773833ea20cd5a19891df8da96",
"0x17de64722cd216df23ac5fc20f4298bc5c23f17de82c80d361a1cc10c3f3b7a3",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x1b9c2c4eebbe7516481522714ccefbcf9f46b1d9acd32a7074f6e247ad6cc86c",
"0x1b40c39dbad124c570125eb0b2586ec99e260411e0dd871cff7869ec3864df9",
"0x33cd9b171a83f21a643c9db6174fdb0a12ed70e96e4dbcd7cd13888c4b3eb55",
"0x19cb8e0c054400347facfff66eacd97d794bd61b59323af411ad0fbe2f380942",
"0x26c218511f870b55f305e1787e4b19e1ab682b8c823153abf87d6b93d808e4d9",
"0x29e12c794848bfe525ab81ce659d2cf1111feb3fd7118f94e22a86b6f88b53cf",
"0x3a6658a834c4e3616dc5f917fa062d251c8ba4cccd09532eca0d77981b0170",
"0x168adabd67838fadbbf46c9d9716f71494ab077f42cacf9c45e489d342a3e15a",
"0x11742863039a6788df3464d2644c239b1929c3f16f43efaf505e2416f5e23a1c",
"0x126abad95e2b51fd989173eb24d170db35879d2ed95aeb53fc43f37b92e0da48",
"0x23c212335569ce5f39553eb328159fefbdba99ea37be97365fe8049e550c93da",
"0x2f4dd1170cd5681dd49cffa2b31105e7f1772c10277da6436208aa1a496c0ca3",
"0x1f1add5db460502e7d77a5abe06b5391bfd9363ec845f737ca6c072f46d26164",
"0xde4648c15ee1c296f4bbc50fcf033680afe8764c93b524d0c7f96a17c8fa0c1",
"0x2940f3f803b79a69ec13670c3bcef58b3aa6225c5ff1b9fd8bcf1ce7d9da83a9",
"0x6022a2c0e67a56ca21f209520eb78989c32443d6d66a659def8fb09e41dc3b",
"0x2614b22ed71c1ebf563048afad7b64934e51c6c1787f79d6cacb0cfa401692f3",
"0xae0351a3f38218d3f64682ea5b4bbd19c9da2312b6d66c98a4e5793f56037b6",
"0x2acb14246a8372f36e96bae26d0298d0dec2a8037325848540d092927b247af7",
"0x4ac1f3bf59ff8258755878919911219c901e45d368e485fd581702935e593b8",
"0x637c3722f5a87f3c148453456b4bd91dde864a8d689b73b12379558e5fe427",
"0x2ed10f87c57e6e4d78f31e18f1c7e9ee7c0b59117a6d034e2ead2aae114caa32",
"0x2db539eff29b1c4e93218c6e10e9552179fb7b03fc7308882fa9ada5a9eb4776",
"0xcaedc62eb88ea19a6ea5fde158da87c74f591099c56a110467fcbb2dcd21f79",
"0x485d5824b4d88b5c32a715605487a6b58ae93461b15110f2a7f71887069940e",
"0x20fa1c1846393fc776c5868c6eb0b841e64eaf613c2005ea361b317dabbca53e",
"0x2e17fb34208254172d03928de8c56b8cc29f87e29e8aef1f79b13bfb5e7ae90d",
"0x1d45f577db25f490276008376cf8b59a08f20d469d8676010f7f281d5cd1aeb1",
"0x48ea8cd9295a1a3e48cb22507e7237d0a6566b58e4747c0896fbefd7aa0c7c2",
"0x3059196428e054d558d0e6a091559ff419ddfeab8e2aa1ba796e98849098f404",
"0x1170eb002f68247115722d0638fcea7c2b7f70024953c733bc8cd94a86c23ca7",
"0x25fcb5f375ff3d5cc49ca2936b121d9591be3e09fc88efeea4cf90521aa04b97",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x23444707325fc7683a461c2dea2173d8472c0b5b13701b34b87203bffe8f4aa4",
"0x2b272e00da1d1d1d764b7da9384cd2efb8db8604c01b9f2b833a7c1520369e3b",
"0x17b59a35bca179afddf24993a2a28466862328d66cf18d77e8be5f950d7f957c",
"0x20460d5c7e4548772c619dbe8a220b477882005180887377c0ecb4b4c20ce625",
"0xd1346ae8fcfaefc96496235e8a4b6cac300a284f97be68f0a453c55569e2e1c",
"0x29d5c8e901d6f659e2c9b51f5da873c776a55de9fe0a95910c5893d9d64c180d",
"0x109297c57950d5ec34e371af14fe40615e26d74a4fd2562dbaf8b0cfc0da67b5",
"0xafa294b0b8973e74c6bcbcdf0953726679268df4b7ab3a0af0496d80f4e915a",
"0x1ccdae789483414efc596b7a74d20cc5af2de7595d53c80c6762e599c4c19918",
"0x7d80df4e972d5962e8447454033d912127d2930fd5229d1274aacb93ab35467",
"0x19e7ddd05077b3710fc6cf15a1746ff3f2ce7b0ad9355bdcc599e882881b7812",
"0x19c52a43b8a53bb146faf681e98fc8670800b6b9dde47ea38a849b82c1f17920",
"0x2ed2fd2f3a2f78c35d4ec54a41b9941d4040bf4f0766985c776b6726746efeb7",
"0x117e9b92ef305e1cecef90cb404f6b178b1d2c216e8c3bf650ad5b9f675a2446",
"0x27dbe49809655461a2940850aa8c41ce6dbd5221400a9dce49f9f3ff9b04dd57",
"0x8bc85ab2f7b9d3152fec37fd1c66ef688e2d71e325dba40eeed84dced4ea11",
"0x18550a78308e47e5ac75a3cd82d4389a37c6918ed42bffa89dd128c6b4cd6f53",
"0x22d06c4fb6f2b725a93cb9e97f08f466c2d2078953f43f4159bdafe3a9bbc2d2",
"0x1f3f2ff5ea4b6044d0d142c2850a8907dece24a9e7c508c09b3b7cbf1d2db33a",
"0x2985a2e4d66f1b2c18c3f647d444474d432fd597dc23671ccb3bf61c1351e990",
"0x177e8a83bcc683805e1af7e744206e05fc99f85b605b10f3f0867913ff45a521",
"0x97666874717688dba3d9546ff71cb3fa829d101f2bec9a191b5915ec120b658",
"0x15055d2177bd83ae6ef36e4f113f7a53fff218984f73588988acb7f890461698",
"0xe0197b38f1671c3fb6a078cb443ece122bfdd9f47486f3fc5ddcdafefdc9c5c",
"0x78b8c01a67c4e5cb15738416497b1d4b3d8fce7631cef919eb4a39015bb5b8e",
"0x26f58171d43f5d52535468f97f3f4a76a56d43bb0c8560ac98ad6fc409c6895b",
"0x2db3d892f554ae8b1b5819fbd4ae79f23a1f4627383656c93be2e3ff42f7e7c1",
"0x196b74fdd43c9fa4f77111911dced6856b397b19da47474fe1a8f0de62bc57fc",
"0x6238d5e3cdaa238c7670efd64dbcce481815965fdd55efa8ab1706d7a43aa38",
"0x22332a4ce6b7a223d45c777c7bdc960669e4a801b4a76b88b66d05039a53eea0",
"0x1f88fecb08e0101e470f5dcee2c8b846d2562f89cd27d92e6b00faacae30389f",
"0xc2ada53a5fcfb484d0a65c509305fa3f00db8a2f961d4515c149c85e677c8d4",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x1b28926cd83b4658afd2d9cfdfdce6b87aa9a072634889320a35cdcb9215e5b9",
"0x15d6448f76cf1b20262428f1e416bbd1af8630fb361d7f644639ad5b60d8f180",
"0x2af5dfa19ccc918de449d5d3b592e6d04d78bd796e6f07098e64630f2079d1c9",
"0x19d0ff169994b50d9ca896bffbd91f7f3b5c7d9ad51363fe5f0d2fb6185c2410",
"0x2755fe866df7e2d95bc2c8072e5402ca6f588b7f2734a2a54a4c519ca8297474",
"0x77a07258bfa21e2ac255e20a0d31d9a01cc85cad4bc02e6921a507ed5df4728",
"0x2ece250f68cd231dfbbdd343c367626f3cc413a32be08ebaf996dc8150003b5f",
"0x28d5f29f5df2a1b4fb5dc798dd2fb2d9099a9bb15e06933ccb382d3f712abc56",
"0x2af8e1fcf37dcf5f55699d9929ef5fc6505dfa79e061782ebc6a4bda3100fec5",
"0x1a391e08a393750010adbdfa7c621d382a29b98886d241cfe0c567bb37748954",
"0x1da3f4058cc2ce6554842588dafe5f4517661730183f0b99f9aeacabfc7acfcd",
"0x1e3b1802005fe7296d11441c07cbea61e32baf5484d40e315cb49e2063bb4942",
"0x1eca6728a58b997d09ac9d9eae05bcd86afaeec5800dfd73fb0280edc996d61b",
"0x2991dada2697975e05e0f74b4a69560557d34bef132ff73f3ecce501461f59c1",
"0x13a9e49e7875c154539d20cfef506535c91422054cd04aa195e12695a073487b",
"0xe97ef3325ec39935456c2a330435ef106d50b3d24a74e55045c58da778d2733",
"0x234fd4e50ddc42b1a40b1410ad7d9bbe27d21eb61d1b4ab05516422214059ee6",
"0xce167e175eb021fe2b91b0abb90c94667ea76c9a1139b958ecf14d64c617722",
"0x15871010759972a879b18a4d18bac0870013ee1f646d63f4bc63fcde2847ae87",
"0x168d81f62839ab0e29c4e03c0f570f9e44bd75eecde371611e98bac9a78c51cb",
"0x2c0c157479d4268e5a40179ab0a915072b91889b1eb06e1bb0e30c5936deac3b",
"0x2c1c6ea12c4f9343a80fd53d4169686705ffb51d3ff2766fd4c61f803e648e85",
"0x12c2c9b7086ab39752ea4a0afbd8703ba2ff66c309d48f404d7eb4edb90aadfa",
"0x16a90e916477870cb13cfc1ecfa73fe9365d36854efe87db94a2d8f019a3ee83",
"0x1e5674b6f90be35ef343540b191b0ee45707bdd34452407ad9035dd3bd282799",
"0x2daf0fbad1fe6737f7bca405e34dd0432a4bcd5acaaae29ddf9ed8ffc1f0c336",
"0x2908cd47730b9b031d14f778c53b64aec2838f3370f8832ac1fd7ab2d10a32e1",
"0x1385230fd1095a5c478a798071294b8a11c9805d10d4f27b670a868deff0a451",
"0x1d163c58cf48bb8e02eb3193cdfee3ef9c85133c14f87db1829663e74d10620a",
"0x2e557c38674c410f4d7c72ee1a36898f9c16ccbf5bf4709f49e1e727dffa2a55",
"0x1c05ef08c0686e237cccd7c9f7279e5abdbc39f7a27dda7238e73f37526346df",
"0x2527d4d7449be5d202aec33259a43c5daf25db035ba558b03308203a0e33f717",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x10a492ae5b487f258651a3aed0227cc02f6c7a8761586894c74e50b84ad8081a",
"0x2403d5c045640a3867d3fff22c33d5a7d4cc9c86fb7f746f0cfaa6cf0009165",
"0x2d5d1d7a9af2b5a434066ba829ad51a9d596c775d77dce9bb5e539df0869093d",
"0x9a863c700ddced174ab9a2f52feab6a6fc50d640f7cda128d3e0db7cc6d5421",
"0x2aab180f6e316fad89afe18cac953fe0795ad3b267d632d4192cdf7a7f09fb6f",
"0xd96040a550ca9da53410c291bb03f2597546be222c18ecc3ce1a6b934c9e79c",
"0x162f27f588a7684b059dcfe87e6f50d77e0b2b7c2a04d6b2bfea5e6677c07124",
"0xb923196444f67bb7b9a3549947da0d1d65c2d863062820159e7b8a15763fbe2",
"0x2004eab7ce64ce5a33d093bffdb3f5c8c062629a82df11c1b9d0237219653ab7",
"0x1227bf877742b79ae1f3f94f4a7d99e2ed3a6a9e531f224f865ef504a5bcaea0",
"0x20f776f86d93c05c559f42775c914befee8b6a77ce89e137ee9faf414a0985d7",
"0x172aa65c733a6035cda4bd931733ecb05f160dea5fac191c85b7f96c03c76ff",
"0x8be42f0fb8d0bd0918ae0c9a23d6c350992a03652a1443e10676ef0aab7758f",
"0x1fd0be6c49952151cd278ae5631d6760f0b7faa1da5cf1f86e88f04332962b0d",
"0xf9ac50342fd157a0cf0acac7bceaf4498140817dfb573e81bc6b455122abc7",
"0xcb3dfddba8d704f6abe9c8d4c31c36ba7aabd8b33866d5c34920a61a0971ca6",
"0xe770f3147cb0e321701d76e1090173d30171d6cb47618e96f0391cfe89a857c",
"0x737d887efe6fe8f9472901487cce5dd61e60b27b3a3987a5107cc0c747c73d3",
"0x1a385e2fdbacefe3fc505c0e8866ed36657ae93f963f4d8b9af435a98cc91fab",
"0x47765901d35e5b9c88c43dd5f4141cba4debe6bc675e49a08069b787252a3c1",
"0x1da4a4ede36f08e2b6f0000760e022e4c87b4828f5df067037e07ed0a3db70aa",
"0x847d2c6657d2fa009b736d83e33c9861b0192212fe8edd90dd9dfe16f52f861",
"0x3039ed5a92b2b6ac7e0dda476285292ccd649442508936442d4d3cc1d552383",
"0x77951dcf1d2ed93be5b91b720b5387db3a4097e55cc7781b69c27f5eeefe04",
"0xb585622b1f5eb8fdfcaad1c3cd7f944255a4618ebfc9f9dacf339e874df620a",
"0x1a2a7bbd62d97bb265d127d44fe34b17d9da8ee75813b5c51b9e16ee8dd7b402",
"0xdc48ec2dabd95e06d2987fd1824a959e084d4e62d1b2c5e503b33dbe6b30d02",
"0x290de95aae65845be12406a4585f7187d3d6528bf7daf00a84da01e8dfb69e1f",
"0xc017e46a4f39a1669a350ee495e7ad68562b222de7114a6c101adef47853293",
"0x2f0b5fb02d18a781e744403921d82e54c4919d1686d824bf4e62b2e4cc088cf9",
"0xe7e699b1dd9c60f0018d874e9364210eb920583d0d2d71567d38f4333bfa474",
"0x9472c6ed2b6494433a9319f2b093f2fd1923059b6002a6e896fee03e19546b8",
"0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938",
"0x2a8a40093e2bc9627fe39aa84ab78c1ce1265e8cbe28569136f8b83dbf1e1a0e",
"0x21d9b9f7094b3462aaa61148b272fba6556514dcb39cfb47b5414ac776944f82",
"0x22be02328bc62605ca6d890565b9726e83b9d8f925e702412edf291b777df027",
"0x27b5d7ddef018e17569d33d8c4e9003ae36382bb57caf96bb224b724cf237254",
"0x54ec141c594bace5c88a41767e82517f8dcd8e02dd54f8fdc1c7223d3614982",
"0x17f76454a7d3b049dc34c09012706560351dd12ff052187ba5228c9fd5abc646",
"0x189a082f5c10117ffb6b064329b31026c852cd41e01352e6c7b9d12686200598",
"0xc597daf1c2a8f602322f2796a1bca2aa3101cb8c9a876ee195a9bda90da5d5b",
"0x2ac2e1037357e29885d73882899652c5cdaf8560ae356bbdf7ded11c139dc663",
"0x6ca950f38af807cac3b6d74cb2937af0a2287576b78fddfd7200f06e66e5f22",
"0x736209bdf8c1ac643b8ecd0950d2bb4dcd8745be7c8cf64432da264fc4c6a33",
"0x1e96d9fd0f2db5bcee16ce782403a3a33acad70b237106686ad0bbd8bbc00d1f",
"0x2d7f5635e4b127aab06795499bb1a6c97c54806d79823ff7871e519f4081cc1c",
"0x1d8d18b18dd07bb89fe0c84a7740faed098c6a2b0cde5f426fb8c8b7643bf95c",
"0x28d51d4551904bbf04ec169bed853453358042ef76a08ea8d155f8677a051ccd",
"0x189be365face10b9a4183d6f21048d6c36ca9c28b0720c71d72ed529654aa624",
"0x130fc54477fd953377fc23abbd7a41be6764892a8787c759c1440fe0133c852d",
"0x2c9c91f48661771baeef6774578a78f69c355c8e907156fdf26db39d2446413f",
"0x1dec0bafa3e8190621e5e095ef751ea03c836dbb8045b2a73f8d397cfb815192",
"0xa5f52ad6ec4a8aa377d8dd2ae3aaf6eea0c68c63a1d034fbda67133ca0b85cb",
"0x20ab7394bfdab344cbb6f2123800a0e23508e2125bfe795ab4a767cecb4d9306",
"0x110ea322b0c26476c67bfa2c1b9d1713f93b3b9cf8320ce0dcd4b64288bda07a",
"0x54eabe6131681fa01fbc6dbf3e7d53595d0f8809987182142b890ac8af89cbe",
"0x224d811fbdef8ec0a006d376a019e57c93bd596213a07823b7d4abce1fd8e621",
"0xe691fca423128a7d4afcaa582b1a94799ba1f5d2a5d53bc2bba56bbecb227a1",
"0x189e279c92de0bab66707e6e6e310524e615cd4c6aacc665372a3b8e372d8ce6",
"0x1d9bcbbd17b93b1913d2f79cdf12844441237206f0294746d93f8e5bdceb4725",
"0x1179184635a9780ee1312dcc3d15c7ef042b18ae9409670e28c4c7f0fb9b608e",
"0xe48466182ae8333af1891a6aa19736741ed0680d57c931ede13fc07ae82e88b",
"0x1c9d56f71c2f22c44d3a8c17bf5b40452e05471f0b6dfe9ffe4725eb29f73464",
"0x2234546f5e8541e8f72ad794891950b32b1cd891cc66775c5b635961642e9c15",
"0x14c09d155c5d428198c234b553da338f227cbc12b0e42f2b9ce71563ee1495c0"
]
]
});
;// ./node_modules/circomlibjs/src/poseidon_wasm.js
async function poseidon_wasm_buildPoseidon() {
const bn128 = await getCurveFromName("bn128", true, buildPoseidonWasm);
const F = bn128.Fr;
const pState = bn128.tm.alloc(32);
const pIn = bn128.tm.alloc(32*16);
const pOut = bn128.tm.alloc(32*17);
const poseidon = (arr, state, nOut) => {
let buff;
let n;
if (Array.isArray(arr)) {
n = arr.length;
buff = new Uint8Array(n*32);
for (let i=0; i<n; i++) buff.set(F.e(arr[i]), i*32);
} else {
buff = arr;
n = buff.byteLength / 32;
if (n*32 != buff.byteLength) throw new Error("Invalid iput buff size");
}
bn128.tm.setBuff(pIn, buff);
if ((n<1)||(n>16)) throw new Error("Invalid poseidon size");
if (typeof state == "undefined") {
state = F.zero;
} else {
state = F.e(state);
}
bn128.tm.setBuff(pState, state);
nOut = nOut || 1;
bn128.tm.instance.exports.poseidon(pState, pIn, n, pOut, nOut);
if (nOut == 1) {
return bn128.tm.getBuff(pOut, 32);
} else {
const out = [];
for (let i=0; i<nOut; i++) {
out.push(bn128.tm.getBuff(pOut+i*32, 32));
}
return out
}
}
poseidon.F = F;
return poseidon;
}
function buildPoseidonWasm(module) {
const F = new F1Field(Scalar.e("21888242871839275222246405745257275088548364400416034343698204186575808495617"));
const pointers = {
C: [],
S: [],
M: [],
P: [],
}
const N_ROUNDS_P = [56, 57, 56, 60, 60, 63, 64, 63, 60, 66, 60, 65, 70, 60, 64, 68];
const NSizes = poseidonConstants.C.length;
const buffIdx = new Uint8Array(NSizes*5*4);
const buffIdx32 = new Uint32Array(buffIdx.buffer);
for (let i=0; i<NSizes; i++) {
buffIdx32[i*5] = N_ROUNDS_P[i];
const buffC = new Uint8Array(32*poseidonConstants.C[i].length);
for (let j=0; j<poseidonConstants.C[i].length; j++) {
F.toRprLEM(buffC, j*32, F.e(poseidonConstants.C[i][j]))
}
buffIdx32[i*5 + 1] = module.alloc(buffC);
const buffS = new Uint8Array(32*poseidonConstants.S[i].length);
for (let j=0; j<poseidonConstants.S[i].length; j++) {
F.toRprLEM(buffS, j*32, F.e(poseidonConstants.S[i][j]))
}
buffIdx32[i*5 + 2] = module.alloc(buffS);
const N = poseidonConstants.M[i].length;
const buffM = new Uint8Array(32*N*N);
for (let j=0; j<N; j++) {
for (let k=0; k<N; k++) {
F.toRprLEM(buffM, (j*N+k)*32, F.e(poseidonConstants.M[i][k][j]));
}
}
buffIdx32[i*5 + 3] = module.alloc(buffM);
const buffP = new Uint8Array(32*N*N);
for (let j=0; j<N; j++) {
for (let k=0; k<N; k++) {
F.toRprLEM(buffP, (j*N+k)*32, F.e(poseidonConstants.P[i][k][j]));
}
}
buffIdx32[i*5 + 4] = module.alloc(buffP);
}
const pConstants = module.alloc(buffIdx);
const pState = module.alloc(32*((NSizes+1)*32));
function buildAddConstant() {
const f = module.addFunction("poseidon_addConstant");
f.addParam("t", "i32");
f.addParam("pC", "i32");
f.setReturnType("i32");
f.addLocal("i", "i32");
f.addLocal("pState", "i32");
const c = f.getCodeBuilder();
f.addCode(
c.setLocal("pState", c.i32_const(pState)),
c.setLocal("i", c.i32_const(0)),
c.block(c.loop(
c.br_if(1, c.i32_eq ( c.getLocal("i"), c.getLocal("t") )),
c.call("frm_add", c.getLocal("pC"), c.getLocal("pState"), c.getLocal("pState")),
c.setLocal("pC", c.i32_add(c.getLocal("pC"), c.i32_const(32))),
c.setLocal("pState", c.i32_add(c.getLocal("pState"), c.i32_const(32))),
c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))),
c.br(0)
)),
c.ret(c.getLocal("pC"))
);
}
function buildPower5() {
const f = module.addFunction("poseidon_power5");
f.addParam("p", "i32");
const c = f.getCodeBuilder();
const AUX = c.i32_const(module.alloc(32));
f.addCode(
c.call("frm_square", c.getLocal("p"), AUX),
c.call("frm_square", AUX, AUX),
c.call("frm_mul", c.getLocal("p"), AUX, c.getLocal("p")),
);
}
function buildPower5all() {
const f = module.addFunction("poseidon_power5all");
f.addParam("t", "i32");
f.addLocal("i", "i32");
f.addLocal("pState", "i32");
const c = f.getCodeBuilder();
f.addCode(
c.setLocal("pState", c.i32_const(pState)),
c.setLocal("i", c.i32_const(0)),
c.block(c.loop(
c.br_if(1, c.i32_eq ( c.getLocal("i"), c.getLocal("t") )),
c.call("poseidon_power5", c.getLocal("pState")),
c.setLocal("pState", c.i32_add(c.getLocal("pState"), c.i32_const(32))),
c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))),
c.br(0)
))
);
}
function buildApplyMatrix() {
const f = module.addFunction("poseidon_applyMatrix");
f.addParam("t", "i32");
f.addParam("pM", "i32");
f.addLocal("i", "i32");
f.addLocal("j", "i32");
f.addLocal("pState", "i32");
f.addLocal("pStateAux", "i32");
const c = f.getCodeBuilder();
const pStateAux = module.alloc(32*((NSizes+1)*32));
const pAux = module.alloc(32);
f.addCode(
c.setLocal("pStateAux", c.i32_const(pStateAux)),
c.setLocal("i", c.i32_const(0)),
c.block(c.loop(
c.br_if(1, c.i32_eq ( c.getLocal("i"), c.getLocal("t") )),
c.call("frm_zero", c.getLocal("pStateAux")),
c.setLocal("pState", c.i32_const(pState)),
c.setLocal("j", c.i32_const(0)),
c.block(c.loop(
c.br_if(1, c.i32_eq ( c.getLocal("j"), c.getLocal("t") )),
c.call(
"frm_mul",
c.getLocal("pState"),
c.getLocal("pM"),
c.i32_const(pAux)
),
c.call(
"frm_add",
c.i32_const(pAux),
c.getLocal("pStateAux"),
c.getLocal("pStateAux"),
),
c.setLocal("pM", c.i32_add(c.getLocal("pM"), c.i32_const(32))),
c.setLocal("pState", c.i32_add(c.getLocal("pState"), c.i32_const(32))),
c.setLocal("j", c.i32_add(c.getLocal("j"), c.i32_const(1))),
c.br(0)
)),
c.setLocal("pStateAux", c.i32_add(c.getLocal("pStateAux"), c.i32_const(32))),
c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))),
c.br(0)
)),
c.setLocal("pStateAux", c.i32_const(pStateAux)),
c.setLocal("pState", c.i32_const(pState)),
c.setLocal("i", c.i32_const(0)),
c.block(c.loop(
c.br_if(1, c.i32_eq ( c.getLocal("i"), c.getLocal("t") )),
c.call("frm_copy", c.getLocal("pStateAux"), c.getLocal("pState")),
c.setLocal("pState", c.i32_add(c.getLocal("pState"), c.i32_const(32))),
c.setLocal("pStateAux", c.i32_add(c.getLocal("pStateAux"), c.i32_const(32))),
c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))),
c.br(0)
))
);
}
function buildApplySMatrix() {
const f = module.addFunction("poseidon_applySMatrix");
f.addParam("t", "i32");
f.addParam("pS", "i32");
f.setReturnType("i32");
f.addLocal("i", "i32");
f.addLocal("pState", "i32");
const c = f.getCodeBuilder();
const pS0 = module.alloc(32);
const pAux = module.alloc(32);
f.addCode(
c.call("frm_zero", c.i32_const(pS0)),
c.setLocal("pState", c.i32_const(pState)),
c.setLocal("i", c.i32_const(0)),
c.block(c.loop(
c.br_if(1, c.i32_eq ( c.getLocal("i"), c.getLocal("t") )),
c.call(
"frm_mul",
c.getLocal("pState"),
c.getLocal("pS"),
c.i32_const(pAux),
),
c.call(
"frm_add",
c.i32_const(pS0),
c.i32_const(pAux),
c.i32_const(pS0),
),
c.setLocal("pS", c.i32_add(c.getLocal("pS"), c.i32_const(32))),
c.setLocal("pState", c.i32_add(c.getLocal("pState"), c.i32_const(32))),
c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))),
c.br(0)
)),
c.setLocal("pState", c.i32_const(pState+32)),
c.setLocal("i", c.i32_const(1)),
c.block(c.loop(
c.br_if(1, c.i32_eq ( c.getLocal("i"), c.getLocal("t") )),
c.call(
"frm_mul",
c.i32_const(pState),
c.getLocal("pS"),
c.i32_const(pAux),
),
c.call(
"frm_add",
c.getLocal("pState"),
c.i32_const(pAux),
c.getLocal("pState"),
),
c.setLocal("pS", c.i32_add(c.getLocal("pS"), c.i32_const(32))),
c.setLocal("pState", c.i32_add(c.getLocal("pState"), c.i32_const(32))),
c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))),
c.br(0)
)),
c.call("frm_copy", c.i32_const(pS0), c.i32_const(pState)),
c.ret(c.getLocal("pS"))
);
}
function buildPoseidon() {
const f = module.addFunction("poseidon");
f.addParam("pInitState", "i32");
f.addParam("pIn", "i32");
f.addParam("n", "i32");
f.addParam("pOut", "i32");
f.addParam("nOut", "i32");
f.addLocal("pC", "i32");
f.addLocal("pS", "i32");
f.addLocal("pM", "i32");
f.addLocal("pP", "i32");
f.addLocal("t", "i32");
f.addLocal("i", "i32");
f.addLocal("nRoundsP", "i32");
f.addLocal("pAux", "i32");
const c = f.getCodeBuilder();
f.addCode(
c.setLocal(
"t",
c.i32_add(c.getLocal("n"), c.i32_const(1))
),
c.setLocal(
"pAux",
c.i32_add(
c.i32_const(pConstants),
c.i32_mul(
c.i32_sub(c.getLocal("n"), c.i32_const(1)),
c.i32_const(20)
)
)
),
c.setLocal(
"nRoundsP",
c.i32_load(c.getLocal("pAux"))
),
c.setLocal(
"pC",
c.i32_load(c.i32_add(c.getLocal("pAux"), c.i32_const(4)))
),
c.setLocal(
"pS",
c.i32_load(c.i32_add(c.getLocal("pAux"), c.i32_const(8)))
),
c.setLocal(
"pM",
c.i32_load(c.i32_add(c.getLocal("pAux"), c.i32_const(12)))
),
c.setLocal(
"pP",
c.i32_load(c.i32_add(c.getLocal("pAux"), c.i32_const(16)))
),
// Initialize state
c.call("frm_zero", c.i32_const(pState)),
c.call(
"frm_copy",
c.getLocal("pInitState"),
c.i32_const(pState),
),
c.setLocal("i", c.i32_const(1)),
c.block(c.loop(
c.call(
"frm_copy",
c.i32_add(
c.getLocal("pIn"),
c.i32_mul(c.i32_sub(c.getLocal("i"), c.i32_const(1)), c.i32_const(32))
),
c.i32_add(
c.i32_const(pState),
c.i32_mul(c.getLocal("i"), c.i32_const(32))
)
),
c.br_if(1, c.i32_eq ( c.getLocal("i"), c.getLocal("n") )),
c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))),
c.br(0)
)),
// Initialize state
c.setLocal("pC", c.call("poseidon_addConstant", c.getLocal("t"), c.getLocal("pC"))),
// First full rounds
c.setLocal("i", c.i32_const(0)),
c.block(c.loop(
c.br_if(1, c.i32_eq ( c.getLocal("i"), c.i32_const(3) )),
c.call("poseidon_power5all", c.getLocal("t")),
c.setLocal("pC", c.call("poseidon_addConstant", c.getLocal("t"), c.getLocal("pC"))),
c.call("poseidon_applyMatrix", c.getLocal("t"), c.getLocal("pM")),
c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))),
c.br(0)
)),
c.call("poseidon_power5all", c.getLocal("t")),
c.setLocal("pC", c.call("poseidon_addConstant", c.getLocal("t"), c.getLocal("pC"))),
c.call("poseidon_applyMatrix", c.getLocal("t"), c.getLocal("pP")),
c.setLocal("i", c.i32_const(0)),
c.block(c.loop(
c.br_if(1, c.i32_eq ( c.getLocal("i"), c.getLocal("nRoundsP") )),
c.call("poseidon_power5", c.i32_const(pState)),
c.call("frm_add", c.i32_const(pState), c.getLocal("pC"), c.i32_const(pState)),
c.setLocal("pC", c.i32_add(c.getLocal("pC"), c.i32_const(32))),
c.setLocal("pS", c.call("poseidon_applySMatrix", c.getLocal("t"), c.getLocal("pS"))),
c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))),
c.br(0)
)),
c.setLocal("i", c.i32_const(0)),
c.block(c.loop(
c.br_if(1, c.i32_eq ( c.getLocal("i"), c.i32_const(3) )),
c.call("poseidon_power5all", c.getLocal("t")),
c.setLocal("pC", c.call("poseidon_addConstant", c.getLocal("t"), c.getLocal("pC"))),
c.call("poseidon_applyMatrix", c.getLocal("t"), c.getLocal("pM")),
c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))),
c.br(0)
)),
c.call("poseidon_power5all", c.getLocal("t")),
c.call("poseidon_applyMatrix", c.getLocal("t"), c.getLocal("pM")),
c.setLocal("i", c.i32_const(0)),
c.block(c.loop(
c.br_if(1, c.i32_eq ( c.getLocal("i"), c.getLocal("nOut") )),
c.call("frm_copy",
c.i32_add(
c.i32_const(pState),
c.i32_mul(c.getLocal("i"), c.i32_const(32))
),
c.i32_add(
c.getLocal("pOut"),
c.i32_mul(c.getLocal("i"), c.i32_const(32))
)
),
c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))),
c.br(0)
)),
);
}
buildAddConstant();
buildPower5();
buildPower5all();
buildApplyMatrix();
buildApplySMatrix();
buildPoseidon();
module.exportFunction("poseidon");
}
// EXTERNAL MODULE: ./node_modules/js-sha3/src/sha3.js
var sha3 = __webpack_require__(1176);
var sha3_default = /*#__PURE__*/__webpack_require__.n(sha3);
;// ./node_modules/@ethersproject/logger/lib.esm/_version.js
const version = "logger/5.7.0";
//# sourceMappingURL=_version.js.map
;// ./node_modules/@ethersproject/logger/lib.esm/index.js
let _permanentCensorErrors = false;
let _censorErrors = false;
const LogLevels = { debug: 1, "default": 2, info: 2, warning: 3, error: 4, off: 5 };
let _logLevel = LogLevels["default"];
let _globalLogger = null;
function _checkNormalize() {
try {
const missing = [];
// Make sure all forms of normalization are supported
["NFD", "NFC", "NFKD", "NFKC"].forEach((form) => {
try {
if ("test".normalize(form) !== "test") {
throw new Error("bad normalize");
}
;
}
catch (error) {
missing.push(form);
}
});
if (missing.length) {
throw new Error("missing " + missing.join(", "));
}
if (String.fromCharCode(0xe9).normalize("NFD") !== String.fromCharCode(0x65, 0x0301)) {
throw new Error("broken implementation");
}
}
catch (error) {
return error.message;
}
return null;
}
const _normalizeError = _checkNormalize();
var LogLevel;
(function (LogLevel) {
LogLevel["DEBUG"] = "DEBUG";
LogLevel["INFO"] = "INFO";
LogLevel["WARNING"] = "WARNING";
LogLevel["ERROR"] = "ERROR";
LogLevel["OFF"] = "OFF";
})(LogLevel || (LogLevel = {}));
var ErrorCode;
(function (ErrorCode) {
///////////////////
// Generic Errors
// Unknown Error
ErrorCode["UNKNOWN_ERROR"] = "UNKNOWN_ERROR";
// Not Implemented
ErrorCode["NOT_IMPLEMENTED"] = "NOT_IMPLEMENTED";
// Unsupported Operation
// - operation
ErrorCode["UNSUPPORTED_OPERATION"] = "UNSUPPORTED_OPERATION";
// Network Error (i.e. Ethereum Network, such as an invalid chain ID)
// - event ("noNetwork" is not re-thrown in provider.ready; otherwise thrown)
ErrorCode["NETWORK_ERROR"] = "NETWORK_ERROR";
// Some sort of bad response from the server
ErrorCode["SERVER_ERROR"] = "SERVER_ERROR";
// Timeout
ErrorCode["TIMEOUT"] = "TIMEOUT";
///////////////////
// Operational Errors
// Buffer Overrun
ErrorCode["BUFFER_OVERRUN"] = "BUFFER_OVERRUN";
// Numeric Fault
// - operation: the operation being executed
// - fault: the reason this faulted
ErrorCode["NUMERIC_FAULT"] = "NUMERIC_FAULT";
///////////////////
// Argument Errors
// Missing new operator to an object
// - name: The name of the class
ErrorCode["MISSING_NEW"] = "MISSING_NEW";
// Invalid argument (e.g. value is incompatible with type) to a function:
// - argument: The argument name that was invalid
// - value: The value of the argument
ErrorCode["INVALID_ARGUMENT"] = "INVALID_ARGUMENT";
// Missing argument to a function:
// - count: The number of arguments received
// - expectedCount: The number of arguments expected
ErrorCode["MISSING_ARGUMENT"] = "MISSING_ARGUMENT";
// Too many arguments
// - count: The number of arguments received
// - expectedCount: The number of arguments expected
ErrorCode["UNEXPECTED_ARGUMENT"] = "UNEXPECTED_ARGUMENT";
///////////////////
// Blockchain Errors
// Call exception
// - transaction: the transaction
// - address?: the contract address
// - args?: The arguments passed into the function
// - method?: The Solidity method signature
// - errorSignature?: The EIP848 error signature
// - errorArgs?: The EIP848 error parameters
// - reason: The reason (only for EIP848 "Error(string)")
ErrorCode["CALL_EXCEPTION"] = "CALL_EXCEPTION";
// Insufficient funds (< value + gasLimit * gasPrice)
// - transaction: the transaction attempted
ErrorCode["INSUFFICIENT_FUNDS"] = "INSUFFICIENT_FUNDS";
// Nonce has already been used
// - transaction: the transaction attempted
ErrorCode["NONCE_EXPIRED"] = "NONCE_EXPIRED";
// The replacement fee for the transaction is too low
// - transaction: the transaction attempted
ErrorCode["REPLACEMENT_UNDERPRICED"] = "REPLACEMENT_UNDERPRICED";
// The gas limit could not be estimated
// - transaction: the transaction passed to estimateGas
ErrorCode["UNPREDICTABLE_GAS_LIMIT"] = "UNPREDICTABLE_GAS_LIMIT";
// The transaction was replaced by one with a higher gas price
// - reason: "cancelled", "replaced" or "repriced"
// - cancelled: true if reason == "cancelled" or reason == "replaced")
// - hash: original transaction hash
// - replacement: the full TransactionsResponse for the replacement
// - receipt: the receipt of the replacement
ErrorCode["TRANSACTION_REPLACED"] = "TRANSACTION_REPLACED";
///////////////////
// Interaction Errors
// The user rejected the action, such as signing a message or sending
// a transaction
ErrorCode["ACTION_REJECTED"] = "ACTION_REJECTED";
})(ErrorCode || (ErrorCode = {}));
;
const HEX = "0123456789abcdef";
class Logger {
constructor(version) {
Object.defineProperty(this, "version", {
enumerable: true,
value: version,
writable: false
});
}
_log(logLevel, args) {
const level = logLevel.toLowerCase();
if (LogLevels[level] == null) {
this.throwArgumentError("invalid log level name", "logLevel", logLevel);
}
if (_logLevel > LogLevels[level]) {
return;
}
console.log.apply(console, args);
}
debug(...args) {
this._log(Logger.levels.DEBUG, args);
}
info(...args) {
this._log(Logger.levels.INFO, args);
}
warn(...args) {
this._log(Logger.levels.WARNING, args);
}
makeError(message, code, params) {
// Errors are being censored
if (_censorErrors) {
return this.makeError("censored error", code, {});
}
if (!code) {
code = Logger.errors.UNKNOWN_ERROR;
}
if (!params) {
params = {};
}
const messageDetails = [];
Object.keys(params).forEach((key) => {
const value = params[key];
try {
if (value instanceof Uint8Array) {
let hex = "";
for (let i = 0; i < value.length; i++) {
hex += HEX[value[i] >> 4];
hex += HEX[value[i] & 0x0f];
}
messageDetails.push(key + "=Uint8Array(0x" + hex + ")");
}
else {
messageDetails.push(key + "=" + JSON.stringify(value));
}
}
catch (error) {
messageDetails.push(key + "=" + JSON.stringify(params[key].toString()));
}
});
messageDetails.push(`code=${code}`);
messageDetails.push(`version=${this.version}`);
const reason = message;
let url = "";
switch (code) {
case ErrorCode.NUMERIC_FAULT: {
url = "NUMERIC_FAULT";
const fault = message;
switch (fault) {
case "overflow":
case "underflow":
case "division-by-zero":
url += "-" + fault;
break;
case "negative-power":
case "negative-width":
url += "-unsupported";
break;
case "unbound-bitwise-result":
url += "-unbound-result";
break;
}
break;
}
case ErrorCode.CALL_EXCEPTION:
case ErrorCode.INSUFFICIENT_FUNDS:
case ErrorCode.MISSING_NEW:
case ErrorCode.NONCE_EXPIRED:
case ErrorCode.REPLACEMENT_UNDERPRICED:
case ErrorCode.TRANSACTION_REPLACED:
case ErrorCode.UNPREDICTABLE_GAS_LIMIT:
url = code;
break;
}
if (url) {
message += " [ See: https:/\/links.ethers.org/v5-errors-" + url + " ]";
}
if (messageDetails.length) {
message += " (" + messageDetails.join(", ") + ")";
}
// @TODO: Any??
const error = new Error(message);
error.reason = reason;
error.code = code;
Object.keys(params).forEach(function (key) {
error[key] = params[key];
});
return error;
}
throwError(message, code, params) {
throw this.makeError(message, code, params);
}
throwArgumentError(message, name, value) {
return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {
argument: name,
value: value
});
}
assert(condition, message, code, params) {
if (!!condition) {
return;
}
this.throwError(message, code, params);
}
assertArgument(condition, message, name, value) {
if (!!condition) {
return;
}
this.throwArgumentError(message, name, value);
}
checkNormalize(message) {
if (message == null) {
message = "platform missing String.prototype.normalize";
}
if (_normalizeError) {
this.throwError("platform missing String.prototype.normalize", Logger.errors.UNSUPPORTED_OPERATION, {
operation: "String.prototype.normalize", form: _normalizeError
});
}
}
checkSafeUint53(value, message) {
if (typeof (value) !== "number") {
return;
}
if (message == null) {
message = "value not safe";
}
if (value < 0 || value >= 0x1fffffffffffff) {
this.throwError(message, Logger.errors.NUMERIC_FAULT, {
operation: "checkSafeInteger",
fault: "out-of-safe-range",
value: value
});
}
if (value % 1) {
this.throwError(message, Logger.errors.NUMERIC_FAULT, {
operation: "checkSafeInteger",
fault: "non-integer",
value: value
});
}
}
checkArgumentCount(count, expectedCount, message) {
if (message) {
message = ": " + message;
}
else {
message = "";
}
if (count < expectedCount) {
this.throwError("missing argument" + message, Logger.errors.MISSING_ARGUMENT, {
count: count,
expectedCount: expectedCount
});
}
if (count > expectedCount) {
this.throwError("too many arguments" + message, Logger.errors.UNEXPECTED_ARGUMENT, {
count: count,
expectedCount: expectedCount
});
}
}
checkNew(target, kind) {
if (target === Object || target == null) {
this.throwError("missing new", Logger.errors.MISSING_NEW, { name: kind.name });
}
}
checkAbstract(target, kind) {
if (target === kind) {
this.throwError("cannot instantiate abstract class " + JSON.stringify(kind.name) + " directly; use a sub-class", Logger.errors.UNSUPPORTED_OPERATION, { name: target.name, operation: "new" });
}
else if (target === Object || target == null) {
this.throwError("missing new", Logger.errors.MISSING_NEW, { name: kind.name });
}
}
static globalLogger() {
if (!_globalLogger) {
_globalLogger = new Logger(version);
}
return _globalLogger;
}
static setCensorship(censorship, permanent) {
if (!censorship && permanent) {
this.globalLogger().throwError("cannot permanently disable censorship", Logger.errors.UNSUPPORTED_OPERATION, {
operation: "setCensorship"
});
}
if (_permanentCensorErrors) {
if (!censorship) {
return;
}
this.globalLogger().throwError("error censorship permanent", Logger.errors.UNSUPPORTED_OPERATION, {
operation: "setCensorship"
});
}
_censorErrors = !!censorship;
_permanentCensorErrors = !!permanent;
}
static setLogLevel(logLevel) {
const level = LogLevels[logLevel.toLowerCase()];
if (level == null) {
Logger.globalLogger().warn("invalid log level - " + logLevel);
return;
}
_logLevel = level;
}
static from(version) {
return new Logger(version);
}
}
Logger.errors = ErrorCode;
Logger.levels = LogLevel;
//# sourceMappingURL=index.js.map
;// ./node_modules/@ethersproject/bytes/lib.esm/_version.js
const _version_version = "bytes/5.7.0";
//# sourceMappingURL=_version.js.map
;// ./node_modules/@ethersproject/bytes/lib.esm/index.js
const logger = new Logger(_version_version);
///////////////////////////////
function isHexable(value) {
return !!(value.toHexString);
}
function addSlice(array) {
if (array.slice) {
return array;
}
array.slice = function () {
const args = Array.prototype.slice.call(arguments);
return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));
};
return array;
}
function isBytesLike(value) {
return ((isHexString(value) && !(value.length % 2)) || isBytes(value));
}
function isInteger(value) {
return (typeof (value) === "number" && value == value && (value % 1) === 0);
}
function isBytes(value) {
if (value == null) {
return false;
}
if (value.constructor === Uint8Array) {
return true;
}
if (typeof (value) === "string") {
return false;
}
if (!isInteger(value.length) || value.length < 0) {
return false;
}
for (let i = 0; i < value.length; i++) {
const v = value[i];
if (!isInteger(v) || v < 0 || v >= 256) {
return false;
}
}
return true;
}
function lib_esm_arrayify(value, options) {
if (!options) {
options = {};
}
if (typeof (value) === "number") {
logger.checkSafeUint53(value, "invalid arrayify value");
const result = [];
while (value) {
result.unshift(value & 0xff);
value = parseInt(String(value / 256));
}
if (result.length === 0) {
result.push(0);
}
return addSlice(new Uint8Array(result));
}
if (options.allowMissingPrefix && typeof (value) === "string" && value.substring(0, 2) !== "0x") {
value = "0x" + value;
}
if (isHexable(value)) {
value = value.toHexString();
}
if (isHexString(value)) {
let hex = value.substring(2);
if (hex.length % 2) {
if (options.hexPad === "left") {
hex = "0" + hex;
}
else if (options.hexPad === "right") {
hex += "0";
}
else {
logger.throwArgumentError("hex data is odd-length", "value", value);
}
}
const result = [];
for (let i = 0; i < hex.length; i += 2) {
result.push(parseInt(hex.substring(i, i + 2), 16));
}
return addSlice(new Uint8Array(result));
}
if (isBytes(value)) {
return addSlice(new Uint8Array(value));
}
return logger.throwArgumentError("invalid arrayify value", "value", value);
}
function concat(items) {
const objects = items.map(item => lib_esm_arrayify(item));
const length = objects.reduce((accum, item) => (accum + item.length), 0);
const result = new Uint8Array(length);
objects.reduce((offset, object) => {
result.set(object, offset);
return offset + object.length;
}, 0);
return addSlice(result);
}
function stripZeros(value) {
let result = lib_esm_arrayify(value);
if (result.length === 0) {
return result;
}
// Find the first non-zero entry
let start = 0;
while (start < result.length && result[start] === 0) {
start++;
}
// If we started with zeros, strip them
if (start) {
result = result.slice(start);
}
return result;
}
function zeroPad(value, length) {
value = lib_esm_arrayify(value);
if (value.length > length) {
logger.throwArgumentError("value out of range", "value", arguments[0]);
}
const result = new Uint8Array(length);
result.set(value, length - value.length);
return addSlice(result);
}
function isHexString(value, length) {
if (typeof (value) !== "string" || !value.match(/^0x[0-9A-Fa-f]*$/)) {
return false;
}
if (length && value.length !== 2 + 2 * length) {
return false;
}
return true;
}
const HexCharacters = "0123456789abcdef";
function hexlify(value, options) {
if (!options) {
options = {};
}
if (typeof (value) === "number") {
logger.checkSafeUint53(value, "invalid hexlify value");
let hex = "";
while (value) {
hex = HexCharacters[value & 0xf] + hex;
value = Math.floor(value / 16);
}
if (hex.length) {
if (hex.length % 2) {
hex = "0" + hex;
}
return "0x" + hex;
}
return "0x00";
}
if (typeof (value) === "bigint") {
value = value.toString(16);
if (value.length % 2) {
return ("0x0" + value);
}
return "0x" + value;
}
if (options.allowMissingPrefix && typeof (value) === "string" && value.substring(0, 2) !== "0x") {
value = "0x" + value;
}
if (isHexable(value)) {
return value.toHexString();
}
if (isHexString(value)) {
if (value.length % 2) {
if (options.hexPad === "left") {
value = "0x0" + value.substring(2);
}
else if (options.hexPad === "right") {
value += "0";
}
else {
logger.throwArgumentError("hex data is odd-length", "value", value);
}
}
return value.toLowerCase();
}
if (isBytes(value)) {
let result = "0x";
for (let i = 0; i < value.length; i++) {
let v = value[i];
result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];
}
return result;
}
return logger.throwArgumentError("invalid hexlify value", "value", value);
}
/*
function unoddify(value: BytesLike | Hexable | number): BytesLike | Hexable | number {
if (typeof(value) === "string" && value.length % 2 && value.substring(0, 2) === "0x") {
return "0x0" + value.substring(2);
}
return value;
}
*/
function hexDataLength(data) {
if (typeof (data) !== "string") {
data = hexlify(data);
}
else if (!isHexString(data) || (data.length % 2)) {
return null;
}
return (data.length - 2) / 2;
}
function hexDataSlice(data, offset, endOffset) {
if (typeof (data) !== "string") {
data = hexlify(data);
}
else if (!isHexString(data) || (data.length % 2)) {
logger.throwArgumentError("invalid hexData", "value", data);
}
offset = 2 + 2 * offset;
if (endOffset != null) {
return "0x" + data.substring(offset, 2 + 2 * endOffset);
}
return "0x" + data.substring(offset);
}
function hexConcat(items) {
let result = "0x";
items.forEach((item) => {
result += hexlify(item).substring(2);
});
return result;
}
function hexValue(value) {
const trimmed = hexStripZeros(hexlify(value, { hexPad: "left" }));
if (trimmed === "0x") {
return "0x0";
}
return trimmed;
}
function hexStripZeros(value) {
if (typeof (value) !== "string") {
value = hexlify(value);
}
if (!isHexString(value)) {
logger.throwArgumentError("invalid hex string", "value", value);
}
value = value.substring(2);
let offset = 0;
while (offset < value.length && value[offset] === "0") {
offset++;
}
return "0x" + value.substring(offset);
}
function hexZeroPad(value, length) {
if (typeof (value) !== "string") {
value = hexlify(value);
}
else if (!isHexString(value)) {
logger.throwArgumentError("invalid hex string", "value", value);
}
if (value.length > 2 * length + 2) {
logger.throwArgumentError("value out of range", "value", arguments[1]);
}
while (value.length < 2 * length + 2) {
value = "0x0" + value.substring(2);
}
return value;
}
function splitSignature(signature) {
const result = {
r: "0x",
s: "0x",
_vs: "0x",
recoveryParam: 0,
v: 0,
yParityAndS: "0x",
compact: "0x"
};
if (isBytesLike(signature)) {
let bytes = lib_esm_arrayify(signature);
// Get the r, s and v
if (bytes.length === 64) {
// EIP-2098; pull the v from the top bit of s and clear it
result.v = 27 + (bytes[32] >> 7);
bytes[32] &= 0x7f;
result.r = hexlify(bytes.slice(0, 32));
result.s = hexlify(bytes.slice(32, 64));
}
else if (bytes.length === 65) {
result.r = hexlify(bytes.slice(0, 32));
result.s = hexlify(bytes.slice(32, 64));
result.v = bytes[64];
}
else {
logger.throwArgumentError("invalid signature string", "signature", signature);
}
// Allow a recid to be used as the v
if (result.v < 27) {
if (result.v === 0 || result.v === 1) {
result.v += 27;
}
else {
logger.throwArgumentError("signature invalid v byte", "signature", signature);
}
}
// Compute recoveryParam from v
result.recoveryParam = 1 - (result.v % 2);
// Compute _vs from recoveryParam and s
if (result.recoveryParam) {
bytes[32] |= 0x80;
}
result._vs = hexlify(bytes.slice(32, 64));
}
else {
result.r = signature.r;
result.s = signature.s;
result.v = signature.v;
result.recoveryParam = signature.recoveryParam;
result._vs = signature._vs;
// If the _vs is available, use it to populate missing s, v and recoveryParam
// and verify non-missing s, v and recoveryParam
if (result._vs != null) {
const vs = zeroPad(lib_esm_arrayify(result._vs), 32);
result._vs = hexlify(vs);
// Set or check the recid
const recoveryParam = ((vs[0] >= 128) ? 1 : 0);
if (result.recoveryParam == null) {
result.recoveryParam = recoveryParam;
}
else if (result.recoveryParam !== recoveryParam) {
logger.throwArgumentError("signature recoveryParam mismatch _vs", "signature", signature);
}
// Set or check the s
vs[0] &= 0x7f;
const s = hexlify(vs);
if (result.s == null) {
result.s = s;
}
else if (result.s !== s) {
logger.throwArgumentError("signature v mismatch _vs", "signature", signature);
}
}
// Use recid and v to populate each other
if (result.recoveryParam == null) {
if (result.v == null) {
logger.throwArgumentError("signature missing v and recoveryParam", "signature", signature);
}
else if (result.v === 0 || result.v === 1) {
result.recoveryParam = result.v;
}
else {
result.recoveryParam = 1 - (result.v % 2);
}
}
else {
if (result.v == null) {
result.v = 27 + result.recoveryParam;
}
else {
const recId = (result.v === 0 || result.v === 1) ? result.v : (1 - (result.v % 2));
if (result.recoveryParam !== recId) {
logger.throwArgumentError("signature recoveryParam mismatch v", "signature", signature);
}
}
}
if (result.r == null || !isHexString(result.r)) {
logger.throwArgumentError("signature missing or invalid r", "signature", signature);
}
else {
result.r = hexZeroPad(result.r, 32);
}
if (result.s == null || !isHexString(result.s)) {
logger.throwArgumentError("signature missing or invalid s", "signature", signature);
}
else {
result.s = hexZeroPad(result.s, 32);
}
const vs = lib_esm_arrayify(result.s);
if (vs[0] >= 128) {
logger.throwArgumentError("signature s out of range", "signature", signature);
}
if (result.recoveryParam) {
vs[0] |= 0x80;
}
const _vs = hexlify(vs);
if (result._vs) {
if (!isHexString(result._vs)) {
logger.throwArgumentError("signature invalid _vs", "signature", signature);
}
result._vs = hexZeroPad(result._vs, 32);
}
// Set or check the _vs
if (result._vs == null) {
result._vs = _vs;
}
else if (result._vs !== _vs) {
logger.throwArgumentError("signature _vs mismatch v and s", "signature", signature);
}
}
result.yParityAndS = result._vs;
result.compact = result.r + result.yParityAndS.substring(2);
return result;
}
function joinSignature(signature) {
signature = splitSignature(signature);
return hexlify(concat([
signature.r,
signature.s,
(signature.recoveryParam ? "0x1c" : "0x1b")
]));
}
//# sourceMappingURL=index.js.map
;// ./node_modules/@ethersproject/keccak256/lib.esm/index.js
function keccak256(data) {
return '0x' + sha3_default().keccak_256(lib_esm_arrayify(data));
}
//# sourceMappingURL=index.js.map
;// ./node_modules/@ethersproject/strings/lib.esm/_version.js
const lib_esm_version_version = "strings/5.7.0";
//# sourceMappingURL=_version.js.map
;// ./node_modules/@ethersproject/strings/lib.esm/utf8.js
const utf8_logger = new Logger(lib_esm_version_version);
///////////////////////////////
var UnicodeNormalizationForm;
(function (UnicodeNormalizationForm) {
UnicodeNormalizationForm["current"] = "";
UnicodeNormalizationForm["NFC"] = "NFC";
UnicodeNormalizationForm["NFD"] = "NFD";
UnicodeNormalizationForm["NFKC"] = "NFKC";
UnicodeNormalizationForm["NFKD"] = "NFKD";
})(UnicodeNormalizationForm || (UnicodeNormalizationForm = {}));
;
var Utf8ErrorReason;
(function (Utf8ErrorReason) {
// A continuation byte was present where there was nothing to continue
// - offset = the index the codepoint began in
Utf8ErrorReason["UNEXPECTED_CONTINUE"] = "unexpected continuation byte";
// An invalid (non-continuation) byte to start a UTF-8 codepoint was found
// - offset = the index the codepoint began in
Utf8ErrorReason["BAD_PREFIX"] = "bad codepoint prefix";
// The string is too short to process the expected codepoint
// - offset = the index the codepoint began in
Utf8ErrorReason["OVERRUN"] = "string overrun";
// A missing continuation byte was expected but not found
// - offset = the index the continuation byte was expected at
Utf8ErrorReason["MISSING_CONTINUE"] = "missing continuation byte";
// The computed code point is outside the range for UTF-8
// - offset = start of this codepoint
// - badCodepoint = the computed codepoint; outside the UTF-8 range
Utf8ErrorReason["OUT_OF_RANGE"] = "out of UTF-8 range";
// UTF-8 strings may not contain UTF-16 surrogate pairs
// - offset = start of this codepoint
// - badCodepoint = the computed codepoint; inside the UTF-16 surrogate range
Utf8ErrorReason["UTF16_SURROGATE"] = "UTF-16 surrogate";
// The string is an overlong representation
// - offset = start of this codepoint
// - badCodepoint = the computed codepoint; already bounds checked
Utf8ErrorReason["OVERLONG"] = "overlong representation";
})(Utf8ErrorReason || (Utf8ErrorReason = {}));
;
function errorFunc(reason, offset, bytes, output, badCodepoint) {
return utf8_logger.throwArgumentError(`invalid codepoint at offset ${offset}; ${reason}`, "bytes", bytes);
}
function ignoreFunc(reason, offset, bytes, output, badCodepoint) {
// If there is an invalid prefix (including stray continuation), skip any additional continuation bytes
if (reason === Utf8ErrorReason.BAD_PREFIX || reason === Utf8ErrorReason.UNEXPECTED_CONTINUE) {
let i = 0;
for (let o = offset + 1; o < bytes.length; o++) {
if (bytes[o] >> 6 !== 0x02) {
break;
}
i++;
}
return i;
}
// This byte runs us past the end of the string, so just jump to the end
// (but the first byte was read already read and therefore skipped)
if (reason === Utf8ErrorReason.OVERRUN) {
return bytes.length - offset - 1;
}
// Nothing to skip
return 0;
}
function replaceFunc(reason, offset, bytes, output, badCodepoint) {
// Overlong representations are otherwise "valid" code points; just non-deistingtished
if (reason === Utf8ErrorReason.OVERLONG) {
output.push(badCodepoint);
return 0;
}
// Put the replacement character into the output
output.push(0xfffd);
// Otherwise, process as if ignoring errors
return ignoreFunc(reason, offset, bytes, output, badCodepoint);
}
// Common error handing strategies
const Utf8ErrorFuncs = Object.freeze({
error: errorFunc,
ignore: ignoreFunc,
replace: replaceFunc
});
// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499
function getUtf8CodePoints(bytes, onError) {
if (onError == null) {
onError = Utf8ErrorFuncs.error;
}
bytes = arrayify(bytes);
const result = [];
let i = 0;
// Invalid bytes are ignored
while (i < bytes.length) {
const c = bytes[i++];
// 0xxx xxxx
if (c >> 7 === 0) {
result.push(c);
continue;
}
// Multibyte; how many bytes left for this character?
let extraLength = null;
let overlongMask = null;
// 110x xxxx 10xx xxxx
if ((c & 0xe0) === 0xc0) {
extraLength = 1;
overlongMask = 0x7f;
// 1110 xxxx 10xx xxxx 10xx xxxx
}
else if ((c & 0xf0) === 0xe0) {
extraLength = 2;
overlongMask = 0x7ff;
// 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx
}
else if ((c & 0xf8) === 0xf0) {
extraLength = 3;
overlongMask = 0xffff;
}
else {
if ((c & 0xc0) === 0x80) {
i += onError(Utf8ErrorReason.UNEXPECTED_CONTINUE, i - 1, bytes, result);
}
else {
i += onError(Utf8ErrorReason.BAD_PREFIX, i - 1, bytes, result);
}
continue;
}
// Do we have enough bytes in our data?
if (i - 1 + extraLength >= bytes.length) {
i += onError(Utf8ErrorReason.OVERRUN, i - 1, bytes, result);
continue;
}
// Remove the length prefix from the char
let res = c & ((1 << (8 - extraLength - 1)) - 1);
for (let j = 0; j < extraLength; j++) {
let nextChar = bytes[i];
// Invalid continuation byte
if ((nextChar & 0xc0) != 0x80) {
i += onError(Utf8ErrorReason.MISSING_CONTINUE, i, bytes, result);
res = null;
break;
}
;
res = (res << 6) | (nextChar & 0x3f);
i++;
}
// See above loop for invalid continuation byte
if (res === null) {
continue;
}
// Maximum code point
if (res > 0x10ffff) {
i += onError(Utf8ErrorReason.OUT_OF_RANGE, i - 1 - extraLength, bytes, result, res);
continue;
}
// Reserved for UTF-16 surrogate halves
if (res >= 0xd800 && res <= 0xdfff) {
i += onError(Utf8ErrorReason.UTF16_SURROGATE, i - 1 - extraLength, bytes, result, res);
continue;
}
// Check for overlong sequences (more bytes than needed)
if (res <= overlongMask) {
i += onError(Utf8ErrorReason.OVERLONG, i - 1 - extraLength, bytes, result, res);
continue;
}
result.push(res);
}
return result;
}
// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array
function toUtf8Bytes(str, form = UnicodeNormalizationForm.current) {
if (form != UnicodeNormalizationForm.current) {
utf8_logger.checkNormalize();
str = str.normalize(form);
}
let result = [];
for (let i = 0; i < str.length; i++) {
const c = str.charCodeAt(i);
if (c < 0x80) {
result.push(c);
}
else if (c < 0x800) {
result.push((c >> 6) | 0xc0);
result.push((c & 0x3f) | 0x80);
}
else if ((c & 0xfc00) == 0xd800) {
i++;
const c2 = str.charCodeAt(i);
if (i >= str.length || (c2 & 0xfc00) !== 0xdc00) {
throw new Error("invalid utf-8 string");
}
// Surrogate Pair
const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);
result.push((pair >> 18) | 0xf0);
result.push(((pair >> 12) & 0x3f) | 0x80);
result.push(((pair >> 6) & 0x3f) | 0x80);
result.push((pair & 0x3f) | 0x80);
}
else {
result.push((c >> 12) | 0xe0);
result.push(((c >> 6) & 0x3f) | 0x80);
result.push((c & 0x3f) | 0x80);
}
}
return lib_esm_arrayify(result);
}
;
function escapeChar(value) {
const hex = ("0000" + value.toString(16));
return "\\u" + hex.substring(hex.length - 4);
}
function _toEscapedUtf8String(bytes, onError) {
return '"' + getUtf8CodePoints(bytes, onError).map((codePoint) => {
if (codePoint < 256) {
switch (codePoint) {
case 8: return "\\b";
case 9: return "\\t";
case 10: return "\\n";
case 13: return "\\r";
case 34: return "\\\"";
case 92: return "\\\\";
}
if (codePoint >= 32 && codePoint < 127) {
return String.fromCharCode(codePoint);
}
}
if (codePoint <= 0xffff) {
return escapeChar(codePoint);
}
codePoint -= 0x10000;
return escapeChar(((codePoint >> 10) & 0x3ff) + 0xd800) + escapeChar((codePoint & 0x3ff) + 0xdc00);
}).join("") + '"';
}
function _toUtf8String(codePoints) {
return codePoints.map((codePoint) => {
if (codePoint <= 0xffff) {
return String.fromCharCode(codePoint);
}
codePoint -= 0x10000;
return String.fromCharCode((((codePoint >> 10) & 0x3ff) + 0xd800), ((codePoint & 0x3ff) + 0xdc00));
}).join("");
}
function toUtf8String(bytes, onError) {
return _toUtf8String(getUtf8CodePoints(bytes, onError));
}
function toUtf8CodePoints(str, form = UnicodeNormalizationForm.current) {
return getUtf8CodePoints(toUtf8Bytes(str, form));
}
//# sourceMappingURL=utf8.js.map
;// ./node_modules/circomlibjs/src/mimcsponge.js
const mimcsponge_SEED = "mimcsponge";
const mimcsponge_NROUNDS = 220;
async function mimcsponge_buildMimcSponge() {
const bn128 = await browser_esm_getCurveFromName("bn128", true);
return new MimcSponge(bn128.Fr);
}
class MimcSponge {
constructor (F) {
this.F = F;
this.cts = this.getConstants(mimcsponge_SEED, mimcsponge_NROUNDS);
}
getIV (seed) {
const F = this.F;
if (typeof seed === "undefined") seed = mimcsponge_SEED;
const c = keccak256(toUtf8Bytes(seed+"_iv"));
const cn = browser_esm_Scalar.e(c);
const iv = cn.mod(F.p);
return iv;
};
getConstants (seed, nRounds) {
const F = this.F;
if (typeof seed === "undefined") seed = mimcsponge_SEED;
if (typeof nRounds === "undefined") nRounds = mimcsponge_NROUNDS;
const cts = new Array(nRounds);
let c = keccak256(toUtf8Bytes(mimcsponge_SEED));;
for (let i=1; i<nRounds; i++) {
c = 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<mimcsponge_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 < (mimcsponge_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;
}
}
}
;// ./node_modules/circomlibjs/src/eddsa.js
/* provided dependency */ var eddsa_Buffer = __webpack_require__(8287)["Buffer"];
async function buildEddsa() {
const babyJub = await buildBabyJub("bn128");
const pedersenHash = await buildPedersenHash();
const mimc7 = await buildMimc7();
const poseidon = await buildPoseidon();
const mimcSponge = await buildMimcSponge();
return new Eddsa(babyJub, pedersenHash, mimc7, poseidon, mimcSponge);
}
class Eddsa {
constructor(babyJub, pedersenHash, mimc7, poseidon, mimcSponge) {
this.babyJub = babyJub;
this.pedersenHash = pedersenHash;
this.mimc7 = mimc7;
this.poseidon = poseidon;
this.mimcSponge = mimcSponge;
this.F = babyJub.F;
}
pruneBuffer(buff) {
buff[0] = buff[0] & 0xF8;
buff[31] = buff[31] & 0x7F;
buff[31] = buff[31] | 0x40;
return buff;
}
prv2pub(prv) {
const F = this.babyJub.F;
const sBuff = this.pruneBuffer(createBlakeHash("blake512").update(eddsa_Buffer.from(prv)).digest());
let s = Scalar.fromRprLE(sBuff, 0, 32);
const A = this.babyJub.mulPointEscalar(this.babyJub.Base8, Scalar.shr(s,3));
return A;
}
signPedersen(prv, msg) {
const F = this.babyJub.F;
const sBuff = this.pruneBuffer(createBlakeHash("blake512").update(eddsa_Buffer.from(prv)).digest());
const s = Scalar.fromRprLE(sBuff, 0, 32);
const A = this.babyJub.mulPointEscalar(this.babyJub.Base8, Scalar.shr(s, 3));
const composeBuff = new Uint8Array(32 + msg.length);
composeBuff.set(sBuff.slice(32), 0);
composeBuff.set(msg, 32);
const rBuff = createBlakeHash("blake512").update(eddsa_Buffer.from(composeBuff)).digest();
let r = Scalar.mod(Scalar.fromRprLE(rBuff, 0, 64), this.babyJub.subOrder);
const R8 = this.babyJub.mulPointEscalar(this.babyJub.Base8, r);
const R8p = this.babyJub.packPoint(R8);
const Ap = this.babyJub.packPoint(A);
const composeBuff2 = new Uint8Array(64 + msg.length);
composeBuff2.set(R8p, 0);
composeBuff2.set(Ap, 32);
composeBuff2.set(msg, 64);
const hmBuff = this.pedersenHash.hash(composeBuff2);
const hm = Scalar.fromRprLE(hmBuff, 0, 32);
const S = Scalar.mod(
Scalar.add(
r,
Scalar.mul(hm, s)
),
this.babyJub.subOrder
)
return {
R8: R8,
S: S
};
}
signMiMC(prv, msg) {
const F = this.babyJub.F;
const sBuff = this.pruneBuffer(createBlakeHash("blake512").update(eddsa_Buffer.from(prv)).digest());
const s = Scalar.fromRprLE(sBuff, 0, 32);
const A = this.babyJub.mulPointEscalar(this.babyJub.Base8, Scalar.shr(s, 3));
const composeBuff = new Uint8Array(32 + msg.length);
composeBuff.set(sBuff.slice(32), 0);
F.toRprLE(composeBuff, 32, msg);
const rBuff = createBlakeHash("blake512").update(eddsa_Buffer.from(composeBuff)).digest();
let r = Scalar.mod(Scalar.fromRprLE(rBuff, 0, 64), this.babyJub.subOrder);
const R8 = this.babyJub.mulPointEscalar(this.babyJub.Base8, r);
const hm = this.mimc7.multiHash([R8[0], R8[1], A[0], A[1], msg]);
const hms = Scalar.e(this.babyJub.F.toObject(hm));
const S = Scalar.mod(
Scalar.add(
r,
Scalar.mul(hms, s)
),
this.babyJub.subOrder
)
return {
R8: R8,
S: S
};
}
signMiMCSponge(prv, msg) {
const F = this.babyJub.F;
const sBuff = this.pruneBuffer(createBlakeHash("blake512").update(eddsa_Buffer.from(prv)).digest());
const s = Scalar.fromRprLE(sBuff, 0, 32);
const A = this.babyJub.mulPointEscalar(this.babyJub.Base8, Scalar.shr(s, 3));
const composeBuff = new Uint8Array(32 + msg.length);
composeBuff.set(sBuff.slice(32), 0);
F.toRprLE(composeBuff, 32, msg);
const rBuff = createBlakeHash("blake512").update(eddsa_Buffer.from(composeBuff)).digest();
let r = Scalar.mod(Scalar.fromRprLE(rBuff, 0, 64), this.babyJub.subOrder);
const R8 = this.babyJub.mulPointEscalar(this.babyJub.Base8, r);
const hm = this.mimcSponge.multiHash([R8[0], R8[1], A[0], A[1], msg]);
const hms = Scalar.e(this.babyJub.F.toObject(hm));
const S = Scalar.mod(
Scalar.add(
r,
Scalar.mul(hms, s)
),
this.babyJub.subOrder
)
return {
R8: R8,
S: S
};
}
signPoseidon(prv, msg) {
const F = this.babyJub.F;
const sBuff = this.pruneBuffer(createBlakeHash("blake512").update(eddsa_Buffer.from(prv)).digest());
const s = Scalar.fromRprLE(sBuff, 0, 32);
const A = this.babyJub.mulPointEscalar(this.babyJub.Base8, Scalar.shr(s, 3));
const composeBuff = new Uint8Array(32 + msg.length);
composeBuff.set(sBuff.slice(32), 0);
F.toRprLE(composeBuff, 32, msg);
const rBuff = createBlakeHash("blake512").update(eddsa_Buffer.from(composeBuff)).digest();
let r = Scalar.mod(Scalar.fromRprLE(rBuff, 0, 64), this.babyJub.subOrder);
const R8 = this.babyJub.mulPointEscalar(this.babyJub.Base8, r);
const hm = this.poseidon([R8[0], R8[1], A[0], A[1], msg]);
const hms = Scalar.e(this.babyJub.F.toObject(hm));
const S = Scalar.mod(
Scalar.add(
r,
Scalar.mul(hms, s)
),
this.babyJub.subOrder
)
return {
R8: R8,
S: S
};
}
verifyPedersen(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 (!this.babyJub.inCurve(sig.R8)) return false;
if (!Array.isArray(A)) return false;
if (A.length!= 2) return false;
if (!this.babyJub.inCurve(A)) return false;
if (Scalar.geq(sig.S, this.babyJub.subOrder)) return false;
const R8p = this.babyJub.packPoint(sig.R8);
const Ap = this.babyJub.packPoint(A);
const composeBuff2 = new Uint8Array(64 + msg.length);
composeBuff2.set(R8p, 0);
composeBuff2.set(Ap, 32);
composeBuff2.set(msg, 64);
const hmBuff = this.pedersenHash.hash(composeBuff2);
const hm = Scalar.fromRprLE(hmBuff, 0, 32);
const Pleft = this.babyJub.mulPointEscalar(this.babyJub.Base8, sig.S);
let Pright = this.babyJub.mulPointEscalar(A, Scalar.mul(hm,8));
Pright = this.babyJub.addPoint(sig.R8, Pright);
if (!this.babyJub.F.eq(Pleft[0],Pright[0])) return false;
if (!this.babyJub.F.eq(Pleft[1],Pright[1])) return false;
return true;
}
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 (!this.babyJub.inCurve(sig.R8)) return false;
if (!Array.isArray(A)) return false;
if (A.length!= 2) return false;
if (!this.babyJub.inCurve(A)) return false;
if (sig.S>= this.babyJub.subOrder) return false;
const hm = this.mimc7.multiHash([sig.R8[0], sig.R8[1], A[0], A[1], msg]);
const hms = Scalar.e(this.babyJub.F.toObject(hm));
const Pleft = this.babyJub.mulPointEscalar(this.babyJub.Base8, sig.S);
let Pright = this.babyJub.mulPointEscalar(A, Scalar.mul(hms, 8));
Pright = this.babyJub.addPoint(sig.R8, Pright);
if (!this.babyJub.F.eq(Pleft[0],Pright[0])) return false;
if (!this.babyJub.F.eq(Pleft[1],Pright[1])) return false;
return true;
}
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 (!this.babyJub.inCurve(sig.R8)) return false;
if (!Array.isArray(A)) return false;
if (A.length!= 2) return false;
if (!this.babyJub.inCurve(A)) return false;
if (sig.S>= this.babyJub.subOrder) return false;
const hm = this.poseidon([sig.R8[0], sig.R8[1], A[0], A[1], msg]);
const hms = Scalar.e(this.babyJub.F.toObject(hm));
const Pleft = this.babyJub.mulPointEscalar(this.babyJub.Base8, sig.S);
let Pright = this.babyJub.mulPointEscalar(A, Scalar.mul(hms, 8));
Pright = this.babyJub.addPoint(sig.R8, Pright);
if (!this.babyJub.F.eq(Pleft[0],Pright[0])) return false;
if (!this.babyJub.F.eq(Pleft[1],Pright[1])) return false;
return true;
}
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 (!this.babyJub.inCurve(sig.R8)) return false;
if (!Array.isArray(A)) return false;
if (A.length!= 2) return false;
if (!this.babyJub.inCurve(A)) return false;
if (sig.S>= this.babyJub.subOrder) return false;
const hm = this.mimcSponge.multiHash([sig.R8[0], sig.R8[1], A[0], A[1], msg]);
const hms = Scalar.e(this.babyJub.F.toObject(hm));
const Pleft = this.babyJub.mulPointEscalar(this.babyJub.Base8, sig.S);
let Pright = this.babyJub.mulPointEscalar(A, Scalar.mul(hms, 8));
Pright = this.babyJub.addPoint(sig.R8, Pright);
if (!this.babyJub.F.eq(Pleft[0],Pright[0])) return false;
if (!this.babyJub.F.eq(Pleft[1],Pright[1])) return false;
return true;
}
packSignature(sig) {
const buff = new Uint8Array(64);
const R8p = this.babyJub.packPoint(sig.R8);
buff.set(R8p, 0)
const Sp = Scalar.toRprLE(buff, 32, sig.S, 32);
return buff;
}
unpackSignature(sigBuff) {
return {
R8: this.babyJub.unpackPoint(sigBuff.slice(0,32)),
S: Scalar.fromRprLE(sigBuff, 32, 32)
};
}
}
;// ./node_modules/circomlibjs/src/evmasm.js
// Copyright (c) 2018 Jordi Baylina
// License: LGPL-3.0+
//
class evmasm_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 evmasm_Contract();
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 ethers.utils.hexlify(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 !== "string") || (data.slice(0,2) != "0x")) {
let v = Scalar.e(data);
if (Scalar.isNegative(v)) {
v = Scalar.add(Scalar.shl(Scalar.e(1), 256), v);
}
let S = Scalar.toString(v, 16);
if (S.length % 2) S = "0"+S;
S = "0x" +S;
data = S;
}
const d = ethers.utils.arrayify(data);
if (d.length == 0 || d.length > 32) {
throw new Error("Assertion failed");
}
const a = [];
this.code.push(0x5F + d.length);
for (let i=0; i<d.length; i++) {
this.code.push(d[i]);
}
}
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); }
}
;// ./node_modules/circomlibjs/src/mimc7_gencontract.js
// Copyright (c) 2018 Jordi Baylina
// License: LGPL-3.0+
//
function createCode(seed, n) {
let ci = ethers.utils.keccak256(ethers.utils.toUtf8Bytes(seed));;
const C = new Contract();
C.push(0x44);
C.push("0x00");
C.push("0x00");
C.calldatacopy();
C.push("0x0100000000000000000000000000000000000000000000000000000000");
C.push("0x00");
C.mload();
C.div();
C.push("0xd15ca109"); // MiMCpe7(uint256,uint256)
// C.push("0x8c42199e"); // MiMCpe7(uint256,uint256,uint256)
C.eq();
C.jmpi("start");
C.invalid();
C.label("start");
C.push("0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001"); // q
C.push("0x24");
C.mload(); // k q
C.dup(1); // q k q
C.dup(0); // q q k q
C.push("0x04");
C.mload(); // x q q k q
C.dup(3); // k x q q k q
C.addmod(); // t=x+k q k q
C.dup(1); // q t q k q
C.dup(0); // q q t q k q
C.dup(2); // t q q t q k q
C.dup(0); // t t q q t q k q
C.mulmod(); // a=t^2 q t q k q
C.dup(1); // q a q t q k q
C.dup(1); // a q a q t q k q
C.dup(0); // a a q a q t q k q
C.mulmod(); // b=t^4 a q t q k q
C.mulmod(); // c=t^6 t q k q
C.mulmod(); // r=t^7 k q
for (let i=0; i<n-1; i++) {
ci = ethers.utils.keccak256(ci);
C.dup(2); // q r k q
C.dup(0); // q q r k q
C.dup(0); // q q q r k q
C.swap(3); // r q q q k q
C.push(ci); // c r q q k q
C.addmod(); // s=c+r q q k q
C.dup(3); // k s q q k q
C.addmod(); // t=s+k q k q
C.dup(1); // q t q k q
C.dup(0); // q q t q k q
C.dup(2); // t q q t q k q
C.dup(0); // t t q q t q k q
C.mulmod(); // a=t^2 q t q k q
C.dup(1); // q a q t q k q
C.dup(1); // a q a q t q k q
C.dup(0); // a a q a q t q k q
C.mulmod(); // b=t^4 a q t q k q
C.mulmod(); // c=t^6 t q k q
C.mulmod(); // r=t^7 k q
}
C.addmod(); // res=t^7+k
C.push("0x00");
C.mstore(); // Save it to pos 0;
C.push("0x20");
C.push("0x00");
C.return();
return C.createTxData();
}
const abi = [
{
"constant": true,
"inputs": [
{
"name": "in_x",
"type": "uint256"
},
{
"name": "in_k",
"type": "uint256"
}
],
"name": "MiMCpe7",
"outputs": [
{
"name": "out_x",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "pure",
"type": "function"
}
];
;// ./node_modules/circomlibjs/src/mimcsponge_gencontract.js
// Copyright (c) 2018 Jordi Baylina
// License: LGPL-3.0+
//
function mimcsponge_gencontract_createCode(seed, n) {
let ci = ethers.utils.keccak256(ethers.utils.toUtf8Bytes(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<n-1; i++) {
if (i < n-2) {
ci = ethers.utils.keccak256(ci);
} else {
ci = "0x00";
}
C.swap(1); // xR xL k q
C.dup(3); // q xR xL k q
C.dup(3); // k q xR xL k q
C.dup(1); // q k q xR xL k q
C.dup(4); // xL q k q xR xL k q
C.push(ci); // ci xL q k q xR xL k q
C.addmod(); // a=ci+xL k q xR xL k q
C.addmod(); // t=a+k xR xL k q
C.dup(4); // q t xR xL k q
C.swap(1); // t q xR xL k q
C.dup(1); // q t q xR xL k q
C.dup(0); // q q t q xR xL k q
C.dup(2); // t q q t q xR xL k q
C.dup(0); // t t q q t q xR xL k q
C.mulmod(); // b=t^2 q t q xR xL k q
C.dup(0); // b b q t q xR xL k q
C.mulmod(); // c=t^4 t q xR xL k q
C.mulmod(); // d=t^5 xR xL k q
C.dup(4); // q d xR xL k q
C.swap(2); // xR d q xL k q
C.addmod(); // e=t^5+xR xL k q (for next round: xL xR k q)
}
C.push("0x20");
C.mstore(); // Save it to pos 0;
C.push("0x00");
C.mstore(); // Save it to pos 1;
C.push("0x40");
C.push("0x00");
C.return();
return C.createTxData();
}
const mimcsponge_gencontract_abi = [
{
"constant": true,
"inputs": [
{
"name": "xL_in",
"type": "uint256"
},
{
"name": "xR_in",
"type": "uint256"
},
{
"name": "k",
"type": "uint256"
}
],
"name": "MiMCSponge",
"outputs": [
{
"name": "xL",
"type": "uint256"
},
{
"name": "xR",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "pure",
"type": "function"
}
];
;// ./node_modules/circomlibjs/src/poseidon_constants.js
/* harmony default export */ const poseidon_constants = ({
"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"]
]
]
});
;// ./node_modules/circomlibjs/src/poseidon_gencontract.js
// Copyright (c) 2018 Jordi Baylina
// License: LGPL-3.0+
//
const { unstringifyBigInts: poseidon_gencontract_unstringifyBigInts } = utils;
const { C:K, M } = poseidon_gencontract_unstringifyBigInts(poseidon_constants);
const N_ROUNDS_F = 8;
const N_ROUNDS_P = (/* unused pure expression or super */ null && ([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 poseidon_gencontract_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<t; i++) {
for (let j=0; j<t; j++) {
C.push(toHex256(M[t-2][i][j]));
C.push((1+i*t+j)*32);
C.mstore();
}
}
}
function ark(r) { // st, q
for (let i=0; i<t; i++) {
C.dup(t); // q, st, q
C.push(toHex256(K[t-2][r*t+i])); // K, q, st, q
C.dup(2+i); // st[i], K, q, st, q
C.addmod(); // newSt[i], st, q
C.swap(1 + i); // xx, st, q
C.pop();
}
}
function sigma(p) {
// sq, q
C.dup(t); // q, st, q
C.dup(1+p); // st[p] , q , st, q
C.dup(1); // q, st[p] , q , st, q
C.dup(0); // q, q, st[p] , q , st, q
C.dup(2); // st[p] , q, q, st[p] , q , st, q
C.dup(0); // st[p] , st[p] , q, q, st[p] , q , st, q
C.mulmod(); // st2[p], q, st[p] , q , st, q
C.dup(0); // st2[p], st2[p], q, st[p] , q , st, q
C.mulmod(); // st4[p], st[p] , q , st, q
C.mulmod(); // st5[p], st, q
C.swap(1+p);
C.pop(); // newst, q
}
function mix() {
C.label("mix");
for (let i=0; i<t; i++) {
for (let j=0; j<t; j++) {
if (j==0) {
C.dup(i+t); // q, newSt, oldSt, q
C.push((1+i*t+j)*32);
C.mload(); // M, q, newSt, oldSt, q
C.dup(2+i+j); // oldSt[j], M, q, newSt, oldSt, q
C.mulmod(); // acc, newSt, oldSt, q
} else {
C.dup(1+i+t); // q, acc, newSt, oldSt, q
C.push((1+i*t+j)*32);
C.mload(); // M, q, acc, newSt, oldSt, q
C.dup(3+i+j); // oldSt[j], M, q, acc, newSt, oldSt, q
C.mulmod(); // aux, acc, newSt, oldSt, q
C.dup(2+i+t); // q, aux, acc, newSt, oldSt, q
C.swap(2); // acc, aux, q, newSt, oldSt, q
C.addmod(); // acc, newSt, oldSt, q
}
}
}
for (let i=0; i<t; i++) {
C.swap((t -i) + (t -i-1));
C.pop();
}
C.push(0);
C.mload();
C.jmp();
}
// Check selector
C.push("0x0100000000000000000000000000000000000000000000000000000000");
C.push(0);
C.calldataload();
C.div();
C.dup(0);
C.push(ethers.utils.keccak256(ethers.utils.toUtf8Bytes(`poseidon(uint256[${nInputs}])`)).slice(0, 10)); // poseidon(uint256[n])
C.eq();
C.swap(1);
C.push(ethers.utils.keccak256(ethers.utils.toUtf8Bytes(`poseidon(bytes32[${nInputs}])`)).slice(0, 10)); // poseidon(bytes32[n])
C.eq();
C.or();
C.jmpi("start");
C.invalid();
C.label("start");
saveM();
C.push("0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001"); // q
// Load t values from the call data.
// The function has a single array param param
// [Selector (4)] [item1 (32)] [item2 (32)] ....
// Stack positions 0-nInputs.
for (let i=0; i<nInputs; i++) {
C.push(0x04+(0x20*(nInputs-i-1)));
C.calldataload();
}
C.push(0);
for (let i=0; i<nRoundsF+nRoundsP; i++) {
ark(i);
if ((i<nRoundsF/2) || (i>=nRoundsP+nRoundsF/2)) {
for (let j=0; j<t; j++) {
sigma(j);
}
} else {
sigma(0);
}
const strLabel = "aferMix"+i;
C._pushLabel(strLabel);
C.push(0);
C.mstore();
C.jmp("mix");
C.label(strLabel);
}
C.push("0x00");
C.mstore(); // Save it to pos 0;
C.push("0x20");
C.push("0x00");
C.return();
mix();
return C.createTxData();
}
function generateABI(nInputs) {
return [
{
"constant": true,
"inputs": [
{
"internalType": `bytes32[${nInputs}]`,
"name": "input",
"type": `bytes32[${nInputs}]`
}
],
"name": "poseidon",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "pure",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": `uint256[${nInputs}]`,
"name": "input",
"type": `uint256[${nInputs}]`
}
],
"name": "poseidon",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "pure",
"type": "function"
}
];
}
// EXTERNAL MODULE: ./node_modules/assert/build/assert.js
var build_assert = __webpack_require__(4148);
;// ./node_modules/circomlibjs/src/poseidon_reference.js
function unsringifyConstants(Fr, o) {
if ((typeof(o) == "string") && (/^[0-9]+$/.test(o) )) {
return Fr.e(o);
} else if ((typeof(o) == "string") && (/^0x[0-9a-fA-F]+$/.test(o) )) {
return Fr.e(o);
} else if (Array.isArray(o)) {
return o.map(unsringifyConstants.bind(null, Fr));
} else if (typeof o == "object") {
if (o===null) return null;
const res = {};
const keys = Object.keys(o);
keys.forEach( (k) => {
res[k] = unsringifyConstants(Fr, o[k]);
});
return res;
} else {
return o;
}
}
async function poseidon_reference_buildPoseidon() {
const bn128 = await getCurveFromName("bn128", true);
const F = bn128.Fr;
// Parameters are generated by a reference script https://extgit.iaik.tugraz.at/krypto/hadeshash/-/blob/master/code/generate_parameters_grain.sage
// Used like so: sage generate_parameters_grain.sage 1 0 254 2 8 56 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001
const {C, M} = unsringifyConstants(F, poseidonConstants);
// Using recommended parameters from whitepaper https://eprint.iacr.org/2019/458.pdf (table 2, table 8)
// Generated by https://extgit.iaik.tugraz.at/krypto/hadeshash/-/blob/master/code/calc_round_numbers.py
// And rounded up to nearest integer that divides by t
const N_ROUNDS_F = 8;
const N_ROUNDS_P = [56, 57, 56, 60, 60, 63, 64, 63, 60, 66, 60, 65, 70, 60, 64, 68];
const pow5 = a => F.mul(a, F.square(F.square(a, a)));
function poseidon(inputs, initState, nOut) {
assert(inputs.length > 0);
assert(inputs.length <= N_ROUNDS_P.length);
const t = inputs.length + 1;
const nRoundsF = N_ROUNDS_F;
const nRoundsP = N_ROUNDS_P[t - 2];
if (initState) {
initState = F.e(initState);
} else {
initState = F.zero;
}
nOut = nOut || 1;
let state = [initState, ...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)
);
}
if (nOut == 1) {
return state[0]
} else {
return state.slice(0, nOut);
}
}
poseidon.F = F;
return poseidon;
}
;// ./node_modules/circomlibjs/src/poseidon_opt.js
// Parameters are generated by a reference script https://extgit.iaik.tugraz.at/krypto/hadeshash/-/blob/master/code/generate_parameters_grain.sage
// Used like so: sage generate_parameters_grain.sage 1 0 254 2 8 56 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001
// Using recommended parameters from whitepaper https://eprint.iacr.org/2019/458.pdf (table 2, table 8)
// Generated by https://extgit.iaik.tugraz.at/krypto/hadeshash/-/blob/master/code/calc_round_numbers.py
// And rounded up to nearest integer that divides by t
// Optimization is taken from https://github.com/filecoin-project/neptune
function poseidon_opt_unsringifyConstants(Fr, o) {
if ((typeof(o) == "string") && (/^[0-9]+$/.test(o) )) {
return Fr.e(o);
} else if ((typeof(o) == "string") && (/^0x[0-9a-fA-F]+$/.test(o) )) {
return Fr.e(o);
} else if (Array.isArray(o)) {
return o.map(poseidon_opt_unsringifyConstants.bind(null, Fr));
} else if (typeof o == "object") {
if (o===null) return null;
const res = {};
const keys = Object.keys(o);
keys.forEach( (k) => {
res[k] = poseidon_opt_unsringifyConstants(Fr, o[k]);
});
return res;
} else {
return o;
}
}
async function poseidon_opt_buildPoseidon() {
const bn128 = await getCurveFromName("bn128", true);
const F = bn128.Fr;
const opt = poseidon_opt_unsringifyConstants(F, poseidonConstants);
const N_ROUNDS_F = 8;
const N_ROUNDS_P = [56, 57, 56, 60, 60, 63, 64, 63, 60, 66, 60, 65, 70, 60, 64, 68];
const pow5 = a => F.mul(a, F.square(F.square(a, a)));
function poseidon(inputs, initState, nOut) {
assert(inputs.length > 0);
assert(inputs.length <= N_ROUNDS_P.length);
if (initState) {
initState = F.e(initState);
} else {
initState = F.zero;
}
nOut = nOut || 1;
const t = inputs.length + 1;
const nRoundsF = N_ROUNDS_F;
const nRoundsP = N_ROUNDS_P[t - 2];
const C = opt.C[t-2];
const S = opt.S[t-2];
const M = opt.M[t-2];
const P = opt.P[t-2];
let state = [initState, ...inputs.map(a => F.e(a))];
state = state.map((a, i) => F.add(a, C[i]));
for (let r = 0; r < nRoundsF/2-1; r++) {
state = state.map(a => pow5(a));
state = state.map((a, i) => F.add(a, C[(r +1)* t +i]));
state = state.map((_, i) =>
state.reduce((acc, a, j) => F.add(acc, F.mul(M[j][i], a)), F.zero)
);
}
state = state.map(a => pow5(a));
state = state.map((a, i) => F.add(a, C[(nRoundsF/2-1 +1)* t +i]));
state = state.map((_, i) =>
state.reduce((acc, a, j) => F.add(acc, F.mul(P[j][i], a)), F.zero)
);
for (let r = 0; r < nRoundsP; r++) {
state[0] = pow5(state[0]);
state[0] = F.add(state[0], C[(nRoundsF/2 +1)*t + r]);
const s0 = state.reduce((acc, a, j) => {
return F.add(acc, F.mul(S[(t*2-1)*r+j], a));
}, F.zero);
for (let k=1; k<t; k++) {
state[k] = F.add(state[k], F.mul(state[0], S[(t*2-1)*r+t+k-1] ));
}
state[0] =s0;
}
for (let r = 0; r < nRoundsF/2-1; r++) {
state = state.map(a => pow5(a));
state = state.map((a, i) => F.add(a, C[ (nRoundsF/2 +1)*t + nRoundsP + r*t + i ]));
state = state.map((_, i) =>
state.reduce((acc, a, j) => F.add(acc, F.mul(M[j][i], a)), F.zero)
);
}
state = state.map(a => pow5(a));
state = state.map((_, i) =>
state.reduce((acc, a, j) => F.add(acc, F.mul(M[j][i], a)), F.zero)
);
if (nOut == 1) {
return state[0]
} else {
return state.slice(0, nOut);
}
}
poseidon.F = F;
return poseidon;
}
;// ./node_modules/circomlibjs/src/smt_hashes_poseidon.js
async function smt_hashes_poseidon_getHashes() {
const bn128 = await getCurveFromName("bn128", true);
const poseidon = await buildPoseidon();
return {
hash0: function (left, right) {
return poseidon([left, right]);
},
hash1: function(key, value) {
return poseidon([key, value, bn128.Fr.one]);
},
F: bn128.Fr
}
}
;// ./node_modules/circomlibjs/src/smt.js
async function buildSMT(db, root) {
const {hash0, hash1,F} = await getHashes();
return new SMT(db, root, hash0, hash1, F);
}
class SMT {
constructor(db, root, hash0, hash1, F) {
this.db = db;
this.root = root;
this.hash0 = hash0;
this.hash1 = hash1;
this.F = F;
}
_splitBits(_key) {
const F = this.F;
const res = Scalar.bits(F.toObject(_key));
while (res.length<256) res.push(false);
return res;
}
async update(_key, _newValue) {
const F = this.F;
const key = F.e(_key);
const newValue = F.e(_newValue);
const resFind = await this.find(key);
const res = {};
res.oldRoot = this.root;
res.oldKey = key;
res.oldValue = resFind.foundValue;
res.newKey = key;
res.newValue = newValue;
res.siblings = resFind.siblings;
const ins = [];
const dels = [];
let rtOld = this.hash1(key, resFind.foundValue);
let rtNew = this.hash1(key, newValue);
ins.push([rtNew, [1, key, newValue ]]);
dels.push(rtOld);
const keyBits = this._splitBits(key);
for (let level = resFind.siblings.length-1; level >=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 = this.hash0(oldNode[0], oldNode[1]);
rtNew = this.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 F = this.F;
const key = F.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 = this.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 = this.hash0(oldSibling, rtOld);
} else {
rtOld = this.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 = this.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 F = this.F;
const key = F.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 = this.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 = this.hash1(key, value);
inserts.push([rt,[1, key, value]] );
for (let i=res.siblings.length-1; i>=0; i--) {
if ((i<res.siblings.length-1)&&(!F.isZero(res.siblings[i]))) {
mixed = true;
}
if (mixed) {
const oldSibling = resFind.siblings[i];
if (newKeyBits[i]) {
rtOld = this.hash0(oldSibling, rtOld);
} else {
rtOld = this.hash0(rtOld, oldSibling);
}
dels.push(rtOld);
}
let newRt;
if (newKeyBits[i]) {
newRt = this.hash0(res.siblings[i], rt);
inserts.push([newRt,[res.siblings[i], rt]] );
} else {
newRt = this.hash0(rt, res.siblings[i]);
inserts.push([newRt,[rt, res.siblings[i]]] );
}
rt = newRt;
}
if (addedOne) res.siblings.pop();
while ((res.siblings.length>0) && (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 key = this.F.e(_key);
const keyBits = this._splitBits(key);
return await this._find(key, keyBits, this.root, 0);
}
async _find(key, keyBits, root, level) {
const F = this.F;
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 newMemEmptyTrie() {
const {hash0, hash1,F} = await getHashes();
const db = new SMTMemDB(F);
const rt = await db.getRoot();
const smt = new SMT(db, rt, hash0, hash1, F);
return smt;
}
;// ./node_modules/circomlibjs/main.js
const mimc7Contract=(/* unused pure expression or super */ null && (_mimc7Contract));
const mimcSpongecontract=(/* unused pure expression or super */ null && (_mimcSpongeContract));
const poseidonContract=(/* unused pure expression or super */ null && (_poseidonContract));
;// ./src/mimc.ts
class Mimc {
sponge;
hash;
mimcPromise;
constructor() {
this.mimcPromise = this.initMimc();
}
async initMimc() {
this.sponge = await mimcsponge_buildMimcSponge();
this.hash = (left, right) => this.sponge?.F.toString(this.sponge?.multiHash([BigInt(left), BigInt(right)]));
}
async getHash() {
await this.mimcPromise;
return {
sponge: this.sponge,
hash: this.hash
};
}
}
const mimc = new Mimc();
// EXTERNAL MODULE: ./node_modules/crypto-browserify/index.js
var crypto_browserify = __webpack_require__(1565);
// EXTERNAL MODULE: ./node_modules/bn.js/lib/bn.js
var bn = __webpack_require__(9404);
;// ./src/utils.ts
BigInt.prototype.toJSON = function() {
return this.toString();
};
const isNode = !process.browser && typeof globalThis.window === "undefined";
const utils_crypto = isNode ? crypto_browserify.webcrypto : globalThis.crypto;
const chunk = (arr, size) => [...Array(Math.ceil(arr.length / size))].map((_, i) => arr.slice(size * i, size + size * i));
function utils_sleep(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
function validateUrl(url, protocols) {
try {
const parsedUrl = new URL(url);
if (protocols && protocols.length) {
return protocols.map((p) => p.toLowerCase()).includes(parsedUrl.protocol);
}
return true;
} catch {
return false;
}
}
function concatBytes(...arrays) {
const totalSize = arrays.reduce((acc, e) => acc + e.length, 0);
const merged = new Uint8Array(totalSize);
arrays.forEach((array, i, arrays2) => {
const offset = arrays2.slice(0, i).reduce((acc, e) => acc + e.length, 0);
merged.set(array, offset);
});
return merged;
}
function bufferToBytes(b) {
return new Uint8Array(b.buffer);
}
function bytesToBase64(bytes) {
return btoa(bytes.reduce((data, byte) => data + String.fromCharCode(byte), ""));
}
function base64ToBytes(base64) {
return Uint8Array.from(atob(base64), (c) => c.charCodeAt(0));
}
function bytesToHex(bytes) {
return "0x" + Array.from(bytes).map((b) => b.toString(16).padStart(2, "0")).join("");
}
function hexToBytes(hexString) {
if (hexString.slice(0, 2) === "0x") {
hexString = hexString.slice(2);
}
if (hexString.length % 2 !== 0) {
hexString = "0" + hexString;
}
return Uint8Array.from(hexString.match(/.{1,2}/g).map((byte) => parseInt(byte, 16)));
}
function bytesToBN(bytes) {
return BigInt(bytesToHex(bytes));
}
function bnToBytes(bigint) {
let hexString = typeof bigint === "bigint" ? bigint.toString(16) : bigint;
if (hexString.slice(0, 2) === "0x") {
hexString = hexString.slice(2);
}
if (hexString.length % 2 !== 0) {
hexString = "0" + hexString;
}
return Uint8Array.from(hexString.match(/.{1,2}/g).map((byte) => parseInt(byte, 16)));
}
function leBuff2Int(bytes) {
return new BN(bytes, 16, "le");
}
function utils_leInt2Buff(bigint) {
return Uint8Array.from(new BN(bigint).toArray("le", 31));
}
function toFixedHex(numberish, length = 32) {
return "0x" + BigInt(numberish).toString(16).padStart(length * 2, "0");
}
function toFixedLength(string, length = 32) {
string = string.replace("0x", "");
return "0x" + string.padStart(length * 2, "0");
}
function rBigInt(nbytes = 31) {
return bytesToBN(utils_crypto.getRandomValues(new Uint8Array(nbytes)));
}
function rHex(nbytes = 32) {
return bytesToHex(utils_crypto.getRandomValues(new Uint8Array(nbytes)));
}
function bigIntReplacer(key, value) {
return typeof value === "bigint" ? value.toString() : value;
}
function substring(str, length = 10) {
if (str.length < length * 2) {
return str;
}
return `${str.substring(0, length)}...${str.substring(str.length - length)}`;
}
async function digest(bytes, algo = "SHA-384") {
return new Uint8Array(await utils_crypto.subtle.digest(algo, bytes));
}
function numberFormatter(num, digits = 3) {
const lookup = [
{ value: 1, symbol: "" },
{ value: 1e3, symbol: "K" },
{ value: 1e6, symbol: "M" },
{ value: 1e9, symbol: "G" },
{ value: 1e12, symbol: "T" },
{ value: 1e15, symbol: "P" },
{ value: 1e18, symbol: "E" }
];
const regexp = /\.0+$|(?<=\.[0-9]*[1-9])0+$/;
const item = lookup.slice().reverse().find((item2) => Number(num) >= item2.value);
return item ? (Number(num) / item.value).toFixed(digits).replace(regexp, "").concat(item.symbol) : "0";
}
function isHex(value) {
return /^0x[0-9a-fA-F]*$/.test(value);
}
;// ./src/merkleTreeWorker.ts
async function nodePostWork() {
const { hash: hashFunction } = await mimc.getHash();
const { merkleTreeHeight, edge, elements, zeroElement } = (worker_threads_ignored_default()).workerData;
if (edge) {
const merkleTree2 = new lib.PartialMerkleTree(merkleTreeHeight, edge, elements, {
zeroElement,
hashFunction
});
worker_threads_ignored_default().parentPort.postMessage(merkleTree2.toString());
return;
}
const merkleTree = new lib.MerkleTree(merkleTreeHeight, elements, {
zeroElement,
hashFunction
});
worker_threads_ignored_default().parentPort.postMessage(merkleTree.toString());
}
if (isNode && (worker_threads_ignored_default())) {
nodePostWork();
} else if (!isNode && typeof addEventListener === "function" && typeof postMessage === "function") {
addEventListener("message", async (e) => {
let data;
if (e.data) {
data = e.data;
} else {
data = e;
}
const { hash: hashFunction } = await mimc.getHash();
const { merkleTreeHeight, edge, elements, zeroElement } = data;
if (edge) {
const merkleTree2 = new lib.PartialMerkleTree(merkleTreeHeight, edge, elements, {
zeroElement,
hashFunction
});
postMessage(merkleTree2.toString());
return;
}
const merkleTree = new lib.MerkleTree(merkleTreeHeight, elements, {
zeroElement,
hashFunction
});
postMessage(merkleTree.toString());
});
} else {
throw new Error("This browser / environment does not support workers!");
}
})();
/******/ return __webpack_exports__;
/******/ })()
;
});