1 line
2.0 MiB
1 line
2.0 MiB
{"version":3,"file":"ethers.umd.js","sources":["../../../node_modules/bn.js/lib/bn.js","../../logger/src.ts/_version.ts","../../logger/src.ts/index.ts","../../bytes/src.ts/_version.ts","../../bytes/src.ts/index.ts","../../bignumber/src.ts/_version.ts","../../bignumber/src.ts/bignumber.ts","../../bignumber/src.ts/fixednumber.ts","../../bignumber/src.ts/index.ts","../../properties/src.ts/_version.ts","../../properties/src.ts/index.ts","../../abi/src.ts/_version.ts","../../abi/src.ts/fragments.ts","../../abi/src.ts/coders/abstract-coder.ts","../../../node_modules/js-sha3/src/sha3.js","../../keccak256/src.ts/index.ts","../../rlp/src.ts/_version.ts","../../rlp/src.ts/index.ts","../../address/src.ts/_version.ts","../../address/src.ts/index.ts","../../abi/src.ts/coders/address.ts","../../abi/src.ts/coders/anonymous.ts","../../abi/src.ts/coders/array.ts","../../abi/src.ts/coders/boolean.ts","../../abi/src.ts/coders/bytes.ts","../../abi/src.ts/coders/fixed-bytes.ts","../../abi/src.ts/coders/null.ts","../../constants/src.ts/addresses.ts","../../constants/src.ts/bignumbers.ts","../../constants/src.ts/hashes.ts","../../constants/src.ts/strings.ts","../../constants/src.ts/index.ts","../../abi/src.ts/coders/number.ts","../../strings/src.ts/_version.ts","../../strings/src.ts/utf8.ts","../../strings/src.ts/bytes32.ts","../../strings/src.ts/idna.ts","../../strings/src.ts/index.ts","../../abi/src.ts/coders/string.ts","../../abi/src.ts/coders/tuple.ts","../../abi/src.ts/abi-coder.ts","../../hash/src.ts/id.ts","../../hash/src.ts/_version.ts","../../base64/src.ts/browser-base64.ts","../../base64/src.ts/index.ts","../../hash/src.ts/ens-normalize/decoder.ts","../../hash/src.ts/ens-normalize/include.ts","../../hash/src.ts/ens-normalize/lib.ts","../../hash/src.ts/namehash.ts","../../hash/src.ts/message.ts","../../hash/src.ts/typed-data.ts","../../hash/src.ts/index.ts","../../abi/src.ts/interface.ts","../../abi/src.ts/index.ts","../../abstract-provider/src.ts/_version.ts","../../abstract-provider/src.ts/index.ts","../../abstract-signer/src.ts/_version.ts","../../abstract-signer/src.ts/index.ts","../../../node_modules/elliptic/node_modules/bn.js/lib/bn.js","../../../node_modules/minimalistic-assert/index.js","../../../node_modules/minimalistic-crypto-utils/lib/utils.js","../../../node_modules/elliptic/lib/elliptic/utils.js","../../../node_modules/elliptic/lib/elliptic/curve/base.js","../../../node_modules/inherits/inherits_browser.js","../../../node_modules/elliptic/lib/elliptic/curve/short.js","../../../node_modules/elliptic/lib/elliptic/curve/index.js","../../../node_modules/hash.js/lib/hash/utils.js","../../../node_modules/hash.js/lib/hash/common.js","../../../node_modules/hash.js/lib/hash/sha/common.js","../../../node_modules/hash.js/lib/hash/sha/1.js","../../../node_modules/hash.js/lib/hash/sha/256.js","../../../node_modules/hash.js/lib/hash/sha/224.js","../../../node_modules/hash.js/lib/hash/sha/512.js","../../../node_modules/hash.js/lib/hash/sha/384.js","../../../node_modules/hash.js/lib/hash/sha.js","../../../node_modules/hash.js/lib/hash/ripemd.js","../../../node_modules/hash.js/lib/hash/hmac.js","../../../node_modules/hash.js/lib/hash.js","../../../node_modules/elliptic/lib/elliptic/curves.js","../../../node_modules/hmac-drbg/lib/hmac-drbg.js","../../../node_modules/elliptic/lib/elliptic/ec/key.js","../../../node_modules/elliptic/lib/elliptic/ec/signature.js","../../../node_modules/elliptic/lib/elliptic/ec/index.js","../../../node_modules/elliptic/lib/elliptic.js","../../signing-key/src.ts/elliptic.ts","../../signing-key/src.ts/_version.ts","../../signing-key/src.ts/index.ts","../../transactions/src.ts/_version.ts","../../transactions/src.ts/index.ts","../../contracts/src.ts/_version.ts","../../contracts/src.ts/index.ts","../../basex/src.ts/index.ts","../../sha2/src.ts/types.ts","../../sha2/src.ts/_version.ts","../../sha2/src.ts/browser-sha2.ts","../../sha2/src.ts/index.ts","../../pbkdf2/src.ts/browser-pbkdf2.ts","../../pbkdf2/src.ts/index.ts","../../wordlists/src.ts/_version.ts","../../wordlists/src.ts/wordlist.ts","../../wordlists/src.ts/lang-en.ts","../../wordlists/src.ts/browser-wordlists.ts","../../wordlists/src.ts/index.ts","../../hdnode/src.ts/_version.ts","../../hdnode/src.ts/index.ts","../../random/src.ts/_version.ts","../../random/src.ts/browser-random.ts","../../random/src.ts/shuffle.ts","../../random/src.ts/index.ts","../../../node_modules/aes-js/index.js","../../json-wallets/src.ts/_version.ts","../../json-wallets/src.ts/utils.ts","../../json-wallets/src.ts/crowdsale.ts","../../json-wallets/src.ts/inspect.ts","../../../node_modules/scrypt-js/scrypt.js","../../json-wallets/src.ts/keystore.ts","../../json-wallets/src.ts/index.ts","../../wallet/src.ts/_version.ts","../../wallet/src.ts/index.ts","../../networks/src.ts/_version.ts","../../networks/src.ts/index.ts","../../web/src.ts/_version.ts","../../web/src.ts/browser-geturl.ts","../../web/src.ts/index.ts","../../../node_modules/bech32/index.js","../../providers/src.ts/_version.ts","../../providers/src.ts/formatter.ts","../../providers/src.ts/base-provider.ts","../../providers/src.ts/json-rpc-provider.ts","../../providers/src.ts/browser-ws.ts","../../providers/src.ts/websocket-provider.ts","../../providers/src.ts/url-json-rpc-provider.ts","../../providers/src.ts/alchemy-provider.ts","../../providers/src.ts/ankr-provider.ts","../../providers/src.ts/cloudflare-provider.ts","../../providers/src.ts/etherscan-provider.ts","../../providers/src.ts/fallback-provider.ts","../../providers/src.ts/browser-ipc-provider.ts","../../providers/src.ts/infura-provider.ts","../../providers/src.ts/json-rpc-batch-provider.ts","../../providers/src.ts/nodesmith-provider.ts","../../providers/src.ts/pocket-provider.ts","../../providers/src.ts/quicknode-provider.ts","../../providers/src.ts/web3-provider.ts","../../providers/src.ts/index.ts","../../solidity/src.ts/_version.ts","../../solidity/src.ts/index.ts","../../units/src.ts/_version.ts","../../units/src.ts/index.ts","../src.ts/utils.ts","../src.ts/_version.ts","../src.ts/ethers.ts","../src.ts/index.ts"],"sourcesContent":["(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","export const version = \"logger/5.8.0\";\n","\"use strict\";\n\nlet _permanentCensorErrors = false;\nlet _censorErrors = false;\n\nconst LogLevels: { [ name: string ]: number } = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\n\nimport { version } from \"./_version\";\n\nlet _globalLogger: Logger = null;\n\nfunction _checkNormalize(): string {\n try {\n const missing: Array<string> = [ ];\n\n // Make sure all forms of normalization are supported\n [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].forEach((form) => {\n try {\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad normalize\");\n };\n } catch(error) {\n missing.push(form);\n }\n });\n\n if (missing.length) {\n throw new Error(\"missing \" + missing.join(\", \"));\n }\n\n if (String.fromCharCode(0xe9).normalize(\"NFD\") !== String.fromCharCode(0x65, 0x0301)) {\n throw new Error(\"broken implementation\")\n }\n } catch (error) {\n return error.message;\n }\n\n return null;\n}\n\nconst _normalizeError = _checkNormalize();\n\nexport enum LogLevel {\n DEBUG = \"DEBUG\",\n INFO = \"INFO\",\n WARNING = \"WARNING\",\n ERROR = \"ERROR\",\n OFF = \"OFF\"\n}\n\n\nexport enum ErrorCode {\n\n ///////////////////\n // Generic Errors\n\n // Unknown Error\n UNKNOWN_ERROR = \"UNKNOWN_ERROR\",\n\n // Not Implemented\n NOT_IMPLEMENTED = \"NOT_IMPLEMENTED\",\n\n // Unsupported Operation\n // - operation\n UNSUPPORTED_OPERATION = \"UNSUPPORTED_OPERATION\",\n\n // Network Error (i.e. Ethereum Network, such as an invalid chain ID)\n // - event (\"noNetwork\" is not re-thrown in provider.ready; otherwise thrown)\n NETWORK_ERROR = \"NETWORK_ERROR\",\n\n // Some sort of bad response from the server\n SERVER_ERROR = \"SERVER_ERROR\",\n\n // Timeout\n TIMEOUT = \"TIMEOUT\",\n\n ///////////////////\n // Operational Errors\n\n // Buffer Overrun\n BUFFER_OVERRUN = \"BUFFER_OVERRUN\",\n\n // Numeric Fault\n // - operation: the operation being executed\n // - fault: the reason this faulted\n NUMERIC_FAULT = \"NUMERIC_FAULT\",\n\n\n ///////////////////\n // Argument Errors\n\n // Missing new operator to an object\n // - name: The name of the class\n MISSING_NEW = \"MISSING_NEW\",\n\n // Invalid argument (e.g. value is incompatible with type) to a function:\n // - argument: The argument name that was invalid\n // - value: The value of the argument\n INVALID_ARGUMENT = \"INVALID_ARGUMENT\",\n\n // Missing argument to a function:\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n MISSING_ARGUMENT = \"MISSING_ARGUMENT\",\n\n // Too many arguments\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n UNEXPECTED_ARGUMENT = \"UNEXPECTED_ARGUMENT\",\n\n\n ///////////////////\n // Blockchain Errors\n\n // Call exception\n // - transaction: the transaction\n // - address?: the contract address\n // - args?: The arguments passed into the function\n // - method?: The Solidity method signature\n // - errorSignature?: The EIP848 error signature\n // - errorArgs?: The EIP848 error parameters\n // - reason: The reason (only for EIP848 \"Error(string)\")\n CALL_EXCEPTION = \"CALL_EXCEPTION\",\n\n // Insufficient funds (< value + gasLimit * gasPrice)\n // - transaction: the transaction attempted\n INSUFFICIENT_FUNDS = \"INSUFFICIENT_FUNDS\",\n\n // Nonce has already been used\n // - transaction: the transaction attempted\n NONCE_EXPIRED = \"NONCE_EXPIRED\",\n\n // The replacement fee for the transaction is too low\n // - transaction: the transaction attempted\n REPLACEMENT_UNDERPRICED = \"REPLACEMENT_UNDERPRICED\",\n\n // The gas limit could not be estimated\n // - transaction: the transaction passed to estimateGas\n UNPREDICTABLE_GAS_LIMIT = \"UNPREDICTABLE_GAS_LIMIT\",\n\n // The transaction was replaced by one with a higher gas price\n // - reason: \"cancelled\", \"replaced\" or \"repriced\"\n // - cancelled: true if reason == \"cancelled\" or reason == \"replaced\")\n // - hash: original transaction hash\n // - replacement: the full TransactionsResponse for the replacement\n // - receipt: the receipt of the replacement\n TRANSACTION_REPLACED = \"TRANSACTION_REPLACED\",\n\n\n ///////////////////\n // Interaction Errors\n\n // The user rejected the action, such as signing a message or sending\n // a transaction\n ACTION_REJECTED = \"ACTION_REJECTED\",\n};\n\nconst HEX = \"0123456789abcdef\";\n\nexport class Logger {\n readonly version: string;\n\n static errors = ErrorCode;\n\n static levels = LogLevel;\n\n constructor(version: string) {\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n value: version,\n writable: false\n });\n }\n\n _log(logLevel: LogLevel, args: Array<any>): void {\n const level = logLevel.toLowerCase();\n if (LogLevels[level] == null) {\n this.throwArgumentError(\"invalid log level name\", \"logLevel\", logLevel);\n }\n if (_logLevel > LogLevels[level]) { return; }\n console.log.apply(console, args);\n }\n\n debug(...args: Array<any>): void {\n this._log(Logger.levels.DEBUG, args);\n }\n\n info(...args: Array<any>): void {\n this._log(Logger.levels.INFO, args);\n }\n\n warn(...args: Array<any>): void {\n this._log(Logger.levels.WARNING, args);\n }\n\n makeError(message: string, code?: ErrorCode, params?: any): Error {\n // Errors are being censored\n if (_censorErrors) {\n return this.makeError(\"censored error\", code, { });\n }\n\n if (!code) { code = Logger.errors.UNKNOWN_ERROR; }\n if (!params) { params = {}; }\n\n const messageDetails: Array<string> = [];\n Object.keys(params).forEach((key) => {\n const value = params[key];\n try {\n if (value instanceof Uint8Array) {\n let hex = \"\";\n for (let i = 0; i < value.length; i++) {\n hex += HEX[value[i] >> 4];\n hex += HEX[value[i] & 0x0f];\n }\n messageDetails.push(key + \"=Uint8Array(0x\" + hex + \")\");\n } else {\n messageDetails.push(key + \"=\" + JSON.stringify(value));\n }\n } catch (error) {\n messageDetails.push(key + \"=\" + JSON.stringify(params[key].toString()));\n }\n });\n messageDetails.push(`code=${ code }`);\n messageDetails.push(`version=${ this.version }`);\n\n const reason = message;\n\n let url = \"\";\n\n switch (code) {\n case ErrorCode.NUMERIC_FAULT: {\n url = \"NUMERIC_FAULT\";\n const fault = message;\n\n switch (fault) {\n case \"overflow\": case \"underflow\": case \"division-by-zero\":\n url += \"-\" + fault;\n break;\n case \"negative-power\": case \"negative-width\":\n url += \"-unsupported\";\n break;\n case \"unbound-bitwise-result\":\n url += \"-unbound-result\";\n break;\n }\n break;\n }\n case ErrorCode.CALL_EXCEPTION:\n case ErrorCode.INSUFFICIENT_FUNDS:\n case ErrorCode.MISSING_NEW:\n case ErrorCode.NONCE_EXPIRED:\n case ErrorCode.REPLACEMENT_UNDERPRICED:\n case ErrorCode.TRANSACTION_REPLACED:\n case ErrorCode.UNPREDICTABLE_GAS_LIMIT:\n url = code;\n break;\n }\n\n if (url) {\n message += \" [ See: https:/\\/links.ethers.org/v5-errors-\" + url + \" ]\";\n }\n\n if (messageDetails.length) {\n message += \" (\" + messageDetails.join(\", \") + \")\";\n }\n\n // @TODO: Any??\n const error: any = new Error(message);\n error.reason = reason;\n error.code = code\n\n Object.keys(params).forEach(function(key) {\n error[key] = params[key];\n });\n\n return error;\n }\n\n throwError(message: string, code?: ErrorCode, params?: any): never {\n throw this.makeError(message, code, params);\n }\n\n throwArgumentError(message: string, name: string, value: any): never {\n return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {\n argument: name,\n value: value\n });\n }\n\n assert(condition: any, message: string, code?: ErrorCode, params?: any): void {\n if (!!condition) { return; }\n this.throwError(message, code, params);\n }\n\n assertArgument(condition: any, message: string, name: string, value: any): void {\n if (!!condition) { return; }\n this.throwArgumentError(message, name, value);\n }\n\n checkNormalize(message?: string): void {\n if (message == null) { message = \"platform missing String.prototype.normalize\"; }\n if (_normalizeError) {\n this.throwError(\"platform missing String.prototype.normalize\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"String.prototype.normalize\", form: _normalizeError\n });\n }\n }\n\n checkSafeUint53(value: number, message?: string): void {\n if (typeof(value) !== \"number\") { return; }\n\n if (message == null) { message = \"value not safe\"; }\n\n if (value < 0 || value >= 0x1fffffffffffff) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"out-of-safe-range\",\n value: value\n });\n }\n\n if (value % 1) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"non-integer\",\n value: value\n });\n }\n }\n\n checkArgumentCount(count: number, expectedCount: number, message?: string): void {\n if (message) {\n message = \": \" + message;\n } else {\n message = \"\";\n }\n\n if (count < expectedCount) {\n this.throwError(\"missing argument\" + message, Logger.errors.MISSING_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n\n if (count > expectedCount) {\n this.throwError(\"too many arguments\" + message, Logger.errors.UNEXPECTED_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n }\n\n checkNew(target: any, kind: any): void {\n if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n\n checkAbstract(target: any, kind: any): void {\n if (target === kind) {\n this.throwError(\n \"cannot instantiate abstract class \" + JSON.stringify(kind.name) + \" directly; use a sub-class\",\n Logger.errors.UNSUPPORTED_OPERATION,\n { name: target.name, operation: \"new\" }\n );\n } else if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n\n static globalLogger(): Logger {\n if (!_globalLogger) { _globalLogger = new Logger(version); }\n return _globalLogger;\n }\n\n static setCensorship(censorship: boolean, permanent?: boolean): void {\n if (!censorship && permanent) {\n this.globalLogger().throwError(\"cannot permanently disable censorship\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n\n if (_permanentCensorErrors) {\n if (!censorship) { return; }\n this.globalLogger().throwError(\"error censorship permanent\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n\n _censorErrors = !!censorship;\n _permanentCensorErrors = !!permanent;\n }\n\n static setLogLevel(logLevel: LogLevel): void {\n const level = LogLevels[logLevel.toLowerCase()];\n if (level == null) {\n Logger.globalLogger().warn(\"invalid log level - \" + logLevel);\n return;\n }\n _logLevel = level;\n }\n\n static from(version: string): Logger {\n return new Logger(version);\n }\n}\n","export const version = \"bytes/5.8.0\";\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n// Exported Types\n\nexport type Bytes = ArrayLike<number>;\n\nexport type BytesLike = Bytes | string;\n\nexport type DataOptions = {\n allowMissingPrefix?: boolean;\n hexPad?: \"left\" | \"right\" | null;\n};\n\nexport interface Hexable {\n toHexString(): string;\n}\n\n\n/*\nexport interface HexString {\n length: number;\n substring: (start: number, end?: number) => string;\n\n [index: number]: string;\n}\n*/\n\nexport type SignatureLike = {\n r: string;\n s?: string;\n _vs?: string,\n recoveryParam?: number;\n v?: number;\n} | BytesLike;\n\nexport interface Signature {\n r: string;\n\n s: string;\n _vs: string,\n\n recoveryParam: number;\n v: number;\n\n yParityAndS: string\n compact: string;\n}\n\n///////////////////////////////\n\n\nfunction isHexable(value: any): value is Hexable {\n return !!(value.toHexString);\n}\n\nfunction addSlice(array: Uint8Array): Uint8Array {\n if (array.slice) { return array; }\n\n array.slice = function() {\n const args = Array.prototype.slice.call(arguments);\n return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\n }\n\n return array;\n}\n\nexport function isBytesLike(value: any): value is BytesLike {\n return ((isHexString(value) && !(value.length % 2)) || isBytes(value));\n}\n\nfunction isInteger(value: number) {\n return (typeof(value) === \"number\" && value == value && (value % 1) === 0);\n}\n\nexport function isBytes(value: any): value is Bytes {\n if (value == null) { return false; }\n\n if (value.constructor === Uint8Array) { return true; }\n if (typeof(value) === \"string\") { return false; }\n if (!isInteger(value.length) || value.length < 0) { return false; }\n\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n if (!isInteger(v) || v < 0 || v >= 256) { return false; }\n }\n return true;\n}\n\n\nexport function arrayify(value: BytesLike | Hexable | number, options?: DataOptions): Uint8Array {\n if (!options) { options = { }; }\n\n if (typeof(value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid arrayify value\");\n\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value = parseInt(String(value / 256));\n }\n if (result.length === 0) { result.push(0); }\n\n return addSlice(new Uint8Array(result));\n }\n\n if (options.allowMissingPrefix && typeof(value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n\n if (isHexable(value)) { value = value.toHexString(); }\n\n if (isHexString(value)) {\n let hex = (<string>value).substring(2);\n if (hex.length % 2) {\n if (options.hexPad === \"left\") {\n hex = \"0\" + hex;\n } else if (options.hexPad === \"right\") {\n hex += \"0\";\n } else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n\n const result = [];\n for (let i = 0; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n\n return addSlice(new Uint8Array(result));\n }\n\n if (isBytes(value)) {\n return addSlice(new Uint8Array(value));\n }\n\n return logger.throwArgumentError(\"invalid arrayify value\", \"value\", value);\n}\n\nexport function concat(items: ReadonlyArray<BytesLike>): Uint8Array {\n const objects = items.map(item => arrayify(item));\n const length = objects.reduce((accum, item) => (accum + item.length), 0);\n\n const result = new Uint8Array(length);\n\n objects.reduce((offset, object) => {\n result.set(object, offset);\n return offset + object.length;\n }, 0);\n\n return addSlice(result);\n}\n\nexport function stripZeros(value: BytesLike): Uint8Array {\n let result: Uint8Array = arrayify(value);\n\n if (result.length === 0) { return result; }\n\n // Find the first non-zero entry\n let start = 0;\n while (start < result.length && result[start] === 0) { start++ }\n\n // If we started with zeros, strip them\n if (start) {\n result = result.slice(start);\n }\n\n return result;\n}\n\nexport function zeroPad(value: BytesLike, length: number): Uint8Array {\n value = arrayify(value);\n\n if (value.length > length) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[0]);\n }\n\n const result = new Uint8Array(length);\n result.set(value, length - value.length);\n return addSlice(result);\n}\n\n\nexport function isHexString(value: any, length?: number): boolean {\n if (typeof(value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false\n }\n if (length && value.length !== 2 + 2 * length) { return false; }\n return true;\n}\n\nconst HexCharacters: string = \"0123456789abcdef\";\n\nexport function hexlify(value: BytesLike | Hexable | number | bigint, options?: DataOptions): string {\n if (!options) { options = { }; }\n\n if (typeof(value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid hexlify value\");\n\n let hex = \"\";\n while (value) {\n hex = HexCharacters[value & 0xf] + hex;\n value = Math.floor(value / 16);\n }\n\n if (hex.length) {\n if (hex.length % 2) { hex = \"0\" + hex; }\n return \"0x\" + hex;\n }\n\n return \"0x00\";\n }\n\n if (typeof(value) === \"bigint\") {\n value = value.toString(16);\n if (value.length % 2) { return (\"0x0\" + value); }\n return \"0x\" + value;\n }\n\n if (options.allowMissingPrefix && typeof(value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n\n if (isHexable(value)) { return value.toHexString(); }\n\n if (isHexString(value)) {\n if ((<string>value).length % 2) {\n if (options.hexPad === \"left\") {\n value = \"0x0\" + (<string>value).substring(2);\n } else if (options.hexPad === \"right\") {\n value += \"0\";\n } else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n return (<string>value).toLowerCase();\n }\n\n if (isBytes(value)) {\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n let v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n }\n\n return logger.throwArgumentError(\"invalid hexlify value\", \"value\", value);\n}\n\n/*\nfunction unoddify(value: BytesLike | Hexable | number): BytesLike | Hexable | number {\n if (typeof(value) === \"string\" && value.length % 2 && value.substring(0, 2) === \"0x\") {\n return \"0x0\" + value.substring(2);\n }\n return value;\n}\n*/\nexport function hexDataLength(data: BytesLike) {\n if (typeof(data) !== \"string\") {\n data = hexlify(data);\n } else if (!isHexString(data) || (data.length % 2)) {\n return null;\n }\n\n return (data.length - 2) / 2;\n}\n\nexport function hexDataSlice(data: BytesLike, offset: number, endOffset?: number): string {\n if (typeof(data) !== \"string\") {\n data = hexlify(data);\n } else if (!isHexString(data) || (data.length % 2)) {\n logger.throwArgumentError(\"invalid hexData\", \"value\", data );\n }\n\n offset = 2 + 2 * offset;\n\n if (endOffset != null) {\n return \"0x\" + data.substring(offset, 2 + 2 * endOffset);\n }\n\n return \"0x\" + data.substring(offset);\n}\n\nexport function hexConcat(items: ReadonlyArray<BytesLike>): string {\n let result = \"0x\";\n items.forEach((item) => {\n result += hexlify(item).substring(2);\n });\n return result;\n}\n\nexport function hexValue(value: BytesLike | Hexable | number | bigint): string {\n const trimmed = hexStripZeros(hexlify(value, { hexPad: \"left\" }));\n if (trimmed === \"0x\") { return \"0x0\"; }\n return trimmed;\n}\n\nexport function hexStripZeros(value: BytesLike): string {\n if (typeof(value) !== \"string\") { value = hexlify(value); }\n\n if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n value = value.substring(2);\n let offset = 0;\n while (offset < value.length && value[offset] === \"0\") { offset++; }\n return \"0x\" + value.substring(offset);\n}\n\nexport function hexZeroPad(value: BytesLike, length: number): string {\n if (typeof(value) !== \"string\") {\n value = hexlify(value);\n } else if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n\n if (value.length > 2 * length + 2) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[1]);\n }\n\n while (value.length < 2 * length + 2) {\n value = \"0x0\" + value.substring(2);\n }\n\n return value;\n}\n\nexport function splitSignature(signature: SignatureLike): Signature {\n\n const result = {\n r: \"0x\",\n s: \"0x\",\n _vs: \"0x\",\n recoveryParam: 0,\n v: 0,\n yParityAndS: \"0x\",\n compact: \"0x\"\n };\n\n if (isBytesLike(signature)) {\n let bytes: Uint8Array = arrayify(signature);\n\n // Get the r, s and v\n if (bytes.length === 64) {\n // EIP-2098; pull the v from the top bit of s and clear it\n result.v = 27 + (bytes[32] >> 7);\n bytes[32] &= 0x7f;\n\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n\n } else if (bytes.length === 65) {\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n result.v = bytes[64];\n } else {\n\n logger.throwArgumentError(\"invalid signature string\", \"signature\", signature);\n }\n\n\n // Allow a recid to be used as the v\n if (result.v < 27) {\n if (result.v === 0 || result.v === 1) {\n result.v += 27;\n } else {\n logger.throwArgumentError(\"signature invalid v byte\", \"signature\", signature);\n }\n }\n\n // Compute recoveryParam from v\n result.recoveryParam = 1 - (result.v % 2);\n\n // Compute _vs from recoveryParam and s\n if (result.recoveryParam) { bytes[32] |= 0x80; }\n result._vs = hexlify(bytes.slice(32, 64))\n\n } else {\n result.r = signature.r;\n result.s = signature.s;\n result.v = signature.v;\n result.recoveryParam = signature.recoveryParam;\n result._vs = signature._vs;\n\n // If the _vs is available, use it to populate missing s, v and recoveryParam\n // and verify non-missing s, v and recoveryParam\n if (result._vs != null) {\n const vs = zeroPad(arrayify(result._vs), 32);\n result._vs = hexlify(vs);\n\n // Set or check the recid\n const recoveryParam = ((vs[0] >= 128) ? 1: 0);\n if (result.recoveryParam == null) {\n result.recoveryParam = recoveryParam;\n } else if (result.recoveryParam !== recoveryParam) {\n logger.throwArgumentError(\"signature recoveryParam mismatch _vs\", \"signature\", signature);\n }\n\n // Set or check the s\n vs[0] &= 0x7f;\n const s = hexlify(vs);\n if (result.s == null) {\n result.s = s;\n } else if (result.s !== s) {\n logger.throwArgumentError(\"signature v mismatch _vs\", \"signature\", signature);\n }\n }\n\n // Use recid and v to populate each other\n if (result.recoveryParam == null) {\n if (result.v == null) {\n logger.throwArgumentError(\"signature missing v and recoveryParam\", \"signature\", signature);\n } else if (result.v === 0 || result.v === 1) {\n result.recoveryParam = result.v;\n } else {\n result.recoveryParam = 1 - (result.v % 2);\n }\n } else {\n if (result.v == null) {\n result.v = 27 + result.recoveryParam;\n } else {\n const recId = (result.v === 0 || result.v === 1) ? result.v :(1 - (result.v % 2));\n if (result.recoveryParam !== recId) {\n logger.throwArgumentError(\"signature recoveryParam mismatch v\", \"signature\", signature);\n }\n }\n }\n\n if (result.r == null || !isHexString(result.r)) {\n logger.throwArgumentError(\"signature missing or invalid r\", \"signature\", signature);\n } else {\n result.r = hexZeroPad(result.r, 32);\n }\n\n if (result.s == null || !isHexString(result.s)) {\n logger.throwArgumentError(\"signature missing or invalid s\", \"signature\", signature);\n } else {\n result.s = hexZeroPad(result.s, 32);\n }\n\n const vs = arrayify(result.s);\n if (vs[0] >= 128) {\n logger.throwArgumentError(\"signature s out of range\", \"signature\", signature);\n }\n if (result.recoveryParam) { vs[0] |= 0x80; }\n const _vs = hexlify(vs);\n\n if (result._vs) {\n if (!isHexString(result._vs)) {\n logger.throwArgumentError(\"signature invalid _vs\", \"signature\", signature);\n }\n result._vs = hexZeroPad(result._vs, 32);\n }\n\n // Set or check the _vs\n if (result._vs == null) {\n result._vs = _vs;\n } else if (result._vs !== _vs) {\n logger.throwArgumentError(\"signature _vs mismatch v and s\", \"signature\", signature);\n }\n }\n\n result.yParityAndS = result._vs;\n result.compact = result.r + result.yParityAndS.substring(2);\n\n return result;\n}\n\nexport function joinSignature(signature: SignatureLike): string {\n signature = splitSignature(signature);\n\n return hexlify(concat([\n signature.r,\n signature.s,\n (signature.recoveryParam ? \"0x1c\": \"0x1b\")\n ]));\n}\n\n","export const version = \"bignumber/5.8.0\";\n","\"use strict\";\n\n/**\n * BigNumber\n *\n * A wrapper around the BN.js object. We use the BN.js library\n * because it is used by elliptic, so it is required regardless.\n *\n */\n\nimport _BN from \"bn.js\";\nimport BN = _BN.BN;\n\nimport { Bytes, Hexable, hexlify, isBytes, isHexString } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nconst _constructorGuard = { };\n\nconst MAX_SAFE = 0x1fffffffffffff;\n\n\nexport type BigNumberish = BigNumber | Bytes | bigint | string | number;\n\nexport function isBigNumberish(value: any): value is BigNumberish {\n return (value != null) && (\n BigNumber.isBigNumber(value) ||\n (typeof(value) === \"number\" && (value % 1) === 0) ||\n (typeof(value) === \"string\" && !!value.match(/^-?[0-9]+$/)) ||\n isHexString(value) ||\n (typeof(value) === \"bigint\") ||\n isBytes(value)\n );\n}\n\n// Only warn about passing 10 into radix once\nlet _warnedToStringRadix = false;\n\nexport class BigNumber implements Hexable {\n readonly _hex: string;\n readonly _isBigNumber: boolean;\n\n constructor(constructorGuard: any, hex: string) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot call constructor directly; use BigNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new (BigNumber)\"\n });\n }\n\n this._hex = hex;\n this._isBigNumber = true;\n\n Object.freeze(this);\n }\n\n fromTwos(value: number): BigNumber {\n return toBigNumber(toBN(this).fromTwos(value));\n }\n\n toTwos(value: number): BigNumber {\n return toBigNumber(toBN(this).toTwos(value));\n }\n\n abs(): BigNumber {\n if (this._hex[0] === \"-\") {\n return BigNumber.from(this._hex.substring(1));\n }\n return this;\n }\n\n add(other: BigNumberish): BigNumber {\n return toBigNumber(toBN(this).add(toBN(other)));\n }\n\n sub(other: BigNumberish): BigNumber {\n return toBigNumber(toBN(this).sub(toBN(other)));\n }\n\n div(other: BigNumberish): BigNumber {\n const o = BigNumber.from(other);\n if (o.isZero()) {\n throwFault(\"division-by-zero\", \"div\");\n }\n return toBigNumber(toBN(this).div(toBN(other)));\n }\n\n mul(other: BigNumberish): BigNumber {\n return toBigNumber(toBN(this).mul(toBN(other)));\n }\n\n mod(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"division-by-zero\", \"mod\");\n }\n return toBigNumber(toBN(this).umod(value));\n }\n\n pow(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"negative-power\", \"pow\");\n }\n return toBigNumber(toBN(this).pow(value));\n }\n\n and(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"and\");\n }\n return toBigNumber(toBN(this).and(value));\n }\n\n or(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"or\");\n }\n return toBigNumber(toBN(this).or(value));\n }\n\n xor(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"xor\");\n }\n return toBigNumber(toBN(this).xor(value));\n }\n\n mask(value: number): BigNumber {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"mask\");\n }\n return toBigNumber(toBN(this).maskn(value));\n }\n\n shl(value: number): BigNumber {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shl\");\n }\n return toBigNumber(toBN(this).shln(value));\n }\n\n shr(value: number): BigNumber {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shr\");\n }\n return toBigNumber(toBN(this).shrn(value));\n }\n\n eq(other: BigNumberish): boolean {\n return toBN(this).eq(toBN(other));\n }\n\n lt(other: BigNumberish): boolean {\n return toBN(this).lt(toBN(other));\n }\n\n lte(other: BigNumberish): boolean {\n return toBN(this).lte(toBN(other));\n }\n\n gt(other: BigNumberish): boolean {\n return toBN(this).gt(toBN(other));\n }\n\n gte(other: BigNumberish): boolean {\n return toBN(this).gte(toBN(other));\n }\n\n isNegative(): boolean {\n return (this._hex[0] === \"-\");\n }\n\n isZero(): boolean {\n return toBN(this).isZero();\n }\n\n toNumber(): number {\n try {\n return toBN(this).toNumber();\n } catch (error) {\n throwFault(\"overflow\", \"toNumber\", this.toString());\n }\n return null;\n }\n\n toBigInt(): bigint {\n try {\n return BigInt(this.toString());\n } catch (e) { }\n\n return logger.throwError(\"this platform does not support BigInt\", Logger.errors.UNSUPPORTED_OPERATION, {\n value: this.toString()\n });\n }\n\n toString(): string {\n // Lots of people expect this, which we do not support, so check (See: #889)\n if (arguments.length > 0) {\n if (arguments[0] === 10) {\n if (!_warnedToStringRadix) {\n _warnedToStringRadix = true;\n logger.warn(\"BigNumber.toString does not accept any parameters; base-10 is assumed\");\n }\n } else if (arguments[0] === 16) {\n logger.throwError(\"BigNumber.toString does not accept any parameters; use bigNumber.toHexString()\", Logger.errors.UNEXPECTED_ARGUMENT, { });\n } else {\n logger.throwError(\"BigNumber.toString does not accept parameters\", Logger.errors.UNEXPECTED_ARGUMENT, { });\n }\n }\n return toBN(this).toString(10);\n }\n\n toHexString(): string {\n return this._hex;\n }\n\n toJSON(key?: string): any {\n return { type: \"BigNumber\", hex: this.toHexString() };\n }\n\n static from(value: any): BigNumber {\n if (value instanceof BigNumber) { return value; }\n\n if (typeof(value) === \"string\") {\n if (value.match(/^-?0x[0-9a-f]+$/i)) {\n return new BigNumber(_constructorGuard, toHex(value));\n }\n\n if (value.match(/^-?[0-9]+$/)) {\n return new BigNumber(_constructorGuard, toHex(new BN(value)));\n }\n\n return logger.throwArgumentError(\"invalid BigNumber string\", \"value\", value);\n }\n\n if (typeof(value) === \"number\") {\n if (value % 1) {\n throwFault(\"underflow\", \"BigNumber.from\", value);\n }\n\n if (value >= MAX_SAFE || value <= -MAX_SAFE) {\n throwFault(\"overflow\", \"BigNumber.from\", value);\n }\n\n return BigNumber.from(String(value));\n }\n\n const anyValue = <any>value;\n\n if (typeof(anyValue) === \"bigint\") {\n return BigNumber.from(anyValue.toString());\n }\n\n if (isBytes(anyValue)) {\n return BigNumber.from(hexlify(anyValue));\n }\n\n if (anyValue) {\n\n // Hexable interface (takes priority)\n if (anyValue.toHexString) {\n const hex = anyValue.toHexString();\n if (typeof(hex) === \"string\") {\n return BigNumber.from(hex);\n }\n\n } else {\n // For now, handle legacy JSON-ified values (goes away in v6)\n let hex = anyValue._hex;\n\n // New-form JSON\n if (hex == null && anyValue.type === \"BigNumber\") {\n hex = anyValue.hex;\n }\n\n if (typeof(hex) === \"string\") {\n if (isHexString(hex) || (hex[0] === \"-\" && isHexString(hex.substring(1)))) {\n return BigNumber.from(hex);\n }\n }\n }\n }\n\n return logger.throwArgumentError(\"invalid BigNumber value\", \"value\", value);\n }\n\n static isBigNumber(value: any): value is BigNumber {\n return !!(value && value._isBigNumber);\n }\n}\n\n// Normalize the hex string\nfunction toHex(value: string | BN): string {\n\n // For BN, call on the hex string\n if (typeof(value) !== \"string\") {\n return toHex(value.toString(16));\n }\n\n // If negative, prepend the negative sign to the normalized positive value\n if (value[0] === \"-\") {\n // Strip off the negative sign\n value = value.substring(1);\n\n // Cannot have multiple negative signs (e.g. \"--0x04\")\n if (value[0] === \"-\") { logger.throwArgumentError(\"invalid hex\", \"value\", value); }\n\n // Call toHex on the positive component\n value = toHex(value);\n\n // Do not allow \"-0x00\"\n if (value === \"0x00\") { return value; }\n\n // Negate the value\n return \"-\" + value;\n }\n\n // Add a \"0x\" prefix if missing\n if (value.substring(0, 2) !== \"0x\") { value = \"0x\" + value; }\n\n // Normalize zero\n if (value === \"0x\") { return \"0x00\"; }\n\n // Make the string even length\n if (value.length % 2) { value = \"0x0\" + value.substring(2); }\n\n // Trim to smallest even-length string\n while (value.length > 4 && value.substring(0, 4) === \"0x00\") {\n value = \"0x\" + value.substring(4);\n }\n\n return value;\n}\n\nfunction toBigNumber(value: BN): BigNumber {\n return BigNumber.from(toHex(value));\n}\n\nfunction toBN(value: BigNumberish): BN {\n const hex = BigNumber.from(value).toHexString();\n if (hex[0] === \"-\") {\n return (new BN(\"-\" + hex.substring(3), 16));\n }\n return new BN(hex.substring(2), 16);\n}\n\nfunction throwFault(fault: string, operation: string, value?: any): never {\n const params: any = { fault: fault, operation: operation };\n if (value != null) { params.value = value; }\n\n return logger.throwError(fault, Logger.errors.NUMERIC_FAULT, params);\n}\n\n// value should have no prefix\nexport function _base36To16(value: string): string {\n return (new BN(value, 36)).toString(16);\n}\n\n// value should have no prefix\nexport function _base16To36(value: string): string {\n return (new BN(value, 16)).toString(36);\n}\n","\"use strict\";\n\nimport { arrayify, BytesLike, hexZeroPad, isBytes } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { BigNumber, BigNumberish, isBigNumberish } from \"./bignumber\";\n\nconst _constructorGuard = { };\n\nconst Zero = BigNumber.from(0);\nconst NegativeOne = BigNumber.from(-1);\n\nfunction throwFault(message: string, fault: string, operation: string, value?: any): never {\n const params: any = { fault: fault, operation: operation };\n if (value !== undefined) { params.value = value; }\n return logger.throwError(message, Logger.errors.NUMERIC_FAULT, params);\n}\n\n// Constant to pull zeros from for multipliers\nlet zeros = \"0\";\nwhile (zeros.length < 256) { zeros += zeros; }\n\n// Returns a string \"1\" followed by decimal \"0\"s\nfunction getMultiplier(decimals: BigNumberish): string {\n\n if (typeof(decimals) !== \"number\") {\n try {\n decimals = BigNumber.from(decimals).toNumber();\n } catch (e) { }\n }\n\n if (typeof(decimals) === \"number\" && decimals >= 0 && decimals <= 256 && !(decimals % 1)) {\n return (\"1\" + zeros.substring(0, decimals));\n }\n\n return logger.throwArgumentError(\"invalid decimal size\", \"decimals\", decimals);\n}\n\nexport function formatFixed(value: BigNumberish, decimals?: string | BigNumberish): string {\n if (decimals == null) { decimals = 0; }\n const multiplier = getMultiplier(decimals);\n\n // Make sure wei is a big number (convert as necessary)\n value = BigNumber.from(value);\n\n const negative = value.lt(Zero);\n if (negative) { value = value.mul(NegativeOne); }\n\n let fraction = value.mod(multiplier).toString();\n while (fraction.length < multiplier.length - 1) { fraction = \"0\" + fraction; }\n\n // Strip training 0\n fraction = fraction.match(/^([0-9]*[1-9]|0)(0*)/)[1];\n\n const whole = value.div(multiplier).toString();\n if (multiplier.length === 1) {\n value = whole;\n } else {\n value = whole + \".\" + fraction;\n }\n\n if (negative) { value = \"-\" + value; }\n\n return value;\n}\n\nexport function parseFixed(value: string, decimals?: BigNumberish): BigNumber {\n\n if (decimals == null) { decimals = 0; }\n const multiplier = getMultiplier(decimals);\n\n if (typeof(value) !== \"string\" || !value.match(/^-?[0-9.]+$/)) {\n logger.throwArgumentError(\"invalid decimal value\", \"value\", value);\n }\n\n // Is it negative?\n const negative = (value.substring(0, 1) === \"-\");\n if (negative) { value = value.substring(1); }\n\n if (value === \".\") {\n logger.throwArgumentError(\"missing value\", \"value\", value);\n }\n\n // Split it into a whole and fractional part\n const comps = value.split(\".\");\n if (comps.length > 2) {\n logger.throwArgumentError(\"too many decimal points\", \"value\", value);\n }\n\n let whole = comps[0], fraction = comps[1];\n if (!whole) { whole = \"0\"; }\n if (!fraction) { fraction = \"0\"; }\n\n // Trim trailing zeros\n while (fraction[fraction.length - 1] === \"0\") {\n fraction = fraction.substring(0, fraction.length - 1);\n }\n\n // Check the fraction doesn't exceed our decimals size\n if (fraction.length > multiplier.length - 1) {\n throwFault(\"fractional component exceeds decimals\", \"underflow\", \"parseFixed\");\n }\n\n // If decimals is 0, we have an empty string for fraction\n if (fraction === \"\") { fraction = \"0\"; }\n\n // Fully pad the string with zeros to get to wei\n while (fraction.length < multiplier.length - 1) { fraction += \"0\"; }\n\n const wholeValue = BigNumber.from(whole);\n const fractionValue = BigNumber.from(fraction);\n\n let wei = (wholeValue.mul(multiplier)).add(fractionValue);\n\n if (negative) { wei = wei.mul(NegativeOne); }\n\n return wei;\n}\n\n\nexport class FixedFormat {\n readonly signed: boolean;\n readonly width: number;\n readonly decimals: number;\n readonly name: string;\n readonly _multiplier: string;\n\n constructor(constructorGuard: any, signed: boolean, width: number, decimals: number) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedFormat constructor; use FixedFormat.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n\n this.signed = signed;\n this.width = width;\n this.decimals = decimals;\n\n this.name = (signed ? \"\": \"u\") + \"fixed\" + String(width) + \"x\" + String(decimals);\n\n this._multiplier = getMultiplier(decimals);\n\n Object.freeze(this);\n }\n\n static from(value: any): FixedFormat {\n if (value instanceof FixedFormat) { return value; }\n\n if (typeof(value) === \"number\") {\n value = `fixed128x${value}`\n }\n\n let signed = true;\n let width = 128;\n let decimals = 18;\n\n if (typeof(value) === \"string\") {\n if (value === \"fixed\") {\n // defaults...\n } else if (value === \"ufixed\") {\n signed = false;\n } else {\n const match = value.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);\n if (!match) { logger.throwArgumentError(\"invalid fixed format\", \"format\", value); }\n signed = (match[1] !== \"u\");\n width = parseInt(match[2]);\n decimals = parseInt(match[3]);\n }\n } else if (value) {\n const check = (key: string, type: string, defaultValue: any): any => {\n if (value[key] == null) { return defaultValue; }\n if (typeof(value[key]) !== type) {\n logger.throwArgumentError(\"invalid fixed format (\" + key + \" not \" + type +\")\", \"format.\" + key, value[key]);\n }\n return value[key];\n }\n signed = check(\"signed\", \"boolean\", signed);\n width = check(\"width\", \"number\", width);\n decimals = check(\"decimals\", \"number\", decimals);\n }\n\n if (width % 8) {\n logger.throwArgumentError(\"invalid fixed format width (not byte aligned)\", \"format.width\", width);\n }\n\n if (decimals > 80) {\n logger.throwArgumentError(\"invalid fixed format (decimals too large)\", \"format.decimals\", decimals);\n }\n\n return new FixedFormat(_constructorGuard, signed, width, decimals);\n }\n}\n\nexport class FixedNumber {\n readonly format: FixedFormat;\n readonly _hex: string;\n readonly _value: string;\n\n readonly _isFixedNumber: boolean;\n\n constructor(constructorGuard: any, hex: string, value: string, format?: FixedFormat) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedNumber constructor; use FixedNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new FixedFormat\"\n });\n }\n\n this.format = format;\n this._hex = hex;\n this._value = value;\n\n this._isFixedNumber = true;\n\n Object.freeze(this);\n }\n\n _checkFormat(other: FixedNumber): void {\n if (this.format.name !== other.format.name) {\n logger.throwArgumentError(\"incompatible format; use fixedNumber.toFormat\", \"other\", other);\n }\n }\n\n addUnsafe(other: FixedNumber): FixedNumber {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.add(b), this.format.decimals, this.format);\n }\n\n subUnsafe(other: FixedNumber): FixedNumber {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.sub(b), this.format.decimals, this.format);\n }\n\n mulUnsafe(other: FixedNumber): FixedNumber {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(b).div(this.format._multiplier), this.format.decimals, this.format);\n }\n\n divUnsafe(other: FixedNumber): FixedNumber {\n this._checkFormat(other);\n const a = parseFixed(this._value, this.format.decimals);\n const b = parseFixed(other._value, other.format.decimals);\n return FixedNumber.fromValue(a.mul(this.format._multiplier).div(b), this.format.decimals, this.format);\n }\n\n floor(): FixedNumber {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) { comps.push(\"0\"); }\n\n let result = FixedNumber.from(comps[0], this.format);\n\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (this.isNegative() && hasFraction) {\n result = result.subUnsafe(ONE.toFormat(result.format));\n }\n\n return result;\n }\n\n ceiling(): FixedNumber {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) { comps.push(\"0\"); }\n\n let result = FixedNumber.from(comps[0], this.format);\n\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (!this.isNegative() && hasFraction) {\n result = result.addUnsafe(ONE.toFormat(result.format));\n }\n\n return result;\n }\n\n // @TODO: Support other rounding algorithms\n round(decimals?: number): FixedNumber {\n if (decimals == null) { decimals = 0; }\n\n // If we are already in range, we're done\n const comps = this.toString().split(\".\");\n if (comps.length === 1) { comps.push(\"0\"); }\n\n if (decimals < 0 || decimals > 80 || (decimals % 1)) {\n logger.throwArgumentError(\"invalid decimal count\", \"decimals\", decimals);\n }\n\n if (comps[1].length <= decimals) { return this; }\n\n const factor = FixedNumber.from(\"1\" + zeros.substring(0, decimals), this.format);\n const bump = BUMP.toFormat(this.format);\n\n return this.mulUnsafe(factor).addUnsafe(bump).floor().divUnsafe(factor);\n }\n\n isZero(): boolean {\n return (this._value === \"0.0\" || this._value === \"0\");\n }\n\n isNegative(): boolean {\n return (this._value[0] === \"-\");\n }\n\n toString(): string { return this._value; }\n\n toHexString(width?: number): string {\n if (width == null) { return this._hex; }\n if (width % 8) { logger.throwArgumentError(\"invalid byte width\", \"width\", width); }\n const hex = BigNumber.from(this._hex).fromTwos(this.format.width).toTwos(width).toHexString();\n return hexZeroPad(hex, width / 8);\n }\n\n toUnsafeFloat(): number { return parseFloat(this.toString()); }\n\n toFormat(format: FixedFormat | string): FixedNumber {\n return FixedNumber.fromString(this._value, format);\n }\n\n\n static fromValue(value: BigNumber, decimals?: BigNumberish, format?: FixedFormat | string | number): FixedNumber {\n // If decimals looks more like a format, and there is no format, shift the parameters\n if (format == null && decimals != null && !isBigNumberish(decimals)) {\n format = decimals;\n decimals = null;\n }\n\n if (decimals == null) { decimals = 0; }\n if (format == null) { format = \"fixed\"; }\n\n return FixedNumber.fromString(formatFixed(value, decimals), FixedFormat.from(format));\n }\n\n\n static fromString(value: string, format?: FixedFormat | string | number): FixedNumber {\n if (format == null) { format = \"fixed\"; }\n\n const fixedFormat = FixedFormat.from(format);\n\n const numeric = parseFixed(value, fixedFormat.decimals);\n\n if (!fixedFormat.signed && numeric.lt(Zero)) {\n throwFault(\"unsigned value cannot be negative\", \"overflow\", \"value\", value);\n }\n\n let hex: string = null;\n if (fixedFormat.signed) {\n hex = numeric.toTwos(fixedFormat.width).toHexString();\n } else {\n hex = numeric.toHexString();\n hex = hexZeroPad(hex, fixedFormat.width / 8);\n }\n\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n\n static fromBytes(value: BytesLike, format?: FixedFormat | string | number): FixedNumber {\n if (format == null) { format = \"fixed\"; }\n\n const fixedFormat = FixedFormat.from(format);\n\n if (arrayify(value).length > fixedFormat.width / 8) {\n throw new Error(\"overflow\");\n }\n\n let numeric = BigNumber.from(value);\n if (fixedFormat.signed) { numeric = numeric.fromTwos(fixedFormat.width); }\n\n const hex = numeric.toTwos((fixedFormat.signed ? 0: 1) + fixedFormat.width).toHexString();\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n\n static from(value: any, format?: FixedFormat | string | number) {\n if (typeof(value) === \"string\") {\n return FixedNumber.fromString(value, format);\n }\n\n if (isBytes(value)) {\n return FixedNumber.fromBytes(value, format);\n }\n\n try {\n return FixedNumber.fromValue(value, 0, format);\n } catch (error) {\n // Allow NUMERIC_FAULT to bubble up\n if (error.code !== Logger.errors.INVALID_ARGUMENT) {\n throw error;\n }\n }\n\n return logger.throwArgumentError(\"invalid FixedNumber value\", \"value\", value);\n }\n\n static isFixedNumber(value: any): value is FixedNumber {\n return !!(value && value._isFixedNumber);\n }\n}\n\nconst ONE = FixedNumber.from(1);\nconst BUMP = FixedNumber.from(\"0.5\");\n","export { BigNumber, BigNumberish } from \"./bignumber\";\nexport { formatFixed, FixedFormat, FixedNumber, parseFixed } from \"./fixednumber\";\n\n// Internal methods used by address\nexport { _base16To36, _base36To16 } from \"./bignumber\";\n","export const version = \"properties/5.8.0\";\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport function defineReadOnly<T, K extends keyof T>(object: T, name: K, value: T[K]): void {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n\n// Crawl up the constructor chain to find a static method\nexport function getStatic<T>(ctor: any, key: string): T {\n for (let i = 0; i < 32; i++) {\n if (ctor[key]) { return ctor[key]; }\n if (!ctor.prototype || typeof(ctor.prototype) !== \"object\") { break; }\n ctor = Object.getPrototypeOf(ctor.prototype).constructor;\n }\n return null;\n}\n\nexport type Deferrable<T> = {\n [ K in keyof T ]: T[K] | Promise<T[K]>;\n}\n\n\ntype Result = { key: string, value: any};\n\nexport async function resolveProperties<T>(object: Readonly<Deferrable<T>>): Promise<T> {\n const promises: Array<Promise<Result>> = Object.keys(object).map((key) => {\n const value = object[<keyof Deferrable<T>>key];\n return Promise.resolve(value).then((v) => ({ key: key, value: v }));\n });\n\n const results = await Promise.all(promises);\n\n return results.reduce((accum, result) => {\n accum[<keyof T>(result.key)] = result.value;\n return accum;\n }, <T>{ });\n}\n\nexport function checkProperties(object: any, properties: { [ name: string ]: boolean }): void {\n if (!object || typeof(object) !== \"object\") {\n logger.throwArgumentError(\"invalid object\", \"object\", object);\n }\n\n Object.keys(object).forEach((key) => {\n if (!properties[key]) {\n logger.throwArgumentError(\"invalid object key - \" + key, \"transaction:\" + key, object);\n }\n });\n}\n\nexport function shallowCopy<T>(object: T): T {\n const result: any = {};\n for (const key in object) { result[key] = object[key]; }\n return result;\n}\n\nconst opaque: { [key: string]: boolean } = { bigint: true, boolean: true, \"function\": true, number: true, string: true };\n\nfunction _isFrozen(object: any): boolean {\n\n // Opaque objects are not mutable, so safe to copy by assignment\n if (object === undefined || object === null || opaque[typeof(object)]) { return true; }\n\n if (Array.isArray(object) || typeof(object) === \"object\") {\n if (!Object.isFrozen(object)) { return false; }\n\n const keys = Object.keys(object);\n for (let i = 0; i < keys.length; i++) {\n let value: any = null;\n try {\n value = object[keys[i]];\n } catch (error) {\n // If accessing a value triggers an error, it is a getter\n // designed to do so (e.g. Result) and is therefore \"frozen\"\n continue;\n }\n\n if (!_isFrozen(value)) { return false; }\n }\n\n return true;\n }\n\n return logger.throwArgumentError(`Cannot deepCopy ${ typeof(object) }`, \"object\", object);\n}\n\n// Returns a new copy of object, such that no properties may be replaced.\n// New properties may be added only to objects.\nfunction _deepCopy(object: any): any {\n\n if (_isFrozen(object)) { return object; }\n\n // Arrays are mutable, so we need to create a copy\n if (Array.isArray(object)) {\n return Object.freeze(object.map((item) => deepCopy(item)));\n }\n\n if (typeof(object) === \"object\") {\n const result: { [ key: string ]: any } = {};\n for (const key in object) {\n const value = object[key];\n if (value === undefined) { continue; }\n defineReadOnly(result, key, deepCopy(value));\n }\n\n return result;\n }\n\n return logger.throwArgumentError(`Cannot deepCopy ${ typeof(object) }`, \"object\", object);\n}\n\nexport function deepCopy<T>(object: T): T {\n return _deepCopy(object);\n}\n\nexport class Description<T = any> {\n constructor(info: { [ K in keyof T ]: T[K] }) {\n for (const key in info) {\n (<any>this)[key] = deepCopy(info[key]);\n }\n }\n}\n","export const version = \"abi/5.8.0\";\n","\"use strict\";\n\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport interface JsonFragmentType {\n readonly name?: string;\n readonly indexed?: boolean;\n readonly type?: string;\n readonly internalType?: any; // @TODO: in v6 reduce type\n readonly components?: ReadonlyArray<JsonFragmentType>;\n}\n\nexport interface JsonFragment {\n readonly name?: string;\n readonly type?: string;\n\n readonly anonymous?: boolean;\n\n readonly payable?: boolean;\n readonly constant?: boolean;\n readonly stateMutability?: string;\n\n readonly inputs?: ReadonlyArray<JsonFragmentType>;\n readonly outputs?: ReadonlyArray<JsonFragmentType>;\n\n readonly gas?: string;\n};\n\nconst _constructorGuard = { };\n\n// AST Node parser state\ntype ParseState = {\n allowArray?: boolean,\n allowName?: boolean,\n allowParams?: boolean,\n allowType?: boolean,\n readArray?: boolean,\n};\n\n// AST Node\ntype ParseNode = {\n parent?: any,\n type?: string,\n name?: string,\n state?: ParseState,\n indexed?: boolean,\n components?: Array<ParseNode>\n};\n\nlet ModifiersBytes: { [ name: string ]: boolean } = { calldata: true, memory: true, storage: true };\nlet ModifiersNest: { [ name: string ]: boolean } = { calldata: true, memory: true };\nfunction checkModifier(type: string, name: string): boolean {\n if (type === \"bytes\" || type === \"string\") {\n if (ModifiersBytes[name]) { return true; }\n } else if (type === \"address\") {\n if (name === \"payable\") { return true; }\n } else if (type.indexOf(\"[\") >= 0 || type === \"tuple\") {\n if (ModifiersNest[name]) { return true; }\n }\n if (ModifiersBytes[name] || name === \"payable\") {\n logger.throwArgumentError(\"invalid modifier\", \"name\", name);\n }\n return false;\n}\n\n// @TODO: Make sure that children of an indexed tuple are marked with a null indexed\nfunction parseParamType(param: string, allowIndexed: boolean): ParseNode {\n\n let originalParam = param;\n function throwError(i: number) {\n logger.throwArgumentError(`unexpected character at position ${ i }`, \"param\", param);\n }\n param = param.replace(/\\s/g, \" \");\n\n function newNode(parent: ParseNode): ParseNode {\n let node: ParseNode = { type: \"\", name: \"\", parent: parent, state: { allowType: true } };\n if (allowIndexed) { node.indexed = false; }\n return node\n }\n\n let parent: ParseNode = { type: \"\", name: \"\", state: { allowType: true } };\n let node = parent;\n\n for (let i = 0; i < param.length; i++) {\n let c = param[i];\n switch (c) {\n case \"(\":\n if (node.state.allowType && node.type === \"\") {\n node.type = \"tuple\";\n } else if (!node.state.allowParams) {\n throwError(i);\n }\n node.state.allowType = false;\n node.type = verifyType(node.type);\n node.components = [ newNode(node) ];\n node = node.components[0];\n break;\n\n case \")\":\n delete node.state;\n\n if (node.name === \"indexed\") {\n if (!allowIndexed) { throwError(i); }\n node.indexed = true;\n node.name = \"\";\n }\n\n if (checkModifier(node.type, node.name)) { node.name = \"\"; }\n\n node.type = verifyType(node.type);\n\n let child = node;\n node = node.parent;\n if (!node) { throwError(i); }\n delete child.parent;\n node.state.allowParams = false;\n node.state.allowName = true;\n node.state.allowArray = true;\n break;\n\n case \",\":\n delete node.state;\n\n if (node.name === \"indexed\") {\n if (!allowIndexed) { throwError(i); }\n node.indexed = true;\n node.name = \"\";\n }\n\n if (checkModifier(node.type, node.name)) { node.name = \"\"; }\n\n node.type = verifyType(node.type);\n\n let sibling: ParseNode = newNode(node.parent);\n //{ type: \"\", name: \"\", parent: node.parent, state: { allowType: true } };\n node.parent.components.push(sibling);\n delete node.parent;\n node = sibling;\n break;\n\n // Hit a space...\n case \" \":\n\n // If reading type, the type is done and may read a param or name\n if (node.state.allowType) {\n if (node.type !== \"\") {\n node.type = verifyType(node.type);\n delete node.state.allowType;\n node.state.allowName = true;\n node.state.allowParams = true;\n }\n }\n\n // If reading name, the name is done\n if (node.state.allowName) {\n if (node.name !== \"\") {\n if (node.name === \"indexed\") {\n if (!allowIndexed) { throwError(i); }\n if (node.indexed) { throwError(i); }\n node.indexed = true;\n node.name = \"\";\n } else if (checkModifier(node.type, node.name)) {\n node.name = \"\";\n } else {\n node.state.allowName = false;\n }\n }\n }\n\n break;\n\n case \"[\":\n if (!node.state.allowArray) { throwError(i); }\n\n node.type += c;\n\n node.state.allowArray = false;\n node.state.allowName = false;\n node.state.readArray = true;\n break;\n\n case \"]\":\n if (!node.state.readArray) { throwError(i); }\n\n node.type += c;\n\n node.state.readArray = false;\n node.state.allowArray = true;\n node.state.allowName = true;\n break;\n\n default:\n if (node.state.allowType) {\n node.type += c;\n node.state.allowParams = true;\n node.state.allowArray = true;\n } else if (node.state.allowName) {\n node.name += c;\n delete node.state.allowArray;\n } else if (node.state.readArray) {\n node.type += c;\n } else {\n throwError(i);\n }\n }\n }\n\n if (node.parent) { logger.throwArgumentError(\"unexpected eof\", \"param\", param); }\n\n delete parent.state;\n\n if (node.name === \"indexed\") {\n if (!allowIndexed) { throwError(originalParam.length - 7); }\n if (node.indexed) { throwError(originalParam.length - 7); }\n node.indexed = true;\n node.name = \"\";\n } else if (checkModifier(node.type, node.name)) {\n node.name = \"\";\n }\n\n parent.type = verifyType(parent.type);\n\n return parent;\n}\n\nfunction populate(object: any, params: any) {\n for (let key in params) { defineReadOnly(object, key, params[key]); }\n}\n\nexport const FormatTypes: { [ name: string ]: string } = Object.freeze({\n // Bare formatting, as is needed for computing a sighash of an event or function\n sighash: \"sighash\",\n\n // Human-Readable with Minimal spacing and without names (compact human-readable)\n minimal: \"minimal\",\n\n // Human-Readable with nice spacing, including all names\n full: \"full\",\n\n // JSON-format a la Solidity\n json: \"json\"\n});\n\nconst paramTypeArray = new RegExp(/^(.*)\\[([0-9]*)\\]$/);\n\nexport class ParamType {\n\n // The local name of the parameter (of null if unbound)\n readonly name: string;\n\n // The fully qualified type (e.g. \"address\", \"tuple(address)\", \"uint256[3][]\"\n readonly type: string;\n\n // The base type (e.g. \"address\", \"tuple\", \"array\")\n readonly baseType: string;\n\n // Indexable Paramters ONLY (otherwise null)\n readonly indexed: boolean;\n\n // Tuples ONLY: (otherwise null)\n // - sub-components\n readonly components: Array<ParamType>;\n\n // Arrays ONLY: (otherwise null)\n // - length of the array (-1 for dynamic length)\n // - child type\n readonly arrayLength: number;\n readonly arrayChildren: ParamType;\n\n readonly _isParamType: boolean;\n\n constructor(constructorGuard: any, params: any) {\n if (constructorGuard !== _constructorGuard) { logger.throwError(\"use fromString\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new ParamType()\"\n }); }\n populate(this, params);\n\n let match = this.type.match(paramTypeArray);\n if (match) {\n populate(this, {\n arrayLength: parseInt(match[2] || \"-1\"),\n arrayChildren: ParamType.fromObject({\n type: match[1],\n components: this.components\n }),\n baseType: \"array\"\n });\n } else {\n populate(this, {\n arrayLength: null,\n arrayChildren: null,\n baseType: ((this.components != null) ? \"tuple\": this.type)\n });\n }\n\n this._isParamType = true;\n\n Object.freeze(this);\n }\n\n // Format the parameter fragment\n // - sighash: \"(uint256,address)\"\n // - minimal: \"tuple(uint256,address) indexed\"\n // - full: \"tuple(uint256 foo, address bar) indexed baz\"\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n let result: any = {\n type: ((this.baseType === \"tuple\") ? \"tuple\": this.type),\n name: (this.name || undefined)\n };\n if (typeof(this.indexed) === \"boolean\") { result.indexed = this.indexed; }\n if (this.components) {\n result.components = this.components.map((comp) => JSON.parse(comp.format(format)));\n }\n return JSON.stringify(result);\n }\n\n let result = \"\";\n\n // Array\n if (this.baseType === \"array\") {\n result += this.arrayChildren.format(format);\n result += \"[\" + (this.arrayLength < 0 ? \"\": String(this.arrayLength)) + \"]\";\n } else {\n if (this.baseType === \"tuple\") {\n if (format !== FormatTypes.sighash) {\n result += this.type;\n }\n result += \"(\" + this.components.map(\n (comp) => comp.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \")\";\n } else {\n result += this.type;\n }\n }\n\n if (format !== FormatTypes.sighash) {\n if (this.indexed === true) { result += \" indexed\"; }\n if (format === FormatTypes.full && this.name) {\n result += \" \" + this.name;\n }\n }\n\n return result;\n }\n\n static from(value: string | JsonFragmentType | ParamType, allowIndexed?: boolean): ParamType {\n if (typeof(value) === \"string\") {\n return ParamType.fromString(value, allowIndexed);\n }\n return ParamType.fromObject(value);\n }\n\n static fromObject(value: JsonFragmentType | ParamType): ParamType {\n if (ParamType.isParamType(value)) { return value; }\n\n return new ParamType(_constructorGuard, {\n name: (value.name || null),\n type: verifyType(value.type),\n indexed: ((value.indexed == null) ? null: !!value.indexed),\n components: (value.components ? value.components.map(ParamType.fromObject): null)\n });\n }\n\n static fromString(value: string, allowIndexed?: boolean): ParamType {\n function ParamTypify(node: ParseNode): ParamType {\n return ParamType.fromObject({\n name: node.name,\n type: node.type,\n indexed: node.indexed,\n components: node.components\n });\n }\n\n return ParamTypify(parseParamType(value, !!allowIndexed));\n }\n\n static isParamType(value: any): value is ParamType {\n return !!(value != null && value._isParamType);\n }\n};\n\nfunction parseParams(value: string, allowIndex: boolean): Array<ParamType> {\n return splitNesting(value).map((param) => ParamType.fromString(param, allowIndex));\n}\n\ntype TypeCheck<T> = { -readonly [ K in keyof T ]: T[K] };\n\ninterface _Fragment {\n readonly type: string;\n readonly name: string;\n readonly inputs: ReadonlyArray<ParamType>;\n}\n\nexport abstract class Fragment {\n\n readonly type: string;\n readonly name: string;\n readonly inputs: Array<ParamType>;\n\n readonly _isFragment: boolean;\n\n constructor(constructorGuard: any, params: any) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"use a static from method\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new Fragment()\"\n });\n }\n populate(this, params);\n\n this._isFragment = true;\n\n Object.freeze(this);\n }\n\n abstract format(format?: string): string;\n\n static from(value: Fragment | JsonFragment | string): Fragment {\n if (Fragment.isFragment(value)) { return value; }\n\n if (typeof(value) === \"string\") {\n return Fragment.fromString(value);\n }\n\n return Fragment.fromObject(value);\n }\n\n static fromObject(value: Fragment | JsonFragment): Fragment {\n if (Fragment.isFragment(value)) { return value; }\n\n switch (value.type) {\n case \"function\":\n return FunctionFragment.fromObject(value);\n case \"event\":\n return EventFragment.fromObject(value);\n case \"constructor\":\n return ConstructorFragment.fromObject(value);\n case \"error\":\n return ErrorFragment.fromObject(value);\n case \"fallback\":\n case \"receive\":\n // @TODO: Something? Maybe return a FunctionFragment? A custom DefaultFunctionFragment?\n return null;\n }\n\n return logger.throwArgumentError(\"invalid fragment object\", \"value\", value);\n }\n\n static fromString(value: string): Fragment {\n // Make sure the \"returns\" is surrounded by a space and all whitespace is exactly one space\n value = value.replace(/\\s/g, \" \");\n value = value.replace(/\\(/g, \" (\").replace(/\\)/g, \") \").replace(/\\s+/g, \" \");\n value = value.trim();\n\n if (value.split(\" \")[0] === \"event\") {\n return EventFragment.fromString(value.substring(5).trim());\n } else if (value.split(\" \")[0] === \"function\") {\n return FunctionFragment.fromString(value.substring(8).trim());\n } else if (value.split(\"(\")[0].trim() === \"constructor\") {\n return ConstructorFragment.fromString(value.trim());\n } else if (value.split(\" \")[0] === \"error\") {\n return ErrorFragment.fromString(value.substring(5).trim());\n }\n\n return logger.throwArgumentError(\"unsupported fragment\", \"value\", value);\n }\n\n static isFragment(value: any): value is Fragment {\n return !!(value && value._isFragment);\n }\n}\n\ninterface _EventFragment extends _Fragment {\n readonly anonymous: boolean;\n}\n\nexport class EventFragment extends Fragment {\n readonly anonymous: boolean;\n\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n return JSON.stringify({\n type: \"event\",\n anonymous: this.anonymous,\n name: this.name,\n inputs: this.inputs.map((input) => JSON.parse(input.format(format)))\n });\n }\n\n let result = \"\";\n\n if (format !== FormatTypes.sighash) {\n result += \"event \";\n }\n\n result += this.name + \"(\" + this.inputs.map(\n (input) => input.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \") \";\n\n if (format !== FormatTypes.sighash) {\n if (this.anonymous) {\n result += \"anonymous \";\n }\n }\n\n return result.trim();\n }\n\n static from(value: EventFragment | JsonFragment | string): EventFragment {\n if (typeof(value) === \"string\") {\n return EventFragment.fromString(value);\n }\n return EventFragment.fromObject(value);\n }\n\n static fromObject(value: JsonFragment | EventFragment): EventFragment {\n if (EventFragment.isEventFragment(value)) { return value; }\n\n if (value.type !== \"event\") {\n logger.throwArgumentError(\"invalid event object\", \"value\", value);\n }\n\n const params: TypeCheck<_EventFragment> = {\n name: verifyIdentifier(value.name),\n anonymous: value.anonymous,\n inputs: (value.inputs ? value.inputs.map(ParamType.fromObject) : []),\n type: \"event\"\n };\n\n return new EventFragment(_constructorGuard, params);\n }\n\n static fromString(value: string): EventFragment {\n\n let match = value.match(regexParen);\n if (!match) {\n logger.throwArgumentError(\"invalid event string\", \"value\", value);\n }\n\n let anonymous = false;\n match[3].split(\" \").forEach((modifier) => {\n switch(modifier.trim()) {\n case \"anonymous\":\n anonymous = true;\n break;\n case \"\":\n break;\n default:\n logger.warn(\"unknown modifier: \" + modifier);\n }\n });\n\n return EventFragment.fromObject({\n name: match[1].trim(),\n anonymous: anonymous,\n inputs: parseParams(match[2], true),\n type: \"event\"\n });\n }\n\n static isEventFragment(value: any): value is EventFragment {\n return (value && value._isFragment && value.type === \"event\");\n }\n}\n\nfunction parseGas(value: string, params: any): string {\n params.gas = null;\n\n let comps = value.split(\"@\");\n if (comps.length !== 1) {\n if (comps.length > 2) {\n logger.throwArgumentError(\"invalid human-readable ABI signature\", \"value\", value);\n }\n if (!comps[1].match(/^[0-9]+$/)) {\n logger.throwArgumentError(\"invalid human-readable ABI signature gas\", \"value\", value);\n }\n params.gas = BigNumber.from(comps[1]);\n return comps[0];\n }\n\n return value;\n}\n\nfunction parseModifiers(value: string, params: any): void {\n params.constant = false;\n params.payable = false;\n params.stateMutability = \"nonpayable\";\n\n value.split(\" \").forEach((modifier) => {\n switch (modifier.trim()) {\n case \"constant\":\n params.constant = true;\n break;\n case \"payable\":\n params.payable = true;\n params.stateMutability = \"payable\";\n break;\n case \"nonpayable\":\n params.payable = false;\n params.stateMutability = \"nonpayable\";\n break;\n case \"pure\":\n params.constant = true;\n params.stateMutability = \"pure\";\n break;\n case \"view\":\n params.constant = true;\n params.stateMutability = \"view\";\n break;\n case \"external\":\n case \"public\":\n case \"\":\n break;\n default:\n console.log(\"unknown modifier: \" + modifier);\n }\n });\n}\n\ntype StateInputValue = {\n constant?: boolean;\n payable?: boolean;\n stateMutability?: string;\n type?: string;\n};\n\ntype StateOutputValue = {\n constant: boolean;\n payable: boolean;\n stateMutability: string;\n};\n\nfunction verifyState(value: StateInputValue): StateOutputValue {\n let result: any = {\n constant: false,\n payable: true,\n stateMutability: \"payable\"\n };\n\n if (value.stateMutability != null) {\n result.stateMutability = value.stateMutability;\n\n // Set (and check things are consistent) the constant property\n result.constant = (result.stateMutability === \"view\" || result.stateMutability === \"pure\");\n if (value.constant != null) {\n if ((!!value.constant) !== result.constant) {\n logger.throwArgumentError(\"cannot have constant function with mutability \" + result.stateMutability, \"value\", value);\n }\n }\n\n // Set (and check things are consistent) the payable property\n result.payable = (result.stateMutability === \"payable\");\n if (value.payable != null) {\n if ((!!value.payable) !== result.payable) {\n logger.throwArgumentError(\"cannot have payable function with mutability \" + result.stateMutability, \"value\", value);\n }\n }\n\n } else if (value.payable != null) {\n result.payable = !!value.payable;\n\n // If payable we can assume non-constant; otherwise we can't assume\n if (value.constant == null && !result.payable && value.type !== \"constructor\") {\n logger.throwArgumentError(\"unable to determine stateMutability\", \"value\", value);\n }\n\n result.constant = !!value.constant;\n\n if (result.constant) {\n result.stateMutability = \"view\";\n } else {\n result.stateMutability = (result.payable ? \"payable\": \"nonpayable\");\n }\n\n if (result.payable && result.constant) {\n logger.throwArgumentError(\"cannot have constant payable function\", \"value\", value);\n }\n\n } else if (value.constant != null) {\n result.constant = !!value.constant;\n result.payable = !result.constant;\n result.stateMutability = (result.constant ? \"view\": \"payable\");\n\n } else if (value.type !== \"constructor\") {\n logger.throwArgumentError(\"unable to determine stateMutability\", \"value\", value);\n }\n\n return result;\n}\n\ninterface _ConstructorFragment extends _Fragment {\n stateMutability: string;\n payable: boolean;\n gas?: BigNumber;\n}\n\nexport class ConstructorFragment extends Fragment {\n stateMutability: string;\n payable: boolean;\n gas?: BigNumber;\n\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n return JSON.stringify({\n type: \"constructor\",\n stateMutability: ((this.stateMutability !== \"nonpayable\") ? this.stateMutability: undefined),\n payable: this.payable,\n gas: (this.gas ? this.gas.toNumber(): undefined),\n inputs: this.inputs.map((input) => JSON.parse(input.format(format)))\n });\n }\n\n if (format === FormatTypes.sighash) {\n logger.throwError(\"cannot format a constructor for sighash\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"format(sighash)\"\n });\n }\n\n let result = \"constructor(\" + this.inputs.map(\n (input) => input.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \") \";\n\n if (this.stateMutability && this.stateMutability !== \"nonpayable\") {\n result += this.stateMutability + \" \";\n }\n\n return result.trim();\n }\n\n static from(value: ConstructorFragment | JsonFragment | string): ConstructorFragment {\n if (typeof(value) === \"string\") {\n return ConstructorFragment.fromString(value);\n }\n return ConstructorFragment.fromObject(value);\n }\n\n static fromObject(value: ConstructorFragment | JsonFragment): ConstructorFragment {\n if (ConstructorFragment.isConstructorFragment(value)) { return value; }\n\n if (value.type !== \"constructor\") {\n logger.throwArgumentError(\"invalid constructor object\", \"value\", value);\n }\n\n let state = verifyState(value);\n if (state.constant) {\n logger.throwArgumentError(\"constructor cannot be constant\", \"value\", value);\n }\n\n const params: TypeCheck<_ConstructorFragment> = {\n name: null,\n type: value.type,\n inputs: (value.inputs ? value.inputs.map(ParamType.fromObject): []),\n payable: state.payable,\n stateMutability: state.stateMutability,\n gas: (value.gas ? BigNumber.from(value.gas): null)\n };\n\n return new ConstructorFragment(_constructorGuard, params);\n }\n\n static fromString(value: string): ConstructorFragment {\n let params: any = { type: \"constructor\" };\n\n value = parseGas(value, params);\n\n let parens = value.match(regexParen);\n if (!parens || parens[1].trim() !== \"constructor\") {\n logger.throwArgumentError(\"invalid constructor string\", \"value\", value);\n }\n\n params.inputs = parseParams(parens[2].trim(), false);\n\n parseModifiers(parens[3].trim(), params);\n\n return ConstructorFragment.fromObject(params);\n }\n\n static isConstructorFragment(value: any): value is ConstructorFragment {\n return (value && value._isFragment && value.type === \"constructor\");\n }\n}\n\ninterface _FunctionFragment extends _ConstructorFragment {\n constant: boolean;\n outputs?: Array<ParamType>;\n}\n\nexport class FunctionFragment extends ConstructorFragment {\n constant: boolean;\n outputs?: Array<ParamType>;\n\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n return JSON.stringify({\n type: \"function\",\n name: this.name,\n constant: this.constant,\n stateMutability: ((this.stateMutability !== \"nonpayable\") ? this.stateMutability: undefined),\n payable: this.payable,\n gas: (this.gas ? this.gas.toNumber(): undefined),\n inputs: this.inputs.map((input) => JSON.parse(input.format(format))),\n outputs: this.outputs.map((output) => JSON.parse(output.format(format))),\n });\n }\n\n let result = \"\";\n\n if (format !== FormatTypes.sighash) {\n result += \"function \";\n }\n\n result += this.name + \"(\" + this.inputs.map(\n (input) => input.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \") \";\n\n if (format !== FormatTypes.sighash) {\n if (this.stateMutability) {\n if (this.stateMutability !== \"nonpayable\") {\n result += (this.stateMutability + \" \");\n }\n } else if (this.constant) {\n result += \"view \";\n }\n\n if (this.outputs && this.outputs.length) {\n result += \"returns (\" + this.outputs.map(\n (output) => output.format(format)\n ).join(\", \") + \") \";\n }\n\n if (this.gas != null) {\n result += \"@\" + this.gas.toString() + \" \";\n }\n }\n\n return result.trim();\n }\n\n static from(value: FunctionFragment | JsonFragment | string): FunctionFragment {\n if (typeof(value) === \"string\") {\n return FunctionFragment.fromString(value);\n }\n return FunctionFragment.fromObject(value);\n }\n\n static fromObject(value: FunctionFragment | JsonFragment): FunctionFragment {\n if (FunctionFragment.isFunctionFragment(value)) { return value; }\n\n if (value.type !== \"function\") {\n logger.throwArgumentError(\"invalid function object\", \"value\", value);\n }\n\n let state = verifyState(value);\n\n const params: TypeCheck<_FunctionFragment> = {\n type: value.type,\n name: verifyIdentifier(value.name),\n constant: state.constant,\n inputs: (value.inputs ? value.inputs.map(ParamType.fromObject): []),\n outputs: (value.outputs ? value.outputs.map(ParamType.fromObject): [ ]),\n payable: state.payable,\n stateMutability: state.stateMutability,\n gas: (value.gas ? BigNumber.from(value.gas): null)\n };\n\n return new FunctionFragment(_constructorGuard, params);\n }\n\n static fromString(value: string): FunctionFragment {\n let params: any = { type: \"function\" };\n value = parseGas(value, params);\n\n let comps = value.split(\" returns \");\n if (comps.length > 2) {\n logger.throwArgumentError(\"invalid function string\", \"value\", value);\n }\n\n let parens = comps[0].match(regexParen);\n if (!parens) {\n logger.throwArgumentError(\"invalid function signature\", \"value\", value);\n }\n\n params.name = parens[1].trim();\n if (params.name) { verifyIdentifier(params.name); }\n\n params.inputs = parseParams(parens[2], false);\n\n parseModifiers(parens[3].trim(), params);\n\n // We have outputs\n if (comps.length > 1) {\n let returns = comps[1].match(regexParen);\n if (returns[1].trim() != \"\" || returns[3].trim() != \"\") {\n logger.throwArgumentError(\"unexpected tokens\", \"value\", value);\n }\n params.outputs = parseParams(returns[2], false);\n } else {\n params.outputs = [ ];\n }\n\n return FunctionFragment.fromObject(params);\n }\n\n static isFunctionFragment(value: any): value is FunctionFragment {\n return (value && value._isFragment && value.type === \"function\");\n }\n}\n\n//export class StructFragment extends Fragment {\n//}\n\nfunction checkForbidden(fragment: ErrorFragment): ErrorFragment {\n const sig = fragment.format();\n if (sig === \"Error(string)\" || sig === \"Panic(uint256)\") {\n logger.throwArgumentError(`cannot specify user defined ${ sig } error`, \"fragment\", fragment);\n }\n return fragment;\n}\n\nexport class ErrorFragment extends Fragment {\n\n format(format?: string): string {\n if (!format) { format = FormatTypes.sighash; }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n\n if (format === FormatTypes.json) {\n return JSON.stringify({\n type: \"error\",\n name: this.name,\n inputs: this.inputs.map((input) => JSON.parse(input.format(format))),\n });\n }\n\n let result = \"\";\n\n if (format !== FormatTypes.sighash) {\n result += \"error \";\n }\n\n result += this.name + \"(\" + this.inputs.map(\n (input) => input.format(format)\n ).join((format === FormatTypes.full) ? \", \": \",\") + \") \";\n\n return result.trim();\n }\n\n static from(value: ErrorFragment | JsonFragment | string): ErrorFragment {\n if (typeof(value) === \"string\") {\n return ErrorFragment.fromString(value);\n }\n return ErrorFragment.fromObject(value);\n }\n\n static fromObject(value: ErrorFragment | JsonFragment): ErrorFragment {\n if (ErrorFragment.isErrorFragment(value)) { return value; }\n\n if (value.type !== \"error\") {\n logger.throwArgumentError(\"invalid error object\", \"value\", value);\n }\n\n const params: TypeCheck<_Fragment> = {\n type: value.type,\n name: verifyIdentifier(value.name),\n inputs: (value.inputs ? value.inputs.map(ParamType.fromObject): [])\n };\n\n return checkForbidden(new ErrorFragment(_constructorGuard, params));\n }\n\n static fromString(value: string): ErrorFragment {\n let params: any = { type: \"error\" };\n\n let parens = value.match(regexParen);\n if (!parens) {\n logger.throwArgumentError(\"invalid error signature\", \"value\", value);\n }\n\n params.name = parens[1].trim();\n if (params.name) { verifyIdentifier(params.name); }\n\n params.inputs = parseParams(parens[2], false);\n\n return checkForbidden(ErrorFragment.fromObject(params));\n }\n\n static isErrorFragment(value: any): value is ErrorFragment {\n return (value && value._isFragment && value.type === \"error\");\n }\n}\n\nfunction verifyType(type: string): string {\n\n // These need to be transformed to their full description\n if (type.match(/^uint($|[^1-9])/)) {\n type = \"uint256\" + type.substring(4);\n } else if (type.match(/^int($|[^1-9])/)) {\n type = \"int256\" + type.substring(3);\n }\n\n // @TODO: more verification\n\n return type;\n}\n\n// See: https://github.com/ethereum/solidity/blob/1f8f1a3db93a548d0555e3e14cfc55a10e25b60e/docs/grammar/SolidityLexer.g4#L234\nconst regexIdentifier = new RegExp(\"^[a-zA-Z$_][a-zA-Z0-9$_]*$\");\nfunction verifyIdentifier(value: string): string {\n if (!value || !value.match(regexIdentifier)) {\n logger.throwArgumentError(`invalid identifier \"${ value }\"`, \"value\", value);\n }\n return value;\n}\n\nconst regexParen = new RegExp(\"^([^)(]*)\\\\((.*)\\\\)([^)(]*)$\");\n\nfunction splitNesting(value: string): Array<any> {\n value = value.trim();\n\n let result = [];\n let accum = \"\";\n let depth = 0;\n for (let offset = 0; offset < value.length; offset++) {\n let c = value[offset];\n if (c === \",\" && depth === 0) {\n result.push(accum);\n accum = \"\";\n } else {\n accum += c;\n if (c === \"(\") {\n depth++;\n } else if (c === \")\") {\n depth--;\n if (depth === -1) {\n logger.throwArgumentError(\"unbalanced parenthesis\", \"value\", value);\n }\n }\n }\n }\n if (accum) { result.push(accum); }\n\n return result;\n}\n\n","\"use strict\";\n\nimport { arrayify, BytesLike, concat, hexConcat, hexlify } from \"@ethersproject/bytes\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"../_version\";\nconst logger = new Logger(version);\n\nexport interface Result extends ReadonlyArray<any> {\n readonly [key: string]: any;\n}\n\nexport function checkResultErrors(result: Result): Array<{ path: Array<string | number>, error: Error }> {\n // Find the first error (if any)\n const errors: Array<{ path: Array<string | number>, error: Error }> = [ ];\n\n const checkErrors = function(path: Array<string | number>, object: any): void {\n if (!Array.isArray(object)) { return; }\n for (let key in object) {\n const childPath = path.slice();\n childPath.push(key);\n\n try {\n checkErrors(childPath, object[key]);\n } catch (error) {\n errors.push({ path: childPath, error: error });\n }\n }\n }\n checkErrors([ ], result);\n\n return errors;\n\n}\n\nexport type CoerceFunc = (type: string, value: any) => any;\n\nexport abstract class Coder {\n\n // The coder name:\n // - address, uint256, tuple, array, etc.\n readonly name: string;\n\n // The fully expanded type, including composite types:\n // - address, uint256, tuple(address,bytes), uint256[3][4][], etc.\n readonly type: string;\n\n // The localName bound in the signature, in this example it is \"baz\":\n // - tuple(address foo, uint bar) baz\n readonly localName: string;\n\n // Whether this type is dynamic:\n // - Dynamic: bytes, string, address[], tuple(boolean[]), etc.\n // - Not Dynamic: address, uint256, boolean[3], tuple(address, uint8)\n readonly dynamic: boolean;\n\n constructor(name: string, type: string, localName: string, dynamic: boolean) {\n // @TODO: defineReadOnly these\n this.name = name;\n this.type = type;\n this.localName = localName;\n this.dynamic = dynamic;\n }\n\n _throwError(message: string, value: any): void {\n logger.throwArgumentError(message, this.localName, value);\n }\n\n abstract encode(writer: Writer, value: any): number;\n abstract decode(reader: Reader): any;\n\n abstract defaultValue(): any;\n}\n\nexport class Writer {\n readonly wordSize: number;\n\n _data: Array<Uint8Array>;\n _dataLength: number;\n _padding: Uint8Array;\n\n constructor(wordSize?: number) {\n defineReadOnly(this, \"wordSize\", wordSize || 32);\n this._data = [ ];\n this._dataLength = 0;\n this._padding = new Uint8Array(wordSize);\n }\n\n get data(): string {\n return hexConcat(this._data);\n }\n get length(): number { return this._dataLength; }\n\n _writeData(data: Uint8Array): number {\n this._data.push(data);\n this._dataLength += data.length;\n return data.length;\n }\n\n appendWriter(writer: Writer): number {\n return this._writeData(concat(writer._data));\n }\n\n // Arrayish items; padded on the right to wordSize\n writeBytes(value: BytesLike): number {\n let bytes = arrayify(value);\n const paddingOffset = bytes.length % this.wordSize;\n if (paddingOffset) {\n bytes = concat([ bytes, this._padding.slice(paddingOffset) ])\n }\n return this._writeData(bytes);\n }\n\n _getValue(value: BigNumberish): Uint8Array {\n let bytes = arrayify(BigNumber.from(value));\n if (bytes.length > this.wordSize) {\n logger.throwError(\"value out-of-bounds\", Logger.errors.BUFFER_OVERRUN, {\n length: this.wordSize,\n offset: bytes.length\n });\n }\n if (bytes.length % this.wordSize) {\n bytes = concat([ this._padding.slice(bytes.length % this.wordSize), bytes ]);\n }\n return bytes;\n }\n\n // BigNumberish items; padded on the left to wordSize\n writeValue(value: BigNumberish): number {\n return this._writeData(this._getValue(value));\n }\n\n writeUpdatableValue(): (value: BigNumberish) => void {\n const offset = this._data.length;\n this._data.push(this._padding);\n this._dataLength += this.wordSize;\n return (value: BigNumberish) => {\n this._data[offset] = this._getValue(value);\n };\n }\n}\n\nexport class Reader {\n readonly wordSize: number;\n readonly allowLoose: boolean;\n\n readonly _data: Uint8Array;\n readonly _coerceFunc: CoerceFunc;\n\n _offset: number;\n\n constructor(data: BytesLike, wordSize?: number, coerceFunc?: CoerceFunc, allowLoose?: boolean) {\n defineReadOnly(this, \"_data\", arrayify(data));\n defineReadOnly(this, \"wordSize\", wordSize || 32);\n defineReadOnly(this, \"_coerceFunc\", coerceFunc);\n defineReadOnly(this, \"allowLoose\", allowLoose);\n\n this._offset = 0;\n }\n\n get data(): string { return hexlify(this._data); }\n get consumed(): number { return this._offset; }\n\n // The default Coerce function\n static coerce(name: string, value: any): any {\n let match = name.match(\"^u?int([0-9]+)$\");\n if (match && parseInt(match[1]) <= 48) { value = value.toNumber(); }\n return value;\n }\n\n coerce(name: string, value: any): any {\n if (this._coerceFunc) { return this._coerceFunc(name, value); }\n return Reader.coerce(name, value);\n }\n\n _peekBytes(offset: number, length: number, loose?: boolean): Uint8Array {\n let alignedLength = Math.ceil(length / this.wordSize) * this.wordSize;\n if (this._offset + alignedLength > this._data.length) {\n if (this.allowLoose && loose && this._offset + length <= this._data.length) {\n alignedLength = length;\n } else {\n logger.throwError(\"data out-of-bounds\", Logger.errors.BUFFER_OVERRUN, {\n length: this._data.length,\n offset: this._offset + alignedLength\n });\n }\n }\n return this._data.slice(this._offset, this._offset + alignedLength)\n }\n\n subReader(offset: number): Reader {\n return new Reader(this._data.slice(this._offset + offset), this.wordSize, this._coerceFunc, this.allowLoose);\n }\n\n readBytes(length: number, loose?: boolean): Uint8Array {\n let bytes = this._peekBytes(0, length, !!loose);\n this._offset += bytes.length;\n // @TODO: Make sure the length..end bytes are all 0?\n return bytes.slice(0, length);\n }\n\n readValue(): BigNumber {\n return BigNumber.from(this.readBytes(this.wordSize));\n }\n}\n","/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n","\"use strict\";\n\nimport sha3 from \"js-sha3\";\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\nexport function keccak256(data: BytesLike): string {\n return '0x' + sha3.keccak_256(arrayify(data));\n}\n","export const version = \"rlp/5.8.0\";\n","\"use strict\";\n\n//See: https://github.com/ethereum/wiki/wiki/RLP\n\nimport { arrayify, BytesLike, hexlify, isBytesLike } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nfunction arrayifyInteger(value: number): Array<number> {\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value >>= 8;\n }\n return result;\n}\n\nfunction unarrayifyInteger(data: Uint8Array, offset: number, length: number): number {\n let result = 0;\n for (let i = 0; i < length; i++) {\n result = (result * 256) + data[offset + i];\n }\n return result;\n}\n\nfunction _encode(object: Array<any> | string): Array<number> {\n if (Array.isArray(object)) {\n let payload: Array<number> = [];\n object.forEach(function(child) {\n payload = payload.concat(_encode(child));\n });\n\n if (payload.length <= 55) {\n payload.unshift(0xc0 + payload.length)\n return payload;\n }\n\n const length = arrayifyInteger(payload.length);\n length.unshift(0xf7 + length.length);\n\n return length.concat(payload);\n\n }\n\n if (!isBytesLike(object)) {\n logger.throwArgumentError(\"RLP object must be BytesLike\", \"object\", object);\n }\n\n const data: Array<number> = Array.prototype.slice.call(arrayify(object));\n\n if (data.length === 1 && data[0] <= 0x7f) {\n return data;\n\n } else if (data.length <= 55) {\n data.unshift(0x80 + data.length);\n return data;\n }\n\n const length = arrayifyInteger(data.length);\n length.unshift(0xb7 + length.length);\n\n return length.concat(data);\n}\n\nexport function encode(object: any): string {\n return hexlify(_encode(object));\n}\n\ntype Decoded = {\n result: any;\n consumed: number;\n};\n\nfunction _decodeChildren(data: Uint8Array, offset: number, childOffset: number, length: number): Decoded {\n const result = [];\n\n while (childOffset < offset + 1 + length) {\n const decoded = _decode(data, childOffset);\n\n result.push(decoded.result);\n\n childOffset += decoded.consumed;\n if (childOffset > offset + 1 + length) {\n logger.throwError(\"child data too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n }\n\n return {consumed: (1 + length), result: result};\n}\n\n// returns { consumed: number, result: Object }\nfunction _decode(data: Uint8Array, offset: number): { consumed: number, result: any } {\n if (data.length === 0) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n // Array with extra length prefix\n if (data[offset] >= 0xf8) {\n const lengthLength = data[offset] - 0xf7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data short segment too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data long segment too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n return _decodeChildren(data, offset, offset + 1 + lengthLength, lengthLength + length);\n\n } else if (data[offset] >= 0xc0) {\n const length = data[offset] - 0xc0;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n return _decodeChildren(data, offset, offset + 1, length);\n\n } else if (data[offset] >= 0xb8) {\n const lengthLength = data[offset] - 0xb7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const result = hexlify(data.slice(offset + 1 + lengthLength, offset + 1 + lengthLength + length));\n return { consumed: (1 + lengthLength + length), result: result }\n\n } else if (data[offset] >= 0x80) {\n const length = data[offset] - 0x80;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const result = hexlify(data.slice(offset + 1, offset + 1 + length));\n return { consumed: (1 + length), result: result }\n }\n return { consumed: 1, result: hexlify(data[offset]) };\n}\n\nexport function decode(data: BytesLike): any {\n const bytes = arrayify(data);\n const decoded = _decode(bytes, 0);\n if (decoded.consumed !== bytes.length) {\n logger.throwArgumentError(\"invalid rlp data\", \"data\", data);\n }\n return decoded.result;\n}\n\n","export const version = \"address/5.8.0\";\n","\"use strict\";\n\nimport { arrayify, BytesLike, concat, hexDataLength, hexDataSlice, isHexString, stripZeros } from \"@ethersproject/bytes\";\nimport { BigNumber, BigNumberish, _base16To36, _base36To16 } from \"@ethersproject/bignumber\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { encode } from \"@ethersproject/rlp\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nfunction getChecksumAddress(address: string): string {\n if (!isHexString(address, 20)) {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n\n address = address.toLowerCase();\n\n const chars = address.substring(2).split(\"\");\n\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n\n const hashed = arrayify(keccak256(expanded));\n\n for (let i = 0; i < 40; i += 2) {\n if ((hashed[i >> 1] >> 4) >= 8) {\n chars[i] = chars[i].toUpperCase();\n }\n if ((hashed[i >> 1] & 0x0f) >= 8) {\n chars[i + 1] = chars[i + 1].toUpperCase();\n }\n }\n\n return \"0x\" + chars.join(\"\");\n}\n\n// Shims for environments that are missing some required constants and functions\nconst MAX_SAFE_INTEGER: number = 0x1fffffffffffff;\n\nfunction log10(x: number): number {\n if (Math.log10) { return Math.log10(x); }\n return Math.log(x) / Math.LN10;\n}\n\n\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n\n// Create lookup table\nconst ibanLookup: { [character: string]: string } = { };\nfor (let i = 0; i < 10; i++) { ibanLookup[String(i)] = String(i); }\nfor (let i = 0; i < 26; i++) { ibanLookup[String.fromCharCode(65 + i)] = String(10 + i); }\n\n// How many decimal digits can we process? (for 64-bit float, this is 15)\nconst safeDigits = Math.floor(log10(MAX_SAFE_INTEGER));\n\nfunction ibanChecksum(address: string): string {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\n\n // Javascript can handle integers safely up to 15 (decimal) digits\n while (expanded.length >= safeDigits){\n let block = expanded.substring(0, safeDigits);\n expanded = parseInt(block, 10) % 97 + expanded.substring(block.length);\n }\n\n let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) { checksum = \"0\" + checksum; }\n\n return checksum;\n};\n\nexport function getAddress(address: string): string {\n let result = null;\n\n if (typeof(address) !== \"string\") {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n\n // Missing the 0x prefix\n if (address.substring(0, 2) !== \"0x\") { address = \"0x\" + address; }\n\n result = getChecksumAddress(address);\n\n // It is a checksummed address with a bad checksum\n if (address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) && result !== address) {\n logger.throwArgumentError(\"bad address checksum\", \"address\", address);\n }\n\n // Maybe ICAP? (we only support direct mode)\n } else if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\n\n // It is an ICAP address with a bad checksum\n if (address.substring(2, 4) !== ibanChecksum(address)) {\n logger.throwArgumentError(\"bad icap checksum\", \"address\", address);\n }\n\n result = _base36To16(address.substring(4));\n while (result.length < 40) { result = \"0\" + result; }\n result = getChecksumAddress(\"0x\" + result);\n\n } else {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n\n return result;\n}\n\nexport function isAddress(address: string): boolean {\n try {\n getAddress(address);\n return true;\n } catch (error) { }\n return false;\n}\n\nexport function getIcapAddress(address: string): string {\n let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n while (base36.length < 30) { base36 = \"0\" + base36; }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n\n// http://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed\nexport function getContractAddress(transaction: { from: string, nonce: BigNumberish }) {\n let from: string = null;\n try {\n from = getAddress(transaction.from);\n } catch (error) {\n logger.throwArgumentError(\"missing from address\", \"transaction\", transaction);\n }\n\n const nonce = stripZeros(arrayify(BigNumber.from(transaction.nonce).toHexString()));\n\n return getAddress(hexDataSlice(keccak256(encode([ from, nonce ])), 12));\n}\n\nexport function getCreate2Address(from: string, salt: BytesLike, initCodeHash: BytesLike): string {\n if (hexDataLength(salt) !== 32) {\n logger.throwArgumentError(\"salt must be 32 bytes\", \"salt\", salt);\n }\n if (hexDataLength(initCodeHash) !== 32) {\n logger.throwArgumentError(\"initCodeHash must be 32 bytes\", \"initCodeHash\", initCodeHash);\n }\n return getAddress(hexDataSlice(keccak256(concat([ \"0xff\", getAddress(from), salt, initCodeHash ])), 12))\n}\n","\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\nimport { hexZeroPad } from \"@ethersproject/bytes\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class AddressCoder extends Coder {\n\n constructor(localName: string) {\n super(\"address\", \"address\", localName, false);\n }\n\n defaultValue(): string {\n return \"0x0000000000000000000000000000000000000000\";\n }\n\n encode(writer: Writer, value: string): number {\n try {\n value = getAddress(value)\n } catch (error) {\n this._throwError(error.message, value);\n }\n return writer.writeValue(value);\n }\n\n decode(reader: Reader): any {\n return getAddress(hexZeroPad(reader.readValue().toHexString(), 20));\n }\n}\n\n","\"use strict\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\n// Clones the functionality of an existing Coder, but without a localName\nexport class AnonymousCoder extends Coder {\n private coder: Coder;\n\n constructor(coder: Coder) {\n super(coder.name, coder.type, undefined, coder.dynamic);\n this.coder = coder;\n }\n\n defaultValue(): any {\n return this.coder.defaultValue();\n }\n\n encode(writer: Writer, value: any): number {\n return this.coder.encode(writer, value);\n }\n\n decode(reader: Reader): any {\n return this.coder.decode(reader);\n }\n}\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"../_version\";\nconst logger = new Logger(version);\n\nimport { Coder, Reader, Result, Writer } from \"./abstract-coder\";\nimport { AnonymousCoder } from \"./anonymous\";\n\nexport function pack(writer: Writer, coders: ReadonlyArray<Coder>, values: Array<any> | { [ name: string ]: any }): number {\n let arrayValues: Array<any> = null;\n\n if (Array.isArray(values)) {\n arrayValues = values;\n\n } else if (values && typeof(values) === \"object\") {\n let unique: { [ name: string ]: boolean } = { };\n\n arrayValues = coders.map((coder) => {\n const name = coder.localName;\n if (!name) {\n logger.throwError(\"cannot encode object for signature with missing names\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"values\",\n coder: coder,\n value: values\n });\n }\n\n if (unique[name]) {\n logger.throwError(\"cannot encode object for signature with duplicate names\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"values\",\n coder: coder,\n value: values\n });\n }\n\n unique[name] = true;\n\n return values[name];\n });\n\n } else {\n logger.throwArgumentError(\"invalid tuple value\", \"tuple\", values);\n }\n\n if (coders.length !== arrayValues.length) {\n logger.throwArgumentError(\"types/value length mismatch\", \"tuple\", values);\n }\n\n let staticWriter = new Writer(writer.wordSize);\n let dynamicWriter = new Writer(writer.wordSize);\n\n let updateFuncs: Array<(baseOffset: number) => void> = [];\n coders.forEach((coder, index) => {\n let value = arrayValues[index];\n\n if (coder.dynamic) {\n // Get current dynamic offset (for the future pointer)\n let dynamicOffset = dynamicWriter.length;\n\n // Encode the dynamic value into the dynamicWriter\n coder.encode(dynamicWriter, value);\n\n // Prepare to populate the correct offset once we are done\n let updateFunc = staticWriter.writeUpdatableValue();\n updateFuncs.push((baseOffset: number) => {\n updateFunc(baseOffset + dynamicOffset);\n });\n\n } else {\n coder.encode(staticWriter, value);\n }\n });\n\n // Backfill all the dynamic offsets, now that we know the static length\n updateFuncs.forEach((func) => { func(staticWriter.length); });\n\n let length = writer.appendWriter(staticWriter);\n length += writer.appendWriter(dynamicWriter);\n return length;\n}\n\nexport function unpack(reader: Reader, coders: Array<Coder>): Result {\n let values: any = [];\n\n // A reader anchored to this base\n let baseReader = reader.subReader(0);\n\n coders.forEach((coder) => {\n let value: any = null;\n\n if (coder.dynamic) {\n let offset = reader.readValue();\n let offsetReader = baseReader.subReader(offset.toNumber());\n try {\n value = coder.decode(offsetReader);\n } catch (error) {\n // Cannot recover from this\n if (error.code === Logger.errors.BUFFER_OVERRUN) { throw error; }\n value = error;\n value.baseType = coder.name;\n value.name = coder.localName;\n value.type = coder.type;\n }\n\n } else {\n try {\n value = coder.decode(reader);\n } catch (error) {\n // Cannot recover from this\n if (error.code === Logger.errors.BUFFER_OVERRUN) { throw error; }\n value = error;\n value.baseType = coder.name;\n value.name = coder.localName;\n value.type = coder.type;\n }\n }\n\n if (value != undefined) {\n values.push(value);\n }\n });\n\n // We only output named properties for uniquely named coders\n const uniqueNames = coders.reduce((accum, coder) => {\n const name = coder.localName;\n if (name) {\n if (!accum[name]) { accum[name] = 0; }\n accum[name]++;\n }\n return accum;\n }, <{ [ name: string ]: number }>{ });\n\n // Add any named parameters (i.e. tuples)\n coders.forEach((coder: Coder, index: number) => {\n let name = coder.localName;\n if (!name || uniqueNames[name] !== 1) { return; }\n\n if (name === \"length\") { name = \"_length\"; }\n\n if (values[name] != null) { return; }\n\n const value = values[index];\n\n if (value instanceof Error) {\n Object.defineProperty(values, name, {\n enumerable: true,\n get: () => { throw value; }\n });\n } else {\n values[name] = value;\n }\n });\n\n for (let i = 0; i < values.length; i++) {\n const value = values[i];\n if (value instanceof Error) {\n Object.defineProperty(values, i, {\n enumerable: true,\n get: () => { throw value; }\n });\n }\n }\n\n return Object.freeze(values);\n}\n\n\nexport class ArrayCoder extends Coder {\n readonly coder: Coder;\n readonly length: number;\n\n constructor(coder: Coder, length: number, localName: string) {\n const type = (coder.type + \"[\" + (length >= 0 ? length: \"\") + \"]\");\n const dynamic = (length === -1 || coder.dynamic);\n super(\"array\", type, localName, dynamic);\n\n this.coder = coder;\n this.length = length;\n }\n\n defaultValue(): Array<any> {\n // Verifies the child coder is valid (even if the array is dynamic or 0-length)\n const defaultChild = this.coder.defaultValue();\n\n const result: Array<any> = [];\n for (let i = 0; i < this.length; i++) {\n result.push(defaultChild);\n }\n return result;\n }\n\n encode(writer: Writer, value: Array<any>): number {\n if (!Array.isArray(value)) {\n this._throwError(\"expected array value\", value);\n }\n\n let count = this.length;\n\n if (count === -1) {\n count = value.length;\n writer.writeValue(value.length);\n }\n\n logger.checkArgumentCount(value.length, count, \"coder array\" + (this.localName? (\" \"+ this.localName): \"\"));\n\n let coders = [];\n for (let i = 0; i < value.length; i++) { coders.push(this.coder); }\n\n return pack(writer, coders, value);\n }\n\n decode(reader: Reader): any {\n let count = this.length;\n if (count === -1) {\n count = reader.readValue().toNumber();\n\n // Check that there is *roughly* enough data to ensure\n // stray random data is not being read as a length. Each\n // slot requires at least 32 bytes for their value (or 32\n // bytes as a link to the data). This could use a much\n // tighter bound, but we are erroring on the side of safety.\n if (count * 32 > reader._data.length) {\n logger.throwError(\"insufficient data length\", Logger.errors.BUFFER_OVERRUN, {\n length: reader._data.length,\n count: count\n });\n }\n }\n let coders = [];\n for (let i = 0; i < count; i++) { coders.push(new AnonymousCoder(this.coder)); }\n\n return reader.coerce(this.name, unpack(reader, coders));\n }\n}\n\n","\"use strict\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class BooleanCoder extends Coder {\n\n constructor(localName: string) {\n super(\"bool\", \"bool\", localName, false);\n }\n\n defaultValue(): boolean {\n return false;\n }\n\n encode(writer: Writer, value: boolean): number {\n return writer.writeValue(value ? 1: 0);\n }\n\n decode(reader: Reader): any {\n return reader.coerce(this.type, !reader.readValue().isZero());\n }\n}\n\n","\"use strict\";\n\nimport { arrayify, hexlify } from \"@ethersproject/bytes\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class DynamicBytesCoder extends Coder {\n constructor(type: string, localName: string) {\n super(type, type, localName, true);\n }\n\n defaultValue(): string {\n return \"0x\";\n }\n\n encode(writer: Writer, value: any): number {\n value = arrayify(value);\n let length = writer.writeValue(value.length);\n length += writer.writeBytes(value);\n return length;\n }\n\n decode(reader: Reader): any {\n return reader.readBytes(reader.readValue().toNumber(), true);\n }\n}\n\nexport class BytesCoder extends DynamicBytesCoder {\n constructor(localName: string) {\n super(\"bytes\", localName);\n }\n\n decode(reader: Reader): any {\n return reader.coerce(this.name, hexlify(super.decode(reader)));\n }\n}\n\n\n","\"use strict\";\n\nimport { arrayify, BytesLike, hexlify } from \"@ethersproject/bytes\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\n// @TODO: Merge this with bytes\nexport class FixedBytesCoder extends Coder {\n readonly size: number;\n\n constructor(size: number, localName: string) {\n let name = \"bytes\" + String(size);\n super(name, name, localName, false);\n this.size = size;\n }\n\n defaultValue(): string {\n return (\"0x0000000000000000000000000000000000000000000000000000000000000000\").substring(0, 2 + this.size * 2);\n }\n\n encode(writer: Writer, value: BytesLike): number {\n let data = arrayify(value);\n if (data.length !== this.size) { this._throwError(\"incorrect data length\", value); }\n return writer.writeBytes(data);\n }\n\n decode(reader: Reader): any {\n return reader.coerce(this.name, hexlify(reader.readBytes(this.size)));\n }\n}\n","\"use strict\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class NullCoder extends Coder {\n\n constructor(localName: string) {\n super(\"null\", \"\", localName, false);\n }\n\n defaultValue(): null {\n return null;\n }\n\n encode(writer: Writer, value: any): number {\n if (value != null) { this._throwError(\"not null\", value); }\n return writer.writeBytes([ ]);\n }\n\n decode(reader: Reader): any {\n reader.readBytes(0);\n return reader.coerce(this.name, null);\n }\n}\n","export const AddressZero = \"0x0000000000000000000000000000000000000000\";\n\n","import { BigNumber } from \"@ethersproject/bignumber\";\n\nconst NegativeOne: BigNumber = (/*#__PURE__*/BigNumber.from(-1));\nconst Zero: BigNumber = (/*#__PURE__*/BigNumber.from(0));\nconst One: BigNumber = (/*#__PURE__*/BigNumber.from(1));\nconst Two: BigNumber = (/*#__PURE__*/BigNumber.from(2));\nconst WeiPerEther: BigNumber = (/*#__PURE__*/BigNumber.from(\"1000000000000000000\"));\nconst MaxUint256: BigNumber = (/*#__PURE__*/BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"));\n\nconst MinInt256: BigNumber = (/*#__PURE__*/BigNumber.from(\"-0x8000000000000000000000000000000000000000000000000000000000000000\"));\nconst MaxInt256: BigNumber = (/*#__PURE__*/BigNumber.from(\"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"));\n\nexport {\n NegativeOne,\n Zero,\n One,\n Two,\n WeiPerEther,\n MaxUint256,\n MinInt256,\n MaxInt256,\n};\n","export const HashZero = \"0x0000000000000000000000000000000000000000000000000000000000000000\";\n\n","// NFKC (composed) // (decomposed)\nexport const EtherSymbol = \"\\u039e\"; // \"\\uD835\\uDF63\";\n","\"use strict\";\n\nexport { AddressZero } from \"./addresses\";\nexport {\n NegativeOne,\n Zero,\n One,\n Two,\n WeiPerEther,\n MaxUint256,\n MinInt256,\n MaxInt256\n} from \"./bignumbers\";\nexport { HashZero } from \"./hashes\";\nexport { EtherSymbol } from \"./strings\";\n\n","\"use strict\";\n\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { MaxUint256, NegativeOne, One, Zero } from \"@ethersproject/constants\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\n\nexport class NumberCoder extends Coder {\n readonly size: number;\n readonly signed: boolean;\n\n constructor(size: number, signed: boolean, localName: string) {\n const name = ((signed ? \"int\": \"uint\") + (size * 8));\n super(name, name, localName, false);\n\n this.size = size;\n this.signed = signed;\n }\n\n defaultValue(): number {\n return 0;\n }\n\n encode(writer: Writer, value: BigNumberish): number {\n let v = BigNumber.from(value);\n\n // Check bounds are safe for encoding\n let maxUintValue = MaxUint256.mask(writer.wordSize * 8);\n if (this.signed) {\n let bounds = maxUintValue.mask(this.size * 8 - 1);\n if (v.gt(bounds) || v.lt(bounds.add(One).mul(NegativeOne))) {\n this._throwError(\"value out-of-bounds\", value);\n }\n } else if (v.lt(Zero) || v.gt(maxUintValue.mask(this.size * 8))) {\n this._throwError(\"value out-of-bounds\", value);\n }\n\n v = v.toTwos(this.size * 8).mask(this.size * 8);\n\n if (this.signed) {\n v = v.fromTwos(this.size * 8).toTwos(8 * writer.wordSize);\n }\n\n return writer.writeValue(v);\n }\n\n decode(reader: Reader): any {\n let value = reader.readValue().mask(this.size * 8);\n\n if (this.signed) {\n value = value.fromTwos(this.size * 8);\n }\n\n return reader.coerce(this.name, value);\n }\n}\n\n","export const version = \"strings/5.8.0\";\n","\"use strict\";\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n\nexport enum UnicodeNormalizationForm {\n current = \"\",\n NFC = \"NFC\",\n NFD = \"NFD\",\n NFKC = \"NFKC\",\n NFKD = \"NFKD\"\n};\n\nexport enum Utf8ErrorReason {\n // A continuation byte was present where there was nothing to continue\n // - offset = the index the codepoint began in\n UNEXPECTED_CONTINUE = \"unexpected continuation byte\",\n\n // An invalid (non-continuation) byte to start a UTF-8 codepoint was found\n // - offset = the index the codepoint began in\n BAD_PREFIX = \"bad codepoint prefix\",\n\n // The string is too short to process the expected codepoint\n // - offset = the index the codepoint began in\n OVERRUN = \"string overrun\",\n\n // A missing continuation byte was expected but not found\n // - offset = the index the continuation byte was expected at\n MISSING_CONTINUE = \"missing continuation byte\",\n\n // The computed code point is outside the range for UTF-8\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; outside the UTF-8 range\n OUT_OF_RANGE = \"out of UTF-8 range\",\n\n // UTF-8 strings may not contain UTF-16 surrogate pairs\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; inside the UTF-16 surrogate range\n UTF16_SURROGATE = \"UTF-16 surrogate\",\n\n // The string is an overlong representation\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; already bounds checked\n OVERLONG = \"overlong representation\",\n};\n\n\nexport type Utf8ErrorFunc = (reason: Utf8ErrorReason, offset: number, bytes: ArrayLike<number>, output: Array<number>, badCodepoint?: number) => number;\n\nfunction errorFunc(reason: Utf8ErrorReason, offset: number, bytes: ArrayLike<number>, output: Array<number>, badCodepoint?: number): number {\n return logger.throwArgumentError(`invalid codepoint at offset ${ offset }; ${ reason }`, \"bytes\", bytes);\n}\n\nfunction ignoreFunc(reason: Utf8ErrorReason, offset: number, bytes: ArrayLike<number>, output: Array<number>, badCodepoint?: number): number {\n\n // If there is an invalid prefix (including stray continuation), skip any additional continuation bytes\n if (reason === Utf8ErrorReason.BAD_PREFIX || reason === Utf8ErrorReason.UNEXPECTED_CONTINUE) {\n let i = 0;\n for (let o = offset + 1; o < bytes.length; o++) {\n if (bytes[o] >> 6 !== 0x02) { break; }\n i++;\n }\n return i;\n }\n\n // This byte runs us past the end of the string, so just jump to the end\n // (but the first byte was read already read and therefore skipped)\n if (reason === Utf8ErrorReason.OVERRUN) {\n return bytes.length - offset - 1;\n }\n\n // Nothing to skip\n return 0;\n}\n\nfunction replaceFunc(reason: Utf8ErrorReason, offset: number, bytes: ArrayLike<number>, output: Array<number>, badCodepoint?: number): number {\n\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === Utf8ErrorReason.OVERLONG) {\n output.push(badCodepoint);\n return 0;\n }\n\n // Put the replacement character into the output\n output.push(0xfffd);\n\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n\n// Common error handing strategies\nexport const Utf8ErrorFuncs: { [ name: string ]: Utf8ErrorFunc } = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(bytes: BytesLike, onError?: Utf8ErrorFunc): Array<number> {\n if (onError == null) { onError = Utf8ErrorFuncs.error; }\n\n bytes = arrayify(bytes);\n\n const result: Array<number> = [];\n let i = 0;\n\n // Invalid bytes are ignored\n while(i < bytes.length) {\n\n const c = bytes[i++];\n\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n\n // 1110 xxxx 10xx xxxx 10xx xxxx\n } else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n } else if ((c & 0xf8) === 0xf0) {\n extraLength = 3;\n overlongMask = 0xffff;\n\n } else {\n if ((c & 0xc0) === 0x80) {\n i += onError(Utf8ErrorReason.UNEXPECTED_CONTINUE, i - 1, bytes, result);\n } else {\n i += onError(Utf8ErrorReason.BAD_PREFIX, i - 1, bytes, result);\n }\n continue;\n }\n\n // Do we have enough bytes in our data?\n if (i - 1 + extraLength >= bytes.length) {\n i += onError(Utf8ErrorReason.OVERRUN, i - 1, bytes, result);\n continue;\n }\n\n // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\n\n // Invalid continuation byte\n if ((nextChar & 0xc0) != 0x80) {\n i += onError(Utf8ErrorReason.MISSING_CONTINUE, i, bytes, result);\n res = null;\n break;\n };\n\n res = (res << 6) | (nextChar & 0x3f);\n i++;\n }\n\n // See above loop for invalid continuation byte\n if (res === null) { continue; }\n\n // Maximum code point\n if (res > 0x10ffff) {\n i += onError(Utf8ErrorReason.OUT_OF_RANGE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n\n // Reserved for UTF-16 surrogate halves\n if (res >= 0xd800 && res <= 0xdfff) {\n i += onError(Utf8ErrorReason.UTF16_SURROGATE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n\n // Check for overlong sequences (more bytes than needed)\n if (res <= overlongMask) {\n i += onError(Utf8ErrorReason.OVERLONG, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n\n result.push(res);\n }\n\n return result;\n}\n\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\nexport function toUtf8Bytes(str: string, form: UnicodeNormalizationForm = UnicodeNormalizationForm.current): Uint8Array {\n\n if (form != UnicodeNormalizationForm.current) {\n logger.checkNormalize();\n str = str.normalize(form);\n }\n\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n\n if (c < 0x80) {\n result.push(c);\n\n } else if (c < 0x800) {\n result.push((c >> 6) | 0xc0);\n result.push((c & 0x3f) | 0x80);\n\n } else if ((c & 0xfc00) == 0xd800) {\n i++;\n const c2 = str.charCodeAt(i);\n\n if (i >= str.length || (c2 & 0xfc00) !== 0xdc00) {\n throw new Error(\"invalid utf-8 string\");\n }\n\n // Surrogate Pair\n const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n result.push((pair >> 18) | 0xf0);\n result.push(((pair >> 12) & 0x3f) | 0x80);\n result.push(((pair >> 6) & 0x3f) | 0x80);\n result.push((pair & 0x3f) | 0x80);\n\n } else {\n result.push((c >> 12) | 0xe0);\n result.push(((c >> 6) & 0x3f) | 0x80);\n result.push((c & 0x3f) | 0x80);\n }\n }\n\n return arrayify(result);\n};\n\nfunction escapeChar(value: number) {\n const hex = (\"0000\" + value.toString(16));\n return \"\\\\u\" + hex.substring(hex.length - 4);\n}\n\nexport function _toEscapedUtf8String(bytes: BytesLike, onError?: Utf8ErrorFunc): string {\n return '\"' + getUtf8CodePoints(bytes, onError).map((codePoint) => {\n if (codePoint < 256) {\n switch (codePoint) {\n case 8: return \"\\\\b\";\n case 9: return \"\\\\t\";\n case 10: return \"\\\\n\"\n case 13: return \"\\\\r\";\n case 34: return \"\\\\\\\"\";\n case 92: return \"\\\\\\\\\";\n }\n\n if (codePoint >= 32 && codePoint < 127) {\n return String.fromCharCode(codePoint);\n }\n }\n\n if (codePoint <= 0xffff) {\n return escapeChar(codePoint);\n }\n\n codePoint -= 0x10000;\n return escapeChar(((codePoint >> 10) & 0x3ff) + 0xd800) + escapeChar((codePoint & 0x3ff) + 0xdc00);\n }).join(\"\") + '\"';\n}\n\nexport function _toUtf8String(codePoints: Array<number>): string {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode(\n (((codePoint >> 10) & 0x3ff) + 0xd800),\n ((codePoint & 0x3ff) + 0xdc00)\n );\n }).join(\"\");\n}\n\nexport function toUtf8String(bytes: BytesLike, onError?: Utf8ErrorFunc): string {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\n\nexport function toUtf8CodePoints(str: string, form: UnicodeNormalizationForm = UnicodeNormalizationForm.current): Array<number> {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n","\"use strict\";\n\nimport { HashZero } from \"@ethersproject/constants\";\nimport { arrayify, BytesLike, concat, hexlify } from \"@ethersproject/bytes\";\n\nimport { toUtf8Bytes, toUtf8String } from \"./utf8\";\n\n\nexport function formatBytes32String(text: string): string {\n\n // Get the bytes\n const bytes = toUtf8Bytes(text);\n\n // Check we have room for null-termination\n if (bytes.length > 31) { throw new Error(\"bytes32 string must be less than 32 bytes\"); }\n\n // Zero-pad (implicitly null-terminates)\n return hexlify(concat([ bytes, HashZero ]).slice(0, 32));\n}\n\nexport function parseBytes32String(bytes: BytesLike): string {\n const data = arrayify(bytes);\n\n // Must be 32 bytes with a null-termination\n if (data.length !== 32) { throw new Error(\"invalid bytes32 - not 32 bytes long\"); }\n if (data[31] !== 0) { throw new Error(\"invalid bytes32 string - no null terminator\"); }\n\n // Find the null termination\n let length = 31;\n while (data[length - 1] === 0) { length--; }\n\n // Determine the string value\n return toUtf8String(data.slice(0, length));\n}\n\n","\"use strict\";\n\nimport { toUtf8CodePoints, _toUtf8String, UnicodeNormalizationForm } from \"./utf8\";\n\ntype Ranged = {\n l: number, // Lo value\n h: number, // High value (less the lo)\n d?: number, // Delta/stride (default: 1)\n s?: number, // Shift (default: 1)\n e?: Array<number> // Exceptions to skip\n};\n\ntype Table = { [ src: number ]: Array<number> };\n\nfunction bytes2(data: string): Array<number> {\n if ((data.length % 4) !== 0) { throw new Error(\"bad data\"); }\n let result = [];\n for (let i = 0; i < data.length; i += 4) {\n result.push(parseInt(data.substring(i, i + 4), 16));\n }\n return result;\n}\n\nfunction createTable(data: string, func?: (value: string) => Array<number>): Table {\n if (!func) {\n func = function(value: string) { return [ parseInt(value, 16) ]; }\n }\n\n let lo = 0;\n\n let result: Table = { };\n data.split(\",\").forEach((pair) => {\n let comps = pair.split(\":\");\n lo += parseInt(comps[0], 16);\n result[lo] = func(comps[1]);\n });\n\n return result;\n}\n\nfunction createRangeTable(data: string): Array<Ranged> {\n let hi = 0;\n return data.split(\",\").map((v) => {\n let comps = v.split(\"-\");\n if (comps.length === 1) {\n comps[1] = \"0\";\n } else if (comps[1] === \"\") {\n comps[1] = \"1\";\n }\n\n let lo = hi + parseInt(comps[0], 16);\n hi = parseInt(comps[1], 16);\n return { l: lo, h: hi };\n });\n}\n\nfunction matchMap(value: number, ranges: Array<Ranged>): Ranged {\n let lo = 0;\n for (let i = 0; i < ranges.length; i++) {\n let range = ranges[i];\n lo += range.l;\n if (value >= lo && value <= lo + range.h && ((value - lo) % (range.d || 1)) === 0) {\n if (range.e && range.e.indexOf(value - lo) !== -1) { continue; }\n return range;\n }\n }\n return null;\n}\n\nconst Table_A_1_ranges = createRangeTable(\"221,13-1b,5f-,40-10,51-f,11-3,3-3,2-2,2-4,8,2,15,2d,28-8,88,48,27-,3-5,11-20,27-,8,28,3-5,12,18,b-a,1c-4,6-16,2-d,2-2,2,1b-4,17-9,8f-,10,f,1f-2,1c-34,33-14e,4,36-,13-,6-2,1a-f,4,9-,3-,17,8,2-2,5-,2,8-,3-,4-8,2-3,3,6-,16-6,2-,7-3,3-,17,8,3,3,3-,2,6-3,3-,4-a,5,2-6,10-b,4,8,2,4,17,8,3,6-,b,4,4-,2-e,2-4,b-10,4,9-,3-,17,8,3-,5-,9-2,3-,4-7,3-3,3,4-3,c-10,3,7-2,4,5-2,3,2,3-2,3-2,4-2,9,4-3,6-2,4,5-8,2-e,d-d,4,9,4,18,b,6-3,8,4,5-6,3-8,3-3,b-11,3,9,4,18,b,6-3,8,4,5-6,3-6,2,3-3,b-11,3,9,4,18,11-3,7-,4,5-8,2-7,3-3,b-11,3,13-2,19,a,2-,8-2,2-3,7,2,9-11,4-b,3b-3,1e-24,3,2-,3,2-,2-5,5,8,4,2,2-,3,e,4-,6,2,7-,b-,3-21,49,23-5,1c-3,9,25,10-,2-2f,23,6,3,8-2,5-5,1b-45,27-9,2a-,2-3,5b-4,45-4,53-5,8,40,2,5-,8,2,5-,28,2,5-,20,2,5-,8,2,5-,8,8,18,20,2,5-,8,28,14-5,1d-22,56-b,277-8,1e-2,52-e,e,8-a,18-8,15-b,e,4,3-b,5e-2,b-15,10,b-5,59-7,2b-555,9d-3,5b-5,17-,7-,27-,7-,9,2,2,2,20-,36,10,f-,7,14-,4,a,54-3,2-6,6-5,9-,1c-10,13-1d,1c-14,3c-,10-6,32-b,240-30,28-18,c-14,a0,115-,3,66-,b-76,5,5-,1d,24,2,5-2,2,8-,35-2,19,f-10,1d-3,311-37f,1b,5a-b,d7-19,d-3,41,57-,68-4,29-3,5f,29-37,2e-2,25-c,2c-2,4e-3,30,78-3,64-,20,19b7-49,51a7-59,48e-2,38-738,2ba5-5b,222f-,3c-94,8-b,6-4,1b,6,2,3,3,6d-20,16e-f,41-,37-7,2e-2,11-f,5-b,18-,b,14,5-3,6,88-,2,bf-2,7-,7-,7-,4-2,8,8-9,8-2ff,20,5-b,1c-b4,27-,27-cbb1,f7-9,28-2,b5-221,56,48,3-,2-,3-,5,d,2,5,3,42,5-,9,8,1d,5,6,2-2,8,153-3,123-3,33-27fd,a6da-5128,21f-5df,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3-fffd,3,2-1d,61-ff7d\");\n\n// @TODO: Make this relative...\nconst Table_B_1_flags = \"ad,34f,1806,180b,180c,180d,200b,200c,200d,2060,feff\".split(\",\").map((v) => parseInt(v, 16));\n\nconst Table_B_2_ranges: Array<Ranged> = [\n { h: 25, s: 32, l: 65 },\n { h: 30, s: 32, e: [ 23 ], l: 127 },\n { h: 54, s: 1, e: [ 48 ], l: 64, d: 2 },\n { h: 14, s: 1, l: 57, d: 2 },\n { h: 44, s: 1, l: 17, d: 2 },\n { h: 10, s: 1, e: [ 2, 6, 8 ], l: 61, d: 2 },\n { h: 16, s: 1, l: 68, d: 2 },\n { h: 84, s: 1, e: [ 18, 24, 66 ], l: 19, d: 2 },\n { h: 26, s: 32, e: [ 17 ], l: 435 },\n { h: 22, s: 1, l: 71, d: 2 },\n { h: 15, s: 80, l: 40 },\n { h: 31, s: 32, l: 16 },\n { h: 32, s: 1, l: 80, d: 2 },\n { h: 52, s: 1, l: 42, d: 2 },\n { h: 12, s: 1, l: 55, d: 2 },\n { h: 40, s: 1, e: [ 38 ], l: 15, d: 2 },\n { h: 14, s: 1, l: 48, d: 2 },\n { h: 37, s: 48, l: 49 },\n { h: 148, s: 1, l: 6351, d: 2 },\n { h: 88, s: 1, l: 160, d: 2 },\n { h: 15, s: 16, l: 704 },\n { h: 25, s: 26, l: 854 },\n { h: 25, s: 32, l: 55915 },\n { h: 37, s: 40, l: 1247 },\n { h: 25, s: -119711, l: 53248 },\n { h: 25, s: -119763, l: 52 },\n { h: 25, s: -119815, l: 52 },\n { h: 25, s: -119867, e: [ 1, 4, 5, 7, 8, 11, 12, 17 ], l: 52 },\n { h: 25, s: -119919, l: 52 },\n { h: 24, s: -119971, e: [ 2, 7, 8, 17 ], l: 52 },\n { h: 24, s: -120023, e: [ 2, 7, 13, 15, 16, 17 ], l: 52 },\n { h: 25, s: -120075, l: 52 },\n { h: 25, s: -120127, l: 52 },\n { h: 25, s: -120179, l: 52 },\n { h: 25, s: -120231, l: 52 },\n { h: 25, s: -120283, l: 52 },\n { h: 25, s: -120335, l: 52 },\n { h: 24, s: -119543, e: [ 17 ], l: 56 },\n { h: 24, s: -119601, e: [ 17 ], l: 58 },\n { h: 24, s: -119659, e: [ 17 ], l: 58 },\n { h: 24, s: -119717, e: [ 17 ], l: 58 },\n { h: 24, s: -119775, e: [ 17 ], l: 58 }\n];\nconst Table_B_2_lut_abs = createTable(\"b5:3bc,c3:ff,7:73,2:253,5:254,3:256,1:257,5:259,1:25b,3:260,1:263,2:269,1:268,5:26f,1:272,2:275,7:280,3:283,5:288,3:28a,1:28b,5:292,3f:195,1:1bf,29:19e,125:3b9,8b:3b2,1:3b8,1:3c5,3:3c6,1:3c0,1a:3ba,1:3c1,1:3c3,2:3b8,1:3b5,1bc9:3b9,1c:1f76,1:1f77,f:1f7a,1:1f7b,d:1f78,1:1f79,1:1f7c,1:1f7d,107:63,5:25b,4:68,1:68,1:68,3:69,1:69,1:6c,3:6e,4:70,1:71,1:72,1:72,1:72,7:7a,2:3c9,2:7a,2:6b,1:e5,1:62,1:63,3:65,1:66,2:6d,b:3b3,1:3c0,6:64,1b574:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3,20:3b8,1a:3c3\");\nconst Table_B_2_lut_rel = createTable(\"179:1,2:1,2:1,5:1,2:1,a:4f,a:1,8:1,2:1,2:1,3:1,5:1,3:1,4:1,2:1,3:1,4:1,8:2,1:1,2:2,1:1,2:2,27:2,195:26,2:25,1:25,1:25,2:40,2:3f,1:3f,33:1,11:-6,1:-9,1ac7:-3a,6d:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,b:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,c:-8,2:-8,2:-8,2:-8,9:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,1:-8,49:-8,1:-8,1:-4a,1:-4a,d:-56,1:-56,1:-56,1:-56,d:-8,1:-8,f:-8,1:-8,3:-7\");\nconst Table_B_2_complex = createTable(\"df:00730073,51:00690307,19:02BC006E,a7:006A030C,18a:002003B9,16:03B903080301,20:03C503080301,1d7:05650582,190f:00680331,1:00740308,1:0077030A,1:0079030A,1:006102BE,b6:03C50313,2:03C503130300,2:03C503130301,2:03C503130342,2a:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F0003B9,1:1F0103B9,1:1F0203B9,1:1F0303B9,1:1F0403B9,1:1F0503B9,1:1F0603B9,1:1F0703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F2003B9,1:1F2103B9,1:1F2203B9,1:1F2303B9,1:1F2403B9,1:1F2503B9,1:1F2603B9,1:1F2703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,1:1F6003B9,1:1F6103B9,1:1F6203B9,1:1F6303B9,1:1F6403B9,1:1F6503B9,1:1F6603B9,1:1F6703B9,3:1F7003B9,1:03B103B9,1:03AC03B9,2:03B10342,1:03B1034203B9,5:03B103B9,6:1F7403B9,1:03B703B9,1:03AE03B9,2:03B70342,1:03B7034203B9,5:03B703B9,6:03B903080300,1:03B903080301,3:03B90342,1:03B903080342,b:03C503080300,1:03C503080301,1:03C10313,2:03C50342,1:03C503080342,b:1F7C03B9,1:03C903B9,1:03CE03B9,2:03C90342,1:03C9034203B9,5:03C903B9,ac:00720073,5b:00B00063,6:00B00066,d:006E006F,a:0073006D,1:00740065006C,1:0074006D,124f:006800700061,2:00610075,2:006F0076,b:00700061,1:006E0061,1:03BC0061,1:006D0061,1:006B0061,1:006B0062,1:006D0062,1:00670062,3:00700066,1:006E0066,1:03BC0066,4:0068007A,1:006B0068007A,1:006D0068007A,1:00670068007A,1:00740068007A,15:00700061,1:006B00700061,1:006D00700061,1:006700700061,8:00700076,1:006E0076,1:03BC0076,1:006D0076,1:006B0076,1:006D0076,1:00700077,1:006E0077,1:03BC0077,1:006D0077,1:006B0077,1:006D0077,1:006B03C9,1:006D03C9,2:00620071,3:00632215006B0067,1:0063006F002E,1:00640062,1:00670079,2:00680070,2:006B006B,1:006B006D,9:00700068,2:00700070006D,1:00700072,2:00730076,1:00770062,c723:00660066,1:00660069,1:0066006C,1:006600660069,1:00660066006C,1:00730074,1:00730074,d:05740576,1:05740565,1:0574056B,1:057E0576,1:0574056D\", bytes2);\n\nconst Table_C_ranges = createRangeTable(\"80-20,2a0-,39c,32,f71,18e,7f2-f,19-7,30-4,7-5,f81-b,5,a800-20ff,4d1-1f,110,fa-6,d174-7,2e84-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,ffff-,2,1f-5f,ff7f-20001\");\n\n\nfunction flatten(values: Array<Array<number>>): Array<number> {\n return values.reduce((accum, value) => {\n value.forEach((value) => { accum.push(value); });\n return accum;\n }, [ ]);\n}\n\nexport function _nameprepTableA1(codepoint: number): boolean {\n return !!matchMap(codepoint, Table_A_1_ranges);\n}\n\nexport function _nameprepTableB2(codepoint: number): Array<number> {\n let range = matchMap(codepoint, Table_B_2_ranges);\n if (range) { return [ codepoint + range.s ]; }\n\n let codes = Table_B_2_lut_abs[codepoint];\n if (codes) { return codes; }\n\n let shift = Table_B_2_lut_rel[codepoint];\n if (shift) { return [ codepoint + shift[0] ]; }\n\n let complex = Table_B_2_complex[codepoint];\n if (complex) { return complex; }\n\n return null;\n}\n\nexport function _nameprepTableC(codepoint: number): boolean {\n return !!matchMap(codepoint, Table_C_ranges);\n}\n\nexport function nameprep(value: string): string {\n\n // This allows platforms with incomplete normalize to bypass\n // it for very basic names which the built-in toLowerCase\n // will certainly handle correctly\n if (value.match(/^[a-z0-9-]*$/i) && value.length <= 59) { return value.toLowerCase(); }\n\n // Get the code points (keeping the current normalization)\n let codes = toUtf8CodePoints(value);\n\n codes = flatten(codes.map((code) => {\n // Substitute Table B.1 (Maps to Nothing)\n if (Table_B_1_flags.indexOf(code) >= 0) { return [ ]; }\n if (code >= 0xfe00 && code <= 0xfe0f) { return [ ]; }\n\n // Substitute Table B.2 (Case Folding)\n let codesTableB2 = _nameprepTableB2(code);\n if (codesTableB2) { return codesTableB2; }\n\n // No Substitution\n return [ code ];\n }));\n\n // Normalize using form KC\n codes = toUtf8CodePoints(_toUtf8String(codes), UnicodeNormalizationForm.NFKC);\n\n // Prohibit Tables C.1.2, C.2.2, C.3, C.4, C.5, C.6, C.7, C.8, C.9\n codes.forEach((code) => {\n if (_nameprepTableC(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_PROHIBITED\");\n }\n });\n\n // Prohibit Unassigned Code Points (Table A.1)\n codes.forEach((code) => {\n if (_nameprepTableA1(code)) {\n throw new Error(\"STRINGPREP_CONTAINS_UNASSIGNED\");\n }\n });\n\n // IDNA extras\n let name = _toUtf8String(codes);\n\n // IDNA: 4.2.3.1\n if (name.substring(0, 1) === \"-\" || name.substring(2, 4) === \"--\" || name.substring(name.length - 1) === \"-\") {\n throw new Error(\"invalid hyphen\");\n }\n\n return name;\n}\n\n","\"use strict\";\n\nimport { formatBytes32String, parseBytes32String } from \"./bytes32\";\nimport { nameprep } from \"./idna\";\nimport { _toEscapedUtf8String, toUtf8Bytes, toUtf8CodePoints, toUtf8String, UnicodeNormalizationForm, Utf8ErrorFunc, Utf8ErrorFuncs, Utf8ErrorReason } from \"./utf8\";\n\nexport {\n _toEscapedUtf8String,\n toUtf8Bytes,\n toUtf8CodePoints,\n toUtf8String,\n\n Utf8ErrorFunc,\n Utf8ErrorFuncs,\n Utf8ErrorReason,\n\n UnicodeNormalizationForm,\n\n formatBytes32String,\n parseBytes32String,\n\n nameprep\n}\n","\"use strict\";\n\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\n\nimport { Reader, Writer } from \"./abstract-coder\";\nimport { DynamicBytesCoder } from \"./bytes\";\n\nexport class StringCoder extends DynamicBytesCoder {\n\n constructor(localName: string) {\n super(\"string\", localName);\n }\n\n defaultValue(): string {\n return \"\";\n }\n\n encode(writer: Writer, value: any): number {\n return super.encode(writer, toUtf8Bytes(value));\n }\n\n decode(reader: Reader): any {\n return toUtf8String(super.decode(reader));\n }\n}\n","\"use strict\";\n\nimport { Coder, Reader, Writer } from \"./abstract-coder\";\nimport { pack, unpack } from \"./array\";\n\nexport class TupleCoder extends Coder {\n readonly coders: Array<Coder>;\n\n constructor(coders: Array<Coder>, localName: string) {\n let dynamic = false;\n const types: Array<string> = [];\n coders.forEach((coder) => {\n if (coder.dynamic) { dynamic = true; }\n types.push(coder.type);\n });\n const type = (\"tuple(\" + types.join(\",\") + \")\");\n\n super(\"tuple\", type, localName, dynamic);\n this.coders = coders;\n }\n\n defaultValue(): any {\n const values: any = [ ];\n this.coders.forEach((coder) => {\n values.push(coder.defaultValue());\n });\n\n // We only output named properties for uniquely named coders\n const uniqueNames = this.coders.reduce((accum, coder) => {\n const name = coder.localName;\n if (name) {\n if (!accum[name]) { accum[name] = 0; }\n accum[name]++;\n }\n return accum;\n }, <{ [ name: string ]: number }>{ });\n\n // Add named values\n this.coders.forEach((coder: Coder, index: number) => {\n let name = coder.localName;\n if (!name || uniqueNames[name] !== 1) { return; }\n\n if (name === \"length\") { name = \"_length\"; }\n\n if (values[name] != null) { return; }\n\n values[name] = values[index];\n });\n\n return Object.freeze(values);\n }\n\n encode(writer: Writer, value: Array<any> | { [ name: string ]: any }): number {\n return pack(writer, this.coders, value);\n }\n\n decode(reader: Reader): any {\n return reader.coerce(this.name, unpack(reader, this.coders));\n }\n}\n\n","\"use strict\";\n\n// See: https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { Coder, Reader, Result, Writer } from \"./coders/abstract-coder\";\nimport { AddressCoder } from \"./coders/address\";\nimport { ArrayCoder } from \"./coders/array\";\nimport { BooleanCoder } from \"./coders/boolean\";\nimport { BytesCoder } from \"./coders/bytes\";\nimport { FixedBytesCoder } from \"./coders/fixed-bytes\";\nimport { NullCoder } from \"./coders/null\";\nimport { NumberCoder } from \"./coders/number\";\nimport { StringCoder } from \"./coders/string\";\nimport { TupleCoder } from \"./coders/tuple\";\n\nimport { ParamType } from \"./fragments\";\n\n\nconst paramTypeBytes = new RegExp(/^bytes([0-9]*)$/);\nconst paramTypeNumber = new RegExp(/^(u?int)([0-9]*)$/);\n\n\nexport type CoerceFunc = (type: string, value: any) => any;\n\nexport class AbiCoder {\n readonly coerceFunc: CoerceFunc;\n\n constructor(coerceFunc?: CoerceFunc) {\n defineReadOnly(this, \"coerceFunc\", coerceFunc || null);\n }\n\n _getCoder(param: ParamType): Coder {\n\n switch (param.baseType) {\n case \"address\":\n return new AddressCoder(param.name);\n case \"bool\":\n return new BooleanCoder(param.name);\n case \"string\":\n return new StringCoder(param.name);\n case \"bytes\":\n return new BytesCoder(param.name);\n case \"array\":\n return new ArrayCoder(this._getCoder(param.arrayChildren), param.arrayLength, param.name);\n case \"tuple\":\n return new TupleCoder((param.components || []).map((component) => {\n return this._getCoder(component);\n }), param.name);\n case \"\":\n return new NullCoder(param.name);\n }\n\n // u?int[0-9]*\n let match = param.type.match(paramTypeNumber);\n if (match) {\n let size = parseInt(match[2] || \"256\");\n if (size === 0 || size > 256 || (size % 8) !== 0) {\n logger.throwArgumentError(\"invalid \" + match[1] + \" bit length\", \"param\", param);\n }\n return new NumberCoder(size / 8, (match[1] === \"int\"), param.name);\n }\n\n // bytes[0-9]+\n match = param.type.match(paramTypeBytes);\n if (match) {\n let size = parseInt(match[1]);\n if (size === 0 || size > 32) {\n logger.throwArgumentError(\"invalid bytes length\", \"param\", param);\n }\n return new FixedBytesCoder(size, param.name);\n }\n\n return logger.throwArgumentError(\"invalid type\", \"type\", param.type);\n }\n\n _getWordSize(): number { return 32; }\n\n _getReader(data: Uint8Array, allowLoose?: boolean): Reader {\n return new Reader(data, this._getWordSize(), this.coerceFunc, allowLoose);\n }\n\n _getWriter(): Writer {\n return new Writer(this._getWordSize());\n }\n\n getDefaultValue(types: ReadonlyArray<string | ParamType>): Result {\n const coders: Array<Coder> = types.map((type) => this._getCoder(ParamType.from(type)));\n const coder = new TupleCoder(coders, \"_\");\n return coder.defaultValue();\n }\n\n encode(types: ReadonlyArray<string | ParamType>, values: ReadonlyArray<any>): string {\n if (types.length !== values.length) {\n logger.throwError(\"types/values length mismatch\", Logger.errors.INVALID_ARGUMENT, {\n count: { types: types.length, values: values.length },\n value: { types: types, values: values }\n });\n }\n\n const coders = types.map((type) => this._getCoder(ParamType.from(type)));\n const coder = (new TupleCoder(coders, \"_\"));\n\n const writer = this._getWriter();\n coder.encode(writer, values);\n return writer.data;\n }\n\n decode(types: ReadonlyArray<string | ParamType>, data: BytesLike, loose?: boolean): Result {\n const coders: Array<Coder> = types.map((type) => this._getCoder(ParamType.from(type)));\n const coder = new TupleCoder(coders, \"_\");\n return coder.decode(this._getReader(arrayify(data), loose));\n }\n}\n\nexport const defaultAbiCoder: AbiCoder = new AbiCoder();\n\n","import { keccak256 } from \"@ethersproject/keccak256\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\n\nexport function id(text: string): string {\n return keccak256(toUtf8Bytes(text));\n}\n","export const version = \"hash/5.8.0\";\n","\"use strict\";\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\nexport function decode(textData: string): Uint8Array {\n textData = atob(textData);\n const data = [];\n for (let i = 0; i < textData.length; i++) {\n data.push(textData.charCodeAt(i));\n }\n return arrayify(data);\n}\n\nexport function encode(data: BytesLike): string {\n data = arrayify(data);\n let textData = \"\";\n for (let i = 0; i < data.length; i++) {\n textData += String.fromCharCode(data[i]);\n }\n return btoa(textData);\n}\n\n\n","\"use strict\";\n\nexport { decode, encode } from \"./base64\";\n","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\n\nexport type Numbers = Uint8Array | Array<number>;\nexport type NextFunc = (...args: Array<any>) => number;\n\n// https://github.com/behnammodi/polyfill/blob/master/array.polyfill.js\nfunction flat(array: Array<any>, depth?: number): Array<any> {\n if (depth == null) { depth = 1; }\n const result: Array<any> = [];\n\n const forEach = result.forEach;\n\n const flatDeep = function (arr: Array<any>, depth: number) {\n forEach.call(arr, function (val: any) {\n if (depth > 0 && Array.isArray(val)) {\n flatDeep(val, depth - 1);\n } else {\n result.push(val);\n }\n });\n };\n\n flatDeep(array, depth);\n return result;\n}\n\nfunction fromEntries<T extends string | number | symbol = string | number | symbol, U = any>(array: Array<[T, U]>): Record<T, U> {\n const result: Record<T, U> = <Record<T, U>>{ };\n for (let i = 0; i < array.length; i++) {\n const value = array[i];\n result[value[0]] = value[1];\n }\n return result;\n}\n\nexport function decode_arithmetic(bytes: Numbers): Array<number> {\n\tlet pos = 0;\n\tfunction u16() { return (bytes[pos++] << 8) | bytes[pos++]; }\n\t\n\t// decode the frequency table\n\tlet symbol_count = u16();\n\tlet total = 1;\n\tlet acc = [0, 1]; // first symbol has frequency 1\n\tfor (let i = 1; i < symbol_count; i++) {\n\t\tacc.push(total += u16());\n\t}\n\n\t// skip the sized-payload that the last 3 symbols index into\n\tlet skip = u16();\n\tlet pos_payload = pos;\n\tpos += skip;\n\n\tlet read_width = 0;\n\tlet read_buffer = 0; \n\tfunction read_bit() {\n\t\tif (read_width == 0) {\n\t\t\t// this will read beyond end of buffer\n\t\t\t// but (undefined|0) => zero pad\n\t\t\tread_buffer = (read_buffer << 8) | bytes[pos++];\n\t\t\tread_width = 8;\n\t\t}\n\t\treturn (read_buffer >> --read_width) & 1;\n\t}\n\n\tconst N = 31;\n\tconst FULL = 2**N;\n\tconst HALF = FULL >>> 1;\n\tconst QRTR = HALF >> 1;\n\tconst MASK = FULL - 1;\n\n\t// fill register\n\tlet register = 0;\n\tfor (let i = 0; i < N; i++) register = (register << 1) | read_bit();\n\n\tlet symbols = [];\n\tlet low = 0;\n\tlet range = FULL; // treat like a float\n\twhile (true) {\n\t\tlet value = Math.floor((((register - low + 1) * total) - 1) / range);\n\t\tlet start = 0;\n\t\tlet end = symbol_count;\n\t\twhile (end - start > 1) { // binary search\n\t\t\tlet mid = (start + end) >>> 1;\n\t\t\tif (value < acc[mid]) {\n\t\t\t\tend = mid;\n\t\t\t} else {\n\t\t\t\tstart = mid;\n\t\t\t}\n\t\t}\n\t\tif (start == 0) break; // first symbol is end mark\n\t\tsymbols.push(start);\n\t\tlet a = low + Math.floor(range * acc[start] / total);\n\t\tlet b = low + Math.floor(range * acc[start+1] / total) - 1\n\t\twhile (((a ^ b) & HALF) == 0) {\n\t\t\tregister = (register << 1) & MASK | read_bit();\n\t\t\ta = (a << 1) & MASK;\n\t\t\tb = (b << 1) & MASK | 1;\n\t\t}\n\t\twhile (a & ~b & QRTR) {\n\t\t\tregister = (register & HALF) | ((register << 1) & (MASK >>> 1)) | read_bit();\n\t\t\ta = (a << 1) ^ HALF;\n\t\t\tb = ((b ^ HALF) << 1) | HALF | 1;\n\t\t}\n\t\tlow = a;\n\t\trange = 1 + b - a;\n\t}\n\tlet offset = symbol_count - 4;\n\treturn symbols.map(x => { // index into payload\n\t\tswitch (x - offset) {\n\t\t\tcase 3: return offset + 0x10100 + ((bytes[pos_payload++] << 16) | (bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n\t\t\tcase 2: return offset + 0x100 + ((bytes[pos_payload++] << 8) | bytes[pos_payload++]);\n\t\t\tcase 1: return offset + bytes[pos_payload++];\n\t\t\tdefault: return x - 1;\n\t\t}\n\t});\n}\t\n\n\n// returns an iterator which returns the next symbol\nexport function read_payload(v: Numbers): NextFunc {\n\tlet pos = 0;\n\treturn () => v[pos++];\n}\nexport function read_compressed_payload(bytes: Numbers): NextFunc {\n\treturn read_payload(decode_arithmetic(bytes));\n}\n\n// eg. [0,1,2,3...] => [0,-1,1,-2,...]\nexport function signed(i: number): number { \n\treturn (i & 1) ? (~i >> 1) : (i >> 1);\n}\n\nfunction read_counts(n: number, next: NextFunc): Array<number> {\n\tlet v = Array(n);\n\tfor (let i = 0; i < n; i++) v[i] = 1 + next();\n\treturn v;\n}\n\nfunction read_ascending(n: number, next: NextFunc): Array<number> {\n\tlet v = Array(n);\n\tfor (let i = 0, x = -1; i < n; i++) v[i] = x += 1 + next();\n\treturn v;\n}\n\nfunction read_deltas(n: number, next: NextFunc): Array<number> {\n\tlet v = Array(n);\n\tfor (let i = 0, x = 0; i < n; i++) v[i] = x += signed(next());\n\treturn v;\n}\n\nexport function read_member_array(next: NextFunc, lookup?: Record<number, number>) {\n let v = read_ascending(next(), next);\n let n = next();\n let vX = read_ascending(n, next);\n let vN = read_counts(n, next);\n for (let i = 0; i < n; i++) {\n for (let j = 0; j < vN[i]; j++) {\n v.push(vX[i] + j);\n }\n }\n return lookup ? v.map(x => lookup[x]) : v;\n}\n\n// returns array of \n// [x, ys] => single replacement rule\n// [x, ys, n, dx, dx] => linear map\nexport function read_mapped_map(next: NextFunc): Record<number, Array<number>> {\n\tlet ret = [];\n\twhile (true) {\n\t\tlet w = next();\n\t\tif (w == 0) break;\n\t\tret.push(read_linear_table(w, next));\n\t}\n\twhile (true) {\n\t\tlet w = next() - 1;\n\t\tif (w < 0) break;\n\t\tret.push(read_replacement_table(w, next));\n\t}\n\treturn fromEntries<number, Array<number>>(flat(ret));\n}\n\nexport function read_zero_terminated_array(next: NextFunc): Array<number> {\n\tlet v = [];\n\twhile (true) {\n\t\tlet i = next();\n\t\tif (i == 0) break;\n\t\tv.push(i);\n\t}\n\treturn v;\n}\n\nfunction read_transposed(n: number, w: number, next: NextFunc): Array<Array<number>> {\n let m = Array(n).fill(undefined).map(() => []);\n for (let i = 0; i < w; i++) {\n read_deltas(n, next).forEach((x, j) => m[j].push(x));\n }\n return m;\n}\n\n\nfunction read_linear_table(w: number, next: NextFunc): Array<Array<number | Array<number>>> {\n\tlet dx = 1 + next();\n\tlet dy = next();\n\tlet vN = read_zero_terminated_array(next);\n\tlet m = read_transposed(vN.length, 1+w, next);\n\treturn flat(m.map((v, i) => {\n\t const x = v[0], ys = v.slice(1);\n\t\t//let [x, ...ys] = v;\n\t\t//return Array(vN[i]).fill().map((_, j) => {\n\t\treturn Array(vN[i]).fill(undefined).map((_, j) => {\n\t\t\tlet j_dy = j * dy;\n\t\t\treturn [x + j * dx, ys.map(y => y + j_dy)];\n\t\t});\n\t}));\n}\n\nfunction read_replacement_table(w: number, next: NextFunc): Array<[ number, Array<number> ]> {\n\tlet n = 1 + next();\n\tlet m = read_transposed(n, 1+w, next);\n\treturn m.map(v => [v[0], v.slice(1)]);\n}\n\nexport type Branch = {\n set: Set<number>;\n node: Node;\n};\n\nexport type Node = {\n branches: Array<Branch>;\n valid: number;\n fe0f: boolean;\n save: boolean;\n check: boolean;\n};\n\nexport function read_emoji_trie(next: NextFunc): Node {\n\tlet sorted = read_member_array(next).sort((a, b) => a - b);\n\treturn read();\n\tfunction read(): Node {\n\t\tlet branches = [];\n\t\twhile (true) {\n\t\t\tlet keys = read_member_array(next, sorted);\n\t\t\tif (keys.length == 0) break;\n\t\t\tbranches.push({set: new Set(keys), node: read()});\n\t\t}\n branches.sort((a, b) => b.set.size - a.set.size); // sort by likelihood\n \t\tlet temp = next();\n \t\tlet valid = temp % 3;\n \t\ttemp = (temp / 3)|0;\n \t\tlet fe0f = !!(temp & 1);\n \t\ttemp >>= 1;\n \t\tlet save = temp == 1;\n \t\tlet check = temp == 2;\n \t\treturn {branches, valid, fe0f, save, check};\n\t}\n}\n","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\n\nimport { decode } from \"@ethersproject/base64\";\n\nimport {read_compressed_payload} from './decoder.js';\n\nexport function getData(): () => number {\n return read_compressed_payload(decode('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'));\n}\n\n","/**\n * MIT License\n *\n * Copyright (c) 2021 Andrew Raffensperger\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * This is a near carbon-copy of the original source (link below) with the\n * TypeScript typings added and a few tweaks to make it ES3-compatible.\n *\n * See: https://github.com/adraffy/ens-normalize.js\n */\n\nimport { toUtf8CodePoints } from \"@ethersproject/strings\";\n\nimport { getData } from './include.js';\nconst r = getData();\n\nimport {read_member_array, read_mapped_map, read_emoji_trie} from './decoder.js';\n\n// @TODO: This should be lazily loaded\n\nconst VALID = new Set(read_member_array(r));\nconst IGNORED = new Set(read_member_array(r));\nconst MAPPED = read_mapped_map(r);\nconst EMOJI_ROOT = read_emoji_trie(r);\n//const NFC_CHECK = new Set(read_member_array(r, Array.from(VALID.values()).sort((a, b) => a - b)));\n\n//const STOP = 0x2E;\nconst HYPHEN = 0x2D;\nconst UNDERSCORE = 0x5F;\n\nfunction explode_cp(name: string): Array<number> {\n return toUtf8CodePoints(name);\n}\n\nfunction filter_fe0f(cps: Array<number>): Array<number> {\n return cps.filter(cp => cp != 0xFE0F);\n}\n\nexport function ens_normalize_post_check(name: string): string {\n\tfor (let label of name.split('.')) {\n\t\tlet cps = explode_cp(label);\n\t\ttry {\n\t\t\tfor (let i = cps.lastIndexOf(UNDERSCORE) - 1; i >= 0; i--) {\n\t\t\t\tif (cps[i] !== UNDERSCORE) {\n\t\t\t\t\tthrow new Error(`underscore only allowed at start`);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (cps.length >= 4 && cps.every(cp => cp < 0x80) && cps[2] === HYPHEN && cps[3] === HYPHEN) {\n\t\t\t\tthrow new Error(`invalid label extension`);\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tthrow new Error(`Invalid label \"${label}\": ${err.message}`);\n\t\t}\n\t}\n\treturn name;\n}\n\nexport function ens_normalize(name: string): string {\n\treturn ens_normalize_post_check(normalize(name, filter_fe0f));\n}\n\nfunction normalize(name: string, emoji_filter: (a: Array<number>) => Array<number>): string {\n\tlet input = explode_cp(name).reverse(); // flip for pop\n\tlet output = [];\n\twhile (input.length) {\t\t\n\t\tlet emoji = consume_emoji_reversed(input);\n\t\tif (emoji) {\n\t\t\toutput.push(...emoji_filter(emoji));\n\t\t\tcontinue;\n\t\t}\n\t\tlet cp = input.pop();\n\t\tif (VALID.has(cp)) {\n\t\t\toutput.push(cp);\n\t\t\tcontinue;\n\t\t} \n\t\tif (IGNORED.has(cp)) {\n\t\t\tcontinue;\n\t\t}\n\t\tlet cps = MAPPED[cp];\n\t\tif (cps) {\n\t\t\toutput.push(...cps);\n\t\t\tcontinue;\n\t\t}\n\t\tthrow new Error(`Disallowed codepoint: 0x${cp.toString(16).toUpperCase()}`);\n\t}\n\treturn ens_normalize_post_check(nfc(String.fromCodePoint(...output)));\n}\n\nfunction nfc(s: string): string {\n return s.normalize('NFC');\n}\n\nfunction consume_emoji_reversed(cps: Array<number>, eaten?: Array<number>) {\n\tlet node = EMOJI_ROOT;\n\tlet emoji;\n\tlet saved;\n\tlet stack = [];\n\tlet pos = cps.length;\n\tif (eaten) eaten.length = 0; // clear input buffer (if needed)\n\twhile (pos) {\n\t\tlet cp = cps[--pos];\n\t\tnode = node.branches.find(x => x.set.has(cp))?.node;\n\t\tif (!node) break;\n\t\tif (node.save) { // remember\n\t\t\tsaved = cp;\n\t\t} else if (node.check) { // check exclusion\n\t\t\tif (cp === saved) break;\n\t\t}\n\t\tstack.push(cp);\n\t\tif (node.fe0f) {\n\t\t\tstack.push(0xFE0F);\n\t\t\tif (pos > 0 && cps[pos - 1] == 0xFE0F) pos--; // consume optional FE0F\n\t\t}\n\t\tif (node.valid) { // this is a valid emoji (so far)\n\t\t\temoji = stack.slice(); // copy stack\n\t\t\tif (node.valid == 2) emoji.splice(1, 1); // delete FE0F at position 1 (RGI ZWJ don't follow spec!)\n\t\t\tif (eaten) eaten.push(...cps.slice(pos).reverse()); // copy input (if needed)\n\t\t\tcps.length = pos; // truncate\n\t\t}\n\t}\n\treturn emoji;\n}\n","import { concat, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { ens_normalize } from \"./ens-normalize/lib\";\n\nconst Zeros = new Uint8Array(32);\nZeros.fill(0);\n\nfunction checkComponent(comp: Uint8Array): Uint8Array {\n if (comp.length === 0) { throw new Error(\"invalid ENS name; empty component\"); }\n return comp;\n}\n\nfunction ensNameSplit(name: string): Array<Uint8Array> {\n const bytes = toUtf8Bytes(ens_normalize(name));\n const comps: Array<Uint8Array> = [ ];\n\n if (name.length === 0) { return comps; }\n\n let last = 0;\n for (let i = 0; i < bytes.length; i++) {\n const d = bytes[i];\n\n // A separator (i.e. \".\"); copy this component\n if (d === 0x2e) {\n comps.push(checkComponent(bytes.slice(last, i)));\n last = i + 1;\n }\n }\n\n // There was a stray separator at the end of the name\n if (last >= bytes.length) { throw new Error(\"invalid ENS name; empty component\"); }\n\n comps.push(checkComponent(bytes.slice(last)));\n return comps;\n}\n\nexport function ensNormalize(name: string): string {\n return ensNameSplit(name).map((comp) => toUtf8String(comp)).join(\".\");\n}\n\nexport function isValidName(name: string): boolean {\n try {\n return (ensNameSplit(name).length !== 0);\n } catch (error) { }\n return false;\n}\n\nexport function namehash(name: string): string {\n /* istanbul ignore if */\n if (typeof(name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name; not a string\", \"name\", name);\n }\n\n let result: string | Uint8Array = Zeros;\n\n const comps = ensNameSplit(name);\n while (comps.length) {\n result = keccak256(concat([result, keccak256(comps.pop())]));\n }\n\n return hexlify(result);\n}\n\nexport function dnsEncode(name: string): string {\n return hexlify(concat(ensNameSplit(name).map((comp) => {\n // DNS does not allow components over 63 bytes in length\n if (comp.length > 63) {\n throw new Error(\"invalid DNS encoded entry; length exceeds 63 bytes\");\n }\n\n const bytes = new Uint8Array(comp.length + 1);\n bytes.set(comp, 1);\n bytes[0] = bytes.length - 1;\n return bytes;\n\n }))) + \"00\";\n}\n","import { Bytes, concat } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\n\nexport const messagePrefix = \"\\x19Ethereum Signed Message:\\n\";\n\nexport function hashMessage(message: Bytes | string): string {\n if (typeof(message) === \"string\") { message = toUtf8Bytes(message); }\n return keccak256(concat([\n toUtf8Bytes(messagePrefix),\n toUtf8Bytes(String(message.length)),\n message\n ]));\n}\n\n","import { TypedDataDomain, TypedDataField } from \"@ethersproject/abstract-signer\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, hexConcat, hexlify, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { deepCopy, defineReadOnly, shallowCopy } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { id } from \"./id\";\n\nconst padding = new Uint8Array(32);\npadding.fill(0);\n\nconst NegativeOne: BigNumber = BigNumber.from(-1);\nconst Zero: BigNumber = BigNumber.from(0);\nconst One: BigNumber = BigNumber.from(1);\nconst MaxUint256: BigNumber = BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\n\nfunction hexPadRight(value: BytesLike) {\n const bytes = arrayify(value);\n const padOffset = bytes.length % 32\n if (padOffset) {\n return hexConcat([ bytes, padding.slice(padOffset) ]);\n }\n return hexlify(bytes);\n}\n\nconst hexTrue = hexZeroPad(One.toHexString(), 32);\nconst hexFalse = hexZeroPad(Zero.toHexString(), 32);\n\nconst domainFieldTypes: Record<string, string> = {\n name: \"string\",\n version: \"string\",\n chainId: \"uint256\",\n verifyingContract: \"address\",\n salt: \"bytes32\"\n};\n\nconst domainFieldNames: Array<string> = [\n \"name\", \"version\", \"chainId\", \"verifyingContract\", \"salt\"\n];\n\nfunction checkString(key: string): (value: any) => string {\n return function (value: any){\n if (typeof(value) !== \"string\") {\n logger.throwArgumentError(`invalid domain value for ${ JSON.stringify(key) }`, `domain.${ key }`, value);\n }\n return value;\n }\n}\n\nconst domainChecks: Record<string, (value: any) => any> = {\n name: checkString(\"name\"),\n version: checkString(\"version\"),\n chainId: function(value: any) {\n try {\n return BigNumber.from(value).toString()\n } catch (error) { }\n return logger.throwArgumentError(`invalid domain value for \"chainId\"`, \"domain.chainId\", value);\n },\n verifyingContract: function(value: any) {\n try {\n return getAddress(value).toLowerCase();\n } catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"verifyingContract\"`, \"domain.verifyingContract\", value);\n },\n salt: function(value: any) {\n try {\n const bytes = arrayify(value);\n if (bytes.length !== 32) { throw new Error(\"bad length\"); }\n return hexlify(bytes);\n } catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"salt\"`, \"domain.salt\", value);\n }\n}\n\nfunction getBaseEncoder(type: string): (value: any) => string {\n // intXX and uintXX\n {\n const match = type.match(/^(u?)int(\\d*)$/);\n if (match) {\n const signed = (match[1] === \"\");\n\n const width = parseInt(match[2] || \"256\");\n if (width % 8 !== 0 || width > 256 || (match[2] && match[2] !== String(width))) {\n logger.throwArgumentError(\"invalid numeric width\", \"type\", type);\n }\n\n const boundsUpper = MaxUint256.mask(signed ? (width - 1): width);\n const boundsLower = signed ? boundsUpper.add(One).mul(NegativeOne): Zero;\n\n return function(value: BigNumberish) {\n const v = BigNumber.from(value);\n\n if (v.lt(boundsLower) || v.gt(boundsUpper)) {\n logger.throwArgumentError(`value out-of-bounds for ${ type }`, \"value\", value);\n }\n\n return hexZeroPad(v.toTwos(256).toHexString(), 32);\n };\n }\n }\n\n // bytesXX\n {\n const match = type.match(/^bytes(\\d+)$/);\n if (match) {\n const width = parseInt(match[1]);\n if (width === 0 || width > 32 || match[1] !== String(width)) {\n logger.throwArgumentError(\"invalid bytes width\", \"type\", type);\n }\n\n return function(value: BytesLike) {\n const bytes = arrayify(value);\n if (bytes.length !== width) {\n logger.throwArgumentError(`invalid length for ${ type }`, \"value\", value);\n }\n return hexPadRight(value);\n };\n }\n }\n\n switch (type) {\n case \"address\": return function(value: string) {\n return hexZeroPad(getAddress(value), 32);\n };\n case \"bool\": return function(value: boolean) {\n return ((!value) ? hexFalse: hexTrue);\n };\n case \"bytes\": return function(value: BytesLike) {\n return keccak256(value);\n };\n case \"string\": return function(value: string) {\n return id(value);\n };\n }\n\n return null;\n}\n\nfunction encodeType(name: string, fields: Array<TypedDataField>): string {\n return `${ name }(${ fields.map(({ name, type }) => (type + \" \" + name)).join(\",\") })`;\n}\n\nexport class TypedDataEncoder {\n readonly primaryType: string;\n readonly types: Record<string, Array<TypedDataField>>;\n\n readonly _encoderCache: Record<string, (value: any) => string>;\n readonly _types: Record<string, string>;\n\n constructor(types: Record<string, Array<TypedDataField>>) {\n defineReadOnly(this, \"types\", Object.freeze(deepCopy(types)));\n\n defineReadOnly(this, \"_encoderCache\", { });\n defineReadOnly(this, \"_types\", { });\n\n // Link struct types to their direct child structs\n const links: Record<string, Record<string, boolean>> = { };\n\n // Link structs to structs which contain them as a child\n const parents: Record<string, Array<string>> = { };\n\n // Link all subtypes within a given struct\n const subtypes: Record<string, Record<string, boolean>> = { };\n\n Object.keys(types).forEach((type) => {\n links[type] = { };\n parents[type] = [ ];\n subtypes[type] = { }\n });\n\n for (const name in types) {\n\n const uniqueNames: Record<string, boolean> = { };\n\n types[name].forEach((field) => {\n\n // Check each field has a unique name\n if (uniqueNames[field.name]) {\n logger.throwArgumentError(`duplicate variable name ${ JSON.stringify(field.name) } in ${ JSON.stringify(name) }`, \"types\", types);\n }\n uniqueNames[field.name] = true;\n\n // Get the base type (drop any array specifiers)\n const baseType = field.type.match(/^([^\\x5b]*)(\\x5b|$)/)[1];\n if (baseType === name) {\n logger.throwArgumentError(`circular type reference to ${ JSON.stringify(baseType) }`, \"types\", types);\n }\n\n // Is this a base encoding type?\n const encoder = getBaseEncoder(baseType);\n if (encoder) { return ;}\n\n if (!parents[baseType]) {\n logger.throwArgumentError(`unknown type ${ JSON.stringify(baseType) }`, \"types\", types);\n }\n\n // Add linkage\n parents[baseType].push(name);\n links[name][baseType] = true;\n });\n }\n\n // Deduce the primary type\n const primaryTypes = Object.keys(parents).filter((n) => (parents[n].length === 0));\n\n if (primaryTypes.length === 0) {\n logger.throwArgumentError(\"missing primary type\", \"types\", types);\n } else if (primaryTypes.length > 1) {\n logger.throwArgumentError(`ambiguous primary types or unused types: ${ primaryTypes.map((t) => (JSON.stringify(t))).join(\", \") }`, \"types\", types);\n }\n\n defineReadOnly(this, \"primaryType\", primaryTypes[0]);\n\n // Check for circular type references\n function checkCircular(type: string, found: Record<string, boolean>) {\n if (found[type]) {\n logger.throwArgumentError(`circular type reference to ${ JSON.stringify(type) }`, \"types\", types);\n }\n\n found[type] = true;\n\n Object.keys(links[type]).forEach((child) => {\n if (!parents[child]) { return; }\n\n // Recursively check children\n checkCircular(child, found);\n\n // Mark all ancestors as having this decendant\n Object.keys(found).forEach((subtype) => {\n subtypes[subtype][child] = true;\n });\n });\n\n delete found[type];\n }\n checkCircular(this.primaryType, { });\n\n // Compute each fully describe type\n for (const name in subtypes) {\n const st = Object.keys(subtypes[name]);\n st.sort();\n this._types[name] = encodeType(name, types[name]) + st.map((t) => encodeType(t, types[t])).join(\"\");\n }\n }\n\n getEncoder(type: string): (value: any) => string {\n let encoder = this._encoderCache[type];\n if (!encoder) {\n encoder = this._encoderCache[type] = this._getEncoder(type);\n }\n return encoder;\n }\n\n _getEncoder(type: string): (value: any) => string {\n\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) { return encoder; }\n }\n\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const subEncoder = this.getEncoder(subtype);\n const length = parseInt(match[3]);\n return (value: Array<any>) => {\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n\n let result = value.map(subEncoder);\n if (this._types[subtype]) {\n result = result.map(keccak256);\n }\n\n return keccak256(hexConcat(result));\n };\n }\n\n // Struct\n const fields = this.types[type];\n if (fields) {\n const encodedType = id(this._types[type]);\n return (value: Record<string, any>) => {\n const values = fields.map(({ name, type }) => {\n const result = this.getEncoder(type)(value[name]);\n if (this._types[type]) { return keccak256(result); }\n return result;\n });\n values.unshift(encodedType);\n return hexConcat(values);\n }\n }\n\n return logger.throwArgumentError(`unknown type: ${ type }`, \"type\", type);\n }\n\n encodeType(name: string): string {\n const result = this._types[name];\n if (!result) {\n logger.throwArgumentError(`unknown type: ${ JSON.stringify(name) }`, \"name\", name);\n }\n return result;\n }\n\n encodeData(type: string, value: any): string {\n return this.getEncoder(type)(value);\n }\n\n hashStruct(name: string, value: Record<string, any>): string {\n return keccak256(this.encodeData(name, value));\n }\n\n encode(value: Record<string, any>): string {\n return this.encodeData(this.primaryType, value);\n }\n\n hash(value: Record<string, any>): string {\n return this.hashStruct(this.primaryType, value);\n }\n\n _visit(type: string, value: any, callback: (type: string, data: any) => any): any {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) { return callback(type, value); }\n }\n\n // Array\n const match = type.match(/^(.*)(\\x5b(\\d*)\\x5d)$/);\n if (match) {\n const subtype = match[1];\n const length = parseInt(match[3]);\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n return value.map((v: any) => this._visit(subtype, v, callback));\n }\n\n // Struct\n const fields = this.types[type];\n if (fields) {\n return fields.reduce((accum, { name, type }) => {\n accum[name] = this._visit(type, value[name], callback);\n return accum;\n }, <Record<string, any>>{});\n }\n\n return logger.throwArgumentError(`unknown type: ${ type }`, \"type\", type);\n }\n\n visit(value: Record<string, any>, callback: (type: string, data: any) => any): any {\n return this._visit(this.primaryType, value, callback);\n }\n\n static from(types: Record<string, Array<TypedDataField>>): TypedDataEncoder {\n return new TypedDataEncoder(types);\n }\n\n static getPrimaryType(types: Record<string, Array<TypedDataField>>): string {\n return TypedDataEncoder.from(types).primaryType;\n }\n\n static hashStruct(name: string, types: Record<string, Array<TypedDataField>>, value: Record<string, any>): string {\n return TypedDataEncoder.from(types).hashStruct(name, value);\n }\n\n static hashDomain(domain: TypedDataDomain): string {\n const domainFields: Array<TypedDataField> = [ ];\n for (const name in domain) {\n const type = domainFieldTypes[name];\n if (!type) {\n logger.throwArgumentError(`invalid typed-data domain key: ${ JSON.stringify(name) }`, \"domain\", domain);\n }\n domainFields.push({ name, type });\n }\n\n domainFields.sort((a, b) => {\n return domainFieldNames.indexOf(a.name) - domainFieldNames.indexOf(b.name);\n });\n\n return TypedDataEncoder.hashStruct(\"EIP712Domain\", { EIP712Domain: domainFields }, domain);\n }\n\n static encode(domain: TypedDataDomain, types: Record<string, Array<TypedDataField>>, value: Record<string, any>): string {\n return hexConcat([\n \"0x1901\",\n TypedDataEncoder.hashDomain(domain),\n TypedDataEncoder.from(types).hash(value)\n ]);\n }\n\n static hash(domain: TypedDataDomain, types: Record<string, Array<TypedDataField>>, value: Record<string, any>): string {\n return keccak256(TypedDataEncoder.encode(domain, types, value));\n }\n\n // Replaces all address types with ENS names with their looked up address\n static async resolveNames(domain: TypedDataDomain, types: Record<string, Array<TypedDataField>>, value: Record<string, any>, resolveName: (name: string) => Promise<string>): Promise<{ domain: TypedDataDomain, value: any }> {\n // Make a copy to isolate it from the object passed in\n domain = shallowCopy(domain);\n\n // Look up all ENS names\n const ensCache: Record<string, string> = { };\n\n // Do we need to look up the domain's verifyingContract?\n if (domain.verifyingContract && !isHexString(domain.verifyingContract, 20)) {\n ensCache[domain.verifyingContract] = \"0x\";\n }\n\n // We are going to use the encoder to visit all the base values\n const encoder = TypedDataEncoder.from(types);\n\n // Get a list of all the addresses\n encoder.visit(value, (type: string, value: any) => {\n if (type === \"address\" && !isHexString(value, 20)) {\n ensCache[value] = \"0x\";\n }\n return value;\n });\n\n // Lookup each name\n for (const name in ensCache) {\n ensCache[name] = await resolveName(name);\n }\n\n // Replace the domain verifyingContract if needed\n if (domain.verifyingContract && ensCache[domain.verifyingContract]) {\n domain.verifyingContract = ensCache[domain.verifyingContract];\n }\n\n // Replace all ENS names with their address\n value = encoder.visit(value, (type: string, value: any) => {\n if (type === \"address\" && ensCache[value]) { return ensCache[value]; }\n return value;\n });\n\n return { domain, value };\n }\n\n static getPayload(domain: TypedDataDomain, types: Record<string, Array<TypedDataField>>, value: Record<string, any>): any {\n // Validate the domain fields\n TypedDataEncoder.hashDomain(domain);\n\n // Derive the EIP712Domain Struct reference type\n const domainValues: Record<string, any> = { };\n const domainTypes: Array<{ name: string, type:string }> = [ ];\n\n domainFieldNames.forEach((name) => {\n const value = (<any>domain)[name];\n if (value == null) { return; }\n domainValues[name] = domainChecks[name](value);\n domainTypes.push({ name, type: domainFieldTypes[name] });\n });\n\n const encoder = TypedDataEncoder.from(types);\n\n const typesWithDomain = shallowCopy(types);\n if (typesWithDomain.EIP712Domain) {\n logger.throwArgumentError(\"types must not contain EIP712Domain type\", \"types.EIP712Domain\", types);\n } else {\n typesWithDomain.EIP712Domain = domainTypes;\n }\n\n // Validate the data structures and types\n encoder.encode(value);\n\n return {\n types: typesWithDomain,\n domain: domainValues,\n primaryType: encoder.primaryType,\n message: encoder.visit(value, (type: string, value: any) => {\n\n // bytes\n if (type.match(/^bytes(\\d*)/)) {\n return hexlify(arrayify(value));\n }\n\n // uint or int\n if (type.match(/^u?int/)) {\n return BigNumber.from(value).toString();\n }\n\n switch (type) {\n case \"address\":\n return value.toLowerCase();\n case \"bool\":\n return !!value;\n case \"string\":\n if (typeof(value) !== \"string\") {\n logger.throwArgumentError(`invalid string`, \"value\", value);\n }\n return value;\n }\n\n return logger.throwArgumentError(\"unsupported type\", \"type\", type);\n })\n };\n }\n}\n\n","\"use strict\";\n\nimport { id } from \"./id\";\nimport { dnsEncode, isValidName, namehash } from \"./namehash\";\nimport { hashMessage, messagePrefix } from \"./message\";\n\nimport { ensNormalize } from \"./namehash\";\n\nimport { TypedDataEncoder as _TypedDataEncoder } from \"./typed-data\";\n\nexport {\n id,\n\n dnsEncode,\n namehash,\n isValidName,\n\n ensNormalize,\n\n messagePrefix,\n hashMessage,\n\n _TypedDataEncoder,\n}\n","\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, concat, hexDataSlice, hexlify, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { id } from \"@ethersproject/hash\";\nimport { keccak256 } from \"@ethersproject/keccak256\"\nimport { defineReadOnly, Description, getStatic } from \"@ethersproject/properties\";\n\nimport { AbiCoder, defaultAbiCoder } from \"./abi-coder\";\nimport { checkResultErrors, Result } from \"./coders/abstract-coder\";\nimport { ConstructorFragment, ErrorFragment, EventFragment, FormatTypes, Fragment, FunctionFragment, JsonFragment, ParamType } from \"./fragments\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport { checkResultErrors, Result };\n\nexport class LogDescription extends Description<LogDescription> {\n readonly eventFragment: EventFragment;\n readonly name: string;\n readonly signature: string;\n readonly topic: string;\n readonly args: Result\n}\n\nexport class TransactionDescription extends Description<TransactionDescription> {\n readonly functionFragment: FunctionFragment;\n readonly name: string;\n readonly args: Result;\n readonly signature: string;\n readonly sighash: string;\n readonly value: BigNumber;\n}\n\nexport class ErrorDescription extends Description<ErrorDescription> {\n readonly errorFragment: ErrorFragment;\n readonly name: string;\n readonly args: Result;\n readonly signature: string;\n readonly sighash: string;\n}\n\nexport class Indexed extends Description<Indexed> {\n readonly hash: string;\n readonly _isIndexed: boolean;\n\n static isIndexed(value: any): value is Indexed {\n return !!(value && value._isIndexed);\n }\n}\n\nconst BuiltinErrors: Record<string, { signature: string, inputs: Array<string>, name: string, reason?: boolean }> = {\n \"0x08c379a0\": { signature: \"Error(string)\", name: \"Error\", inputs: [ \"string\" ], reason: true },\n \"0x4e487b71\": { signature: \"Panic(uint256)\", name: \"Panic\", inputs: [ \"uint256\" ] }\n}\n\nfunction wrapAccessError(property: string, error: Error): Error {\n const wrap = new Error(`deferred error during ABI decoding triggered accessing ${ property }`);\n (<any>wrap).error = error;\n return wrap;\n}\n\n/*\nfunction checkNames(fragment: Fragment, type: \"input\" | \"output\", params: Array<ParamType>): void {\n params.reduce((accum, param) => {\n if (param.name) {\n if (accum[param.name]) {\n logger.throwArgumentError(`duplicate ${ type } parameter ${ JSON.stringify(param.name) } in ${ fragment.format(\"full\") }`, \"fragment\", fragment);\n }\n accum[param.name] = true;\n }\n return accum;\n }, <{ [ name: string ]: boolean }>{ });\n}\n*/\nexport class Interface {\n readonly fragments: ReadonlyArray<Fragment>;\n\n readonly errors: { [ name: string ]: ErrorFragment };\n readonly events: { [ name: string ]: EventFragment };\n readonly functions: { [ name: string ]: FunctionFragment };\n readonly structs: { [ name: string ]: any };\n\n readonly deploy: ConstructorFragment;\n\n readonly _abiCoder: AbiCoder;\n\n readonly _isInterface: boolean;\n\n constructor(fragments: string | ReadonlyArray<Fragment | JsonFragment | string>) {\n let abi: ReadonlyArray<Fragment | JsonFragment | string> = [ ];\n if (typeof(fragments) === \"string\") {\n abi = JSON.parse(fragments);\n } else {\n abi = fragments;\n }\n\n defineReadOnly(this, \"fragments\", abi.map((fragment) => {\n return Fragment.from(fragment);\n }).filter((fragment) => (fragment != null)));\n\n defineReadOnly(this, \"_abiCoder\", getStatic<() => AbiCoder>(new.target, \"getAbiCoder\")());\n\n defineReadOnly(this, \"functions\", { });\n defineReadOnly(this, \"errors\", { });\n defineReadOnly(this, \"events\", { });\n defineReadOnly(this, \"structs\", { });\n\n // Add all fragments by their signature\n this.fragments.forEach((fragment) => {\n let bucket: { [ name: string ]: Fragment } = null;\n switch (fragment.type) {\n case \"constructor\":\n if (this.deploy) {\n logger.warn(\"duplicate definition - constructor\");\n return;\n }\n //checkNames(fragment, \"input\", fragment.inputs);\n defineReadOnly(this, \"deploy\", <ConstructorFragment>fragment);\n return;\n case \"function\":\n //checkNames(fragment, \"input\", fragment.inputs);\n //checkNames(fragment, \"output\", (<FunctionFragment>fragment).outputs);\n bucket = this.functions;\n break;\n case \"event\":\n //checkNames(fragment, \"input\", fragment.inputs);\n bucket = this.events;\n break;\n case \"error\":\n bucket = this.errors;\n break;\n default:\n return;\n }\n\n let signature = fragment.format();\n if (bucket[signature]) {\n logger.warn(\"duplicate definition - \" + signature);\n return;\n }\n\n bucket[signature] = fragment;\n });\n\n // If we do not have a constructor add a default\n if (!this.deploy) {\n defineReadOnly(this, \"deploy\", ConstructorFragment.from({\n payable: false,\n type: \"constructor\"\n }));\n }\n\n defineReadOnly(this, \"_isInterface\", true);\n }\n\n format(format?: string): string | Array<string> {\n if (!format) { format = FormatTypes.full; }\n if (format === FormatTypes.sighash) {\n logger.throwArgumentError(\"interface does not support formatting sighash\", \"format\", format);\n }\n\n const abi = this.fragments.map((fragment) => fragment.format(format));\n\n // We need to re-bundle the JSON fragments a bit\n if (format === FormatTypes.json) {\n return JSON.stringify(abi.map((j) => JSON.parse(j)));\n }\n\n return abi;\n }\n\n // Sub-classes can override these to handle other blockchains\n static getAbiCoder(): AbiCoder {\n return defaultAbiCoder;\n }\n\n static getAddress(address: string): string {\n return getAddress(address);\n }\n\n static getSighash(fragment: ErrorFragment | FunctionFragment): string {\n return hexDataSlice(id(fragment.format()), 0, 4);\n }\n\n static getEventTopic(eventFragment: EventFragment): string {\n return id(eventFragment.format());\n }\n\n // Find a function definition by any means necessary (unless it is ambiguous)\n getFunction(nameOrSignatureOrSighash: string): FunctionFragment {\n if (isHexString(nameOrSignatureOrSighash)) {\n for (const name in this.functions) {\n if (nameOrSignatureOrSighash === this.getSighash(name)) {\n return this.functions[name];\n }\n }\n logger.throwArgumentError(\"no matching function\", \"sighash\", nameOrSignatureOrSighash);\n }\n\n // It is a bare name, look up the function (will return null if ambiguous)\n if (nameOrSignatureOrSighash.indexOf(\"(\") === -1) {\n const name = nameOrSignatureOrSighash.trim();\n const matching = Object.keys(this.functions).filter((f) => (f.split(\"(\"/* fix:) */)[0] === name));\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching function\", \"name\", name);\n } else if (matching.length > 1) {\n logger.throwArgumentError(\"multiple matching functions\", \"name\", name);\n }\n\n return this.functions[matching[0]];\n }\n\n // Normalize the signature and lookup the function\n const result = this.functions[FunctionFragment.fromString(nameOrSignatureOrSighash).format()];\n if (!result) {\n logger.throwArgumentError(\"no matching function\", \"signature\", nameOrSignatureOrSighash);\n }\n return result;\n }\n\n // Find an event definition by any means necessary (unless it is ambiguous)\n getEvent(nameOrSignatureOrTopic: string): EventFragment {\n if (isHexString(nameOrSignatureOrTopic)) {\n const topichash = nameOrSignatureOrTopic.toLowerCase();\n for (const name in this.events) {\n if (topichash === this.getEventTopic(name)) {\n return this.events[name];\n }\n }\n logger.throwArgumentError(\"no matching event\", \"topichash\", topichash);\n }\n\n // It is a bare name, look up the function (will return null if ambiguous)\n if (nameOrSignatureOrTopic.indexOf(\"(\") === -1) {\n const name = nameOrSignatureOrTopic.trim();\n const matching = Object.keys(this.events).filter((f) => (f.split(\"(\"/* fix:) */)[0] === name));\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching event\", \"name\", name);\n } else if (matching.length > 1) {\n logger.throwArgumentError(\"multiple matching events\", \"name\", name);\n }\n\n return this.events[matching[0]];\n }\n\n // Normalize the signature and lookup the function\n const result = this.events[EventFragment.fromString(nameOrSignatureOrTopic).format()];\n if (!result) {\n logger.throwArgumentError(\"no matching event\", \"signature\", nameOrSignatureOrTopic);\n }\n return result;\n }\n\n // Find a function definition by any means necessary (unless it is ambiguous)\n getError(nameOrSignatureOrSighash: string): ErrorFragment {\n if (isHexString(nameOrSignatureOrSighash)) {\n const getSighash = getStatic<(f: ErrorFragment | FunctionFragment) => string>(this.constructor, \"getSighash\");\n for (const name in this.errors) {\n const error = this.errors[name];\n if (nameOrSignatureOrSighash === getSighash(error)) {\n return this.errors[name];\n }\n }\n logger.throwArgumentError(\"no matching error\", \"sighash\", nameOrSignatureOrSighash);\n }\n\n // It is a bare name, look up the function (will return null if ambiguous)\n if (nameOrSignatureOrSighash.indexOf(\"(\") === -1) {\n const name = nameOrSignatureOrSighash.trim();\n const matching = Object.keys(this.errors).filter((f) => (f.split(\"(\"/* fix:) */)[0] === name));\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching error\", \"name\", name);\n } else if (matching.length > 1) {\n logger.throwArgumentError(\"multiple matching errors\", \"name\", name);\n }\n\n return this.errors[matching[0]];\n }\n\n // Normalize the signature and lookup the function\n const result = this.errors[FunctionFragment.fromString(nameOrSignatureOrSighash).format()];\n if (!result) {\n logger.throwArgumentError(\"no matching error\", \"signature\", nameOrSignatureOrSighash);\n }\n return result;\n }\n\n // Get the sighash (the bytes4 selector) used by Solidity to identify a function\n getSighash(fragment: ErrorFragment | FunctionFragment | string): string {\n if (typeof(fragment) === \"string\") {\n try {\n fragment = this.getFunction(fragment);\n } catch (error) {\n try {\n fragment = this.getError(<string>fragment);\n } catch (_) {\n throw error;\n }\n }\n }\n\n return getStatic<(f: ErrorFragment | FunctionFragment) => string>(this.constructor, \"getSighash\")(fragment);\n }\n\n // Get the topic (the bytes32 hash) used by Solidity to identify an event\n getEventTopic(eventFragment: EventFragment | string): string {\n if (typeof(eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n\n return getStatic<(e: EventFragment) => string>(this.constructor, \"getEventTopic\")(eventFragment);\n }\n\n\n _decodeParams(params: ReadonlyArray<ParamType>, data: BytesLike): Result {\n return this._abiCoder.decode(params, data)\n }\n\n _encodeParams(params: ReadonlyArray<ParamType>, values: ReadonlyArray<any>): string {\n return this._abiCoder.encode(params, values)\n }\n\n encodeDeploy(values?: ReadonlyArray<any>): string {\n return this._encodeParams(this.deploy.inputs, values || [ ]);\n }\n\n decodeErrorResult(fragment: ErrorFragment | string, data: BytesLike): Result {\n if (typeof(fragment) === \"string\") {\n fragment = this.getError(fragment);\n }\n\n const bytes = arrayify(data);\n\n if (hexlify(bytes.slice(0, 4)) !== this.getSighash(fragment)) {\n logger.throwArgumentError(`data signature does not match error ${ fragment.name }.`, \"data\", hexlify(bytes));\n }\n\n return this._decodeParams(fragment.inputs, bytes.slice(4));\n }\n\n encodeErrorResult(fragment: ErrorFragment | string, values?: ReadonlyArray<any>): string {\n if (typeof(fragment) === \"string\") {\n fragment = this.getError(fragment);\n }\n\n return hexlify(concat([\n this.getSighash(fragment),\n this._encodeParams(fragment.inputs, values || [ ])\n ]));\n }\n\n // Decode the data for a function call (e.g. tx.data)\n decodeFunctionData(functionFragment: FunctionFragment | string, data: BytesLike): Result {\n if (typeof(functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n\n const bytes = arrayify(data);\n\n if (hexlify(bytes.slice(0, 4)) !== this.getSighash(functionFragment)) {\n logger.throwArgumentError(`data signature does not match function ${ functionFragment.name }.`, \"data\", hexlify(bytes));\n }\n\n return this._decodeParams(functionFragment.inputs, bytes.slice(4));\n }\n\n // Encode the data for a function call (e.g. tx.data)\n encodeFunctionData(functionFragment: FunctionFragment | string, values?: ReadonlyArray<any>): string {\n if (typeof(functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n\n return hexlify(concat([\n this.getSighash(functionFragment),\n this._encodeParams(functionFragment.inputs, values || [ ])\n ]));\n }\n\n // Decode the result from a function call (e.g. from eth_call)\n decodeFunctionResult(functionFragment: FunctionFragment | string, data: BytesLike): Result {\n if (typeof(functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n\n let bytes = arrayify(data);\n\n let reason: string = null;\n let message = \"\";\n let errorArgs: Result = null;\n let errorName: string = null;\n let errorSignature: string = null;\n switch (bytes.length % this._abiCoder._getWordSize()) {\n case 0:\n try {\n return this._abiCoder.decode(functionFragment.outputs, bytes);\n } catch (error) { }\n break;\n\n case 4: {\n const selector = hexlify(bytes.slice(0, 4));\n const builtin = BuiltinErrors[selector];\n if (builtin) {\n errorArgs = this._abiCoder.decode(builtin.inputs, bytes.slice(4));\n errorName = builtin.name;\n errorSignature = builtin.signature;\n if (builtin.reason) { reason = errorArgs[0]; }\n if (errorName === \"Error\") {\n message = `; VM Exception while processing transaction: reverted with reason string ${ JSON.stringify(errorArgs[0]) }`;\n } else if (errorName === \"Panic\") {\n message = `; VM Exception while processing transaction: reverted with panic code ${ errorArgs[0] }`;\n }\n } else {\n try {\n const error = this.getError(selector);\n errorArgs = this._abiCoder.decode(error.inputs, bytes.slice(4));\n errorName = error.name;\n errorSignature = error.format();\n } catch (error) { }\n }\n break;\n }\n }\n\n return logger.throwError(\"call revert exception\" + message, Logger.errors.CALL_EXCEPTION, {\n method: functionFragment.format(),\n data: hexlify(data), errorArgs, errorName, errorSignature, reason\n });\n }\n\n // Encode the result for a function call (e.g. for eth_call)\n encodeFunctionResult(functionFragment: FunctionFragment | string, values?: ReadonlyArray<any>): string {\n if (typeof(functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n\n return hexlify(this._abiCoder.encode(functionFragment.outputs, values || [ ]));\n }\n\n // Create the filter for the event with search criteria (e.g. for eth_filterLog)\n encodeFilterTopics(eventFragment: EventFragment | string, values: ReadonlyArray<any>): Array<string | Array<string>> {\n if (typeof(eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n\n if (values.length > eventFragment.inputs.length) {\n logger.throwError(\"too many arguments for \" + eventFragment.format(), Logger.errors.UNEXPECTED_ARGUMENT, {\n argument: \"values\",\n value: values\n })\n }\n\n let topics: Array<string | Array<string>> = [];\n if (!eventFragment.anonymous) { topics.push(this.getEventTopic(eventFragment)); }\n\n const encodeTopic = (param: ParamType, value: any): string => {\n if (param.type === \"string\") {\n return id(value);\n } else if (param.type === \"bytes\") {\n return keccak256(hexlify(value));\n }\n\n if (param.type === \"bool\" && typeof(value) === \"boolean\") {\n value = (value ? \"0x01\": \"0x00\");\n }\n\n if (param.type.match(/^u?int/)) {\n value = BigNumber.from(value).toHexString();\n }\n\n // Check addresses are valid\n if (param.type === \"address\") { this._abiCoder.encode( [ \"address\" ], [ value ]); }\n return hexZeroPad(hexlify(value), 32);\n };\n\n values.forEach((value, index) => {\n\n let param = (<EventFragment>eventFragment).inputs[index];\n\n if (!param.indexed) {\n if (value != null) {\n logger.throwArgumentError(\"cannot filter non-indexed parameters; must be null\", (\"contract.\" + param.name), value);\n }\n return;\n }\n\n if (value == null) {\n topics.push(null);\n } else if (param.baseType === \"array\" || param.baseType === \"tuple\") {\n logger.throwArgumentError(\"filtering with tuples or arrays not supported\", (\"contract.\" + param.name), value);\n } else if (Array.isArray(value)) {\n topics.push(value.map((value) => encodeTopic(param, value)));\n } else {\n topics.push(encodeTopic(param, value));\n }\n });\n\n // Trim off trailing nulls\n while (topics.length && topics[topics.length - 1] === null) {\n topics.pop();\n }\n\n return topics;\n }\n\n encodeEventLog(eventFragment: EventFragment | string, values: ReadonlyArray<any>): { data: string, topics: Array<string> } {\n if (typeof(eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n\n const topics: Array<string> = [ ];\n\n const dataTypes: Array<ParamType> = [ ];\n const dataValues: Array<string> = [ ];\n\n if (!eventFragment.anonymous) {\n topics.push(this.getEventTopic(eventFragment));\n }\n\n if (values.length !== eventFragment.inputs.length) {\n logger.throwArgumentError(\"event arguments/values mismatch\", \"values\", values);\n }\n\n eventFragment.inputs.forEach((param, index) => {\n const value = values[index];\n if (param.indexed) {\n if (param.type === \"string\") {\n topics.push(id(value))\n } else if (param.type === \"bytes\") {\n topics.push(keccak256(value))\n } else if (param.baseType === \"tuple\" || param.baseType === \"array\") {\n // @TODO\n throw new Error(\"not implemented\");\n } else {\n topics.push(this._abiCoder.encode([ param.type] , [ value ]));\n }\n } else {\n dataTypes.push(param);\n dataValues.push(value);\n }\n });\n\n return {\n data: this._abiCoder.encode(dataTypes , dataValues),\n topics: topics\n };\n }\n\n // Decode a filter for the event and the search criteria\n decodeEventLog(eventFragment: EventFragment | string, data: BytesLike, topics?: ReadonlyArray<string>): Result {\n if (typeof(eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n\n if (topics != null && !eventFragment.anonymous) {\n let topicHash = this.getEventTopic(eventFragment);\n if (!isHexString(topics[0], 32) || topics[0].toLowerCase() !== topicHash) {\n logger.throwError(\"fragment/topic mismatch\", Logger.errors.INVALID_ARGUMENT, { argument: \"topics[0]\", expected: topicHash, value: topics[0] });\n }\n topics = topics.slice(1);\n }\n\n let indexed: Array<ParamType> = [];\n let nonIndexed: Array<ParamType> = [];\n let dynamic: Array<boolean> = [];\n\n eventFragment.inputs.forEach((param, index) => {\n if (param.indexed) {\n if (param.type === \"string\" || param.type === \"bytes\" || param.baseType === \"tuple\" || param.baseType === \"array\") {\n indexed.push(ParamType.fromObject({ type: \"bytes32\", name: param.name }));\n dynamic.push(true);\n } else {\n indexed.push(param);\n dynamic.push(false);\n }\n } else {\n nonIndexed.push(param);\n dynamic.push(false);\n }\n });\n\n let resultIndexed = (topics != null) ? this._abiCoder.decode(indexed, concat(topics)): null;\n let resultNonIndexed = this._abiCoder.decode(nonIndexed, data, true);\n\n let result: (Array<any> & { [ key: string ]: any }) = [ ];\n let nonIndexedIndex = 0, indexedIndex = 0;\n eventFragment.inputs.forEach((param, index) => {\n if (param.indexed) {\n if (resultIndexed == null) {\n result[index] = new Indexed({ _isIndexed: true, hash: null });\n\n } else if (dynamic[index]) {\n result[index] = new Indexed({ _isIndexed: true, hash: resultIndexed[indexedIndex++] });\n\n } else {\n try {\n result[index] = resultIndexed[indexedIndex++];\n } catch (error) {\n result[index] = error;\n }\n }\n } else {\n try {\n result[index] = resultNonIndexed[nonIndexedIndex++];\n } catch (error) {\n result[index] = error;\n }\n }\n\n // Add the keyword argument if named and safe\n if (param.name && result[param.name] == null) {\n const value = result[index];\n\n // Make error named values throw on access\n if (value instanceof Error) {\n Object.defineProperty(result, param.name, {\n enumerable: true,\n get: () => { throw wrapAccessError(`property ${ JSON.stringify(param.name) }`, value); }\n });\n } else {\n result[param.name] = value;\n }\n }\n });\n\n // Make all error indexed values throw on access\n for (let i = 0; i < result.length; i++) {\n const value = result[i];\n if (value instanceof Error) {\n Object.defineProperty(result, i, {\n enumerable: true,\n get: () => { throw wrapAccessError(`index ${ i }`, value); }\n });\n }\n }\n\n return Object.freeze(result);\n }\n\n // Given a transaction, find the matching function fragment (if any) and\n // determine all its properties and call parameters\n parseTransaction(tx: { data: string, value?: BigNumberish }): TransactionDescription {\n let fragment = this.getFunction(tx.data.substring(0, 10).toLowerCase())\n\n if (!fragment) { return null; }\n\n return new TransactionDescription({\n args: this._abiCoder.decode(fragment.inputs, \"0x\" + tx.data.substring(10)),\n functionFragment: fragment,\n name: fragment.name,\n signature: fragment.format(),\n sighash: this.getSighash(fragment),\n value: BigNumber.from(tx.value || \"0\"),\n });\n }\n\n // @TODO\n //parseCallResult(data: BytesLike): ??\n\n // Given an event log, find the matching event fragment (if any) and\n // determine all its properties and values\n parseLog(log: { topics: Array<string>, data: string}): LogDescription {\n let fragment = this.getEvent(log.topics[0]);\n\n if (!fragment || fragment.anonymous) { return null; }\n\n // @TODO: If anonymous, and the only method, and the input count matches, should we parse?\n // Probably not, because just because it is the only event in the ABI does\n // not mean we have the full ABI; maybe just a fragment?\n\n\n return new LogDescription({\n eventFragment: fragment,\n name: fragment.name,\n signature: fragment.format(),\n topic: this.getEventTopic(fragment),\n args: this.decodeEventLog(fragment, log.data, log.topics)\n });\n }\n\n parseError(data: BytesLike): ErrorDescription {\n const hexData = hexlify(data);\n let fragment = this.getError(hexData.substring(0, 10).toLowerCase())\n\n if (!fragment) { return null; }\n\n return new ErrorDescription({\n args: this._abiCoder.decode(fragment.inputs, \"0x\" + hexData.substring(10)),\n errorFragment: fragment,\n name: fragment.name,\n signature: fragment.format(),\n sighash: this.getSighash(fragment),\n });\n }\n\n\n /*\n static from(value: Array<Fragment | string | JsonAbi> | string | Interface) {\n if (Interface.isInterface(value)) {\n return value;\n }\n if (typeof(value) === \"string\") {\n return new Interface(JSON.parse(value));\n }\n return new Interface(value);\n }\n */\n\n static isInterface(value: any): value is Interface {\n return !!(value && value._isInterface);\n }\n}\n\n","\"use strict\";\n\nimport { ConstructorFragment, ErrorFragment, EventFragment, FormatTypes, Fragment, FunctionFragment, JsonFragment, JsonFragmentType, ParamType } from \"./fragments\";\nimport { AbiCoder, CoerceFunc, defaultAbiCoder } from \"./abi-coder\";\nimport { checkResultErrors, Indexed, Interface, LogDescription, Result, TransactionDescription } from \"./interface\";\n\nexport {\n ConstructorFragment,\n ErrorFragment,\n EventFragment,\n Fragment,\n FunctionFragment,\n ParamType,\n FormatTypes,\n\n AbiCoder,\n defaultAbiCoder,\n\n Interface,\n Indexed,\n\n /////////////////////////\n // Types\n\n CoerceFunc,\n JsonFragment,\n JsonFragmentType,\n\n Result,\n checkResultErrors,\n\n LogDescription,\n TransactionDescription\n};\n","export const version = \"abstract-provider/5.8.0\";\n","\"use strict\";\n\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { BytesLike, isHexString } from \"@ethersproject/bytes\";\nimport { Network } from \"@ethersproject/networks\";\nimport { Deferrable, Description, defineReadOnly, resolveProperties } from \"@ethersproject/properties\";\nimport { AccessListish, Transaction } from \"@ethersproject/transactions\";\nimport { OnceBlockable } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n// Exported Types\n\n\nexport type TransactionRequest = {\n to?: string,\n from?: string,\n nonce?: BigNumberish,\n\n gasLimit?: BigNumberish,\n gasPrice?: BigNumberish,\n\n data?: BytesLike,\n value?: BigNumberish,\n chainId?: number\n\n type?: number;\n accessList?: AccessListish;\n\n maxPriorityFeePerGas?: BigNumberish;\n maxFeePerGas?: BigNumberish;\n\n customData?: Record<string, any>;\n ccipReadEnabled?: boolean;\n}\n\nexport interface TransactionResponse extends Transaction {\n hash: string;\n\n // Only if a transaction has been mined\n blockNumber?: number,\n blockHash?: string,\n timestamp?: number,\n\n confirmations: number,\n\n // Not optional (as it is in Transaction)\n from: string;\n\n // The raw transaction\n raw?: string,\n\n // This function waits until the transaction has been mined\n wait: (confirmations?: number) => Promise<TransactionReceipt>\n};\n\nexport type BlockTag = string | number;\n\nexport interface _Block {\n hash: string;\n parentHash: string;\n number: number;\n\n timestamp: number;\n nonce: string;\n difficulty: number;\n _difficulty: BigNumber;\n\n gasLimit: BigNumber;\n gasUsed: BigNumber;\n\n miner: string;\n extraData: string;\n\n baseFeePerGas?: null | BigNumber;\n}\n\nexport interface Block extends _Block {\n transactions: Array<string>;\n}\n\nexport interface BlockWithTransactions extends _Block {\n transactions: Array<TransactionResponse>;\n}\n\n\nexport interface Log {\n blockNumber: number;\n blockHash: string;\n transactionIndex: number;\n\n removed: boolean;\n\n address: string;\n data: string;\n\n topics: Array<string>;\n\n transactionHash: string;\n logIndex: number;\n}\n\nexport interface TransactionReceipt {\n to: string;\n from: string;\n contractAddress: string,\n transactionIndex: number,\n root?: string,\n gasUsed: BigNumber,\n logsBloom: string,\n blockHash: string,\n transactionHash: string,\n logs: Array<Log>,\n blockNumber: number,\n confirmations: number,\n cumulativeGasUsed: BigNumber,\n effectiveGasPrice: BigNumber,\n byzantium: boolean,\n type: number;\n status?: number\n};\n\nexport interface FeeData {\n lastBaseFeePerGas: null | BigNumber;\n maxFeePerGas: null | BigNumber;\n maxPriorityFeePerGas: null | BigNumber;\n gasPrice: null | BigNumber;\n}\n\nexport interface EventFilter {\n address?: string;\n topics?: Array<string | Array<string> | null>;\n}\n\nexport interface Filter extends EventFilter {\n fromBlock?: BlockTag,\n toBlock?: BlockTag,\n}\n\nexport interface FilterByBlockHash extends EventFilter {\n blockHash?: string;\n}\n\n//export type CallTransactionable = {\n// call(transaction: TransactionRequest): Promise<TransactionResponse>;\n//};\n\nexport abstract class ForkEvent extends Description {\n readonly expiry: number;\n\n readonly _isForkEvent?: boolean;\n\n static isForkEvent(value: any): value is ForkEvent {\n return !!(value && value._isForkEvent);\n }\n}\n\nexport class BlockForkEvent extends ForkEvent {\n readonly blockHash: string;\n\n readonly _isBlockForkEvent?: boolean;\n\n constructor(blockHash: string, expiry?: number) {\n if (!isHexString(blockHash, 32)) {\n logger.throwArgumentError(\"invalid blockHash\", \"blockHash\", blockHash);\n }\n\n super({\n _isForkEvent: true,\n _isBlockForkEvent: true,\n expiry: (expiry || 0),\n blockHash: blockHash\n });\n }\n}\n\nexport class TransactionForkEvent extends ForkEvent {\n readonly hash: string;\n\n readonly _isTransactionOrderForkEvent?: boolean;\n\n constructor(hash: string, expiry?: number) {\n if (!isHexString(hash, 32)) {\n logger.throwArgumentError(\"invalid transaction hash\", \"hash\", hash);\n }\n\n super({\n _isForkEvent: true,\n _isTransactionForkEvent: true,\n expiry: (expiry || 0),\n hash: hash\n });\n }\n}\n\nexport class TransactionOrderForkEvent extends ForkEvent {\n readonly beforeHash: string;\n readonly afterHash: string;\n\n constructor(beforeHash: string, afterHash: string, expiry?: number) {\n if (!isHexString(beforeHash, 32)) {\n logger.throwArgumentError(\"invalid transaction hash\", \"beforeHash\", beforeHash);\n }\n if (!isHexString(afterHash, 32)) {\n logger.throwArgumentError(\"invalid transaction hash\", \"afterHash\", afterHash);\n }\n\n super({\n _isForkEvent: true,\n _isTransactionOrderForkEvent: true,\n expiry: (expiry || 0),\n beforeHash: beforeHash,\n afterHash: afterHash\n });\n }\n}\n\nexport type EventType = string | Array<string | Array<string>> | EventFilter | ForkEvent;\n\nexport type Listener = (...args: Array<any>) => void;\n\n///////////////////////////////\n// Exported Abstracts\nexport abstract class Provider implements OnceBlockable {\n\n // Network\n abstract getNetwork(): Promise<Network>;\n\n // Latest State\n abstract getBlockNumber(): Promise<number>;\n abstract getGasPrice(): Promise<BigNumber>;\n async getFeeData(): Promise<FeeData> {\n const { block, gasPrice } = await resolveProperties({\n block: this.getBlock(\"latest\"),\n gasPrice: this.getGasPrice().catch((error) => {\n // @TODO: Why is this now failing on Calaveras?\n //console.log(error);\n return null;\n })\n });\n\n let lastBaseFeePerGas = null, maxFeePerGas = null, maxPriorityFeePerGas = null;\n\n if (block && block.baseFeePerGas) {\n // We may want to compute this more accurately in the future,\n // using the formula \"check if the base fee is correct\".\n // See: https://eips.ethereum.org/EIPS/eip-1559\n lastBaseFeePerGas = block.baseFeePerGas;\n maxPriorityFeePerGas = BigNumber.from(\"1500000000\");\n maxFeePerGas = block.baseFeePerGas.mul(2).add(maxPriorityFeePerGas);\n }\n\n return { lastBaseFeePerGas, maxFeePerGas, maxPriorityFeePerGas, gasPrice };\n }\n\n // Account\n abstract getBalance(addressOrName: string | Promise<string>, blockTag?: BlockTag | Promise<BlockTag>): Promise<BigNumber>;\n abstract getTransactionCount(addressOrName: string | Promise<string>, blockTag?: BlockTag | Promise<BlockTag>): Promise<number>;\n abstract getCode(addressOrName: string | Promise<string>, blockTag?: BlockTag | Promise<BlockTag>): Promise<string> ;\n abstract getStorageAt(addressOrName: string | Promise<string>, position: BigNumberish | Promise<BigNumberish>, blockTag?: BlockTag | Promise<BlockTag>): Promise<string>;\n\n // Execution\n abstract sendTransaction(signedTransaction: string | Promise<string>): Promise<TransactionResponse>;\n abstract call(transaction: Deferrable<TransactionRequest>, blockTag?: BlockTag | Promise<BlockTag>): Promise<string>;\n abstract estimateGas(transaction: Deferrable<TransactionRequest>): Promise<BigNumber>;\n\n // Queries\n abstract getBlock(blockHashOrBlockTag: BlockTag | string | Promise<BlockTag | string>): Promise<Block>;\n abstract getBlockWithTransactions(blockHashOrBlockTag: BlockTag | string | Promise<BlockTag | string>): Promise<BlockWithTransactions>;\n abstract getTransaction(transactionHash: string): Promise<TransactionResponse>;\n abstract getTransactionReceipt(transactionHash: string): Promise<TransactionReceipt>;\n\n // Bloom-filter Queries\n abstract getLogs(filter: Filter): Promise<Array<Log>>;\n\n // ENS\n abstract resolveName(name: string | Promise<string>): Promise<null | string>;\n abstract lookupAddress(address: string | Promise<string>): Promise<null | string>;\n\n // Event Emitter (ish)\n abstract on(eventName: EventType, listener: Listener): Provider;\n abstract once(eventName: EventType, listener: Listener): Provider;\n abstract emit(eventName: EventType, ...args: Array<any>): boolean\n abstract listenerCount(eventName?: EventType): number;\n abstract listeners(eventName?: EventType): Array<Listener>;\n abstract off(eventName: EventType, listener?: Listener): Provider;\n abstract removeAllListeners(eventName?: EventType): Provider;\n\n // Alias for \"on\"\n addListener(eventName: EventType, listener: Listener): Provider {\n return this.on(eventName, listener);\n }\n\n // Alias for \"off\"\n removeListener(eventName: EventType, listener: Listener): Provider {\n return this.off(eventName, listener);\n }\n\n // @TODO: This *could* be implemented here, but would pull in events...\n abstract waitForTransaction(transactionHash: string, confirmations?: number, timeout?: number): Promise<TransactionReceipt>;\n\n readonly _isProvider: boolean;\n\n constructor() {\n logger.checkAbstract(new.target, Provider);\n defineReadOnly(this, \"_isProvider\", true);\n }\n\n static isProvider(value: any): value is Provider {\n return !!(value && value._isProvider);\n }\n\n/*\n static getResolver(network: Network, callable: CallTransactionable, namehash: string): string {\n // No ENS...\n if (!network.ensAddress) {\n errors.throwError(\n \"network does support ENS\",\n errors.UNSUPPORTED_OPERATION,\n { operation: \"ENS\", network: network.name }\n );\n }\n\n // Not a namehash\n if (!isHexString(namehash, 32)) {\n errors.throwArgumentError(\"invalid name hash\", \"namehash\", namehash);\n }\n\n // keccak256(\"resolver(bytes32)\")\n let data = \"0x0178b8bf\" + namehash.substring(2);\n let transaction = { to: network.ensAddress, data: data };\n\n return provider.call(transaction).then((data) => {\n return provider.formatter.callAddress(data);\n });\n }\n\n static resolveNamehash(network: Network, callable: CallTransactionable, namehash: string): string {\n return this.getResolver(network, callable, namehash).then((resolverAddress) => {\n if (!resolverAddress) { return null; }\n\n // keccak256(\"addr(bytes32)\")\n let data = \"0x3b3b57de\" + namehash(name).substring(2);\n let transaction = { to: resolverAddress, data: data };\n return callable.call(transaction).then((data) => {\n return this.formatter.callAddress(data);\n });\n\n })\n }\n*/\n}\n","export const version = \"abstract-signer/5.8.0\";\n","\"use strict\";\n\nimport { BlockTag, FeeData, Provider, TransactionRequest, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { Bytes, BytesLike } from \"@ethersproject/bytes\";\nimport { Deferrable, defineReadOnly, resolveProperties, shallowCopy } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nconst allowedTransactionKeys: Array<string> = [\n \"accessList\", \"ccipReadEnabled\", \"chainId\", \"customData\", \"data\", \"from\", \"gasLimit\", \"gasPrice\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"nonce\", \"to\", \"type\", \"value\"\n];\n\nconst forwardErrors = [\n Logger.errors.INSUFFICIENT_FUNDS,\n Logger.errors.NONCE_EXPIRED,\n Logger.errors.REPLACEMENT_UNDERPRICED,\n];\n\n// EIP-712 Typed Data\n// See: https://eips.ethereum.org/EIPS/eip-712\n\nexport interface TypedDataDomain {\n name?: string;\n version?: string;\n chainId?: BigNumberish;\n verifyingContract?: string;\n salt?: BytesLike;\n};\n\nexport interface TypedDataField {\n name: string;\n type: string;\n};\n\n// Sub-classes of Signer may optionally extend this interface to indicate\n// they have a private key available synchronously\nexport interface ExternallyOwnedAccount {\n readonly address: string;\n readonly privateKey: string;\n}\n\n// Sub-Class Notes:\n// - A Signer MUST always make sure, that if present, the \"from\" field\n// matches the Signer, before sending or signing a transaction\n// - A Signer SHOULD always wrap private information (such as a private\n// key or mnemonic) in a function, so that console.log does not leak\n// the data\n\n// @TODO: This is a temporary measure to preserve backwards compatibility\n// In v6, the method on TypedDataSigner will be added to Signer\nexport interface TypedDataSigner {\n _signTypedData(domain: TypedDataDomain, types: Record<string, Array<TypedDataField>>, value: Record<string, any>): Promise<string>;\n}\n\nexport abstract class Signer {\n readonly provider?: Provider;\n\n ///////////////////\n // Sub-classes MUST implement these\n\n // Returns the checksum address\n abstract getAddress(): Promise<string>\n\n // Returns the signed prefixed-message. This MUST treat:\n // - Bytes as a binary message\n // - string as a UTF8-message\n // i.e. \"0x1234\" is a SIX (6) byte string, NOT 2 bytes of data\n abstract signMessage(message: Bytes | string): Promise<string>;\n\n // Signs a transaction and returns the fully serialized, signed transaction.\n // The EXACT transaction MUST be signed, and NO additional properties to be added.\n // - This MAY throw if signing transactions is not supports, but if\n // it does, sentTransaction MUST be overridden.\n abstract signTransaction(transaction: Deferrable<TransactionRequest>): Promise<string>;\n\n // Returns a new instance of the Signer, connected to provider.\n // This MAY throw if changing providers is not supported.\n abstract connect(provider: Provider): Signer;\n\n readonly _isSigner: boolean;\n\n\n ///////////////////\n // Sub-classes MUST call super\n constructor() {\n logger.checkAbstract(new.target, Signer);\n defineReadOnly(this, \"_isSigner\", true);\n }\n\n\n ///////////////////\n // Sub-classes MAY override these\n\n async getBalance(blockTag?: BlockTag): Promise<BigNumber> {\n this._checkProvider(\"getBalance\");\n return await this.provider.getBalance(this.getAddress(), blockTag);\n }\n\n async getTransactionCount(blockTag?: BlockTag): Promise<number> {\n this._checkProvider(\"getTransactionCount\");\n return await this.provider.getTransactionCount(this.getAddress(), blockTag);\n }\n\n // Populates \"from\" if unspecified, and estimates the gas for the transaction\n async estimateGas(transaction: Deferrable<TransactionRequest>): Promise<BigNumber> {\n this._checkProvider(\"estimateGas\");\n const tx = await resolveProperties(this.checkTransaction(transaction));\n return await this.provider.estimateGas(tx);\n }\n\n // Populates \"from\" if unspecified, and calls with the transaction\n async call(transaction: Deferrable<TransactionRequest>, blockTag?: BlockTag): Promise<string> {\n this._checkProvider(\"call\");\n const tx = await resolveProperties(this.checkTransaction(transaction));\n return await this.provider.call(tx, blockTag);\n }\n\n // Populates all fields in a transaction, signs it and sends it to the network\n async sendTransaction(transaction: Deferrable<TransactionRequest>): Promise<TransactionResponse> {\n this._checkProvider(\"sendTransaction\");\n const tx = await this.populateTransaction(transaction);\n const signedTx = await this.signTransaction(tx);\n return await this.provider.sendTransaction(signedTx);\n }\n\n async getChainId(): Promise<number> {\n this._checkProvider(\"getChainId\");\n const network = await this.provider.getNetwork();\n return network.chainId;\n }\n\n async getGasPrice(): Promise<BigNumber> {\n this._checkProvider(\"getGasPrice\");\n return await this.provider.getGasPrice();\n }\n\n async getFeeData(): Promise<FeeData> {\n this._checkProvider(\"getFeeData\");\n return await this.provider.getFeeData();\n }\n\n\n async resolveName(name: string): Promise<string> {\n this._checkProvider(\"resolveName\");\n return await this.provider.resolveName(name);\n }\n\n\n\n // Checks a transaction does not contain invalid keys and if\n // no \"from\" is provided, populates it.\n // - does NOT require a provider\n // - adds \"from\" is not present\n // - returns a COPY (safe to mutate the result)\n // By default called from: (overriding these prevents it)\n // - call\n // - estimateGas\n // - populateTransaction (and therefor sendTransaction)\n checkTransaction(transaction: Deferrable<TransactionRequest>): Deferrable<TransactionRequest> {\n for (const key in transaction) {\n if (allowedTransactionKeys.indexOf(key) === -1) {\n logger.throwArgumentError(\"invalid transaction key: \" + key, \"transaction\", transaction);\n }\n }\n\n const tx = shallowCopy(transaction);\n\n if (tx.from == null) {\n tx.from = this.getAddress();\n\n } else {\n // Make sure any provided address matches this signer\n tx.from = Promise.all([\n Promise.resolve(tx.from),\n this.getAddress()\n ]).then((result) => {\n if (result[0].toLowerCase() !== result[1].toLowerCase()) {\n logger.throwArgumentError(\"from address mismatch\", \"transaction\", transaction);\n }\n return result[0];\n });\n }\n\n return tx;\n }\n\n // Populates ALL keys for a transaction and checks that \"from\" matches\n // this Signer. Should be used by sendTransaction but NOT by signTransaction.\n // By default called from: (overriding these prevents it)\n // - sendTransaction\n //\n // Notes:\n // - We allow gasPrice for EIP-1559 as long as it matches maxFeePerGas\n async populateTransaction(transaction: Deferrable<TransactionRequest>): Promise<TransactionRequest> {\n\n const tx: Deferrable<TransactionRequest> = await resolveProperties(this.checkTransaction(transaction))\n\n if (tx.to != null) {\n tx.to = Promise.resolve(tx.to).then(async (to) => {\n if (to == null) { return null; }\n const address = await this.resolveName(to);\n if (address == null) {\n logger.throwArgumentError(\"provided ENS name resolves to null\", \"tx.to\", to);\n }\n return address;\n });\n\n // Prevent this error from causing an UnhandledPromiseException\n tx.to.catch((error) => { });\n }\n\n // Do not allow mixing pre-eip-1559 and eip-1559 properties\n const hasEip1559 = (tx.maxFeePerGas != null || tx.maxPriorityFeePerGas != null);\n if (tx.gasPrice != null && (tx.type === 2 || hasEip1559)) {\n logger.throwArgumentError(\"eip-1559 transaction do not support gasPrice\", \"transaction\", transaction);\n } else if ((tx.type === 0 || tx.type === 1) && hasEip1559) {\n logger.throwArgumentError(\"pre-eip-1559 transaction do not support maxFeePerGas/maxPriorityFeePerGas\", \"transaction\", transaction);\n }\n\n if ((tx.type === 2 || tx.type == null) && (tx.maxFeePerGas != null && tx.maxPriorityFeePerGas != null)) {\n // Fully-formed EIP-1559 transaction (skip getFeeData)\n tx.type = 2;\n\n } else if (tx.type === 0 || tx.type === 1) {\n // Explicit Legacy or EIP-2930 transaction\n\n // Populate missing gasPrice\n if (tx.gasPrice == null) { tx.gasPrice = this.getGasPrice(); }\n\n } else {\n\n // We need to get fee data to determine things\n const feeData = await this.getFeeData();\n\n if (tx.type == null) {\n // We need to auto-detect the intended type of this transaction...\n\n if (feeData.maxFeePerGas != null && feeData.maxPriorityFeePerGas != null) {\n // The network supports EIP-1559!\n\n // Upgrade transaction from null to eip-1559\n tx.type = 2;\n\n if (tx.gasPrice != null) {\n // Using legacy gasPrice property on an eip-1559 network,\n // so use gasPrice as both fee properties\n const gasPrice = tx.gasPrice;\n delete tx.gasPrice;\n tx.maxFeePerGas = gasPrice;\n tx.maxPriorityFeePerGas = gasPrice;\n\n } else {\n // Populate missing fee data\n if (tx.maxFeePerGas == null) { tx.maxFeePerGas = feeData.maxFeePerGas; }\n if (tx.maxPriorityFeePerGas == null) { tx.maxPriorityFeePerGas = feeData.maxPriorityFeePerGas; }\n }\n\n } else if (feeData.gasPrice != null) {\n // Network doesn't support EIP-1559...\n\n // ...but they are trying to use EIP-1559 properties\n if (hasEip1559) {\n logger.throwError(\"network does not support EIP-1559\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"populateTransaction\"\n });\n }\n\n // Populate missing fee data\n if (tx.gasPrice == null) { tx.gasPrice = feeData.gasPrice; }\n\n // Explicitly set untyped transaction to legacy\n tx.type = 0;\n\n } else {\n // getFeeData has failed us.\n logger.throwError(\"failed to get consistent fee data\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"signer.getFeeData\"\n });\n }\n\n } else if (tx.type === 2) {\n // Explicitly using EIP-1559\n\n // Populate missing fee data\n if (tx.maxFeePerGas == null) { tx.maxFeePerGas = feeData.maxFeePerGas; }\n if (tx.maxPriorityFeePerGas == null) { tx.maxPriorityFeePerGas = feeData.maxPriorityFeePerGas; }\n }\n }\n\n if (tx.nonce == null) { tx.nonce = this.getTransactionCount(\"pending\"); }\n\n if (tx.gasLimit == null) {\n tx.gasLimit = this.estimateGas(tx).catch((error) => {\n if (forwardErrors.indexOf(error.code) >= 0) {\n throw error;\n }\n\n return logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n error: error,\n tx: tx\n });\n });\n }\n\n if (tx.chainId == null) {\n tx.chainId = this.getChainId();\n } else {\n tx.chainId = Promise.all([\n Promise.resolve(tx.chainId),\n this.getChainId()\n ]).then((results) => {\n if (results[1] !== 0 && results[0] !== results[1]) {\n logger.throwArgumentError(\"chainId address mismatch\", \"transaction\", transaction);\n }\n return results[0];\n });\n }\n\n return await resolveProperties(tx);\n }\n\n\n ///////////////////\n // Sub-classes SHOULD leave these alone\n\n _checkProvider(operation?: string): void {\n if (!this.provider) { logger.throwError(\"missing provider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: (operation || \"_checkProvider\") });\n }\n }\n\n static isSigner(value: any): value is Signer {\n return !!(value && value._isSigner);\n }\n}\n\nexport class VoidSigner extends Signer implements TypedDataSigner {\n readonly address: string;\n\n constructor(address: string, provider?: Provider) {\n super();\n defineReadOnly(this, \"address\", address);\n defineReadOnly(this, \"provider\", provider || null);\n }\n\n getAddress(): Promise<string> {\n return Promise.resolve(this.address);\n }\n\n _fail(message: string, operation: string): Promise<any> {\n return Promise.resolve().then(() => {\n logger.throwError(message, Logger.errors.UNSUPPORTED_OPERATION, { operation: operation });\n });\n }\n\n signMessage(message: Bytes | string): Promise<string> {\n return this._fail(\"VoidSigner cannot sign messages\", \"signMessage\");\n }\n\n signTransaction(transaction: Deferrable<TransactionRequest>): Promise<string> {\n return this._fail(\"VoidSigner cannot sign transactions\", \"signTransaction\");\n }\n\n _signTypedData(domain: TypedDataDomain, types: Record<string, Array<TypedDataField>>, value: Record<string, any>): Promise<string> {\n return this._fail(\"VoidSigner cannot sign typed data\", \"signTypedData\");\n }\n\n connect(provider: Provider): VoidSigner {\n return new VoidSigner(this.address, provider);\n }\n}\n\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n","'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '<EC Point Infinity>';\n return '<EC Point x: ' + this.x.fromRed().toString(16, 2) +\n ' y: ' + this.y.fromRed().toString(16, 2) + '>';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '<EC JPoint Infinity>';\n return '<EC JPoint x: ' + this.x.toString(16, 2) +\n ' y: ' + this.y.toString(16, 2) +\n ' z: ' + this.z.toString(16, 2) + '>';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n","'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) +\n ' pub: ' + (this.pub && this.pub.inspect()) + ' >';\n};\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options),\n 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n","'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n","import _ec from \"elliptic\";\nimport EC = _ec.ec;\n\nexport { EC }\n","export const version = \"signing-key/5.8.0\";\n","\"use strict\";\n\nimport { EC } from \"./elliptic\";\n\nimport { arrayify, BytesLike, hexDataLength, hexlify, hexZeroPad, Signature, SignatureLike, splitSignature } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nlet _curve: EC = null\nfunction getCurve() {\n if (!_curve) {\n _curve = new EC(\"secp256k1\");\n }\n return _curve;\n}\n\nexport class SigningKey {\n\n readonly curve: string;\n\n readonly privateKey: string;\n readonly publicKey: string;\n readonly compressedPublicKey: string;\n\n //readonly address: string;\n\n readonly _isSigningKey: boolean;\n\n constructor(privateKey: BytesLike) {\n defineReadOnly(this, \"curve\", \"secp256k1\");\n\n defineReadOnly(this, \"privateKey\", hexlify(privateKey));\n if (hexDataLength(this.privateKey) !== 32) {\n logger.throwArgumentError(\"invalid private key\", \"privateKey\", \"[[ REDACTED ]]\");\n }\n\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n\n defineReadOnly(this, \"publicKey\", \"0x\" + keyPair.getPublic(false, \"hex\"));\n defineReadOnly(this, \"compressedPublicKey\", \"0x\" + keyPair.getPublic(true, \"hex\"));\n\n defineReadOnly(this, \"_isSigningKey\", true);\n }\n\n _addPoint(other: BytesLike): string {\n const p0 = getCurve().keyFromPublic(arrayify(this.publicKey));\n const p1 = getCurve().keyFromPublic(arrayify(other));\n return \"0x\" + p0.pub.add(p1.pub).encodeCompressed(\"hex\");\n }\n\n signDigest(digest: BytesLike): Signature {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const digestBytes = arrayify(digest);\n if (digestBytes.length !== 32) {\n logger.throwArgumentError(\"bad digest length\", \"digest\", digest);\n }\n const signature = keyPair.sign(digestBytes, { canonical: true });\n return splitSignature({\n recoveryParam: signature.recoveryParam,\n r: hexZeroPad(\"0x\" + signature.r.toString(16), 32),\n s: hexZeroPad(\"0x\" + signature.s.toString(16), 32),\n })\n }\n\n computeSharedSecret(otherKey: BytesLike): string {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const otherKeyPair = getCurve().keyFromPublic(arrayify(computePublicKey(otherKey)));\n return hexZeroPad(\"0x\" + keyPair.derive(otherKeyPair.getPublic()).toString(16), 32);\n }\n\n static isSigningKey(value: any): value is SigningKey {\n return !!(value && value._isSigningKey);\n }\n}\n\nexport function recoverPublicKey(digest: BytesLike, signature: SignatureLike): string {\n const sig = splitSignature(signature);\n const rs = { r: arrayify(sig.r), s: arrayify(sig.s) };\n return \"0x\" + getCurve().recoverPubKey(arrayify(digest), rs, sig.recoveryParam).encode(\"hex\", false);\n}\n\nexport function computePublicKey(key: BytesLike, compressed?: boolean): string {\n const bytes = arrayify(key);\n\n if (bytes.length === 32) {\n const signingKey = new SigningKey(bytes);\n if (compressed) {\n return \"0x\" + getCurve().keyFromPrivate(bytes).getPublic(true, \"hex\");\n }\n return signingKey.publicKey;\n\n } else if (bytes.length === 33) {\n if (compressed) { return hexlify(bytes); }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(false, \"hex\");\n\n } else if (bytes.length === 65) {\n if (!compressed) { return hexlify(bytes); }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(true, \"hex\");\n }\n\n return logger.throwArgumentError(\"invalid public or private key\", \"key\", \"[REDACTED]\");\n}\n\n","export const version = \"transactions/5.8.0\";\n","\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, DataOptions, hexConcat, hexDataLength, hexDataSlice, hexlify, hexZeroPad, isBytesLike, SignatureLike, splitSignature, stripZeros, } from \"@ethersproject/bytes\";\nimport { Zero } from \"@ethersproject/constants\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { checkProperties } from \"@ethersproject/properties\";\nimport * as RLP from \"@ethersproject/rlp\";\nimport { computePublicKey, recoverPublicKey } from \"@ethersproject/signing-key\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n// Exported Types\n\nexport type AccessList = Array<{ address: string, storageKeys: Array<string> }>;\n\n// Input allows flexibility in describing an access list\nexport type AccessListish = AccessList |\n Array<[ string, Array<string> ]> |\n Record<string, Array<string>>;\n\nexport enum TransactionTypes {\n legacy = 0,\n eip2930 = 1,\n eip1559 = 2,\n};\n\nexport type UnsignedTransaction = {\n to?: string;\n nonce?: number;\n\n gasLimit?: BigNumberish;\n gasPrice?: BigNumberish;\n\n data?: BytesLike;\n value?: BigNumberish;\n chainId?: number;\n\n // Typed-Transaction features\n type?: number | null;\n\n // EIP-2930; Type 1 & EIP-1559; Type 2\n accessList?: AccessListish;\n\n // EIP-1559; Type 2\n maxPriorityFeePerGas?: BigNumberish;\n maxFeePerGas?: BigNumberish;\n}\n\nexport interface Transaction {\n hash?: string;\n\n to?: string;\n from?: string;\n nonce: number;\n\n gasLimit: BigNumber;\n gasPrice?: BigNumber;\n\n data: string;\n value: BigNumber;\n chainId: number;\n\n r?: string;\n s?: string;\n v?: number;\n\n // Typed-Transaction features\n type?: number | null;\n\n // EIP-2930; Type 1 & EIP-1559; Type 2\n accessList?: AccessList;\n\n // EIP-1559; Type 2\n maxPriorityFeePerGas?: BigNumber;\n maxFeePerGas?: BigNumber;\n}\n\n///////////////////////////////\n\nfunction handleAddress(value: string): string {\n if (value === \"0x\") { return null; }\n return getAddress(value);\n}\n\nfunction handleNumber(value: string): BigNumber {\n if (value === \"0x\") { return Zero; }\n return BigNumber.from(value);\n}\n\n// Legacy Transaction Fields\nconst transactionFields = [\n { name: \"nonce\", maxLength: 32, numeric: true },\n { name: \"gasPrice\", maxLength: 32, numeric: true },\n { name: \"gasLimit\", maxLength: 32, numeric: true },\n { name: \"to\", length: 20 },\n { name: \"value\", maxLength: 32, numeric: true },\n { name: \"data\" },\n];\n\nconst allowedTransactionKeys: { [ key: string ]: boolean } = {\n chainId: true, data: true, gasLimit: true, gasPrice:true, nonce: true, to: true, type: true, value: true\n}\n\nexport function computeAddress(key: BytesLike | string): string {\n const publicKey = computePublicKey(key);\n return getAddress(hexDataSlice(keccak256(hexDataSlice(publicKey, 1)), 12));\n}\n\nexport function recoverAddress(digest: BytesLike, signature: SignatureLike): string {\n return computeAddress(recoverPublicKey(arrayify(digest), signature));\n}\n\nfunction formatNumber(value: BigNumberish, name: string): Uint8Array {\n const result = stripZeros(BigNumber.from(value).toHexString());\n if (result.length > 32) {\n logger.throwArgumentError(\"invalid length for \" + name, (\"transaction:\" + name), value);\n }\n return result;\n}\n\nfunction accessSetify(addr: string, storageKeys: Array<string>): { address: string,storageKeys: Array<string> } {\n return {\n address: getAddress(addr),\n storageKeys: (storageKeys || []).map((storageKey, index) => {\n if (hexDataLength(storageKey) !== 32) {\n logger.throwArgumentError(\"invalid access list storageKey\", `accessList[${ addr }:${ index }]`, storageKey)\n }\n return storageKey.toLowerCase();\n })\n };\n}\n\nexport function accessListify(value: AccessListish): AccessList {\n if (Array.isArray(value)) {\n return (<Array<[ string, Array<string>] | { address: string, storageKeys: Array<string>}>>value).map((set, index) => {\n if (Array.isArray(set)) {\n if (set.length > 2) {\n logger.throwArgumentError(\"access list expected to be [ address, storageKeys[] ]\", `value[${ index }]`, set);\n }\n return accessSetify(set[0], set[1])\n }\n return accessSetify(set.address, set.storageKeys);\n });\n }\n\n const result: Array<{ address: string, storageKeys: Array<string> }> = Object.keys(value).map((addr) => {\n const storageKeys: Record<string, true> = value[addr].reduce((accum, storageKey) => {\n accum[storageKey] = true;\n return accum;\n }, <Record<string, true>>{ });\n return accessSetify(addr, Object.keys(storageKeys).sort())\n });\n result.sort((a, b) => (a.address.localeCompare(b.address)));\n return result;\n}\n\nfunction formatAccessList(value: AccessListish): Array<[ string, Array<string> ]> {\n return accessListify(value).map((set) => [ set.address, set.storageKeys ]);\n}\n\nfunction _serializeEip1559(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n // If there is an explicit gasPrice, make sure it matches the\n // EIP-1559 fees; otherwise they may not understand what they\n // think they are setting in terms of fee.\n if (transaction.gasPrice != null) {\n const gasPrice = BigNumber.from(transaction.gasPrice);\n const maxFeePerGas = BigNumber.from(transaction.maxFeePerGas || 0);\n if (!gasPrice.eq(maxFeePerGas)) {\n logger.throwArgumentError(\"mismatch EIP-1559 gasPrice != maxFeePerGas\", \"tx\", {\n gasPrice, maxFeePerGas\n });\n }\n }\n\n const fields: any = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.maxPriorityFeePerGas || 0, \"maxPriorityFeePerGas\"),\n formatNumber(transaction.maxFeePerGas || 0, \"maxFeePerGas\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to): \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n\n return hexConcat([ \"0x02\", RLP.encode(fields)]);\n}\n\nfunction _serializeEip2930(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n const fields: any = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.gasPrice || 0, \"gasPrice\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to): \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n\n return hexConcat([ \"0x01\", RLP.encode(fields)]);\n}\n\n// Legacy Transactions and EIP-155\nfunction _serialize(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n checkProperties(transaction, allowedTransactionKeys);\n\n const raw: Array<string | Uint8Array> = [];\n\n transactionFields.forEach(function(fieldInfo) {\n let value = (<any>transaction)[fieldInfo.name] || ([]);\n const options: DataOptions = { };\n if (fieldInfo.numeric) { options.hexPad = \"left\"; }\n value = arrayify(hexlify(value, options));\n\n // Fixed-width field\n if (fieldInfo.length && value.length !== fieldInfo.length && value.length > 0) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n\n // Variable-width (with a maximum)\n if (fieldInfo.maxLength) {\n value = stripZeros(value);\n if (value.length > fieldInfo.maxLength) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value );\n }\n }\n\n raw.push(hexlify(value));\n });\n\n let chainId = 0;\n if (transaction.chainId != null) {\n // A chainId was provided; if non-zero we'll use EIP-155\n chainId = transaction.chainId;\n\n if (typeof(chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid transaction.chainId\", \"transaction\", transaction);\n }\n\n } else if (signature && !isBytesLike(signature) && signature.v > 28) {\n // No chainId provided, but the signature is signing with EIP-155; derive chainId\n chainId = Math.floor((signature.v - 35) / 2);\n }\n\n // We have an EIP-155 transaction (chainId was specified and non-zero)\n if (chainId !== 0) {\n raw.push(hexlify(chainId)); // @TODO: hexValue?\n raw.push(\"0x\");\n raw.push(\"0x\");\n }\n\n // Requesting an unsigned transaction\n if (!signature) {\n return RLP.encode(raw);\n }\n\n // The splitSignature will ensure the transaction has a recoveryParam in the\n // case that the signTransaction function only adds a v.\n const sig = splitSignature(signature);\n\n // We pushed a chainId and null r, s on for hashing only; remove those\n let v = 27 + sig.recoveryParam\n if (chainId !== 0) {\n raw.pop();\n raw.pop();\n raw.pop();\n v += chainId * 2 + 8;\n\n // If an EIP-155 v (directly or indirectly; maybe _vs) was provided, check it!\n if (sig.v > 28 && sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n } else if (sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n\n raw.push(hexlify(v));\n raw.push(stripZeros(arrayify(sig.r)));\n raw.push(stripZeros(arrayify(sig.s)));\n\n return RLP.encode(raw);\n}\n\nexport function serialize(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n // Legacy and EIP-155 Transactions\n if (transaction.type == null || transaction.type === 0) {\n if (transaction.accessList != null) {\n logger.throwArgumentError(\"untyped transactions do not support accessList; include type: 1\", \"transaction\", transaction);\n }\n return _serialize(transaction, signature);\n }\n\n // Typed Transactions (EIP-2718)\n switch (transaction.type) {\n case 1:\n return _serializeEip2930(transaction, signature);\n case 2:\n return _serializeEip1559(transaction, signature);\n default:\n break;\n }\n\n return logger.throwError(`unsupported transaction type: ${ transaction.type }`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"serializeTransaction\",\n transactionType: transaction.type\n });\n}\n\nfunction _parseEipSignature(tx: Transaction, fields: Array<string>, serialize: (tx: UnsignedTransaction) => string): void {\n try {\n const recid = handleNumber(fields[0]).toNumber();\n if (recid !== 0 && recid !== 1) { throw new Error(\"bad recid\"); }\n tx.v = recid;\n } catch (error) {\n logger.throwArgumentError(\"invalid v for transaction type: 1\", \"v\", fields[0]);\n }\n\n tx.r = hexZeroPad(fields[1], 32);\n tx.s = hexZeroPad(fields[2], 32);\n\n try {\n const digest = keccak256(serialize(tx));\n tx.from = recoverAddress(digest, { r: tx.r, s: tx.s, recoveryParam: tx.v });\n } catch (error) { }\n}\n\nfunction _parseEip1559(payload: Uint8Array): Transaction {\n const transaction = RLP.decode(payload.slice(1));\n\n if (transaction.length !== 9 && transaction.length !== 12) {\n logger.throwArgumentError(\"invalid component count for transaction type: 2\", \"payload\", hexlify(payload));\n }\n\n const maxPriorityFeePerGas = handleNumber(transaction[2]);\n const maxFeePerGas = handleNumber(transaction[3]);\n const tx: Transaction = {\n type: 2,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n maxPriorityFeePerGas: maxPriorityFeePerGas,\n maxFeePerGas: maxFeePerGas,\n gasPrice: null,\n gasLimit: handleNumber(transaction[4]),\n to: handleAddress(transaction[5]),\n value: handleNumber(transaction[6]),\n data: transaction[7],\n accessList: accessListify(transaction[8]),\n };\n\n // Unsigned EIP-1559 Transaction\n if (transaction.length === 9) { return tx; }\n\n tx.hash = keccak256(payload);\n\n _parseEipSignature(tx, transaction.slice(9), _serializeEip1559);\n\n return tx;\n}\n\nfunction _parseEip2930(payload: Uint8Array): Transaction {\n const transaction = RLP.decode(payload.slice(1));\n\n if (transaction.length !== 8 && transaction.length !== 11) {\n logger.throwArgumentError(\"invalid component count for transaction type: 1\", \"payload\", hexlify(payload));\n }\n\n const tx: Transaction = {\n type: 1,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n gasPrice: handleNumber(transaction[2]),\n gasLimit: handleNumber(transaction[3]),\n to: handleAddress(transaction[4]),\n value: handleNumber(transaction[5]),\n data: transaction[6],\n accessList: accessListify(transaction[7])\n };\n\n // Unsigned EIP-2930 Transaction\n if (transaction.length === 8) { return tx; }\n\n tx.hash = keccak256(payload);\n\n _parseEipSignature(tx, transaction.slice(8), _serializeEip2930);\n\n return tx;\n}\n\n// Legacy Transactions and EIP-155\nfunction _parse(rawTransaction: Uint8Array): Transaction {\n const transaction = RLP.decode(rawTransaction);\n\n if (transaction.length !== 9 && transaction.length !== 6) {\n logger.throwArgumentError(\"invalid raw transaction\", \"rawTransaction\", rawTransaction);\n }\n\n const tx: Transaction = {\n nonce: handleNumber(transaction[0]).toNumber(),\n gasPrice: handleNumber(transaction[1]),\n gasLimit: handleNumber(transaction[2]),\n to: handleAddress(transaction[3]),\n value: handleNumber(transaction[4]),\n data: transaction[5],\n chainId: 0\n };\n\n // Legacy unsigned transaction\n if (transaction.length === 6) { return tx; }\n\n try {\n tx.v = BigNumber.from(transaction[6]).toNumber();\n\n } catch (error) {\n // @TODO: What makes snese to do? The v is too big\n return tx;\n }\n\n tx.r = hexZeroPad(transaction[7], 32);\n tx.s = hexZeroPad(transaction[8], 32);\n\n if (BigNumber.from(tx.r).isZero() && BigNumber.from(tx.s).isZero()) {\n // EIP-155 unsigned transaction\n tx.chainId = tx.v;\n tx.v = 0;\n\n } else {\n // Signed Transaction\n\n tx.chainId = Math.floor((tx.v - 35) / 2);\n if (tx.chainId < 0) { tx.chainId = 0; }\n\n let recoveryParam = tx.v - 27;\n\n const raw = transaction.slice(0, 6);\n\n if (tx.chainId !== 0) {\n raw.push(hexlify(tx.chainId));\n raw.push(\"0x\");\n raw.push(\"0x\");\n recoveryParam -= tx.chainId * 2 + 8;\n }\n\n const digest = keccak256(RLP.encode(raw));\n try {\n tx.from = recoverAddress(digest, { r: hexlify(tx.r), s: hexlify(tx.s), recoveryParam: recoveryParam });\n } catch (error) { }\n\n tx.hash = keccak256(rawTransaction);\n }\n\n tx.type = null;\n\n return tx;\n}\n\n\nexport function parse(rawTransaction: BytesLike): Transaction {\n const payload = arrayify(rawTransaction);\n\n // Legacy and EIP-155 Transactions\n if (payload[0] > 0x7f) { return _parse(payload); }\n\n // Typed Transaction (EIP-2718)\n switch (payload[0]) {\n case 1:\n return _parseEip2930(payload);\n case 2:\n return _parseEip1559(payload);\n default:\n break;\n }\n\n return logger.throwError(`unsupported transaction type: ${ payload[0] }`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"parseTransaction\",\n transactionType: payload[0]\n });\n}\n\n","export const version = \"contracts/5.8.0\";\n","\"use strict\";\n\nimport { checkResultErrors, EventFragment, Fragment, FunctionFragment, Indexed, Interface, JsonFragment, LogDescription, ParamType, Result } from \"@ethersproject/abi\";\nimport { Block, BlockTag, Filter, FilterByBlockHash, Listener, Log, Provider, TransactionReceipt, TransactionRequest, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { Signer, VoidSigner } from \"@ethersproject/abstract-signer\";\nimport { getAddress, getContractAddress } from \"@ethersproject/address\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, concat, hexlify, isBytes, isHexString } from \"@ethersproject/bytes\";\nimport { Deferrable, defineReadOnly, deepCopy, getStatic, resolveProperties, shallowCopy } from \"@ethersproject/properties\";\nimport { AccessList, accessListify, AccessListish } from \"@ethersproject/transactions\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\n\nconst logger = new Logger(version);\n\nexport interface Overrides {\n gasLimit?: BigNumberish | Promise<BigNumberish>;\n gasPrice?: BigNumberish | Promise<BigNumberish>;\n maxFeePerGas?: BigNumberish | Promise<BigNumberish>;\n maxPriorityFeePerGas?: BigNumberish | Promise<BigNumberish>;\n nonce?: BigNumberish | Promise<BigNumberish>;\n type?: number;\n accessList?: AccessListish;\n customData?: Record<string, any>;\n ccipReadEnabled?: boolean;\n};\n\nexport interface PayableOverrides extends Overrides {\n value?: BigNumberish | Promise<BigNumberish>;\n}\n\nexport interface CallOverrides extends PayableOverrides {\n blockTag?: BlockTag | Promise<BlockTag>;\n from?: string | Promise<string>;\n}\n\n// @TODO: Better hierarchy with: (in v6)\n// - abstract-provider:TransactionRequest\n// - transactions:Transaction\n// - transaction:UnsignedTransaction\n\nexport interface PopulatedTransaction {\n to?: string;\n from?: string;\n nonce?: number;\n\n gasLimit?: BigNumber;\n gasPrice?: BigNumber;\n\n data?: string;\n value?: BigNumber;\n chainId?: number;\n\n type?: number;\n accessList?: AccessList;\n\n maxFeePerGas?: BigNumber;\n maxPriorityFeePerGas?: BigNumber;\n\n customData?: Record<string, any>;\n ccipReadEnabled?: boolean;\n};\n\nexport type EventFilter = {\n address?: string;\n topics?: Array<string|Array<string>>;\n};\n\n\nexport type ContractFunction<T = any> = (...args: Array<any>) => Promise<T>;\n\n\n// The (n + 1)th parameter passed to contract event callbacks\nexport interface Event extends Log {\n\n // The event name\n event?: string;\n\n // The event signature\n eventSignature?: string;\n\n // The parsed arguments to the event\n args?: Result;\n\n // If parsing the arguments failed, this is the error\n decodeError?: Error;\n\n // A function that can be used to decode event data and topics\n decode?: (data: string, topics?: Array<string>) => any;\n\n // A function that will remove the listener responsible for this event (if any)\n removeListener: () => void;\n\n // Get blockchain details about this event's block and transaction\n getBlock: () => Promise<Block>;\n getTransaction: () => Promise<TransactionResponse>;\n getTransactionReceipt: () => Promise<TransactionReceipt>;\n}\n\nexport interface ContractReceipt extends TransactionReceipt {\n events?: Array<Event>;\n}\n\nexport interface ContractTransaction extends TransactionResponse {\n wait(confirmations?: number): Promise<ContractReceipt>;\n}\n\n///////////////////////////////\n\nconst allowedTransactionKeys: { [ key: string ]: boolean } = {\n chainId: true, data: true, from: true, gasLimit: true, gasPrice:true, nonce: true, to: true, value: true,\n type: true, accessList: true,\n maxFeePerGas: true, maxPriorityFeePerGas: true,\n customData: true,\n ccipReadEnabled: true\n}\n\nasync function resolveName(resolver: Signer | Provider, nameOrPromise: string | Promise<string>): Promise<string> {\n const name = await nameOrPromise;\n\n if (typeof(name) !== \"string\") {\n logger.throwArgumentError(\"invalid address or ENS name\", \"name\", name);\n }\n\n // If it is already an address, just use it (after adding checksum)\n try {\n return getAddress(name);\n } catch (error) { }\n\n if (!resolver) {\n logger.throwError(\"a provider or signer is needed to resolve ENS names\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"resolveName\"\n });\n }\n\n const address = await resolver.resolveName(name);\n\n if (address == null) {\n logger.throwArgumentError(\"resolver or addr is not configured for ENS name\", \"name\", name);\n }\n\n return address;\n}\n\n// Recursively replaces ENS names with promises to resolve the name and resolves all properties\nasync function resolveAddresses(resolver: Signer | Provider, value: any, paramType: ParamType | Array<ParamType>): Promise<any> {\n if (Array.isArray(paramType)) {\n return await Promise.all(paramType.map((paramType, index) => {\n return resolveAddresses(\n resolver,\n ((Array.isArray(value)) ? value[index]: value[paramType.name]),\n paramType\n );\n }));\n }\n\n if (paramType.type === \"address\") {\n return await resolveName(resolver, value);\n }\n\n if (paramType.type === \"tuple\") {\n return await resolveAddresses(resolver, value, paramType.components);\n }\n\n if (paramType.baseType === \"array\") {\n if (!Array.isArray(value)) {\n return Promise.reject(logger.makeError(\"invalid value for array\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"value\",\n value\n }));\n }\n return await Promise.all(value.map((v) => resolveAddresses(resolver, v, paramType.arrayChildren)));\n }\n\n return value;\n}\n\nasync function populateTransaction(contract: Contract, fragment: FunctionFragment, args: Array<any>): Promise<PopulatedTransaction> {\n // If an extra argument is given, it is overrides\n let overrides: CallOverrides = { };\n if (args.length === fragment.inputs.length + 1 && typeof(args[args.length - 1]) === \"object\") {\n overrides = shallowCopy(args.pop());\n }\n\n // Make sure the parameter count matches\n logger.checkArgumentCount(args.length, fragment.inputs.length, \"passed to contract\");\n\n // Populate \"from\" override (allow promises)\n if (contract.signer) {\n if (overrides.from) {\n // Contracts with a Signer are from the Signer's frame-of-reference;\n // but we allow overriding \"from\" if it matches the signer\n overrides.from = resolveProperties({\n override: resolveName(contract.signer, overrides.from),\n signer: contract.signer.getAddress()\n }).then(async (check) => {\n if (getAddress(check.signer) !== check.override) {\n logger.throwError(\"Contract with a Signer cannot override from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"overrides.from\"\n });\n }\n\n return check.override;\n });\n\n } else {\n overrides.from = contract.signer.getAddress();\n }\n\n } else if (overrides.from) {\n overrides.from = resolveName(contract.provider, overrides.from);\n\n //} else {\n // Contracts without a signer can override \"from\", and if\n // unspecified the zero address is used\n //overrides.from = AddressZero;\n }\n\n // Wait for all dependencies to be resolved (prefer the signer over the provider)\n const resolved = await resolveProperties({\n args: resolveAddresses(contract.signer || contract.provider, args, fragment.inputs),\n address: contract.resolvedAddress,\n overrides: (resolveProperties(overrides) || { })\n });\n\n // The ABI coded transaction\n const data = contract.interface.encodeFunctionData(fragment, resolved.args);\n const tx: PopulatedTransaction = {\n data: data,\n to: resolved.address\n };\n\n // Resolved Overrides\n const ro = resolved.overrides;\n\n // Populate simple overrides\n if (ro.nonce != null) { tx.nonce = BigNumber.from(ro.nonce).toNumber(); }\n if (ro.gasLimit != null) { tx.gasLimit = BigNumber.from(ro.gasLimit); }\n if (ro.gasPrice != null) { tx.gasPrice = BigNumber.from(ro.gasPrice); }\n if (ro.maxFeePerGas != null) { tx.maxFeePerGas = BigNumber.from(ro.maxFeePerGas); }\n if (ro.maxPriorityFeePerGas != null) { tx.maxPriorityFeePerGas = BigNumber.from(ro.maxPriorityFeePerGas); }\n if (ro.from != null) { tx.from = ro.from; }\n\n if (ro.type != null) { tx.type = ro.type; }\n if (ro.accessList != null) { tx.accessList = accessListify(ro.accessList); }\n\n // If there was no \"gasLimit\" override, but the ABI specifies a default, use it\n if (tx.gasLimit == null && fragment.gas != null) {\n // Compute the intrinsic gas cost for this transaction\n // @TODO: This is based on the yellow paper as of Petersburg; this is something\n // we may wish to parameterize in v6 as part of the Network object. Since this\n // is always a non-nil to address, we can ignore G_create, but may wish to add\n // similar logic to the ContractFactory.\n let intrinsic = 21000;\n const bytes = arrayify(data);\n for (let i = 0; i < bytes.length; i++) {\n intrinsic += 4;\n if (bytes[i]) { intrinsic += 64; }\n }\n tx.gasLimit = BigNumber.from(fragment.gas).add(intrinsic);\n }\n\n // Populate \"value\" override\n if (ro.value) {\n const roValue = BigNumber.from(ro.value);\n if (!roValue.isZero() && !fragment.payable) {\n logger.throwError(\"non-payable method cannot override value\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"overrides.value\",\n value: overrides.value\n });\n }\n tx.value = roValue;\n }\n\n if (ro.customData) {\n tx.customData = shallowCopy(ro.customData);\n }\n\n if (ro.ccipReadEnabled) {\n tx.ccipReadEnabled = !!ro.ccipReadEnabled;\n }\n\n // Remove the overrides\n delete overrides.nonce;\n delete overrides.gasLimit;\n delete overrides.gasPrice;\n delete overrides.from;\n delete overrides.value;\n\n delete overrides.type;\n delete overrides.accessList;\n\n delete overrides.maxFeePerGas;\n delete overrides.maxPriorityFeePerGas;\n\n delete overrides.customData;\n delete overrides.ccipReadEnabled;\n\n // Make sure there are no stray overrides, which may indicate a\n // typo or using an unsupported key.\n const leftovers = Object.keys(overrides).filter((key) => ((<any>overrides)[key] != null));\n if (leftovers.length) {\n logger.throwError(`cannot override ${ leftovers.map((l) => JSON.stringify(l)).join(\",\") }`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"overrides\",\n overrides: leftovers\n });\n }\n\n return tx;\n}\n\n\nfunction buildPopulate(contract: Contract, fragment: FunctionFragment): ContractFunction<PopulatedTransaction> {\n return function(...args: Array<any>): Promise<PopulatedTransaction> {\n return populateTransaction(contract, fragment, args);\n };\n}\n\nfunction buildEstimate(contract: Contract, fragment: FunctionFragment): ContractFunction<BigNumber> {\n const signerOrProvider = (contract.signer || contract.provider);\n return async function(...args: Array<any>): Promise<BigNumber> {\n if (!signerOrProvider) {\n logger.throwError(\"estimate require a provider or signer\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"estimateGas\"\n })\n }\n\n const tx = await populateTransaction(contract, fragment, args);\n return await signerOrProvider.estimateGas(tx);\n };\n}\n\nfunction addContractWait(contract: Contract, tx: TransactionResponse) {\n const wait = tx.wait.bind(tx);\n tx.wait = (confirmations?: number) => {\n return wait(confirmations).then((receipt: ContractReceipt) => {\n receipt.events = receipt.logs.map((log) => {\n let event: Event = (<Event>deepCopy(log));\n let parsed: LogDescription = null;\n try {\n parsed = contract.interface.parseLog(log);\n } catch (e){ }\n\n // Successfully parsed the event log; include it\n if (parsed) {\n event.args = parsed.args;\n event.decode = (data: BytesLike, topics?: Array<any>) => {\n return contract.interface.decodeEventLog(parsed.eventFragment, data, topics);\n };\n event.event = parsed.name;\n event.eventSignature = parsed.signature;\n }\n\n // Useful operations\n event.removeListener = () => { return contract.provider; }\n event.getBlock = () => {\n return contract.provider.getBlock(receipt.blockHash);\n }\n event.getTransaction = () => {\n return contract.provider.getTransaction(receipt.transactionHash);\n }\n event.getTransactionReceipt = () => {\n return Promise.resolve(receipt);\n }\n\n return event;\n });\n\n return receipt;\n });\n };\n}\n\nfunction buildCall(contract: Contract, fragment: FunctionFragment, collapseSimple: boolean): ContractFunction {\n const signerOrProvider = (contract.signer || contract.provider);\n\n return async function(...args: Array<any>): Promise<any> {\n // Extract the \"blockTag\" override if present\n let blockTag = undefined;\n if (args.length === fragment.inputs.length + 1 && typeof(args[args.length - 1]) === \"object\") {\n const overrides = shallowCopy(args.pop());\n if (overrides.blockTag != null) {\n blockTag = await overrides.blockTag;\n }\n delete overrides.blockTag;\n args.push(overrides);\n }\n\n // If the contract was just deployed, wait until it is mined\n if (contract.deployTransaction != null) {\n await contract._deployed(blockTag);\n }\n\n // Call a node and get the result\n const tx = await populateTransaction(contract, fragment, args);\n const result = await signerOrProvider.call(tx, blockTag);\n\n try {\n let value = contract.interface.decodeFunctionResult(fragment, result);\n if (collapseSimple && fragment.outputs.length === 1) {\n value = value[0];\n }\n return value;\n\n } catch (error) {\n if (error.code === Logger.errors.CALL_EXCEPTION) {\n error.address = contract.address;\n error.args = args;\n error.transaction = tx;\n }\n throw error;\n }\n };\n}\n\nfunction buildSend(contract: Contract, fragment: FunctionFragment): ContractFunction<TransactionResponse> {\n return async function(...args: Array<any>): Promise<TransactionResponse> {\n if (!contract.signer) {\n logger.throwError(\"sending a transaction requires a signer\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"sendTransaction\"\n })\n }\n\n // If the contract was just deployed, wait until it is mined\n if (contract.deployTransaction != null) {\n await contract._deployed();\n }\n\n const txRequest = await populateTransaction(contract, fragment, args);\n\n const tx = await contract.signer.sendTransaction(txRequest);\n\n // Tweak the tx.wait so the receipt has extra properties\n addContractWait(contract, tx);\n\n return tx;\n };\n}\n\nfunction buildDefault(contract: Contract, fragment: FunctionFragment, collapseSimple: boolean): ContractFunction {\n if (fragment.constant) {\n return buildCall(contract, fragment, collapseSimple);\n }\n return buildSend(contract, fragment);\n}\n\nfunction getEventTag(filter: EventFilter): string {\n if (filter.address && (filter.topics == null || filter.topics.length === 0)) {\n return \"*\";\n }\n\n return (filter.address || \"*\") + \"@\" + (filter.topics ? filter.topics.map((topic) => {\n if (Array.isArray(topic)) {\n return topic.join(\"|\");\n }\n return topic;\n }).join(\":\"): \"\");\n}\n\nclass RunningEvent {\n readonly tag: string;\n readonly filter: EventFilter;\n private _listeners: Array<{ listener: Listener, once: boolean }>;\n\n constructor(tag: string, filter: EventFilter) {\n defineReadOnly(this, \"tag\", tag);\n defineReadOnly(this, \"filter\", filter);\n this._listeners = [ ];\n }\n\n addListener(listener: Listener, once: boolean): void {\n this._listeners.push({ listener: listener, once: once });\n }\n\n removeListener(listener: Listener): void {\n let done = false;\n this._listeners = this._listeners.filter((item) => {\n if (done || item.listener !== listener) { return true; }\n done = true;\n return false;\n });\n }\n\n removeAllListeners(): void {\n this._listeners = [];\n }\n\n listeners(): Array<Listener> {\n return this._listeners.map((i) => i.listener);\n }\n\n listenerCount(): number {\n return this._listeners.length;\n }\n\n run(args: Array<any>): number {\n const listenerCount = this.listenerCount();\n this._listeners = this._listeners.filter((item) => {\n\n const argsCopy = args.slice();\n\n // Call the callback in the next event loop\n setTimeout(() => {\n item.listener.apply(this, argsCopy);\n }, 0);\n\n // Reschedule it if it not \"once\"\n return !(item.once);\n });\n\n return listenerCount;\n }\n\n prepareEvent(event: Event): void {\n }\n\n // Returns the array that will be applied to an emit\n getEmit(event: Event): Array<any> {\n return [ event ];\n }\n}\n\nclass ErrorRunningEvent extends RunningEvent {\n constructor() {\n super(\"error\", null);\n }\n}\n\n\n// @TODO Fragment should inherit Wildcard? and just override getEmit?\n// or have a common abstract super class, with enough constructor\n// options to configure both.\n\n// A Fragment Event will populate all the properties that Wildcard\n// will, and additionally dereference the arguments when emitting\nclass FragmentRunningEvent extends RunningEvent {\n readonly address: string;\n readonly interface: Interface;\n readonly fragment: EventFragment;\n\n constructor(address: string, contractInterface: Interface, fragment: EventFragment, topics?: Array<string|Array<string>>) {\n const filter: EventFilter = {\n address: address\n }\n\n let topic = contractInterface.getEventTopic(fragment);\n if (topics) {\n if (topic !== topics[0]) { logger.throwArgumentError(\"topic mismatch\", \"topics\", topics); }\n filter.topics = topics.slice();\n } else {\n filter.topics = [ topic ];\n }\n\n super(getEventTag(filter), filter);\n defineReadOnly(this, \"address\", address);\n defineReadOnly(this, \"interface\", contractInterface);\n defineReadOnly(this, \"fragment\", fragment);\n }\n\n\n prepareEvent(event: Event): void {\n super.prepareEvent(event);\n\n event.event = this.fragment.name;\n event.eventSignature = this.fragment.format();\n\n event.decode = (data: BytesLike, topics?: Array<string>) => {\n return this.interface.decodeEventLog(this.fragment, data, topics);\n };\n\n try {\n event.args = this.interface.decodeEventLog(this.fragment, event.data, event.topics);\n } catch (error) {\n event.args = null;\n event.decodeError = error;\n }\n }\n\n getEmit(event: Event): Array<any> {\n const errors = checkResultErrors(event.args);\n if (errors.length) { throw errors[0].error; }\n\n const args = (event.args || []).slice();\n args.push(event);\n return args;\n }\n}\n\n// A Wildcard Event will attempt to populate:\n// - event The name of the event name\n// - eventSignature The full signature of the event\n// - decode A function to decode data and topics\n// - args The decoded data and topics\nclass WildcardRunningEvent extends RunningEvent {\n readonly address: string;\n readonly interface: Interface;\n\n constructor(address: string, contractInterface: Interface) {\n super(\"*\", { address: address });\n defineReadOnly(this, \"address\", address);\n defineReadOnly(this, \"interface\", contractInterface);\n }\n\n prepareEvent(event: Event): void {\n super.prepareEvent(event);\n\n try {\n const parsed = this.interface.parseLog(event);\n event.event = parsed.name;\n event.eventSignature = parsed.signature;\n\n event.decode = (data: BytesLike, topics?: Array<string>) => {\n return this.interface.decodeEventLog(parsed.eventFragment, data, topics);\n };\n\n event.args = parsed.args;\n } catch (error) {\n // No matching event\n }\n }\n}\n\nexport type ContractInterface = string | ReadonlyArray<Fragment | JsonFragment | string> | Interface;\n\ntype InterfaceFunc = (contractInterface: ContractInterface) => Interface;\n\n\nexport class BaseContract {\n readonly address: string;\n readonly interface: Interface;\n\n readonly signer: Signer;\n readonly provider: Provider;\n\n readonly functions: { [ name: string ]: ContractFunction };\n\n readonly callStatic: { [ name: string ]: ContractFunction };\n readonly estimateGas: { [ name: string ]: ContractFunction<BigNumber> };\n readonly populateTransaction: { [ name: string ]: ContractFunction<PopulatedTransaction> };\n\n readonly filters: { [ name: string ]: (...args: Array<any>) => EventFilter };\n\n // This will always be an address. This will only differ from\n // address if an ENS name was used in the constructor\n readonly resolvedAddress: Promise<string>;\n\n // This is only set if the contract was created with a call to deploy\n readonly deployTransaction: TransactionResponse;\n\n _deployedPromise: Promise<Contract>;\n\n // A list of RunningEvents to track listeners for each event tag\n _runningEvents: { [ eventTag: string ]: RunningEvent };\n\n // Wrapped functions to call emit and allow deregistration from the provider\n _wrappedEmits: { [ eventTag: string ]: (...args: Array<any>) => void };\n\n constructor(addressOrName: string, contractInterface: ContractInterface, signerOrProvider?: Signer | Provider) {\n // @TODO: Maybe still check the addressOrName looks like a valid address or name?\n //address = getAddress(address);\n defineReadOnly(this, \"interface\", getStatic<InterfaceFunc>(new.target, \"getInterface\")(contractInterface));\n\n if (signerOrProvider == null) {\n defineReadOnly(this, \"provider\", null);\n defineReadOnly(this, \"signer\", null);\n } else if (Signer.isSigner(signerOrProvider)) {\n defineReadOnly(this, \"provider\", signerOrProvider.provider || null);\n defineReadOnly(this, \"signer\", signerOrProvider);\n } else if (Provider.isProvider(signerOrProvider)) {\n defineReadOnly(this, \"provider\", signerOrProvider);\n defineReadOnly(this, \"signer\", null);\n } else {\n logger.throwArgumentError(\"invalid signer or provider\", \"signerOrProvider\", signerOrProvider);\n }\n\n defineReadOnly(this, \"callStatic\", { });\n defineReadOnly(this, \"estimateGas\", { });\n defineReadOnly(this, \"functions\", { });\n defineReadOnly(this, \"populateTransaction\", { });\n\n defineReadOnly(this, \"filters\", { });\n\n {\n const uniqueFilters: { [ name: string ]: Array<string> } = { };\n Object.keys(this.interface.events).forEach((eventSignature) => {\n const event = this.interface.events[eventSignature];\n defineReadOnly(this.filters, eventSignature, (...args: Array<any>) => {\n return {\n address: this.address,\n topics: this.interface.encodeFilterTopics(event, args)\n }\n });\n if (!uniqueFilters[event.name]) { uniqueFilters[event.name] = [ ]; }\n uniqueFilters[event.name].push(eventSignature);\n });\n\n Object.keys(uniqueFilters).forEach((name) => {\n const filters = uniqueFilters[name];\n if (filters.length === 1) {\n defineReadOnly(this.filters, name, this.filters[filters[0]]);\n } else {\n logger.warn(`Duplicate definition of ${ name } (${ filters.join(\", \")})`);\n }\n });\n }\n\n defineReadOnly(this, \"_runningEvents\", { });\n defineReadOnly(this, \"_wrappedEmits\", { });\n\n if (addressOrName == null) {\n logger.throwArgumentError(\"invalid contract address or ENS name\", \"addressOrName\", addressOrName);\n }\n\n defineReadOnly(this, \"address\", addressOrName);\n if (this.provider) {\n defineReadOnly(this, \"resolvedAddress\", resolveName(this.provider, addressOrName));\n } else {\n try {\n defineReadOnly(this, \"resolvedAddress\", Promise.resolve(getAddress(addressOrName)));\n } catch (error) {\n // Without a provider, we cannot use ENS names\n logger.throwError(\"provider is required to use ENS name as contract address\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new Contract\"\n });\n }\n }\n\n // Swallow bad ENS names to prevent Unhandled Exceptions\n this.resolvedAddress.catch((e) => { });\n\n const uniqueNames: { [ name: string ]: Array<string> } = { };\n const uniqueSignatures: { [ signature: string ]: boolean } = { };\n Object.keys(this.interface.functions).forEach((signature) => {\n const fragment = this.interface.functions[signature];\n\n // Check that the signature is unique; if not the ABI generation has\n // not been cleaned or may be incorrectly generated\n if (uniqueSignatures[signature]) {\n logger.warn(`Duplicate ABI entry for ${ JSON.stringify(signature) }`);\n return;\n }\n uniqueSignatures[signature] = true;\n\n // Track unique names; we only expose bare named functions if they\n // are ambiguous\n {\n const name = fragment.name;\n if (!uniqueNames[`%${ name }`]) { uniqueNames[`%${ name }`] = [ ]; }\n uniqueNames[`%${ name }`].push(signature);\n }\n\n if ((<Contract>this)[signature] == null) {\n defineReadOnly<any, any>(this, signature, buildDefault(this, fragment, true));\n }\n\n // We do not collapse simple calls on this bucket, which allows\n // frameworks to safely use this without introspection as well as\n // allows decoding error recovery.\n if (this.functions[signature] == null) {\n defineReadOnly(this.functions, signature, buildDefault(this, fragment, false));\n }\n\n if (this.callStatic[signature] == null) {\n defineReadOnly(this.callStatic, signature, buildCall(this, fragment, true));\n }\n\n if (this.populateTransaction[signature] == null) {\n defineReadOnly(this.populateTransaction, signature, buildPopulate(this, fragment));\n }\n\n if (this.estimateGas[signature] == null) {\n defineReadOnly(this.estimateGas, signature, buildEstimate(this, fragment));\n }\n });\n\n Object.keys(uniqueNames).forEach((name) => {\n // Ambiguous names to not get attached as bare names\n const signatures = uniqueNames[name];\n if (signatures.length > 1) { return; }\n\n // Strip off the leading \"%\" used for prototype protection\n name = name.substring(1);\n\n const signature = signatures[0];\n\n // If overwriting a member property that is null, swallow the error\n try {\n if ((<Contract>this)[name] == null) {\n defineReadOnly(<Contract>this, name, (<Contract>this)[signature]);\n }\n } catch (e) { }\n\n if (this.functions[name] == null) {\n defineReadOnly(this.functions, name, this.functions[signature]);\n }\n\n if (this.callStatic[name] == null) {\n defineReadOnly(this.callStatic, name, this.callStatic[signature]);\n }\n\n if (this.populateTransaction[name] == null) {\n defineReadOnly(this.populateTransaction, name, this.populateTransaction[signature]);\n }\n\n if (this.estimateGas[name] == null) {\n defineReadOnly(this.estimateGas, name, this.estimateGas[signature]);\n }\n });\n }\n\n static getContractAddress(transaction: { from: string, nonce: BigNumberish }): string {\n return getContractAddress(transaction);\n }\n\n static getInterface(contractInterface: ContractInterface): Interface {\n if (Interface.isInterface(contractInterface)) {\n return contractInterface;\n }\n return new Interface(contractInterface);\n }\n\n // @TODO: Allow timeout?\n deployed(): Promise<Contract> {\n return this._deployed();\n }\n\n _deployed(blockTag?: BlockTag): Promise<Contract> {\n if (!this._deployedPromise) {\n\n // If we were just deployed, we know the transaction we should occur in\n if (this.deployTransaction) {\n this._deployedPromise = this.deployTransaction.wait().then(() => {\n return this;\n });\n\n } else {\n // @TODO: Once we allow a timeout to be passed in, we will wait\n // up to that many blocks for getCode\n\n // Otherwise, poll for our code to be deployed\n this._deployedPromise = this.provider.getCode(this.address, blockTag).then((code) => {\n if (code === \"0x\") {\n logger.throwError(\"contract not deployed\", Logger.errors.UNSUPPORTED_OPERATION, {\n contractAddress: this.address,\n operation: \"getDeployed\"\n });\n }\n return this;\n });\n }\n }\n\n return this._deployedPromise;\n }\n\n // @TODO:\n // estimateFallback(overrides?: TransactionRequest): Promise<BigNumber>\n\n // @TODO:\n // estimateDeploy(bytecode: string, ...args): Promise<BigNumber>\n\n fallback(overrides?: TransactionRequest): Promise<TransactionResponse> {\n if (!this.signer) {\n logger.throwError(\"sending a transactions require a signer\", Logger.errors.UNSUPPORTED_OPERATION, { operation: \"sendTransaction(fallback)\" })\n }\n\n const tx: Deferrable<TransactionRequest> = shallowCopy(overrides || {});\n\n [\"from\", \"to\"].forEach(function(key) {\n if ((<any>tx)[key] == null) { return; }\n logger.throwError(\"cannot override \" + key, Logger.errors.UNSUPPORTED_OPERATION, { operation: key })\n });\n\n tx.to = this.resolvedAddress;\n return this.deployed().then(() => {\n return this.signer.sendTransaction(tx);\n });\n }\n\n // Reconnect to a different signer or provider\n connect(signerOrProvider: Signer | Provider | string): Contract {\n if (typeof(signerOrProvider) === \"string\") {\n signerOrProvider = new VoidSigner(signerOrProvider, this.provider);\n }\n\n const contract = new (<{ new(...args: any[]): Contract }>(this.constructor))(this.address, this.interface, signerOrProvider);\n if (this.deployTransaction) {\n defineReadOnly(contract, \"deployTransaction\", this.deployTransaction);\n }\n\n return contract;\n }\n\n // Re-attach to a different on-chain instance of this contract\n attach(addressOrName: string): Contract {\n return new (<{ new(...args: any[]): Contract }>(this.constructor))(addressOrName, this.interface, this.signer || this.provider);\n }\n\n static isIndexed(value: any): value is Indexed {\n return Indexed.isIndexed(value);\n }\n\n private _normalizeRunningEvent(runningEvent: RunningEvent): RunningEvent {\n // Already have an instance of this event running; we can re-use it\n if (this._runningEvents[runningEvent.tag]) {\n return this._runningEvents[runningEvent.tag];\n }\n return runningEvent\n }\n\n private _getRunningEvent(eventName: EventFilter | string): RunningEvent {\n if (typeof(eventName) === \"string\") {\n\n // Listen for \"error\" events (if your contract has an error event, include\n // the full signature to bypass this special event keyword)\n if (eventName === \"error\") {\n return this._normalizeRunningEvent(new ErrorRunningEvent());\n }\n\n // Listen for any event that is registered\n if (eventName === \"event\") {\n return this._normalizeRunningEvent(new RunningEvent(\"event\", null));\n }\n\n // Listen for any event\n if (eventName === \"*\") {\n return this._normalizeRunningEvent(new WildcardRunningEvent(this.address, this.interface));\n }\n\n // Get the event Fragment (throws if ambiguous/unknown event)\n const fragment = this.interface.getEvent(eventName)\n return this._normalizeRunningEvent(new FragmentRunningEvent(this.address, this.interface, fragment));\n }\n\n // We have topics to filter by...\n if (eventName.topics && eventName.topics.length > 0) {\n\n // Is it a known topichash? (throws if no matching topichash)\n try {\n const topic = eventName.topics[0];\n if (typeof(topic) !== \"string\") {\n throw new Error(\"invalid topic\"); // @TODO: May happen for anonymous events\n }\n const fragment = this.interface.getEvent(topic);\n return this._normalizeRunningEvent(new FragmentRunningEvent(this.address, this.interface, fragment, eventName.topics));\n } catch (error) { }\n\n // Filter by the unknown topichash\n const filter: EventFilter = {\n address: this.address,\n topics: eventName.topics\n }\n\n return this._normalizeRunningEvent(new RunningEvent(getEventTag(filter), filter));\n }\n\n return this._normalizeRunningEvent(new WildcardRunningEvent(this.address, this.interface));\n }\n\n _checkRunningEvents(runningEvent: RunningEvent): void {\n if (runningEvent.listenerCount() === 0) {\n delete this._runningEvents[runningEvent.tag];\n\n // If we have a poller for this, remove it\n const emit = this._wrappedEmits[runningEvent.tag];\n if (emit && runningEvent.filter) {\n this.provider.off(runningEvent.filter, emit);\n delete this._wrappedEmits[runningEvent.tag];\n }\n }\n }\n\n // Subclasses can override this to gracefully recover\n // from parse errors if they wish\n _wrapEvent(runningEvent: RunningEvent, log: Log, listener: Listener): Event {\n const event = <Event>deepCopy(log);\n\n event.removeListener = () => {\n if (!listener) { return; }\n runningEvent.removeListener(listener);\n this._checkRunningEvents(runningEvent);\n };\n\n event.getBlock = () => { return this.provider.getBlock(log.blockHash); }\n event.getTransaction = () => { return this.provider.getTransaction(log.transactionHash); }\n event.getTransactionReceipt = () => { return this.provider.getTransactionReceipt(log.transactionHash); }\n\n // This may throw if the topics and data mismatch the signature\n runningEvent.prepareEvent(event);\n\n return event;\n }\n\n private _addEventListener(runningEvent: RunningEvent, listener: Listener, once: boolean): void {\n if (!this.provider) {\n logger.throwError(\"events require a provider or a signer with a provider\", Logger.errors.UNSUPPORTED_OPERATION, { operation: \"once\" })\n }\n\n runningEvent.addListener(listener, once);\n\n // Track this running event and its listeners (may already be there; but no harm in updating)\n this._runningEvents[runningEvent.tag] = runningEvent;\n\n // If we are not polling the provider, start polling\n if (!this._wrappedEmits[runningEvent.tag]) {\n const wrappedEmit = (log: Log) => {\n let event = this._wrapEvent(runningEvent, log, listener);\n\n // Try to emit the result for the parameterized event...\n if (event.decodeError == null) {\n try {\n const args = runningEvent.getEmit(event);\n this.emit(runningEvent.filter, ...args);\n } catch (error) {\n event.decodeError = error.error;\n }\n }\n\n // Always emit \"event\" for fragment-base events\n if (runningEvent.filter != null) {\n this.emit(\"event\", event);\n }\n\n // Emit \"error\" if there was an error\n if (event.decodeError != null) {\n this.emit(\"error\", event.decodeError, event);\n }\n };\n this._wrappedEmits[runningEvent.tag] = wrappedEmit;\n\n // Special events, like \"error\" do not have a filter\n if (runningEvent.filter != null) {\n this.provider.on(runningEvent.filter, wrappedEmit);\n }\n }\n }\n\n queryFilter(event: EventFilter | string, fromBlockOrBlockhash?: BlockTag | string, toBlock?: BlockTag): Promise<Array<Event>> {\n const runningEvent = this._getRunningEvent(event);\n const filter = shallowCopy(runningEvent.filter);\n\n if (typeof(fromBlockOrBlockhash) === \"string\" && isHexString(fromBlockOrBlockhash, 32)) {\n if (toBlock != null) {\n logger.throwArgumentError(\"cannot specify toBlock with blockhash\", \"toBlock\", toBlock);\n }\n (<FilterByBlockHash>filter).blockHash = fromBlockOrBlockhash;\n } else {\n (<Filter>filter).fromBlock = ((fromBlockOrBlockhash != null) ? fromBlockOrBlockhash: 0);\n (<Filter>filter).toBlock = ((toBlock != null) ? toBlock: \"latest\");\n }\n\n return this.provider.getLogs(filter).then((logs) => {\n return logs.map((log) => this._wrapEvent(runningEvent, log, null));\n });\n }\n\n on(event: EventFilter | string, listener: Listener): this {\n this._addEventListener(this._getRunningEvent(event), listener, false);\n return this;\n }\n\n once(event: EventFilter | string, listener: Listener): this {\n this._addEventListener(this._getRunningEvent(event), listener, true);\n return this;\n }\n\n emit(eventName: EventFilter | string, ...args: Array<any>): boolean {\n if (!this.provider) { return false; }\n\n const runningEvent = this._getRunningEvent(eventName);\n const result = (runningEvent.run(args) > 0);\n\n // May have drained all the \"once\" events; check for living events\n this._checkRunningEvents(runningEvent);\n\n return result;\n }\n\n listenerCount(eventName?: EventFilter | string): number {\n if (!this.provider) { return 0; }\n if (eventName == null) {\n return Object.keys(this._runningEvents).reduce((accum, key) => {\n return accum + this._runningEvents[key].listenerCount();\n }, 0);\n }\n return this._getRunningEvent(eventName).listenerCount();\n }\n\n listeners(eventName?: EventFilter | string): Array<Listener> {\n if (!this.provider) { return []; }\n\n if (eventName == null) {\n const result: Array<Listener> = [ ];\n for (let tag in this._runningEvents) {\n this._runningEvents[tag].listeners().forEach((listener) => {\n result.push(listener)\n });\n }\n return result;\n }\n\n return this._getRunningEvent(eventName).listeners();\n }\n\n removeAllListeners(eventName?: EventFilter | string): this {\n if (!this.provider) { return this; }\n\n if (eventName == null) {\n for (const tag in this._runningEvents) {\n const runningEvent = this._runningEvents[tag];\n runningEvent.removeAllListeners();\n this._checkRunningEvents(runningEvent);\n }\n return this;\n }\n\n // Delete any listeners\n const runningEvent = this._getRunningEvent(eventName);\n runningEvent.removeAllListeners();\n this._checkRunningEvents(runningEvent);\n\n return this;\n }\n\n off(eventName: EventFilter | string, listener: Listener): this {\n if (!this.provider) { return this; }\n const runningEvent = this._getRunningEvent(eventName);\n runningEvent.removeListener(listener);\n this._checkRunningEvents(runningEvent);\n return this;\n }\n\n removeListener(eventName: EventFilter | string, listener: Listener): this {\n return this.off(eventName, listener);\n }\n\n}\n\nexport class Contract extends BaseContract {\n // The meta-class properties\n readonly [ key: string ]: ContractFunction | any;\n}\n\nexport class ContractFactory {\n\n readonly interface: Interface;\n readonly bytecode: string;\n readonly signer: Signer;\n\n constructor(contractInterface: ContractInterface, bytecode: BytesLike | { object: string }, signer?: Signer) {\n\n let bytecodeHex: string = null;\n\n if (typeof(bytecode) === \"string\") {\n bytecodeHex = bytecode;\n } else if (isBytes(bytecode)) {\n bytecodeHex = hexlify(bytecode);\n } else if (bytecode && typeof(bytecode.object) === \"string\") {\n // Allow the bytecode object from the Solidity compiler\n bytecodeHex = (<any>bytecode).object;\n } else {\n // Crash in the next verification step\n bytecodeHex = \"!\";\n }\n\n // Make sure it is 0x prefixed\n if (bytecodeHex.substring(0, 2) !== \"0x\") { bytecodeHex = \"0x\" + bytecodeHex; }\n\n // Make sure the final result is valid bytecode\n if (!isHexString(bytecodeHex) || (bytecodeHex.length % 2)) {\n logger.throwArgumentError(\"invalid bytecode\", \"bytecode\", bytecode);\n }\n\n // If we have a signer, make sure it is valid\n if (signer && !Signer.isSigner(signer)) {\n logger.throwArgumentError(\"invalid signer\", \"signer\", signer);\n }\n\n defineReadOnly(this, \"bytecode\", bytecodeHex);\n defineReadOnly(this, \"interface\", getStatic<InterfaceFunc>(new.target, \"getInterface\")(contractInterface));\n defineReadOnly(this, \"signer\", signer || null);\n }\n\n // @TODO: Future; rename to populateTransaction?\n getDeployTransaction(...args: Array<any>): TransactionRequest {\n let tx: TransactionRequest = { };\n\n // If we have 1 additional argument, we allow transaction overrides\n if (args.length === this.interface.deploy.inputs.length + 1 && typeof(args[args.length - 1]) === \"object\") {\n tx = shallowCopy(args.pop());\n for (const key in tx) {\n if (!allowedTransactionKeys[key]) {\n throw new Error(\"unknown transaction override \" + key);\n }\n }\n }\n\n // Do not allow these to be overridden in a deployment transaction\n [\"data\", \"from\", \"to\"].forEach((key) => {\n if ((<any>tx)[key] == null) { return; }\n logger.throwError(\"cannot override \" + key, Logger.errors.UNSUPPORTED_OPERATION, { operation: key })\n });\n\n if (tx.value) {\n const value = BigNumber.from(tx.value);\n if (!value.isZero() && !this.interface.deploy.payable) {\n logger.throwError(\"non-payable constructor cannot override value\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"overrides.value\",\n value: tx.value\n });\n }\n }\n\n // Make sure the call matches the constructor signature\n logger.checkArgumentCount(args.length, this.interface.deploy.inputs.length, \" in Contract constructor\");\n\n // Set the data to the bytecode + the encoded constructor arguments\n tx.data = hexlify(concat([\n this.bytecode,\n this.interface.encodeDeploy(args)\n ]));\n\n return tx\n }\n\n async deploy(...args: Array<any>): Promise<Contract> {\n\n let overrides: any = { };\n\n // If 1 extra parameter was passed in, it contains overrides\n if (args.length === this.interface.deploy.inputs.length + 1) {\n overrides = args.pop();\n }\n\n // Make sure the call matches the constructor signature\n logger.checkArgumentCount(args.length, this.interface.deploy.inputs.length, \" in Contract constructor\");\n\n // Resolve ENS names and promises in the arguments\n const params = await resolveAddresses(this.signer, args, this.interface.deploy.inputs);\n params.push(overrides);\n\n // Get the deployment transaction (with optional overrides)\n const unsignedTx = this.getDeployTransaction(...params);\n\n // Send the deployment transaction\n const tx = await this.signer.sendTransaction(unsignedTx);\n\n const address = getStatic<(tx: TransactionResponse) => string>(this.constructor, \"getContractAddress\")(tx);\n const contract = getStatic<(address: string, contractInterface: ContractInterface, signer?: Signer) => Contract>(this.constructor, \"getContract\")(address, this.interface, this.signer);\n\n // Add the modified wait that wraps events\n addContractWait(contract, tx);\n\n defineReadOnly(contract, \"deployTransaction\", tx);\n return contract;\n }\n\n attach(address: string): Contract {\n return (<any>(this.constructor)).getContract(address, this.interface, this.signer);\n }\n\n connect(signer: Signer) {\n return new (<{ new(...args: any[]): ContractFactory }>(this.constructor))(this.interface, this.bytecode, signer);\n }\n\n static fromSolidity(compilerOutput: any, signer?: Signer): ContractFactory {\n if (compilerOutput == null) {\n logger.throwError(\"missing compiler output\", Logger.errors.MISSING_ARGUMENT, { argument: \"compilerOutput\" });\n }\n\n if (typeof(compilerOutput) === \"string\") {\n compilerOutput = JSON.parse(compilerOutput);\n }\n\n const abi = compilerOutput.abi;\n\n let bytecode: any = null;\n if (compilerOutput.bytecode) {\n bytecode = compilerOutput.bytecode;\n } else if (compilerOutput.evm && compilerOutput.evm.bytecode) {\n bytecode = compilerOutput.evm.bytecode;\n }\n\n return new this(abi, bytecode, signer);\n }\n\n static getInterface(contractInterface: ContractInterface) {\n return Contract.getInterface(contractInterface);\n }\n\n static getContractAddress(tx: { from: string, nonce: BytesLike | BigNumber | number }): string {\n return getContractAddress(tx);\n }\n\n static getContract(address: string, contractInterface: ContractInterface, signer?: Signer): Contract {\n return new Contract(address, contractInterface, signer);\n }\n}\n","/**\n * var basex = require(\"base-x\");\n *\n * This implementation is heavily based on base-x. The main reason to\n * deviate was to prevent the dependency of Buffer.\n *\n * Contributors:\n *\n * base-x encoding\n * Forked from https://github.com/cryptocoinjs/bs58\n * Originally written by Mike Hearn for BitcoinJ\n * Copyright (c) 2011 Google Inc\n * Ported to JavaScript by Stefan Thomas\n * Merged Buffer refactorings from base58-native by Stephen Pair\n * Copyright (c) 2013 BitPay Inc\n *\n * The MIT License (MIT)\n *\n * Copyright base-x contributors (c) 2016\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n *\n */\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nexport class BaseX {\n readonly alphabet: string;\n readonly base: number;\n\n _alphabetMap: { [ character: string ]: number };\n _leader: string;\n\n constructor(alphabet: string) {\n defineReadOnly(this, \"alphabet\", alphabet);\n defineReadOnly(this, \"base\", alphabet.length);\n\n defineReadOnly(this, \"_alphabetMap\", { });\n defineReadOnly(this, \"_leader\", alphabet.charAt(0));\n\n // pre-compute lookup table\n for (let i = 0; i < alphabet.length; i++) {\n this._alphabetMap[alphabet.charAt(i)] = i;\n }\n }\n\n encode(value: BytesLike): string {\n let source = arrayify(value);\n\n if (source.length === 0) { return \"\"; }\n\n let digits = [ 0 ]\n for (let i = 0; i < source.length; ++i) {\n let carry = source[i];\n for (let j = 0; j < digits.length; ++j) {\n carry += digits[j] << 8;\n digits[j] = carry % this.base;\n carry = (carry / this.base) | 0;\n }\n\n while (carry > 0) {\n digits.push(carry % this.base);\n carry = (carry / this.base) | 0;\n }\n }\n\n let string = \"\"\n\n // deal with leading zeros\n for (let k = 0; source[k] === 0 && k < source.length - 1; ++k) {\n string += this._leader;\n }\n\n // convert digits to a string\n for (let q = digits.length - 1; q >= 0; --q) {\n string += this.alphabet[digits[q]];\n }\n\n return string;\n }\n\n decode(value: string): Uint8Array {\n if (typeof(value) !== \"string\") {\n throw new TypeError(\"Expected String\");\n }\n\n let bytes: Array<number> = [];\n if (value.length === 0) { return new Uint8Array(bytes); }\n\n bytes.push(0);\n for (let i = 0; i < value.length; i++) {\n let byte = this._alphabetMap[value[i]];\n\n if (byte === undefined) {\n throw new Error(\"Non-base\" + this.base + \" character\");\n }\n\n let carry = byte;\n for (let j = 0; j < bytes.length; ++j) {\n carry += bytes[j] * this.base;\n bytes[j] = carry & 0xff;\n carry >>= 8;\n }\n\n while (carry > 0) {\n bytes.push(carry & 0xff);\n carry >>= 8;\n }\n }\n\n // deal with leading zeros\n for (let k = 0; value[k] === this._leader && k < value.length - 1; ++k) {\n bytes.push(0)\n }\n\n return arrayify(new Uint8Array(bytes.reverse()))\n }\n}\n\nconst Base32 = new BaseX(\"abcdefghijklmnopqrstuvwxyz234567\");\nconst Base58 = new BaseX(\"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\");\n\nexport { Base32, Base58 };\n\n//console.log(Base58.decode(\"Qmd2V777o5XvJbYMeMb8k2nU5f8d3ciUQ5YpYuWhzv8iDj\"))\n//console.log(Base58.encode(Base58.decode(\"Qmd2V777o5XvJbYMeMb8k2nU5f8d3ciUQ5YpYuWhzv8iDj\")))\n","export enum SupportedAlgorithm { sha256 = \"sha256\", sha512 = \"sha512\" };\n\n","export const version = \"sha2/5.8.0\";\n","\"use strict\";\n\nimport hash from \"hash.js\";\n//const _ripemd160 = _hash.ripemd160;\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\nimport { SupportedAlgorithm } from \"./types\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport function ripemd160(data: BytesLike): string {\n return \"0x\" + (hash.ripemd160().update(arrayify(data)).digest(\"hex\"));\n}\n\nexport function sha256(data: BytesLike): string {\n return \"0x\" + (hash.sha256().update(arrayify(data)).digest(\"hex\"));\n}\n\nexport function sha512(data: BytesLike): string {\n return \"0x\" + (hash.sha512().update(arrayify(data)).digest(\"hex\"));\n}\n\nexport function computeHmac(algorithm: SupportedAlgorithm, key: BytesLike, data: BytesLike): string {\n if (!SupportedAlgorithm[algorithm]) {\n logger.throwError(\"unsupported algorithm \" + algorithm, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"hmac\",\n algorithm: algorithm\n });\n }\n\n return \"0x\" + hash.hmac((<any>hash)[algorithm], arrayify(key)).update(arrayify(data)).digest(\"hex\");\n}\n\n","import { computeHmac, ripemd160, sha256, sha512 } from \"./sha2\";\n\nimport { SupportedAlgorithm } from \"./types\";\n\nexport {\n computeHmac,\n\n ripemd160,\n\n sha256,\n sha512,\n\n SupportedAlgorithm\n}\n","\"use strict\";\n\nimport { arrayify, BytesLike, hexlify } from \"@ethersproject/bytes\";\nimport { computeHmac, SupportedAlgorithm } from \"@ethersproject/sha2\";\n\nexport function pbkdf2(password: BytesLike, salt: BytesLike, iterations: number, keylen: number, hashAlgorithm: string): string {\n password = arrayify(password);\n salt = arrayify(salt);\n let hLen;\n let l = 1;\n const DK = new Uint8Array(keylen)\n const block1 = new Uint8Array(salt.length + 4)\n block1.set(salt);\n //salt.copy(block1, 0, 0, salt.length)\n\n let r: number;\n let T: Uint8Array;\n\n for (let i = 1; i <= l; i++) {\n //block1.writeUInt32BE(i, salt.length)\n block1[salt.length] = (i >> 24) & 0xff;\n block1[salt.length + 1] = (i >> 16) & 0xff;\n block1[salt.length + 2] = (i >> 8) & 0xff;\n block1[salt.length + 3] = i & 0xff;\n\n //let U = createHmac(password).update(block1).digest();\n let U = arrayify(computeHmac(<SupportedAlgorithm>hashAlgorithm, password, block1));\n\n if (!hLen) {\n hLen = U.length\n T = new Uint8Array(hLen)\n l = Math.ceil(keylen / hLen)\n r = keylen - (l - 1) * hLen\n }\n\n //U.copy(T, 0, 0, hLen)\n T.set(U);\n\n\n for (let j = 1; j < iterations; j++) {\n //U = createHmac(password).update(U).digest();\n U = arrayify(computeHmac(<SupportedAlgorithm>hashAlgorithm, password, U));\n for (let k = 0; k < hLen; k++) T[k] ^= U[k]\n }\n\n\n const destPos = (i - 1) * hLen\n const len = (i === l ? r : hLen)\n //T.copy(DK, destPos, 0, len)\n DK.set(arrayify(T).slice(0, len), destPos);\n }\n\n return hexlify(DK)\n}\n\n","\nexport { pbkdf2 } from \"./pbkdf2\";\n","export const version = \"wordlists/5.8.0\";\n","\"use strict\";\n\n// This gets overridden by rollup\nconst exportWordlist = false;\n\nimport { id } from \"@ethersproject/hash\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nexport const logger = new Logger(version);\n\nexport abstract class Wordlist {\n readonly locale: string;\n\n constructor(locale: string) {\n logger.checkAbstract(new.target, Wordlist);\n defineReadOnly(this, \"locale\", locale);\n }\n\n abstract getWord(index: number): string;\n abstract getWordIndex(word: string): number;\n\n // Subclasses may override this\n split(mnemonic: string): Array<string> {\n return mnemonic.toLowerCase().split(/ +/g)\n }\n\n // Subclasses may override this\n join(words: Array<string>): string {\n return words.join(\" \");\n }\n\n static check(wordlist: Wordlist): string {\n const words = [];\n for (let i = 0; i < 2048; i++) {\n const word = wordlist.getWord(i);\n /* istanbul ignore if */\n if (i !== wordlist.getWordIndex(word)) { return \"0x\"; }\n words.push(word);\n }\n return id(words.join(\"\\n\") + \"\\n\");\n }\n\n static register(lang: Wordlist, name?: string): void {\n if (!name) { name = lang.locale; }\n\n /* istanbul ignore if */\n if (exportWordlist) {\n try {\n const anyGlobal = (window as any)\n if (anyGlobal._ethers && anyGlobal._ethers.wordlists) {\n if (!anyGlobal._ethers.wordlists[name]) {\n defineReadOnly(anyGlobal._ethers.wordlists, name, lang);\n }\n }\n } catch (error) { }\n }\n }\n\n}\n\n","\"use strict\";\n\nimport { Wordlist } from \"./wordlist\";\n\n\nconst words = \"AbandonAbilityAbleAboutAboveAbsentAbsorbAbstractAbsurdAbuseAccessAccidentAccountAccuseAchieveAcidAcousticAcquireAcrossActActionActorActressActualAdaptAddAddictAddressAdjustAdmitAdultAdvanceAdviceAerobicAffairAffordAfraidAgainAgeAgentAgreeAheadAimAirAirportAisleAlarmAlbumAlcoholAlertAlienAllAlleyAllowAlmostAloneAlphaAlreadyAlsoAlterAlwaysAmateurAmazingAmongAmountAmusedAnalystAnchorAncientAngerAngleAngryAnimalAnkleAnnounceAnnualAnotherAnswerAntennaAntiqueAnxietyAnyApartApologyAppearAppleApproveAprilArchArcticAreaArenaArgueArmArmedArmorArmyAroundArrangeArrestArriveArrowArtArtefactArtistArtworkAskAspectAssaultAssetAssistAssumeAsthmaAthleteAtomAttackAttendAttitudeAttractAuctionAuditAugustAuntAuthorAutoAutumnAverageAvocadoAvoidAwakeAwareAwayAwesomeAwfulAwkwardAxisBabyBachelorBaconBadgeBagBalanceBalconyBallBambooBananaBannerBarBarelyBargainBarrelBaseBasicBasketBattleBeachBeanBeautyBecauseBecomeBeefBeforeBeginBehaveBehindBelieveBelowBeltBenchBenefitBestBetrayBetterBetweenBeyondBicycleBidBikeBindBiologyBirdBirthBitterBlackBladeBlameBlanketBlastBleakBlessBlindBloodBlossomBlouseBlueBlurBlushBoardBoatBodyBoilBombBoneBonusBookBoostBorderBoringBorrowBossBottomBounceBoxBoyBracketBrainBrandBrassBraveBreadBreezeBrickBridgeBriefBrightBringBriskBroccoliBrokenBronzeBroomBrotherBrownBrushBubbleBuddyBudgetBuffaloBuildBulbBulkBulletBundleBunkerBurdenBurgerBurstBusBusinessBusyButterBuyerBuzzCabbageCabinCableCactusCageCakeCallCalmCameraCampCanCanalCancelCandyCannonCanoeCanvasCanyonCapableCapitalCaptainCarCarbonCardCargoCarpetCarryCartCaseCashCasinoCastleCasualCatCatalogCatchCategoryCattleCaughtCauseCautionCaveCeilingCeleryCementCensusCenturyCerealCertainChairChalkChampionChangeChaosChapterChargeChaseChatCheapCheckCheeseChefCherryChestChickenChiefChildChimneyChoiceChooseChronicChuckleChunkChurnCigarCinnamonCircleCitizenCityCivilClaimClapClarifyClawClayCleanClerkCleverClickClientCliffClimbClinicClipClockClogCloseClothCloudClownClubClumpClusterClutchCoachCoastCoconutCodeCoffeeCoilCoinCollectColorColumnCombineComeComfortComicCommonCompanyConcertConductConfirmCongressConnectConsiderControlConvinceCookCoolCopperCopyCoralCoreCornCorrectCostCottonCouchCountryCoupleCourseCousinCoverCoyoteCrackCradleCraftCramCraneCrashCraterCrawlCrazyCreamCreditCreekCrewCricketCrimeCrispCriticCropCrossCrouchCrowdCrucialCruelCruiseCrumbleCrunchCrushCryCrystalCubeCultureCupCupboardCuriousCurrentCurtainCurveCushionCustomCuteCycleDadDamageDampDanceDangerDaringDashDaughterDawnDayDealDebateDebrisDecadeDecemberDecideDeclineDecorateDecreaseDeerDefenseDefineDefyDegreeDelayDeliverDemandDemiseDenialDentistDenyDepartDependDepositDepthDeputyDeriveDescribeDesertDesignDeskDespairDestroyDetailDetectDevelopDeviceDevoteDiagramDialDiamondDiaryDiceDieselDietDifferDigitalDignityDilemmaDinnerDinosaurDirectDirtDisagreeDiscoverDiseaseDishDismissDisorderDisplayDistanceDivertDivideDivorceDizzyDoctorDocumentDogDollDolphinDomainDonateDonkeyDonorDoorDoseDoubleDoveDraftDragonDramaDrasticDrawDreamDressDriftDrillDrinkDripDriveDropDrumDryDuckDumbDuneDuringDustDutchDutyDwarfDynamicEagerEagleEarlyEarnEarthEasilyEastEasyEchoEcologyEconomyEdgeEditEducateEffortEggEightEitherElbowElderElectricElegantElementElephantElevatorEliteElseEmbarkEmbodyEmbraceEmergeEmotionEmployEmpowerEmptyEnableEnactEndEndlessEndorseEnemyEnergyEnforceEngageEngineEnhanceEnjoyEnlistEnoughEnrichEnrollEnsureEnterEntireEntryEnvelopeEpisodeEqualEquipEraEraseErodeErosionErrorEruptEscapeEssayEssenceEstateEternalEthicsEvidenceEvilEvokeEvolveExactExampleExcessExchangeExciteExcludeExcuseExecuteExerciseExhaustExhibitExileExistExitExoticExpandExpectExpireExplainExposeExpressExtendExtraEyeEyebrowFabricFaceFacultyFadeFaintFaithFallFalseFameFamilyFamousFanFancyFantasyFarmFashionFatFatalFatherFatigueFaultFavoriteFeatureFebruaryFederalFeeFeedFeelFemaleFenceFestivalFetchFeverFewFiberFictionFieldFigureFileFilmFilterFinalFindFineFingerFinishFireFirmFirstFiscalFishFitFitnessFixFlagFlameFlashFlatFlavorFleeFlightFlipFloatFlockFloorFlowerFluidFlushFlyFoamFocusFogFoilFoldFollowFoodFootForceForestForgetForkFortuneForumForwardFossilFosterFoundFoxFragileFrameFrequentFreshFriendFringeFrogFrontFrostFrownFrozenFruitFuelFunFunnyFurnaceFuryFutureGadgetGainGalaxyGalleryGameGapGarageGarbageGardenGarlicGarmentGasGaspGateGatherGaugeGazeGeneralGeniusGenreGentleGenuineGestureGhostGiantGiftGiggleGingerGiraffeGirlGiveGladGlanceGlareGlassGlideGlimpseGlobeGloomGloryGloveGlowGlueGoatGoddessGoldGoodGooseGorillaGospelGossipGovernGownGrabGraceGrainGrantGrapeGrassGravityGreatGreenGridGriefGritGroceryGroupGrowGruntGuardGuessGuideGuiltGuitarGunGymHabitHairHalfHammerHamsterHandHappyHarborHardHarshHarvestHatHaveHawkHazardHeadHealthHeartHeavyHedgehogHeightHelloHelmetHelpHenHeroHiddenHighHillHintHipHireHistoryHobbyHockeyHoldHoleHolidayHollowHomeHoneyHoodHopeHornHorrorHorseHospitalHostHotelHourHoverHubHugeHumanHumbleHumorHundredHungryHuntHurdleHurryHurtHusbandHybridIceIconIdeaIdentifyIdleIgnoreIllIllegalIllnessImageImitateImmenseImmuneImpactImposeImproveImpulseInchIncludeIncomeIncreaseIndexIndicateIndoorIndustryInfantInflictInformInhaleInheritInitialInjectInjuryInmateInnerInnocentInputInquiryInsaneInsectInsideInspireInstallIntactInterestIntoInvestInviteInvolveIronIslandIsolateIssueItemIvoryJacketJaguarJarJazzJealousJeansJellyJewelJobJoinJokeJourneyJoyJudgeJuiceJumpJungleJuniorJunkJustKangarooKeenKeepKetchupKeyKickKidKidneyKindKingdomKissKitKitchenKiteKittenKiwiKneeKnifeKnockKnowLabLabelLaborLadderLadyLakeLampLanguageLaptopLargeLaterLatinLaughLaundryLavaLawLawnLawsuitLayerLazyLeaderLeafLearnLeaveLectureLeftLegLegalLegendLeisureLemonLendLengthLensLeopardLessonLetterLevelLiarLibertyLibraryLicenseLifeLiftLightLikeLimbLimitLinkLionLiquidListLittleLiveLizardLoadLoanLobsterLocalLockLogicLonelyLongLoopLotteryLoudLoungeLoveLoyalLuckyLuggageLumberLunarLunchLuxuryLyricsMachineMadMagicMagnetMaidMailMainMajorMakeMammalManManageMandateMangoMansionManualMapleMarbleMarchMarginMarineMarketMarriageMaskMassMasterMatchMaterialMathMatrixMatterMaximumMazeMeadowMeanMeasureMeatMechanicMedalMediaMelodyMeltMemberMemoryMentionMenuMercyMergeMeritMerryMeshMessageMetalMethodMiddleMidnightMilkMillionMimicMindMinimumMinorMinuteMiracleMirrorMiseryMissMistakeMixMixedMixtureMobileModelModifyMomMomentMonitorMonkeyMonsterMonthMoonMoralMoreMorningMosquitoMotherMotionMotorMountainMouseMoveMovieMuchMuffinMuleMultiplyMuscleMuseumMushroomMusicMustMutualMyselfMysteryMythNaiveNameNapkinNarrowNastyNationNatureNearNeckNeedNegativeNeglectNeitherNephewNerveNestNetNetworkNeutralNeverNewsNextNiceNightNobleNoiseNomineeNoodleNormalNorthNoseNotableNoteNothingNoticeNovelNowNuclearNumberNurseNutOakObeyObjectObligeObscureObserveObtainObviousOccurOceanOctoberOdorOffOfferOfficeOftenOilOkayOldOliveOlympicOmitOnceOneOnionOnlineOnlyOpenOperaOpinionOpposeOptionOrangeOrbitOrchardOrderOrdinaryOrganOrientOriginalOrphanOstrichOtherOutdoorOuterOutputOutsideOvalOvenOverOwnOwnerOxygenOysterOzonePactPaddlePagePairPalacePalmPandaPanelPanicPantherPaperParadeParentParkParrotPartyPassPatchPathPatientPatrolPatternPausePavePaymentPeacePeanutPearPeasantPelicanPenPenaltyPencilPeoplePepperPerfectPermitPersonPetPhonePhotoPhrasePhysicalPianoPicnicPicturePiecePigPigeonPillPilotPinkPioneerPipePistolPitchPizzaPlacePlanetPlasticPlatePlayPleasePledgePluckPlugPlungePoemPoetPointPolarPolePolicePondPonyPoolPopularPortionPositionPossiblePostPotatoPotteryPovertyPowderPowerPracticePraisePredictPreferPreparePresentPrettyPreventPricePridePrimaryPrintPriorityPrisonPrivatePrizeProblemProcessProduceProfitProgramProjectPromoteProofPropertyProsperProtectProudProvidePublicPuddingPullPulpPulsePumpkinPunchPupilPuppyPurchasePurityPurposePursePushPutPuzzlePyramidQualityQuantumQuarterQuestionQuickQuitQuizQuoteRabbitRaccoonRaceRackRadarRadioRailRainRaiseRallyRampRanchRandomRangeRapidRareRateRatherRavenRawRazorReadyRealReasonRebelRebuildRecallReceiveRecipeRecordRecycleReduceReflectReformRefuseRegionRegretRegularRejectRelaxReleaseReliefRelyRemainRememberRemindRemoveRenderRenewRentReopenRepairRepeatReplaceReportRequireRescueResembleResistResourceResponseResultRetireRetreatReturnReunionRevealReviewRewardRhythmRibRibbonRiceRichRideRidgeRifleRightRigidRingRiotRippleRiskRitualRivalRiverRoadRoastRobotRobustRocketRomanceRoofRookieRoomRoseRotateRoughRoundRouteRoyalRubberRudeRugRuleRunRunwayRuralSadSaddleSadnessSafeSailSaladSalmonSalonSaltSaluteSameSampleSandSatisfySatoshiSauceSausageSaveSayScaleScanScareScatterSceneSchemeSchoolScienceScissorsScorpionScoutScrapScreenScriptScrubSeaSearchSeasonSeatSecondSecretSectionSecuritySeedSeekSegmentSelectSellSeminarSeniorSenseSentenceSeriesServiceSessionSettleSetupSevenShadowShaftShallowShareShedShellSheriffShieldShiftShineShipShiverShockShoeShootShopShortShoulderShoveShrimpShrugShuffleShySiblingSickSideSiegeSightSignSilentSilkSillySilverSimilarSimpleSinceSingSirenSisterSituateSixSizeSkateSketchSkiSkillSkinSkirtSkullSlabSlamSleepSlenderSliceSlideSlightSlimSloganSlotSlowSlushSmallSmartSmileSmokeSmoothSnackSnakeSnapSniffSnowSoapSoccerSocialSockSodaSoftSolarSoldierSolidSolutionSolveSomeoneSongSoonSorrySortSoulSoundSoupSourceSouthSpaceSpareSpatialSpawnSpeakSpecialSpeedSpellSpendSphereSpiceSpiderSpikeSpinSpiritSplitSpoilSponsorSpoonSportSpotSpraySpreadSpringSpySquareSqueezeSquirrelStableStadiumStaffStageStairsStampStandStartStateStaySteakSteelStemStepStereoStickStillStingStockStomachStoneStoolStoryStoveStrategyStreetStrikeStrongStruggleStudentStuffStumbleStyleSubjectSubmitSubwaySuccessSuchSuddenSufferSugarSuggestSuitSummerSunSunnySunsetSuperSupplySupremeSureSurfaceSurgeSurpriseSurroundSurveySuspectSustainSwallowSwampSwapSwarmSwearSweetSwiftSwimSwingSwitchSwordSymbolSymptomSyrupSystemTableTackleTagTailTalentTalkTankTapeTargetTaskTasteTattooTaxiTeachTeamTellTenTenantTennisTentTermTestTextThankThatThemeThenTheoryThereTheyThingThisThoughtThreeThriveThrowThumbThunderTicketTideTigerTiltTimberTimeTinyTipTiredTissueTitleToastTobaccoTodayToddlerToeTogetherToiletTokenTomatoTomorrowToneTongueTonightToolToothTopTopicToppleTorchTornadoTortoiseTossTotalTouristTowardTowerTownToyTrackTradeTrafficTragicTrainTransferTrapTrashTravelTrayTreatTreeTrendTrialTribeTrickTriggerTrimTripTrophyTroubleTruckTrueTrulyTrumpetTrustTruthTryTubeTuitionTumbleTunaTunnelTurkeyTurnTurtleTwelveTwentyTwiceTwinTwistTwoTypeTypicalUglyUmbrellaUnableUnawareUncleUncoverUnderUndoUnfairUnfoldUnhappyUniformUniqueUnitUniverseUnknownUnlockUntilUnusualUnveilUpdateUpgradeUpholdUponUpperUpsetUrbanUrgeUsageUseUsedUsefulUselessUsualUtilityVacantVacuumVagueValidValleyValveVanVanishVaporVariousVastVaultVehicleVelvetVendorVentureVenueVerbVerifyVersionVeryVesselVeteranViableVibrantViciousVictoryVideoViewVillageVintageViolinVirtualVirusVisaVisitVisualVitalVividVocalVoiceVoidVolcanoVolumeVoteVoyageWageWagonWaitWalkWallWalnutWantWarfareWarmWarriorWashWaspWasteWaterWaveWayWealthWeaponWearWeaselWeatherWebWeddingWeekendWeirdWelcomeWestWetWhaleWhatWheatWheelWhenWhereWhipWhisperWideWidthWifeWildWillWinWindowWineWingWinkWinnerWinterWireWisdomWiseWishWitnessWolfWomanWonderWoodWoolWordWorkWorldWorryWorthWrapWreckWrestleWristWriteWrongYardYearYellowYouYoungYouthZebraZeroZoneZoo\";\n\nlet wordlist: Array<string> = null;\n\n\nfunction loadWords(lang: Wordlist): void {\n if (wordlist != null) { return; }\n wordlist = words.replace(/([A-Z])/g, \" $1\").toLowerCase().substring(1).split(\" \");\n\n // Verify the computed list matches the official list\n /* istanbul ignore if */\n if (Wordlist.check(lang) !== \"0x3c8acc1e7b08d8e76f9fda015ef48dc8c710a73cb7e0f77b2c18a9b5a7adde60\") {\n wordlist = null;\n throw new Error(\"BIP39 Wordlist for en (English) FAILED\");\n }\n}\n\nclass LangEn extends Wordlist {\n constructor() {\n super(\"en\");\n }\n\n getWord(index: number): string {\n loadWords(this);\n return wordlist[index];\n }\n\n getWordIndex(word: string): number {\n loadWords(this);\n return wordlist.indexOf(word);\n }\n}\n\nconst langEn = new LangEn();\nWordlist.register(langEn);\n\nexport { langEn };\n","\"use strict\";\n\n// Wordlists\n// See: https://github.com/bitcoin/bips/blob/master/bip-0039/bip-0039-wordlists.md\n\n// Browser; only include English by default\n\nimport { Wordlist } from \"./wordlist\";\n\nimport { langEn as en } from \"./lang-en\";\n\nexport const wordlists: { [ locale: string ]: Wordlist } = {\n en: en\n}\n","\"use strict\";\n\n// Wordlists\n// See: https://github.com/bitcoin/bips/blob/master/bip-0039/bip-0039-wordlists.md\n\nimport { logger, Wordlist } from \"./wordlist\";\n\nimport { wordlists } from \"./wordlists\";\n\nexport {\n logger,\n Wordlist,\n wordlists\n}\n","export const version = \"hdnode/5.8.0\";\n","\"use strict\";\n\n// See: https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki\n// See: https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki\n\n\nimport { ExternallyOwnedAccount } from \"@ethersproject/abstract-signer\";\nimport { Base58 } from \"@ethersproject/basex\";\nimport { arrayify, BytesLike, concat, hexDataSlice, hexZeroPad, hexlify } from \"@ethersproject/bytes\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { toUtf8Bytes, UnicodeNormalizationForm } from \"@ethersproject/strings\";\nimport { pbkdf2 } from \"@ethersproject/pbkdf2\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { SigningKey } from \"@ethersproject/signing-key\";\nimport { computeHmac, ripemd160, sha256, SupportedAlgorithm } from \"@ethersproject/sha2\";\nimport { computeAddress } from \"@ethersproject/transactions\";\nimport { Wordlist, wordlists } from \"@ethersproject/wordlists\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nconst N = BigNumber.from(\"0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141\");\n\n\n// \"Bitcoin seed\"\nconst MasterSecret = toUtf8Bytes(\"Bitcoin seed\");\n\nconst HardenedBit = 0x80000000;\n\n// Returns a byte with the MSB bits set\nfunction getUpperMask(bits: number): number {\n return ((1 << bits) - 1) << (8 - bits);\n}\n\n// Returns a byte with the LSB bits set\nfunction getLowerMask(bits: number): number {\n return (1 << bits) - 1;\n}\n\nfunction bytes32(value: BigNumber | Uint8Array): string {\n return hexZeroPad(hexlify(value), 32);\n}\n\nfunction base58check(data: Uint8Array): string {\n return Base58.encode(concat([ data, hexDataSlice(sha256(sha256(data)), 0, 4) ]));\n}\n\nfunction getWordlist(wordlist: string | Wordlist): Wordlist {\n if (wordlist == null) {\n return wordlists[\"en\"];\n }\n\n if (typeof(wordlist) === \"string\") {\n const words = wordlists[wordlist];\n if (words == null) {\n logger.throwArgumentError(\"unknown locale\", \"wordlist\", wordlist);\n }\n return words;\n }\n\n return wordlist;\n}\n\nconst _constructorGuard: any = {};\n\nexport const defaultPath = \"m/44'/60'/0'/0/0\";\n\nexport interface Mnemonic {\n readonly phrase: string;\n readonly path: string;\n readonly locale: string;\n};\n\nexport class HDNode implements ExternallyOwnedAccount {\n readonly privateKey: string;\n readonly publicKey: string;\n\n readonly fingerprint: string;\n readonly parentFingerprint: string;\n\n readonly address: string;\n\n readonly mnemonic?: Mnemonic;\n readonly path: string;\n\n readonly chainCode: string;\n\n readonly index: number;\n readonly depth: number;\n\n /**\n * This constructor should not be called directly.\n *\n * Please use:\n * - fromMnemonic\n * - fromSeed\n */\n constructor(constructorGuard: any, privateKey: string, publicKey: string, parentFingerprint: string, chainCode: string, index: number, depth: number, mnemonicOrPath: Mnemonic | string) {\n /* istanbul ignore if */\n if (constructorGuard !== _constructorGuard) {\n throw new Error(\"HDNode constructor cannot be called directly\");\n }\n\n if (privateKey) {\n const signingKey = new SigningKey(privateKey);\n defineReadOnly(this, \"privateKey\", signingKey.privateKey);\n defineReadOnly(this, \"publicKey\", signingKey.compressedPublicKey);\n } else {\n defineReadOnly(this, \"privateKey\", null);\n defineReadOnly(this, \"publicKey\", hexlify(publicKey));\n }\n\n defineReadOnly(this, \"parentFingerprint\", parentFingerprint);\n defineReadOnly(this, \"fingerprint\", hexDataSlice(ripemd160(sha256(this.publicKey)), 0, 4));\n\n defineReadOnly(this, \"address\", computeAddress(this.publicKey));\n\n defineReadOnly(this, \"chainCode\", chainCode);\n\n defineReadOnly(this, \"index\", index);\n defineReadOnly(this, \"depth\", depth);\n\n if (mnemonicOrPath == null) {\n // From a source that does not preserve the path (e.g. extended keys)\n defineReadOnly(this, \"mnemonic\", null);\n defineReadOnly(this, \"path\", null);\n\n } else if (typeof(mnemonicOrPath) === \"string\") {\n // From a source that does not preserve the mnemonic (e.g. neutered)\n defineReadOnly(this, \"mnemonic\", null);\n defineReadOnly(this, \"path\", mnemonicOrPath);\n\n } else {\n // From a fully qualified source\n defineReadOnly(this, \"mnemonic\", mnemonicOrPath);\n defineReadOnly(this, \"path\", mnemonicOrPath.path);\n }\n }\n\n get extendedKey(): string {\n // We only support the mainnet values for now, but if anyone needs\n // testnet values, let me know. I believe current sentiment is that\n // we should always use mainnet, and use BIP-44 to derive the network\n // - Mainnet: public=0x0488B21E, private=0x0488ADE4\n // - Testnet: public=0x043587CF, private=0x04358394\n\n if (this.depth >= 256) { throw new Error(\"Depth too large!\"); }\n\n return base58check(concat([\n ((this.privateKey != null) ? \"0x0488ADE4\": \"0x0488B21E\"),\n hexlify(this.depth),\n this.parentFingerprint,\n hexZeroPad(hexlify(this.index), 4),\n this.chainCode,\n ((this.privateKey != null) ? concat([ \"0x00\", this.privateKey ]): this.publicKey),\n ]));\n }\n\n neuter(): HDNode {\n return new HDNode(_constructorGuard, null, this.publicKey, this.parentFingerprint, this.chainCode, this.index, this.depth, this.path);\n }\n\n private _derive(index: number): HDNode {\n if (index > 0xffffffff) { throw new Error(\"invalid index - \" + String(index)); }\n\n // Base path\n let path = this.path;\n if (path) { path += \"/\" + (index & ~HardenedBit); }\n\n const data = new Uint8Array(37);\n\n if (index & HardenedBit) {\n if (!this.privateKey) {\n throw new Error(\"cannot derive child of neutered node\");\n }\n\n // Data = 0x00 || ser_256(k_par)\n data.set(arrayify(this.privateKey), 1);\n\n // Hardened path\n if (path) { path += \"'\"; }\n\n } else {\n // Data = ser_p(point(k_par))\n data.set(arrayify(this.publicKey));\n }\n\n // Data += ser_32(i)\n for (let i = 24; i >= 0; i -= 8) { data[33 + (i >> 3)] = ((index >> (24 - i)) & 0xff); }\n\n const I = arrayify(computeHmac(SupportedAlgorithm.sha512, this.chainCode, data));\n const IL = I.slice(0, 32);\n const IR = I.slice(32);\n\n // The private key\n let ki: string = null\n\n // The public key\n let Ki: string = null;\n\n if (this.privateKey) {\n ki = bytes32(BigNumber.from(IL).add(this.privateKey).mod(N));\n } else {\n const ek = new SigningKey(hexlify(IL));\n Ki = ek._addPoint(this.publicKey);\n }\n\n let mnemonicOrPath: Mnemonic | string = path;\n\n const srcMnemonic = this.mnemonic;\n if (srcMnemonic) {\n mnemonicOrPath = Object.freeze({\n phrase: srcMnemonic.phrase,\n path: path,\n locale: (srcMnemonic.locale || \"en\")\n });\n }\n\n return new HDNode(_constructorGuard, ki, Ki, this.fingerprint, bytes32(IR), index, this.depth + 1, mnemonicOrPath);\n }\n\n derivePath(path: string): HDNode {\n const components = path.split(\"/\");\n\n if (components.length === 0 || (components[0] === \"m\" && this.depth !== 0)) {\n throw new Error(\"invalid path - \" + path);\n }\n\n if (components[0] === \"m\") { components.shift(); }\n\n let result: HDNode = this;\n for (let i = 0; i < components.length; i++) {\n const component = components[i];\n if (component.match(/^[0-9]+'$/)) {\n const index = parseInt(component.substring(0, component.length - 1));\n if (index >= HardenedBit) { throw new Error(\"invalid path index - \" + component); }\n result = result._derive(HardenedBit + index);\n } else if (component.match(/^[0-9]+$/)) {\n const index = parseInt(component);\n if (index >= HardenedBit) { throw new Error(\"invalid path index - \" + component); }\n result = result._derive(index);\n } else {\n throw new Error(\"invalid path component - \" + component);\n }\n }\n\n return result;\n }\n\n\n static _fromSeed(seed: BytesLike, mnemonic: Mnemonic): HDNode {\n const seedArray: Uint8Array = arrayify(seed);\n if (seedArray.length < 16 || seedArray.length > 64) { throw new Error(\"invalid seed\"); }\n\n const I: Uint8Array = arrayify(computeHmac(SupportedAlgorithm.sha512, MasterSecret, seedArray));\n\n return new HDNode(_constructorGuard, bytes32(I.slice(0, 32)), null, \"0x00000000\", bytes32(I.slice(32)), 0, 0, mnemonic);\n }\n\n static fromMnemonic(mnemonic: string, password?: string, wordlist?: string | Wordlist): HDNode {\n\n // If a locale name was passed in, find the associated wordlist\n wordlist = getWordlist(wordlist);\n\n // Normalize the case and spacing in the mnemonic (throws if the mnemonic is invalid)\n mnemonic = entropyToMnemonic(mnemonicToEntropy(mnemonic, wordlist), wordlist);\n\n return HDNode._fromSeed(mnemonicToSeed(mnemonic, password), {\n phrase: mnemonic,\n path: \"m\",\n locale: wordlist.locale\n });\n }\n\n static fromSeed(seed: BytesLike): HDNode {\n return HDNode._fromSeed(seed, null);\n }\n\n static fromExtendedKey(extendedKey: string): HDNode {\n const bytes = Base58.decode(extendedKey);\n\n if (bytes.length !== 82 || base58check(bytes.slice(0, 78)) !== extendedKey) {\n logger.throwArgumentError(\"invalid extended key\", \"extendedKey\", \"[REDACTED]\");\n }\n\n const depth = bytes[4];\n const parentFingerprint = hexlify(bytes.slice(5, 9));\n const index = parseInt(hexlify(bytes.slice(9, 13)).substring(2), 16);\n const chainCode = hexlify(bytes.slice(13, 45));\n const key = bytes.slice(45, 78);\n\n switch (hexlify(bytes.slice(0, 4))) {\n // Public Key\n case \"0x0488b21e\": case \"0x043587cf\":\n return new HDNode(_constructorGuard, null, hexlify(key), parentFingerprint, chainCode, index, depth, null);\n\n // Private Key\n case \"0x0488ade4\": case \"0x04358394 \":\n if (key[0] !== 0) { break; }\n return new HDNode(_constructorGuard, hexlify(key.slice(1)), null, parentFingerprint, chainCode, index, depth, null);\n }\n\n return logger.throwArgumentError(\"invalid extended key\", \"extendedKey\", \"[REDACTED]\");\n }\n}\n\nexport function mnemonicToSeed(mnemonic: string, password?: string): string {\n if (!password) { password = \"\"; }\n\n const salt = toUtf8Bytes(\"mnemonic\" + password, UnicodeNormalizationForm.NFKD);\n\n return pbkdf2(toUtf8Bytes(mnemonic, UnicodeNormalizationForm.NFKD), salt, 2048, 64, \"sha512\");\n}\n\nexport function mnemonicToEntropy(mnemonic: string, wordlist?: string | Wordlist): string {\n wordlist = getWordlist(wordlist);\n\n logger.checkNormalize();\n\n const words = wordlist.split(mnemonic);\n if ((words.length % 3) !== 0) { throw new Error(\"invalid mnemonic\"); }\n\n const entropy = arrayify(new Uint8Array(Math.ceil(11 * words.length / 8)));\n\n let offset = 0;\n for (let i = 0; i < words.length; i++) {\n let index = wordlist.getWordIndex(words[i].normalize(\"NFKD\"));\n if (index === -1) { throw new Error(\"invalid mnemonic\"); }\n\n for (let bit = 0; bit < 11; bit++) {\n if (index & (1 << (10 - bit))) {\n entropy[offset >> 3] |= (1 << (7 - (offset % 8)));\n }\n offset++;\n }\n }\n\n const entropyBits = 32 * words.length / 3;\n\n const checksumBits = words.length / 3;\n const checksumMask = getUpperMask(checksumBits);\n\n const checksum = arrayify(sha256(entropy.slice(0, entropyBits / 8)))[0] & checksumMask;\n\n if (checksum !== (entropy[entropy.length - 1] & checksumMask)) {\n throw new Error(\"invalid checksum\");\n }\n\n return hexlify(entropy.slice(0, entropyBits / 8));\n}\n\nexport function entropyToMnemonic(entropy: BytesLike, wordlist?: string | Wordlist): string {\n wordlist = getWordlist(wordlist);\n\n entropy = arrayify(entropy);\n\n if ((entropy.length % 4) !== 0 || entropy.length < 16 || entropy.length > 32) {\n throw new Error(\"invalid entropy\");\n }\n\n const indices: Array<number> = [ 0 ];\n\n let remainingBits = 11;\n for (let i = 0; i < entropy.length; i++) {\n\n // Consume the whole byte (with still more to go)\n if (remainingBits > 8) {\n indices[indices.length - 1] <<= 8;\n indices[indices.length - 1] |= entropy[i];\n\n remainingBits -= 8;\n\n // This byte will complete an 11-bit index\n } else {\n indices[indices.length - 1] <<= remainingBits;\n indices[indices.length - 1] |= entropy[i] >> (8 - remainingBits);\n\n // Start the next word\n indices.push(entropy[i] & getLowerMask(8 - remainingBits));\n\n remainingBits += 3;\n }\n }\n\n // Compute the checksum bits\n const checksumBits = entropy.length / 4;\n const checksum = arrayify(sha256(entropy))[0] & getUpperMask(checksumBits);\n\n // Shift the checksum into the word indices\n indices[indices.length - 1] <<= checksumBits;\n indices[indices.length - 1] |= (checksum >> (8 - checksumBits));\n\n return wordlist.join(indices.map((index) => (<Wordlist>wordlist).getWord(index)));\n}\n\nexport function isValidMnemonic(mnemonic: string, wordlist?: Wordlist): boolean {\n try {\n mnemonicToEntropy(mnemonic, wordlist);\n return true;\n } catch (error) { }\n return false;\n}\n\nexport function getAccountPath(index: number): string {\n if (typeof(index) !== \"number\" || index < 0 || index >= HardenedBit || index % 1) {\n logger.throwArgumentError(\"invalid account index\", \"index\", index);\n }\n return `m/44'/60'/${ index }'/0/0`;\n}\n","export const version = \"random/5.8.0\";\n","\"use strict\";\n\nimport { arrayify } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n// Debugging line for testing browser lib in node\n//const window = { crypto: { getRandomValues: () => { } } };\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis\nfunction getGlobal(): any {\n if (typeof self !== 'undefined') { return self; }\n if (typeof window !== 'undefined') { return window; }\n if (typeof global !== 'undefined') { return global; }\n throw new Error('unable to locate global object');\n};\n\nconst anyGlobal = getGlobal();\n\nlet crypto: any = anyGlobal.crypto || anyGlobal.msCrypto;\nif (!crypto || !crypto.getRandomValues) {\n\n logger.warn(\"WARNING: Missing strong random number source\");\n\n crypto = {\n getRandomValues: function(buffer: Uint8Array): Uint8Array {\n return logger.throwError(\"no secure random source avaialble\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"crypto.getRandomValues\"\n });\n }\n };\n}\n\nexport function randomBytes(length: number): Uint8Array {\n if (length <= 0 || length > 1024 || (length % 1) || length != length) {\n logger.throwArgumentError(\"invalid length\", \"length\", length);\n }\n\n const result = new Uint8Array(length);\n crypto.getRandomValues(result);\n return arrayify(result);\n};\n","\"use strict\";\n\nexport function shuffled(array: Array<any>): Array<any> {\n array = array.slice();\n\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n const tmp = array[i];\n array[i] = array[j];\n array[j] = tmp;\n }\n\n return array;\n}\n","\"use strict\";\n\nexport { randomBytes } from \"./random\";\nexport { shuffled } from \"./shuffle\";\n","\"use strict\";\n\n(function(root) {\n\n function checkInt(value) {\n return (parseInt(value) === value);\n }\n\n function checkInts(arrayish) {\n if (!checkInt(arrayish.length)) { return false; }\n\n for (var i = 0; i < arrayish.length; i++) {\n if (!checkInt(arrayish[i]) || arrayish[i] < 0 || arrayish[i] > 255) {\n return false;\n }\n }\n\n return true;\n }\n\n function coerceArray(arg, copy) {\n\n // ArrayBuffer view\n if (arg.buffer && ArrayBuffer.isView(arg) && arg.name === 'Uint8Array') {\n\n if (copy) {\n if (arg.slice) {\n arg = arg.slice();\n } else {\n arg = Array.prototype.slice.call(arg);\n }\n }\n\n return arg;\n }\n\n // It's an array; check it is a valid representation of a byte\n if (Array.isArray(arg)) {\n if (!checkInts(arg)) {\n throw new Error('Array contains invalid value: ' + arg);\n }\n\n return new Uint8Array(arg);\n }\n\n // Something else, but behaves like an array (maybe a Buffer? Arguments?)\n if (checkInt(arg.length) && checkInts(arg)) {\n return new Uint8Array(arg);\n }\n\n throw new Error('unsupported array-like object');\n }\n\n function createArray(length) {\n return new Uint8Array(length);\n }\n\n function copyArray(sourceArray, targetArray, targetStart, sourceStart, sourceEnd) {\n if (sourceStart != null || sourceEnd != null) {\n if (sourceArray.slice) {\n sourceArray = sourceArray.slice(sourceStart, sourceEnd);\n } else {\n sourceArray = Array.prototype.slice.call(sourceArray, sourceStart, sourceEnd);\n }\n }\n targetArray.set(sourceArray, targetStart);\n }\n\n\n\n var convertUtf8 = (function() {\n function toBytes(text) {\n var result = [], i = 0;\n text = encodeURI(text);\n while (i < text.length) {\n var c = text.charCodeAt(i++);\n\n // if it is a % sign, encode the following 2 bytes as a hex value\n if (c === 37) {\n result.push(parseInt(text.substr(i, 2), 16))\n i += 2;\n\n // otherwise, just the actual byte\n } else {\n result.push(c)\n }\n }\n\n return coerceArray(result);\n }\n\n function fromBytes(bytes) {\n var result = [], i = 0;\n\n while (i < bytes.length) {\n var c = bytes[i];\n\n if (c < 128) {\n result.push(String.fromCharCode(c));\n i++;\n } else if (c > 191 && c < 224) {\n result.push(String.fromCharCode(((c & 0x1f) << 6) | (bytes[i + 1] & 0x3f)));\n i += 2;\n } else {\n result.push(String.fromCharCode(((c & 0x0f) << 12) | ((bytes[i + 1] & 0x3f) << 6) | (bytes[i + 2] & 0x3f)));\n i += 3;\n }\n }\n\n return result.join('');\n }\n\n return {\n toBytes: toBytes,\n fromBytes: fromBytes,\n }\n })();\n\n var convertHex = (function() {\n function toBytes(text) {\n var result = [];\n for (var i = 0; i < text.length; i += 2) {\n result.push(parseInt(text.substr(i, 2), 16));\n }\n\n return result;\n }\n\n // http://ixti.net/development/javascript/2011/11/11/base64-encodedecode-of-utf8-in-browser-with-js.html\n var Hex = '0123456789abcdef';\n\n function fromBytes(bytes) {\n var result = [];\n for (var i = 0; i < bytes.length; i++) {\n var v = bytes[i];\n result.push(Hex[(v & 0xf0) >> 4] + Hex[v & 0x0f]);\n }\n return result.join('');\n }\n\n return {\n toBytes: toBytes,\n fromBytes: fromBytes,\n }\n })();\n\n\n // Number of rounds by keysize\n var numberOfRounds = {16: 10, 24: 12, 32: 14}\n\n // Round constant words\n var rcon = [0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91];\n\n // S-box and Inverse S-box (S is for Substitution)\n var S = [0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16];\n var Si =[0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d];\n\n // Transformations for encryption\n var T1 = [0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554, 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d, 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a, 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87, 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b, 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b, 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f, 0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108, 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f, 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5, 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d, 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f, 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e, 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb, 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497, 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c, 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed, 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b, 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a, 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594, 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81, 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3, 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a, 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504, 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d, 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739, 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47, 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395, 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883, 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76, 0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e, 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4, 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b, 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7, 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0, 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25, 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818, 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651, 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85, 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa, 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12, 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9, 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7, 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920, 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a, 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8, 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a];\n var T2 = [0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5, 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b, 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676, 0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d, 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0, 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, 0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0, 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc, 0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1, 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515, 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, 0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a, 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2, 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575, 0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a, 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0, 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, 0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484, 0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded, 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b, 0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939, 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf, 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, 0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585, 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f, 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8, 0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f, 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5, 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, 0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2, 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717, 0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d, 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373, 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, 0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888, 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb, 0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a, 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c, 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, 0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979, 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d, 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9, 0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea, 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808, 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, 0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6, 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a, 0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666, 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e, 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, 0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e, 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494, 0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9, 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf, 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, 0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868, 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616];\n var T3 = [0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5, 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b, 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76, 0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d, 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0, 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, 0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0, 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc, 0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1, 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15, 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, 0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a, 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2, 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75, 0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a, 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0, 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, 0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384, 0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed, 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b, 0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239, 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf, 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, 0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185, 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f, 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8, 0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f, 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5, 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, 0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2, 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec, 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17, 0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d, 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673, 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, 0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88, 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb, 0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a, 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c, 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, 0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279, 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d, 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9, 0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea, 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008, 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, 0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6, 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a, 0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66, 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e, 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, 0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e, 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394, 0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9, 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df, 0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, 0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068, 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f, 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16];\n var T4 = [0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491, 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56, 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec, 0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa, 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb, 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, 0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b, 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83, 0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9, 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a, 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, 0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f, 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf, 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea, 0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34, 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b, 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, 0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713, 0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1, 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6, 0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72, 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85, 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, 0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411, 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe, 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b, 0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05, 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1, 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, 0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf, 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3, 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e, 0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a, 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6, 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, 0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b, 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad, 0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14, 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8, 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, 0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2, 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da, 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049, 0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf, 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810, 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, 0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197, 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f, 0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc, 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c, 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, 0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927, 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733, 0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9, 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5, 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, 0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0, 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e, 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c];\n\n // Transformations for decryption\n var T5 = [0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96, 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393, 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25, 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f, 0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1, 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6, 0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da, 0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844, 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd, 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4, 0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45, 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94, 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7, 0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a, 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5, 0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c, 0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1, 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a, 0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75, 0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051, 0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46, 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff, 0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77, 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb, 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000, 0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e, 0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927, 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a, 0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e, 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16, 0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d, 0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8, 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd, 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34, 0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163, 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120, 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d, 0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0, 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422, 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef, 0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36, 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4, 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662, 0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5, 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3, 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b, 0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8, 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6, 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6, 0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0, 0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815, 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f, 0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df, 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f, 0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e, 0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713, 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89, 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c, 0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf, 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86, 0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f, 0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541, 0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190, 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742];\n var T6 = [0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e, 0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303, 0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c, 0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3, 0x49deb15a, 0x6725ba1b, 0x9845ea0e, 0xe15dfec0, 0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9, 0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259, 0x2dd4be83, 0xd3587421, 0x2949e069, 0x448ec9c8, 0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971, 0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a, 0x1863df4a, 0x82e51a31, 0x60975133, 0x4562537f, 0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b, 0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8, 0x23ab73d3, 0xe2724b02, 0x57e31f8f, 0x2a6655ab, 0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708, 0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682, 0x2b8acf1c, 0x92a779b4, 0xf0f307f2, 0xa14e69e2, 0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe, 0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb, 0x390b83ec, 0xaa4060ef, 0x065e719f, 0x51bd6e10, 0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd, 0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015, 0x241998fb, 0x97d6bde9, 0xcc894043, 0x7767d99e, 0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee, 0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000, 0x83098086, 0x48322bed, 0xac1e1170, 0x4e6c5a72, 0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39, 0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e, 0xb10c0a67, 0x0f9357e7, 0xd2b4ee96, 0x9e1b9b91, 0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a, 0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17, 0x0b0e090d, 0xadf28bc7, 0xb92db6a8, 0xc8141ea9, 0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60, 0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e, 0x768b4329, 0xdccb23c6, 0x68b6edfc, 0x63b8e4f1, 0xcad731dc, 0x10426385, 0x40139722, 0x2084c611, 0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1, 0x4b1d9e2f, 0xf3dcb230, 0xec0d8652, 0xd077c1e3, 0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964, 0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390, 0xc787494e, 0xc1d938d1, 0xfe8ccaa2, 0x3698d40b, 0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf, 0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46, 0xc2f68d13, 0xe890d8b8, 0x5e2e39f7, 0xf582c3af, 0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512, 0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb, 0x09cd2678, 0xf46e5918, 0x01ec9ab7, 0xa8834f9a, 0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8, 0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c, 0xaf31a4b2, 0x312a3f23, 0x30c6a594, 0xc035a266, 0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8, 0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6, 0x8d764dd6, 0x4d43efb0, 0x54ccaa4d, 0xdfe49604, 0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551, 0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41, 0x5ab3671d, 0x5292dbd2, 0x33e91056, 0x136dd647, 0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c, 0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1, 0x599cd2df, 0x3f55f273, 0x791814ce, 0xbf73c737, 0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db, 0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340, 0x72161dc3, 0x0cbce225, 0x8b283c49, 0x41ff0d95, 0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1, 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857];\n var T7 = [0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27, 0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3, 0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502, 0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562, 0x5a49deb1, 0x1b6725ba, 0x0e9845ea, 0xc0e15dfe, 0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3, 0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552, 0x832dd4be, 0x21d35874, 0x692949e0, 0xc8448ec9, 0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9, 0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce, 0x4a1863df, 0x3182e51a, 0x33609751, 0x7f456253, 0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908, 0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b, 0xd323ab73, 0x02e2724b, 0x8f57e31f, 0xab2a6655, 0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337, 0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16, 0x1c2b8acf, 0xb492a779, 0xf2f0f307, 0xe2a14e69, 0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6, 0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6, 0xec390b83, 0xefaa4060, 0x9f065e71, 0x1051bd6e, 0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6, 0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050, 0xfb241998, 0xe997d6bd, 0x43cc8940, 0x9e7767d9, 0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8, 0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000, 0x86830980, 0xed48322b, 0x70ac1e11, 0x724e6c5a, 0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d, 0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436, 0x67b10c0a, 0xe70f9357, 0x96d2b4ee, 0x919e1b9b, 0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12, 0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b, 0x0d0b0e09, 0xc7adf28b, 0xa8b92db6, 0xa9c8141e, 0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f, 0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb, 0x29768b43, 0xc6dccb23, 0xfc68b6ed, 0xf163b8e4, 0xdccad731, 0x85104263, 0x22401397, 0x112084c6, 0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729, 0x2f4b1d9e, 0x30f3dcb2, 0x52ec0d86, 0xe3d077c1, 0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9, 0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233, 0x4ec78749, 0xd1c1d938, 0xa2fe8cca, 0x0b3698d4, 0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad, 0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e, 0x13c2f68d, 0xb8e890d8, 0xf75e2e39, 0xaff582c3, 0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25, 0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b, 0x7809cd26, 0x18f46e59, 0xb701ec9a, 0x9aa8834f, 0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15, 0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0, 0xb2af31a4, 0x23312a3f, 0x9430c6a5, 0x66c035a2, 0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7, 0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791, 0xd68d764d, 0xb04d43ef, 0x4d54ccaa, 0x04dfe496, 0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665, 0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b, 0x1d5ab367, 0xd25292db, 0x5633e910, 0x47136dd6, 0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13, 0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47, 0xdf599cd2, 0x733f55f2, 0xce791814, 0x37bf73c7, 0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844, 0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3, 0xc372161d, 0x250cbce2, 0x498b283c, 0x9541ff0d, 0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456, 0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8];\n var T8 = [0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a, 0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b, 0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5, 0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5, 0xb15a49de, 0xba1b6725, 0xea0e9845, 0xfec0e15d, 0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b, 0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95, 0xbe832dd4, 0x7421d358, 0xe0692949, 0xc9c8448e, 0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27, 0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d, 0xdf4a1863, 0x1a3182e5, 0x51336097, 0x537f4562, 0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9, 0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752, 0x73d323ab, 0x4b02e272, 0x1f8f57e3, 0x55ab2a66, 0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3, 0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced, 0xcf1c2b8a, 0x79b492a7, 0x07f2f0f3, 0x69e2a14e, 0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4, 0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4, 0x83ec390b, 0x60efaa40, 0x719f065e, 0x6e1051bd, 0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d, 0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60, 0x98fb2419, 0xbde997d6, 0x4043cc89, 0xd99e7767, 0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79, 0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000, 0x80868309, 0x2bed4832, 0x1170ac1e, 0x5a724e6c, 0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736, 0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24, 0x0a67b10c, 0x57e70f93, 0xee96d2b4, 0x9b919e1b, 0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c, 0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12, 0x090d0b0e, 0x8bc7adf2, 0xb6a8b92d, 0x1ea9c814, 0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3, 0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b, 0x4329768b, 0x23c6dccb, 0xedfc68b6, 0xe4f163b8, 0x31dccad7, 0x63851042, 0x97224013, 0xc6112084, 0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7, 0x9e2f4b1d, 0xb230f3dc, 0x8652ec0d, 0xc1e3d077, 0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247, 0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22, 0x494ec787, 0x38d1c1d9, 0xcaa2fe8c, 0xd40b3698, 0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f, 0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254, 0x8d13c2f6, 0xd8b8e890, 0x39f75e2e, 0xc3aff582, 0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf, 0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb, 0x267809cd, 0x5918f46e, 0x9ab701ec, 0x4f9aa883, 0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef, 0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629, 0xa4b2af31, 0x3f23312a, 0xa59430c6, 0xa266c035, 0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533, 0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17, 0x4dd68d76, 0xefb04d43, 0xaa4d54cc, 0x9604dfe4, 0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46, 0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb, 0x671d5ab3, 0xdbd25292, 0x105633e9, 0xd647136d, 0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb, 0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a, 0xd2df599c, 0xf2733f55, 0x14ce7918, 0xc737bf73, 0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678, 0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2, 0x1dc37216, 0xe2250cbc, 0x3c498b28, 0x0d9541ff, 0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064, 0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0];\n\n // Transformations for decryption key expansion\n var U1 = [0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3];\n var U2 = [0x00000000, 0x0b0e090d, 0x161c121a, 0x1d121b17, 0x2c382434, 0x27362d39, 0x3a24362e, 0x312a3f23, 0x58704868, 0x537e4165, 0x4e6c5a72, 0x4562537f, 0x74486c5c, 0x7f466551, 0x62547e46, 0x695a774b, 0xb0e090d0, 0xbbee99dd, 0xa6fc82ca, 0xadf28bc7, 0x9cd8b4e4, 0x97d6bde9, 0x8ac4a6fe, 0x81caaff3, 0xe890d8b8, 0xe39ed1b5, 0xfe8ccaa2, 0xf582c3af, 0xc4a8fc8c, 0xcfa6f581, 0xd2b4ee96, 0xd9bae79b, 0x7bdb3bbb, 0x70d532b6, 0x6dc729a1, 0x66c920ac, 0x57e31f8f, 0x5ced1682, 0x41ff0d95, 0x4af10498, 0x23ab73d3, 0x28a57ade, 0x35b761c9, 0x3eb968c4, 0x0f9357e7, 0x049d5eea, 0x198f45fd, 0x12814cf0, 0xcb3bab6b, 0xc035a266, 0xdd27b971, 0xd629b07c, 0xe7038f5f, 0xec0d8652, 0xf11f9d45, 0xfa119448, 0x934be303, 0x9845ea0e, 0x8557f119, 0x8e59f814, 0xbf73c737, 0xb47dce3a, 0xa96fd52d, 0xa261dc20, 0xf6ad766d, 0xfda37f60, 0xe0b16477, 0xebbf6d7a, 0xda955259, 0xd19b5b54, 0xcc894043, 0xc787494e, 0xaedd3e05, 0xa5d33708, 0xb8c12c1f, 0xb3cf2512, 0x82e51a31, 0x89eb133c, 0x94f9082b, 0x9ff70126, 0x464de6bd, 0x4d43efb0, 0x5051f4a7, 0x5b5ffdaa, 0x6a75c289, 0x617bcb84, 0x7c69d093, 0x7767d99e, 0x1e3daed5, 0x1533a7d8, 0x0821bccf, 0x032fb5c2, 0x32058ae1, 0x390b83ec, 0x241998fb, 0x2f1791f6, 0x8d764dd6, 0x867844db, 0x9b6a5fcc, 0x906456c1, 0xa14e69e2, 0xaa4060ef, 0xb7527bf8, 0xbc5c72f5, 0xd50605be, 0xde080cb3, 0xc31a17a4, 0xc8141ea9, 0xf93e218a, 0xf2302887, 0xef223390, 0xe42c3a9d, 0x3d96dd06, 0x3698d40b, 0x2b8acf1c, 0x2084c611, 0x11aef932, 0x1aa0f03f, 0x07b2eb28, 0x0cbce225, 0x65e6956e, 0x6ee89c63, 0x73fa8774, 0x78f48e79, 0x49deb15a, 0x42d0b857, 0x5fc2a340, 0x54ccaa4d, 0xf741ecda, 0xfc4fe5d7, 0xe15dfec0, 0xea53f7cd, 0xdb79c8ee, 0xd077c1e3, 0xcd65daf4, 0xc66bd3f9, 0xaf31a4b2, 0xa43fadbf, 0xb92db6a8, 0xb223bfa5, 0x83098086, 0x8807898b, 0x9515929c, 0x9e1b9b91, 0x47a17c0a, 0x4caf7507, 0x51bd6e10, 0x5ab3671d, 0x6b99583e, 0x60975133, 0x7d854a24, 0x768b4329, 0x1fd13462, 0x14df3d6f, 0x09cd2678, 0x02c32f75, 0x33e91056, 0x38e7195b, 0x25f5024c, 0x2efb0b41, 0x8c9ad761, 0x8794de6c, 0x9a86c57b, 0x9188cc76, 0xa0a2f355, 0xabacfa58, 0xb6bee14f, 0xbdb0e842, 0xd4ea9f09, 0xdfe49604, 0xc2f68d13, 0xc9f8841e, 0xf8d2bb3d, 0xf3dcb230, 0xeecea927, 0xe5c0a02a, 0x3c7a47b1, 0x37744ebc, 0x2a6655ab, 0x21685ca6, 0x10426385, 0x1b4c6a88, 0x065e719f, 0x0d507892, 0x640a0fd9, 0x6f0406d4, 0x72161dc3, 0x791814ce, 0x48322bed, 0x433c22e0, 0x5e2e39f7, 0x552030fa, 0x01ec9ab7, 0x0ae293ba, 0x17f088ad, 0x1cfe81a0, 0x2dd4be83, 0x26dab78e, 0x3bc8ac99, 0x30c6a594, 0x599cd2df, 0x5292dbd2, 0x4f80c0c5, 0x448ec9c8, 0x75a4f6eb, 0x7eaaffe6, 0x63b8e4f1, 0x68b6edfc, 0xb10c0a67, 0xba02036a, 0xa710187d, 0xac1e1170, 0x9d342e53, 0x963a275e, 0x8b283c49, 0x80263544, 0xe97c420f, 0xe2724b02, 0xff605015, 0xf46e5918, 0xc544663b, 0xce4a6f36, 0xd3587421, 0xd8567d2c, 0x7a37a10c, 0x7139a801, 0x6c2bb316, 0x6725ba1b, 0x560f8538, 0x5d018c35, 0x40139722, 0x4b1d9e2f, 0x2247e964, 0x2949e069, 0x345bfb7e, 0x3f55f273, 0x0e7fcd50, 0x0571c45d, 0x1863df4a, 0x136dd647, 0xcad731dc, 0xc1d938d1, 0xdccb23c6, 0xd7c52acb, 0xe6ef15e8, 0xede11ce5, 0xf0f307f2, 0xfbfd0eff, 0x92a779b4, 0x99a970b9, 0x84bb6bae, 0x8fb562a3, 0xbe9f5d80, 0xb591548d, 0xa8834f9a, 0xa38d4697];\n var U3 = [0x00000000, 0x0d0b0e09, 0x1a161c12, 0x171d121b, 0x342c3824, 0x3927362d, 0x2e3a2436, 0x23312a3f, 0x68587048, 0x65537e41, 0x724e6c5a, 0x7f456253, 0x5c74486c, 0x517f4665, 0x4662547e, 0x4b695a77, 0xd0b0e090, 0xddbbee99, 0xcaa6fc82, 0xc7adf28b, 0xe49cd8b4, 0xe997d6bd, 0xfe8ac4a6, 0xf381caaf, 0xb8e890d8, 0xb5e39ed1, 0xa2fe8cca, 0xaff582c3, 0x8cc4a8fc, 0x81cfa6f5, 0x96d2b4ee, 0x9bd9bae7, 0xbb7bdb3b, 0xb670d532, 0xa16dc729, 0xac66c920, 0x8f57e31f, 0x825ced16, 0x9541ff0d, 0x984af104, 0xd323ab73, 0xde28a57a, 0xc935b761, 0xc43eb968, 0xe70f9357, 0xea049d5e, 0xfd198f45, 0xf012814c, 0x6bcb3bab, 0x66c035a2, 0x71dd27b9, 0x7cd629b0, 0x5fe7038f, 0x52ec0d86, 0x45f11f9d, 0x48fa1194, 0x03934be3, 0x0e9845ea, 0x198557f1, 0x148e59f8, 0x37bf73c7, 0x3ab47dce, 0x2da96fd5, 0x20a261dc, 0x6df6ad76, 0x60fda37f, 0x77e0b164, 0x7aebbf6d, 0x59da9552, 0x54d19b5b, 0x43cc8940, 0x4ec78749, 0x05aedd3e, 0x08a5d337, 0x1fb8c12c, 0x12b3cf25, 0x3182e51a, 0x3c89eb13, 0x2b94f908, 0x269ff701, 0xbd464de6, 0xb04d43ef, 0xa75051f4, 0xaa5b5ffd, 0x896a75c2, 0x84617bcb, 0x937c69d0, 0x9e7767d9, 0xd51e3dae, 0xd81533a7, 0xcf0821bc, 0xc2032fb5, 0xe132058a, 0xec390b83, 0xfb241998, 0xf62f1791, 0xd68d764d, 0xdb867844, 0xcc9b6a5f, 0xc1906456, 0xe2a14e69, 0xefaa4060, 0xf8b7527b, 0xf5bc5c72, 0xbed50605, 0xb3de080c, 0xa4c31a17, 0xa9c8141e, 0x8af93e21, 0x87f23028, 0x90ef2233, 0x9de42c3a, 0x063d96dd, 0x0b3698d4, 0x1c2b8acf, 0x112084c6, 0x3211aef9, 0x3f1aa0f0, 0x2807b2eb, 0x250cbce2, 0x6e65e695, 0x636ee89c, 0x7473fa87, 0x7978f48e, 0x5a49deb1, 0x5742d0b8, 0x405fc2a3, 0x4d54ccaa, 0xdaf741ec, 0xd7fc4fe5, 0xc0e15dfe, 0xcdea53f7, 0xeedb79c8, 0xe3d077c1, 0xf4cd65da, 0xf9c66bd3, 0xb2af31a4, 0xbfa43fad, 0xa8b92db6, 0xa5b223bf, 0x86830980, 0x8b880789, 0x9c951592, 0x919e1b9b, 0x0a47a17c, 0x074caf75, 0x1051bd6e, 0x1d5ab367, 0x3e6b9958, 0x33609751, 0x247d854a, 0x29768b43, 0x621fd134, 0x6f14df3d, 0x7809cd26, 0x7502c32f, 0x5633e910, 0x5b38e719, 0x4c25f502, 0x412efb0b, 0x618c9ad7, 0x6c8794de, 0x7b9a86c5, 0x769188cc, 0x55a0a2f3, 0x58abacfa, 0x4fb6bee1, 0x42bdb0e8, 0x09d4ea9f, 0x04dfe496, 0x13c2f68d, 0x1ec9f884, 0x3df8d2bb, 0x30f3dcb2, 0x27eecea9, 0x2ae5c0a0, 0xb13c7a47, 0xbc37744e, 0xab2a6655, 0xa621685c, 0x85104263, 0x881b4c6a, 0x9f065e71, 0x920d5078, 0xd9640a0f, 0xd46f0406, 0xc372161d, 0xce791814, 0xed48322b, 0xe0433c22, 0xf75e2e39, 0xfa552030, 0xb701ec9a, 0xba0ae293, 0xad17f088, 0xa01cfe81, 0x832dd4be, 0x8e26dab7, 0x993bc8ac, 0x9430c6a5, 0xdf599cd2, 0xd25292db, 0xc54f80c0, 0xc8448ec9, 0xeb75a4f6, 0xe67eaaff, 0xf163b8e4, 0xfc68b6ed, 0x67b10c0a, 0x6aba0203, 0x7da71018, 0x70ac1e11, 0x539d342e, 0x5e963a27, 0x498b283c, 0x44802635, 0x0fe97c42, 0x02e2724b, 0x15ff6050, 0x18f46e59, 0x3bc54466, 0x36ce4a6f, 0x21d35874, 0x2cd8567d, 0x0c7a37a1, 0x017139a8, 0x166c2bb3, 0x1b6725ba, 0x38560f85, 0x355d018c, 0x22401397, 0x2f4b1d9e, 0x642247e9, 0x692949e0, 0x7e345bfb, 0x733f55f2, 0x500e7fcd, 0x5d0571c4, 0x4a1863df, 0x47136dd6, 0xdccad731, 0xd1c1d938, 0xc6dccb23, 0xcbd7c52a, 0xe8e6ef15, 0xe5ede11c, 0xf2f0f307, 0xfffbfd0e, 0xb492a779, 0xb999a970, 0xae84bb6b, 0xa38fb562, 0x80be9f5d, 0x8db59154, 0x9aa8834f, 0x97a38d46];\n var U4 = [0x00000000, 0x090d0b0e, 0x121a161c, 0x1b171d12, 0x24342c38, 0x2d392736, 0x362e3a24, 0x3f23312a, 0x48685870, 0x4165537e, 0x5a724e6c, 0x537f4562, 0x6c5c7448, 0x65517f46, 0x7e466254, 0x774b695a, 0x90d0b0e0, 0x99ddbbee, 0x82caa6fc, 0x8bc7adf2, 0xb4e49cd8, 0xbde997d6, 0xa6fe8ac4, 0xaff381ca, 0xd8b8e890, 0xd1b5e39e, 0xcaa2fe8c, 0xc3aff582, 0xfc8cc4a8, 0xf581cfa6, 0xee96d2b4, 0xe79bd9ba, 0x3bbb7bdb, 0x32b670d5, 0x29a16dc7, 0x20ac66c9, 0x1f8f57e3, 0x16825ced, 0x0d9541ff, 0x04984af1, 0x73d323ab, 0x7ade28a5, 0x61c935b7, 0x68c43eb9, 0x57e70f93, 0x5eea049d, 0x45fd198f, 0x4cf01281, 0xab6bcb3b, 0xa266c035, 0xb971dd27, 0xb07cd629, 0x8f5fe703, 0x8652ec0d, 0x9d45f11f, 0x9448fa11, 0xe303934b, 0xea0e9845, 0xf1198557, 0xf8148e59, 0xc737bf73, 0xce3ab47d, 0xd52da96f, 0xdc20a261, 0x766df6ad, 0x7f60fda3, 0x6477e0b1, 0x6d7aebbf, 0x5259da95, 0x5b54d19b, 0x4043cc89, 0x494ec787, 0x3e05aedd, 0x3708a5d3, 0x2c1fb8c1, 0x2512b3cf, 0x1a3182e5, 0x133c89eb, 0x082b94f9, 0x01269ff7, 0xe6bd464d, 0xefb04d43, 0xf4a75051, 0xfdaa5b5f, 0xc2896a75, 0xcb84617b, 0xd0937c69, 0xd99e7767, 0xaed51e3d, 0xa7d81533, 0xbccf0821, 0xb5c2032f, 0x8ae13205, 0x83ec390b, 0x98fb2419, 0x91f62f17, 0x4dd68d76, 0x44db8678, 0x5fcc9b6a, 0x56c19064, 0x69e2a14e, 0x60efaa40, 0x7bf8b752, 0x72f5bc5c, 0x05bed506, 0x0cb3de08, 0x17a4c31a, 0x1ea9c814, 0x218af93e, 0x2887f230, 0x3390ef22, 0x3a9de42c, 0xdd063d96, 0xd40b3698, 0xcf1c2b8a, 0xc6112084, 0xf93211ae, 0xf03f1aa0, 0xeb2807b2, 0xe2250cbc, 0x956e65e6, 0x9c636ee8, 0x877473fa, 0x8e7978f4, 0xb15a49de, 0xb85742d0, 0xa3405fc2, 0xaa4d54cc, 0xecdaf741, 0xe5d7fc4f, 0xfec0e15d, 0xf7cdea53, 0xc8eedb79, 0xc1e3d077, 0xdaf4cd65, 0xd3f9c66b, 0xa4b2af31, 0xadbfa43f, 0xb6a8b92d, 0xbfa5b223, 0x80868309, 0x898b8807, 0x929c9515, 0x9b919e1b, 0x7c0a47a1, 0x75074caf, 0x6e1051bd, 0x671d5ab3, 0x583e6b99, 0x51336097, 0x4a247d85, 0x4329768b, 0x34621fd1, 0x3d6f14df, 0x267809cd, 0x2f7502c3, 0x105633e9, 0x195b38e7, 0x024c25f5, 0x0b412efb, 0xd7618c9a, 0xde6c8794, 0xc57b9a86, 0xcc769188, 0xf355a0a2, 0xfa58abac, 0xe14fb6be, 0xe842bdb0, 0x9f09d4ea, 0x9604dfe4, 0x8d13c2f6, 0x841ec9f8, 0xbb3df8d2, 0xb230f3dc, 0xa927eece, 0xa02ae5c0, 0x47b13c7a, 0x4ebc3774, 0x55ab2a66, 0x5ca62168, 0x63851042, 0x6a881b4c, 0x719f065e, 0x78920d50, 0x0fd9640a, 0x06d46f04, 0x1dc37216, 0x14ce7918, 0x2bed4832, 0x22e0433c, 0x39f75e2e, 0x30fa5520, 0x9ab701ec, 0x93ba0ae2, 0x88ad17f0, 0x81a01cfe, 0xbe832dd4, 0xb78e26da, 0xac993bc8, 0xa59430c6, 0xd2df599c, 0xdbd25292, 0xc0c54f80, 0xc9c8448e, 0xf6eb75a4, 0xffe67eaa, 0xe4f163b8, 0xedfc68b6, 0x0a67b10c, 0x036aba02, 0x187da710, 0x1170ac1e, 0x2e539d34, 0x275e963a, 0x3c498b28, 0x35448026, 0x420fe97c, 0x4b02e272, 0x5015ff60, 0x5918f46e, 0x663bc544, 0x6f36ce4a, 0x7421d358, 0x7d2cd856, 0xa10c7a37, 0xa8017139, 0xb3166c2b, 0xba1b6725, 0x8538560f, 0x8c355d01, 0x97224013, 0x9e2f4b1d, 0xe9642247, 0xe0692949, 0xfb7e345b, 0xf2733f55, 0xcd500e7f, 0xc45d0571, 0xdf4a1863, 0xd647136d, 0x31dccad7, 0x38d1c1d9, 0x23c6dccb, 0x2acbd7c5, 0x15e8e6ef, 0x1ce5ede1, 0x07f2f0f3, 0x0efffbfd, 0x79b492a7, 0x70b999a9, 0x6bae84bb, 0x62a38fb5, 0x5d80be9f, 0x548db591, 0x4f9aa883, 0x4697a38d];\n\n function convertToInt32(bytes) {\n var result = [];\n for (var i = 0; i < bytes.length; i += 4) {\n result.push(\n (bytes[i ] << 24) |\n (bytes[i + 1] << 16) |\n (bytes[i + 2] << 8) |\n bytes[i + 3]\n );\n }\n return result;\n }\n\n var AES = function(key) {\n if (!(this instanceof AES)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n Object.defineProperty(this, 'key', {\n value: coerceArray(key, true)\n });\n\n this._prepare();\n }\n\n\n AES.prototype._prepare = function() {\n\n var rounds = numberOfRounds[this.key.length];\n if (rounds == null) {\n throw new Error('invalid key size (must be 16, 24 or 32 bytes)');\n }\n\n // encryption round keys\n this._Ke = [];\n\n // decryption round keys\n this._Kd = [];\n\n for (var i = 0; i <= rounds; i++) {\n this._Ke.push([0, 0, 0, 0]);\n this._Kd.push([0, 0, 0, 0]);\n }\n\n var roundKeyCount = (rounds + 1) * 4;\n var KC = this.key.length / 4;\n\n // convert the key into ints\n var tk = convertToInt32(this.key);\n\n // copy values into round key arrays\n var index;\n for (var i = 0; i < KC; i++) {\n index = i >> 2;\n this._Ke[index][i % 4] = tk[i];\n this._Kd[rounds - index][i % 4] = tk[i];\n }\n\n // key expansion (fips-197 section 5.2)\n var rconpointer = 0;\n var t = KC, tt;\n while (t < roundKeyCount) {\n tt = tk[KC - 1];\n tk[0] ^= ((S[(tt >> 16) & 0xFF] << 24) ^\n (S[(tt >> 8) & 0xFF] << 16) ^\n (S[ tt & 0xFF] << 8) ^\n S[(tt >> 24) & 0xFF] ^\n (rcon[rconpointer] << 24));\n rconpointer += 1;\n\n // key expansion (for non-256 bit)\n if (KC != 8) {\n for (var i = 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n\n // key expansion for 256-bit keys is \"slightly different\" (fips-197)\n } else {\n for (var i = 1; i < (KC / 2); i++) {\n tk[i] ^= tk[i - 1];\n }\n tt = tk[(KC / 2) - 1];\n\n tk[KC / 2] ^= (S[ tt & 0xFF] ^\n (S[(tt >> 8) & 0xFF] << 8) ^\n (S[(tt >> 16) & 0xFF] << 16) ^\n (S[(tt >> 24) & 0xFF] << 24));\n\n for (var i = (KC / 2) + 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n }\n\n // copy values into round key arrays\n var i = 0, r, c;\n while (i < KC && t < roundKeyCount) {\n r = t >> 2;\n c = t % 4;\n this._Ke[r][c] = tk[i];\n this._Kd[rounds - r][c] = tk[i++];\n t++;\n }\n }\n\n // inverse-cipher-ify the decryption round key (fips-197 section 5.3)\n for (var r = 1; r < rounds; r++) {\n for (var c = 0; c < 4; c++) {\n tt = this._Kd[r][c];\n this._Kd[r][c] = (U1[(tt >> 24) & 0xFF] ^\n U2[(tt >> 16) & 0xFF] ^\n U3[(tt >> 8) & 0xFF] ^\n U4[ tt & 0xFF]);\n }\n }\n }\n\n AES.prototype.encrypt = function(plaintext) {\n if (plaintext.length != 16) {\n throw new Error('invalid plaintext size (must be 16 bytes)');\n }\n\n var rounds = this._Ke.length - 1;\n var a = [0, 0, 0, 0];\n\n // convert plaintext to (ints ^ key)\n var t = convertToInt32(plaintext);\n for (var i = 0; i < 4; i++) {\n t[i] ^= this._Ke[0][i];\n }\n\n // apply round transforms\n for (var r = 1; r < rounds; r++) {\n for (var i = 0; i < 4; i++) {\n a[i] = (T1[(t[ i ] >> 24) & 0xff] ^\n T2[(t[(i + 1) % 4] >> 16) & 0xff] ^\n T3[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T4[ t[(i + 3) % 4] & 0xff] ^\n this._Ke[r][i]);\n }\n t = a.slice();\n }\n\n // the last round is special\n var result = createArray(16), tt;\n for (var i = 0; i < 4; i++) {\n tt = this._Ke[rounds][i];\n result[4 * i ] = (S[(t[ i ] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (S[(t[(i + 1) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (S[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (S[ t[(i + 3) % 4] & 0xff] ^ tt ) & 0xff;\n }\n\n return result;\n }\n\n AES.prototype.decrypt = function(ciphertext) {\n if (ciphertext.length != 16) {\n throw new Error('invalid ciphertext size (must be 16 bytes)');\n }\n\n var rounds = this._Kd.length - 1;\n var a = [0, 0, 0, 0];\n\n // convert plaintext to (ints ^ key)\n var t = convertToInt32(ciphertext);\n for (var i = 0; i < 4; i++) {\n t[i] ^= this._Kd[0][i];\n }\n\n // apply round transforms\n for (var r = 1; r < rounds; r++) {\n for (var i = 0; i < 4; i++) {\n a[i] = (T5[(t[ i ] >> 24) & 0xff] ^\n T6[(t[(i + 3) % 4] >> 16) & 0xff] ^\n T7[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T8[ t[(i + 1) % 4] & 0xff] ^\n this._Kd[r][i]);\n }\n t = a.slice();\n }\n\n // the last round is special\n var result = createArray(16), tt;\n for (var i = 0; i < 4; i++) {\n tt = this._Kd[rounds][i];\n result[4 * i ] = (Si[(t[ i ] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (Si[(t[(i + 3) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (Si[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (Si[ t[(i + 1) % 4] & 0xff] ^ tt ) & 0xff;\n }\n\n return result;\n }\n\n\n /**\n * Mode Of Operation - Electonic Codebook (ECB)\n */\n var ModeOfOperationECB = function(key) {\n if (!(this instanceof ModeOfOperationECB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Electronic Code Block\";\n this.name = \"ecb\";\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationECB.prototype.encrypt = function(plaintext) {\n plaintext = coerceArray(plaintext);\n\n if ((plaintext.length % 16) !== 0) {\n throw new Error('invalid plaintext size (must be multiple of 16 bytes)');\n }\n\n var ciphertext = createArray(plaintext.length);\n var block = createArray(16);\n\n for (var i = 0; i < plaintext.length; i += 16) {\n copyArray(plaintext, block, 0, i, i + 16);\n block = this._aes.encrypt(block);\n copyArray(block, ciphertext, i);\n }\n\n return ciphertext;\n }\n\n ModeOfOperationECB.prototype.decrypt = function(ciphertext) {\n ciphertext = coerceArray(ciphertext);\n\n if ((ciphertext.length % 16) !== 0) {\n throw new Error('invalid ciphertext size (must be multiple of 16 bytes)');\n }\n\n var plaintext = createArray(ciphertext.length);\n var block = createArray(16);\n\n for (var i = 0; i < ciphertext.length; i += 16) {\n copyArray(ciphertext, block, 0, i, i + 16);\n block = this._aes.decrypt(block);\n copyArray(block, plaintext, i);\n }\n\n return plaintext;\n }\n\n\n /**\n * Mode Of Operation - Cipher Block Chaining (CBC)\n */\n var ModeOfOperationCBC = function(key, iv) {\n if (!(this instanceof ModeOfOperationCBC)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Cipher Block Chaining\";\n this.name = \"cbc\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 bytes)');\n }\n\n this._lastCipherblock = coerceArray(iv, true);\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCBC.prototype.encrypt = function(plaintext) {\n plaintext = coerceArray(plaintext);\n\n if ((plaintext.length % 16) !== 0) {\n throw new Error('invalid plaintext size (must be multiple of 16 bytes)');\n }\n\n var ciphertext = createArray(plaintext.length);\n var block = createArray(16);\n\n for (var i = 0; i < plaintext.length; i += 16) {\n copyArray(plaintext, block, 0, i, i + 16);\n\n for (var j = 0; j < 16; j++) {\n block[j] ^= this._lastCipherblock[j];\n }\n\n this._lastCipherblock = this._aes.encrypt(block);\n copyArray(this._lastCipherblock, ciphertext, i);\n }\n\n return ciphertext;\n }\n\n ModeOfOperationCBC.prototype.decrypt = function(ciphertext) {\n ciphertext = coerceArray(ciphertext);\n\n if ((ciphertext.length % 16) !== 0) {\n throw new Error('invalid ciphertext size (must be multiple of 16 bytes)');\n }\n\n var plaintext = createArray(ciphertext.length);\n var block = createArray(16);\n\n for (var i = 0; i < ciphertext.length; i += 16) {\n copyArray(ciphertext, block, 0, i, i + 16);\n block = this._aes.decrypt(block);\n\n for (var j = 0; j < 16; j++) {\n plaintext[i + j] = block[j] ^ this._lastCipherblock[j];\n }\n\n copyArray(ciphertext, this._lastCipherblock, 0, i, i + 16);\n }\n\n return plaintext;\n }\n\n\n /**\n * Mode Of Operation - Cipher Feedback (CFB)\n */\n var ModeOfOperationCFB = function(key, iv, segmentSize) {\n if (!(this instanceof ModeOfOperationCFB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Cipher Feedback\";\n this.name = \"cfb\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 size)');\n }\n\n if (!segmentSize) { segmentSize = 1; }\n\n this.segmentSize = segmentSize;\n\n this._shiftRegister = coerceArray(iv, true);\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCFB.prototype.encrypt = function(plaintext) {\n if ((plaintext.length % this.segmentSize) != 0) {\n throw new Error('invalid plaintext size (must be segmentSize bytes)');\n }\n\n var encrypted = coerceArray(plaintext, true);\n\n var xorSegment;\n for (var i = 0; i < encrypted.length; i += this.segmentSize) {\n xorSegment = this._aes.encrypt(this._shiftRegister);\n for (var j = 0; j < this.segmentSize; j++) {\n encrypted[i + j] ^= xorSegment[j];\n }\n\n // Shift the register\n copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);\n copyArray(encrypted, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);\n }\n\n return encrypted;\n }\n\n ModeOfOperationCFB.prototype.decrypt = function(ciphertext) {\n if ((ciphertext.length % this.segmentSize) != 0) {\n throw new Error('invalid ciphertext size (must be segmentSize bytes)');\n }\n\n var plaintext = coerceArray(ciphertext, true);\n\n var xorSegment;\n for (var i = 0; i < plaintext.length; i += this.segmentSize) {\n xorSegment = this._aes.encrypt(this._shiftRegister);\n\n for (var j = 0; j < this.segmentSize; j++) {\n plaintext[i + j] ^= xorSegment[j];\n }\n\n // Shift the register\n copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);\n copyArray(ciphertext, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);\n }\n\n return plaintext;\n }\n\n /**\n * Mode Of Operation - Output Feedback (OFB)\n */\n var ModeOfOperationOFB = function(key, iv) {\n if (!(this instanceof ModeOfOperationOFB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Output Feedback\";\n this.name = \"ofb\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 bytes)');\n }\n\n this._lastPrecipher = coerceArray(iv, true);\n this._lastPrecipherIndex = 16;\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationOFB.prototype.encrypt = function(plaintext) {\n var encrypted = coerceArray(plaintext, true);\n\n for (var i = 0; i < encrypted.length; i++) {\n if (this._lastPrecipherIndex === 16) {\n this._lastPrecipher = this._aes.encrypt(this._lastPrecipher);\n this._lastPrecipherIndex = 0;\n }\n encrypted[i] ^= this._lastPrecipher[this._lastPrecipherIndex++];\n }\n\n return encrypted;\n }\n\n // Decryption is symetric\n ModeOfOperationOFB.prototype.decrypt = ModeOfOperationOFB.prototype.encrypt;\n\n\n /**\n * Counter object for CTR common mode of operation\n */\n var Counter = function(initialValue) {\n if (!(this instanceof Counter)) {\n throw Error('Counter must be instanitated with `new`');\n }\n\n // We allow 0, but anything false-ish uses the default 1\n if (initialValue !== 0 && !initialValue) { initialValue = 1; }\n\n if (typeof(initialValue) === 'number') {\n this._counter = createArray(16);\n this.setValue(initialValue);\n\n } else {\n this.setBytes(initialValue);\n }\n }\n\n Counter.prototype.setValue = function(value) {\n if (typeof(value) !== 'number' || parseInt(value) != value) {\n throw new Error('invalid counter value (must be an integer)');\n }\n\n for (var index = 15; index >= 0; --index) {\n this._counter[index] = value % 256;\n value = value >> 8;\n }\n }\n\n Counter.prototype.setBytes = function(bytes) {\n bytes = coerceArray(bytes, true);\n\n if (bytes.length != 16) {\n throw new Error('invalid counter bytes size (must be 16 bytes)');\n }\n\n this._counter = bytes;\n };\n\n Counter.prototype.increment = function() {\n for (var i = 15; i >= 0; i--) {\n if (this._counter[i] === 255) {\n this._counter[i] = 0;\n } else {\n this._counter[i]++;\n break;\n }\n }\n }\n\n\n /**\n * Mode Of Operation - Counter (CTR)\n */\n var ModeOfOperationCTR = function(key, counter) {\n if (!(this instanceof ModeOfOperationCTR)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Counter\";\n this.name = \"ctr\";\n\n if (!(counter instanceof Counter)) {\n counter = new Counter(counter)\n }\n\n this._counter = counter;\n\n this._remainingCounter = null;\n this._remainingCounterIndex = 16;\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCTR.prototype.encrypt = function(plaintext) {\n var encrypted = coerceArray(plaintext, true);\n\n for (var i = 0; i < encrypted.length; i++) {\n if (this._remainingCounterIndex === 16) {\n this._remainingCounter = this._aes.encrypt(this._counter._counter);\n this._remainingCounterIndex = 0;\n this._counter.increment();\n }\n encrypted[i] ^= this._remainingCounter[this._remainingCounterIndex++];\n }\n\n return encrypted;\n }\n\n // Decryption is symetric\n ModeOfOperationCTR.prototype.decrypt = ModeOfOperationCTR.prototype.encrypt;\n\n\n ///////////////////////\n // Padding\n\n // See:https://tools.ietf.org/html/rfc2315\n function pkcs7pad(data) {\n data = coerceArray(data, true);\n var padder = 16 - (data.length % 16);\n var result = createArray(data.length + padder);\n copyArray(data, result);\n for (var i = data.length; i < result.length; i++) {\n result[i] = padder;\n }\n return result;\n }\n\n function pkcs7strip(data) {\n data = coerceArray(data, true);\n if (data.length < 16) { throw new Error('PKCS#7 invalid length'); }\n\n var padder = data[data.length - 1];\n if (padder > 16) { throw new Error('PKCS#7 padding byte out of range'); }\n\n var length = data.length - padder;\n for (var i = 0; i < padder; i++) {\n if (data[length + i] !== padder) {\n throw new Error('PKCS#7 invalid padding byte');\n }\n }\n\n var result = createArray(length);\n copyArray(data, result, 0, 0, length);\n return result;\n }\n\n ///////////////////////\n // Exporting\n\n\n // The block cipher\n var aesjs = {\n AES: AES,\n Counter: Counter,\n\n ModeOfOperation: {\n ecb: ModeOfOperationECB,\n cbc: ModeOfOperationCBC,\n cfb: ModeOfOperationCFB,\n ofb: ModeOfOperationOFB,\n ctr: ModeOfOperationCTR\n },\n\n utils: {\n hex: convertHex,\n utf8: convertUtf8\n },\n\n padding: {\n pkcs7: {\n pad: pkcs7pad,\n strip: pkcs7strip\n }\n },\n\n _arrayTest: {\n coerceArray: coerceArray,\n createArray: createArray,\n copyArray: copyArray,\n }\n };\n\n\n // node.js\n if (typeof exports !== 'undefined') {\n module.exports = aesjs\n\n // RequireJS/AMD\n // http://www.requirejs.org/docs/api.html\n // https://github.com/amdjs/amdjs-api/wiki/AMD\n } else if (typeof(define) === 'function' && define.amd) {\n define(aesjs);\n\n // Web Browsers\n } else {\n\n // If there was an existing library at \"aesjs\" make sure it's still available\n if (root.aesjs) {\n aesjs._aesjs = root.aesjs;\n }\n\n root.aesjs = aesjs;\n }\n\n\n})(this);\n","export const version = \"json-wallets/5.8.0\";\n","\"use strict\";\n\nimport { arrayify, Bytes, BytesLike, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, UnicodeNormalizationForm } from '@ethersproject/strings';\n\nexport function looseArrayify(hexString: string): Uint8Array {\n if (typeof(hexString) === 'string' && hexString.substring(0, 2) !== '0x') {\n hexString = '0x' + hexString;\n }\n return arrayify(hexString);\n}\n\nexport function zpad(value: String | number, length: number): String {\n value = String(value);\n while (value.length < length) { value = '0' + value; }\n return value;\n}\n\nexport function getPassword(password: Bytes | string): Uint8Array {\n if (typeof(password) === 'string') {\n return toUtf8Bytes(password, UnicodeNormalizationForm.NFKC);\n }\n return arrayify(password);\n}\n\nexport function searchPath(object: any, path: string): string {\n let currentChild = object;\n\n const comps = path.toLowerCase().split('/');\n for (let i = 0; i < comps.length; i++) {\n\n // Search for a child object with a case-insensitive matching key\n let matchingChild = null;\n for (const key in currentChild) {\n if (key.toLowerCase() === comps[i]) {\n matchingChild = currentChild[key];\n break;\n }\n }\n\n // Didn't find one. :'(\n if (matchingChild === null) {\n return null;\n }\n\n // Now check this child...\n currentChild = matchingChild;\n }\n\n return currentChild;\n}\n\n// See: https://www.ietf.org/rfc/rfc4122.txt (Section 4.4)\nexport function uuidV4(randomBytes: BytesLike): string {\n const bytes = arrayify(randomBytes);\n\n // Section: 4.1.3:\n // - time_hi_and_version[12:16] = 0b0100\n bytes[6] = (bytes[6] & 0x0f) | 0x40;\n\n // Section 4.4\n // - clock_seq_hi_and_reserved[6] = 0b0\n // - clock_seq_hi_and_reserved[7] = 0b1\n bytes[8] = (bytes[8] & 0x3f) | 0x80;\n\n const value = hexlify(bytes);\n\n return [\n value.substring(2, 10),\n value.substring(10, 14),\n value.substring(14, 18),\n value.substring(18, 22),\n value.substring(22, 34),\n ].join(\"-\");\n}\n\n","\"use strict\";\n\nimport aes from \"aes-js\";\n\nimport { ExternallyOwnedAccount } from \"@ethersproject/abstract-signer\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify, Bytes } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { pbkdf2 } from \"@ethersproject/pbkdf2\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { Description } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { getPassword, looseArrayify, searchPath } from \"./utils\";\n\nexport interface _CrowdsaleAccount {\n address: string;\n privateKey: string;\n\n _isCrowdsaleAccount: boolean;\n}\n\nexport class CrowdsaleAccount extends Description<_CrowdsaleAccount> implements ExternallyOwnedAccount {\n readonly address: string;\n readonly privateKey: string;\n readonly mnemonic?: string;\n readonly path?: string;\n\n readonly _isCrowdsaleAccount: boolean;\n\n isCrowdsaleAccount(value: any): value is CrowdsaleAccount {\n return !!(value && value._isCrowdsaleAccount);\n }\n}\n\n// See: https://github.com/ethereum/pyethsaletool\nexport function decrypt(json: string, password: Bytes | string): ExternallyOwnedAccount {\n const data = JSON.parse(json);\n\n password = getPassword(password);\n\n // Ethereum Address\n const ethaddr = getAddress(searchPath(data, \"ethaddr\"));\n\n // Encrypted Seed\n const encseed = looseArrayify(searchPath(data, \"encseed\"));\n if (!encseed || (encseed.length % 16) !== 0) {\n logger.throwArgumentError(\"invalid encseed\", \"json\", json);\n }\n\n const key = arrayify(pbkdf2(password, password, 2000, 32, \"sha256\")).slice(0, 16);\n\n const iv = encseed.slice(0, 16);\n const encryptedSeed = encseed.slice(16);\n\n // Decrypt the seed\n const aesCbc = new aes.ModeOfOperation.cbc(key, iv);\n const seed = aes.padding.pkcs7.strip(arrayify(aesCbc.decrypt(encryptedSeed)));\n\n // This wallet format is weird... Convert the binary encoded hex to a string.\n let seedHex = \"\";\n for (let i = 0; i < seed.length; i++) {\n seedHex += String.fromCharCode(seed[i]);\n }\n\n const seedHexBytes = toUtf8Bytes(seedHex);\n\n const privateKey = keccak256(seedHexBytes);\n\n return new CrowdsaleAccount ({\n _isCrowdsaleAccount: true,\n address: ethaddr,\n privateKey: privateKey\n });\n}\n\n","\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\n\n\nexport function isCrowdsaleWallet(json: string): boolean {\n let data: any = null;\n try {\n data = JSON.parse(json);\n } catch (error) { return false; }\n\n return (data.encseed && data.ethaddr);\n}\n\nexport function isKeystoreWallet(json: string): boolean {\n let data: any = null;\n try {\n data = JSON.parse(json);\n } catch (error) { return false; }\n\n if (!data.version || parseInt(data.version) !== data.version || parseInt(data.version) !== 3) {\n return false;\n }\n\n // @TODO: Put more checks to make sure it has kdf, iv and all that good stuff\n return true;\n}\n\n//export function isJsonWallet(json: string): boolean {\n// return (isSecretStorageWallet(json) || isCrowdsaleWallet(json));\n//}\n\nexport function getJsonWalletAddress(json: string): string {\n if (isCrowdsaleWallet(json)) {\n try {\n return getAddress(JSON.parse(json).ethaddr);\n } catch (error) { return null; }\n }\n\n if (isKeystoreWallet(json)) {\n try {\n return getAddress(JSON.parse(json).address);\n } catch (error) { return null; }\n }\n\n return null;\n}\n\n","\"use strict\";\n\n(function(root) {\n const MAX_VALUE = 0x7fffffff;\n\n // The SHA256 and PBKDF2 implementation are from scrypt-async-js:\n // See: https://github.com/dchest/scrypt-async-js\n function SHA256(m) {\n const K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,\n 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,\n 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7,\n 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152,\n 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc,\n 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,\n 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,\n 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f,\n 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n ]);\n\n let h0 = 0x6a09e667, h1 = 0xbb67ae85, h2 = 0x3c6ef372, h3 = 0xa54ff53a;\n let h4 = 0x510e527f, h5 = 0x9b05688c, h6 = 0x1f83d9ab, h7 = 0x5be0cd19;\n const w = new Uint32Array(64);\n\n function blocks(p) {\n let off = 0, len = p.length;\n while (len >= 64) {\n let a = h0, b = h1, c = h2, d = h3, e = h4, f = h5, g = h6, h = h7, u, i, j, t1, t2;\n\n for (i = 0; i < 16; i++) {\n j = off + i*4;\n w[i] = ((p[j] & 0xff)<<24) | ((p[j+1] & 0xff)<<16) |\n ((p[j+2] & 0xff)<<8) | (p[j+3] & 0xff);\n }\n\n for (i = 16; i < 64; i++) {\n u = w[i-2];\n t1 = ((u>>>17) | (u<<(32-17))) ^ ((u>>>19) | (u<<(32-19))) ^ (u>>>10);\n\n u = w[i-15];\n t2 = ((u>>>7) | (u<<(32-7))) ^ ((u>>>18) | (u<<(32-18))) ^ (u>>>3);\n\n w[i] = (((t1 + w[i-7]) | 0) + ((t2 + w[i-16]) | 0)) | 0;\n }\n\n for (i = 0; i < 64; i++) {\n t1 = ((((((e>>>6) | (e<<(32-6))) ^ ((e>>>11) | (e<<(32-11))) ^\n ((e>>>25) | (e<<(32-25)))) + ((e & f) ^ (~e & g))) | 0) +\n ((h + ((K[i] + w[i]) | 0)) | 0)) | 0;\n\n t2 = ((((a>>>2) | (a<<(32-2))) ^ ((a>>>13) | (a<<(32-13))) ^\n ((a>>>22) | (a<<(32-22)))) + ((a & b) ^ (a & c) ^ (b & c))) | 0;\n\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n\n h0 = (h0 + a) | 0;\n h1 = (h1 + b) | 0;\n h2 = (h2 + c) | 0;\n h3 = (h3 + d) | 0;\n h4 = (h4 + e) | 0;\n h5 = (h5 + f) | 0;\n h6 = (h6 + g) | 0;\n h7 = (h7 + h) | 0;\n\n off += 64;\n len -= 64;\n }\n }\n\n blocks(m);\n\n let i, bytesLeft = m.length % 64,\n bitLenHi = (m.length / 0x20000000) | 0,\n bitLenLo = m.length << 3,\n numZeros = (bytesLeft < 56) ? 56 : 120,\n p = m.slice(m.length - bytesLeft, m.length);\n\n p.push(0x80);\n for (i = bytesLeft + 1; i < numZeros; i++) { p.push(0); }\n p.push((bitLenHi >>> 24) & 0xff);\n p.push((bitLenHi >>> 16) & 0xff);\n p.push((bitLenHi >>> 8) & 0xff);\n p.push((bitLenHi >>> 0) & 0xff);\n p.push((bitLenLo >>> 24) & 0xff);\n p.push((bitLenLo >>> 16) & 0xff);\n p.push((bitLenLo >>> 8) & 0xff);\n p.push((bitLenLo >>> 0) & 0xff);\n\n blocks(p);\n\n return [\n (h0 >>> 24) & 0xff, (h0 >>> 16) & 0xff, (h0 >>> 8) & 0xff, (h0 >>> 0) & 0xff,\n (h1 >>> 24) & 0xff, (h1 >>> 16) & 0xff, (h1 >>> 8) & 0xff, (h1 >>> 0) & 0xff,\n (h2 >>> 24) & 0xff, (h2 >>> 16) & 0xff, (h2 >>> 8) & 0xff, (h2 >>> 0) & 0xff,\n (h3 >>> 24) & 0xff, (h3 >>> 16) & 0xff, (h3 >>> 8) & 0xff, (h3 >>> 0) & 0xff,\n (h4 >>> 24) & 0xff, (h4 >>> 16) & 0xff, (h4 >>> 8) & 0xff, (h4 >>> 0) & 0xff,\n (h5 >>> 24) & 0xff, (h5 >>> 16) & 0xff, (h5 >>> 8) & 0xff, (h5 >>> 0) & 0xff,\n (h6 >>> 24) & 0xff, (h6 >>> 16) & 0xff, (h6 >>> 8) & 0xff, (h6 >>> 0) & 0xff,\n (h7 >>> 24) & 0xff, (h7 >>> 16) & 0xff, (h7 >>> 8) & 0xff, (h7 >>> 0) & 0xff\n ];\n }\n\n function PBKDF2_HMAC_SHA256_OneIter(password, salt, dkLen) {\n // compress password if it's longer than hash block length\n password = (password.length <= 64) ? password : SHA256(password);\n\n const innerLen = 64 + salt.length + 4;\n const inner = new Array(innerLen);\n const outerKey = new Array(64);\n\n let i;\n let dk = [];\n\n // inner = (password ^ ipad) || salt || counter\n for (i = 0; i < 64; i++) { inner[i] = 0x36; }\n for (i = 0; i < password.length; i++) { inner[i] ^= password[i]; }\n for (i = 0; i < salt.length; i++) { inner[64 + i] = salt[i]; }\n for (i = innerLen - 4; i < innerLen; i++) { inner[i] = 0; }\n\n // outerKey = password ^ opad\n for (i = 0; i < 64; i++) outerKey[i] = 0x5c;\n for (i = 0; i < password.length; i++) outerKey[i] ^= password[i];\n\n // increments counter inside inner\n function incrementCounter() {\n for (let i = innerLen - 1; i >= innerLen - 4; i--) {\n inner[i]++;\n if (inner[i] <= 0xff) return;\n inner[i] = 0;\n }\n }\n\n // output blocks = SHA256(outerKey || SHA256(inner)) ...\n while (dkLen >= 32) {\n incrementCounter();\n dk = dk.concat(SHA256(outerKey.concat(SHA256(inner))));\n dkLen -= 32;\n }\n if (dkLen > 0) {\n incrementCounter();\n dk = dk.concat(SHA256(outerKey.concat(SHA256(inner))).slice(0, dkLen));\n }\n\n return dk;\n }\n\n // The following is an adaptation of scryptsy\n // See: https://www.npmjs.com/package/scryptsy\n function blockmix_salsa8(BY, Yi, r, x, _X) {\n let i;\n\n arraycopy(BY, (2 * r - 1) * 16, _X, 0, 16);\n for (i = 0; i < 2 * r; i++) {\n blockxor(BY, i * 16, _X, 16);\n salsa20_8(_X, x);\n arraycopy(_X, 0, BY, Yi + (i * 16), 16);\n }\n\n for (i = 0; i < r; i++) {\n arraycopy(BY, Yi + (i * 2) * 16, BY, (i * 16), 16);\n }\n\n for (i = 0; i < r; i++) {\n arraycopy(BY, Yi + (i * 2 + 1) * 16, BY, (i + r) * 16, 16);\n }\n }\n\n function R(a, b) {\n return (a << b) | (a >>> (32 - b));\n }\n\n function salsa20_8(B, x) {\n arraycopy(B, 0, x, 0, 16);\n\n for (let i = 8; i > 0; i -= 2) {\n x[ 4] ^= R(x[ 0] + x[12], 7);\n x[ 8] ^= R(x[ 4] + x[ 0], 9);\n x[12] ^= R(x[ 8] + x[ 4], 13);\n x[ 0] ^= R(x[12] + x[ 8], 18);\n x[ 9] ^= R(x[ 5] + x[ 1], 7);\n x[13] ^= R(x[ 9] + x[ 5], 9);\n x[ 1] ^= R(x[13] + x[ 9], 13);\n x[ 5] ^= R(x[ 1] + x[13], 18);\n x[14] ^= R(x[10] + x[ 6], 7);\n x[ 2] ^= R(x[14] + x[10], 9);\n x[ 6] ^= R(x[ 2] + x[14], 13);\n x[10] ^= R(x[ 6] + x[ 2], 18);\n x[ 3] ^= R(x[15] + x[11], 7);\n x[ 7] ^= R(x[ 3] + x[15], 9);\n x[11] ^= R(x[ 7] + x[ 3], 13);\n x[15] ^= R(x[11] + x[ 7], 18);\n x[ 1] ^= R(x[ 0] + x[ 3], 7);\n x[ 2] ^= R(x[ 1] + x[ 0], 9);\n x[ 3] ^= R(x[ 2] + x[ 1], 13);\n x[ 0] ^= R(x[ 3] + x[ 2], 18);\n x[ 6] ^= R(x[ 5] + x[ 4], 7);\n x[ 7] ^= R(x[ 6] + x[ 5], 9);\n x[ 4] ^= R(x[ 7] + x[ 6], 13);\n x[ 5] ^= R(x[ 4] + x[ 7], 18);\n x[11] ^= R(x[10] + x[ 9], 7);\n x[ 8] ^= R(x[11] + x[10], 9);\n x[ 9] ^= R(x[ 8] + x[11], 13);\n x[10] ^= R(x[ 9] + x[ 8], 18);\n x[12] ^= R(x[15] + x[14], 7);\n x[13] ^= R(x[12] + x[15], 9);\n x[14] ^= R(x[13] + x[12], 13);\n x[15] ^= R(x[14] + x[13], 18);\n }\n\n for (let i = 0; i < 16; ++i) {\n B[i] += x[i];\n }\n }\n\n // naive approach... going back to loop unrolling may yield additional performance\n function blockxor(S, Si, D, len) {\n for (let i = 0; i < len; i++) {\n D[i] ^= S[Si + i]\n }\n }\n\n function arraycopy(src, srcPos, dest, destPos, length) {\n while (length--) {\n dest[destPos++] = src[srcPos++];\n }\n }\n\n function checkBufferish(o) {\n if (!o || typeof(o.length) !== 'number') { return false; }\n\n for (let i = 0; i < o.length; i++) {\n const v = o[i];\n if (typeof(v) !== 'number' || v % 1 || v < 0 || v >= 256) {\n return false;\n }\n }\n\n return true;\n }\n\n function ensureInteger(value, name) {\n if (typeof(value) !== \"number\" || (value % 1)) { throw new Error('invalid ' + name); }\n return value;\n }\n\n // N = Cpu cost, r = Memory cost, p = parallelization cost\n // callback(error, progress, key)\n function _scrypt(password, salt, N, r, p, dkLen, callback) {\n\n N = ensureInteger(N, 'N');\n r = ensureInteger(r, 'r');\n p = ensureInteger(p, 'p');\n\n dkLen = ensureInteger(dkLen, 'dkLen');\n\n if (N === 0 || (N & (N - 1)) !== 0) { throw new Error('N must be power of 2'); }\n\n if (N > MAX_VALUE / 128 / r) { throw new Error('N too large'); }\n if (r > MAX_VALUE / 128 / p) { throw new Error('r too large'); }\n\n if (!checkBufferish(password)) {\n throw new Error('password must be an array or buffer');\n }\n password = Array.prototype.slice.call(password);\n\n if (!checkBufferish(salt)) {\n throw new Error('salt must be an array or buffer');\n }\n salt = Array.prototype.slice.call(salt);\n\n let b = PBKDF2_HMAC_SHA256_OneIter(password, salt, p * 128 * r);\n const B = new Uint32Array(p * 32 * r)\n for (let i = 0; i < B.length; i++) {\n const j = i * 4;\n B[i] = ((b[j + 3] & 0xff) << 24) |\n ((b[j + 2] & 0xff) << 16) |\n ((b[j + 1] & 0xff) << 8) |\n ((b[j + 0] & 0xff) << 0);\n }\n\n const XY = new Uint32Array(64 * r);\n const V = new Uint32Array(32 * r * N);\n\n const Yi = 32 * r;\n\n // scratch space\n const x = new Uint32Array(16); // salsa20_8\n const _X = new Uint32Array(16); // blockmix_salsa8\n\n const totalOps = p * N * 2;\n let currentOp = 0;\n let lastPercent10 = null;\n\n // Set this to true to abandon the scrypt on the next step\n let stop = false;\n\n // State information\n let state = 0;\n let i0 = 0, i1;\n let Bi;\n\n // How many blockmix_salsa8 can we do per step?\n const limit = callback ? parseInt(1000 / r): 0xffffffff;\n\n // Trick from scrypt-async; if there is a setImmediate shim in place, use it\n const nextTick = (typeof(setImmediate) !== 'undefined') ? setImmediate : setTimeout;\n\n // This is really all I changed; making scryptsy a state machine so we occasionally\n // stop and give other evnts on the evnt loop a chance to run. ~RicMoo\n const incrementalSMix = function() {\n if (stop) {\n return callback(new Error('cancelled'), currentOp / totalOps);\n }\n\n let steps;\n\n switch (state) {\n case 0:\n // for (var i = 0; i < p; i++)...\n Bi = i0 * 32 * r;\n\n arraycopy(B, Bi, XY, 0, Yi); // ROMix - 1\n\n state = 1; // Move to ROMix 2\n i1 = 0;\n\n // Fall through\n\n case 1:\n\n // Run up to 1000 steps of the first inner smix loop\n steps = N - i1;\n if (steps > limit) { steps = limit; }\n for (let i = 0; i < steps; i++) { // ROMix - 2\n arraycopy(XY, 0, V, (i1 + i) * Yi, Yi) // ROMix - 3\n blockmix_salsa8(XY, Yi, r, x, _X); // ROMix - 4\n }\n\n // for (var i = 0; i < N; i++)\n i1 += steps;\n currentOp += steps;\n\n if (callback) {\n // Call the callback with the progress (optionally stopping us)\n const percent10 = parseInt(1000 * currentOp / totalOps);\n if (percent10 !== lastPercent10) {\n stop = callback(null, currentOp / totalOps);\n if (stop) { break; }\n lastPercent10 = percent10;\n }\n }\n\n if (i1 < N) { break; }\n\n i1 = 0; // Move to ROMix 6\n state = 2;\n\n // Fall through\n\n case 2:\n\n // Run up to 1000 steps of the second inner smix loop\n steps = N - i1;\n if (steps > limit) { steps = limit; }\n for (let i = 0; i < steps; i++) { // ROMix - 6\n const offset = (2 * r - 1) * 16; // ROMix - 7\n const j = XY[offset] & (N - 1);\n blockxor(V, j * Yi, XY, Yi); // ROMix - 8 (inner)\n blockmix_salsa8(XY, Yi, r, x, _X); // ROMix - 9 (outer)\n }\n\n // for (var i = 0; i < N; i++)...\n i1 += steps;\n currentOp += steps;\n\n // Call the callback with the progress (optionally stopping us)\n if (callback) {\n const percent10 = parseInt(1000 * currentOp / totalOps);\n if (percent10 !== lastPercent10) {\n stop = callback(null, currentOp / totalOps);\n if (stop) { break; }\n lastPercent10 = percent10;\n }\n }\n\n if (i1 < N) { break; }\n\n arraycopy(XY, 0, B, Bi, Yi); // ROMix - 10\n\n // for (var i = 0; i < p; i++)...\n i0++;\n if (i0 < p) {\n state = 0;\n break;\n }\n\n b = [];\n for (let i = 0; i < B.length; i++) {\n b.push((B[i] >> 0) & 0xff);\n b.push((B[i] >> 8) & 0xff);\n b.push((B[i] >> 16) & 0xff);\n b.push((B[i] >> 24) & 0xff);\n }\n\n const derivedKey = PBKDF2_HMAC_SHA256_OneIter(password, b, dkLen);\n\n // Send the result to the callback\n if (callback) { callback(null, 1.0, derivedKey); }\n\n // Done; don't break (which would reschedule)\n return derivedKey;\n }\n\n // Schedule the next steps\n if (callback) { nextTick(incrementalSMix); }\n }\n\n // Run the smix state machine until completion\n if (!callback) {\n while (true) {\n const derivedKey = incrementalSMix();\n if (derivedKey != undefined) { return derivedKey; }\n }\n }\n\n // Bootstrap the async incremental smix\n incrementalSMix();\n }\n\n const lib = {\n scrypt: function(password, salt, N, r, p, dkLen, progressCallback) {\n return new Promise(function(resolve, reject) {\n let lastProgress = 0;\n if (progressCallback) { progressCallback(0); }\n _scrypt(password, salt, N, r, p, dkLen, function(error, progress, key) {\n if (error) {\n reject(error);\n } else if (key) {\n if (progressCallback && lastProgress !== 1) {\n progressCallback(1);\n }\n resolve(new Uint8Array(key));\n } else if (progressCallback && progress !== lastProgress) {\n lastProgress = progress;\n return progressCallback(progress);\n }\n });\n });\n },\n syncScrypt: function(password, salt, N, r, p, dkLen) {\n return new Uint8Array(_scrypt(password, salt, N, r, p, dkLen));\n }\n };\n\n // node.js\n if (typeof(exports) !== 'undefined') {\n module.exports = lib;\n\n // RequireJS/AMD\n // http://www.requirejs.org/docs/api.html\n // https://github.com/amdjs/amdjs-api/wiki/AMD\n } else if (typeof(define) === 'function' && define.amd) {\n define(lib);\n\n // Web Browsers\n } else if (root) {\n\n // If there was an existing library \"scrypt\", make sure it is still available\n if (root.scrypt) {\n root._scrypt = root.scrypt;\n }\n\n root.scrypt = lib;\n }\n\n})(this);\n","\"use strict\";\n\nimport aes from \"aes-js\";\nimport scrypt from \"scrypt-js\";\n\nimport { ExternallyOwnedAccount } from \"@ethersproject/abstract-signer\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify, Bytes, BytesLike, concat, hexlify } from \"@ethersproject/bytes\";\nimport { defaultPath, entropyToMnemonic, HDNode, Mnemonic, mnemonicToEntropy } from \"@ethersproject/hdnode\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { pbkdf2 as _pbkdf2 } from \"@ethersproject/pbkdf2\";\nimport { randomBytes } from \"@ethersproject/random\";\nimport { Description } from \"@ethersproject/properties\";\nimport { computeAddress } from \"@ethersproject/transactions\";\n\nimport { getPassword, looseArrayify, searchPath, uuidV4, zpad } from \"./utils\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n// Exported Types\n\nfunction hasMnemonic(value: any): value is { mnemonic: Mnemonic } {\n return (value != null && value.mnemonic && value.mnemonic.phrase);\n}\n\nexport interface _KeystoreAccount {\n address: string;\n privateKey: string;\n mnemonic?: Mnemonic;\n\n _isKeystoreAccount: boolean;\n}\n\nexport class KeystoreAccount extends Description<_KeystoreAccount> implements ExternallyOwnedAccount {\n readonly address: string;\n readonly privateKey: string;\n readonly mnemonic?: Mnemonic;\n\n readonly _isKeystoreAccount: boolean;\n\n isKeystoreAccount(value: any): value is KeystoreAccount {\n return !!(value && value._isKeystoreAccount);\n }\n}\n\nexport type ProgressCallback = (percent: number) => void;\n\nexport type EncryptOptions = {\n iv?: BytesLike;\n entropy?: BytesLike;\n client?: string;\n salt?: BytesLike;\n uuid?: string;\n scrypt?: {\n N?: number;\n r?: number;\n p?: number;\n }\n}\n\nfunction _decrypt(data: any, key: Uint8Array, ciphertext: Uint8Array): Uint8Array {\n const cipher = searchPath(data, \"crypto/cipher\");\n if (cipher === \"aes-128-ctr\") {\n const iv = looseArrayify(searchPath(data, \"crypto/cipherparams/iv\"))\n const counter = new aes.Counter(iv);\n\n const aesCtr = new aes.ModeOfOperation.ctr(key, counter);\n\n return arrayify(aesCtr.decrypt(ciphertext));\n }\n\n return null;\n}\n\nfunction _getAccount(data: any, key: Uint8Array): KeystoreAccount {\n const ciphertext = looseArrayify(searchPath(data, \"crypto/ciphertext\"));\n\n const computedMAC = hexlify(keccak256(concat([ key.slice(16, 32), ciphertext ]))).substring(2);\n if (computedMAC !== searchPath(data, \"crypto/mac\").toLowerCase()) {\n throw new Error(\"invalid password\");\n }\n\n const privateKey = _decrypt(data, key.slice(0, 16), ciphertext);\n\n if (!privateKey) {\n logger.throwError(\"unsupported cipher\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"decrypt\"\n });\n }\n\n const mnemonicKey = key.slice(32, 64);\n\n const address = computeAddress(privateKey);\n if (data.address) {\n let check = data.address.toLowerCase();\n if (check.substring(0, 2) !== \"0x\") { check = \"0x\" + check; }\n\n if (getAddress(check) !== address) {\n throw new Error(\"address mismatch\");\n }\n }\n\n const account: _KeystoreAccount = {\n _isKeystoreAccount: true,\n address: address,\n privateKey: hexlify(privateKey)\n };\n\n // Version 0.1 x-ethers metadata must contain an encrypted mnemonic phrase\n if (searchPath(data, \"x-ethers/version\") === \"0.1\") {\n const mnemonicCiphertext = looseArrayify(searchPath(data, \"x-ethers/mnemonicCiphertext\"));\n const mnemonicIv = looseArrayify(searchPath(data, \"x-ethers/mnemonicCounter\"));\n\n const mnemonicCounter = new aes.Counter(mnemonicIv);\n const mnemonicAesCtr = new aes.ModeOfOperation.ctr(mnemonicKey, mnemonicCounter);\n\n const path = searchPath(data, \"x-ethers/path\") || defaultPath;\n const locale = searchPath(data, \"x-ethers/locale\") || \"en\";\n\n const entropy = arrayify(mnemonicAesCtr.decrypt(mnemonicCiphertext));\n\n try {\n const mnemonic = entropyToMnemonic(entropy, locale);\n const node = HDNode.fromMnemonic(mnemonic, null, locale).derivePath(path);\n\n if (node.privateKey != account.privateKey) {\n throw new Error(\"mnemonic mismatch\");\n }\n\n account.mnemonic = node.mnemonic;\n\n } catch (error) {\n // If we don't have the locale wordlist installed to\n // read this mnemonic, just bail and don't set the\n // mnemonic\n if (error.code !== Logger.errors.INVALID_ARGUMENT || error.argument !== \"wordlist\") {\n throw error;\n }\n }\n }\n\n return new KeystoreAccount(account);\n}\n\ntype ScryptFunc<T> = (pw: Uint8Array, salt: Uint8Array, n: number, r: number, p: number, dkLen: number, callback?: ProgressCallback) => T;\ntype Pbkdf2Func<T> = (pw: Uint8Array, salt: Uint8Array, c: number, dkLen: number, prfFunc: string) => T;\n\nfunction pbkdf2Sync(passwordBytes: Uint8Array, salt: Uint8Array, count: number, dkLen: number, prfFunc: string): Uint8Array {\n return arrayify(_pbkdf2(passwordBytes, salt, count, dkLen, prfFunc));\n}\n\nfunction pbkdf2(passwordBytes: Uint8Array, salt: Uint8Array, count: number, dkLen: number, prfFunc: string): Promise<Uint8Array> {\n return Promise.resolve(pbkdf2Sync(passwordBytes, salt, count, dkLen, prfFunc));\n}\n\nfunction _computeKdfKey<T>(data: any, password: Bytes | string, pbkdf2Func: Pbkdf2Func<T>, scryptFunc: ScryptFunc<T>, progressCallback?: ProgressCallback): T {\n const passwordBytes = getPassword(password);\n\n const kdf = searchPath(data, \"crypto/kdf\");\n\n if (kdf && typeof(kdf) === \"string\") {\n const throwError = function(name: string, value: any): never {\n return logger.throwArgumentError(\"invalid key-derivation function parameters\", name, value);\n }\n\n if (kdf.toLowerCase() === \"scrypt\") {\n const salt = looseArrayify(searchPath(data, \"crypto/kdfparams/salt\"));\n const N = parseInt(searchPath(data, \"crypto/kdfparams/n\"));\n const r = parseInt(searchPath(data, \"crypto/kdfparams/r\"));\n const p = parseInt(searchPath(data, \"crypto/kdfparams/p\"));\n\n // Check for all required parameters\n if (!N || !r || !p) { throwError(\"kdf\", kdf); }\n\n // Make sure N is a power of 2\n if ((N & (N - 1)) !== 0) { throwError(\"N\", N); }\n\n const dkLen = parseInt(searchPath(data, \"crypto/kdfparams/dklen\"));\n if (dkLen !== 32) { throwError(\"dklen\", dkLen); }\n\n return scryptFunc(passwordBytes, salt, N, r, p, 64, progressCallback);\n\n } else if (kdf.toLowerCase() === \"pbkdf2\") {\n\n const salt = looseArrayify(searchPath(data, \"crypto/kdfparams/salt\"));\n\n let prfFunc: string = null;\n const prf = searchPath(data, \"crypto/kdfparams/prf\");\n if (prf === \"hmac-sha256\") {\n prfFunc = \"sha256\";\n } else if (prf === \"hmac-sha512\") {\n prfFunc = \"sha512\";\n } else {\n throwError(\"prf\", prf);\n }\n\n const count = parseInt(searchPath(data, \"crypto/kdfparams/c\"));\n\n const dkLen = parseInt(searchPath(data, \"crypto/kdfparams/dklen\"));\n if (dkLen !== 32) { throwError(\"dklen\", dkLen); }\n\n return pbkdf2Func(passwordBytes, salt, count, dkLen, prfFunc);\n }\n }\n\n return logger.throwArgumentError(\"unsupported key-derivation function\", \"kdf\", kdf);\n}\n\n\nexport function decryptSync(json: string, password: Bytes | string): KeystoreAccount {\n const data = JSON.parse(json);\n\n const key = _computeKdfKey(data, password, pbkdf2Sync, scrypt.syncScrypt);\n return _getAccount(data, key);\n}\n\nexport async function decrypt(json: string, password: Bytes | string, progressCallback?: ProgressCallback): Promise<KeystoreAccount> {\n const data = JSON.parse(json);\n\n const key = await _computeKdfKey(data, password, pbkdf2, scrypt.scrypt, progressCallback);\n return _getAccount(data, key);\n}\n\n\nexport function encrypt(account: ExternallyOwnedAccount, password: Bytes | string, options?: EncryptOptions, progressCallback?: ProgressCallback): Promise<string> {\n\n try {\n // Check the address matches the private key\n if (getAddress(account.address) !== computeAddress(account.privateKey)) {\n throw new Error(\"address/privateKey mismatch\");\n }\n\n // Check the mnemonic (if any) matches the private key\n if (hasMnemonic(account)) {\n const mnemonic = account.mnemonic;\n const node = HDNode.fromMnemonic(mnemonic.phrase, null, mnemonic.locale).derivePath(mnemonic.path || defaultPath);\n\n if (node.privateKey != account.privateKey) {\n throw new Error(\"mnemonic mismatch\");\n }\n }\n\n } catch (e) {\n return Promise.reject(e);\n }\n\n // The options are optional, so adjust the call as needed\n if (typeof(options) === \"function\" && !progressCallback) {\n progressCallback = options;\n options = {};\n }\n if (!options) { options = {}; }\n\n const privateKey: Uint8Array = arrayify(account.privateKey);\n const passwordBytes = getPassword(password);\n\n let entropy: Uint8Array = null\n let path: string = null;\n let locale: string = null;\n if (hasMnemonic(account)) {\n const srcMnemonic = account.mnemonic;\n entropy = arrayify(mnemonicToEntropy(srcMnemonic.phrase, srcMnemonic.locale || \"en\"));\n path = srcMnemonic.path || defaultPath;\n locale = srcMnemonic.locale || \"en\";\n }\n\n let client = options.client;\n if (!client) { client = \"ethers.js\"; }\n\n // Check/generate the salt\n let salt: Uint8Array = null;\n if (options.salt) {\n salt = arrayify(options.salt);\n } else {\n salt = randomBytes(32);;\n }\n\n // Override initialization vector\n let iv: Uint8Array = null;\n if (options.iv) {\n iv = arrayify(options.iv);\n if (iv.length !== 16) { throw new Error(\"invalid iv\"); }\n } else {\n iv = randomBytes(16);\n }\n\n // Override the uuid\n let uuidRandom: Uint8Array = null;\n if (options.uuid) {\n uuidRandom = arrayify(options.uuid);\n if (uuidRandom.length !== 16) { throw new Error(\"invalid uuid\"); }\n } else {\n uuidRandom = randomBytes(16);\n }\n\n // Override the scrypt password-based key derivation function parameters\n let N = (1 << 17), r = 8, p = 1;\n if (options.scrypt) {\n if (options.scrypt.N) { N = options.scrypt.N; }\n if (options.scrypt.r) { r = options.scrypt.r; }\n if (options.scrypt.p) { p = options.scrypt.p; }\n }\n\n // We take 64 bytes:\n // - 32 bytes As normal for the Web3 secret storage (derivedKey, macPrefix)\n // - 32 bytes AES key to encrypt mnemonic with (required here to be Ethers Wallet)\n return scrypt.scrypt(passwordBytes, salt, N, r, p, 64, progressCallback).then((key) => {\n key = arrayify(key);\n\n // This will be used to encrypt the wallet (as per Web3 secret storage)\n const derivedKey = key.slice(0, 16);\n const macPrefix = key.slice(16, 32);\n\n // This will be used to encrypt the mnemonic phrase (if any)\n const mnemonicKey = key.slice(32, 64);\n\n // Encrypt the private key\n const counter = new aes.Counter(iv);\n const aesCtr = new aes.ModeOfOperation.ctr(derivedKey, counter);\n const ciphertext = arrayify(aesCtr.encrypt(privateKey));\n\n // Compute the message authentication code, used to check the password\n const mac = keccak256(concat([macPrefix, ciphertext]))\n\n // See: https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition\n const data: { [key: string]: any } = {\n address: account.address.substring(2).toLowerCase(),\n id: uuidV4(uuidRandom),\n version: 3,\n crypto: {\n cipher: \"aes-128-ctr\",\n cipherparams: {\n iv: hexlify(iv).substring(2),\n },\n ciphertext: hexlify(ciphertext).substring(2),\n kdf: \"scrypt\",\n kdfparams: {\n salt: hexlify(salt).substring(2),\n n: N,\n dklen: 32,\n p: p,\n r: r\n },\n mac: mac.substring(2)\n }\n };\n\n // If we have a mnemonic, encrypt it into the JSON wallet\n if (entropy) {\n const mnemonicIv = randomBytes(16);\n const mnemonicCounter = new aes.Counter(mnemonicIv);\n const mnemonicAesCtr = new aes.ModeOfOperation.ctr(mnemonicKey, mnemonicCounter);\n const mnemonicCiphertext = arrayify(mnemonicAesCtr.encrypt(entropy));\n const now = new Date();\n const timestamp = (now.getUTCFullYear() + \"-\" +\n zpad(now.getUTCMonth() + 1, 2) + \"-\" +\n zpad(now.getUTCDate(), 2) + \"T\" +\n zpad(now.getUTCHours(), 2) + \"-\" +\n zpad(now.getUTCMinutes(), 2) + \"-\" +\n zpad(now.getUTCSeconds(), 2) + \".0Z\"\n );\n data[\"x-ethers\"] = {\n client: client,\n gethFilename: (\"UTC--\" + timestamp + \"--\" + data.address),\n mnemonicCounter: hexlify(mnemonicIv).substring(2),\n mnemonicCiphertext: hexlify(mnemonicCiphertext).substring(2),\n path: path,\n locale: locale,\n version: \"0.1\"\n };\n }\n\n return JSON.stringify(data);\n });\n}\n","\"use strict\";\n\nimport { Bytes } from \"@ethersproject/bytes\";\nimport { ExternallyOwnedAccount } from \"@ethersproject/abstract-signer\";\n\nimport { decrypt as decryptCrowdsale } from \"./crowdsale\";\nimport { getJsonWalletAddress, isCrowdsaleWallet, isKeystoreWallet } from \"./inspect\";\nimport { decrypt as decryptKeystore, decryptSync as decryptKeystoreSync, encrypt as encryptKeystore, EncryptOptions, ProgressCallback } from \"./keystore\";\n\nfunction decryptJsonWallet(json: string, password: Bytes | string, progressCallback?: ProgressCallback): Promise<ExternallyOwnedAccount> {\n if (isCrowdsaleWallet(json)) {\n if (progressCallback) { progressCallback(0); }\n const account = decryptCrowdsale(json, password)\n if (progressCallback) { progressCallback(1); }\n return Promise.resolve(account);\n }\n\n if (isKeystoreWallet(json)) {\n return decryptKeystore(json, password, progressCallback);\n }\n\n return Promise.reject(new Error(\"invalid JSON wallet\"));\n}\n\nfunction decryptJsonWalletSync(json: string, password: Bytes | string): ExternallyOwnedAccount {\n if (isCrowdsaleWallet(json)) {\n return decryptCrowdsale(json, password)\n }\n\n if (isKeystoreWallet(json)) {\n return decryptKeystoreSync(json, password);\n }\n\n throw new Error(\"invalid JSON wallet\");\n}\n\nexport {\n decryptCrowdsale,\n\n decryptKeystore,\n decryptKeystoreSync,\n encryptKeystore,\n\n isCrowdsaleWallet,\n isKeystoreWallet,\n getJsonWalletAddress,\n\n decryptJsonWallet,\n decryptJsonWalletSync,\n\n ProgressCallback,\n EncryptOptions,\n};\n","export const version = \"wallet/5.8.0\";\n","\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\nimport { Provider, TransactionRequest } from \"@ethersproject/abstract-provider\";\nimport { ExternallyOwnedAccount, Signer, TypedDataDomain, TypedDataField, TypedDataSigner } from \"@ethersproject/abstract-signer\";\nimport { arrayify, Bytes, BytesLike, concat, hexDataSlice, isHexString, joinSignature, SignatureLike } from \"@ethersproject/bytes\";\nimport { hashMessage, _TypedDataEncoder } from \"@ethersproject/hash\";\nimport { defaultPath, HDNode, entropyToMnemonic, Mnemonic } from \"@ethersproject/hdnode\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { defineReadOnly, resolveProperties } from \"@ethersproject/properties\";\nimport { randomBytes } from \"@ethersproject/random\";\nimport { SigningKey } from \"@ethersproject/signing-key\";\nimport { decryptJsonWallet, decryptJsonWalletSync, encryptKeystore, ProgressCallback } from \"@ethersproject/json-wallets\";\nimport { computeAddress, recoverAddress, serialize, UnsignedTransaction } from \"@ethersproject/transactions\";\nimport { Wordlist } from \"@ethersproject/wordlists\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nfunction isAccount(value: any): value is ExternallyOwnedAccount {\n return (value != null && isHexString(value.privateKey, 32) && value.address != null);\n}\n\nfunction hasMnemonic(value: any): value is { mnemonic: Mnemonic } {\n const mnemonic = value.mnemonic;\n return (mnemonic && mnemonic.phrase);\n}\n\nexport class Wallet extends Signer implements ExternallyOwnedAccount, TypedDataSigner {\n\n readonly address: string;\n readonly provider: Provider;\n\n // Wrapping the _signingKey and _mnemonic in a getter function prevents\n // leaking the private key in console.log; still, be careful! :)\n readonly _signingKey: () => SigningKey;\n readonly _mnemonic: () => Mnemonic;\n\n constructor(privateKey: BytesLike | ExternallyOwnedAccount | SigningKey, provider?: Provider) {\n super();\n\n if (isAccount(privateKey)) {\n const signingKey = new SigningKey(privateKey.privateKey);\n defineReadOnly(this, \"_signingKey\", () => signingKey);\n defineReadOnly(this, \"address\", computeAddress(this.publicKey));\n\n if (this.address !== getAddress(privateKey.address)) {\n logger.throwArgumentError(\"privateKey/address mismatch\", \"privateKey\", \"[REDACTED]\");\n }\n\n if (hasMnemonic(privateKey)) {\n const srcMnemonic = privateKey.mnemonic;\n defineReadOnly(this, \"_mnemonic\", () => (\n {\n phrase: srcMnemonic.phrase,\n path: srcMnemonic.path || defaultPath,\n locale: srcMnemonic.locale || \"en\"\n }\n ));\n const mnemonic = this.mnemonic;\n const node = HDNode.fromMnemonic(mnemonic.phrase, null, mnemonic.locale).derivePath(mnemonic.path);\n if (computeAddress(node.privateKey) !== this.address) {\n logger.throwArgumentError(\"mnemonic/address mismatch\", \"privateKey\", \"[REDACTED]\");\n }\n } else {\n defineReadOnly(this, \"_mnemonic\", (): Mnemonic => null);\n }\n\n\n } else {\n if (SigningKey.isSigningKey(privateKey)) {\n /* istanbul ignore if */\n if (privateKey.curve !== \"secp256k1\") {\n logger.throwArgumentError(\"unsupported curve; must be secp256k1\", \"privateKey\", \"[REDACTED]\");\n }\n defineReadOnly(this, \"_signingKey\", () => (<SigningKey>privateKey));\n\n } else {\n // A lot of common tools do not prefix private keys with a 0x (see: #1166)\n if (typeof(privateKey) === \"string\") {\n if (privateKey.match(/^[0-9a-f]*$/i) && privateKey.length === 64) {\n privateKey = \"0x\" + privateKey;\n }\n }\n\n const signingKey = new SigningKey(privateKey);\n defineReadOnly(this, \"_signingKey\", () => signingKey);\n }\n\n defineReadOnly(this, \"_mnemonic\", (): Mnemonic => null);\n defineReadOnly(this, \"address\", computeAddress(this.publicKey));\n }\n\n /* istanbul ignore if */\n if (provider && !Provider.isProvider(provider)) {\n logger.throwArgumentError(\"invalid provider\", \"provider\", provider);\n }\n\n defineReadOnly(this, \"provider\", provider || null);\n }\n\n get mnemonic(): Mnemonic { return this._mnemonic(); }\n get privateKey(): string { return this._signingKey().privateKey; }\n get publicKey(): string { return this._signingKey().publicKey; }\n\n getAddress(): Promise<string> {\n return Promise.resolve(this.address);\n }\n\n connect(provider: Provider): Wallet {\n return new Wallet(this, provider);\n }\n\n signTransaction(transaction: TransactionRequest): Promise<string> {\n return resolveProperties(transaction).then((tx) => {\n if (tx.from != null) {\n if (getAddress(tx.from) !== this.address) {\n logger.throwArgumentError(\"transaction from address mismatch\", \"transaction.from\", transaction.from);\n }\n delete tx.from;\n }\n\n const signature = this._signingKey().signDigest(keccak256(serialize(<UnsignedTransaction>tx)));\n return serialize(<UnsignedTransaction>tx, signature);\n });\n }\n\n async signMessage(message: Bytes | string): Promise<string> {\n return joinSignature(this._signingKey().signDigest(hashMessage(message)));\n }\n\n async _signTypedData(domain: TypedDataDomain, types: Record<string, Array<TypedDataField>>, value: Record<string, any>): Promise<string> {\n // Populate any ENS names\n const populated = await _TypedDataEncoder.resolveNames(domain, types, value, (name: string) => {\n if (this.provider == null) {\n logger.throwError(\"cannot resolve ENS names without a provider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"resolveName\",\n value: name\n });\n }\n return this.provider.resolveName(name);\n });\n\n return joinSignature(this._signingKey().signDigest(_TypedDataEncoder.hash(populated.domain, types, populated.value)));\n }\n\n encrypt(password: Bytes | string, options?: any, progressCallback?: ProgressCallback): Promise<string> {\n if (typeof(options) === \"function\" && !progressCallback) {\n progressCallback = options;\n options = {};\n }\n\n if (progressCallback && typeof(progressCallback) !== \"function\") {\n throw new Error(\"invalid callback\");\n }\n\n if (!options) { options = {}; }\n\n return encryptKeystore(this, password, options, progressCallback);\n }\n\n\n /**\n * Static methods to create Wallet instances.\n */\n static createRandom(options?: any): Wallet {\n let entropy: Uint8Array = randomBytes(16);\n\n if (!options) { options = { }; }\n\n if (options.extraEntropy) {\n entropy = arrayify(hexDataSlice(keccak256(concat([ entropy, options.extraEntropy ])), 0, 16));\n }\n\n const mnemonic = entropyToMnemonic(entropy, options.locale);\n return Wallet.fromMnemonic(mnemonic, options.path, options.locale);\n }\n\n static fromEncryptedJson(json: string, password: Bytes | string, progressCallback?: ProgressCallback): Promise<Wallet> {\n return decryptJsonWallet(json, password, progressCallback).then((account) => {\n return new Wallet(account);\n });\n }\n\n static fromEncryptedJsonSync(json: string, password: Bytes | string): Wallet {\n return new Wallet(decryptJsonWalletSync(json, password));\n }\n\n static fromMnemonic(mnemonic: string, path?: string, wordlist?: Wordlist): Wallet {\n if (!path) { path = defaultPath; }\n return new Wallet(HDNode.fromMnemonic(mnemonic, null, wordlist).derivePath(path));\n }\n}\n\nexport function verifyMessage(message: Bytes | string, signature: SignatureLike): string {\n return recoverAddress(hashMessage(message), signature);\n}\n\nexport function verifyTypedData(domain: TypedDataDomain, types: Record<string, Array<TypedDataField>>, value: Record<string, any>, signature: SignatureLike): string {\n return recoverAddress(_TypedDataEncoder.hash(domain, types, value), signature);\n}\n","export const version = \"networks/5.8.0\";\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { Network, Networkish } from \"./types\";\n\nexport {\n Network,\n Networkish\n};\n\ntype DefaultProviderFunc = (providers: any, options?: any) => any;\n\ninterface Renetworkable extends DefaultProviderFunc {\n renetwork: (network: Network) => DefaultProviderFunc;\n};\n\nfunction isRenetworkable(value: any): value is Renetworkable {\n return (value && typeof(value.renetwork) === \"function\");\n}\n\nfunction ethDefaultProvider(network: string | Network): Renetworkable {\n const func = function(providers: any, options?: any): any {\n if (options == null) { options = { }; }\n const providerList: Array<any> = [];\n\n if (providers.InfuraProvider && options.infura !== \"-\") {\n try {\n providerList.push(new providers.InfuraProvider(network, options.infura));\n } catch(error) { }\n }\n\n if (providers.EtherscanProvider && options.etherscan !== \"-\") {\n try {\n providerList.push(new providers.EtherscanProvider(network, options.etherscan));\n } catch(error) { }\n }\n\n if (providers.AlchemyProvider && options.alchemy !== \"-\") {\n try {\n providerList.push(new providers.AlchemyProvider(network, options.alchemy));\n } catch(error) { }\n }\n\n if (providers.PocketProvider && options.pocket !== \"-\") {\n // These networks are currently faulty on Pocket as their\n // network does not handle the Berlin hardfork, which is\n // live on these ones.\n // @TODO: This goes away once Pocket has upgraded their nodes\n const skip = [ \"goerli\", \"ropsten\", \"rinkeby\", \"sepolia\" ];\n try {\n const provider = new providers.PocketProvider(network, options.pocket);\n if (provider.network && skip.indexOf(provider.network.name) === -1) {\n providerList.push(provider);\n }\n } catch(error) { }\n }\n\n if (providers.CloudflareProvider && options.cloudflare !== \"-\") {\n try {\n providerList.push(new providers.CloudflareProvider(network));\n } catch(error) { }\n }\n\n if (providers.AnkrProvider && options.ankr !== \"-\") {\n try {\n const skip = [ \"ropsten\" ];\n const provider = new providers.AnkrProvider(network, options.ankr);\n if (provider.network && skip.indexOf(provider.network.name) === -1) {\n providerList.push(provider);\n }\n } catch(error) { }\n }\n\n if (providers.QuickNodeProvider && options.quicknode !== \"-\") {\n try {\n providerList.push(new providers.QuickNodeProvider(network, options.quicknode));\n } catch(error) { }\n }\n\n if (providerList.length === 0) { return null; }\n\n if (providers.FallbackProvider) {\n let quorum = 1;\n if (options.quorum != null) {\n quorum = options.quorum;\n } else if (network === \"homestead\") {\n quorum = 2;\n }\n return new providers.FallbackProvider(providerList, quorum);\n }\n\n return providerList[0];\n };\n\n func.renetwork = function(network: Network) {\n return ethDefaultProvider(network);\n };\n\n return func;\n}\n\nfunction etcDefaultProvider(url: string, network: string | Network): Renetworkable {\n const func = function(providers: any, options?: any): any {\n if (providers.JsonRpcProvider) {\n return new providers.JsonRpcProvider(url, network);\n }\n\n return null;\n };\n\n func.renetwork = function(network: Network) {\n return etcDefaultProvider(url, network);\n };\n\n return func;\n}\n\nconst homestead: Network = {\n chainId: 1,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"homestead\",\n _defaultProvider: ethDefaultProvider(\"homestead\")\n};\n\nconst ropsten: Network = {\n chainId: 3,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"ropsten\",\n _defaultProvider: ethDefaultProvider(\"ropsten\")\n};\n\nconst classicMordor: Network = {\n chainId: 63,\n name: \"classicMordor\",\n _defaultProvider: etcDefaultProvider(\"https://www.ethercluster.com/mordor\", \"classicMordor\")\n};\n\n// See: https://chainlist.org\nconst networks: { [name: string]: Network } = {\n unspecified: { chainId: 0, name: \"unspecified\" },\n\n homestead: homestead,\n mainnet: homestead,\n\n morden: { chainId: 2, name: \"morden\" },\n\n ropsten: ropsten,\n testnet: ropsten,\n\n rinkeby: {\n chainId: 4,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"rinkeby\",\n _defaultProvider: ethDefaultProvider(\"rinkeby\")\n },\n\n kovan: {\n chainId: 42,\n name: \"kovan\",\n _defaultProvider: ethDefaultProvider(\"kovan\")\n },\n\n goerli: {\n chainId: 5,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"goerli\",\n _defaultProvider: ethDefaultProvider(\"goerli\")\n },\n\n kintsugi: { chainId: 1337702, name: \"kintsugi\" },\n\n sepolia: {\n chainId: 11155111,\n name: \"sepolia\",\n _defaultProvider: ethDefaultProvider(\"sepolia\")\n },\n\n holesky: {\n chainId: 17000,\n name: \"holesky\",\n _defaultProvider: ethDefaultProvider(\"holesky\")\n },\n\n // ETC (See: #351)\n classic: {\n chainId: 61,\n name: \"classic\",\n _defaultProvider: etcDefaultProvider(\"https:/\\/www.ethercluster.com/etc\", \"classic\")\n },\n\n classicMorden: { chainId: 62, name: \"classicMorden\" },\n\n classicMordor: classicMordor,\n classicTestnet: classicMordor,\n\n classicKotti: {\n chainId: 6,\n name: \"classicKotti\",\n _defaultProvider: etcDefaultProvider(\"https:/\\/www.ethercluster.com/kotti\", \"classicKotti\")\n },\n\n xdai: { chainId: 100, name: \"xdai\" },\n\n matic: {\n chainId: 137,\n name: \"matic\",\n _defaultProvider: ethDefaultProvider(\"matic\")\n },\n maticmum: {\n chainId: 80001,\n name: \"maticmum\",\n _defaultProvider: ethDefaultProvider(\"maticmum\")\n },\n\n optimism: {\n chainId: 10,\n name: \"optimism\",\n _defaultProvider: ethDefaultProvider(\"optimism\")\n },\n \"optimism-kovan\": { chainId: 69, name: \"optimism-kovan\" },\n \"optimism-goerli\": { chainId: 420, name: \"optimism-goerli\" },\n \"optimism-sepolia\": { chainId: 11155420, name: \"optimism-sepolia\" },\n\n arbitrum: { chainId: 42161, name: \"arbitrum\" },\n \"arbitrum-rinkeby\": { chainId: 421611, name: \"arbitrum-rinkeby\" },\n \"arbitrum-goerli\": { chainId: 421613, name: \"arbitrum-goerli\" },\n \"arbitrum-sepolia\": { chainId: 421614, name: \"arbitrum-sepolia\" },\n\n bnb: { chainId: 56, name: \"bnb\" },\n bnbt: { chainId: 97, name: \"bnbt\" },\n}\n\n/**\n * getNetwork\n *\n * Converts a named common networks or chain ID (network ID) to a Network\n * and verifies a network is a valid Network..\n */\nexport function getNetwork(network: Networkish): Network {\n // No network (null)\n if (network == null) { return null; }\n\n if (typeof(network) === \"number\") {\n for (const name in networks) {\n const standard = networks[name];\n if (standard.chainId === network) {\n return {\n name: standard.name,\n chainId: standard.chainId,\n ensAddress: (standard.ensAddress || null),\n _defaultProvider: (standard._defaultProvider || null)\n };\n }\n }\n\n return {\n chainId: network,\n name: \"unknown\"\n };\n }\n\n if (typeof(network) === \"string\") {\n const standard = networks[network];\n if (standard == null) { return null; }\n return {\n name: standard.name,\n chainId: standard.chainId,\n ensAddress: standard.ensAddress,\n _defaultProvider: (standard._defaultProvider || null)\n };\n }\n\n const standard = networks[network.name];\n\n // Not a standard network; check that it is a valid network in general\n if (!standard) {\n if (typeof(network.chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid network chainId\", \"network\", network);\n }\n return network;\n }\n\n // Make sure the chainId matches the expected network chainId (or is 0; disable EIP-155)\n if (network.chainId !== 0 && network.chainId !== standard.chainId) {\n logger.throwArgumentError(\"network chainId mismatch\", \"network\", network);\n }\n\n // @TODO: In the next major version add an attach function to a defaultProvider\n // class and move the _defaultProvider internal to this file (extend Network)\n let defaultProvider: DefaultProviderFunc = network._defaultProvider || null;\n if (defaultProvider == null && standard._defaultProvider) {\n if (isRenetworkable(standard._defaultProvider)) {\n defaultProvider = standard._defaultProvider.renetwork(network);\n } else {\n defaultProvider = standard._defaultProvider;\n }\n }\n\n // Standard Network (allow overriding the ENS address)\n return {\n name: network.name,\n chainId: standard.chainId,\n ensAddress: (network.ensAddress || standard.ensAddress || null),\n _defaultProvider: defaultProvider\n };\n}\n","export const version = \"web/5.8.0\";\n","\"use strict\";\n\nimport { arrayify } from \"@ethersproject/bytes\";\n\nimport type { GetUrlResponse, Options } from \"./types\";\n\nexport { GetUrlResponse, Options };\n\nexport async function getUrl(href: string, options?: Options): Promise<GetUrlResponse> {\n if (options == null) { options = { }; }\n\n const request: RequestInit = {\n method: (options.method || \"GET\"),\n headers: (options.headers || { }),\n body: (options.body || undefined),\n };\n\n if (options.skipFetchSetup !== true) {\n request.mode = <RequestMode>\"cors\"; // no-cors, cors, *same-origin\n request.cache = <RequestCache>\"no-cache\"; // *default, no-cache, reload, force-cache, only-if-cached\n request.credentials = <RequestCredentials>\"same-origin\"; // include, *same-origin, omit\n request.redirect = <RequestRedirect>\"follow\"; // manual, *follow, error\n request.referrer = \"client\"; // no-referrer, *client\n };\n\n if (options.fetchOptions != null) {\n const opts = options.fetchOptions;\n if (opts.mode) { request.mode = <RequestMode>(opts.mode); }\n if (opts.cache) { request.cache = <RequestCache>(opts.cache); }\n if (opts.credentials) { request.credentials = <RequestCredentials>(opts.credentials); }\n if (opts.redirect) { request.redirect = <RequestRedirect>(opts.redirect); }\n if (opts.referrer) { request.referrer = opts.referrer; }\n }\n\n const response = await fetch(href, request);\n const body = await response.arrayBuffer();\n\n const headers: { [ name: string ]: string } = { };\n if (response.headers.forEach) {\n response.headers.forEach((value, key) => {\n headers[key.toLowerCase()] = value;\n });\n } else {\n (<() => Array<string>>((<any>(response.headers)).keys))().forEach((key) => {\n headers[key.toLowerCase()] = response.headers.get(key);\n });\n }\n\n return {\n headers: headers,\n statusCode: response.status,\n statusMessage: response.statusText,\n body: arrayify(new Uint8Array(body)),\n }\n}\n","\"use strict\";\n\nimport { decode as base64Decode, encode as base64Encode } from \"@ethersproject/base64\";\nimport { hexlify, isBytesLike } from \"@ethersproject/bytes\";\nimport { shallowCopy } from \"@ethersproject/properties\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { getUrl, GetUrlResponse, Options } from \"./geturl\";\n\nfunction staller(duration: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, duration);\n });\n}\n\nfunction bodyify(value: any, type: string): string {\n if (value == null) { return null; }\n\n if (typeof(value) === \"string\") { return value; }\n\n if (isBytesLike(value)) {\n if (type && (type.split(\"/\")[0] === \"text\" || type.split(\";\")[0].trim() === \"application/json\")) {\n try {\n return toUtf8String(value);\n } catch (error) { };\n }\n return hexlify(value);\n }\n\n return value;\n}\n\n// Exported Types\nexport type ConnectionInfo = {\n url: string,\n headers?: { [key: string]: string | number }\n\n user?: string,\n password?: string,\n\n allowInsecureAuthentication?: boolean,\n allowGzip?: boolean,\n\n throttleLimit?: number,\n throttleSlotInterval?: number;\n throttleCallback?: (attempt: number, url: string) => Promise<boolean>,\n\n skipFetchSetup?: boolean;\n fetchOptions?: Record<string, string>;\n errorPassThrough?: boolean;\n\n timeout?: number,\n};\n\nexport interface OnceBlockable {\n once(eventName: \"block\", handler: () => void): void;\n}\n\nexport interface OncePollable {\n once(eventName: \"poll\", handler: () => void): void;\n}\n\nexport type PollOptions = {\n timeout?: number,\n floor?: number,\n ceiling?: number,\n interval?: number,\n retryLimit?: number,\n onceBlock?: OnceBlockable\n oncePoll?: OncePollable\n};\n\nexport type FetchJsonResponse = {\n statusCode: number;\n headers: { [ header: string ]: string };\n};\n\n\ntype Header = { key: string, value: string };\n\nfunction unpercent(value: string): Uint8Array {\n return toUtf8Bytes(value.replace(/%([0-9a-f][0-9a-f])/gi, (all, code) => {\n return String.fromCharCode(parseInt(code, 16));\n }));\n}\n\n// This API is still a work in progress; the future changes will likely be:\n// - ConnectionInfo => FetchDataRequest<T = any>\n// - FetchDataRequest.body? = string | Uint8Array | { contentType: string, data: string | Uint8Array }\n// - If string => text/plain, Uint8Array => application/octet-stream (if content-type unspecified)\n// - FetchDataRequest.processFunc = (body: Uint8Array, response: FetchDataResponse) => T\n// For this reason, it should be considered internal until the API is finalized\nexport function _fetchData<T = Uint8Array>(connection: string | ConnectionInfo, body?: Uint8Array, processFunc?: (value: Uint8Array, response: FetchJsonResponse) => T): Promise<T> {\n\n // How many times to retry in the event of a throttle\n const attemptLimit = (typeof(connection) === \"object\" && connection.throttleLimit != null) ? connection.throttleLimit: 12;\n logger.assertArgument((attemptLimit > 0 && (attemptLimit % 1) === 0),\n \"invalid connection throttle limit\", \"connection.throttleLimit\", attemptLimit);\n\n const throttleCallback = ((typeof(connection) === \"object\") ? connection.throttleCallback: null);\n const throttleSlotInterval = ((typeof(connection) === \"object\" && typeof(connection.throttleSlotInterval) === \"number\") ? connection.throttleSlotInterval: 100);\n logger.assertArgument((throttleSlotInterval > 0 && (throttleSlotInterval % 1) === 0),\n \"invalid connection throttle slot interval\", \"connection.throttleSlotInterval\", throttleSlotInterval);\n\n const errorPassThrough = ((typeof(connection) === \"object\") ? !!(connection.errorPassThrough): false);\n\n const headers: { [key: string]: Header } = { };\n\n let url: string = null;\n\n // @TODO: Allow ConnectionInfo to override some of these values\n const options: Options = {\n method: \"GET\",\n };\n\n let allow304 = false;\n\n let timeout = 2 * 60 * 1000;\n\n if (typeof(connection) === \"string\") {\n url = connection;\n\n } else if (typeof(connection) === \"object\") {\n if (connection == null || connection.url == null) {\n logger.throwArgumentError(\"missing URL\", \"connection.url\", connection);\n }\n\n url = connection.url;\n\n if (typeof(connection.timeout) === \"number\" && connection.timeout > 0) {\n timeout = connection.timeout;\n }\n\n if (connection.headers) {\n for (const key in connection.headers) {\n headers[key.toLowerCase()] = { key: key, value: String(connection.headers[key]) };\n if ([\"if-none-match\", \"if-modified-since\"].indexOf(key.toLowerCase()) >= 0) {\n allow304 = true;\n }\n }\n }\n\n options.allowGzip = !!connection.allowGzip;\n\n if (connection.user != null && connection.password != null) {\n if (url.substring(0, 6) !== \"https:\" && connection.allowInsecureAuthentication !== true) {\n logger.throwError(\n \"basic authentication requires a secure https url\",\n Logger.errors.INVALID_ARGUMENT,\n { argument: \"url\", url: url, user: connection.user, password: \"[REDACTED]\" }\n );\n }\n\n const authorization = connection.user + \":\" + connection.password;\n headers[\"authorization\"] = {\n key: \"Authorization\",\n value: \"Basic \" + base64Encode(toUtf8Bytes(authorization))\n };\n }\n\n if (connection.skipFetchSetup != null) {\n options.skipFetchSetup = !!connection.skipFetchSetup;\n }\n\n if (connection.fetchOptions != null) {\n options.fetchOptions = shallowCopy(connection.fetchOptions);\n }\n }\n\n const reData = new RegExp(\"^data:([^;:]*)?(;base64)?,(.*)$\", \"i\");\n const dataMatch = ((url) ? url.match(reData): null);\n if (dataMatch) {\n try {\n const response = {\n statusCode: 200,\n statusMessage: \"OK\",\n headers: { \"content-type\": (dataMatch[1] || \"text/plain\")},\n body: (dataMatch[2] ? base64Decode(dataMatch[3]): unpercent(dataMatch[3]))\n };\n\n let result: T = <T><unknown>response.body;\n if (processFunc) {\n result = processFunc(response.body, response);\n }\n return Promise.resolve(<T><unknown>result);\n\n } catch (error) {\n logger.throwError(\"processing response error\", Logger.errors.SERVER_ERROR, {\n body: bodyify(dataMatch[1], dataMatch[2]),\n error: error,\n requestBody: null,\n requestMethod: \"GET\",\n url: url\n });\n }\n }\n\n if (body) {\n options.method = \"POST\";\n options.body = body;\n if (headers[\"content-type\"] == null) {\n headers[\"content-type\"] = { key: \"Content-Type\", value: \"application/octet-stream\" };\n }\n if (headers[\"content-length\"] == null) {\n headers[\"content-length\"] = { key: \"Content-Length\", value: String(body.length) };\n }\n }\n\n const flatHeaders: { [ key: string ]: string } = { };\n Object.keys(headers).forEach((key) => {\n const header = headers[key];\n flatHeaders[header.key] = header.value;\n });\n options.headers = flatHeaders;\n\n const runningTimeout = (function() {\n let timer: NodeJS.Timer = null;\n const promise: Promise<never> = new Promise(function(resolve, reject) {\n if (timeout) {\n timer = setTimeout(() => {\n if (timer == null) { return; }\n timer = null;\n\n reject(logger.makeError(\"timeout\", Logger.errors.TIMEOUT, {\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n timeout: timeout,\n url: url\n }));\n }, timeout);\n }\n });\n\n const cancel = function() {\n if (timer == null) { return; }\n clearTimeout(timer);\n timer = null;\n }\n\n return { promise, cancel };\n })();\n\n const runningFetch = (async function() {\n\n for (let attempt = 0; attempt < attemptLimit; attempt++) {\n let response: GetUrlResponse = null;\n\n try {\n response = await getUrl(url, options);\n\n if (attempt < attemptLimit) {\n if (response.statusCode === 301 || response.statusCode === 302) {\n // Redirection; for now we only support absolute locataions\n const location = response.headers.location || \"\";\n if (options.method === \"GET\" && location.match(/^https:/)) {\n url = response.headers.location;\n continue;\n }\n\n } else if (response.statusCode === 429) {\n // Exponential back-off throttling\n let tryAgain = true;\n if (throttleCallback) {\n tryAgain = await throttleCallback(attempt, url);\n }\n\n if (tryAgain) {\n let stall = 0;\n\n const retryAfter = response.headers[\"retry-after\"];\n if (typeof(retryAfter) === \"string\" && retryAfter.match(/^[1-9][0-9]*$/)) {\n stall = parseInt(retryAfter) * 1000;\n } else {\n stall = throttleSlotInterval * parseInt(String(Math.random() * Math.pow(2, attempt)));\n }\n\n //console.log(\"Stalling 429\");\n await staller(stall);\n continue;\n }\n }\n }\n\n } catch (error) {\n response = (<any>error).response;\n if (response == null) {\n runningTimeout.cancel();\n logger.throwError(\"missing response\", Logger.errors.SERVER_ERROR, {\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n serverError: error,\n url: url\n });\n }\n }\n\n\n let body = response.body;\n\n if (allow304 && response.statusCode === 304) {\n body = null;\n } else if (!errorPassThrough && (response.statusCode < 200 || response.statusCode >= 300)) {\n runningTimeout.cancel();\n logger.throwError(\"bad response\", Logger.errors.SERVER_ERROR, {\n status: response.statusCode,\n headers: response.headers,\n body: bodyify(body, ((response.headers) ? response.headers[\"content-type\"]: null)),\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n url: url\n });\n }\n\n if (processFunc) {\n try {\n const result = await processFunc(body, response);\n runningTimeout.cancel();\n return result;\n\n } catch (error) {\n // Allow the processFunc to trigger a throttle\n if (error.throttleRetry && attempt < attemptLimit) {\n let tryAgain = true;\n if (throttleCallback) {\n tryAgain = await throttleCallback(attempt, url);\n }\n\n if (tryAgain) {\n const timeout = throttleSlotInterval * parseInt(String(Math.random() * Math.pow(2, attempt)));\n //console.log(\"Stalling callback\");\n await staller(timeout);\n continue;\n }\n }\n\n runningTimeout.cancel();\n logger.throwError(\"processing response error\", Logger.errors.SERVER_ERROR, {\n body: bodyify(body, ((response.headers) ? response.headers[\"content-type\"]: null)),\n error: error,\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n url: url\n });\n }\n }\n\n runningTimeout.cancel();\n\n // If we had a processFunc, it either returned a T or threw above.\n // The \"body\" is now a Uint8Array.\n return <T>(<unknown>body);\n }\n\n return logger.throwError(\"failed response\", Logger.errors.SERVER_ERROR, {\n requestBody: bodyify(options.body, flatHeaders[\"content-type\"]),\n requestMethod: options.method,\n url: url\n });\n })();\n\n return Promise.race([ runningTimeout.promise, runningFetch ]);\n}\n\nexport function fetchJson(connection: string | ConnectionInfo, json?: string, processFunc?: (value: any, response: FetchJsonResponse) => any): Promise<any> {\n let processJsonFunc = (value: Uint8Array, response: FetchJsonResponse) => {\n let result: any = null;\n if (value != null) {\n try {\n result = JSON.parse(toUtf8String(value));\n } catch (error) {\n logger.throwError(\"invalid JSON\", Logger.errors.SERVER_ERROR, {\n body: value,\n error: error\n });\n }\n }\n\n if (processFunc) {\n result = processFunc(result, response);\n }\n\n return result;\n }\n\n // If we have json to send, we must\n // - add content-type of application/json (unless already overridden)\n // - convert the json to bytes\n let body: Uint8Array = null;\n if (json != null) {\n body = toUtf8Bytes(json);\n\n // Create a connection with the content-type set for JSON\n const updated: ConnectionInfo = (typeof(connection) === \"string\") ? ({ url: connection }): shallowCopy(connection);\n if (updated.headers) {\n const hasContentType = (Object.keys(updated.headers).filter((k) => (k.toLowerCase() === \"content-type\")).length) !== 0;\n if (!hasContentType) {\n updated.headers = shallowCopy(updated.headers);\n updated.headers[\"content-type\"] = \"application/json\";\n }\n } else {\n updated.headers = { \"content-type\": \"application/json\" };\n }\n connection = updated;\n }\n\n return _fetchData<any>(connection, body, processJsonFunc);\n}\n\nexport function poll<T>(func: () => Promise<T>, options?: PollOptions): Promise<T> {\n if (!options) { options = {}; }\n options = shallowCopy(options);\n if (options.floor == null) { options.floor = 0; }\n if (options.ceiling == null) { options.ceiling = 10000; }\n if (options.interval == null) { options.interval = 250; }\n\n return new Promise(function(resolve, reject) {\n\n let timer: NodeJS.Timer = null;\n let done: boolean = false;\n\n // Returns true if cancel was successful. Unsuccessful cancel means we're already done.\n const cancel = (): boolean => {\n if (done) { return false; }\n done = true;\n if (timer) { clearTimeout(timer); }\n return true;\n };\n\n if (options.timeout) {\n timer = setTimeout(() => {\n if (cancel()) { reject(new Error(\"timeout\")); }\n }, options.timeout)\n }\n\n const retryLimit = options.retryLimit;\n\n let attempt = 0;\n function check() {\n return func().then(function(result) {\n\n // If we have a result, or are allowed null then we're done\n if (result !== undefined) {\n if (cancel()) { resolve(result); }\n\n } else if (options.oncePoll) {\n options.oncePoll.once(\"poll\", check);\n\n } else if (options.onceBlock) {\n options.onceBlock.once(\"block\", check);\n\n // Otherwise, exponential back-off (up to 10s) our next request\n } else if (!done) {\n attempt++;\n if (attempt > retryLimit) {\n if (cancel()) { reject(new Error(\"retry limit reached\")); }\n return;\n }\n\n let timeout = options.interval * parseInt(String(Math.random() * Math.pow(2, attempt)));\n if (timeout < options.floor) { timeout = options.floor; }\n if (timeout > options.ceiling) { timeout = options.ceiling; }\n\n setTimeout(check, timeout);\n }\n\n return null;\n }, function(error) {\n if (cancel()) { reject(error); }\n });\n }\n check();\n });\n}\n\n","'use strict'\nvar ALPHABET = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l'\n\n// pre-compute lookup table\nvar ALPHABET_MAP = {}\nfor (var z = 0; z < ALPHABET.length; z++) {\n var x = ALPHABET.charAt(z)\n\n if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous')\n ALPHABET_MAP[x] = z\n}\n\nfunction polymodStep (pre) {\n var b = pre >> 25\n return ((pre & 0x1FFFFFF) << 5) ^\n (-((b >> 0) & 1) & 0x3b6a57b2) ^\n (-((b >> 1) & 1) & 0x26508e6d) ^\n (-((b >> 2) & 1) & 0x1ea119fa) ^\n (-((b >> 3) & 1) & 0x3d4233dd) ^\n (-((b >> 4) & 1) & 0x2a1462b3)\n}\n\nfunction prefixChk (prefix) {\n var chk = 1\n for (var i = 0; i < prefix.length; ++i) {\n var c = prefix.charCodeAt(i)\n if (c < 33 || c > 126) return 'Invalid prefix (' + prefix + ')'\n\n chk = polymodStep(chk) ^ (c >> 5)\n }\n chk = polymodStep(chk)\n\n for (i = 0; i < prefix.length; ++i) {\n var v = prefix.charCodeAt(i)\n chk = polymodStep(chk) ^ (v & 0x1f)\n }\n return chk\n}\n\nfunction encode (prefix, words, LIMIT) {\n LIMIT = LIMIT || 90\n if ((prefix.length + 7 + words.length) > LIMIT) throw new TypeError('Exceeds length limit')\n\n prefix = prefix.toLowerCase()\n\n // determine chk mod\n var chk = prefixChk(prefix)\n if (typeof chk === 'string') throw new Error(chk)\n\n var result = prefix + '1'\n for (var i = 0; i < words.length; ++i) {\n var x = words[i]\n if ((x >> 5) !== 0) throw new Error('Non 5-bit word')\n\n chk = polymodStep(chk) ^ x\n result += ALPHABET.charAt(x)\n }\n\n for (i = 0; i < 6; ++i) {\n chk = polymodStep(chk)\n }\n chk ^= 1\n\n for (i = 0; i < 6; ++i) {\n var v = (chk >> ((5 - i) * 5)) & 0x1f\n result += ALPHABET.charAt(v)\n }\n\n return result\n}\n\nfunction __decode (str, LIMIT) {\n LIMIT = LIMIT || 90\n if (str.length < 8) return str + ' too short'\n if (str.length > LIMIT) return 'Exceeds length limit'\n\n // don't allow mixed case\n var lowered = str.toLowerCase()\n var uppered = str.toUpperCase()\n if (str !== lowered && str !== uppered) return 'Mixed-case string ' + str\n str = lowered\n\n var split = str.lastIndexOf('1')\n if (split === -1) return 'No separator character for ' + str\n if (split === 0) return 'Missing prefix for ' + str\n\n var prefix = str.slice(0, split)\n var wordChars = str.slice(split + 1)\n if (wordChars.length < 6) return 'Data too short'\n\n var chk = prefixChk(prefix)\n if (typeof chk === 'string') return chk\n\n var words = []\n for (var i = 0; i < wordChars.length; ++i) {\n var c = wordChars.charAt(i)\n var v = ALPHABET_MAP[c]\n if (v === undefined) return 'Unknown character ' + c\n chk = polymodStep(chk) ^ v\n\n // not in the checksum?\n if (i + 6 >= wordChars.length) continue\n words.push(v)\n }\n\n if (chk !== 1) return 'Invalid checksum for ' + str\n return { prefix: prefix, words: words }\n}\n\nfunction decodeUnsafe () {\n var res = __decode.apply(null, arguments)\n if (typeof res === 'object') return res\n}\n\nfunction decode (str) {\n var res = __decode.apply(null, arguments)\n if (typeof res === 'object') return res\n\n throw new Error(res)\n}\n\nfunction convert (data, inBits, outBits, pad) {\n var value = 0\n var bits = 0\n var maxV = (1 << outBits) - 1\n\n var result = []\n for (var i = 0; i < data.length; ++i) {\n value = (value << inBits) | data[i]\n bits += inBits\n\n while (bits >= outBits) {\n bits -= outBits\n result.push((value >> bits) & maxV)\n }\n }\n\n if (pad) {\n if (bits > 0) {\n result.push((value << (outBits - bits)) & maxV)\n }\n } else {\n if (bits >= inBits) return 'Excess padding'\n if ((value << (outBits - bits)) & maxV) return 'Non-zero padding'\n }\n\n return result\n}\n\nfunction toWordsUnsafe (bytes) {\n var res = convert(bytes, 8, 5, true)\n if (Array.isArray(res)) return res\n}\n\nfunction toWords (bytes) {\n var res = convert(bytes, 8, 5, true)\n if (Array.isArray(res)) return res\n\n throw new Error(res)\n}\n\nfunction fromWordsUnsafe (words) {\n var res = convert(words, 5, 8, false)\n if (Array.isArray(res)) return res\n}\n\nfunction fromWords (words) {\n var res = convert(words, 5, 8, false)\n if (Array.isArray(res)) return res\n\n throw new Error(res)\n}\n\nmodule.exports = {\n decodeUnsafe: decodeUnsafe,\n decode: decode,\n encode: encode,\n toWordsUnsafe: toWordsUnsafe,\n toWords: toWords,\n fromWordsUnsafe: fromWordsUnsafe,\n fromWords: fromWords\n}\n","export const version = \"providers/5.8.0\";\n","\"use strict\";\n\nimport { Block, TransactionReceipt, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { getAddress, getContractAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { hexDataLength, hexDataSlice, hexValue, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { AddressZero } from \"@ethersproject/constants\";\nimport { shallowCopy } from \"@ethersproject/properties\";\nimport { AccessList, accessListify, parse as parseTransaction } from \"@ethersproject/transactions\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport type FormatFunc = (value: any) => any;\n\nexport type FormatFuncs = { [ key: string ]: FormatFunc };\n\nexport type Formats = {\n transaction: FormatFuncs,\n transactionRequest: FormatFuncs,\n receipt: FormatFuncs,\n receiptLog: FormatFuncs,\n block: FormatFuncs,\n blockWithTransactions: FormatFuncs,\n filter: FormatFuncs,\n filterLog: FormatFuncs,\n};\n\nexport class Formatter {\n readonly formats: Formats;\n\n constructor() {\n this.formats = this.getDefaultFormats();\n }\n\n getDefaultFormats(): Formats {\n const formats: Formats = <Formats>({ });\n\n const address = this.address.bind(this);\n const bigNumber = this.bigNumber.bind(this);\n const blockTag = this.blockTag.bind(this);\n const data = this.data.bind(this);\n const hash = this.hash.bind(this);\n const hex = this.hex.bind(this);\n const number = this.number.bind(this);\n const type = this.type.bind(this);\n\n const strictData = (v: any) => { return this.data(v, true); };\n\n formats.transaction = {\n hash: hash,\n\n type: type,\n accessList: Formatter.allowNull(this.accessList.bind(this), null),\n\n blockHash: Formatter.allowNull(hash, null),\n blockNumber: Formatter.allowNull(number, null),\n transactionIndex: Formatter.allowNull(number, null),\n\n confirmations: Formatter.allowNull(number, null),\n\n from: address,\n\n // either (gasPrice) or (maxPriorityFeePerGas + maxFeePerGas)\n // must be set\n gasPrice: Formatter.allowNull(bigNumber),\n maxPriorityFeePerGas: Formatter.allowNull(bigNumber),\n maxFeePerGas: Formatter.allowNull(bigNumber),\n\n gasLimit: bigNumber,\n to: Formatter.allowNull(address, null),\n value: bigNumber,\n nonce: number,\n data: data,\n\n r: Formatter.allowNull(this.uint256),\n s: Formatter.allowNull(this.uint256),\n v: Formatter.allowNull(number),\n\n creates: Formatter.allowNull(address, null),\n\n raw: Formatter.allowNull(data),\n };\n\n formats.transactionRequest = {\n from: Formatter.allowNull(address),\n nonce: Formatter.allowNull(number),\n gasLimit: Formatter.allowNull(bigNumber),\n gasPrice: Formatter.allowNull(bigNumber),\n maxPriorityFeePerGas: Formatter.allowNull(bigNumber),\n maxFeePerGas: Formatter.allowNull(bigNumber),\n to: Formatter.allowNull(address),\n value: Formatter.allowNull(bigNumber),\n data: Formatter.allowNull(strictData),\n type: Formatter.allowNull(number),\n accessList: Formatter.allowNull(this.accessList.bind(this), null),\n };\n\n formats.receiptLog = {\n transactionIndex: number,\n blockNumber: number,\n transactionHash: hash,\n address: address,\n topics: Formatter.arrayOf(hash),\n data: data,\n logIndex: number,\n blockHash: hash,\n };\n\n formats.receipt = {\n to: Formatter.allowNull(this.address, null),\n from: Formatter.allowNull(this.address, null),\n contractAddress: Formatter.allowNull(address, null),\n transactionIndex: number,\n // should be allowNull(hash), but broken-EIP-658 support is handled in receipt\n root: Formatter.allowNull(hex),\n gasUsed: bigNumber,\n logsBloom: Formatter.allowNull(data),// @TODO: should this be data?\n blockHash: hash,\n transactionHash: hash,\n logs: Formatter.arrayOf(this.receiptLog.bind(this)),\n blockNumber: number,\n confirmations: Formatter.allowNull(number, null),\n cumulativeGasUsed: bigNumber,\n effectiveGasPrice: Formatter.allowNull(bigNumber),\n status: Formatter.allowNull(number),\n type: type\n };\n\n formats.block = {\n hash: Formatter.allowNull(hash),\n parentHash: hash,\n number: number,\n\n timestamp: number,\n nonce: Formatter.allowNull(hex),\n difficulty: this.difficulty.bind(this),\n\n gasLimit: bigNumber,\n gasUsed: bigNumber,\n\n miner: Formatter.allowNull(address),\n extraData: data,\n\n transactions: Formatter.allowNull(Formatter.arrayOf(hash)),\n\n baseFeePerGas: Formatter.allowNull(bigNumber)\n };\n\n formats.blockWithTransactions = shallowCopy(formats.block);\n formats.blockWithTransactions.transactions = Formatter.allowNull(Formatter.arrayOf(this.transactionResponse.bind(this)));\n\n formats.filter = {\n fromBlock: Formatter.allowNull(blockTag, undefined),\n toBlock: Formatter.allowNull(blockTag, undefined),\n blockHash: Formatter.allowNull(hash, undefined),\n address: Formatter.allowNull(address, undefined),\n topics: Formatter.allowNull(this.topics.bind(this), undefined),\n };\n\n formats.filterLog = {\n blockNumber: Formatter.allowNull(number),\n blockHash: Formatter.allowNull(hash),\n transactionIndex: number,\n\n removed: Formatter.allowNull(this.boolean.bind(this)),\n\n address: address,\n data: Formatter.allowFalsish(data, \"0x\"),\n\n topics: Formatter.arrayOf(hash),\n\n transactionHash: hash,\n logIndex: number,\n };\n\n return formats;\n }\n\n accessList(accessList: Array<any>): AccessList {\n return accessListify(accessList || []);\n }\n\n // Requires a BigNumberish that is within the IEEE754 safe integer range; returns a number\n // Strict! Used on input.\n number(number: any): number {\n if (number === \"0x\") { return 0; }\n return BigNumber.from(number).toNumber();\n }\n\n type(number: any): number {\n if (number === \"0x\" || number == null) { return 0; }\n return BigNumber.from(number).toNumber();\n }\n\n // Strict! Used on input.\n bigNumber(value: any): BigNumber {\n return BigNumber.from(value);\n }\n\n // Requires a boolean, \"true\" or \"false\"; returns a boolean\n boolean(value: any): boolean {\n if (typeof(value) === \"boolean\") { return value; }\n if (typeof(value) === \"string\") {\n value = value.toLowerCase();\n if (value === \"true\") { return true; }\n if (value === \"false\") { return false; }\n }\n throw new Error(\"invalid boolean - \" + value);\n }\n\n hex(value: any, strict?: boolean): string {\n if (typeof(value) === \"string\") {\n if (!strict && value.substring(0, 2) !== \"0x\") { value = \"0x\" + value; }\n if (isHexString(value)) {\n return value.toLowerCase();\n }\n }\n return logger.throwArgumentError(\"invalid hash\", \"value\", value);\n }\n\n data(value: any, strict?: boolean): string {\n const result = this.hex(value, strict);\n if ((result.length % 2) !== 0) {\n throw new Error(\"invalid data; odd-length - \" + value);\n }\n return result;\n }\n\n // Requires an address\n // Strict! Used on input.\n address(value: any): string {\n return getAddress(value);\n }\n\n callAddress(value: any): string {\n if (!isHexString(value, 32)) { return null; }\n const address = getAddress(hexDataSlice(value, 12));\n return (address === AddressZero) ? null: address;\n }\n\n contractAddress(value: any): string {\n return getContractAddress(value);\n }\n\n // Strict! Used on input.\n blockTag(blockTag: any): string {\n if (blockTag == null) { return \"latest\"; }\n\n if (blockTag === \"earliest\") { return \"0x0\"; }\n\n switch (blockTag) {\n case \"earliest\": return \"0x0\";\n case \"latest\": case \"pending\": case \"safe\": case \"finalized\":\n return blockTag;\n }\n\n if (typeof(blockTag) === \"number\" || isHexString(blockTag)) {\n return hexValue(<number | string>blockTag);\n }\n\n throw new Error(\"invalid blockTag\");\n }\n\n // Requires a hash, optionally requires 0x prefix; returns prefixed lowercase hash.\n hash(value: any, strict?: boolean): string {\n const result = this.hex(value, strict);\n if (hexDataLength(result) !== 32) {\n return logger.throwArgumentError(\"invalid hash\", \"value\", value);\n }\n return result;\n }\n\n // Returns the difficulty as a number, or if too large (i.e. PoA network) null\n difficulty(value: any): number {\n if (value == null) { return null; }\n\n const v = BigNumber.from(value);\n\n try {\n return v.toNumber();\n } catch (error) { }\n\n return null;\n }\n\n uint256(value: any): string {\n if (!isHexString(value)) {\n throw new Error(\"invalid uint256\");\n }\n return hexZeroPad(value, 32);\n }\n\n _block(value: any, format: any): Block {\n if (value.author != null && value.miner == null) {\n value.miner = value.author;\n }\n // The difficulty may need to come from _difficulty in recursed blocks\n const difficulty = (value._difficulty != null) ? value._difficulty: value.difficulty;\n const result = Formatter.check(format, value);\n result._difficulty = ((difficulty == null) ? null: BigNumber.from(difficulty));\n return result;\n }\n\n block(value: any): Block {\n return this._block(value, this.formats.block);\n }\n\n blockWithTransactions(value: any): Block {\n return this._block(value, this.formats.blockWithTransactions);\n }\n\n // Strict! Used on input.\n transactionRequest(value: any): any {\n return Formatter.check(this.formats.transactionRequest, value);\n }\n\n transactionResponse(transaction: any): TransactionResponse {\n\n // Rename gas to gasLimit\n if (transaction.gas != null && transaction.gasLimit == null) {\n transaction.gasLimit = transaction.gas;\n }\n\n // Some clients (TestRPC) do strange things like return 0x0 for the\n // 0 address; correct this to be a real address\n if (transaction.to && BigNumber.from(transaction.to).isZero()) {\n transaction.to = \"0x0000000000000000000000000000000000000000\";\n }\n\n // Rename input to data\n if (transaction.input != null && transaction.data == null) {\n transaction.data = transaction.input;\n }\n\n // If to and creates are empty, populate the creates from the transaction\n if (transaction.to == null && transaction.creates == null) {\n transaction.creates = this.contractAddress(transaction);\n }\n\n if ((transaction.type === 1 || transaction.type === 2)&& transaction.accessList == null) {\n transaction.accessList = [ ];\n }\n\n const result: TransactionResponse = Formatter.check(this.formats.transaction, transaction);\n\n if (transaction.chainId != null) {\n let chainId = transaction.chainId;\n\n if (isHexString(chainId)) {\n chainId = BigNumber.from(chainId).toNumber();\n }\n\n result.chainId = chainId;\n\n } else {\n let chainId = transaction.networkId;\n\n // geth-etc returns chainId\n if (chainId == null && result.v == null) {\n chainId = transaction.chainId;\n }\n\n if (isHexString(chainId)) {\n chainId = BigNumber.from(chainId).toNumber();\n }\n\n if (typeof(chainId) !== \"number\" && result.v != null) {\n chainId = (result.v - 35) / 2;\n if (chainId < 0) { chainId = 0; }\n chainId = parseInt(chainId);\n }\n\n if (typeof(chainId) !== \"number\") { chainId = 0; }\n\n result.chainId = chainId;\n }\n\n // 0x0000... should actually be null\n if (result.blockHash && result.blockHash.replace(/0/g, \"\") === \"x\") {\n result.blockHash = null;\n }\n\n return result;\n }\n\n transaction(value: any): any {\n return parseTransaction(value);\n }\n\n receiptLog(value: any): any {\n return Formatter.check(this.formats.receiptLog, value);\n }\n\n receipt(value: any): TransactionReceipt {\n const result: TransactionReceipt = Formatter.check(this.formats.receipt, value);\n\n // RSK incorrectly implemented EIP-658, so we munge things a bit here for it\n if (result.root != null) {\n if (result.root.length <= 4) {\n // Could be 0x00, 0x0, 0x01 or 0x1\n const value = BigNumber.from(result.root).toNumber();\n if (value === 0 || value === 1) {\n // Make sure if both are specified, they match\n if (result.status != null && (result.status !== value)) {\n logger.throwArgumentError(\"alt-root-status/status mismatch\", \"value\", { root: result.root, status: result.status });\n }\n result.status = value;\n delete result.root;\n } else {\n logger.throwArgumentError(\"invalid alt-root-status\", \"value.root\", result.root);\n }\n } else if (result.root.length !== 66) {\n // Must be a valid bytes32\n logger.throwArgumentError(\"invalid root hash\", \"value.root\", result.root);\n }\n }\n\n if (result.status != null) {\n result.byzantium = true;\n }\n\n return result;\n }\n\n topics(value: any): any {\n if (Array.isArray(value)) {\n return value.map((v) => this.topics(v));\n\n } else if (value != null) {\n return this.hash(value, true);\n }\n\n return null;\n }\n\n filter(value: any): any {\n return Formatter.check(this.formats.filter, value);\n }\n\n filterLog(value: any): any {\n return Formatter.check(this.formats.filterLog, value);\n }\n\n static check(format: { [ name: string ]: FormatFunc }, object: any): any {\n const result: any = {};\n for (const key in format) {\n try {\n const value = format[key](object[key]);\n if (value !== undefined) { result[key] = value; }\n } catch (error) {\n error.checkKey = key;\n error.checkValue = object[key];\n throw error;\n }\n }\n return result;\n }\n\n // if value is null-ish, nullValue is returned\n static allowNull(format: FormatFunc, nullValue?: any): FormatFunc {\n return (function(value: any) {\n if (value == null) { return nullValue; }\n return format(value);\n });\n }\n\n // If value is false-ish, replaceValue is returned\n static allowFalsish(format: FormatFunc, replaceValue: any): FormatFunc {\n return (function(value: any) {\n if (!value) { return replaceValue; }\n return format(value);\n });\n }\n\n // Requires an Array satisfying check\n static arrayOf(format: FormatFunc): FormatFunc {\n return (function(array: any): Array<any> {\n if (!Array.isArray(array)) { throw new Error(\"not an array\"); }\n\n const result: any = [];\n\n array.forEach(function(value) {\n result.push(format(value));\n });\n\n return result;\n });\n }\n}\n\nexport interface CommunityResourcable {\n isCommunityResource(): boolean;\n}\n\nexport function isCommunityResourcable(value: any): value is CommunityResourcable {\n return (value && typeof(value.isCommunityResource) === \"function\");\n}\n\nexport function isCommunityResource(value: any): boolean {\n return (isCommunityResourcable(value) && value.isCommunityResource());\n}\n\n// Show the throttle message only once\nlet throttleMessage = false;\nexport function showThrottleMessage() {\n if (throttleMessage) { return; }\n throttleMessage = true;\n\n console.log(\"========= NOTICE =========\")\n console.log(\"Request-Rate Exceeded (this message will not be repeated)\");\n console.log(\"\");\n console.log(\"The default API keys for each service are provided as a highly-throttled,\");\n console.log(\"community resource for low-traffic projects and early prototyping.\");\n console.log(\"\");\n console.log(\"While your application will continue to function, we highly recommended\");\n console.log(\"signing up for your own API keys to improve performance, increase your\");\n console.log(\"request rate/limit and enable other perks, such as metrics and advanced APIs.\");\n console.log(\"\");\n console.log(\"For more details: https:/\\/docs.ethers.io/api-keys/\");\n console.log(\"==========================\");\n}\n\n","\"use strict\";\n\nimport {\n Block, BlockTag, BlockWithTransactions, EventType, Filter, FilterByBlockHash, ForkEvent,\n Listener, Log, Provider, TransactionReceipt, TransactionRequest, TransactionResponse\n} from \"@ethersproject/abstract-provider\";\nimport { encode as base64Encode } from \"@ethersproject/base64\";\nimport { Base58 } from \"@ethersproject/basex\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, concat, hexConcat, hexDataLength, hexDataSlice, hexlify, hexValue, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { HashZero } from \"@ethersproject/constants\";\nimport { dnsEncode, namehash } from \"@ethersproject/hash\";\nimport { getNetwork, Network, Networkish } from \"@ethersproject/networks\";\nimport { Deferrable, defineReadOnly, getStatic, resolveProperties } from \"@ethersproject/properties\";\nimport { Transaction } from \"@ethersproject/transactions\";\nimport { sha256 } from \"@ethersproject/sha2\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { fetchJson, poll } from \"@ethersproject/web\";\n\nimport bech32 from \"bech32\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { Formatter } from \"./formatter\";\n\nconst MAX_CCIP_REDIRECTS = 10;\n\n//////////////////////////////\n// Event Serializeing\n\nfunction checkTopic(topic: string): string {\n if (topic == null) { return \"null\"; }\n if (hexDataLength(topic) !== 32) {\n logger.throwArgumentError(\"invalid topic\", \"topic\", topic);\n }\n return topic.toLowerCase();\n}\n\nfunction serializeTopics(topics: Array<string | Array<string>>): string {\n // Remove trailing null AND-topics; they are redundant\n topics = topics.slice();\n while (topics.length > 0 && topics[topics.length - 1] == null) { topics.pop(); }\n\n return topics.map((topic) => {\n if (Array.isArray(topic)) {\n\n // Only track unique OR-topics\n const unique: { [ topic: string ]: boolean } = { }\n topic.forEach((topic) => {\n unique[checkTopic(topic)] = true;\n });\n\n // The order of OR-topics does not matter\n const sorted = Object.keys(unique);\n sorted.sort();\n\n return sorted.join(\"|\");\n\n } else {\n return checkTopic(topic);\n }\n }).join(\"&\");\n}\n\nfunction deserializeTopics(data: string): Array<string | Array<string>> {\n if (data === \"\") { return [ ]; }\n\n return data.split(/&/g).map((topic) => {\n if (topic === \"\") { return [ ]; }\n\n const comps = topic.split(\"|\").map((topic) => {\n return ((topic === \"null\") ? null: topic);\n });\n\n return ((comps.length === 1) ? comps[0]: comps);\n });\n}\n\nfunction getEventTag(eventName: EventType): string {\n if (typeof(eventName) === \"string\") {\n eventName = eventName.toLowerCase();\n\n if (hexDataLength(eventName) === 32) {\n return \"tx:\" + eventName;\n }\n\n if (eventName.indexOf(\":\") === -1) {\n return eventName;\n }\n\n } else if (Array.isArray(eventName)) {\n return \"filter:*:\" + serializeTopics(eventName);\n\n } else if (ForkEvent.isForkEvent(eventName)) {\n logger.warn(\"not implemented\");\n throw new Error(\"not implemented\");\n\n } else if (eventName && typeof(eventName) === \"object\") {\n return \"filter:\" + (eventName.address || \"*\") + \":\" + serializeTopics(eventName.topics || []);\n }\n\n throw new Error(\"invalid event - \" + eventName);\n}\n\n//////////////////////////////\n// Helper Object\n\nfunction getTime() {\n return (new Date()).getTime();\n}\n\nfunction stall(duration: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, duration);\n });\n}\n\n//////////////////////////////\n// Provider Object\n\n\n/**\n * EventType\n * - \"block\"\n * - \"poll\"\n * - \"didPoll\"\n * - \"pending\"\n * - \"error\"\n * - \"network\"\n * - filter\n * - topics array\n * - transaction hash\n */\n\nconst PollableEvents = [ \"block\", \"network\", \"pending\", \"poll\" ];\n\nexport class Event {\n readonly listener: Listener;\n readonly once: boolean;\n readonly tag: string;\n\n _lastBlockNumber: number\n _inflight: boolean;\n\n constructor(tag: string, listener: Listener, once: boolean) {\n defineReadOnly(this, \"tag\", tag);\n defineReadOnly(this, \"listener\", listener);\n defineReadOnly(this, \"once\", once);\n\n this._lastBlockNumber = -2;\n this._inflight = false;\n }\n\n get event(): EventType {\n switch (this.type) {\n case \"tx\":\n return this.hash;\n case \"filter\":\n return this.filter;\n }\n return this.tag;\n }\n\n get type(): string {\n return this.tag.split(\":\")[0]\n }\n\n get hash(): string {\n const comps = this.tag.split(\":\");\n if (comps[0] !== \"tx\") { return null; }\n return comps[1];\n }\n\n get filter(): Filter {\n const comps = this.tag.split(\":\");\n if (comps[0] !== \"filter\") { return null; }\n const address = comps[1];\n\n const topics = deserializeTopics(comps[2]);\n const filter: Filter = { };\n\n if (topics.length > 0) { filter.topics = topics; }\n if (address && address !== \"*\") { filter.address = address; }\n\n return filter;\n }\n\n pollable(): boolean {\n return (this.tag.indexOf(\":\") >= 0 || PollableEvents.indexOf(this.tag) >= 0);\n }\n}\n\nexport interface EnsResolver {\n\n // Name this Resolver is associated with\n readonly name: string;\n\n // The address of the resolver\n readonly address: string;\n\n // Multichain address resolution (also normal address resolution)\n // See: https://eips.ethereum.org/EIPS/eip-2304\n getAddress(coinType?: 60): Promise<null | string>\n\n // Contenthash field\n // See: https://eips.ethereum.org/EIPS/eip-1577\n getContentHash(): Promise<null | string>;\n\n // Storage of text records\n // See: https://eips.ethereum.org/EIPS/eip-634\n getText(key: string): Promise<null | string>;\n};\n\nexport interface EnsProvider {\n resolveName(name: string): Promise<null | string>;\n lookupAddress(address: string): Promise<null | string>;\n getResolver(name: string): Promise<null | EnsResolver>;\n}\n\ntype CoinInfo = {\n symbol: string,\n ilk?: string, // General family\n prefix?: string, // Bech32 prefix\n p2pkh?: number, // Pay-to-Public-Key-Hash Version\n p2sh?: number, // Pay-to-Script-Hash Version\n};\n\n// https://github.com/satoshilabs/slips/blob/master/slip-0044.md\nconst coinInfos: { [ coinType: string ]: CoinInfo } = {\n \"0\": { symbol: \"btc\", p2pkh: 0x00, p2sh: 0x05, prefix: \"bc\" },\n \"2\": { symbol: \"ltc\", p2pkh: 0x30, p2sh: 0x32, prefix: \"ltc\" },\n \"3\": { symbol: \"doge\", p2pkh: 0x1e, p2sh: 0x16 },\n \"60\": { symbol: \"eth\", ilk: \"eth\" },\n \"61\": { symbol: \"etc\", ilk: \"eth\" },\n \"700\": { symbol: \"xdai\", ilk: \"eth\" },\n};\n\nfunction bytes32ify(value: number): string {\n return hexZeroPad(BigNumber.from(value).toHexString(), 32);\n}\n\n// Compute the Base58Check encoded data (checksum is first 4 bytes of sha256d)\nfunction base58Encode(data: Uint8Array): string {\n return Base58.encode(concat([ data, hexDataSlice(sha256(sha256(data)), 0, 4) ]));\n}\n\nexport interface Avatar {\n url: string;\n linkage: Array<{ type: string, content: string }>;\n}\n\nconst matcherIpfs = new RegExp(\"^(ipfs):/\\/(.*)$\", \"i\");\nconst matchers = [\n new RegExp(\"^(https):/\\/(.*)$\", \"i\"),\n new RegExp(\"^(data):(.*)$\", \"i\"),\n matcherIpfs,\n new RegExp(\"^eip155:[0-9]+/(erc[0-9]+):(.*)$\", \"i\"),\n];\n\nfunction _parseString(result: string, start: number): null | string {\n try {\n return toUtf8String(_parseBytes(result, start));\n } catch(error) { }\n return null;\n}\n\nfunction _parseBytes(result: string, start: number): null | string {\n if (result === \"0x\") { return null; }\n\n const offset = BigNumber.from(hexDataSlice(result, start, start + 32)).toNumber();\n const length = BigNumber.from(hexDataSlice(result, offset, offset + 32)).toNumber();\n\n return hexDataSlice(result, offset + 32, offset + 32 + length);\n}\n\n// Trim off the ipfs:// prefix and return the default gateway URL\nfunction getIpfsLink(link: string): string {\n if (link.match(/^ipfs:\\/\\/ipfs\\//i)) {\n link = link.substring(12);\n } else if (link.match(/^ipfs:\\/\\//i)) {\n link = link.substring(7);\n } else {\n logger.throwArgumentError(\"unsupported IPFS format\", \"link\", link);\n }\n\n return `https:/\\/gateway.ipfs.io/ipfs/${ link }`;\n}\n\nfunction numPad(value: number): Uint8Array {\n const result = arrayify(value);\n if (result.length > 32) { throw new Error(\"internal; should not happen\"); }\n\n const padded = new Uint8Array(32);\n padded.set(result, 32 - result.length);\n return padded;\n}\n\nfunction bytesPad(value: Uint8Array): Uint8Array {\n if ((value.length % 32) === 0) { return value; }\n\n const result = new Uint8Array(Math.ceil(value.length / 32) * 32);\n result.set(value);\n return result;\n}\n\n// ABI Encodes a series of (bytes, bytes, ...)\nfunction encodeBytes(datas: Array<BytesLike>) {\n const result: Array<Uint8Array> = [ ];\n\n let byteCount = 0;\n\n // Add place-holders for pointers as we add items\n for (let i = 0; i < datas.length; i++) {\n result.push(null);\n byteCount += 32;\n }\n\n for (let i = 0; i < datas.length; i++) {\n const data = arrayify(datas[i]);\n\n // Update the bytes offset\n result[i] = numPad(byteCount);\n\n // The length and padded value of data\n result.push(numPad(data.length));\n result.push(bytesPad(data));\n byteCount += 32 + Math.ceil(data.length / 32) * 32;\n }\n\n return hexConcat(result);\n}\n\nexport class Resolver implements EnsResolver {\n readonly provider: BaseProvider;\n\n readonly name: string;\n readonly address: string;\n\n readonly _resolvedAddress: null | string;\n\n // For EIP-2544 names, the ancestor that provided the resolver\n _supportsEip2544: null | Promise<boolean>;\n\n // The resolvedAddress is only for creating a ReverseLookup resolver\n constructor(provider: BaseProvider, address: string, name: string, resolvedAddress?: string) {\n defineReadOnly(this, \"provider\", provider);\n defineReadOnly(this, \"name\", name);\n defineReadOnly(this, \"address\", provider.formatter.address(address));\n defineReadOnly(this, \"_resolvedAddress\", resolvedAddress);\n }\n\n supportsWildcard(): Promise<boolean> {\n if (!this._supportsEip2544) {\n // supportsInterface(bytes4 = selector(\"resolve(bytes,bytes)\"))\n this._supportsEip2544 = this.provider.call({\n to: this.address,\n data: \"0x01ffc9a79061b92300000000000000000000000000000000000000000000000000000000\"\n }).then((result) => {\n return BigNumber.from(result).eq(1);\n }).catch((error) => {\n if (error.code === Logger.errors.CALL_EXCEPTION) { return false; }\n // Rethrow the error: link is down, etc. Let future attempts retry.\n this._supportsEip2544 = null;\n throw error;\n });\n }\n\n return this._supportsEip2544;\n }\n\n async _fetch(selector: string, parameters?: string): Promise<null | string> {\n\n // e.g. keccak256(\"addr(bytes32,uint256)\")\n const tx = {\n to: this.address,\n ccipReadEnabled: true,\n data: hexConcat([ selector, namehash(this.name), (parameters || \"0x\") ])\n };\n\n // Wildcard support; use EIP-2544 to resolve the request\n let parseBytes = false;\n if (await this.supportsWildcard()) {\n parseBytes = true;\n\n // selector(\"resolve(bytes,bytes)\")\n tx.data = hexConcat([ \"0x9061b923\", encodeBytes([ dnsEncode(this.name), tx.data ]) ]);\n }\n\n try {\n let result = await this.provider.call(tx);\n if ((arrayify(result).length % 32) === 4) {\n logger.throwError(\"resolver threw error\", Logger.errors.CALL_EXCEPTION, {\n transaction: tx, data: result\n });\n }\n if (parseBytes) { result = _parseBytes(result, 0); }\n return result;\n } catch (error) {\n if (error.code === Logger.errors.CALL_EXCEPTION) { return null; }\n throw error;\n }\n }\n\n async _fetchBytes(selector: string, parameters?: string): Promise<null | string> {\n const result = await this._fetch(selector, parameters);\n if (result != null) { return _parseBytes(result, 0); }\n return null;\n }\n\n _getAddress(coinType: number, hexBytes: string): string {\n const coinInfo = coinInfos[String(coinType)];\n\n if (coinInfo == null) {\n logger.throwError(`unsupported coin type: ${ coinType }`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: `getAddress(${ coinType })`\n });\n }\n\n if (coinInfo.ilk === \"eth\") {\n return this.provider.formatter.address(hexBytes);\n }\n\n const bytes = arrayify(hexBytes);\n\n // P2PKH: OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG\n if (coinInfo.p2pkh != null) {\n const p2pkh = hexBytes.match(/^0x76a9([0-9a-f][0-9a-f])([0-9a-f]*)88ac$/);\n if (p2pkh) {\n const length = parseInt(p2pkh[1], 16);\n if (p2pkh[2].length === length * 2 && length >= 1 && length <= 75) {\n return base58Encode(concat([ [ coinInfo.p2pkh ], (\"0x\" + p2pkh[2]) ]));\n }\n }\n }\n\n // P2SH: OP_HASH160 <scriptHash> OP_EQUAL\n if (coinInfo.p2sh != null) {\n const p2sh = hexBytes.match(/^0xa9([0-9a-f][0-9a-f])([0-9a-f]*)87$/);\n if (p2sh) {\n const length = parseInt(p2sh[1], 16);\n if (p2sh[2].length === length * 2 && length >= 1 && length <= 75) {\n return base58Encode(concat([ [ coinInfo.p2sh ], (\"0x\" + p2sh[2]) ]));\n }\n }\n }\n\n // Bech32\n if (coinInfo.prefix != null) {\n const length = bytes[1];\n\n // https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#witness-program\n let version = bytes[0];\n if (version === 0x00) {\n if (length !== 20 && length !== 32) {\n version = -1;\n }\n } else {\n version = -1;\n }\n\n if (version >= 0 && bytes.length === 2 + length && length >= 1 && length <= 75) {\n const words = bech32.toWords(bytes.slice(2));\n words.unshift(version);\n return bech32.encode(coinInfo.prefix, words);\n }\n }\n\n return null;\n }\n\n\n async getAddress(coinType?: number): Promise<string> {\n if (coinType == null) { coinType = 60; }\n\n // If Ethereum, use the standard `addr(bytes32)`\n if (coinType === 60) {\n try {\n // keccak256(\"addr(bytes32)\")\n const result = await this._fetch(\"0x3b3b57de\");\n\n // No address\n if (result === \"0x\" || result === HashZero) { return null; }\n\n return this.provider.formatter.callAddress(result);\n } catch (error) {\n if (error.code === Logger.errors.CALL_EXCEPTION) { return null; }\n throw error;\n }\n }\n\n // keccak256(\"addr(bytes32,uint256\")\n const hexBytes = await this._fetchBytes(\"0xf1cb7e06\", bytes32ify(coinType));\n\n // No address\n if (hexBytes == null || hexBytes === \"0x\") { return null; }\n\n // Compute the address\n const address = this._getAddress(coinType, hexBytes);\n\n if (address == null) {\n logger.throwError(`invalid or unsupported coin data`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: `getAddress(${ coinType })`,\n coinType: coinType,\n data: hexBytes\n });\n }\n\n return address;\n }\n\n async getAvatar(): Promise<null | Avatar> {\n const linkage: Array<{ type: string, content: string }> = [ { type: \"name\", content: this.name } ];\n try {\n // test data for ricmoo.eth\n //const avatar = \"eip155:1/erc721:0x265385c7f4132228A0d54EB1A9e7460b91c0cC68/29233\";\n const avatar = await this.getText(\"avatar\");\n if (avatar == null) { return null; }\n\n for (let i = 0; i < matchers.length; i++) {\n const match = avatar.match(matchers[i]);\n if (match == null) { continue; }\n\n const scheme = match[1].toLowerCase();\n\n switch (scheme) {\n case \"https\":\n linkage.push({ type: \"url\", content: avatar });\n return { linkage, url: avatar };\n\n case \"data\":\n linkage.push({ type: \"data\", content: avatar });\n return { linkage, url: avatar };\n\n case \"ipfs\":\n linkage.push({ type: \"ipfs\", content: avatar });\n return { linkage, url: getIpfsLink(avatar) };\n\n case \"erc721\":\n case \"erc1155\": {\n // Depending on the ERC type, use tokenURI(uint256) or url(uint256)\n const selector = (scheme === \"erc721\") ? \"0xc87b56dd\": \"0x0e89341c\";\n linkage.push({ type: scheme, content: avatar });\n\n // The owner of this name\n const owner = (this._resolvedAddress || await this.getAddress());\n\n const comps = (match[2] || \"\").split(\"/\");\n if (comps.length !== 2) { return null; }\n\n const addr = await this.provider.formatter.address(comps[0]);\n const tokenId = hexZeroPad(BigNumber.from(comps[1]).toHexString(), 32);\n\n // Check that this account owns the token\n if (scheme === \"erc721\") {\n // ownerOf(uint256 tokenId)\n const tokenOwner = this.provider.formatter.callAddress(await this.provider.call({\n to: addr, data: hexConcat([ \"0x6352211e\", tokenId ])\n }));\n if (owner !== tokenOwner) { return null; }\n linkage.push({ type: \"owner\", content: tokenOwner });\n\n } else if (scheme === \"erc1155\") {\n // balanceOf(address owner, uint256 tokenId)\n const balance = BigNumber.from(await this.provider.call({\n to: addr, data: hexConcat([ \"0x00fdd58e\", hexZeroPad(owner, 32), tokenId ])\n }));\n if (balance.isZero()) { return null; }\n linkage.push({ type: \"balance\", content: balance.toString() });\n }\n\n // Call the token contract for the metadata URL\n const tx = {\n to: this.provider.formatter.address(comps[0]),\n data: hexConcat([ selector, tokenId ])\n };\n\n let metadataUrl = _parseString(await this.provider.call(tx), 0);\n if (metadataUrl == null) { return null; }\n linkage.push({ type: \"metadata-url-base\", content: metadataUrl });\n\n // ERC-1155 allows a generic {id} in the URL\n if (scheme === \"erc1155\") {\n metadataUrl = metadataUrl.replace(\"{id}\", tokenId.substring(2));\n linkage.push({ type: \"metadata-url-expanded\", content: metadataUrl });\n }\n\n // Transform IPFS metadata links\n if (metadataUrl.match(/^ipfs:/i)) {\n metadataUrl = getIpfsLink(metadataUrl);\n }\n\n linkage.push({ type: \"metadata-url\", content: metadataUrl });\n\n // Get the token metadata\n const metadata = await fetchJson(metadataUrl);\n if (!metadata) { return null; }\n linkage.push({ type: \"metadata\", content: JSON.stringify(metadata) });\n\n // Pull the image URL out\n let imageUrl = metadata.image;\n if (typeof(imageUrl) !== \"string\") { return null; }\n\n if (imageUrl.match(/^(https:\\/\\/|data:)/i)) {\n // Allow\n } else {\n // Transform IPFS link to gateway\n const ipfs = imageUrl.match(matcherIpfs);\n if (ipfs == null) { return null; }\n\n linkage.push({ type: \"url-ipfs\", content: imageUrl });\n imageUrl = getIpfsLink(imageUrl);\n }\n\n linkage.push({ type: \"url\", content: imageUrl });\n\n return { linkage, url: imageUrl };\n }\n }\n }\n } catch (error) { }\n\n return null;\n }\n\n async getContentHash(): Promise<string> {\n\n // keccak256(\"contenthash()\")\n const hexBytes = await this._fetchBytes(\"0xbc1c58d1\");\n\n // No contenthash\n if (hexBytes == null || hexBytes === \"0x\") { return null; }\n\n // IPFS (CID: 1, Type: DAG-PB)\n const ipfs = hexBytes.match(/^0xe3010170(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);\n if (ipfs) {\n const length = parseInt(ipfs[3], 16);\n if (ipfs[4].length === length * 2) {\n return \"ipfs:/\\/\" + Base58.encode(\"0x\" + ipfs[1]);\n }\n }\n\n // IPNS (CID: 1, Type: libp2p-key)\n const ipns = hexBytes.match(/^0xe5010172(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);\n if (ipns) {\n const length = parseInt(ipns[3], 16);\n if (ipns[4].length === length * 2) {\n return \"ipns:/\\/\" + Base58.encode(\"0x\" + ipns[1]);\n }\n }\n\n // Swarm (CID: 1, Type: swarm-manifest; hash/length hard-coded to keccak256/32)\n const swarm = hexBytes.match(/^0xe40101fa011b20([0-9a-f]*)$/)\n if (swarm) {\n if (swarm[1].length === (32 * 2)) {\n return \"bzz:/\\/\" + swarm[1]\n }\n }\n\n const skynet = hexBytes.match(/^0x90b2c605([0-9a-f]*)$/);\n if (skynet) {\n if (skynet[1].length === (34 * 2)) {\n // URL Safe base64; https://datatracker.ietf.org/doc/html/rfc4648#section-5\n const urlSafe: Record<string, string> = { \"=\": \"\", \"+\": \"-\", \"/\": \"_\" };\n const hash = base64Encode(\"0x\" + skynet[1]).replace(/[=+\\/]/g, (a) => (urlSafe[a]));\n return \"sia:/\\/\" + hash;\n }\n }\n\n return logger.throwError(`invalid or unsupported content hash data`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"getContentHash()\",\n data: hexBytes\n });\n }\n\n async getText(key: string): Promise<string> {\n\n // The key encoded as parameter to fetchBytes\n let keyBytes = toUtf8Bytes(key);\n\n // The nodehash consumes the first slot, so the string pointer targets\n // offset 64, with the length at offset 64 and data starting at offset 96\n keyBytes = concat([ bytes32ify(64), bytes32ify(keyBytes.length), keyBytes ]);\n\n // Pad to word-size (32 bytes)\n if ((keyBytes.length % 32) !== 0) {\n keyBytes = concat([ keyBytes, hexZeroPad(\"0x\", 32 - (key.length % 32)) ])\n }\n\n const hexBytes = await this._fetchBytes(\"0x59d1d43c\", hexlify(keyBytes));\n if (hexBytes == null || hexBytes === \"0x\") { return null; }\n\n return toUtf8String(hexBytes);\n }\n}\n\nlet defaultFormatter: Formatter = null;\n\nlet nextPollId = 1;\n\nexport class BaseProvider extends Provider implements EnsProvider {\n _networkPromise: Promise<Network>;\n _network: Network;\n\n _events: Array<Event>;\n\n formatter: Formatter;\n\n // To help mitigate the eventually consistent nature of the blockchain\n // we keep a mapping of events we emit. If we emit an event X, we expect\n // that a user should be able to query for that event in the callback,\n // if the node returns null, we stall the response until we get back a\n // meaningful value, since we may be hitting a re-org, or a node that\n // has not indexed the event yet.\n // Events:\n // - t:{hash} - Transaction hash\n // - b:{hash} - BlockHash\n // - block - The most recent emitted block\n _emitted: { [ eventName: string ]: number | \"pending\" };\n\n _pollingInterval: number;\n _poller: NodeJS.Timer;\n _bootstrapPoll: NodeJS.Timer;\n\n _lastBlockNumber: number;\n _maxFilterBlockRange: number;\n\n _fastBlockNumber: number;\n _fastBlockNumberPromise: Promise<number>;\n _fastQueryDate: number;\n\n _maxInternalBlockNumber: number;\n _internalBlockNumber: Promise<{ blockNumber: number, reqTime: number, respTime: number }>;\n\n readonly anyNetwork: boolean;\n\n disableCcipRead: boolean;\n\n\n /**\n * ready\n *\n * A Promise<Network> that resolves only once the provider is ready.\n *\n * Sub-classes that call the super with a network without a chainId\n * MUST set this. Standard named networks have a known chainId.\n *\n */\n\n constructor(network: Networkish | Promise<Network>) {\n super();\n\n // Events being listened to\n this._events = [];\n\n this._emitted = { block: -2 };\n\n this.disableCcipRead = false;\n\n this.formatter = new.target.getFormatter();\n\n // If network is any, this Provider allows the underlying\n // network to change dynamically, and we auto-detect the\n // current network\n defineReadOnly(this, \"anyNetwork\", (network === \"any\"));\n if (this.anyNetwork) { network = this.detectNetwork(); }\n\n if (network instanceof Promise) {\n this._networkPromise = network;\n\n // Squash any \"unhandled promise\" errors; that do not need to be handled\n network.catch((error) => { });\n\n // Trigger initial network setting (async)\n this._ready().catch((error) => { });\n\n } else {\n const knownNetwork = getStatic<(network: Networkish) => Network>(new.target, \"getNetwork\")(network);\n if (knownNetwork) {\n defineReadOnly(this, \"_network\", knownNetwork);\n this.emit(\"network\", knownNetwork, null);\n\n } else {\n logger.throwArgumentError(\"invalid network\", \"network\", network);\n }\n }\n\n this._maxInternalBlockNumber = -1024;\n\n this._lastBlockNumber = -2;\n this._maxFilterBlockRange = 10;\n\n this._pollingInterval = 4000;\n\n this._fastQueryDate = 0;\n }\n\n async _ready(): Promise<Network> {\n if (this._network == null) {\n let network: Network = null;\n if (this._networkPromise) {\n try {\n network = await this._networkPromise;\n } catch (error) { }\n }\n\n // Try the Provider's network detection (this MUST throw if it cannot)\n if (network == null) {\n network = await this.detectNetwork();\n }\n\n // This should never happen; every Provider sub-class should have\n // suggested a network by here (or have thrown).\n if (!network) {\n logger.throwError(\"no network detected\", Logger.errors.UNKNOWN_ERROR, { });\n }\n\n // Possible this call stacked so do not call defineReadOnly again\n if (this._network == null) {\n if (this.anyNetwork) {\n this._network = network;\n } else {\n defineReadOnly(this, \"_network\", network);\n }\n this.emit(\"network\", network, null);\n }\n }\n\n return this._network;\n }\n\n // This will always return the most recently established network.\n // For \"any\", this can change (a \"network\" event is emitted before\n // any change is reflected); otherwise this cannot change\n get ready(): Promise<Network> {\n return poll(() => {\n return this._ready().then((network) => {\n return network;\n }, (error) => {\n // If the network isn't running yet, we will wait\n if (error.code === Logger.errors.NETWORK_ERROR && error.event === \"noNetwork\") {\n return undefined;\n }\n throw error;\n });\n });\n }\n\n // @TODO: Remove this and just create a singleton formatter\n static getFormatter(): Formatter {\n if (defaultFormatter == null) {\n defaultFormatter = new Formatter();\n }\n return defaultFormatter;\n }\n\n // @TODO: Remove this and just use getNetwork\n static getNetwork(network: Networkish): Network {\n return getNetwork((network == null) ? \"homestead\": network);\n }\n\n async ccipReadFetch(tx: Transaction, calldata: string, urls: Array<string>): Promise<null | string> {\n if (this.disableCcipRead || urls.length === 0) { return null; }\n\n const sender = tx.to.toLowerCase();\n const data = calldata.toLowerCase();\n\n const errorMessages: Array<string> = [ ];\n\n for (let i = 0; i < urls.length; i++) {\n const url = urls[i];\n\n // URL expansion\n const href = url.replace(\"{sender}\", sender).replace(\"{data}\", data);\n\n // If no {data} is present, use POST; otherwise GET\n const json: string | null = (url.indexOf(\"{data}\") >= 0) ? null: JSON.stringify({ data, sender });\n\n const result = await fetchJson({ url: href, errorPassThrough: true }, json, (value, response) => {\n value.status = response.statusCode;\n return value;\n });\n\n if (result.data) { return result.data; }\n\n const errorMessage = (result.message || \"unknown error\");\n\n // 4xx indicates the result is not present; stop\n if (result.status >= 400 && result.status < 500) {\n return logger.throwError(`response not found during CCIP fetch: ${ errorMessage }`, Logger.errors.SERVER_ERROR, { url, errorMessage });\n }\n\n // 5xx indicates server issue; try the next url\n errorMessages.push(errorMessage);\n }\n\n return logger.throwError(`error encountered during CCIP fetch: ${ errorMessages.map((m) => JSON.stringify(m)).join(\", \") }`, Logger.errors.SERVER_ERROR, {\n urls, errorMessages\n });\n }\n\n // Fetches the blockNumber, but will reuse any result that is less\n // than maxAge old or has been requested since the last request\n async _getInternalBlockNumber(maxAge: number): Promise<number> {\n await this._ready();\n\n // Allowing stale data up to maxAge old\n if (maxAge > 0) {\n\n // While there are pending internal block requests...\n while (this._internalBlockNumber) {\n\n // ...\"remember\" which fetch we started with\n const internalBlockNumber = this._internalBlockNumber;\n\n try {\n // Check the result is not too stale\n const result = await internalBlockNumber;\n if ((getTime() - result.respTime) <= maxAge) {\n return result.blockNumber;\n }\n\n // Too old; fetch a new value\n break;\n\n } catch(error) {\n\n // The fetch rejected; if we are the first to get the\n // rejection, drop through so we replace it with a new\n // fetch; all others blocked will then get that fetch\n // which won't match the one they \"remembered\" and loop\n if (this._internalBlockNumber === internalBlockNumber) {\n break;\n }\n }\n }\n }\n\n const reqTime = getTime();\n\n const checkInternalBlockNumber = resolveProperties({\n blockNumber: this.perform(\"getBlockNumber\", { }),\n networkError: this.getNetwork().then((network) => (null), (error) => (error))\n }).then(({ blockNumber, networkError }) => {\n if (networkError) {\n // Unremember this bad internal block number\n if (this._internalBlockNumber === checkInternalBlockNumber) {\n this._internalBlockNumber = null;\n }\n throw networkError;\n }\n\n const respTime = getTime();\n\n blockNumber = BigNumber.from(blockNumber).toNumber();\n if (blockNumber < this._maxInternalBlockNumber) { blockNumber = this._maxInternalBlockNumber; }\n\n this._maxInternalBlockNumber = blockNumber;\n this._setFastBlockNumber(blockNumber); // @TODO: Still need this?\n return { blockNumber, reqTime, respTime };\n });\n\n this._internalBlockNumber = checkInternalBlockNumber;\n\n // Swallow unhandled exceptions; if needed they are handled else where\n checkInternalBlockNumber.catch((error) => {\n // Don't null the dead (rejected) fetch, if it has already been updated\n if (this._internalBlockNumber === checkInternalBlockNumber) {\n this._internalBlockNumber = null;\n }\n });\n\n return (await checkInternalBlockNumber).blockNumber;\n }\n\n async poll(): Promise<void> {\n const pollId = nextPollId++;\n\n // Track all running promises, so we can trigger a post-poll once they are complete\n const runners: Array<Promise<void>> = [];\n\n let blockNumber: number = null;\n try {\n blockNumber = await this._getInternalBlockNumber(100 + this.pollingInterval / 2);\n } catch (error) {\n this.emit(\"error\", error);\n return;\n }\n this._setFastBlockNumber(blockNumber);\n\n // Emit a poll event after we have the latest (fast) block number\n this.emit(\"poll\", pollId, blockNumber);\n\n // If the block has not changed, meh.\n if (blockNumber === this._lastBlockNumber) {\n this.emit(\"didPoll\", pollId);\n return;\n }\n\n // First polling cycle, trigger a \"block\" events\n if (this._emitted.block === -2) {\n this._emitted.block = blockNumber - 1;\n }\n\n if (Math.abs((<number>(this._emitted.block)) - blockNumber) > 1000) {\n logger.warn(`network block skew detected; skipping block events (emitted=${ this._emitted.block } blockNumber${ blockNumber })`);\n this.emit(\"error\", logger.makeError(\"network block skew detected\", Logger.errors.NETWORK_ERROR, {\n blockNumber: blockNumber,\n event: \"blockSkew\",\n previousBlockNumber: this._emitted.block\n }));\n this.emit(\"block\", blockNumber);\n\n } else {\n // Notify all listener for each block that has passed\n for (let i = (<number>this._emitted.block) + 1; i <= blockNumber; i++) {\n this.emit(\"block\", i);\n }\n }\n\n // The emitted block was updated, check for obsolete events\n if ((<number>this._emitted.block) !== blockNumber) {\n this._emitted.block = blockNumber;\n\n Object.keys(this._emitted).forEach((key) => {\n // The block event does not expire\n if (key === \"block\") { return; }\n\n // The block we were at when we emitted this event\n const eventBlockNumber = this._emitted[key];\n\n // We cannot garbage collect pending transactions or blocks here\n // They should be garbage collected by the Provider when setting\n // \"pending\" events\n if (eventBlockNumber === \"pending\") { return; }\n\n // Evict any transaction hashes or block hashes over 12 blocks\n // old, since they should not return null anyways\n if (blockNumber - eventBlockNumber > 12) {\n delete this._emitted[key];\n }\n });\n }\n\n // First polling cycle\n if (this._lastBlockNumber === -2) {\n this._lastBlockNumber = blockNumber - 1;\n }\n // Find all transaction hashes we are waiting on\n this._events.forEach((event) => {\n switch (event.type) {\n case \"tx\": {\n const hash = event.hash;\n let runner = this.getTransactionReceipt(hash).then((receipt) => {\n if (!receipt || receipt.blockNumber == null) { return null; }\n this._emitted[\"t:\" + hash] = receipt.blockNumber;\n this.emit(hash, receipt);\n return null;\n }).catch((error: Error) => { this.emit(\"error\", error); });\n\n runners.push(runner);\n\n break;\n }\n\n case \"filter\": {\n // We only allow a single getLogs to be in-flight at a time\n if (!event._inflight) {\n event._inflight = true;\n\n // This is the first filter for this event, so we want to\n // restrict events to events that happened no earlier than now\n if (event._lastBlockNumber === -2) {\n event._lastBlockNumber = blockNumber - 1;\n }\n\n // Filter from the last *known* event; due to load-balancing\n // and some nodes returning updated block numbers before\n // indexing events, a logs result with 0 entries cannot be\n // trusted and we must retry a range which includes it again\n const filter = event.filter;\n filter.fromBlock = event._lastBlockNumber + 1;\n filter.toBlock = blockNumber;\n\n // Prevent fitler ranges from growing too wild, since it is quite\n // likely there just haven't been any events to move the lastBlockNumber.\n const minFromBlock = filter.toBlock - this._maxFilterBlockRange;\n if (minFromBlock > filter.fromBlock) { filter.fromBlock = minFromBlock; }\n\n if (filter.fromBlock < 0) { filter.fromBlock = 0; }\n\n const runner = this.getLogs(filter).then((logs) => {\n // Allow the next getLogs\n event._inflight = false;\n\n if (logs.length === 0) { return; }\n\n logs.forEach((log: Log) => {\n // Only when we get an event for a given block number\n // can we trust the events are indexed\n if (log.blockNumber > event._lastBlockNumber) {\n event._lastBlockNumber = log.blockNumber;\n }\n\n // Make sure we stall requests to fetch blocks and txs\n this._emitted[\"b:\" + log.blockHash] = log.blockNumber;\n this._emitted[\"t:\" + log.transactionHash] = log.blockNumber;\n\n this.emit(filter, log);\n });\n }).catch((error: Error) => {\n this.emit(\"error\", error);\n\n // Allow another getLogs (the range was not updated)\n event._inflight = false;\n });\n runners.push(runner);\n }\n\n break;\n }\n }\n });\n\n this._lastBlockNumber = blockNumber;\n\n // Once all events for this loop have been processed, emit \"didPoll\"\n Promise.all(runners).then(() => {\n this.emit(\"didPoll\", pollId);\n }).catch((error) => { this.emit(\"error\", error); });\n\n return;\n }\n\n // Deprecated; do not use this\n resetEventsBlock(blockNumber: number): void {\n this._lastBlockNumber = blockNumber - 1;\n if (this.polling) { this.poll(); }\n }\n\n get network(): Network {\n return this._network;\n }\n\n // This method should query the network if the underlying network\n // can change, such as when connected to a JSON-RPC backend\n async detectNetwork(): Promise<Network> {\n return logger.throwError(\"provider does not support network detection\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"provider.detectNetwork\"\n });\n }\n\n async getNetwork(): Promise<Network> {\n const network = await this._ready();\n\n // Make sure we are still connected to the same network; this is\n // only an external call for backends which can have the underlying\n // network change spontaneously\n const currentNetwork = await this.detectNetwork();\n if (network.chainId !== currentNetwork.chainId) {\n\n // We are allowing network changes, things can get complex fast;\n // make sure you know what you are doing if you use \"any\"\n if (this.anyNetwork) {\n this._network = currentNetwork;\n\n // Reset all internal block number guards and caches\n this._lastBlockNumber = -2;\n this._fastBlockNumber = null;\n this._fastBlockNumberPromise = null;\n this._fastQueryDate = 0;\n this._emitted.block = -2;\n this._maxInternalBlockNumber = -1024;\n this._internalBlockNumber = null;\n\n // The \"network\" event MUST happen before this method resolves\n // so any events have a chance to unregister, so we stall an\n // additional event loop before returning from /this/ call\n this.emit(\"network\", currentNetwork, network);\n await stall(0);\n\n return this._network;\n }\n\n const error = logger.makeError(\"underlying network changed\", Logger.errors.NETWORK_ERROR, {\n event: \"changed\",\n network: network,\n detectedNetwork: currentNetwork\n });\n\n this.emit(\"error\", error);\n throw error;\n }\n\n return network;\n }\n\n get blockNumber(): number {\n this._getInternalBlockNumber(100 + this.pollingInterval / 2).then((blockNumber) => {\n this._setFastBlockNumber(blockNumber);\n }, (error) => { });\n\n return (this._fastBlockNumber != null) ? this._fastBlockNumber: -1;\n }\n\n get polling(): boolean {\n return (this._poller != null);\n }\n\n set polling(value: boolean) {\n if (value && !this._poller) {\n this._poller = setInterval(() => { this.poll(); }, this.pollingInterval);\n\n if (!this._bootstrapPoll) {\n this._bootstrapPoll = setTimeout(() => {\n this.poll();\n\n // We block additional polls until the polling interval\n // is done, to prevent overwhelming the poll function\n this._bootstrapPoll = setTimeout(() => {\n // If polling was disabled, something may require a poke\n // since starting the bootstrap poll and it was disabled\n if (!this._poller) { this.poll(); }\n\n // Clear out the bootstrap so we can do another\n this._bootstrapPoll = null;\n }, this.pollingInterval);\n }, 0);\n }\n\n } else if (!value && this._poller) {\n clearInterval(this._poller);\n this._poller = null;\n }\n }\n\n get pollingInterval(): number {\n return this._pollingInterval;\n }\n\n set pollingInterval(value: number) {\n if (typeof(value) !== \"number\" || value <= 0 || parseInt(String(value)) != value) {\n throw new Error(\"invalid polling interval\");\n }\n\n this._pollingInterval = value;\n\n if (this._poller) {\n clearInterval(this._poller);\n this._poller = setInterval(() => { this.poll(); }, this._pollingInterval);\n }\n }\n\n _getFastBlockNumber(): Promise<number> {\n const now = getTime();\n\n // Stale block number, request a newer value\n if ((now - this._fastQueryDate) > 2 * this._pollingInterval) {\n this._fastQueryDate = now;\n this._fastBlockNumberPromise = this.getBlockNumber().then((blockNumber) => {\n if (this._fastBlockNumber == null || blockNumber > this._fastBlockNumber) {\n this._fastBlockNumber = blockNumber;\n }\n return this._fastBlockNumber;\n });\n }\n\n return this._fastBlockNumberPromise;\n }\n\n _setFastBlockNumber(blockNumber: number): void {\n // Older block, maybe a stale request\n if (this._fastBlockNumber != null && blockNumber < this._fastBlockNumber) { return; }\n\n // Update the time we updated the blocknumber\n this._fastQueryDate = getTime();\n\n // Newer block number, use it\n if (this._fastBlockNumber == null || blockNumber > this._fastBlockNumber) {\n this._fastBlockNumber = blockNumber;\n this._fastBlockNumberPromise = Promise.resolve(blockNumber);\n }\n }\n\n async waitForTransaction(transactionHash: string, confirmations?: number, timeout?: number): Promise<TransactionReceipt> {\n return this._waitForTransaction(transactionHash, (confirmations == null) ? 1: confirmations, timeout || 0, null);\n }\n\n async _waitForTransaction(transactionHash: string, confirmations: number, timeout: number, replaceable: { data: string, from: string, nonce: number, to: string, value: BigNumber, startBlock: number }): Promise<TransactionReceipt> {\n const receipt = await this.getTransactionReceipt(transactionHash);\n\n // Receipt is already good\n if ((receipt ? receipt.confirmations: 0) >= confirmations) { return receipt; }\n\n // Poll until the receipt is good...\n return new Promise((resolve, reject) => {\n const cancelFuncs: Array<() => void> = [];\n\n let done = false;\n const alreadyDone = function() {\n if (done) { return true; }\n done = true;\n cancelFuncs.forEach((func) => { func(); });\n return false;\n };\n\n const minedHandler = (receipt: TransactionReceipt) => {\n if (receipt.confirmations < confirmations) { return; }\n if (alreadyDone()) { return; }\n resolve(receipt);\n }\n this.on(transactionHash, minedHandler);\n cancelFuncs.push(() => { this.removeListener(transactionHash, minedHandler); });\n\n if (replaceable) {\n let lastBlockNumber = replaceable.startBlock;\n let scannedBlock: number = null;\n const replaceHandler = async (blockNumber: number) => {\n if (done) { return; }\n\n // Wait 1 second; this is only used in the case of a fault, so\n // we will trade off a little bit of latency for more consistent\n // results and fewer JSON-RPC calls\n await stall(1000);\n\n this.getTransactionCount(replaceable.from).then(async (nonce) => {\n if (done) { return; }\n\n if (nonce <= replaceable.nonce) {\n lastBlockNumber = blockNumber;\n\n } else {\n // First check if the transaction was mined\n {\n const mined = await this.getTransaction(transactionHash);\n if (mined && mined.blockNumber != null) { return; }\n }\n\n // First time scanning. We start a little earlier for some\n // wiggle room here to handle the eventually consistent nature\n // of blockchain (e.g. the getTransactionCount was for a\n // different block)\n if (scannedBlock == null) {\n scannedBlock = lastBlockNumber - 3;\n if (scannedBlock < replaceable.startBlock) {\n scannedBlock = replaceable.startBlock;\n }\n }\n\n while (scannedBlock <= blockNumber) {\n if (done) { return; }\n\n const block = await this.getBlockWithTransactions(scannedBlock);\n for (let ti = 0; ti < block.transactions.length; ti++) {\n const tx = block.transactions[ti];\n\n // Successfully mined!\n if (tx.hash === transactionHash) { return; }\n\n // Matches our transaction from and nonce; its a replacement\n if (tx.from === replaceable.from && tx.nonce === replaceable.nonce) {\n if (done) { return; }\n\n // Get the receipt of the replacement\n const receipt = await this.waitForTransaction(tx.hash, confirmations);\n\n // Already resolved or rejected (prolly a timeout)\n if (alreadyDone()) { return; }\n\n // The reason we were replaced\n let reason = \"replaced\";\n if (tx.data === replaceable.data && tx.to === replaceable.to && tx.value.eq(replaceable.value)) {\n reason = \"repriced\";\n } else if (tx.data === \"0x\" && tx.from === tx.to && tx.value.isZero()) {\n reason = \"cancelled\"\n }\n\n // Explain why we were replaced\n reject(logger.makeError(\"transaction was replaced\", Logger.errors.TRANSACTION_REPLACED, {\n cancelled: (reason === \"replaced\" || reason === \"cancelled\"),\n reason,\n replacement: this._wrapTransaction(tx),\n hash: transactionHash,\n receipt\n }));\n\n return;\n }\n }\n scannedBlock++;\n }\n }\n\n if (done) { return; }\n this.once(\"block\", replaceHandler);\n\n }, (error) => {\n if (done) { return; }\n this.once(\"block\", replaceHandler);\n });\n };\n\n if (done) { return; }\n this.once(\"block\", replaceHandler);\n\n cancelFuncs.push(() => {\n this.removeListener(\"block\", replaceHandler);\n });\n }\n\n if (typeof(timeout) === \"number\" && timeout > 0) {\n const timer = setTimeout(() => {\n if (alreadyDone()) { return; }\n reject(logger.makeError(\"timeout exceeded\", Logger.errors.TIMEOUT, { timeout: timeout }));\n }, timeout);\n if (timer.unref) { timer.unref(); }\n\n cancelFuncs.push(() => { clearTimeout(timer); });\n }\n });\n }\n\n async getBlockNumber(): Promise<number> {\n return this._getInternalBlockNumber(0);\n }\n\n async getGasPrice(): Promise<BigNumber> {\n await this.getNetwork();\n\n const result = await this.perform(\"getGasPrice\", { });\n try {\n return BigNumber.from(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"getGasPrice\",\n result, error\n });\n }\n }\n\n async getBalance(addressOrName: string | Promise<string>, blockTag?: BlockTag | Promise<BlockTag>): Promise<BigNumber> {\n await this.getNetwork();\n const params = await resolveProperties({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag)\n });\n\n const result = await this.perform(\"getBalance\", params);\n try {\n return BigNumber.from(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"getBalance\",\n params, result, error\n });\n }\n }\n\n async getTransactionCount(addressOrName: string | Promise<string>, blockTag?: BlockTag | Promise<BlockTag>): Promise<number> {\n await this.getNetwork();\n const params = await resolveProperties({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag)\n });\n\n const result = await this.perform(\"getTransactionCount\", params);\n try {\n return BigNumber.from(result).toNumber();\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"getTransactionCount\",\n params, result, error\n });\n }\n }\n\n async getCode(addressOrName: string | Promise<string>, blockTag?: BlockTag | Promise<BlockTag>): Promise<string> {\n await this.getNetwork();\n const params = await resolveProperties({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag)\n });\n\n const result = await this.perform(\"getCode\", params);\n try {\n return hexlify(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"getCode\",\n params, result, error\n });\n }\n }\n\n async getStorageAt(addressOrName: string | Promise<string>, position: BigNumberish | Promise<BigNumberish>, blockTag?: BlockTag | Promise<BlockTag>): Promise<string> {\n await this.getNetwork();\n const params = await resolveProperties({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag),\n position: Promise.resolve(position).then((p) => hexValue(p))\n });\n const result = await this.perform(\"getStorageAt\", params);\n try {\n return hexlify(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"getStorageAt\",\n params, result, error\n });\n }\n }\n\n // This should be called by any subclass wrapping a TransactionResponse\n _wrapTransaction(tx: Transaction, hash?: string, startBlock?: number): TransactionResponse {\n if (hash != null && hexDataLength(hash) !== 32) { throw new Error(\"invalid response - sendTransaction\"); }\n\n const result = <TransactionResponse>tx;\n\n // Check the hash we expect is the same as the hash the server reported\n if (hash != null && tx.hash !== hash) {\n logger.throwError(\"Transaction hash mismatch from Provider.sendTransaction.\", Logger.errors.UNKNOWN_ERROR, { expectedHash: tx.hash, returnedHash: hash });\n }\n\n result.wait = async (confirms?: number, timeout?: number) => {\n if (confirms == null) { confirms = 1; }\n if (timeout == null) { timeout = 0; }\n\n // Get the details to detect replacement\n let replacement = undefined;\n if (confirms !== 0 && startBlock != null) {\n replacement = {\n data: tx.data,\n from: tx.from,\n nonce: tx.nonce,\n to: tx.to,\n value: tx.value,\n startBlock\n };\n }\n\n const receipt = await this._waitForTransaction(tx.hash, confirms, timeout, replacement);\n if (receipt == null && confirms === 0) { return null; }\n\n // No longer pending, allow the polling loop to garbage collect this\n this._emitted[\"t:\" + tx.hash] = receipt.blockNumber;\n\n if (receipt.status === 0) {\n logger.throwError(\"transaction failed\", Logger.errors.CALL_EXCEPTION, {\n transactionHash: tx.hash,\n transaction: tx,\n receipt: receipt\n });\n }\n return receipt;\n };\n\n return result;\n }\n\n async sendTransaction(signedTransaction: string | Promise<string>): Promise<TransactionResponse> {\n await this.getNetwork();\n const hexTx = await Promise.resolve(signedTransaction).then(t => hexlify(t));\n const tx = this.formatter.transaction(signedTransaction);\n if (tx.confirmations == null) { tx.confirmations = 0; }\n const blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n try {\n const hash = await this.perform(\"sendTransaction\", { signedTransaction: hexTx });\n return this._wrapTransaction(tx, hash, blockNumber);\n } catch (error) {\n (<any>error).transaction = tx;\n (<any>error).transactionHash = tx.hash;\n throw error;\n }\n }\n\n async _getTransactionRequest(transaction: Deferrable<TransactionRequest>): Promise<Transaction> {\n const values: any = await transaction;\n\n const tx: any = { };\n\n [\"from\", \"to\"].forEach((key) => {\n if (values[key] == null) { return; }\n tx[key] = Promise.resolve(values[key]).then((v) => (v ? this._getAddress(v): null))\n });\n\n [\"gasLimit\", \"gasPrice\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"value\"].forEach((key) => {\n if (values[key] == null) { return; }\n tx[key] = Promise.resolve(values[key]).then((v) => (v ? BigNumber.from(v): null));\n });\n\n [\"type\"].forEach((key) => {\n if (values[key] == null) { return; }\n tx[key] = Promise.resolve(values[key]).then((v) => ((v != null) ? v: null));\n });\n\n if (values.accessList) {\n tx.accessList = this.formatter.accessList(values.accessList);\n }\n\n [\"data\"].forEach((key) => {\n if (values[key] == null) { return; }\n tx[key] = Promise.resolve(values[key]).then((v) => (v ? hexlify(v): null));\n });\n\n return this.formatter.transactionRequest(await resolveProperties(tx));\n }\n\n async _getFilter(filter: Filter | FilterByBlockHash | Promise<Filter | FilterByBlockHash>): Promise<Filter | FilterByBlockHash> {\n filter = await filter;\n\n const result: any = { };\n\n if (filter.address != null) {\n result.address = this._getAddress(filter.address);\n }\n\n [\"blockHash\", \"topics\"].forEach((key) => {\n if ((<any>filter)[key] == null) { return; }\n result[key] = (<any>filter)[key];\n });\n\n [\"fromBlock\", \"toBlock\"].forEach((key) => {\n if ((<any>filter)[key] == null) { return; }\n result[key] = this._getBlockTag((<any>filter)[key]);\n });\n\n return this.formatter.filter(await resolveProperties(result));\n }\n\n async _call(transaction: TransactionRequest, blockTag: BlockTag, attempt: number): Promise<string> {\n if (attempt >= MAX_CCIP_REDIRECTS) {\n logger.throwError(\"CCIP read exceeded maximum redirections\", Logger.errors.SERVER_ERROR, {\n redirects: attempt, transaction\n });\n }\n\n const txSender = transaction.to;\n\n const result = await this.perform(\"call\", { transaction, blockTag });\n\n // CCIP Read request via OffchainLookup(address,string[],bytes,bytes4,bytes)\n if (attempt >= 0 && blockTag === \"latest\" && txSender != null && result.substring(0, 10) === \"0x556f1830\" && (hexDataLength(result) % 32 === 4)) {\n try {\n const data = hexDataSlice(result, 4);\n\n // Check the sender of the OffchainLookup matches the transaction\n const sender = hexDataSlice(data, 0, 32);\n if (!BigNumber.from(sender).eq(txSender)) {\n logger.throwError(\"CCIP Read sender did not match\", Logger.errors.CALL_EXCEPTION, {\n name: \"OffchainLookup\",\n signature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n transaction, data: result\n });\n }\n\n // Read the URLs from the response\n const urls: Array<string> = [];\n const urlsOffset = BigNumber.from(hexDataSlice(data, 32, 64)).toNumber();\n const urlsLength = BigNumber.from(hexDataSlice(data, urlsOffset, urlsOffset + 32)).toNumber();\n const urlsData = hexDataSlice(data, urlsOffset + 32);\n for (let u = 0; u < urlsLength; u++) {\n const url = _parseString(urlsData, u * 32);\n if (url == null) {\n logger.throwError(\"CCIP Read contained corrupt URL string\", Logger.errors.CALL_EXCEPTION, {\n name: \"OffchainLookup\",\n signature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n transaction, data: result\n });\n }\n urls.push(url);\n }\n\n // Get the CCIP calldata to forward\n const calldata = _parseBytes(data, 64);\n\n // Get the callbackSelector (bytes4)\n if (!BigNumber.from(hexDataSlice(data, 100, 128)).isZero()) {\n logger.throwError(\"CCIP Read callback selector included junk\", Logger.errors.CALL_EXCEPTION, {\n name: \"OffchainLookup\",\n signature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n transaction, data: result\n });\n }\n const callbackSelector = hexDataSlice(data, 96, 100);\n\n // Get the extra data to send back to the contract as context\n const extraData = _parseBytes(data, 128);\n\n const ccipResult = await this.ccipReadFetch(<Transaction>transaction, calldata, urls);\n if (ccipResult == null) {\n logger.throwError(\"CCIP Read disabled or provided no URLs\", Logger.errors.CALL_EXCEPTION, {\n name: \"OffchainLookup\",\n signature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n transaction, data: result\n });\n }\n\n const tx = {\n to: txSender,\n data: hexConcat([ callbackSelector, encodeBytes([ ccipResult, extraData ]) ])\n };\n\n return this._call(tx, blockTag, attempt + 1);\n\n } catch (error) {\n if (error.code === Logger.errors.SERVER_ERROR) { throw error; }\n }\n }\n\n try {\n return hexlify(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"call\",\n params: { transaction, blockTag }, result, error\n });\n }\n\n }\n\n async call(transaction: Deferrable<TransactionRequest>, blockTag?: BlockTag | Promise<BlockTag>): Promise<string> {\n await this.getNetwork();\n const resolved = await resolveProperties({\n transaction: this._getTransactionRequest(transaction),\n blockTag: this._getBlockTag(blockTag),\n ccipReadEnabled: Promise.resolve(transaction.ccipReadEnabled)\n });\n return this._call(resolved.transaction, resolved.blockTag, resolved.ccipReadEnabled ? 0: -1);\n }\n\n async estimateGas(transaction: Deferrable<TransactionRequest>): Promise<BigNumber> {\n await this.getNetwork();\n const params = await resolveProperties({\n transaction: this._getTransactionRequest(transaction)\n });\n\n const result = await this.perform(\"estimateGas\", params);\n try {\n return BigNumber.from(result);\n } catch (error) {\n return logger.throwError(\"bad result from backend\", Logger.errors.SERVER_ERROR, {\n method: \"estimateGas\",\n params, result, error\n });\n }\n }\n\n async _getAddress(addressOrName: string | Promise<string>): Promise<string> {\n addressOrName = await addressOrName;\n if (typeof(addressOrName) !== \"string\") {\n logger.throwArgumentError(\"invalid address or ENS name\", \"name\", addressOrName);\n }\n\n const address = await this.resolveName(addressOrName);\n if (address == null) {\n logger.throwError(\"ENS name not configured\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: `resolveName(${ JSON.stringify(addressOrName) })`\n });\n }\n return address;\n }\n\n async _getBlock(blockHashOrBlockTag: BlockTag | string | Promise<BlockTag | string>, includeTransactions?: boolean): Promise<Block | BlockWithTransactions> {\n await this.getNetwork();\n\n blockHashOrBlockTag = await blockHashOrBlockTag;\n\n // If blockTag is a number (not \"latest\", etc), this is the block number\n let blockNumber = -128;\n\n const params: { [key: string]: any } = {\n includeTransactions: !!includeTransactions\n };\n\n if (isHexString(blockHashOrBlockTag, 32)) {\n params.blockHash = blockHashOrBlockTag;\n } else {\n try {\n params.blockTag = await this._getBlockTag(blockHashOrBlockTag);\n if (isHexString(params.blockTag)) {\n blockNumber = parseInt(params.blockTag.substring(2), 16);\n }\n } catch (error) {\n logger.throwArgumentError(\"invalid block hash or block tag\", \"blockHashOrBlockTag\", blockHashOrBlockTag);\n }\n }\n\n return poll(async () => {\n const block = await this.perform(\"getBlock\", params);\n\n // Block was not found\n if (block == null) {\n\n // For blockhashes, if we didn't say it existed, that blockhash may\n // not exist. If we did see it though, perhaps from a log, we know\n // it exists, and this node is just not caught up yet.\n if (params.blockHash != null) {\n if (this._emitted[\"b:\" + params.blockHash] == null) { return null; }\n }\n\n // For block tags, if we are asking for a future block, we return null\n if (params.blockTag != null) {\n if (blockNumber > this._emitted.block) { return null; }\n }\n\n // Retry on the next block\n return undefined;\n }\n\n // Add transactions\n if (includeTransactions) {\n let blockNumber: number = null;\n for (let i = 0; i < block.transactions.length; i++) {\n const tx = block.transactions[i];\n if (tx.blockNumber == null) {\n tx.confirmations = 0;\n\n } else if (tx.confirmations == null) {\n if (blockNumber == null) {\n blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n }\n\n // Add the confirmations using the fast block number (pessimistic)\n let confirmations = (blockNumber - tx.blockNumber) + 1;\n if (confirmations <= 0) { confirmations = 1; }\n tx.confirmations = confirmations;\n }\n }\n\n const blockWithTxs: any = this.formatter.blockWithTransactions(block);\n blockWithTxs.transactions = blockWithTxs.transactions.map((tx: TransactionResponse) => this._wrapTransaction(tx));\n return blockWithTxs;\n }\n\n return this.formatter.block(block);\n\n }, { oncePoll: this });\n }\n\n getBlock(blockHashOrBlockTag: BlockTag | string | Promise<BlockTag | string>): Promise<Block> {\n return <Promise<Block>>(this._getBlock(blockHashOrBlockTag, false));\n }\n\n getBlockWithTransactions(blockHashOrBlockTag: BlockTag | string | Promise<BlockTag | string>): Promise<BlockWithTransactions> {\n return <Promise<BlockWithTransactions>>(this._getBlock(blockHashOrBlockTag, true));\n }\n\n async getTransaction(transactionHash: string | Promise<string>): Promise<TransactionResponse> {\n await this.getNetwork();\n transactionHash = await transactionHash;\n\n const params = { transactionHash: this.formatter.hash(transactionHash, true) };\n\n return poll(async () => {\n const result = await this.perform(\"getTransaction\", params);\n\n if (result == null) {\n if (this._emitted[\"t:\" + transactionHash] == null) {\n return null;\n }\n return undefined;\n }\n\n const tx = this.formatter.transactionResponse(result);\n\n if (tx.blockNumber == null) {\n tx.confirmations = 0;\n\n } else if (tx.confirmations == null) {\n const blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n\n // Add the confirmations using the fast block number (pessimistic)\n let confirmations = (blockNumber - tx.blockNumber) + 1;\n if (confirmations <= 0) { confirmations = 1; }\n tx.confirmations = confirmations;\n }\n\n return this._wrapTransaction(tx);\n }, { oncePoll: this });\n }\n\n async getTransactionReceipt(transactionHash: string | Promise<string>): Promise<TransactionReceipt> {\n await this.getNetwork();\n\n transactionHash = await transactionHash;\n\n const params = { transactionHash: this.formatter.hash(transactionHash, true) };\n\n return poll(async () => {\n const result = await this.perform(\"getTransactionReceipt\", params);\n\n if (result == null) {\n if (this._emitted[\"t:\" + transactionHash] == null) {\n return null;\n }\n return undefined;\n }\n\n // \"geth-etc\" returns receipts before they are ready\n if (result.blockHash == null) { return undefined; }\n\n const receipt = this.formatter.receipt(result);\n\n if (receipt.blockNumber == null) {\n receipt.confirmations = 0;\n\n } else if (receipt.confirmations == null) {\n const blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n\n // Add the confirmations using the fast block number (pessimistic)\n let confirmations = (blockNumber - receipt.blockNumber) + 1;\n if (confirmations <= 0) { confirmations = 1; }\n receipt.confirmations = confirmations;\n }\n\n return receipt;\n }, { oncePoll: this });\n }\n\n async getLogs(filter: Filter | FilterByBlockHash | Promise<Filter | FilterByBlockHash>): Promise<Array<Log>> {\n await this.getNetwork();\n const params = await resolveProperties({ filter: this._getFilter(filter) });\n const logs: Array<Log> = await this.perform(\"getLogs\", params);\n logs.forEach((log) => {\n if (log.removed == null) { log.removed = false; }\n });\n return Formatter.arrayOf(this.formatter.filterLog.bind(this.formatter))(logs);\n }\n\n async getEtherPrice(): Promise<number> {\n await this.getNetwork();\n return this.perform(\"getEtherPrice\", { });\n }\n\n async _getBlockTag(blockTag: BlockTag | Promise<BlockTag>): Promise<BlockTag> {\n blockTag = await blockTag;\n\n if (typeof(blockTag) === \"number\" && blockTag < 0) {\n if (blockTag % 1) {\n logger.throwArgumentError(\"invalid BlockTag\", \"blockTag\", blockTag);\n }\n\n let blockNumber = await this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n blockNumber += blockTag;\n if (blockNumber < 0) { blockNumber = 0; }\n return this.formatter.blockTag(blockNumber)\n }\n\n return this.formatter.blockTag(blockTag);\n }\n\n\n async getResolver(name: string): Promise<null | Resolver> {\n let currentName = name;\n while (true) {\n if (currentName === \"\" || currentName === \".\") { return null; }\n\n // Optimization since the eth node cannot change and does\n // not have a wildcard resolver\n if (name !== \"eth\" && currentName === \"eth\") { return null; }\n\n // Check the current node for a resolver\n const addr = await this._getResolver(currentName, \"getResolver\");\n\n // Found a resolver!\n if (addr != null) {\n const resolver = new Resolver(this, addr, name);\n\n // Legacy resolver found, using EIP-2544 so it isn't safe to use\n if (currentName !== name && !(await resolver.supportsWildcard())) { return null; }\n\n return resolver;\n }\n\n // Get the parent node\n currentName = currentName.split(\".\").slice(1).join(\".\");\n }\n\n }\n\n async _getResolver(name: string, operation?: string): Promise<string> {\n if (operation == null) { operation = \"ENS\"; }\n\n const network = await this.getNetwork();\n\n // No ENS...\n if (!network.ensAddress) {\n logger.throwError(\n \"network does not support ENS\",\n Logger.errors.UNSUPPORTED_OPERATION,\n { operation, network: network.name }\n );\n }\n\n try {\n // keccak256(\"resolver(bytes32)\")\n const addrData = await this.call({\n to: network.ensAddress,\n data: (\"0x0178b8bf\" + namehash(name).substring(2))\n });\n return this.formatter.callAddress(addrData);\n } catch (error) {\n // ENS registry cannot throw errors on resolver(bytes32)\n }\n\n return null;\n }\n\n async resolveName(name: string | Promise<string>): Promise<null | string> {\n name = await name;\n\n // If it is already an address, nothing to resolve\n try {\n return Promise.resolve(this.formatter.address(name));\n } catch (error) {\n // If is is a hexstring, the address is bad (See #694)\n if (isHexString(name)) { throw error; }\n }\n\n if (typeof(name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name\", \"name\", name);\n }\n\n // Get the addr from the resolver\n const resolver = await this.getResolver(name);\n if (!resolver) { return null; }\n\n return await resolver.getAddress();\n }\n\n async lookupAddress(address: string | Promise<string>): Promise<null | string> {\n address = await address;\n address = this.formatter.address(address);\n\n const node = address.substring(2).toLowerCase() + \".addr.reverse\";\n\n const resolverAddr = await this._getResolver(node, \"lookupAddress\");\n if (resolverAddr == null) { return null; }\n\n // keccak(\"name(bytes32)\")\n const name = _parseString(await this.call({\n to: resolverAddr,\n data: (\"0x691f3431\" + namehash(node).substring(2))\n }), 0);\n\n const addr = await this.resolveName(name);\n if (addr != address) { return null; }\n\n return name;\n }\n\n async getAvatar(nameOrAddress: string): Promise<null | string> {\n let resolver: Resolver = null;\n if (isHexString(nameOrAddress)) {\n // Address; reverse lookup\n const address = this.formatter.address(nameOrAddress);\n\n const node = address.substring(2).toLowerCase() + \".addr.reverse\";\n\n const resolverAddress = await this._getResolver(node, \"getAvatar\");\n if (!resolverAddress) { return null; }\n\n // Try resolving the avatar against the addr.reverse resolver\n resolver = new Resolver(this, resolverAddress, node);\n try {\n const avatar = await resolver.getAvatar();\n if (avatar) { return avatar.url; }\n } catch (error) {\n if (error.code !== Logger.errors.CALL_EXCEPTION) { throw error; }\n }\n\n // Try getting the name and performing forward lookup; allowing wildcards\n try {\n // keccak(\"name(bytes32)\")\n const name = _parseString(await this.call({\n to: resolverAddress,\n data: (\"0x691f3431\" + namehash(node).substring(2))\n }), 0);\n resolver = await this.getResolver(name);\n } catch (error) {\n if (error.code !== Logger.errors.CALL_EXCEPTION) { throw error; }\n return null;\n }\n\n } else {\n // ENS name; forward lookup with wildcard\n resolver = await this.getResolver(nameOrAddress);\n if (!resolver) { return null; }\n }\n\n const avatar = await resolver.getAvatar();\n if (avatar == null) { return null; }\n\n return avatar.url;\n }\n\n perform(method: string, params: any): Promise<any> {\n return logger.throwError(method + \" not implemented\", Logger.errors.NOT_IMPLEMENTED, { operation: method });\n }\n\n _startEvent(event: Event): void {\n this.polling = (this._events.filter((e) => e.pollable()).length > 0);\n }\n\n _stopEvent(event: Event): void {\n this.polling = (this._events.filter((e) => e.pollable()).length > 0);\n }\n\n _addEventListener(eventName: EventType, listener: Listener, once: boolean): this {\n const event = new Event(getEventTag(eventName), listener, once)\n this._events.push(event);\n this._startEvent(event);\n\n return this;\n }\n\n on(eventName: EventType, listener: Listener): this {\n return this._addEventListener(eventName, listener, false);\n }\n\n once(eventName: EventType, listener: Listener): this {\n return this._addEventListener(eventName, listener, true);\n }\n\n\n emit(eventName: EventType, ...args: Array<any>): boolean {\n let result = false;\n\n let stopped: Array<Event> = [ ];\n\n let eventTag = getEventTag(eventName);\n this._events = this._events.filter((event) => {\n if (event.tag !== eventTag) { return true; }\n\n setTimeout(() => {\n event.listener.apply(this, args);\n }, 0);\n\n result = true;\n\n if (event.once) {\n stopped.push(event);\n return false;\n }\n\n return true;\n });\n\n stopped.forEach((event) => { this._stopEvent(event); });\n\n return result;\n }\n\n listenerCount(eventName?: EventType): number {\n if (!eventName) { return this._events.length; }\n\n let eventTag = getEventTag(eventName);\n return this._events.filter((event) => {\n return (event.tag === eventTag);\n }).length;\n }\n\n listeners(eventName?: EventType): Array<Listener> {\n if (eventName == null) {\n return this._events.map((event) => event.listener);\n }\n\n let eventTag = getEventTag(eventName);\n return this._events\n .filter((event) => (event.tag === eventTag))\n .map((event) => event.listener);\n }\n\n off(eventName: EventType, listener?: Listener): this {\n if (listener == null) {\n return this.removeAllListeners(eventName);\n }\n\n const stopped: Array<Event> = [ ];\n\n let found = false;\n\n let eventTag = getEventTag(eventName);\n this._events = this._events.filter((event) => {\n if (event.tag !== eventTag || event.listener != listener) { return true; }\n if (found) { return true; }\n found = true;\n stopped.push(event);\n return false;\n });\n\n stopped.forEach((event) => { this._stopEvent(event); });\n\n return this;\n }\n\n removeAllListeners(eventName?: EventType): this {\n let stopped: Array<Event> = [ ];\n if (eventName == null) {\n stopped = this._events;\n\n this._events = [ ];\n } else {\n const eventTag = getEventTag(eventName);\n this._events = this._events.filter((event) => {\n if (event.tag !== eventTag) { return true; }\n stopped.push(event);\n return false;\n });\n }\n\n stopped.forEach((event) => { this._stopEvent(event); });\n\n return this;\n }\n}\n","\"use strict\";\n\n// See: https://github.com/ethereum/wiki/wiki/JSON-RPC\n\nimport { Provider, TransactionRequest, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { Signer, TypedDataDomain, TypedDataField, TypedDataSigner } from \"@ethersproject/abstract-signer\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { Bytes, hexlify, hexValue, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { _TypedDataEncoder } from \"@ethersproject/hash\";\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { checkProperties, deepCopy, Deferrable, defineReadOnly, getStatic, resolveProperties, shallowCopy } from \"@ethersproject/properties\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { AccessList, accessListify } from \"@ethersproject/transactions\";\nimport { ConnectionInfo, fetchJson, poll } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { BaseProvider, Event } from \"./base-provider\";\n\n\nconst errorGas = [ \"call\", \"estimateGas\" ];\n\nfunction spelunk(value: any, requireData: boolean): null | { message: string, data: null | string } {\n if (value == null) { return null; }\n\n // These *are* the droids we're looking for.\n if (typeof(value.message) === \"string\" && value.message.match(\"reverted\")) {\n const data = isHexString(value.data) ? value.data: null;\n if (!requireData || data) {\n return { message: value.message, data };\n }\n }\n\n // Spelunk further...\n if (typeof(value) === \"object\") {\n for (const key in value) {\n const result = spelunk(value[key], requireData);\n if (result) { return result; }\n }\n return null;\n }\n\n // Might be a JSON string we can further descend...\n if (typeof(value) === \"string\") {\n try {\n return spelunk(JSON.parse(value), requireData);\n } catch (error) { }\n }\n\n return null;\n}\n\nfunction checkError(method: string, error: any, params: any): any {\n\n const transaction = params.transaction || params.signedTransaction;\n\n // Undo the \"convenience\" some nodes are attempting to prevent backwards\n // incompatibility; maybe for v6 consider forwarding reverts as errors\n if (method === \"call\") {\n const result = spelunk(error, true);\n if (result) { return result.data; }\n\n // Nothing descriptive..\n logger.throwError(\"missing revert data in call exception; Transaction reverted without a reason string\", Logger.errors.CALL_EXCEPTION, {\n data: \"0x\", transaction, error\n });\n }\n\n if (method === \"estimateGas\") {\n // Try to find something, with a preference on SERVER_ERROR body\n let result = spelunk(error.body, false);\n if (result == null) { result = spelunk(error, false); }\n\n // Found \"reverted\", this is a CALL_EXCEPTION\n if (result) {\n logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n reason: result.message, method, transaction, error\n });\n }\n }\n\n // @TODO: Should we spelunk for message too?\n\n let message = error.message;\n if (error.code === Logger.errors.SERVER_ERROR && error.error && typeof(error.error.message) === \"string\") {\n message = error.error.message;\n } else if (typeof(error.body) === \"string\") {\n message = error.body;\n } else if (typeof(error.responseText) === \"string\") {\n message = error.responseText;\n }\n message = (message || \"\").toLowerCase();\n\n // \"insufficient funds for gas * price + value + cost(data)\"\n if (message.match(/insufficient funds|base fee exceeds gas limit|InsufficientFunds/i)) {\n logger.throwError(\"insufficient funds for intrinsic transaction cost\", Logger.errors.INSUFFICIENT_FUNDS, {\n error, method, transaction\n });\n }\n\n // \"nonce too low\"\n if (message.match(/nonce (is )?too low/i)) {\n logger.throwError(\"nonce has already been used\", Logger.errors.NONCE_EXPIRED, {\n error, method, transaction\n });\n }\n\n // \"replacement transaction underpriced\"\n if (message.match(/replacement transaction underpriced|transaction gas price.*too low/i)) {\n logger.throwError(\"replacement fee too low\", Logger.errors.REPLACEMENT_UNDERPRICED, {\n error, method, transaction\n });\n }\n\n // \"replacement transaction underpriced\"\n if (message.match(/only replay-protected/i)) {\n logger.throwError(\"legacy pre-eip-155 transactions not supported\", Logger.errors.UNSUPPORTED_OPERATION, {\n error, method, transaction\n });\n }\n\n if (errorGas.indexOf(method) >= 0 && message.match(/gas required exceeds allowance|always failing transaction|execution reverted|revert/)) {\n logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n error, method, transaction\n });\n }\n\n throw error;\n}\n\nfunction timer(timeout: number): Promise<any> {\n return new Promise(function(resolve) {\n setTimeout(resolve, timeout);\n });\n}\n\nfunction getResult(payload: { error?: { code?: number, data?: any, message?: string }, result?: any }): any {\n if (payload.error) {\n // @TODO: not any\n const error: any = new Error(payload.error.message);\n error.code = payload.error.code;\n error.data = payload.error.data;\n throw error;\n }\n\n return payload.result;\n}\n\nfunction getLowerCase(value: string): string {\n if (value) { return value.toLowerCase(); }\n return value;\n}\n\nconst _constructorGuard = {};\n\nexport class JsonRpcSigner extends Signer implements TypedDataSigner {\n readonly provider: JsonRpcProvider;\n _index: number;\n _address: string;\n\n constructor(constructorGuard: any, provider: JsonRpcProvider, addressOrIndex?: string | number) {\n super();\n\n if (constructorGuard !== _constructorGuard) {\n throw new Error(\"do not call the JsonRpcSigner constructor directly; use provider.getSigner\");\n }\n\n defineReadOnly(this, \"provider\", provider);\n\n if (addressOrIndex == null) { addressOrIndex = 0; }\n\n if (typeof(addressOrIndex) === \"string\") {\n defineReadOnly(this, \"_address\", this.provider.formatter.address(addressOrIndex));\n defineReadOnly(this, \"_index\", null);\n\n } else if (typeof(addressOrIndex) === \"number\") {\n defineReadOnly(this, \"_index\", addressOrIndex);\n defineReadOnly(this, \"_address\", null);\n\n } else {\n logger.throwArgumentError(\"invalid address or index\", \"addressOrIndex\", addressOrIndex);\n }\n }\n\n connect(provider: Provider): JsonRpcSigner {\n return logger.throwError(\"cannot alter JSON-RPC Signer connection\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"connect\"\n });\n }\n\n connectUnchecked(): JsonRpcSigner {\n return new UncheckedJsonRpcSigner(_constructorGuard, this.provider, this._address || this._index);\n }\n\n getAddress(): Promise<string> {\n if (this._address) {\n return Promise.resolve(this._address);\n }\n\n return this.provider.send(\"eth_accounts\", []).then((accounts) => {\n if (accounts.length <= this._index) {\n logger.throwError(\"unknown account #\" + this._index, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"getAddress\"\n });\n }\n return this.provider.formatter.address(accounts[this._index])\n });\n }\n\n sendUncheckedTransaction(transaction: Deferrable<TransactionRequest>): Promise<string> {\n transaction = shallowCopy(transaction);\n\n const fromAddress = this.getAddress().then((address) => {\n if (address) { address = address.toLowerCase(); }\n return address;\n });\n\n // The JSON-RPC for eth_sendTransaction uses 90000 gas; if the user\n // wishes to use this, it is easy to specify explicitly, otherwise\n // we look it up for them.\n if (transaction.gasLimit == null) {\n const estimate = shallowCopy(transaction);\n estimate.from = fromAddress;\n transaction.gasLimit = this.provider.estimateGas(estimate);\n }\n\n if (transaction.to != null) {\n transaction.to = Promise.resolve(transaction.to).then(async (to) => {\n if (to == null) { return null; }\n const address = await this.provider.resolveName(to);\n if (address == null) {\n logger.throwArgumentError(\"provided ENS name resolves to null\", \"tx.to\", to);\n }\n return address;\n });\n }\n\n return resolveProperties({\n tx: resolveProperties(transaction),\n sender: fromAddress\n }).then(({ tx, sender }) => {\n\n if (tx.from != null) {\n if (tx.from.toLowerCase() !== sender) {\n logger.throwArgumentError(\"from address mismatch\", \"transaction\", transaction);\n }\n } else {\n tx.from = sender;\n }\n\n const hexTx = (<any>this.provider.constructor).hexlifyTransaction(tx, { from: true });\n\n return this.provider.send(\"eth_sendTransaction\", [ hexTx ]).then((hash) => {\n return hash;\n }, (error) => {\n if (typeof(error.message) === \"string\" && error.message.match(/user denied/i)) {\n logger.throwError(\"user rejected transaction\", Logger.errors.ACTION_REJECTED, {\n action: \"sendTransaction\",\n transaction: tx\n });\n }\n\n return checkError(\"sendTransaction\", error, hexTx);\n });\n });\n }\n\n signTransaction(transaction: Deferrable<TransactionRequest>): Promise<string> {\n return logger.throwError(\"signing transactions is unsupported\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"signTransaction\"\n });\n }\n\n async sendTransaction(transaction: Deferrable<TransactionRequest>): Promise<TransactionResponse> {\n // This cannot be mined any earlier than any recent block\n const blockNumber = await this.provider._getInternalBlockNumber(100 + 2 * this.provider.pollingInterval);\n\n // Send the transaction\n const hash = await this.sendUncheckedTransaction(transaction);\n\n try {\n // Unfortunately, JSON-RPC only provides and opaque transaction hash\n // for a response, and we need the actual transaction, so we poll\n // for it; it should show up very quickly\n return await poll(async () => {\n const tx = await this.provider.getTransaction(hash);\n if (tx === null) { return undefined; }\n return this.provider._wrapTransaction(tx, hash, blockNumber);\n }, { oncePoll: this.provider });\n } catch (error) {\n (<any>error).transactionHash = hash;\n throw error;\n }\n }\n\n async signMessage(message: Bytes | string): Promise<string> {\n const data = ((typeof(message) === \"string\") ? toUtf8Bytes(message): message);\n const address = await this.getAddress();\n try {\n return await this.provider.send(\"personal_sign\", [ hexlify(data), address.toLowerCase() ]);\n } catch (error) {\n if (typeof(error.message) === \"string\" && error.message.match(/user denied/i)) {\n logger.throwError(\"user rejected signing\", Logger.errors.ACTION_REJECTED, {\n action: \"signMessage\",\n from: address,\n messageData: message\n });\n }\n throw error;\n }\n }\n\n async _legacySignMessage(message: Bytes | string): Promise<string> {\n const data = ((typeof(message) === \"string\") ? toUtf8Bytes(message): message);\n const address = await this.getAddress();\n\n try {\n // https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign\n return await this.provider.send(\"eth_sign\", [ address.toLowerCase(), hexlify(data) ]);\n } catch (error) {\n if (typeof(error.message) === \"string\" && error.message.match(/user denied/i)) {\n logger.throwError(\"user rejected signing\", Logger.errors.ACTION_REJECTED, {\n action: \"_legacySignMessage\",\n from: address,\n messageData: message\n });\n }\n throw error;\n }\n }\n\n async _signTypedData(domain: TypedDataDomain, types: Record<string, Array<TypedDataField>>, value: Record<string, any>): Promise<string> {\n // Populate any ENS names (in-place)\n const populated = await _TypedDataEncoder.resolveNames(domain, types, value, (name: string) => {\n return this.provider.resolveName(name);\n });\n\n const address = await this.getAddress();\n\n try {\n return await this.provider.send(\"eth_signTypedData_v4\", [\n address.toLowerCase(),\n JSON.stringify(_TypedDataEncoder.getPayload(populated.domain, types, populated.value))\n ]);\n } catch (error) {\n if (typeof(error.message) === \"string\" && error.message.match(/user denied/i)) {\n logger.throwError(\"user rejected signing\", Logger.errors.ACTION_REJECTED, {\n action: \"_signTypedData\",\n from: address,\n messageData: { domain: populated.domain, types, value: populated.value }\n });\n }\n throw error;\n }\n }\n\n async unlock(password: string): Promise<boolean> {\n const provider = this.provider;\n\n const address = await this.getAddress();\n\n return provider.send(\"personal_unlockAccount\", [ address.toLowerCase(), password, null ]);\n }\n}\n\nclass UncheckedJsonRpcSigner extends JsonRpcSigner {\n sendTransaction(transaction: Deferrable<TransactionRequest>): Promise<TransactionResponse> {\n return this.sendUncheckedTransaction(transaction).then((hash) => {\n return <TransactionResponse>{\n hash: hash,\n nonce: null,\n gasLimit: null,\n gasPrice: null,\n data: null,\n value: null,\n chainId: null,\n confirmations: 0,\n from: null,\n wait: (confirmations?: number) => { return this.provider.waitForTransaction(hash, confirmations); }\n };\n });\n }\n}\n\nconst allowedTransactionKeys: { [ key: string ]: boolean } = {\n chainId: true, data: true, gasLimit: true, gasPrice:true, nonce: true, to: true, value: true,\n type: true, accessList: true,\n maxFeePerGas: true, maxPriorityFeePerGas: true\n}\n\nexport class JsonRpcProvider extends BaseProvider {\n readonly connection: ConnectionInfo;\n\n _pendingFilter: Promise<number>;\n _nextId: number;\n\n // During any given event loop, the results for a given call will\n // all be the same, so we can dedup the calls to save requests and\n // bandwidth. @TODO: Try out generalizing this against send?\n _eventLoopCache: Record<string, Promise<any>>;\n get _cache(): Record<string, Promise<any>> {\n if (this._eventLoopCache == null) {\n this._eventLoopCache = { };\n }\n return this._eventLoopCache;\n }\n\n constructor(url?: ConnectionInfo | string, network?: Networkish) {\n let networkOrReady: Networkish | Promise<Network> = network;\n\n // The network is unknown, query the JSON-RPC for it\n if (networkOrReady == null) {\n networkOrReady = new Promise((resolve, reject) => {\n setTimeout(() => {\n this.detectNetwork().then((network) => {\n resolve(network);\n }, (error) => {\n reject(error);\n });\n }, 0);\n });\n }\n\n super(networkOrReady);\n\n // Default URL\n if (!url) { url = getStatic<() => string>(this.constructor, \"defaultUrl\")(); }\n\n if (typeof(url) === \"string\") {\n defineReadOnly(this, \"connection\",Object.freeze({\n url: url\n }));\n } else {\n defineReadOnly(this, \"connection\", Object.freeze(shallowCopy(url)));\n }\n\n this._nextId = 42;\n }\n\n static defaultUrl(): string {\n return \"http:/\\/localhost:8545\";\n }\n\n detectNetwork(): Promise<Network> {\n if (!this._cache[\"detectNetwork\"]) {\n this._cache[\"detectNetwork\"] = this._uncachedDetectNetwork();\n\n // Clear this cache at the beginning of the next event loop\n setTimeout(() => {\n this._cache[\"detectNetwork\"] = null;\n }, 0);\n }\n return this._cache[\"detectNetwork\"];\n }\n\n async _uncachedDetectNetwork(): Promise<Network> {\n await timer(0);\n\n let chainId = null;\n try {\n chainId = await this.send(\"eth_chainId\", [ ]);\n } catch (error) {\n try {\n chainId = await this.send(\"net_version\", [ ]);\n } catch (error) { }\n }\n\n if (chainId != null) {\n const getNetwork = getStatic<(network: Networkish) => Network>(this.constructor, \"getNetwork\");\n try {\n return getNetwork(BigNumber.from(chainId).toNumber());\n } catch (error) {\n return logger.throwError(\"could not detect network\", Logger.errors.NETWORK_ERROR, {\n chainId: chainId,\n event: \"invalidNetwork\",\n serverError: error\n });\n }\n }\n\n return logger.throwError(\"could not detect network\", Logger.errors.NETWORK_ERROR, {\n event: \"noNetwork\"\n });\n }\n\n getSigner(addressOrIndex?: string | number): JsonRpcSigner {\n return new JsonRpcSigner(_constructorGuard, this, addressOrIndex);\n }\n\n getUncheckedSigner(addressOrIndex?: string | number): UncheckedJsonRpcSigner {\n return this.getSigner(addressOrIndex).connectUnchecked();\n }\n\n listAccounts(): Promise<Array<string>> {\n return this.send(\"eth_accounts\", []).then((accounts: Array<string>) => {\n return accounts.map((a) => this.formatter.address(a));\n });\n }\n\n send(method: string, params: Array<any>): Promise<any> {\n const request = {\n method: method,\n params: params,\n id: (this._nextId++),\n jsonrpc: \"2.0\"\n };\n\n this.emit(\"debug\", {\n action: \"request\",\n request: deepCopy(request),\n provider: this\n });\n\n // We can expand this in the future to any call, but for now these\n // are the biggest wins and do not require any serializing parameters.\n const cache = ([ \"eth_chainId\", \"eth_blockNumber\" ].indexOf(method) >= 0);\n if (cache && this._cache[method]) {\n return this._cache[method];\n }\n\n const result = fetchJson(this.connection, JSON.stringify(request), getResult).then((result) => {\n this.emit(\"debug\", {\n action: \"response\",\n request: request,\n response: result,\n provider: this\n });\n\n return result;\n\n }, (error) => {\n this.emit(\"debug\", {\n action: \"response\",\n error: error,\n request: request,\n provider: this\n });\n\n throw error;\n });\n\n // Cache the fetch, but clear it on the next event loop\n if (cache) {\n this._cache[method] = result;\n setTimeout(() => {\n this._cache[method] = null;\n }, 0);\n }\n\n return result;\n }\n\n prepareRequest(method: string, params: any): [ string, Array<any> ] {\n switch (method) {\n case \"getBlockNumber\":\n return [ \"eth_blockNumber\", [] ];\n\n case \"getGasPrice\":\n return [ \"eth_gasPrice\", [] ];\n\n case \"getBalance\":\n return [ \"eth_getBalance\", [ getLowerCase(params.address), params.blockTag ] ];\n\n case \"getTransactionCount\":\n return [ \"eth_getTransactionCount\", [ getLowerCase(params.address), params.blockTag ] ];\n\n case \"getCode\":\n return [ \"eth_getCode\", [ getLowerCase(params.address), params.blockTag ] ];\n\n case \"getStorageAt\":\n return [ \"eth_getStorageAt\", [ getLowerCase(params.address), hexZeroPad(params.position, 32), params.blockTag ] ];\n\n case \"sendTransaction\":\n return [ \"eth_sendRawTransaction\", [ params.signedTransaction ] ]\n\n case \"getBlock\":\n if (params.blockTag) {\n return [ \"eth_getBlockByNumber\", [ params.blockTag, !!params.includeTransactions ] ];\n } else if (params.blockHash) {\n return [ \"eth_getBlockByHash\", [ params.blockHash, !!params.includeTransactions ] ];\n }\n return null;\n\n case \"getTransaction\":\n return [ \"eth_getTransactionByHash\", [ params.transactionHash ] ];\n\n case \"getTransactionReceipt\":\n return [ \"eth_getTransactionReceipt\", [ params.transactionHash ] ];\n\n case \"call\": {\n const hexlifyTransaction = getStatic<(t: TransactionRequest, a?: { [key: string]: boolean }) => { [key: string]: string }>(this.constructor, \"hexlifyTransaction\");\n return [ \"eth_call\", [ hexlifyTransaction(params.transaction, { from: true }), params.blockTag ] ];\n }\n\n case \"estimateGas\": {\n const hexlifyTransaction = getStatic<(t: TransactionRequest, a?: { [key: string]: boolean }) => { [key: string]: string }>(this.constructor, \"hexlifyTransaction\");\n return [ \"eth_estimateGas\", [ hexlifyTransaction(params.transaction, { from: true }) ] ];\n }\n\n case \"getLogs\":\n if (params.filter && params.filter.address != null) {\n params.filter.address = getLowerCase(params.filter.address);\n }\n return [ \"eth_getLogs\", [ params.filter ] ];\n\n default:\n break;\n }\n\n return null;\n }\n\n async perform(method: string, params: any): Promise<any> {\n // Legacy networks do not like the type field being passed along (which\n // is fair), so we delete type if it is 0 and a non-EIP-1559 network\n if (method === \"call\" || method === \"estimateGas\") {\n const tx = params.transaction;\n if (tx && tx.type != null && BigNumber.from(tx.type).isZero()) {\n // If there are no EIP-1559 properties, it might be non-EIP-1559\n if (tx.maxFeePerGas == null && tx.maxPriorityFeePerGas == null) {\n const feeData = await this.getFeeData();\n if (feeData.maxFeePerGas == null && feeData.maxPriorityFeePerGas == null) {\n // Network doesn't know about EIP-1559 (and hence type)\n params = shallowCopy(params);\n params.transaction = shallowCopy(tx);\n delete params.transaction.type;\n }\n }\n }\n }\n\n const args = this.prepareRequest(method, params);\n\n if (args == null) {\n logger.throwError(method + \" not implemented\", Logger.errors.NOT_IMPLEMENTED, { operation: method });\n }\n try {\n return await this.send(args[0], args[1])\n } catch (error) {\n return checkError(method, error, params);\n }\n }\n\n _startEvent(event: Event): void {\n if (event.tag === \"pending\") { this._startPending(); }\n super._startEvent(event);\n }\n\n _startPending(): void {\n if (this._pendingFilter != null) { return; }\n const self = this;\n\n const pendingFilter: Promise<number> = this.send(\"eth_newPendingTransactionFilter\", []);\n this._pendingFilter = pendingFilter;\n\n pendingFilter.then(function(filterId) {\n function poll() {\n self.send(\"eth_getFilterChanges\", [ filterId ]).then(function(hashes: Array<string>) {\n if (self._pendingFilter != pendingFilter) { return null; }\n\n let seq = Promise.resolve();\n hashes.forEach(function(hash) {\n // @TODO: This should be garbage collected at some point... How? When?\n self._emitted[\"t:\" + hash.toLowerCase()] = \"pending\";\n seq = seq.then(function() {\n return self.getTransaction(hash).then(function(tx) {\n self.emit(\"pending\", tx);\n return null;\n });\n });\n });\n\n return seq.then(function() {\n return timer(1000);\n });\n }).then(function() {\n if (self._pendingFilter != pendingFilter) {\n self.send(\"eth_uninstallFilter\", [ filterId ]);\n return;\n }\n setTimeout(function() { poll(); }, 0);\n\n return null;\n }).catch((error: Error) => { });\n }\n poll();\n\n return filterId;\n }).catch((error: Error) => { });\n }\n\n _stopEvent(event: Event): void {\n if (event.tag === \"pending\" && this.listenerCount(\"pending\") === 0) {\n this._pendingFilter = null;\n }\n super._stopEvent(event);\n }\n\n // Convert an ethers.js transaction into a JSON-RPC transaction\n // - gasLimit => gas\n // - All values hexlified\n // - All numeric values zero-striped\n // - All addresses are lowercased\n // NOTE: This allows a TransactionRequest, but all values should be resolved\n // before this is called\n // @TODO: This will likely be removed in future versions and prepareRequest\n // will be the preferred method for this.\n static hexlifyTransaction(transaction: TransactionRequest, allowExtra?: { [key: string]: boolean }): { [key: string]: string | AccessList } {\n // Check only allowed properties are given\n const allowed = shallowCopy(allowedTransactionKeys);\n if (allowExtra) {\n for (const key in allowExtra) {\n if (allowExtra[key]) { allowed[key] = true; }\n }\n }\n\n checkProperties(transaction, allowed);\n\n const result: { [key: string]: string | AccessList } = {};\n\n // JSON-RPC now requires numeric values to be \"quantity\" values\n [\"chainId\", \"gasLimit\", \"gasPrice\", \"type\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"nonce\", \"value\"].forEach(function(key) {\n if ((<any>transaction)[key] == null) { return; }\n const value = hexValue(BigNumber.from((<any>transaction)[key]));\n if (key === \"gasLimit\") { key = \"gas\"; }\n result[key] = value;\n });\n\n [\"from\", \"to\", \"data\"].forEach(function(key) {\n if ((<any>transaction)[key] == null) { return; }\n result[key] = hexlify((<any>transaction)[key]);\n });\n\n if ((<any>transaction).accessList) {\n result[\"accessList\"] = accessListify((<any>transaction).accessList);\n }\n\n return result;\n }\n}\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\n\nlet WS: any = null;\n\ntry {\n WS = (WebSocket as any);\n if (WS == null) { throw new Error(\"inject please\"); }\n} catch (error) {\n const logger = new Logger(version);\n WS = function() {\n logger.throwError(\"WebSockets not supported in this environment\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new WebSocket()\"\n });\n }\n}\n//export default WS;\n//module.exports = WS;\nexport { WS as WebSocket };\n","\"use strict\";\n\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Event } from \"./base-provider\";\nimport { JsonRpcProvider } from \"./json-rpc-provider\";\nimport { WebSocket } from \"./ws\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n/**\n * Notes:\n *\n * This provider differs a bit from the polling providers. One main\n * difference is how it handles consistency. The polling providers\n * will stall responses to ensure a consistent state, while this\n * WebSocket provider assumes the connected backend will manage this.\n *\n * For example, if a polling provider emits an event which indicates\n * the event occurred in blockhash XXX, a call to fetch that block by\n * its hash XXX, if not present will retry until it is present. This\n * can occur when querying a pool of nodes that are mildly out of sync\n * with each other.\n */\n\nlet NextId = 1;\n\nexport type InflightRequest = {\n callback: (error: Error, result: any) => void;\n payload: string;\n};\n\nexport type Subscription = {\n tag: string;\n processFunc: (payload: any) => void;\n};\n\nexport interface WebSocketLike {\n onopen: ((...args: Array<any>) => any) | null;\n onmessage: ((...args: Array<any>) => any) | null;\n onerror: ((...args: Array<any>) => any) | null;\n\n readyState: number;\n\n send(payload: any): void;\n close(code?: number, reason?: string): void;\n}\n\n// For more info about the Real-time Event API see:\n// https://geth.ethereum.org/docs/rpc/pubsub\n\nexport class WebSocketProvider extends JsonRpcProvider {\n readonly _websocket: any;\n readonly _requests: { [ name: string ]: InflightRequest };\n readonly _detectNetwork: Promise<Network>;\n\n // Maps event tag to subscription ID (we dedupe identical events)\n readonly _subIds: { [ tag: string ]: Promise<string> };\n\n // Maps Subscription ID to Subscription\n readonly _subs: { [ name: string ]: Subscription };\n\n _wsReady: boolean;\n\n constructor(url: string | WebSocketLike, network?: Networkish) {\n\n // This will be added in the future; please open an issue to expedite\n if (network === \"any\") {\n logger.throwError(\"WebSocketProvider does not support 'any' network yet\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"network:any\"\n });\n }\n\n if (typeof(url) === \"string\") {\n super(url, network);\n } else {\n super(\"_websocket\", network);\n }\n\n this._pollingInterval = -1;\n\n this._wsReady = false;\n\n if (typeof(url) === \"string\") {\n defineReadOnly(this, \"_websocket\", new WebSocket(this.connection.url));\n } else {\n defineReadOnly(this, \"_websocket\", url);\n }\n\n defineReadOnly(this, \"_requests\", { });\n defineReadOnly(this, \"_subs\", { });\n defineReadOnly(this, \"_subIds\", { });\n defineReadOnly(this, \"_detectNetwork\", super.detectNetwork());\n\n // Stall sending requests until the socket is open...\n this.websocket.onopen = () => {\n this._wsReady = true;\n Object.keys(this._requests).forEach((id) => {\n this.websocket.send(this._requests[id].payload);\n });\n };\n\n this.websocket.onmessage = (messageEvent: { data: string }) => {\n const data = messageEvent.data;\n const result = JSON.parse(data);\n if (result.id != null) {\n const id = String(result.id);\n const request = this._requests[id];\n delete this._requests[id];\n\n if (result.result !== undefined) {\n request.callback(null, result.result);\n\n this.emit(\"debug\", {\n action: \"response\",\n request: JSON.parse(request.payload),\n response: result.result,\n provider: this\n });\n\n } else {\n let error: Error = null;\n if (result.error) {\n error = new Error(result.error.message || \"unknown error\");\n defineReadOnly(<any>error, \"code\", result.error.code || null);\n defineReadOnly(<any>error, \"response\", data);\n } else {\n error = new Error(\"unknown error\");\n }\n\n request.callback(error, undefined);\n\n this.emit(\"debug\", {\n action: \"response\",\n error: error,\n request: JSON.parse(request.payload),\n provider: this\n });\n\n }\n\n } else if (result.method === \"eth_subscription\") {\n // Subscription...\n const sub = this._subs[result.params.subscription];\n if (sub) {\n //this.emit.apply(this, );\n sub.processFunc(result.params.result)\n }\n\n } else {\n console.warn(\"this should not happen\");\n }\n };\n\n // This Provider does not actually poll, but we want to trigger\n // poll events for things that depend on them (like stalling for\n // block and transaction lookups)\n const fauxPoll = setInterval(() => {\n this.emit(\"poll\");\n }, 1000);\n if (fauxPoll.unref) { fauxPoll.unref(); }\n }\n\n // Cannot narrow the type of _websocket, as that is not backwards compatible\n // so we add a getter and let the WebSocket be a public API.\n get websocket(): WebSocketLike { return this._websocket; }\n\n detectNetwork(): Promise<Network> {\n return this._detectNetwork;\n }\n\n get pollingInterval(): number {\n return 0;\n }\n\n resetEventsBlock(blockNumber: number): void {\n logger.throwError(\"cannot reset events block on WebSocketProvider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"resetEventBlock\"\n });\n }\n\n set pollingInterval(value: number) {\n logger.throwError(\"cannot set polling interval on WebSocketProvider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setPollingInterval\"\n });\n }\n\n async poll(): Promise<void> {\n return null;\n }\n\n set polling(value: boolean) {\n if (!value) { return; }\n\n logger.throwError(\"cannot set polling on WebSocketProvider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setPolling\"\n });\n }\n\n send(method: string, params?: Array<any>): Promise<any> {\n const rid = NextId++;\n\n return new Promise((resolve, reject) => {\n function callback(error: Error, result: any) {\n if (error) { return reject(error); }\n return resolve(result);\n }\n\n const payload = JSON.stringify({\n method: method,\n params: params,\n id: rid,\n jsonrpc: \"2.0\"\n });\n\n this.emit(\"debug\", {\n action: \"request\",\n request: JSON.parse(payload),\n provider: this\n });\n\n this._requests[String(rid)] = { callback, payload };\n\n if (this._wsReady) { this.websocket.send(payload); }\n });\n }\n\n static defaultUrl(): string {\n return \"ws:/\\/localhost:8546\";\n }\n\n async _subscribe(tag: string, param: Array<any>, processFunc: (result: any) => void): Promise<void> {\n let subIdPromise = this._subIds[tag];\n if (subIdPromise == null) {\n subIdPromise = Promise.all(param).then((param) => {\n return this.send(\"eth_subscribe\", param);\n });\n this._subIds[tag] = subIdPromise;\n }\n const subId = await subIdPromise;\n this._subs[subId] = { tag, processFunc };\n }\n\n _startEvent(event: Event): void {\n switch (event.type) {\n case \"block\":\n this._subscribe(\"block\", [ \"newHeads\" ], (result: any) => {\n const blockNumber = BigNumber.from(result.number).toNumber();\n this._emitted.block = blockNumber;\n this.emit(\"block\", blockNumber);\n });\n break;\n\n case \"pending\":\n this._subscribe(\"pending\", [ \"newPendingTransactions\" ], (result: any) => {\n this.emit(\"pending\", result);\n });\n break;\n\n case \"filter\":\n this._subscribe(event.tag, [ \"logs\", this._getFilter(event.filter) ], (result: any) => {\n if (result.removed == null) { result.removed = false; }\n this.emit(event.filter, this.formatter.filterLog(result));\n });\n break;\n\n case \"tx\": {\n const emitReceipt = (event: Event) => {\n const hash = event.hash;\n this.getTransactionReceipt(hash).then((receipt) => {\n if (!receipt) { return; }\n this.emit(hash, receipt);\n });\n };\n\n // In case it is already mined\n emitReceipt(event);\n\n // To keep things simple, we start up a single newHeads subscription\n // to keep an eye out for transactions we are watching for.\n // Starting a subscription for an event (i.e. \"tx\") that is already\n // running is (basically) a nop.\n this._subscribe(\"tx\", [ \"newHeads\" ], (result: any) => {\n this._events.filter((e) => (e.type === \"tx\")).forEach(emitReceipt);\n });\n break;\n }\n\n // Nothing is needed\n case \"debug\":\n case \"poll\":\n case \"willPoll\":\n case \"didPoll\":\n case \"error\":\n break;\n\n default:\n console.log(\"unhandled:\", event);\n break;\n }\n }\n\n _stopEvent(event: Event): void {\n let tag = event.tag;\n\n if (event.type === \"tx\") {\n // There are remaining transaction event listeners\n if (this._events.filter((e) => (e.type === \"tx\")).length) {\n return;\n }\n tag = \"tx\";\n } else if (this.listenerCount(event.event)) {\n // There are remaining event listeners\n return;\n }\n\n const subId = this._subIds[tag];\n if (!subId) { return; }\n\n delete this._subIds[tag];\n subId.then((subId) => {\n if (!this._subs[subId]) { return; }\n delete this._subs[subId];\n this.send(\"eth_unsubscribe\", [ subId ]);\n });\n }\n\n async destroy(): Promise<void> {\n // Wait until we have connected before trying to disconnect\n if (this.websocket.readyState === WebSocket.CONNECTING) {\n await (new Promise((resolve) => {\n this.websocket.onopen = function() {\n resolve(true);\n };\n\n this.websocket.onerror = function() {\n resolve(false);\n };\n }));\n }\n\n // Hangup\n // See: https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent#Status_codes\n this.websocket.close(1000);\n }\n}\n","\n\"use strict\";\n\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { defineReadOnly, getStatic } from \"@ethersproject/properties\";\nimport { ConnectionInfo } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { CommunityResourcable } from \"./formatter\";\nimport { JsonRpcProvider, JsonRpcSigner } from \"./json-rpc-provider\";\n\ntype getUrlFunc = (network: Network, apiKey: string) => string | ConnectionInfo;\n\n// A StaticJsonRpcProvider is useful when you *know* for certain that\n// the backend will never change, as it never calls eth_chainId to\n// verify its backend. However, if the backend does change, the effects\n// are undefined and may include:\n// - inconsistent results\n// - locking up the UI\n// - block skew warnings\n// - wrong results\n// If the network is not explicit (i.e. auto-detection is expected), the\n// node MUST be running and available to respond to requests BEFORE this\n// is instantiated.\nexport class StaticJsonRpcProvider extends JsonRpcProvider {\n async detectNetwork(): Promise<Network> {\n let network = this.network;\n if (network == null) {\n network = await super.detectNetwork();\n\n if (!network) {\n logger.throwError(\"no network detected\", Logger.errors.UNKNOWN_ERROR, { });\n }\n\n // If still not set, set it\n if (this._network == null) {\n // A static network does not support \"any\"\n defineReadOnly(this, \"_network\", network);\n\n this.emit(\"network\", network, null);\n }\n }\n return network;\n }\n}\n\nexport abstract class UrlJsonRpcProvider extends StaticJsonRpcProvider implements CommunityResourcable {\n readonly apiKey: any;\n\n constructor(network?: Networkish, apiKey?: any) {\n logger.checkAbstract(new.target, UrlJsonRpcProvider);\n\n // Normalize the Network and API Key\n network = getStatic<(network: Networkish) => Network>(new.target, \"getNetwork\")(network);\n apiKey = getStatic<(apiKey: string) => string>(new.target, \"getApiKey\")(apiKey);\n\n const connection = getStatic<getUrlFunc>(new.target, \"getUrl\")(network, apiKey);\n\n super(connection, network);\n\n if (typeof(apiKey) === \"string\") {\n defineReadOnly(this, \"apiKey\", apiKey);\n } else if (apiKey != null) {\n Object.keys(apiKey).forEach((key) => {\n defineReadOnly<any, any>(this, key, apiKey[key]);\n });\n }\n }\n\n _startPending(): void {\n logger.warn(\"WARNING: API provider does not support pending filters\");\n }\n\n isCommunityResource(): boolean {\n return false;\n }\n\n getSigner(address?: string): JsonRpcSigner {\n return logger.throwError(\n \"API provider does not support signing\",\n Logger.errors.UNSUPPORTED_OPERATION,\n { operation: \"getSigner\" }\n );\n }\n\n listAccounts(): Promise<Array<string>> {\n return Promise.resolve([]);\n }\n\n // Return a defaultApiKey if null, otherwise validate the API key\n static getApiKey(apiKey: any): any {\n return apiKey;\n }\n\n // Returns the url or connection for the given network and API key. The\n // API key will have been sanitized by the getApiKey first, so any validation\n // or transformations can be done there.\n static getUrl(network: Network, apiKey: any): string | ConnectionInfo {\n return logger.throwError(\"not implemented; sub-classes must override getUrl\", Logger.errors.NOT_IMPLEMENTED, {\n operation: \"getUrl\"\n });\n }\n}\n","\"use strict\";\n\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { ConnectionInfo } from \"@ethersproject/web\";\n\nimport { CommunityResourcable, showThrottleMessage } from \"./formatter\";\nimport { WebSocketProvider } from \"./websocket-provider\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\n// This key was provided to ethers.js by Alchemy to be used by the\n// default provider, but it is recommended that for your own\n// production environments, that you acquire your own API key at:\n// https://dashboard.alchemyapi.io\n\nconst defaultApiKey = \"_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC\"\n\nexport class AlchemyWebSocketProvider extends WebSocketProvider implements CommunityResourcable {\n readonly apiKey: string;\n\n constructor(network?: Networkish, apiKey?: any) {\n const provider = new AlchemyProvider(network, apiKey);\n\n const url = provider.connection.url.replace(/^http/i, \"ws\")\n .replace(\".alchemyapi.\", \".ws.alchemyapi.\");\n\n super(url, provider.network);\n defineReadOnly(this, \"apiKey\", provider.apiKey);\n }\n\n isCommunityResource(): boolean {\n return (this.apiKey === defaultApiKey);\n }\n}\n\nexport class AlchemyProvider extends UrlJsonRpcProvider {\n\n static getWebSocketProvider(network?: Networkish, apiKey?: any): AlchemyWebSocketProvider {\n return new AlchemyWebSocketProvider(network, apiKey);\n }\n\n static getApiKey(apiKey: any): any {\n if (apiKey == null) { return defaultApiKey; }\n if (apiKey && typeof(apiKey) !== \"string\") {\n logger.throwArgumentError(\"invalid apiKey\", \"apiKey\", apiKey);\n }\n return apiKey;\n }\n\n static getUrl(network: Network, apiKey: string): ConnectionInfo {\n let host = null;\n switch (network.name) {\n case \"homestead\":\n host = \"eth-mainnet.alchemyapi.io/v2/\";\n break;\n case \"goerli\":\n host = \"eth-goerli.g.alchemy.com/v2/\";\n break;\n case \"sepolia\":\n host = \"eth-sepolia.g.alchemy.com/v2/\";\n break;\n case \"matic\":\n host = \"polygon-mainnet.g.alchemy.com/v2/\";\n break;\n case \"maticmum\":\n host = \"polygon-mumbai.g.alchemy.com/v2/\";\n break;\n case \"arbitrum\":\n host = \"arb-mainnet.g.alchemy.com/v2/\";\n break;\n case \"arbitrum-goerli\":\n host = \"arb-goerli.g.alchemy.com/v2/\";\n break;\n case \"arbitrum-sepolia\":\n host = \"arb-sepolia.g.alchemy.com/v2/\";\n break;\n case \"optimism\":\n host = \"opt-mainnet.g.alchemy.com/v2/\";\n break;\n case \"optimism-goerli\":\n host = \"opt-goerli.g.alchemy.com/v2/\"\n break;\n case \"optimism-sepolia\":\n host = \"opt-sepolia.g.alchemy.com/v2/\"\n break;\n default:\n logger.throwArgumentError(\"unsupported network\", \"network\", arguments[0]);\n }\n\n return {\n allowGzip: true,\n url: (\"https:/\" + \"/\" + host + apiKey),\n throttleCallback: (attempt: number, url: string) => {\n if (apiKey === defaultApiKey) {\n showThrottleMessage();\n }\n return Promise.resolve(true);\n }\n };\n }\n\n isCommunityResource(): boolean {\n return (this.apiKey === defaultApiKey);\n }\n}\n","\nimport { Network } from \"@ethersproject/networks\";\n\nimport { showThrottleMessage } from \"./formatter\";\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\nimport type { ConnectionInfo } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n\nconst defaultApiKey = \"9f7d929b018cdffb338517efa06f58359e86ff1ffd350bc889738523659e7972\";\n\nfunction getHost(name: string): string {\n switch (name) {\n case \"homestead\":\n return \"rpc.ankr.com/eth/\";\n case \"ropsten\":\n return \"rpc.ankr.com/eth_ropsten/\";\n case \"rinkeby\":\n return \"rpc.ankr.com/eth_rinkeby/\";\n case \"goerli\":\n return \"rpc.ankr.com/eth_goerli/\";\n case \"sepolia\":\n return \"rpc.ankr.com/eth_sepolia/\";\n\n case \"matic\":\n return \"rpc.ankr.com/polygon/\";\n case \"maticmum\":\n return \"rpc.ankr.com/polygon_mumbai/\";\n\n case \"optimism\":\n return \"rpc.ankr.com/optimism/\";\n case \"optimism-goerli\":\n return \"rpc.ankr.com/optimism_testnet/\";\n case \"optimism-sepolia\":\n return \"rpc.ankr.com/optimism_sepolia/\";\n\n case \"arbitrum\":\n return \"rpc.ankr.com/arbitrum/\";\n }\n return logger.throwArgumentError(\"unsupported network\", \"name\", name);\n}\n\nexport class AnkrProvider extends UrlJsonRpcProvider {\n readonly apiKey: string;\n\n isCommunityResource(): boolean {\n return (this.apiKey === defaultApiKey);\n }\n\n static getApiKey(apiKey: any): any {\n if (apiKey == null) { return defaultApiKey; }\n return apiKey;\n }\n\n static getUrl(network: Network, apiKey: any): ConnectionInfo {\n if (apiKey == null) { apiKey = defaultApiKey; }\n const connection: ConnectionInfo = {\n allowGzip: true,\n url: (\"https:/\\/\" + getHost(network.name) + apiKey),\n throttleCallback: (attempt: number, url: string) => {\n if (apiKey.apiKey === defaultApiKey) {\n showThrottleMessage();\n }\n return Promise.resolve(true);\n }\n };\n\n if (apiKey.projectSecret != null) {\n connection.user = \"\";\n connection.password = apiKey.projectSecret\n }\n\n return connection;\n }\n}\n","\"use strict\";\n\nimport { Network } from \"@ethersproject/networks\";\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport class CloudflareProvider extends UrlJsonRpcProvider {\n\n static getApiKey(apiKey: any): any {\n if (apiKey != null) {\n logger.throwArgumentError(\"apiKey not supported for cloudflare\", \"apiKey\", apiKey);\n }\n return null;\n }\n\n static getUrl(network: Network, apiKey?: any): string {\n let host = null;\n switch (network.name) {\n case \"homestead\":\n host = \"https://cloudflare-eth.com/\";\n break;\n default:\n logger.throwArgumentError(\"unsupported network\", \"network\", arguments[0]);\n }\n\n return host;\n }\n\n async perform(method: string, params: any): Promise<any> {\n // The Cloudflare provider does not support eth_blockNumber,\n // so we get the latest block and pull it from that\n if (method === \"getBlockNumber\") {\n const block = await super.perform(\"getBlock\", { blockTag: \"latest\" });\n return block.number;\n }\n\n return super.perform(method, params);\n }\n}\n","\"use strict\";\n\nimport { BlockTag, TransactionRequest, TransactionResponse } from \"@ethersproject/abstract-provider\";\nimport { hexlify, hexValue, isHexString } from \"@ethersproject/bytes\";\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { deepCopy, defineReadOnly } from \"@ethersproject/properties\";\nimport { accessListify } from \"@ethersproject/transactions\";\nimport { ConnectionInfo, fetchJson } from \"@ethersproject/web\";\n\nimport { showThrottleMessage } from \"./formatter\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { BaseProvider } from \"./base-provider\";\n\n\n// The transaction has already been sanitized by the calls in Provider\nfunction getTransactionPostData(transaction: TransactionRequest): Record<string, string> {\n const result: Record<string, string> = { };\n for (let key in transaction) {\n if ((<any>transaction)[key] == null) { continue; }\n let value = (<any>transaction)[key];\n if (key === \"type\" && value === 0) { continue; }\n\n // Quantity-types require no leading zero, unless 0\n if ((<any>{ type: true, gasLimit: true, gasPrice: true, maxFeePerGs: true, maxPriorityFeePerGas: true, nonce: true, value: true })[key]) {\n value = hexValue(hexlify(value));\n } else if (key === \"accessList\") {\n value = \"[\" + accessListify(value).map((set) => {\n return `{address:\"${ set.address }\",storageKeys:[\"${ set.storageKeys.join('\",\"') }\"]}`;\n }).join(\",\") + \"]\";\n } else {\n value = hexlify(value);\n }\n result[key] = value;\n }\n return result;\n}\n\nfunction getResult(result: { status?: number, message?: string, result?: any }): any {\n // getLogs, getHistory have weird success responses\n if (result.status == 0 && (result.message === \"No records found\" || result.message === \"No transactions found\")) {\n return result.result;\n }\n\n if (result.status != 1 || typeof(result.message) !== \"string\" || !result.message.match(/^OK/)) {\n const error: any = new Error(\"invalid response\");\n error.result = JSON.stringify(result);\n if ((result.result || \"\").toLowerCase().indexOf(\"rate limit\") >= 0) {\n error.throttleRetry = true;\n }\n throw error;\n }\n\n return result.result;\n}\n\nfunction getJsonResult(result: { jsonrpc: string, result?: any, error?: { code?: number, data?: any, message?: string} } ): any {\n // This response indicates we are being throttled\n if (result && (<any>result).status == 0 && (<any>result).message == \"NOTOK\" && (result.result || \"\").toLowerCase().indexOf(\"rate limit\") >= 0) {\n const error: any = new Error(\"throttled response\");\n error.result = JSON.stringify(result);\n error.throttleRetry = true;\n throw error;\n }\n\n if (result.jsonrpc != \"2.0\") {\n // @TODO: not any\n const error: any = new Error(\"invalid response\");\n error.result = JSON.stringify(result);\n throw error;\n }\n\n if (result.error) {\n // @TODO: not any\n const error: any = new Error(result.error.message || \"unknown error\");\n if (result.error.code) { error.code = result.error.code; }\n if (result.error.data) { error.data = result.error.data; }\n throw error;\n }\n\n return result.result;\n}\n\n// The blockTag was normalized as a string by the Provider pre-perform operations\nfunction checkLogTag(blockTag: string): number | \"latest\" {\n if (blockTag === \"pending\") { throw new Error(\"pending not supported\"); }\n if (blockTag === \"latest\") { return blockTag; }\n\n return parseInt(blockTag.substring(2), 16);\n}\n\n\nfunction checkError(method: string, error: any, transaction: any): any {\n // Undo the \"convenience\" some nodes are attempting to prevent backwards\n // incompatibility; maybe for v6 consider forwarding reverts as errors\n if (method === \"call\" && error.code === Logger.errors.SERVER_ERROR) {\n const e = error.error;\n\n // Etherscan keeps changing their string\n if (e && (e.message.match(/reverted/i) || e.message.match(/VM execution error/i))) {\n // Etherscan prefixes the data like \"Reverted 0x1234\"\n let data = e.data;\n if (data) { data = \"0x\" + data.replace(/^.*0x/i, \"\"); }\n\n if (isHexString(data)) { return data; }\n\n logger.throwError(\"missing revert data in call exception\", Logger.errors.CALL_EXCEPTION, {\n error, data: \"0x\"\n });\n }\n }\n\n // Get the message from any nested error structure\n let message = error.message;\n if (error.code === Logger.errors.SERVER_ERROR) {\n if (error.error && typeof(error.error.message) === \"string\") {\n message = error.error.message;\n } else if (typeof(error.body) === \"string\") {\n message = error.body;\n } else if (typeof(error.responseText) === \"string\") {\n message = error.responseText;\n }\n }\n message = (message || \"\").toLowerCase();\n\n // \"Insufficient funds. The account you tried to send transaction from does not have enough funds. Required 21464000000000 and got: 0\"\n if (message.match(/insufficient funds/)) {\n logger.throwError(\"insufficient funds for intrinsic transaction cost\", Logger.errors.INSUFFICIENT_FUNDS, {\n error, method, transaction\n });\n }\n\n // \"Transaction with the same hash was already imported.\"\n if (message.match(/same hash was already imported|transaction nonce is too low|nonce too low/)) {\n logger.throwError(\"nonce has already been used\", Logger.errors.NONCE_EXPIRED, {\n error, method, transaction\n });\n }\n\n // \"Transaction gas price is too low. There is another transaction with same nonce in the queue. Try increasing the gas price or incrementing the nonce.\"\n if (message.match(/another transaction with same nonce/)) {\n logger.throwError(\"replacement fee too low\", Logger.errors.REPLACEMENT_UNDERPRICED, {\n error, method, transaction\n });\n }\n\n if (message.match(/execution failed due to an exception|execution reverted/)) {\n logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n error, method, transaction\n });\n }\n\n throw error;\n}\n\nexport class EtherscanProvider extends BaseProvider{\n readonly baseUrl: string;\n readonly apiKey: string | null;\n\n constructor(network?: Networkish, apiKey?: string) {\n super(network);\n\n defineReadOnly(this, \"baseUrl\", this.getBaseUrl());\n defineReadOnly(this, \"apiKey\", apiKey || null);\n }\n\n getBaseUrl(): string {\n switch(this.network ? this.network.name: \"invalid\") {\n case \"homestead\":\n return \"https:/\\/api.etherscan.io\";\n case \"goerli\":\n return \"https:/\\/api-goerli.etherscan.io\";\n case \"sepolia\":\n return \"https:/\\/api-sepolia.etherscan.io\";\n case \"matic\":\n return \"https:/\\/api.polygonscan.com\";\n case \"maticmum\":\n return \"https:/\\/api-testnet.polygonscan.com\";\n case \"arbitrum\":\n return \"https:/\\/api.arbiscan.io\";\n case \"arbitrum-goerli\":\n return \"https:/\\/api-goerli.arbiscan.io\";\n case \"optimism\":\n return \"https:/\\/api-optimistic.etherscan.io\";\n case \"optimism-goerli\":\n return \"https:/\\/api-goerli-optimistic.etherscan.io\";\n default:\n }\n\n return logger.throwArgumentError(\"unsupported network\", \"network\", this.network.name);\n }\n\n getUrl(module: string, params: Record<string, string>): string {\n const query = Object.keys(params).reduce((accum, key) => {\n const value = params[key];\n if (value != null) {\n accum += `&${ key }=${ value }`\n }\n return accum\n }, \"\");\n const apiKey = ((this.apiKey) ? `&apikey=${ this.apiKey }`: \"\");\n return `${ this.baseUrl }/api?module=${ module }${ query }${ apiKey }`;\n }\n\n getPostUrl(): string {\n return `${ this.baseUrl }/api`;\n }\n\n getPostData(module: string, params: Record<string, any>): Record<string, any> {\n params.module = module;\n params.apikey = this.apiKey;\n return params;\n }\n\n async fetch(module: string, params: Record<string, any>, post?: boolean): Promise<any> {\n const url = (post ? this.getPostUrl(): this.getUrl(module, params));\n const payload = (post ? this.getPostData(module, params): null);\n const procFunc = (module === \"proxy\") ? getJsonResult: getResult;\n\n this.emit(\"debug\", {\n action: \"request\",\n request: url,\n provider: this\n });\n\n const connection: ConnectionInfo = {\n url: url,\n throttleSlotInterval: 1000,\n throttleCallback: (attempt: number, url: string) => {\n if (this.isCommunityResource()) {\n showThrottleMessage();\n }\n return Promise.resolve(true);\n }\n };\n\n let payloadStr: string = null;\n if (payload) {\n connection.headers = { \"content-type\": \"application/x-www-form-urlencoded; charset=UTF-8\" };\n payloadStr = Object.keys(payload).map((key) => {\n return `${ key }=${ payload[key] }`\n }).join(\"&\");\n }\n\n const result = await fetchJson(connection, payloadStr, procFunc || getJsonResult);\n\n this.emit(\"debug\", {\n action: \"response\",\n request: url,\n response: deepCopy(result),\n provider: this\n });\n\n return result;\n }\n\n async detectNetwork(): Promise<Network> {\n return this.network;\n }\n\n async perform(method: string, params: any): Promise<any> {\n\n switch (method) {\n case \"getBlockNumber\":\n return this.fetch(\"proxy\", { action: \"eth_blockNumber\" });\n\n case \"getGasPrice\":\n return this.fetch(\"proxy\", { action: \"eth_gasPrice\" });\n\n case \"getBalance\":\n // Returns base-10 result\n return this.fetch(\"account\", {\n action: \"balance\",\n address: params.address,\n tag: params.blockTag\n });\n\n case \"getTransactionCount\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionCount\",\n address: params.address,\n tag: params.blockTag\n });\n\n case \"getCode\":\n return this.fetch(\"proxy\", {\n action: \"eth_getCode\",\n address: params.address,\n tag: params.blockTag\n });\n\n case \"getStorageAt\":\n return this.fetch(\"proxy\", {\n action: \"eth_getStorageAt\",\n address: params.address,\n position: params.position,\n tag: params.blockTag\n });\n\n case \"sendTransaction\":\n return this.fetch(\"proxy\", {\n action: \"eth_sendRawTransaction\",\n hex: params.signedTransaction\n }, true).catch((error) => {\n return checkError(\"sendTransaction\", error, params.signedTransaction);\n });\n\n case \"getBlock\":\n if (params.blockTag) {\n return this.fetch(\"proxy\", {\n action: \"eth_getBlockByNumber\",\n tag: params.blockTag,\n boolean: (params.includeTransactions ? \"true\": \"false\")\n });\n }\n throw new Error(\"getBlock by blockHash not implemented\");\n\n case \"getTransaction\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionByHash\",\n txhash: params.transactionHash\n });\n\n case \"getTransactionReceipt\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionReceipt\",\n txhash: params.transactionHash\n });\n\n case \"call\": {\n if (params.blockTag !== \"latest\") {\n throw new Error(\"EtherscanProvider does not support blockTag for call\");\n }\n\n const postData = getTransactionPostData(params.transaction);\n postData.module = \"proxy\";\n postData.action = \"eth_call\";\n\n try {\n return await this.fetch(\"proxy\", postData, true);\n } catch (error) {\n return checkError(\"call\", error, params.transaction);\n }\n }\n\n case \"estimateGas\": {\n const postData = getTransactionPostData(params.transaction);\n postData.module = \"proxy\";\n postData.action = \"eth_estimateGas\";\n\n try {\n return await this.fetch(\"proxy\", postData, true);\n } catch (error) {\n return checkError(\"estimateGas\", error, params.transaction);\n }\n }\n\n case \"getLogs\": {\n const args: Record<string, any> = { action: \"getLogs\" }\n\n if (params.filter.fromBlock) {\n args.fromBlock = checkLogTag(params.filter.fromBlock);\n }\n\n if (params.filter.toBlock) {\n args.toBlock = checkLogTag(params.filter.toBlock);\n }\n\n if (params.filter.address) {\n args.address = params.filter.address;\n }\n\n // @TODO: We can handle slightly more complicated logs using the logs API\n if (params.filter.topics && params.filter.topics.length > 0) {\n if (params.filter.topics.length > 1) {\n logger.throwError(\"unsupported topic count\", Logger.errors.UNSUPPORTED_OPERATION, { topics: params.filter.topics });\n }\n\n if (params.filter.topics.length === 1) {\n const topic0 = params.filter.topics[0];\n if (typeof(topic0) !== \"string\" || topic0.length !== 66) {\n logger.throwError(\"unsupported topic format\", Logger.errors.UNSUPPORTED_OPERATION, { topic0: topic0 });\n }\n args.topic0 = topic0;\n }\n }\n\n const logs: Array<any> = await this.fetch(\"logs\", args);\n\n // Cache txHash => blockHash\n let blocks: { [tag: string]: string } = {};\n\n // Add any missing blockHash to the logs\n for (let i = 0; i < logs.length; i++) {\n const log = logs[i];\n if (log.blockHash != null) { continue; }\n if (blocks[log.blockNumber] == null) {\n const block = await this.getBlock(log.blockNumber);\n if (block) {\n blocks[log.blockNumber] = block.hash;\n }\n }\n log.blockHash = blocks[log.blockNumber];\n }\n\n return logs;\n }\n\n case \"getEtherPrice\":\n if (this.network.name !== \"homestead\") { return 0.0; }\n return parseFloat((await this.fetch(\"stats\", { action: \"ethprice\" })).ethusd);\n\n default:\n break;\n }\n\n return super.perform(method, params);\n }\n\n // Note: The `page` page parameter only allows pagination within the\n // 10,000 window available without a page and offset parameter\n // Error: Result window is too large, PageNo x Offset size must\n // be less than or equal to 10000\n async getHistory(addressOrName: string | Promise<string>, startBlock?: BlockTag, endBlock?: BlockTag): Promise<Array<TransactionResponse>> {\n const params = {\n action: \"txlist\",\n address: (await this.resolveName(addressOrName)),\n startblock: ((startBlock == null) ? 0: startBlock),\n endblock: ((endBlock == null) ? 99999999: endBlock),\n sort: \"asc\"\n };\n\n const result = await this.fetch(\"account\", params);\n\n return result.map((tx: any) => {\n [\"contractAddress\", \"to\"].forEach(function(key) {\n if (tx[key] == \"\") { delete tx[key]; }\n });\n if (tx.creates == null && tx.contractAddress != null) {\n tx.creates = tx.contractAddress;\n }\n const item = this.formatter.transactionResponse(tx);\n if (tx.timeStamp) { item.timestamp = parseInt(tx.timeStamp); }\n return item;\n });\n }\n\n isCommunityResource(): boolean {\n return (this.apiKey == null);\n }\n}\n","\"use strict\";\n\nimport { Block, BlockWithTransactions, Provider } from \"@ethersproject/abstract-provider\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { isHexString } from \"@ethersproject/bytes\";\nimport { Network } from \"@ethersproject/networks\";\nimport { deepCopy, defineReadOnly, shallowCopy } from \"@ethersproject/properties\";\nimport { shuffled } from \"@ethersproject/random\";\nimport { poll } from \"@ethersproject/web\";\n\nimport { BaseProvider } from \"./base-provider\";\nimport { isCommunityResource } from \"./formatter\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nfunction now() { return (new Date()).getTime(); }\n\n// Returns to network as long as all agree, or null if any is null.\n// Throws an error if any two networks do not match.\nfunction checkNetworks(networks: Array<Network>): Network {\n let result = null;\n\n for (let i = 0; i < networks.length; i++) {\n const network = networks[i];\n\n // Null! We do not know our network; bail.\n if (network == null) { return null; }\n\n if (result) {\n // Make sure the network matches the previous networks\n if (!(result.name === network.name && result.chainId === network.chainId &&\n ((result.ensAddress === network.ensAddress) || (result.ensAddress == null && network.ensAddress == null)))) {\n\n logger.throwArgumentError(\"provider mismatch\", \"networks\", networks);\n }\n } else {\n result = network;\n }\n }\n\n return result;\n}\n\nfunction median(values: Array<number>, maxDelta?: number): number {\n values = values.slice().sort();\n const middle = Math.floor(values.length / 2);\n\n // Odd length; take the middle\n if (values.length % 2) {\n return values[middle];\n }\n\n // Even length; take the average of the two middle\n const a = values[middle - 1], b = values[middle];\n\n if (maxDelta != null && Math.abs(a - b) > maxDelta) {\n return null;\n }\n\n return (a + b) / 2;\n}\n\nfunction serialize(value: any): string {\n if (value === null) {\n return \"null\";\n } else if (typeof(value) === \"number\" || typeof(value) === \"boolean\") {\n return JSON.stringify(value);\n } else if (typeof(value) === \"string\") {\n return value;\n } else if (BigNumber.isBigNumber(value)) {\n return value.toString();\n } else if (Array.isArray(value)) {\n return JSON.stringify(value.map((i) => serialize(i)));\n } else if (typeof(value) === \"object\") {\n const keys = Object.keys(value);\n keys.sort();\n return \"{\" + keys.map((key) => {\n let v = value[key];\n if (typeof(v) === \"function\") {\n v = \"[function]\";\n } else {\n v = serialize(v);\n }\n return JSON.stringify(key) + \":\" + v;\n }).join(\",\") + \"}\";\n }\n\n throw new Error(\"unknown value type: \" + typeof(value));\n}\n\n// Next request ID to use for emitting debug info\nlet nextRid = 1;\n\n\nexport interface FallbackProviderConfig {\n // The Provider\n provider: Provider;\n\n // The priority to favour this Provider; lower values are used first (higher priority)\n priority?: number;\n\n // Timeout before also triggering the next provider; this does not stop\n // this provider and if its result comes back before a quorum is reached\n // it will be incorporated into the vote\n // - lower values will cause more network traffic but may result in a\n // faster result.\n stallTimeout?: number;\n\n // How much this provider contributes to the quorum; sometimes a specific\n // provider may be more reliable or trustworthy than others, but usually\n // this should be left as the default\n weight?: number;\n};\n\n// A Staller is used to provide a delay to give a Provider a chance to response\n// before asking the next Provider to try.\ntype Staller = {\n wait: (func: () => void) => Promise<void>\n getPromise: () => Promise<void>,\n cancel: () => void\n};\n\nfunction stall(duration: number): Staller {\n let cancel: () => void = null;\n\n let timer: NodeJS.Timer = null;\n let promise = <Promise<void>>(new Promise((resolve) => {\n cancel = function() {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n resolve();\n }\n timer = setTimeout(cancel, duration);\n }));\n\n const wait = (func: () => void) => {\n promise = promise.then(func);\n return promise;\n }\n\n function getPromise(): Promise<void> {\n return promise;\n }\n\n return { cancel, getPromise, wait };\n}\n\nconst ForwardErrors = [\n Logger.errors.CALL_EXCEPTION,\n Logger.errors.INSUFFICIENT_FUNDS,\n Logger.errors.NONCE_EXPIRED,\n Logger.errors.REPLACEMENT_UNDERPRICED,\n Logger.errors.UNPREDICTABLE_GAS_LIMIT\n];\n\nconst ForwardProperties = [\n \"address\",\n \"args\",\n \"errorArgs\",\n \"errorSignature\",\n \"method\",\n \"transaction\",\n];\n\n\n// @TODO: Make this an object with staller and cancel built-in\ninterface RunningConfig extends FallbackProviderConfig {\n start?: number;\n done?: boolean;\n cancelled?: boolean;\n runner?: Promise<any>;\n staller?: Staller;\n result?: any;\n error?: Error;\n};\n\nfunction exposeDebugConfig(config: RunningConfig, now?: number): any {\n const result: any = {\n weight: config.weight\n };\n Object.defineProperty(result, \"provider\", { get: () => config.provider });\n if (config.start) { result.start = config.start; }\n if (now) { result.duration = (now - config.start); }\n if (config.done) {\n if (config.error) {\n result.error = config.error;\n } else {\n result.result = config.result || null;\n }\n }\n return result;\n}\n\nfunction normalizedTally(normalize: (value: any) => string, quorum: number): (configs: Array<RunningConfig>) => any {\n return function(configs: Array<RunningConfig>): any {\n\n // Count the votes for each result\n const tally: { [ key: string]: { count: number, result: any } } = { };\n configs.forEach((c) => {\n const value = normalize(c.result);\n if (!tally[value]) { tally[value] = { count: 0, result: c.result }; }\n tally[value].count++;\n });\n\n // Check for a quorum on any given result\n const keys = Object.keys(tally);\n for (let i = 0; i < keys.length; i++) {\n const check = tally[keys[i]];\n if (check.count >= quorum) {\n return check.result;\n }\n }\n\n // No quroum\n return undefined;\n }\n}\nfunction getProcessFunc(provider: FallbackProvider, method: string, params: { [ key: string ]: any }): (configs: Array<RunningConfig>) => any {\n\n let normalize = serialize;\n\n switch (method) {\n case \"getBlockNumber\":\n // Return the median value, unless there is (median + 1) is also\n // present, in which case that is probably true and the median\n // is going to be stale soon. In the event of a malicious node,\n // the lie will be true soon enough.\n return function(configs: Array<RunningConfig>): number {\n const values = configs.map((c) => c.result);\n\n // Get the median block number\n let blockNumber = median(configs.map((c) => c.result), 2);\n if (blockNumber == null) { return undefined; }\n\n blockNumber = Math.ceil(blockNumber);\n\n // If the next block height is present, its prolly safe to use\n if (values.indexOf(blockNumber + 1) >= 0) { blockNumber++; }\n\n // Don't ever roll back the blockNumber\n if (blockNumber >= provider._highestBlockNumber) {\n provider._highestBlockNumber = blockNumber;\n }\n\n return provider._highestBlockNumber;\n };\n\n case \"getGasPrice\":\n // Return the middle (round index up) value, similar to median\n // but do not average even entries and choose the higher.\n // Malicious actors must compromise 50% of the nodes to lie.\n return function(configs: Array<RunningConfig>): BigNumber {\n const values = configs.map((c) => c.result);\n values.sort();\n return values[Math.floor(values.length / 2)];\n }\n\n case \"getEtherPrice\":\n // Returns the median price. Malicious actors must compromise at\n // least 50% of the nodes to lie (in a meaningful way).\n return function(configs: Array<RunningConfig>): number {\n return median(configs.map((c) => c.result));\n }\n\n // No additional normalizing required; serialize is enough\n case \"getBalance\":\n case \"getTransactionCount\":\n case \"getCode\":\n case \"getStorageAt\":\n case \"call\":\n case \"estimateGas\":\n case \"getLogs\":\n break;\n\n // We drop the confirmations from transactions as it is approximate\n case \"getTransaction\":\n case \"getTransactionReceipt\":\n normalize = function(tx: any): string {\n if (tx == null) { return null; }\n\n tx = shallowCopy(tx);\n tx.confirmations = -1;\n return serialize(tx);\n }\n break;\n\n // We drop the confirmations from transactions as it is approximate\n case \"getBlock\":\n // We drop the confirmations from transactions as it is approximate\n if (params.includeTransactions) {\n normalize = function(block: BlockWithTransactions): string {\n if (block == null) { return null; }\n\n block = shallowCopy(block);\n block.transactions = block.transactions.map((tx) => {\n tx = shallowCopy(tx);\n tx.confirmations = -1;\n return tx;\n });\n return serialize(block);\n };\n } else {\n normalize = function(block: Block): string {\n if (block == null) { return null; }\n return serialize(block);\n }\n }\n break;\n\n default:\n throw new Error(\"unknown method: \" + method);\n }\n\n // Return the result if and only if the expected quorum is\n // satisfied and agreed upon for the final result.\n return normalizedTally(normalize, provider.quorum);\n\n}\n\n// If we are doing a blockTag query, we need to make sure the backend is\n// caught up to the FallbackProvider, before sending a request to it.\nasync function waitForSync(config: RunningConfig, blockNumber: number): Promise<BaseProvider> {\n const provider = <BaseProvider>(config.provider);\n\n if ((provider.blockNumber != null && provider.blockNumber >= blockNumber) || blockNumber === -1) {\n return provider;\n }\n\n return poll(() => {\n return new Promise((resolve, reject) => {\n setTimeout(function() {\n\n // We are synced\n if (provider.blockNumber >= blockNumber) { return resolve(provider); }\n\n // We're done; just quit\n if (config.cancelled) { return resolve(null); }\n\n // Try again, next block\n return resolve(undefined);\n }, 0);\n });\n }, { oncePoll: provider });\n}\n\nasync function getRunner(config: RunningConfig, currentBlockNumber: number, method: string, params: { [ key: string]: any }): Promise<any> {\n let provider = config.provider;\n\n switch (method) {\n case \"getBlockNumber\":\n case \"getGasPrice\":\n return provider[method]();\n case \"getEtherPrice\":\n if ((<any>provider).getEtherPrice) {\n return (<any>provider).getEtherPrice();\n }\n break;\n case \"getBalance\":\n case \"getTransactionCount\":\n case \"getCode\":\n if (params.blockTag && isHexString(params.blockTag)) {\n provider = await waitForSync(config, currentBlockNumber)\n }\n return provider[method](params.address, params.blockTag || \"latest\");\n case \"getStorageAt\":\n if (params.blockTag && isHexString(params.blockTag)) {\n provider = await waitForSync(config, currentBlockNumber)\n }\n return provider.getStorageAt(params.address, params.position, params.blockTag || \"latest\");\n case \"getBlock\":\n if (params.blockTag && isHexString(params.blockTag)) {\n provider = await waitForSync(config, currentBlockNumber)\n }\n return provider[(params.includeTransactions ? \"getBlockWithTransactions\": \"getBlock\")](params.blockTag || params.blockHash);\n case \"call\":\n case \"estimateGas\":\n if (params.blockTag && isHexString(params.blockTag)) {\n provider = await waitForSync(config, currentBlockNumber)\n }\n if (method === \"call\" && params.blockTag) {\n return provider[method](params.transaction, params.blockTag);\n }\n return provider[method](params.transaction);\n case \"getTransaction\":\n case \"getTransactionReceipt\":\n return provider[method](params.transactionHash);\n case \"getLogs\": {\n let filter = params.filter;\n if ((filter.fromBlock && isHexString(filter.fromBlock)) || (filter.toBlock && isHexString(filter.toBlock))) {\n provider = await waitForSync(config, currentBlockNumber)\n }\n return provider.getLogs(filter);\n }\n }\n\n return logger.throwError(\"unknown method error\", Logger.errors.UNKNOWN_ERROR, {\n method: method,\n params: params\n });\n}\n\nexport class FallbackProvider extends BaseProvider {\n readonly providerConfigs: ReadonlyArray<FallbackProviderConfig>;\n readonly quorum: number;\n\n // Due to the highly asyncronous nature of the blockchain, we need\n // to make sure we never unroll the blockNumber due to our random\n // sample of backends\n _highestBlockNumber: number;\n\n constructor(providers: Array<Provider | FallbackProviderConfig>, quorum?: number) {\n if (providers.length === 0) {\n logger.throwArgumentError(\"missing providers\", \"providers\", providers);\n }\n\n const providerConfigs: Array<FallbackProviderConfig> = providers.map((configOrProvider, index) => {\n if (Provider.isProvider(configOrProvider)) {\n const stallTimeout = isCommunityResource(configOrProvider) ? 2000: 750;\n const priority = 1;\n return Object.freeze({ provider: configOrProvider, weight: 1, stallTimeout, priority });\n }\n\n const config: FallbackProviderConfig = shallowCopy(configOrProvider);\n\n if (config.priority == null) { config.priority = 1; }\n if (config.stallTimeout == null) {\n config.stallTimeout = isCommunityResource(configOrProvider) ? 2000: 750;\n }\n if (config.weight == null) { config.weight = 1; }\n\n const weight = config.weight;\n if (weight % 1 || weight > 512 || weight < 1) {\n logger.throwArgumentError(\"invalid weight; must be integer in [1, 512]\", `providers[${ index }].weight`, weight);\n }\n\n return Object.freeze(config);\n });\n\n const total = providerConfigs.reduce((accum, c) => (accum + c.weight), 0);\n\n if (quorum == null) {\n quorum = total / 2;\n } else if (quorum > total) {\n logger.throwArgumentError(\"quorum will always fail; larger than total weight\", \"quorum\", quorum);\n }\n\n // Are all providers' networks are known\n let networkOrReady: Network | Promise<Network> = checkNetworks(providerConfigs.map((c) => (<any>(c.provider)).network));\n\n // Not all networks are known; we must stall\n if (networkOrReady == null) {\n networkOrReady = new Promise((resolve, reject) => {\n setTimeout(() => {\n this.detectNetwork().then(resolve, reject);\n }, 0);\n });\n }\n\n super(networkOrReady);\n\n // Preserve a copy, so we do not get mutated\n defineReadOnly(this, \"providerConfigs\", Object.freeze(providerConfigs));\n defineReadOnly(this, \"quorum\", quorum);\n\n this._highestBlockNumber = -1;\n }\n\n async detectNetwork(): Promise<Network> {\n const networks = await Promise.all(this.providerConfigs.map((c) => c.provider.getNetwork()));\n return checkNetworks(networks);\n }\n\n async perform(method: string, params: { [name: string]: any }): Promise<any> {\n // Sending transactions is special; always broadcast it to all backends\n if (method === \"sendTransaction\") {\n const results: Array<string | Error> = await Promise.all(this.providerConfigs.map((c) => {\n return c.provider.sendTransaction(params.signedTransaction).then((result) => {\n return result.hash;\n }, (error) => {\n return error;\n });\n }));\n\n // Any success is good enough (other errors are likely \"already seen\" errors\n for (let i = 0; i < results.length; i++) {\n const result = results[i];\n if (typeof(result) === \"string\") { return result; }\n }\n\n // They were all an error; pick the first error\n throw results[0];\n }\n\n // We need to make sure we are in sync with our backends, so we need\n // to know this before we can make a lot of calls\n if (this._highestBlockNumber === -1 && method !== \"getBlockNumber\") {\n await this.getBlockNumber();\n }\n\n const processFunc = getProcessFunc(this, method, params);\n\n // Shuffle the providers and then sort them by their priority; we\n // shallowCopy them since we will store the result in them too\n const configs: Array<RunningConfig> = shuffled(this.providerConfigs.map(shallowCopy));\n configs.sort((a, b) => (a.priority - b.priority));\n\n const currentBlockNumber = this._highestBlockNumber;\n\n let i = 0;\n let first = true;\n while (true) {\n const t0 = now();\n\n // Compute the inflight weight (exclude anything past)\n let inflightWeight = configs.filter((c) => (c.runner && ((t0 - c.start) < c.stallTimeout)))\n .reduce((accum, c) => (accum + c.weight), 0);\n\n // Start running enough to meet quorum\n while (inflightWeight < this.quorum && i < configs.length) {\n const config = configs[i++];\n\n const rid = nextRid++;\n\n config.start = now();\n config.staller = stall(config.stallTimeout);\n config.staller.wait(() => { config.staller = null; });\n\n config.runner = getRunner(config, currentBlockNumber, method, params).then((result) => {\n config.done = true;\n config.result = result;\n\n if (this.listenerCount(\"debug\")) {\n this.emit(\"debug\", {\n action: \"request\",\n rid: rid,\n backend: exposeDebugConfig(config, now()),\n request: { method: method, params: deepCopy(params) },\n provider: this\n });\n }\n\n }, (error) => {\n config.done = true;\n config.error = error;\n\n if (this.listenerCount(\"debug\")) {\n this.emit(\"debug\", {\n action: \"request\",\n rid: rid,\n backend: exposeDebugConfig(config, now()),\n request: { method: method, params: deepCopy(params) },\n provider: this\n });\n }\n });\n\n if (this.listenerCount(\"debug\")) {\n this.emit(\"debug\", {\n action: \"request\",\n rid: rid,\n backend: exposeDebugConfig(config, null),\n request: { method: method, params: deepCopy(params) },\n provider: this\n });\n }\n\n inflightWeight += config.weight;\n }\n\n // Wait for anything meaningful to finish or stall out\n const waiting: Array<Promise<any>> = [ ];\n configs.forEach((c) => {\n if (c.done || !c.runner) { return; }\n waiting.push(c.runner);\n if (c.staller) { waiting.push(c.staller.getPromise()); }\n });\n\n if (waiting.length) { await Promise.race(waiting); }\n\n // Check the quorum and process the results; the process function\n // may additionally decide the quorum is not met\n const results = configs.filter((c) => (c.done && c.error == null));\n if (results.length >= this.quorum) {\n const result = processFunc(results);\n if (result !== undefined) {\n // Shut down any stallers\n configs.forEach(c => {\n if (c.staller) { c.staller.cancel(); }\n c.cancelled = true;\n });\n return result;\n }\n if (!first) { await stall(100).getPromise(); }\n first = false;\n }\n\n // No result, check for errors that should be forwarded\n const errors = configs.reduce((accum, c) => {\n if (!c.done || c.error == null) { return accum; }\n\n const code = (<any>(c.error)).code;\n if (ForwardErrors.indexOf(code) >= 0) {\n if (!accum[code]) { accum[code] = { error: c.error, weight: 0 }; }\n accum[code].weight += c.weight;\n }\n\n return accum;\n }, <{ [ code: string ]: { error: Error, weight: number } }>({ }));\n\n Object.keys(errors).forEach((errorCode: string) => {\n const tally = errors[errorCode];\n if (tally.weight < this.quorum) { return; }\n\n // Shut down any stallers\n configs.forEach(c => {\n if (c.staller) { c.staller.cancel(); }\n c.cancelled = true;\n });\n\n const e = <any>(tally.error);\n\n const props: { [ name: string ]: any } = { };\n ForwardProperties.forEach((name) => {\n if (e[name] == null) { return; }\n props[name] = e[name];\n });\n\n logger.throwError(e.reason || e.message, <any>errorCode, props);\n });\n\n // All configs have run to completion; we will never get more data\n if (configs.filter((c) => !c.done).length === 0) { break; }\n }\n\n // Shut down any stallers; shouldn't be any\n configs.forEach(c => {\n if (c.staller) { c.staller.cancel(); }\n c.cancelled = true;\n });\n\n return logger.throwError(\"failed to meet quorum\", Logger.errors.SERVER_ERROR, {\n method: method,\n params: params,\n //results: configs.map((c) => c.result),\n //errors: configs.map((c) => c.error),\n results: configs.map((c) => exposeDebugConfig(c)),\n provider: this\n });\n }\n}\n","\"use strict\";\n\nconst IpcProvider: any = null;\n\nexport {\n IpcProvider\n};\n","\"use strict\";\n\nimport { Network, Networkish } from \"@ethersproject/networks\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { ConnectionInfo } from \"@ethersproject/web\";\n\nimport { WebSocketProvider } from \"./websocket-provider\";\nimport { CommunityResourcable, showThrottleMessage } from \"./formatter\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\n\nconst defaultProjectId = \"84842078b09946638c03157f83405213\"\n\nexport class InfuraWebSocketProvider extends WebSocketProvider implements CommunityResourcable {\n readonly apiKey: string;\n readonly projectId: string;\n readonly projectSecret: string;\n\n constructor(network?: Networkish, apiKey?: any) {\n const provider = new InfuraProvider(network, apiKey);\n const connection = provider.connection;\n if (connection.password) {\n logger.throwError(\"INFURA WebSocket project secrets unsupported\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"InfuraProvider.getWebSocketProvider()\"\n });\n }\n\n const url = connection.url.replace(/^http/i, \"ws\").replace(\"/v3/\", \"/ws/v3/\");\n super(url, network);\n\n defineReadOnly(this, \"apiKey\", provider.projectId);\n defineReadOnly(this, \"projectId\", provider.projectId);\n defineReadOnly(this, \"projectSecret\", provider.projectSecret);\n }\n\n isCommunityResource(): boolean {\n return (this.projectId === defaultProjectId);\n }\n}\n\nexport class InfuraProvider extends UrlJsonRpcProvider {\n readonly projectId: string;\n readonly projectSecret: string;\n\n static getWebSocketProvider(network?: Networkish, apiKey?: any): InfuraWebSocketProvider {\n return new InfuraWebSocketProvider(network, apiKey);\n }\n\n static getApiKey(apiKey: any): any {\n const apiKeyObj: { apiKey: string, projectId: string, projectSecret: string } = {\n apiKey: defaultProjectId,\n projectId: defaultProjectId,\n projectSecret: null\n };\n\n if (apiKey == null) { return apiKeyObj; }\n\n if (typeof(apiKey) === \"string\") {\n apiKeyObj.projectId = apiKey;\n\n } else if (apiKey.projectSecret != null) {\n logger.assertArgument((typeof(apiKey.projectId) === \"string\"),\n \"projectSecret requires a projectId\", \"projectId\", apiKey.projectId);\n logger.assertArgument((typeof(apiKey.projectSecret) === \"string\"),\n \"invalid projectSecret\", \"projectSecret\", \"[REDACTED]\");\n\n apiKeyObj.projectId = apiKey.projectId;\n apiKeyObj.projectSecret = apiKey.projectSecret;\n\n } else if (apiKey.projectId) {\n apiKeyObj.projectId = apiKey.projectId;\n }\n\n apiKeyObj.apiKey = apiKeyObj.projectId;\n\n return apiKeyObj;\n }\n\n static getUrl(network: Network, apiKey: any): ConnectionInfo {\n let host: string = null;\n switch(network ? network.name: \"unknown\") {\n case \"homestead\":\n host = \"mainnet.infura.io\";\n break;\n case \"goerli\":\n host = \"goerli.infura.io\";\n break;\n case \"sepolia\":\n host = \"sepolia.infura.io\";\n break;\n case \"matic\":\n host = \"polygon-mainnet.infura.io\";\n break;\n case \"maticmum\":\n host = \"polygon-mumbai.infura.io\";\n break;\n case \"optimism\":\n host = \"optimism-mainnet.infura.io\";\n break;\n case \"optimism-goerli\":\n host = \"optimism-goerli.infura.io\";\n break;\n case \"optimism-sepolia\":\n host = \"optimism-sepolia.infura.io\";\n break;\n case \"arbitrum\":\n host = \"arbitrum-mainnet.infura.io\";\n break;\n case \"arbitrum-goerli\":\n host = \"arbitrum-goerli.infura.io\";\n break;\n case \"arbitrum-sepolia\":\n host = \"arbitrum-sepolia.infura.io\";\n break;\n default:\n logger.throwError(\"unsupported network\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"network\",\n value: network\n });\n }\n\n const connection: ConnectionInfo = {\n allowGzip: true,\n url: (\"https:/\" + \"/\" + host + \"/v3/\" + apiKey.projectId),\n throttleCallback: (attempt: number, url: string) => {\n if (apiKey.projectId === defaultProjectId) {\n showThrottleMessage();\n }\n return Promise.resolve(true);\n }\n };\n\n if (apiKey.projectSecret != null) {\n connection.user = \"\";\n connection.password = apiKey.projectSecret\n }\n\n return connection;\n }\n\n isCommunityResource(): boolean {\n return (this.projectId === defaultProjectId);\n }\n}\n","\nimport { deepCopy } from \"@ethersproject/properties\";\nimport { fetchJson } from \"@ethersproject/web\";\n\nimport { JsonRpcProvider } from \"./json-rpc-provider\";\n\n// Experimental\n\nexport class JsonRpcBatchProvider extends JsonRpcProvider {\n _pendingBatchAggregator: NodeJS.Timer;\n _pendingBatch: Array<{\n request: { method: string, params: Array<any>, id: number, jsonrpc: \"2.0\" },\n resolve: (result: any) => void,\n reject: (error: Error) => void\n }>;\n\n send(method: string, params: Array<any>): Promise<any> {\n const request = {\n method: method,\n params: params,\n id: (this._nextId++),\n jsonrpc: \"2.0\"\n };\n\n if (this._pendingBatch == null) {\n this._pendingBatch = [ ];\n }\n\n const inflightRequest: any = { request, resolve: null, reject: null };\n\n const promise = new Promise((resolve, reject) => {\n inflightRequest.resolve = resolve;\n inflightRequest.reject = reject;\n });\n\n this._pendingBatch.push(inflightRequest);\n\n if (!this._pendingBatchAggregator) {\n // Schedule batch for next event loop + short duration\n this._pendingBatchAggregator = setTimeout(() => {\n\n // Get teh current batch and clear it, so new requests\n // go into the next batch\n const batch = this._pendingBatch;\n this._pendingBatch = null;\n this._pendingBatchAggregator = null;\n\n // Get the request as an array of requests\n const request = batch.map((inflight) => inflight.request);\n\n this.emit(\"debug\", {\n action: \"requestBatch\",\n request: deepCopy(request),\n provider: this\n });\n\n return fetchJson(this.connection, JSON.stringify(request)).then((result) => {\n this.emit(\"debug\", {\n action: \"response\",\n request: request,\n response: result,\n provider: this\n });\n\n // For each result, feed it to the correct Promise, depending\n // on whether it was a success or error\n batch.forEach((inflightRequest, index) => {\n const payload = result[index];\n if (payload.error) {\n const error = new Error(payload.error.message);\n (<any>error).code = payload.error.code;\n (<any>error).data = payload.error.data;\n inflightRequest.reject(error);\n } else {\n inflightRequest.resolve(payload.result);\n }\n });\n\n }, (error) => {\n this.emit(\"debug\", {\n action: \"response\",\n error: error,\n request: request,\n provider: this\n });\n\n batch.forEach((inflightRequest) => {\n inflightRequest.reject(error);\n });\n });\n\n }, 10);\n }\n\n return promise;\n }\n}\n","/* istanbul ignore file */\n\n\"use strict\";\n\nimport { Network } from \"@ethersproject/networks\";\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n// Special API key provided by Nodesmith for ethers.js\nconst defaultApiKey = \"ETHERS_JS_SHARED\";\n\nexport class NodesmithProvider extends UrlJsonRpcProvider {\n\n static getApiKey(apiKey: any): any {\n if (apiKey && typeof(apiKey) !== \"string\") {\n logger.throwArgumentError(\"invalid apiKey\", \"apiKey\", apiKey);\n }\n return apiKey || defaultApiKey;\n }\n\n static getUrl(network: Network, apiKey?: any): string {\n logger.warn(\"NodeSmith will be discontinued on 2019-12-20; please migrate to another platform.\");\n\n let host = null;\n switch (network.name) {\n case \"homestead\":\n host = \"https://ethereum.api.nodesmith.io/v1/mainnet/jsonrpc\";\n break;\n case \"ropsten\":\n host = \"https://ethereum.api.nodesmith.io/v1/ropsten/jsonrpc\";\n break;\n case \"rinkeby\":\n host = \"https://ethereum.api.nodesmith.io/v1/rinkeby/jsonrpc\";\n break;\n case \"goerli\":\n host = \"https://ethereum.api.nodesmith.io/v1/goerli/jsonrpc\";\n break;\n case \"kovan\":\n host = \"https://ethereum.api.nodesmith.io/v1/kovan/jsonrpc\";\n break;\n default:\n logger.throwArgumentError(\"unsupported network\", \"network\", arguments[0]);\n }\n\n return (host + \"?apiKey=\" + apiKey);\n }\n}\n","\"use strict\";\n\nimport { Network } from \"@ethersproject/networks\";\nimport { ConnectionInfo } from \"@ethersproject/web\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\nconst defaultApplicationId = \"62e1ad51b37b8e00394bda3b\";\n\n\nexport class PocketProvider extends UrlJsonRpcProvider {\n readonly applicationId: string;\n readonly applicationSecretKey: string;\n readonly loadBalancer: boolean;\n\n static getApiKey(apiKey: any): any {\n const apiKeyObj: { applicationId: string, applicationSecretKey: string, loadBalancer: boolean } = {\n applicationId: null,\n loadBalancer: true,\n applicationSecretKey: null\n };\n\n // Parse applicationId and applicationSecretKey\n if (apiKey == null) {\n apiKeyObj.applicationId = defaultApplicationId;\n\n } else if (typeof (apiKey) === \"string\") {\n apiKeyObj.applicationId = apiKey;\n\n } else if (apiKey.applicationSecretKey != null) {\n apiKeyObj.applicationId = apiKey.applicationId;\n apiKeyObj.applicationSecretKey = apiKey.applicationSecretKey;\n\n } else if (apiKey.applicationId) {\n apiKeyObj.applicationId = apiKey.applicationId;\n\n } else {\n logger.throwArgumentError(\"unsupported PocketProvider apiKey\", \"apiKey\", apiKey);\n }\n\n return apiKeyObj;\n }\n\n static getUrl(network: Network, apiKey: any): ConnectionInfo {\n let host: string = null;\n switch (network ? network.name : \"unknown\") {\n case \"goerli\":\n host = \"eth-goerli.gateway.pokt.network\";\n break;\n case \"homestead\":\n host = \"eth-mainnet.gateway.pokt.network\";\n break;\n case \"kovan\":\n host = \"poa-kovan.gateway.pokt.network\";\n break;\n case \"matic\":\n host = \"poly-mainnet.gateway.pokt.network\";\n break;\n case \"maticmum\":\n host = \"polygon-mumbai-rpc.gateway.pokt.network\";\n break;\n case \"rinkeby\":\n host = \"eth-rinkeby.gateway.pokt.network\";\n break;\n case \"ropsten\":\n host = \"eth-ropsten.gateway.pokt.network\";\n break;\n default:\n logger.throwError(\"unsupported network\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"network\",\n value: network\n });\n }\n\n const url = `https:/\\/${ host }/v1/lb/${ apiKey.applicationId }`\n\n const connection: ConnectionInfo = { headers: { }, url };\n if (apiKey.applicationSecretKey != null) {\n connection.user = \"\";\n connection.password = apiKey.applicationSecretKey\n }\n\n return connection;\n }\n\n isCommunityResource(): boolean {\n return (this.applicationId === defaultApplicationId);\n }\n}\n","\"use strict\";\n\nimport { Network } from \"@ethersproject/networks\";\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n// Special API key provided by Quicknode for ethers.js\nconst defaultApiKey = \"919b412a057b5e9c9b6dce193c5a60242d6efadb\";\n\nexport class QuickNodeProvider extends UrlJsonRpcProvider {\n\n static getApiKey(apiKey: any): any {\n if (apiKey && typeof(apiKey) !== \"string\") {\n logger.throwArgumentError(\"invalid apiKey\", \"apiKey\", apiKey);\n }\n return apiKey || defaultApiKey;\n }\n\n static getUrl(network: Network, apiKey?: any): string {\n let host = null;\n switch (network.name) {\n case \"homestead\":\n host = \"ethers.quiknode.pro\";\n break;\n case \"goerli\":\n host = \"ethers.ethereum-goerli.quiknode.pro\";\n break;\n case \"sepolia\":\n host = \"ethers.ethereum-sepolia.quiknode.pro\";\n break;\n case \"holesky\":\n host = \"ethers.ethereum-holesky.quiknode.pro\";\n break;\n case \"arbitrum\":\n host = \"ethers.arbitrum-mainnet.quiknode.pro\";\n break;\n case \"arbitrum-goerli\":\n host = \"ethers.arbitrum-goerli.quiknode.pro\";\n break;\n case \"arbitrum-sepolia\":\n host = \"ethers.arbitrum-sepolia.quiknode.pro\";\n break;\n case \"base\":\n host = \"ethers.base-mainnet.quiknode.pro\";\n break;\n case \"base-goerli\":\n host = \"ethers.base-goerli.quiknode.pro\";\n break;\n case \"base-spolia\":\n host = \"ethers.base-sepolia.quiknode.pro\";\n break;\n case \"bnb\":\n host = \"ethers.bsc.quiknode.pro\";\n break;\n case \"bnbt\":\n host = \"ethers.bsc-testnet.quiknode.pro\";\n break;\n case \"matic\":\n host = \"ethers.matic.quiknode.pro\";\n break;\n case \"maticmum\":\n host = \"ethers.matic-testnet.quiknode.pro\";\n break;\n case \"optimism\":\n host = \"ethers.optimism.quiknode.pro\";\n break;\n case \"optimism-goerli\":\n host = \"ethers.optimism-goerli.quiknode.pro\";\n break;\n case \"optimism-sepolia\":\n host = \"ethers.optimism-sepolia.quiknode.pro\";\n break;\n case \"xdai\":\n host = \"ethers.xdai.quiknode.pro\";\n break;\n default:\n logger.throwArgumentError(\"unsupported network\", \"network\", arguments[0]);\n }\n\n return (\"https:/\" + \"/\" + host + \"/\" + apiKey);\n }\n}\n","\"use strict\";\n\nimport { Networkish } from \"@ethersproject/networks\";\nimport { deepCopy, defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nimport { JsonRpcProvider } from \"./json-rpc-provider\";\n\n// Exported Types\nexport type ExternalProvider = {\n isMetaMask?: boolean;\n isStatus?: boolean;\n host?: string;\n path?: string;\n sendAsync?: (request: { method: string, params?: Array<any> }, callback: (error: any, response: any) => void) => void\n send?: (request: { method: string, params?: Array<any> }, callback: (error: any, response: any) => void) => void\n request?: (request: { method: string, params?: Array<any> }) => Promise<any>\n}\n\nlet _nextId = 1;\n\nexport type JsonRpcFetchFunc = (method: string, params?: Array<any>) => Promise<any>;\n\ntype Web3LegacySend = (request: any, callback: (error: Error, response: any) => void) => void;\n\nfunction buildWeb3LegacyFetcher(provider: ExternalProvider, sendFunc: Web3LegacySend) : JsonRpcFetchFunc {\n const fetcher = \"Web3LegacyFetcher\";\n\n return function(method: string, params: Array<any>): Promise<any> {\n const request = {\n method: method,\n params: params,\n id: (_nextId++),\n jsonrpc: \"2.0\"\n };\n\n return new Promise((resolve, reject) => {\n this.emit(\"debug\", {\n action: \"request\",\n fetcher,\n request: deepCopy(request),\n provider: this\n });\n\n sendFunc(request, (error, response) => {\n\n if (error) {\n this.emit(\"debug\", {\n action: \"response\",\n fetcher,\n error,\n request,\n provider: this\n });\n\n return reject(error);\n }\n\n this.emit(\"debug\", {\n action: \"response\",\n fetcher,\n request,\n response,\n provider: this\n });\n\n if (response.error) {\n const error = new Error(response.error.message);\n (<any>error).code = response.error.code;\n (<any>error).data = response.error.data;\n return reject(error);\n }\n\n resolve(response.result);\n });\n });\n }\n}\n\nfunction buildEip1193Fetcher(provider: ExternalProvider): JsonRpcFetchFunc {\n return function(method: string, params: Array<any>): Promise<any> {\n if (params == null) { params = [ ]; }\n\n const request = { method, params };\n\n this.emit(\"debug\", {\n action: \"request\",\n fetcher: \"Eip1193Fetcher\",\n request: deepCopy(request),\n provider: this\n });\n\n return provider.request(request).then((response) => {\n this.emit(\"debug\", {\n action: \"response\",\n fetcher: \"Eip1193Fetcher\",\n request,\n response,\n provider: this\n });\n\n return response;\n\n }, (error) => {\n this.emit(\"debug\", {\n action: \"response\",\n fetcher: \"Eip1193Fetcher\",\n request,\n error,\n provider: this\n });\n\n throw error;\n });\n }\n}\n\nexport class Web3Provider extends JsonRpcProvider {\n readonly provider: ExternalProvider;\n readonly jsonRpcFetchFunc: JsonRpcFetchFunc;\n\n constructor(provider: ExternalProvider | JsonRpcFetchFunc, network?: Networkish) {\n if (provider == null) {\n logger.throwArgumentError(\"missing provider\", \"provider\", provider);\n }\n\n let path: string = null;\n let jsonRpcFetchFunc: JsonRpcFetchFunc = null;\n let subprovider: ExternalProvider = null;\n\n if (typeof(provider) === \"function\") {\n path = \"unknown:\";\n jsonRpcFetchFunc = provider;\n\n } else {\n path = provider.host || provider.path || \"\";\n if (!path && provider.isMetaMask) {\n path = \"metamask\";\n }\n\n subprovider = provider;\n\n if (provider.request) {\n if (path === \"\") { path = \"eip-1193:\"; }\n jsonRpcFetchFunc = buildEip1193Fetcher(provider);\n } else if (provider.sendAsync) {\n jsonRpcFetchFunc = buildWeb3LegacyFetcher(provider, provider.sendAsync.bind(provider));\n } else if (provider.send) {\n jsonRpcFetchFunc = buildWeb3LegacyFetcher(provider, provider.send.bind(provider));\n } else {\n logger.throwArgumentError(\"unsupported provider\", \"provider\", provider);\n }\n\n if (!path) { path = \"unknown:\"; }\n }\n\n super(path, network);\n\n defineReadOnly(this, \"jsonRpcFetchFunc\", jsonRpcFetchFunc);\n defineReadOnly(this, \"provider\", subprovider);\n }\n\n send(method: string, params: Array<any>): Promise<any> {\n return this.jsonRpcFetchFunc(method, params);\n }\n}\n","\"use strict\";\n\nimport {\n Block,\n BlockTag,\n EventType,\n FeeData,\n Filter,\n Log,\n Listener,\n Provider,\n TransactionReceipt,\n TransactionRequest,\n TransactionResponse\n} from \"@ethersproject/abstract-provider\";\n\nimport { getNetwork } from \"@ethersproject/networks\";\nimport { Network, Networkish } from \"@ethersproject/networks\";\n\nimport { BaseProvider, EnsProvider, EnsResolver, Resolver } from \"./base-provider\";\n\nimport { AlchemyProvider, AlchemyWebSocketProvider } from \"./alchemy-provider\";\nimport { AnkrProvider } from \"./ankr-provider\";\nimport { CloudflareProvider } from \"./cloudflare-provider\";\nimport { EtherscanProvider } from \"./etherscan-provider\";\nimport { FallbackProvider, FallbackProviderConfig } from \"./fallback-provider\";\nimport { IpcProvider } from \"./ipc-provider\";\nimport { InfuraProvider, InfuraWebSocketProvider } from \"./infura-provider\";\nimport { JsonRpcProvider, JsonRpcSigner } from \"./json-rpc-provider\";\nimport { JsonRpcBatchProvider } from \"./json-rpc-batch-provider\";\nimport { NodesmithProvider } from \"./nodesmith-provider\";\nimport { PocketProvider } from \"./pocket-provider\";\nimport { QuickNodeProvider } from \"./quicknode-provider\";\nimport { StaticJsonRpcProvider, UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\nimport { Web3Provider } from \"./web3-provider\";\nimport { WebSocketProvider } from \"./websocket-provider\";\nimport { ExternalProvider, JsonRpcFetchFunc } from \"./web3-provider\";\n\nimport { CommunityResourcable, Formatter, isCommunityResourcable, isCommunityResource, showThrottleMessage } from \"./formatter\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n////////////////////////\n// Helper Functions\n\nfunction getDefaultProvider(network?: Networkish, options?: any): BaseProvider {\n if (network == null) { network = \"homestead\"; }\n\n // If passed a URL, figure out the right type of provider based on the scheme\n if (typeof(network) === \"string\") {\n // @TODO: Add support for IpcProvider; maybe if it ends in \".ipc\"?\n\n // Handle http and ws (and their secure variants)\n const match = network.match(/^(ws|http)s?:/i);\n if (match) {\n switch (match[1].toLowerCase()) {\n case \"http\": case \"https\":\n return new JsonRpcProvider(network);\n case \"ws\": case \"wss\":\n return new WebSocketProvider(network);\n default:\n logger.throwArgumentError(\"unsupported URL scheme\", \"network\", network);\n }\n }\n }\n\n const n = getNetwork(network);\n if (!n || !n._defaultProvider) {\n logger.throwError(\"unsupported getDefaultProvider network\", Logger.errors.NETWORK_ERROR, {\n operation: \"getDefaultProvider\",\n network: network\n });\n }\n\n return n._defaultProvider({\n FallbackProvider,\n\n AlchemyProvider,\n AnkrProvider,\n CloudflareProvider,\n EtherscanProvider,\n InfuraProvider,\n JsonRpcProvider,\n NodesmithProvider,\n PocketProvider,\n QuickNodeProvider,\n Web3Provider,\n\n IpcProvider,\n }, options);\n}\n\n////////////////////////\n// Exports\n\nexport {\n\n // Abstract Providers (or Abstract-ish)\n Provider,\n BaseProvider,\n\n Resolver,\n\n UrlJsonRpcProvider,\n\n ///////////////////////\n // Concrete Providers\n\n FallbackProvider,\n\n AlchemyProvider,\n AlchemyWebSocketProvider,\n AnkrProvider,\n CloudflareProvider,\n EtherscanProvider,\n InfuraProvider,\n InfuraWebSocketProvider,\n JsonRpcProvider,\n JsonRpcBatchProvider,\n NodesmithProvider,\n PocketProvider,\n QuickNodeProvider,\n StaticJsonRpcProvider,\n Web3Provider,\n WebSocketProvider,\n\n IpcProvider,\n\n\n ///////////////////////\n // Signer\n\n JsonRpcSigner,\n\n\n ///////////////////////\n // Functions\n\n getDefaultProvider,\n getNetwork,\n isCommunityResource,\n isCommunityResourcable,\n showThrottleMessage,\n\n\n ///////////////////////\n // Objects\n\n Formatter,\n\n\n ///////////////////////\n // Types\n\n Block,\n BlockTag,\n EventType,\n FeeData,\n Filter,\n Log,\n Listener,\n TransactionReceipt,\n TransactionRequest,\n TransactionResponse,\n\n ExternalProvider,\n JsonRpcFetchFunc,\n\n FallbackProviderConfig,\n\n Network,\n Networkish,\n\n EnsProvider,\n EnsResolver,\n\n CommunityResourcable\n};\n\n","export const version = \"solidity/5.8.0\";\n","\"use strict\";\n\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, concat, hexlify, zeroPad } from \"@ethersproject/bytes\";\nimport { keccak256 as hashKeccak256 } from \"@ethersproject/keccak256\";\nimport { sha256 as hashSha256 } from \"@ethersproject/sha2\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\n\nconst regexBytes = new RegExp(\"^bytes([0-9]+)$\");\nconst regexNumber = new RegExp(\"^(u?int)([0-9]*)$\");\nconst regexArray = new RegExp(\"^(.*)\\\\[([0-9]*)\\\\]$\");\n\nconst Zeros = \"0000000000000000000000000000000000000000000000000000000000000000\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n\nfunction _pack(type: string, value: any, isArray?: boolean): Uint8Array {\n switch(type) {\n case \"address\":\n if (isArray) { return zeroPad(value, 32); }\n return arrayify(value);\n case \"string\":\n return toUtf8Bytes(value);\n case \"bytes\":\n return arrayify(value);\n case \"bool\":\n value = (value ? \"0x01\": \"0x00\");\n if (isArray) { return zeroPad(value, 32); }\n return arrayify(value);\n }\n\n let match = type.match(regexNumber);\n if (match) {\n //let signed = (match[1] === \"int\")\n let size = parseInt(match[2] || \"256\")\n\n if ((match[2] && String(size) !== match[2]) || (size % 8 !== 0) || size === 0 || size > 256) {\n logger.throwArgumentError(\"invalid number type\", \"type\", type)\n }\n\n if (isArray) { size = 256; }\n\n value = BigNumber.from(value).toTwos(size);\n\n return zeroPad(value, size / 8);\n }\n\n match = type.match(regexBytes);\n if (match) {\n const size = parseInt(match[1]);\n\n if (String(size) !== match[1] || size === 0 || size > 32) {\n logger.throwArgumentError(\"invalid bytes type\", \"type\", type)\n }\n if (arrayify(value).byteLength !== size) {\n logger.throwArgumentError(`invalid value for ${ type }`, \"value\", value)\n }\n if (isArray) { return arrayify((value + Zeros).substring(0, 66)); }\n return value;\n }\n\n match = type.match(regexArray);\n if (match && Array.isArray(value)) {\n const baseType = match[1];\n const count = parseInt(match[2] || String(value.length));\n if (count != value.length) {\n logger.throwArgumentError(`invalid array length for ${ type }`, \"value\", value)\n }\n const result: Array<Uint8Array> = [];\n value.forEach(function(value) {\n result.push(_pack(baseType, value, true));\n });\n return concat(result);\n }\n\n return logger.throwArgumentError(\"invalid type\", \"type\", type)\n}\n\n// @TODO: Array Enum\n\nexport function pack(types: ReadonlyArray<string>, values: ReadonlyArray<any>) {\n if (types.length != values.length) {\n logger.throwArgumentError(\"wrong number of values; expected ${ types.length }\", \"values\", values)\n }\n const tight: Array<Uint8Array> = [];\n types.forEach(function(type, index) {\n tight.push(_pack(type, values[index]));\n });\n return hexlify(concat(tight));\n}\n\nexport function keccak256(types: ReadonlyArray<string>, values: ReadonlyArray<any>) {\n return hashKeccak256(pack(types, values));\n}\n\nexport function sha256(types: ReadonlyArray<string>, values: ReadonlyArray<any>) {\n return hashSha256(pack(types, values));\n}\n","export const version = \"units/5.8.0\";\n","\"use strict\";\n\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { formatFixed, parseFixed } from \"@ethersproject/bignumber\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nconst names = [\n \"wei\",\n \"kwei\",\n \"mwei\",\n \"gwei\",\n \"szabo\",\n \"finney\",\n \"ether\",\n];\n\n\n// Some environments have issues with RegEx that contain back-tracking, so we cannot\n// use them.\nexport function commify(value: string | number): string {\n const comps = String(value).split(\".\");\n\n if (comps.length > 2 || !comps[0].match(/^-?[0-9]*$/) || (comps[1] && !comps[1].match(/^[0-9]*$/)) || value === \".\" || value === \"-.\") {\n logger.throwArgumentError(\"invalid value\", \"value\", value);\n }\n\n // Make sure we have at least one whole digit (0 if none)\n let whole = comps[0];\n\n let negative = \"\";\n if (whole.substring(0, 1) === \"-\") {\n negative = \"-\";\n whole = whole.substring(1);\n }\n\n // Make sure we have at least 1 whole digit with no leading zeros\n while (whole.substring(0, 1) === \"0\") { whole = whole.substring(1); }\n if (whole === \"\") { whole = \"0\"; }\n\n let suffix = \"\";\n if (comps.length === 2) { suffix = \".\" + (comps[1] || \"0\"); }\n while (suffix.length > 2 && suffix[suffix.length - 1] === \"0\") {\n suffix = suffix.substring(0, suffix.length - 1);\n }\n\n const formatted = [];\n while (whole.length) {\n if (whole.length <= 3) {\n formatted.unshift(whole);\n break;\n } else {\n const index = whole.length - 3;\n formatted.unshift(whole.substring(index));\n whole = whole.substring(0, index);\n }\n }\n\n return negative + formatted.join(\",\") + suffix;\n}\n\nexport function formatUnits(value: BigNumberish, unitName?: string | BigNumberish): string {\n if (typeof(unitName) === \"string\") {\n const index = names.indexOf(unitName);\n if (index !== -1) { unitName = 3 * index; }\n }\n return formatFixed(value, (unitName != null) ? unitName: 18);\n}\n\nexport function parseUnits(value: string, unitName?: BigNumberish): BigNumber {\n if (typeof(value) !== \"string\") {\n logger.throwArgumentError(\"value must be a string\", \"value\", value);\n }\n if (typeof(unitName) === \"string\") {\n const index = names.indexOf(unitName);\n if (index !== -1) { unitName = 3 * index; }\n }\n return parseFixed(value, (unitName != null) ? unitName: 18);\n}\n\nexport function formatEther(wei: BigNumberish): string {\n return formatUnits(wei, 18);\n}\n\nexport function parseEther(ether: string): BigNumber {\n return parseUnits(ether, 18);\n}\n\n","\"use strict\";\n\nimport { AbiCoder, checkResultErrors, ConstructorFragment, defaultAbiCoder, ErrorFragment, EventFragment, FormatTypes, Fragment, FunctionFragment, Indexed, Interface, LogDescription, ParamType, Result, TransactionDescription }from \"@ethersproject/abi\";\nimport { getAddress, getCreate2Address, getContractAddress, getIcapAddress, isAddress } from \"@ethersproject/address\";\nimport * as base64 from \"@ethersproject/base64\";\nimport { Base58 as base58 } from \"@ethersproject/basex\";\nimport { arrayify, concat, hexConcat, hexDataSlice, hexDataLength, hexlify, hexStripZeros, hexValue, hexZeroPad, isBytes, isBytesLike, isHexString, joinSignature, zeroPad, splitSignature, stripZeros } from \"@ethersproject/bytes\";\nimport { _TypedDataEncoder, dnsEncode, hashMessage, id, isValidName, namehash } from \"@ethersproject/hash\";\nimport { defaultPath, entropyToMnemonic, getAccountPath, HDNode, isValidMnemonic, mnemonicToEntropy, mnemonicToSeed } from \"@ethersproject/hdnode\";\nimport { getJsonWalletAddress } from \"@ethersproject/json-wallets\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { computeHmac, ripemd160, sha256, sha512 } from \"@ethersproject/sha2\";\nimport { keccak256 as solidityKeccak256, pack as solidityPack, sha256 as soliditySha256 } from \"@ethersproject/solidity\";\nimport { randomBytes, shuffled } from \"@ethersproject/random\";\nimport { checkProperties, deepCopy, defineReadOnly, getStatic, resolveProperties, shallowCopy } from \"@ethersproject/properties\";\nimport * as RLP from \"@ethersproject/rlp\";\nimport { computePublicKey, recoverPublicKey, SigningKey } from \"@ethersproject/signing-key\";\nimport { formatBytes32String, nameprep, parseBytes32String, _toEscapedUtf8String, toUtf8Bytes, toUtf8CodePoints, toUtf8String, Utf8ErrorFuncs } from \"@ethersproject/strings\";\nimport { accessListify, computeAddress, parse as parseTransaction, recoverAddress, serialize as serializeTransaction, TransactionTypes } from \"@ethersproject/transactions\";\nimport { commify, formatEther, parseEther, formatUnits, parseUnits } from \"@ethersproject/units\";\nimport { verifyMessage, verifyTypedData } from \"@ethersproject/wallet\";\nimport { _fetchData, fetchJson, poll } from \"@ethersproject/web\";\n\n////////////////////////\n// Enums\n\nimport { SupportedAlgorithm } from \"@ethersproject/sha2\";\nimport { UnicodeNormalizationForm, Utf8ErrorReason } from \"@ethersproject/strings\";\nimport { UnsignedTransaction } from \"@ethersproject/transactions\";\n\n////////////////////////\n// Types and Interfaces\n\nimport { CoerceFunc } from \"@ethersproject/abi\";\nimport { Bytes, BytesLike, Hexable } from \"@ethersproject/bytes\"\nimport { Mnemonic } from \"@ethersproject/hdnode\";\nimport { EncryptOptions, ProgressCallback } from \"@ethersproject/json-wallets\";\nimport { Deferrable } from \"@ethersproject/properties\";\nimport { Utf8ErrorFunc } from \"@ethersproject/strings\";\nimport { AccessList, AccessListish } from \"@ethersproject/transactions\";\nimport { ConnectionInfo, FetchJsonResponse, OnceBlockable, OncePollable, PollOptions } from \"@ethersproject/web\";\n\n////////////////////////\n// Exports\n\nexport {\n AbiCoder,\n defaultAbiCoder,\n\n Fragment,\n ConstructorFragment,\n ErrorFragment,\n EventFragment,\n FunctionFragment,\n ParamType,\n FormatTypes,\n\n checkResultErrors,\n Result,\n\n Logger,\n\n RLP,\n\n _fetchData,\n fetchJson,\n poll,\n\n checkProperties,\n deepCopy,\n defineReadOnly,\n getStatic,\n resolveProperties,\n shallowCopy,\n\n arrayify,\n\n concat,\n stripZeros,\n zeroPad,\n\n isBytes,\n isBytesLike,\n\n defaultPath,\n HDNode,\n SigningKey,\n\n Interface,\n\n LogDescription,\n TransactionDescription,\n\n base58,\n base64,\n\n hexlify,\n isHexString,\n hexConcat,\n hexStripZeros,\n hexValue,\n hexZeroPad,\n hexDataLength,\n hexDataSlice,\n\n nameprep,\n _toEscapedUtf8String,\n toUtf8Bytes,\n toUtf8CodePoints,\n toUtf8String,\n Utf8ErrorFuncs,\n\n formatBytes32String,\n parseBytes32String,\n\n dnsEncode,\n hashMessage,\n namehash,\n isValidName,\n id,\n\n _TypedDataEncoder,\n\n getAddress,\n getIcapAddress,\n getContractAddress,\n getCreate2Address,\n isAddress,\n\n formatEther,\n parseEther,\n\n formatUnits,\n parseUnits,\n\n commify,\n\n computeHmac,\n keccak256,\n ripemd160,\n sha256,\n sha512,\n\n randomBytes,\n shuffled,\n\n solidityPack,\n solidityKeccak256,\n soliditySha256,\n\n splitSignature,\n joinSignature,\n\n accessListify,\n parseTransaction,\n serializeTransaction,\n TransactionTypes,\n\n getJsonWalletAddress,\n\n computeAddress,\n recoverAddress,\n\n computePublicKey,\n recoverPublicKey,\n\n verifyMessage,\n verifyTypedData,\n\n getAccountPath,\n mnemonicToEntropy,\n entropyToMnemonic,\n isValidMnemonic,\n mnemonicToSeed,\n\n\n ////////////////////////\n // Enums\n\n SupportedAlgorithm,\n\n UnicodeNormalizationForm,\n Utf8ErrorReason,\n\n ////////////////////////\n // Types\n\n Bytes,\n BytesLike,\n Hexable,\n\n AccessList,\n AccessListish,\n UnsignedTransaction,\n\n CoerceFunc,\n\n Indexed,\n\n Mnemonic,\n\n Deferrable,\n\n Utf8ErrorFunc,\n\n ConnectionInfo,\n OnceBlockable,\n OncePollable,\n PollOptions,\n FetchJsonResponse,\n\n EncryptOptions,\n ProgressCallback\n}\n\n","export const version = \"ethers/5.8.0\";\n","\"use strict\";\n\nimport { BaseContract, Contract, ContractFactory } from \"@ethersproject/contracts\";\n\nimport { BigNumber, FixedNumber } from \"@ethersproject/bignumber\";\n\nimport { Signer, VoidSigner } from \"@ethersproject/abstract-signer\";\nimport { Wallet } from \"@ethersproject/wallet\";\n\nimport * as constants from \"@ethersproject/constants\";\n\nimport * as providers from \"@ethersproject/providers\";\nimport { getDefaultProvider } from \"@ethersproject/providers\";\n\nimport { Wordlist, wordlists} from \"@ethersproject/wordlists\";\n\nimport * as utils from \"./utils\";\n\nimport { ErrorCode as errors, Logger } from \"@ethersproject/logger\";\n\n////////////////////////\n// Types\n\nimport type { TypedDataDomain, TypedDataField } from \"@ethersproject/abstract-signer\";\nimport { BigNumberish } from \"@ethersproject/bignumber\";\nimport { Bytes, BytesLike, Signature } from \"@ethersproject/bytes\";\nimport { Transaction, UnsignedTransaction } from \"@ethersproject/transactions\";\n\n\n////////////////////////\n// Compile-Time Constants\n\n// This is generated by \"npm run dist\"\nimport { version } from \"./_version\";\n\nconst logger = new Logger(version);\n\n////////////////////////\n// Types\n\nimport {\n ContractFunction,\n ContractReceipt,\n ContractTransaction,\n\n Event,\n EventFilter,\n\n Overrides,\n PayableOverrides,\n CallOverrides,\n\n PopulatedTransaction,\n\n ContractInterface\n} from \"@ethersproject/contracts\";\n\n\n////////////////////////\n// Exports\n\nexport {\n Signer,\n\n Wallet,\n VoidSigner,\n\n getDefaultProvider,\n providers,\n\n BaseContract,\n Contract,\n ContractFactory,\n\n BigNumber,\n FixedNumber,\n\n constants,\n errors,\n\n logger,\n\n utils,\n\n wordlists,\n\n\n ////////////////////////\n // Compile-Time Constants\n\n version,\n\n\n ////////////////////////\n // Types\n\n ContractFunction,\n ContractReceipt,\n ContractTransaction,\n Event,\n EventFilter,\n\n Overrides,\n PayableOverrides,\n CallOverrides,\n\n PopulatedTransaction,\n\n ContractInterface,\n\n TypedDataDomain,\n TypedDataField,\n\n BigNumberish,\n\n Bytes,\n BytesLike,\n\n Signature,\n\n Transaction,\n UnsignedTransaction,\n\n Wordlist\n};\n\n","\"use strict\";\n\n// To modify this file, you must update ./misc/admin/lib/cmds/update-exports.js\n\nimport * as ethers from \"./ethers\";\n\ntry {\n const anyGlobal = (window as any);\n\n if (anyGlobal._ethers == null) {\n anyGlobal._ethers = ethers;\n }\n} catch (error) { }\n\nexport { ethers };\n\nexport {\n Signer,\n\n Wallet,\n VoidSigner,\n\n getDefaultProvider,\n providers,\n\n BaseContract,\n Contract,\n ContractFactory,\n\n BigNumber,\n FixedNumber,\n\n constants,\n errors,\n\n logger,\n\n utils,\n\n wordlists,\n\n\n ////////////////////////\n // Compile-Time Constants\n\n version,\n\n\n ////////////////////////\n // Types\n\n ContractFunction,\n ContractReceipt,\n ContractTransaction,\n Event,\n EventFilter,\n\n Overrides,\n PayableOverrides,\n CallOverrides,\n\n PopulatedTransaction,\n\n ContractInterface,\n\n TypedDataDomain,\n TypedDataField,\n\n BigNumberish,\n\n Bytes,\n BytesLike,\n\n Signature,\n\n Transaction,\n UnsignedTransaction,\n\n Wordlist\n} from \"./ethers\";\n"],"names":["this","_version_1","logger_1","bytes_1","bignumber_1","properties_1","global","define","keccak256_1","rlp_1","address_1","abstract_coder_1","anonymous_1","constants_1","utf8_1","bytes32_1","idna_1","strings_1","array_1","string_1","bytes_2","tuple_1","null_1","number_1","fixed_bytes_1","fragments_1","decoder_js_1","base64_1","include_js_1","lib_1","message_1","typed_data_1","fragments","abi_coder_1","hash_1","interface_1","minAssert","minUtils","BN","utils","assert","Base","inherits","require$$0","require$$1","rotr32","rotl32","sum32","sum32_5","ft_1","shaCommon","BlockHash","sum32_4","ch32","maj32","s0_256","s1_256","g0_256","g1_256","SHA256","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","SHA512","require$$2","require$$3","require$$4","sum32_3","curve","hash","curves","KeyPair","HmacDRBG","Signature","signature","elliptic_1","signing_key_1","transactions_1","abi_1","abstract_signer_1","abstract_provider_1","types_1","sha2_1","wordlist","wordlist_1","lang_en_1","wordlists_1","basex_1","pbkdf2_1","utils_1","hdnode_1","random_1","crowdsale_1","inspect_1","keystore_1","json_wallets_1","geturl_1","web_1","formatter_1","networks_1","base_provider_1","ws_1","json_rpc_provider_1","websocket_provider_1","url_json_rpc_provider_1","alchemy_provider_1","ankr_provider_1","cloudflare_provider_1","etherscan_provider_1","fallback_provider_1","ipc_provider_1","infura_provider_1","json_rpc_batch_provider_1","nodesmith_provider_1","pocket_provider_1","quicknode_provider_1","web3_provider_1","solidity_1","units_1","wallet_1","contracts_1","ethers"],"mappings":"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AC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB;CACA,IAAI,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;CAChD,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC;CACpB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACtD,IAAI,EAAE,IAAI,SAAS,CAAC;CACpB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACtD,IAAI,EAAE,IAAI,SAAS,CAAC;CACpB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACtD,IAAI,EAAE,IAAI,SAAS,CAAC;CACpB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC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IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACtD,IAAI,EAAE,IAAI,SAAS,CAAC;CACpB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACtD,IAAI,EAAE,IAAI,SAAS,CAAC;CACpB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACtD,IAAI,EAAE,IAAI,SAAS,CAAC;CACpB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACtD,IAAI,EAAE,IAAI,SAAS,CAAC;CACpB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACtD,IAAI,EAAE,IAAI,SAAS,CAAC;CACpB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACvD,IAAI,GAAG,IAAI,SAAS,CAAC;CACrB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACvD,IAAI,GAAG,IAAI,SAAS,CAAC;CACrB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACvD,IAAI,GAAG,IAAI,SAAS,CAAC;CACrB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACvD,IAAI,GAAG,IAAI,SAAS,CAAC;CACrB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,C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CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;CACzC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;CACzC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;CAChB,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;CAChB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;CACzC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;CACzC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;CAChB,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;CAChB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;CACzC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;CACzC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;CAChB,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;CAChB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;CACzC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;CACzC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;CAChB,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;CAChB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjB;CACA,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;CAChB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;CAChB,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;CACxC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;CACxC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;CACxC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;CACxC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;CACxC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;CACxC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;CAC1C,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;CACxC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;CACxC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;CAC1C,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C;CACA,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;CAC7B,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;CAC7B,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;CAC7B,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;CAC7B,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;CAC7B,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;CAC7B,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;CAC7B,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;CAC7B,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;CAC7B,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;CAC7B,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;CACjC,MAA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,EAAE,EAAE,EAAE,CAAE,EAAE,CAAC,EAAE,EAAE,EAAE;KAC9D,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE;KAC5B,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAE,EAAE,CAAC,EAAE,EAAE,EAAE;KAChD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,EAAE,CAAC,EAAE,EAAE,EAAE;KACzD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE;KAC5B,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE;KAC5B,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE;KAC5B,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE;KAC5B,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE;KAC5B,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE;KAC5B,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAE,EAAE,CAAE,EAAE,CAAC,EAAE,EAAE,EAAE;KACvC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAE,EAAE,CAAE,EAAE,CAAC,EAAE,EAAE,EAAE;KACvC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAE,EAAE,CAAE,EAAE,CAAC,EAAE,EAAE,EAAE;KACvC,EAAE,C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C;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;CACxB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACtB,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;CAC1B,IAAI,IAAI,GAAG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GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACtD,IAAI,EAAE,IAAI,SAAS,CAAC;CACpB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACtD,IAAI,EAAE,IAAI,SAAS,CAAC;CACpB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACtD,IAAI,EAAE,IAAI,SAAS,CAAC;CACpB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACtD,IAAI,EAAE,IAAI,SAAS,CAAC;CACpB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,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E,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACtD,IAAI,EAAE,IAAI,SAAS,CAAC;CACpB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACvD,IAAI,GAAG,IAAI,SAAS,CAAC;CACrB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACvD,IAAI,GAAG,IAAI,SAAS,CAAC;CACrB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACvD,IAAI,GAAG,IAAI,SAAS,CAAC;CACrB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACvD,IAAI,GAAG,IAAI,SAAS,CAAC;CACrB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACvD,IAAI,GAAG,IAAI,SAAS,CAAC;CACrB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACvD,IAAI,GAAG,IAAI,SAAS,CAAC;CACrB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACvD,IAAI,GAAG,IAAI,SAAS,CAAC;CACrB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACxC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACvD,IAAI,GAAG,IAAI,SAAS,CAAC;CACrB;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC7B,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;CACvD,IAAI,GAAG,IAAI,SAAS,CAAC;CACrB,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;CACd,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;CACd,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;CACd,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;CACd,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;CACd,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;CACd,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;CACd,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;CACd,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;CACd,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;CACd,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;CAChB,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;CAChB,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;CAChB,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;CAChB,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;CAChB,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;CAChB,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;CAChB,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;CAChB,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;CAChB,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE;CACjB,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;CAChB,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;CACnB,KAAK;CACL,IAAI,OAAO,GAAG,CAAC;CACf,GAAG,CAAC;AACJ;CACA;CACA,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;CAClB,IAAI,WAAW,GAAG,UAAU,CAAC;CAC7B,GAAG;AACH;CACA,EAAE,SAAS,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;CACrC,IAAI,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;CAChD,IAAI,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AAC1C;CACA,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;CAClB,IAAI,IAAI,OAAO,GAAG,CAAC,CAAC;CACpB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;CAC7C;CACA;CACA,MAAM,IAAI,MAAM,GAAG,OAAO,CAAC;CAC3B,MAAM,OAAO,GAAG,CAAC,CAAC;CAClB,MAAM,IAAI,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;CACpC,MAAM,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;CAC7C,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE;CACrE,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACtB,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CAClC,QAAQ,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACjC,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACtB;CACA,QAAQ,IAAI,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;CAC/B,QAAQ,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;CACtD,QAAQ,EAAE,GAAG,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC,CAAC;CAC9B,QAAQ,KAAK,GAAG,EAAE,GAAG,SAAS,CAAC;CAC/B,QAAQ,MAAM,GAAG,CAAC,MAAM,IAAI,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5C;CACA,QAAQ,OAAO,IAAI,MAAM,KAAK,EAAE,CAAC;CACjC,QAAQ,MAAM,IAAI,SAAS,CAAC;CAC5B,OAAO;CACP,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;CAC3B,MAAM,KAAK,GAAG,MAAM,CAAC;CACrB,MAAM,MAAM,GAAG,OAAO,CAAC;CACvB,KAAK;CACL,IAAI,IAAI,KAAK,KAAK,CAAC,EAAE;CACrB,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;CAC3B,KAAK,MAAM;CACX,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;CACnB,KAAK;AACL;CACA,IAAI,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC;CACvB,GAAG;AACH;CACA,EAAE,SAAS,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;CACvC,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;CAC1B,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;CACrC,GAAG;AACH;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE;CACjD,IAAI,IAAI,GAAG,CAAC;CACZ,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;CACvC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,EAAE,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,EAAE;CACjD,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;CACxC,KAAK,MAAM,IAAI,GAAG,GAAG,EAAE,EAAE;CACzB,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;CACvC,KAAK,MAAM,IAAI,GAAG,GAAG,IAAI,EAAE;CAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;CACrC,KAAK,MAAM;CACX,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;CACvC,KAAK;AACL;CACA,IAAI,OAAO,GAAG,CAAC;CACf,GAAG,CAAC;AACJ;CACA;CACA;AACA;CACA,EAAE,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;CACvB,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;CACf,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;CACf,GAAG;AACH;CACA,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,CAAC,EAAE;CAChD,IAAI,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;CACzB,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CAC3C,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;CAChC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAClC,KAAK;AACL;CACA,IAAI,OAAO,CAAC,CAAC;CACb,GAAG,CAAC;AACJ;CACA;CACA,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;CACpD,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;AACzC;CACA,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;CACf,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;CAChC,MAAM,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;CACnC,MAAM,CAAC,KAAK,CAAC,CAAC;CACd,KAAK;AACL;CACA,IAAI,OAAO,EAAE,CAAC;CACd,GAAG,CAAC;AACJ;CACA;CACA;CACA,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE;CAC3E,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;CAChC,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;CAC5B,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;CAC5B,KAAK;CACL,GAAG,CAAC;AACJ;CACA,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE;CAC/E,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC/C;CACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;CACpC,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACrB;CACA,MAAM,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;CAC5C,MAAM,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC5C;CACA,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;CACrC,QAAQ,IAAI,MAAM,GAAG,KAAK,CAAC;CAC3B,QAAQ,IAAI,MAAM,GAAG,KAAK,CAAC;AAC3B;CACA,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;CACpC,UAAU,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CAC/B,UAAU,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/B;CACA,UAAU,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;CACnC,UAAU,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACnC;CACA,UAAU,IAAI,EAAE,GAAG,MAAM,GAAG,EAAE,GAAG,MAAM,GAAG,EAAE,CAAC;AAC7C;CACA,UAAU,EAAE,GAAG,MAAM,GAAG,EAAE,GAAG,MAAM,GAAG,EAAE,CAAC;CACzC,UAAU,EAAE,GAAG,EAAE,CAAC;AAClB;CACA,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;CAChC,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;AAChC;CACA,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;CACpC,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;AACpC;CACA;CACA,UAAU,IAAI,CAAC,KAAK,CAAC,EAAE;CACvB,YAAY,EAAE,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;AACjD;CACA,YAAY,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;CACrD,YAAY,MAAM,GAAG,EAAE,CAAC;CACxB,WAAW;CACX,SAAS;CACT,OAAO;CACP,KAAK;CACL,GAAG,CAAC;AACJ;CACA,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE;CAC3D,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;CAC/B,IAAI,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;CACpB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;CACd,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;CACxC,MAAM,CAAC,EAAE,CAAC;CACV,KAAK;AACL;CACA,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;CAC5B,GAAG,CAAC;AACJ;CACA,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE;CAC9D,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO;AACvB;CACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;CACpC,MAAM,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACrB;CACA,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;CAC9B,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACzB;CACA,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACjB;CACA,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;CAC/B,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CAC1B,KAAK;CACL,GAAG,CAAC;AACJ;CACA,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,EAAE,EAAE,CAAC,EAAE;CAC9D,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;CAClB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;CACpC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;CACpD,QAAQ,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;CACjC,QAAQ,KAAK,CAAC;AACd;CACA,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AAC5B;CACA,MAAM,IAAI,CAAC,GAAG,SAAS,EAAE;CACzB,QAAQ,KAAK,GAAG,CAAC,CAAC;CAClB,OAAO,MAAM;CACb,QAAQ,KAAK,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC;CAClC,OAAO;CACP,KAAK;AACL;CACA,IAAI,OAAO,EAAE,CAAC;CACd,GAAG,CAAC;AACJ;CACA,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE;CACpE,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;CAClB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;CAClC,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAClC;CACA,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC,KAAK,GAAG,KAAK,KAAK,EAAE,CAAC;CACxD,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC,KAAK,GAAG,KAAK,KAAK,EAAE,CAAC;CAC5D,KAAK;AACL;CACA;CACA,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;CAClC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACjB,KAAK;AACL;CACA,IAAI,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;CACxB,IAAI,MAAM,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC;CACpC,GAAG,CAAC;AACJ;CACA,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;CAC1C,IAAI,IAAI,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;CAC1B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;CAChC,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CAChB,KAAK;AACL;CACA,IAAI,OAAO,EAAE,CAAC;CACd,GAAG,CAAC;AACJ;CACA,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE;CAClD,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AACrD;CACA,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC9B;CACA,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACzB;CACA,IAAI,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;CAC3B,IAAI,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;CAC5B,IAAI,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5B;CACA,IAAI,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;CAC5B,IAAI,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;CAC7B,IAAI,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7B;CACA,IAAI,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC;CACzB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACpB;CACA,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;CAC/C,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAChD;CACA,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;CAC/C,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AAClD;CACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;CAChC,MAAM,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;CACvD,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;CACxD,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;CACnB,KAAK;AACL;CACA,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;CAClC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;CAChD,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC/B,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC/B;CACA,IAAI,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;CAC3C,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;CACrC,IAAI,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC;CACvB,GAAG,CAAC;AACJ;CACA;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;CACxC,IAAI,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;CAC3B,IAAI,GAAG,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;CACpD,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAChC,GAAG,CAAC;AACJ;CACA;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;CAC1C,IAAI,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;CAC3B,IAAI,GAAG,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;CACpD,IAAI,OAAO,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;CACtC,GAAG,CAAC;AACJ;CACA;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;CAC1C,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;CACzC,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;CAC5C,IAAI,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;CACpC,IAAI,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;AAC5B;CACA;CACA,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;CAClB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CAC1C,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;CACxC,MAAM,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,SAAS,KAAK,KAAK,GAAG,SAAS,CAAC,CAAC;CACrD,MAAM,KAAK,KAAK,EAAE,CAAC;CACnB,MAAM,KAAK,IAAI,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC;CACnC;CACA,MAAM,KAAK,IAAI,EAAE,KAAK,EAAE,CAAC;CACzB,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;CACrC,KAAK;AACL;CACA,IAAI,IAAI,KAAK,KAAK,CAAC,EAAE;CACrB,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;CAC5B,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;CACpB,KAAK;AACL;CACA,IAAI,OAAO,IAAI,CAAC;CAChB,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;CAC1C,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;CACnC,GAAG,CAAC;AACJ;CACA;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI;CACrC,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1B,GAAG,CAAC;AACJ;CACA;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,IAAI;CACvC,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;CACnC,GAAG,CAAC;AACJ;CACA;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;CACxC,IAAI,IAAI,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;CAC5B,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACzC;CACA;CACA,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC;CACnB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,EAAE;CACxD,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM;CAC5B,KAAK;AACL;CACA,IAAI,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;CACxB,MAAM,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;CAC9D,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,SAAS;AACjC;CACA,QAAQ,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACzB,OAAO;CACP,KAAK;AACL;CACA,IAAI,OAAO,GAAG,CAAC;CACf,GAAG,CAAC;AACJ;CACA;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,IAAI,EAAE;CAC/C,IAAI,MAAM,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;CAClD,IAAI,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;CACtB,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;CAC5B,IAAI,IAAI,SAAS,GAAG,CAAC,SAAS,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;CACzD,IAAI,IAAI,CAAC,CAAC;AACV;CACA,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE;CACjB,MAAM,IAAI,KAAK,GAAG,CAAC,CAAC;AACpB;CACA,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CACxC,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;CACjD,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,QAAQ,KAAK,CAAC,CAAC;CACtD,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;CAClC,QAAQ,KAAK,GAAG,QAAQ,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;CACtC,OAAO;AACP;CACA,MAAM,IAAI,KAAK,EAAE;CACjB,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;CAC9B,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;CACtB,OAAO;CACP,KAAK;AACL;CACA,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE;CACjB,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;CAC7C,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CAC1C,OAAO;AACP;CACA,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;CAC9B,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CAC1B,OAAO;AACP;CACA,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;CACvB,KAAK;AACL;CACA,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;CACxB,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;CAC7C;CACA,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;CAChC,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;CAC7B,GAAG,CAAC;AACJ;CACA;CACA;CACA;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;CAC/D,IAAI,MAAM,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;CAClD,IAAI,IAAI,CAAC,CAAC;CACV,IAAI,IAAI,IAAI,EAAE;CACd,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;CACpC,KAAK,MAAM;CACX,MAAM,CAAC,GAAG,CAAC,CAAC;CACZ,KAAK;AACL;CACA,IAAI,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;CACtB,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;CACnD,IAAI,IAAI,IAAI,GAAG,SAAS,IAAI,CAAC,SAAS,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;CACpD,IAAI,IAAI,WAAW,GAAG,QAAQ,CAAC;AAC/B;CACA,IAAI,CAAC,IAAI,CAAC,CAAC;CACX,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvB;CACA;CACA,IAAI,IAAI,WAAW,EAAE;CACrB,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;CAClC,QAAQ,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CAC7C,OAAO;CACP,MAAM,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;CAC7B,KAAK;AACL;CACA,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE;CACjB;CACA,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;CAChC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;CACvB,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CACxC,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CAC1C,OAAO;CACP,KAAK,MAAM;CACX,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACxB,MAAM,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;CACtB,KAAK;AACL;CACA,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;CAClB,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;CACtE,MAAM,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACnC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;CACzD,MAAM,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC;CAC1B,KAAK;AACL;CACA;CACA,IAAI,IAAI,WAAW,IAAI,KAAK,KAAK,CAAC,EAAE;CACpC,MAAM,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC;CACtD,KAAK;AACL;CACA,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;CAC3B,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACxB,MAAM,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;CACtB,KAAK;AACL;CACA,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;CACxB,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;CAC7D;CACA,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;CAChC,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;CAC7C,GAAG,CAAC;AACJ;CACA;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE;CAC3C,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;CACpC,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;CAC7C,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;CACrC,GAAG,CAAC;AACJ;CACA;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE;CAC3C,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;CACpC,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;CAC7C,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;CACrC,GAAG,CAAC;AACJ;CACA;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;CAC5C,IAAI,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;CAChD,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;CACrB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;CAC3B,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACnB;CACA;CACA,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,OAAO,KAAK,CAAC;AACvC;CACA;CACA,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1B;CACA,IAAI,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACrB,GAAG,CAAC;AACJ;CACA;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,IAAI,EAAE;CAC/C,IAAI,MAAM,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;CAClD,IAAI,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;CACtB,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;AAC5B;CACA,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,yCAAyC,CAAC,CAAC;AAC3E;CACA,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;CAC1B,MAAM,OAAO,IAAI,CAAC;CAClB,KAAK;AACL;CACA,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE;CACjB,MAAM,CAAC,EAAE,CAAC;CACV,KAAK;CACL,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3C;CACA,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE;CACjB,MAAM,IAAI,IAAI,GAAG,SAAS,IAAI,CAAC,SAAS,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;CACtD,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;CAC1C,KAAK;AACL;CACA,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;CACxB,GAAG,CAAC;AACJ;CACA;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;CAC7C,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;CACrC,GAAG,CAAC;AACJ;CACA;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;CAC5C,IAAI,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;CACpC,IAAI,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;CAC5B,IAAI,IAAI,GAAG,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;AACzC;CACA;CACA,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;CAC7B,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE;CAC1D,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CAClD,QAAQ,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;CAC1B,QAAQ,OAAO,IAAI,CAAC;CACpB,OAAO;AACP;CACA,MAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;CACxB,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;CACtB,MAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;CACxB,MAAM,OAAO,IAAI,CAAC;CAClB,KAAK;AACL;CACA;CACA,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;CAC5B,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;CAC9C,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AACzB;CACA;CACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,EAAE,EAAE;CACxE,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;CACjC,MAAM,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;CACjC,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;CAC9B,OAAO,MAAM;CACb,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;CAC5B,OAAO;CACP,KAAK;CACL,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/C;CACA,IAAI,OAAO,IAAI,CAAC;CAChB,GAAG,CAAC;AACJ;CACA;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;CAC5C,IAAI,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;CACpC,IAAI,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;CAC5B,IAAI,IAAI,GAAG,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;AACzC;CACA,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;CAC7B,MAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;CACxB,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;CACtB,MAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;CACxB,MAAM,OAAO,IAAI,CAAC;CAClB,KAAK;AACL;CACA,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AACzB;CACA,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;CAChD,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CACrC,MAAM,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;CACxB,KAAK,MAAM;CACX;CACA,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;CACjE,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;CACnC,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;CAC/B,OAAO;CACP,KAAK;AACL;CACA,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;CACxB,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;CAC1C,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;CACnC,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;CAC1C,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;CACnC,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,IAAI;CACvC,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtB;CACA,IAAI,OAAO,IAAI,CAAC;CAChB,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI;CACrC,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;CAC/B,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE;CACtE,IAAI,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;CACjC,IAAI,IAAI,CAAC,CAAC;AACV;CACA,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACtB;CACA,IAAI,IAAI,CAAC,CAAC;CACV,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;CAClB,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CACrC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;CAC9C,MAAM,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;CAC3C,MAAM,CAAC,IAAI,KAAK,GAAG,SAAS,CAAC;CAC7B,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC;CACpD,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;CAC5C,KAAK;CACL,IAAI,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;CACzC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;CAC9C,MAAM,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;CACtB,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;CAC5C,KAAK;AACL;CACA,IAAI,IAAI,KAAK,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;AACzC;CACA;CACA,IAAI,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC;CACzB,IAAI,KAAK,GAAG,CAAC,CAAC;CACd,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CACtC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;CACvC,MAAM,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;CACtB,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;CACpC,KAAK;CACL,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtB;CACA,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;CACxB,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE;CACxD,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AACzC;CACA,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;CACzB,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC;AAChB;CACA;CACA,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;CACxC,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;CACvC,IAAI,KAAK,GAAG,EAAE,GAAG,OAAO,CAAC;CACzB,IAAI,IAAI,KAAK,KAAK,CAAC,EAAE;CACrB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;CACzB,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;CACtB,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;CACtC,KAAK;AACL;CACA;CACA,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;CAChC,IAAI,IAAI,CAAC,CAAC;AACV;CACA,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE;CACxB,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;CACvB,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;CACvB,MAAM,CAAC,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;CACpC,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CACzC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACvB,OAAO;CACP,KAAK;AACL;CACA,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC/C,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;CAC7B,MAAM,CAAC,GAAG,IAAI,CAAC;CACf,MAAM,IAAI,CAAC,EAAE;CACb,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACvB,OAAO;CACP,KAAK;AACL;CACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;CACrC,MAAM,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,SAAS;CACtD,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC;CACA;CACA;CACA,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;AAC/C;CACA,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;CAC/B,MAAM,OAAO,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAE;CAC/B,QAAQ,EAAE,EAAE,CAAC;CACb,QAAQ,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;CACvB,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAChC,QAAQ,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE;CACzB,UAAU,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC;CAC1B,SAAS;CACT,OAAO;CACP,MAAM,IAAI,CAAC,EAAE;CACb,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;CACxB,OAAO;CACP,KAAK;CACL,IAAI,IAAI,CAAC,EAAE;CACX,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;CAChB,KAAK;CACL,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;AACd;CACA;CACA,IAAI,IAAI,IAAI,KAAK,KAAK,IAAI,KAAK,KAAK,CAAC,EAAE;CACvC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;CACtB,KAAK;AACL;CACA,IAAI,OAAO;CACX,MAAM,GAAG,EAAE,CAAC,IAAI,IAAI;CACpB,MAAM,GAAG,EAAE,CAAC;CACZ,KAAK,CAAC;CACN,GAAG,CAAC;AACJ;CACA;CACA;CACA;CACA;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;CAC9D,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;AAC1B;CACA,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;CACvB,MAAM,OAAO;CACb,QAAQ,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;CACtB,QAAQ,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;CACtB,OAAO,CAAC;CACR,KAAK;AACL;CACA,IAAI,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;CACtB,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;CACnD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACzC;CACA,MAAM,IAAI,IAAI,KAAK,KAAK,EAAE;CAC1B,QAAQ,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;CAC5B,OAAO;AACP;CACA,MAAM,IAAI,IAAI,KAAK,KAAK,EAAE;CAC1B,QAAQ,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;CAC5B,QAAQ,IAAI,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;CAC5C,UAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CACxB,SAAS;CACT,OAAO;AACP;CACA,MAAM,OAAO;CACb,QAAQ,GAAG,EAAE,GAAG;CAChB,QAAQ,GAAG,EAAE,GAAG;CAChB,OAAO,CAAC;CACR,KAAK;AACL;CACA,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;CACnD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;AACzC;CACA,MAAM,IAAI,IAAI,KAAK,KAAK,EAAE;CAC1B,QAAQ,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;CAC5B,OAAO;AACP;CACA,MAAM,OAAO;CACb,QAAQ,GAAG,EAAE,GAAG;CAChB,QAAQ,GAAG,EAAE,GAAG,CAAC,GAAG;CACpB,OAAO,CAAC;CACR,KAAK;AACL;CACA,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,MAAM,CAAC,EAAE;CAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;AAC/C;CACA,MAAM,IAAI,IAAI,KAAK,KAAK,EAAE;CAC1B,QAAQ,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;CAC5B,QAAQ,IAAI,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;CAC5C,UAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CACxB,SAAS;CACT,OAAO;AACP;CACA,MAAM,OAAO;CACb,QAAQ,GAAG,EAAE,GAAG,CAAC,GAAG;CACpB,QAAQ,GAAG,EAAE,GAAG;CAChB,OAAO,CAAC;CACR,KAAK;AACL;CACA;AACA;CACA;CACA,IAAI,IAAI,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;CACvD,MAAM,OAAO;CACb,QAAQ,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;CACtB,QAAQ,GAAG,EAAE,IAAI;CACjB,OAAO,CAAC;CACR,KAAK;AACL;CACA;CACA,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;CAC1B,MAAM,IAAI,IAAI,KAAK,KAAK,EAAE;CAC1B,QAAQ,OAAO;CACf,UAAU,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CACtC,UAAU,GAAG,EAAE,IAAI;CACnB,SAAS,CAAC;CACV,OAAO;AACP;CACA,MAAM,IAAI,IAAI,KAAK,KAAK,EAAE;CAC1B,QAAQ,OAAO;CACf,UAAU,GAAG,EAAE,IAAI;CACnB,UAAU,GAAG,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;CAC9C,SAAS,CAAC;CACV,OAAO;AACP;CACA,MAAM,OAAO;CACb,QAAQ,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CACpC,QAAQ,GAAG,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;CAC5C,OAAO,CAAC;CACR,KAAK;AACL;CACA,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;CACpC,GAAG,CAAC;AACJ;CACA;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;CACxC,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC;CAC9C,GAAG,CAAC;AACJ;CACA;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;CACxC,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC;CAC9C,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;CAC1C,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC;CAC7C,GAAG,CAAC;AACJ;CACA;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,GAAG,EAAE;CAClD,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC9B;CACA;CACA,IAAI,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC;AACvC;CACA,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;AAChE;CACA,IAAI,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CAC5B,IAAI,IAAI,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CAC1B,IAAI,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5B;CACA;CACA,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC;AACxD;CACA;CACA,IAAI,OAAO,EAAE,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CACrE,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;CAC1C,IAAI,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC;CAC7B,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;AAC5B;CACA,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC;CAChB,IAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;CAC/C,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC;CAClD,KAAK;AACL;CACA,IAAI,OAAO,GAAG,CAAC;CACf,GAAG,CAAC;AACJ;CACA;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;CAC5C,IAAI,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC;AAC7B;CACA,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;CAClB,IAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;CAC/C,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,SAAS,CAAC;CACtD,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;CACpC,MAAM,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC;CACtB,KAAK;AACL;CACA,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;CACxB,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;CAC1C,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;CACnC,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;CACxC,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;CAC7B,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACxB;CACA,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC;CACjB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AACtB;CACA,IAAI,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAE;CAC1B,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CACpB,KAAK,MAAM;CACX,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;CACpB,KAAK;AACL;CACA;CACA,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;CACtB,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACtB;CACA;CACA,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;CACtB,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACtB;CACA,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd;CACA,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;CACrC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CAClB,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CAClB,MAAM,EAAE,CAAC,CAAC;CACV,KAAK;AACL;CACA,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;CACvB,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AACvB;CACA,IAAI,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE;CACxB,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;CAChF,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE;CACjB,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CACpB,QAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;CACxB,UAAU,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;CACtC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;CACvB,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;CACvB,WAAW;AACX;CACA,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CACtB,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CACtB,SAAS;CACT,OAAO;AACP;CACA,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;CAChF,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE;CACjB,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CACpB,QAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;CACxB,UAAU,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;CACtC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;CACvB,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;CACvB,WAAW;AACX;CACA,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CACtB,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CACtB,SAAS;CACT,OAAO;AACP;CACA,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;CACzB,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAClB,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAClB,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAClB,OAAO,MAAM;CACb,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAClB,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAClB,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAClB,OAAO;CACP,KAAK;AACL;CACA,IAAI,OAAO;CACX,MAAM,CAAC,EAAE,CAAC;CACV,MAAM,CAAC,EAAE,CAAC;CACV,MAAM,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;CACtB,KAAK,CAAC;CACN,GAAG,CAAC;AACJ;CACA;CACA;CACA;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC,EAAE;CAC5C,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;CAC7B,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACxB;CACA,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC;CACjB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AACtB;CACA,IAAI,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAE;CAC1B,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CACpB,KAAK,MAAM;CACX,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;CACpB,KAAK;AACL;CACA,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;CACvB,IAAI,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACvB;CACA,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AAC1B;CACA,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;CAC3C,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;CAChF,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE;CACjB,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CACpB,QAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;CACxB,UAAU,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;CAC1B,YAAY,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;CAC3B,WAAW;AACX;CACA,UAAU,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CACvB,SAAS;CACT,OAAO;AACP;CACA,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;CAChF,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE;CACjB,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CACpB,QAAQ,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;CACxB,UAAU,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;CAC1B,YAAY,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;CAC3B,WAAW;AACX;CACA,UAAU,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CACvB,SAAS;CACT,OAAO;AACP;CACA,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;CACzB,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAClB,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;CACpB,OAAO,MAAM;CACb,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAClB,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;CACpB,OAAO;CACP,KAAK;AACL;CACA,IAAI,IAAI,GAAG,CAAC;CACZ,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;CACzB,MAAM,GAAG,GAAG,EAAE,CAAC;CACf,KAAK,MAAM;CACX,MAAM,GAAG,GAAG,EAAE,CAAC;CACf,KAAK;AACL;CACA,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;CACzB,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAClB,KAAK;AACL;CACA,IAAI,OAAO,GAAG,CAAC;CACf,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;CACxC,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,GAAG,CAAC,GAAG,EAAE,CAAC;CACxC,IAAI,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;AACxC;CACA,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;CACzB,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;CACxB,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;CACnB,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;AACnB;CACA;CACA,IAAI,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE;CAC3D,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CAClB,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CAClB,KAAK;AACL;CACA,IAAI,GAAG;CACP,MAAM,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;CACzB,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CACpB,OAAO;CACP,MAAM,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;CACzB,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CACpB,OAAO;AACP;CACA,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACvB,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE;CACjB;CACA,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC;CAClB,QAAQ,CAAC,GAAG,CAAC,CAAC;CACd,QAAQ,CAAC,GAAG,CAAC,CAAC;CACd,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;CAC7C,QAAQ,MAAM;CACd,OAAO;AACP;CACA,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAChB,KAAK,QAAQ,IAAI,EAAE;AACnB;CACA,IAAI,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;CAC3B,GAAG,CAAC;AACJ;CACA;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;CAC1C,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CACtC,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;CAC3C,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;CACrC,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,IAAI;CACzC,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;CACrC,GAAG,CAAC;AACJ;CACA;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;CAC5C,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;CAC/B,GAAG,CAAC;AACJ;CACA;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;CAC5C,IAAI,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;CACpC,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;CACrB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;CAC3B,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACnB;CACA;CACA,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;CAC1B,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CAC1B,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;CACzB,MAAM,OAAO,IAAI,CAAC;CAClB,KAAK;AACL;CACA;CACA,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;CAClB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CACzD,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CAChC,MAAM,CAAC,IAAI,KAAK,CAAC;CACjB,MAAM,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC;CACvB,MAAM,CAAC,IAAI,SAAS,CAAC;CACrB,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACxB,KAAK;CACL,IAAI,IAAI,KAAK,KAAK,CAAC,EAAE;CACrB,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;CAC5B,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;CACpB,KAAK;CACL,IAAI,OAAO,IAAI,CAAC;CAChB,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;CAC3C,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;CACpD,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;CAC1C,IAAI,IAAI,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC;AAC3B;CACA,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;CACpD,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,QAAQ,EAAE,OAAO,CAAC,CAAC;AAClD;CACA,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;AACjB;CACA,IAAI,IAAI,GAAG,CAAC;CACZ,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;CACzB,MAAM,GAAG,GAAG,CAAC,CAAC;CACd,KAAK,MAAM;CACX,MAAM,IAAI,QAAQ,EAAE;CACpB,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC;CACnB,OAAO;AACP;CACA,MAAM,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,mBAAmB,CAAC,CAAC;AACpD;CACA,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CAChC,MAAM,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;CAC7C,KAAK;CACL,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;CAC7C,IAAI,OAAO,GAAG,CAAC;CACf,GAAG,CAAC;AACJ;CACA;CACA;CACA;CACA;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;CACxC,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;CAC7D,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;AAC5D;CACA,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CAC7B,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;CAC7C,IAAI,OAAO,GAAG,CAAC;CACf,GAAG,CAAC;AACJ;CACA;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;CAC1C;CACA,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3C,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAC5C;CACA,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC;CAChB,IAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;CAC/C,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CAChC,MAAM,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/B;CACA,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,SAAS;CAC5B,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE;CACjB,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC;CACjB,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE;CACxB,QAAQ,GAAG,GAAG,CAAC,CAAC;CAChB,OAAO;CACP,MAAM,MAAM;CACZ,KAAK;CACL,IAAI,OAAO,GAAG,CAAC;CACf,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;CACxC,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CAChC,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,EAAE,GAAG,EAAE;CACtC,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CAC/B,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;CAC1C,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;CAC/B,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;CACxC,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;CAC9B,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;CACxC,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;CACjC,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,EAAE,GAAG,EAAE;CACtC,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;CAChC,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;CAC1C,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;CAC/B,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;CACxC,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;CAC9B,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;CACxC,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CAChC,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,EAAE,GAAG,EAAE;CACtC,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CAC/B,GAAG,CAAC;AACJ;CACA;CACA;CACA;CACA;CACA,EAAE,EAAE,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;CAC9B,IAAI,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;CACxB,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;CAC5C,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,uCAAuC,CAAC,CAAC;CAC/D,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,+BAA+B,CAAC,CAAC;CACjE,IAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;CAC9C,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,IAAI;CAC7C,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,sDAAsD,CAAC,CAAC;CAC7E,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;CACtC,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,GAAG,EAAE;CACpD,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;CACnB,IAAI,OAAO,IAAI,CAAC;CAChB,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,GAAG,EAAE;CAClD,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,uCAAuC,CAAC,CAAC;CAC/D,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;CAC/B,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;CAC9C,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;CAC3D,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;CACnC,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,GAAG,EAAE;CAChD,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;CAC5D,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;CACpC,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;CAC9C,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;CAC3D,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;CACnC,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,GAAG,EAAE;CAChD,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;CAC5D,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;CACpC,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;CAC9C,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;CAC3D,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;CACnC,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;CAC9C,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;CAC3D,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;CACjC,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;CACnC,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,GAAG,EAAE;CAChD,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;CAC3D,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;CACjC,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;CACpC,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;CAC3C,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;CAC3D,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;CAC5B,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;CAC9B,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,IAAI;CAC7C,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;CAC5D,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;CAC5B,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CAC/B,GAAG,CAAC;AACJ;CACA;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,IAAI;CAC7C,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;CAC5D,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;CAC5B,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CAC/B,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,IAAI;CAC7C,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;CAC5D,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;CAC5B,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CAC/B,GAAG,CAAC;AACJ;CACA;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;CAC3C,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;CAC3D,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;CAC5B,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;CAC9B,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE;CAC9C,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;CACtD,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;CAC5B,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;CACnC,GAAG,CAAC;AACJ;CACA;CACA,EAAE,IAAI,MAAM,GAAG;CACf,IAAI,IAAI,EAAE,IAAI;CACd,IAAI,IAAI,EAAE,IAAI;CACd,IAAI,IAAI,EAAE,IAAI;CACd,IAAI,MAAM,EAAE,IAAI;CAChB,GAAG,CAAC;AACJ;CACA;CACA,EAAE,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE;CAC5B;CACA,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;CACrB,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CAC3B,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;CAChC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnD;CACA,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;CAC3B,GAAG;AACH;CACA,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,IAAI;CAC3C,IAAI,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;CAC3B,IAAI,GAAG,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;CAClD,IAAI,OAAO,GAAG,CAAC;CACf,GAAG,CAAC;AACJ;CACA,EAAE,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,GAAG,EAAE;CACpD;CACA;CACA,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC;CAChB,IAAI,IAAI,IAAI,CAAC;AACb;CACA,IAAI,GAAG;CACP,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;CAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CACxB,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CAC3B,MAAM,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;CAC3B,KAAK,QAAQ,IAAI,GAAG,IAAI,CAAC,CAAC,EAAE;AAC5B;CACA,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAClD,IAAI,IAAI,GAAG,KAAK,CAAC,EAAE;CACnB,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACrB,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;CACnB,KAAK,MAAM,IAAI,GAAG,GAAG,CAAC,EAAE;CACxB,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CACrB,KAAK,MAAM;CACX,MAAM,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,EAAE;CACjC;CACA,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;CAClB,OAAO,MAAM;CACb;CACA,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;CACnB,OAAO;CACP,KAAK;AACL;CACA,IAAI,OAAO,CAAC,CAAC;CACb,GAAG,CAAC;AACJ;CACA,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE;CACvD,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;CACjC,GAAG,CAAC;AACJ;CACA,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;CAChD,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAC5B,GAAG,CAAC;AACJ;CACA,EAAE,SAAS,IAAI,IAAI;CACnB,IAAI,MAAM,CAAC,IAAI;CACf,MAAM,IAAI;CACV,MAAM,MAAM;CACZ,MAAM,yEAAyE,CAAC,CAAC;CACjF,GAAG;CACH,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACzB;CACA,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;CACxD;CACA,IAAI,IAAI,IAAI,GAAG,QAAQ,CAAC;AACxB;CACA,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;CAC3C,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;CACrC,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CACvC,KAAK;CACL,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AAC3B;CACA,IAAI,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;CAC3B,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACzB,MAAM,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;CACvB,MAAM,OAAO;CACb,KAAK;AACL;CACA;CACA,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CAC9B,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAChD;CACA,IAAI,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CACxC,MAAM,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACpC,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC;CACjE,MAAM,IAAI,GAAG,IAAI,CAAC;CAClB,KAAK;CACL,IAAI,IAAI,MAAM,EAAE,CAAC;CACjB,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC;CAC/B,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE;CACzC,MAAM,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;CACzB,KAAK,MAAM;CACX,MAAM,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;CACxB,KAAK;CACL,GAAG,CAAC;AACJ;CACA,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;CAC9C;CACA,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;CAC9B,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;CAClC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;AACpB;CACA;CACA,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;CACf,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CACzC,MAAM,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CAC/B,MAAM,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;CACtB,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;CACpC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC;CAC7C,KAAK;AACL;CACA;CACA,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;CACzC,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;CACnB,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;CAC3C,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;CACrB,OAAO;CACP,KAAK;CACL,IAAI,OAAO,GAAG,CAAC;CACf,GAAG,CAAC;AACJ;CACA,EAAE,SAAS,IAAI,IAAI;CACnB,IAAI,MAAM,CAAC,IAAI;CACf,MAAM,IAAI;CACV,MAAM,MAAM;CACZ,MAAM,gEAAgE,CAAC,CAAC;CACxE,GAAG;CACH,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACzB;CACA,EAAE,SAAS,IAAI,IAAI;CACnB,IAAI,MAAM,CAAC,IAAI;CACf,MAAM,IAAI;CACV,MAAM,MAAM;CACZ,MAAM,uDAAuD,CAAC,CAAC;CAC/D,GAAG;CACH,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACzB;CACA,EAAE,SAAS,MAAM,IAAI;CACrB;CACA,IAAI,MAAM,CAAC,IAAI;CACf,MAAM,IAAI;CACV,MAAM,OAAO;CACb,MAAM,qEAAqE,CAAC,CAAC;CAC7E,GAAG;CACH,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC3B;CACA,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;CAChD;CACA,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;CAClB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CACzC,MAAM,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,CAAC;CACjD,MAAM,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;CAC9B,MAAM,EAAE,MAAM,EAAE,CAAC;AACjB;CACA,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;CACxB,MAAM,KAAK,GAAG,EAAE,CAAC;CACjB,KAAK;CACL,IAAI,IAAI,KAAK,KAAK,CAAC,EAAE;CACrB,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC;CACtC,KAAK;CACL,IAAI,OAAO,GAAG,CAAC;CACf,GAAG,CAAC;AACJ;CACA;CACA,EAAE,EAAE,CAAC,MAAM,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE;CACpC;CACA,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;AAC1C;CACA,IAAI,IAAI,KAAK,CAAC;CACd,IAAI,IAAI,IAAI,KAAK,MAAM,EAAE;CACzB,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;CACzB,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,EAAE;CAChC,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;CACzB,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,EAAE;CAChC,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;CACzB,KAAK,MAAM,IAAI,IAAI,KAAK,QAAQ,EAAE;CAClC,MAAM,KAAK,GAAG,IAAI,MAAM,EAAE,CAAC;CAC3B,KAAK,MAAM;CACX,MAAM,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;CAC/C,KAAK;CACL,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AACzB;CACA,IAAI,OAAO,KAAK,CAAC;CACjB,GAAG,CAAC;AACJ;CACA;CACA;CACA;CACA,EAAE,SAAS,GAAG,EAAE,CAAC,EAAE;CACnB,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;CAC/B,MAAM,IAAI,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CAC/B,MAAM,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;CACvB,MAAM,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;CACzB,KAAK,MAAM;CACX,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,gCAAgC,CAAC,CAAC;CACzD,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;CACjB,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;CACxB,KAAK;CACL,GAAG;AACH;CACA,EAAE,GAAG,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,CAAC,EAAE;CACjD,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAE,+BAA+B,CAAC,CAAC;CAC9D,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,iCAAiC,CAAC,CAAC;CACrD,GAAG,CAAC;AACJ;CACA,EAAE,GAAG,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE;CACpD,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,MAAM,CAAC,EAAE,+BAA+B,CAAC,CAAC;CAC7E,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG;CACnC,MAAM,iCAAiC,CAAC,CAAC;CACzC,GAAG,CAAC;AACJ;CACA,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;CACzC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;CACjE,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;CAC1C,GAAG,CAAC;AACJ;CACA,EAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE;CACvC,IAAI,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;CACpB,MAAM,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;CACvB,KAAK;AACL;CACA,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;CACzC,GAAG,CAAC;AACJ;CACA,EAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;CAC1C,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB;CACA,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACvB,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;CAC9B,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CACvB,KAAK;CACL,IAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;CAC/B,GAAG,CAAC;AACJ;CACA,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;CAC5C,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB;CACA,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CACxB,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;CAC9B,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CACvB,KAAK;CACL,IAAI,OAAO,GAAG,CAAC;CACf,GAAG,CAAC;AACJ;CACA,EAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;CAC1C,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB;CACA,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACvB,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;CACzB,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CACvB,KAAK;CACL,IAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;CAC/B,GAAG,CAAC;AACJ;CACA,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;CAC5C,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB;CACA,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CACxB,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;CACzB,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CACvB,KAAK;CACL,IAAI,OAAO,GAAG,CAAC;CACf,GAAG,CAAC;AACJ;CACA,EAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;CAC5C,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;CACrB,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;CACnC,GAAG,CAAC;AACJ;CACA,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;CAC5C,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACxB,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;CAChC,GAAG,CAAC;AACJ;CACA,EAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;CAC1C,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACxB,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;CAC/B,GAAG,CAAC;AACJ;CACA,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;CACzC,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;CACnC,GAAG,CAAC;AACJ;CACA,EAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE;CACvC,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAC1B,GAAG,CAAC;AACJ;CACA,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;CACzC,IAAI,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;AACrC;CACA,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CAC/B,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3B;CACA;CACA,IAAI,IAAI,IAAI,KAAK,CAAC,EAAE;CACpB,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CAChD,MAAM,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;CAC9B,KAAK;AACL;CACA;CACA;CACA;CACA,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAC3B,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;CACd,IAAI,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;CAC5C,MAAM,CAAC,EAAE,CAAC;CACV,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CAClB,KAAK;CACL,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACxB;CACA,IAAI,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;CACpC,IAAI,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;AAC5B;CACA;CACA;CACA,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CACxC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;CAC/B,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACtC;CACA,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;CAC9C,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;CACtB,KAAK;AACL;CACA,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAC3B,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;CAC7C,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAC3B,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;CACd,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;CAC7B,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC;CAClB,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE;CAC/C,QAAQ,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;CAC3B,OAAO;CACP,MAAM,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CACpB,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACvD;CACA,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CACtB,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;CACrB,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CACtB,MAAM,CAAC,GAAG,CAAC,CAAC;CACZ,KAAK;AACL;CACA,IAAI,OAAO,CAAC,CAAC;CACb,GAAG,CAAC;AACJ;CACA,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;CACzC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAC/B,IAAI,IAAI,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE;CAC5B,MAAM,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;CACvB,MAAM,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;CACrC,KAAK,MAAM;CACX,MAAM,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CAC5B,KAAK;CACL,GAAG,CAAC;AACJ;CACA,EAAE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;CAC5C,IAAI,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;CACnD,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;AAC5C;CACA,IAAI,IAAI,UAAU,GAAG,CAAC,CAAC;CACvB,IAAI,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC;CACzC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;CACnC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACf,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CACzC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACvC,KAAK;AACL;CACA,IAAI,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;CACrB,IAAI,IAAI,OAAO,GAAG,CAAC,CAAC;CACpB,IAAI,IAAI,UAAU,GAAG,CAAC,CAAC;CACvB,IAAI,IAAI,KAAK,GAAG,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC;CACrC,IAAI,IAAI,KAAK,KAAK,CAAC,EAAE;CACrB,MAAM,KAAK,GAAG,EAAE,CAAC;CACjB,KAAK;AACL;CACA,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;CAC1C,MAAM,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CAC9B,MAAM,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;CAC3C,QAAQ,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;CAClC,QAAQ,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE;CAC5B,UAAU,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CAC9B,SAAS;AACT;CACA,QAAQ,IAAI,GAAG,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,EAAE;CACxC,UAAU,UAAU,GAAG,CAAC,CAAC;CACzB,UAAU,SAAS;CACnB,SAAS;AACT;CACA,QAAQ,OAAO,KAAK,CAAC,CAAC;CACtB,QAAQ,OAAO,IAAI,GAAG,CAAC;CACvB,QAAQ,UAAU,EAAE,CAAC;CACrB,QAAQ,IAAI,UAAU,KAAK,UAAU,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS;AACxE;CACA,QAAQ,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;CAC1C,QAAQ,UAAU,GAAG,CAAC,CAAC;CACvB,QAAQ,OAAO,GAAG,CAAC,CAAC;CACpB,OAAO;CACP,MAAM,KAAK,GAAG,EAAE,CAAC;CACjB,KAAK;AACL;CACA,IAAI,OAAO,GAAG,CAAC;CACf,GAAG,CAAC;AACJ;CACA,EAAE,GAAG,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,GAAG,EAAE;CACrD,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7B;CACA,IAAI,OAAO,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;CACrC,GAAG,CAAC;AACJ;CACA,EAAE,GAAG,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,GAAG,EAAE;CACzD,IAAI,IAAI,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;CAC1B,IAAI,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC;CACnB,IAAI,OAAO,GAAG,CAAC;CACf,GAAG,CAAC;AACJ;CACA;CACA;CACA;AACA;CACA,EAAE,EAAE,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;CAChC,IAAI,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;CACzB,GAAG,CAAC;AACJ;CACA,EAAE,SAAS,IAAI,EAAE,CAAC,EAAE;CACpB,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACtB;CACA,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;CACpC,IAAI,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,KAAK,CAAC,EAAE;CAC/B,MAAM,IAAI,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;CAC3C,KAAK;AACL;CACA,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;CAC1C,IAAI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;CACtC,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtC;CACA,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAC3D,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CACvC,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CACtC,GAAG;CACH,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACtB;CACA,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,GAAG,EAAE;CACtD,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;CAC5C,GAAG,CAAC;AACJ;CACA,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,GAAG,EAAE;CAC1D,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;CAC1C,IAAI,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC;CACjB,IAAI,OAAO,CAAC,CAAC;CACb,GAAG,CAAC;AACJ;CACA,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;CAC7C,IAAI,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;CAClC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACrB,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;CACnB,MAAM,OAAO,CAAC,CAAC;CACf,KAAK;AACL;CACA,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CACtB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAC9E,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;CACzC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC;AAChB;CACA,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;CAC5B,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAC3B,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;CAC9B,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAC3B,KAAK;AACL;CACA,IAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;CAC/B,GAAG,CAAC;AACJ;CACA,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;CAC3C,IAAI,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACnE;CACA,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACrB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAC9E,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;CACzC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC;CAChB,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;CAC5B,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAC3B,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;CAC9B,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAC3B,KAAK;AACL;CACA,IAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;CAC/B,GAAG,CAAC;AACJ;CACA,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC,EAAE;CAC1C;CACA,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;CACvD,IAAI,OAAO,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;CAC/B,GAAG,CAAC;CACJ,CAAC,EAAE,QAAa,KAAK,WAAW,IAAI,MAAM,EAAEF,cAAI,CAAC;;;CCr3GjD,sBAAc,GAAG,MAAM,CAAC;AACxB;CACA,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE;CAC1B,EAAE,IAAI,CAAC,GAAG;CACV,IAAI,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,kBAAkB,CAAC,CAAC;CAC/C,CAAC;AACD;CACA,MAAM,CAAC,KAAK,GAAG,SAAS,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE;CAC/C,EAAE,IAAI,CAAC,IAAI,CAAC;CACZ,IAAI,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,oBAAoB,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;CACpE,CAAC;;;CCVD,YAAY,CAAC;AACb;CACA,IAAI,KAAK,GAAG,OAAO,CAAC;AACpB;CACA,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE;CAC3B,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;CACxB,IAAI,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC;CACvB,EAAE,IAAI,CAAC,GAAG;CACV,IAAI,OAAO,EAAE,CAAC;CACd,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;CACf,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;CAC/B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;CACvC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CAC1B,IAAI,OAAO,GAAG,CAAC;CACf,GAAG;CACH,EAAE,IAAI,GAAG,KAAK,KAAK,EAAE;CACrB,IAAI,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;CAC1C,IAAI,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC;CAC5B,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;CACtB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;CAC1C,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;CAClD,GAAG,MAAM;CACT,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CACzC,MAAM,IAAI,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;CAChC,MAAM,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;CACtB,MAAM,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;CACxB,MAAM,IAAI,EAAE;CACZ,QAAQ,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;CACzB;CACA,QAAQ,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;CACrB,KAAK;CACL,GAAG;CACH,EAAE,OAAO,GAAG,CAAC;CACb,CAAC;CACD,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;AACxB;CACA,SAAS,KAAK,CAAC,IAAI,EAAE;CACrB,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;CACvB,IAAI,OAAO,GAAG,GAAG,IAAI,CAAC;CACtB;CACA,IAAI,OAAO,IAAI,CAAC;CAChB,CAAC;CACD,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;AACpB;CACA,SAAS,KAAK,CAAC,GAAG,EAAE;CACpB,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;CACf,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;CACrC,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;CACtC,EAAE,OAAO,GAAG,CAAC;CACb,CAAC;CACD,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;AACpB;CACA,KAAK,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE;CACzC,EAAE,IAAI,GAAG,KAAK,KAAK;CACnB,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;CACtB;CACA,IAAI,OAAO,GAAG,CAAC;CACf,CAAC;;;;CCzDD,YAAY,CAAC;AACb;CACA,IAAI,KAAK,GAAG,OAAO,CAAC;AACM;AACqB;AACK;AACpD;CACA,KAAK,CAAC,MAAM,GAAGoC,kBAAS,CAAC;CACzB,KAAK,CAAC,OAAO,GAAGC,OAAQ,CAAC,OAAO,CAAC;CACjC,KAAK,CAAC,KAAK,GAAGA,OAAQ,CAAC,KAAK,CAAC;CAC7B,KAAK,CAAC,KAAK,GAAGA,OAAQ,CAAC,KAAK,CAAC;CAC7B,KAAK,CAAC,MAAM,GAAGA,OAAQ,CAAC,MAAM,CAAC;AAC/B;CACA;CACA,SAAS,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE;CAC9B,EAAE,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;CAC3D,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACd;CACA,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;CACxB,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;AACtB;CACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CACvC,IAAI,IAAI,CAAC,CAAC;CACV,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;CAC9B,IAAI,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;CACnB,MAAM,IAAI,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC;CAC7B,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC;CAC5B;CACA,QAAQ,CAAC,GAAG,GAAG,CAAC;CAChB,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CACjB,KAAK,MAAM;CACX,MAAM,CAAC,GAAG,CAAC,CAAC;CACZ,KAAK;AACL;CACA,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACf,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CAChB,GAAG;AACH;CACA,EAAE,OAAO,GAAG,CAAC;CACb,CAAC;CACD,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AACtB;CACA;CACA,SAAS,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE;CACxB,EAAE,IAAI,GAAG,GAAG;CACZ,IAAI,EAAE;CACN,IAAI,EAAE;CACN,GAAG,CAAC;AACJ;CACA,EAAE,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC;CAClB,EAAE,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC;CAClB,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;CACb,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;CACb,EAAE,IAAI,EAAE,CAAC;CACT,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE;CAC/C;CACA,IAAI,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;CACrC,IAAI,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;CACrC,IAAI,IAAI,GAAG,KAAK,CAAC;CACjB,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC;CACf,IAAI,IAAI,GAAG,KAAK,CAAC;CACjB,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC;CACf,IAAI,IAAI,EAAE,CAAC;CACX,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE;CACzB,MAAM,EAAE,GAAG,CAAC,CAAC;CACb,KAAK,MAAM;CACX,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;CAClC,MAAM,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;CAC7C,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC;CAClB;CACA,QAAQ,EAAE,GAAG,GAAG,CAAC;CACjB,KAAK;CACL,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACpB;CACA,IAAI,IAAI,EAAE,CAAC;CACX,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE;CACzB,MAAM,EAAE,GAAG,CAAC,CAAC;CACb,KAAK,MAAM;CACX,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;CAClC,MAAM,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;CAC7C,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC;CAClB;CACA,QAAQ,EAAE,GAAG,GAAG,CAAC;CACjB,KAAK;CACL,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACpB;CACA;CACA,IAAI,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC;CACzB,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;CAClB,IAAI,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC;CACzB,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;CAClB,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CACjB,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CACjB,GAAG;AACH;CACA,EAAE,OAAO,GAAG,CAAC;CACb,CAAC;CACD,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AACtB;CACA,SAAS,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;CAC7C,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;CACvB,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,cAAc,GAAG;CAClD,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC;CAC9C,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CACtC,GAAG,CAAC;CACJ,CAAC;CACD,KAAK,CAAC,cAAc,GAAG,cAAc,CAAC;AACtC;CACA,SAAS,UAAU,CAAC,KAAK,EAAE;CAC3B,EAAE,OAAO,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;CAChE,IAAI,KAAK,CAAC;CACV,CAAC;CACD,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;AAC9B;CACA,SAAS,SAAS,CAAC,KAAK,EAAE;CAC1B,EAAE,OAAO,IAAIC,IAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;CACpC,CAAC;CACD,KAAK,CAAC,SAAS,GAAG,SAAS;;;CCrH3B,YAAY,CAAC;AACb;AAC0B;AACM;CAChC,IAAI,MAAM,GAAGC,SAAK,CAAC,MAAM,CAAC;CAC1B,IAAI,MAAM,GAAGA,SAAK,CAAC,MAAM,CAAC;CAC1B,IAAIC,QAAM,GAAGD,SAAK,CAAC,MAAM,CAAC;AAC1B;CACA,SAAS,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE;CAC/B,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;CACnB,EAAE,IAAI,CAAC,CAAC,GAAG,IAAID,IAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC9B;CACA;CACA,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,GAAGA,IAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAGA,IAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/D;CACA;CACA,EAAE,IAAI,CAAC,IAAI,GAAG,IAAIA,IAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CACxC,EAAE,IAAI,CAAC,GAAG,GAAG,IAAIA,IAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CACvC,EAAE,IAAI,CAAC,GAAG,GAAG,IAAIA,IAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvC;CACA;CACA,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,IAAIA,IAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CACxC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3D;CACA;CACA,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;CAC9B,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;CAC9B,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;CAC9B,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9B;CACA,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AACpD;CACA;CACA,EAAE,IAAI,WAAW,GAAG,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CACjD,EAAE,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;CACjD,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;CACrB,GAAG,MAAM;CACT,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;CAC9B,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CACvC,GAAG;CACH,CAAC;CACD,QAAc,GAAG,SAAS,CAAC;AAC3B;CACA,SAAS,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,GAAG;CAC7C,EAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;CACrC,CAAC,CAAC;AACF;CACA,SAAS,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,GAAG;CACnD,EAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;CACrC,CAAC,CAAC;AACF;CACA,SAAS,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE;CAC/D,EAAEE,QAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;CACxB,EAAE,IAAI,OAAO,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;AAChC;CACA,EAAE,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;CAC1C,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;CACvE,EAAE,CAAC,IAAI,CAAC,CAAC;AACT;CACA;CACA,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC;CAChB,EAAE,IAAI,CAAC,CAAC;CACR,EAAE,IAAI,IAAI,CAAC;CACX,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE;CACjD,IAAI,IAAI,GAAG,CAAC,CAAC;CACb,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;CAClD,MAAM,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;CAClC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CACpB,GAAG;AACH;CACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;CACxC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;CACxC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;CAC9B,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CACtC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;CACrB,MAAM,IAAI,IAAI,KAAK,CAAC;CACpB,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;CAC1C,WAAW,IAAI,IAAI,KAAK,CAAC,CAAC;CAC1B,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;CAChD,KAAK;CACL,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACjB,GAAG;CACH,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC;CACjB,CAAC,CAAC;AACF;CACA,SAAS,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE;CACvD,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AACZ;CACA;CACA,EAAE,IAAI,SAAS,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;CACrC,EAAE,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC;CACpB,EAAE,IAAI,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;AAC7B;CACA;CACA,EAAE,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAC1C;CACA;CACA,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;CAC1C,EAAE,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;CAC5C;CACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;CAC/C,MAAM,CAAC,EAAE,CAAC;CACV,IAAI,IAAI,CAAC,IAAI,CAAC;CACd,MAAM,CAAC,EAAE,CAAC;CACV,IAAI,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtB;CACA,IAAI,IAAI,CAAC,GAAG,CAAC;CACb,MAAM,MAAM;CACZ,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;CACnB,IAAIA,QAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;CACpB,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE;CAC7B;CACA,MAAM,IAAI,CAAC,GAAG,CAAC;CACf,QAAQ,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CAC9C;CACA,QAAQ,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;CACrD,KAAK,MAAM;CACX;CACA,MAAM,IAAI,CAAC,GAAG,CAAC;CACf,QAAQ,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CACzC;CACA,QAAQ,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;CAChD,KAAK;CACL,GAAG;CACH,EAAE,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;CAC/C,CAAC,CAAC;AACF;CACA,SAAS,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,CAAC,IAAI;CAC3D,EAAE,MAAM;CACR,EAAE,MAAM;CACR,EAAE,GAAG;CACL,EAAE,cAAc,EAAE;CAClB,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;CAC9B,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;CACzB,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;AACzB;CACA;CACA,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC;CACd,EAAE,IAAI,CAAC,CAAC;CACR,EAAE,IAAI,CAAC,CAAC;CACR,EAAE,IAAI,CAAC,CAAC;CACR,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;CAC5B,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;CAClB,IAAI,IAAI,SAAS,GAAG,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;CAC1C,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC;CAChC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC;CAC9B,GAAG;AACH;CACA;CACA,EAAE,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;CACpC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CAClB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;CACd,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;CAChD,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;CAC/D,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;CAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACzC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACzC,MAAM,SAAS;CACf,KAAK;AACL;CACA,IAAI,IAAI,IAAI,GAAG;CACf,MAAM,MAAM,CAAC,CAAC,CAAC;CACf,MAAM,IAAI;CACV,MAAM,IAAI;CACV,MAAM,MAAM,CAAC,CAAC,CAAC;CACf,KAAK,CAAC;AACN;CACA;CACA,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;CAC5C,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;CACzC,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;CAC1D,KAAK,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE;CAC5D,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;CACpD,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;CAC/C,KAAK,MAAM;CACX,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;CACpD,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;CAC1D,KAAK;AACL;CACA,IAAI,IAAI,KAAK,GAAG;CAChB,MAAM,CAAC,CAAC;CACR,MAAM,CAAC,CAAC;CACR,MAAM,CAAC,CAAC;CACR,MAAM,CAAC,CAAC;CACR,MAAM,CAAC;CACP,MAAM,CAAC;CACP,MAAM,CAAC;CACP,MAAM,CAAC;CACP,MAAM,CAAC;CACP,KAAK,CAAC;AACN;CACA,IAAI,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;CAC3C,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACvC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;CAC5B,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;CAC5B,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;CAC9B,MAAM,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CAC7B,MAAM,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC7B;CACA,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;CACjD,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CACpB,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CACpB,KAAK;CACL,GAAG;AACH;CACA,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;CAC1C,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;CACzB,EAAE,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;CAC7B,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd;CACA,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE;CACnB,MAAM,IAAI,IAAI,GAAG,IAAI,CAAC;CACtB,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;CAChC,QAAQ,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CAC/B,QAAQ,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;CACxB,UAAU,IAAI,GAAG,KAAK,CAAC;CACvB,OAAO;CACP,MAAM,IAAI,CAAC,IAAI;CACf,QAAQ,MAAM;CACd,MAAM,CAAC,EAAE,CAAC;CACV,MAAM,CAAC,EAAE,CAAC;CACV,KAAK;CACL,IAAI,IAAI,CAAC,IAAI,CAAC;CACd,MAAM,CAAC,EAAE,CAAC;CACV,IAAI,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CACtB,IAAI,IAAI,CAAC,GAAG,CAAC;CACb,MAAM,MAAM;AACZ;CACA,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;CAC9B,MAAM,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;CACrB,MAAM,CAAC,CAAC;CACR,MAAM,IAAI,CAAC,KAAK,CAAC;CACjB,QAAQ,SAAS;CACjB,WAAW,IAAI,CAAC,GAAG,CAAC;CACpB,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;CACjC,WAAW,IAAI,CAAC,GAAG,CAAC;CACpB,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACxC;CACA,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;CAC7B,QAAQ,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;CAC9B;CACA,QAAQ,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACzB,KAAK;CACL,GAAG;CACH;CACA,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;CAC1B,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AAClB;CACA,EAAE,IAAI,cAAc;CACpB,IAAI,OAAO,GAAG,CAAC;CACf;CACA,IAAI,OAAO,GAAG,CAAC,GAAG,EAAE,CAAC;CACrB,CAAC,CAAC;AACF;CACA,SAAS,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE;CAChC,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;CACrB,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;CACnB,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;CAC1B,CAAC;CACD,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;AAChC;CACA,SAAS,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,YAAY;CAChD,EAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;CACrC,CAAC,CAAC;AACF;CACA,SAAS,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,GAAG;CACnD,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;CACnC,CAAC,CAAC;AACF;CACA,SAAS,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE;CACnE,EAAE,KAAK,GAAGD,SAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACpC;CACA,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;AAChC;CACA;CACA,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI;CAClE,MAAM,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE;CACpC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI;CACzB,MAAMC,QAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;CAChD,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI;CAC9B,MAAMA,QAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAChD;CACA,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;CACjD,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACzC;CACA,IAAI,OAAO,GAAG,CAAC;CACf,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI;CACpD,cAAc,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,GAAG,EAAE;CACxC,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;CACvE,GAAG;CACH,EAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;CAC1C,CAAC,CAAC;AACF;CACA,SAAS,CAAC,SAAS,CAAC,gBAAgB,GAAG,SAAS,gBAAgB,CAAC,GAAG,EAAE;CACtE,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;CAChC,CAAC,CAAC;AACF;CACA,SAAS,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,CAAC,OAAO,EAAE;CACxD,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;CACtC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACzC;CACA,EAAE,IAAI,OAAO;CACb,IAAI,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC5D;CACA,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;CAC5D,CAAC,CAAC;AACF;CACA,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE;CAC3D,EAAE,OAAOD,SAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC;CAClD,CAAC,CAAC;AACF;CACA,SAAS,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,KAAK,EAAE;CAC5D,EAAE,IAAI,IAAI,CAAC,WAAW;CACtB,IAAI,OAAO,IAAI,CAAC;AAChB;CACA,EAAE,IAAI,WAAW,GAAG;CACpB,IAAI,OAAO,EAAE,IAAI;CACjB,IAAI,GAAG,EAAE,IAAI;CACb,IAAI,IAAI,EAAE,IAAI;CACd,GAAG,CAAC;CACJ,EAAE,WAAW,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;CAC1C,EAAE,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;CACnD,EAAE,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;CACrC,EAAE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AACjC;CACA,EAAE,OAAO,IAAI,CAAC;CACd,CAAC,CAAC;AACF;CACA,SAAS,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,CAAC,CAAC,EAAE;CAC1D,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;CACvB,IAAI,OAAO,KAAK,CAAC;AACjB;CACA,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;CACzC,EAAE,IAAI,CAAC,OAAO;CACd,IAAI,OAAO,KAAK,CAAC;AACjB;CACA,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAChF,CAAC,CAAC;AACF;CACA,SAAS,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE;CACpE,EAAE,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO;CAClD,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;AACpC;CACA,EAAE,IAAI,OAAO,GAAG,EAAE,IAAI,EAAE,CAAC;CACzB,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC;CACjB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,IAAI,EAAE;CACxC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE;CACjC,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;CACtB,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CACtB,GAAG;CACH,EAAE,OAAO;CACT,IAAI,IAAI,EAAE,IAAI;CACd,IAAI,MAAM,EAAE,OAAO;CACnB,GAAG,CAAC;CACJ,CAAC,CAAC;AACF;CACA,SAAS,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,CAAC,GAAG,EAAE;CAChE,EAAE,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG;CAC9C,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AAChC;CACA,EAAE,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC;CACrB,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;CAC3B,EAAE,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;CAC1C,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;CAC9B,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACjC,EAAE,OAAO;CACT,IAAI,GAAG,EAAE,GAAG;CACZ,IAAI,MAAM,EAAE,GAAG;CACf,GAAG,CAAC;CACJ,CAAC,CAAC;AACF;CACA,SAAS,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,GAAG;CACnD,EAAE,OAAO,IAAI,CAAC;CACd,CAAC,CAAC;AACF;CACA,SAAS,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,CAAC,CAAC,EAAE;CAC5C,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;CACf,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;CAC5B,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;CAChB,EAAE,OAAO,CAAC,CAAC;CACX,CAAC;;;CC5XD,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE;CACzC;CACA,EAAE,cAAc,GAAG,SAAS,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE;CACtD,IAAI,IAAI,SAAS,EAAE;CACnB,MAAM,IAAI,CAAC,MAAM,GAAG,UAAS;CAC7B,MAAM,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE;CAC1D,QAAQ,WAAW,EAAE;CACrB,UAAU,KAAK,EAAE,IAAI;CACrB,UAAU,UAAU,EAAE,KAAK;CAC3B,UAAU,QAAQ,EAAE,IAAI;CACxB,UAAU,YAAY,EAAE,IAAI;CAC5B,SAAS;CACT,OAAO,EAAC;CACR,KAAK;CACL,GAAG,CAAC;CACJ,CAAC,MAAM;CACP;CACA,EAAE,cAAc,GAAG,SAAS,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE;CACtD,IAAI,IAAI,SAAS,EAAE;CACnB,MAAM,IAAI,CAAC,MAAM,GAAG,UAAS;CAC7B,MAAM,IAAI,QAAQ,GAAG,YAAY,GAAE;CACnC,MAAM,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC,UAAS;CAC9C,MAAM,IAAI,CAAC,SAAS,GAAG,IAAI,QAAQ,GAAE;CACrC,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,KAAI;CACvC,KAAK;CACL,IAAG;CACH;;;CC1BA,YAAY,CAAC;AACb;AACgC;AACN;AACS;AACN;AAC7B;CACA,IAAIC,QAAM,GAAGD,SAAK,CAAC,MAAM,CAAC;AAC1B;CACA,SAAS,UAAU,CAAC,IAAI,EAAE;CAC1B,EAAEE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AACjC;CACA,EAAE,IAAI,CAAC,CAAC,GAAG,IAAIH,IAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CAC9C,EAAE,IAAI,CAAC,CAAC,GAAG,IAAIA,IAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CAC9C,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;AACjC;CACA,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;CAC9C,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC5D;CACA;CACA,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;CAC1C,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;CAClC,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;CAClC,CAAC;AACDI,iBAAQ,CAAC,UAAU,EAAED,IAAI,CAAC,CAAC;CAC3B,WAAc,GAAG,UAAU,CAAC;AAC5B;CACA,UAAU,CAAC,SAAS,CAAC,gBAAgB,GAAG,SAAS,gBAAgB,CAAC,IAAI,EAAE;CACxE;CACA,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;CAC/D,IAAI,OAAO;AACX;CACA;CACA,EAAE,IAAI,IAAI,CAAC;CACX,EAAE,IAAI,MAAM,CAAC;CACb,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE;CACjB,IAAI,IAAI,GAAG,IAAIH,IAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CACjD,GAAG,MAAM;CACT,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAC3C;CACA,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;CAC5D,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CAChC,GAAG;CACH,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE;CACnB,IAAI,MAAM,GAAG,IAAIA,IAAE,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;CACrC,GAAG,MAAM;CACT;CACA,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAC7C,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;CACnE,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAC1B,KAAK,MAAM;CACX,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAC1B,MAAME,QAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;CACpE,KAAK;CACL,GAAG;AACH;CACA;CACA,EAAE,IAAI,KAAK,CAAC;CACZ,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;CAClB,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,GAAG,EAAE;CACzC,MAAM,OAAO;CACb,QAAQ,CAAC,EAAE,IAAIF,IAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;CAC5B,QAAQ,CAAC,EAAE,IAAIA,IAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;CAC5B,OAAO,CAAC;CACR,KAAK,CAAC,CAAC;CACP,GAAG,MAAM;CACT,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;CACvC,GAAG;AACH;CACA,EAAE,OAAO;CACT,IAAI,IAAI,EAAE,IAAI;CACd,IAAI,MAAM,EAAE,MAAM;CAClB,IAAI,KAAK,EAAE,KAAK;CAChB,GAAG,CAAC;CACJ,CAAC,CAAC;AACF;CACA,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,CAAC,GAAG,EAAE;CACjE;CACA;CACA;CACA,EAAE,IAAI,GAAG,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAGA,IAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CACrD,EAAE,IAAI,IAAI,GAAG,IAAIA,IAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;CAC5C,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAC5B;CACA,EAAE,IAAI,CAAC,GAAG,IAAIA,IAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC/D;CACA,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;CACrC,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;CACrC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;CACpB,CAAC,CAAC;AACF;CACA,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,CAAC,MAAM,EAAE;CACpE;CACA,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAClE;CACA;CACA;CACA,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC;CACjB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;CACzB,EAAE,IAAI,EAAE,GAAG,IAAIA,IAAE,CAAC,CAAC,CAAC,CAAC;CACrB,EAAE,IAAI,EAAE,GAAG,IAAIA,IAAE,CAAC,CAAC,CAAC,CAAC;CACrB,EAAE,IAAI,EAAE,GAAG,IAAIA,IAAE,CAAC,CAAC,CAAC,CAAC;CACrB,EAAE,IAAI,EAAE,GAAG,IAAIA,IAAE,CAAC,CAAC,CAAC,CAAC;AACrB;CACA;CACA,EAAE,IAAI,EAAE,CAAC;CACT,EAAE,IAAI,EAAE,CAAC;CACT;CACA,EAAE,IAAI,EAAE,CAAC;CACT,EAAE,IAAI,EAAE,CAAC;CACT;CACA,EAAE,IAAI,EAAE,CAAC;CACT,EAAE,IAAI,EAAE,CAAC;AACT;CACA,EAAE,IAAI,KAAK,CAAC;CACZ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;CACZ,EAAE,IAAI,CAAC,CAAC;CACR,EAAE,IAAI,CAAC,CAAC;CACR,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;CAC1B,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACrB,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;CACxB,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;CAC1B,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9B;CACA,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;CACpC,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;CACvB,MAAM,EAAE,GAAG,EAAE,CAAC;CACd,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;CACnB,MAAM,EAAE,GAAG,CAAC,CAAC;CACb,KAAK,MAAM,IAAI,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE;CAChC,MAAM,MAAM;CACZ,KAAK;CACL,IAAI,KAAK,GAAG,CAAC,CAAC;AACd;CACA,IAAI,CAAC,GAAG,CAAC,CAAC;CACV,IAAI,CAAC,GAAG,CAAC,CAAC;CACV,IAAI,EAAE,GAAG,EAAE,CAAC;CACZ,IAAI,EAAE,GAAG,CAAC,CAAC;CACX,IAAI,EAAE,GAAG,EAAE,CAAC;CACZ,IAAI,EAAE,GAAG,CAAC,CAAC;CACX,GAAG;CACH,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;CACf,EAAE,EAAE,GAAG,CAAC,CAAC;AACT;CACA,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;CACpC,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;CACpC,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;CAC3B,IAAI,EAAE,GAAG,EAAE,CAAC;CACZ,IAAI,EAAE,GAAG,EAAE,CAAC;CACZ,GAAG;AACH;CACA;CACA,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE;CACnB,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;CAClB,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;CAClB,GAAG;CACH,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE;CACnB,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;CAClB,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;CAClB,GAAG;AACH;CACA,EAAE,OAAO;CACT,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;CACpB,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;CACpB,GAAG,CAAC;CACJ,CAAC,CAAC;AACF;CACA,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,CAAC,EAAE;CACzD,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;CAC9B,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;CACpB,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACpB;CACA,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CACxC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9C;CACA,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CACxB,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CACxB,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CACxB,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACxB;CACA;CACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;CAC7B,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;CAC5B,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;CAC5B,CAAC,CAAC;AACF;CACA,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE;CAC9D,EAAE,CAAC,GAAG,IAAIA,IAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CACpB,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG;CACZ,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B;CACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAC1E,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;CACvB,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;CAChD,IAAI,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;AACrC;CACA;CACA;CACA,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC;CAClC,EAAE,IAAI,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,KAAK;CACpC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;AACnB;CACA,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAC1B,CAAC,CAAC;AACF;CACA,UAAU,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,CAAC,KAAK,EAAE;CACzD,EAAE,IAAI,KAAK,CAAC,GAAG;CACf,IAAI,OAAO,IAAI,CAAC;AAChB;CACA,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;CAClB,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AAClB;CACA,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CAC5B,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAC7D,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;CAC/C,CAAC,CAAC;AACF;CACA,UAAU,CAAC,SAAS,CAAC,eAAe;CACpC,IAAI,SAAS,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE;CAC7D,MAAM,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;CACrC,MAAM,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;CACrC,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CAC9C,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;CAC/C,QAAQ,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;CAC1B,QAAQ,IAAI,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;AAChC;CACA,QAAQ,IAAI,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE;CAC/B,UAAU,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;CAC1B,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;CAC1B,SAAS;CACT,QAAQ,IAAI,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE;CAC/B,UAAU,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;CAC1B,UAAU,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;CAChC,SAAS;AACT;CACA,QAAQ,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;CAC3B,QAAQ,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;CAClC,QAAQ,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC;CAClC,QAAQ,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC;CACtC,OAAO;CACP,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,cAAc,CAAC,CAAC;AAC7E;CACA;CACA,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;CACtC,QAAQ,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CAC1B,QAAQ,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CAC1B,OAAO;CACP,MAAM,OAAO,GAAG,CAAC;CACjB,KAAK,CAAC;AACN;CACA,SAAS,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE;CACnC,EAAEG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;CAC7C,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE;CAChC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;CAClB,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;CAClB,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;CACpB,GAAG,MAAM;CACT,IAAI,IAAI,CAAC,CAAC,GAAG,IAAIH,IAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CAC3B,IAAI,IAAI,CAAC,CAAC,GAAG,IAAIA,IAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CAC3B;CACA,IAAI,IAAI,KAAK,EAAE;CACf,MAAM,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;CACtC,MAAM,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;CACtC,KAAK;CACL,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;CACnB,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;CAC5C,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;CACnB,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;CAC5C,IAAI,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;CACrB,GAAG;CACH,CAAC;AACDI,iBAAQ,CAAC,KAAK,EAAED,IAAI,CAAC,SAAS,CAAC,CAAC;AAChC;CACA,UAAU,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE;CACzD,EAAE,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;CACtC,CAAC,CAAC;AACF;CACA,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE;CACtE,EAAE,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;CACxC,CAAC,CAAC;AACF;CACA,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,GAAG;CAC/C,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI;CACtB,IAAI,OAAO;AACX;CACA,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;CAC7B,EAAE,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI;CACrB,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC;AACpB;CACA,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;CAC3E,EAAE,IAAI,GAAG,EAAE;CACX,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;CAC3B,IAAI,IAAI,OAAO,GAAG,SAAS,CAAC,EAAE;CAC9B,MAAM,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;CAC3D,KAAK,CAAC;CACN,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;CACpB,IAAI,IAAI,CAAC,WAAW,GAAG;CACvB,MAAM,IAAI,EAAE,IAAI;CAChB,MAAM,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI;CACtB,QAAQ,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG;CACxB,QAAQ,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;CAC3C,OAAO;CACP,MAAM,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI;CAC9B,QAAQ,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI;CAC9B,QAAQ,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;CAC/C,OAAO;CACP,KAAK,CAAC;CACN,GAAG;CACH,EAAE,OAAO,IAAI,CAAC;CACd,CAAC,CAAC;AACF;CACA,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,GAAG;CAC3C,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;CACvB,IAAI,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;AAC9B;CACA,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,IAAI;CAC/C,IAAI,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI;CACzC,MAAM,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI;CACzC,MAAM,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;CACtD,KAAK;CACL,IAAI,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI;CACjC,MAAM,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG;CACnC,MAAM,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;CAClD,KAAK;CACL,GAAG,EAAE,CAAC;CACN,CAAC,CAAC;AACF;CACA,KAAK,CAAC,QAAQ,GAAG,SAAS,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE;CACpD,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ;CAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;CAC1B,EAAE,IAAI,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;CAC7C,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;CACb,IAAI,OAAO,GAAG,CAAC;AACf;CACA,EAAE,SAAS,SAAS,CAAC,GAAG,EAAE;CAC1B,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;CAC5C,GAAG;AACH;CACA,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;CACnB,EAAE,GAAG,CAAC,WAAW,GAAG;CACpB,IAAI,IAAI,EAAE,IAAI;CACd,IAAI,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI;CAC5B,MAAM,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI;CAC5B,MAAM,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;CAC/D,KAAK;CACL,IAAI,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI;CACpB,MAAM,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG;CACtB,MAAM,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;CAC3D,KAAK;CACL,GAAG,CAAC;CACJ,EAAE,OAAO,GAAG,CAAC;CACb,CAAC,CAAC;AACF;CACA,KAAK,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,GAAG;CAC7C,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;CACvB,IAAI,OAAO,qBAAqB,CAAC;CACjC,EAAE,OAAO,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;CAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC;CACtD,CAAC,CAAC;AACF;CACA,KAAK,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,GAAG;CACnD,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC;CAClB,CAAC,CAAC;AACF;CACA,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,CAAC,CAAC,EAAE;CACtC;CACA,EAAE,IAAI,IAAI,CAAC,GAAG;CACd,IAAI,OAAO,CAAC,CAAC;AACb;CACA;CACA,EAAE,IAAI,CAAC,CAAC,GAAG;CACX,IAAI,OAAO,IAAI,CAAC;AAChB;CACA;CACA,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;CAChB,IAAI,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;AACtB;CACA;CACA,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACtB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACxC;CACA;CACA,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;CAC3B,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACxC;CACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC7B,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;CACrB,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;CAC/C,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACnD,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CACvD,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;CAClC,CAAC,CAAC;AACF;CACA,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,GAAG;CACrC,EAAE,IAAI,IAAI,CAAC,GAAG;CACd,IAAI,OAAO,IAAI,CAAC;AAChB;CACA;CACA,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAClC,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;CACvB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACxC;CACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACvB;CACA,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC3B,EAAE,IAAI,KAAK,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;CAC5B,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC7D;CACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;CACrD,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CACvD,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;CAClC,CAAC,CAAC;AACF;CACA,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,GAAG;CACvC,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;CAC1B,CAAC,CAAC;AACF;CACA,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,GAAG;CACvC,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;CAC1B,CAAC,CAAC;AACF;CACA,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,CAAC,CAAC,EAAE;CACtC,EAAE,CAAC,GAAG,IAAIH,IAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CACpB,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;CACvB,IAAI,OAAO,IAAI,CAAC;CAChB,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;CAC9B,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;CAC5C,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI;CAC1B,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;CACvD;CACA,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;CACxC,CAAC,CAAC;AACF;CACA,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;CACrD,EAAE,IAAI,MAAM,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;CAC5B,EAAE,IAAI,MAAM,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;CAC1B,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI;CACrB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtD;CACA,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;CACxD,CAAC,CAAC;AACF;CACA,KAAK,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;CACvD,EAAE,IAAI,MAAM,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;CAC5B,EAAE,IAAI,MAAM,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;CAC1B,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI;CACrB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;CAC5D;CACA,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;CAC9D,CAAC,CAAC;AACF;CACA,KAAK,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC,EAAE;CACpC,EAAE,OAAO,IAAI,KAAK,CAAC;CACnB,SAAS,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG;CAC3B,cAAc,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;CAC1E,CAAC,CAAC;AACF;CACA,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,CAAC,WAAW,EAAE;CAChD,EAAE,IAAI,IAAI,CAAC,GAAG;CACd,IAAI,OAAO,IAAI,CAAC;AAChB;CACA,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;CACtD,EAAE,IAAI,WAAW,IAAI,IAAI,CAAC,WAAW,EAAE;CACvC,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;CAC/B,IAAI,IAAI,MAAM,GAAG,SAAS,CAAC,EAAE;CAC7B,MAAM,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC;CACrB,KAAK,CAAC;CACN,IAAI,GAAG,CAAC,WAAW,GAAG;CACtB,MAAM,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI;CACtB,QAAQ,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG;CACxB,QAAQ,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;CAC1C,OAAO;CACP,MAAM,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI;CAC9B,QAAQ,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI;CAC9B,QAAQ,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;CAC9C,OAAO;CACP,KAAK,CAAC;CACN,GAAG;CACH,EAAE,OAAO,GAAG,CAAC;CACb,CAAC,CAAC;AACF;CACA,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,GAAG;CACrC,EAAE,IAAI,IAAI,CAAC,GAAG;CACd,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC/C;CACA,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;CAC9D,EAAE,OAAO,GAAG,CAAC;CACb,CAAC,CAAC;AACF;CACA,SAAS,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;CAChC,EAAEG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;CAC/C,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE;CAC9C,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;CAC5B,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;CAC5B,IAAI,IAAI,CAAC,CAAC,GAAG,IAAIH,IAAE,CAAC,CAAC,CAAC,CAAC;CACvB,GAAG,MAAM;CACT,IAAI,IAAI,CAAC,CAAC,GAAG,IAAIA,IAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CAC3B,IAAI,IAAI,CAAC,CAAC,GAAG,IAAIA,IAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CAC3B,IAAI,IAAI,CAAC,CAAC,GAAG,IAAIA,IAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CAC3B,GAAG;CACH,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;CACjB,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;CAC1C,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;CACjB,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;CAC1C,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;CACjB,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC1C;CACA,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;CACxC,CAAC;AACDI,iBAAQ,CAAC,MAAM,EAAED,IAAI,CAAC,SAAS,CAAC,CAAC;AACjC;CACA,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;CACvD,EAAE,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACnC,CAAC,CAAC;AACF;CACA,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,GAAG;CACtC,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;CACvB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACxC;CACA,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;CAC9B,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;CAC5B,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;CAChC,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC7C;CACA,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;CAClC,CAAC,CAAC;AACF;CACA,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,GAAG;CACtC,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;CAC5D,CAAC,CAAC;AACF;CACA,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,CAAC,CAAC,EAAE;CACvC;CACA,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;CACvB,IAAI,OAAO,CAAC,CAAC;AACb;CACA;CACA,EAAE,IAAI,CAAC,CAAC,UAAU,EAAE;CACpB,IAAI,OAAO,IAAI,CAAC;AAChB;CACA;CACA,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CACzB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC3B,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;CAC9B,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;CAC1B,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC1C,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC;CACA,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;CACxB,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;CACxB,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;CACvB,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;CACvB,MAAM,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;CACjD;CACA,MAAM,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;CACxB,GAAG;AACH;CACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;CACtB,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CACxB,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACxB;CACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CACxD,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;CAC1D,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACxC;CACA,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CACvC,CAAC,CAAC;AACF;CACA,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,CAAC,CAAC,EAAE;CACjD;CACA,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;CACvB,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC;AACnB;CACA;CACA,EAAE,IAAI,CAAC,CAAC,UAAU,EAAE;CACpB,IAAI,OAAO,IAAI,CAAC;AAChB;CACA;CACA,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC3B,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;CAClB,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;CAC1B,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;CAClB,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACzC;CACA,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;CACxB,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;CACxB,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;CACvB,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;CACvB,MAAM,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;CACjD;CACA,MAAM,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;CACxB,GAAG;AACH;CACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;CACtB,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CACxB,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACxB;CACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CACxD,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;CAC1D,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC5B;CACA,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CACvC,CAAC,CAAC;AACF;CACA,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,CAAC,GAAG,EAAE;CAC3C,EAAE,IAAI,GAAG,KAAK,CAAC;CACf,IAAI,OAAO,IAAI,CAAC;CAChB,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;CACvB,IAAI,OAAO,IAAI,CAAC;CAChB,EAAE,IAAI,CAAC,GAAG;CACV,IAAI,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;AACtB;CACA,EAAE,IAAI,CAAC,CAAC;CACR,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;CAC7C,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC;CACjB,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;CAC5B,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;CAClB,IAAI,OAAO,CAAC,CAAC;CACb,GAAG;AACH;CACA;CACA;CACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;CACvB,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AAC7B;CACA,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;CAClB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;CAClB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;CAClB,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC;AACjC;CACA;CACA,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;CAC1B,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;CAC5B,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;CAC1B,IAAI,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;CAC5B,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;CAC7B,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAChE;CACA,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;CAC7B,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;CAC/C,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;CAC5B,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;CAC3B,IAAI,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC,IAAI,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;CAC5B,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG;CACnB,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC7B;CACA,IAAI,EAAE,GAAG,EAAE,CAAC;CACZ,IAAI,EAAE,GAAG,EAAE,CAAC;CACZ,IAAI,GAAG,GAAG,GAAG,CAAC;CACd,GAAG;AACH;CACA,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;CACrD,CAAC,CAAC;AACF;CACA,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,GAAG;CACtC,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;CACvB,IAAI,OAAO,IAAI,CAAC;AAChB;CACA,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK;CACtB,IAAI,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;CAC3B,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM;CAC5B,IAAI,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;CAC5B;CACA,IAAI,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;CACvB,CAAC,CAAC;AACF;CACA,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,GAAG;CAChD,EAAE,IAAI,EAAE,CAAC;CACT,EAAE,IAAI,EAAE,CAAC;CACT,EAAE,IAAI,EAAE,CAAC;CACT;CACA,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE;CACjB;CACA;CACA;AACA;CACA;CACA,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC7B;CACA,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC7B;CACA,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;CAC3B;CACA,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;CACjE,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CACrB;CACA,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;CACtC;CACA,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC7C;CACA;CACA,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;CACnC,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;CACjC,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACjC;CACA;CACA,IAAI,EAAE,GAAG,CAAC,CAAC;CACX;CACA,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;CAC/C;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAC/B,GAAG,MAAM;CACT;CACA;CACA;AACA;CACA;CACA,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC5B;CACA,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC5B;CACA,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;CACvB;CACA,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CACrB;CACA,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CACnC;CACA,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;AACvB;CACA;CACA,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CAC1B,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;CACxB,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACxB;CACA;CACA,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CACjC;CACA,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;CAC7C;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAC/B,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;CACxB,GAAG;AACH;CACA,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CACvC,CAAC,CAAC;AACF;CACA,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,GAAG;CAClD,EAAE,IAAI,EAAE,CAAC;CACT,EAAE,IAAI,EAAE,CAAC;CACT,EAAE,IAAI,EAAE,CAAC;CACT;CACA,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE;CACjB;CACA;CACA;AACA;CACA;CACA,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC7B;CACA,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC7B;CACA,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;CAC3B;CACA,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;CACjE,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CACrB;CACA,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CAC5D;CACA,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CAC7C;CACA,IAAI,EAAE,GAAG,CAAC,CAAC;CACX;CACA,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;CACnC,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;CACjC,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;CACjC,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;CAC/C;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAC/B,GAAG,MAAM;CACT;CACA;AACA;CACA;CACA,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAChC;CACA,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAChC;CACA,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;CACpC;CACA,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;CAClE,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;CAC/C;CACA,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;CACnC,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;CACjC,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;CACpC,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;CACvC;CACA,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;CACtE;CACA,IAAI,IAAI,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;CACjC,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;CACvC,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;CACvC,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;CACvC,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1D,GAAG;AACH;CACA,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CACvC,CAAC,CAAC;AACF;CACA,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,GAAG;CACxC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACvB;CACA;CACA,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;CAClB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;CAClB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;CAClB,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC;AACjC;CACA,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;CACxB,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;AACxB;CACA,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9D;CACA,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;CAC3B,EAAE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;CAC5B,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;CAC7C,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAC1B;CACA,EAAE,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;CAC1B,EAAE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B,EAAE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B,EAAE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACpC;CACA,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CACvC,CAAC,CAAC;AACF;CACA,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,GAAG;CACxC,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK;CACvB,IAAI,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAChC;CACA;CACA;AACA;CACA;CACA,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC3B;CACA,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC3B;CACA,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC3B;CACA,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;CACzB;CACA,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;CACpC;CACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;CACtB;CACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/D,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CACnB,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CAC7B,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;CACpB;CACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;CACtB;CACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7B,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CACnB,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CACnB,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CACnB;CACA,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CACnE;CACA,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CAC1B,EAAE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B,EAAE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;CACtB,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;CACtB;CACA,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CACvE,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;CACtB,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;CACtB,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;CACtB;CACA,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAC7D;CACA,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CACvC,CAAC,CAAC;AACF;CACA,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE;CAC9C,EAAE,CAAC,GAAG,IAAIH,IAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACvB;CACA,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;CACtC,CAAC,CAAC;AACF;CACA,MAAM,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC,EAAE;CACrC,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;CACzB,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAC5B;CACA,EAAE,IAAI,IAAI,KAAK,CAAC;CAChB,IAAI,OAAO,IAAI,CAAC;AAChB;CACA;CACA,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC3B,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CACzB,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;CAC9D,IAAI,OAAO,KAAK,CAAC;AACjB;CACA;CACA,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAC7B,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC5B,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;CAClE,CAAC,CAAC;AACF;CACA,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,CAAC,EAAE;CAC7C,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC3B,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;CAC9C,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC;CAC1B,IAAI,OAAO,IAAI,CAAC;AAChB;CACA,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;CACrB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;CACrC,EAAE,SAAS;CACX,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CAC1B,IAAI,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;CACjC,MAAM,OAAO,KAAK,CAAC;AACnB;CACA,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CAClB,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC;CAC5B,MAAM,OAAO,IAAI,CAAC;CAClB,GAAG;CACH,CAAC,CAAC;AACF;CACA,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,GAAG;CAC9C,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;CACvB,IAAI,OAAO,sBAAsB,CAAC;CAClC,EAAE,OAAO,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;CAClD,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;CACrC,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC;CAC5C,CAAC,CAAC;AACF;CACA,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,GAAG;CACpD;CACA,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;CAC9B,CAAC;;;CCz6BD,YAAY,CAAC;AACb;CACA,IAAI,KAAK,GAAG,OAAO,CAAC;AACpB;CACA,KAAK,CAAC,IAAI,GAAGK,IAAiB,CAAC;CAC/B,KAAK,CAAC,KAAK,GAAGC,OAAkB,CAAC;CACjC,KAAK,CAAC,IAAI,0CAAoB,CAAC;CAC/B,KAAK,CAAC,OAAO,6CAAuB;;;CCPpC,YAAY,CAAC;AACb;AAC4C;AACT;AACnC;CACA,cAAgB,GAAGF,gBAAQ,CAAC;AAC5B;CACA,SAAS,eAAe,CAAC,GAAG,EAAE,CAAC,EAAE;CACjC,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,MAAM,MAAM,EAAE;CAC/C,IAAI,OAAO,KAAK,CAAC;CACjB,GAAG;CACH,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE;CACpC,IAAI,OAAO,KAAK,CAAC;CACjB,GAAG;CACH,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,MAAM,MAAM,CAAC;CACrD,CAAC;AACD;CACA,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE;CAC3B,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;CACxB,IAAI,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC;CACvB,EAAE,IAAI,CAAC,GAAG;CACV,IAAI,OAAO,EAAE,CAAC;CACd,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;CACf,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;CAC/B,IAAI,IAAI,CAAC,GAAG,EAAE;CACd;CACA;CACA;CACA;CACA,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;CAChB,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CAC3C,QAAQ,IAAI,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;CAClC,QAAQ,IAAI,CAAC,GAAG,GAAG,EAAE;CACrB,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;CACvB,SAAS,MAAM,IAAI,CAAC,GAAG,IAAI,EAAE;CAC7B,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;CACpC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC;CACpC,SAAS,MAAM,IAAI,eAAe,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;CAC5C,UAAU,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;CAC9E,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;CACrC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC;CAC5C,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;CAC3C,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC;CACpC,SAAS,MAAM;CACf,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;CACrC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;CAC3C,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC;CACpC,SAAS;CACT,OAAO;CACP,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,EAAE;CAC9B,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;CAC5C,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC;CAC9B,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;CACxB,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;CACxC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;CACpD,KAAK;CACL,GAAG,MAAM;CACT,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;CACnC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CAC1B,GAAG;CACH,EAAE,OAAO,GAAG,CAAC;CACb,CAAC;CACD,aAAe,GAAG,OAAO,CAAC;AAC1B;CACA,SAAS,KAAK,CAAC,GAAG,EAAE;CACpB,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;CACf,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;CACrC,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;CACtC,EAAE,OAAO,GAAG,CAAC;CACb,CAAC;CACD,WAAa,GAAG,KAAK,CAAC;AACtB;CACA,SAAS,KAAK,CAAC,CAAC,EAAE;CAClB,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE;CACrB,aAAa,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC;CAChC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC;CACjC,aAAa,CAAC,CAAC,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;CAC/B,EAAE,OAAO,GAAG,KAAK,CAAC,CAAC;CACnB,CAAC;CACD,WAAa,GAAG,KAAK,CAAC;AACtB;CACA,SAAS,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE;CAC9B,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;CACf,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CACvC,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;CACnB,IAAI,IAAI,MAAM,KAAK,QAAQ;CAC3B,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;CACnB,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;CACjC,GAAG;CACH,EAAE,OAAO,GAAG,CAAC;CACb,CAAC;CACD,aAAe,GAAG,OAAO,CAAC;AAC1B;CACA,SAAS,KAAK,CAAC,IAAI,EAAE;CACrB,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;CACvB,IAAI,OAAO,GAAG,GAAG,IAAI,CAAC;CACtB;CACA,IAAI,OAAO,IAAI,CAAC;CAChB,CAAC;CACD,WAAa,GAAG,KAAK,CAAC;AACtB;CACA,SAAS,KAAK,CAAC,IAAI,EAAE;CACrB,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;CACvB,IAAI,OAAO,GAAG,GAAG,IAAI,CAAC;CACtB,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;CAC5B,IAAI,OAAO,IAAI,GAAG,IAAI,CAAC;CACvB,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;CAC5B,IAAI,OAAO,KAAK,GAAG,IAAI,CAAC;CACxB,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;CAC5B,IAAI,OAAO,MAAM,GAAG,IAAI,CAAC;CACzB,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;CAC5B,IAAI,OAAO,OAAO,GAAG,IAAI,CAAC;CAC1B,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;CAC5B,IAAI,OAAO,QAAQ,GAAG,IAAI,CAAC;CAC3B,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;CAC5B,IAAI,OAAO,SAAS,GAAG,IAAI,CAAC;CAC5B;CACA,IAAI,OAAO,IAAI,CAAC;CAChB,CAAC;CACD,WAAa,GAAG,KAAK,CAAC;AACtB;CACA,SAAS,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE;CACzC,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC;CACxB,EAAEF,kBAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;CACxB,EAAE,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;CAC/B,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;CAC1D,IAAI,IAAI,CAAC,CAAC;CACV,IAAI,IAAI,MAAM,KAAK,KAAK;CACxB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CAC/E;CACA,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;CAC/E,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACrB,GAAG;CACH,EAAE,OAAO,GAAG,CAAC;CACb,CAAC;CACD,YAAc,GAAG,MAAM,CAAC;AACxB;CACA,SAAS,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE;CAC9B,EAAE,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;CACtC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;CACtD,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;CACnB,IAAI,IAAI,MAAM,KAAK,KAAK,EAAE;CAC1B,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;CACxB,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC;CACrC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;CACpC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;CAC5B,KAAK,MAAM;CACX,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;CAC5B,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC;CACrC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;CACpC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;CACxB,KAAK;CACL,GAAG;CACH,EAAE,OAAO,GAAG,CAAC;CACb,CAAC;CACD,aAAe,GAAG,OAAO,CAAC;AAC1B;CACA,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;CACtB,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;CACrC,CAAC;CACD,YAAc,GAAG,MAAM,CAAC;AACxB;CACA,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;CACtB,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;CACrC,CAAC;CACD,YAAc,GAAG,MAAM,CAAC;AACxB;CACA,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE;CACrB,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;CACvB,CAAC;CACD,WAAa,GAAG,KAAK,CAAC;AACtB;CACA,SAAS,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;CAC1B,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;CAC3B,CAAC;CACD,aAAe,GAAG,OAAO,CAAC;AAC1B;CACA,SAAS,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;CAC7B,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;CAC/B,CAAC;CACD,aAAe,GAAG,OAAO,CAAC;AAC1B;CACA,SAAS,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;CAChC,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;CACnC,CAAC;CACD,aAAe,GAAG,OAAO,CAAC;AAC1B;CACA,SAAS,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE;CACjC,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;CACpB,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACxB;CACA,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;CAC3B,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;CACvC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;CACtB,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;CACpB,CAAC;CACD,WAAa,GAAG,KAAK,CAAC;AACtB;CACA,SAAS,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;CAClC,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;CAC3B,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;CACvC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;CAClB,CAAC;CACD,cAAgB,GAAG,QAAQ,CAAC;AAC5B;CACA,SAAS,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;CAClC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;CACnB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;CAClB,CAAC;CACD,cAAgB,GAAG,QAAQ,CAAC;AAC5B;CACA,SAAS,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;CACpD,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;CAChB,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;CACd,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;CACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;CAC3B,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;CACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;CAC3B,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;CACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3B;CACA,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;CACrC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;CAClB,CAAC;CACD,gBAAkB,GAAG,UAAU,CAAC;AAChC;CACA,SAAS,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;CACpD,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;CAC7B,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;CAClB,CAAC;CACD,gBAAkB,GAAG,UAAU,CAAC;AAChC;CACA,SAAS,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;CAC5D,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;CAChB,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;CACd,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;CACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;CAC3B,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;CACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;CAC3B,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;CACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;CAC3B,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;CACvB,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3B;CACA,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;CAC1C,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;CAClB,CAAC;CACD,gBAAkB,GAAG,UAAU,CAAC;AAChC;CACA,SAAS,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;CAC5D,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAClC;CACA,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;CAClB,CAAC;CACD,gBAAkB,GAAG,UAAU,CAAC;AAChC;CACA,SAAS,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE;CAChC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC;CAC5C,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;CACjB,CAAC;CACD,eAAiB,GAAG,SAAS,CAAC;AAC9B;CACA,SAAS,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE;CAChC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC;CAC5C,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;CACjB,CAAC;CACD,eAAiB,GAAG,SAAS,CAAC;AAC9B;CACA,SAAS,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE;CAC/B,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC;CACpB,CAAC;CACD,cAAgB,GAAG,QAAQ,CAAC;AAC5B;CACA,SAAS,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE;CAC/B,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC;CAC5C,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;CACjB,CAAC;CACD,cAAgB,GAAG,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CCrR3B,YAAY,CAAC;AACb;AAC+B;AACa;AAC5C;CACA,SAAS,SAAS,GAAG;CACrB,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;CACtB,EAAE,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;CACxB,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;CAC9C,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;CAC1C,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;CACpD,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC;CAClD,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACtB;CACA,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;CACpC,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;CACtC,CAAC;CACD,eAAiB,GAAG,SAAS,CAAC;AAC9B;CACA,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE;CACvD;CACA,EAAE,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAChC,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO;CACnB,IAAI,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;CACvB;CACA,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;CAC5C,EAAE,IAAI,CAAC,YAAY,IAAI,GAAG,CAAC,MAAM,CAAC;AAClC;CACA;CACA,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;CAC3C,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;AACvB;CACA;CACA,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;CACtC,IAAI,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACzD,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;CACjC,MAAM,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AAC1B;CACA,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;CAC5D,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,CAAC,QAAQ;CACtD,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;CAC9C,GAAG;AACH;CACA,EAAE,OAAO,IAAI,CAAC;CACd,CAAC,CAAC;AACF;CACA,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE;CAClD,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;CAC3B,EAAEA,kBAAM,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;AAChC;CACA,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;CAC3B,CAAC,CAAC;AACF;CACA,SAAS,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,GAAG,GAAG;CAC1C,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC;CAC9B,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;CAC3B,EAAE,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC;CACnD,EAAE,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;CAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CAChB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;CAC5B,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACf;CACA;CACA,EAAE,GAAG,KAAK,CAAC,CAAC;CACZ,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE;CAC7B,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE;CAC3C,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACnB;CACA,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;CACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;CACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;CACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;CACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,IAAI,CAAC;CACnC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,IAAI,CAAC;CACnC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC;CAClC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;CAC1B,GAAG,MAAM;CACT,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;CAC1B,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC;CAClC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,IAAI,CAAC;CACnC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,IAAI,CAAC;CACnC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;CACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;CACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;CACjB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACjB;CACA,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE;CACvC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;CACnB,GAAG;AACH;CACA,EAAE,OAAO,GAAG,CAAC;CACb,CAAC;;;;;;CC3FD,YAAY,CAAC;AACb;AACgC;CAChC,IAAIK,QAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAC1B;CACA,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;CAC1B,EAAE,IAAI,CAAC,KAAK,CAAC;CACb,IAAI,OAAO,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACzB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;CACxB,IAAI,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACxB,EAAE,IAAI,CAAC,KAAK,CAAC;CACb,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC1B,CAAC;CACD,UAAY,GAAG,IAAI,CAAC;AACpB;CACA,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;CACvB,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;CAC9B,CAAC;CACD,UAAY,GAAG,IAAI,CAAC;AACpB;CACA,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;CACxB,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;CACrC,CAAC;CACD,WAAa,GAAG,KAAK,CAAC;AACtB;CACA,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;CACtB,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACnB,CAAC;CACD,SAAW,GAAG,GAAG,CAAC;AAClB;CACA,SAAS,MAAM,CAAC,CAAC,EAAE;CACnB,EAAE,OAAOA,QAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAGA,QAAM,CAAC,CAAC,EAAE,EAAE,CAAC,GAAGA,QAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CACtD,CAAC;CACD,YAAc,GAAG,MAAM,CAAC;AACxB;CACA,SAAS,MAAM,CAAC,CAAC,EAAE;CACnB,EAAE,OAAOA,QAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAGA,QAAM,CAAC,CAAC,EAAE,EAAE,CAAC,GAAGA,QAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CACtD,CAAC;CACD,YAAc,GAAG,MAAM,CAAC;AACxB;CACA,SAAS,MAAM,CAAC,CAAC,EAAE;CACnB,EAAE,OAAOA,QAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAGA,QAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;CAClD,CAAC;CACD,YAAc,GAAG,MAAM,CAAC;AACxB;CACA,SAAS,MAAM,CAAC,CAAC,EAAE;CACnB,EAAE,OAAOA,QAAM,CAAC,CAAC,EAAE,EAAE,CAAC,GAAGA,QAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;CACpD,CAAC;CACD,YAAc,GAAG,MAAM;;;;;;;;;;;;;CChDvB,YAAY,CAAC;AACb;AACgC;AACE;AACE;AACpC;CACA,IAAIC,QAAM,GAAG,KAAK,CAAC,MAAM,CAAC;CAC1B,IAAIC,OAAK,GAAG,KAAK,CAAC,KAAK,CAAC;CACxB,IAAIC,SAAO,GAAG,KAAK,CAAC,OAAO,CAAC;CAC5B,IAAIC,MAAI,GAAGC,QAAS,CAAC,IAAI,CAAC;CAC1B,IAAIC,WAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AACjC;CACA,IAAI,MAAM,GAAG;CACb,EAAE,UAAU,EAAE,UAAU;CACxB,EAAE,UAAU,EAAE,UAAU;CACxB,CAAC,CAAC;AACF;CACA,SAAS,IAAI,GAAG;CAChB,EAAE,IAAI,EAAE,IAAI,YAAY,IAAI,CAAC;CAC7B,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;AACtB;CACA,EAAEA,WAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CACvB,EAAE,IAAI,CAAC,CAAC,GAAG;CACX,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU;CACtC,IAAI,UAAU,EAAE,UAAU,EAAE,CAAC;CAC7B,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;CACzB,CAAC;AACD;CACA,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAEA,WAAS,CAAC,CAAC;CAChC,MAAc,GAAG,IAAI,CAAC;AACtB;CACA,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;CACrB,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;CACnB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;CACvB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACpB;CACA,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE;CACtD,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACjB;CACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;CAC7B,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC1B;CACA,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;CACzB,IAAI,CAAC,CAAC,CAAC,CAAC,GAAGL,QAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAClE;CACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB;CACA,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CACjC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;CACvB,IAAI,IAAI,CAAC,GAAGE,SAAO,CAACF,QAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAEG,MAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;CACxE,IAAI,CAAC,GAAG,CAAC,CAAC;CACV,IAAI,CAAC,GAAG,CAAC,CAAC;CACV,IAAI,CAAC,GAAGH,QAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CACtB,IAAI,CAAC,GAAG,CAAC,CAAC;CACV,IAAI,CAAC,GAAG,CAAC,CAAC;CACV,GAAG;AACH;CACA,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGC,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAClC,CAAC,CAAC;AACF;CACA,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE;CAC9C,EAAE,IAAI,GAAG,KAAK,KAAK;CACnB,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;CACxC;CACA,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;CACxC,CAAC;;CCzED,YAAY,CAAC;AACb;AACgC;AACE;AACE;AACQ;AAC5C;CACA,IAAIA,OAAK,GAAG,KAAK,CAAC,KAAK,CAAC;CACxB,IAAIK,SAAO,GAAG,KAAK,CAAC,OAAO,CAAC;CAC5B,IAAIJ,SAAO,GAAG,KAAK,CAAC,OAAO,CAAC;CAC5B,IAAIK,MAAI,GAAGH,QAAS,CAAC,IAAI,CAAC;CAC1B,IAAII,OAAK,GAAGJ,QAAS,CAAC,KAAK,CAAC;CAC5B,IAAIK,QAAM,GAAGL,QAAS,CAAC,MAAM,CAAC;CAC9B,IAAIM,QAAM,GAAGN,QAAS,CAAC,MAAM,CAAC;CAC9B,IAAIO,QAAM,GAAGP,QAAS,CAAC,MAAM,CAAC;CAC9B,IAAIQ,QAAM,GAAGR,QAAS,CAAC,MAAM,CAAC;AAC9B;CACA,IAAIC,WAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AACjC;CACA,IAAI,QAAQ,GAAG;CACf,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,CAAC,CAAC;AACF;CACA,SAAS,MAAM,GAAG;CAClB,EAAE,IAAI,EAAE,IAAI,YAAY,MAAM,CAAC;CAC/B,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;AACxB;CACA,EAAEA,WAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CACvB,EAAE,IAAI,CAAC,CAAC,GAAG;CACX,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAClD,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAClD,GAAG,CAAC;CACJ,EAAE,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC;CACpB,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;CACzB,CAAC;CACD,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAEA,WAAS,CAAC,CAAC;CAClC,QAAc,GAAG,MAAM,CAAC;AACxB;CACA,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC;CACvB,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC;CACrB,MAAM,CAAC,YAAY,GAAG,GAAG,CAAC;CAC1B,MAAM,CAAC,SAAS,GAAG,EAAE,CAAC;AACtB;CACA,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE;CACxD,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACjB;CACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;CAC7B,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;CAC1B,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;CAC1B,IAAI,CAAC,CAAC,CAAC,CAAC,GAAGC,SAAO,CAACM,QAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAED,QAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC7E;CACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB;CACA,EAAEjB,kBAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;CACrC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;CACjC,IAAI,IAAI,EAAE,GAAGQ,SAAO,CAAC,CAAC,EAAEQ,QAAM,CAAC,CAAC,CAAC,EAAEH,MAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACnE,IAAI,IAAI,EAAE,GAAGN,OAAK,CAACQ,QAAM,CAAC,CAAC,CAAC,EAAED,OAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CAC9C,IAAI,CAAC,GAAG,CAAC,CAAC;CACV,IAAI,CAAC,GAAG,CAAC,CAAC;CACV,IAAI,CAAC,GAAG,CAAC,CAAC;CACV,IAAI,CAAC,GAAGP,OAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CACrB,IAAI,CAAC,GAAG,CAAC,CAAC;CACV,IAAI,CAAC,GAAG,CAAC,CAAC;CACV,IAAI,CAAC,GAAG,CAAC,CAAC;CACV,IAAI,CAAC,GAAGA,OAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;CACtB,GAAG;AACH;CACA,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAClC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAClC,CAAC,CAAC;AACF;CACA,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE;CAChD,EAAE,IAAI,GAAG,KAAK,KAAK;CACnB,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;CACxC;CACA,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;CACxC,CAAC;;CCxGD,YAAY,CAAC;AACb;AACgC;AACF;AAC9B;CACA,SAAS,MAAM,GAAG;CAClB,EAAE,IAAI,EAAE,IAAI,YAAY,MAAM,CAAC;CAC/B,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;AACxB;CACA,EAAEY,IAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CACpB,EAAE,IAAI,CAAC,CAAC,GAAG;CACX,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAClD,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;CACrD,CAAC;CACD,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAEA,IAAM,CAAC,CAAC;CAC/B,QAAc,GAAG,MAAM,CAAC;AACxB;CACA,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC;CACvB,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC;CACrB,MAAM,CAAC,YAAY,GAAG,GAAG,CAAC;CAC1B,MAAM,CAAC,SAAS,GAAG,EAAE,CAAC;AACtB;CACA,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE;CAChD;CACA,EAAE,IAAI,GAAG,KAAK,KAAK;CACnB,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;CACpD;CACA,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;CACpD,CAAC;;CC5BD,YAAY,CAAC;AACb;AACgC;AACE;AACU;AAC5C;CACA,IAAIC,WAAS,GAAG,KAAK,CAAC,SAAS,CAAC;CAChC,IAAIC,WAAS,GAAG,KAAK,CAAC,SAAS,CAAC;CAChC,IAAIC,UAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;CAC9B,IAAIC,UAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;CAC9B,IAAIC,OAAK,GAAG,KAAK,CAAC,KAAK,CAAC;CACxB,IAAIC,UAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;CAC9B,IAAIC,UAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;CAC9B,IAAIC,YAAU,GAAG,KAAK,CAAC,UAAU,CAAC;CAClC,IAAIC,YAAU,GAAG,KAAK,CAAC,UAAU,CAAC;CAClC,IAAIC,YAAU,GAAG,KAAK,CAAC,UAAU,CAAC;CAClC,IAAIC,YAAU,GAAG,KAAK,CAAC,UAAU,CAAC;AAClC;CACA,IAAInB,WAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AACjC;CACA,IAAI,QAAQ,GAAG;CACf,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;CAChD,CAAC,CAAC;AACF;CACA,SAAS,MAAM,GAAG;CAClB,EAAE,IAAI,EAAE,IAAI,YAAY,MAAM,CAAC;CAC/B,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;AACxB;CACA,EAAEA,WAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CACvB,EAAE,IAAI,CAAC,CAAC,GAAG;CACX,IAAI,UAAU,EAAE,UAAU;CAC1B,IAAI,UAAU,EAAE,UAAU;CAC1B,IAAI,UAAU,EAAE,UAAU;CAC1B,IAAI,UAAU,EAAE,UAAU;CAC1B,IAAI,UAAU,EAAE,UAAU;CAC1B,IAAI,UAAU,EAAE,UAAU;CAC1B,IAAI,UAAU,EAAE,UAAU;CAC1B,IAAI,UAAU,EAAE,UAAU,EAAE,CAAC;CAC7B,EAAE,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC;CACpB,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;CAC1B,CAAC;CACD,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAEA,WAAS,CAAC,CAAC;CAClC,QAAc,GAAG,MAAM,CAAC;AACxB;CACA,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;CACxB,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC;CACrB,MAAM,CAAC,YAAY,GAAG,GAAG,CAAC;CAC1B,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC;AACvB;CACA,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE;CACpE,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACjB;CACA;CACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;CAC7B,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;CAC1B,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;CAC/B,IAAI,IAAI,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC9C,IAAI,IAAI,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC9C,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;CAC1B,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;CAC1B,IAAI,IAAI,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;CAChD,IAAI,IAAI,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;CAChD,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;CAC1B,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1B;CACA,IAAI,CAAC,CAAC,CAAC,CAAC,GAAGgB,YAAU;CACrB,MAAM,KAAK,EAAE,KAAK;CAClB,MAAM,KAAK,EAAE,KAAK;CAClB,MAAM,KAAK,EAAE,KAAK;CAClB,MAAM,KAAK,EAAE,KAAK,CAAC,CAAC;CACpB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAGC,YAAU;CACzB,MAAM,KAAK,EAAE,KAAK;CAClB,MAAM,KAAK,EAAE,KAAK;CAClB,MAAM,KAAK,EAAE,KAAK;CAClB,MAAM,KAAK,EAAE,KAAK,CAAC,CAAC;CACpB,GAAG;CACH,CAAC,CAAC;AACF;CACA,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE;CACxD,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACjC;CACA,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACjB;CACA,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACrB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACrB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACrB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACrB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACrB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACrB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACrB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACrB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACrB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACrB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;CACtB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;CACtB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;CACtB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;CACtB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;CACtB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACtB;CACA,EAAE5B,kBAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;CACrC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;CACxC,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;CACnB,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;CACnB,IAAI,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;CAClC,IAAI,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;CAClC,IAAI,IAAI,KAAK,GAAG,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CAChD,IAAI,IAAI,KAAK,GAAG,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CAChD,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC1B,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CAC9B,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;CACrB,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACzB;CACA,IAAI,IAAI,KAAK,GAAG6B,YAAU;CAC1B,MAAM,KAAK,EAAE,KAAK;CAClB,MAAM,KAAK,EAAE,KAAK;CAClB,MAAM,KAAK,EAAE,KAAK;CAClB,MAAM,KAAK,EAAE,KAAK;CAClB,MAAM,KAAK,EAAE,KAAK,CAAC,CAAC;CACpB,IAAI,IAAI,KAAK,GAAGC,YAAU;CAC1B,MAAM,KAAK,EAAE,KAAK;CAClB,MAAM,KAAK,EAAE,KAAK;CAClB,MAAM,KAAK,EAAE,KAAK;CAClB,MAAM,KAAK,EAAE,KAAK;CAClB,MAAM,KAAK,EAAE,KAAK,CAAC,CAAC;AACpB;CACA,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;CAC9B,IAAI,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;CAC9B,IAAI,KAAK,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CAC7C,IAAI,KAAK,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC7C;CACA,IAAI,IAAI,KAAK,GAAGL,UAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CACrD,IAAI,IAAI,KAAK,GAAGC,UAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACrD;CACA,IAAI,EAAE,GAAG,EAAE,CAAC;CACZ,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ;CACA,IAAI,EAAE,GAAG,EAAE,CAAC;CACZ,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ;CACA,IAAI,EAAE,GAAG,EAAE,CAAC;CACZ,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ;CACA,IAAI,EAAE,GAAGD,UAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CACxC,IAAI,EAAE,GAAGC,UAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACxC;CACA,IAAI,EAAE,GAAG,EAAE,CAAC;CACZ,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ;CACA,IAAI,EAAE,GAAG,EAAE,CAAC;CACZ,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ;CACA,IAAI,EAAE,GAAG,EAAE,CAAC;CACZ,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ;CACA,IAAI,EAAE,GAAGD,UAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC9C,IAAI,EAAE,GAAGC,UAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;CAC9C,GAAG;AACH;CACA,EAAEF,OAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CAC3B,EAAEA,OAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CAC3B,EAAEA,OAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CAC3B,EAAEA,OAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CAC3B,EAAEA,OAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CAC3B,EAAEA,OAAK,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CAC5B,EAAEA,OAAK,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CAC5B,EAAEA,OAAK,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CAC5B,CAAC,CAAC;AACF;CACA,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE;CAChD,EAAE,IAAI,GAAG,KAAK,KAAK;CACnB,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;CACxC;CACA,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;CACxC,CAAC,CAAC;AACF;CACA,SAAS,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;CACrC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;CACnC,EAAE,IAAI,CAAC,GAAG,CAAC;CACX,IAAI,CAAC,IAAI,WAAW,CAAC;CACrB,EAAE,OAAO,CAAC,CAAC;CACX,CAAC;AACD;CACA,SAAS,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;CACzC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;CACnC,EAAE,IAAI,CAAC,GAAG,CAAC;CACX,IAAI,CAAC,IAAI,WAAW,CAAC;CACrB,EAAE,OAAO,CAAC,CAAC;CACX,CAAC;AACD;CACA,SAAS,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;CACtC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;CAC5C,EAAE,IAAI,CAAC,GAAG,CAAC;CACX,IAAI,CAAC,IAAI,WAAW,CAAC;CACrB,EAAE,OAAO,CAAC,CAAC;CACX,CAAC;AACD;CACA,SAAS,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;CAC1C,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;CAC5C,EAAE,IAAI,CAAC,GAAG,CAAC;CACX,IAAI,CAAC,IAAI,WAAW,CAAC;CACrB,EAAE,OAAO,CAAC,CAAC;CACX,CAAC;AACD;CACA,SAAS,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE;CAC3B,EAAE,IAAI,KAAK,GAAGJ,WAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CACpC,EAAE,IAAI,KAAK,GAAGA,WAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;CACnC,EAAE,IAAI,KAAK,GAAGA,WAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACnC;CACA,EAAE,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;CAChC,EAAE,IAAI,CAAC,GAAG,CAAC;CACX,IAAI,CAAC,IAAI,WAAW,CAAC;CACrB,EAAE,OAAO,CAAC,CAAC;CACX,CAAC;AACD;CACA,SAAS,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE;CAC3B,EAAE,IAAI,KAAK,GAAGC,WAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CACpC,EAAE,IAAI,KAAK,GAAGA,WAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;CACnC,EAAE,IAAI,KAAK,GAAGA,WAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACnC;CACA,EAAE,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;CAChC,EAAE,IAAI,CAAC,GAAG,CAAC;CACX,IAAI,CAAC,IAAI,WAAW,CAAC;CACrB,EAAE,OAAO,CAAC,CAAC;CACX,CAAC;AACD;CACA,SAAS,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE;CAC3B,EAAE,IAAI,KAAK,GAAGD,WAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CACpC,EAAE,IAAI,KAAK,GAAGA,WAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CACpC,EAAE,IAAI,KAAK,GAAGA,WAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACnC;CACA,EAAE,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;CAChC,EAAE,IAAI,CAAC,GAAG,CAAC;CACX,IAAI,CAAC,IAAI,WAAW,CAAC;CACrB,EAAE,OAAO,CAAC,CAAC;CACX,CAAC;AACD;CACA,SAAS,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE;CAC3B,EAAE,IAAI,KAAK,GAAGC,WAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CACpC,EAAE,IAAI,KAAK,GAAGA,WAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CACpC,EAAE,IAAI,KAAK,GAAGA,WAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACnC;CACA,EAAE,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;CAChC,EAAE,IAAI,CAAC,GAAG,CAAC;CACX,IAAI,CAAC,IAAI,WAAW,CAAC;CACrB,EAAE,OAAO,CAAC,CAAC;CACX,CAAC;AACD;CACA,SAAS,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE;CAC3B,EAAE,IAAI,KAAK,GAAGD,WAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;CACnC,EAAE,IAAI,KAAK,GAAGA,WAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;CACnC,EAAE,IAAI,KAAK,GAAGE,UAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAClC;CACA,EAAE,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;CAChC,EAAE,IAAI,CAAC,GAAG,CAAC;CACX,IAAI,CAAC,IAAI,WAAW,CAAC;CACrB,EAAE,OAAO,CAAC,CAAC;CACX,CAAC;AACD;CACA,SAAS,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE;CAC3B,EAAE,IAAI,KAAK,GAAGD,WAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;CACnC,EAAE,IAAI,KAAK,GAAGA,WAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;CACnC,EAAE,IAAI,KAAK,GAAGE,UAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAClC;CACA,EAAE,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;CAChC,EAAE,IAAI,CAAC,GAAG,CAAC;CACX,IAAI,CAAC,IAAI,WAAW,CAAC;CACrB,EAAE,OAAO,CAAC,CAAC;CACX,CAAC;AACD;CACA,SAAS,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE;CAC3B,EAAE,IAAI,KAAK,GAAGH,WAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CACpC,EAAE,IAAI,KAAK,GAAGA,WAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CACpC,EAAE,IAAI,KAAK,GAAGE,UAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAClC;CACA,EAAE,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;CAChC,EAAE,IAAI,CAAC,GAAG,CAAC;CACX,IAAI,CAAC,IAAI,WAAW,CAAC;CACrB,EAAE,OAAO,CAAC,CAAC;CACX,CAAC;AACD;CACA,SAAS,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE;CAC3B,EAAE,IAAI,KAAK,GAAGD,WAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CACpC,EAAE,IAAI,KAAK,GAAGA,WAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CACpC,EAAE,IAAI,KAAK,GAAGE,UAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAClC;CACA,EAAE,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;CAChC,EAAE,IAAI,CAAC,GAAG,CAAC;CACX,IAAI,CAAC,IAAI,WAAW,CAAC;CACrB,EAAE,OAAO,CAAC,CAAC;CACX;;CCzUA,YAAY,CAAC;AACb;AACgC;AAChC;AAC8B;AAC9B;CACA,SAAS,MAAM,GAAG;CAClB,EAAE,IAAI,EAAE,IAAI,YAAY,MAAM,CAAC;CAC/B,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;AACxB;CACA,EAAEQ,IAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CACpB,EAAE,IAAI,CAAC,CAAC,GAAG;CACX,IAAI,UAAU,EAAE,UAAU;CAC1B,IAAI,UAAU,EAAE,UAAU;CAC1B,IAAI,UAAU,EAAE,UAAU;CAC1B,IAAI,UAAU,EAAE,UAAU;CAC1B,IAAI,UAAU,EAAE,UAAU;CAC1B,IAAI,UAAU,EAAE,UAAU;CAC1B,IAAI,UAAU,EAAE,UAAU;CAC1B,IAAI,UAAU,EAAE,UAAU,EAAE,CAAC;CAC7B,CAAC;CACD,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAEA,IAAM,CAAC,CAAC;CAC/B,QAAc,GAAG,MAAM,CAAC;AACxB;CACA,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;CACxB,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC;CACrB,MAAM,CAAC,YAAY,GAAG,GAAG,CAAC;CAC1B,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC;AACvB;CACA,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE;CAChD,EAAE,IAAI,GAAG,KAAK,KAAK;CACnB,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;CACrD;CACA,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;CACrD,CAAC;;CClCD,YAAY,CAAC;AACb;CACA,QAAY,GAAG5B,EAAkB,CAAC;CAClC,UAAc,GAAGC,IAAoB,CAAC;CACtC,UAAc,GAAG4B,IAAoB,CAAC;CACtC,UAAc,GAAGC,IAAoB,CAAC;CACtC,UAAc,GAAGC,IAAoB;;;;;;;;;;CCNrC,YAAY,CAAC;AACb;AAC+B;AACE;AACjC;CACA,IAAI5B,QAAM,GAAG,KAAK,CAAC,MAAM,CAAC;CAC1B,IAAIC,OAAK,GAAG,KAAK,CAAC,KAAK,CAAC;CACxB,IAAI4B,SAAO,GAAG,KAAK,CAAC,OAAO,CAAC;CAC5B,IAAIvB,SAAO,GAAG,KAAK,CAAC,OAAO,CAAC;CAC5B,IAAID,WAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AACjC;CACA,SAAS,SAAS,GAAG;CACrB,EAAE,IAAI,EAAE,IAAI,YAAY,SAAS,CAAC;CAClC,IAAI,OAAO,IAAI,SAAS,EAAE,CAAC;AAC3B;CACA,EAAEA,WAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB;CACA,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;CAC1E,EAAE,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;CACzB,CAAC;CACD,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAEA,WAAS,CAAC,CAAC;CACrC,aAAiB,GAAG,SAAS,CAAC;AAC9B;CACA,SAAS,CAAC,SAAS,GAAG,GAAG,CAAC;CAC1B,SAAS,CAAC,OAAO,GAAG,GAAG,CAAC;CACxB,SAAS,CAAC,YAAY,GAAG,GAAG,CAAC;CAC7B,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC;AACzB;CACA,SAAS,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE;CAC1D,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACpB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACpB,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;CACb,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;CACb,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;CACb,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;CACb,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;CACb,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;CAC/B,IAAI,IAAI,CAAC,GAAGJ,OAAK;CACjB,MAAMD,QAAM;CACZ,QAAQM,SAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;CAC1D,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;CACb,MAAM,CAAC,CAAC,CAAC;CACT,IAAI,CAAC,GAAG,CAAC,CAAC;CACV,IAAI,CAAC,GAAG,CAAC,CAAC;CACV,IAAI,CAAC,GAAGN,QAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CACtB,IAAI,CAAC,GAAG,CAAC,CAAC;CACV,IAAI,CAAC,GAAG,CAAC,CAAC;CACV,IAAI,CAAC,GAAGC,OAAK;CACb,MAAMD,QAAM;CACZ,QAAQM,SAAO,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;CACrE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;CACd,MAAM,EAAE,CAAC,CAAC;CACV,IAAI,EAAE,GAAG,EAAE,CAAC;CACZ,IAAI,EAAE,GAAG,EAAE,CAAC;CACZ,IAAI,EAAE,GAAGN,QAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;CACxB,IAAI,EAAE,GAAG,EAAE,CAAC;CACZ,IAAI,EAAE,GAAG,CAAC,CAAC;CACX,GAAG;CACH,EAAE,CAAC,GAAG6B,SAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;CAChC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,SAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;CACxC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,SAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;CACxC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,SAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;CACxC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,SAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;CACxC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CAChB,CAAC,CAAC;AACF;CACA,SAAS,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,MAAM,CAAC,GAAG,EAAE;CACnD,EAAE,IAAI,GAAG,KAAK,KAAK;CACnB,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;CAC3C;CACA,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;CAC3C,CAAC,CAAC;AACF;CACA,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;CACvB,EAAE,IAAI,CAAC,IAAI,EAAE;CACb,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACrB,OAAO,IAAI,CAAC,IAAI,EAAE;CAClB,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;CAChC,OAAO,IAAI,CAAC,IAAI,EAAE;CAClB,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;CAC1B,OAAO,IAAI,CAAC,IAAI,EAAE;CAClB,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;CAChC;CACA,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;CAC1B,CAAC;AACD;CACA,SAAS,CAAC,CAAC,CAAC,EAAE;CACd,EAAE,IAAI,CAAC,IAAI,EAAE;CACb,IAAI,OAAO,UAAU,CAAC;CACtB,OAAO,IAAI,CAAC,IAAI,EAAE;CAClB,IAAI,OAAO,UAAU,CAAC;CACtB,OAAO,IAAI,CAAC,IAAI,EAAE;CAClB,IAAI,OAAO,UAAU,CAAC;CACtB,OAAO,IAAI,CAAC,IAAI,EAAE;CAClB,IAAI,OAAO,UAAU,CAAC;CACtB;CACA,IAAI,OAAO,UAAU,CAAC;CACtB,CAAC;AACD;CACA,SAAS,EAAE,CAAC,CAAC,EAAE;CACf,EAAE,IAAI,CAAC,IAAI,EAAE;CACb,IAAI,OAAO,UAAU,CAAC;CACtB,OAAO,IAAI,CAAC,IAAI,EAAE;CAClB,IAAI,OAAO,UAAU,CAAC;CACtB,OAAO,IAAI,CAAC,IAAI,EAAE;CAClB,IAAI,OAAO,UAAU,CAAC;CACtB,OAAO,IAAI,CAAC,IAAI,EAAE;CAClB,IAAI,OAAO,UAAU,CAAC;CACtB;CACA,IAAI,OAAO,UAAU,CAAC;CACtB,CAAC;AACD;CACA,IAAI,CAAC,GAAG;CACR,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;CACtD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;CACtD,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;CACtD,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;CACtD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;CACtD,CAAC,CAAC;AACF;CACA,IAAI,EAAE,GAAG;CACT,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;CACtD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;CACtD,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;CACtD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;CAC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AAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACpM;CACA;CACA,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;CAC7gD,IAAI,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC7gD;CACA;CACA,IAAI,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;CAC9gG,IAAI,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;CAC9gG,IAAI,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;CAC9gG,IAAI,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAC9gG;CACA;CACA,IAAI,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;CAC9gG,IAAI,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;CAC9gG,IAAI,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;CAC9gG,IAAI,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAC9gG;CACA;CACA,IAAI,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;CAC9gG,IAAI,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;CAC9gG,IAAI,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;CAC9gG,IAAI,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE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C1C,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;CAC1C,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACzC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACzC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;CAC1C,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CAC1C,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACzC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACzC,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CAC1C,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CAC1C,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACzC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACzC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CAC1C,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CAC1C,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACzC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACzC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CAC1C,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CAC1C,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACzC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACzC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;CAC1C,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CAC1C,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,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"} |