1 line
1.1 MiB
1 line
1.1 MiB
{"version":3,"file":"ethers.umd.min.js","sources":["../../properties/lib/properties.js","../../properties/lib/events.js","../../properties/lib/storage.js","../../logger/lib/errors.js","../../logger/lib/logger.js","../../logger/lib/_version.js","../../abi/lib/_version.js","../../abi/lib/logger.js","../../abi/lib/fragments.js","../../math/lib/_version.js","../../math/lib/logger.js","../../math/lib/convert.js","../../math/lib/maths.js","../../math/lib/fixednumber.js","../../math/lib/base58.js","../../math/lib/units.js","../../bytes/lib/check.js","../../bytes/lib/_version.js","../../bytes/lib/logger.js","../../bytes/lib/array.js","../../bytes/lib/base64.js","../../bytes/lib/hex.js","../../bytes/lib/data.js","../../bytes/lib/pad.js","../../abi/lib/coders/abstract-coder.js","../../../node_modules/@noble/hashes/esm/utils.js","../../../node_modules/@noble/hashes/esm/hmac.js","../../../node_modules/@noble/hashes/esm/pbkdf2.js","../../../node_modules/@noble/hashes/esm/_sha2.js","../../../node_modules/@noble/hashes/esm/sha256.js","../../../node_modules/@noble/hashes/esm/_u64.js","../../../node_modules/@noble/hashes/esm/sha512.js","../../crypto/lib/_version.js","../../crypto/lib/logger.js","../../crypto/lib/crypto-browser.js","../../crypto/lib/hmac.js","../../../node_modules/@noble/hashes/esm/sha3.js","../../crypto/lib/keccak.js","../../../node_modules/@noble/hashes/esm/ripemd160.js","../../crypto/lib/ripemd160.js","../../crypto/lib/pbkdf2.js","../../crypto/lib/random.js","../../../node_modules/@noble/hashes/esm/scrypt.js","../../crypto/lib/scrypt.js","../../crypto/lib/sha2.js","../../crypto/lib/index.js","../../address/lib/_version.js","../../address/lib/logger.js","../../address/lib/address.js","../../rlp/lib/_version.js","../../rlp/lib/logger.js","../../rlp/lib/encode.js","../../rlp/lib/decode.js","../../address/lib/contract-address.js","../../address/lib/checks.js","../../abi/lib/typed.js","../../abi/lib/coders/address.js","../../abi/lib/coders/anonymous.js","../../abi/lib/coders/array.js","../../abi/lib/coders/boolean.js","../../abi/lib/coders/bytes.js","../../abi/lib/coders/fixed-bytes.js","../../abi/lib/coders/null.js","../../abi/lib/coders/number.js","../../strings/lib/_version.js","../../strings/lib/logger.js","../../strings/lib/utf8.js","../../strings/lib/bytes32.js","../../strings/lib/idna.js","../../abi/lib/coders/string.js","../../abi/lib/coders/tuple.js","../../abi/lib/abi-coder.js","../../hash/lib/id.js","../../hash/lib/_version.js","../../hash/lib/logger.js","../../hash/lib/namehash.js","../../hash/lib/message.js","../../hash/lib/solidity.js","../../hash/lib/typed-data.js","../../abi/lib/interface.js","../../web/lib/_version.js","../../web/lib/logger.js","../../web/lib/response.js","../../web/lib/get-url-browser.js","../../web/lib/request.js","../../web/lib/fetch-data.js","../../providers/lib/_version.js","../../providers/lib/logger.js","../../providers/lib/ens-resolver.js","../../signing-key/lib/_version.js","../../signing-key/lib/logger.js","../../signing-key/lib/signature.js","../../../node_modules/@noble/secp256k1/lib/esm/index.js","../../signing-key/lib/signing-key.js","../../transaction/lib/accesslist.js","../../transaction/lib/address.js","../../transaction/lib/_version.js","../../transaction/lib/logger.js","../../transaction/lib/transaction.js","../../providers/lib/provider.js","../../providers/lib/formatter.js","../../providers/lib/plugins-network.js","../../providers/lib/network.js","../../providers/lib/subscriber-polling.js","../../providers/lib/abstract-provider.js","../../providers/lib/abstract-signer.js","../../providers/lib/community.js","../../providers/lib/subscriber-filterid.js","../../providers/lib/provider-jsonrpc.js","../../providers/lib/provider-ankr.js","../../providers/lib/provider-alchemy.js","../../providers/lib/provider-cloudflare.js","../../providers/lib/provider-etherscan.js","../../providers/lib/provider-infura.js","../../providers/lib/provider-pocket.js","../../providers/lib/provider-fallback.js","../../providers/lib/shuffle.js","../../providers/lib/ws-browser.js","../../providers/lib/provider-socket.js","../../providers/lib/provider-websocket.js","../../providers/lib/default-provider.js","../../providers/lib/provider-ipcsocket-browser.js","../../contract/lib/wrappers.js","../../contract/lib/_version.js","../../contract/lib/logger.js","../../contract/lib/contract.js","../../wordlists/lib/decode-owl.js","../../wordlists/lib/_version.js","../../wordlists/lib/logger.js","../../wordlists/lib/wordlist.js","../../wordlists/lib/wordlist-owl.js","../../wordlists/lib/lang-en.js","../../wallet/lib/logger.js","../../wallet/lib/_version.js","../../wordlists/lib/wordlists-en.js","../../wordlists/lib/wordlist-owla.js","../../wordlists/lib/decode-owla.js","../../wordlists/lib/bit-reader.js","../../wallet/lib/mnemonic.js","../../wallet/lib/base-wallet.js","../../wallet/lib/hdwallet.js","../../../node_modules/aes-js/lib/aes.js","../../../node_modules/aes-js/lib/mode.js","../../../node_modules/aes-js/lib/mode-cbc.js","../../../node_modules/aes-js/lib/mode-cfb.js","../../../node_modules/aes-js/lib/mode-ctr.js","../../wallet/lib/utils.js","../../wallet/lib/json-crowdsale.js","../../../node_modules/aes-js/lib/padding.js","../../../node_modules/aes-js/lib/mode-ofb.js","../../wallet/lib/json-keystore.js","../../wallet/lib/wallet.js","../lib/_version.js"],"sourcesContent":["//import type { BigNumber, BigNumberish } from \"./big-number\";\n//import type { Bytes, BytesLike } from \"./bytes\";\n//import type { Signature, SignatureLike } from \"./signature\";\n/*\nexport type Loose<T> = T extends BigNumber ? BigNumberish:\n T extends number ? BigNumberish:\n T extends Bytes ? BytesLike:\n T extends Signature ? SignatureLike:\n T;\nexport type LooseObject<T> = { [P in keyof T]?: Loose<T[P]>; };\n*/\n//export type Deferrable<T> = T | Promise<T>;\n/*\nexport type DeferrableObject<T> = {\n [ P in keyof T ]: Deferrable<T[P]>\n};\n*/\n/*\nexport type Frozen<T> = Readonly<{\n [ P in keyof T ]: T[P] extends Freezable<any> ? Frozen<T[P]>: T[P];\n}>;\n\nexport interface Freezable<T> {\n clone(): T;\n freeze(): Frozen<T>;\n isFrozen(): boolean;\n}\n*/\n/*\nconst _data: WeakMap<Data, Uint8Array> = new WeakMap();\n\nexport class Data implements Freezable<Data> {\n #props: {\n data: Uint8Array\n };\n\n [ index: number ]: number;\n\n constructor(lengthOrData: number | Uint8Array) {\n if (typeof(lengthOrData) === \"number\") {\n _data[this] = new Uint8Array(lengthOrData);\n } else {\n _data[this] = lengthOrData;\n }\n\n return new Proxy(this, {\n get: (target, prop, receiver) => {\n const index = parseInt(String(prop));\n if (String(index) !== prop) { return Reflect.get(target, prop, receiver); }\n\n const data = _data[this];\n if (index < 0 || index > data.length || index % 1) {\n throw new Error(\"\");\n }\n return data[index];\n },\n\n set: (target, prop, value, receiver) => {\n const index = parseInt(String(prop));\n if (String(index) !== prop) { return false; }\n\n if (value < 0 || value > 255 || value % 1) { return false; }\n\n const data = _data[this];\n if (index < 0 || index > data.length || index % 1) {\n return false;\n }\n\n data[index] = value;\n\n return true;\n },\n });\n }\n\n toString(): string {\n return this.slice().toString();\n }\n\n slice(): Uint8Array {\n return _data.get(this).slice();\n }\n\n clone(): Data {\n return new Data(this.slice());\n }\n\n freeze(): Frozen<Data> {\n //Object.freeze(this.#props);\n return this;\n }\n\n isFrozen(): boolean {\n return Object.isFrozen(this.#props);\n }\n}\nconst d = new Data(4);\nconsole.log(d.toString());\nd[0] = 45;\nconsole.log(d.toString());\n*/\n/*\nexport type DeferrableObject<T> = {\n [ P in keyof T ]: Deferrable<T[P]>\n};\n*/\nexport async function resolveProperties(value) {\n const keys = Object.keys(value);\n const results = await Promise.all(keys.map((k) => Promise.resolve(value[k])));\n return results.reduce((accum, v, index) => {\n accum[keys[index]] = v;\n return accum;\n }, {});\n}\nexport function defineReadOnly(object, name, value) {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n/*\nexport type IsCancelled = () => Promise<boolean>;\n\nexport function createPromise<T>(resolve: (isCancelled: IsCancelled, (result: T) => void) => void, reject: (error: Error) => void, isCancelled: IsCancelled): CancellablePromise<T> {\n let cancelled = false;\n\n const promise = new Promise((resolve, reject) => {\n \n });\n\n (<CancellablePromise<T>>promise).cancel = function() {\n cancelled = true;\n };\n\n return (<CancellablePromise<T>>promise);\n}\n*/\n/*\nexport class A implements Freezable<A> {\n foo: number;\n constructor(foo: number) {\n this.foo = foo;\n }\n freeze(): Frozen<A> {\n Object.freeze(this);\n return this;\n }\n clone(): A {\n return new A(this.foo);\n }\n}\n\nexport class B implements Freezable<B> {\n a: A;\n constructor(a: A) {\n this.a = a;\n }\n freeze(): Frozen<B> {\n this.a.freeze();\n Object.freeze(this);\n return this;\n }\n clone(): B {\n return new B(this.a);\n }\n}\n\nexport function test() {\n const a = new A(123);\n const b = new B(a);\n b.a = new A(234);\n const b2 = b.freeze();\n b2.a.foo = 123; // = a;\n}\n*/\nfunction checkType(value, type) {\n const types = type.split(\"|\").map(t => t.trim());\n for (let i = 0; i < types.length; i++) {\n switch (type) {\n case \"any\":\n return;\n case \"boolean\":\n case \"number\":\n case \"string\":\n if (typeof (value) === type) {\n return;\n }\n }\n }\n throw new Error(\"invalid value for type\");\n}\nexport function defineProperties(target, values, types, defaults) {\n for (let key in values) {\n let value = values[key];\n const fallback = (defaults ? defaults[key] : undefined);\n if (fallback !== undefined) {\n value = fallback;\n }\n else {\n const type = (types ? types[key] : null);\n if (type) {\n checkType(value, type);\n }\n }\n Object.defineProperty(target, key, { enumerable: true, value, writable: false });\n }\n}\n//# sourceMappingURL=properties.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _EventPayload_listener;\nimport { defineProperties } from \"./properties.js\";\nexport class EventPayload {\n constructor(emitter, listener, filter) {\n _EventPayload_listener.set(this, void 0);\n __classPrivateFieldSet(this, _EventPayload_listener, listener, \"f\");\n defineProperties(this, { emitter, filter });\n }\n async removeListener() {\n if (__classPrivateFieldGet(this, _EventPayload_listener, \"f\") == null) {\n return;\n }\n await this.emitter.off(this.filter, __classPrivateFieldGet(this, _EventPayload_listener, \"f\"));\n }\n}\n_EventPayload_listener = new WeakMap();\n//# sourceMappingURL=events.js.map","export function getStore(store, key) {\n return store[key];\n}\nexport function setStore(store, key, value) {\n if (Object.isFrozen(store)) {\n throw new Error(\"frozen object is immuatable; cannot set \" + key);\n }\n store[key] = value;\n}\n//# sourceMappingURL=storage.js.map","//export type TransactionReceipt {\n//}\n/**\n * try {\n * // code....\n * } catch (e) {\n * if (isError(e, errors.CALL_EXCEPTION)) {\n * console.log(e.data);\n * }\n * }\n */\nexport function isError(error, code) {\n return (error && error.code === code);\n}\nexport function isCallException(error) {\n return isError(error, \"CALL_EXCEPTION\");\n}\n//# sourceMappingURL=errors.js.map","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Logger_instances, _Logger_getBytes, _Logger_log;\nimport { version } from \"./_version.js\";\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[\"DEBUG\"] = \"DEBUG\";\n LogLevel[\"INFO\"] = \"INFO\";\n LogLevel[\"WARNING\"] = \"WARNING\";\n LogLevel[\"ERROR\"] = \"ERROR\";\n LogLevel[\"OFF\"] = \"OFF\";\n})(LogLevel || (LogLevel = {}));\n;\nconst LogLevels = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\nlet _globalLogger = null;\nconst _normalizeForms = [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].reduce((accum, form) => {\n try {\n // General test for normalize\n /* c8 ignore start */\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad\");\n }\n ;\n /* c8 ignore stop */\n if (form === \"NFD\") {\n const check = String.fromCharCode(0xe9).normalize(\"NFD\");\n const expected = String.fromCharCode(0x65, 0x0301);\n /* c8 ignore start */\n if (check !== expected) {\n throw new Error(\"broken\");\n }\n /* c8 ignore stop */\n }\n accum.push(form);\n }\n catch (error) { }\n return accum;\n}, []);\nfunction defineReadOnly(object, name, value) {\n Object.defineProperty(object, name, {\n enumerable: true, writable: false, value,\n });\n}\n// IEEE 754 support 53-bits of mantissa\nconst maxValue = 0x1fffffffffffff;\n// The type of error to use for various error codes\nconst ErrorConstructors = {};\nErrorConstructors.INVALID_ARGUMENT = TypeError;\nErrorConstructors.NUMERIC_FAULT = RangeError;\nErrorConstructors.BUFFER_OVERRUN = RangeError;\nexport class Logger {\n constructor(version) {\n _Logger_instances.add(this);\n defineReadOnly(this, \"version\", version || \"_\");\n }\n makeError(message, code, info) {\n {\n const details = [];\n if (info) {\n for (const key in info) {\n const value = (info[key]);\n try {\n details.push(key + \"=\" + JSON.stringify(value));\n }\n catch (error) {\n details.push(key + \"=[could not serialize object]\");\n }\n }\n }\n details.push(`code=${code}`);\n details.push(`version=${this.version}`);\n if (details.length) {\n message += \" (\" + details.join(\", \") + \")\";\n }\n }\n const create = ErrorConstructors[code] || Error;\n const error = (new create(message));\n defineReadOnly(error, \"code\", code);\n if (info) {\n for (const key in info) {\n defineReadOnly(error, key, (info[key]));\n }\n }\n return error;\n }\n throwError(message, code, info) {\n throw this.makeError(message, code, info);\n }\n throwArgumentError(message, name, value) {\n return this.throwError(message, \"INVALID_ARGUMENT\", {\n argument: name,\n value: value\n });\n }\n assert(condition, message, code, info) {\n if (!!condition) {\n return;\n }\n this.throwError(message, code || \"UNKNOWN_ERROR\", info);\n }\n assertArgument(condition, message, name, value) {\n return this.assert(condition, message, \"INVALID_ARGUMENT\", {\n argument: name,\n value\n });\n }\n assertIntegerArgument(name, value, lower, upper) {\n let message = null;\n if (typeof (value) !== \"number\") {\n message = \"expected a number\";\n }\n else if (!Number.isInteger(value)) {\n message = \"invalid integer\";\n }\n else if ((lower != null && value < lower) || (upper != null && value > upper)) {\n message = \"value is out of range\";\n }\n if (message) {\n this.throwArgumentError(message, name, value);\n }\n }\n assertSafeUint53(value, message) {\n this.assertArgument((typeof (value) === \"number\"), \"invalid number\", \"value\", value);\n if (message == null) {\n message = \"value not safe\";\n }\n const operation = \"assertSafeInteger\";\n this.assert((value >= 0 && value < 0x1fffffffffffff), message, \"NUMERIC_FAULT\", {\n operation, fault: \"out-of-safe-range\", value\n });\n this.assert((value % 1) === 0, message, \"NUMERIC_FAULT\", {\n operation, fault: \"non-integer\", value\n });\n }\n assertNormalize(form) {\n if (_normalizeForms.indexOf(form) === -1) {\n this.throwError(\"platform missing String.prototype.normalize\", \"UNSUPPORTED_OPERATION\", {\n operation: \"String.prototype.normalize\", info: { form }\n });\n }\n }\n assertPrivate(givenGuard, guard, className = \"\") {\n if (givenGuard !== guard) {\n let method = className, operation = \"new\";\n if (className) {\n method += \".\";\n operation += \" \" + className;\n }\n this.throwError(`private constructor; use ${method}from* methods`, \"UNSUPPORTED_OPERATION\", {\n operation\n });\n }\n }\n assertArgumentCount(count, expectedCount, message = \"\") {\n if (message) {\n message = \": \" + message;\n }\n this.assert((count >= expectedCount), \"missing arguemnt\" + message, \"MISSING_ARGUMENT\", {\n count: count,\n expectedCount: expectedCount\n });\n this.assert((count >= expectedCount), \"too many arguemnts\" + message, \"UNEXPECTED_ARGUMENT\", {\n count: count,\n expectedCount: expectedCount\n });\n }\n getBytes(value, name) {\n return __classPrivateFieldGet(this, _Logger_instances, \"m\", _Logger_getBytes).call(this, value, name, false);\n }\n getBytesCopy(value, name) {\n return __classPrivateFieldGet(this, _Logger_instances, \"m\", _Logger_getBytes).call(this, value, name, true);\n }\n getNumber(value, name) {\n switch (typeof (value)) {\n case \"bigint\":\n if (value < -maxValue || value > maxValue) {\n this.throwArgumentError(\"overflow\", name || \"value\", value);\n }\n return Number(value);\n case \"number\":\n if (!Number.isInteger(value)) {\n this.throwArgumentError(\"underflow\", name || \"value\", value);\n }\n else if (value < -maxValue || value > maxValue) {\n this.throwArgumentError(\"overflow\", name || \"value\", value);\n }\n return value;\n case \"string\":\n try {\n return this.getNumber(BigInt(value), name);\n }\n catch (e) {\n this.throwArgumentError(`invalid numeric string: ${e.message}`, name || \"value\", value);\n }\n }\n return this.throwArgumentError(\"invalid numeric value\", name || \"value\", value);\n }\n getBigInt(value, name) {\n switch (typeof (value)) {\n case \"bigint\": return value;\n case \"number\":\n if (!Number.isInteger(value)) {\n this.throwArgumentError(\"underflow\", name || \"value\", value);\n }\n else if (value < -maxValue || value > maxValue) {\n this.throwArgumentError(\"overflow\", name || \"value\", value);\n }\n return BigInt(value);\n case \"string\":\n try {\n return BigInt(value);\n }\n catch (e) {\n this.throwArgumentError(`invalid BigNumberish string: ${e.message}`, name || \"value\", value);\n }\n }\n return this.throwArgumentError(\"invalid BigNumberish value\", name || \"value\", value);\n }\n debug(...args) {\n __classPrivateFieldGet(this, _Logger_instances, \"m\", _Logger_log).call(this, LogLevel.DEBUG, args);\n }\n info(...args) {\n __classPrivateFieldGet(this, _Logger_instances, \"m\", _Logger_log).call(this, LogLevel.INFO, args);\n }\n warn(...args) {\n __classPrivateFieldGet(this, _Logger_instances, \"m\", _Logger_log).call(this, LogLevel.WARNING, args);\n }\n static globalLogger() {\n if (!_globalLogger) {\n _globalLogger = new Logger(version);\n }\n return _globalLogger;\n }\n static setLogLevel(logLevel) {\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_Logger_instances = new WeakSet(), _Logger_getBytes = function _Logger_getBytes(value, name, copy) {\n if (value instanceof Uint8Array) {\n if (copy) {\n return new Uint8Array(value);\n }\n return value;\n }\n if (typeof (value) === \"string\" && value.match(/^0x([0-9a-f][0-9a-f])*$/i)) {\n const result = new Uint8Array((value.length - 2) / 2);\n let offset = 2;\n for (let i = 0; i < result.length; i++) {\n result[i] = parseInt(value.substring(offset, offset + 2), 16);\n offset += 2;\n }\n return result;\n }\n return this.throwArgumentError(\"invalid BytesLike value\", name || \"value\", value);\n}, _Logger_log = function _Logger_log(logLevel, args) {\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]) {\n return;\n }\n console.log.apply(console, args);\n};\nLogger.LogLevels = LogLevel;\n//# sourceMappingURL=logger.js.map","export const version = \"@ethersproject/logger@6.0.0-beta.7\";\n//# sourceMappingURL=_version.js.map","export const version = \"@ethersproject/abi@6.0.0-beta.3\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _TokenString_instances, _TokenString_offset, _TokenString_tokens, _TokenString_subTokenString, _ParamType_instances, _ParamType_walkAsync;\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { logger } from \"./logger.js\";\n;\nexport var FormatType;\n(function (FormatType) {\n // Bare formatting, as is needed for computing a sighash of an event or function\n FormatType[\"sighash\"] = \"sighash\";\n // Human-Readable with Minimal spacing and without names (compact human-readable)\n FormatType[\"minimal\"] = \"minimal\";\n // Human-Readable with nice spacing, including all names\n FormatType[\"full\"] = \"full\";\n // JSON-format a la Solidity\n FormatType[\"json\"] = \"json\";\n})(FormatType || (FormatType = {}));\n;\n// [ \"a\", \"b\" ] => { \"a\": 1, \"b\": 1 }\nfunction setify(items) {\n const result = new Set();\n items.forEach((k) => result.add(k));\n return Object.freeze(result);\n}\n// Visibility Keywords\nconst _kwVisib = \"constant external internal payable private public pure view\";\nconst KwVisib = setify(_kwVisib.split(\" \"));\nconst _kwTypes = \"constructor error event function struct\";\nconst KwTypes = setify(_kwTypes.split(\" \"));\nconst _kwModifiers = \"calldata memory storage payable indexed\";\nconst KwModifiers = setify(_kwModifiers.split(\" \"));\nconst _kwOther = \"tuple returns\";\n// All Keywords\nconst _keywords = [_kwTypes, _kwModifiers, _kwOther, _kwVisib].join(\" \");\nconst Keywords = setify(_keywords.split(\" \"));\n// Single character tokens\nconst SimpleTokens = {\n \"(\": \"OPEN_PAREN\", \")\": \"CLOSE_PAREN\",\n \"[\": \"OPEN_BRACKET\", \"]\": \"CLOSE_BRACKET\",\n \",\": \"COMMA\", \"@\": \"AT\"\n};\n// Parser regexes to consume the next token\nconst regexWhitespace = new RegExp(\"^(\\\\s*)\");\nconst regexNumber = new RegExp(\"^([0-9]+)\");\nconst regexIdentifier = new RegExp(\"^([a-zA-Z$_][a-zA-Z0-9$_]*)\");\nconst regexType = new RegExp(\"^(address|bool|bytes([0-9]*)|string|u?int([0-9]*))\");\nexport class TokenString {\n constructor(tokens) {\n _TokenString_instances.add(this);\n _TokenString_offset.set(this, void 0);\n _TokenString_tokens.set(this, void 0);\n __classPrivateFieldSet(this, _TokenString_offset, 0, \"f\");\n __classPrivateFieldSet(this, _TokenString_tokens, tokens.slice(), \"f\");\n }\n get offset() { return __classPrivateFieldGet(this, _TokenString_offset, \"f\"); }\n get length() { return __classPrivateFieldGet(this, _TokenString_tokens, \"f\").length - __classPrivateFieldGet(this, _TokenString_offset, \"f\"); }\n clone() { return new TokenString(__classPrivateFieldGet(this, _TokenString_tokens, \"f\")); }\n reset() { __classPrivateFieldSet(this, _TokenString_offset, 0, \"f\"); }\n // Pops and returns the value of the next token, if it is a keyword in allowed; throws if out of tokens\n popKeyword(allowed) {\n const top = this.peek();\n if (top.type !== \"KEYWORD\" || !allowed.has(top.text)) {\n throw new Error(`expected keyword ${top.text}`);\n }\n return this.pop().text;\n }\n // Pops and returns the value of the next token if it is `type`; throws if out of tokens\n popType(type) {\n if (this.peek().type !== type) {\n throw new Error(`expected ${type}; got ${JSON.stringify(this.peek())}`);\n }\n return this.pop().text;\n }\n // Pops and returns a \"(\" TOKENS \")\"\n popParen() {\n const top = this.peek();\n if (top.type !== \"OPEN_PAREN\") {\n throw new Error(\"bad start\");\n }\n const result = __classPrivateFieldGet(this, _TokenString_instances, \"m\", _TokenString_subTokenString).call(this, __classPrivateFieldGet(this, _TokenString_offset, \"f\") + 1, top.match + 1);\n __classPrivateFieldSet(this, _TokenString_offset, top.match + 1, \"f\");\n return result;\n }\n // Pops and returns the items within \"(\" ITEM1 \",\" ITEM2 \",\" ... \")\"\n popParams() {\n const top = this.peek();\n if (top.type !== \"OPEN_PAREN\") {\n throw new Error(\"bad start\");\n }\n const result = [];\n while (__classPrivateFieldGet(this, _TokenString_offset, \"f\") < top.match - 1) {\n const link = this.peek().linkNext;\n result.push(__classPrivateFieldGet(this, _TokenString_instances, \"m\", _TokenString_subTokenString).call(this, __classPrivateFieldGet(this, _TokenString_offset, \"f\") + 1, link));\n __classPrivateFieldSet(this, _TokenString_offset, link, \"f\");\n }\n __classPrivateFieldSet(this, _TokenString_offset, top.match + 1, \"f\");\n return result;\n }\n // Returns the top Token, throwing if out of tokens\n peek() {\n if (__classPrivateFieldGet(this, _TokenString_offset, \"f\") >= __classPrivateFieldGet(this, _TokenString_tokens, \"f\").length) {\n throw new Error(\"out-of-bounds\");\n }\n return __classPrivateFieldGet(this, _TokenString_tokens, \"f\")[__classPrivateFieldGet(this, _TokenString_offset, \"f\")];\n }\n // Returns the next value, if it is a keyword in `allowed`\n peekKeyword(allowed) {\n const top = this.peekType(\"KEYWORD\");\n return (top != null && allowed.has(top)) ? top : null;\n }\n // Returns the value of the next token if it is `type`\n peekType(type) {\n if (this.length === 0) {\n return null;\n }\n const top = this.peek();\n return (top.type === type) ? top.text : null;\n }\n // Returns the next token; throws if out of tokens\n pop() {\n var _a;\n const result = this.peek();\n __classPrivateFieldSet(this, _TokenString_offset, (_a = __classPrivateFieldGet(this, _TokenString_offset, \"f\"), _a++, _a), \"f\");\n return result;\n }\n toString() {\n const tokens = [];\n for (let i = __classPrivateFieldGet(this, _TokenString_offset, \"f\"); i < __classPrivateFieldGet(this, _TokenString_tokens, \"f\").length; i++) {\n const token = __classPrivateFieldGet(this, _TokenString_tokens, \"f\")[i];\n tokens.push(`${token.type}:${token.text}`);\n }\n return `<TokenString ${tokens.join(\" \")}>`;\n }\n}\n_TokenString_offset = new WeakMap(), _TokenString_tokens = new WeakMap(), _TokenString_instances = new WeakSet(), _TokenString_subTokenString = function _TokenString_subTokenString(from = 0, to = 0) {\n return new TokenString(__classPrivateFieldGet(this, _TokenString_tokens, \"f\").slice(from, to).map((t) => {\n return Object.freeze(Object.assign({}, t, {\n match: (t.match - from),\n linkBack: (t.linkBack - from),\n linkNext: (t.linkNext - from),\n }));\n return t;\n }));\n};\nexport function lex(text) {\n const tokens = [];\n const throwError = (message) => {\n const token = (offset < text.length) ? JSON.stringify(text[offset]) : \"$EOI\";\n throw new Error(`invalid token ${token} at ${offset}: ${message}`);\n };\n let brackets = [];\n let commas = [];\n let offset = 0;\n while (offset < text.length) {\n // Strip off any leading whitespace\n let cur = text.substring(offset);\n let match = cur.match(regexWhitespace);\n if (match) {\n offset += match[1].length;\n cur = text.substring(offset);\n }\n const token = { depth: brackets.length, linkBack: -1, linkNext: -1, match: -1, type: \"\", text: \"\", offset, value: -1 };\n tokens.push(token);\n let type = (SimpleTokens[cur[0]] || \"\");\n if (type) {\n token.type = type;\n token.text = cur[0];\n offset++;\n if (type === \"OPEN_PAREN\") {\n brackets.push(tokens.length - 1);\n commas.push(tokens.length - 1);\n }\n else if (type == \"CLOSE_PAREN\") {\n if (brackets.length === 0) {\n throwError(\"no matching open bracket\");\n }\n token.match = brackets.pop();\n (tokens[token.match]).match = tokens.length - 1;\n token.depth--;\n token.linkBack = commas.pop();\n (tokens[token.linkBack]).linkNext = tokens.length - 1;\n }\n else if (type === \"COMMA\") {\n token.linkBack = commas.pop();\n (tokens[token.linkBack]).linkNext = tokens.length - 1;\n commas.push(tokens.length - 1);\n }\n else if (type === \"OPEN_BRACKET\") {\n token.type = \"BRACKET\";\n }\n else if (type === \"CLOSE_BRACKET\") {\n // Remove the CLOSE_BRACKET\n let suffix = tokens.pop().text;\n if (tokens.length > 0 && tokens[tokens.length - 1].type === \"NUMBER\") {\n const value = tokens.pop().text;\n suffix = value + suffix;\n (tokens[tokens.length - 1]).value = logger.getNumber(value);\n }\n if (tokens.length === 0 || tokens[tokens.length - 1].type !== \"BRACKET\") {\n throw new Error(\"missing opening bracket\");\n }\n (tokens[tokens.length - 1]).text += suffix;\n }\n continue;\n }\n match = cur.match(regexIdentifier);\n if (match) {\n token.text = match[1];\n offset += token.text.length;\n if (Keywords.has(token.text)) {\n token.type = \"KEYWORD\";\n continue;\n }\n if (token.text.match(regexType)) {\n token.type = \"TYPE\";\n continue;\n }\n token.type = \"ID\";\n continue;\n }\n match = cur.match(regexNumber);\n if (match) {\n token.text = match[1];\n token.type = \"NUMBER\";\n offset += token.text.length;\n continue;\n }\n throw new Error(`unexpected token ${JSON.stringify(cur[0])} at position ${offset}`);\n }\n return new TokenString(tokens.map((t) => Object.freeze(t)));\n}\n// Check only one of `allowed` is in `set`\nfunction allowSingle(set, allowed) {\n let included = [];\n for (const key in allowed.keys()) {\n if (set.has(key)) {\n included.push(key);\n }\n }\n if (included.length > 1) {\n throw new Error(`conflicting types: ${included.join(\", \")}`);\n }\n}\n// Functions to process a Solidity Signature TokenString from left-to-right for...\n// ...the name with an optional type, returning the name\nfunction consumeName(type, tokens) {\n if (tokens.peekKeyword(KwTypes)) {\n const keyword = tokens.pop().text;\n if (keyword !== type) {\n throw new Error(`expected ${type}, got ${keyword}`);\n }\n }\n return tokens.popType(\"ID\");\n}\n// ...all keywords matching allowed, returning the keywords\nfunction consumeKeywords(tokens, allowed) {\n const keywords = new Set();\n while (true) {\n const keyword = tokens.peekType(\"KEYWORD\");\n if (keyword == null || (allowed && !allowed.has(keyword))) {\n break;\n }\n tokens.pop();\n if (keywords.has(keyword)) {\n throw new Error(`duplicate keywords: ${JSON.stringify(keyword)}`);\n }\n keywords.add(keyword);\n }\n return Object.freeze(keywords);\n}\n// ...all visibility keywords, returning the coalesced mutability\nfunction consumeMutability(tokens) {\n let modifiers = consumeKeywords(tokens, KwVisib);\n // Detect conflicting modifiers\n allowSingle(modifiers, setify(\"constant payable nonpayable\".split(\" \")));\n allowSingle(modifiers, setify(\"pure view payable nonpayable\".split(\" \")));\n // Process mutability states\n if (modifiers.has(\"view\")) {\n return \"view\";\n }\n if (modifiers.has(\"pure\")) {\n return \"pure\";\n }\n if (modifiers.has(\"payable\")) {\n return \"payable\";\n }\n if (modifiers.has(\"nonpayable\")) {\n return \"nonpayable\";\n }\n // Process legacy `constant` last\n if (modifiers.has(\"constant\")) {\n return \"view\";\n }\n return \"nonpayable\";\n}\n// ...a parameter list, returning the ParamType list\nfunction consumeParams(tokens, allowIndexed) {\n return tokens.popParams().map((t) => ParamType.fromTokens(t, allowIndexed));\n}\n// ...a gas limit, returning a BigNumber or null if none\nfunction consumeGas(tokens) {\n if (tokens.peekType(\"AT\")) {\n tokens.pop();\n if (tokens.peekType(\"NUMBER\")) {\n return logger.getBigInt(tokens.pop().text);\n }\n throw new Error(\"invalid gas\");\n }\n return null;\n}\nfunction consumeEoi(tokens) {\n if (tokens.length) {\n throw new Error(`unexpected tokens: ${tokens.toString()}`);\n }\n}\nconst regexArrayType = new RegExp(/^(.*)\\[([0-9]*)\\]$/);\nfunction verifyBasicType(type) {\n const match = type.match(regexType);\n if (!match) {\n return logger.throwArgumentError(\"invalid type\", \"type\", type);\n }\n if (type === \"uint\") {\n return \"uint256\";\n }\n if (type === \"int\") {\n return \"int256\";\n }\n if (match[2]) {\n // bytesXX\n const length = parseInt(match[2]);\n if (length === 0 || length > 32) {\n logger.throwArgumentError(\"invalid bytes length\", \"type\", type);\n }\n }\n else if (match[3]) {\n // intXX or uintXX\n const size = parseInt(match[3]);\n if (size === 0 || size > 256 || size % 8) {\n logger.throwArgumentError(\"invalid numeric width\", \"type\", type);\n }\n }\n return type;\n}\n// Make the Fragment constructors effectively private\nconst _guard = {};\nconst internal = Symbol.for(\"_ethers_internal\");\nconst ParamTypeInternal = \"_ParamTypeInternal\";\nexport class ParamType {\n constructor(guard, name, type, baseType, indexed, components, arrayLength, arrayChildren) {\n _ParamType_instances.add(this);\n logger.assertPrivate(guard, _guard, \"ParamType\");\n Object.defineProperty(this, internal, { value: ParamTypeInternal });\n if (components) {\n components = Object.freeze(components.slice());\n }\n if (baseType === \"array\") {\n if (arrayLength == null || arrayChildren == null) {\n throw new Error(\"\");\n }\n }\n else if (arrayLength != null || arrayChildren != null) {\n throw new Error(\"\");\n }\n if (baseType === \"tuple\") {\n if (components == null) {\n throw new Error(\"\");\n }\n }\n else if (components != null) {\n throw new Error(\"\");\n }\n defineProperties(this, {\n name, type, baseType, indexed, components, arrayLength, arrayChildren\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 = FormatType.sighash) {\n if (!FormatType[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n if (format === FormatType.json) {\n let result = {\n type: ((this.baseType === \"tuple\") ? \"tuple\" : this.type),\n name: (this.name || undefined)\n };\n if (typeof (this.indexed) === \"boolean\") {\n result.indexed = this.indexed;\n }\n if (this.isTuple()) {\n result.components = this.components.map((c) => JSON.parse(c.format(format)));\n }\n return JSON.stringify(result);\n }\n let result = \"\";\n // Array\n if (this.isArray()) {\n result += this.arrayChildren.format(format);\n result += `[${(this.arrayLength < 0 ? \"\" : String(this.arrayLength))}]`;\n }\n else {\n if (this.isTuple()) {\n if (format !== FormatType.sighash) {\n result += this.type;\n }\n result += \"(\" + this.components.map((comp) => comp.format(format)).join((format === FormatType.full) ? \", \" : \",\") + \")\";\n }\n else {\n result += this.type;\n }\n }\n if (format !== FormatType.sighash) {\n if (this.indexed === true) {\n result += \" indexed\";\n }\n if (format === FormatType.full && this.name) {\n result += \" \" + this.name;\n }\n }\n return result;\n }\n static isArray(value) {\n return value && (value.baseType === \"array\");\n }\n isArray() {\n return (this.baseType === \"array\");\n }\n isTuple() {\n return (this.baseType === \"tuple\");\n }\n isIndexable() {\n return (this.indexed != null);\n }\n walk(value, process) {\n if (this.isArray()) {\n if (!Array.isArray(value)) {\n throw new Error(\"invlaid array value\");\n }\n if (this.arrayLength !== -1 && value.length !== this.arrayLength) {\n throw new Error(\"array is wrong length\");\n }\n return value.map((v) => (this.arrayChildren.walk(v, process)));\n }\n if (this.isTuple()) {\n if (!Array.isArray(value)) {\n throw new Error(\"invlaid tuple value\");\n }\n if (value.length !== this.components.length) {\n throw new Error(\"array is wrong length\");\n }\n return value.map((v, i) => (this.components[i].walk(v, process)));\n }\n return process(this.type, value);\n }\n async walkAsync(value, process) {\n const promises = [];\n const result = [value];\n __classPrivateFieldGet(this, _ParamType_instances, \"m\", _ParamType_walkAsync).call(this, promises, value, process, (value) => {\n result[0] = value;\n });\n if (promises.length) {\n await Promise.all(promises);\n }\n return result[0];\n }\n static from(obj, allowIndexed) {\n if (ParamType.isParamType(obj)) {\n return obj;\n }\n if (typeof (obj) === \"string\") {\n return ParamType.fromTokens(lex(obj), allowIndexed);\n }\n if (obj instanceof TokenString) {\n return ParamType.fromTokens(obj, allowIndexed);\n }\n const name = obj.name;\n if (name && (typeof (name) !== \"string\" || !name.match(regexIdentifier))) {\n logger.throwArgumentError(\"invalid name\", \"obj.name\", name);\n }\n let indexed = obj.indexed;\n if (indexed != null) {\n if (!allowIndexed) {\n logger.throwArgumentError(\"parameter cannot be indexed\", \"obj.indexed\", obj.indexed);\n }\n indexed = !!indexed;\n }\n let type = obj.type;\n let arrayMatch = type.match(regexArrayType);\n if (arrayMatch) {\n const arrayLength = arrayMatch[2];\n const arrayChildren = ParamType.from({\n type: arrayMatch[1],\n components: obj.components\n });\n return new ParamType(_guard, name, type, \"array\", indexed, null, arrayLength, arrayChildren);\n }\n if (type.substring(0, 5) === \"tuple(\" || type[0] === \"(\") {\n const comps = (obj.components != null) ? obj.components.map((c) => ParamType.from(c)) : null;\n const tuple = new ParamType(_guard, name, type, \"tuple\", indexed, comps, null, null);\n // @TODO: use lexer to validate and normalize type\n return tuple;\n }\n type = verifyBasicType(obj.type);\n return new ParamType(_guard, name, type, type, indexed, null, null, null);\n }\n static fromObject(obj, allowIndexed) {\n throw new Error(\"@TODO\");\n }\n static fromTokens(tokens, allowIndexed) {\n let type = \"\", baseType = \"\";\n let comps = null;\n if (consumeKeywords(tokens, setify([\"tuple\"])).has(\"tuple\") || tokens.peekType(\"OPEN_PAREN\")) {\n // Tuple\n baseType = \"tuple\";\n comps = tokens.popParams().map((t) => ParamType.from(t));\n type = `tuple(${comps.map((c) => c.format()).join(\",\")})`;\n }\n else {\n // Normal\n type = verifyBasicType(tokens.popType(\"TYPE\"));\n baseType = type;\n }\n // Check for Array\n let arrayChildren = null;\n let arrayLength = null;\n while (tokens.length && tokens.peekType(\"BRACKET\")) {\n const bracket = tokens.pop(); //arrays[i];\n arrayChildren = new ParamType(_guard, \"\", type, baseType, null, comps, arrayLength, arrayChildren);\n arrayLength = bracket.value;\n type += bracket.text;\n baseType = \"array\";\n comps = null;\n }\n let indexed = null;\n const keywords = consumeKeywords(tokens, KwModifiers);\n if (keywords.has(\"indexed\")) {\n if (!allowIndexed) {\n throw new Error(\"\");\n }\n indexed = true;\n }\n const name = (tokens.peekType(\"ID\") ? tokens.pop().text : \"\");\n if (tokens.length) {\n throw new Error(\"leftover tokens\");\n }\n return new ParamType(_guard, name, type, baseType, indexed, comps, arrayLength, arrayChildren);\n }\n static isParamType(value) {\n return (value && value[internal] === ParamTypeInternal);\n }\n}\n_ParamType_instances = new WeakSet(), _ParamType_walkAsync = function _ParamType_walkAsync(promises, value, process, setValue) {\n if (this.isArray()) {\n if (!Array.isArray(value)) {\n throw new Error(\"invlaid array value\");\n }\n if (this.arrayLength !== -1 && value.length !== this.arrayLength) {\n throw new Error(\"array is wrong length\");\n }\n const childType = this.arrayChildren;\n const result = value.slice();\n result.forEach((value, index) => {\n __classPrivateFieldGet(childType, _ParamType_instances, \"m\", _ParamType_walkAsync).call(childType, promises, value, process, (value) => {\n result[index] = value;\n });\n });\n setValue(result);\n return;\n }\n if (this.isTuple()) {\n const components = this.components;\n // Convert the object into an array\n let result;\n if (Array.isArray(value)) {\n result = value.slice();\n }\n else {\n if (value == null || typeof (value) !== \"object\") {\n throw new Error(\"invlaid tuple value\");\n }\n result = components.map((param) => {\n if (!param.name) {\n throw new Error(\"cannot use object value with unnamed components\");\n }\n if (!(param.name in value)) {\n throw new Error(`missing value for component ${param.name}`);\n }\n return value[param.name];\n });\n }\n if (value.length !== this.components.length) {\n throw new Error(\"array is wrong length\");\n }\n result.forEach((value, index) => {\n var _a;\n __classPrivateFieldGet((_a = components[index]), _ParamType_instances, \"m\", _ParamType_walkAsync).call(_a, promises, value, process, (value) => {\n result[index] = value;\n });\n });\n setValue(result);\n return;\n }\n const result = process(this.type, value);\n if (result.then) {\n promises.push((async function () { setValue(await result); })());\n }\n else {\n setValue(result);\n }\n};\nexport var FragmentType;\n(function (FragmentType) {\n FragmentType[\"constructor\"] = \"constructor\";\n FragmentType[\"error\"] = \"error\";\n FragmentType[\"event\"] = \"event\";\n FragmentType[\"function\"] = \"function\";\n FragmentType[\"struct\"] = \"struct\";\n})(FragmentType || (FragmentType = {}));\n;\nexport class Fragment {\n constructor(guard, type, inputs) {\n logger.assertPrivate(guard, _guard, \"Fragment\");\n inputs = Object.freeze(inputs.slice());\n defineProperties(this, { type, inputs });\n }\n static from(obj) {\n if (typeof (obj) === \"string\") {\n return this.fromString(obj);\n }\n if (obj instanceof TokenString) {\n return this.fromTokens(obj);\n }\n if (typeof (obj) === \"object\") {\n return this.fromObject(obj);\n }\n throw new Error(`unsupported type: ${obj}`);\n }\n static fromObject(obj) {\n switch (obj.type) {\n case \"constructor\": return ConstructorFragment.fromObject(obj);\n case \"error\": return ErrorFragment.fromObject(obj);\n case \"event\": return EventFragment.fromObject(obj);\n case \"function\": return FunctionFragment.fromObject(obj);\n case \"struct\": return StructFragment.fromObject(obj);\n }\n throw new Error(\"not implemented yet\");\n }\n static fromString(text) {\n try {\n Fragment.from(JSON.parse(text));\n }\n catch (e) { }\n return Fragment.fromTokens(lex(text));\n }\n static fromTokens(tokens) {\n const type = tokens.popKeyword(KwTypes);\n switch (type) {\n case \"constructor\": return ConstructorFragment.fromTokens(tokens);\n case \"error\": return ErrorFragment.fromTokens(tokens);\n case \"event\": return EventFragment.fromTokens(tokens);\n case \"function\": return FunctionFragment.fromTokens(tokens);\n case \"struct\": return StructFragment.fromTokens(tokens);\n }\n throw new Error(`unsupported type: ${type}`);\n }\n /*\n static fromTokens(tokens: TokenString): Fragment {\n const assertDone = () => {\n if (tokens.length) { throw new Error(`unexpected tokens: ${ tokens.toString() }`); }\n });\n\n const type = (tokens.length && tokens.peek().type === \"KEYWORD\") ? tokens.peek().text: \"unknown\";\n\n const name = consumeName(\"error\", tokens);\n const inputs = consumeParams(tokens, type === \"event\");\n\n switch (type) {\n case \"event\": case \"struct\":\n assertDone();\n }\n\n }\n */\n static isConstructor(value) {\n return (value && value.type === \"constructor\");\n }\n static isError(value) {\n return (value && value.type === \"error\");\n }\n static isEvent(value) {\n return (value && value.type === \"event\");\n }\n static isFunction(value) {\n return (value && value.type === \"function\");\n }\n static isStruct(value) {\n return (value && value.type === \"struct\");\n }\n}\nexport class NamedFragment extends Fragment {\n constructor(guard, type, name, inputs) {\n super(guard, type, inputs);\n inputs = Object.freeze(inputs.slice());\n defineProperties(this, { name });\n }\n}\nfunction joinParams(format, params) {\n return \"(\" + params.map((p) => p.format(format)).join((format === FormatType.full) ? \", \" : \",\") + \")\";\n}\nexport class ErrorFragment extends NamedFragment {\n constructor(guard, name, inputs) {\n super(guard, FragmentType.error, name, inputs);\n }\n format(format = FormatType.sighash) {\n if (!FormatType[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n if (format === FormatType.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 const result = [];\n if (format !== FormatType.sighash) {\n result.push(\"error\");\n }\n result.push(this.name + joinParams(format, this.inputs));\n return result.join(\" \");\n }\n static fromString(text) {\n return ErrorFragment.fromTokens(lex(text));\n }\n static fromTokens(tokens) {\n const name = consumeName(\"error\", tokens);\n const inputs = consumeParams(tokens);\n consumeEoi(tokens);\n return new ErrorFragment(_guard, name, inputs);\n }\n}\nexport class EventFragment extends NamedFragment {\n constructor(guard, name, inputs, anonymous) {\n super(guard, FragmentType.event, name, inputs);\n defineProperties(this, { anonymous });\n }\n format(format = FormatType.sighash) {\n if (!FormatType[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n if (format === FormatType.json) {\n return JSON.stringify({\n type: \"event\",\n anonymous: this.anonymous,\n name: this.name,\n inputs: this.inputs.map((i) => JSON.parse(i.format(format)))\n });\n }\n const result = [];\n if (format !== FormatType.sighash) {\n result.push(\"event\");\n }\n result.push(this.name + joinParams(format, this.inputs));\n if (format !== FormatType.sighash && this.anonymous) {\n result.push(\"anonymous\");\n }\n return result.join(\" \");\n }\n static fromString(text) {\n return EventFragment.fromTokens(lex(text));\n }\n static fromTokens(tokens) {\n const name = consumeName(\"event\", tokens);\n const inputs = consumeParams(tokens, true);\n const anonymous = !!consumeKeywords(tokens, setify([\"anonymous\"])).has(\"anonymous\");\n consumeEoi(tokens);\n return new EventFragment(_guard, name, inputs, anonymous);\n }\n}\nexport class ConstructorFragment extends Fragment {\n constructor(guard, type, inputs, payable, gas) {\n super(guard, type, inputs);\n defineProperties(this, { payable, gas });\n }\n format(format = FormatType.sighash) {\n if (!FormatType[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n if (format === FormatType.sighash) {\n logger.throwError(\"cannot format a constructor for sighash\", \"UNSUPPORTED_OPERATION\", {\n operation: \"format(sighash)\"\n });\n }\n if (format === FormatType.json) {\n return JSON.stringify({\n type: \"constructor\",\n stateMutability: (this.payable ? \"payable\" : \"undefined\"),\n payable: this.payable,\n gas: ((this.gas != null) ? this.gas : undefined),\n inputs: this.inputs.map((i) => JSON.parse(i.format(format)))\n });\n }\n const result = [`constructor${joinParams(format, this.inputs)}`];\n result.push((this.payable) ? \"payable\" : \"nonpayable\");\n if (this.gas != null) {\n result.push(`@${this.gas.toString()}`);\n }\n return result.join(\" \");\n }\n static fromString(text) {\n return ConstructorFragment.fromTokens(lex(text));\n }\n static fromObject(obj) {\n throw new Error(\"TODO\");\n }\n static fromTokens(tokens) {\n consumeKeywords(tokens, setify([\"constructor\"]));\n const inputs = consumeParams(tokens);\n const payable = !!consumeKeywords(tokens, setify([\"payable\"])).has(\"payable\");\n const gas = consumeGas(tokens);\n consumeEoi(tokens);\n return new ConstructorFragment(_guard, FragmentType.constructor, inputs, payable, gas);\n }\n}\nexport class FunctionFragment extends NamedFragment {\n constructor(guard, name, stateMutability, inputs, outputs, gas) {\n super(guard, FragmentType.function, name, inputs);\n outputs = Object.freeze(outputs.slice());\n const constant = (stateMutability === \"view\" || stateMutability === \"pure\");\n const payable = (stateMutability === \"payable\");\n defineProperties(this, { constant, gas, outputs, payable, stateMutability });\n }\n format(format = FormatType.sighash) {\n if (!FormatType[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n if (format === FormatType.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 != null) ? this.gas : undefined),\n inputs: this.inputs.map((i) => JSON.parse(i.format(format))),\n outputs: this.outputs.map((o) => JSON.parse(o.format(format))),\n });\n }\n const result = [];\n if (format !== FormatType.sighash) {\n result.push(\"function\");\n }\n result.push(this.name + joinParams(format, this.inputs));\n if (format !== FormatType.sighash) {\n if (this.stateMutability !== \"nonpayable\") {\n result.push(this.stateMutability);\n }\n if (this.outputs && this.outputs.length) {\n result.push(\"returns\");\n result.push(joinParams(format, this.outputs));\n }\n if (this.gas != null) {\n result.push(`@${this.gas.toString()}`);\n }\n }\n return result.join(\" \");\n }\n static fromString(text) {\n return FunctionFragment.fromTokens(lex(text));\n }\n static fromTokens(tokens) {\n const name = consumeName(\"function\", tokens);\n const inputs = consumeParams(tokens);\n const mutability = consumeMutability(tokens);\n let outputs = [];\n if (consumeKeywords(tokens, setify([\"returns\"])).has(\"returns\")) {\n outputs = consumeParams(tokens);\n }\n const gas = consumeGas(tokens);\n consumeEoi(tokens);\n return new FunctionFragment(_guard, name, mutability, inputs, outputs, gas);\n }\n}\nexport class StructFragment extends NamedFragment {\n format() {\n throw new Error(\"@TODO\");\n }\n static fromString(text) {\n return StructFragment.fromTokens(lex(text));\n }\n static fromTokens(tokens) {\n const name = consumeName(\"struct\", tokens);\n const inputs = consumeParams(tokens);\n consumeEoi(tokens);\n return new StructFragment(_guard, FragmentType.struct, name, inputs);\n }\n}\n//# sourceMappingURL=fragments.js.map","export const version = \"@ethersproject/math@6.0.0-beta.3\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { logger } from \"./logger.js\";\n// IEEE 754 support 53-bits of mantissa\nconst maxValue = 0x1fffffffffffff;\nconst nibbles = \"0123456789abcdef\";\nconst BN_0 = BigInt(0);\n// Converts a value to a BigInt, including big endian data\nexport function toBigInt(_value) {\n if (_value instanceof Uint8Array) {\n let result = \"0x0\";\n for (const v of _value) {\n result += nibbles[v >> 4];\n result += nibbles[v & 0x0f];\n }\n return BigInt(result);\n }\n return logger.getBigInt(_value, \"value\");\n}\nexport function toNumber(_value) {\n const value = toBigInt(_value);\n if (value < -maxValue || value > maxValue) {\n logger.throwArgumentError(\"overflow\", \"value\", _value);\n }\n return Number(value);\n}\n// Converts value to hex, optionally padding on the left to width bytes\nexport function toHex(_value, _width) {\n const value = logger.getBigInt(_value, \"value\");\n if (value < 0) {\n throw new Error(\"cannot convert negative value to hex\");\n }\n let result = value.toString(16);\n if (_width == null) {\n // Ensure the value is of even length\n if (result.length % 2) {\n result = \"0\" + result;\n }\n }\n else {\n const width = logger.getNumber(_width, \"width\");\n if (width * 2 < result.length) {\n throw new Error(`value ${value} exceeds width ${width}`);\n }\n // Pad the value to the required width\n while (result.length < (width * 2)) {\n result = \"0\" + result;\n }\n }\n return \"0x\" + result;\n}\nexport function toArray(_value) {\n const value = logger.getBigInt(_value, \"value\");\n if (value < 0) {\n throw new Error(\"cannot convert negative value to hex\");\n }\n if (value === BN_0) {\n return new Uint8Array([]);\n }\n let hex = value.toString(16);\n if (hex.length % 2) {\n hex = \"0\" + hex;\n }\n const result = new Uint8Array(hex.length / 2);\n for (let i = 0; i < result.length; i++) {\n const offset = i * 2;\n result[i] = parseInt(hex.substring(offset, offset + 2), 16);\n }\n return result;\n}\n//# sourceMappingURL=convert.js.map","import { logger } from \"./logger.js\";\nconst BN_0 = BigInt(0);\nconst BN_1 = BigInt(1);\n// Convert a value from a twos-compliment value\nexport function fromTwos(_value, _width) {\n const value = logger.getBigInt(_value, \"value\");\n const width = BigInt(logger.getNumber(_width, \"width\"));\n // Top bit set; treat as a negative value\n if (value >> (width - BN_1)) {\n const mask = (BN_1 << width) - BN_1;\n return -(((~value) & mask) + BN_1);\n }\n return value;\n}\n// Convert value to a twos-compliment value\nexport function toTwos(_value, _width) {\n const value = logger.getBigInt(_value, \"value\");\n const width = BigInt(logger.getNumber(_width, \"width\"));\n if (value < BN_0) {\n const mask = (BN_1 << width) - BN_1;\n return ((~(-value)) & mask) + BN_1;\n }\n return value;\n}\nexport function mask(_value, _bits) {\n const value = logger.getBigInt(_value, \"value\");\n const bits = logger.getBigInt(_bits, \"bits\");\n return value & ((BN_1 << bits) - BN_1);\n}\n//# sourceMappingURL=maths.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _FixedNumber_instances, _FixedNumber_value, _FixedNumber_checkFormat;\nimport { toBigInt, toHex } from \"./convert.js\";\nimport { logger } from \"./logger.js\";\nimport { fromTwos, toTwos } from \"./maths.js\";\nconst _constructorGuard = {};\n//const Zero = BigInt(0);\nconst NegativeOne = BigInt(-1);\nfunction throwFault(message, fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value !== undefined) {\n params.value = value;\n }\n return logger.throwError(message, \"NUMERIC_FAULT\", params);\n}\n// Constant to pull zeros from for multipliers\nlet zeros = \"0\";\nwhile (zeros.length < 256) {\n zeros += zeros;\n}\n// Returns a string \"1\" followed by decimal \"0\"s\nfunction getMultiplier(decimals) {\n if (typeof (decimals) !== \"number\" || decimals < 0 || decimals > 256 || decimals % 1) {\n logger.throwArgumentError(\"invalid decimal length\", \"decimals\", decimals);\n }\n return BigInt(\"1\" + zeros.substring(0, decimals));\n}\nexport function formatFixed(_value, _decimals) {\n if (_decimals == null) {\n _decimals = 18;\n }\n let value = logger.getBigInt(_value, \"value\");\n const decimals = logger.getNumber(_decimals, \"decimals\");\n const multiplier = getMultiplier(decimals);\n const multiplierStr = String(multiplier);\n const negative = (value < 0);\n if (negative) {\n value *= NegativeOne;\n }\n let fraction = String(value % multiplier);\n // Make sure there are enough place-holders\n while (fraction.length < multiplierStr.length - 1) {\n fraction = \"0\" + fraction;\n }\n // Strip training 0\n while (fraction.length > 1 && fraction.substring(fraction.length - 1) === \"0\") {\n fraction = fraction.substring(0, fraction.length - 1);\n }\n let result = String(value / multiplier);\n if (multiplierStr.length !== 1) {\n result += \".\" + fraction;\n }\n if (negative) {\n result = \"-\" + result;\n }\n return result;\n}\nexport function parseFixed(value, _decimals) {\n if (_decimals == null) {\n _decimals = 18;\n }\n const decimals = logger.getNumber(_decimals, \"decimals\");\n const multiplier = getMultiplier(decimals);\n if (typeof (value) !== \"string\" || !value.match(/^-?[0-9.]+$/)) {\n logger.throwArgumentError(\"invalid decimal value\", \"value\", value);\n }\n // Is it negative?\n const negative = (value.substring(0, 1) === \"-\");\n if (negative) {\n value = value.substring(1);\n }\n if (value === \".\") {\n logger.throwArgumentError(\"missing value\", \"value\", value);\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 let whole = (comps[0] || \"0\"), fraction = (comps[1] || \"0\");\n // Trim trialing zeros\n while (fraction[fraction.length - 1] === \"0\") {\n fraction = fraction.substring(0, fraction.length - 1);\n }\n // Check the fraction doesn't exceed our decimals size\n if (fraction.length > String(multiplier).length - 1) {\n throwFault(\"fractional component exceeds decimals\", \"underflow\", \"parseFixed\");\n }\n // If decimals is 0, we have an empty string for fraction\n if (fraction === \"\") {\n fraction = \"0\";\n }\n // Fully pad the string with zeros to get to wei\n while (fraction.length < String(multiplier).length - 1) {\n fraction += \"0\";\n }\n const wholeValue = BigInt(whole);\n const fractionValue = BigInt(fraction);\n let wei = (wholeValue * multiplier) + fractionValue;\n if (negative) {\n wei *= NegativeOne;\n }\n return wei;\n}\nexport class FixedFormat {\n constructor(constructorGuard, signed, width, decimals) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedFormat constructor; use FixedFormat.from\", \"UNSUPPORTED_OPERATION\", {\n operation: \"new FixedFormat\"\n });\n }\n this.signed = signed;\n this.width = width;\n this.decimals = decimals;\n this.name = (signed ? \"\" : \"u\") + \"fixed\" + String(width) + \"x\" + String(decimals);\n this._multiplier = getMultiplier(decimals);\n Object.freeze(this);\n }\n static from(value) {\n if (value instanceof FixedFormat) {\n return value;\n }\n if (typeof (value) === \"number\") {\n value = `fixed128x${value}`;\n }\n let signed = true;\n let width = 128;\n let decimals = 18;\n if (typeof (value) === \"string\") {\n if (value === \"fixed\") {\n // defaults...\n }\n else if (value === \"ufixed\") {\n signed = false;\n }\n else {\n const match = value.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);\n if (!match) {\n return logger.throwArgumentError(\"invalid fixed format\", \"format\", value);\n }\n signed = (match[1] !== \"u\");\n width = parseInt(match[2]);\n decimals = parseInt(match[3]);\n }\n }\n else if (value) {\n const check = (key, type, defaultValue) => {\n if (value[key] == null) {\n return defaultValue;\n }\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 if (width % 8) {\n logger.throwArgumentError(\"invalid fixed format width (not byte aligned)\", \"format.width\", width);\n }\n if (decimals > 80) {\n logger.throwArgumentError(\"invalid fixed format (decimals too large)\", \"format.decimals\", decimals);\n }\n return new FixedFormat(_constructorGuard, signed, width, decimals);\n }\n}\nexport class FixedNumber {\n constructor(constructorGuard, hex, value, format) {\n _FixedNumber_instances.add(this);\n //#hex: string;\n _FixedNumber_value.set(this, void 0);\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot use FixedNumber constructor; use FixedNumber.from\", \"UNSUPPORTED_OPERATION\", {\n operation: \"new FixedFormat\"\n });\n }\n this.format = FixedFormat.from(format);\n //this.#hex = hex;\n __classPrivateFieldSet(this, _FixedNumber_value, value, \"f\");\n this._isFixedNumber = true;\n Object.freeze(this);\n }\n addUnsafe(other) {\n __classPrivateFieldGet(this, _FixedNumber_instances, \"m\", _FixedNumber_checkFormat).call(this, other);\n const a = parseFixed(__classPrivateFieldGet(this, _FixedNumber_value, \"f\"), this.format.decimals);\n const b = parseFixed(__classPrivateFieldGet(other, _FixedNumber_value, \"f\"), other.format.decimals);\n return FixedNumber.fromValue(a + b, this.format.decimals, this.format);\n }\n subUnsafe(other) {\n __classPrivateFieldGet(this, _FixedNumber_instances, \"m\", _FixedNumber_checkFormat).call(this, other);\n const a = parseFixed(__classPrivateFieldGet(this, _FixedNumber_value, \"f\"), this.format.decimals);\n const b = parseFixed(__classPrivateFieldGet(other, _FixedNumber_value, \"f\"), other.format.decimals);\n return FixedNumber.fromValue(a - b, this.format.decimals, this.format);\n }\n mulUnsafe(other) {\n __classPrivateFieldGet(this, _FixedNumber_instances, \"m\", _FixedNumber_checkFormat).call(this, other);\n const a = parseFixed(__classPrivateFieldGet(this, _FixedNumber_value, \"f\"), this.format.decimals);\n const b = parseFixed(__classPrivateFieldGet(other, _FixedNumber_value, \"f\"), other.format.decimals);\n return FixedNumber.fromValue((a * b) / this.format._multiplier, this.format.decimals, this.format);\n }\n divUnsafe(other) {\n __classPrivateFieldGet(this, _FixedNumber_instances, \"m\", _FixedNumber_checkFormat).call(this, other);\n const a = parseFixed(__classPrivateFieldGet(this, _FixedNumber_value, \"f\"), this.format.decimals);\n const b = parseFixed(__classPrivateFieldGet(other, _FixedNumber_value, \"f\"), other.format.decimals);\n return FixedNumber.fromValue((a * this.format._multiplier) / b, this.format.decimals, this.format);\n }\n floor() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (this.isNegative() && hasFraction) {\n result = result.subUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n ceiling() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (!this.isNegative() && hasFraction) {\n result = result.addUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n // @TODO: Support other rounding algorithms\n round(decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n // If we are already in range, we're done\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n if (decimals < 0 || decimals > 80 || (decimals % 1)) {\n logger.throwArgumentError(\"invalid decimal count\", \"decimals\", decimals);\n }\n if (comps[1].length <= decimals) {\n return this;\n }\n const factor = FixedNumber.from(\"1\" + zeros.substring(0, decimals), this.format);\n const bump = BUMP.toFormat(this.format);\n return this.mulUnsafe(factor).addUnsafe(bump).floor().divUnsafe(factor);\n }\n isZero() {\n return (__classPrivateFieldGet(this, _FixedNumber_value, \"f\") === \"0.0\" || __classPrivateFieldGet(this, _FixedNumber_value, \"f\") === \"0\");\n }\n isNegative() {\n return (__classPrivateFieldGet(this, _FixedNumber_value, \"f\")[0] === \"-\");\n }\n toString() { return __classPrivateFieldGet(this, _FixedNumber_value, \"f\"); }\n toHexString(_width) {\n throw new Error(\"TODO\");\n /*\n return toHex();\n if (width == null) { return this.#hex; }\n\n const width = logger.getNumeric(_width);\n if (width % 8) { logger.throwArgumentError(\"invalid byte width\", \"width\", width); }\n\n const hex = BigNumber.from(this.#hex).fromTwos(this.format.width).toTwos(width).toHexString();\n return zeroPadLeft(hex, width / 8);\n */\n }\n toUnsafeFloat() { return parseFloat(this.toString()); }\n toFormat(format) {\n return FixedNumber.fromString(__classPrivateFieldGet(this, _FixedNumber_value, \"f\"), format);\n }\n static fromValue(value, decimals = 0, format = \"fixed\") {\n return FixedNumber.fromString(formatFixed(value, decimals), FixedFormat.from(format));\n }\n static fromString(value, format = \"fixed\") {\n const fixedFormat = FixedFormat.from(format);\n const numeric = parseFixed(value, fixedFormat.decimals);\n if (!fixedFormat.signed && numeric < 0) {\n throwFault(\"unsigned value cannot be negative\", \"overflow\", \"value\", value);\n }\n const hex = (function () {\n if (fixedFormat.signed) {\n return toHex(toTwos(numeric, fixedFormat.width));\n }\n return toHex(numeric, fixedFormat.width / 8);\n })();\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static fromBytes(_value, format = \"fixed\") {\n const value = logger.getBytes(_value, \"value\");\n const fixedFormat = FixedFormat.from(format);\n if (value.length > fixedFormat.width / 8) {\n throw new Error(\"overflow\");\n }\n let numeric = toBigInt(value);\n if (fixedFormat.signed) {\n numeric = fromTwos(numeric, fixedFormat.width);\n }\n const hex = toHex(toTwos(numeric, (fixedFormat.signed ? 0 : 1) + fixedFormat.width));\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static from(value, format) {\n if (typeof (value) === \"string\") {\n return FixedNumber.fromString(value, format);\n }\n if (value instanceof Uint8Array) {\n return FixedNumber.fromBytes(value, format);\n }\n try {\n return FixedNumber.fromValue(value, 0, format);\n }\n catch (error) {\n // Allow NUMERIC_FAULT to bubble up\n if (error.code !== \"INVALID_ARGUMENT\") {\n throw error;\n }\n }\n return logger.throwArgumentError(\"invalid FixedNumber value\", \"value\", value);\n }\n static isFixedNumber(value) {\n return !!(value && value._isFixedNumber);\n }\n}\n_FixedNumber_value = new WeakMap(), _FixedNumber_instances = new WeakSet(), _FixedNumber_checkFormat = function _FixedNumber_checkFormat(other) {\n if (this.format.name !== other.format.name) {\n logger.throwArgumentError(\"incompatible format; use fixedNumber.toFormat\", \"other\", other);\n }\n};\nconst ONE = FixedNumber.from(1);\nconst BUMP = FixedNumber.from(\"0.5\");\n//# sourceMappingURL=fixednumber.js.map","import { toBigInt, toHex } from \"./convert.js\";\nimport { logger } from \"./logger.js\";\nconst Alphabet = \"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\";\nlet Lookup = null;\nfunction getAlpha(letter) {\n if (Lookup == null) {\n Lookup = {};\n for (let i = 0; i < Alphabet.length; i++) {\n Lookup[Alphabet[i]] = BigInt(i);\n }\n }\n const result = Lookup[letter];\n if (result == null) {\n logger.throwArgumentError(`invalid base58 value`, \"letter\", letter);\n }\n return result;\n}\nconst BN_0 = BigInt(0);\nconst BN_58 = BigInt(58);\nexport function encodeBase58(_value) {\n let value = toBigInt(logger.getBytes(_value));\n let result = \"\";\n while (value) {\n result = Alphabet[Number(value % BN_58)] + result;\n value /= BN_58;\n }\n return result;\n}\nexport function decodeBase58(value) {\n let result = BN_0;\n for (let i = 0; i < value.length; i++) {\n result *= BN_58;\n result += getAlpha(value[i]);\n }\n return toHex(result);\n}\n//# sourceMappingURL=base58.js.map","import { formatFixed, parseFixed } from \"./fixednumber.js\";\nimport { logger } from \"./logger.js\";\nconst names = [\n \"wei\",\n \"kwei\",\n \"mwei\",\n \"gwei\",\n \"szabo\",\n \"finney\",\n \"ether\",\n];\nexport function formatUnits(value, unit) {\n if (typeof (unit) === \"string\") {\n const index = names.indexOf(unit);\n if (index === -1) {\n logger.throwArgumentError(\"invalid unit\", \"unit\", unit);\n }\n unit = 3 * index;\n }\n return formatFixed(value, (unit != null) ? unit : 18);\n}\nexport function parseUnits(value, unit) {\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(\"value must be a string\", \"value\", value);\n }\n if (typeof (unit) === \"string\") {\n const index = names.indexOf(unit);\n if (index === -1) {\n logger.throwArgumentError(\"invalid unit\", \"unit\", unit);\n }\n unit = 3 * index;\n }\n return parseFixed(value, (unit != null) ? unit : 18);\n}\nexport function formatEther(wei) {\n return formatUnits(wei, 18);\n}\nexport function parseEther(ether) {\n return parseUnits(ether, 18);\n}\n//# sourceMappingURL=units.js.map","export function isHexString(value, length) {\n if (typeof (value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n if (typeof (length) === \"number\" && value.length !== 2 + 2 * length) {\n return false;\n }\n if (length === true && (value.length % 2) !== 0) {\n return false;\n }\n return true;\n}\nexport function isBytesLike(value) {\n return (isHexString(value, true) || (value instanceof Uint8Array));\n}\n//# sourceMappingURL=check.js.map","export const version = \"@ethersproject/bytes@6.0.0-beta.3\";\n//# sourceMappingURL=_version.js.map","import { version } from \"./_version.js\";\nimport { Logger } from \"@ethersproject/logger\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { isBytesLike } from \"./check.js\";\nimport { logger } from \"./logger.js\";\nlet BN_8 = null;\nlet BN_255 = null;\ntry {\n BN_8 = BigInt(\"8\");\n BN_255 = BigInt(\"255\");\n}\ncatch (error) {\n console.log(\"Unsupported bigint\", error);\n}\nfunction isHexable(value) {\n return (value && typeof (value.toHexString) === \"function\");\n}\nexport function arrayify(data) {\n if (data == null) {\n logger.throwArgumentError(\"cannot arrayify nullish\", \"data\", data);\n }\n if (typeof (data) === \"number\") {\n let v = logger.getNumber(data, \"data\");\n const result = [];\n while (v) {\n result.unshift(v & 0xff);\n v = parseInt(String(v / 256));\n }\n if (result.length === 0) {\n result.push(0);\n }\n return new Uint8Array(result);\n }\n if (BN_8 && typeof (data) === \"bigint\") {\n const result = [];\n while (data) {\n result.unshift(Number(data & BN_255));\n data >>= BN_8;\n }\n if (result.length === 0) {\n result.push(0);\n }\n return new Uint8Array(result);\n }\n if (isHexable(data)) {\n return arrayify(data.toHexString());\n }\n if (typeof (data) === \"string\") {\n let hex = data;\n //if (options.allowMissingPrefix && hex.substring(0, 2) !== \"0x\") {\n // hex = \"0x\" + hex;\n //}\n if (!hex.match(/^0x[0-9a-f]*$/i)) {\n throw new RangeError(`invalid hex data string (${JSON.stringify(data)})`);\n }\n const result = [];\n for (let i = 2; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n return new Uint8Array(result);\n }\n if (data instanceof Uint8Array) {\n return new Uint8Array(data);\n }\n throw new TypeError(`cannot arrayify ${JSON.stringify(data)}`);\n}\nexport function _noCopyArrayify(data) {\n if (!isBytesLike(data)) {\n logger.throwArgumentError(\"invalid BytesLike value\", \"data\", data);\n } // @TODO: ArgumentE>\n if (data instanceof Uint8Array) {\n return data;\n }\n return arrayify(data);\n}\n//# sourceMappingURL=array.js.map","import { logger } from \"./logger.js\";\nexport function decodeBase64(textData) {\n return new Uint8Array(Buffer.from(textData, \"base64\"));\n}\n;\nexport function encodeBase64(data) {\n return Buffer.from(logger.getBytes(data, \"data\")).toString(\"base64\");\n}\n//# sourceMappingURL=base64.js.map","import { arrayify, _noCopyArrayify } from \"./array.js\";\nconst HexCharacters = \"0123456789abcdef\";\nexport function hexlify(data) {\n const bytes = _noCopyArrayify(data);\n let result = \"0x\";\n for (let i = 0; i < bytes.length; i++) {\n const v = bytes[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n}\nexport function quantity(value) {\n let result = hexlify(arrayify(value)).substring(2);\n while (result.substring(0, 1) === \"0\") {\n result = result.substring(1);\n }\n if (result === \"\") {\n result = \"0\";\n }\n return \"0x\" + result;\n}\n//# sourceMappingURL=hex.js.map","import { _noCopyArrayify } from \"./array.js\";\nimport { isHexString } from \"./check.js\";\nimport { hexlify } from \"./hex.js\";\nimport { logger } from \"./logger.js\";\nexport function concat(datas) {\n return \"0x\" + datas.map((d) => hexlify(d).substring(2)).join(\"\");\n}\nexport function dataLength(data) {\n if (isHexString(data, true)) {\n return (data.length - 2) / 2;\n }\n return _noCopyArrayify(data).length;\n}\nexport function dataSlice(data, start, end) {\n const bytes = _noCopyArrayify(data);\n if (end != null && end > bytes.length) {\n logger.throwError(\"cannot slice beyond data bounds\", \"BUFFER_OVERRUN\", {\n buffer: bytes, length: bytes.length, offset: end\n });\n }\n return hexlify(bytes.slice((start == null) ? 0 : start, (end == null) ? bytes.length : end));\n}\nexport function stripZerosLeft(data) {\n let bytes = hexlify(data).substring(2);\n while (bytes.substring(0, 2) == \"00\") {\n bytes = bytes.substring(2);\n }\n return \"0x\" + bytes;\n}\n//# sourceMappingURL=data.js.map","import { _noCopyArrayify } from \"./array.js\";\nimport { hexlify } from \"./hex.js\";\nimport { logger } from \"./logger.js\";\nfunction zeroPad(data, length, left) {\n const bytes = _noCopyArrayify(data);\n if (length < bytes.length) {\n logger.throwError(\"padding exceeds data length\", \"BUFFER_OVERRUN\", {\n buffer: new Uint8Array(bytes),\n length: length,\n offset: length + 1\n });\n }\n const result = new Uint8Array(length);\n result.fill(0);\n if (left) {\n result.set(bytes, length - bytes.length);\n }\n else {\n result.set(bytes, 0);\n }\n return hexlify(result);\n}\nexport function zeroPadValue(data, length) {\n return zeroPad(data, length, true);\n}\nexport function zeroPadBytes(data, length) {\n return zeroPad(data, length, false);\n}\n//# sourceMappingURL=pad.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Result_instances, _Result_indices, _Result_throwError, _Writer_instances, _Writer_data, _Writer_dataLength, _Writer_writeData, _Reader_instances, _Reader_data, _Reader_offset, _Reader_peekBytes;\nimport { toArray, toBigInt, toNumber } from \"@ethersproject/math\";\nimport { arrayify, concat, hexlify } from \"@ethersproject/bytes\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { logger } from \"../logger.js\";\nexport const WordSize = 32;\nconst Padding = new Uint8Array(WordSize);\n// Properties used to immediate pass through to the underlying object\n// - `then` is used to detect if an object is a Promise for await\nconst passProperties = [\"then\"];\nconst _guard = {};\nexport class Result extends Array {\n constructor(guard, items, keys) {\n logger.assertPrivate(guard, _guard, \"Result\");\n super(...items);\n _Result_instances.add(this);\n _Result_indices.set(this, void 0);\n // Name lookup table\n __classPrivateFieldSet(this, _Result_indices, new Map(), \"f\");\n if (keys) {\n keys.forEach((key, index) => {\n if (key == null) {\n return;\n }\n if (__classPrivateFieldGet(this, _Result_indices, \"f\").has(key)) {\n (__classPrivateFieldGet(this, _Result_indices, \"f\").get(key)).push(index);\n }\n else {\n __classPrivateFieldGet(this, _Result_indices, \"f\").set(key, [index]);\n }\n });\n }\n Object.freeze(this);\n return new Proxy(this, {\n get: (target, prop, receiver) => {\n if (typeof (prop) === \"string\") {\n if (prop.match(/^[0-9]+$/)) {\n const index = logger.getNumber(prop, \"%index\");\n if (index < 0 || index >= this.length) {\n throw new RangeError(\"out of result range\");\n }\n const item = target[index];\n if (item instanceof Error) {\n __classPrivateFieldGet(this, _Result_instances, \"m\", _Result_throwError).call(this, `index ${index}`, item);\n }\n return item;\n }\n // Pass important checks (like `then` for Promise) through\n if (prop in target || passProperties.indexOf(prop) >= 0) {\n return Reflect.get(target, prop, receiver);\n }\n // Something that could be a result keyword value\n if (!(prop in target)) {\n return target.getValue(prop);\n }\n }\n return Reflect.get(target, prop, receiver);\n }\n });\n }\n slice(start, end) {\n if (start == null) {\n start = 0;\n }\n if (end == null) {\n end = this.length;\n }\n const result = [];\n for (let i = start; i < end; i++) {\n let value;\n try {\n value = this[i];\n }\n catch (error) {\n value = error.error;\n }\n result.push(value);\n }\n return result;\n }\n getValue(name) {\n const index = __classPrivateFieldGet(this, _Result_indices, \"f\").get(name);\n if (index != null && index.length === 1) {\n const item = this[index[0]];\n if (item instanceof Error) {\n __classPrivateFieldGet(this, _Result_instances, \"m\", _Result_throwError).call(this, `property ${JSON.stringify(name)}`, item);\n }\n return item;\n }\n throw new Error(`no named parameter: ${JSON.stringify(name)}`);\n }\n static fromItems(items, keys) {\n return new Result(_guard, items, keys);\n }\n}\n_Result_indices = new WeakMap(), _Result_instances = new WeakSet(), _Result_throwError = function _Result_throwError(name, error) {\n const wrapped = new Error(`deferred error during ABI decoding triggered accessing ${name}`);\n wrapped.error = error;\n throw wrapped;\n};\nexport function checkResultErrors(result) {\n // Find the first error (if any)\n const errors = [];\n const checkErrors = function (path, object) {\n if (!Array.isArray(object)) {\n return;\n }\n for (let key in object) {\n const childPath = path.slice();\n childPath.push(key);\n try {\n checkErrors(childPath, object[key]);\n }\n catch (error) {\n errors.push({ path: childPath, error: error });\n }\n }\n };\n checkErrors([], result);\n return errors;\n}\nfunction getValue(value) {\n let bytes = toArray(value);\n if (bytes.length > WordSize) {\n logger.throwError(\"value out-of-bounds\", \"BUFFER_OVERRUN\", {\n buffer: bytes,\n length: WordSize,\n offset: bytes.length\n });\n }\n if (bytes.length !== WordSize) {\n bytes = arrayify(concat([Padding.slice(bytes.length % WordSize), bytes]));\n }\n return bytes;\n}\nexport class Coder {\n constructor(name, type, localName, dynamic) {\n defineProperties(this, { name, type, localName, dynamic }, {\n name: \"string\", type: \"string\", localName: \"string\", dynamic: \"boolean\"\n });\n }\n _throwError(message, value) {\n return logger.throwArgumentError(message, this.localName, value);\n }\n}\nexport class Writer {\n constructor() {\n _Writer_instances.add(this);\n // An array of WordSize lengthed objects to concatenation\n _Writer_data.set(this, void 0);\n _Writer_dataLength.set(this, void 0);\n __classPrivateFieldSet(this, _Writer_data, [], \"f\");\n __classPrivateFieldSet(this, _Writer_dataLength, 0, \"f\");\n }\n get data() {\n return concat(__classPrivateFieldGet(this, _Writer_data, \"f\"));\n }\n get length() { return __classPrivateFieldGet(this, _Writer_dataLength, \"f\"); }\n appendWriter(writer) {\n return __classPrivateFieldGet(this, _Writer_instances, \"m\", _Writer_writeData).call(this, arrayify(writer.data));\n }\n // Arrayish item; pad on the right to *nearest* WordSize\n writeBytes(value) {\n let bytes = arrayify(value);\n const paddingOffset = bytes.length % WordSize;\n if (paddingOffset) {\n bytes = arrayify(concat([bytes, Padding.slice(paddingOffset)]));\n }\n return __classPrivateFieldGet(this, _Writer_instances, \"m\", _Writer_writeData).call(this, bytes);\n }\n // Numeric item; pad on the left *to* WordSize\n writeValue(value) {\n return __classPrivateFieldGet(this, _Writer_instances, \"m\", _Writer_writeData).call(this, getValue(value));\n }\n // Inserts a numeric place-holder, returning a callback that can\n // be used to asjust the value later\n writeUpdatableValue() {\n const offset = __classPrivateFieldGet(this, _Writer_data, \"f\").length;\n __classPrivateFieldGet(this, _Writer_data, \"f\").push(Padding);\n __classPrivateFieldSet(this, _Writer_dataLength, __classPrivateFieldGet(this, _Writer_dataLength, \"f\") + WordSize, \"f\");\n return (value) => {\n __classPrivateFieldGet(this, _Writer_data, \"f\")[offset] = getValue(value);\n };\n }\n}\n_Writer_data = new WeakMap(), _Writer_dataLength = new WeakMap(), _Writer_instances = new WeakSet(), _Writer_writeData = function _Writer_writeData(data) {\n __classPrivateFieldGet(this, _Writer_data, \"f\").push(data);\n __classPrivateFieldSet(this, _Writer_dataLength, __classPrivateFieldGet(this, _Writer_dataLength, \"f\") + data.length, \"f\");\n return data.length;\n};\nexport class Reader {\n constructor(data, allowLoose) {\n _Reader_instances.add(this);\n _Reader_data.set(this, void 0);\n _Reader_offset.set(this, void 0);\n defineProperties(this, { allowLoose: !!allowLoose });\n __classPrivateFieldSet(this, _Reader_data, arrayify(data), \"f\");\n __classPrivateFieldSet(this, _Reader_offset, 0, \"f\");\n }\n get data() { return hexlify(__classPrivateFieldGet(this, _Reader_data, \"f\")); }\n get dataLength() { return __classPrivateFieldGet(this, _Reader_data, \"f\").length; }\n get consumed() { return __classPrivateFieldGet(this, _Reader_offset, \"f\"); }\n get bytes() { return new Uint8Array(__classPrivateFieldGet(this, _Reader_data, \"f\")); }\n // Create a sub-reader with the same underlying data, but offset\n subReader(offset) {\n return new Reader(__classPrivateFieldGet(this, _Reader_data, \"f\").slice(__classPrivateFieldGet(this, _Reader_offset, \"f\") + offset), this.allowLoose);\n }\n // Read bytes\n readBytes(length, loose) {\n let bytes = __classPrivateFieldGet(this, _Reader_instances, \"m\", _Reader_peekBytes).call(this, 0, length, !!loose);\n __classPrivateFieldSet(this, _Reader_offset, __classPrivateFieldGet(this, _Reader_offset, \"f\") + bytes.length, \"f\");\n // @TODO: Make sure the length..end bytes are all 0?\n return bytes.slice(0, length);\n }\n // Read a numeric values\n readValue() {\n return toBigInt(this.readBytes(WordSize));\n }\n readIndex() {\n return toNumber(this.readBytes(WordSize));\n }\n}\n_Reader_data = new WeakMap(), _Reader_offset = new WeakMap(), _Reader_instances = new WeakSet(), _Reader_peekBytes = function _Reader_peekBytes(offset, length, loose) {\n let alignedLength = Math.ceil(length / WordSize) * WordSize;\n if (__classPrivateFieldGet(this, _Reader_offset, \"f\") + alignedLength > __classPrivateFieldGet(this, _Reader_data, \"f\").length) {\n if (this.allowLoose && loose && __classPrivateFieldGet(this, _Reader_offset, \"f\") + length <= __classPrivateFieldGet(this, _Reader_data, \"f\").length) {\n alignedLength = length;\n }\n else {\n logger.throwError(\"data out-of-bounds\", \"BUFFER_OVERRUN\", {\n buffer: arrayify(__classPrivateFieldGet(this, _Reader_data, \"f\")),\n length: __classPrivateFieldGet(this, _Reader_data, \"f\").length,\n offset: __classPrivateFieldGet(this, _Reader_offset, \"f\") + alignedLength\n });\n }\n }\n return __classPrivateFieldGet(this, _Reader_data, \"f\").slice(__classPrivateFieldGet(this, _Reader_offset, \"f\"), __classPrivateFieldGet(this, _Reader_offset, \"f\") + alignedLength);\n};\n//# sourceMappingURL=abstract-coder.js.map","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// The import here is via the package name. This is to ensure\n// that exports mapping/resolution does fall into place.\nimport { crypto } from '@noble/hashes/crypto';\n// Cast array to different type\nexport const u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n// Cast array to view\nexport const createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word, shift) => (word << (32 - shift)) | (word >>> shift);\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\n// There is almost no big endian hardware, but js typed arrays uses platform specific endianess.\n// So, just to be sure not to corrupt anything.\nif (!isLE)\n throw new Error('Non little-endian hardware is not supported');\nconst hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xde, 0xad, 0xbe, 0xef]))\n */\nexport function bytesToHex(uint8a) {\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < uint8a.length; i++) {\n hex += hexes[uint8a[i]];\n }\n return hex;\n}\n/**\n * @example hexToBytes('deadbeef')\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToBytes: expected string, got ' + typeof hex);\n }\n if (hex.length % 2)\n throw new Error('hexToBytes: received invalid unpadded hex');\n const array = new Uint8Array(hex.length / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte))\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\n// Currently avoid insertion of polyfills with packers (browserify/webpack/etc)\n// But setTimeout is pretty slow, maybe worth to investigate howto do minimal polyfill here\nexport const nextTick = (() => {\n const nodeRequire = typeof module !== 'undefined' &&\n typeof module.require === 'function' &&\n module.require.bind(module);\n try {\n if (nodeRequire) {\n const { setImmediate } = nodeRequire('timers');\n return () => new Promise((resolve) => setImmediate(resolve));\n }\n }\n catch (e) { }\n return () => new Promise((resolve) => setTimeout(resolve, 0));\n})();\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await nextTick();\n ts += diff;\n }\n}\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string') {\n throw new TypeError(`utf8ToBytes expected string, got ${typeof str}`);\n }\n return new TextEncoder().encode(str);\n}\nexport function toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n if (!(data instanceof Uint8Array))\n throw new TypeError(`Expected input type is Uint8Array (got ${typeof data})`);\n return data;\n}\n/**\n * Concats Uint8Array-s into one; like `Buffer.concat([buf1, buf2])`\n * @example concatBytes(buf1, buf2)\n */\nexport function concatBytes(...arrays) {\n if (!arrays.every((a) => a instanceof Uint8Array))\n throw new Error('Uint8Array list expected');\n if (arrays.length === 1)\n return arrays[0];\n const length = arrays.reduce((a, arr) => a + arr.length, 0);\n const result = new Uint8Array(length);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const arr = arrays[i];\n result.set(arr, pad);\n pad += arr.length;\n }\n return result;\n}\nexport function assertNumber(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error(`Wrong positive integer: ${n}`);\n}\nexport function assertBool(b) {\n if (typeof b !== 'boolean') {\n throw new Error(`Expected boolean, not ${b}`);\n }\n}\nexport function assertBytes(bytes, ...lengths) {\n if (bytes instanceof Uint8Array && (!lengths.length || lengths.includes(bytes.length))) {\n return;\n }\n throw new TypeError(`Expected ${lengths} bytes, not ${typeof bytes} with length=${bytes.length}`);\n}\nexport function assertHash(hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n assertNumber(hash.outputLen);\n assertNumber(hash.blockLen);\n}\n// For runtime check if class implements interface\nexport class Hash {\n // Safe version that clones internal state\n clone() {\n return this._cloneInto();\n }\n}\n// Check if object doens't have custom constructor (like Uint8Array/Array)\nconst isPlainObject = (obj) => Object.prototype.toString.call(obj) === '[object Object]' && obj.constructor === Object;\nexport function checkOpts(def, _opts) {\n if (_opts !== undefined && (typeof _opts !== 'object' || !isPlainObject(_opts)))\n throw new TypeError('Options should be object or undefined');\n const opts = Object.assign(def, _opts);\n return opts;\n}\nexport function wrapConstructor(hashConstructor) {\n const hashC = (message) => hashConstructor().update(toBytes(message)).digest();\n const tmp = hashConstructor();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashConstructor();\n return hashC;\n}\nexport function wrapConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\n/**\n * Secure PRNG\n */\nexport function randomBytes(bytesLength = 32) {\n if (crypto.web) {\n return crypto.web.getRandomValues(new Uint8Array(bytesLength));\n }\n else if (crypto.node) {\n return new Uint8Array(crypto.node.randomBytes(bytesLength).buffer);\n }\n else {\n throw new Error(\"The environment doesn't have randomBytes function\");\n }\n}\n","import { assertHash, Hash, toBytes } from './utils.js';\n// HMAC (RFC 2104)\nclass HMAC extends Hash {\n constructor(hash, _key) {\n super();\n this.finished = false;\n this.destroyed = false;\n assertHash(hash);\n const key = toBytes(_key);\n this.iHash = hash.create();\n if (!(this.iHash instanceof Hash))\n throw new TypeError('Expected instance of class which extends utils.Hash');\n const blockLen = (this.blockLen = this.iHash.blockLen);\n this.outputLen = this.iHash.outputLen;\n const pad = new Uint8Array(blockLen);\n // blockLen can be bigger than outputLen\n pad.set(key.length > this.iHash.blockLen ? hash.create().update(key).digest() : key);\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36;\n this.iHash.update(pad);\n // By doing update (processing of first block) of outer hash here we can re-use it between multiple calls via clone\n this.oHash = hash.create();\n // Undo internal XOR && apply outer XOR\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36 ^ 0x5c;\n this.oHash.update(pad);\n pad.fill(0);\n }\n update(buf) {\n if (this.destroyed)\n throw new Error('instance is destroyed');\n this.iHash.update(buf);\n return this;\n }\n digestInto(out) {\n if (this.destroyed)\n throw new Error('instance is destroyed');\n if (!(out instanceof Uint8Array) || out.length !== this.outputLen)\n throw new Error('HMAC: Invalid output buffer');\n if (this.finished)\n throw new Error('digest() was already called');\n this.finished = true;\n this.iHash.digestInto(out);\n this.oHash.update(out);\n this.oHash.digestInto(out);\n this.destroy();\n }\n digest() {\n const out = new Uint8Array(this.oHash.outputLen);\n this.digestInto(out);\n return out;\n }\n _cloneInto(to) {\n // Create new instance without calling constructor since key already in state and we don't know it.\n to || (to = Object.create(Object.getPrototypeOf(this), {}));\n const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n to = to;\n to.finished = finished;\n to.destroyed = destroyed;\n to.blockLen = blockLen;\n to.outputLen = outputLen;\n to.oHash = oHash._cloneInto(to.oHash);\n to.iHash = iHash._cloneInto(to.iHash);\n return to;\n }\n destroy() {\n this.destroyed = true;\n this.oHash.destroy();\n this.iHash.destroy();\n }\n}\n/**\n * HMAC: RFC2104 message authentication code.\n * @param hash - function that would be used e.g. sha256\n * @param key - message key\n * @param message - message data\n */\nexport const hmac = (hash, key, message) => new HMAC(hash, key).update(message).digest();\nhmac.create = (hash, key) => new HMAC(hash, key);\n","import { hmac } from './hmac.js';\n// prettier-ignore\nimport { createView, toBytes, assertNumber, assertHash, checkOpts, asyncLoop } from './utils.js';\n// Common prologue and epilogue for sync/async functions\nfunction pbkdf2Init(hash, _password, _salt, _opts) {\n assertHash(hash);\n const opts = checkOpts({ dkLen: 32, asyncTick: 10 }, _opts);\n const { c, dkLen, asyncTick } = opts;\n assertNumber(c);\n assertNumber(dkLen);\n assertNumber(asyncTick);\n if (c < 1)\n throw new Error('PBKDF2: iterations (c) should be >= 1');\n const password = toBytes(_password);\n const salt = toBytes(_salt);\n // DK = PBKDF2(PRF, Password, Salt, c, dkLen);\n const DK = new Uint8Array(dkLen);\n // U1 = PRF(Password, Salt + INT_32_BE(i))\n const PRF = hmac.create(hash, password);\n const PRFSalt = PRF._cloneInto().update(salt);\n return { c, dkLen, asyncTick, DK, PRF, PRFSalt };\n}\nfunction pbkdf2Output(PRF, PRFSalt, DK, prfW, u) {\n PRF.destroy();\n PRFSalt.destroy();\n if (prfW)\n prfW.destroy();\n u.fill(0);\n return DK;\n}\n/**\n * PBKDF2-HMAC: RFC 2898 key derivation function\n * @param hash - hash function that would be used e.g. sha256\n * @param password - password from which a derived key is generated\n * @param salt - cryptographic salt\n * @param opts - {c, dkLen} where c is work factor and dkLen is output message size\n */\nexport function pbkdf2(hash, password, salt, opts) {\n const { c, dkLen, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts);\n let prfW; // Working copy\n const arr = new Uint8Array(4);\n const view = createView(arr);\n const u = new Uint8Array(PRF.outputLen);\n // DK = T1 + T2 + ⋯ + Tdklen/hlen\n for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) {\n // Ti = F(Password, Salt, c, i)\n const Ti = DK.subarray(pos, pos + PRF.outputLen);\n view.setInt32(0, ti, false);\n // F(Password, Salt, c, i) = U1 ^ U2 ^ ⋯ ^ Uc\n // U1 = PRF(Password, Salt + INT_32_BE(i))\n (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u);\n Ti.set(u.subarray(0, Ti.length));\n for (let ui = 1; ui < c; ui++) {\n // Uc = PRF(Password, Uc−1)\n PRF._cloneInto(prfW).update(u).digestInto(u);\n for (let i = 0; i < Ti.length; i++)\n Ti[i] ^= u[i];\n }\n }\n return pbkdf2Output(PRF, PRFSalt, DK, prfW, u);\n}\nexport async function pbkdf2Async(hash, password, salt, opts) {\n const { c, dkLen, asyncTick, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts);\n let prfW; // Working copy\n const arr = new Uint8Array(4);\n const view = createView(arr);\n const u = new Uint8Array(PRF.outputLen);\n // DK = T1 + T2 + ⋯ + Tdklen/hlen\n for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) {\n // Ti = F(Password, Salt, c, i)\n const Ti = DK.subarray(pos, pos + PRF.outputLen);\n view.setInt32(0, ti, false);\n // F(Password, Salt, c, i) = U1 ^ U2 ^ ⋯ ^ Uc\n // U1 = PRF(Password, Salt + INT_32_BE(i))\n (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u);\n Ti.set(u.subarray(0, Ti.length));\n await asyncLoop(c - 1, asyncTick, (i) => {\n // Uc = PRF(Password, Uc−1)\n PRF._cloneInto(prfW).update(u).digestInto(u);\n for (let i = 0; i < Ti.length; i++)\n Ti[i] ^= u[i];\n });\n }\n return pbkdf2Output(PRF, PRFSalt, DK, prfW, u);\n}\n","import { Hash, createView, toBytes } from './utils.js';\n// Polyfill for Safari 14\nfunction setBigUint64(view, byteOffset, value, isLE) {\n if (typeof view.setBigUint64 === 'function')\n return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n// Base SHA2 class (RFC 6234)\nexport class SHA2 extends Hash {\n constructor(blockLen, outputLen, padOffset, isLE) {\n super();\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.padOffset = padOffset;\n this.isLE = isLE;\n this.finished = false;\n this.length = 0;\n this.pos = 0;\n this.destroyed = false;\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data) {\n if (this.destroyed)\n throw new Error('instance is destroyed');\n const { view, buffer, blockLen, finished } = this;\n if (finished)\n throw new Error('digest() was already called');\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen)\n this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out) {\n if (this.destroyed)\n throw new Error('instance is destroyed');\n if (!(out instanceof Uint8Array) || out.length < this.outputLen)\n throw new Error('_Sha2: Invalid output buffer');\n if (this.finished)\n throw new Error('digest() was already called');\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n this.buffer.subarray(pos).fill(0);\n // we have less than padOffset left in buffer, so we cannot put length in current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++)\n buffer[i] = 0;\n // NOTE: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64bit of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n this.get().forEach((v, i) => oview.setUint32(4 * i, v, isLE));\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to) {\n to || (to = new this.constructor());\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.length = length;\n to.pos = pos;\n to.finished = finished;\n to.destroyed = destroyed;\n if (length % blockLen)\n to.buffer.set(buffer);\n return to;\n }\n}\n","import { SHA2 } from './_sha2.js';\nimport { rotr, wrapConstructor } from './utils.js';\n// Choice: a ? b : c\nconst Chi = (a, b, c) => (a & b) ^ (~a & c);\n// Majority function, true if any two inpust is true\nconst Maj = (a, b, c) => (a & b) ^ (a & c) ^ (b & c);\n// Round constants:\n// first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311)\n// prettier-ignore\nconst SHA256_K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n// Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n// prettier-ignore\nconst IV = new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n]);\n// Temporary buffer, not used to store anything between runs\n// Named this way because it matches specification.\nconst SHA256_W = new Uint32Array(64);\nclass SHA256 extends SHA2 {\n constructor() {\n super(64, 32, 8, false);\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n this.A = IV[0] | 0;\n this.B = IV[1] | 0;\n this.C = IV[2] | 0;\n this.D = IV[3] | 0;\n this.E = IV[4] | 0;\n this.F = IV[5] | 0;\n this.G = IV[6] | 0;\n this.H = IV[7] | 0;\n }\n get() {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n set(A, B, C, D, E, F, G, H) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4)\n SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\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 // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n roundClean() {\n SHA256_W.fill(0);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n this.buffer.fill(0);\n }\n}\n/**\n * SHA2-256 hash function\n * @param message - data that would be hashed\n */\nexport const sha256 = wrapConstructor(() => new SHA256());\n","const U32_MASK64 = BigInt(2 ** 32 - 1);\nconst _32n = BigInt(32);\nexport function fromBig(n, le = false) {\n if (le)\n return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nexport function split(lst, le = false) {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for (let i = 0; i < lst.length; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\nexport const toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nexport const shrSH = (h, l, s) => h >>> s;\nexport const shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nexport const rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nexport const rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nexport const rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nexport const rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nexport const rotr32H = (h, l) => l;\nexport const rotr32L = (h, l) => h;\n// Left rotate for Shift in [1, 32)\nexport const rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nexport const rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nexport const rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nexport const rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nexport function add(Ah, Al, Bh, Bl) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nexport const add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nexport const add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nexport const add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nexport const add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nexport const add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nexport const add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n","import { SHA2 } from './_sha2.js';\nimport * as u64 from './_u64.js';\nimport { wrapConstructor } from './utils.js';\n// Round contants (first 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409):\n// prettier-ignore\nconst [SHA512_Kh, SHA512_Kl] = u64.split([\n '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n)));\n// Temporary buffer, not used to store anything between runs\nconst SHA512_W_H = new Uint32Array(80);\nconst SHA512_W_L = new Uint32Array(80);\nexport class SHA512 extends SHA2 {\n constructor() {\n super(128, 64, 16, false);\n // We cannot use array here since array allows indexing by variable which means optimizer/compiler cannot use registers.\n // Also looks cleaner and easier to verify with spec.\n // Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x6a09e667 | 0;\n this.Al = 0xf3bcc908 | 0;\n this.Bh = 0xbb67ae85 | 0;\n this.Bl = 0x84caa73b | 0;\n this.Ch = 0x3c6ef372 | 0;\n this.Cl = 0xfe94f82b | 0;\n this.Dh = 0xa54ff53a | 0;\n this.Dl = 0x5f1d36f1 | 0;\n this.Eh = 0x510e527f | 0;\n this.El = 0xade682d1 | 0;\n this.Fh = 0x9b05688c | 0;\n this.Fl = 0x2b3e6c1f | 0;\n this.Gh = 0x1f83d9ab | 0;\n this.Gl = 0xfb41bd6b | 0;\n this.Hh = 0x5be0cd19 | 0;\n this.Hl = 0x137e2179 | 0;\n }\n // prettier-ignore\n get() {\n const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n }\n // prettier-ignore\n set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) {\n this.Ah = Ah | 0;\n this.Al = Al | 0;\n this.Bh = Bh | 0;\n this.Bl = Bl | 0;\n this.Ch = Ch | 0;\n this.Cl = Cl | 0;\n this.Dh = Dh | 0;\n this.Dl = Dl | 0;\n this.Eh = Eh | 0;\n this.El = El | 0;\n this.Fh = Fh | 0;\n this.Fl = Fl | 0;\n this.Gh = Gh | 0;\n this.Gl = Gl | 0;\n this.Hh = Hh | 0;\n this.Hl = Hl | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) {\n SHA512_W_H[i] = view.getUint32(offset);\n SHA512_W_L[i] = view.getUint32((offset += 4));\n }\n for (let i = 16; i < 80; i++) {\n // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n const W15h = SHA512_W_H[i - 15] | 0;\n const W15l = SHA512_W_L[i - 15] | 0;\n const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);\n const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);\n // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n const W2h = SHA512_W_H[i - 2] | 0;\n const W2l = SHA512_W_L[i - 2] | 0;\n const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);\n const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);\n // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n const SUMl = u64.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n SHA512_W_H[i] = SUMh | 0;\n SHA512_W_L[i] = SUMl | 0;\n }\n let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n // Compression function main loop, 80 rounds\n for (let i = 0; i < 80; i++) {\n // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);\n const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);\n //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n const CHIl = (El & Fl) ^ (~El & Gl);\n // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n // prettier-ignore\n const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n const T1l = T1ll | 0;\n // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);\n const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);\n const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n Hh = Gh | 0;\n Hl = Gl | 0;\n Gh = Fh | 0;\n Gl = Fl | 0;\n Fh = Eh | 0;\n Fl = El | 0;\n ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n Dh = Ch | 0;\n Dl = Cl | 0;\n Ch = Bh | 0;\n Cl = Bl | 0;\n Bh = Ah | 0;\n Bl = Al | 0;\n const All = u64.add3L(T1l, sigma0l, MAJl);\n Ah = u64.add3H(All, T1h, sigma0h, MAJh);\n Al = All | 0;\n }\n // Add the compressed chunk to the current hash value\n ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n }\n roundClean() {\n SHA512_W_H.fill(0);\n SHA512_W_L.fill(0);\n }\n destroy() {\n this.buffer.fill(0);\n this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\nclass SHA512_256 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x22312194 | 0;\n this.Al = 0xfc2bf72c | 0;\n this.Bh = 0x9f555fa3 | 0;\n this.Bl = 0xc84c64c2 | 0;\n this.Ch = 0x2393b86b | 0;\n this.Cl = 0x6f53b151 | 0;\n this.Dh = 0x96387719 | 0;\n this.Dl = 0x5940eabd | 0;\n this.Eh = 0x96283ee2 | 0;\n this.El = 0xa88effe3 | 0;\n this.Fh = 0xbe5e1e25 | 0;\n this.Fl = 0x53863992 | 0;\n this.Gh = 0x2b0199fc | 0;\n this.Gl = 0x2c85b8aa | 0;\n this.Hh = 0x0eb72ddc | 0;\n this.Hl = 0x81c52ca2 | 0;\n this.outputLen = 32;\n }\n}\nclass SHA384 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0xcbbb9d5d | 0;\n this.Al = 0xc1059ed8 | 0;\n this.Bh = 0x629a292a | 0;\n this.Bl = 0x367cd507 | 0;\n this.Ch = 0x9159015a | 0;\n this.Cl = 0x3070dd17 | 0;\n this.Dh = 0x152fecd8 | 0;\n this.Dl = 0xf70e5939 | 0;\n this.Eh = 0x67332667 | 0;\n this.El = 0xffc00b31 | 0;\n this.Fh = 0x8eb44a87 | 0;\n this.Fl = 0x68581511 | 0;\n this.Gh = 0xdb0c2e0d | 0;\n this.Gl = 0x64f98fa7 | 0;\n this.Hh = 0x47b5481d | 0;\n this.Hl = 0xbefa4fa4 | 0;\n this.outputLen = 48;\n }\n}\nexport const sha512 = wrapConstructor(() => new SHA512());\nexport const sha512_256 = wrapConstructor(() => new SHA512_256());\nexport const sha384 = wrapConstructor(() => new SHA384());\n","export const version = \"@ethersproject/crypto@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","/* Browser Crypto Shims */\nimport { hmac } from \"@noble/hashes/hmac\";\nimport { pbkdf2 } from \"@noble/hashes/pbkdf2\";\nimport { sha256 } from \"@noble/hashes/sha256\";\nimport { sha512 } from \"@noble/hashes/sha512\";\nimport { logger } from \"./logger.js\";\nfunction getGlobal() {\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n throw new Error('unable to locate global object');\n}\n;\nconst anyGlobal = getGlobal();\nlet crypto = anyGlobal.crypto || anyGlobal.msCrypto;\nexport function createHash(algo) {\n switch (algo) {\n case \"sha256\": return sha256.create();\n case \"sha512\": return sha512.create();\n }\n return logger.throwArgumentError(\"invalid hashing algorithm name\", \"algorithm\", algo);\n}\nexport function createHmac(_algo, key) {\n const algo = ({ sha256, sha512 }[_algo]);\n if (algo == null) {\n return logger.throwArgumentError(\"invalid hmac algorithm\", \"algorithm\", _algo);\n }\n return hmac.create(algo, key);\n}\nexport function pbkdf2Sync(password, salt, iterations, keylen, _algo) {\n const algo = ({ sha256, sha512 }[_algo]);\n if (algo == null) {\n return logger.throwArgumentError(\"invalid pbkdf2 algorithm\", \"algorithm\", _algo);\n }\n return pbkdf2(algo, password, salt, { c: iterations, dkLen: keylen });\n}\nexport function randomBytes(length) {\n if (crypto == null) {\n return logger.throwError(\"platform does not support secure random numbers\", \"UNSUPPORTED_OPERATION\", {\n operation: \"randomBytes\"\n });\n }\n if (length <= 0 || length > 1024 || (length % 1) || length != length) {\n logger.throwArgumentError(\"invalid length\", \"length\", length);\n }\n const result = new Uint8Array(length);\n crypto.getRandomValues(result);\n return result;\n}\n//# sourceMappingURL=crypto-browser.js.map","import { createHmac } from \"crypto\"; /*-browser*/\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nlet locked = false;\nconst _computeHmac = function (algorithm, key, data) {\n return \"0x\" + createHmac(algorithm, key).update(data).digest(\"hex\");\n};\nlet __computeHmac = _computeHmac;\nexport function computeHmac(algorithm, _key, _data) {\n const key = logger.getBytes(_key, \"key\");\n const data = logger.getBytes(_data, \"data\");\n return hexlify(__computeHmac(algorithm, key, data));\n}\ncomputeHmac._ = _computeHmac;\ncomputeHmac.lock = function () { locked = true; };\ncomputeHmac.register = function (func) {\n if (locked) {\n throw new Error(\"computeHmac is locked\");\n }\n __computeHmac = func;\n};\nObject.freeze(computeHmac);\n//# sourceMappingURL=hmac.js.map","import * as u64 from './_u64.js';\nimport { Hash, u32, toBytes, wrapConstructor, wrapConstructorWithOpts, assertNumber, } from './utils.js';\n// Various per round constants calculations\nconst [SHA3_PI, SHA3_ROTL, _SHA3_IOTA] = [[], [], []];\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst _7n = BigInt(7);\nconst _256n = BigInt(256);\nconst _0x71n = BigInt(0x71);\nfor (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {\n // Pi\n [x, y] = [y, (2 * x + 3 * y) % 5];\n SHA3_PI.push(2 * (5 * y + x));\n // Rotational\n SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);\n // Iota\n let t = _0n;\n for (let j = 0; j < 7; j++) {\n R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;\n if (R & _2n)\n t ^= _1n << ((_1n << BigInt(j)) - _1n);\n }\n _SHA3_IOTA.push(t);\n}\nconst [SHA3_IOTA_H, SHA3_IOTA_L] = u64.split(_SHA3_IOTA, true);\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h, l, s) => s > 32 ? u64.rotlBH(h, l, s) : u64.rotlSH(h, l, s);\nconst rotlL = (h, l, s) => s > 32 ? u64.rotlBL(h, l, s) : u64.rotlSL(h, l, s);\n// Same as keccakf1600, but allows to skip some rounds\nexport function keccakP(s, rounds = 24) {\n const B = new Uint32Array(5 * 2);\n // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)\n for (let round = 24 - rounds; round < 24; round++) {\n // Theta θ\n for (let x = 0; x < 10; x++)\n B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n for (let x = 0; x < 10; x += 2) {\n const idx1 = (x + 8) % 10;\n const idx0 = (x + 2) % 10;\n const B0 = B[idx0];\n const B1 = B[idx0 + 1];\n const Th = rotlH(B0, B1, 1) ^ B[idx1];\n const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];\n for (let y = 0; y < 50; y += 10) {\n s[x + y] ^= Th;\n s[x + y + 1] ^= Tl;\n }\n }\n // Rho (ρ) and Pi (π)\n let curH = s[2];\n let curL = s[3];\n for (let t = 0; t < 24; t++) {\n const shift = SHA3_ROTL[t];\n const Th = rotlH(curH, curL, shift);\n const Tl = rotlL(curH, curL, shift);\n const PI = SHA3_PI[t];\n curH = s[PI];\n curL = s[PI + 1];\n s[PI] = Th;\n s[PI + 1] = Tl;\n }\n // Chi (χ)\n for (let y = 0; y < 50; y += 10) {\n for (let x = 0; x < 10; x++)\n B[x] = s[y + x];\n for (let x = 0; x < 10; x++)\n s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n }\n // Iota (ι)\n s[0] ^= SHA3_IOTA_H[round];\n s[1] ^= SHA3_IOTA_L[round];\n }\n B.fill(0);\n}\nexport class Keccak extends Hash {\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) {\n super();\n this.blockLen = blockLen;\n this.suffix = suffix;\n this.outputLen = outputLen;\n this.enableXOF = enableXOF;\n this.rounds = rounds;\n this.pos = 0;\n this.posOut = 0;\n this.finished = false;\n this.destroyed = false;\n // Can be passed from user as dkLen\n assertNumber(outputLen);\n // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes\n if (0 >= this.blockLen || this.blockLen >= 200)\n throw new Error('Sha3 supports only keccak-f1600 function');\n this.state = new Uint8Array(200);\n this.state32 = u32(this.state);\n }\n keccak() {\n keccakP(this.state32, this.rounds);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data) {\n if (this.destroyed)\n throw new Error('instance is destroyed');\n if (this.finished)\n throw new Error('digest() was already called');\n const { blockLen, state } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n for (let i = 0; i < take; i++)\n state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen)\n this.keccak();\n }\n return this;\n }\n finish() {\n if (this.finished)\n return;\n this.finished = true;\n const { state, suffix, pos, blockLen } = this;\n // Do the padding\n state[pos] ^= suffix;\n if ((suffix & 0x80) !== 0 && pos === blockLen - 1)\n this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n writeInto(out) {\n if (this.destroyed)\n throw new Error('instance is destroyed');\n if (!(out instanceof Uint8Array))\n throw new Error('Keccak: invalid output buffer');\n this.finish();\n for (let pos = 0, len = out.length; pos < len;) {\n if (this.posOut >= this.blockLen)\n this.keccak();\n const take = Math.min(this.blockLen - this.posOut, len - pos);\n out.set(this.state.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out) {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF)\n throw new Error('XOF is not possible for this instance');\n return this.writeInto(out);\n }\n xof(bytes) {\n assertNumber(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out) {\n if (out.length < this.outputLen)\n throw new Error('Keccak: invalid output buffer');\n if (this.finished)\n throw new Error('digest() was already called');\n this.finish();\n this.writeInto(out);\n this.destroy();\n return out;\n }\n digest() {\n return this.digestInto(new Uint8Array(this.outputLen));\n }\n destroy() {\n this.destroyed = true;\n this.state.fill(0);\n }\n _cloneInto(to) {\n const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n to || (to = new Keccak(blockLen, suffix, outputLen, enableXOF, rounds));\n to.state32.set(this.state32);\n to.pos = this.pos;\n to.posOut = this.posOut;\n to.finished = this.finished;\n to.rounds = rounds;\n // Suffix can change in cSHAKE\n to.suffix = suffix;\n to.outputLen = outputLen;\n to.enableXOF = enableXOF;\n to.destroyed = this.destroyed;\n return to;\n }\n}\nconst gen = (suffix, blockLen, outputLen) => wrapConstructor(() => new Keccak(blockLen, suffix, outputLen));\nexport const sha3_224 = gen(0x06, 144, 224 / 8);\n/**\n * SHA3-256 hash function\n * @param message - that would be hashed\n */\nexport const sha3_256 = gen(0x06, 136, 256 / 8);\nexport const sha3_384 = gen(0x06, 104, 384 / 8);\nexport const sha3_512 = gen(0x06, 72, 512 / 8);\nexport const keccak_224 = gen(0x01, 144, 224 / 8);\n/**\n * keccak-256 hash function. Different from SHA3-256.\n * @param message - that would be hashed\n */\nexport const keccak_256 = gen(0x01, 136, 256 / 8);\nexport const keccak_384 = gen(0x01, 104, 384 / 8);\nexport const keccak_512 = gen(0x01, 72, 512 / 8);\nconst genShake = (suffix, blockLen, outputLen) => wrapConstructorWithOpts((opts = {}) => new Keccak(blockLen, suffix, opts.dkLen !== undefined ? opts.dkLen : outputLen, true));\nexport const shake128 = genShake(0x1f, 168, 128 / 8);\nexport const shake256 = genShake(0x1f, 136, 256 / 8);\n","import { keccak_256 } from \"@noble/hashes/sha3\";\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nlet locked = false;\nconst _keccak256 = function (data) {\n return keccak_256(data);\n};\nlet __keccak256 = _keccak256;\nexport function keccak256(_data) {\n const data = logger.getBytes(_data, \"data\");\n return hexlify(__keccak256(data));\n}\nkeccak256._ = _keccak256;\nkeccak256.lock = function () { locked = true; };\nkeccak256.register = function (func) {\n if (locked) {\n throw new TypeError(\"keccak256 is locked\");\n }\n __keccak256 = func;\n};\nObject.freeze(keccak256);\n//# sourceMappingURL=keccak.js.map","import { SHA2 } from './_sha2.js';\nimport { wrapConstructor } from './utils.js';\n// https://homes.esat.kuleuven.be/~bosselae/ripemd160.html\n// https://homes.esat.kuleuven.be/~bosselae/ripemd160/pdf/AB-9601/AB-9601.pdf\nconst Rho = new Uint8Array([7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8]);\nconst Id = Uint8Array.from({ length: 16 }, (_, i) => i);\nconst Pi = Id.map((i) => (9 * i + 5) % 16);\nlet idxL = [Id];\nlet idxR = [Pi];\nfor (let i = 0; i < 4; i++)\n for (let j of [idxL, idxR])\n j.push(j[i].map((k) => Rho[k]));\nconst shifts = [\n [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8],\n [12, 13, 11, 15, 6, 9, 9, 7, 12, 15, 11, 13, 7, 8, 7, 7],\n [13, 15, 14, 11, 7, 7, 6, 8, 13, 14, 13, 12, 5, 5, 6, 9],\n [14, 11, 12, 14, 8, 6, 5, 5, 15, 12, 15, 14, 9, 9, 8, 6],\n [15, 12, 13, 13, 9, 5, 8, 6, 14, 11, 12, 11, 8, 6, 5, 5],\n].map((i) => new Uint8Array(i));\nconst shiftsL = idxL.map((idx, i) => idx.map((j) => shifts[i][j]));\nconst shiftsR = idxR.map((idx, i) => idx.map((j) => shifts[i][j]));\nconst Kl = new Uint32Array([0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]);\nconst Kr = new Uint32Array([0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]);\n// The rotate left (circular left shift) operation for uint32\nconst rotl = (word, shift) => (word << shift) | (word >>> (32 - shift));\n// It's called f() in spec.\nfunction f(group, x, y, z) {\n if (group === 0)\n return x ^ y ^ z;\n else if (group === 1)\n return (x & y) | (~x & z);\n else if (group === 2)\n return (x | ~y) ^ z;\n else if (group === 3)\n return (x & z) | (y & ~z);\n else\n return x ^ (y | ~z);\n}\n// Temporary buffer, not used to store anything between runs\nconst BUF = new Uint32Array(16);\nexport class RIPEMD160 extends SHA2 {\n constructor() {\n super(64, 20, 8, true);\n this.h0 = 0x67452301 | 0;\n this.h1 = 0xefcdab89 | 0;\n this.h2 = 0x98badcfe | 0;\n this.h3 = 0x10325476 | 0;\n this.h4 = 0xc3d2e1f0 | 0;\n }\n get() {\n const { h0, h1, h2, h3, h4 } = this;\n return [h0, h1, h2, h3, h4];\n }\n set(h0, h1, h2, h3, h4) {\n this.h0 = h0 | 0;\n this.h1 = h1 | 0;\n this.h2 = h2 | 0;\n this.h3 = h3 | 0;\n this.h4 = h4 | 0;\n }\n process(view, offset) {\n for (let i = 0; i < 16; i++, offset += 4)\n BUF[i] = view.getUint32(offset, true);\n // prettier-ignore\n let al = this.h0 | 0, ar = al, bl = this.h1 | 0, br = bl, cl = this.h2 | 0, cr = cl, dl = this.h3 | 0, dr = dl, el = this.h4 | 0, er = el;\n // Instead of iterating 0 to 80, we split it into 5 groups\n // And use the groups in constants, functions, etc. Much simpler\n for (let group = 0; group < 5; group++) {\n const rGroup = 4 - group;\n const hbl = Kl[group], hbr = Kr[group]; // prettier-ignore\n const rl = idxL[group], rr = idxR[group]; // prettier-ignore\n const sl = shiftsL[group], sr = shiftsR[group]; // prettier-ignore\n for (let i = 0; i < 16; i++) {\n const tl = (rotl(al + f(group, bl, cl, dl) + BUF[rl[i]] + hbl, sl[i]) + el) | 0;\n al = el, el = dl, dl = rotl(cl, 10) | 0, cl = bl, bl = tl; // prettier-ignore\n }\n // 2 loops are 10% faster\n for (let i = 0; i < 16; i++) {\n const tr = (rotl(ar + f(rGroup, br, cr, dr) + BUF[rr[i]] + hbr, sr[i]) + er) | 0;\n ar = er, er = dr, dr = rotl(cr, 10) | 0, cr = br, br = tr; // prettier-ignore\n }\n }\n // Add the compressed chunk to the current hash value\n this.set((this.h1 + cl + dr) | 0, (this.h2 + dl + er) | 0, (this.h3 + el + ar) | 0, (this.h4 + al + br) | 0, (this.h0 + bl + cr) | 0);\n }\n roundClean() {\n BUF.fill(0);\n }\n destroy() {\n this.destroyed = true;\n this.buffer.fill(0);\n this.set(0, 0, 0, 0, 0);\n }\n}\n/**\n * RIPEMD-160 - a hash function from 1990s.\n * @param message - msg that would be hashed\n */\nexport const ripemd160 = wrapConstructor(() => new RIPEMD160());\n","import { ripemd160 as noble_ripemd160 } from \"@noble/hashes/ripemd160\";\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nlet locked = false;\nconst _ripemd160 = function (data) {\n return noble_ripemd160(data);\n};\nlet __ripemd160 = _ripemd160;\nexport function ripemd160(_data) {\n const data = logger.getBytes(_data, \"data\");\n return hexlify(__ripemd160(data));\n}\nripemd160._ = _ripemd160;\nripemd160.lock = function () { locked = true; };\nripemd160.register = function (func) {\n if (locked) {\n throw new TypeError(\"ripemd160 is locked\");\n }\n __ripemd160 = func;\n};\nObject.freeze(ripemd160);\n//# sourceMappingURL=ripemd160.js.map","import { pbkdf2Sync } from \"crypto\"; /*-browser*/\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nlet locked = false;\nconst _pbkdf2 = function (password, salt, iterations, keylen, algo) {\n return pbkdf2Sync(password, salt, iterations, keylen, algo);\n};\nlet __pbkdf2 = _pbkdf2;\nexport function pbkdf2(_password, _salt, iterations, keylen, algo) {\n const password = logger.getBytes(_password, \"password\");\n const salt = logger.getBytes(_salt, \"salt\");\n return hexlify(__pbkdf2(password, salt, iterations, keylen, algo));\n}\npbkdf2._ = _pbkdf2;\npbkdf2.lock = function () { locked = true; };\npbkdf2.register = function (func) {\n if (locked) {\n throw new Error(\"pbkdf2 is locked\");\n }\n __pbkdf2 = func;\n};\nObject.freeze(pbkdf2);\n//# sourceMappingURL=pbkdf2.js.map","import { randomBytes as crypto_random } from \"crypto\"; /*-browser*/\nlet locked = false;\nconst _randomBytes = function (length) {\n return new Uint8Array(crypto_random(length));\n};\nlet __randomBytes = _randomBytes;\nexport function randomBytes(length) {\n return __randomBytes(length);\n}\nrandomBytes._ = _randomBytes;\nrandomBytes.lock = function () { locked = true; };\nrandomBytes.register = function (func) {\n if (locked) {\n throw new Error(\"random is locked\");\n }\n __randomBytes = func;\n};\nObject.freeze(randomBytes);\n//# sourceMappingURL=random.js.map","import { sha256 } from './sha256.js';\nimport { pbkdf2 } from './pbkdf2.js';\nimport { assertNumber, asyncLoop, checkOpts, u32 } from './utils.js';\n// RFC 7914 Scrypt KDF\n// Left rotate for uint32\nconst rotl = (a, b) => (a << b) | (a >>> (32 - b));\n// The main Scrypt loop: uses Salsa extensively.\n// Six versions of the function were tried, this is the fastest one.\n// prettier-ignore\nfunction XorAndSalsa(prev, pi, input, ii, out, oi) {\n // Based on https://cr.yp.to/salsa20.html\n // Xor blocks\n let y00 = prev[pi++] ^ input[ii++], y01 = prev[pi++] ^ input[ii++];\n let y02 = prev[pi++] ^ input[ii++], y03 = prev[pi++] ^ input[ii++];\n let y04 = prev[pi++] ^ input[ii++], y05 = prev[pi++] ^ input[ii++];\n let y06 = prev[pi++] ^ input[ii++], y07 = prev[pi++] ^ input[ii++];\n let y08 = prev[pi++] ^ input[ii++], y09 = prev[pi++] ^ input[ii++];\n let y10 = prev[pi++] ^ input[ii++], y11 = prev[pi++] ^ input[ii++];\n let y12 = prev[pi++] ^ input[ii++], y13 = prev[pi++] ^ input[ii++];\n let y14 = prev[pi++] ^ input[ii++], y15 = prev[pi++] ^ input[ii++];\n // Save state to temporary variables (salsa)\n let x00 = y00, x01 = y01, x02 = y02, x03 = y03, x04 = y04, x05 = y05, x06 = y06, x07 = y07, x08 = y08, x09 = y09, x10 = y10, x11 = y11, x12 = y12, x13 = y13, x14 = y14, x15 = y15;\n // Main loop (salsa)\n for (let i = 0; i < 8; i += 2) {\n x04 ^= rotl(x00 + x12 | 0, 7);\n x08 ^= rotl(x04 + x00 | 0, 9);\n x12 ^= rotl(x08 + x04 | 0, 13);\n x00 ^= rotl(x12 + x08 | 0, 18);\n x09 ^= rotl(x05 + x01 | 0, 7);\n x13 ^= rotl(x09 + x05 | 0, 9);\n x01 ^= rotl(x13 + x09 | 0, 13);\n x05 ^= rotl(x01 + x13 | 0, 18);\n x14 ^= rotl(x10 + x06 | 0, 7);\n x02 ^= rotl(x14 + x10 | 0, 9);\n x06 ^= rotl(x02 + x14 | 0, 13);\n x10 ^= rotl(x06 + x02 | 0, 18);\n x03 ^= rotl(x15 + x11 | 0, 7);\n x07 ^= rotl(x03 + x15 | 0, 9);\n x11 ^= rotl(x07 + x03 | 0, 13);\n x15 ^= rotl(x11 + x07 | 0, 18);\n x01 ^= rotl(x00 + x03 | 0, 7);\n x02 ^= rotl(x01 + x00 | 0, 9);\n x03 ^= rotl(x02 + x01 | 0, 13);\n x00 ^= rotl(x03 + x02 | 0, 18);\n x06 ^= rotl(x05 + x04 | 0, 7);\n x07 ^= rotl(x06 + x05 | 0, 9);\n x04 ^= rotl(x07 + x06 | 0, 13);\n x05 ^= rotl(x04 + x07 | 0, 18);\n x11 ^= rotl(x10 + x09 | 0, 7);\n x08 ^= rotl(x11 + x10 | 0, 9);\n x09 ^= rotl(x08 + x11 | 0, 13);\n x10 ^= rotl(x09 + x08 | 0, 18);\n x12 ^= rotl(x15 + x14 | 0, 7);\n x13 ^= rotl(x12 + x15 | 0, 9);\n x14 ^= rotl(x13 + x12 | 0, 13);\n x15 ^= rotl(x14 + x13 | 0, 18);\n }\n // Write output (salsa)\n out[oi++] = (y00 + x00) | 0;\n out[oi++] = (y01 + x01) | 0;\n out[oi++] = (y02 + x02) | 0;\n out[oi++] = (y03 + x03) | 0;\n out[oi++] = (y04 + x04) | 0;\n out[oi++] = (y05 + x05) | 0;\n out[oi++] = (y06 + x06) | 0;\n out[oi++] = (y07 + x07) | 0;\n out[oi++] = (y08 + x08) | 0;\n out[oi++] = (y09 + x09) | 0;\n out[oi++] = (y10 + x10) | 0;\n out[oi++] = (y11 + x11) | 0;\n out[oi++] = (y12 + x12) | 0;\n out[oi++] = (y13 + x13) | 0;\n out[oi++] = (y14 + x14) | 0;\n out[oi++] = (y15 + x15) | 0;\n}\nfunction BlockMix(input, ii, out, oi, r) {\n // The block B is r 128-byte chunks (which is equivalent of 2r 64-byte chunks)\n let head = oi + 0;\n let tail = oi + 16 * r;\n for (let i = 0; i < 16; i++)\n out[tail + i] = input[ii + (2 * r - 1) * 16 + i]; // X ← B[2r−1]\n for (let i = 0; i < r; i++, head += 16, ii += 16) {\n // We write odd & even Yi at same time. Even: 0bXXXXX0 Odd: 0bXXXXX1\n XorAndSalsa(out, tail, input, ii, out, head); // head[i] = Salsa(blockIn[2*i] ^ tail[i-1])\n if (i > 0)\n tail += 16; // First iteration overwrites tmp value in tail\n XorAndSalsa(out, head, input, (ii += 16), out, tail); // tail[i] = Salsa(blockIn[2*i+1] ^ head[i])\n }\n}\n// Common prologue and epilogue for sync/async functions\nfunction scryptInit(password, salt, _opts) {\n // Maxmem - 1GB+1KB by default\n const opts = checkOpts({\n dkLen: 32,\n asyncTick: 10,\n maxmem: 1024 ** 3 + 1024,\n }, _opts);\n const { N, r, p, dkLen, asyncTick, maxmem, onProgress } = opts;\n assertNumber(N);\n assertNumber(r);\n assertNumber(p);\n assertNumber(dkLen);\n assertNumber(asyncTick);\n assertNumber(maxmem);\n if (onProgress !== undefined && typeof onProgress !== 'function')\n throw new Error('progressCb should be function');\n const blockSize = 128 * r;\n const blockSize32 = blockSize / 4;\n if (N <= 1 || (N & (N - 1)) !== 0 || N >= 2 ** (blockSize / 8) || N > 2 ** 32) {\n // NOTE: we limit N to be less than 2**32 because of 32 bit variant of Integrify function\n // There is no JS engines that allows alocate more than 4GB per single Uint8Array for now, but can change in future.\n throw new Error('Scrypt: N must be larger than 1, a power of 2, less than 2^(128 * r / 8) and less than 2^32');\n }\n if (p < 0 || p > ((2 ** 32 - 1) * 32) / blockSize) {\n throw new Error('Scrypt: p must be a positive integer less than or equal to ((2^32 - 1) * 32) / (128 * r)');\n }\n if (dkLen < 0 || dkLen > (2 ** 32 - 1) * 32) {\n throw new Error('Scrypt: dkLen should be positive integer less than or equal to (2^32 - 1) * 32');\n }\n const memUsed = blockSize * (N + p);\n if (memUsed > maxmem) {\n throw new Error(`Scrypt: parameters too large, ${memUsed} (128 * r * (N + p)) > ${maxmem} (maxmem)`);\n }\n // [B0...Bp−1] ← PBKDF2HMAC-SHA256(Passphrase, Salt, 1, blockSize*ParallelizationFactor)\n // Since it has only one iteration there is no reason to use async variant\n const B = pbkdf2(sha256, password, salt, { c: 1, dkLen: blockSize * p });\n const B32 = u32(B);\n // Re-used between parallel iterations. Array(iterations) of B\n const V = u32(new Uint8Array(blockSize * N));\n const tmp = u32(new Uint8Array(blockSize));\n let blockMixCb = () => { };\n if (onProgress) {\n const totalBlockMix = 2 * N * p;\n // Invoke callback if progress changes from 10.01 to 10.02\n // Allows to draw smooth progress bar on up to 8K screen\n const callbackPer = Math.max(Math.floor(totalBlockMix / 10000), 1);\n let blockMixCnt = 0;\n blockMixCb = () => {\n blockMixCnt++;\n if (onProgress && (!(blockMixCnt % callbackPer) || blockMixCnt === totalBlockMix))\n onProgress(blockMixCnt / totalBlockMix);\n };\n }\n return { N, r, p, dkLen, blockSize32, V, B32, B, tmp, blockMixCb, asyncTick };\n}\nfunction scryptOutput(password, dkLen, B, V, tmp) {\n const res = pbkdf2(sha256, password, B, { c: 1, dkLen });\n B.fill(0);\n V.fill(0);\n tmp.fill(0);\n return res;\n}\n/**\n * Scrypt KDF from RFC 7914.\n * @param password - pass\n * @param salt - salt\n * @param opts - parameters\n * - `N` is cpu/mem work factor (power of 2 e.g. 2**18)\n * - `r` is block size (8 is common), fine-tunes sequential memory read size and performance\n * - `p` is parallelization factor (1 is common)\n * - `dkLen` is output key length in bytes e.g. 32.\n * - `asyncTick` - (default: 10) max time in ms for which async function can block execution\n * - `maxmem` - (default: `1024 ** 3 + 1024` aka 1GB+1KB). A limit that the app could use for scrypt\n * - `onProgress` - callback function that would be executed for progress report\n * @returns Derived key\n */\nexport function scrypt(password, salt, opts) {\n const { N, r, p, dkLen, blockSize32, V, B32, B, tmp, blockMixCb } = scryptInit(password, salt, opts);\n for (let pi = 0; pi < p; pi++) {\n const Pi = blockSize32 * pi;\n for (let i = 0; i < blockSize32; i++)\n V[i] = B32[Pi + i]; // V[0] = B[i]\n for (let i = 0, pos = 0; i < N - 1; i++) {\n BlockMix(V, pos, V, (pos += blockSize32), r); // V[i] = BlockMix(V[i-1]);\n blockMixCb();\n }\n BlockMix(V, (N - 1) * blockSize32, B32, Pi, r); // Process last element\n blockMixCb();\n for (let i = 0; i < N; i++) {\n // First u32 of the last 64-byte block (u32 is LE)\n const j = B32[Pi + blockSize32 - 16] % N; // j = Integrify(X) % iterations\n for (let k = 0; k < blockSize32; k++)\n tmp[k] = B32[Pi + k] ^ V[j * blockSize32 + k]; // tmp = B ^ V[j]\n BlockMix(tmp, 0, B32, Pi, r); // B = BlockMix(B ^ V[j])\n blockMixCb();\n }\n }\n return scryptOutput(password, dkLen, B, V, tmp);\n}\n/**\n * Scrypt KDF from RFC 7914.\n */\nexport async function scryptAsync(password, salt, opts) {\n const { N, r, p, dkLen, blockSize32, V, B32, B, tmp, blockMixCb, asyncTick } = scryptInit(password, salt, opts);\n for (let pi = 0; pi < p; pi++) {\n const Pi = blockSize32 * pi;\n for (let i = 0; i < blockSize32; i++)\n V[i] = B32[Pi + i]; // V[0] = B[i]\n let pos = 0;\n await asyncLoop(N - 1, asyncTick, (i) => {\n BlockMix(V, pos, V, (pos += blockSize32), r); // V[i] = BlockMix(V[i-1]);\n blockMixCb();\n });\n BlockMix(V, (N - 1) * blockSize32, B32, Pi, r); // Process last element\n blockMixCb();\n await asyncLoop(N, asyncTick, (i) => {\n // First u32 of the last 64-byte block (u32 is LE)\n const j = B32[Pi + blockSize32 - 16] % N; // j = Integrify(X) % iterations\n for (let k = 0; k < blockSize32; k++)\n tmp[k] = B32[Pi + k] ^ V[j * blockSize32 + k]; // tmp = B ^ V[j]\n BlockMix(tmp, 0, B32, Pi, r); // B = BlockMix(B ^ V[j])\n blockMixCb();\n });\n }\n return scryptOutput(password, dkLen, B, V, tmp);\n}\n","import { scrypt as _nobleSync, scryptAsync as _nobleAsync } from \"@noble/hashes/scrypt\";\nimport { hexlify as H } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nlet lockedSync = false, lockedAsync = false;\nconst _scryptAsync = async function (passwd, salt, N, r, p, dkLen, onProgress) {\n return await _nobleAsync(passwd, salt, { N, r, p, dkLen, onProgress });\n};\nconst _scryptSync = function (passwd, salt, N, r, p, dkLen) {\n return _nobleSync(passwd, salt, { N, r, p, dkLen });\n};\nlet __scryptAsync = _scryptAsync;\nlet __scryptSync = _scryptSync;\nexport async function scrypt(_passwd, _salt, N, r, p, dkLen, progress) {\n const passwd = logger.getBytes(_passwd, \"passwd\");\n const salt = logger.getBytes(_salt, \"salt\");\n return H(await __scryptAsync(passwd, salt, N, r, p, dkLen, progress));\n}\nscrypt._ = _scryptAsync;\nscrypt.lock = function () { lockedAsync = true; };\nscrypt.register = function (func) {\n if (lockedAsync) {\n throw new Error(\"scrypt is locked\");\n }\n __scryptAsync = func;\n};\nObject.freeze(scrypt);\nexport function scryptSync(_passwd, _salt, N, r, p, dkLen) {\n const passwd = logger.getBytes(_passwd, \"passwd\");\n const salt = logger.getBytes(_salt, \"salt\");\n return H(__scryptSync(passwd, salt, N, r, p, dkLen));\n}\nscryptSync._ = _scryptSync;\nscryptSync.lock = function () { lockedSync = true; };\nscryptSync.register = function (func) {\n if (lockedSync) {\n throw new Error(\"scryptSync is locked\");\n }\n __scryptSync = func;\n};\nObject.freeze(scryptSync);\n//# sourceMappingURL=scrypt.js.map","import { createHash } from \"crypto\"; /*-browser*/\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nconst _sha256 = function (data) {\n return createHash(\"sha256\").update(data).digest();\n};\nconst _sha512 = function (data) {\n return createHash(\"sha512\").update(data).digest();\n};\nlet __sha256 = _sha256;\nlet __sha512 = _sha512;\nlet locked256 = false, locked512 = false;\nexport function sha256(_data) {\n const data = logger.getBytes(_data, \"data\");\n return hexlify(__sha256(data));\n}\nsha256._ = _sha256;\nsha256.lock = function () { locked256 = true; };\nsha256.register = function (func) {\n if (locked256) {\n throw new Error(\"sha256 is locked\");\n }\n __sha256 = func;\n};\nObject.freeze(sha256);\nexport function sha512(_data) {\n const data = logger.getBytes(_data, \"data\");\n return hexlify(__sha512(data));\n}\nsha512._ = _sha512;\nsha512.lock = function () { locked512 = true; };\nsha512.register = function (func) {\n if (locked512) {\n throw new Error(\"sha512 is locked\");\n }\n __sha512 = func;\n};\nObject.freeze(sha256);\n//# sourceMappingURL=sha2.js.map","// We import all these so we can export lock()\nimport { computeHmac } from \"./hmac.js\";\nimport { keccak256 } from \"./keccak.js\";\nimport { ripemd160 } from \"./ripemd160.js\";\nimport { pbkdf2 } from \"./pbkdf2.js\";\nimport { randomBytes } from \"./random.js\";\nimport { scrypt, scryptSync } from \"./scrypt.js\";\nimport { sha256, sha512 } from \"./sha2.js\";\nexport { computeHmac, randomBytes, keccak256, ripemd160, sha256, sha512, pbkdf2, scrypt, scryptSync };\nexport function lock() {\n computeHmac.lock();\n keccak256.lock();\n pbkdf2.lock();\n randomBytes.lock();\n ripemd160.lock();\n scrypt.lock();\n scryptSync.lock();\n sha256.lock();\n sha512.lock();\n}\n//# sourceMappingURL=index.js.map","export const version = \"@ethersproject/address@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { arrayify } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { logger } from \"./logger.js\";\nconst BN_0 = BigInt(0);\nconst BN_36 = BigInt(36);\nfunction getChecksumAddress(address) {\n // if (!isHexString(address, 20)) {\n // logger.throwArgumentError(\"invalid address\", \"address\", address);\n // }\n address = address.toLowerCase();\n const chars = address.substring(2).split(\"\");\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n const hashed = arrayify(keccak256(expanded));\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 return \"0x\" + chars.join(\"\");\n}\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n// Create lookup table\nconst ibanLookup = {};\nfor (let i = 0; i < 10; i++) {\n ibanLookup[String(i)] = String(i);\n}\nfor (let i = 0; i < 26; i++) {\n ibanLookup[String.fromCharCode(65 + i)] = String(10 + i);\n}\n// How many decimal digits can we process? (for 64-bit float, this is 15)\n// i.e. Math.floor(Math.log10(Number.MAX_SAFE_INTEGER));\nconst safeDigits = 15;\nfunction ibanChecksum(address) {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\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 let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) {\n checksum = \"0\" + checksum;\n }\n return checksum;\n}\n;\nconst Base36 = (function () {\n ;\n const result = {};\n for (let i = 0; i < 36; i++) {\n const key = \"0123456789abcdefghijklmnopqrstuvwxyz\"[i];\n result[key] = BigInt(i);\n }\n return result;\n})();\nfunction fromBase36(value) {\n value = value.toLowerCase();\n let result = BN_0;\n for (let i = 0; i < value.length; i++) {\n result = result * BN_36 + Base36[value[i]];\n }\n return result;\n}\nexport function getAddress(address) {\n if (typeof (address) !== \"string\") {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n // Missing the 0x prefix\n if (address.substring(0, 2) !== \"0x\") {\n address = \"0x\" + address;\n }\n const result = getChecksumAddress(address);\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 return result;\n }\n // Maybe ICAP? (we only support direct mode)\n if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\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 let result = fromBase36(address.substring(4)).toString(16);\n while (result.length < 40) {\n result = \"0\" + result;\n }\n return getChecksumAddress(\"0x\" + result);\n }\n return logger.throwArgumentError(\"invalid address\", \"address\", address);\n}\nexport function getIcapAddress(address) {\n //let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n let base36 = BigInt(getAddress(address)).toString(36).toUpperCase();\n while (base36.length < 30) {\n base36 = \"0\" + base36;\n }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n//# sourceMappingURL=address.js.map","export const version = \"@ethersproject/rlp@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","//See: https://github.com/ethereum/wiki/wiki/RLP\nimport { logger } from \"./logger.js\";\nfunction arrayifyInteger(value) {\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value >>= 8;\n }\n return result;\n}\nfunction _encode(object) {\n if (Array.isArray(object)) {\n let payload = [];\n object.forEach(function (child) {\n payload = payload.concat(_encode(child));\n });\n if (payload.length <= 55) {\n payload.unshift(0xc0 + payload.length);\n return payload;\n }\n const length = arrayifyInteger(payload.length);\n length.unshift(0xf7 + length.length);\n return length.concat(payload);\n }\n const data = Array.prototype.slice.call(logger.getBytes(object, \"object\"));\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 const length = arrayifyInteger(data.length);\n length.unshift(0xb7 + length.length);\n return length.concat(data);\n}\nconst nibbles = \"0123456789abcdef\";\nexport function encodeRlp(object) {\n let result = \"0x\";\n for (const v of _encode(object)) {\n result += nibbles[v >> 4];\n result += nibbles[v & 0xf];\n }\n return result;\n}\n//# sourceMappingURL=encode.js.map","//See: https://github.com/ethereum/wiki/wiki/RLP\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nfunction hexlifyByte(value) {\n let result = value.toString(16);\n while (result.length < 2) {\n result = \"0\" + result;\n }\n return \"0x\" + result;\n}\nfunction unarrayifyInteger(data, offset, length) {\n let result = 0;\n for (let i = 0; i < length; i++) {\n result = (result * 256) + data[offset + i];\n }\n return result;\n}\nfunction _decodeChildren(data, offset, childOffset, length) {\n const result = [];\n while (childOffset < offset + 1 + length) {\n const decoded = _decode(data, childOffset);\n result.push(decoded.result);\n childOffset += decoded.consumed;\n if (childOffset > offset + 1 + length) {\n logger.throwError(\"child data too short\", \"BUFFER_OVERRUN\", {\n buffer: data, length, offset\n });\n }\n }\n return { consumed: (1 + length), result: result };\n}\n// returns { consumed: number, result: Object }\nfunction _decode(data, offset) {\n if (data.length === 0) {\n logger.throwError(\"data too short\", \"BUFFER_OVERRUN\", {\n buffer: data, length: 0, offset: 1\n });\n }\n const checkOffset = (offset) => {\n if (offset > data.length) {\n logger.throwError(\"data short segment too short\", \"BUFFER_OVERRUN\", {\n buffer: data, length: data.length, offset\n });\n }\n };\n // Array with extra length prefix\n if (data[offset] >= 0xf8) {\n const lengthLength = data[offset] - 0xf7;\n checkOffset(offset + 1 + lengthLength);\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n checkOffset(offset + 1 + lengthLength + length);\n return _decodeChildren(data, offset, offset + 1 + lengthLength, lengthLength + length);\n }\n else if (data[offset] >= 0xc0) {\n const length = data[offset] - 0xc0;\n checkOffset(offset + 1 + length);\n return _decodeChildren(data, offset, offset + 1, length);\n }\n else if (data[offset] >= 0xb8) {\n const lengthLength = data[offset] - 0xb7;\n checkOffset(offset + 1 + lengthLength);\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n checkOffset(offset + 1 + lengthLength + length);\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 checkOffset(offset + 1 + length);\n const result = hexlify(data.slice(offset + 1, offset + 1 + length));\n return { consumed: (1 + length), result: result };\n }\n return { consumed: 1, result: hexlifyByte(data[offset]) };\n}\nexport function decodeRlp(_data) {\n const data = logger.getBytes(_data, \"data\");\n const decoded = _decode(data, 0);\n if (decoded.consumed !== data.length) {\n logger.throwArgumentError(\"unexpected junk after rlp payload\", \"data\", _data);\n }\n return decoded.result;\n}\n//# sourceMappingURL=decode.js.map","import { concat, dataSlice } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { encodeRlp } from \"@ethersproject/rlp\";\nimport { getAddress } from \"./address.js\";\nimport { logger } from \"./logger.js\";\n// http://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed\nexport function getCreateAddress(tx) {\n const from = getAddress(tx.from);\n const nonce = logger.getBigInt(tx.nonce, \"tx.nonce\");\n let nonceHex = nonce.toString(16);\n if (nonceHex === \"0\") {\n nonceHex = \"0x\";\n }\n else if (nonceHex.length % 2) {\n nonceHex = \"0x0\" + nonceHex;\n }\n else {\n nonceHex = \"0x\" + nonceHex;\n }\n return getAddress(dataSlice(keccak256(encodeRlp([from, nonceHex])), 12));\n}\nexport function getCreate2Address(_from, _salt, _initCodeHash) {\n const from = getAddress(_from);\n const salt = logger.getBytes(_salt, \"salt\");\n const initCodeHash = logger.getBytes(_initCodeHash, \"initCodeHash\");\n if (salt.length !== 32) {\n logger.throwArgumentError(\"salt must be 32 bytes\", \"salt\", _salt);\n }\n if (initCodeHash.length !== 32) {\n logger.throwArgumentError(\"initCodeHash must be 32 bytes\", \"initCodeHash\", _initCodeHash);\n }\n return getAddress(dataSlice(keccak256(concat([\"0xff\", from, salt, initCodeHash])), 12));\n}\n//# sourceMappingURL=contract-address.js.map","import { getAddress } from \"./address.js\";\nimport { logger } from \"./logger.js\";\nexport function isAddressable(value) {\n return (value && typeof (value.getAddress) === \"function\");\n}\nexport function isAddress(value) {\n try {\n getAddress(value);\n return true;\n }\n catch (error) { }\n return false;\n}\n// Resolves an Ethereum address, ENS name or Addressable object,\n// throwing if the result is null; an explicit null returns null\n//export async function resolveAddress(target?: null, resolver?: null | NameResolver): Promise<null>;\n//export async function resolveAddress(target: string | Addressable, resolver?: null | NameResolver): Promise<string>;\n//export async function resolveAddress(target: null | undefined | string | Addressable, resolver?: null | NameResolver) {\nexport async function resolveAddress(target, resolver) {\n //if (target == null) { return null; }\n if (typeof (target) === \"string\") {\n if (target.match(/^0x[0-9a-f]{40}$/i)) {\n return getAddress(target);\n }\n if (resolver == null) {\n return logger.throwError(\"ENS resolution requires a provider\", \"UNSUPPORTED_OPERATION\", {\n operation: \"resolveName\",\n });\n }\n const result = await resolver.resolveName(target);\n if (result == null || result === \"0x0000000000000000000000000000000000000000\") {\n return logger.throwError(\"unconfigured name\", \"UNCONFIGURED_NAME\", { value: target });\n }\n return getAddress(result);\n }\n else if (isAddressable(target)) {\n const result = await target.getAddress();\n if (result == null) {\n logger.throwArgumentError(\"addressable resolved to null\", \"target\", target);\n }\n return getAddress(result);\n }\n return logger.throwArgumentError(\"unsupported addressable value\", \"target\", target);\n}\n//# sourceMappingURL=checks.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Typed_options;\nimport { defineProperties } from \"@ethersproject/properties\";\nconst _gaurd = {};\nfunction n(value, width) {\n let signed = false;\n if (width < 0) {\n signed = true;\n width *= -1;\n }\n // @TODO: Check range is valid for value\n return new Typed(_gaurd, `${signed ? \"\" : \"u\"}int${width}`, value, { signed, width });\n}\nfunction b(value, size) {\n // @TODO: Check range is valid for value\n return new Typed(_gaurd, `bytes${(size) ? size : \"\"}`, value, { size });\n}\nconst _typedSymbol = Symbol.for(\"_ethers_typed\");\nexport class Typed {\n constructor(gaurd, type, value, options = null) {\n _Typed_options.set(this, void 0);\n if (gaurd !== _gaurd) {\n throw new Error(\"private constructor\");\n }\n defineProperties(this, { _typedSymbol, type, value });\n __classPrivateFieldSet(this, _Typed_options, options, \"f\");\n // Check the value is valid\n this.format();\n }\n format() {\n if (this.type === \"array\") {\n throw new Error(\"\");\n }\n else if (this.type === \"dynamicArray\") {\n throw new Error(\"\");\n }\n else if (this.type === \"tuple\") {\n return `tuple(${this.value.map((v) => v.format()).join(\",\")})`;\n }\n return this.type;\n }\n defaultValue() {\n return 0;\n }\n minValue() {\n return 0;\n }\n maxValue() {\n return 0;\n }\n isBigInt() {\n return !!(this.type.match(/^u?int[0-9]+$/));\n }\n isData() {\n return (this.type.substring(0, 5) === \"bytes\");\n }\n isString() {\n return (this.type === \"string\");\n }\n get tupleName() {\n if (this.type !== \"tuple\") {\n throw TypeError(\"not a tuple\");\n }\n return __classPrivateFieldGet(this, _Typed_options, \"f\");\n }\n // Returns the length of this type as an array\n // - `null` indicates the length is unforced, it could be dynamic\n // - `-1` indicates the length is dynamic\n // - any other value indicates it is a static array and is its length\n get arrayLength() {\n if (this.type !== \"array\") {\n throw TypeError(\"not an array\");\n }\n if (__classPrivateFieldGet(this, _Typed_options, \"f\") === true) {\n return -1;\n }\n if (__classPrivateFieldGet(this, _Typed_options, \"f\") === false) {\n return (this.value).length;\n }\n return null;\n }\n static from(type, value) {\n return new Typed(_gaurd, type, value);\n }\n static uint8(v) { return n(v, 8); }\n static uint16(v) { return n(v, 16); }\n static uint24(v) { return n(v, 24); }\n static uint32(v) { return n(v, 32); }\n static uint40(v) { return n(v, 40); }\n static uint48(v) { return n(v, 46); }\n static uint56(v) { return n(v, 56); }\n static uint64(v) { return n(v, 64); }\n static uint72(v) { return n(v, 72); }\n static uint80(v) { return n(v, 80); }\n static uint88(v) { return n(v, 88); }\n static uint96(v) { return n(v, 96); }\n static uint104(v) { return n(v, 104); }\n static uint112(v) { return n(v, 112); }\n static uint120(v) { return n(v, 120); }\n static uint128(v) { return n(v, 128); }\n static uint136(v) { return n(v, 136); }\n static uint144(v) { return n(v, 144); }\n static uint152(v) { return n(v, 152); }\n static uint160(v) { return n(v, 160); }\n static uint168(v) { return n(v, 168); }\n static uint176(v) { return n(v, 176); }\n static uint184(v) { return n(v, 184); }\n static uint192(v) { return n(v, 192); }\n static uint200(v) { return n(v, 200); }\n static uint208(v) { return n(v, 208); }\n static uint216(v) { return n(v, 216); }\n static uint224(v) { return n(v, 224); }\n static uint232(v) { return n(v, 232); }\n static uint240(v) { return n(v, 240); }\n static uint248(v) { return n(v, 248); }\n static uint256(v) { return n(v, 256); }\n static uint(v) { return n(v, 256); }\n static int8(v) { return n(v, -8); }\n static int16(v) { return n(v, -16); }\n static int24(v) { return n(v, -24); }\n static int32(v) { return n(v, -32); }\n static int40(v) { return n(v, -40); }\n static int48(v) { return n(v, -46); }\n static int56(v) { return n(v, -56); }\n static int64(v) { return n(v, -64); }\n static int72(v) { return n(v, -72); }\n static int80(v) { return n(v, -80); }\n static int88(v) { return n(v, -88); }\n static int96(v) { return n(v, -96); }\n static int104(v) { return n(v, -104); }\n static int112(v) { return n(v, -112); }\n static int120(v) { return n(v, -120); }\n static int128(v) { return n(v, -128); }\n static int136(v) { return n(v, -136); }\n static int144(v) { return n(v, -144); }\n static int152(v) { return n(v, -152); }\n static int160(v) { return n(v, -160); }\n static int168(v) { return n(v, -168); }\n static int176(v) { return n(v, -176); }\n static int184(v) { return n(v, -184); }\n static int192(v) { return n(v, -192); }\n static int200(v) { return n(v, -200); }\n static int208(v) { return n(v, -208); }\n static int216(v) { return n(v, -216); }\n static int224(v) { return n(v, -224); }\n static int232(v) { return n(v, -232); }\n static int240(v) { return n(v, -240); }\n static int248(v) { return n(v, -248); }\n static int256(v) { return n(v, -256); }\n static int(v) { return n(v, -256); }\n static bytes(v) { return b(v); }\n static bytes1(v) { return b(v, 1); }\n static bytes2(v) { return b(v, 2); }\n static bytes3(v) { return b(v, 3); }\n static bytes4(v) { return b(v, 4); }\n static bytes5(v) { return b(v, 5); }\n static bytes6(v) { return b(v, 6); }\n static bytes7(v) { return b(v, 7); }\n static bytes8(v) { return b(v, 8); }\n static bytes9(v) { return b(v, 9); }\n static bytes10(v) { return b(v, 10); }\n static bytes11(v) { return b(v, 11); }\n static bytes12(v) { return b(v, 12); }\n static bytes13(v) { return b(v, 13); }\n static bytes14(v) { return b(v, 14); }\n static bytes15(v) { return b(v, 15); }\n static bytes16(v) { return b(v, 16); }\n static bytes17(v) { return b(v, 17); }\n static bytes18(v) { return b(v, 18); }\n static bytes19(v) { return b(v, 19); }\n static bytes20(v) { return b(v, 20); }\n static bytes21(v) { return b(v, 21); }\n static bytes22(v) { return b(v, 22); }\n static bytes23(v) { return b(v, 23); }\n static bytes24(v) { return b(v, 24); }\n static bytes25(v) { return b(v, 25); }\n static bytes26(v) { return b(v, 26); }\n static bytes27(v) { return b(v, 27); }\n static bytes28(v) { return b(v, 28); }\n static bytes29(v) { return b(v, 29); }\n static bytes30(v) { return b(v, 30); }\n static bytes31(v) { return b(v, 31); }\n static bytes32(v) { return b(v, 32); }\n static address(v) { return new Typed(_gaurd, \"address\", v); }\n static bool(v) { return new Typed(_gaurd, \"bool\", !!v); }\n static string(v) { return new Typed(_gaurd, \"string\", v); }\n static array(v, dynamic) {\n throw new Error(\"not implemented yet\");\n return new Typed(_gaurd, \"array\", v, dynamic);\n }\n static tuple(v, name) {\n throw new Error(\"not implemented yet\");\n return new Typed(_gaurd, \"tuple\", v, name);\n }\n static overrides(v) {\n return new Typed(_gaurd, \"overrides\", Object.assign({}, v));\n }\n static isTyped(value) {\n return (value && value._typedSymbol === _typedSymbol);\n }\n static dereference(value, type) {\n if (Typed.isTyped(value)) {\n if (value.type !== type) {\n throw new Error(`invalid type: expecetd ${type}, got ${value.type}`);\n }\n return value.value;\n }\n return value;\n }\n}\n_Typed_options = new WeakMap();\n//# sourceMappingURL=typed.js.map","import { getAddress } from \"@ethersproject/address\";\nimport { toHex } from \"@ethersproject/math\";\nimport { Typed } from \"../typed.js\";\nimport { Coder } from \"./abstract-coder.js\";\nexport class AddressCoder extends Coder {\n constructor(localName) {\n super(\"address\", \"address\", localName, false);\n }\n defaultValue() {\n return \"0x0000000000000000000000000000000000000000\";\n }\n encode(writer, _value) {\n let value = Typed.dereference(_value, \"string\");\n try {\n value = getAddress(value);\n }\n catch (error) {\n return this._throwError(error.message, _value);\n }\n return writer.writeValue(value);\n }\n decode(reader) {\n return getAddress(toHex(reader.readValue(), 20));\n }\n}\n//# sourceMappingURL=address.js.map","import { Coder } from \"./abstract-coder.js\";\n// Clones the functionality of an existing Coder, but without a localName\nexport class AnonymousCoder extends Coder {\n constructor(coder) {\n super(coder.name, coder.type, \"_\", coder.dynamic);\n this.coder = coder;\n }\n defaultValue() {\n return this.coder.defaultValue();\n }\n encode(writer, value) {\n return this.coder.encode(writer, value);\n }\n decode(reader) {\n return this.coder.decode(reader);\n }\n}\n//# sourceMappingURL=anonymous.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { isError } from \"@ethersproject/logger\";\nimport { logger } from \"../logger.js\";\nimport { Typed } from \"../typed.js\";\nimport { Coder, Result, WordSize, Writer } from \"./abstract-coder.js\";\nimport { AnonymousCoder } from \"./anonymous.js\";\nexport function pack(writer, coders, values) {\n let arrayValues = [];\n if (Array.isArray(values)) {\n arrayValues = values;\n }\n else if (values && typeof (values) === \"object\") {\n let unique = {};\n arrayValues = coders.map((coder) => {\n const name = coder.localName;\n if (!name) {\n logger.throwError(\"cannot encode object for signature with missing names\", \"INVALID_ARGUMENT\", {\n argument: \"values\",\n info: { coder },\n value: values\n });\n }\n if (unique[name]) {\n logger.throwError(\"cannot encode object for signature with duplicate names\", \"INVALID_ARGUMENT\", {\n argument: \"values\",\n info: { coder },\n value: values\n });\n }\n unique[name] = true;\n return values[name];\n });\n }\n else {\n logger.throwArgumentError(\"invalid tuple value\", \"tuple\", values);\n }\n if (coders.length !== arrayValues.length) {\n logger.throwArgumentError(\"types/value length mismatch\", \"tuple\", values);\n }\n let staticWriter = new Writer();\n let dynamicWriter = new Writer();\n let updateFuncs = [];\n coders.forEach((coder, index) => {\n let value = arrayValues[index];\n if (coder.dynamic) {\n // Get current dynamic offset (for the future pointer)\n let dynamicOffset = dynamicWriter.length;\n // Encode the dynamic value into the dynamicWriter\n coder.encode(dynamicWriter, value);\n // Prepare to populate the correct offset once we are done\n let updateFunc = staticWriter.writeUpdatableValue();\n updateFuncs.push((baseOffset) => {\n updateFunc(baseOffset + dynamicOffset);\n });\n }\n else {\n coder.encode(staticWriter, value);\n }\n });\n // Backfill all the dynamic offsets, now that we know the static length\n updateFuncs.forEach((func) => { func(staticWriter.length); });\n let length = writer.appendWriter(staticWriter);\n length += writer.appendWriter(dynamicWriter);\n return length;\n}\nexport function unpack(reader, coders) {\n let values = [];\n let keys = [];\n // A reader anchored to this base\n let baseReader = reader.subReader(0);\n coders.forEach((coder) => {\n let value = null;\n if (coder.dynamic) {\n let offset = reader.readIndex();\n let offsetReader = baseReader.subReader(offset);\n try {\n value = coder.decode(offsetReader);\n }\n catch (error) {\n // Cannot recover from this\n if (isError(error, \"BUFFER_OVERRUN\")) {\n throw error;\n }\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 }\n catch (error) {\n // Cannot recover from this\n if (isError(error, \"BUFFER_OVERRUN\")) {\n throw error;\n }\n value = error;\n value.baseType = coder.name;\n value.name = coder.localName;\n value.type = coder.type;\n }\n }\n if (value == undefined) {\n throw new Error(\"investigate\");\n }\n values.push(value);\n keys.push(coder.localName || null);\n });\n return Result.fromItems(values, keys);\n}\nexport class ArrayCoder extends Coder {\n constructor(coder, length, localName) {\n const type = (coder.type + \"[\" + (length >= 0 ? length : \"\") + \"]\");\n const dynamic = (length === -1 || coder.dynamic);\n super(\"array\", type, localName, dynamic);\n defineProperties(this, { coder, length });\n }\n defaultValue() {\n // Verifies the child coder is valid (even if the array is dynamic or 0-length)\n const defaultChild = this.coder.defaultValue();\n const result = [];\n for (let i = 0; i < this.length; i++) {\n result.push(defaultChild);\n }\n return result;\n }\n encode(writer, _value) {\n const value = Typed.dereference(_value, \"array\");\n if (!Array.isArray(value)) {\n this._throwError(\"expected array value\", value);\n }\n let count = this.length;\n if (count === -1) {\n count = value.length;\n writer.writeValue(value.length);\n }\n logger.assertArgumentCount(value.length, count, \"coder array\" + (this.localName ? (\" \" + this.localName) : \"\"));\n let coders = [];\n for (let i = 0; i < value.length; i++) {\n coders.push(this.coder);\n }\n return pack(writer, coders, value);\n }\n decode(reader) {\n let count = this.length;\n if (count === -1) {\n count = reader.readIndex();\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 * WordSize > reader.dataLength) {\n logger.throwError(\"insufficient data length\", \"BUFFER_OVERRUN\", {\n buffer: reader.bytes,\n offset: count * WordSize,\n length: reader.dataLength\n });\n }\n }\n let coders = [];\n for (let i = 0; i < count; i++) {\n coders.push(new AnonymousCoder(this.coder));\n }\n return unpack(reader, coders);\n }\n}\n//# sourceMappingURL=array.js.map","import { Typed } from \"../typed.js\";\nimport { Coder } from \"./abstract-coder.js\";\nexport class BooleanCoder extends Coder {\n constructor(localName) {\n super(\"bool\", \"bool\", localName, false);\n }\n defaultValue() {\n return false;\n }\n encode(writer, _value) {\n const value = Typed.dereference(_value, \"bool\");\n return writer.writeValue(value ? 1 : 0);\n }\n decode(reader) {\n return !!reader.readValue();\n }\n}\n//# sourceMappingURL=boolean.js.map","import { arrayify, hexlify } from \"@ethersproject/bytes\";\nimport { Coder } from \"./abstract-coder.js\";\nexport class DynamicBytesCoder extends Coder {\n constructor(type, localName) {\n super(type, type, localName, true);\n }\n defaultValue() {\n return \"0x\";\n }\n encode(writer, value) {\n value = arrayify(value);\n let length = writer.writeValue(value.length);\n length += writer.writeBytes(value);\n return length;\n }\n decode(reader) {\n return reader.readBytes(reader.readIndex(), true);\n }\n}\nexport class BytesCoder extends DynamicBytesCoder {\n constructor(localName) {\n super(\"bytes\", localName);\n }\n decode(reader) {\n return hexlify(super.decode(reader));\n }\n}\n//# sourceMappingURL=bytes.js.map","import { arrayify, hexlify } from \"@ethersproject/bytes\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { Typed } from \"../typed.js\";\nimport { Coder } from \"./abstract-coder.js\";\nexport class FixedBytesCoder extends Coder {\n constructor(size, localName) {\n let name = \"bytes\" + String(size);\n super(name, name, localName, false);\n defineProperties(this, { size }, { size: \"number\" });\n }\n defaultValue() {\n return (\"0x0000000000000000000000000000000000000000000000000000000000000000\").substring(0, 2 + this.size * 2);\n }\n encode(writer, _value) {\n let data = arrayify(Typed.dereference(_value, this.type));\n if (data.length !== this.size) {\n this._throwError(\"incorrect data length\", _value);\n }\n return writer.writeBytes(data);\n }\n decode(reader) {\n return hexlify(reader.readBytes(this.size));\n }\n}\n//# sourceMappingURL=fixed-bytes.js.map","import { Coder } from \"./abstract-coder.js\";\nconst Empty = new Uint8Array([]);\nexport class NullCoder extends Coder {\n constructor(localName) {\n super(\"null\", \"\", localName, false);\n }\n defaultValue() {\n return null;\n }\n encode(writer, value) {\n if (value != null) {\n this._throwError(\"not null\", value);\n }\n return writer.writeBytes(Empty);\n }\n decode(reader) {\n reader.readBytes(0);\n return null;\n }\n}\n//# sourceMappingURL=null.js.map","import { fromTwos, mask, toTwos } from \"@ethersproject/math\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { logger } from \"../logger.js\";\nimport { Typed } from \"../typed.js\";\nimport { Coder, WordSize } from \"./abstract-coder.js\";\nconst BN_0 = BigInt(0);\nconst BN_1 = BigInt(1);\nconst BN_MAX_UINT256 = BigInt(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\nexport class NumberCoder extends Coder {\n constructor(size, signed, localName) {\n const name = ((signed ? \"int\" : \"uint\") + (size * 8));\n super(name, name, localName, false);\n defineProperties(this, { size, signed }, { size: \"number\", signed: \"boolean\" });\n }\n defaultValue() {\n return 0;\n }\n encode(writer, _value) {\n let value = logger.getBigInt(Typed.dereference(_value, this.type));\n // Check bounds are safe for encoding\n let maxUintValue = mask(BN_MAX_UINT256, WordSize * 8);\n if (this.signed) {\n let bounds = mask(maxUintValue, (this.size * 8) - 1);\n if (value > bounds || value < -(bounds + BN_1)) {\n this._throwError(\"value out-of-bounds\", _value);\n }\n }\n else if (value < BN_0 || value > mask(maxUintValue, this.size * 8)) {\n this._throwError(\"value out-of-bounds\", _value);\n }\n value = mask(toTwos(value, this.size * 8), this.size * 8);\n if (this.signed) {\n value = toTwos(fromTwos(value, this.size * 8), 8 * WordSize);\n }\n return writer.writeValue(value);\n }\n decode(reader) {\n let value = mask(reader.readValue(), this.size * 8);\n if (this.signed) {\n value = fromTwos(value, this.size * 8);\n }\n return value;\n }\n}\n//# sourceMappingURL=number.js.map","export const version = \"@ethersproject/strings@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { logger } from \"./logger.js\";\n///////////////////////////////\nexport var UnicodeNormalizationForm;\n(function (UnicodeNormalizationForm) {\n UnicodeNormalizationForm[\"current\"] = \"\";\n UnicodeNormalizationForm[\"NFC\"] = \"NFC\";\n UnicodeNormalizationForm[\"NFD\"] = \"NFD\";\n UnicodeNormalizationForm[\"NFKC\"] = \"NFKC\";\n UnicodeNormalizationForm[\"NFKD\"] = \"NFKD\";\n})(UnicodeNormalizationForm || (UnicodeNormalizationForm = {}));\n;\nexport var Utf8ErrorReason;\n(function (Utf8ErrorReason) {\n // A continuation byte was present where there was nothing to continue\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"UNEXPECTED_CONTINUE\"] = \"unexpected continuation byte\";\n // An invalid (non-continuation) byte to start a UTF-8 codepoint was found\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"BAD_PREFIX\"] = \"bad codepoint prefix\";\n // The string is too short to process the expected codepoint\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"OVERRUN\"] = \"string overrun\";\n // A missing continuation byte was expected but not found\n // - offset = the index the continuation byte was expected at\n Utf8ErrorReason[\"MISSING_CONTINUE\"] = \"missing continuation byte\";\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 Utf8ErrorReason[\"OUT_OF_RANGE\"] = \"out of UTF-8 range\";\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 Utf8ErrorReason[\"UTF16_SURROGATE\"] = \"UTF-16 surrogate\";\n // The string is an overlong representation\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; already bounds checked\n Utf8ErrorReason[\"OVERLONG\"] = \"overlong representation\";\n})(Utf8ErrorReason || (Utf8ErrorReason = {}));\n;\nfunction errorFunc(reason, offset, bytes, output, badCodepoint) {\n return logger.throwArgumentError(`invalid codepoint at offset ${offset}; ${reason}`, \"bytes\", bytes);\n}\nfunction ignoreFunc(reason, offset, bytes, output, badCodepoint) {\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) {\n break;\n }\n i++;\n }\n return i;\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 // Nothing to skip\n return 0;\n}\nfunction replaceFunc(reason, offset, bytes, output, badCodepoint) {\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === Utf8ErrorReason.OVERLONG) {\n output.push((badCodepoint != null) ? badCodepoint : -1);\n return 0;\n }\n // Put the replacement character into the output\n output.push(0xfffd);\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n// Common error handing strategies\nexport const Utf8ErrorFuncs = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(_bytes, onError) {\n if (onError == null) {\n onError = Utf8ErrorFuncs.error;\n }\n const bytes = logger.getBytes(_bytes, \"bytes\");\n const result = [];\n let i = 0;\n // Invalid bytes are ignored\n while (i < bytes.length) {\n const c = bytes[i++];\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n // 1110 xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n }\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 }\n else {\n i += onError(Utf8ErrorReason.BAD_PREFIX, i - 1, bytes, result);\n }\n continue;\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 // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\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 // See above loop for invalid continuation byte\n if (res === null) {\n 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 // 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 // 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 result.push(res);\n }\n return result;\n}\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\nexport function toUtf8Bytes(str, form = UnicodeNormalizationForm.current) {\n if (form != UnicodeNormalizationForm.current) {\n logger.assertNormalize(form);\n str = str.normalize(form);\n }\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\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 if (i >= str.length || (c2 & 0xfc00) !== 0xdc00) {\n throw new Error(\"invalid utf-8 string\");\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 return new Uint8Array(result);\n}\n;\nfunction escapeChar(value) {\n const hex = (\"0000\" + value.toString(16));\n return \"\\\\u\" + hex.substring(hex.length - 4);\n}\nexport function _toEscapedUtf8String(bytes, onError) {\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 if (codePoint >= 32 && codePoint < 127) {\n return String.fromCharCode(codePoint);\n }\n }\n if (codePoint <= 0xffff) {\n return escapeChar(codePoint);\n }\n codePoint -= 0x10000;\n return escapeChar(((codePoint >> 10) & 0x3ff) + 0xd800) + escapeChar((codePoint & 0x3ff) + 0xdc00);\n }).join(\"\") + '\"';\n}\nexport function _toUtf8String(codePoints) {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode((((codePoint >> 10) & 0x3ff) + 0xd800), ((codePoint & 0x3ff) + 0xdc00));\n }).join(\"\");\n}\nexport function toUtf8String(bytes, onError) {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\nexport function toUtf8CodePoints(str, form = UnicodeNormalizationForm.current) {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n//# sourceMappingURL=utf8.js.map","import { zeroPadBytes } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nimport { toUtf8Bytes, toUtf8String } from \"./utf8.js\";\nexport function formatBytes32String(text) {\n // Get the bytes\n const bytes = toUtf8Bytes(text);\n // Check we have room for null-termination\n if (bytes.length > 31) {\n throw new Error(\"bytes32 string must be less than 32 bytes\");\n }\n // Zero-pad (implicitly null-terminates)\n return zeroPadBytes(bytes, 32);\n}\nexport function parseBytes32String(_bytes) {\n const data = logger.getBytes(_bytes, \"bytes\");\n // Must be 32 bytes with a null-termination\n if (data.length !== 32) {\n throw new Error(\"invalid bytes32 - not 32 bytes long\");\n }\n if (data[31] !== 0) {\n 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) {\n length--;\n }\n // Determine the string value\n return toUtf8String(data.slice(0, length));\n}\n//# sourceMappingURL=bytes32.js.map","import { logger } from \"./logger.js\";\nimport { toUtf8CodePoints, _toUtf8String, UnicodeNormalizationForm } from \"./utf8.js\";\nfunction bytes2(data) {\n if ((data.length % 4) !== 0) {\n throw new Error(\"should not happen; bad data\");\n }\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}\nfunction createTable(data, _func) {\n const func = _func || function (value) { return [parseInt(value, 16)]; };\n let lo = 0;\n let result = {};\n data.split(\",\").forEach((pair) => {\n let comps = pair.split(\":\");\n lo += parseInt(comps[0], 16);\n result[lo] = func(comps[1]);\n });\n return result;\n}\nfunction createRangeTable(data) {\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 }\n else if (comps[1] === \"\") {\n comps[1] = \"1\";\n }\n let lo = hi + parseInt(comps[0], 16);\n hi = parseInt(comps[1], 16);\n return { l: lo, h: hi };\n });\n}\nfunction matchMap(value, ranges) {\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) {\n continue;\n }\n return range;\n }\n }\n return null;\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// @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));\nconst Table_B_2_ranges = [\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);\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\");\nfunction flatten(values) {\n return values.reduce((accum, value) => {\n value.forEach((value) => { accum.push(value); });\n return accum;\n }, []);\n}\nexport function _nameprepTableA1(codepoint) {\n return !!matchMap(codepoint, Table_A_1_ranges);\n}\nexport function _nameprepTableB2(codepoint) {\n const range = matchMap(codepoint, Table_B_2_ranges);\n if (range) {\n if (range.s == null) {\n throw new Error(\"should not happenl bad range\");\n }\n return [codepoint + range.s];\n }\n const codes = Table_B_2_lut_abs[codepoint];\n if (codes) {\n return codes;\n }\n const shift = Table_B_2_lut_rel[codepoint];\n if (shift) {\n return [codepoint + shift[0]];\n }\n const complex = Table_B_2_complex[codepoint];\n if (complex) {\n return complex;\n }\n return null;\n}\nexport function _nameprepTableC(codepoint) {\n return !!matchMap(codepoint, Table_C_ranges);\n}\nexport function nameprep(value) {\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) {\n return value.toLowerCase();\n }\n // Get the code points (keeping the current normalization)\n let codes = toUtf8CodePoints(value);\n codes = flatten(codes.map((code) => {\n // Substitute Table B.1 (Maps to Nothing)\n if (Table_B_1_flags.indexOf(code) >= 0) {\n return [];\n }\n if (code >= 0xfe00 && code <= 0xfe0f) {\n return [];\n }\n // Substitute Table B.2 (Case Folding)\n let codesTableB2 = _nameprepTableB2(code);\n if (codesTableB2) {\n return codesTableB2;\n }\n // No Substitution\n return [code];\n }));\n // Normalize using form KC\n codes = toUtf8CodePoints(_toUtf8String(codes), UnicodeNormalizationForm.NFKC);\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 logger.throwArgumentError(\"STRINGPREP_CONTAINS_PROHIBITED\", \"value\", value);\n }\n });\n // Prohibit Unassigned Code Points (Table A.1)\n codes.forEach((code) => {\n if (_nameprepTableA1(code)) {\n logger.throwArgumentError(\"STRINGPREP_CONTAINS_UNASSIGNED\", \"value\", value);\n }\n });\n // IDNA extras\n let name = _toUtf8String(codes);\n // IDNA: 4.2.3.1\n if (name.substring(0, 1) === \"-\" || name.substring(2, 4) === \"--\" || name.substring(name.length - 1) === \"-\") {\n logger.throwArgumentError(\"invalid hyphen\", \"value\", value);\n }\n // IDNA: 4.2.4\n if (name.length > 63) {\n logger.throwArgumentError(\"too long\", \"value\", value);\n }\n return name;\n}\n//# sourceMappingURL=idna.js.map","import { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { Typed } from \"../typed.js\";\nimport { DynamicBytesCoder } from \"./bytes.js\";\nexport class StringCoder extends DynamicBytesCoder {\n constructor(localName) {\n super(\"string\", localName);\n }\n defaultValue() {\n return \"\";\n }\n encode(writer, _value) {\n return super.encode(writer, toUtf8Bytes(Typed.dereference(_value, \"string\")));\n }\n decode(reader) {\n return toUtf8String(super.decode(reader));\n }\n}\n//# sourceMappingURL=string.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { Typed } from \"../typed.js\";\nimport { Coder } from \"./abstract-coder.js\";\nimport { pack, unpack } from \"./array.js\";\nexport class TupleCoder extends Coder {\n constructor(coders, localName) {\n let dynamic = false;\n const types = [];\n coders.forEach((coder) => {\n if (coder.dynamic) {\n dynamic = true;\n }\n types.push(coder.type);\n });\n const type = (\"tuple(\" + types.join(\",\") + \")\");\n super(\"tuple\", type, localName, dynamic);\n defineProperties(this, { coders: Object.freeze(coders.slice()) });\n }\n defaultValue() {\n const values = [];\n this.coders.forEach((coder) => {\n values.push(coder.defaultValue());\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]) {\n accum[name] = 0;\n }\n accum[name]++;\n }\n return accum;\n }, {});\n // Add named values\n this.coders.forEach((coder, index) => {\n let name = coder.localName;\n if (!name || uniqueNames[name] !== 1) {\n return;\n }\n if (name === \"length\") {\n name = \"_length\";\n }\n if (values[name] != null) {\n return;\n }\n values[name] = values[index];\n });\n return Object.freeze(values);\n }\n encode(writer, _value) {\n const value = Typed.dereference(_value, \"tuple\");\n return pack(writer, this.coders, value);\n }\n decode(reader) {\n return unpack(reader, this.coders);\n }\n}\n//# sourceMappingURL=tuple.js.map","// See: https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _AbiCoder_instances, _AbiCoder_getCoder;\nimport { logger } from \"./logger.js\";\nimport { Reader, Writer } from \"./coders/abstract-coder.js\";\nimport { AddressCoder } from \"./coders/address.js\";\nimport { ArrayCoder } from \"./coders/array.js\";\nimport { BooleanCoder } from \"./coders/boolean.js\";\nimport { BytesCoder } from \"./coders/bytes.js\";\nimport { FixedBytesCoder } from \"./coders/fixed-bytes.js\";\nimport { NullCoder } from \"./coders/null.js\";\nimport { NumberCoder } from \"./coders/number.js\";\nimport { StringCoder } from \"./coders/string.js\";\nimport { TupleCoder } from \"./coders/tuple.js\";\nimport { ParamType } from \"./fragments.js\";\nconst paramTypeBytes = new RegExp(/^bytes([0-9]*)$/);\nconst paramTypeNumber = new RegExp(/^(u?int)([0-9]*)$/);\nexport class AbiCoder {\n constructor() {\n _AbiCoder_instances.add(this);\n }\n getDefaultValue(types) {\n const coders = types.map((type) => __classPrivateFieldGet(this, _AbiCoder_instances, \"m\", _AbiCoder_getCoder).call(this, ParamType.from(type)));\n const coder = new TupleCoder(coders, \"_\");\n return coder.defaultValue();\n }\n encode(types, values) {\n logger.assertArgumentCount(values.length, types.length, \"types/values length mismatch\");\n const coders = types.map((type) => __classPrivateFieldGet(this, _AbiCoder_instances, \"m\", _AbiCoder_getCoder).call(this, ParamType.from(type)));\n const coder = (new TupleCoder(coders, \"_\"));\n const writer = new Writer();\n coder.encode(writer, values);\n return writer.data;\n }\n decode(types, data, loose) {\n const coders = types.map((type) => __classPrivateFieldGet(this, _AbiCoder_instances, \"m\", _AbiCoder_getCoder).call(this, ParamType.from(type)));\n const coder = new TupleCoder(coders, \"_\");\n return coder.decode(new Reader(data, loose));\n }\n}\n_AbiCoder_instances = new WeakSet(), _AbiCoder_getCoder = function _AbiCoder_getCoder(param) {\n if (param.isArray()) {\n return new ArrayCoder(__classPrivateFieldGet(this, _AbiCoder_instances, \"m\", _AbiCoder_getCoder).call(this, param.arrayChildren), param.arrayLength, param.name);\n }\n if (param.isTuple()) {\n return new TupleCoder(param.components.map((c) => __classPrivateFieldGet(this, _AbiCoder_instances, \"m\", _AbiCoder_getCoder).call(this, c)), param.name);\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 \"\":\n return new NullCoder(param.name);\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 // 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 return logger.throwArgumentError(\"invalid type\", \"type\", param.type);\n};\nexport const defaultAbiCoder = new AbiCoder();\n//# sourceMappingURL=abi-coder.js.map","import { keccak256 } from \"@ethersproject/crypto\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nexport function id(value) {\n return keccak256(toUtf8Bytes(value));\n}\n//# sourceMappingURL=id.js.map","export const version = \"@ethersproject/hash@6.0.0-beta.7\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { concat, hexlify } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { nameprep, toUtf8Bytes } from \"@ethersproject/strings\";\nimport { logger } from \"./logger.js\";\nconst Zeros = new Uint8Array(32);\nZeros.fill(0);\nconst Partition = new RegExp(\"^((.*)\\\\.)?([^.]+)$\");\nexport function isValidName(name) {\n try {\n const comps = name.split(\".\");\n for (let i = 0; i < comps.length; i++) {\n if (nameprep(comps[i]).length === 0) {\n throw new Error(\"empty\");\n }\n }\n return true;\n }\n catch (error) { }\n return false;\n}\nexport function namehash(name) {\n if (typeof (name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name; not a string\", \"name\", name);\n }\n let current = name;\n let result = Zeros;\n while (current.length) {\n const partition = current.match(Partition);\n if (partition == null || partition[2] === \"\") {\n return logger.throwArgumentError(\"invalid ENS name; missing component\", \"name\", name);\n }\n const label = toUtf8Bytes(nameprep(partition[3]));\n result = keccak256(concat([result, keccak256(label)]));\n current = partition[2] || \"\";\n }\n return hexlify(result);\n}\nexport function dnsEncode(name) {\n if (typeof (name) !== \"string\") {\n logger.throwArgumentError(\"invalid DNS name; not a string\", \"name\", name);\n }\n if (name === \"\") {\n return \"0x00\";\n }\n // @TODO: should we enforce the 255 octet limit?\n return concat(name.split(\".\").map((comp) => {\n if (comp === \"\") {\n logger.throwArgumentError(\"invalid DNS name; missing component\", \"name\", name);\n }\n // We jam in an _ prefix to fill in with the length later\n // Note: Nameprep throws if the component is over 63 bytes\n const bytes = toUtf8Bytes(\"_\" + nameprep(comp));\n bytes[0] = bytes.length - 1;\n return bytes;\n })) + \"00\";\n}\n//# sourceMappingURL=namehash.js.map","import { concat } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nexport const messagePrefix = \"\\x19Ethereum Signed Message:\\n\";\nexport function hashMessage(message) {\n if (typeof (message) === \"string\") {\n message = toUtf8Bytes(message);\n }\n return keccak256(concat([\n toUtf8Bytes(messagePrefix),\n toUtf8Bytes(String(message.length)),\n message\n ]));\n}\n//# sourceMappingURL=message.js.map","import { concat, dataLength, hexlify, zeroPadBytes, zeroPadValue } from \"@ethersproject/bytes\";\nimport { keccak256 as _keccak256, sha256 as _sha256 } from \"@ethersproject/crypto\";\nimport { toArray, toTwos } from \"@ethersproject/math\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { logger } from \"./logger.js\";\nconst regexBytes = new RegExp(\"^bytes([0-9]+)$\");\nconst regexNumber = new RegExp(\"^(u?int)([0-9]*)$\");\nconst regexArray = new RegExp(\"^(.*)\\\\[([0-9]*)\\\\]$\");\nfunction _pack(type, value, isArray) {\n switch (type) {\n case \"address\":\n if (isArray) {\n return logger.getBytes(zeroPadValue(value, 32));\n }\n return logger.getBytes(value);\n case \"string\":\n return toUtf8Bytes(value);\n case \"bytes\":\n return logger.getBytes(value);\n case \"bool\":\n value = (!!value ? \"0x01\" : \"0x00\");\n if (isArray) {\n return logger.getBytes(zeroPadValue(value, 32));\n }\n return logger.getBytes(value);\n }\n let match = type.match(regexNumber);\n if (match) {\n let size = parseInt(match[2] || \"256\");\n if ((match[2] && String(size) !== match[2]) || (size % 8 !== 0) || size === 0 || size > 256) {\n return logger.throwArgumentError(\"invalid number type\", \"type\", type);\n }\n if (isArray) {\n size = 256;\n }\n value = toTwos(value, size);\n return logger.getBytes(zeroPadValue(toArray(value), size / 8));\n }\n match = type.match(regexBytes);\n if (match) {\n const size = parseInt(match[1]);\n if (String(size) !== match[1] || size === 0 || size > 32) {\n return logger.throwArgumentError(\"invalid bytes type\", \"type\", type);\n }\n if (dataLength(value) !== size) {\n return logger.throwArgumentError(`invalid value for ${type}`, \"value\", value);\n }\n if (isArray) {\n return logger.getBytes(zeroPadBytes(value, 32));\n }\n return value;\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 = [];\n value.forEach(function (value) {\n result.push(_pack(baseType, value, true));\n });\n return logger.getBytes(concat(result));\n }\n return logger.throwArgumentError(\"invalid type\", \"type\", type);\n}\n// @TODO: Array Enum\nexport function solidityPacked(types, values) {\n if (types.length != values.length) {\n logger.throwArgumentError(\"wrong number of values; expected ${ types.length }\", \"values\", values);\n }\n const tight = [];\n types.forEach(function (type, index) {\n tight.push(_pack(type, values[index]));\n });\n return hexlify(concat(tight));\n}\nexport function solidityPackedKeccak256(types, values) {\n return _keccak256(solidityPacked(types, values));\n}\nexport function solidityPackedSha256(types, values) {\n return _sha256(solidityPacked(types, values));\n}\n//# sourceMappingURL=solidity.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _TypedDataEncoder_instances, _TypedDataEncoder_types, _TypedDataEncoder_fullTypes, _TypedDataEncoder_encoderCache, _TypedDataEncoder_getEncoder;\n//import { TypedDataDomain, TypedDataField } from \"@ethersproject/providerabstract-signer\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify, concat, hexlify, zeroPadValue, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { mask, toHex, toTwos } from \"@ethersproject/math\";\nimport { id } from \"./id.js\";\nimport { logger } from \"./logger.js\";\nconst padding = new Uint8Array(32);\npadding.fill(0);\nconst BN__1 = BigInt(-1);\nconst BN_0 = BigInt(0);\nconst BN_1 = BigInt(1);\nconst BN_MAX_UINT256 = BigInt(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\n;\n;\nfunction hexPadRight(value) {\n const bytes = arrayify(value);\n const padOffset = bytes.length % 32;\n if (padOffset) {\n return concat([bytes, padding.slice(padOffset)]);\n }\n return hexlify(bytes);\n}\nconst hexTrue = toHex(BN_1, 32);\nconst hexFalse = toHex(BN_0, 32);\nconst domainFieldTypes = {\n name: \"string\",\n version: \"string\",\n chainId: \"uint256\",\n verifyingContract: \"address\",\n salt: \"bytes32\"\n};\nconst domainFieldNames = [\n \"name\", \"version\", \"chainId\", \"verifyingContract\", \"salt\"\n];\nfunction checkString(key) {\n return function (value) {\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid domain value for ${JSON.stringify(key)}`, `domain.${key}`, value);\n }\n return value;\n };\n}\nconst domainChecks = {\n name: checkString(\"name\"),\n version: checkString(\"version\"),\n chainId: function (value) {\n return logger.getBigInt(value, \"domain.chainId\");\n },\n verifyingContract: function (value) {\n try {\n return getAddress(value).toLowerCase();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"verifyingContract\"`, \"domain.verifyingContract\", value);\n },\n salt: function (value) {\n const bytes = logger.getBytes(value, \"domain.salt\");\n if (bytes.length !== 32) {\n logger.throwArgumentError(`invalid domain value \"salt\"`, \"domain.salt\", value);\n }\n return hexlify(bytes);\n }\n};\nfunction getBaseEncoder(type) {\n // intXX and uintXX\n {\n const match = type.match(/^(u?)int(\\d*)$/);\n if (match) {\n const signed = (match[1] === \"\");\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 const boundsUpper = mask(BN_MAX_UINT256, signed ? (width - 1) : width);\n const boundsLower = signed ? ((boundsUpper + BN_1) * BN__1) : BN_0;\n return function (_value) {\n const value = logger.getBigInt(_value, \"value\");\n if (value < boundsLower || value > boundsUpper) {\n logger.throwArgumentError(`value out-of-bounds for ${type}`, \"value\", value);\n }\n return toHex(toTwos(value, 256), 32);\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 return function (value) {\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 switch (type) {\n case \"address\": return function (value) {\n return zeroPadValue(getAddress(value), 32);\n };\n case \"bool\": return function (value) {\n return ((!value) ? hexFalse : hexTrue);\n };\n case \"bytes\": return function (value) {\n return keccak256(value);\n };\n case \"string\": return function (value) {\n return id(value);\n };\n }\n return null;\n}\nfunction encodeType(name, fields) {\n return `${name}(${fields.map(({ name, type }) => (type + \" \" + name)).join(\",\")})`;\n}\nexport class TypedDataEncoder {\n constructor(types) {\n _TypedDataEncoder_instances.add(this);\n _TypedDataEncoder_types.set(this, void 0);\n _TypedDataEncoder_fullTypes.set(this, void 0);\n _TypedDataEncoder_encoderCache.set(this, void 0);\n __classPrivateFieldSet(this, _TypedDataEncoder_types, JSON.stringify(types), \"f\");\n __classPrivateFieldSet(this, _TypedDataEncoder_fullTypes, new Map(), \"f\");\n __classPrivateFieldSet(this, _TypedDataEncoder_encoderCache, new Map(), \"f\");\n // Link struct types to their direct child structs\n const links = new Map();\n // Link structs to structs which contain them as a child\n const parents = new Map();\n // Link all subtypes within a given struct\n const subtypes = new Map();\n Object.keys(types).forEach((type) => {\n links.set(type, new Set());\n parents.set(type, []);\n subtypes.set(type, new Set());\n });\n for (const name in types) {\n const uniqueNames = new Set();\n for (const field of types[name]) {\n // Check each field has a unique name\n if (uniqueNames.has(field.name)) {\n logger.throwArgumentError(`duplicate variable name ${JSON.stringify(field.name)} in ${JSON.stringify(name)}`, \"types\", types);\n }\n uniqueNames.add(field.name);\n // Get the base type (drop any array specifiers)\n const baseType = (field.type.match(/^([^\\x5b]*)(\\x5b|$)/))[1] || null;\n if (baseType === name) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Is this a base encoding type?\n const encoder = getBaseEncoder(baseType);\n if (encoder) {\n continue;\n }\n if (!parents.has(baseType)) {\n logger.throwArgumentError(`unknown type ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Add linkage\n parents.get(baseType).push(name);\n links.get(name).add(baseType);\n }\n }\n // Deduce the primary type\n const primaryTypes = Array.from(parents.keys()).filter((n) => (parents.get(n).length === 0));\n if (primaryTypes.length === 0) {\n logger.throwArgumentError(\"missing primary type\", \"types\", types);\n }\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 defineProperties(this, { primaryType: primaryTypes[0] });\n // Check for circular type references\n function checkCircular(type, found) {\n if (found.has(type)) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(type)}`, \"types\", types);\n }\n found.add(type);\n for (const child of links.get(type)) {\n if (!parents.has(child)) {\n continue;\n }\n // Recursively check children\n checkCircular(child, found);\n // Mark all ancestors as having this decendant\n for (const subtype of found) {\n subtypes.get(subtype).add(child);\n }\n }\n found.delete(type);\n }\n checkCircular(this.primaryType, new Set());\n // Compute each fully describe type\n for (const [name, set] of subtypes) {\n const st = Array.from(set);\n st.sort();\n __classPrivateFieldGet(this, _TypedDataEncoder_fullTypes, \"f\").set(name, encodeType(name, types[name]) + st.map((t) => encodeType(t, types[t])).join(\"\"));\n }\n }\n get types() {\n return JSON.parse(__classPrivateFieldGet(this, _TypedDataEncoder_types, \"f\"));\n }\n getEncoder(type) {\n let encoder = __classPrivateFieldGet(this, _TypedDataEncoder_encoderCache, \"f\").get(type);\n if (!encoder) {\n encoder = __classPrivateFieldGet(this, _TypedDataEncoder_instances, \"m\", _TypedDataEncoder_getEncoder).call(this, type);\n __classPrivateFieldGet(this, _TypedDataEncoder_encoderCache, \"f\").set(type, encoder);\n }\n return encoder;\n }\n encodeType(name) {\n const result = __classPrivateFieldGet(this, _TypedDataEncoder_fullTypes, \"f\").get(name);\n if (!result) {\n return logger.throwArgumentError(`unknown type: ${JSON.stringify(name)}`, \"name\", name);\n }\n return result;\n }\n encodeData(type, value) {\n return this.getEncoder(type)(value);\n }\n hashStruct(name, value) {\n return keccak256(this.encodeData(name, value));\n }\n encode(value) {\n return this.encodeData(this.primaryType, value);\n }\n hash(value) {\n return this.hashStruct(this.primaryType, value);\n }\n _visit(type, value, callback) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n 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) => this._visit(subtype, v, callback));\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 }, {});\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n visit(value, callback) {\n return this._visit(this.primaryType, value, callback);\n }\n static from(types) {\n return new TypedDataEncoder(types);\n }\n static getPrimaryType(types) {\n return TypedDataEncoder.from(types).primaryType;\n }\n static hashStruct(name, types, value) {\n return TypedDataEncoder.from(types).hashStruct(name, value);\n }\n static hashDomain(domain) {\n const domainFields = [];\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 domainFields.sort((a, b) => {\n return domainFieldNames.indexOf(a.name) - domainFieldNames.indexOf(b.name);\n });\n return TypedDataEncoder.hashStruct(\"EIP712Domain\", { EIP712Domain: domainFields }, domain);\n }\n static encode(domain, types, value) {\n return concat([\n \"0x1901\",\n TypedDataEncoder.hashDomain(domain),\n TypedDataEncoder.from(types).hash(value)\n ]);\n }\n static hash(domain, types, value) {\n return keccak256(TypedDataEncoder.encode(domain, types, value));\n }\n // Replaces all address types with ENS names with their looked up address\n static async resolveNames(domain, types, value, resolveName) {\n // Make a copy to isolate it from the object passed in\n domain = Object.assign({}, domain);\n // Look up all ENS names\n const ensCache = {};\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 // We are going to use the encoder to visit all the base values\n const encoder = TypedDataEncoder.from(types);\n // Get a list of all the addresses\n encoder.visit(value, (type, value) => {\n if (type === \"address\" && !isHexString(value, 20)) {\n ensCache[value] = \"0x\";\n }\n return value;\n });\n // Lookup each name\n for (const name in ensCache) {\n ensCache[name] = await resolveName(name);\n }\n // Replace the domain verifyingContract if needed\n if (domain.verifyingContract && ensCache[domain.verifyingContract]) {\n domain.verifyingContract = ensCache[domain.verifyingContract];\n }\n // Replace all ENS names with their address\n value = encoder.visit(value, (type, value) => {\n if (type === \"address\" && ensCache[value]) {\n return ensCache[value];\n }\n return value;\n });\n return { domain, value };\n }\n static getPayload(domain, types, value) {\n // Validate the domain fields\n TypedDataEncoder.hashDomain(domain);\n // Derive the EIP712Domain Struct reference type\n const domainValues = {};\n const domainTypes = [];\n domainFieldNames.forEach((name) => {\n const value = domain[name];\n if (value == null) {\n return;\n }\n domainValues[name] = domainChecks[name](value);\n domainTypes.push({ name, type: domainFieldTypes[name] });\n });\n const encoder = TypedDataEncoder.from(types);\n const typesWithDomain = Object.assign({}, types);\n if (typesWithDomain.EIP712Domain) {\n logger.throwArgumentError(\"types must not contain EIP712Domain type\", \"types.EIP712Domain\", types);\n }\n else {\n typesWithDomain.EIP712Domain = domainTypes;\n }\n // Validate the data structures and types\n encoder.encode(value);\n return {\n types: typesWithDomain,\n domain: domainValues,\n primaryType: encoder.primaryType,\n message: encoder.visit(value, (type, value) => {\n // bytes\n if (type.match(/^bytes(\\d*)/)) {\n return hexlify(logger.getBytes(value));\n }\n // uint or int\n if (type.match(/^u?int/)) {\n return logger.getBigInt(value).toString();\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 return logger.throwArgumentError(\"unsupported type\", \"type\", type);\n })\n };\n }\n}\n_TypedDataEncoder_types = new WeakMap(), _TypedDataEncoder_fullTypes = new WeakMap(), _TypedDataEncoder_encoderCache = new WeakMap(), _TypedDataEncoder_instances = new WeakSet(), _TypedDataEncoder_getEncoder = function _TypedDataEncoder_getEncoder(type) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n 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) => {\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n let result = value.map(subEncoder);\n if (__classPrivateFieldGet(this, _TypedDataEncoder_fullTypes, \"f\").has(subtype)) {\n result = result.map(keccak256);\n }\n return keccak256(concat(result));\n };\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n const encodedType = id(__classPrivateFieldGet(this, _TypedDataEncoder_fullTypes, \"f\").get(type));\n return (value) => {\n const values = fields.map(({ name, type }) => {\n const result = this.getEncoder(type)(value[name]);\n if (__classPrivateFieldGet(this, _TypedDataEncoder_fullTypes, \"f\").has(type)) {\n return keccak256(result);\n }\n return result;\n });\n values.unshift(encodedType);\n return concat(values);\n };\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n};\n//# sourceMappingURL=typed-data.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Interface_instances, _Interface_errors, _Interface_events, _Interface_functions, _Interface_abiCoder, _Interface_getFunction, _Interface_getEvent;\nimport { arrayify, concat, dataSlice, hexlify, zeroPadValue, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { id } from \"@ethersproject/hash\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { defaultAbiCoder } from \"./abi-coder.js\";\nimport { checkResultErrors, Result } from \"./coders/abstract-coder.js\";\nimport { ConstructorFragment, ErrorFragment, EventFragment, FormatType, Fragment, FunctionFragment, ParamType } from \"./fragments.js\";\nimport { logger } from \"./logger.js\";\nimport { Typed } from \"./typed.js\";\nexport { checkResultErrors, Result };\nexport class LogDescription {\n constructor(fragment, topic, args) {\n const name = fragment.name, signature = fragment.format();\n defineProperties(this, {\n fragment, name, signature, topic, args\n });\n }\n}\nexport class TransactionDescription {\n constructor(fragment, selector, args, value) {\n const name = fragment.name, signature = fragment.format();\n defineProperties(this, {\n fragment, name, args, signature, selector, value\n });\n }\n}\nexport class ErrorDescription {\n constructor(fragment, selector, args) {\n const name = fragment.name, signature = fragment.format();\n defineProperties(this, {\n fragment, name, args, signature, selector\n });\n }\n}\nexport class Indexed {\n constructor(hash) {\n defineProperties(this, { hash, _isIndexed: true });\n }\n static isIndexed(value) {\n return !!(value && value._isIndexed);\n }\n}\n// https://docs.soliditylang.org/en/v0.8.13/control-structures.html?highlight=panic#panic-via-assert-and-error-via-require\nconst PanicReasons = {\n \"0\": \"generic panic\",\n \"1\": \"assert(false)\",\n \"17\": \"arithmetic overflow\",\n \"18\": \"division or modulo by zero\",\n \"33\": \"enum overflow\",\n \"34\": \"invalid encoded storage byte array accessed\",\n \"49\": \"out-of-bounds array access; popping on an empty array\",\n \"50\": \"out-of-bounds access of an array or bytesN\",\n \"65\": \"out of memory\",\n \"81\": \"uninitialized function\",\n};\nconst BuiltinErrors = {\n \"0x08c379a0\": {\n signature: \"Error(string)\",\n name: \"Error\",\n inputs: [\"string\"],\n reason: (message) => {\n return `reverted with reason string ${JSON.stringify(message)}`;\n }\n },\n \"0x4e487b71\": {\n signature: \"Panic(uint256)\",\n name: \"Panic\",\n inputs: [\"uint256\"],\n reason: (code) => {\n let reason = \"unknown panic code\";\n if (code >= 0 && code <= 0xff && PanicReasons[code.toString()]) {\n reason = PanicReasons[code.toString()];\n }\n return `reverted with panic code 0x${code.toString(16)} (${reason})`;\n }\n }\n};\nexport class Interface {\n constructor(fragments) {\n _Interface_instances.add(this);\n _Interface_errors.set(this, void 0);\n _Interface_events.set(this, void 0);\n _Interface_functions.set(this, void 0);\n // #structs: Map<string, StructFragment>;\n _Interface_abiCoder.set(this, void 0);\n let abi = [];\n if (typeof (fragments) === \"string\") {\n abi = JSON.parse(fragments);\n }\n else {\n abi = fragments;\n }\n __classPrivateFieldSet(this, _Interface_functions, new Map(), \"f\");\n __classPrivateFieldSet(this, _Interface_errors, new Map(), \"f\");\n __classPrivateFieldSet(this, _Interface_events, new Map(), \"f\");\n // this.#structs = new Map();\n defineProperties(this, {\n fragments: Object.freeze(abi.map((f) => Fragment.from(f)).filter((f) => (f != null))),\n });\n __classPrivateFieldSet(this, _Interface_abiCoder, this.getAbiCoder(), \"f\");\n // Add all fragments by their signature\n this.fragments.forEach((fragment) => {\n let bucket;\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 defineProperties(this, { deploy: fragment });\n return;\n case \"function\":\n //checkNames(fragment, \"input\", fragment.inputs);\n //checkNames(fragment, \"output\", (<FunctionFragment>fragment).outputs);\n bucket = __classPrivateFieldGet(this, _Interface_functions, \"f\");\n break;\n case \"event\":\n //checkNames(fragment, \"input\", fragment.inputs);\n bucket = __classPrivateFieldGet(this, _Interface_events, \"f\");\n break;\n case \"error\":\n bucket = __classPrivateFieldGet(this, _Interface_errors, \"f\");\n break;\n default:\n return;\n }\n const signature = fragment.format();\n if (bucket.has(signature)) {\n logger.warn(\"duplicate definition - \" + signature);\n return;\n }\n bucket.set(signature, fragment);\n });\n // If we do not have a constructor add a default\n if (!this.deploy) {\n defineProperties(this, {\n deploy: ConstructorFragment.fromString(\"constructor()\")\n });\n }\n }\n // @TODO: multi sig?\n format(format) {\n if (!format) {\n format = FormatType.full;\n }\n if (format === FormatType.sighash) {\n logger.throwArgumentError(\"interface does not support formatting sighash\", \"format\", format);\n }\n const abi = this.fragments.map((f) => f.format(format));\n // We need to re-bundle the JSON fragments a bit\n if (format === FormatType.json) {\n return JSON.stringify(abi.map((j) => JSON.parse(j)));\n }\n return abi;\n }\n getAbiCoder() {\n return defaultAbiCoder;\n }\n getFunctionName(key) {\n return (__classPrivateFieldGet(this, _Interface_instances, \"m\", _Interface_getFunction).call(this, key, null, false)).name;\n }\n getFunction(key, values) {\n return __classPrivateFieldGet(this, _Interface_instances, \"m\", _Interface_getFunction).call(this, key, values || null, true);\n }\n getEventName(key) {\n return (__classPrivateFieldGet(this, _Interface_instances, \"m\", _Interface_getEvent).call(this, key, null, false)).name;\n }\n getEvent(key, values) {\n return __classPrivateFieldGet(this, _Interface_instances, \"m\", _Interface_getEvent).call(this, key, values || null, true);\n }\n // Find a function definition by any means necessary (unless it is ambiguous)\n getError(key, values) {\n if (isHexString(key)) {\n const selector = key.toLowerCase();\n for (const fragment of __classPrivateFieldGet(this, _Interface_errors, \"f\").values()) {\n if (selector === this.getSelector(fragment)) {\n return fragment;\n }\n }\n logger.throwArgumentError(\"no matching error\", \"selector\", key);\n }\n // It is a bare name, look up the function (will return null if ambiguous)\n if (key.indexOf(\"(\") === -1) {\n const matching = [];\n for (const [name, fragment] of __classPrivateFieldGet(this, _Interface_errors, \"f\")) {\n if (name.split(\"(\" /* fix:) */)[0] === key) {\n matching.push(fragment);\n }\n }\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching error\", \"name\", key);\n }\n else if (matching.length > 1) {\n // @TODO: refine by Typed\n logger.throwArgumentError(\"multiple matching errors\", \"name\", key);\n }\n return matching[0];\n }\n // Normalize the signature and lookup the function\n const result = __classPrivateFieldGet(this, _Interface_errors, \"f\").get(ErrorFragment.fromString(key).format());\n if (result) {\n return result;\n }\n return logger.throwArgumentError(\"no matching error\", \"signature\", key);\n }\n // Get the 4-byte selector used by Solidity to identify a function\n getSelector(fragment) {\n /*\n if (typeof(fragment) === \"string\") {\n const matches: Array<Fragment> = [ ];\n\n try { matches.push(this.getFunction(fragment)); } catch (error) { }\n try { matches.push(this.getError(<string>fragment)); } catch (_) { }\n\n if (matches.length === 0) {\n logger.throwArgumentError(\"unknown fragment\", \"key\", fragment);\n } else if (matches.length > 1) {\n logger.throwArgumentError(\"ambiguous fragment matches function and error\", \"key\", fragment);\n }\n\n fragment = matches[0];\n }\n */\n return dataSlice(id(fragment.format()), 0, 4);\n }\n // Get the 32-byte topic hash used by Solidity to identify an event\n getEventTopic(fragment) {\n //if (typeof(fragment) === \"string\") { fragment = this.getEvent(eventFragment); }\n return id(fragment.format());\n }\n _decodeParams(params, data) {\n return __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(params, data);\n }\n _encodeParams(params, values) {\n return __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").encode(params, values);\n }\n encodeDeploy(values) {\n return this._encodeParams(this.deploy.inputs, values || []);\n }\n decodeErrorResult(fragment, data) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getError(fragment);\n }\n if (dataSlice(data, 0, 4) !== this.getSelector(fragment)) {\n logger.throwArgumentError(`data signature does not match error ${fragment.name}.`, \"data\", data);\n }\n return this._decodeParams(fragment.inputs, dataSlice(data, 4));\n }\n encodeErrorResult(fragment, values) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getError(fragment);\n }\n return concat([\n this.getSelector(fragment),\n this._encodeParams(fragment.inputs, values || [])\n ]);\n }\n // Decode the data for a function call (e.g. tx.data)\n decodeFunctionData(fragment, data) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getFunction(fragment);\n }\n if (dataSlice(data, 0, 4) !== this.getSelector(fragment)) {\n logger.throwArgumentError(`data signature does not match function ${fragment.name}.`, \"data\", data);\n }\n return this._decodeParams(fragment.inputs, dataSlice(data, 4));\n }\n // Encode the data for a function call (e.g. tx.data)\n encodeFunctionData(fragment, values) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getFunction(fragment);\n }\n return concat([\n this.getSelector(fragment),\n this._encodeParams(fragment.inputs, values || [])\n ]);\n }\n // Decode the result from a function call (e.g. from eth_call)\n decodeFunctionResult(fragment, data) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getFunction(fragment);\n }\n let message = \"invalid length for result data\";\n const bytes = arrayify(data);\n if ((bytes.length % 32) === 0) {\n try {\n return __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(fragment.outputs, bytes);\n }\n catch (error) {\n message = \"could not decode result data\";\n }\n }\n // Call returned data with no error, but the data is junk\n return logger.throwError(message, \"BAD_DATA\", {\n value: hexlify(bytes),\n info: { method: fragment.name, signature: fragment.format() }\n });\n }\n makeError(fragment, _data, tx) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getFunction(fragment);\n }\n const data = logger.getBytes(_data);\n let args = undefined;\n if (tx) {\n try {\n args = __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(fragment.inputs, tx.data || \"0x\");\n }\n catch (error) {\n console.log(error);\n }\n }\n let errorArgs = undefined;\n let errorName = undefined;\n let errorSignature = undefined;\n let reason = \"unknown reason\";\n if (data.length === 0) {\n reason = \"missing error reason\";\n }\n else if ((data.length % 32) === 4) {\n const selector = hexlify(data.slice(0, 4));\n const builtin = BuiltinErrors[selector];\n if (builtin) {\n try {\n errorName = builtin.name;\n errorSignature = builtin.signature;\n errorArgs = __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(builtin.inputs, data.slice(4));\n reason = builtin.reason(...errorArgs);\n }\n catch (error) {\n console.log(error); // @TODO: remove\n }\n }\n else {\n reason = \"unknown custom error\";\n try {\n const error = this.getError(selector);\n errorName = error.name;\n errorSignature = error.format();\n reason = `custom error: ${errorSignature}`;\n try {\n errorArgs = __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(error.inputs, data.slice(4));\n }\n catch (error) {\n reason = `custom error: ${errorSignature} (coult not decode error data)`;\n }\n }\n catch (error) {\n console.log(error); // @TODO: remove\n }\n }\n }\n return logger.makeError(\"call revert exception\", \"CALL_EXCEPTION\", {\n data: hexlify(data), transaction: null,\n method: fragment.name, signature: fragment.format(), args,\n errorArgs, errorName, errorSignature, reason\n });\n }\n // Encode the result for a function call (e.g. for eth_call)\n encodeFunctionResult(functionFragment, values) {\n if (typeof (functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n return hexlify(__classPrivateFieldGet(this, _Interface_abiCoder, \"f\").encode(functionFragment.outputs, values || []));\n }\n /*\n spelunk(inputs: Array<ParamType>, values: ReadonlyArray<any>, processfunc: (type: string, value: any) => Promise<any>): Promise<Array<any>> {\n const promises: Array<Promise<>> = [ ];\n const process = function(type: ParamType, value: any): any {\n if (type.baseType === \"array\") {\n return descend(type.child\n }\n if (type. === \"address\") {\n }\n };\n \n const descend = function (inputs: Array<ParamType>, values: ReadonlyArray<any>) {\n if (inputs.length !== values.length) { throw new Error(\"length mismatch\"); }\n \n };\n \n const result: Array<any> = [ ];\n values.forEach((value, index) => {\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 */\n // Create the filter for the event with search criteria (e.g. for eth_filterLog)\n encodeFilterTopics(eventFragment, values) {\n if (typeof (eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n if (values.length > eventFragment.inputs.length) {\n logger.throwError(\"too many arguments for \" + eventFragment.format(), \"UNEXPECTED_ARGUMENT\", {\n count: values.length,\n expectedCount: eventFragment.inputs.length\n });\n }\n const topics = [];\n if (!eventFragment.anonymous) {\n topics.push(this.getEventTopic(eventFragment));\n }\n const encodeTopic = (param, value) => {\n if (param.type === \"string\") {\n return id(value);\n }\n else if (param.type === \"bytes\") {\n return keccak256(hexlify(value));\n }\n // Check addresses are valid\n if (param.type === \"address\") {\n __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").encode([\"address\"], [value]);\n }\n return zeroPadValue(hexlify(value), 32);\n //@TOOD should probably be return toHex(value, 32)\n };\n values.forEach((value, index) => {\n const param = eventFragment.inputs[index];\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 if (value == null) {\n topics.push(null);\n }\n else if (param.baseType === \"array\" || param.baseType === \"tuple\") {\n logger.throwArgumentError(\"filtering with tuples or arrays not supported\", (\"contract.\" + param.name), value);\n }\n else if (Array.isArray(value)) {\n topics.push(value.map((value) => encodeTopic(param, value)));\n }\n else {\n topics.push(encodeTopic(param, value));\n }\n });\n // Trim off trailing nulls\n while (topics.length && topics[topics.length - 1] === null) {\n topics.pop();\n }\n return topics;\n }\n encodeEventLog(eventFragment, values) {\n if (typeof (eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n const topics = [];\n const dataTypes = [];\n const dataValues = [];\n if (!eventFragment.anonymous) {\n topics.push(this.getEventTopic(eventFragment));\n }\n if (values.length !== eventFragment.inputs.length) {\n logger.throwArgumentError(\"event arguments/values mismatch\", \"values\", values);\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 }\n else if (param.type === \"bytes\") {\n topics.push(keccak256(value));\n }\n else if (param.baseType === \"tuple\" || param.baseType === \"array\") {\n // @TODO\n throw new Error(\"not implemented\");\n }\n else {\n topics.push(__classPrivateFieldGet(this, _Interface_abiCoder, \"f\").encode([param.type], [value]));\n }\n }\n else {\n dataTypes.push(param);\n dataValues.push(value);\n }\n });\n return {\n data: __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").encode(dataTypes, dataValues),\n topics: topics\n };\n }\n // Decode a filter for the event and the search criteria\n decodeEventLog(eventFragment, data, topics) {\n if (typeof (eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n if (topics != null && !eventFragment.anonymous) {\n const eventTopic = this.getEventTopic(eventFragment);\n if (!isHexString(topics[0], 32) || topics[0].toLowerCase() !== eventTopic) {\n logger.throwArgumentError(\"fragment/topic mismatch\", \"topics[0]\", topics[0]);\n }\n topics = topics.slice(1);\n }\n const indexed = [];\n const nonIndexed = [];\n const dynamic = [];\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 }\n else {\n indexed.push(param);\n dynamic.push(false);\n }\n }\n else {\n nonIndexed.push(param);\n dynamic.push(false);\n }\n });\n const resultIndexed = (topics != null) ? __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(indexed, concat(topics)) : null;\n const resultNonIndexed = __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(nonIndexed, data, true);\n //const result: (Array<any> & { [ key: string ]: any }) = [ ];\n const values = [];\n const keys = [];\n let nonIndexedIndex = 0, indexedIndex = 0;\n eventFragment.inputs.forEach((param, index) => {\n let value = null;\n if (param.indexed) {\n if (resultIndexed == null) {\n value = new Indexed(null);\n }\n else if (dynamic[index]) {\n value = new Indexed(resultIndexed[indexedIndex++]);\n }\n else {\n try {\n value = resultIndexed[indexedIndex++];\n }\n catch (error) {\n value = error;\n }\n }\n }\n else {\n try {\n value = resultNonIndexed[nonIndexedIndex++];\n }\n catch (error) {\n value = error;\n }\n }\n values.push(value);\n keys.push(param.name || null);\n });\n return Result.fromItems(values, keys);\n }\n // Given a transaction, find the matching function fragment (if any) and\n // determine all its properties and call parameters\n parseTransaction(tx) {\n const data = logger.getBytes(tx.data, \"tx.data\");\n const value = logger.getBigInt((tx.value != null) ? tx.value : 0, \"tx.value\");\n const fragment = this.getFunction(hexlify(data.slice(0, 4)));\n if (!fragment) {\n return null;\n }\n const args = __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(fragment.inputs, data.slice(4));\n return new TransactionDescription(fragment, this.getSelector(fragment), args, value);\n }\n // @TODO\n //parseCallResult(data: BytesLike): ??\n // Given an event log, find the matching event fragment (if any) and\n // determine all its properties and values\n parseLog(log) {\n const fragment = this.getEvent(log.topics[0]);\n if (!fragment || fragment.anonymous) {\n 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 return new LogDescription(fragment, this.getEventTopic(fragment), this.decodeEventLog(fragment, log.data, log.topics));\n }\n parseError(data) {\n const hexData = hexlify(data);\n const fragment = this.getError(dataSlice(hexData, 0, 4));\n if (!fragment) {\n return null;\n }\n const args = __classPrivateFieldGet(this, _Interface_abiCoder, \"f\").decode(fragment.inputs, dataSlice(hexData, 4));\n return new ErrorDescription(fragment, this.getSelector(fragment), args);\n }\n static from(value) {\n // Already an Interface, which is immutable\n if (value instanceof Interface) {\n return value;\n }\n // JSON\n if (typeof (value) === \"string\") {\n return new Interface(JSON.parse(value));\n }\n // Maybe an interface from an older version, or from a symlinked copy\n if (typeof (value.format) === \"function\") {\n return new Interface(value.format(FormatType.json));\n }\n // Array of fragments\n return new Interface(value);\n }\n}\n_Interface_errors = new WeakMap(), _Interface_events = new WeakMap(), _Interface_functions = new WeakMap(), _Interface_abiCoder = new WeakMap(), _Interface_instances = new WeakSet(), _Interface_getFunction = function _Interface_getFunction(key, values, forceUnique) {\n // Selector\n if (isHexString(key)) {\n const selector = key.toLowerCase();\n for (const fragment of __classPrivateFieldGet(this, _Interface_functions, \"f\").values()) {\n if (selector === this.getSelector(fragment)) {\n return fragment;\n }\n }\n logger.throwArgumentError(\"no matching function\", \"selector\", key);\n }\n // It is a bare name, look up the function (will return null if ambiguous)\n if (key.indexOf(\"(\") === -1) {\n const matching = [];\n for (const [name, fragment] of __classPrivateFieldGet(this, _Interface_functions, \"f\")) {\n if (name.split(\"(\" /* fix:) */)[0] === key) {\n matching.push(fragment);\n }\n }\n if (values) {\n const lastValue = (values.length > 0) ? values[values.length - 1] : null;\n let valueLength = values.length;\n let allowOptions = true;\n if (Typed.isTyped(lastValue) && lastValue.type === \"overrides\") {\n allowOptions = false;\n valueLength--;\n }\n // Remove all matches that don't have a compatible length. The args\n // may contain an overrides, so the match may have n or n - 1 parameters\n for (let i = matching.length - 1; i >= 0; i--) {\n const inputs = matching[i].inputs.length;\n if (inputs !== valueLength && (!allowOptions || inputs !== valueLength - 1)) {\n matching.splice(i, 1);\n }\n }\n // Remove all matches that don't match the Typed signature\n for (let i = matching.length - 1; i >= 0; i--) {\n const inputs = matching[i].inputs;\n for (let j = 0; j < values.length; j++) {\n // Not a typed value\n if (!Typed.isTyped(values[j])) {\n continue;\n }\n // We are past the inputs\n if (j >= inputs.length) {\n if (values[j].type === \"overrides\") {\n continue;\n }\n matching.splice(i, 1);\n break;\n }\n // Make sure the value type matches the input type\n if (values[j].type !== inputs[j].baseType) {\n matching.splice(i, 1);\n break;\n }\n }\n }\n }\n // We found a single matching signature with an overrides, but the\n // last value is something that cannot possibly be an options\n if (matching.length === 1 && values && values.length !== matching[0].inputs.length) {\n const lastArg = values[values.length - 1];\n if (lastArg == null || Array.isArray(lastArg) || typeof (lastArg) !== \"object\") {\n matching.splice(0, 1);\n }\n }\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching function\", \"name\", key);\n }\n else if (matching.length > 1 && forceUnique) {\n const matchStr = matching.map((m) => JSON.stringify(m.format())).join(\", \");\n logger.throwArgumentError(`multiple matching functions (i.e. ${matchStr})`, \"name\", key);\n }\n return matching[0];\n }\n // Normalize the signature and lookup the function\n const result = __classPrivateFieldGet(this, _Interface_functions, \"f\").get(FunctionFragment.fromString(key).format());\n if (result) {\n return result;\n }\n return logger.throwArgumentError(\"no matching function\", \"signature\", key);\n}, _Interface_getEvent = function _Interface_getEvent(key, values, forceUnique) {\n // EventTopic\n if (isHexString(key)) {\n const eventTopic = key.toLowerCase();\n for (const fragment of __classPrivateFieldGet(this, _Interface_events, \"f\").values()) {\n if (eventTopic === this.getEventTopic(fragment)) {\n return fragment;\n }\n }\n logger.throwArgumentError(\"no matching event\", \"eventTopic\", key);\n }\n // It is a bare name, look up the function (will return null if ambiguous)\n if (key.indexOf(\"(\") === -1) {\n const matching = [];\n for (const [name, fragment] of __classPrivateFieldGet(this, _Interface_events, \"f\")) {\n if (name.split(\"(\" /* fix:) */)[0] === key) {\n matching.push(fragment);\n }\n }\n if (values) {\n // Remove all matches that don't have a compatible length.\n for (let i = matching.length - 1; i >= 0; i--) {\n if (matching[i].inputs.length < values.length) {\n matching.splice(i, 1);\n }\n }\n // Remove all matches that don't match the Typed signature\n for (let i = matching.length - 1; i >= 0; i--) {\n const inputs = matching[i].inputs;\n for (let j = 0; j < values.length; j++) {\n // Not a typed value\n if (!Typed.isTyped(values[j])) {\n continue;\n }\n // Make sure the value type matches the input type\n if (values[j].type !== inputs[j].baseType) {\n matching.splice(i, 1);\n break;\n }\n }\n }\n }\n if (matching.length === 0) {\n logger.throwArgumentError(\"no matching event\", \"name\", key);\n }\n else if (matching.length > 1 && forceUnique) {\n // @TODO: refine by Typed\n logger.throwArgumentError(\"multiple matching events\", \"name\", key);\n }\n return matching[0];\n }\n // Normalize the signature and lookup the function\n const result = __classPrivateFieldGet(this, _Interface_events, \"f\").get(EventFragment.fromString(key).format());\n if (result) {\n return result;\n }\n return logger.throwArgumentError(\"no matching event\", \"signature\", key);\n};\n//# sourceMappingURL=interface.js.map","export const version = \"@ethersproject/web@6.0.0-beta.6\";\n//# sourceMappingURL=_version.js.map","import { version } from \"./_version.js\";\nimport { Logger } from \"@ethersproject/logger\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _FetchResponse_props, _FetchResponse_error;\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { defineProperties, getStore } from \"@ethersproject/properties\";\nimport { toUtf8String } from \"@ethersproject/strings\";\nimport { logger } from \"./logger.js\";\n;\nexport class FetchResponse {\n constructor(statusCode, statusMessage, headers, body, request) {\n _FetchResponse_props.set(this, void 0);\n _FetchResponse_error.set(this, void 0);\n __classPrivateFieldSet(this, _FetchResponse_props, {\n statusCode,\n statusMessage,\n headers: Object.freeze(Object.assign({}, Object.keys(headers).reduce((accum, k) => {\n accum[k.toLowerCase()] = headers[k];\n return accum;\n }, {}))),\n body: ((body == null) ? null : new Uint8Array(body)),\n request: (request || null),\n }, \"f\");\n __classPrivateFieldSet(this, _FetchResponse_error, { message: \"\" }, \"f\");\n }\n toString() {\n const body = getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"body\");\n return `<Response status=${this.statusCode} body=${body ? hexlify(body) : \"null\"}>`;\n }\n get statusCode() { return getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"statusCode\"); }\n get statusMessage() { return getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"statusMessage\"); }\n get headers() { return getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"headers\"); }\n get body() {\n const body = getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"body\");\n return (body == null) ? null : new Uint8Array(body);\n }\n get bodyText() {\n try {\n const body = getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"body\");\n return (body == null) ? \"\" : toUtf8String(body);\n }\n catch (error) {\n return logger.throwError(\"response body is not valid UTF-8 data\", \"UNSUPPORTED_OPERATION\", {\n operation: \"bodyText\", info: { response: this }\n });\n }\n }\n get bodyJson() {\n try {\n return JSON.parse(this.bodyText);\n }\n catch (error) {\n return logger.throwError(\"response body is not valid JSON\", \"UNSUPPORTED_OPERATION\", {\n operation: \"bodyJson\", info: { response: this }\n });\n }\n }\n [(_FetchResponse_props = new WeakMap(), _FetchResponse_error = new WeakMap(), Symbol.iterator)]() {\n const headers = this.headers;\n const keys = Object.keys(headers);\n let index = 0;\n return {\n next: () => {\n if (index < keys.length) {\n const key = keys[index++];\n return {\n value: [key, headers[key]], done: false\n };\n }\n return { value: undefined, done: true };\n }\n };\n }\n makeServerError(message, error) {\n let statusMessage;\n if (!message) {\n message = `${this.statusCode} ${this.statusMessage}`;\n statusMessage = `CLIENT ESCALATED SERVER ERROR (${message})`;\n }\n else {\n statusMessage = `CLIENT ESCALATED SERVER ERROR (${this.statusCode} ${this.statusMessage}; ${message})`;\n }\n const response = new FetchResponse(599, statusMessage, this.headers, this.body, getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"request\") || undefined);\n __classPrivateFieldSet(response, _FetchResponse_error, { message, error }, \"f\");\n return response;\n }\n throwThrottleError(message, stall) {\n if (stall == null) {\n stall = 1000;\n }\n if (typeof (stall) !== \"number\" || !Number.isInteger(stall) || stall < 0) {\n logger.throwArgumentError(\"invalid stall timeout\", \"stall\", stall);\n }\n const error = new Error(message || \"throttling requests\");\n defineProperties(error, { stall, throttle: true });\n throw error;\n }\n getHeader(key) {\n return this.headers[key.toLowerCase()];\n }\n hasBody() {\n const body = getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"body\");\n return (body != null);\n }\n get request() { return getStore(__classPrivateFieldGet(this, _FetchResponse_props, \"f\"), \"request\"); }\n ok() {\n return (__classPrivateFieldGet(this, _FetchResponse_error, \"f\").message === \"\" && this.statusCode >= 200 && this.statusCode < 300);\n }\n assertOk() {\n if (this.ok()) {\n return;\n }\n let { message, error } = __classPrivateFieldGet(this, _FetchResponse_error, \"f\");\n if (message === \"\") {\n message = `server response ${this.statusCode} ${this.statusMessage}`;\n }\n logger.throwError(message, \"SERVER_ERROR\", {\n request: (this.request || \"unknown request\"), response: this, error\n });\n }\n}\n//# sourceMappingURL=response.js.map","import { logger } from \"./logger.js\";\nimport { FetchResponse } from \"./response.js\";\nexport async function getUrl(req, timeout) {\n const protocol = req.url.split(\":\")[0].toLowerCase();\n if (protocol !== \"http\" && protocol !== \"https\") {\n logger.throwError(`unsupported protocol ${protocol}`, \"UNSUPPORTED_OPERATION\", {\n info: { protocol },\n operation: \"request\"\n });\n }\n if (req.credentials && !req.allowInsecureAuthentication) {\n logger.throwError(\"insecure authorized connections unsupported\", \"UNSUPPORTED_OPERATION\", {\n operation: \"request\"\n });\n }\n const init = {\n method: req.method,\n headers: new Headers(Array.from(req)),\n body: req.body || undefined,\n };\n const resp = await fetch(req.url, init);\n const headers = {};\n resp.headers.forEach((value, key) => {\n headers[key.toLowerCase()] = value;\n });\n const body = new Uint8Array(await resp.arrayBuffer());\n return new FetchResponse(resp.status, resp.statusText, headers, body, req);\n}\n//# sourceMappingURL=get-url-browser.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _FetchRequest_props;\nimport { getStore, setStore } from \"@ethersproject/properties\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { logger } from \"./logger.js\";\nfunction check(value, type, name) {\n if (typeof (value) !== type) {\n throw new Error(`invalid ${name}`);\n }\n return value;\n}\nexport class FetchRequest {\n constructor(url) {\n _FetchRequest_props.set(this, void 0);\n __classPrivateFieldSet(this, _FetchRequest_props, {\n allowInsecure: false,\n gzip: false,\n headers: {},\n method: \"\",\n timeout: 300,\n url: check(url, \"string\", \"url\")\n }, \"f\");\n }\n // URL\n get url() { return getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"url\"); }\n set url(url) {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"url\", check(url, \"string\", \"url\"));\n }\n // Body\n get body() {\n const body = getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\");\n if (body == null) {\n return null;\n }\n if (this.isFrozen()) {\n return new Uint8Array(body);\n }\n return body;\n }\n set body(body) {\n if (body == null) {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\", undefined);\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\", undefined);\n }\n else if (typeof (body) === \"string\") {\n // @TODO: utf8-check\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\", toUtf8Bytes(body));\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\", \"text/plain\");\n }\n else if (body instanceof Uint8Array) {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\", body);\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\", \"application/octet-stream\");\n }\n else if (typeof (body) === \"object\") {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\", toUtf8Bytes(JSON.stringify(body)));\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\", \"application/json\");\n }\n else {\n throw new Error(\"invalid body\");\n }\n }\n hasBody() {\n return (getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\") != null);\n }\n // Method (default: GET with no body, POST with a body)\n get method() {\n const method = getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"method\");\n if (method) {\n return method.toUpperCase();\n }\n if (this.body) {\n return \"POST\";\n }\n return \"GET\";\n }\n set method(method) {\n if (method == null) {\n method = \"\";\n }\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"method\", check(method, \"string\", \"method\"));\n }\n // Headers (automatically fills content-type if not explicitly set)\n get headers() {\n const headers = Object.assign({}, getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"headers\"));\n const bodyType = getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\");\n if (this.credentials) { /* TODO */ }\n ;\n if (this.allowGzip) {\n headers[\"accept-encoding\"] = \"gzip\";\n }\n if (headers[\"content-type\"] == null && bodyType) {\n headers[\"content-type\"] = bodyType;\n }\n if (this.body) {\n headers[\"content-length\"] = String(this.body.length);\n }\n return Object.freeze(headers);\n }\n getHeader(key) {\n return this.headers[key.toLowerCase()];\n }\n setHeader(key, value) {\n const headers = getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"headers\");\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"headers\", headers);\n headers[check(key, \"string\", \"key\").toLowerCase()] = String(value);\n }\n clearHeaders() {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"headers\", {});\n }\n [(_FetchRequest_props = new WeakMap(), Symbol.iterator)]() {\n const headers = this.headers;\n const keys = Object.keys(headers);\n let index = 0;\n return {\n next: () => {\n if (index < keys.length) {\n const key = keys[index++];\n return {\n value: [key, headers[key]], done: false\n };\n }\n return { value: undefined, done: true };\n }\n };\n }\n // Configure an Authorization header\n get credentials() {\n return getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"creds\") || null;\n }\n setCredentials(username, password) {\n if (username.match(/:/)) {\n logger.throwArgumentError(\"invalid basic authentication username\", \"username\", \"[REDACTED]\");\n }\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"creds\", `${username}:${password}`);\n // @TODO:\n //const auth = username + \":\" + password;\n //this.setHeader(\"authorization\", \"Basic \" + base64Encode(toUtf8Bytes(auth)))\n //this.setHeader(\"authorization\", \"Basic TODO:\" + auth);\n }\n // Configure the request to allow gzipped responses\n get allowGzip() {\n return getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"gzip\");\n }\n set allowGzip(value) {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"gzip\", !!value);\n }\n // Allow credentials to be sent over an insecure (non-HTTPS) channel\n get allowInsecureAuthentication() {\n return !!getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"allowInsecure\");\n }\n set allowInsecureAuthentication(value) {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"allowInsecure\", check(value, \"boolean\", \"allowInsecureAuthentication\"));\n }\n // Timeout (seconds)\n get timeout() { return getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"timeout\"); }\n set timeout(timeout) {\n timeout = check(timeout, \"number\", \"timeout\");\n if (timeout <= 0) {\n throw new Error(\"invalid timerout\");\n }\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"timeout\", timeout);\n }\n redirect(location) {\n // Redirection; for now we only support absolute locataions\n const current = this.url.split(\":\")[0].toLowerCase();\n const target = location.split(\":\")[0].toLowerCase();\n if (this.method !== \"GET\" || (current === \"https\" && target === \"http\") ||\n !location.match(/^https?:/)) {\n return logger.throwError(`unsupported redirect`, \"UNSUPPORTED_OPERATION\", {\n operation: `redirect(${this.method} ${JSON.stringify(this.url)} => ${JSON.stringify(location)})`\n });\n }\n // Create a copy of this request, with a new URL\n const req = new FetchRequest(location);\n req.method = \"GET\";\n req.allowGzip = this.allowGzip;\n req.timeout = this.timeout;\n setStore(__classPrivateFieldGet(req, _FetchRequest_props, \"f\"), \"body\", getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\"));\n setStore(__classPrivateFieldGet(req, _FetchRequest_props, \"f\"), \"headers\", Object.assign({}, getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"headers\")));\n setStore(__classPrivateFieldGet(req, _FetchRequest_props, \"f\"), \"bodyType\", getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\"));\n // Do not forward credentials unless on the same domain; only absolute\n //req.allowInsecure = false;\n // paths are currently supported; may want a way to specify to forward?\n //setStore(req.#props, \"creds\", getStore(this.#pros, \"creds\"));\n return req;\n }\n clone() {\n const clone = new FetchRequest(this.url);\n // Preserve \"default method\" (i.e. null)\n setStore(__classPrivateFieldGet(clone, _FetchRequest_props, \"f\"), \"method\", getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"method\"));\n // Preserve \"default body\" with type, copying the Uint8Array is present\n const body = getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\");\n setStore(__classPrivateFieldGet(clone, _FetchRequest_props, \"f\"), \"body\", (body == null) ? undefined : new Uint8Array(body));\n setStore(__classPrivateFieldGet(clone, _FetchRequest_props, \"f\"), \"bodyType\", getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"bodyType\"));\n // Preserve \"default headers\"\n setStore(__classPrivateFieldGet(clone, _FetchRequest_props, \"f\"), \"headers\", Object.assign({}, getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"headers\")));\n // Credentials is readonly, so we copy internally\n setStore(__classPrivateFieldGet(clone, _FetchRequest_props, \"f\"), \"creds\", getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"creds\"));\n if (this.allowGzip) {\n clone.allowGzip = true;\n }\n clone.timeout = this.timeout;\n if (this.allowInsecureAuthentication) {\n clone.allowInsecureAuthentication = true;\n }\n return clone;\n }\n freeze() {\n // Copy the body so any changes to previous access do not modify it\n const body = getStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\");\n if (body != null) {\n setStore(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"), \"body\", new Uint8Array(body));\n }\n Object.freeze(__classPrivateFieldGet(this, _FetchRequest_props, \"f\").headers);\n Object.freeze(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"));\n return this;\n }\n isFrozen() {\n return Object.isFrozen(__classPrivateFieldGet(this, _FetchRequest_props, \"f\"));\n }\n}\n//# sourceMappingURL=request.js.map","import { decodeBase64 } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { getUrl } from \"./get-url.js\"; /*-browser*/\nimport { logger } from \"./logger.js\";\nimport { FetchRequest } from \"./request.js\";\nimport { FetchResponse } from \"./response.js\";\nasync function delay(duration) {\n return new Promise((resolve) => { setTimeout(resolve, duration); });\n}\n// @TODO: Add option for global preflightRequest?\nfunction getTime() { return (new Date()).getTime(); }\nfunction unpercent(value) {\n value = value.replace(/%([0-9a-f][0-9a-f])/gi, (all, code) => {\n return String.fromCharCode(parseInt(code, 16));\n });\n return toUtf8Bytes(value);\n}\nlet lockGateways = false;\nlet ipfsGateway = \"https:/\\/gateway.ipfs.io/\";\nlet arGateway = \"https:/\\/gateway.ar.io/\";\nexport async function fetchData(connection) {\n const conn = (typeof (connection) === \"string\") ? {\n request: new FetchRequest(connection)\n } : (connection instanceof FetchRequest) ? {\n request: connection\n } : Object.assign({}, connection);\n if (conn.request == null) {\n return logger.throwArgumentError(\"missing request\", \"connection\", connection);\n }\n let req = conn.request.clone().freeze();\n switch (conn.request.url.split(\":\")[0]) {\n case \"data\": {\n const match = req.url.match(/^data:([^;:]*)?(;base64)?,(.*)$/i);\n if (match) {\n try {\n const headers = {\n \"content-type\": (match[1] ? match[1] : \"text/plain\")\n };\n const body = (match[2] ? decodeBase64(match[3]) : unpercent(match[3]));\n return new FetchResponse(200, \"OK\", headers, body, req.clone());\n }\n catch (error) {\n return new FetchResponse(400, \"BAD REQUEST (invalid base64 encoded data)\", {}, null, req.clone());\n }\n }\n return new FetchResponse(500, \"INTERNAL SERVER ERROR (unsupported dara URI)\", {}, null, req.clone());\n }\n case \"ipfs\":\n case \"ipns\":\n case \"ar\":\n throw new Error(\"not implemented yet\");\n console.log(\"FF\", arGateway, ipfsGateway);\n case \"http\":\n case \"https\":\n break;\n default:\n throw new Error(\"unsupported scheme\");\n }\n const attempts = (conn.throttleLimit != null) ? conn.throttleLimit : 12;\n if (!Number.isInteger(attempts) || attempts < 1) {\n return logger.throwArgumentError(\"invalid throttleLimit\", \"connection\", connection);\n }\n const slotInterval = (conn.throttleSlotInterval != null) ? conn.throttleSlotInterval : 100;\n //logger.assertInteger(slotInterval, \"connection.throttleSlotInterval\", connection.throttleSlotInterval);\n if (!Number.isInteger(slotInterval) || attempts < 0) {\n return logger.throwArgumentError(\"invalid throttleSlotInterval\", \"connection\", connection);\n }\n const retryFunc = (conn.throttleRetry != null) ? conn.throttleRetry : null;\n if (retryFunc && typeof (retryFunc) !== \"function\") {\n return logger.throwArgumentError(\"invalid throttleRetry callback\", \"connection\", connection);\n }\n const preflightRequest = conn.preflightRequest || null;\n if (preflightRequest && typeof (preflightRequest) !== \"function\") {\n return logger.throwArgumentError(\"invalid preflightRequest callback\", \"connection\", connection);\n }\n const processResponse = conn.processResponse || null;\n if (processResponse && typeof (processResponse) !== \"function\") {\n return logger.throwArgumentError(\"invalid processResponse callback\", \"connection\", connection);\n }\n // Start time of this fetch (for timeouts)\n const t0 = getTime();\n let response = null;\n for (let a = 0; a < attempts; a++) {\n let request = req.clone();\n if (preflightRequest) {\n request = (await preflightRequest(request.freeze())).clone();\n }\n const remainingTime = getTime() - t0;\n if (remainingTime < 0) {\n return logger.throwError(\"timeout\", \"TIMEOUT\", { operation: \"request\", reason: \"timeout\", request });\n }\n response = await getUrl(request, remainingTime);\n // Retry logic (server forced)\n if (a < attempts) {\n if (response.statusCode === 301 || response.statusCode === 302) {\n // Try following the redirect; the request will through if the\n // type of redirect is not supported\n try {\n req = request.redirect(response.headers.location || \"\");\n continue;\n }\n catch (error) { }\n ;\n // Things won't get any better on another attempt; abort\n return response;\n }\n else if (response.statusCode === 429) {\n if (retryFunc == null || (await retryFunc(request.freeze(), response, a))) {\n const retryAfter = response.headers[\"retry-after\"];\n if (typeof (retryAfter) === \"string\" && retryAfter.match(/^[1-9][0-9]*$/)) {\n await delay(parseInt(retryAfter));\n }\n else {\n await delay(slotInterval * Math.trunc(Math.random() * Math.pow(2, a)));\n }\n continue;\n }\n }\n }\n // Optional post-processing response; also allows trapping\n // HTTP status errors and doing \"something different\",\n // including any further throttling.\n if (processResponse) {\n try {\n return await processResponse(request, response);\n }\n catch (error) {\n // response.throwThrottleError\n if (error.throttle && typeof (error.stall) === \"number\") {\n if (a < attempts) {\n await delay(error.stall);\n continue;\n }\n // Too many retries should behave more like a 5xx server error\n return response.makeServerError(\"exceeded maximum retry limit\", error);\n }\n // Something went wrong during processing; throw a 5xx server error\n response.makeServerError(\"error in post-processing function\", error).assertOk();\n }\n }\n return response;\n }\n // Too many retries should behave more like a 5xx server error\n return response.makeServerError(\"exceeded maximum retry limit\");\n}\nfetchData.lock = function () {\n lockGateways = true;\n};\n// @TODO: Allow a master Gateway function\nfetchData.setGateway = function (gateway) {\n};\nfetchData.setIpfsGateway = function (gateway) {\n if (lockGateways) {\n logger.throwError(\"gateways are locked\", \"UNSUPPORTED_OPERATION\", {\n operation: \"setIpfsGateway\"\n });\n }\n ipfsGateway = gateway;\n};\nfetchData.setArGateway = function (gateway) {\n if (lockGateways) {\n logger.throwError(\"gateways are locked\", \"UNSUPPORTED_OPERATION\", {\n operation: \"setArGateway\"\n });\n }\n arGateway = gateway;\n};\n//# sourceMappingURL=fetch-data.js.map","export const version = \"@ethersproject/providers@6.0.0-beta.8\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _a, _EnsResolver_supports2544, _EnsResolver_getResolver;\nimport { concat, dataSlice, hexlify, zeroPadValue } from \"@ethersproject/bytes\";\nimport { dnsEncode, namehash } from \"@ethersproject/hash\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { encodeBase58, toArray, toNumber } from \"@ethersproject/math\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { fetchData } from \"@ethersproject/web\";\nimport { logger } from \"./logger.js\";\nconst BN_1 = BigInt(1);\nconst Empty = new Uint8Array([]);\nconst HashZero = \"0x0000000000000000000000000000000000000000000000000000000000000000\";\nfunction parseBytes(result, start) {\n if (result === \"0x\") {\n return null;\n }\n const offset = toNumber(dataSlice(result, start, start + 32));\n const length = toNumber(dataSlice(result, offset, offset + 32));\n return dataSlice(result, offset + 32, offset + 32 + length);\n}\nfunction parseString(result, start) {\n try {\n const bytes = parseBytes(result, start);\n if (bytes != null) {\n return toUtf8String(bytes);\n }\n }\n catch (error) { }\n return null;\n}\nfunction numPad(value) {\n const result = toArray(value);\n if (result.length > 32) {\n 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}\nfunction bytesPad(value) {\n if ((value.length % 32) === 0) {\n return value;\n }\n const result = new Uint8Array(Math.ceil(value.length / 32) * 32);\n result.set(value);\n return result;\n}\n// ABI Encodes a series of (bytes, bytes, ...)\nfunction encodeBytes(datas) {\n const result = [];\n let byteCount = 0;\n // Add place-holders for pointers as we add items\n for (let i = 0; i < datas.length; i++) {\n result.push(Empty);\n byteCount += 32;\n }\n for (let i = 0; i < datas.length; i++) {\n const data = logger.getBytes(datas[i]);\n // Update the bytes offset\n result[i] = numPad(byteCount);\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 return concat(result);\n}\n// @TODO: This should use the fetch-data:ipfs gateway\n// Trim off the ipfs:// prefix and return the default gateway URL\nfunction getIpfsLink(link) {\n if (link.match(/^ipfs:\\/\\/ipfs\\//i)) {\n link = link.substring(12);\n }\n else if (link.match(/^ipfs:\\/\\//i)) {\n link = link.substring(7);\n }\n else {\n logger.throwArgumentError(\"unsupported IPFS format\", \"link\", link);\n }\n return `https:/\\/gateway.ipfs.io/ipfs/${link}`;\n}\n;\n;\nexport class MulticoinProviderPlugin {\n constructor(name) {\n defineProperties(this, { name });\n }\n validate(proivder) {\n return this;\n }\n supportsCoinType(coinType) {\n return false;\n }\n async encodeAddress(coinType, address) {\n throw new Error(\"unsupported coin\");\n }\n async decodeAddress(coinType, data) {\n throw new Error(\"unsupported coin\");\n }\n}\nconst BasicMulticoinPluginId = \"org.ethers.provider-prugins.basicmulticoin\";\nexport class BasicMulticoinProviderPlugin extends MulticoinProviderPlugin {\n constructor() {\n super(BasicMulticoinPluginId);\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];\nexport class EnsResolver {\n constructor(provider, address, name) {\n // For EIP-2544 names, the ancestor that provided the resolver\n _EnsResolver_supports2544.set(this, void 0);\n defineProperties(this, { provider, address, name });\n __classPrivateFieldSet(this, _EnsResolver_supports2544, null, \"f\");\n }\n async supportsWildcard() {\n if (!__classPrivateFieldGet(this, _EnsResolver_supports2544, \"f\")) {\n // supportsInterface(bytes4 = selector(\"resolve(bytes,bytes)\"))\n __classPrivateFieldSet(this, _EnsResolver_supports2544, this.provider.call({\n to: this.address,\n data: \"0x01ffc9a79061b92300000000000000000000000000000000000000000000000000000000\"\n }).then((result) => {\n return (logger.getBigInt(result) === BN_1);\n }).catch((error) => {\n if (error.code === \"CALL_EXCEPTION\") {\n return false;\n }\n // Rethrow the error: link is down, etc. Let future attempts retry.\n __classPrivateFieldSet(this, _EnsResolver_supports2544, null, \"f\");\n throw error;\n }), \"f\");\n }\n return await __classPrivateFieldGet(this, _EnsResolver_supports2544, \"f\");\n }\n async _fetch(selector, parameters = \"0x\") {\n // e.g. keccak256(\"addr(bytes32,uint256)\")\n const addrData = concat([selector, namehash(this.name), parameters]);\n const tx = {\n to: this.address,\n enableCcipRead: true,\n data: addrData\n };\n // Wildcard support; use EIP-2544 to resolve the request\n let wrapped = false;\n if (await this.supportsWildcard()) {\n wrapped = true;\n // selector(\"resolve(bytes,bytes)\")\n tx.data = concat([\"0x9061b923\", encodeBytes([dnsEncode(this.name), addrData])]);\n }\n try {\n let data = await this.provider.call(tx);\n if ((logger.getBytes(data).length % 32) === 4) {\n return logger.throwError(\"resolver threw error\", \"CALL_EXCEPTION\", {\n transaction: tx, data\n });\n }\n if (wrapped) {\n return parseBytes(data, 0);\n }\n return data;\n }\n catch (error) {\n if (error.code !== \"CALL_EXCEPTION\") {\n throw error;\n }\n }\n return null;\n }\n async getAddress(coinType = 60) {\n if (coinType === 60) {\n try {\n // keccak256(\"addr(bytes32)\")\n const result = await this._fetch(\"0x3b3b57de\");\n // No address\n if (result === \"0x\" || result === HashZero) {\n return null;\n }\n const network = await this.provider.getNetwork();\n return network.formatter.callAddress(result);\n }\n catch (error) {\n if (error.code === \"CALL_EXCEPTION\") {\n return null;\n }\n throw error;\n }\n }\n let coinPlugin = null;\n for (const plugin of this.provider.plugins) {\n if (!(plugin instanceof MulticoinProviderPlugin)) {\n continue;\n }\n if (plugin.supportsCoinType(coinType)) {\n coinPlugin = plugin;\n break;\n }\n }\n if (coinPlugin == null) {\n return null;\n }\n // keccak256(\"addr(bytes32,uint256\")\n const data = parseBytes((await this._fetch(\"0xf1cb7e06\", numPad(coinType))) || \"0x\", 0);\n // No address\n if (data == null || data === \"0x\") {\n return null;\n }\n // Compute the address\n const address = await coinPlugin.encodeAddress(coinType, data);\n if (address != null) {\n return address;\n }\n return logger.throwError(`invalid coin data`, \"UNSUPPORTED_OPERATION\", {\n operation: `getAddress(${coinType})`,\n info: { coinType, data }\n });\n }\n async getText(key) {\n // The key encoded as parameter to fetchBytes\n let keyBytes = toUtf8Bytes(key);\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 const calldata = logger.getBytes(concat([numPad(64), numPad(keyBytes.length), keyBytes]));\n const hexBytes = parseBytes((await this._fetch(\"0x59d1d43c\", bytesPad(calldata))) || \"0x\", 0);\n if (hexBytes == null || hexBytes === \"0x\") {\n return null;\n }\n return toUtf8String(hexBytes);\n }\n async getContentHash() {\n // keccak256(\"contenthash()\")\n const hexBytes = parseBytes((await this._fetch(\"0xbc1c58d1\")) || \"0x\", 0);\n // No contenthash\n if (hexBytes == null || hexBytes === \"0x\") {\n return null;\n }\n // IPFS (CID: 1, Type: 70=DAG-PB, 72=libp2p-key)\n const ipfs = hexBytes.match(/^0x(e3010170|e5010172)(([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f]*))$/);\n if (ipfs) {\n const scheme = (ipfs[1] === \"e3010170\") ? \"ipfs\" : \"ipns\";\n const length = parseInt(ipfs[4], 16);\n if (ipfs[5].length === length * 2) {\n return `${scheme}:/\\/${encodeBase58(\"0x\" + ipfs[2])}`;\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 && swarm[1].length === 64) {\n return `bzz:/\\/${swarm[1]}`;\n }\n return logger.throwError(`invalid or unsupported content hash data`, \"UNSUPPORTED_OPERATION\", {\n operation: \"getContentHash()\",\n info: { data: hexBytes }\n });\n }\n async getAvatar() {\n return (await this._getAvatar()).url;\n }\n async _getAvatar() {\n const linkage = [{ type: \"name\", value: 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) {\n linkage.push({ type: \"!avatar\", value: \"\" });\n throw new Error(\"!avatar\");\n }\n linkage.push({ type: \"avatar\", value: avatar });\n for (let i = 0; i < matchers.length; i++) {\n const match = avatar.match(matchers[i]);\n if (match == null) {\n continue;\n }\n const scheme = match[1].toLowerCase();\n switch (scheme) {\n case \"https\":\n case \"data\":\n linkage.push({ type: \"url\", value: avatar });\n return { linkage, url: avatar };\n case \"ipfs\": {\n const url = getIpfsLink(avatar);\n linkage.push({ type: \"ipfs\", value: avatar });\n linkage.push({ type: \"url\", value: url });\n return { linkage, url };\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, value: avatar });\n // The owner of this name\n const owner = await this.getAddress();\n if (owner == null) {\n linkage.push({ type: \"!owner\", value: \"\" });\n throw new Error(\"!owner\");\n }\n const comps = (match[2] || \"\").split(\"/\");\n if (comps.length !== 2) {\n linkage.push({ type: `!${scheme}caip`, value: (match[2] || \"\") });\n throw new Error(\"!caip\");\n }\n const formatter = (await this.provider.getNetwork()).formatter;\n const addr = formatter.address(comps[0]);\n const tokenId = numPad(comps[1]);\n // Check that this account owns the token\n if (scheme === \"erc721\") {\n // ownerOf(uint256 tokenId)\n const tokenOwner = formatter.callAddress(await this.provider.call({\n to: addr, data: concat([\"0x6352211e\", tokenId])\n }));\n if (owner !== tokenOwner) {\n linkage.push({ type: \"!owner\", value: tokenOwner });\n throw new Error(\"!owner\");\n }\n linkage.push({ type: \"owner\", value: tokenOwner });\n }\n else if (scheme === \"erc1155\") {\n // balanceOf(address owner, uint256 tokenId)\n const balance = logger.getBigInt(await this.provider.call({\n to: addr, data: concat([\"0x00fdd58e\", zeroPadValue(owner, 32), tokenId])\n }));\n if (!balance) {\n linkage.push({ type: \"!balance\", value: \"0\" });\n throw new Error(\"!balance\");\n }\n linkage.push({ type: \"balance\", value: balance.toString() });\n }\n // Call the token contract for the metadata URL\n const tx = {\n to: comps[0],\n data: concat([selector, tokenId])\n };\n let metadataUrl = parseString(await this.provider.call(tx), 0);\n if (metadataUrl == null) {\n linkage.push({ type: \"!metadata-url\", value: \"\" });\n throw new Error(\"!metadata-url\");\n }\n linkage.push({ type: \"metadata-url-base\", value: metadataUrl });\n // ERC-1155 allows a generic {id} in the URL\n if (scheme === \"erc1155\") {\n metadataUrl = metadataUrl.replace(\"{id}\", hexlify(tokenId).substring(2));\n linkage.push({ type: \"metadata-url-expanded\", value: metadataUrl });\n }\n // Transform IPFS metadata links\n if (metadataUrl.match(/^ipfs:/i)) {\n metadataUrl = getIpfsLink(metadataUrl);\n }\n linkage.push({ type: \"metadata-url\", value: metadataUrl });\n // Get the token metadata\n let metadata = {};\n const response = await fetchData(metadataUrl);\n response.assertOk();\n try {\n metadata = response.bodyJson;\n }\n catch (error) {\n try {\n linkage.push({ type: \"!metadata\", value: response.bodyText });\n }\n catch (error) {\n const bytes = response.body;\n if (bytes) {\n linkage.push({ type: \"!metadata\", value: hexlify(bytes) });\n }\n throw error;\n }\n throw error;\n }\n if (!metadata) {\n linkage.push({ type: \"!metadata\", value: \"\" });\n throw new Error(\"!metadata\");\n }\n linkage.push({ type: \"metadata\", value: JSON.stringify(metadata) });\n // Pull the image URL out\n let imageUrl = metadata.image;\n if (typeof (imageUrl) !== \"string\") {\n linkage.push({ type: \"!imageUrl\", value: \"\" });\n throw new Error(\"!imageUrl\");\n }\n if (imageUrl.match(/^(https:\\/\\/|data:)/i)) {\n // Allow\n }\n else {\n // Transform IPFS link to gateway\n const ipfs = imageUrl.match(matcherIpfs);\n if (ipfs == null) {\n linkage.push({ type: \"!imageUrl-ipfs\", value: imageUrl });\n throw new Error(\"!imageUrl-ipfs\");\n }\n linkage.push({ type: \"imageUrl-ipfs\", value: imageUrl });\n imageUrl = getIpfsLink(imageUrl);\n }\n linkage.push({ type: \"url\", value: imageUrl });\n return { linkage, url: imageUrl };\n }\n }\n }\n }\n catch (error) {\n console.log(\"EE\", error);\n }\n return { linkage, url: null };\n }\n static async fromName(provider, name) {\n let currentName = name;\n while (true) {\n if (currentName === \"\" || currentName === \".\") {\n return null;\n }\n // Optimization since the eth node cannot change and does\n // not have a wildcar resolver\n if (name !== \"eth\" && currentName === \"eth\") {\n return null;\n }\n // Check the current node for a resolver\n const addr = await __classPrivateFieldGet(EnsResolver, _a, \"m\", _EnsResolver_getResolver).call(EnsResolver, provider, currentName);\n // Found a resolver!\n if (addr != null) {\n const resolver = new EnsResolver(provider, addr, name);\n // Legacy resolver found, using EIP-2544 so it isn't safe to use\n if (currentName !== name && !(await resolver.supportsWildcard())) {\n return null;\n }\n return resolver;\n }\n // Get the parent node\n currentName = currentName.split(\".\").slice(1).join(\".\");\n }\n }\n}\n_a = EnsResolver, _EnsResolver_supports2544 = new WeakMap(), _EnsResolver_getResolver = async function _EnsResolver_getResolver(provider, name) {\n const network = await provider.getNetwork();\n const ensPlugin = network.getPlugin(\"org.ethers.plugins.ens\");\n // No ENS...\n if (!ensPlugin) {\n return logger.throwError(\"network does not support ENS\", \"UNSUPPORTED_OPERATION\", {\n operation: \"getResolver\", info: { network: network.name }\n });\n }\n try {\n // keccak256(\"resolver(bytes32)\")\n const addrData = await provider.call({\n to: ensPlugin.address,\n data: concat([\"0x0178b8bf\", namehash(name)]),\n enableCcipRead: true\n });\n const addr = network.formatter.callAddress(addrData);\n if (addr === dataSlice(HashZero, 0, 20)) {\n return null;\n }\n return addr;\n }\n catch (error) {\n // ENS registry cannot throw errors on resolver(bytes32),\n // so probably a link error\n throw error;\n }\n return null;\n};\n//# sourceMappingURL=ens-resolver.js.map","export const version = \"@ethersproject/signing-key@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { version } from \"./_version.js\";\nimport { Logger } from \"@ethersproject/logger\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Signature_props;\nimport { concat, dataLength, hexlify, isHexString } from \"@ethersproject/bytes\";\nimport { getStore, setStore } from \"@ethersproject/properties\";\nimport { logger } from \"./logger.js\";\n// Constants\nconst BN_0 = BigInt(0);\nconst BN_1 = BigInt(1);\nconst BN_2 = BigInt(2);\nconst BN_27 = BigInt(27);\nconst BN_28 = BigInt(28);\nconst BN_35 = BigInt(35);\nconst _guard = {};\nconst Zero = \"0x0000000000000000000000000000000000000000000000000000000000000000\";\nexport class Signature {\n constructor(guard, r, s, v) {\n _Signature_props.set(this, void 0);\n logger.assertPrivate(guard, _guard, \"Signature\");\n __classPrivateFieldSet(this, _Signature_props, { r, s, v, networkV: null }, \"f\");\n }\n get r() { return getStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"r\"); }\n set r(value) {\n if (dataLength(value) !== 32) {\n logger.throwArgumentError(\"invalid r\", \"value\", value);\n }\n setStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"r\", hexlify(value));\n }\n get s() { return getStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"s\"); }\n set s(value) {\n if (dataLength(value) !== 32) {\n logger.throwArgumentError(\"invalid r\", \"value\", value);\n }\n else if (logger.getBytes(value)[0] & 0x80) {\n logger.throwArgumentError(\"non-canonical s\", \"value\", value);\n }\n setStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"s\", hexlify(value));\n }\n get v() { return getStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"v\"); }\n set v(value) {\n const v = logger.getNumber(value, \"value\");\n if (v !== 27 && v !== 28) {\n throw new Error(\"@TODO\");\n }\n setStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"v\", v);\n }\n get networkV() { return getStore(__classPrivateFieldGet(this, _Signature_props, \"f\"), \"networkV\"); }\n get legacyChainId() {\n const v = this.networkV;\n if (v == null) {\n return null;\n }\n return Signature.getChainId(v);\n }\n get yParity() {\n if (this.v === 27) {\n return 0;\n }\n return 1;\n /*\n // When v is 0 or 1 it is the recid directly\n if (this.v.isZero()) { return 0; }\n if (this.v.eq(1)) { return 1; }\n\n // Otherwise, odd (e.g. 27) is 0 and even (e.g. 28) is 1\n return this.v.and(1).isZero() ? 1: 0;\n */\n }\n get yParityAndS() {\n // The EIP-2098 compact representation\n const yParityAndS = logger.getBytes(this.s);\n if (this.yParity) {\n yParityAndS[0] |= 0x80;\n }\n return hexlify(yParityAndS);\n }\n get compactSerialized() {\n return concat([this.r, this.yParityAndS]);\n }\n get serialized() {\n return concat([this.r, this.s, (this.yParity ? \"0x1c\" : \"0x1b\")]);\n }\n [(_Signature_props = new WeakMap(), Symbol.for('nodejs.util.inspect.custom'))]() {\n return `Signature { r: \"${this.r}\", s: \"${this.s}\", yParity: ${this.yParity}, networkV: ${this.networkV} }`;\n }\n clone() {\n const clone = new Signature(_guard, this.r, this.s, this.v);\n if (this.networkV) {\n setStore(__classPrivateFieldGet(clone, _Signature_props, \"f\"), \"networkV\", this.networkV);\n }\n return clone;\n }\n freeze() {\n Object.freeze(__classPrivateFieldGet(this, _Signature_props, \"f\"));\n return this;\n }\n isFrozen() {\n return Object.isFrozen(__classPrivateFieldGet(this, _Signature_props, \"f\"));\n }\n toJSON() {\n const networkV = this.networkV;\n return {\n _type: \"signature\",\n networkV: ((networkV != null) ? networkV.toString() : null),\n r: this.r, s: this.s, v: this.v,\n };\n }\n static create() {\n return new Signature(_guard, Zero, Zero, 27);\n }\n // Get the chain ID from an EIP-155 v\n static getChainId(v) {\n const bv = logger.getBigInt(v, \"v\");\n // The v is not an EIP-155 v, so it is the unspecified chain ID\n if ((bv == BN_27) || (bv == BN_28)) {\n return BN_0;\n }\n // Bad value for an EIP-155 v\n if (bv < BN_35) {\n logger.throwArgumentError(\"invalid EIP-155 v\", \"v\", v);\n }\n return (bv - BN_35) / BN_2;\n }\n // Get the EIP-155 v transformed for a given chainId\n static getChainIdV(chainId, v) {\n return (logger.getBigInt(chainId) * BN_2) + BigInt(35 + v - 27);\n }\n // Convert an EIP-155 v into a normalized v\n static getNormalizedV(v) {\n const bv = logger.getBigInt(v);\n if (bv == BN_0) {\n return 27;\n }\n if (bv == BN_1) {\n return 28;\n }\n // Otherwise, EIP-155 v means odd is 27 and even is 28\n return (bv & BN_1) ? 27 : 28;\n }\n static from(sig) {\n const throwError = (message) => {\n return logger.throwArgumentError(message, \"signature\", sig);\n };\n if (typeof (sig) === \"string\") {\n const bytes = logger.getBytes(sig, \"signature\");\n if (bytes.length === 64) {\n const r = hexlify(bytes.slice(0, 32));\n const s = bytes.slice(32, 64);\n const v = (s[0] & 0x80) ? 28 : 27;\n s[0] &= 0x7f;\n return new Signature(_guard, r, hexlify(s), v);\n }\n if (dataLength(sig) !== 65) {\n const r = hexlify(sig.slice(0, 32));\n const s = bytes.slice(32, 64);\n if (s[0] & 0x80) {\n throwError(\"non-canonical s\");\n }\n const v = Signature.getNormalizedV(bytes[64]);\n return new Signature(_guard, r, hexlify(s), v);\n }\n return throwError(\"invlaid raw signature length\");\n }\n if (sig instanceof Signature) {\n return sig.clone();\n }\n // Get r\n const r = sig.r;\n if (r == null) {\n throwError(\"missing r\");\n }\n if (!isHexString(r, 32)) {\n throwError(\"invalid r\");\n }\n // Get s; by any means necessary (we check consistency below)\n const s = (function (s, yParityAndS) {\n if (s != null) {\n if (!isHexString(s, 32)) {\n throwError(\"invalid s\");\n }\n return s;\n }\n if (yParityAndS != null) {\n if (!isHexString(yParityAndS, 32)) {\n throwError(\"invalid yParityAndS\");\n }\n const bytes = logger.getBytes(yParityAndS);\n bytes[0] &= 0x7f;\n return hexlify(bytes);\n }\n return throwError(\"missing s\");\n })(sig.s, sig.yParityAndS);\n if (logger.getBytes(s)[0] & 0x80) {\n throwError(\"non-canonical s\");\n }\n // Get v; by any means necessary (we check consistency below)\n const { networkV, v } = (function (_v, yParityAndS, yParity) {\n if (_v != null) {\n const v = logger.getBigInt(_v);\n return {\n networkV: ((v >= BN_35) ? v : undefined),\n v: Signature.getNormalizedV(v)\n };\n }\n if (yParityAndS != null) {\n if (!isHexString(yParityAndS, 32)) {\n throwError(\"invalid yParityAndS\");\n }\n return { v: ((logger.getBytes(yParityAndS)[0] & 0x80) ? 28 : 27) };\n }\n if (yParity != null) {\n switch (yParity) {\n case 0: return { v: 27 };\n case 1: return { v: 28 };\n }\n return throwError(\"invalid yParity\");\n }\n return throwError(\"missing v\");\n })(sig.v, sig.yParityAndS, sig.yParity);\n const result = new Signature(_guard, r, s, v);\n if (networkV) {\n setStore(__classPrivateFieldGet(result, _Signature_props, \"f\"), \"networkV\", networkV);\n }\n // If multiple of v, yParity, yParityAndS we given, check they match\n if (\"yParity\" in sig && sig.yParity !== result.yParity) {\n throwError(\"yParity mismatch\");\n }\n else if (\"yParityAndS\" in sig && sig.yParityAndS !== result.yParityAndS) {\n throwError(\"yParityAndS mismatch\");\n }\n return result;\n }\n}\n//# sourceMappingURL=signature.js.map","/*! noble-secp256k1 - MIT License (c) 2019 Paul Miller (paulmillr.com) */\nimport nodeCrypto from 'crypto';\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst _3n = BigInt(3);\nconst _8n = BigInt(8);\nconst POW_2_256 = _2n ** BigInt(256);\nconst CURVE = {\n a: _0n,\n b: BigInt(7),\n P: POW_2_256 - _2n ** BigInt(32) - BigInt(977),\n n: POW_2_256 - BigInt('432420386565659656852420866394968145599'),\n h: _1n,\n Gx: BigInt('55066263022277343669578718895168534326250603453777594175500187360389116729240'),\n Gy: BigInt('32670510020758816978083085130507043184471273380659243275938904335757337482424'),\n beta: BigInt('0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee'),\n};\nexport { CURVE };\nfunction weistrass(x) {\n const { a, b } = CURVE;\n const x2 = mod(x * x);\n const x3 = mod(x2 * x);\n return mod(x3 + a * x + b);\n}\nconst USE_ENDOMORPHISM = CURVE.a === _0n;\nclass JacobianPoint {\n constructor(x, y, z) {\n this.x = x;\n this.y = y;\n this.z = z;\n }\n static fromAffine(p) {\n if (!(p instanceof Point)) {\n throw new TypeError('JacobianPoint#fromAffine: expected Point');\n }\n return new JacobianPoint(p.x, p.y, _1n);\n }\n static toAffineBatch(points) {\n const toInv = invertBatch(points.map((p) => p.z));\n return points.map((p, i) => p.toAffine(toInv[i]));\n }\n static normalizeZ(points) {\n return JacobianPoint.toAffineBatch(points).map(JacobianPoint.fromAffine);\n }\n equals(other) {\n if (!(other instanceof JacobianPoint))\n throw new TypeError('JacobianPoint expected');\n const { x: X1, y: Y1, z: Z1 } = this;\n const { x: X2, y: Y2, z: Z2 } = other;\n const Z1Z1 = mod(Z1 ** _2n);\n const Z2Z2 = mod(Z2 ** _2n);\n const U1 = mod(X1 * Z2Z2);\n const U2 = mod(X2 * Z1Z1);\n const S1 = mod(mod(Y1 * Z2) * Z2Z2);\n const S2 = mod(mod(Y2 * Z1) * Z1Z1);\n return U1 === U2 && S1 === S2;\n }\n negate() {\n return new JacobianPoint(this.x, mod(-this.y), this.z);\n }\n double() {\n const { x: X1, y: Y1, z: Z1 } = this;\n const A = mod(X1 ** _2n);\n const B = mod(Y1 ** _2n);\n const C = mod(B ** _2n);\n const D = mod(_2n * (mod((X1 + B) ** _2n) - A - C));\n const E = mod(_3n * A);\n const F = mod(E ** _2n);\n const X3 = mod(F - _2n * D);\n const Y3 = mod(E * (D - X3) - _8n * C);\n const Z3 = mod(_2n * Y1 * Z1);\n return new JacobianPoint(X3, Y3, Z3);\n }\n add(other) {\n if (!(other instanceof JacobianPoint))\n throw new TypeError('JacobianPoint expected');\n const { x: X1, y: Y1, z: Z1 } = this;\n const { x: X2, y: Y2, z: Z2 } = other;\n if (X2 === _0n || Y2 === _0n)\n return this;\n if (X1 === _0n || Y1 === _0n)\n return other;\n const Z1Z1 = mod(Z1 ** _2n);\n const Z2Z2 = mod(Z2 ** _2n);\n const U1 = mod(X1 * Z2Z2);\n const U2 = mod(X2 * Z1Z1);\n const S1 = mod(mod(Y1 * Z2) * Z2Z2);\n const S2 = mod(mod(Y2 * Z1) * Z1Z1);\n const H = mod(U2 - U1);\n const r = mod(S2 - S1);\n if (H === _0n) {\n if (r === _0n) {\n return this.double();\n }\n else {\n return JacobianPoint.ZERO;\n }\n }\n const HH = mod(H ** _2n);\n const HHH = mod(H * HH);\n const V = mod(U1 * HH);\n const X3 = mod(r ** _2n - HHH - _2n * V);\n const Y3 = mod(r * (V - X3) - S1 * HHH);\n const Z3 = mod(Z1 * Z2 * H);\n return new JacobianPoint(X3, Y3, Z3);\n }\n subtract(other) {\n return this.add(other.negate());\n }\n multiplyUnsafe(scalar) {\n let n = normalizeScalar(scalar);\n const G = JacobianPoint.BASE;\n const P0 = JacobianPoint.ZERO;\n if (n === _0n)\n return P0;\n if (n === _1n)\n return this;\n if (!USE_ENDOMORPHISM) {\n let p = P0;\n let d = this;\n while (n > _0n) {\n if (n & _1n)\n p = p.add(d);\n d = d.double();\n n >>= _1n;\n }\n return p;\n }\n let { k1neg, k1, k2neg, k2 } = splitScalarEndo(n);\n let k1p = P0;\n let k2p = P0;\n let d = this;\n while (k1 > _0n || k2 > _0n) {\n if (k1 & _1n)\n k1p = k1p.add(d);\n if (k2 & _1n)\n k2p = k2p.add(d);\n d = d.double();\n k1 >>= _1n;\n k2 >>= _1n;\n }\n if (k1neg)\n k1p = k1p.negate();\n if (k2neg)\n k2p = k2p.negate();\n k2p = new JacobianPoint(mod(k2p.x * CURVE.beta), k2p.y, k2p.z);\n return k1p.add(k2p);\n }\n precomputeWindow(W) {\n const windows = USE_ENDOMORPHISM ? 128 / W + 1 : 256 / W + 1;\n const points = [];\n let p = this;\n let base = p;\n for (let window = 0; window < windows; window++) {\n base = p;\n points.push(base);\n for (let i = 1; i < 2 ** (W - 1); i++) {\n base = base.add(p);\n points.push(base);\n }\n p = base.double();\n }\n return points;\n }\n wNAF(n, affinePoint) {\n if (!affinePoint && this.equals(JacobianPoint.BASE))\n affinePoint = Point.BASE;\n const W = (affinePoint && affinePoint._WINDOW_SIZE) || 1;\n if (256 % W) {\n throw new Error('Point#wNAF: Invalid precomputation window, must be power of 2');\n }\n let precomputes = affinePoint && pointPrecomputes.get(affinePoint);\n if (!precomputes) {\n precomputes = this.precomputeWindow(W);\n if (affinePoint && W !== 1) {\n precomputes = JacobianPoint.normalizeZ(precomputes);\n pointPrecomputes.set(affinePoint, precomputes);\n }\n }\n let p = JacobianPoint.ZERO;\n let f = JacobianPoint.ZERO;\n const windows = 1 + (USE_ENDOMORPHISM ? 128 / W : 256 / W);\n const windowSize = 2 ** (W - 1);\n const mask = BigInt(2 ** W - 1);\n const maxNumber = 2 ** W;\n const shiftBy = BigInt(W);\n for (let window = 0; window < windows; window++) {\n const offset = window * windowSize;\n let wbits = Number(n & mask);\n n >>= shiftBy;\n if (wbits > windowSize) {\n wbits -= maxNumber;\n n += _1n;\n }\n if (wbits === 0) {\n let pr = precomputes[offset];\n if (window % 2)\n pr = pr.negate();\n f = f.add(pr);\n }\n else {\n let cached = precomputes[offset + Math.abs(wbits) - 1];\n if (wbits < 0)\n cached = cached.negate();\n p = p.add(cached);\n }\n }\n return { p, f };\n }\n multiply(scalar, affinePoint) {\n let n = normalizeScalar(scalar);\n let point;\n let fake;\n if (USE_ENDOMORPHISM) {\n const { k1neg, k1, k2neg, k2 } = splitScalarEndo(n);\n let { p: k1p, f: f1p } = this.wNAF(k1, affinePoint);\n let { p: k2p, f: f2p } = this.wNAF(k2, affinePoint);\n if (k1neg)\n k1p = k1p.negate();\n if (k2neg)\n k2p = k2p.negate();\n k2p = new JacobianPoint(mod(k2p.x * CURVE.beta), k2p.y, k2p.z);\n point = k1p.add(k2p);\n fake = f1p.add(f2p);\n }\n else {\n const { p, f } = this.wNAF(n, affinePoint);\n point = p;\n fake = f;\n }\n return JacobianPoint.normalizeZ([point, fake])[0];\n }\n toAffine(invZ = invert(this.z)) {\n const { x, y, z } = this;\n const iz1 = invZ;\n const iz2 = mod(iz1 * iz1);\n const iz3 = mod(iz2 * iz1);\n const ax = mod(x * iz2);\n const ay = mod(y * iz3);\n const zz = mod(z * iz1);\n if (zz !== _1n)\n throw new Error('invZ was invalid');\n return new Point(ax, ay);\n }\n}\nJacobianPoint.BASE = new JacobianPoint(CURVE.Gx, CURVE.Gy, _1n);\nJacobianPoint.ZERO = new JacobianPoint(_0n, _1n, _0n);\nconst pointPrecomputes = new WeakMap();\nexport class Point {\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n _setWindowSize(windowSize) {\n this._WINDOW_SIZE = windowSize;\n pointPrecomputes.delete(this);\n }\n static fromCompressedHex(bytes) {\n const isShort = bytes.length === 32;\n const x = bytesToNumber(isShort ? bytes : bytes.subarray(1));\n if (!isValidFieldElement(x))\n throw new Error('Point is not on curve');\n const y2 = weistrass(x);\n let y = sqrtMod(y2);\n const isYOdd = (y & _1n) === _1n;\n if (isShort) {\n if (isYOdd)\n y = mod(-y);\n }\n else {\n const isFirstByteOdd = (bytes[0] & 1) === 1;\n if (isFirstByteOdd !== isYOdd)\n y = mod(-y);\n }\n const point = new Point(x, y);\n point.assertValidity();\n return point;\n }\n static fromUncompressedHex(bytes) {\n const x = bytesToNumber(bytes.subarray(1, 33));\n const y = bytesToNumber(bytes.subarray(33, 65));\n const point = new Point(x, y);\n point.assertValidity();\n return point;\n }\n static fromHex(hex) {\n const bytes = ensureBytes(hex);\n const len = bytes.length;\n const header = bytes[0];\n if (len === 32 || (len === 33 && (header === 0x02 || header === 0x03))) {\n return this.fromCompressedHex(bytes);\n }\n if (len === 65 && header === 0x04)\n return this.fromUncompressedHex(bytes);\n throw new Error(`Point.fromHex: received invalid point. Expected 32-33 compressed bytes or 65 uncompressed bytes, not ${len}`);\n }\n static fromPrivateKey(privateKey) {\n return Point.BASE.multiply(normalizePrivateKey(privateKey));\n }\n static fromSignature(msgHash, signature, recovery) {\n msgHash = ensureBytes(msgHash);\n const h = truncateHash(msgHash);\n const { r, s } = normalizeSignature(signature);\n if (recovery !== 0 && recovery !== 1) {\n throw new Error('Cannot recover signature: invalid recovery bit');\n }\n if (h === _0n)\n throw new Error('Cannot recover signature: msgHash cannot be 0');\n const prefix = recovery & 1 ? '03' : '02';\n const R = Point.fromHex(prefix + numTo32bStr(r));\n const { n } = CURVE;\n const rinv = invert(r, n);\n const u1 = mod(-h * rinv, n);\n const u2 = mod(s * rinv, n);\n const Q = Point.BASE.multiplyAndAddUnsafe(R, u1, u2);\n if (!Q)\n throw new Error('Cannot recover signature: point at infinify');\n Q.assertValidity();\n return Q;\n }\n toRawBytes(isCompressed = false) {\n return hexToBytes(this.toHex(isCompressed));\n }\n toHex(isCompressed = false) {\n const x = numTo32bStr(this.x);\n if (isCompressed) {\n const prefix = this.y & _1n ? '03' : '02';\n return `${prefix}${x}`;\n }\n else {\n return `04${x}${numTo32bStr(this.y)}`;\n }\n }\n toHexX() {\n return this.toHex(true).slice(2);\n }\n toRawX() {\n return this.toRawBytes(true).slice(1);\n }\n assertValidity() {\n const msg = 'Point is not on elliptic curve';\n const { x, y } = this;\n if (!isValidFieldElement(x) || !isValidFieldElement(y))\n throw new Error(msg);\n const left = mod(y * y);\n const right = weistrass(x);\n if (mod(left - right) !== _0n)\n throw new Error(msg);\n }\n equals(other) {\n return this.x === other.x && this.y === other.y;\n }\n negate() {\n return new Point(this.x, mod(-this.y));\n }\n double() {\n return JacobianPoint.fromAffine(this).double().toAffine();\n }\n add(other) {\n return JacobianPoint.fromAffine(this).add(JacobianPoint.fromAffine(other)).toAffine();\n }\n subtract(other) {\n return this.add(other.negate());\n }\n multiply(scalar) {\n return JacobianPoint.fromAffine(this).multiply(scalar, this).toAffine();\n }\n multiplyAndAddUnsafe(Q, a, b) {\n const P = JacobianPoint.fromAffine(this);\n const aP = P.multiply(a);\n const bQ = JacobianPoint.fromAffine(Q).multiplyUnsafe(b);\n const sum = aP.add(bQ);\n return sum.equals(JacobianPoint.ZERO) ? undefined : sum.toAffine();\n }\n}\nPoint.BASE = new Point(CURVE.Gx, CURVE.Gy);\nPoint.ZERO = new Point(_0n, _0n);\nfunction sliceDER(s) {\n return Number.parseInt(s[0], 16) >= 8 ? '00' + s : s;\n}\nfunction parseDERInt(data) {\n if (data.length < 2 || data[0] !== 0x02) {\n throw new Error(`Invalid signature integer tag: ${bytesToHex(data)}`);\n }\n const len = data[1];\n const res = data.subarray(2, len + 2);\n if (!len || res.length !== len) {\n throw new Error(`Invalid signature integer: wrong length`);\n }\n if (res[0] === 0x00 && res[1] <= 0x7f) {\n throw new Error('Invalid signature integer: trailing length');\n }\n return { data: bytesToNumber(res), left: data.subarray(len + 2) };\n}\nfunction parseDERSignature(data) {\n if (data.length < 2 || data[0] != 0x30) {\n throw new Error(`Invalid signature tag: ${bytesToHex(data)}`);\n }\n if (data[1] !== data.length - 2) {\n throw new Error('Invalid signature: incorrect length');\n }\n const { data: r, left: sBytes } = parseDERInt(data.subarray(2));\n const { data: s, left: rBytesLeft } = parseDERInt(sBytes);\n if (rBytesLeft.length) {\n throw new Error(`Invalid signature: left bytes after parsing: ${bytesToHex(rBytesLeft)}`);\n }\n return { r, s };\n}\nexport class Signature {\n constructor(r, s) {\n this.r = r;\n this.s = s;\n this.assertValidity();\n }\n static fromCompact(hex) {\n const arr = isUint8a(hex);\n const name = 'Signature.fromCompact';\n if (typeof hex !== 'string' && !arr)\n throw new TypeError(`${name}: Expected string or Uint8Array`);\n const str = arr ? bytesToHex(hex) : hex;\n if (str.length !== 128)\n throw new Error(`${name}: Expected 64-byte hex`);\n return new Signature(hexToNumber(str.slice(0, 64)), hexToNumber(str.slice(64, 128)));\n }\n static fromDER(hex) {\n const arr = isUint8a(hex);\n if (typeof hex !== 'string' && !arr)\n throw new TypeError(`Signature.fromDER: Expected string or Uint8Array`);\n const { r, s } = parseDERSignature(arr ? hex : hexToBytes(hex));\n return new Signature(r, s);\n }\n static fromHex(hex) {\n return this.fromDER(hex);\n }\n assertValidity() {\n const { r, s } = this;\n if (!isWithinCurveOrder(r))\n throw new Error('Invalid Signature: r must be 0 < r < n');\n if (!isWithinCurveOrder(s))\n throw new Error('Invalid Signature: s must be 0 < s < n');\n }\n hasHighS() {\n const HALF = CURVE.n >> _1n;\n return this.s > HALF;\n }\n normalizeS() {\n return this.hasHighS() ? new Signature(this.r, CURVE.n - this.s) : this;\n }\n toDERRawBytes(isCompressed = false) {\n return hexToBytes(this.toDERHex(isCompressed));\n }\n toDERHex(isCompressed = false) {\n const sHex = sliceDER(numberToHexUnpadded(this.s));\n if (isCompressed)\n return sHex;\n const rHex = sliceDER(numberToHexUnpadded(this.r));\n const rLen = numberToHexUnpadded(rHex.length / 2);\n const sLen = numberToHexUnpadded(sHex.length / 2);\n const length = numberToHexUnpadded(rHex.length / 2 + sHex.length / 2 + 4);\n return `30${length}02${rLen}${rHex}02${sLen}${sHex}`;\n }\n toRawBytes() {\n return this.toDERRawBytes();\n }\n toHex() {\n return this.toDERHex();\n }\n toCompactRawBytes() {\n return hexToBytes(this.toCompactHex());\n }\n toCompactHex() {\n return numTo32bStr(this.r) + numTo32bStr(this.s);\n }\n}\nfunction concatBytes(...arrays) {\n if (!arrays.every(isUint8a))\n throw new Error('Uint8Array list expected');\n if (arrays.length === 1)\n return arrays[0];\n const length = arrays.reduce((a, arr) => a + arr.length, 0);\n const result = new Uint8Array(length);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const arr = arrays[i];\n result.set(arr, pad);\n pad += arr.length;\n }\n return result;\n}\nfunction isUint8a(bytes) {\n return bytes instanceof Uint8Array;\n}\nconst hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\nfunction bytesToHex(uint8a) {\n if (!(uint8a instanceof Uint8Array))\n throw new Error('Expected Uint8Array');\n let hex = '';\n for (let i = 0; i < uint8a.length; i++) {\n hex += hexes[uint8a[i]];\n }\n return hex;\n}\nfunction numTo32bStr(num) {\n if (num > POW_2_256)\n throw new Error('Expected number < 2^256');\n return num.toString(16).padStart(64, '0');\n}\nfunction numTo32b(num) {\n return hexToBytes(numTo32bStr(num));\n}\nfunction numberToHexUnpadded(num) {\n const hex = num.toString(16);\n return hex.length & 1 ? `0${hex}` : hex;\n}\nfunction hexToNumber(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToNumber: expected string, got ' + typeof hex);\n }\n return BigInt(`0x${hex}`);\n}\nfunction hexToBytes(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToBytes: expected string, got ' + typeof hex);\n }\n if (hex.length % 2)\n throw new Error('hexToBytes: received invalid unpadded hex' + hex.length);\n const array = new Uint8Array(hex.length / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\nfunction bytesToNumber(bytes) {\n return hexToNumber(bytesToHex(bytes));\n}\nfunction ensureBytes(hex) {\n return hex instanceof Uint8Array ? Uint8Array.from(hex) : hexToBytes(hex);\n}\nfunction normalizeScalar(num) {\n if (typeof num === 'number' && Number.isSafeInteger(num) && num > 0)\n return BigInt(num);\n if (typeof num === 'bigint' && isWithinCurveOrder(num))\n return num;\n throw new TypeError('Expected valid private scalar: 0 < scalar < curve.n');\n}\nfunction mod(a, b = CURVE.P) {\n const result = a % b;\n return result >= _0n ? result : b + result;\n}\nfunction pow2(x, power) {\n const { P } = CURVE;\n let res = x;\n while (power-- > _0n) {\n res *= res;\n res %= P;\n }\n return res;\n}\nfunction sqrtMod(x) {\n const { P } = CURVE;\n const _6n = BigInt(6);\n const _11n = BigInt(11);\n const _22n = BigInt(22);\n const _23n = BigInt(23);\n const _44n = BigInt(44);\n const _88n = BigInt(88);\n const b2 = (x * x * x) % P;\n const b3 = (b2 * b2 * x) % P;\n const b6 = (pow2(b3, _3n) * b3) % P;\n const b9 = (pow2(b6, _3n) * b3) % P;\n const b11 = (pow2(b9, _2n) * b2) % P;\n const b22 = (pow2(b11, _11n) * b11) % P;\n const b44 = (pow2(b22, _22n) * b22) % P;\n const b88 = (pow2(b44, _44n) * b44) % P;\n const b176 = (pow2(b88, _88n) * b88) % P;\n const b220 = (pow2(b176, _44n) * b44) % P;\n const b223 = (pow2(b220, _3n) * b3) % P;\n const t1 = (pow2(b223, _23n) * b22) % P;\n const t2 = (pow2(t1, _6n) * b2) % P;\n return pow2(t2, _2n);\n}\nfunction invert(number, modulo = CURVE.P) {\n if (number === _0n || modulo <= _0n) {\n throw new Error(`invert: expected positive integers, got n=${number} mod=${modulo}`);\n }\n let a = mod(number, modulo);\n let b = modulo;\n let x = _0n, y = _1n, u = _1n, v = _0n;\n while (a !== _0n) {\n const q = b / a;\n const r = b % a;\n const m = x - u * q;\n const n = y - v * q;\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n const gcd = b;\n if (gcd !== _1n)\n throw new Error('invert: does not exist');\n return mod(x, modulo);\n}\nfunction invertBatch(nums, p = CURVE.P) {\n const scratch = new Array(nums.length);\n const lastMultiplied = nums.reduce((acc, num, i) => {\n if (num === _0n)\n return acc;\n scratch[i] = acc;\n return mod(acc * num, p);\n }, _1n);\n const inverted = invert(lastMultiplied, p);\n nums.reduceRight((acc, num, i) => {\n if (num === _0n)\n return acc;\n scratch[i] = mod(acc * scratch[i], p);\n return mod(acc * num, p);\n }, inverted);\n return scratch;\n}\nconst divNearest = (a, b) => (a + b / _2n) / b;\nconst POW_2_128 = _2n ** BigInt(128);\nfunction splitScalarEndo(k) {\n const { n } = CURVE;\n const a1 = BigInt('0x3086d221a7d46bcde86c90e49284eb15');\n const b1 = -_1n * BigInt('0xe4437ed6010e88286f547fa90abfe4c3');\n const a2 = BigInt('0x114ca50f7a8e2f3f657c1108d9d44cfd8');\n const b2 = a1;\n const c1 = divNearest(b2 * k, n);\n const c2 = divNearest(-b1 * k, n);\n let k1 = mod(k - c1 * a1 - c2 * a2, n);\n let k2 = mod(-c1 * b1 - c2 * b2, n);\n const k1neg = k1 > POW_2_128;\n const k2neg = k2 > POW_2_128;\n if (k1neg)\n k1 = n - k1;\n if (k2neg)\n k2 = n - k2;\n if (k1 > POW_2_128 || k2 > POW_2_128) {\n throw new Error('splitScalarEndo: Endomorphism failed, k=' + k);\n }\n return { k1neg, k1, k2neg, k2 };\n}\nfunction truncateHash(hash) {\n const { n } = CURVE;\n const byteLength = hash.length;\n const delta = byteLength * 8 - 256;\n let h = bytesToNumber(hash);\n if (delta > 0)\n h = h >> BigInt(delta);\n if (h >= n)\n h -= n;\n return h;\n}\nclass HmacDrbg {\n constructor() {\n this.v = new Uint8Array(32).fill(1);\n this.k = new Uint8Array(32).fill(0);\n this.counter = 0;\n }\n hmac(...values) {\n return utils.hmacSha256(this.k, ...values);\n }\n hmacSync(...values) {\n if (typeof utils.hmacSha256Sync !== 'function')\n throw new Error('utils.hmacSha256Sync is undefined, you need to set it');\n const res = utils.hmacSha256Sync(this.k, ...values);\n if (res instanceof Promise)\n throw new Error('To use sync sign(), ensure utils.hmacSha256 is sync');\n return res;\n }\n incr() {\n if (this.counter >= 1000) {\n throw new Error('Tried 1,000 k values for sign(), all were invalid');\n }\n this.counter += 1;\n }\n async reseed(seed = new Uint8Array()) {\n this.k = await this.hmac(this.v, Uint8Array.from([0x00]), seed);\n this.v = await this.hmac(this.v);\n if (seed.length === 0)\n return;\n this.k = await this.hmac(this.v, Uint8Array.from([0x01]), seed);\n this.v = await this.hmac(this.v);\n }\n reseedSync(seed = new Uint8Array()) {\n this.k = this.hmacSync(this.v, Uint8Array.from([0x00]), seed);\n this.v = this.hmacSync(this.v);\n if (seed.length === 0)\n return;\n this.k = this.hmacSync(this.v, Uint8Array.from([0x01]), seed);\n this.v = this.hmacSync(this.v);\n }\n async generate() {\n this.incr();\n this.v = await this.hmac(this.v);\n return this.v;\n }\n generateSync() {\n this.incr();\n this.v = this.hmacSync(this.v);\n return this.v;\n }\n}\nfunction isWithinCurveOrder(num) {\n return _0n < num && num < CURVE.n;\n}\nfunction isValidFieldElement(num) {\n return _0n < num && num < CURVE.P;\n}\nfunction kmdToSig(kBytes, m, d) {\n const k = bytesToNumber(kBytes);\n if (!isWithinCurveOrder(k))\n return;\n const { n } = CURVE;\n const q = Point.BASE.multiply(k);\n const r = mod(q.x, n);\n if (r === _0n)\n return;\n const s = mod(invert(k, n) * mod(m + d * r, n), n);\n if (s === _0n)\n return;\n const sig = new Signature(r, s);\n const recovery = (q.x === sig.r ? 0 : 2) | Number(q.y & _1n);\n return { sig, recovery };\n}\nfunction normalizePrivateKey(key) {\n let num;\n if (typeof key === 'bigint') {\n num = key;\n }\n else if (typeof key === 'number' && Number.isSafeInteger(key) && key > 0) {\n num = BigInt(key);\n }\n else if (typeof key === 'string') {\n if (key.length !== 64)\n throw new Error('Expected 32 bytes of private key');\n num = hexToNumber(key);\n }\n else if (isUint8a(key)) {\n if (key.length !== 32)\n throw new Error('Expected 32 bytes of private key');\n num = bytesToNumber(key);\n }\n else {\n throw new TypeError('Expected valid private key');\n }\n if (!isWithinCurveOrder(num))\n throw new Error('Expected private key: 0 < key < n');\n return num;\n}\nfunction normalizePublicKey(publicKey) {\n if (publicKey instanceof Point) {\n publicKey.assertValidity();\n return publicKey;\n }\n else {\n return Point.fromHex(publicKey);\n }\n}\nfunction normalizeSignature(signature) {\n if (signature instanceof Signature) {\n signature.assertValidity();\n return signature;\n }\n try {\n return Signature.fromDER(signature);\n }\n catch (error) {\n return Signature.fromCompact(signature);\n }\n}\nexport function getPublicKey(privateKey, isCompressed = false) {\n return Point.fromPrivateKey(privateKey).toRawBytes(isCompressed);\n}\nexport function recoverPublicKey(msgHash, signature, recovery, isCompressed = false) {\n return Point.fromSignature(msgHash, signature, recovery).toRawBytes(isCompressed);\n}\nfunction isPub(item) {\n const arr = isUint8a(item);\n const str = typeof item === 'string';\n const len = (arr || str) && item.length;\n if (arr)\n return len === 33 || len === 65;\n if (str)\n return len === 66 || len === 130;\n if (item instanceof Point)\n return true;\n return false;\n}\nexport function getSharedSecret(privateA, publicB, isCompressed = false) {\n if (isPub(privateA))\n throw new TypeError('getSharedSecret: first arg must be private key');\n if (!isPub(publicB))\n throw new TypeError('getSharedSecret: second arg must be public key');\n const b = normalizePublicKey(publicB);\n b.assertValidity();\n return b.multiply(normalizePrivateKey(privateA)).toRawBytes(isCompressed);\n}\nfunction bits2int(bytes) {\n const slice = bytes.length > 32 ? bytes.slice(0, 32) : bytes;\n return bytesToNumber(slice);\n}\nfunction bits2octets(bytes) {\n const z1 = bits2int(bytes);\n const z2 = mod(z1, CURVE.n);\n return int2octets(z2 < _0n ? z1 : z2);\n}\nfunction int2octets(num) {\n if (typeof num !== 'bigint')\n throw new Error('Expected bigint');\n const hex = numTo32bStr(num);\n return hexToBytes(hex);\n}\nfunction initSigArgs(msgHash, privateKey, extraEntropy) {\n if (msgHash == null)\n throw new Error(`sign: expected valid message hash, not \"${msgHash}\"`);\n const h1 = ensureBytes(msgHash);\n const d = normalizePrivateKey(privateKey);\n const seedArgs = [int2octets(d), bits2octets(h1)];\n if (extraEntropy != null) {\n if (extraEntropy === true)\n extraEntropy = utils.randomBytes(32);\n const e = ensureBytes(extraEntropy);\n if (e.length !== 32)\n throw new Error('sign: Expected 32 bytes of extra data');\n seedArgs.push(e);\n }\n const seed = concatBytes(...seedArgs);\n const m = bits2int(h1);\n return { seed, m, d };\n}\nfunction finalizeSig(recSig, opts) {\n let { sig, recovery } = recSig;\n const { canonical, der, recovered } = Object.assign({ canonical: true, der: true }, opts);\n if (canonical && sig.hasHighS()) {\n sig = sig.normalizeS();\n recovery ^= 1;\n }\n const hashed = der ? sig.toDERRawBytes() : sig.toCompactRawBytes();\n return recovered ? [hashed, recovery] : hashed;\n}\nasync function sign(msgHash, privKey, opts = {}) {\n const { seed, m, d } = initSigArgs(msgHash, privKey, opts.extraEntropy);\n let sig;\n const drbg = new HmacDrbg();\n await drbg.reseed(seed);\n while (!(sig = kmdToSig(await drbg.generate(), m, d)))\n await drbg.reseed();\n return finalizeSig(sig, opts);\n}\nfunction signSync(msgHash, privKey, opts = {}) {\n const { seed, m, d } = initSigArgs(msgHash, privKey, opts.extraEntropy);\n let sig;\n const drbg = new HmacDrbg();\n drbg.reseedSync(seed);\n while (!(sig = kmdToSig(drbg.generateSync(), m, d)))\n drbg.reseedSync();\n return finalizeSig(sig, opts);\n}\nexport { sign, signSync };\nconst vopts = { strict: true };\nexport function verify(signature, msgHash, publicKey, opts = vopts) {\n let sig;\n try {\n sig = normalizeSignature(signature);\n msgHash = ensureBytes(msgHash);\n }\n catch (error) {\n return false;\n }\n const { r, s } = sig;\n if (opts.strict && sig.hasHighS())\n return false;\n const h = truncateHash(msgHash);\n if (h === _0n)\n return false;\n let P;\n try {\n P = normalizePublicKey(publicKey);\n }\n catch (error) {\n return false;\n }\n const { n } = CURVE;\n const sinv = invert(s, n);\n const u1 = mod(h * sinv, n);\n const u2 = mod(r * sinv, n);\n const R = Point.BASE.multiplyAndAddUnsafe(P, u1, u2);\n if (!R)\n return false;\n const v = mod(R.x, n);\n return v === r;\n}\nasync function taggedHash(tag, ...messages) {\n const tagB = new Uint8Array(tag.split('').map((c) => c.charCodeAt(0)));\n const tagH = await utils.sha256(tagB);\n const h = await utils.sha256(concatBytes(tagH, tagH, ...messages));\n return bytesToNumber(h);\n}\nasync function createChallenge(x, P, message) {\n const rx = numTo32b(x);\n const t = await taggedHash('BIP0340/challenge', rx, P.toRawX(), message);\n return mod(t, CURVE.n);\n}\nfunction hasEvenY(point) {\n return (point.y & _1n) === _0n;\n}\nclass SchnorrSignature {\n constructor(r, s) {\n this.r = r;\n this.s = s;\n this.assertValidity();\n }\n static fromHex(hex) {\n const bytes = ensureBytes(hex);\n if (bytes.length !== 64)\n throw new TypeError(`SchnorrSignature.fromHex: expected 64 bytes, not ${bytes.length}`);\n const r = bytesToNumber(bytes.subarray(0, 32));\n const s = bytesToNumber(bytes.subarray(32, 64));\n return new SchnorrSignature(r, s);\n }\n assertValidity() {\n const { r, s } = this;\n if (!isValidFieldElement(r) || !isWithinCurveOrder(s))\n throw new Error('Invalid signature');\n }\n toHex() {\n return numTo32bStr(this.r) + numTo32bStr(this.s);\n }\n toRawBytes() {\n return hexToBytes(this.toHex());\n }\n}\nfunction schnorrGetPublicKey(privateKey) {\n return Point.fromPrivateKey(privateKey).toRawX();\n}\nasync function schnorrSign(message, privateKey, auxRand = utils.randomBytes()) {\n if (message == null)\n throw new TypeError(`sign: Expected valid message, not \"${message}\"`);\n const { n } = CURVE;\n const m = ensureBytes(message);\n const d0 = normalizePrivateKey(privateKey);\n const rand = ensureBytes(auxRand);\n if (rand.length !== 32)\n throw new TypeError('sign: Expected 32 bytes of aux randomness');\n const P = Point.fromPrivateKey(d0);\n const d = hasEvenY(P) ? d0 : n - d0;\n const t0h = await taggedHash('BIP0340/aux', rand);\n const t = d ^ t0h;\n const k0h = await taggedHash('BIP0340/nonce', numTo32b(t), P.toRawX(), m);\n const k0 = mod(k0h, n);\n if (k0 === _0n)\n throw new Error('sign: Creation of signature failed. k is zero');\n const R = Point.fromPrivateKey(k0);\n const k = hasEvenY(R) ? k0 : n - k0;\n const e = await createChallenge(R.x, P, m);\n const sig = new SchnorrSignature(R.x, mod(k + e * d, n)).toRawBytes();\n const isValid = await schnorrVerify(sig, m, P.toRawX());\n if (!isValid)\n throw new Error('sign: Invalid signature produced');\n return sig;\n}\nasync function schnorrVerify(signature, message, publicKey) {\n const raw = signature instanceof SchnorrSignature;\n let sig;\n try {\n sig = raw ? signature : SchnorrSignature.fromHex(signature);\n if (raw)\n sig.assertValidity();\n }\n catch (error) {\n return false;\n }\n const { r, s } = sig;\n const m = ensureBytes(message);\n let P;\n try {\n P = normalizePublicKey(publicKey);\n }\n catch (error) {\n return false;\n }\n const e = await createChallenge(r, P, m);\n const R = Point.BASE.multiplyAndAddUnsafe(P, normalizePrivateKey(s), mod(-e, CURVE.n));\n if (!R || !hasEvenY(R) || R.x !== r)\n return false;\n return true;\n}\nexport const schnorr = {\n Signature: SchnorrSignature,\n getPublicKey: schnorrGetPublicKey,\n sign: schnorrSign,\n verify: schnorrVerify,\n};\nPoint.BASE._setWindowSize(8);\nconst crypto = {\n node: nodeCrypto,\n web: typeof self === 'object' && 'crypto' in self ? self.crypto : undefined,\n};\nexport const utils = {\n isValidPrivateKey(privateKey) {\n try {\n normalizePrivateKey(privateKey);\n return true;\n }\n catch (error) {\n return false;\n }\n },\n hashToPrivateKey: (hash) => {\n hash = ensureBytes(hash);\n if (hash.length < 40 || hash.length > 1024)\n throw new Error('Expected 40-1024 bytes of private key as per FIPS 186');\n const num = mod(bytesToNumber(hash), CURVE.n);\n if (num === _0n || num === _1n)\n throw new Error('Invalid private key');\n return numTo32b(num);\n },\n randomBytes: (bytesLength = 32) => {\n if (crypto.web) {\n return crypto.web.getRandomValues(new Uint8Array(bytesLength));\n }\n else if (crypto.node) {\n const { randomBytes } = crypto.node;\n return Uint8Array.from(randomBytes(bytesLength));\n }\n else {\n throw new Error(\"The environment doesn't have randomBytes function\");\n }\n },\n randomPrivateKey: () => {\n return utils.hashToPrivateKey(utils.randomBytes(40));\n },\n bytesToHex,\n mod,\n sha256: async (message) => {\n if (crypto.web) {\n const buffer = await crypto.web.subtle.digest('SHA-256', message.buffer);\n return new Uint8Array(buffer);\n }\n else if (crypto.node) {\n const { createHash } = crypto.node;\n return Uint8Array.from(createHash('sha256').update(message).digest());\n }\n else {\n throw new Error(\"The environment doesn't have sha256 function\");\n }\n },\n hmacSha256: async (key, ...messages) => {\n if (crypto.web) {\n const ckey = await crypto.web.subtle.importKey('raw', key, { name: 'HMAC', hash: { name: 'SHA-256' } }, false, ['sign']);\n const message = concatBytes(...messages);\n const buffer = await crypto.web.subtle.sign('HMAC', ckey, message);\n return new Uint8Array(buffer);\n }\n else if (crypto.node) {\n const { createHmac } = crypto.node;\n const hash = createHmac('sha256', key);\n messages.forEach((m) => hash.update(m));\n return Uint8Array.from(hash.digest());\n }\n else {\n throw new Error(\"The environment doesn't have hmac-sha256 function\");\n }\n },\n sha256Sync: undefined,\n hmacSha256Sync: undefined,\n precompute(windowSize = 8, point = Point.BASE) {\n const cached = point === Point.BASE ? point : new Point(point.x, point.y);\n cached._setWindowSize(windowSize);\n cached.multiply(_3n);\n return cached;\n },\n};\n","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _SigningKey_privateKey;\nimport * as secp256k1 from \"@noble/secp256k1\";\nimport { arrayify, concat, dataLength, hexlify } from \"@ethersproject/bytes\";\nimport { computeHmac } from \"@ethersproject/crypto\";\nimport { toHex } from \"@ethersproject/math\";\nimport { Signature } from \"./signature.js\";\nimport { logger } from \"./logger.js\";\n// Make noble-secp256k1 sync\nsecp256k1.utils.hmacSha256Sync = function (key, ...messages) {\n return arrayify(computeHmac(\"sha256\", key, concat(messages)));\n};\nexport class SigningKey {\n constructor(privateKey) {\n _SigningKey_privateKey.set(this, void 0);\n logger.assertArgument((dataLength(privateKey) === 32), \"invalid private key length\", \"privateKey\", \"[REDACTED]\");\n __classPrivateFieldSet(this, _SigningKey_privateKey, hexlify(privateKey), \"f\");\n }\n get privateKey() { return __classPrivateFieldGet(this, _SigningKey_privateKey, \"f\"); }\n get publicKey() { return SigningKey.computePublicKey(__classPrivateFieldGet(this, _SigningKey_privateKey, \"f\")); }\n get compressedPublicKey() { return SigningKey.computePublicKey(__classPrivateFieldGet(this, _SigningKey_privateKey, \"f\"), true); }\n sign(digest) {\n logger.assertArgument((dataLength(digest) === 32), \"invalid digest length\", \"digest\", digest);\n const [sigDer, recid] = secp256k1.signSync(arrayify(digest), arrayify(__classPrivateFieldGet(this, _SigningKey_privateKey, \"f\")), {\n recovered: true,\n canonical: true\n });\n const sig = secp256k1.Signature.fromHex(sigDer);\n return Signature.from({\n r: toHex(\"0x\" + sig.r.toString(16), 32),\n s: toHex(\"0x\" + sig.s.toString(16), 32),\n v: (recid ? 0x1c : 0x1b)\n }).freeze();\n }\n computeShardSecret(other) {\n const pubKey = SigningKey.computePublicKey(other);\n return hexlify(secp256k1.getSharedSecret(arrayify(__classPrivateFieldGet(this, _SigningKey_privateKey, \"f\")), pubKey));\n }\n static computePublicKey(key, compressed) {\n let bytes = logger.getBytes(key, \"key\");\n if (bytes.length === 32) {\n const pubKey = secp256k1.getPublicKey(bytes, !!compressed);\n return hexlify(pubKey);\n }\n if (bytes.length === 64) {\n const pub = new Uint8Array(65);\n pub[0] = 0x04;\n pub.set(bytes, 1);\n bytes = pub;\n }\n const point = secp256k1.Point.fromHex(bytes);\n return hexlify(point.toRawBytes(compressed));\n }\n static recoverPublicKey(digest, signature) {\n const sig = Signature.from(signature);\n const der = secp256k1.Signature.fromCompact(arrayify(concat([sig.r, sig.s]))).toDERRawBytes();\n const pubKey = secp256k1.recoverPublicKey(arrayify(digest), der, sig.yParity);\n if (pubKey != null) {\n return hexlify(pubKey);\n }\n return logger.throwArgumentError(\"invalid signautre for digest\", \"signature\", signature);\n }\n static _addPoints(p0, p1, compressed) {\n const pub0 = secp256k1.Point.fromHex(SigningKey.computePublicKey(p0).substring(2));\n const pub1 = secp256k1.Point.fromHex(SigningKey.computePublicKey(p1).substring(2));\n return \"0x\" + pub0.add(pub1).toHex(!!compressed);\n }\n}\n_SigningKey_privateKey = new WeakMap();\n/*\nconst key = new SigningKey(\"0x1234567890123456789012345678901234567890123456789012345678901234\");\nconsole.log(key);\nconsole.log(key.sign(\"0x1234567890123456789012345678901234567890123456789012345678901234\"));\n{\n const privKey = \"0x1234567812345678123456781234567812345678123456781234567812345678\";\n const signingKey = new SigningKey(privKey);\n console.log(\"0\", signingKey, signingKey.publicKey, signingKey.publicKeyCompressed);\n\n let pubKey = SigningKey.computePublicKey(privKey);\n let pubKeyComp = SigningKey.computePublicKey(privKey, true);\n let pubKeyRaw = \"0x\" + SigningKey.computePublicKey(privKey).substring(4);\n console.log(\"A\", pubKey, pubKeyComp);\n\n let a = SigningKey.computePublicKey(pubKey);\n let b = SigningKey.computePublicKey(pubKey, true);\n console.log(\"B\", a, b);\n\n a = SigningKey.computePublicKey(pubKeyComp);\n b = SigningKey.computePublicKey(pubKeyComp, true);\n console.log(\"C\", a, b);\n\n a = SigningKey.computePublicKey(pubKeyRaw);\n b = SigningKey.computePublicKey(pubKeyRaw, true);\n console.log(\"D\", a, b);\n\n const digest = \"0x1122334411223344112233441122334411223344112233441122334411223344\";\n const sig = signingKey.sign(digest);\n console.log(\"SS\", sig, sig.r, sig.s, sig.yParity);\n\n console.log(\"R\", SigningKey.recoverPublicKey(digest, sig));\n}\n*/\n//# sourceMappingURL=signing-key.js.map","import { getAddress } from \"@ethersproject/address\";\nimport { dataLength } from \"@ethersproject/bytes\";\nfunction accessSetify(addr, storageKeys) {\n return {\n address: getAddress(addr),\n storageKeys: (storageKeys || []).map((storageKey, index) => {\n if (dataLength(storageKey) !== 32) {\n //logger.throwArgumentError(\"invalid access list storageKey\", `accessList[${ addr }>\n throw new Error(\"\");\n }\n return storageKey.toLowerCase();\n })\n };\n}\nexport function accessListify(value) {\n if (Array.isArray(value)) {\n return value.map((set, index) => {\n if (Array.isArray(set)) {\n if (set.length > 2) {\n //logger.throwArgumentError(\"access list expected to be [ address, storageKeys[>\n throw new Error(\"\");\n }\n return accessSetify(set[0], set[1]);\n }\n return accessSetify(set.address, set.storageKeys);\n });\n }\n const result = Object.keys(value).map((addr) => {\n const storageKeys = value[addr].reduce((accum, storageKey) => {\n accum[storageKey] = true;\n return accum;\n }, {});\n return accessSetify(addr, Object.keys(storageKeys).sort());\n });\n result.sort((a, b) => (a.address.localeCompare(b.address)));\n return result;\n}\n//# sourceMappingURL=accesslist.js.map","import { getAddress } from \"@ethersproject/address\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { SigningKey } from \"@ethersproject/signing-key\";\nexport function computeAddress(key) {\n const publicKey = SigningKey.computePublicKey(key, false);\n return getAddress(keccak256(\"0x\" + publicKey.substring(4)).substring(26));\n}\nexport function recoverAddress(digest, signature) {\n return computeAddress(SigningKey.recoverPublicKey(digest, signature));\n}\n//# sourceMappingURL=address.js.map","export const version = \"@ethersproject/transaction@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Transaction_props;\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify, concat, hexlify, zeroPadValue } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/crypto\";\nimport { toArray } from \"@ethersproject/math\";\nimport { getStore, setStore } from \"@ethersproject/properties\";\nimport { decodeRlp, encodeRlp } from \"@ethersproject/rlp\";\nimport { Signature } from \"@ethersproject/signing-key\";\nimport { accessListify } from \"./accesslist.js\";\nimport { recoverAddress } from \"./address.js\";\nimport { logger } from \"./logger.js\";\nconst BN_0 = BigInt(0);\nconst BN_2 = BigInt(2);\nconst BN_27 = BigInt(27);\nconst BN_28 = BigInt(28);\nconst BN_35 = BigInt(35);\nconst BN_MAX_UINT = BigInt(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\nfunction handleAddress(value) {\n if (value === \"0x\") {\n return null;\n }\n return getAddress(value);\n}\nfunction handleData(value, param) {\n try {\n return hexlify(value);\n }\n catch (error) {\n return logger.throwArgumentError(\"invalid data\", param, value);\n }\n}\nfunction handleAccessList(value, param) {\n try {\n return accessListify(value);\n }\n catch (error) {\n return logger.throwArgumentError(\"invalid accessList\", param, value);\n }\n}\nfunction handleNumber(_value, param) {\n if (_value === \"0x\") {\n return 0;\n }\n return logger.getNumber(_value, param);\n}\nfunction handleUint(_value, param) {\n if (_value === \"0x\") {\n return BN_0;\n }\n const value = logger.getBigInt(_value, param);\n if (value > BN_MAX_UINT) {\n logger.throwArgumentError(\"value exceeds uint size\", param, value);\n }\n return value;\n}\nfunction formatNumber(_value, name) {\n const value = logger.getBigInt(_value, \"value\");\n const result = toArray(value);\n if (result.length > 32) {\n logger.throwArgumentError(`value too large`, `tx.${name}`, value);\n }\n return result;\n}\nfunction formatAccessList(value) {\n return accessListify(value).map((set) => [set.address, set.storageKeys]);\n}\nfunction _parseLegacy(data) {\n const fields = decodeRlp(data);\n if (!Array.isArray(fields) || (fields.length !== 9 && fields.length !== 6)) {\n return logger.throwArgumentError(\"invalid field count for legacy transaction\", \"data\", data);\n }\n const tx = {\n type: 0,\n nonce: handleNumber(fields[0], \"nonce\"),\n gasPrice: handleUint(fields[1], \"gasPrice\"),\n gasLimit: handleUint(fields[2], \"gasLimit\"),\n to: handleAddress(fields[3]),\n value: handleUint(fields[4], \"value\"),\n data: handleData(fields[5], \"dta\"),\n chainId: BN_0\n };\n // Legacy unsigned transaction\n if (fields.length === 6) {\n return tx;\n }\n const v = handleUint(fields[6], \"v\");\n const r = handleUint(fields[7], \"r\");\n const s = handleUint(fields[8], \"s\");\n if (r === BN_0 && s === BN_0) {\n // EIP-155 unsigned transaction\n tx.chainId = v;\n }\n else {\n // Compute the EIP-155 chain ID (or 0 for legacy)\n let chainId = (v - BN_35) / BN_2;\n if (chainId < BN_0) {\n chainId = BN_0;\n }\n tx.chainId = chainId;\n // Signed Legacy Transaction\n if (chainId === BN_0 && (v < BN_27 || v > BN_28)) {\n logger.throwArgumentError(\"non-canonical legacy v\", \"v\", fields[6]);\n }\n tx.signature = Signature.from({\n r: zeroPadValue(fields[7], 32),\n s: zeroPadValue(fields[8], 32),\n v\n });\n tx.hash = keccak256(data);\n }\n return tx;\n}\nfunction _serializeLegacy(tx, sig) {\n const fields = [\n formatNumber(tx.nonce || 0, \"nonce\"),\n formatNumber(tx.gasPrice || 0, \"gasPrice\"),\n formatNumber(tx.gasLimit || 0, \"gasLimit\"),\n ((tx.to != null) ? getAddress(tx.to) : \"0x\"),\n formatNumber(tx.value || 0, \"value\"),\n (tx.data || \"0x\"),\n ];\n let chainId = BN_0;\n if (tx.chainId != null) {\n // A chainId was provided; if non-zero we'll use EIP-155\n chainId = logger.getBigInt(tx.chainId, \"tx.chainId\");\n // We have a chainId in the tx and an EIP-155 v in the signature,\n // make sure they agree with each other\n if (sig && sig.networkV != null && sig.legacyChainId !== chainId) {\n logger.throwArgumentError(\"tx.chainId/sig.v mismatch\", \"sig\", sig);\n }\n }\n else if (sig) {\n // No chainId provided, but the signature is signing with EIP-155; derive chainId\n const legacy = sig.legacyChainId;\n if (legacy != null) {\n chainId = legacy;\n }\n }\n // Requesting an unsigned transaction\n if (!sig) {\n // We have an EIP-155 transaction (chainId was specified and non-zero)\n if (chainId !== BN_0) {\n fields.push(toArray(chainId));\n fields.push(\"0x\");\n fields.push(\"0x\");\n }\n return encodeRlp(fields);\n }\n // We pushed a chainId and null r, s on for hashing only; remove those\n let v = BigInt(27 + sig.yParity);\n if (chainId !== BN_0) {\n v = Signature.getChainIdV(chainId, sig.v);\n }\n else if (BigInt(sig.v) !== v) {\n logger.throwArgumentError(\"tx.chainId/sig.v mismatch\", \"sig\", sig);\n }\n fields.push(toArray(v));\n fields.push(toArray(sig.r));\n fields.push(toArray(sig.s));\n return encodeRlp(fields);\n}\nfunction _parseEipSignature(tx, fields, serialize) {\n let yParity;\n try {\n yParity = handleNumber(fields[0], \"yParity\");\n if (yParity !== 0 && yParity !== 1) {\n throw new Error(\"bad yParity\");\n }\n }\n catch (error) {\n return logger.throwArgumentError(\"invalid yParity\", \"yParity\", fields[0]);\n }\n const r = zeroPadValue(fields[1], 32);\n const s = zeroPadValue(fields[2], 32);\n const signature = Signature.from({ r, s, yParity });\n tx.signature = signature;\n}\nfunction _parseEip1559(data) {\n const fields = decodeRlp(logger.getBytes(data).slice(1));\n if (!Array.isArray(fields) || (fields.length !== 9 && fields.length !== 12)) {\n logger.throwArgumentError(\"invalid field count for transaction type: 2\", \"data\", hexlify(data));\n }\n const maxPriorityFeePerGas = handleUint(fields[2], \"maxPriorityFeePerGas\");\n const maxFeePerGas = handleUint(fields[3], \"maxFeePerGas\");\n const tx = {\n type: 2,\n chainId: handleUint(fields[0], \"chainId\"),\n nonce: handleNumber(fields[1], \"nonce\"),\n maxPriorityFeePerGas: maxPriorityFeePerGas,\n maxFeePerGas: maxFeePerGas,\n gasPrice: null,\n gasLimit: handleUint(fields[4], \"gasLimit\"),\n to: handleAddress(fields[5]),\n value: handleUint(fields[6], \"value\"),\n data: handleData(fields[7], \"data\"),\n accessList: handleAccessList(fields[8], \"accessList\"),\n };\n // Unsigned EIP-1559 Transaction\n if (fields.length === 9) {\n return tx;\n }\n tx.hash = keccak256(data);\n _parseEipSignature(tx, fields.slice(9), _serializeEip1559);\n return tx;\n}\nfunction _serializeEip1559(tx, sig) {\n const fields = [\n formatNumber(tx.chainId || 0, \"chainId\"),\n formatNumber(tx.nonce || 0, \"nonce\"),\n formatNumber(tx.maxPriorityFeePerGas || 0, \"maxPriorityFeePerGas\"),\n formatNumber(tx.maxFeePerGas || 0, \"maxFeePerGas\"),\n formatNumber(tx.gasLimit || 0, \"gasLimit\"),\n ((tx.to != null) ? getAddress(tx.to) : \"0x\"),\n formatNumber(tx.value || 0, \"value\"),\n (tx.data || \"0x\"),\n (formatAccessList(tx.accessList || []))\n ];\n if (sig) {\n fields.push(formatNumber(sig.yParity, \"yParity\"));\n fields.push(toArray(sig.r));\n fields.push(toArray(sig.s));\n }\n return concat([\"0x02\", encodeRlp(fields)]);\n}\nfunction _parseEip2930(data) {\n const fields = decodeRlp(logger.getBytes(data).slice(1));\n if (!Array.isArray(fields) || (fields.length !== 8 && fields.length !== 11)) {\n logger.throwArgumentError(\"invalid field count for transaction type: 1\", \"data\", hexlify(data));\n }\n const tx = {\n type: 1,\n chainId: handleUint(fields[0], \"chainId\"),\n nonce: handleNumber(fields[1], \"nonce\"),\n gasPrice: handleUint(fields[2], \"gasPrice\"),\n gasLimit: handleUint(fields[3], \"gasLimit\"),\n to: handleAddress(fields[4]),\n value: handleUint(fields[5], \"value\"),\n data: handleData(fields[6], \"data\"),\n accessList: handleAccessList(fields[7], \"accessList\")\n };\n // Unsigned EIP-2930 Transaction\n if (fields.length === 8) {\n return tx;\n }\n tx.hash = keccak256(data);\n _parseEipSignature(tx, fields.slice(8), _serializeEip2930);\n return tx;\n}\nfunction _serializeEip2930(tx, sig) {\n const fields = [\n formatNumber(tx.chainId || 0, \"chainId\"),\n formatNumber(tx.nonce || 0, \"nonce\"),\n formatNumber(tx.gasPrice || 0, \"gasPrice\"),\n formatNumber(tx.gasLimit || 0, \"gasLimit\"),\n ((tx.to != null) ? getAddress(tx.to) : \"0x\"),\n formatNumber(tx.value || 0, \"value\"),\n (tx.data || \"0x\"),\n (formatAccessList(tx.accessList || []))\n ];\n if (sig) {\n fields.push(formatNumber(sig.yParity, \"recoveryParam\"));\n fields.push(toArray(sig.r));\n fields.push(toArray(sig.s));\n }\n return concat([\"0x01\", encodeRlp(fields)]);\n}\nexport class Transaction {\n constructor() {\n _Transaction_props.set(this, void 0);\n __classPrivateFieldSet(this, _Transaction_props, {\n type: null,\n to: null,\n nonce: 0,\n gasLimit: BigInt(0),\n gasPrice: null,\n maxPriorityFeePerGas: null,\n maxFeePerGas: null,\n data: \"0x\",\n value: BigInt(0),\n chainId: BigInt(0),\n sig: null,\n accessList: null\n }, \"f\");\n }\n // A type of null indicates the type will be populated automatically\n get type() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"type\"); }\n get typeName() {\n switch (this.type) {\n case 0: return \"legacy\";\n case 1: return \"eip-2930\";\n case 2: return \"eip-1559\";\n }\n return null;\n }\n set type(value) {\n switch (value) {\n case null:\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"type\", null);\n break;\n case 0:\n case \"legacy\":\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"type\", 0);\n break;\n case 1:\n case \"berlin\":\n case \"eip-2930\":\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"type\", 1);\n break;\n case 2:\n case \"london\":\n case \"eip-1559\":\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"type\", 2);\n break;\n default:\n throw new Error(`unsupported transaction type`);\n }\n }\n get to() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"to\"); }\n set to(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"to\", (value == null) ? null : getAddress(value));\n }\n get nonce() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"nonce\"); }\n set nonce(value) { setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"nonce\", logger.getNumber(value, \"value\")); }\n get gasLimit() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"gasLimit\"); }\n set gasLimit(value) { setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"gasLimit\", logger.getBigInt(value)); }\n get gasPrice() {\n const value = getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"gasPrice\");\n if (value == null && (this.type === 0 || this.type === 1)) {\n return BN_0;\n }\n return value;\n }\n set gasPrice(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"gasPrice\", (value == null) ? null : logger.getBigInt(value, \"gasPrice\"));\n }\n get maxPriorityFeePerGas() {\n const value = getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"maxPriorityFeePerGas\");\n if (value == null && this.type === 2) {\n return BN_0;\n }\n return value;\n }\n set maxPriorityFeePerGas(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"maxPriorityFeePerGas\", (value == null) ? null : logger.getBigInt(value, \"maxPriorityFeePerGas\"));\n }\n get maxFeePerGas() {\n const value = getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"maxFeePerGas\");\n if (value == null && this.type === 2) {\n return BN_0;\n }\n return value;\n }\n set maxFeePerGas(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"maxFeePerGas\", (value == null) ? null : logger.getBigInt(value, \"maxFeePerGas\"));\n }\n get data() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"data\"); }\n set data(value) { setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"data\", hexlify(value)); }\n get value() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"value\"); }\n set value(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"value\", logger.getBigInt(value, \"value\"));\n }\n get chainId() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"chainId\"); }\n set chainId(value) { setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"chainId\", logger.getBigInt(value)); }\n get signature() { return getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"sig\") || null; }\n set signature(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"sig\", (value == null) ? null : Signature.from(value));\n }\n get accessList() {\n const value = getStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"accessList\") || null;\n if (value == null && (this.type === 1 || this.type === 2)) {\n return [];\n }\n return value;\n }\n set accessList(value) {\n setStore(__classPrivateFieldGet(this, _Transaction_props, \"f\"), \"accessList\", (value == null) ? null : accessListify(value));\n }\n get hash() {\n if (this.signature == null) {\n throw new Error(\"cannot hash unsigned transaction; maybe you meant .unsignedHash\");\n }\n return keccak256(this.serialized);\n }\n get unsignedHash() {\n return keccak256(this.unsignedSerialized);\n }\n get from() {\n if (this.signature == null) {\n return null;\n }\n return recoverAddress(this.unsignedSerialized, this.signature);\n }\n get fromPublicKey() {\n if (this.signature == null) {\n return null;\n }\n // use ecrecover\n return \"\";\n }\n isSigned() {\n return this.signature != null;\n }\n get serialized() {\n if (this.signature == null) {\n throw new Error(\"cannot serialize unsigned transaction; maybe you meant .unsignedSerialized\");\n }\n const types = this.inferTypes();\n if (types.length !== 1) {\n throw new Error(\"cannot determine transaction type; specify type manually\");\n }\n switch (types[0]) {\n case 0:\n return _serializeLegacy(this, this.signature);\n case 1:\n return _serializeEip2930(this, this.signature);\n case 2:\n return _serializeEip1559(this, this.signature);\n }\n throw new Error(\"unsupported type\");\n }\n get unsignedSerialized() {\n const types = this.inferTypes();\n if (types.length !== 1) {\n throw new Error(\"cannot determine transaction type; specify type manually\");\n }\n switch (types[0]) {\n case 0:\n return _serializeLegacy(this);\n case 1:\n return _serializeEip2930(this);\n case 2:\n return _serializeEip1559(this);\n }\n throw new Error(\"unsupported type\");\n }\n // Validates properties and lists possible types this transaction adheres to\n inferTypes() {\n // Checks that there are no conflicting properties set\n const hasGasPrice = this.gasPrice != null;\n const hasFee = (this.maxFeePerGas != null || this.maxPriorityFeePerGas != null);\n const hasAccessList = (this.accessList != null);\n //if (hasGasPrice && hasFee) {\n // throw new Error(\"transaction cannot have gasPrice and maxFeePerGas\");\n //}\n if (this.maxFeePerGas != null && this.maxPriorityFeePerGas != null) {\n if (this.maxFeePerGas < this.maxPriorityFeePerGas) {\n throw new Error(\"priorityFee cannot be more than maxFee\");\n }\n }\n //if (this.type === 2 && hasGasPrice) {\n // throw new Error(\"eip-1559 transaction cannot have gasPrice\");\n //}\n if ((this.type === 0 || this.type === 1) && hasFee) {\n throw new Error(\"transaction type cannot have maxFeePerGas or maxPriorityFeePerGas\");\n }\n if (this.type === 0 && hasAccessList) {\n throw new Error(\"legacy transaction cannot have accessList\");\n }\n const types = [];\n // Explicit type\n if (this.type != null) {\n types.push(this.type);\n }\n else {\n if (hasFee) {\n types.push(2);\n }\n else if (hasGasPrice) {\n types.push(1);\n if (!hasAccessList) {\n types.push(0);\n }\n }\n else if (hasAccessList) {\n types.push(1);\n types.push(2);\n }\n else {\n types.push(0);\n types.push(1);\n types.push(2);\n }\n }\n types.sort();\n return types;\n }\n isLegacy() { return (this.type === 0); }\n isBerlin() { return (this.type === 1); }\n isLondon() { return (this.type === 2); }\n clone() {\n return Transaction.from(this);\n }\n freeze() {\n if (__classPrivateFieldGet(this, _Transaction_props, \"f\").sig) {\n __classPrivateFieldGet(this, _Transaction_props, \"f\").sig = (__classPrivateFieldGet(this, _Transaction_props, \"f\").sig.clone().freeze());\n }\n if (__classPrivateFieldGet(this, _Transaction_props, \"f\").accessList) {\n __classPrivateFieldGet(this, _Transaction_props, \"f\").accessList = Object.freeze(__classPrivateFieldGet(this, _Transaction_props, \"f\").accessList.map((set) => {\n Object.freeze(set.storageKeys);\n return Object.freeze(set);\n }));\n }\n Object.freeze(__classPrivateFieldGet(this, _Transaction_props, \"f\"));\n return this;\n }\n isFrozen() {\n return Object.isFrozen(__classPrivateFieldGet(this, _Transaction_props, \"f\"));\n }\n static from(tx) {\n if (typeof (tx) === \"string\") {\n const payload = arrayify(tx);\n if (payload[0] >= 0x7f) { // @TODO: > vs >= ??\n return Transaction.from(_parseLegacy(payload));\n }\n switch (payload[0]) {\n case 1: return Transaction.from(_parseEip2930(payload));\n case 2: return Transaction.from(_parseEip1559(payload));\n }\n throw new Error(\"unsupported transaction type\");\n }\n const result = new Transaction();\n if (tx.type != null) {\n result.type = tx.type;\n }\n if (tx.to != null) {\n result.to = tx.to;\n }\n if (tx.nonce != null) {\n result.nonce = tx.nonce;\n }\n if (tx.gasLimit != null) {\n result.gasLimit = tx.gasLimit;\n }\n if (tx.gasPrice != null) {\n result.gasPrice = tx.gasPrice;\n }\n if (tx.maxPriorityFeePerGas != null) {\n result.maxPriorityFeePerGas = tx.maxPriorityFeePerGas;\n }\n if (tx.maxFeePerGas != null) {\n result.maxFeePerGas = tx.maxFeePerGas;\n }\n if (tx.data != null) {\n result.data = tx.data;\n }\n if (tx.value != null) {\n result.value = tx.value;\n }\n if (tx.chainId != null) {\n result.chainId = tx.chainId;\n }\n if (tx.signature != null) {\n result.signature = Signature.from(tx.signature);\n }\n if (tx.accessList != null) {\n result.accessList = tx.accessList;\n }\n if (tx.hash != null) {\n if (result.isSigned()) {\n if (result.hash !== tx.hash) {\n throw new Error(\"hash mismatch\");\n }\n }\n else {\n throw new Error(\"unsigned transaction cannot have a hashs\");\n }\n }\n if (tx.from != null) {\n if (result.isSigned()) {\n if (result.from.toLowerCase() !== (tx.from || \"\").toLowerCase()) {\n throw new Error(\"from mismatch\");\n }\n }\n else {\n throw new Error(\"unsigned transaction cannot have a from\");\n }\n }\n return result;\n }\n}\n_Transaction_props = new WeakMap();\n//# sourceMappingURL=transaction.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Block_transactions, _TransactionReceipt_logs;\n//import { resolveAddress } from \"@ethersproject/address\";\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { accessListify } from \"@ethersproject/transaction\";\nimport { logger } from \"./logger.js\";\n// -----------------------\nfunction getValue(value) {\n if (value == null) {\n return null;\n }\n return value;\n}\nfunction toJson(value) {\n if (value == null) {\n return null;\n }\n return value.toString();\n}\n// @TODO? <T extends FeeData = { }> implements Required<T>\nexport class FeeData {\n constructor(gasPrice, maxFeePerGas, maxPriorityFeePerGas) {\n defineProperties(this, {\n gasPrice: getValue(gasPrice),\n maxFeePerGas: getValue(maxFeePerGas),\n maxPriorityFeePerGas: getValue(maxPriorityFeePerGas)\n });\n }\n toJSON() {\n const { gasPrice, maxFeePerGas, maxPriorityFeePerGas } = this;\n return {\n _type: \"FeeData\",\n gasPrice: toJson(gasPrice),\n maxFeePerGas: toJson(maxFeePerGas),\n maxPriorityFeePerGas: toJson(maxPriorityFeePerGas),\n };\n }\n}\n;\nexport function copyRequest(req) {\n const result = {};\n // These could be addresses, ENS names or Addressables\n if (req.to) {\n result.to = req.to;\n }\n if (req.from) {\n result.from = req.from;\n }\n if (req.data) {\n result.data = hexlify(req.data);\n }\n const bigIntKeys = \"chainId,gasLimit,gasPrice,maxFeePerGas, maxPriorityFeePerGas,value\".split(/,/);\n for (const key in bigIntKeys) {\n if (!(key in req) || req[key] == null) {\n continue;\n }\n result[key] = logger.getBigInt(req[key], `request.${key}`);\n }\n const numberKeys = \"type,nonce\".split(/,/);\n for (const key in numberKeys) {\n if (!(key in req) || req[key] == null) {\n continue;\n }\n result[key] = logger.getNumber(req[key], `request.${key}`);\n }\n if (req.accessList) {\n result.accessList = accessListify(req.accessList);\n }\n if (\"blockTag\" in req) {\n result.blockTag = req.blockTag;\n }\n if (\"enableCcipRead\" in req) {\n result.enableCcipReadEnabled = !!req.enableCcipRead;\n }\n if (\"customData\" in req) {\n result.customData = req.customData;\n }\n return result;\n}\n;\nexport class Block {\n constructor(block, provider) {\n _Block_transactions.set(this, void 0);\n if (provider == null) {\n provider = dummyProvider;\n }\n __classPrivateFieldSet(this, _Block_transactions, Object.freeze(block.transactions.map((tx) => {\n if (typeof (tx) !== \"string\" && tx.provider !== provider) {\n throw new Error(\"provider mismatch\");\n }\n return tx;\n })), \"f\");\n ;\n defineProperties(this, {\n provider,\n hash: getValue(block.hash),\n number: block.number,\n timestamp: block.timestamp,\n parentHash: block.parentHash,\n nonce: block.nonce,\n difficulty: block.difficulty,\n gasLimit: block.gasLimit,\n gasUsed: block.gasUsed,\n miner: block.miner,\n extraData: block.extraData,\n baseFeePerGas: getValue(block.baseFeePerGas)\n });\n }\n get transactions() { return __classPrivateFieldGet(this, _Block_transactions, \"f\"); }\n //connect(provider: Provider): Block<T> {\n // return new Block(this, provider);\n //}\n toJSON() {\n const { baseFeePerGas, difficulty, extraData, gasLimit, gasUsed, hash, miner, nonce, number, parentHash, timestamp, transactions } = this;\n return {\n _type: \"Block\",\n baseFeePerGas: toJson(baseFeePerGas),\n difficulty: toJson(difficulty),\n extraData,\n gasLimit: toJson(gasLimit),\n gasUsed: toJson(gasUsed),\n hash, miner, nonce, number, parentHash, timestamp,\n transactions,\n };\n }\n [(_Block_transactions = new WeakMap(), Symbol.iterator)]() {\n let index = 0;\n return {\n next: () => {\n if (index < this.length) {\n return {\n value: this.transactions[index++], done: false\n };\n }\n return { value: undefined, done: true };\n }\n };\n }\n get length() { return this.transactions.length; }\n get date() {\n if (this.timestamp == null) {\n return null;\n }\n return new Date(this.timestamp * 1000);\n }\n async getTransaction(index) {\n const tx = this.transactions[index];\n if (tx == null) {\n throw new Error(\"no such tx\");\n }\n if (typeof (tx) === \"string\") {\n return (await this.provider.getTransaction(tx));\n }\n else {\n return tx;\n }\n }\n isMined() { return !!this.hash; }\n isLondon() { return !!this.baseFeePerGas; }\n orphanedEvent() {\n if (!this.isMined()) {\n throw new Error(\"\");\n }\n return createOrphanedBlockFilter(this);\n }\n}\nexport class Log {\n constructor(log, provider) {\n if (provider == null) {\n provider = dummyProvider;\n }\n this.provider = provider;\n const topics = Object.freeze(log.topics.slice());\n defineProperties(this, {\n transactionHash: log.transactionHash,\n blockHash: log.blockHash,\n blockNumber: log.blockNumber,\n removed: log.removed,\n address: log.address,\n data: log.data,\n topics,\n index: log.index,\n transactionIndex: log.transactionIndex,\n });\n }\n //connect(provider: Provider): Log {\n // return new Log(this, provider);\n //}\n toJSON() {\n const { address, blockHash, blockNumber, data, index, removed, topics, transactionHash, transactionIndex } = this;\n return {\n _type: \"log\",\n address, blockHash, blockNumber, data, index,\n removed, topics, transactionHash, transactionIndex\n };\n }\n async getBlock() {\n return (await this.provider.getBlock(this.blockHash));\n }\n async getTransaction() {\n return (await this.provider.getTransaction(this.transactionHash));\n }\n async getTransactionReceipt() {\n return (await this.provider.getTransactionReceipt(this.transactionHash));\n }\n removedEvent() {\n return createRemovedLogFilter(this);\n }\n}\nexport class TransactionReceipt {\n constructor(tx, provider) {\n _TransactionReceipt_logs.set(this, void 0);\n if (provider == null) {\n provider = dummyProvider;\n }\n __classPrivateFieldSet(this, _TransactionReceipt_logs, Object.freeze(tx.logs.map((log) => {\n if (provider !== log.provider) {\n //return log.connect(provider);\n throw new Error(\"provider mismatch\");\n }\n return log;\n })), \"f\");\n defineProperties(this, {\n provider,\n to: tx.to,\n from: tx.from,\n contractAddress: tx.contractAddress,\n hash: tx.hash,\n index: tx.index,\n blockHash: tx.blockHash,\n blockNumber: tx.blockNumber,\n logsBloom: tx.logsBloom,\n gasUsed: tx.gasUsed,\n cumulativeGasUsed: tx.cumulativeGasUsed,\n gasPrice: (tx.effectiveGasPrice || tx.gasPrice),\n byzantium: tx.byzantium,\n status: tx.status,\n root: tx.root\n });\n }\n get logs() { return __classPrivateFieldGet(this, _TransactionReceipt_logs, \"f\"); }\n //connect(provider: Provider): TransactionReceipt {\n // return new TransactionReceipt(this, provider);\n //}\n toJSON() {\n const { to, from, contractAddress, hash, index, blockHash, blockNumber, logsBloom, logs, byzantium, status, root } = this;\n return {\n _type: \"TransactionReceipt\",\n blockHash, blockNumber, byzantium, contractAddress,\n cumulativeGasUsed: toJson(this.cumulativeGasUsed),\n from,\n gasPrice: toJson(this.gasPrice),\n gasUsed: toJson(this.gasUsed),\n hash, index, logs, logsBloom, root, status, to\n };\n }\n get length() { return this.logs.length; }\n [(_TransactionReceipt_logs = new WeakMap(), Symbol.iterator)]() {\n let index = 0;\n return {\n next: () => {\n if (index < this.length) {\n return { value: this.logs[index++], done: false };\n }\n return { value: undefined, done: true };\n }\n };\n }\n get fee() {\n return this.gasUsed * this.gasPrice;\n }\n async getBlock() {\n const block = await this.provider.getBlock(this.blockHash);\n if (block == null) {\n throw new Error(\"TODO\");\n }\n return block;\n }\n async getTransaction() {\n const tx = await this.provider.getTransaction(this.hash);\n if (tx == null) {\n throw new Error(\"TODO\");\n }\n return tx;\n }\n async confirmations() {\n return (await this.provider.getBlockNumber()) - this.blockNumber + 1;\n }\n removedEvent() {\n return createRemovedTransactionFilter(this);\n }\n reorderedEvent(other) {\n if (other && !other.isMined()) {\n return logger.throwError(\"unmined 'other' transction cannot be orphaned\", \"UNSUPPORTED_OPERATION\", {\n operation: \"reorderedEvent(other)\"\n });\n }\n return createReorderedTransactionFilter(this, other);\n }\n}\n;\nexport class TransactionResponse {\n constructor(tx, provider) {\n if (provider == null) {\n provider = dummyProvider;\n }\n this.provider = provider;\n this.blockNumber = (tx.blockNumber != null) ? tx.blockNumber : null;\n this.blockHash = (tx.blockHash != null) ? tx.blockHash : null;\n this.hash = tx.hash;\n this.index = tx.index;\n this.type = tx.type;\n this.from = tx.from;\n this.to = tx.to || null;\n this.gasLimit = tx.gasLimit;\n this.nonce = tx.nonce;\n this.data = tx.data;\n this.value = tx.value;\n this.gasPrice = tx.gasPrice;\n this.maxPriorityFeePerGas = (tx.maxPriorityFeePerGas != null) ? tx.maxPriorityFeePerGas : null;\n this.maxFeePerGas = (tx.maxFeePerGas != null) ? tx.maxFeePerGas : null;\n this.chainId = tx.chainId;\n this.signature = tx.signature;\n this.accessList = (tx.accessList != null) ? tx.accessList : null;\n }\n //connect(provider: Provider): TransactionResponse {\n // return new TransactionResponse(this, provider);\n //}\n toJSON() {\n const { blockNumber, blockHash, index, hash, type, to, from, nonce, data, signature, accessList } = this;\n return {\n _type: \"TransactionReceipt\",\n accessList, blockNumber, blockHash,\n chainId: toJson(this.chainId),\n data, from,\n gasLimit: toJson(this.gasLimit),\n gasPrice: toJson(this.gasPrice),\n hash,\n maxFeePerGas: toJson(this.maxFeePerGas),\n maxPriorityFeePerGas: toJson(this.maxPriorityFeePerGas),\n nonce, signature, to, index, type,\n value: toJson(this.value),\n };\n }\n async getBlock() {\n let blockNumber = this.blockNumber;\n if (blockNumber == null) {\n const tx = await this.getTransaction();\n if (tx) {\n blockNumber = tx.blockNumber;\n }\n }\n if (blockNumber == null) {\n return null;\n }\n const block = this.provider.getBlock(blockNumber);\n if (block == null) {\n throw new Error(\"TODO\");\n }\n return block;\n }\n async getTransaction() {\n return this.provider.getTransaction(this.hash);\n }\n async wait(confirms) {\n return this.provider.waitForTransaction(this.hash, confirms);\n }\n isMined() {\n return (this.blockHash != null);\n }\n isLegacy() {\n return (this.type === 0);\n }\n isBerlin() {\n return (this.type === 1);\n }\n isLondon() {\n return (this.type === 2);\n }\n removedEvent() {\n if (!this.isMined()) {\n return logger.throwError(\"unmined transaction canot be orphaned\", \"UNSUPPORTED_OPERATION\", {\n operation: \"removeEvent()\"\n });\n }\n return createRemovedTransactionFilter(this);\n }\n reorderedEvent(other) {\n if (!this.isMined()) {\n return logger.throwError(\"unmined transaction canot be orphaned\", \"UNSUPPORTED_OPERATION\", {\n operation: \"removeEvent()\"\n });\n }\n if (other && !other.isMined()) {\n return logger.throwError(\"unmined 'other' transaction canot be orphaned\", \"UNSUPPORTED_OPERATION\", {\n operation: \"removeEvent()\"\n });\n }\n return createReorderedTransactionFilter(this, other);\n }\n}\nfunction createOrphanedBlockFilter(block) {\n return { orphan: \"drop-block\", hash: block.hash, number: block.number };\n}\nfunction createReorderedTransactionFilter(tx, other) {\n return { orphan: \"reorder-transaction\", tx, other };\n}\nfunction createRemovedTransactionFilter(tx) {\n return { orphan: \"drop-transaction\", tx };\n}\nfunction createRemovedLogFilter(log) {\n return { orphan: \"drop-log\", log: {\n transactionHash: log.transactionHash,\n blockHash: log.blockHash,\n blockNumber: log.blockNumber,\n address: log.address,\n data: log.data,\n topics: Object.freeze(log.topics.slice()),\n index: log.index\n } };\n}\nfunction fail() {\n throw new Error(\"this provider should not be used\");\n}\nclass DummyProvider {\n get provider() { return this; }\n async getNetwork() { return fail(); }\n async getFeeData() { return fail(); }\n async estimateGas(tx) { return fail(); }\n async call(tx) { return fail(); }\n async resolveName(name) { return fail(); }\n // State\n async getBlockNumber() { return fail(); }\n // Account\n async getBalanceOf(address, blockTag) {\n return fail();\n }\n async getTransactionCountOf(address, blockTag) {\n return fail();\n }\n async getCode(address, blockTag) {\n return fail();\n }\n async getStorageAt(address, position, blockTag) {\n return fail();\n }\n // Write\n async broadcastTransaction(signedTx) { return fail(); }\n // Queries\n async getBlock(blockHashOrBlockTag) {\n return fail();\n }\n async getBlockWithTransactions(blockHashOrBlockTag) {\n return fail();\n }\n async getTransaction(hash) {\n return fail();\n }\n async getTransactionReceipt(hash) {\n return fail();\n }\n // Bloom-filter Queries\n async getLogs(filter) {\n return fail();\n }\n // ENS\n async lookupAddress(address) {\n return fail();\n }\n async waitForTransaction(hash, confirms, timeout) {\n return fail();\n }\n async waitForBlock(blockTag) {\n return fail();\n }\n // EventEmitterable\n async on(event, listener) { return fail(); }\n async once(event, listener) { return fail(); }\n async emit(event, ...args) { return fail(); }\n async listenerCount(event) { return fail(); }\n async listeners(event) { return fail(); }\n async off(event, listener) { return fail(); }\n async removeAllListeners(event) { return fail(); }\n async addListener(event, listener) { return fail(); }\n async removeListener(event, listener) { return fail(); }\n}\n// A singleton provider instance that can be used as a placeholder. This\n// allows API that have a Provider added later to not require a null check.\nexport const dummyProvider = new DummyProvider();\n//# sourceMappingURL=provider.js.map","// Belongs to Networks; requires abstract-provider\n// provider requires abstract-provider and network\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Formatter_format, _Formatter_baseBlock;\n/**\n * Formatter\n *\n * This is responsibile for converting much of the various\n * loose network values into a concrete ethers-ready value.\n *\n * For example, converting addresses to checksum addresses,\n * validating a hash is 32 bytes, and so on.\n *\n * By sub-classing this class and providing it in a custom\n * Network object this allows exotic (non-Ethereum) networks\n * to be fairly simple to adapt to ethers.\n */\nimport { getAddress, getCreateAddress } from \"@ethersproject/address\";\nimport { dataLength, dataSlice, isHexString, quantity } from \"@ethersproject/bytes\";\nimport { toHex } from \"@ethersproject/math\";\nimport { Signature } from \"@ethersproject/signing-key\";\nimport { accessListify } from \"@ethersproject/transaction\";\nimport { Block, Log, TransactionReceipt, TransactionResponse } from \"./provider.js\";\nimport { logger } from \"./logger.js\";\nconst BN_MAX_UINT256 = BigInt(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\n//export type AccessListSet = { address: string, storageKeys: Array<string> };\n//export type AccessList = Array<AccessListSet>;\n//export type AccessListish = AccessList |\n// Array<[ string, Array<string> ]> |\n// Record<string, Array<string>>;\nfunction stringify(value) {\n if (typeof (value) !== \"string\") {\n throw new Error(\"invalid string\");\n }\n return value;\n}\nexport class Formatter {\n constructor() {\n _Formatter_format.set(this, void 0);\n _Formatter_baseBlock.set(this, void 0);\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 number = this.number.bind(this);\n const uint256 = this.uint256.bind(this);\n const topics = this.arrayOf(hash);\n __classPrivateFieldSet(this, _Formatter_format, {\n address,\n bigNumber,\n blockTag,\n data,\n hash,\n number,\n uint256,\n topics,\n filter: this.object({\n fromBlock: this.allowNull(blockTag, undefined),\n toBlock: this.allowNull(blockTag, undefined),\n blockHash: this.allowNull(hash, undefined),\n address: this.allowNull(address, undefined),\n topics: this.allowNull(topics, undefined)\n }),\n transactionRequest: this.object({\n from: this.allowNull(address),\n type: this.allowNull(number),\n to: this.allowNull(address),\n nonce: this.allowNull(number),\n gasLimit: this.allowNull(uint256),\n gasPrice: this.allowNull(uint256),\n maxFeePerGas: this.allowNull(uint256),\n maxPriorityFeePerGas: this.allowNull(uint256),\n data: this.allowNull(data),\n value: this.allowNull(uint256),\n }),\n transactionResponse: this.object({\n hash: hash,\n index: number,\n type: this.allowNull(number, 0),\n // These can be null for pending blocks\n blockHash: this.allowNull(hash),\n blockNumber: this.allowNull(number),\n // For Legacy transactions, this comes from the v\n chainId: this.allowNull(number),\n from: address,\n to: this.address,\n gasLimit: bigNumber,\n gasPrice: this.allowNull(bigNumber),\n maxFeePerGas: this.allowNull(bigNumber),\n maxPriorityFeePerGas: this.allowNull(bigNumber),\n value: bigNumber,\n data: data,\n nonce: number,\n r: hash,\n s: hash,\n v: number,\n accessList: this.allowNull(this.accessList)\n }, {\n index: [\"transactionIndex\"]\n }),\n }, \"f\");\n __classPrivateFieldSet(this, _Formatter_baseBlock, this.object({\n number: number,\n hash: this.allowNull(hash, null),\n timestamp: number,\n parentHash: hash,\n nonce: this.allowNull(stringify, \"0x0000000000000000\"),\n difficulty: bigNumber,\n gasLimit: bigNumber,\n gasUsed: bigNumber,\n miner: this.allowNull(address, \"0x0000000000000000000000000000000000000000\"),\n extraData: stringify,\n baseFeePerGas: this.allowNull(bigNumber),\n }), \"f\");\n }\n // An address\n address(value) {\n return getAddress(value);\n }\n // An address from a call result; may be zero-padded\n callAddress(value) {\n if (dataLength(value) !== 32 || dataSlice(value, 0, 12) !== \"0x000000000000000000000000\") {\n logger.throwArgumentError(\"invalid call address\", \"value\", value);\n }\n return this.address(dataSlice(value, 12));\n }\n // An address from a transaction (e.g. { from: string, nonce: number })\n contractAddress(value) {\n return getCreateAddress({\n from: this.address(value.from),\n nonce: logger.getNumber(value.nonce, \"value.nonce\")\n });\n }\n // Block Tag\n blockTag(value) {\n if (value == null) {\n return \"latest\";\n }\n switch (value) {\n case \"earliest\":\n return \"0x0\";\n case \"latest\":\n case \"pending\":\n return value;\n }\n if (typeof (value) === \"number\" || (isHexString(value) && dataLength(value) < 32)) {\n return quantity(value);\n }\n return logger.throwArgumentError(\"invalid blockTag\", \"value\", value);\n }\n // Block objects\n block(value, provider) {\n const params = __classPrivateFieldGet(this, _Formatter_baseBlock, \"f\").call(this, value);\n params.transactions = value.transactions.map((t) => this.hash(t));\n return new Block(params, provider);\n }\n blockWithTransactions(value, provider) {\n throw new Error();\n }\n // Transactions\n transactionRequest(value, provider) {\n return __classPrivateFieldGet(this, _Formatter_format, \"f\").transactionRequest(value);\n }\n transactionResponse(value, provider) {\n value = Object.assign({}, value);\n // @TODO: Use the remap feature\n if (value.data == null && value.input != null) {\n value.data = value.input;\n }\n if (value.gasLimit == null && value.gas) {\n value.gasLimit = value.gas;\n }\n value = __classPrivateFieldGet(this, _Formatter_format, \"f\").transactionResponse(value);\n const sig = Signature.from({ r: value.r, s: value.s, v: value.v });\n value.signature = sig;\n if (value.chainId == null) {\n value.chainId = sig.legacyChainId;\n }\n return new TransactionResponse(value, provider);\n }\n // Receipts\n log(value, provider) {\n const log = this.object({\n address: this.address,\n blockHash: this.hash,\n blockNumber: this.number,\n data: this.data,\n index: this.number,\n removed: this.boolean,\n topics: this.topics,\n transactionHash: this.hash,\n transactionIndex: this.number,\n }, {\n index: [\"logIndex\"]\n })(value);\n return new Log(log, provider);\n }\n receipt(value, provider) {\n const receipt = this.object({\n blockHash: this.hash,\n blockNumber: this.number,\n contractAddress: this.allowNull(this.address),\n cumulativeGasUsed: this.bigNumber,\n from: this.address,\n gasUsed: this.bigNumber,\n logs: this.arrayOf((v) => (this.log(v, provider))),\n logsBloom: this.data,\n root: this.allowNull(this.data),\n status: this.allowNull(this.number),\n to: this.address,\n gasPrice: this.allowNull(this.bigNumber),\n hash: this.hash,\n index: this.number,\n type: this.allowNull(this.number, 0),\n }, {\n hash: [\"transactionHash\"],\n gasPrice: [\"effectiveGasPrice\"],\n index: [\"transactionIndex\"]\n })(value);\n // RSK incorrectly implemented EIP-658, so we munge things a bit here for it\n if (receipt.root != null) {\n if (receipt.root.length <= 4) {\n // Could be 0x00, 0x0, 0x01 or 0x1\n const value = parseInt(receipt.root);\n if (value === 0 || value === 1) {\n // Make sure if both are specified, they match\n if (receipt.status != null && receipt.status !== value) {\n return logger.throwError(\"alt-root-status/status mismatch\", \"BAD_DATA\", {\n value: { root: receipt.root, status: receipt.status }\n });\n }\n receipt.status = value;\n delete receipt.root;\n }\n else {\n return logger.throwError(\"invalid alt-root-status\", \"BAD_DATA\", {\n value: receipt.root\n });\n }\n }\n else if (!isHexString(receipt.root, 32)) {\n // Must be a valid bytes32\n return logger.throwError(\"invalid receipt root hash\", \"BAD_DATA\", {\n value: receipt.root\n });\n }\n }\n //receipt.byzantium = (receipt.root == null);\n return new TransactionReceipt(receipt, provider);\n }\n // Fitlers\n topics(value) {\n return __classPrivateFieldGet(this, _Formatter_format, \"f\").topics(value);\n }\n filter(value) {\n return __classPrivateFieldGet(this, _Formatter_format, \"f\").filter(value);\n }\n filterLog(value) {\n console.log(\"ME\", value);\n return null;\n }\n // Converts a serialized transaction to a TransactionResponse\n transaction(value) {\n throw new Error();\n }\n // Useful utility formatters functions, which if need be use the\n // methods within the formatter to ensure internal compatibility\n // Access List; converts an AccessListish to an AccessList\n accessList(value) {\n return accessListify(value);\n }\n // Converts falsish values to a specific value, otherwise use the formatter. Calls preserve `this`.\n allowFalsish(format, ifFalse) {\n return ((value) => {\n if (!value) {\n return ifFalse;\n }\n return format.call(this, value);\n });\n }\n // Allows null, optionally replacing it with a default value. Calls preserve `this`.\n allowNull(format, ifNull) {\n return ((value) => {\n if (value == null) {\n return ifNull;\n }\n return format.call(this, value);\n });\n }\n // Requires an Array satisfying the formatter. Calls preserves `this`.\n arrayOf(format) {\n return ((array) => {\n if (!Array.isArray(array)) {\n throw new Error(\"not an array\");\n }\n return array.map((i) => format.call(this, i));\n });\n }\n // Requires a value which is a value BigNumber\n bigNumber(value) {\n return logger.getBigInt(value, \"value\");\n }\n uint256(value) {\n const result = this.bigNumber(value);\n if (result < 0 || result > BN_MAX_UINT256) {\n logger.throwArgumentError(\"invalid uint256\", \"value\", value);\n }\n return result;\n }\n // Requires a value which is a value boolean or string equivalent\n boolean(value) {\n switch (value) {\n case true:\n case \"true\":\n return true;\n case false:\n case \"false\":\n return false;\n }\n return logger.throwArgumentError(`invalid boolean; ${JSON.stringify(value)}`, \"value\", value);\n }\n // Requires a value which is a valid hexstring. If dataOrLength is true,\n // the length must be even (i.e. a datahexstring) or if it is a number,\n // specifies teh number of bytes value must represent\n _hexstring(dataOrLength) {\n if (dataOrLength == null) {\n dataOrLength = false;\n }\n return (function (value) {\n if (isHexString(value, dataOrLength)) {\n return value.toLowerCase();\n }\n throw new Error(\"bad hexstring\");\n });\n }\n data(value) {\n if (dataLength(value) == null) {\n logger.throwArgumentError(\"\", \"value\", value);\n }\n return value;\n }\n // Requires a network-native hash\n hash(value) {\n if (dataLength(value) !== 32) {\n logger.throwArgumentError(\"\", \"value\", value);\n }\n return __classPrivateFieldGet(this, _Formatter_format, \"f\").data(value);\n }\n // Requires a valid number, within the IEEE 754 safe range\n number(value) {\n return logger.getNumber(value);\n }\n // Requires an object which matches a fleet of other formatters\n // Any FormatFunc may return `undefined` to have the value omitted\n // from the result object. Calls preserve `this`.\n object(format, altNames) {\n return ((value) => {\n const result = {};\n for (const key in format) {\n let srcKey = key;\n if (altNames && key in altNames && !(srcKey in value)) {\n for (const altKey of altNames[key]) {\n if (altKey in value) {\n srcKey = altKey;\n break;\n }\n }\n }\n try {\n const nv = format[key].call(this, value[srcKey]);\n if (nv !== undefined) {\n result[key] = nv;\n }\n }\n catch (error) {\n const message = (error instanceof Error) ? error.message : \"not-an-error\";\n logger.throwError(`invalid value for value.${key} (${message})`, \"BAD_DATA\", { value });\n }\n }\n return result;\n });\n }\n // Requires a value which matches a network-native storage slot\n storageSlot(value) {\n return toHex(logger.getBigInt(value), 32);\n }\n}\n_Formatter_format = new WeakMap(), _Formatter_baseBlock = new WeakMap();\n//# sourceMappingURL=formatter.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { logger } from \"./logger.js\";\nconst EnsAddress = \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\";\nexport class NetworkPlugin {\n constructor(name) {\n defineProperties(this, { name });\n }\n clone() {\n return new NetworkPlugin(this.name);\n }\n validate(network) {\n return this;\n }\n}\nexport class GasCostPlugin extends NetworkPlugin {\n constructor(effectiveBlock = 0, costs) {\n super(`org.ethers.plugins.gas-cost#${(effectiveBlock || 0)}`);\n const props = { effectiveBlock };\n function set(name, nullish) {\n let value = (costs || {})[name];\n if (value == null) {\n value = nullish;\n }\n if (typeof (value) !== \"number\") {\n logger.throwArgumentError(`invalud value for ${name}`, \"costs\", costs);\n }\n props[name] = value;\n }\n set(\"txBase\", 21000);\n set(\"txCreate\", 32000);\n set(\"txDataZero\", 4);\n set(\"txDataNonzero\", 16);\n set(\"txAccessListStorageKey\", 1900);\n set(\"txAccessListAddress\", 2400);\n defineProperties(this, props);\n }\n clone() {\n return new GasCostPlugin(this.effectiveBlock, this);\n }\n}\n// Networks shoudl use this plugin to specify the contract address\n// and network necessary to resolve ENS names.\nexport class EnsPlugin extends NetworkPlugin {\n constructor(address, targetNetwork) {\n super(\"org.ethers.plugins.ens\");\n defineProperties(this, {\n address: (address || EnsAddress),\n targetNetwork: ((targetNetwork == null) ? 1 : targetNetwork)\n });\n }\n clone() {\n return new EnsPlugin(this.address, this.targetNetwork);\n }\n validate(network) {\n network.formatter.address(this.address);\n return this;\n }\n}\nexport class MaxPriorityFeePlugin extends NetworkPlugin {\n constructor(priorityFee) {\n super(\"org.ethers.plugins.max-priority-fee\");\n defineProperties(this, {\n priorityFee: logger.getBigInt(priorityFee)\n });\n }\n async getPriorityFee(provider) {\n return this.priorityFee;\n }\n clone() {\n return new MaxPriorityFeePlugin(this.priorityFee);\n }\n}\n//# sourceMappingURL=plugins-network.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Network_props;\nimport { getStore, setStore } from \"@ethersproject/properties\";\nimport { Formatter } from \"./formatter.js\";\nimport { logger } from \"./logger.js\";\nimport { EnsPlugin, GasCostPlugin } from \"./plugins-network.js\";\n/* * * *\n// Networks which operation against an L2 can use this plugin to\n// specify how to access L1, for the purpose of resolving ENS,\n// for example.\nexport class LayerOneConnectionPlugin extends NetworkPlugin {\n readonly provider!: Provider;\n// @TODO: Rename to ChainAccess and allow for connecting to any chain\n constructor(provider: Provider) {\n super(\"org.ethers.plugins.layer-one-connection\");\n defineProperties<LayerOneConnectionPlugin>(this, { provider });\n }\n\n clone(): LayerOneConnectionPlugin {\n return new LayerOneConnectionPlugin(this.provider);\n }\n}\n*/\n/* * * *\nexport class PriceOraclePlugin extends NetworkPlugin {\n readonly address!: string;\n\n constructor(address: string) {\n super(\"org.ethers.plugins.price-oracle\");\n defineProperties<PriceOraclePlugin>(this, { address });\n }\n\n clone(): PriceOraclePlugin {\n return new PriceOraclePlugin(this.address);\n }\n}\n*/\n// Networks or clients with a higher need for security (such as clients\n// that may automatically make CCIP requests without user interaction)\n// can use this plugin to anonymize requests or intercept CCIP requests\n// to notify and/or receive authorization from the user\n/* * * *\nexport type FetchDataFunc = (req: Frozen<FetchRequest>) => Promise<FetchRequest>;\nexport class CcipPreflightPlugin extends NetworkPlugin {\n readonly fetchData!: FetchDataFunc;\n\n constructor(fetchData: FetchDataFunc) {\n super(\"org.ethers.plugins.ccip-preflight\");\n defineProperties<CcipPreflightPlugin>(this, { fetchData });\n }\n\n clone(): CcipPreflightPlugin {\n return new CcipPreflightPlugin(this.fetchData);\n }\n}\n*/\nconst Networks = new Map();\nconst defaultFormatter = new Formatter();\nexport class Network {\n constructor(name, _chainId, formatter) {\n _Network_props.set(this, void 0);\n const chainId = logger.getBigInt(_chainId);\n if (formatter == null) {\n formatter = defaultFormatter;\n }\n const plugins = new Map();\n __classPrivateFieldSet(this, _Network_props, { name, chainId, formatter, plugins }, \"f\");\n }\n toJSON() {\n return { name: this.name, chainId: this.chainId };\n }\n get name() { return getStore(__classPrivateFieldGet(this, _Network_props, \"f\"), \"name\"); }\n set name(value) { setStore(__classPrivateFieldGet(this, _Network_props, \"f\"), \"name\", value); }\n get chainId() { return getStore(__classPrivateFieldGet(this, _Network_props, \"f\"), \"chainId\"); }\n set chainId(value) { setStore(__classPrivateFieldGet(this, _Network_props, \"f\"), \"chainId\", logger.getBigInt(value, \"chainId\")); }\n get formatter() { return getStore(__classPrivateFieldGet(this, _Network_props, \"f\"), \"formatter\"); }\n set formatter(value) { setStore(__classPrivateFieldGet(this, _Network_props, \"f\"), \"formatter\", value); }\n get plugins() {\n return Array.from(__classPrivateFieldGet(this, _Network_props, \"f\").plugins.values());\n }\n attachPlugin(plugin) {\n if (this.isFrozen()) {\n throw new Error(\"frozen\");\n }\n if (__classPrivateFieldGet(this, _Network_props, \"f\").plugins.get(plugin.name)) {\n throw new Error(`cannot replace existing plugin: ${plugin.name} `);\n }\n __classPrivateFieldGet(this, _Network_props, \"f\").plugins.set(plugin.name, plugin.validate(this));\n return this;\n }\n getPlugin(name) {\n return (__classPrivateFieldGet(this, _Network_props, \"f\").plugins.get(name)) || null;\n }\n // Gets a list of Plugins which match basename, ignoring any fragment\n getPlugins(basename) {\n return (this.plugins.filter((p) => (p.name.split(\"#\")[0] === basename)));\n }\n clone() {\n const clone = new Network(this.name, this.chainId, this.formatter);\n this.plugins.forEach((plugin) => {\n clone.attachPlugin(plugin.clone());\n });\n return clone;\n }\n freeze() {\n Object.freeze(__classPrivateFieldGet(this, _Network_props, \"f\"));\n return this;\n }\n isFrozen() {\n return Object.isFrozen(__classPrivateFieldGet(this, _Network_props, \"f\"));\n }\n computeIntrinsicGas(tx) {\n const costs = this.getPlugin(\"org.ethers.gas-cost\") || (new GasCostPlugin());\n let gas = costs.txBase;\n if (tx.to == null) {\n gas += costs.txCreate;\n }\n if (tx.data) {\n for (let i = 2; i < tx.data.length; i += 2) {\n if (tx.data.substring(i, i + 2) === \"00\") {\n gas += costs.txDataZero;\n }\n else {\n gas += costs.txDataNonzero;\n }\n }\n }\n if (tx.accessList) {\n const accessList = this.formatter.accessList(tx.accessList);\n for (const addr in accessList) {\n gas += costs.txAccessListAddress + costs.txAccessListStorageKey * accessList[addr].storageKeys.length;\n }\n }\n return gas;\n }\n static from(network) {\n // Default network\n if (network == null) {\n return Network.from(\"homestead\");\n }\n // Canonical name or chain ID\n if (typeof (network) === \"number\") {\n network = BigInt(network);\n }\n if (typeof (network) === \"string\" || typeof (network) === \"bigint\") {\n const networkFunc = Networks.get(network);\n if (networkFunc) {\n return networkFunc();\n }\n if (typeof (network) === \"bigint\") {\n return new Network(\"unknown\", network);\n }\n logger.throwArgumentError(\"unknown network\", \"network\", network);\n }\n // Clonable with network-like abilities\n if (typeof (network.clone) === \"function\") {\n const clone = network.clone();\n //if (typeof(network.name) !== \"string\" || typeof(network.chainId) !== \"number\") {\n //}\n return clone;\n }\n // Networkish\n if (typeof (network) === \"object\") {\n if (typeof (network.name) !== \"string\" || typeof (network.chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid network object name or chainId\", \"network\", network);\n }\n const custom = new Network((network.name), (network.chainId));\n if (network.ensAddress || network.ensNetwork != null) {\n custom.attachPlugin(new EnsPlugin(network.ensAddress, network.ensNetwork));\n }\n //if ((<any>network).layerOneConnection) {\n // custom.attachPlugin(new LayerOneConnectionPlugin((<any>network).layerOneConnection));\n //}\n return custom;\n }\n return logger.throwArgumentError(\"invalid network\", \"network\", network);\n }\n static register(nameOrChainId, networkFunc) {\n if (typeof (nameOrChainId) === \"number\") {\n nameOrChainId = BigInt(nameOrChainId);\n }\n const existing = Networks.get(nameOrChainId);\n if (existing) {\n logger.throwArgumentError(`conflicting network for ${JSON.stringify(existing.name)}`, \"nameOrChainId\", nameOrChainId);\n }\n Networks.set(nameOrChainId, networkFunc);\n }\n}\n_Network_props = new WeakMap();\n//# sourceMappingURL=network.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _PollingBlockSubscriber_instances, _PollingBlockSubscriber_provider, _PollingBlockSubscriber_poller, _PollingBlockSubscriber_interval, _PollingBlockSubscriber_blockNumber, _PollingBlockSubscriber_poll, _OnBlockSubscriber_provider, _OnBlockSubscriber_poll, _PollingOrphanSubscriber_filter, _PollingTransactionSubscriber_hash, _PollingEventSubscriber_instances, _PollingEventSubscriber_provider, _PollingEventSubscriber_filter, _PollingEventSubscriber_poller, _PollingEventSubscriber_blockNumber, _PollingEventSubscriber_poll;\nimport { isHexString } from \"@ethersproject/bytes\";\nimport { logger } from \"./logger.js\";\nfunction copy(obj) {\n return JSON.parse(JSON.stringify(obj));\n}\nexport function getPollingSubscriber(provider, event) {\n if (event === \"block\") {\n return new PollingBlockSubscriber(provider);\n }\n if (isHexString(event, 32)) {\n return new PollingTransactionSubscriber(provider, event);\n }\n return logger.throwError(\"unsupported polling event\", \"UNSUPPORTED_OPERATION\", {\n operation: \"getPollingSubscriber\", info: { event }\n });\n}\n// @TODO: refactor this\nexport class PollingBlockSubscriber {\n constructor(provider) {\n _PollingBlockSubscriber_instances.add(this);\n _PollingBlockSubscriber_provider.set(this, void 0);\n _PollingBlockSubscriber_poller.set(this, void 0);\n _PollingBlockSubscriber_interval.set(this, void 0);\n // The most recent block we have scanned for events. The value -2\n // indicates we still need to fetch an initial block number\n _PollingBlockSubscriber_blockNumber.set(this, void 0);\n __classPrivateFieldSet(this, _PollingBlockSubscriber_provider, provider, \"f\");\n __classPrivateFieldSet(this, _PollingBlockSubscriber_poller, null, \"f\");\n __classPrivateFieldSet(this, _PollingBlockSubscriber_interval, 4000, \"f\");\n __classPrivateFieldSet(this, _PollingBlockSubscriber_blockNumber, -2, \"f\");\n }\n get pollingInterval() { return __classPrivateFieldGet(this, _PollingBlockSubscriber_interval, \"f\"); }\n set pollingInterval(value) { __classPrivateFieldSet(this, _PollingBlockSubscriber_interval, value, \"f\"); }\n start() {\n if (__classPrivateFieldGet(this, _PollingBlockSubscriber_poller, \"f\")) {\n throw new Error(\"subscriber already running\");\n }\n __classPrivateFieldGet(this, _PollingBlockSubscriber_instances, \"m\", _PollingBlockSubscriber_poll).call(this);\n __classPrivateFieldSet(this, _PollingBlockSubscriber_poller, __classPrivateFieldGet(this, _PollingBlockSubscriber_provider, \"f\")._setTimeout(__classPrivateFieldGet(this, _PollingBlockSubscriber_instances, \"m\", _PollingBlockSubscriber_poll).bind(this), __classPrivateFieldGet(this, _PollingBlockSubscriber_interval, \"f\")), \"f\");\n }\n stop() {\n if (!__classPrivateFieldGet(this, _PollingBlockSubscriber_poller, \"f\")) {\n throw new Error(\"subscriber not running\");\n }\n __classPrivateFieldGet(this, _PollingBlockSubscriber_provider, \"f\")._clearTimeout(__classPrivateFieldGet(this, _PollingBlockSubscriber_poller, \"f\"));\n __classPrivateFieldSet(this, _PollingBlockSubscriber_poller, null, \"f\");\n }\n pause(dropWhilePaused) {\n this.stop();\n if (dropWhilePaused) {\n __classPrivateFieldSet(this, _PollingBlockSubscriber_blockNumber, -2, \"f\");\n }\n }\n resume() {\n this.start();\n }\n}\n_PollingBlockSubscriber_provider = new WeakMap(), _PollingBlockSubscriber_poller = new WeakMap(), _PollingBlockSubscriber_interval = new WeakMap(), _PollingBlockSubscriber_blockNumber = new WeakMap(), _PollingBlockSubscriber_instances = new WeakSet(), _PollingBlockSubscriber_poll = async function _PollingBlockSubscriber_poll() {\n const blockNumber = await __classPrivateFieldGet(this, _PollingBlockSubscriber_provider, \"f\").getBlockNumber();\n if (__classPrivateFieldGet(this, _PollingBlockSubscriber_blockNumber, \"f\") === -2) {\n __classPrivateFieldSet(this, _PollingBlockSubscriber_blockNumber, blockNumber, \"f\");\n return;\n }\n // @TODO: Put a cap on the maximum number of events per loop?\n if (blockNumber !== __classPrivateFieldGet(this, _PollingBlockSubscriber_blockNumber, \"f\")) {\n for (let b = __classPrivateFieldGet(this, _PollingBlockSubscriber_blockNumber, \"f\") + 1; b <= blockNumber; b++) {\n __classPrivateFieldGet(this, _PollingBlockSubscriber_provider, \"f\").emit(\"block\", b);\n }\n __classPrivateFieldSet(this, _PollingBlockSubscriber_blockNumber, blockNumber, \"f\");\n }\n __classPrivateFieldSet(this, _PollingBlockSubscriber_poller, __classPrivateFieldGet(this, _PollingBlockSubscriber_provider, \"f\")._setTimeout(__classPrivateFieldGet(this, _PollingBlockSubscriber_instances, \"m\", _PollingBlockSubscriber_poll).bind(this), __classPrivateFieldGet(this, _PollingBlockSubscriber_interval, \"f\")), \"f\");\n};\nexport class OnBlockSubscriber {\n constructor(provider) {\n _OnBlockSubscriber_provider.set(this, void 0);\n _OnBlockSubscriber_poll.set(this, void 0);\n __classPrivateFieldSet(this, _OnBlockSubscriber_provider, provider, \"f\");\n __classPrivateFieldSet(this, _OnBlockSubscriber_poll, (blockNumber) => {\n this._poll(blockNumber, __classPrivateFieldGet(this, _OnBlockSubscriber_provider, \"f\"));\n }, \"f\");\n }\n async _poll(blockNumber, provider) {\n throw new Error(\"sub-classes must override this\");\n }\n start() {\n __classPrivateFieldGet(this, _OnBlockSubscriber_poll, \"f\").call(this, -2);\n __classPrivateFieldGet(this, _OnBlockSubscriber_provider, \"f\").on(\"block\", __classPrivateFieldGet(this, _OnBlockSubscriber_poll, \"f\"));\n }\n stop() {\n __classPrivateFieldGet(this, _OnBlockSubscriber_provider, \"f\").off(\"block\", __classPrivateFieldGet(this, _OnBlockSubscriber_poll, \"f\"));\n }\n pause(dropWhilePaused) { this.stop(); }\n resume() { this.start(); }\n}\n_OnBlockSubscriber_provider = new WeakMap(), _OnBlockSubscriber_poll = new WeakMap();\nexport class PollingOrphanSubscriber extends OnBlockSubscriber {\n constructor(provider, filter) {\n super(provider);\n _PollingOrphanSubscriber_filter.set(this, void 0);\n __classPrivateFieldSet(this, _PollingOrphanSubscriber_filter, copy(filter), \"f\");\n }\n async _poll(blockNumber, provider) {\n throw new Error(\"@TODO\");\n console.log(__classPrivateFieldGet(this, _PollingOrphanSubscriber_filter, \"f\"));\n }\n}\n_PollingOrphanSubscriber_filter = new WeakMap();\nexport class PollingTransactionSubscriber extends OnBlockSubscriber {\n constructor(provider, hash) {\n super(provider);\n _PollingTransactionSubscriber_hash.set(this, void 0);\n __classPrivateFieldSet(this, _PollingTransactionSubscriber_hash, hash, \"f\");\n }\n async _poll(blockNumber, provider) {\n const tx = await provider.getTransactionReceipt(__classPrivateFieldGet(this, _PollingTransactionSubscriber_hash, \"f\"));\n if (tx) {\n provider.emit(__classPrivateFieldGet(this, _PollingTransactionSubscriber_hash, \"f\"), tx);\n }\n }\n}\n_PollingTransactionSubscriber_hash = new WeakMap();\nexport class PollingEventSubscriber {\n constructor(provider, filter) {\n _PollingEventSubscriber_instances.add(this);\n _PollingEventSubscriber_provider.set(this, void 0);\n _PollingEventSubscriber_filter.set(this, void 0);\n _PollingEventSubscriber_poller.set(this, void 0);\n // The most recent block we have scanned for events. The value -2\n // indicates we still need to fetch an initial block number\n _PollingEventSubscriber_blockNumber.set(this, void 0);\n __classPrivateFieldSet(this, _PollingEventSubscriber_provider, provider, \"f\");\n __classPrivateFieldSet(this, _PollingEventSubscriber_filter, copy(filter), \"f\");\n __classPrivateFieldSet(this, _PollingEventSubscriber_poller, __classPrivateFieldGet(this, _PollingEventSubscriber_instances, \"m\", _PollingEventSubscriber_poll).bind(this), \"f\");\n __classPrivateFieldSet(this, _PollingEventSubscriber_blockNumber, -2, \"f\");\n }\n start() {\n if (__classPrivateFieldGet(this, _PollingEventSubscriber_blockNumber, \"f\") === -2) {\n __classPrivateFieldGet(this, _PollingEventSubscriber_provider, \"f\").getBlockNumber().then((blockNumber) => {\n __classPrivateFieldSet(this, _PollingEventSubscriber_blockNumber, blockNumber, \"f\");\n });\n }\n __classPrivateFieldGet(this, _PollingEventSubscriber_provider, \"f\").on(\"block\", __classPrivateFieldGet(this, _PollingEventSubscriber_poller, \"f\"));\n }\n stop() {\n __classPrivateFieldGet(this, _PollingEventSubscriber_provider, \"f\").off(\"block\", __classPrivateFieldGet(this, _PollingEventSubscriber_poller, \"f\"));\n }\n pause(dropWhilePaused) {\n this.stop();\n if (dropWhilePaused) {\n __classPrivateFieldSet(this, _PollingEventSubscriber_blockNumber, -2, \"f\");\n }\n }\n resume() {\n this.start();\n }\n}\n_PollingEventSubscriber_provider = new WeakMap(), _PollingEventSubscriber_filter = new WeakMap(), _PollingEventSubscriber_poller = new WeakMap(), _PollingEventSubscriber_blockNumber = new WeakMap(), _PollingEventSubscriber_instances = new WeakSet(), _PollingEventSubscriber_poll = async function _PollingEventSubscriber_poll(blockNumber) {\n // The initial block hasn't been determined yet\n if (__classPrivateFieldGet(this, _PollingEventSubscriber_blockNumber, \"f\") === -2) {\n return;\n }\n const filter = copy(__classPrivateFieldGet(this, _PollingEventSubscriber_filter, \"f\"));\n filter.fromBlock = __classPrivateFieldGet(this, _PollingEventSubscriber_blockNumber, \"f\") + 1;\n filter.toBlock = blockNumber;\n const logs = await __classPrivateFieldGet(this, _PollingEventSubscriber_provider, \"f\").getLogs(filter);\n // No logs could just mean the node has not indexed them yet,\n // so we keep a sliding window of 60 blocks to keep scanning\n if (logs.length === 0) {\n if (__classPrivateFieldGet(this, _PollingEventSubscriber_blockNumber, \"f\") < blockNumber - 60) {\n __classPrivateFieldSet(this, _PollingEventSubscriber_blockNumber, blockNumber - 60, \"f\");\n }\n return;\n }\n __classPrivateFieldSet(this, _PollingEventSubscriber_blockNumber, blockNumber, \"f\");\n for (const log of logs) {\n __classPrivateFieldGet(this, _PollingEventSubscriber_provider, \"f\").emit(__classPrivateFieldGet(this, _PollingEventSubscriber_filter, \"f\"), log);\n }\n};\n//# sourceMappingURL=subscriber-polling.js.map","// @TODO\n// Event coalescence\n// When we register an event with an async value (e.g. address is a Signer\n// or ENS name), we need to add it immeidately for the Event API, but also\n// need time to resolve the address. Upon resolving the address, we need to\n// migrate the listener to the static event. We also need to maintain a map\n// of Signer/ENS name to address so we can sync respond to listenerCount.\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _AbstractProvider_instances, _AbstractProvider_subs, _AbstractProvider_plugins, _AbstractProvider_pausedState, _AbstractProvider_networkPromise, _AbstractProvider_anyNetwork, _AbstractProvider_performCache, _AbstractProvider_nextTimer, _AbstractProvider_timers, _AbstractProvider_disableCcipRead, _AbstractProvider_perform, _AbstractProvider_call, _AbstractProvider_getBlock, _AbstractProvider_hasSub, _AbstractProvider_getSub;\nimport { resolveAddress } from \"@ethersproject/address\";\nimport { concat, dataLength, dataSlice, hexlify, isHexString } from \"@ethersproject/bytes\";\nimport { isCallException } from \"@ethersproject/logger\";\nimport { toArray } from \"@ethersproject/math\";\nimport { defineProperties, EventPayload, resolveProperties } from \"@ethersproject/properties\";\nimport { toUtf8String } from \"@ethersproject/strings\";\nimport { fetchData, FetchRequest } from \"@ethersproject/web\";\nimport { EnsResolver } from \"./ens-resolver.js\";\nimport { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { FeeData } from \"./provider.js\";\nimport { PollingBlockSubscriber, PollingEventSubscriber, PollingOrphanSubscriber, PollingTransactionSubscriber } from \"./subscriber-polling.js\";\n// Constants\nconst BN_2 = BigInt(2);\nconst MAX_CCIP_REDIRECTS = 10;\nfunction getTag(prefix, value) {\n return prefix + \":\" + JSON.stringify(value, (k, v) => {\n if (typeof (v) === \"bigint\") {\n return `bigint:${v.toString()}`;\n }\n if (typeof (v) === \"string\") {\n return v.toLowerCase();\n }\n // Sort object keys\n if (typeof (v) === \"object\" && !Array.isArray(v)) {\n const keys = Object.keys(v);\n keys.sort();\n return keys.reduce((accum, key) => {\n accum[key] = v[key];\n return accum;\n }, {});\n }\n return v;\n });\n}\nexport class UnmanagedSubscriber {\n constructor(name) { defineProperties(this, { name }); }\n start() { }\n stop() { }\n pause(dropWhilePaused) { }\n resume() { }\n}\nfunction copy(value) {\n return JSON.parse(JSON.stringify(value));\n}\nfunction concisify(items) {\n items = Array.from((new Set(items)).values());\n items.sort();\n return items;\n}\n// Normalize a ProviderEvent into a Subscription\n// @TODO: Make events sync if possible; like block\n//function getSyncSubscription(_event: ProviderEvent): Subscription {\n//}\nasync function getSubscription(_event, provider) {\n if (_event == null) {\n throw new Error(\"invalid event\");\n }\n // Normalize topic array info an EventFilter\n if (Array.isArray(_event)) {\n _event = { topics: _event };\n }\n if (typeof (_event) === \"string\") {\n switch (_event) {\n case \"block\":\n case \"pending\":\n case \"debug\":\n case \"network\": {\n return { type: _event, tag: _event };\n }\n }\n }\n if (isHexString(_event, 32)) {\n const hash = _event.toLowerCase();\n return { type: \"transaction\", tag: getTag(\"tx\", { hash }), hash };\n }\n if (_event.orphan) {\n const event = _event;\n // @TODO: Should lowercase and whatnot things here instead of copy...\n return { type: \"orphan\", tag: getTag(\"orphan\", event), filter: copy(event) };\n }\n if ((_event.address || _event.topics)) {\n const event = _event;\n const filter = {\n topics: ((event.topics || []).map((t) => {\n if (t == null) {\n return null;\n }\n if (Array.isArray(t)) {\n return concisify(t.map((t) => t.toLowerCase()));\n }\n return t.toLowerCase();\n }))\n };\n if (event.address) {\n const addresses = [];\n const promises = [];\n const addAddress = (addr) => {\n if (isHexString(addr)) {\n addresses.push(addr);\n }\n else {\n promises.push((async () => {\n addresses.push(await resolveAddress(addr, provider));\n })());\n }\n };\n if (Array.isArray(event.address)) {\n event.address.forEach(addAddress);\n }\n else {\n addAddress(event.address);\n }\n if (promises.length) {\n await Promise.all(promises);\n }\n filter.address = concisify(addresses.map((a) => a.toLowerCase()));\n }\n return { filter, tag: getTag(\"event\", filter), type: \"event\" };\n }\n return logger.throwArgumentError(\"unknown ProviderEvent\", \"event\", _event);\n}\nfunction getTime() { return (new Date()).getTime(); }\nexport function copyRequest(tx) {\n // @TODO: copy the copy from contracts and use it from this\n return tx;\n}\nexport class AbstractProvider {\n // @TODO: This should be a () => Promise<Network> so network can be\n // done when needed; or rely entirely on _detectNetwork?\n constructor(_network) {\n _AbstractProvider_instances.add(this);\n _AbstractProvider_subs.set(this, void 0);\n _AbstractProvider_plugins.set(this, void 0);\n // null=unpaused, true=paused+dropWhilePaused, false=paused\n _AbstractProvider_pausedState.set(this, void 0);\n _AbstractProvider_networkPromise.set(this, void 0);\n _AbstractProvider_anyNetwork.set(this, void 0);\n _AbstractProvider_performCache.set(this, void 0);\n _AbstractProvider_nextTimer.set(this, void 0);\n _AbstractProvider_timers.set(this, void 0);\n _AbstractProvider_disableCcipRead.set(this, void 0);\n if (_network === \"any\") {\n __classPrivateFieldSet(this, _AbstractProvider_anyNetwork, true, \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_networkPromise, null, \"f\");\n }\n else if (_network) {\n const network = Network.from(_network);\n __classPrivateFieldSet(this, _AbstractProvider_anyNetwork, false, \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_networkPromise, Promise.resolve(network), \"f\");\n setTimeout(() => { this.emit(\"network\", network, null); }, 0);\n }\n else {\n __classPrivateFieldSet(this, _AbstractProvider_anyNetwork, false, \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_networkPromise, null, \"f\");\n }\n __classPrivateFieldSet(this, _AbstractProvider_performCache, new Map(), \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_subs, new Map(), \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_plugins, new Map(), \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_pausedState, null, \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_nextTimer, 0, \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_timers, new Map(), \"f\");\n __classPrivateFieldSet(this, _AbstractProvider_disableCcipRead, false, \"f\");\n }\n get provider() { return this; }\n get plugins() {\n return Array.from(__classPrivateFieldGet(this, _AbstractProvider_plugins, \"f\").values());\n }\n attachPlugin(plugin) {\n if (__classPrivateFieldGet(this, _AbstractProvider_plugins, \"f\").get(plugin.name)) {\n throw new Error(`cannot replace existing plugin: ${plugin.name} `);\n }\n __classPrivateFieldGet(this, _AbstractProvider_plugins, \"f\").set(plugin.name, plugin.validate(this));\n return this;\n }\n getPlugin(name) {\n return (__classPrivateFieldGet(this, _AbstractProvider_plugins, \"f\").get(name)) || null;\n }\n set disableCcipRead(value) { __classPrivateFieldSet(this, _AbstractProvider_disableCcipRead, !!value, \"f\"); }\n get disableCcipRead() { return __classPrivateFieldGet(this, _AbstractProvider_disableCcipRead, \"f\"); }\n async ccipReadFetch(tx, calldata, urls) {\n if (this.disableCcipRead || urls.length === 0 || tx.to == null) {\n return null;\n }\n const sender = tx.to.toLowerCase();\n const data = calldata.toLowerCase();\n const errorMessages = [];\n for (let i = 0; i < urls.length; i++) {\n const url = urls[i];\n // URL expansion\n const href = url.replace(\"{sender}\", sender).replace(\"{data}\", data);\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 //const result = await fetchJson({ url: href, errorPassThrough: true }, json, (value, response) => {\n // value.status = response.statusCode;\n // return value;\n //});\n const request = new FetchRequest(href);\n if (url.indexOf(\"{data}\") === -1) {\n request.body = { data, sender };\n }\n let errorMessage = \"unknown error\";\n const resp = await fetchData(request);\n try {\n const result = resp.bodyJson;\n if (result.data) {\n return result.data;\n }\n if (result.message) {\n errorMessage = result.message;\n }\n }\n catch (error) { }\n // 4xx indicates the result is not present; stop\n if (resp.statusCode >= 400 && resp.statusCode < 500) {\n return logger.throwError(`response not found during CCIP fetch: ${errorMessage}`, \"OFFCHAIN_FAULT\", {\n reason: \"404_MISSING_RESOURCE\",\n transaction: tx, info: { url, errorMessage }\n });\n }\n // 5xx indicates server issue; try the next url\n errorMessages.push(errorMessage);\n }\n return logger.throwError(`error encountered during CCIP fetch: ${errorMessages.map((m) => JSON.stringify(m)).join(\", \")}`, \"OFFCHAIN_FAULT\", {\n reason: \"500_SERVER_ERROR\",\n transaction: tx, info: { urls, errorMessages }\n });\n }\n _wrapTransaction(tx, hash, blockNumber) {\n return tx;\n }\n _detectNetwork() {\n return logger.throwError(\"sub-classes must implement this\", \"UNSUPPORTED_OPERATION\", {\n operation: \"_detectNetwork\"\n });\n }\n async _perform(req) {\n return logger.throwError(`unsupported method: ${req.method}`, \"UNSUPPORTED_OPERATION\", {\n operation: req.method,\n info: req\n });\n }\n // State\n async getBlockNumber() {\n return logger.getNumber(await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, { method: \"getBlockNumber\" }), \"%response\");\n }\n async _getAddress(address) {\n if (typeof (address) === \"string\") {\n return address;\n }\n return await address.getAddress();\n }\n async _getBlockTag(blockTag) {\n const network = await this.getNetwork();\n if (typeof (blockTag) === \"number\" && Number.isSafeInteger(blockTag) && blockTag < 0) {\n //let blockNumber = await this._getApproxBlockNumber(500);\n let blockNumber = await this.getBlockNumber();\n blockNumber += blockTag;\n if (blockNumber < 0) {\n blockNumber = 0;\n }\n return network.formatter.blockTag(blockNumber);\n }\n return network.formatter.blockTag(blockTag);\n }\n async getNetwork() {\n // No explicit network was set and this is our first time\n if (__classPrivateFieldGet(this, _AbstractProvider_networkPromise, \"f\") == null) {\n // Detect the current network (shared with all calls)\n const detectNetwork = this._detectNetwork().then((network) => {\n this.emit(\"network\", network, null);\n return network;\n }, (error) => {\n // Reset the networkPromise on failure, so we will try again\n if (__classPrivateFieldGet(this, _AbstractProvider_networkPromise, \"f\") === detectNetwork) {\n __classPrivateFieldSet(this, _AbstractProvider_networkPromise, null, \"f\");\n }\n throw error;\n });\n __classPrivateFieldSet(this, _AbstractProvider_networkPromise, detectNetwork, \"f\");\n return await detectNetwork;\n }\n const networkPromise = __classPrivateFieldGet(this, _AbstractProvider_networkPromise, \"f\");\n const [expected, actual] = await Promise.all([\n networkPromise,\n this._detectNetwork() // The actual connected network\n ]);\n if (expected.chainId !== actual.chainId) {\n if (__classPrivateFieldGet(this, _AbstractProvider_anyNetwork, \"f\")) {\n // The \"any\" network can change, so notify listeners\n this.emit(\"network\", actual, expected);\n // Update the network if something else hasn't already changed it\n if (__classPrivateFieldGet(this, _AbstractProvider_networkPromise, \"f\") === networkPromise) {\n __classPrivateFieldSet(this, _AbstractProvider_networkPromise, Promise.resolve(actual), \"f\");\n }\n }\n else {\n // Otherwise, we do not allow changes to the underlying network\n logger.throwError(`network changed: ${expected.chainId} => ${actual.chainId} `, \"NETWORK_ERROR\", {\n event: \"changed\"\n });\n }\n }\n return expected.clone().freeze();\n }\n async getFeeData() {\n const { block, gasPrice } = await resolveProperties({\n block: this.getBlock(\"latest\"),\n gasPrice: ((async () => {\n try {\n const gasPrice = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, { method: \"getGasPrice\" });\n return logger.getBigInt(gasPrice, \"%response\");\n }\n catch (error) { }\n return null;\n })())\n });\n let maxFeePerGas = null, maxPriorityFeePerGas = null;\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 maxPriorityFeePerGas = BigInt(\"1500000000\");\n // Allow a network to override their maximum priority fee per gas\n const priorityFeePlugin = (await this.getNetwork()).getPlugin(\"org.ethers.plugins.max-priority-fee\");\n if (priorityFeePlugin) {\n maxPriorityFeePerGas = await priorityFeePlugin.getPriorityFee(this);\n }\n maxFeePerGas = (block.baseFeePerGas * BN_2) + maxPriorityFeePerGas;\n }\n return new FeeData(gasPrice, maxFeePerGas, maxPriorityFeePerGas);\n }\n async _getTransaction(_request) {\n const network = await this.getNetwork();\n // Fill in any addresses\n const request = Object.assign({}, _request, await resolveProperties({\n to: (_request.to ? resolveAddress(_request.to, this) : undefined),\n from: (_request.from ? resolveAddress(_request.from, this) : undefined),\n }));\n return network.formatter.transactionRequest(request);\n }\n async estimateGas(_tx) {\n const transaction = await this._getTransaction(_tx);\n return logger.getBigInt(await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"estimateGas\", transaction\n }), \"%response\");\n }\n async call(_tx) {\n const { tx, blockTag } = await resolveProperties({\n tx: this._getTransaction(_tx),\n blockTag: this._getBlockTag(_tx.blockTag)\n });\n return __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_call).call(this, tx, blockTag, _tx.enableCcipRead ? 0 : -1);\n }\n // Account\n async getBalanceOf(_address, _blockTag) {\n const { address, blockTag } = await resolveProperties({\n address: resolveAddress(_address),\n blockTag: this._getBlockTag(_blockTag)\n });\n return logger.getBigInt(await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"getBalance\", address, blockTag\n }), \"%response\");\n }\n async getTransactionCountOf(_address, _blockTag) {\n const { address, blockTag } = await resolveProperties({\n address: resolveAddress(_address),\n blockTag: this._getBlockTag(_blockTag)\n });\n return logger.getNumber(await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"getTransactionCount\", address, blockTag\n }), \"%response\");\n }\n async getCode(_address, _blockTag) {\n const { address, blockTag } = await resolveProperties({\n address: resolveAddress(_address),\n blockTag: this._getBlockTag(_blockTag)\n });\n return hexlify(await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"getCode\", address, blockTag\n }));\n }\n async getStorageAt(_address, _position, _blockTag) {\n const position = logger.getBigInt(_position);\n const { address, blockTag } = await resolveProperties({\n address: resolveAddress(_address),\n blockTag: this._getBlockTag(_blockTag)\n });\n return hexlify(await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"getStorageAt\", address, position, blockTag\n }));\n }\n // Write\n async broadcastTransaction(signedTx) {\n throw new Error();\n return {};\n }\n // Queries\n async getBlock(block) {\n const format = (await this.getNetwork()).formatter;\n const params = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_getBlock).call(this, block, false);\n if (params == null) {\n return null;\n }\n return format.block(params, this);\n }\n async getBlockWithTransactions(block) {\n const format = (await this.getNetwork()).formatter;\n const params = __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_getBlock).call(this, block, true);\n if (params == null) {\n return null;\n }\n return format.blockWithTransactions(params, this);\n }\n async getTransaction(hash) {\n const format = (await this.getNetwork()).formatter;\n const params = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, { method: \"getTransaction\", hash });\n return format.transactionResponse(params, this);\n }\n async getTransactionReceipt(hash) {\n const format = (await this.getNetwork()).formatter;\n const receipt = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, { method: \"getTransactionReceipt\", hash });\n if (receipt == null) {\n return null;\n }\n // Some backends did not backfill the effectiveGasPrice into old transactions\n // in the receipt, so we look it up manually and inject it.\n if (receipt.gasPrice == null && receipt.effectiveGasPrice == null) {\n const tx = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, { method: \"getTransaction\", hash });\n receipt.effectiveGasPrice = tx.gasPrice;\n }\n return format.receipt(receipt, this);\n }\n async _getFilter(filter) {\n // Create a canonical representation of the topics\n const topics = (filter.topics || []).map((t) => {\n if (t == null) {\n return null;\n }\n if (Array.isArray(t)) {\n return concisify(t.map((t) => t.toLowerCase()));\n }\n return t.toLowerCase();\n });\n const blockHash = (\"blockHash\" in filter) ? filter.blockHash : undefined;\n const lookup = {};\n // Addresses could be async (ENS names or Addressables)\n if (filter.address) {\n if (Array.isArray(filter.address)) {\n lookup.address = Promise.all(filter.address.map((a) => resolveAddress(a, this)));\n }\n else {\n lookup.address = resolveAddress(filter.address, this);\n }\n }\n // Block Tags could be async (i.e. relative)\n const addBlockTag = (key) => {\n if (filter[key] == null) {\n return;\n }\n lookup[key] = this._getBlockTag(filter[key]);\n };\n addBlockTag(\"fromBlock\");\n addBlockTag(\"toBlock\");\n // Wait for all properties to resolve\n const result = await resolveProperties(lookup);\n // Make sure things are canonical\n if (Array.isArray(result.address)) {\n result.address.sort();\n }\n result.topics = topics;\n if (blockHash) {\n if (filter.fromBlock || filter.toBlock) {\n throw new Error(\"invalid filter\");\n }\n result.blockHash = blockHash;\n }\n return result;\n }\n // Bloom-filter Queries\n async getLogs(_filter) {\n const { network, filter } = await resolveProperties({\n network: this.getNetwork(),\n filter: this._getFilter(_filter)\n });\n return (await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, { method: \"getLogs\", filter })).map((l) => {\n return network.formatter.log(l, this);\n });\n }\n // ENS\n _getProvider(chainId) {\n return logger.throwError(\"provider cannot connect to target network\", \"UNSUPPORTED_OPERATION\", {\n operation: \"_getProvider()\"\n });\n }\n async getResolver(name) {\n return await EnsResolver.fromName(this, name);\n }\n async getAvatar(name) {\n const resolver = await this.getResolver(name);\n if (resolver) {\n return await resolver.getAvatar();\n }\n return null;\n }\n async resolveName(name) {\n if (typeof (name) === \"string\") {\n const resolver = await this.getResolver(name);\n if (resolver) {\n return await resolver.getAddress();\n }\n }\n else {\n const address = await name.getAddress();\n if (address == null) {\n return logger.throwArgumentError(\"Addressable returned no address\", \"name\", name);\n }\n return address;\n }\n return null;\n }\n async lookupAddress(address) {\n throw new Error();\n //return \"TODO\";\n }\n async waitForTransaction(hash, confirms = 1, timeout) {\n if (confirms === 0) {\n return this.getTransactionReceipt(hash);\n }\n return new Promise(async (resolve, reject) => {\n let timer = null;\n const listener = (async (blockNumber) => {\n try {\n const receipt = await this.getTransactionReceipt(hash);\n if (receipt != null) {\n if (blockNumber - receipt.blockNumber + 1 >= confirms) {\n resolve(receipt);\n this.off(\"block\", listener);\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n return;\n }\n }\n }\n catch (error) {\n console.log(\"EEE\", error);\n }\n this.once(\"block\", listener);\n });\n if (timeout != null) {\n timer = setTimeout(() => {\n if (timer == null) {\n return;\n }\n timer = null;\n this.off(\"block\", listener);\n reject(logger.makeError(\"timeout\", \"TIMEOUT\", { reason: \"timeout\" }));\n }, timeout);\n }\n listener(await this.getBlockNumber());\n });\n }\n async waitForBlock(blockTag) {\n throw new Error();\n //return new Block(<any><unknown>{ }, this);\n }\n _clearTimeout(timerId) {\n const timer = __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").get(timerId);\n if (!timer) {\n return;\n }\n if (timer.timer) {\n clearTimeout(timer.timer);\n }\n __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").delete(timerId);\n }\n _setTimeout(_func, timeout = 0) {\n var _a, _b;\n const timerId = (__classPrivateFieldSet(this, _AbstractProvider_nextTimer, (_b = __classPrivateFieldGet(this, _AbstractProvider_nextTimer, \"f\"), _a = _b++, _b), \"f\"), _a);\n const func = () => {\n __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").delete(timerId);\n _func();\n };\n if (this.paused) {\n __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").set(timerId, { timer: null, func, time: timeout });\n }\n else {\n const timer = setTimeout(func, timeout);\n __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").set(timerId, { timer, func, time: getTime() });\n }\n return timerId;\n }\n _forEachSubscriber(func) {\n for (const sub of __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").values()) {\n func(sub.subscriber);\n }\n }\n // Event API; sub-classes should override this; any supported\n // event filter will have been munged into an EventFilter\n _getSubscriber(sub) {\n switch (sub.type) {\n case \"debug\":\n case \"network\":\n return new UnmanagedSubscriber(sub.type);\n case \"block\":\n return new PollingBlockSubscriber(this);\n case \"event\":\n return new PollingEventSubscriber(this, sub.filter);\n case \"transaction\":\n return new PollingTransactionSubscriber(this, sub.hash);\n case \"orphan\":\n return new PollingOrphanSubscriber(this, sub.filter);\n }\n throw new Error(`unsupported event: ${sub.type}`);\n }\n _recoverSubscriber(oldSub, newSub) {\n for (const sub of __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").values()) {\n if (sub.subscriber === oldSub) {\n if (sub.started) {\n sub.subscriber.stop();\n }\n sub.subscriber = newSub;\n if (sub.started) {\n newSub.start();\n }\n if (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") != null) {\n newSub.pause(__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\"));\n }\n break;\n }\n }\n }\n async on(event, listener) {\n const sub = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_getSub).call(this, event);\n sub.listeners.push({ listener, once: false });\n if (!sub.started) {\n sub.subscriber.start();\n sub.started = true;\n if (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") != null) {\n sub.subscriber.pause(__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\"));\n }\n }\n return this;\n }\n async once(event, listener) {\n const sub = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_getSub).call(this, event);\n sub.listeners.push({ listener, once: true });\n if (!sub.started) {\n sub.subscriber.start();\n sub.started = true;\n if (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") != null) {\n sub.subscriber.pause(__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\"));\n }\n }\n return this;\n }\n async emit(event, ...args) {\n const sub = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_hasSub).call(this, event, args);\n if (!sub) {\n return false;\n }\n ;\n const count = sub.listeners.length;\n sub.listeners = sub.listeners.filter(({ listener, once }) => {\n const payload = new EventPayload(this, (once ? null : listener), event);\n try {\n listener.call(this, ...args, payload);\n }\n catch (error) { }\n return !once;\n });\n return (count > 0);\n }\n async listenerCount(event) {\n if (event) {\n const sub = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_hasSub).call(this, event);\n if (!sub) {\n return 0;\n }\n return sub.listeners.length;\n }\n let total = 0;\n for (const { listeners } of __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").values()) {\n total += listeners.length;\n }\n return total;\n }\n async listeners(event) {\n if (event) {\n const sub = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_hasSub).call(this, event);\n if (!sub) {\n return [];\n }\n return sub.listeners.map(({ listener }) => listener);\n }\n let result = [];\n for (const { listeners } of __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").values()) {\n result = result.concat(listeners.map(({ listener }) => listener));\n }\n return result;\n }\n async off(event, listener) {\n const sub = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_hasSub).call(this, event);\n if (!sub) {\n return this;\n }\n if (listener) {\n const index = sub.listeners.map(({ listener }) => listener).indexOf(listener);\n if (index >= 0) {\n sub.listeners.splice(index, 1);\n }\n }\n if (!listener || sub.listeners.length === 0) {\n if (sub.started) {\n sub.subscriber.stop();\n }\n __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").delete(sub.tag);\n }\n return this;\n }\n async removeAllListeners(event) {\n if (event) {\n const { tag, started, subscriber } = await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_getSub).call(this, event);\n if (started) {\n subscriber.stop();\n }\n __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").delete(tag);\n }\n else {\n for (const [tag, { started, subscriber }] of __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\")) {\n if (started) {\n subscriber.stop();\n }\n __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").delete(tag);\n }\n }\n return this;\n }\n // Alias for \"on\"\n async addListener(event, listener) {\n return await this.on(event, listener);\n }\n // Alias for \"off\"\n async removeListener(event, listener) {\n return this.off(event, listener);\n }\n // Sub-classes should override this to shutdown any sockets, etc.\n // but MUST call this super.shutdown.\n async shutdown() {\n // Stop all listeners\n this.removeAllListeners();\n // Shut down all tiemrs\n for (const timerId of __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").keys()) {\n this._clearTimeout(timerId);\n }\n }\n get paused() { return (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") != null); }\n pause(dropWhilePaused) {\n if (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") != null) {\n if (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") == !!dropWhilePaused) {\n return;\n }\n return logger.throwError(\"cannot change pause type; resume first\", \"UNSUPPORTED_OPERATION\", {\n operation: \"pause\"\n });\n }\n this._forEachSubscriber((s) => s.pause(dropWhilePaused));\n __classPrivateFieldSet(this, _AbstractProvider_pausedState, !!dropWhilePaused, \"f\");\n for (const timer of __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").values()) {\n // Clear the timer\n if (timer.timer) {\n clearTimeout(timer.timer);\n }\n // Remaining time needed for when we become unpaused\n timer.time = getTime() - timer.time;\n }\n }\n resume() {\n if (__classPrivateFieldGet(this, _AbstractProvider_pausedState, \"f\") == null) {\n return;\n }\n this._forEachSubscriber((s) => s.resume());\n __classPrivateFieldSet(this, _AbstractProvider_pausedState, null, \"f\");\n for (const timer of __classPrivateFieldGet(this, _AbstractProvider_timers, \"f\").values()) {\n // Remaining time when we were paused\n let timeout = timer.time;\n if (timeout < 0) {\n timeout = 0;\n }\n // Start time (in cause paused, so we con compute remaininf time)\n timer.time = getTime();\n // Start the timer\n setTimeout(timer.func, timeout);\n }\n }\n}\n_AbstractProvider_subs = new WeakMap(), _AbstractProvider_plugins = new WeakMap(), _AbstractProvider_pausedState = new WeakMap(), _AbstractProvider_networkPromise = new WeakMap(), _AbstractProvider_anyNetwork = new WeakMap(), _AbstractProvider_performCache = new WeakMap(), _AbstractProvider_nextTimer = new WeakMap(), _AbstractProvider_timers = new WeakMap(), _AbstractProvider_disableCcipRead = new WeakMap(), _AbstractProvider_instances = new WeakSet(), _AbstractProvider_perform = \n// Shares multiple identical requests made during the same 250ms\nasync function _AbstractProvider_perform(req) {\n // Create a tag\n const tag = getTag(req.method, req);\n let perform = __classPrivateFieldGet(this, _AbstractProvider_performCache, \"f\").get(tag);\n if (!perform) {\n perform = this._perform(req);\n __classPrivateFieldGet(this, _AbstractProvider_performCache, \"f\").set(tag, perform);\n setTimeout(() => {\n if (__classPrivateFieldGet(this, _AbstractProvider_performCache, \"f\").get(tag) === perform) {\n __classPrivateFieldGet(this, _AbstractProvider_performCache, \"f\").delete(tag);\n }\n }, 250);\n }\n return await perform;\n}, _AbstractProvider_call = async function _AbstractProvider_call(tx, blockTag, attempt) {\n if (attempt >= MAX_CCIP_REDIRECTS) {\n logger.throwError(\"CCIP read exceeded maximum redirections\", \"OFFCHAIN_FAULT\", {\n reason: \"TOO_MANY_REDIRECTS\",\n transaction: Object.assign({}, tx, { blockTag, enableCcipRead: true })\n });\n }\n const transaction = copyRequest(tx);\n try {\n return hexlify(await this._perform({ method: \"call\", transaction, blockTag }));\n }\n catch (error) {\n // CCIP Read OffchainLookup\n if (!this.disableCcipRead && isCallException(error) && attempt >= 0 && blockTag === \"latest\" && transaction.to != null && dataSlice(error.data, 0, 4) === \"0x556f1830\") {\n const data = error.data;\n const txSender = await resolveAddress(transaction.to, this);\n // Parse the CCIP Read Arguments\n let ccipArgs;\n try {\n ccipArgs = parseOffchainLookup(dataSlice(error.data, 4));\n }\n catch (error) {\n return logger.throwError(error.message, \"OFFCHAIN_FAULT\", {\n reason: \"BAD_DATA\",\n transaction, info: { data }\n });\n }\n // Check the sender of the OffchainLookup matches the transaction\n if (ccipArgs.sender.toLowerCase() !== txSender.toLowerCase()) {\n return logger.throwError(\"CCIP Read sender mismatch\", \"CALL_EXCEPTION\", {\n data, transaction,\n errorSignature: \"OffchainLookup(address,string[],bytes,bytes4,bytes)\",\n errorName: \"OffchainLookup\",\n errorArgs: ccipArgs.errorArgs\n });\n }\n const ccipResult = await this.ccipReadFetch(transaction, ccipArgs.calldata, ccipArgs.urls);\n if (ccipResult == null) {\n return logger.throwError(\"CCIP Read failed to fetch data\", \"OFFCHAIN_FAULT\", {\n reason: \"FETCH_FAILED\",\n transaction, info: { data: error.data, errorArgs: ccipArgs.errorArgs }\n });\n }\n return __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_call).call(this, {\n to: txSender,\n data: concat([\n ccipArgs.selector, encodeBytes([ccipResult, ccipArgs.extraData])\n ]),\n }, blockTag, attempt + 1);\n }\n throw error;\n }\n}, _AbstractProvider_getBlock = async function _AbstractProvider_getBlock(block, includeTransactions) {\n const format = (await this.getNetwork()).formatter;\n if (isHexString(block, 32)) {\n return await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"getBlock\", blockHash: block, includeTransactions\n });\n }\n return await __classPrivateFieldGet(this, _AbstractProvider_instances, \"m\", _AbstractProvider_perform).call(this, {\n method: \"getBlock\", blockTag: format.blockTag(block), includeTransactions\n });\n}, _AbstractProvider_hasSub = async function _AbstractProvider_hasSub(event, emitArgs) {\n let sub = await getSubscription(event, this);\n // This is a log that is removing an existing log; we actually want\n // to emit an orphan event for the removed log\n if (sub.type === \"event\" && emitArgs && emitArgs.length > 0 && emitArgs[0].removed === true) {\n sub = await getSubscription({ orphan: \"drop-log\", log: emitArgs[0] }, this);\n }\n return __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").get(sub.tag) || null;\n}, _AbstractProvider_getSub = async function _AbstractProvider_getSub(event) {\n const subscription = await getSubscription(event, this);\n // Prevent tampering with our tag in any subclass' _getSubscriber\n const tag = subscription.tag;\n let sub = __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").get(tag);\n if (!sub) {\n const subscriber = this._getSubscriber(subscription);\n const addressableMap = new WeakMap();\n const nameMap = new Map();\n sub = { subscriber, tag, addressableMap, nameMap, started: false, listeners: [] };\n __classPrivateFieldGet(this, _AbstractProvider_subs, \"f\").set(tag, sub);\n }\n return sub;\n};\nfunction _parseString(result, start) {\n try {\n const bytes = _parseBytes(result, start);\n if (bytes) {\n return toUtf8String(bytes);\n }\n }\n catch (error) { }\n return null;\n}\nfunction _parseBytes(result, start) {\n if (result === \"0x\") {\n return null;\n }\n try {\n const offset = logger.getNumber(dataSlice(result, start, start + 32));\n const length = logger.getNumber(dataSlice(result, offset, offset + 32));\n return dataSlice(result, offset + 32, offset + 32 + length);\n }\n catch (error) { }\n return null;\n}\nfunction numPad(value) {\n const result = toArray(value);\n if (result.length > 32) {\n 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}\nfunction bytesPad(value) {\n if ((value.length % 32) === 0) {\n return value;\n }\n const result = new Uint8Array(Math.ceil(value.length / 32) * 32);\n result.set(value);\n return result;\n}\nconst empty = new Uint8Array([]);\n// ABI Encodes a series of (bytes, bytes, ...)\nfunction encodeBytes(datas) {\n const result = [];\n let byteCount = 0;\n // Add place-holders for pointers as we add items\n for (let i = 0; i < datas.length; i++) {\n result.push(empty);\n byteCount += 32;\n }\n for (let i = 0; i < datas.length; i++) {\n const data = logger.getBytes(datas[i]);\n // Update the bytes offset\n result[i] = numPad(byteCount);\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 return concat(result);\n}\nconst zeros = \"0x0000000000000000000000000000000000000000000000000000000000000000\";\nfunction parseOffchainLookup(data) {\n const result = {\n sender: \"\", urls: [], calldata: \"\", selector: \"\", extraData: \"\", errorArgs: []\n };\n if (dataLength(data) < 5 * 32) {\n throw new Error(\"insufficient OffchainLookup data\");\n }\n const sender = dataSlice(data, 0, 32);\n if (dataSlice(sender, 0, 12) !== dataSlice(zeros, 0, 12)) {\n throw new Error(\"corrupt OffchainLookup sender\");\n }\n result.sender = dataSlice(sender, 12);\n // Read the URLs from the response\n try {\n const urls = [];\n const urlsOffset = logger.getNumber(dataSlice(data, 32, 64));\n const urlsLength = logger.getNumber(dataSlice(data, urlsOffset, urlsOffset + 32));\n const urlsData = dataSlice(data, urlsOffset + 32);\n for (let u = 0; u < urlsLength; u++) {\n const url = _parseString(urlsData, u * 32);\n if (url == null) {\n throw new Error(\"abort\");\n }\n urls.push(url);\n }\n result.urls = urls;\n }\n catch (error) {\n throw new Error(\"corrupt OffchainLookup urls\");\n }\n // Get the CCIP calldata to forward\n try {\n const calldata = _parseBytes(data, 64);\n if (calldata == null) {\n throw new Error(\"abort\");\n }\n result.calldata = calldata;\n }\n catch (error) {\n throw new Error(\"corrupt OffchainLookup calldata\");\n }\n // Get the callbackSelector (bytes4)\n if (dataSlice(data, 100, 128) !== dataSlice(zeros, 0, 28)) {\n throw new Error(\"corrupt OffchainLookup callbaackSelector\");\n }\n result.selector = dataSlice(data, 96, 100);\n // Get the extra data to send back to the contract as context\n try {\n const extraData = _parseBytes(data, 128);\n if (extraData == null) {\n throw new Error(\"abort\");\n }\n result.extraData = extraData;\n }\n catch (error) {\n throw new Error(\"corrupt OffchainLookup extraData\");\n }\n result.errorArgs = \"sender,urls,calldata,selector,extraData\".split(/,/).map((k) => result[k]);\n return result;\n}\n//# sourceMappingURL=abstract-provider.js.map","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _AbstractSigner_instances, _AbstractSigner_checkProvider, _AbstractSigner_fromify, _VoidSigner_instances, _VoidSigner_throwUnsupported, _WrappedSigner_signer;\nimport { defineProperties, resolveProperties } from \"@ethersproject/properties\";\nimport { Transaction } from \"@ethersproject/transaction\";\nimport { logger } from \"./logger.js\";\nexport class AbstractSigner {\n constructor(provider) {\n _AbstractSigner_instances.add(this);\n defineProperties(this, { provider: (provider || null) });\n }\n async getBalance(blockTag) {\n return __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"getBalance\").getBalanceOf(await this.getAddress(), blockTag);\n }\n async getTransactionCount(blockTag) {\n return __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"getTransactionCount\").getTransactionCountOf(await this.getAddress(), blockTag);\n }\n async estimateGas(tx) {\n return __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"estimateGas\").estimateGas(await __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_fromify).call(this, tx));\n }\n async call(tx) {\n return __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"call\").call(await __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_fromify).call(this, tx));\n }\n async populateTransaction(tx) {\n const provider = __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"populateTransaction\");\n //let pop: Deferrable<TransactionRequest> = Object.assign({ }, tx);\n let pop = Object.assign({}, tx);\n if (pop.to != null) {\n pop.to = provider.resolveName(pop.to).then((to) => {\n if (to == null) {\n return logger.throwArgumentError(\"transaction to ENS name not configured\", \"tx.to\", pop.to);\n }\n return to;\n });\n }\n if (pop.from != null) {\n const from = pop.from;\n pop.from = Promise.all([\n this.getAddress(),\n this.resolveName(from)\n ]).then(([address, from]) => {\n if (!from || address.toLowerCase() !== from.toLowerCase()) {\n return logger.throwArgumentError(\"transaction from mismatch\", \"tx.from\", from);\n }\n return address;\n });\n }\n if (pop.nonce == null) {\n pop.nonce = this.getTransactionCount();\n }\n pop = resolveProperties(pop);\n if (pop.gasLimit == null) {\n pop.gasLimit = provider.estimateGas(pop);\n }\n pop = resolveProperties(pop);\n //@TODO: Copy logic from AbstractSigner in v5\n return await resolveProperties(pop);\n }\n async resolveName(name) {\n const provider = __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"resolveName\");\n return await provider.resolveName(name);\n }\n async sendTransaction(tx) {\n const provider = __classPrivateFieldGet(this, _AbstractSigner_instances, \"m\", _AbstractSigner_checkProvider).call(this, \"sendTransaction\");\n const txObj = Transaction.from(await this.populateTransaction(tx));\n return await provider.broadcastTransaction(await this.signTransaction(txObj));\n }\n}\n_AbstractSigner_instances = new WeakSet(), _AbstractSigner_checkProvider = function _AbstractSigner_checkProvider(operation) {\n if (this.provider) {\n return this.provider;\n }\n return logger.throwError(\"missing provider\", \"UNSUPPORTED_OPERATION\", { operation });\n}, _AbstractSigner_fromify = async function _AbstractSigner_fromify(tx) {\n tx = Object.assign({}, tx);\n const actions = [];\n if (tx.from != null) {\n const from = tx.from;\n actions.push(Promise.all([\n this.getAddress(),\n this.resolveName(from)\n ]).then(([address, from]) => {\n if (!from || address.toLowerCase() !== from.toLowerCase()) {\n logger.throwArgumentError(\"transaction from mismatch\", \"tx.from\", from);\n }\n tx.from = address;\n }));\n }\n await Promise.all(actions);\n return tx;\n};\nexport class VoidSigner extends AbstractSigner {\n constructor(address, provider) {\n super(provider);\n _VoidSigner_instances.add(this);\n defineProperties(this, { address });\n }\n async getAddress() { return this.address; }\n connect(provider) {\n return new VoidSigner(this.address, provider);\n }\n async signTransaction(tx) {\n __classPrivateFieldGet(this, _VoidSigner_instances, \"m\", _VoidSigner_throwUnsupported).call(this, \"transactions\", \"signTransaction\");\n }\n async signMessage(message) {\n __classPrivateFieldGet(this, _VoidSigner_instances, \"m\", _VoidSigner_throwUnsupported).call(this, \"messages\", \"signMessage\");\n }\n async signTypedData(domain, types, value) {\n __classPrivateFieldGet(this, _VoidSigner_instances, \"m\", _VoidSigner_throwUnsupported).call(this, \"typed-data\", \"signTypedData\");\n }\n}\n_VoidSigner_instances = new WeakSet(), _VoidSigner_throwUnsupported = function _VoidSigner_throwUnsupported(suffix, operation) {\n return logger.throwError(`VoidSigner cannot sign ${suffix}`, \"UNSUPPORTED_OPERATION\", {\n operation\n });\n};\nexport class WrappedSigner extends AbstractSigner {\n //get provider(): null | Provider { return this.#signer.provider; }\n constructor(signer) {\n super(signer.provider);\n _WrappedSigner_signer.set(this, void 0);\n __classPrivateFieldSet(this, _WrappedSigner_signer, signer, \"f\");\n }\n async getAddress() {\n return await __classPrivateFieldGet(this, _WrappedSigner_signer, \"f\").getAddress();\n }\n connect(provider) {\n return new WrappedSigner(__classPrivateFieldGet(this, _WrappedSigner_signer, \"f\").connect(provider));\n }\n async signTransaction(tx) {\n return await __classPrivateFieldGet(this, _WrappedSigner_signer, \"f\").signTransaction(tx);\n }\n async sendTransaction(tx) {\n return await __classPrivateFieldGet(this, _WrappedSigner_signer, \"f\").sendTransaction(tx);\n }\n async signMessage(message) {\n return await __classPrivateFieldGet(this, _WrappedSigner_signer, \"f\").signMessage(message);\n }\n async signTypedData(domain, types, value) {\n return await __classPrivateFieldGet(this, _WrappedSigner_signer, \"f\").signTypedData(domain, types, value);\n }\n}\n_WrappedSigner_signer = new WeakMap();\n//# sourceMappingURL=abstract-signer.js.map","// Show the throttle message only once\nconst shown = new Set();\nexport function showThrottleMessage(service) {\n if (shown.has(service)) {\n return;\n }\n shown.add(service);\n console.log(\"========= NOTICE =========\");\n console.log(`Request-Rate Exceeded for ${service} (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//# sourceMappingURL=community.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _FilterIdSubscriber_instances, _FilterIdSubscriber_provider, _FilterIdSubscriber_filterIdPromise, _FilterIdSubscriber_poller, _FilterIdSubscriber_network, _FilterIdSubscriber_poll, _FilterIdSubscriber_teardown, _FilterIdEventSubscriber_event;\nimport { PollingEventSubscriber } from \"./subscriber-polling.js\";\nfunction copy(obj) {\n return JSON.parse(JSON.stringify(obj));\n}\nexport class FilterIdSubscriber {\n constructor(provider) {\n _FilterIdSubscriber_instances.add(this);\n _FilterIdSubscriber_provider.set(this, void 0);\n _FilterIdSubscriber_filterIdPromise.set(this, void 0);\n _FilterIdSubscriber_poller.set(this, void 0);\n _FilterIdSubscriber_network.set(this, void 0);\n __classPrivateFieldSet(this, _FilterIdSubscriber_provider, provider, \"f\");\n __classPrivateFieldSet(this, _FilterIdSubscriber_filterIdPromise, null, \"f\");\n __classPrivateFieldSet(this, _FilterIdSubscriber_poller, __classPrivateFieldGet(this, _FilterIdSubscriber_instances, \"m\", _FilterIdSubscriber_poll).bind(this), \"f\");\n __classPrivateFieldSet(this, _FilterIdSubscriber_network, null, \"f\");\n }\n _subscribe(provider) {\n throw new Error(\"subclasses must override this\");\n }\n _emitResults(provider, result) {\n throw new Error(\"subclasses must override this\");\n }\n _recover(provider) {\n throw new Error(\"subclasses must override this\");\n }\n start() { __classPrivateFieldGet(this, _FilterIdSubscriber_instances, \"m\", _FilterIdSubscriber_poll).call(this, -2); }\n stop() {\n __classPrivateFieldGet(this, _FilterIdSubscriber_instances, \"m\", _FilterIdSubscriber_teardown).call(this);\n __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\").off(\"block\", __classPrivateFieldGet(this, _FilterIdSubscriber_poller, \"f\"));\n }\n pause(dropWhilePaused) {\n if (dropWhilePaused) {\n __classPrivateFieldGet(this, _FilterIdSubscriber_instances, \"m\", _FilterIdSubscriber_teardown).call(this);\n }\n __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\").off(\"block\", __classPrivateFieldGet(this, _FilterIdSubscriber_poller, \"f\"));\n }\n resume() { this.start(); }\n}\n_FilterIdSubscriber_provider = new WeakMap(), _FilterIdSubscriber_filterIdPromise = new WeakMap(), _FilterIdSubscriber_poller = new WeakMap(), _FilterIdSubscriber_network = new WeakMap(), _FilterIdSubscriber_instances = new WeakSet(), _FilterIdSubscriber_poll = async function _FilterIdSubscriber_poll(blockNumber) {\n try {\n if (__classPrivateFieldGet(this, _FilterIdSubscriber_filterIdPromise, \"f\") == null) {\n __classPrivateFieldSet(this, _FilterIdSubscriber_filterIdPromise, this._subscribe(__classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\")), \"f\");\n }\n const filterId = await __classPrivateFieldGet(this, _FilterIdSubscriber_filterIdPromise, \"f\");\n if (filterId == null) {\n __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\")._recoverSubscriber(this, this._recover(__classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\")));\n return;\n }\n const network = await __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\").getNetwork();\n if (!__classPrivateFieldGet(this, _FilterIdSubscriber_network, \"f\")) {\n __classPrivateFieldSet(this, _FilterIdSubscriber_network, network, \"f\");\n }\n if (__classPrivateFieldGet(this, _FilterIdSubscriber_network, \"f\").chainId !== network.chainId) {\n throw new Error(\"chaid changed\");\n }\n const result = await __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\").send(\"eth_getFilterChanges\", [filterId]);\n await this._emitResults(__classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\"), result);\n }\n catch (error) {\n console.log(\"@TODO\", error);\n }\n __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\").once(\"block\", __classPrivateFieldGet(this, _FilterIdSubscriber_poller, \"f\"));\n}, _FilterIdSubscriber_teardown = function _FilterIdSubscriber_teardown() {\n const filterIdPromise = __classPrivateFieldGet(this, _FilterIdSubscriber_filterIdPromise, \"f\");\n if (filterIdPromise) {\n __classPrivateFieldSet(this, _FilterIdSubscriber_filterIdPromise, null, \"f\");\n filterIdPromise.then((filterId) => {\n __classPrivateFieldGet(this, _FilterIdSubscriber_provider, \"f\").send(\"eth_uninstallFilter\", [filterId]);\n });\n }\n};\nexport class FilterIdEventSubscriber extends FilterIdSubscriber {\n constructor(provider, filter) {\n super(provider);\n _FilterIdEventSubscriber_event.set(this, void 0);\n __classPrivateFieldSet(this, _FilterIdEventSubscriber_event, copy(filter), \"f\");\n }\n _recover(provider) {\n return new PollingEventSubscriber(provider, __classPrivateFieldGet(this, _FilterIdEventSubscriber_event, \"f\"));\n }\n async _subscribe(provider) {\n const filterId = await provider.send(\"eth_newFilter\", [__classPrivateFieldGet(this, _FilterIdEventSubscriber_event, \"f\")]);\n console.log(\"____SUB\", filterId);\n return filterId;\n }\n async _emitResults(provider, results) {\n const network = await provider.getNetwork();\n for (const result of results) {\n const log = network.formatter.log(result, provider);\n provider.emit(__classPrivateFieldGet(this, _FilterIdEventSubscriber_event, \"f\"), log);\n }\n }\n}\n_FilterIdEventSubscriber_event = new WeakMap();\nexport class FilterIdPendingSubscriber extends FilterIdSubscriber {\n async _subscribe(provider) {\n return await provider.send(\"eth_newPendingTransactionFilter\", []);\n }\n async _emitResults(provider, results) {\n const network = await provider.getNetwork();\n for (const result of results) {\n provider.emit(\"pending\", network.formatter.hash(result));\n }\n }\n}\n//# sourceMappingURL=subscriber-filterid.js.map","// @TODO:\n// - Add the batching API\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _JsonRpcApiProvider_nextId, _JsonRpcApiProvider_options, _JsonRpcProvider_connect, _JsonRpcProvider_pollingInterval;\n// https://playground.open-rpc.org/?schemaUrl=https://raw.githubusercontent.com/ethereum/eth1.0-apis/assembled-spec/openrpc.json&uiSchema%5BappBar%5D%5Bui:splitView%5D=true&uiSchema%5BappBar%5D%5Bui:input%5D=false&uiSchema%5BappBar%5D%5Bui:examplesDropdown%5D=false\nimport { resolveAddress } from \"@ethersproject/address\";\nimport { hexlify, isHexString, quantity } from \"@ethersproject/bytes\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { TypedDataEncoder } from \"@ethersproject/hash\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { accessListify } from \"@ethersproject/transaction\";\nimport { fetchData, FetchRequest } from \"@ethersproject/web\";\nimport { AbstractProvider, UnmanagedSubscriber } from \"./abstract-provider.js\";\nimport { Network } from \"./network.js\";\nimport { FilterIdEventSubscriber, FilterIdPendingSubscriber } from \"./subscriber-filterid.js\";\nimport { logger } from \"./logger.js\";\nfunction copy(value) {\n return JSON.parse(JSON.stringify(value));\n}\nconst Primitive = \"bigint,boolean,function,number,string,symbol\".split(/,/g);\n//const Methods = \"getAddress,then\".split(/,/g);\nfunction deepCopy(value) {\n if (value == null || Primitive.indexOf(typeof (value)) >= 0) {\n return value;\n }\n // Keep any Addressable\n if (typeof (value.getAddress) === \"function\") {\n return value;\n }\n if (Array.isArray(value)) {\n return (value.map(deepCopy));\n }\n if (typeof (value) === \"object\") {\n return Object.keys(value).reduce((accum, key) => {\n accum[key] = value[key];\n return accum;\n }, {});\n }\n throw new Error(`should not happen: ${value} (${typeof (value)})`);\n}\nfunction getLowerCase(value) {\n if (value) {\n return value.toLowerCase();\n }\n return value;\n}\nfunction isPollable(value) {\n return (value && typeof (value.pollingInterval) === \"number\");\n}\nconst defaultOptions = {\n // Default to use filter ID (the FilterIdSubscriber will\n // fallback onto polling if subscription fails)\n polling: false,\n // Maximum batch size (in bytes)\n batchMaxSize: (1 << 20),\n // How long to wait before dispatching a new batch\n batchStallTime: 250,\n};\n// @TODO: Unchecked Signers\nexport class JsonRpcSigner {\n constructor(provider, address) {\n defineProperties(this, { provider, address });\n }\n connect(provider) {\n return logger.throwError(\"cannot reconnect JsonRpcSigner\", \"UNSUPPORTED_OPERATION\", {\n operation: \"signer.connect\"\n });\n }\n async getAddress() {\n return this.address;\n }\n async getNetwork() {\n return await this.provider.getNetwork();\n }\n async getFeeData() {\n return await this.provider.getFeeData();\n }\n async estimateGas(tx) {\n return await this.provider.estimateGas(tx);\n }\n async call(tx) {\n return await this.provider.call(tx);\n }\n async resolveName(name) {\n return await this.provider.resolveName(name);\n }\n async getBalance(blockTag) {\n return await this.provider.getBalanceOf(this.address);\n }\n async getTransactionCount(blockTag) {\n return await this.provider.getTransactionCountOf(this.address);\n }\n // Returns just the hash of the transaction after sent, which is what\n // the bare JSON-RPC API does;\n async sendUncheckedTransaction(_tx) {\n const tx = deepCopy(_tx);\n const promises = [];\n // Make sure the from matches the sender\n if (tx.from) {\n const _from = tx.from;\n promises.push((async () => {\n const from = await resolveAddress(_from, this.provider);\n if (from == null || from.toLowerCase() !== this.address.toLowerCase()) {\n logger.throwArgumentError(\"from address mismatch\", \"transaction\", _tx);\n }\n tx.from = from;\n })());\n }\n else {\n tx.from = this.address;\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 (tx.gasLimit == null) {\n promises.push((async () => {\n tx.gasLimit = await this.provider.estimateGas(Object.assign(Object.assign({}, tx), { from: this.address }));\n })());\n }\n // The address may be an ENS name or Addressable\n if (tx.to != null) {\n const _to = tx.to;\n promises.push((async () => {\n tx.to = await resolveAddress(_to, this.provider);\n })());\n }\n // Wait until all of our properties are filled in\n if (promises.length) {\n await Promise.all(promises);\n }\n const hexTx = this.provider.getRpcTransaction(tx);\n return this.provider.send(\"eth_sendTransaction\", [hexTx]);\n }\n async sendTransaction(tx) {\n // This cannot be mined any earlier than any recent block\n const blockNumber = await this.provider.getBlockNumber();\n // Send the transaction\n const hash = await this.sendUncheckedTransaction(tx);\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 (new Promise((resolve, reject) => {\n const timeouts = [1000, 100];\n const checkTx = async () => {\n // Try getting the transaction\n const tx = await this.provider.getTransaction(hash);\n if (tx != null) {\n resolve(this.provider._wrapTransaction(tx, hash, blockNumber));\n return;\n }\n // Wait another 4 seconds\n this.provider._setTimeout(() => { checkTx(); }, timeouts.pop() || 4000);\n };\n checkTx();\n }));\n }\n async signTransaction(_tx) {\n const tx = deepCopy(_tx);\n // Make sure the from matches the sender\n if (tx.from) {\n const from = await resolveAddress(tx.from, this.provider);\n if (from == null || from.toLowerCase() !== this.address.toLowerCase()) {\n return logger.throwArgumentError(\"from address mismatch\", \"transaction\", _tx);\n }\n tx.from = from;\n }\n else {\n tx.from = this.address;\n }\n const hexTx = this.provider.getRpcTransaction(tx);\n return await this.provider.send(\"eth_sign_Transaction\", [hexTx]);\n }\n async signMessage(_message) {\n const message = ((typeof (_message) === \"string\") ? toUtf8Bytes(_message) : _message);\n return await this.provider.send(\"personal_sign\", [\n hexlify(message), this.address.toLowerCase()\n ]);\n }\n async signTypedData(domain, types, _value) {\n const value = deepCopy(_value);\n // Populate any ENS names (in-place)\n const populated = await TypedDataEncoder.resolveNames(domain, types, value, async (value) => {\n const address = await resolveAddress(value);\n if (address == null) {\n return logger.throwArgumentError(\"TypedData does not support null address\", \"value\", value);\n }\n return address;\n });\n return await this.provider.send(\"eth_signTypedData_v4\", [\n this.address.toLowerCase(),\n JSON.stringify(TypedDataEncoder.getPayload(populated.domain, types, populated.value))\n ]);\n }\n async unlock(password) {\n return this.provider.send(\"personal_unlockAccount\", [\n this.address.toLowerCase(), password, null\n ]);\n }\n // https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign\n async _legacySignMessage(_message) {\n const message = ((typeof (_message) === \"string\") ? toUtf8Bytes(_message) : _message);\n return await this.provider.send(\"eth_sign\", [\n this.address.toLowerCase(), hexlify(message)\n ]);\n }\n}\nexport class JsonRpcApiProvider extends AbstractProvider {\n constructor(network) {\n super(network);\n _JsonRpcApiProvider_nextId.set(this, void 0);\n _JsonRpcApiProvider_options.set(this, void 0);\n __classPrivateFieldSet(this, _JsonRpcApiProvider_nextId, 1, \"f\");\n __classPrivateFieldSet(this, _JsonRpcApiProvider_options, Object.assign({}, defaultOptions), \"f\");\n }\n _getOptions(key) {\n return __classPrivateFieldGet(this, _JsonRpcApiProvider_options, \"f\")[key];\n }\n _setOptions(options) {\n // Validate all the options\n for (const _key in options) {\n const key = _key;\n const value = options[key];\n if (typeof (value) !== typeof (__classPrivateFieldGet(this, _JsonRpcApiProvider_options, \"f\")[key])) {\n return logger.throwArgumentError(\"invalid option value\", `options.${key}`, value);\n }\n }\n // Update the values\n for (const _key in options) {\n const key = _key;\n __classPrivateFieldGet(this, _JsonRpcApiProvider_options, \"f\")[key] = (options[key]);\n }\n }\n prepareRequest(method, params) {\n var _a, _b;\n return {\n method, params, id: (__classPrivateFieldSet(this, _JsonRpcApiProvider_nextId, (_b = __classPrivateFieldGet(this, _JsonRpcApiProvider_nextId, \"f\"), _a = _b++, _b), \"f\"), _a), jsonrpc: \"2.0\"\n };\n }\n // Sends the payload to the backend\n //async sendPayload(payload: any): Promise<any> {\n // throw new Error(\"sub-class must implement this\");\n //}\n async send(method, params) {\n // @TODO: This should construct and queue the payload\n throw new Error(\"sub-class must implement this\");\n }\n async getSigner(address = 0) {\n const network = await this.getNetwork();\n const accounts = await this.send(\"eth_accounts\", []);\n // Account index\n if (typeof (address) === \"number\") {\n if (address > accounts.length) {\n throw new Error(\"no such account\");\n }\n return new JsonRpcSigner(this, accounts[address]);\n }\n // Account address\n address = network.formatter.address(address);\n for (const account of accounts) {\n if (network.formatter.address(account) === account) {\n return new JsonRpcSigner(this, account);\n }\n }\n throw new Error(\"invalid account\");\n }\n // Sub-classes can override this; it detects the *actual* network we\n // are connected to\n async _detectNetwork() {\n return Network.from(logger.getBigInt(await this._perform({ method: \"chainId\" })));\n }\n _getSubscriber(sub) {\n // Pending Filters aren't availble via polling\n if (sub.type === \"pending\") {\n return new FilterIdPendingSubscriber(this);\n }\n if (sub.type === \"event\") {\n return new FilterIdEventSubscriber(this, sub.filter);\n }\n // Orphaned Logs are handled automatically, by the filter, since\n // logs with removed are emitted by it\n if (sub.type === \"orphan\" && sub.filter.orphan === \"drop-log\") {\n return new UnmanagedSubscriber(\"orphan\");\n }\n return super._getSubscriber(sub);\n }\n getRpcTransaction(tx) {\n const result = {};\n // JSON-RPC now requires numeric values to be \"quantity\" values\n [\"chainId\", \"gasLimit\", \"gasPrice\", \"type\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"nonce\", \"value\"].forEach((key) => {\n if (tx[key] == null) {\n return;\n }\n let dstKey = key;\n if (key === \"gasLimit\") {\n dstKey = \"gas\";\n }\n result[dstKey] = quantity(tx[key]);\n });\n // Make sure addresses and data are lowercase\n [\"from\", \"to\", \"data\"].forEach((key) => {\n if (tx[key] == null) {\n return;\n }\n result[key] = hexlify(tx[key]);\n });\n // Normalize the access list object\n if (tx.accessList) {\n result[\"accessList\"] = accessListify(tx.accessList);\n }\n return result;\n }\n getRpcRequest(req) {\n switch (req.method) {\n case \"chainId\":\n return { method: \"eth_chainId\", args: [] };\n case \"getBlockNumber\":\n return { method: \"eth_blockNumber\", args: [] };\n case \"getGasPrice\":\n return { method: \"eth_gasPrice\", args: [] };\n case \"getBalance\":\n return {\n method: \"eth_getBalance\",\n args: [getLowerCase(req.address), req.blockTag]\n };\n case \"getTransactionCount\":\n return {\n method: \"eth_getTransactionCount\",\n args: [getLowerCase(req.address), req.blockTag]\n };\n case \"getCode\":\n return {\n method: \"eth_getCode\",\n args: [getLowerCase(req.address), req.blockTag]\n };\n case \"getStorageAt\":\n return {\n method: \"eth_getStorageAt\",\n args: [\n getLowerCase(req.address),\n (\"0x\" + req.position.toString(16)),\n req.blockTag\n ]\n };\n case \"sendTransaction\":\n return {\n method: \"eth_sendRawTransaction\",\n args: [req.signedTransaction]\n };\n case \"getBlock\":\n if (\"blockTag\" in req) {\n return {\n method: \"eth_getBlockByNumber\",\n args: [req.blockTag, !!req.includeTransactions]\n };\n }\n else if (\"blockHash\" in req) {\n return {\n method: \"eth_getBlockByHash\",\n args: [req.blockHash, !!req.includeTransactions]\n };\n }\n break;\n case \"getTransaction\":\n return {\n method: \"eth_getTransactionByHash\",\n args: [req.hash]\n };\n case \"getTransactionReceipt\":\n return {\n method: \"eth_getTransactionReceipt\",\n args: [req.hash]\n };\n case \"call\":\n return {\n method: \"eth_call\",\n args: [this.getRpcTransaction(req.transaction), req.blockTag]\n };\n case \"estimateGas\": {\n return {\n method: \"eth_estimateGas\",\n args: [this.getRpcTransaction(req.transaction)]\n };\n }\n case \"getLogs\":\n if (req.filter && req.filter.address != null) {\n if (Array.isArray(req.filter.address)) {\n req.filter.address = req.filter.address.map(getLowerCase);\n }\n else {\n req.filter.address = getLowerCase(req.filter.address);\n }\n }\n return { method: \"eth_getLogs\", args: [req.filter] };\n }\n return null;\n }\n getRpcError(method, args, error) {\n if (method === \"eth_call\") {\n const result = spelunkData(error);\n if (result) {\n // @TODO: Extract errorSignature, errorName, errorArgs, reason if\n // it is Error(string) or Panic(uint25)\n return logger.makeError(\"execution reverted during JSON-RPC call\", \"CALL_EXCEPTION\", {\n data: result.data,\n transaction: args[0]\n });\n }\n return logger.makeError(\"missing revert data during JSON-RPC call\", \"CALL_EXCEPTION\", {\n data: \"0x\", transaction: args[0], info: { error }\n });\n }\n if (method === \"eth_estimateGas\") {\n }\n const message = JSON.stringify(spelunkMessage(error));\n if (message.match(/insufficient funds|base fee exceeds gas limit/)) {\n return logger.makeError(\"insufficient funds for intrinsic transaction cost\", \"INSUFFICIENT_FUNDS\", {\n transaction: args[0]\n });\n }\n if (message.match(/nonce/) && message.match(/too low/)) {\n return logger.makeError(\"nonce has already been used\", \"NONCE_EXPIRED\", {\n transaction: args[0]\n });\n }\n // \"replacement transaction underpriced\"\n if (message.match(/replacement transaction/) && message.match(/underpriced/)) {\n return logger.makeError(\"replacement fee too low\", \"REPLACEMENT_UNDERPRICED\", {\n transaction: args[0]\n });\n }\n if (message.match(/only replay-protected/)) {\n return logger.makeError(\"legacy pre-eip-155 transactions not supported\", \"UNSUPPORTED_OPERATION\", {\n operation: method, info: { transaction: args[0] }\n });\n }\n if (method === \"estimateGas\" && message.match(/gas required exceeds allowance|always failing transaction|execution reverted/)) {\n return logger.makeError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", \"UNPREDICTABLE_GAS_LIMIT\", {\n transaction: args[0]\n });\n }\n return error;\n }\n async _perform(req) {\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 (req.method === \"call\" || req.method === \"estimateGas\") {\n let tx = req.transaction;\n if (tx && tx.type != null && logger.getBigInt(tx.type)) {\n // If there are no EIP-1559 properties, it might be non-EIP-a559\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 req = Object.assign({}, req, {\n transaction: Object.assign({}, tx, { type: undefined })\n });\n }\n }\n }\n }\n const request = this.getRpcRequest(req);\n if (request != null) {\n this.emit(\"debug\", { type: \"sendRequest\", request });\n try {\n const result = await this.send(request.method, request.args);\n //console.log(\"RR\", result);\n this.emit(\"debug\", { type: \"getResponse\", result });\n return result;\n }\n catch (error) {\n this.emit(\"debug\", { type: \"getError\", error });\n throw this.getRpcError(request.method, request.args, error);\n }\n }\n return super._perform(req);\n }\n}\n_JsonRpcApiProvider_nextId = new WeakMap(), _JsonRpcApiProvider_options = new WeakMap();\nexport class JsonRpcProvider extends JsonRpcApiProvider {\n constructor(url, network) {\n if (url == null) {\n url = \"http:/\\/localhost:8545\";\n }\n super(network);\n _JsonRpcProvider_connect.set(this, void 0);\n _JsonRpcProvider_pollingInterval.set(this, void 0);\n if (typeof (url) === \"string\") {\n __classPrivateFieldSet(this, _JsonRpcProvider_connect, { request: new FetchRequest(url) }, \"f\");\n }\n else {\n __classPrivateFieldSet(this, _JsonRpcProvider_connect, Object.assign({}, url), \"f\");\n __classPrivateFieldGet(this, _JsonRpcProvider_connect, \"f\").request = __classPrivateFieldGet(this, _JsonRpcProvider_connect, \"f\").request.clone();\n }\n __classPrivateFieldSet(this, _JsonRpcProvider_pollingInterval, 4000, \"f\");\n }\n async send(method, params) {\n params = copy(params);\n // Configure a POST connection for the requested method\n const connection = Object.assign({}, __classPrivateFieldGet(this, _JsonRpcProvider_connect, \"f\"));\n connection.request = connection.request.clone();\n connection.request.body = this.prepareRequest(method, params);\n const response = await fetchData(connection);\n response.assertOk();\n const result = response.bodyJson;\n if (\"error\" in result) {\n return logger.throwError(\"error from JSON-RPC\", \"UNKNOWN_ERROR\", {\n result\n });\n }\n return result.result;\n }\n get pollingInterval() { return __classPrivateFieldGet(this, _JsonRpcProvider_pollingInterval, \"f\"); }\n set pollingInterval(value) {\n if (!Number.isInteger(value) || value < 0) {\n throw new Error(\"invalid interval\");\n }\n __classPrivateFieldSet(this, _JsonRpcProvider_pollingInterval, value, \"f\");\n this._forEachSubscriber((sub) => {\n if (isPollable(sub)) {\n sub.pollingInterval = __classPrivateFieldGet(this, _JsonRpcProvider_pollingInterval, \"f\");\n }\n });\n }\n}\n_JsonRpcProvider_connect = new WeakMap(), _JsonRpcProvider_pollingInterval = new WeakMap();\n// This class should only be used when it is not possible for the\n// underlying network to change, such as with INFURA. If you are\n// using MetaMask or some other client which allows users to change\n// their network DO NOT USE THIS. Bad things will happen.\nexport class StaticJsonRpcProvider extends JsonRpcProvider {\n constructor(url, network) {\n super(url, network);\n defineProperties(this, { network });\n }\n async _detectNetwork() {\n return this.network;\n }\n}\nfunction spelunkData(value) {\n if (value == null) {\n return null;\n }\n // These *are* the droids we're looking for.\n if (typeof (value.message) === \"string\" && value.message.match(\"reverted\") && isHexString(value.data)) {\n return { message: value.message, data: value.data };\n }\n // Spelunk further...\n if (typeof (value) === \"object\") {\n for (const key in value) {\n const result = spelunkData(value[key]);\n if (result) {\n return result;\n }\n }\n return null;\n }\n // Might be a JSON string we can further descend...\n if (typeof (value) === \"string\") {\n try {\n return spelunkData(JSON.parse(value));\n }\n catch (error) { }\n }\n return null;\n}\nfunction _spelunkMessage(value, result) {\n if (value == null) {\n return;\n }\n // These *are* the droids we're looking for.\n if (typeof (value.message) === \"string\") {\n result.push(value.message);\n }\n // Spelunk further...\n if (typeof (value) === \"object\") {\n for (const key in value) {\n _spelunkMessage(value[key], result);\n }\n }\n // Might be a JSON string we can further descend...\n if (typeof (value) === \"string\") {\n try {\n return _spelunkMessage(JSON.parse(value), result);\n }\n catch (error) { }\n }\n}\nfunction spelunkMessage(value) {\n const result = [];\n _spelunkMessage(value, result);\n return result;\n}\n//# sourceMappingURL=provider-jsonrpc.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { FetchRequest } from \"@ethersproject/web\";\nimport { showThrottleMessage } from \"./community.js\";\nimport { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { StaticJsonRpcProvider } from \"./provider-jsonrpc.js\";\nconst defaultApiKey = \"9f7d929b018cdffb338517efa06f58359e86ff1ffd350bc889738523659e7972\";\nfunction getHost(name) {\n switch (name) {\n case \"homestead\":\n return \"rpc.ankr.com/eth\";\n case \"matic\":\n return \"rpc.ankr.com/polygon\";\n case \"arbitrum\":\n return \"rpc.ankr.com/arbitrum\";\n }\n return logger.throwArgumentError(\"unsupported network\", \"network\", name);\n}\nexport class AnkrProvider extends StaticJsonRpcProvider {\n constructor(_network = \"homestead\", apiKey) {\n const network = Network.from(_network);\n if (apiKey == null) {\n apiKey = defaultApiKey;\n }\n const connection = AnkrProvider.getConnection(network, apiKey);\n super(connection, network);\n defineProperties(this, { apiKey });\n // Ankr does not support filterId, so we force polling\n super._setOptions({ polling: true });\n }\n _getProvider(chainId) {\n try {\n return new AnkrProvider(chainId, this.apiKey);\n }\n catch (error) { }\n return super._getProvider(chainId);\n }\n static getConnection(network, apiKey) {\n if (apiKey == null) {\n apiKey = defaultApiKey;\n }\n const request = new FetchRequest(`https:/\\/${getHost(network.name)}/${apiKey}`);\n request.allowGzip = true;\n const throttleRetry = async (request, response, attempt) => {\n if (apiKey === defaultApiKey) {\n showThrottleMessage(\"AnkrProvider\");\n }\n return true;\n };\n return { request, throttleRetry };\n }\n isCommunityResource() {\n return (this.apiKey === defaultApiKey);\n }\n}\n//# sourceMappingURL=provider-ankr.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { FetchRequest } from \"@ethersproject/web\";\nimport { showThrottleMessage } from \"./community.js\";\nimport { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { StaticJsonRpcProvider } from \"./provider-jsonrpc.js\";\nconst defaultApiKey = \"_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC\";\nfunction getHost(name) {\n switch (name) {\n case \"homestead\":\n return \"eth-mainnet.alchemyapi.io\";\n case \"ropsten\":\n return \"eth-ropsten.alchemyapi.io\";\n case \"rinkeby\":\n return \"eth-rinkeby.alchemyapi.io\";\n case \"goerli\":\n return \"eth-goerli.alchemyapi.io\";\n case \"kovan\":\n return \"eth-kovan.alchemyapi.io\";\n case \"matic\":\n return \"polygon-mainnet.g.alchemy.com\";\n case \"maticmum\":\n return \"polygon-mumbai.g.alchemy.com\";\n case \"arbitrum\":\n return \"arb-mainnet.g.alchemy.com\";\n case \"arbitrum-rinkeby\":\n return \"arb-rinkeby.g.alchemy.com\";\n case \"optimism\":\n return \"opt-mainnet.g.alchemy.com\";\n case \"optimism-kovan\":\n return \"opt-kovan.g.alchemy.com\";\n }\n return logger.throwArgumentError(\"unsupported network\", \"network\", name);\n}\nexport class AlchemyProvider extends StaticJsonRpcProvider {\n constructor(_network = \"homestead\", apiKey) {\n const network = Network.from(_network);\n if (apiKey == null) {\n apiKey = defaultApiKey;\n }\n super(AlchemyProvider.getConnection(network, apiKey), network);\n defineProperties(this, { apiKey });\n }\n _getProvider(chainId) {\n try {\n return new AlchemyProvider(chainId, this.apiKey);\n }\n catch (error) { }\n return super._getProvider(chainId);\n }\n isCommunityResource() {\n return (this.apiKey === defaultApiKey);\n }\n static getConnection(network, apiKey) {\n if (apiKey == null) {\n apiKey = defaultApiKey;\n }\n const request = new FetchRequest(`https:/\\/${getHost(network.name)}/v2/${apiKey}`);\n request.allowGzip = true;\n const throttleRetry = async (request, response, attempt) => {\n if (apiKey === defaultApiKey) {\n showThrottleMessage(\"alchemy\");\n }\n return true;\n };\n return { request, throttleRetry };\n }\n}\n//# sourceMappingURL=provider-alchemy.js.map","import { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { StaticJsonRpcProvider } from \"./provider-jsonrpc.js\";\nexport class CloudflareProvider extends StaticJsonRpcProvider {\n constructor(_network = \"homestead\") {\n const network = Network.from(_network);\n if (network.name !== \"homestead\") {\n return logger.throwArgumentError(\"unsupported network\", \"network\", _network);\n }\n super(\"https:/\\/cloudflare-eth.com/\", network);\n }\n}\n//# sourceMappingURL=provider-cloudflare.js.map","import { hexlify, isHexString, quantity } from \"@ethersproject/bytes\";\nimport { isError } from \"@ethersproject/logger\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { toUtf8String } from \"@ethersproject/strings\";\nimport { fetchData, FetchRequest } from \"@ethersproject/web\";\nif (false) {\n console.log(isHexString, isError);\n} // @TODO\nimport { AbstractProvider } from \"./abstract-provider.js\";\nimport { Network } from \"./network.js\";\nimport { NetworkPlugin } from \"./plugins-network.js\";\nimport { logger } from \"./logger.js\";\nconst defaultApiKey = \"9D13ZE7XSBTJ94N9BNJ2MA33VMAY2YPIRB\";\nconst EtherscanPluginId = \"org.ethers.plugins.etherscan\";\nexport class EtherscanPlugin extends NetworkPlugin {\n constructor(baseUrl, communityApiKey) {\n super(EtherscanPluginId);\n //if (communityApiKey == null) { communityApiKey = null; }\n defineProperties(this, { baseUrl, communityApiKey });\n }\n clone() {\n return new EtherscanPlugin(this.baseUrl, this.communityApiKey);\n }\n}\nexport class EtherscanProvider extends AbstractProvider {\n constructor(_network, apiKey) {\n super();\n const network = Network.from(_network);\n if (apiKey == null) {\n const plugin = network.getPlugin(EtherscanPluginId);\n if (plugin) {\n apiKey = plugin.communityApiKey;\n }\n else {\n apiKey = defaultApiKey;\n }\n }\n defineProperties(this, { apiKey, network });\n // Test that the network is supported by Etherscan\n this.getBaseUrl();\n }\n getBaseUrl() {\n const plugin = this.network.getPlugin(EtherscanPluginId);\n if (plugin) {\n return plugin.baseUrl;\n }\n switch (this.network.name) {\n case \"homestead\":\n return \"https:/\\/api.etherscan.io\";\n case \"ropsten\":\n return \"https:/\\/api-ropsten.etherscan.io\";\n case \"rinkeby\":\n return \"https:/\\/api-rinkeby.etherscan.io\";\n case \"kovan\":\n return \"https:/\\/api-kovan.etherscan.io\";\n case \"goerli\":\n return \"https:/\\/api-goerli.etherscan.io\";\n default:\n }\n return logger.throwArgumentError(\"unsupported network\", \"network\", this.network);\n }\n getUrl(module, params) {\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.getBaseUrl()}/api?module=${module}${query}${apiKey}`;\n }\n getPostUrl() {\n return `${this.getBaseUrl()}/api`;\n }\n getPostData(module, params) {\n params.module = module;\n params.apikey = this.apiKey;\n return params;\n }\n async detectNetwork() {\n return this.network;\n }\n async fetch(module, params, post) {\n const url = (post ? this.getPostUrl() : this.getUrl(module, params));\n const payload = (post ? this.getPostData(module, params) : null);\n /*\n this.emit(\"debug\", {\n action: \"request\",\n request: url,\n provider: this\n });\n */\n const request = new FetchRequest(url);\n const connection = {\n request,\n throttleSlotInterval: 1000,\n processResponse: async (request, response) => {\n const result = response.hasBody() ? JSON.parse(toUtf8String(response.body)) : {};\n const throttle = ((typeof (result.result) === \"string\") ? result.result : \"\").toLowerCase().indexOf(\"rate limit\") >= 0;\n if (module === \"proxy\") {\n // This JSON response indicates we are being throttled\n if (result && result.status == 0 && result.message == \"NOTOK\" && throttle) {\n response.throwThrottleError(result.result);\n }\n }\n else {\n if (throttle) {\n response.throwThrottleError(result.result);\n }\n }\n return response;\n },\n };\n if (payload) {\n request.setHeader(\"content-type\", \"application/x-www-form-urlencoded; charset=UTF-8\");\n request.body = Object.keys(payload).map((k) => `${k}=${payload[k]}`).join(\"&\");\n }\n const response = await fetchData(connection);\n response.assertOk();\n if (!response.hasBody()) {\n throw new Error();\n }\n /*\n this.emit(\"debug\", {\n action: \"response\",\n request: url,\n response: deepCopy(result),\n provider: this\n });\n */\n const result = JSON.parse(toUtf8String(response.body));\n if (module === \"proxy\") {\n if (result.jsonrpc != \"2.0\") {\n // @TODO: not any\n const error = new Error(\"invalid response\");\n error.result = JSON.stringify(result);\n throw error;\n }\n if (result.error) {\n // @TODO: not any\n const error = new Error(result.error.message || \"unknown error\");\n if (result.error.code) {\n error.code = result.error.code;\n }\n if (result.error.data) {\n error.data = result.error.data;\n }\n throw error;\n }\n return result.result;\n }\n else {\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 if (result.status != 1 || result.message != \"OK\") {\n const error = 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 return result.result;\n }\n }\n // The transaction has already been sanitized by the calls in Provider\n _getTransactionPostData(transaction) {\n const result = {};\n for (let key in transaction) {\n if (transaction[key] == null) {\n continue;\n }\n let value = transaction[key];\n if (key === \"type\" && value === 0) {\n continue;\n }\n // Quantity-types require no leading zero, unless 0\n if ({ type: true, gasLimit: true, gasPrice: true, maxFeePerGs: true, maxPriorityFeePerGas: true, nonce: true, value: true }[key]) {\n value = quantity(hexlify(value));\n }\n else if (key === \"accessList\") {\n value = \"[\" + this.network.formatter.accessList(value).map((set) => {\n return `{address:\"${set.address}\",storageKeys:[\"${set.storageKeys.join('\",\"')}\"]}`;\n }).join(\",\") + \"]\";\n }\n else {\n value = hexlify(value);\n }\n result[key] = value;\n }\n return result;\n }\n _checkError(req, error, transaction) {\n /*\n let body = \"\";\n if (isError(error, Logger.Errors.SERVER_ERROR) && error.response && error.response.hasBody()) {\n body = toUtf8String(error.response.body);\n }\n console.log(body);\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\" && body) {\n \n // Etherscan keeps changing their string\n if (body.match(/reverted/i) || body.match(/VM execution error/i)) {\n \n // Etherscan prefixes the data like \"Reverted 0x1234\"\n let data = e.data;\n if (data) { data = \"0x\" + data.replace(/^.*0x/i, \"\"); }\n if (!isHexString(data)) { data = \"0x\"; }\n \n logger.throwError(\"call exception\", Logger.Errors.CALL_EXCEPTION, {\n error, data\n });\n }\n }\n \n // Get the message from any nested error structure\n let message = error.message;\n if (isError(error, 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\n // 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, transaction, info: { method }\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, transaction, info: { method }\n });\n }\n \n // \"Transaction gas price is too low. There is another transaction with\n // 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, transaction, info: { method }\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, transaction, info: { method }\n });\n }\n */\n throw error;\n }\n async _detectNetwork() {\n return this.network;\n }\n async _perform(req) {\n switch (req.method) {\n case \"chainId\":\n return this.network.chainId;\n case \"getBlockNumber\":\n return this.fetch(\"proxy\", { action: \"eth_blockNumber\" });\n case \"getGasPrice\":\n return this.fetch(\"proxy\", { action: \"eth_gasPrice\" });\n case \"getBalance\":\n // Returns base-10 result\n return this.fetch(\"account\", {\n action: \"balance\",\n address: req.address,\n tag: req.blockTag\n });\n case \"getTransactionCount\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionCount\",\n address: req.address,\n tag: req.blockTag\n });\n case \"getCode\":\n return this.fetch(\"proxy\", {\n action: \"eth_getCode\",\n address: req.address,\n tag: req.blockTag\n });\n case \"getStorageAt\":\n return this.fetch(\"proxy\", {\n action: \"eth_getStorageAt\",\n address: req.address,\n position: req.position,\n tag: req.blockTag\n });\n case \"sendTransaction\":\n return this.fetch(\"proxy\", {\n action: \"eth_sendRawTransaction\",\n hex: req.signedTransaction\n }, true).catch((error) => {\n return this._checkError(req, error, req.signedTransaction);\n });\n case \"getBlock\":\n if (\"blockTag\" in req) {\n return this.fetch(\"proxy\", {\n action: \"eth_getBlockByNumber\",\n tag: req.blockTag,\n boolean: (req.includeTransactions ? \"true\" : \"false\")\n });\n }\n return logger.throwError(\"getBlock by blockHash not supported by Etherscan\", \"UNSUPPORTED_OPERATION\", {\n operation: \"getBlock(blockHash)\"\n });\n case \"getTransaction\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionByHash\",\n txhash: req.hash\n });\n case \"getTransactionReceipt\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionReceipt\",\n txhash: req.hash\n });\n case \"call\": {\n if (req.blockTag !== \"latest\") {\n throw new Error(\"EtherscanProvider does not support blockTag for call\");\n }\n const postData = this._getTransactionPostData(req.transaction);\n postData.module = \"proxy\";\n postData.action = \"eth_call\";\n try {\n return await this.fetch(\"proxy\", postData, true);\n }\n catch (error) {\n return this._checkError(req, error, req.transaction);\n }\n }\n case \"estimateGas\": {\n const postData = this._getTransactionPostData(req.transaction);\n postData.module = \"proxy\";\n postData.action = \"eth_estimateGas\";\n try {\n return await this.fetch(\"proxy\", postData, true);\n }\n catch (error) {\n return this._checkError(req, error, req.transaction);\n }\n }\n /*\n case \"getLogs\": {\n // Needs to complain if more than one address is passed in\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 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 \n log.blockHash = blocks[log.blockNumber];\n }\n \n return logs;\n }\n */\n default:\n break;\n }\n return super._perform(req);\n }\n async getNetwork() {\n return this.network;\n }\n async getEtherPrice() {\n if (this.network.name !== \"homestead\") {\n return 0.0;\n }\n return parseFloat((await this.fetch(\"stats\", { action: \"ethprice\" })).ethusd);\n }\n isCommunityResource() {\n const plugin = this.network.getPlugin(EtherscanPluginId);\n if (plugin) {\n return (plugin.communityApiKey === this.apiKey);\n }\n return (defaultApiKey === this.apiKey);\n }\n}\n/*\n(async function() {\n const provider = new EtherscanProvider();\n console.log(provider);\n console.log(await provider.getBlockNumber());\n / *\n provider.on(\"block\", (b) => {\n console.log(\"BB\", b);\n });\n console.log(await provider.getTransactionReceipt(\"0xa5ded92f548e9f362192f9ab7e5b3fbc9b5a919a868e29247f177d49ce38de6e\"));\n\n provider.once(\"0xa5ded92f548e9f362192f9ab7e5b3fbc9b5a919a868e29247f177d49ce38de6e\", (tx) => {\n console.log(\"TT\", tx);\n });\n * /\n try {\n console.log(await provider.getBlock(100));\n } catch (error) {\n console.log(error);\n }\n\n try {\n console.log(await provider.getBlock(13821768));\n } catch (error) {\n console.log(error);\n }\n\n})();\n*/\n//# sourceMappingURL=provider-etherscan.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { FetchRequest } from \"@ethersproject/web\";\nimport { showThrottleMessage } from \"./community.js\";\nimport { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { StaticJsonRpcProvider } from \"./provider-jsonrpc.js\";\nconst defaultProjectId = \"84842078b09946638c03157f83405213\";\nfunction getHost(name) {\n switch (name) {\n case \"homestead\":\n return \"mainnet.infura.io\";\n case \"ropsten\":\n return \"ropsten.infura.io\";\n case \"rinkeby\":\n return \"rinkeby.infura.io\";\n case \"kovan\":\n return \"kovan.infura.io\";\n case \"goerli\":\n return \"goerli.infura.io\";\n case \"matic\":\n return \"polygon-mainnet.infura.io\";\n case \"maticmum\":\n return \"polygon-mumbai.infura.io\";\n case \"optimism\":\n return \"optimism-mainnet.infura.io\";\n case \"optimism-kovan\":\n return \"optimism-kovan.infura.io\";\n case \"arbitrum\":\n return \"arbitrum-mainnet.infura.io\";\n case \"arbitrum-rinkeby\":\n return \"arbitrum-rinkeby.infura.io\";\n }\n return logger.throwArgumentError(\"unsupported network\", \"network\", name);\n}\nexport class InfuraProvider extends StaticJsonRpcProvider {\n constructor(_network = \"homestead\", projectId, projectSecret) {\n const network = Network.from(_network);\n if (projectId == null) {\n projectId = defaultProjectId;\n }\n if (projectSecret == null) {\n projectSecret = null;\n }\n const connection = InfuraProvider.getConnection(network, projectId, projectSecret);\n super(connection, network);\n defineProperties(this, { projectId, projectSecret });\n }\n _getProvider(chainId) {\n try {\n return new InfuraProvider(chainId, this.projectId, this.projectSecret);\n }\n catch (error) { }\n return super._getProvider(chainId);\n }\n static getConnection(network, projectId, projectSecret) {\n if (projectId == null) {\n projectId = defaultProjectId;\n }\n if (projectSecret == null) {\n projectSecret = null;\n }\n const request = new FetchRequest(`https:/\\/${getHost(network.name)}/v3/${projectId}`);\n request.allowGzip = true;\n if (projectSecret) {\n request.setCredentials(\"\", projectSecret);\n }\n const throttleRetry = async (request, response, attempt) => {\n if (projectId === defaultProjectId) {\n showThrottleMessage(\"InfuraProvider\");\n }\n return true;\n };\n return { request, throttleRetry };\n }\n isCommunityResource() {\n return (this.projectId === defaultProjectId);\n }\n}\n//# sourceMappingURL=provider-infura.js.map","import { defineProperties } from \"@ethersproject/properties\";\nimport { FetchRequest } from \"@ethersproject/web\";\nimport { showThrottleMessage } from \"./community.js\";\nimport { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { StaticJsonRpcProvider } from \"./provider-jsonrpc.js\";\n// These are load-balancer-based application IDs\nconst defaultAppIds = {\n homestead: \"6004bcd10040261633ade990\",\n ropsten: \"6004bd4d0040261633ade991\",\n rinkeby: \"6004bda20040261633ade994\",\n goerli: \"6004bd860040261633ade992\",\n};\nfunction getHost(name) {\n switch (name) {\n case \"homestead\":\n return \"eth-mainnet.gateway.pokt.network\";\n case \"ropsten\":\n return \"eth-ropsten.gateway.pokt.network\";\n case \"rinkeby\":\n return \"eth-rinkeby.gateway.pokt.network\";\n case \"goerli\":\n return \"eth-goerli.gateway.pokt.network\";\n }\n return logger.throwArgumentError(\"unsupported network\", \"network\", name);\n}\nfunction normalizeApiKey(network, _appId, applicationSecretKey, loadBalancer) {\n loadBalancer = !!loadBalancer;\n let community = false;\n let applicationId = _appId;\n if (applicationId == null) {\n applicationId = defaultAppIds[network.name];\n if (applicationId == null) {\n logger.throwArgumentError(\"network does not support default applicationId\", \"applicationId\", _appId);\n }\n loadBalancer = true;\n community = true;\n }\n else if (applicationId === defaultAppIds[network.name]) {\n loadBalancer = true;\n community = true;\n }\n if (applicationSecretKey == null) {\n applicationSecretKey = null;\n }\n return { applicationId, applicationSecretKey, community, loadBalancer };\n}\nexport class PocketProvider extends StaticJsonRpcProvider {\n constructor(_network = \"homestead\", _appId, _secretKey, _loadBalancer) {\n const network = Network.from(_network);\n const { applicationId, applicationSecretKey, loadBalancer } = normalizeApiKey(network, _appId, _secretKey, _loadBalancer);\n const connection = PocketProvider.getConnection(network, applicationId, applicationSecretKey, loadBalancer);\n super(connection, network);\n defineProperties(this, { applicationId, applicationSecretKey, loadBalancer });\n }\n static getConnection(network, _appId, _secretKey, _loadBalancer) {\n const { applicationId, applicationSecretKey, community, loadBalancer } = normalizeApiKey(network, _appId, _secretKey, _loadBalancer);\n let url = `https:/\\/${getHost(network.name)}/v1/`;\n if (loadBalancer) {\n url += \"lb/\";\n }\n url += applicationId;\n const request = new FetchRequest(url);\n request.allowGzip = true;\n if (applicationSecretKey) {\n request.setCredentials(\"\", applicationSecretKey);\n }\n const throttleRetry = async (request, response, attempt) => {\n if (community) {\n showThrottleMessage(\"PocketProvider\");\n }\n return true;\n };\n return { request, throttleRetry };\n }\n isCommunityResource() {\n return (this.applicationId === defaultAppIds[this.network.name]);\n }\n}\n//# sourceMappingURL=provider-pocket.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _FallbackProvider_instances, _FallbackProvider_configs, _FallbackProvider_height, _FallbackProvider_initialSyncPromise, _FallbackProvider_getNextConfig, _FallbackProvider_addRunner, _FallbackProvider_initialSync, _FallbackProvider_checkQuorum, _FallbackProvider_waitForQuorum;\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { AbstractProvider } from \"./abstract-provider.js\";\nimport { logger } from \"./logger.js\";\nimport { Network } from \"./network.js\";\nimport { shuffle } from \"./shuffle.js\";\n//const BN_0 = BigInt(\"0\");\nconst BN_1 = BigInt(\"1\");\nconst BN_2 = BigInt(\"2\");\nfunction stall(duration) {\n return new Promise((resolve) => { setTimeout(resolve, duration); });\n}\nfunction getTime() { return (new Date()).getTime(); }\n;\nconst defaultConfig = { stallTimeout: 400, priority: 1, weight: 1 };\nconst defaultState = {\n blockNumber: -2, requests: 0, lateResponses: 0, errorResponses: 0,\n outOfSync: -1, unsupportedEvents: 0, rollingDuration: 0, score: 0,\n _network: null, _updateNumber: null, _totalTime: 0\n};\nasync function waitForSync(config, blockNumber) {\n while (config.blockNumber < 0 || config.blockNumber < blockNumber) {\n if (!config._updateNumber) {\n config._updateNumber = (async () => {\n const blockNumber = await config.provider.getBlockNumber();\n if (blockNumber > config.blockNumber) {\n config.blockNumber = blockNumber;\n }\n config._updateNumber = null;\n })();\n }\n await config._updateNumber;\n config.outOfSync++;\n }\n}\n// Normalizes a result to a string that can be used to compare against\n// other results using normal string equality\nfunction normalize(network, value, req) {\n switch (req.method) {\n case \"chainId\":\n return logger.getBigInt(value).toString();\n case \"getBlockNumber\":\n return logger.getNumber(value).toString();\n case \"getGasPrice\":\n return logger.getBigInt(value).toString();\n case \"getBalance\":\n return logger.getBigInt(value).toString();\n case \"getTransactionCount\":\n return logger.getNumber(value).toString();\n case \"getCode\":\n return hexlify(value);\n case \"getStorageAt\":\n return hexlify(value);\n case \"getBlock\":\n if (req.includeTransactions) {\n return JSON.stringify(network.formatter.blockWithTransactions(value));\n }\n return JSON.stringify(network.formatter.block(value));\n case \"getTransaction\":\n return JSON.stringify(network.formatter.transactionResponse(value));\n case \"getTransactionReceipt\":\n return JSON.stringify(network.formatter.receipt(value));\n case \"call\":\n return hexlify(value);\n case \"estimateGas\":\n return logger.getBigInt(value).toString();\n case \"getLogs\":\n return JSON.stringify(value.map((v) => network.formatter.log(v)));\n }\n return logger.throwError(\"unsupported method\", \"UNSUPPORTED_OPERATION\", {\n operation: `_perform(${JSON.stringify(req.method)})`\n });\n}\n// This strategy picks the highest wieght result, as long as the weight is\n// equal to or greater than quorum\nfunction checkQuorum(quorum, results) {\n const tally = new Map();\n for (const { result, normal, weight } of results) {\n const t = tally.get(normal) || { result, weight: 0 };\n t.weight += weight;\n tally.set(normal, t);\n }\n let bestWeight = 0;\n let bestResult = undefined;\n for (const { weight, result } of tally.values()) {\n if (weight >= quorum && weight > bestWeight) {\n bestWeight = weight;\n bestResult = result;\n }\n }\n return bestResult;\n}\n/*\nfunction getMean(results: Array<TallyResult>): bigint {\n const total = results.reduce((a, r) => (a + BigInt(r.result)), BN_0);\n return total / BigInt(results.length);\n}\n*/\nfunction getMedian(results) {\n // Get the sorted values\n const values = results.map((r) => BigInt(r.result));\n values.sort((a, b) => ((a < b) ? -1 : (b > a) ? 1 : 0));\n const mid = values.length / 2;\n // Odd-length; take the middle value\n if (values.length % 2) {\n return values[mid];\n }\n // Even length; take the ceiling of the mean of the center two values\n return (values[mid - 1] + values[mid] + BN_1) / BN_2;\n}\nfunction getFuzzyMode(quorum, results) {\n if (quorum === 1) {\n return logger.getNumber(getMedian(results), \"%internal\");\n }\n const tally = new Map();\n const add = (result, weight) => {\n const t = tally.get(result) || { result, weight: 0 };\n t.weight += weight;\n tally.set(result, t);\n };\n for (const { weight, result } of results) {\n const r = logger.getNumber(result);\n add(r - 1, weight);\n add(r, weight);\n add(r + 1, weight);\n }\n let bestWeight = 0;\n let bestResult = undefined;\n for (const { weight, result } of tally.values()) {\n // Use this result, if this result meets quorum and has either:\n // - a better weight\n // - or equal weight, but the result is larger\n if (weight >= quorum && (weight > bestWeight || (bestResult != null && weight === bestWeight && result > bestResult))) {\n bestWeight = weight;\n bestResult = result;\n }\n }\n return bestResult;\n}\nexport class FallbackProvider extends AbstractProvider {\n constructor(providers, network) {\n super(network);\n _FallbackProvider_instances.add(this);\n _FallbackProvider_configs.set(this, void 0);\n _FallbackProvider_height.set(this, void 0);\n _FallbackProvider_initialSyncPromise.set(this, void 0);\n __classPrivateFieldSet(this, _FallbackProvider_configs, providers.map((p) => {\n if (p instanceof AbstractProvider) {\n return Object.assign({ provider: p }, defaultConfig, defaultState);\n }\n else {\n return Object.assign({}, defaultConfig, p, defaultState);\n }\n }), \"f\");\n __classPrivateFieldSet(this, _FallbackProvider_height, -2, \"f\");\n __classPrivateFieldSet(this, _FallbackProvider_initialSyncPromise, null, \"f\");\n this.quorum = 2; //Math.ceil(providers.length / 2);\n this.eventQuorum = 1;\n this.eventWorkers = 1;\n if (this.quorum > __classPrivateFieldGet(this, _FallbackProvider_configs, \"f\").reduce((a, c) => (a + c.weight), 0)) {\n logger.throwArgumentError(\"quorum exceed provider wieght\", \"quorum\", this.quorum);\n }\n }\n // @TOOD: Copy these and only return public values\n get providerConfigs() {\n return __classPrivateFieldGet(this, _FallbackProvider_configs, \"f\").slice();\n }\n async _detectNetwork() {\n return Network.from(logger.getBigInt(await this._perform({ method: \"chainId\" }))).freeze();\n }\n async _perform(req) {\n await __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_initialSync).call(this);\n // Bootstrap enough to meet quorum\n const running = new Set();\n for (let i = 0; i < this.quorum; i++) {\n __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_addRunner).call(this, running, req);\n }\n const result = __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_waitForQuorum).call(this, running, req);\n for (const runner of running) {\n runner.done = true;\n }\n return result;\n }\n}\n_FallbackProvider_configs = new WeakMap(), _FallbackProvider_height = new WeakMap(), _FallbackProvider_initialSyncPromise = new WeakMap(), _FallbackProvider_instances = new WeakSet(), _FallbackProvider_getNextConfig = function _FallbackProvider_getNextConfig(configs) {\n // Shuffle the states, sorted by priority\n const allConfigs = __classPrivateFieldGet(this, _FallbackProvider_configs, \"f\").slice();\n shuffle(allConfigs);\n allConfigs.sort((a, b) => (b.priority - a.priority));\n for (const config of allConfigs) {\n if (configs.indexOf(config) === -1) {\n return config;\n }\n }\n return null;\n}, _FallbackProvider_addRunner = function _FallbackProvider_addRunner(running, req) {\n const config = __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_getNextConfig).call(this, Array.from(running).map((r) => r.config));\n if (config == null) {\n return null;\n }\n const result = {};\n const runner = {\n config, result, didBump: false, done: false,\n perform: null, staller: null\n };\n const now = getTime();\n runner.perform = (async () => {\n try {\n config.requests++;\n result.result = await config.provider._perform(req);\n }\n catch (error) {\n config.errorResponses++;\n result.error = error;\n }\n if (runner.done) {\n config.lateResponses++;\n }\n const dt = (getTime() - now);\n config._totalTime += dt;\n config.rollingDuration = 0.95 * config.rollingDuration + 0.05 * dt;\n runner.perform = null;\n })();\n runner.staller = (async () => {\n await stall(config.stallTimeout);\n runner.staller = null;\n })();\n running.add(runner);\n return runner;\n}, _FallbackProvider_initialSync = \n// Initializes the blockNumber and network for each runner and\n// blocks until initialized\nasync function _FallbackProvider_initialSync() {\n let initialSync = __classPrivateFieldGet(this, _FallbackProvider_initialSyncPromise, \"f\");\n if (!initialSync) {\n const promises = [];\n __classPrivateFieldGet(this, _FallbackProvider_configs, \"f\").forEach((config) => {\n promises.push(waitForSync(config, 0));\n promises.push((async () => {\n config._network = await config.provider.getNetwork();\n })());\n });\n __classPrivateFieldSet(this, _FallbackProvider_initialSyncPromise, initialSync = (async () => {\n // Wait for all providers to have a block number and network\n await Promise.all(promises);\n // Check all the networks match\n let chainId = null;\n for (const config of __classPrivateFieldGet(this, _FallbackProvider_configs, \"f\")) {\n const network = (config._network);\n if (chainId == null) {\n chainId = network.chainId;\n }\n else if (network.chainId !== chainId) {\n logger.throwError(\"cannot mix providers on different networks\", \"UNSUPPORTED_OPERATION\", {\n operation: \"new FallbackProvider\"\n });\n }\n }\n })(), \"f\");\n }\n await initialSync;\n}, _FallbackProvider_checkQuorum = async function _FallbackProvider_checkQuorum(running, req) {\n // Get all the result objects\n const results = [];\n for (const runner of running) {\n if (\"result\" in runner.result) {\n const result = runner.result.result;\n results.push({\n result,\n normal: normalize((runner.config._network), result, req),\n weight: runner.config.weight\n });\n }\n }\n // Are there enough results to event meet quorum?\n if (results.reduce((a, r) => (a + r.weight), 0) < this.quorum) {\n return undefined;\n }\n switch (req.method) {\n case \"getBlockNumber\": {\n // We need to get the bootstrap block height\n if (__classPrivateFieldGet(this, _FallbackProvider_height, \"f\") === -2) {\n const height = Math.ceil(logger.getNumber(getMedian(__classPrivateFieldGet(this, _FallbackProvider_configs, \"f\").map((c) => ({\n result: c.blockNumber,\n normal: logger.getNumber(c.blockNumber).toString(),\n weight: c.weight\n }))), \"%internal\"));\n __classPrivateFieldSet(this, _FallbackProvider_height, height, \"f\");\n }\n const mode = getFuzzyMode(this.quorum, results);\n if (mode === undefined) {\n return undefined;\n }\n if (mode > __classPrivateFieldGet(this, _FallbackProvider_height, \"f\")) {\n __classPrivateFieldSet(this, _FallbackProvider_height, mode, \"f\");\n }\n return __classPrivateFieldGet(this, _FallbackProvider_height, \"f\");\n }\n case \"getGasPrice\":\n case \"estimateGas\":\n return getMedian(results);\n case \"getBlock\":\n // Pending blocks are mempool dependant and already\n // quite untrustworthy\n if (\"blockTag\" in req && req.blockTag === \"pending\") {\n return results[0].result;\n }\n return checkQuorum(this.quorum, results);\n case \"chainId\":\n case \"getBalance\":\n case \"getTransactionCount\":\n case \"getCode\":\n case \"getStorageAt\":\n case \"getTransaction\":\n case \"getTransactionReceipt\":\n case \"getLogs\":\n return checkQuorum(this.quorum, results);\n case \"call\":\n // @TODO: Check errors\n return checkQuorum(this.quorum, results);\n case \"sendTransaction\":\n throw new Error(\"TODO\");\n }\n return logger.throwError(\"unsupported method\", \"UNSUPPORTED_OPERATION\", {\n operation: `_perform(${JSON.stringify(req.method)})`\n });\n}, _FallbackProvider_waitForQuorum = async function _FallbackProvider_waitForQuorum(running, req) {\n if (running.size === 0) {\n throw new Error(\"no runners?!\");\n }\n // Any promises that are interesting to watch for; an expired stall\n // or a successful perform\n const interesting = [];\n //const results: Array<any> = [ ];\n //const errors: Array<Error> = [ ];\n let newRunners = 0;\n for (const runner of running) {\n // @TODO: use runner.perfom != null\n /*\n if (\"result\" in runner.result) {\n results.push(runner.result.result);\n } else if (\"error\" in runner.result) {\n errors.push(runner.result.error);\n }\n*/\n // No responses, yet; keep an eye on it\n if (runner.perform) {\n interesting.push(runner.perform);\n }\n // Still stalling...\n if (runner.staller) {\n interesting.push(runner.staller);\n continue;\n }\n // This runner has already triggered another runner\n if (runner.didBump) {\n continue;\n }\n // Got a response (result or error) or stalled; kick off another runner\n runner.didBump = true;\n newRunners++;\n }\n // Check for quorum\n /*\n console.log({ results, errors } );\n if (results.length >= this.quorum) {\n return results[0];\n }\n\n if (errors.length >= this.quorum) {\n return errors[0];\n }\n */\n const value = await __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_checkQuorum).call(this, running, req);\n if (value !== undefined) {\n if (value instanceof Error) {\n throw value;\n }\n return value;\n }\n // Add any new runners, because a staller timed out or a result\n // or error response came in.\n for (let i = 0; i < newRunners; i++) {\n __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_addRunner).call(this, running, req);\n }\n if (interesting.length === 0) {\n throw new Error(\"quorum not met\");\n // return logger.throwError(\"failed to meet quorum\", \"\", {\n // });\n }\n // Wait for someone to either complete its perform or trigger a stall\n await Promise.race(interesting);\n return await __classPrivateFieldGet(this, _FallbackProvider_instances, \"m\", _FallbackProvider_waitForQuorum).call(this, running, req);\n};\n//# sourceMappingURL=provider-fallback.js.map","export function shuffle(array) {\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//# sourceMappingURL=shuffle.js.map","function getGlobal() {\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n throw new Error('unable to locate global object');\n}\n;\nconst _WebSocket = getGlobal().WebSocket;\nexport { _WebSocket as WebSocket };\n//# sourceMappingURL=ws-browser.js.map","/**\n * SocketProvider\n *\n * Generic long-lived socket provider.\n *\n * Sub-classing notes\n * - a sub-class MUST call the `_start()` method once connected\n * - a sub-class MUST override the `_write(string)` method\n * - a sub-class MUST call `_processMessage(string)` for each message\n */\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _SocketSubscriber_provider, _SocketSubscriber_filter, _SocketSubscriber_filterId, _SocketSubscriber_paused, _SocketSubscriber_emitPromise, _SocketEventSubscriber_logFilter, _SocketEventSubscriber_formatter, _SocketProvider_callbacks, _SocketProvider_ready, _SocketProvider_subs, _SocketProvider_pending;\nimport { UnmanagedSubscriber } from \"./abstract-provider.js\";\nimport { logger } from \"./logger.js\";\nimport { JsonRpcApiProvider } from \"./provider-jsonrpc.js\";\nexport class SocketSubscriber {\n constructor(provider, filter) {\n _SocketSubscriber_provider.set(this, void 0);\n _SocketSubscriber_filter.set(this, void 0);\n _SocketSubscriber_filterId.set(this, void 0);\n _SocketSubscriber_paused.set(this, void 0);\n _SocketSubscriber_emitPromise.set(this, void 0);\n __classPrivateFieldSet(this, _SocketSubscriber_provider, provider, \"f\");\n __classPrivateFieldSet(this, _SocketSubscriber_filter, JSON.stringify(filter), \"f\");\n __classPrivateFieldSet(this, _SocketSubscriber_filterId, null, \"f\");\n __classPrivateFieldSet(this, _SocketSubscriber_paused, null, \"f\");\n __classPrivateFieldSet(this, _SocketSubscriber_emitPromise, null, \"f\");\n }\n get filter() { return JSON.parse(__classPrivateFieldGet(this, _SocketSubscriber_filter, \"f\")); }\n start() {\n __classPrivateFieldSet(this, _SocketSubscriber_filterId, __classPrivateFieldGet(this, _SocketSubscriber_provider, \"f\").send(\"eth_subscribe\", this.filter).then((filterId) => {\n ;\n __classPrivateFieldGet(this, _SocketSubscriber_provider, \"f\")._register(filterId, this);\n return filterId;\n }), \"f\");\n }\n stop() {\n (__classPrivateFieldGet(this, _SocketSubscriber_filterId, \"f\")).then((filterId) => {\n __classPrivateFieldGet(this, _SocketSubscriber_provider, \"f\").send(\"eth_unsubscribe\", [filterId]);\n });\n __classPrivateFieldSet(this, _SocketSubscriber_filterId, null, \"f\");\n }\n // @TODO: pause should trap the current blockNumber, unsub, and on resume use getLogs\n // and resume\n pause(dropWhilePaused) {\n if (!dropWhilePaused) {\n logger.throwError(\"preserve logs while paused not supported by SocketSubscriber yet\", \"UNSUPPORTED_OPERATION\", {\n operation: \"pause(false)\"\n });\n }\n __classPrivateFieldSet(this, _SocketSubscriber_paused, !!dropWhilePaused, \"f\");\n }\n resume() {\n __classPrivateFieldSet(this, _SocketSubscriber_paused, null, \"f\");\n }\n _handleMessage(message) {\n if (__classPrivateFieldGet(this, _SocketSubscriber_filterId, \"f\") == null) {\n return;\n }\n if (__classPrivateFieldGet(this, _SocketSubscriber_paused, \"f\") === null) {\n let emitPromise = __classPrivateFieldGet(this, _SocketSubscriber_emitPromise, \"f\");\n if (emitPromise == null) {\n emitPromise = this._emit(__classPrivateFieldGet(this, _SocketSubscriber_provider, \"f\"), message);\n }\n else {\n emitPromise = emitPromise.then(async () => {\n await this._emit(__classPrivateFieldGet(this, _SocketSubscriber_provider, \"f\"), message);\n });\n }\n __classPrivateFieldSet(this, _SocketSubscriber_emitPromise, emitPromise.then(() => {\n if (__classPrivateFieldGet(this, _SocketSubscriber_emitPromise, \"f\") === emitPromise) {\n __classPrivateFieldSet(this, _SocketSubscriber_emitPromise, null, \"f\");\n }\n }), \"f\");\n }\n }\n async _emit(provider, message) {\n throw new Error(\"sub-classes must implemente this; _emit\");\n }\n}\n_SocketSubscriber_provider = new WeakMap(), _SocketSubscriber_filter = new WeakMap(), _SocketSubscriber_filterId = new WeakMap(), _SocketSubscriber_paused = new WeakMap(), _SocketSubscriber_emitPromise = new WeakMap();\nexport class SocketBlockSubscriber extends SocketSubscriber {\n constructor(provider) {\n super(provider, [\"newHeads\"]);\n }\n async _emit(provider, message) {\n provider.emit(\"block\", parseInt(message.number));\n }\n}\nexport class SocketPendingSubscriber extends SocketSubscriber {\n constructor(provider) {\n super(provider, [\"newPendingTransactions\"]);\n }\n async _emit(provider, message) {\n provider.emit(\"pending\", message);\n }\n}\nexport class SocketEventSubscriber extends SocketSubscriber {\n constructor(provider, filter) {\n super(provider, [\"logs\", filter]);\n _SocketEventSubscriber_logFilter.set(this, void 0);\n _SocketEventSubscriber_formatter.set(this, void 0);\n __classPrivateFieldSet(this, _SocketEventSubscriber_logFilter, JSON.stringify(filter), \"f\");\n __classPrivateFieldSet(this, _SocketEventSubscriber_formatter, provider.getNetwork().then((network) => network.formatter), \"f\");\n }\n get logFilter() { return JSON.parse(__classPrivateFieldGet(this, _SocketEventSubscriber_logFilter, \"f\")); }\n async _emit(provider, message) {\n const formatter = await __classPrivateFieldGet(this, _SocketEventSubscriber_formatter, \"f\");\n provider.emit(__classPrivateFieldGet(this, _SocketEventSubscriber_logFilter, \"f\"), formatter.log(message, provider));\n }\n}\n_SocketEventSubscriber_logFilter = new WeakMap(), _SocketEventSubscriber_formatter = new WeakMap();\nexport class SocketProvider extends JsonRpcApiProvider {\n constructor(network) {\n super(network);\n _SocketProvider_callbacks.set(this, void 0);\n _SocketProvider_ready.set(this, void 0);\n // Maps each filterId to its subscriber\n _SocketProvider_subs.set(this, void 0);\n // If any events come in before a subscriber has finished\n // registering, queue them\n _SocketProvider_pending.set(this, void 0);\n __classPrivateFieldSet(this, _SocketProvider_callbacks, new Map(), \"f\");\n __classPrivateFieldSet(this, _SocketProvider_ready, false, \"f\");\n __classPrivateFieldSet(this, _SocketProvider_subs, new Map(), \"f\");\n __classPrivateFieldSet(this, _SocketProvider_pending, new Map(), \"f\");\n }\n _getSubscriber(sub) {\n switch (sub.type) {\n case \"close\":\n return new UnmanagedSubscriber(\"close\");\n case \"block\":\n return new SocketBlockSubscriber(this);\n case \"pending\":\n return new SocketPendingSubscriber(this);\n case \"event\":\n return new SocketEventSubscriber(this, sub.filter);\n case \"orphan\":\n // Handled auto-matically within AbstractProvider\n // when the log.removed = true\n if (sub.filter.orphan === \"drop-log\") {\n return new UnmanagedSubscriber(\"drop-log\");\n }\n }\n return super._getSubscriber(sub);\n }\n _register(filterId, subscriber) {\n __classPrivateFieldGet(this, _SocketProvider_subs, \"f\").set(filterId, subscriber);\n const pending = __classPrivateFieldGet(this, _SocketProvider_pending, \"f\").get(filterId);\n if (pending) {\n for (const message of pending) {\n subscriber._handleMessage(message);\n }\n __classPrivateFieldGet(this, _SocketProvider_pending, \"f\").delete(filterId);\n }\n }\n async send(method, params) {\n const payload = this.prepareRequest(method, params);\n const promise = new Promise((resolve, reject) => {\n __classPrivateFieldGet(this, _SocketProvider_callbacks, \"f\").set(payload.id, { payload, resolve, reject });\n });\n if (__classPrivateFieldGet(this, _SocketProvider_ready, \"f\")) {\n await this._write(JSON.stringify(payload));\n }\n return await promise;\n }\n // Sub-classes must call this once they are connected\n async _start() {\n if (__classPrivateFieldGet(this, _SocketProvider_ready, \"f\")) {\n return;\n }\n __classPrivateFieldSet(this, _SocketProvider_ready, true, \"f\");\n for (const { payload } of __classPrivateFieldGet(this, _SocketProvider_callbacks, \"f\").values()) {\n await this._write(JSON.stringify(payload));\n }\n }\n // Sub-classes must call this for each message\n async _processMessage(message) {\n const result = JSON.parse(message);\n if (\"id\" in result) {\n const promise = __classPrivateFieldGet(this, _SocketProvider_callbacks, \"f\").get(result.id);\n if (!promise) {\n console.log(\"Weird... Response for not a thing we sent\");\n return;\n }\n __classPrivateFieldGet(this, _SocketProvider_callbacks, \"f\").delete(result.id);\n if (\"error\" in result) {\n const { message, code, data } = result.error;\n const error = logger.makeError(message || \"unkonwn error\", \"SERVER_ERROR\", {\n request: `ws:${JSON.stringify(promise.payload)}`,\n info: { code, data }\n });\n promise.reject(error);\n }\n else {\n promise.resolve(result.result);\n }\n }\n else if (result.method === \"eth_subscription\") {\n const filterId = result.params.subscription;\n const subscriber = __classPrivateFieldGet(this, _SocketProvider_subs, \"f\").get(filterId);\n if (subscriber) {\n subscriber._handleMessage(result.params.result);\n }\n else {\n let pending = __classPrivateFieldGet(this, _SocketProvider_pending, \"f\").get(filterId);\n if (pending == null) {\n pending = [];\n __classPrivateFieldGet(this, _SocketProvider_pending, \"f\").set(filterId, pending);\n }\n pending.push(result.params.result);\n }\n }\n }\n async _write(message) {\n throw new Error(\"sub-classes must override this\");\n }\n}\n_SocketProvider_callbacks = new WeakMap(), _SocketProvider_ready = new WeakMap(), _SocketProvider_subs = new WeakMap(), _SocketProvider_pending = new WeakMap();\n//# sourceMappingURL=provider-socket.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _WebSocketProvider_websocket;\nimport { WebSocket } from \"ws\"; /*-browser*/\nimport { SocketProvider } from \"./provider-socket.js\";\nexport class WebSocketProvider extends SocketProvider {\n constructor(url, network) {\n super(network);\n _WebSocketProvider_websocket.set(this, void 0);\n if (typeof (url) === \"string\") {\n __classPrivateFieldSet(this, _WebSocketProvider_websocket, new WebSocket(url), \"f\");\n }\n else {\n __classPrivateFieldSet(this, _WebSocketProvider_websocket, url, \"f\");\n }\n this.websocket.onopen = () => {\n this._start();\n };\n this.websocket.onmessage = (message) => {\n this._processMessage(message.data);\n };\n }\n get websocket() { return __classPrivateFieldGet(this, _WebSocketProvider_websocket, \"f\"); }\n async _write(message) {\n this.websocket.send(message);\n }\n}\n_WebSocketProvider_websocket = new WeakMap();\n//# sourceMappingURL=provider-websocket.js.map","import { AnkrProvider } from \"./provider-ankr.js\";\nimport { AlchemyProvider } from \"./provider-alchemy.js\";\nimport { CloudflareProvider } from \"./provider-cloudflare.js\";\nimport { EtherscanProvider } from \"./provider-etherscan.js\";\nimport { InfuraProvider } from \"./provider-infura.js\";\nimport { PocketProvider } from \"./provider-pocket.js\";\nimport { FallbackProvider } from \"./provider-fallback.js\";\nimport { JsonRpcProvider } from \"./provider-jsonrpc.js\";\nimport { WebSocketProvider } from \"./provider-websocket.js\";\nfunction isWebSocketLike(value) {\n return (value && typeof (value.send) === \"function\" &&\n typeof (value.close) === \"function\");\n}\nexport function getDefaultProvider(network, options) {\n if (options == null) {\n options = {};\n }\n if (typeof (network) === \"string\" && network.match(/^https?:/)) {\n return new JsonRpcProvider(network);\n }\n if (typeof (network) === \"string\" && network.match(/^wss?:/) || isWebSocketLike(network)) {\n return new WebSocketProvider(network);\n }\n const providers = [];\n if (options.alchemy !== \"-\") {\n try {\n providers.push(new AlchemyProvider(network, options.alchemy));\n }\n catch (error) {\n console.log(error);\n }\n }\n if (options.ankr !== \"-\") {\n try {\n providers.push(new AnkrProvider(network, options.ankr));\n }\n catch (error) {\n console.log(error);\n }\n }\n if (options.cloudflare !== \"-\") {\n try {\n providers.push(new CloudflareProvider(network));\n }\n catch (error) {\n console.log(error);\n }\n }\n if (options.etherscan !== \"-\") {\n try {\n providers.push(new EtherscanProvider(network, options.etherscan));\n }\n catch (error) {\n console.log(error);\n }\n }\n if (options.infura !== \"-\") {\n try {\n let projectId = options.infura;\n let projectSecret = undefined;\n if (typeof (projectId) === \"object\") {\n projectSecret = projectId.projectSecret;\n projectId = projectId.projectId;\n }\n providers.push(new InfuraProvider(network, projectId, projectSecret));\n }\n catch (error) {\n console.log(error);\n }\n }\n if (options.pocket !== \"-\") {\n try {\n let appId = options.pocket;\n let secretKey = undefined;\n let loadBalancer = undefined;\n if (typeof (appId) === \"object\") {\n loadBalancer = !!appId.loadBalancer;\n secretKey = appId.secretKey;\n appId = appId.appId;\n }\n providers.push(new PocketProvider(network, appId, secretKey, loadBalancer));\n }\n catch (error) {\n console.log(error);\n }\n }\n if (providers.length === 0) {\n throw new Error(\"TODO\");\n }\n if (providers.length === 1) {\n return providers[0];\n }\n return new FallbackProvider(providers);\n}\n//# sourceMappingURL=default-provider.js.map","const IpcSocketProvider = undefined;\nexport { IpcSocketProvider };\n//# sourceMappingURL=provider-ipcsocket-browser.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _ContractTransactionReceipt_interface, _ContractTransactionResponse_interface;\nimport { defineProperties, EventPayload } from \"@ethersproject/properties\";\nimport { Log, TransactionReceipt, TransactionResponse } from \"@ethersproject/providers\";\nexport class EventLog extends Log {\n constructor(log, iface, fragment) {\n super(log, log.provider);\n const args = iface.decodeEventLog(fragment, log.data, log.topics);\n defineProperties(this, { args, fragment, interface: iface });\n }\n get eventName() { return this.fragment.name; }\n get eventSignature() { return this.fragment.format(); }\n}\nexport class ContractTransactionReceipt extends TransactionReceipt {\n constructor(iface, provider, tx) {\n super(tx, provider);\n _ContractTransactionReceipt_interface.set(this, void 0);\n __classPrivateFieldSet(this, _ContractTransactionReceipt_interface, iface, \"f\");\n }\n get logs() {\n return super.logs.map((log) => {\n const fragment = log.topics.length ? __classPrivateFieldGet(this, _ContractTransactionReceipt_interface, \"f\").getEvent(log.topics[0]) : null;\n if (fragment) {\n return new EventLog(log, __classPrivateFieldGet(this, _ContractTransactionReceipt_interface, \"f\"), fragment);\n }\n else {\n return log;\n }\n });\n }\n}\n_ContractTransactionReceipt_interface = new WeakMap();\nexport class ContractTransactionResponse extends TransactionResponse {\n constructor(iface, provider, tx) {\n super(tx, provider);\n _ContractTransactionResponse_interface.set(this, void 0);\n __classPrivateFieldSet(this, _ContractTransactionResponse_interface, iface, \"f\");\n }\n async wait(confirms) {\n const receipt = await super.wait();\n if (receipt == null) {\n return null;\n }\n return new ContractTransactionReceipt(__classPrivateFieldGet(this, _ContractTransactionResponse_interface, \"f\"), this.provider, receipt);\n }\n}\n_ContractTransactionResponse_interface = new WeakMap();\nexport class ContractEventPayload extends EventPayload {\n constructor(contract, listener, filter, fragment, _log) {\n super(contract, listener, filter);\n const log = new EventLog(_log, contract.interface, fragment);\n const args = contract.interface.decodeEventLog(fragment, log.data, log.topics);\n defineProperties(this, { args, fragment, log });\n }\n get eventName() {\n return this.fragment.name;\n }\n get eventSignature() {\n return this.fragment.format();\n }\n async getBlock() {\n return await this.log.getBlock();\n }\n async getTransaction() {\n return await this.log.getTransaction();\n }\n async getTransactionReceipt() {\n return await this.log.getTransactionReceipt();\n }\n}\n//# sourceMappingURL=wrappers.js.map","export const version = \"@ethersproject/contract@6.0.0-beta.4\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _PreparedTopicFilter_filter;\nimport { resolveAddress } from \"@ethersproject/address\";\nimport { Interface, Typed } from \"@ethersproject/abi\";\nimport { isHexString } from \"@ethersproject/bytes\";\nimport { isCallException } from \"@ethersproject/logger\";\nimport { defineProperties, resolveProperties } from \"@ethersproject/properties\";\nimport { copyRequest } from \"@ethersproject/providers\";\nimport { ContractEventPayload, ContractTransactionResponse, EventLog } from \"./wrappers.js\";\nimport { logger } from \"./logger.js\";\nfunction canCall(value) {\n return (value && typeof (value.call) === \"function\");\n}\nfunction canEstimate(value) {\n return (value && typeof (value.estimateGas) === \"function\");\n}\nfunction canResolve(value) {\n return (value && typeof (value.resolveName) === \"function\");\n}\nfunction canSend(value) {\n return (value && typeof (value.sendTransaction) === \"function\");\n}\nfunction concisify(items) {\n items = Array.from((new Set(items)).values());\n items.sort();\n return items;\n}\nclass PreparedTopicFilter {\n constructor(contract, fragment, args) {\n _PreparedTopicFilter_filter.set(this, void 0);\n defineProperties(this, { fragment });\n if (fragment.inputs.length < args.length) {\n throw new Error(\"too many arguments\");\n }\n // Recursively descend into args and resolve any addresses\n const runner = getRunner(contract.runner, \"resolveName\");\n const resolver = canResolve(runner) ? runner : null;\n __classPrivateFieldSet(this, _PreparedTopicFilter_filter, (async function () {\n const resolvedArgs = await Promise.all(fragment.inputs.map((param, index) => {\n return param.walkAsync(args[index], (type, value) => {\n if (type === \"address\") {\n return resolveAddress(value, resolver);\n }\n return value;\n });\n }));\n return contract.interface.encodeFilterTopics(fragment, resolvedArgs);\n })(), \"f\");\n }\n getTopicFilter() {\n return __classPrivateFieldGet(this, _PreparedTopicFilter_filter, \"f\");\n }\n}\n_PreparedTopicFilter_filter = new WeakMap();\n// A = Arguments passed in as a tuple\n// R = The result type of the call (i.e. if only one return type,\n// the qualified type, otherwise Result)\n// D = The type the default call will return (i.e. R for view/pure,\n// TransactionResponse otherwise)\n//export interface ContractMethod<A extends Array<any> = Array<any>, R = any, D extends R | ContractTransactionResponse = ContractTransactionResponse> {\nfunction _WrappedMethodBase() {\n return Function;\n}\nfunction getRunner(value, feature) {\n if (value == null) {\n return null;\n }\n if (typeof (value[feature]) === \"function\") {\n return value;\n }\n if (value.provider && typeof (value.provider[feature]) === \"function\") {\n return value.provider;\n }\n return null;\n}\nfunction getProvider(value) {\n if (value == null) {\n return null;\n }\n return value.provider || null;\n}\nexport async function copyOverrides(arg) {\n // Create a shallow copy (we'll deep-ify anything needed during normalizing)\n const overrides = copyRequest(Typed.dereference(arg, \"overrides\"));\n // Some sanity checking; these are what these methods adds\n //if ((<any>overrides).to) {\n if (overrides.to) {\n logger.throwArgumentError(\"cannot override to\", \"overrides.to\", overrides.to);\n }\n else if (overrides.data) {\n logger.throwArgumentError(\"cannot override data\", \"overrides.data\", overrides.data);\n }\n // Resolve any from\n if (overrides.from) {\n overrides.from = await resolveAddress(overrides.from);\n }\n return overrides;\n}\nexport async function resolveArgs(_runner, inputs, args) {\n // Recursively descend into args and resolve any addresses\n const runner = getRunner(_runner, \"resolveName\");\n const resolver = canResolve(runner) ? runner : null;\n return await Promise.all(inputs.map((param, index) => {\n return param.walkAsync(args[index], (type, value) => {\n if (type === \"address\") {\n return resolveAddress(value, resolver);\n }\n return value;\n });\n }));\n}\nclass WrappedMethod extends _WrappedMethodBase() {\n constructor(contract, key) {\n super();\n defineProperties(this, {\n name: contract.interface.getFunctionName(key),\n _contract: contract, _key: key\n });\n const proxy = new Proxy(this, {\n // Perform the default operation for this fragment type\n apply: async (target, thisArg, args) => {\n const fragment = target.getFragment(...args);\n if (fragment.constant) {\n return await target.staticCall(...args);\n }\n return await target.send(...args);\n },\n });\n return proxy;\n }\n // Only works on non-ambiguous keys (refined fragment is always non-ambiguous)\n get fragment() {\n return this._contract.interface.getFunction(this._key);\n }\n getFragment(...args) {\n return this._contract.interface.getFunction(this._key, args);\n }\n async populateTransaction(...args) {\n const fragment = this.getFragment(...args);\n // If an overrides was passed in, copy it and normalize the values\n let overrides = {};\n if (fragment.inputs.length + 1 === args.length) {\n overrides = await copyOverrides(args.pop());\n }\n if (fragment.inputs.length !== args.length) {\n throw new Error(\"internal error: fragment inputs doesn't match arguments; should not happen\");\n }\n const resolvedArgs = await resolveArgs(this._contract.runner, fragment.inputs, args);\n return Object.assign({}, overrides, await resolveProperties({\n to: this._contract.getAddress(),\n data: this._contract.interface.encodeFunctionData(fragment, resolvedArgs)\n }));\n }\n async staticCall(...args) {\n const result = await this.staticCallResult(...args);\n if (result.length === 1) {\n return result[0];\n }\n return result;\n }\n async send(...args) {\n const runner = this._contract.runner;\n if (!canSend(runner)) {\n return logger.throwError(\"contract runner does not support sending transactions\", \"UNSUPPORTED_OPERATION\", {\n operation: \"sendTransaction\"\n });\n }\n const tx = await runner.sendTransaction(await this.populateTransaction(...args));\n const provider = getProvider(this._contract.runner);\n return new ContractTransactionResponse(this._contract.interface, provider, tx);\n }\n async estimateGas(...args) {\n const runner = getRunner(this._contract.runner, \"estimateGas\");\n if (!canEstimate(runner)) {\n return logger.throwError(\"contract runner does not support gas estimation\", \"UNSUPPORTED_OPERATION\", {\n operation: \"estimateGas\"\n });\n }\n return await runner.estimateGas(await this.populateTransaction(...args));\n }\n async staticCallResult(...args) {\n const runner = getRunner(this._contract.runner, \"call\");\n if (!canCall(runner)) {\n return logger.throwError(\"contract runner does not support calling\", \"UNSUPPORTED_OPERATION\", {\n operation: \"call\"\n });\n }\n const fragment = this.getFragment(...args);\n const tx = await this.populateTransaction(...args);\n let result = \"0x\";\n try {\n result = await runner.call(tx);\n }\n catch (error) {\n if (isCallException(error)) {\n throw this._contract.interface.makeError(fragment, error.data, tx);\n }\n throw error;\n }\n return this._contract.interface.decodeFunctionResult(fragment, result);\n }\n}\nfunction _WrappedEventBase() {\n return Function;\n}\nclass WrappedEvent extends _WrappedEventBase() {\n constructor(contract, key) {\n super();\n defineProperties(this, {\n name: contract.interface.getEventName(key),\n _contract: contract, _key: key\n });\n return new Proxy(this, {\n // Perform the default operation for this fragment type\n apply: async (target, thisArg, args) => {\n return new PreparedTopicFilter(contract, target.getFragment(...args), args);\n },\n });\n }\n // Only works on non-ambiguous keys\n get fragment() {\n return this._contract.interface.getEvent(this._key);\n }\n getFragment(...args) {\n return this._contract.interface.getEvent(this._key, args);\n }\n}\n;\n// The combination of TypeScrype, Private Fields and Proxies makes\n// the world go boom; so we hide variables with some trickery keeping\n// a symbol attached to each BaseContract which its sub-class (even\n// via a Proxy) can reach and use to look up its internal values.\nconst internal = Symbol.for(\"_ethersInternal_contract\");\nconst internalValues = new WeakMap();\nfunction setInternal(contract, values) {\n internalValues.set(contract[internal], values);\n}\nfunction getInternal(contract) {\n return internalValues.get(contract[internal]);\n}\nfunction isDeferred(value) {\n return (value && typeof (value) === \"object\" && (\"getTopicFilter\" in value) &&\n (typeof (value.getTopicFilter) === \"function\") && value.fragment);\n}\nasync function getSubTag(contract, event) {\n let fragment;\n let topics;\n if (Array.isArray(event)) {\n // Topics; e.g. `[ \"0x1234...89ab\" ]`\n fragment = contract.interface.getEvent(event[0]);\n topics = event;\n }\n else if (typeof (event) === \"string\") {\n // Event name (name or signature); `\"Transfer\"`\n fragment = contract.interface.getEvent(event);\n topics = [contract.interface.getEventTopic(fragment)];\n }\n else if (isDeferred(event)) {\n // Deferred Topic Filter; e.g. `contract.filter.Transfer(from)`\n fragment = event.fragment;\n topics = await event.getTopicFilter();\n }\n else if (\"fragment\" in event) {\n // ContractEvent; e.g. `contract.filter.Transfer`\n fragment = event.fragment;\n topics = [contract.interface.getEventTopic(fragment)];\n }\n else {\n console.log(event);\n throw new Error(\"TODO\");\n }\n // Normalize topics and sort TopicSets\n topics = topics.map((t) => {\n if (t == null) {\n return null;\n }\n if (Array.isArray(t)) {\n return concisify(t.map((t) => t.toLowerCase()));\n }\n return t.toLowerCase();\n });\n const tag = topics.map((t) => {\n if (t == null) {\n return \"null\";\n }\n if (Array.isArray(t)) {\n return t.join(\"|\");\n }\n return t;\n }).join(\"&\");\n return { fragment, tag, topics };\n}\nasync function hasSub(contract, event) {\n const { subs } = getInternal(contract);\n return subs.get((await getSubTag(contract, event)).tag) || null;\n}\nasync function getSub(contract, event) {\n // Make sure our runner can actually subscribe to events\n const provider = getProvider(contract.runner);\n if (!provider) {\n return logger.throwError(\"contract runner does not support subscribing\", \"UNSUPPORTED_OPERATION\", {\n operation: \"on\"\n });\n }\n const { fragment, tag, topics } = await getSubTag(contract, event);\n const { addr, subs } = getInternal(contract);\n let sub = subs.get(tag);\n if (!sub) {\n const address = (addr ? addr : contract);\n const filter = { address, topics };\n const listener = (log) => {\n const payload = new ContractEventPayload(contract, null, event, fragment, log);\n emit(contract, event, payload.args, payload);\n };\n let started = false;\n const start = () => {\n if (started) {\n return;\n }\n provider.on(filter, listener);\n started = true;\n };\n const stop = () => {\n if (!started) {\n return;\n }\n provider.off(filter, listener);\n started = false;\n };\n sub = { tag, listeners: [], start, stop };\n subs.set(tag, sub);\n }\n return sub;\n}\nasync function _emit(contract, event, args, payload) {\n await lastEmit;\n const sub = await hasSub(contract, event);\n if (!sub) {\n return false;\n }\n const count = sub.listeners.length;\n sub.listeners = sub.listeners.filter(({ listener, once }) => {\n const passArgs = args.slice();\n if (payload) {\n passArgs.push(new ContractEventPayload(contract, (once ? null : listener), event, payload.fragment, payload.log));\n }\n try {\n listener.call(contract, ...passArgs);\n }\n catch (error) { }\n return !once;\n });\n return (count > 0);\n}\n// We use this to ensure one emit resolves before firing the next to\n// ensure correct ordering (note this cannot throw and just adds the\n// notice to the event queu using setTimeout).\nlet lastEmit = Promise.resolve();\nasync function emit(contract, event, args, payload) {\n try {\n await lastEmit;\n }\n catch (error) { }\n const resultPromise = _emit(contract, event, args, payload);\n lastEmit = resultPromise;\n return await resultPromise;\n}\nconst passProperties = [\"then\"];\nexport class BaseContract {\n constructor(target, abi, runner = null, _deployTx) {\n const iface = Interface.from(abi);\n defineProperties(this, { target, runner, interface: iface });\n Object.defineProperty(this, internal, { value: {} });\n let addrPromise;\n let addr = null;\n let deployTx = null;\n if (_deployTx) {\n const provider = getProvider(runner);\n deployTx = new ContractTransactionResponse(this.interface, provider, _deployTx);\n }\n let subs = new Map();\n // Resolve the target as the address\n if (typeof (target) === \"string\") {\n if (isHexString(target)) {\n addr = target;\n addrPromise = Promise.resolve(target);\n }\n else {\n const resolver = getRunner(runner, \"resolveName\");\n if (!canResolve(resolver)) {\n throw logger.makeError(\"contract runner does not support name resolution\", \"UNSUPPORTED_OPERATION\", {\n operation: \"resolveName\"\n });\n }\n addrPromise = resolver.resolveName(target).then((addr) => {\n if (addr == null) {\n throw new Error(\"TODO\");\n }\n getInternal(this).addr = addr;\n return addr;\n });\n }\n }\n else {\n addrPromise = target.getAddress().then((addr) => {\n if (addr == null) {\n throw new Error(\"TODO\");\n }\n getInternal(this).addr = addr;\n return addr;\n });\n }\n // Set our private values\n setInternal(this, { addrPromise, addr, deployTx, subs });\n // Add the event filters\n const filters = new Proxy({}, {\n get: (target, _prop, receiver) => {\n // Pass important checks (like `then` for Promise) through\n if (passProperties.indexOf(_prop) >= 0) {\n return Reflect.get(target, _prop, receiver);\n }\n const prop = String(_prop);\n const result = this.getEvent(prop);\n if (result) {\n return result;\n }\n throw new Error(`unknown contract event: ${prop}`);\n }\n });\n defineProperties(this, { filters });\n // Return a Proxy that will respond to functions\n return new Proxy(this, {\n get: (target, _prop, receiver) => {\n if (_prop in target || passProperties.indexOf(_prop) >= 0) {\n return Reflect.get(target, _prop, receiver);\n }\n const prop = String(_prop);\n const result = target.getFunction(prop);\n if (result) {\n return result;\n }\n throw new Error(`unknown contract method: ${prop}`);\n }\n });\n }\n async getAddress() { return await getInternal(this).addrPromise; }\n async getDeployedCode() {\n const provider = getProvider(this.runner);\n if (!provider) {\n return logger.throwError(\"runner does not support .provider\", \"UNSUPPORTED_OPERATION\", {\n operation: \"getDeployedCode\"\n });\n }\n const code = await provider.getCode(await this.getAddress());\n if (code === \"0x\") {\n return null;\n }\n return code;\n }\n async waitForDeployment() {\n // We have the deployement transaction; just use that (throws if deployement fails)\n const deployTx = this.deploymentTransaction();\n if (deployTx) {\n await deployTx.wait();\n return this;\n }\n // Check for code\n const code = await this.getDeployedCode();\n if (code != null) {\n return this;\n }\n // Make sure we can subscribe to a provider event\n const provider = getProvider(this.runner);\n if (provider == null) {\n return logger.throwError(\"contract runner does not support .provider\", \"UNSUPPORTED_OPERATION\", {\n operation: \"waitForDeployment\"\n });\n }\n return new Promise((resolve, reject) => {\n const checkCode = async () => {\n try {\n const code = await this.getDeployedCode();\n if (code != null) {\n return resolve(this);\n }\n provider.once(\"block\", checkCode);\n }\n catch (error) {\n reject(error);\n }\n };\n checkCode();\n });\n }\n deploymentTransaction() {\n return getInternal(this).deployTx;\n }\n getFunction(key) {\n if (typeof (key) !== \"string\") {\n key = key.format();\n }\n return (new WrappedMethod(this, key));\n }\n getEvent(key) {\n if (typeof (key) !== \"string\") {\n key = key.format();\n }\n return (new WrappedEvent(this, key));\n }\n async queryTransaction(hash) {\n // Is this useful?\n throw new Error(\"@TODO\");\n }\n async queryFilter(event, fromBlock = 0, toBlock = \"latest\") {\n const { addr, addrPromise } = getInternal(this);\n const address = (addr ? addr : (await addrPromise));\n const { fragment, topics } = await getSubTag(this, event);\n const filter = { address, topics, fromBlock, toBlock };\n const provider = getProvider(this.runner);\n if (!provider) {\n return logger.throwError(\"contract runner does not have a provider\", \"UNSUPPORTED_OPERATION\", {\n operation: \"queryFilter\"\n });\n }\n return (await provider.getLogs(filter)).map((log) => {\n return new EventLog(log, this.interface, fragment);\n });\n }\n async on(event, listener) {\n const sub = await getSub(this, event);\n sub.listeners.push({ listener, once: false });\n sub.start();\n return this;\n }\n async once(event, listener) {\n const sub = await getSub(this, event);\n sub.listeners.push({ listener, once: true });\n sub.start();\n return this;\n }\n async emit(event, ...args) {\n return await emit(this, event, args, null);\n }\n async listenerCount(event) {\n if (event) {\n const sub = await hasSub(this, event);\n if (!sub) {\n return 0;\n }\n return sub.listeners.length;\n }\n const { subs } = getInternal(this);\n let total = 0;\n for (const { listeners } of subs.values()) {\n total += listeners.length;\n }\n return total;\n }\n async listeners(event) {\n if (event) {\n const sub = await hasSub(this, event);\n if (!sub) {\n return [];\n }\n return sub.listeners.map(({ listener }) => listener);\n }\n const { subs } = getInternal(this);\n let result = [];\n for (const { listeners } of subs.values()) {\n result = result.concat(listeners.map(({ listener }) => listener));\n }\n return result;\n }\n async off(event, listener) {\n const sub = await hasSub(this, event);\n if (!sub) {\n return this;\n }\n if (listener) {\n const index = sub.listeners.map(({ listener }) => listener).indexOf(listener);\n if (index >= 0) {\n sub.listeners.splice(index, 1);\n }\n }\n if (listener == null || sub.listeners.length === 0) {\n sub.stop();\n getInternal(this).subs.delete(sub.tag);\n }\n return this;\n }\n async removeAllListeners(event) {\n if (event) {\n const sub = await hasSub(this, event);\n if (!sub) {\n return this;\n }\n sub.stop();\n getInternal(this).subs.delete(sub.tag);\n }\n else {\n const { subs } = getInternal(this);\n for (const { tag, stop } of subs.values()) {\n stop();\n subs.delete(tag);\n }\n }\n return this;\n }\n // Alias for \"on\"\n async addListener(event, listener) {\n return await this.on(event, listener);\n }\n // Alias for \"off\"\n async removeListener(event, listener) {\n return await this.off(event, listener);\n }\n static buildClass(abi) {\n class CustomContract extends BaseContract {\n constructor(address, runner = null) {\n super(address, abi, runner);\n }\n }\n return CustomContract;\n }\n ;\n static from(target, abi, runner = null) {\n const contract = new this(target, abi, runner);\n return contract;\n }\n}\nfunction _ContractBase() {\n return BaseContract;\n}\nexport class Contract extends _ContractBase() {\n}\n//# sourceMappingURL=contract.js.map","const subsChrs = \" !#$%&'()*+,-./<=>?@[]^_`{|}~\";\nconst Word = /^[a-z]*$/i;\nfunction unfold(words, sep) {\n let initial = 97;\n return words.reduce((accum, word) => {\n if (word === sep) {\n initial++;\n }\n else if (word.match(Word)) {\n accum.push(String.fromCharCode(initial) + word);\n }\n else {\n initial = 97;\n accum.push(word);\n }\n return accum;\n }, []);\n}\nexport function decode(data, subs) {\n // Replace all the substitutions with their expanded form\n for (let i = subsChrs.length - 1; i >= 0; i--) {\n data = data.split(subsChrs[i]).join(subs.substring(2 * i, 2 * i + 2));\n }\n // Get all tle clumps; each suffix, first-increment and second-increment\n const clumps = [];\n const leftover = data.replace(/(:|([0-9])|([A-Z][a-z]*))/g, (all, item, semi, word) => {\n if (semi) {\n for (let i = parseInt(semi); i >= 0; i--) {\n clumps.push(\";\");\n }\n }\n else {\n clumps.push(item.toLowerCase());\n }\n return \"\";\n });\n if (leftover) {\n throw new Error(`leftovers: ${JSON.stringify(leftover)}`);\n }\n return unfold(unfold(clumps, \";\"), \":\");\n}\nexport function decodeOwl(data) {\n if (data[0] !== \"0\") {\n throw TypeError(\"unsupported auwl data\");\n }\n return decode(data.substring(1 + 2 * subsChrs.length), data.substring(1, 1 + 2 * subsChrs.length));\n}\n//# sourceMappingURL=decode-owl.js.map","export const version = \"@ethersproject/wordlists@6.0.0-beta.2\";\n//# sourceMappingURL=_version.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","import { defineProperties } from \"@ethersproject/properties\";\nexport class Wordlist {\n constructor(locale) {\n defineProperties(this, { locale });\n }\n // Subclasses may override this\n split(mnemonic) {\n return mnemonic.toLowerCase().split(/ +/g);\n }\n // Subclasses may override this\n join(words) {\n return words.join(\" \");\n }\n}\n//# sourceMappingURL=wordlist.js.map","// Use the encode-latin.js script to create the necessary\n// data files to be consumed by this class\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _WordlistOwl_instances, _WordlistOwl_data, _WordlistOwl_checksum, _WordlistOwl_words, _WordlistOwl_loadWords;\nimport { id } from \"@ethersproject/hash\";\nimport { decodeOwl } from \"./decode-owl.js\";\nimport { logger } from \"./logger.js\";\nimport { Wordlist } from \"./wordlist.js\";\nexport class WordlistOwl extends Wordlist {\n constructor(locale, data, checksum) {\n super(locale);\n _WordlistOwl_instances.add(this);\n _WordlistOwl_data.set(this, void 0);\n _WordlistOwl_checksum.set(this, void 0);\n _WordlistOwl_words.set(this, void 0);\n __classPrivateFieldSet(this, _WordlistOwl_data, data, \"f\");\n __classPrivateFieldSet(this, _WordlistOwl_checksum, checksum, \"f\");\n __classPrivateFieldSet(this, _WordlistOwl_words, null, \"f\");\n }\n get _data() { return __classPrivateFieldGet(this, _WordlistOwl_data, \"f\"); }\n _decodeWords() {\n return decodeOwl(__classPrivateFieldGet(this, _WordlistOwl_data, \"f\"));\n }\n getWord(index) {\n const words = __classPrivateFieldGet(this, _WordlistOwl_instances, \"m\", _WordlistOwl_loadWords).call(this);\n if (index < 0 || index >= words.length) {\n logger.throwArgumentError(`invalid word index: ${index}`, \"index\", index);\n }\n return words[index];\n }\n getWordIndex(word) {\n return __classPrivateFieldGet(this, _WordlistOwl_instances, \"m\", _WordlistOwl_loadWords).call(this).indexOf(word);\n }\n}\n_WordlistOwl_data = new WeakMap(), _WordlistOwl_checksum = new WeakMap(), _WordlistOwl_words = new WeakMap(), _WordlistOwl_instances = new WeakSet(), _WordlistOwl_loadWords = function _WordlistOwl_loadWords() {\n if (__classPrivateFieldGet(this, _WordlistOwl_words, \"f\") == null) {\n const words = this._decodeWords();\n // Verify the computed list matches the official list\n const checksum = id(words.join(\"\\n\") + \"\\n\");\n /* c8 ignore start */\n if (checksum !== __classPrivateFieldGet(this, _WordlistOwl_checksum, \"f\")) {\n throw new Error(`BIP39 Wordlist for ${this.locale} FAILED`);\n }\n /* c8 ignore stop */\n __classPrivateFieldSet(this, _WordlistOwl_words, words, \"f\");\n }\n return __classPrivateFieldGet(this, _WordlistOwl_words, \"f\");\n};\n//# sourceMappingURL=wordlist-owl.js.map","import { WordlistOwl } from \"./wordlist-owl.js\";\nconst words = \"0erleonalorenseinceregesticitStanvetearctssi#ch2Athck&tneLl0And#Il.yLeOutO=S|S%b/ra@SurdU'0Ce[Cid|CountCu'Hie=IdOu,-Qui*Ro[TT]T%T*[Tu$0AptDD-tD*[Ju,M.UltV<)Vi)0Rob-0FairF%dRaid0A(EEntRee0Ead0MRRp%tS!_rmBumCoholErtI&LLeyLowMo,O}PhaReadySoT Ways0A>urAz(gOngOuntU'd0Aly,Ch%Ci|G G!GryIm$K!Noun)Nu$O` Sw T&naTiqueXietyY1ArtOlogyPe?P!Pro=Ril1ChCt-EaEnaGueMMedM%MyOundR<+Re,Ri=RowTTefa@Ti,Tw%k0KPe@SaultSetSi,SumeThma0H!>OmTa{T&dT.udeTra@0Ct]D.Gu,NtTh%ToTumn0Era+OcadoOid0AkeA*AyEsomeFulKw?d0Is:ByChel%C#D+GL<)Lc#y~MbooN<aNn RRelyRga(R*lSeS-SketTt!3A^AnAutyCau'ComeEfF%eG(Ha=H(dLie=LowLtN^Nef./TrayTt Twe&Y#d3Cyc!DKeNdOlogyRdR`Tt _{AdeAmeAnketA,EakE[IndOodO[omOu'UeUrUsh_rdAtDyIlMbNeNusOkO,Rd R(gRrowSsTtomUn)XY_{etA(AndA[A=EadEezeI{Id+IefIghtIngIskOccoliOk&OnzeOomO` OwnUsh2Bb!DdyD+tFf$oIldLbLkL!tNd!Nk Rd&Rg R,SS(e[SyTt Y Zz:Bba+B(B!CtusGeKe~LmM aMpNN$N)lNdyNn#NoeNvasNy#Pab!P.$Pta(RRb#RdRgoRpetRryRtSeShS(o/!Su$TT$ogT^Teg%yTt!UghtU'Ut]Ve3Il(gL yM|NsusNturyRe$Rta(_irAlkAmp]An+AosApt Ar+A'AtEapE{Ee'EfErryE,I{&IefIldIm}yOi)Oo'R#-U{!UnkUrn0G?Nnam#Rc!Tiz&TyVil_imApArifyAwAyE<ErkEv I{I|IffImbIn-IpO{OgO'O`OudOwnUbUmpU, Ut^_^A,C#utDeFfeeIlInL!@L%LumnMb(eMeMf%tM-Mm#Mp<yNc tNdu@NfirmNg*[N}@Nsid NtrolNv()OkOlPp PyR$ReRnR*@/Tt#U^UntryUp!Ur'Us(V Yo>_{Ad!AftAmA}AshAt AwlAzyEamEd.EekEwI{etImeIspIt-OpO[Ou^OwdUci$UelUi'Umb!Un^UshYY,$2BeLtu*PPbo?dRiousRr|Rta(R=Sh]/omTe3C!:DMa+MpN)Ng R(gShUght WnY3AlBa>BrisCadeCemb CideCl(eC%a>C*a'ErF&'F(eFyG*eLayLiv M<dMi'Ni$Nti,NyP?tP&dPos.P`PutyRi=ScribeS tSignSkSpair/royTailTe@VelopVi)Vo>3AgramAlAm#dAryCeE'lEtFf G.$Gn.yLemmaNn NosaurRe@RtSag*eScov Sea'ShSmi[S%d Splay/<)V tVideV%)Zzy5Ct%Cum|G~Lph(Ma(Na>NkeyN%OrSeUb!Ve_ftAg#AmaA,-AwEamE[IftIllInkIpI=OpUmY2CkMbNeR(g/T^Ty1Arf1Nam-:G G!RlyRnR`Sily/Sy1HoOlogyOnomy0GeItUca>1F%t0G1GhtTh 2BowD E@r-Eg<tEm|Eph<tEvat%I>Se0B?kBodyBra)Er+Ot]PloyPow Pty0Ab!A@DD![D%'EmyErgyF%)Ga+G(eH<)JoyLi,OughR-hRollSu*T Ti*TryVelope1Isode0U$Uip0AA'OdeOs]R%Upt0CapeSayS&)Ta>0Ern$H-s1Id&)IlOkeOl=1A@Amp!Ce[Ch<+C.eCludeCu'Ecu>Erci'Hau,Hib.I!I,ItOt-P<dPe@Pi*Pla(Po'P*[T&dTra0EEbrow:Br-CeCultyDeIntI`~L'MeMilyMousNNcyNtasyRmSh]TT$Th TigueUltV%.e3Atu*Bru?yD $EEdElMa!N)/iv$T^V W3B Ct]EldGu*LeLmLt N$NdNeNg NishReRmR,Sc$ShTT}[X_gAmeAshAtAv%EeIghtIpOatO{O%Ow UidUshY_mCusGIlLd~owOdOtR)Re,R+tRkRtu}RumRw?dSsil/ UndX_gi!AmeEqu|EshI&dIn+OgOntO,OwnOz&U.2ElNNnyRna)RyTu*:D+tInLaxy~ yMePRa+Rba+Rd&Rl-Rm|SSpTeTh U+Ze3N $NiusN*Nt!Nu(e/u*2O,0AntFtGg!Ng RaffeRlVe_dAn)A*A[IdeImp'ObeOomOryO=OwUe_tDde[LdOdO'RillaSpelSsipV nWn_bA)A(AntApeA[Av.yEatE&IdIefItOc yOupOwUnt_rdE[IdeIltIt?N3M:B.IrLfMm M, NdPpyRb%RdRshR=,TVeWkZ?d3AdAl`ArtAvyD+hogIght~oLmetLpNRo3Dd&Gh~NtPRe/%y5BbyCkeyLdLeLiday~owMeNeyOdPeRnRr%R'Sp.$/TelUrV 5BGeM<Mb!M%Nd*dNgryNtRd!RryRtSb<d3Brid:1EOn0EaEntifyLe2N%e4LLeg$L}[0A+Ita>M&'Mu}Pa@Po'Pro=Pul'0ChCludeComeC*a'DexD-a>Do%Du,ryF<tFl-tF%mHa!H .Iti$Je@JuryMa>N Noc|PutQuiryS<eSe@SideSpi*/$lTa@T e,ToVe,V.eVol=3On0L<dOla>Sue0Em1Ory:CketGu?RZz3AlousAns~yWel9BInKeUr}yY5D+I)MpNg!Ni%Nk/:Ng?oo3EnEpT^upY3CkDD}yNdNgdomSsTT^&TeTt&Wi4EeIfeO{Ow:BBelB%Dd DyKeMpNgua+PtopR+T T(UghUndryVaWWnWsu.Y Zy3Ad AfArnA=Ctu*FtGG$G&dIsu*M#NdNg`NsOp?dSs#Tt Vel3ArB tyBr?yC&'FeFtGhtKeMbM.NkOnQuid/Tt!VeZ?d5AdAnB, C$CkG-NelyNgOpTt yUdUn+VeY$5CkyGga+Mb N?N^Xury3R-s:Ch(eDG-G}tIdIlInJ%KeMm$NNa+Nda>NgoNs]Nu$P!Rb!R^Rg(R(eRketRria+SkSs/ T^T i$ThTrixTt XimumZe3AdowAnAsu*AtCh<-D$DiaLodyLtMb M%yNt]NuRcyR+R.RryShSsa+T$Thod3Dd!DnightLk~]M-NdNimumN%Nu>Rac!Rr%S ySs/akeXXedXtu*5Bi!DelDifyMM|N.%NkeyN, N`OnR$ReRn(gSqu.oTh T]T%Unta(U'VeVie5ChFf(LeLtiplySc!SeumShroomS-/Tu$3Self/ yTh:I=MePk(Rrow/yT]Tu*3ArCkEdGati=G!@I` PhewR=/TTw%kUtr$V WsXt3CeGht5B!I'M(eeOd!Rm$R`SeTab!TeTh(gTi)VelW5C!?Mb R'T:K0EyJe@Li+Scu*S =Ta(Vious0CurE<Tob 0Or1FF Fi)T&2L1Ay0DI=Ymp-0It0CeEI#L(eLy1EnEraIn]Po'T]1An+B.Ch?dD D(?yG<I|Ig($Ph<0Tr-h0H 0Tdo%T TputTside0AlEnEr0NN 0Yg&0/ 0O}:CtDd!GeIrLa)LmNdaNelN-N` P RadeR|RkRrotRtySsT^ThTi|TrolTt nU'VeYm|3A)AnutArAs<tL-<NN$tyNcilOp!Pp Rfe@Rm.Rs#T2O}OtoRa'Ys-$0AnoCn-Ctu*E)GGe#~LotNkO} Pe/olT^Zza_)A}tA,-A>AyEa'Ed+U{UgUn+2EmEtIntL?LeLi)NdNyOlPul?Rt]S.]Ssib!/TatoTt yV tyWd W _@i)Ai'Ed-tEf Epa*Es|EttyEv|I)IdeIm?yIntI%.yIs#Iva>IzeOb!mO)[Odu)Of.OgramOje@Omo>OofOp tyOsp O>@OudOvide2Bl-Dd(g~LpL'Mpk(N^PilPpyR^a'R.yRpo'R'ShTZz!3Ramid:99Al.yAntumArt E,]I{ItIzO>:Bb.Cco#CeCkD?DioIlInI'~yMpN^NdomN+PidReTeTh V&WZ%3AdyAlAs#BelBuildC$lCei=CipeC%dCyc!Du)F!@F%mFu'G]G*tGul?Je@LaxLea'LiefLyMa(Memb M(dMo=Nd NewNtOp&PairPeatPla)P%tQui*ScueSemb!Si,Sour)Sp#'SultTi*T*atTurnUn]Ve$ViewW?d2Y`m0BBb#CeChDeD+F!GhtGidNgOtPp!SkTu$V$V 5AdA,BotBu,CketM<)OfOkieOmSeTa>UghUndU>Y$5Bb DeGLeNNwayR$:DDd!D}[FeIlLadLm#L#LtLu>MeMp!NdTisfyToshiU)Usa+VeY1A!AnA*Att E}HemeHoolI&)I[%sOrp]OutRapRe&RiptRub1AAr^As#AtC#dC*tCt]Cur.yEdEkGm|Le@~M(?Ni%N'Nt&)RiesRvi)Ss]Tt!TupV&_dowAftAllowA*EdEllEriffIeldIftI}IpIv O{OeOotOpOrtOuld O=RimpRugUff!Y0Bl(gCkDeE+GhtGnL|Lk~yLv Mil?Mp!N)NgR&/ Tua>XZe1A>Et^IIllInIrtUll0AbAmEepEnd I)IdeIghtImOg<OtOwUsh0AllArtI!OkeOo`0A{AkeApIffOw0ApCc Ci$CkDaFtL?Ldi LidLut]L=Me#eNgOnRryRtUlUndUpUr)U`0A)A*Ati$AwnEakEci$EedEllEndH eI)Id IkeInIr.L.OilOns%O#OrtOtRayReadR(gY0Ua*UeezeUir*l_b!AdiumAffA+AirsAmpAndArtA>AyEakEelEmEpE*oI{IllIngO{Oma^O}OolOryO=Ra>gyReetRikeR#gRugg!Ud|UffUmb!Y!0Bje@Bm.BwayC)[ChDd&Ff G?G+,ItMm NNnyN'tP PplyP*meReRfa)R+Rpri'RroundR=ySpe@/a(1AllowAmpApArmE?EetIftImIngIt^Ord1MbolMptomRup/em:B!Ck!GIlL|LkNkPeR+tSk/eTtooXi3A^Am~NN<tNnisNtRm/Xt_nkAtEmeEnE%yE*EyIngIsOughtReeRi=RowUmbUnd 0CketDeG LtMb MeNyPRedSsueT!5A,BaccoDayDdl EGe` I!tK&MatoM%rowNeNgueNightOlO`PP-Pp!R^RnadoRtoi'SsT$Uri,W?dW WnY_{AdeAff-Ag-A(Ansf ApAshA=lAyEatEeEndI$IbeI{Igg ImIpOphyOub!U{UeUlyUmpetU,U`Y2BeIt]Mb!NaN}lRkeyRnRt!1El=EntyI)InI,O1PeP-$:5Ly5B*lla0Ab!Awa*C!Cov D DoFairFoldHappyIf%mIqueItIv 'KnownLo{TilUsu$Veil1Da>GradeHoldOnP Set1B<Ge0A+EEdEfulE![U$0Il.y:C<tCuumGueLidL!yL=NNishP%Rious/Ult3H-!L=tNd%Ntu*NueRbRifyRs]RyS'lT <3Ab!Br<tCiousCt%yDeoEw~a+Nta+Ol(Rtu$RusSaS.Su$T$Vid5C$I)IdLc<oLumeTeYa+:GeG#ItLk~LnutNtRfa*RmRri%ShSp/eT VeY3Al`Ap#ArA'lA` BDd(gEk&dIrdLcome/T_!AtEatEelEnE*IpIsp 0DeD`FeLd~NNdowNeNgNkNn Nt ReSdomSeShT}[5LfM<Nd OdOlRdRkRldRryR`_pE{E,!I,I>Ong::Rd3Ar~ow9UUngU`:3BraRo9NeO\";\nconst checksum = \"0x3c8acc1e7b08d8e76f9fda015ef48dc8c710a73cb7e0f77b2c18a9b5a7adde60\";\nexport class LangEn extends WordlistOwl {\n constructor() { super(\"en\", words, checksum); }\n}\nexport const langEn = new LangEn();\n//# sourceMappingURL=lang-en.js.map","import { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version.js\";\nexport const logger = new Logger(version);\n//# sourceMappingURL=logger.js.map","export const version = \"@ethersproject/wallet@6.0.0-beta.8\";\n//# sourceMappingURL=_version.js.map","import { langEn as en } from \"./lang-en.js\";\nexport const wordlists = Object.freeze({\n en\n});\n//# sourceMappingURL=wordlists-en.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _WordlistOwlA_accent;\nimport { WordlistOwl } from \"./wordlist-owl.js\";\nimport { decodeOwlA } from \"./decode-owla.js\";\nexport class WordlistOwlA extends WordlistOwl {\n constructor(locale, data, accent, checksum) {\n super(locale, data, checksum);\n _WordlistOwlA_accent.set(this, void 0);\n __classPrivateFieldSet(this, _WordlistOwlA_accent, accent, \"f\");\n }\n get _accent() { return __classPrivateFieldGet(this, _WordlistOwlA_accent, \"f\"); }\n _decodeWords() {\n return decodeOwlA(this._data, this._accent);\n }\n}\n_WordlistOwlA_accent = new WeakMap();\n//# sourceMappingURL=wordlist-owla.js.map","import { decodeBits } from \"./bit-reader.js\";\nimport { decodeOwl } from \"./decode-owl.js\";\nexport function decodeOwlA(data, accents) {\n let words = decodeOwl(data).join(\",\");\n // Inject the accents\n accents.split(/,/g).forEach((accent) => {\n const match = accent.match(/^([a-z]*)([0-9]+)([0-9])(.*)$/);\n if (!match) {\n throw new Error(\"internal error parsing accents\");\n }\n let posOffset = 0;\n const positions = decodeBits(parseInt(match[3]), match[4]);\n const charCode = parseInt(match[2]);\n const regex = new RegExp(`([${match[1]}])`, \"g\");\n words = words.replace(regex, (all, letter) => {\n const rem = --positions[posOffset];\n if (rem === 0) {\n letter = String.fromCharCode(letter.charCodeAt(0), charCode);\n posOffset++;\n }\n return letter;\n });\n });\n return words.split(\",\");\n}\n//# sourceMappingURL=decode-owla.js.map","const Base64 = \")!@#$%^&*(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_\";\nexport function decodeBits(width, data) {\n const maxValue = (1 << width) - 1;\n const result = [];\n let accum = 0, bits = 0, flood = 0;\n for (let i = 0; i < data.length; i++) {\n // Accumulate 6 bits of data\n accum = ((accum << 6) | Base64.indexOf(data[i]));\n bits += 6;\n // While we have enough for a word...\n while (bits >= width) {\n // ...read the word\n const value = (accum >> (bits - width));\n accum &= (1 << (bits - width)) - 1;\n bits -= width;\n // A value of 0 indicates we exceeded maxValue, it\n // floods over into the next value\n if (value === 0) {\n flood += maxValue;\n }\n else {\n result.push(value + flood);\n flood = 0;\n }\n }\n }\n return result;\n}\n//# sourceMappingURL=bit-reader.js.map","import { arrayify, hexlify } from \"@ethersproject/bytes\";\nimport { pbkdf2, sha256 } from \"@ethersproject/crypto\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { toUtf8Bytes, UnicodeNormalizationForm } from \"@ethersproject/strings\";\nimport { langEn } from \"@ethersproject/wordlists\";\nimport { logger } from \"./logger.js\";\n// Returns a byte with the MSB bits set\nfunction getUpperMask(bits) {\n return ((1 << bits) - 1) << (8 - bits) & 0xff;\n}\n// Returns a byte with the LSB bits set\nfunction getLowerMask(bits) {\n return ((1 << bits) - 1) & 0xff;\n}\nfunction mnemonicToEntropy(mnemonic, wordlist = langEn) {\n logger.assertNormalize(\"NFKD\");\n if (wordlist == null) {\n wordlist = langEn;\n }\n const words = wordlist.split(mnemonic);\n if ((words.length % 3) !== 0 || words.length < 12 || words.length > 24) {\n logger.throwArgumentError(\"invalid mnemonic length\", \"mnemonic\", \"[ REDACTED ]\");\n }\n const entropy = arrayify(new Uint8Array(Math.ceil(11 * words.length / 8)));\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) {\n logger.throwArgumentError(`invalid mnemonic word at index ${i}`, \"mnemonic\", \"[ REDACTED ]\");\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 const entropyBits = 32 * words.length / 3;\n const checksumBits = words.length / 3;\n const checksumMask = getUpperMask(checksumBits);\n const checksum = arrayify(sha256(entropy.slice(0, entropyBits / 8)))[0] & checksumMask;\n if (checksum !== (entropy[entropy.length - 1] & checksumMask)) {\n logger.throwArgumentError(\"invalid mnemonic checksum\", \"mnemonic\", \"[ REDACTED ]\");\n }\n return hexlify(entropy.slice(0, entropyBits / 8));\n}\nfunction entropyToMnemonic(entropy, wordlist = langEn) {\n if ((entropy.length % 4) || entropy.length < 16 || entropy.length > 32) {\n logger.throwArgumentError(\"invalid entropy size\", \"entropy\", \"[ REDACTED ]\");\n }\n if (wordlist == null) {\n wordlist = langEn;\n }\n const indices = [0];\n let remainingBits = 11;\n for (let i = 0; i < entropy.length; i++) {\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 remainingBits -= 8;\n // This byte will complete an 11-bit index\n }\n else {\n indices[indices.length - 1] <<= remainingBits;\n indices[indices.length - 1] |= entropy[i] >> (8 - remainingBits);\n // Start the next word\n indices.push(entropy[i] & getLowerMask(8 - remainingBits));\n remainingBits += 3;\n }\n }\n // Compute the checksum bits\n const checksumBits = entropy.length / 4;\n const checksum = parseInt(sha256(entropy).substring(2, 4), 16) & getUpperMask(checksumBits);\n // Shift the checksum into the word indices\n indices[indices.length - 1] <<= checksumBits;\n indices[indices.length - 1] |= (checksum >> (8 - checksumBits));\n return wordlist.join(indices.map((index) => wordlist.getWord(index)));\n}\nconst _guard = {};\nexport class Mnemonic {\n constructor(guard, entropy, phrase, password, wordlist) {\n if (password == null) {\n password = \"\";\n }\n if (wordlist == null) {\n wordlist = langEn;\n }\n logger.assertPrivate(guard, _guard, \"Mnemonic\");\n defineProperties(this, { phrase, password, wordlist, entropy });\n }\n computeSeed() {\n const salt = toUtf8Bytes(\"mnemonic\" + this.password, UnicodeNormalizationForm.NFKD);\n return pbkdf2(toUtf8Bytes(this.phrase, UnicodeNormalizationForm.NFKD), salt, 2048, 64, \"sha512\");\n }\n static fromPhrase(phrase, password, wordlist) {\n // Normalize the case and space; throws if invalid\n const entropy = mnemonicToEntropy(phrase, wordlist);\n phrase = entropyToMnemonic(logger.getBytes(entropy), wordlist);\n return new Mnemonic(_guard, entropy, phrase, password, wordlist);\n }\n static fromEntropy(_entropy, password, wordlist) {\n const entropy = logger.getBytes(_entropy, \"entropy\");\n const phrase = entropyToMnemonic(entropy, wordlist);\n return new Mnemonic(_guard, hexlify(entropy), phrase, password, wordlist);\n }\n static entropyToPhrase(_entropy, wordlist) {\n const entropy = logger.getBytes(_entropy, \"entropy\");\n return entropyToMnemonic(entropy, wordlist);\n }\n static phraseToEntropy(phrase, wordlist) {\n return mnemonicToEntropy(phrase, wordlist);\n }\n static isValidMnemonic(phrase, wordlist) {\n try {\n mnemonicToEntropy(phrase, wordlist);\n return true;\n }\n catch (error) { }\n return false;\n }\n}\n//# sourceMappingURL=mnemonic.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _BaseWallet_signingKey;\nimport { getAddress, resolveAddress } from \"@ethersproject/address\";\nimport { hashMessage, TypedDataEncoder } from \"@ethersproject/hash\";\nimport { defineProperties, resolveProperties } from \"@ethersproject/properties\";\nimport { AbstractSigner } from \"@ethersproject/providers\";\nimport { computeAddress, Transaction } from \"@ethersproject/transaction\";\nimport { logger } from \"./logger.js\";\nexport class BaseWallet extends AbstractSigner {\n constructor(privateKey, provider) {\n super(provider);\n _BaseWallet_signingKey.set(this, void 0);\n __classPrivateFieldSet(this, _BaseWallet_signingKey, privateKey, \"f\");\n const address = computeAddress(this.signingKey.publicKey);\n defineProperties(this, { address });\n }\n // Store these in getters to reduce visibility in console.log\n get signingKey() { return __classPrivateFieldGet(this, _BaseWallet_signingKey, \"f\"); }\n get privateKey() { return this.signingKey.privateKey; }\n async getAddress() { return this.address; }\n connect(provider) {\n return new BaseWallet(__classPrivateFieldGet(this, _BaseWallet_signingKey, \"f\"), provider);\n }\n async signTransaction(_tx) {\n // Replace any Addressable or ENS name with an address\n const tx = Object.assign({}, _tx, await resolveProperties({\n to: (_tx.to ? resolveAddress(_tx.to, this.provider) : undefined),\n from: (_tx.from ? resolveAddress(_tx.from, this.provider) : undefined)\n }));\n if (tx.from != null) {\n if (getAddress(tx.from) !== this.address) {\n logger.throwArgumentError(\"transaction from address mismatch\", \"tx.from\", _tx.from);\n }\n delete tx.from;\n }\n // Build the transaction\n const btx = Transaction.from(tx);\n btx.signature = this.signingKey.sign(btx.unsignedHash);\n return btx.serialized;\n }\n async signMessage(message) {\n return this.signingKey.sign(hashMessage(message)).serialized;\n }\n async signTypedData(domain, types, value) {\n // Populate any ENS names\n const populated = await TypedDataEncoder.resolveNames(domain, types, value, async (name) => {\n if (this.provider == null) {\n return logger.throwError(\"cannot resolve ENS names without a provider\", \"UNSUPPORTED_OPERATION\", {\n operation: \"resolveName\",\n info: { name }\n });\n }\n const address = await this.provider.resolveName(name);\n if (address == null) {\n return logger.throwError(\"unconfigured ENS name\", \"UNCONFIGURED_NAME\", {\n value: name\n });\n }\n return address;\n });\n return this.signingKey.sign(TypedDataEncoder.hash(populated.domain, types, populated.value)).serialized;\n }\n}\n_BaseWallet_signingKey = new WeakMap();\n//# sourceMappingURL=base-wallet.js.map","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _a, _HDNodeWallet_fromSeed, _HDNodeWalletManager_root;\nimport { arrayify, concat, dataSlice, hexlify } from \"@ethersproject/bytes\";\nimport { computeHmac, randomBytes, ripemd160, sha256 } from \"@ethersproject/crypto\";\nimport { decodeBase58, encodeBase58, toBigInt, toHex } from \"@ethersproject/math\";\nimport { defineProperties } from \"@ethersproject/properties\";\nimport { VoidSigner } from \"@ethersproject/providers\";\nimport { SigningKey } from \"@ethersproject/signing-key\";\nimport { computeAddress } from \"@ethersproject/transaction\";\nimport { langEn } from \"@ethersproject/wordlists/lib/lang-en.js\";\nimport { logger } from \"./logger.js\";\nimport { Mnemonic } from \"./mnemonic.js\";\nimport { BaseWallet } from \"./base-wallet.js\";\nexport const defaultPath = \"m/44'/60'/0'/0/0\";\n// \"Bitcoin seed\"\nconst MasterSecret = new Uint8Array([66, 105, 116, 99, 111, 105, 110, 32, 115, 101, 101, 100]);\nconst HardenedBit = 0x80000000;\nconst N = BigInt(\"0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141\");\nconst Nibbles = \"0123456789abcdef\";\nfunction zpad(value, length) {\n let result = \"\";\n while (value) {\n result = Nibbles[value % 16] + result;\n value = Math.trunc(value / 16);\n }\n while (result.length < length * 2) {\n result = \"0\" + result;\n }\n return \"0x\" + result;\n}\nfunction encodeBase58Check(_value) {\n const value = logger.getBytes(_value);\n const check = dataSlice(sha256(sha256(value)), 0, 4);\n const bytes = concat([value, check]);\n return encodeBase58(bytes);\n}\nconst _guard = {};\nfunction ser_I(index, chainCode, publicKey, privateKey) {\n const data = new Uint8Array(37);\n if (index & HardenedBit) {\n if (privateKey == null) {\n return logger.throwError(\"cannot derive child of neutered node\", \"UNSUPPORTED_OPERATION\", {\n operation: \"deriveChild\"\n });\n }\n // Data = 0x00 || ser_256(k_par)\n data.set(arrayify(privateKey), 1);\n }\n else {\n // Data = ser_p(point(k_par))\n data.set(arrayify(publicKey));\n }\n // Data += ser_32(i)\n for (let i = 24; i >= 0; i -= 8) {\n data[33 + (i >> 3)] = ((index >> (24 - i)) & 0xff);\n }\n const I = arrayify(computeHmac(\"sha512\", chainCode, data));\n return { IL: I.slice(0, 32), IR: I.slice(32) };\n}\nfunction derivePath(node, path) {\n const components = path.split(\"/\");\n if (components.length === 0 || (components[0] === \"m\" && node.depth !== 0)) {\n throw new Error(\"invalid path - \" + path);\n }\n if (components[0] === \"m\") {\n components.shift();\n }\n let result = node;\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) {\n throw new Error(\"invalid path index - \" + component);\n }\n result = result.deriveChild(HardenedBit + index);\n }\n else if (component.match(/^[0-9]+$/)) {\n const index = parseInt(component);\n if (index >= HardenedBit) {\n throw new Error(\"invalid path index - \" + component);\n }\n result = result.deriveChild(index);\n }\n else {\n throw new Error(\"invalid path component - \" + component);\n }\n }\n return result;\n}\nexport class HDNodeWallet extends BaseWallet {\n constructor(guard, signingKey, parentFingerprint, chainCode, path, index, depth, mnemonic, provider) {\n super(signingKey, provider);\n logger.assertPrivate(guard, _guard, \"HDNodeWallet\");\n defineProperties(this, { publicKey: signingKey.compressedPublicKey });\n const fingerprint = dataSlice(ripemd160(sha256(this.publicKey)), 0, 4);\n defineProperties(this, {\n parentFingerprint, fingerprint,\n chainCode, path, index, depth\n });\n defineProperties(this, { mnemonic });\n }\n connect(provider) {\n return new HDNodeWallet(_guard, this.signingKey, this.parentFingerprint, this.chainCode, this.path, this.index, this.depth, this.mnemonic, provider);\n }\n get extendedKey() {\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 if (this.depth >= 256) {\n throw new Error(\"Depth too large!\");\n }\n return encodeBase58Check(concat([\n \"0x0488ADE4\", zpad(this.depth, 1), this.parentFingerprint,\n zpad(this.index, 4), this.chainCode,\n concat([\"0x00\", this.privateKey])\n ]));\n }\n hasPath() { return (this.path != null); }\n neuter() {\n return new HDNodeVoidWallet(_guard, this.address, this.publicKey, this.parentFingerprint, this.chainCode, this.path, this.index, this.depth, this.provider);\n }\n deriveChild(_index) {\n const index = logger.getNumber(_index, \"index\");\n if (index > 0xffffffff) {\n throw new Error(\"invalid index - \" + String(index));\n }\n // Base path\n let path = this.path;\n if (path) {\n path += \"/\" + (index & ~HardenedBit);\n if (index & HardenedBit) {\n path += \"'\";\n }\n }\n const { IR, IL } = ser_I(index, this.chainCode, this.publicKey, this.privateKey);\n const ki = new SigningKey(toHex((toBigInt(IL) + BigInt(this.privateKey)) % N, 32));\n return new HDNodeWallet(_guard, ki, this.fingerprint, hexlify(IR), path, index, this.depth + 1, this.mnemonic, this.provider);\n }\n derivePath(path) {\n return derivePath(this, path);\n }\n static fromSeed(seed) {\n return __classPrivateFieldGet(HDNodeWallet, _a, \"m\", _HDNodeWallet_fromSeed).call(HDNodeWallet, seed, null);\n }\n static fromPhrase(phrase, password = \"\", path = defaultPath, wordlist = langEn) {\n if (!path) {\n path = defaultPath;\n }\n const mnemonic = Mnemonic.fromPhrase(phrase, password, wordlist);\n return __classPrivateFieldGet(HDNodeWallet, _a, \"m\", _HDNodeWallet_fromSeed).call(HDNodeWallet, mnemonic.computeSeed(), mnemonic).derivePath(path);\n }\n static fromMnemonic(mnemonic, path = defaultPath) {\n if (!path) {\n path = defaultPath;\n }\n return __classPrivateFieldGet(HDNodeWallet, _a, \"m\", _HDNodeWallet_fromSeed).call(HDNodeWallet, mnemonic.computeSeed(), mnemonic).derivePath(path);\n }\n static fromExtendedKey(extendedKey) {\n const bytes = arrayify(decodeBase58(extendedKey)); // @TODO: redact\n if (bytes.length !== 82 || encodeBase58Check(bytes.slice(0, 78)) !== extendedKey) {\n logger.throwArgumentError(\"invalid extended key\", \"extendedKey\", \"[ REDACTED ]\");\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 switch (hexlify(bytes.slice(0, 4))) {\n // Public Key\n case \"0x0488b21e\":\n case \"0x043587cf\": {\n const publicKey = hexlify(key);\n return new HDNodeVoidWallet(_guard, computeAddress(publicKey), publicKey, parentFingerprint, chainCode, null, index, depth, null);\n }\n // Private Key\n case \"0x0488ade4\":\n case \"0x04358394 \":\n if (key[0] !== 0) {\n break;\n }\n return new HDNodeWallet(_guard, new SigningKey(key.slice(1)), parentFingerprint, chainCode, null, index, depth, null, null);\n }\n return logger.throwArgumentError(\"invalid extended key prefix\", \"extendedKey\", \"[ REDACTED ]\");\n }\n static createRandom(password = \"\", path = defaultPath, wordlist = langEn) {\n if (!path) {\n path = defaultPath;\n }\n const mnemonic = Mnemonic.fromEntropy(randomBytes(16), password, wordlist);\n return __classPrivateFieldGet(HDNodeWallet, _a, \"m\", _HDNodeWallet_fromSeed).call(HDNodeWallet, mnemonic.computeSeed(), mnemonic).derivePath(path);\n }\n}\n_a = HDNodeWallet, _HDNodeWallet_fromSeed = function _HDNodeWallet_fromSeed(_seed, mnemonic) {\n const seed = logger.getBytes(_seed, \"seed\");\n if (seed.length < 16 || seed.length > 64) {\n throw new Error(\"invalid seed\");\n }\n const I = arrayify(computeHmac(\"sha512\", MasterSecret, seed));\n const signingKey = new SigningKey(hexlify(I.slice(0, 32)));\n return new HDNodeWallet(_guard, signingKey, \"0x00000000\", hexlify(I.slice(32)), \"m\", 0, 0, mnemonic, null);\n};\nexport class HDNodeVoidWallet extends VoidSigner {\n constructor(guard, address, publicKey, parentFingerprint, chainCode, path, index, depth, provider) {\n super(address, provider);\n logger.assertPrivate(guard, _guard, \"HDNodeVoidWallet\");\n defineProperties(this, { publicKey });\n const fingerprint = dataSlice(ripemd160(sha256(publicKey)), 0, 4);\n defineProperties(this, {\n publicKey, fingerprint, parentFingerprint, chainCode, path, index, depth\n });\n }\n connect(provider) {\n return new HDNodeVoidWallet(_guard, this.address, this.publicKey, this.parentFingerprint, this.chainCode, this.path, this.index, this.depth, provider);\n }\n get extendedKey() {\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 if (this.depth >= 256) {\n throw new Error(\"Depth too large!\");\n }\n return encodeBase58Check(concat([\n \"0x0488B21E\",\n zpad(this.depth, 1),\n this.parentFingerprint,\n zpad(this.index, 4),\n this.chainCode,\n this.publicKey,\n ]));\n }\n hasPath() { return (this.path != null); }\n deriveChild(_index) {\n const index = logger.getNumber(_index, \"index\");\n if (index > 0xffffffff) {\n throw new Error(\"invalid index - \" + String(index));\n }\n // Base path\n let path = this.path;\n if (path) {\n path += \"/\" + (index & ~HardenedBit);\n if (index & HardenedBit) {\n path += \"'\";\n }\n }\n const { IR, IL } = ser_I(index, this.chainCode, this.publicKey, null);\n const Ki = SigningKey._addPoints(IL, this.publicKey, true);\n const address = computeAddress(Ki);\n return new HDNodeVoidWallet(_guard, address, Ki, this.fingerprint, hexlify(IR), path, index, this.depth + 1, this.provider);\n }\n derivePath(path) {\n return derivePath(this, path);\n }\n}\nexport class HDNodeWalletManager {\n constructor(phrase, password = \"\", path = \"m/44'/60'/0'/0\", locale = langEn) {\n _HDNodeWalletManager_root.set(this, void 0);\n __classPrivateFieldSet(this, _HDNodeWalletManager_root, HDNodeWallet.fromPhrase(phrase, password, path, locale), \"f\");\n }\n getSigner(index = 0) {\n return __classPrivateFieldGet(this, _HDNodeWalletManager_root, \"f\").deriveChild(index);\n }\n}\n_HDNodeWalletManager_root = new WeakMap();\nexport function getAccountPath(_index) {\n const index = logger.getNumber(_index, \"index\");\n if (index < 0 || index >= HardenedBit) {\n logger.throwArgumentError(\"invalid account index\", \"index\", index);\n }\n return `m/44'/60'/${index}'/0/0`;\n}\n//# sourceMappingURL=hdwallet.js.map","/*! MIT License. Copyright 2015-2022 Richard Moore <me@ricmoo.com>. See LICENSE.txt. */\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _AES_key, _AES_Kd, _AES_Ke;\n// Number of rounds by keysize\nconst numberOfRounds = { 16: 10, 24: 12, 32: 14 };\n// Round constant words\nconst 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// S-box and Inverse S-box (S is for Substitution)\nconst 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];\nconst 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// Transformations for encryption\nconst 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];\nconst 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];\nconst 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];\nconst 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// Transformations for decryption\nconst 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];\nconst 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];\nconst 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];\nconst 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// Transformations for decryption key expansion\nconst 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];\nconst 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];\nconst 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];\nconst 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];\nfunction convertToInt32(bytes) {\n const result = [];\n for (let i = 0; i < bytes.length; i += 4) {\n result.push((bytes[i] << 24) | (bytes[i + 1] << 16) | (bytes[i + 2] << 8) | bytes[i + 3]);\n }\n return result;\n}\nexport class AES {\n constructor(key) {\n _AES_key.set(this, void 0);\n _AES_Kd.set(this, void 0);\n _AES_Ke.set(this, void 0);\n if (!(this instanceof AES)) {\n throw Error('AES must be instanitated with `new`');\n }\n __classPrivateFieldSet(this, _AES_key, new Uint8Array(key), \"f\");\n const rounds = numberOfRounds[this.key.length];\n if (rounds == null) {\n throw new TypeError('invalid key size (must be 16, 24 or 32 bytes)');\n }\n // encryption round keys\n __classPrivateFieldSet(this, _AES_Ke, [], \"f\");\n // decryption round keys\n __classPrivateFieldSet(this, _AES_Kd, [], \"f\");\n for (let i = 0; i <= rounds; i++) {\n __classPrivateFieldGet(this, _AES_Ke, \"f\").push([0, 0, 0, 0]);\n __classPrivateFieldGet(this, _AES_Kd, \"f\").push([0, 0, 0, 0]);\n }\n const roundKeyCount = (rounds + 1) * 4;\n const KC = this.key.length / 4;\n // convert the key into ints\n const tk = convertToInt32(this.key);\n // copy values into round key arrays\n let index;\n for (let i = 0; i < KC; i++) {\n index = i >> 2;\n __classPrivateFieldGet(this, _AES_Ke, \"f\")[index][i % 4] = tk[i];\n __classPrivateFieldGet(this, _AES_Kd, \"f\")[rounds - index][i % 4] = tk[i];\n }\n // key expansion (fips-197 section 5.2)\n let rconpointer = 0;\n let 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 // key expansion (for non-256 bit)\n if (KC != 8) {\n for (let i = 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n // key expansion for 256-bit keys is \"slightly different\" (fips-197)\n }\n else {\n for (let i = 1; i < (KC / 2); i++) {\n tk[i] ^= tk[i - 1];\n }\n tt = tk[(KC / 2) - 1];\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 for (let i = (KC / 2) + 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n }\n // copy values into round key arrays\n let i = 0, r, c;\n while (i < KC && t < roundKeyCount) {\n r = t >> 2;\n c = t % 4;\n __classPrivateFieldGet(this, _AES_Ke, \"f\")[r][c] = tk[i];\n __classPrivateFieldGet(this, _AES_Kd, \"f\")[rounds - r][c] = tk[i++];\n t++;\n }\n }\n // inverse-cipher-ify the decryption round key (fips-197 section 5.3)\n for (let r = 1; r < rounds; r++) {\n for (let c = 0; c < 4; c++) {\n tt = __classPrivateFieldGet(this, _AES_Kd, \"f\")[r][c];\n __classPrivateFieldGet(this, _AES_Kd, \"f\")[r][c] = (U1[(tt >> 24) & 0xFF] ^\n U2[(tt >> 16) & 0xFF] ^\n U3[(tt >> 8) & 0xFF] ^\n U4[tt & 0xFF]);\n }\n }\n }\n get key() { return __classPrivateFieldGet(this, _AES_key, \"f\").slice(); }\n encrypt(plaintext) {\n if (plaintext.length != 16) {\n throw new TypeError('invalid plaintext size (must be 16 bytes)');\n }\n const rounds = __classPrivateFieldGet(this, _AES_Ke, \"f\").length - 1;\n const a = [0, 0, 0, 0];\n // convert plaintext to (ints ^ key)\n let t = convertToInt32(plaintext);\n for (let i = 0; i < 4; i++) {\n t[i] ^= __classPrivateFieldGet(this, _AES_Ke, \"f\")[0][i];\n }\n // apply round transforms\n for (let r = 1; r < rounds; r++) {\n for (let 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 __classPrivateFieldGet(this, _AES_Ke, \"f\")[r][i]);\n }\n t = a.slice();\n }\n // the last round is special\n const result = new Uint8Array(16);\n let tt = 0;\n for (let i = 0; i < 4; i++) {\n tt = __classPrivateFieldGet(this, _AES_Ke, \"f\")[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 return result;\n }\n decrypt(ciphertext) {\n if (ciphertext.length != 16) {\n throw new TypeError('invalid ciphertext size (must be 16 bytes)');\n }\n const rounds = __classPrivateFieldGet(this, _AES_Kd, \"f\").length - 1;\n const a = [0, 0, 0, 0];\n // convert plaintext to (ints ^ key)\n let t = convertToInt32(ciphertext);\n for (let i = 0; i < 4; i++) {\n t[i] ^= __classPrivateFieldGet(this, _AES_Kd, \"f\")[0][i];\n }\n // apply round transforms\n for (let r = 1; r < rounds; r++) {\n for (let 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 __classPrivateFieldGet(this, _AES_Kd, \"f\")[r][i]);\n }\n t = a.slice();\n }\n // the last round is special\n const result = new Uint8Array(16);\n let tt = 0;\n for (let i = 0; i < 4; i++) {\n tt = __classPrivateFieldGet(this, _AES_Kd, \"f\")[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 return result;\n }\n}\n_AES_key = new WeakMap(), _AES_Kd = new WeakMap(), _AES_Ke = new WeakMap();\n//# sourceMappingURL=aes.js.map","import { AES } from \"./aes.js\";\nexport class ModeOfOperation {\n constructor(name, key, cls) {\n if (cls && !(this instanceof cls)) {\n throw new Error(`${name} must be instantiated with \"new\"`);\n }\n Object.defineProperties(this, {\n aes: { enumerable: true, value: new AES(key) },\n name: { enumerable: true, value: name }\n });\n }\n}\n//# sourceMappingURL=mode.js.map","// Cipher Block Chaining\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _CBC_iv, _CBC_lastBlock;\nimport { ModeOfOperation } from \"./mode.js\";\nexport class CBC extends ModeOfOperation {\n constructor(key, iv) {\n super(\"ECC\", key, CBC);\n _CBC_iv.set(this, void 0);\n _CBC_lastBlock.set(this, void 0);\n if (iv) {\n if (iv.length % 16) {\n throw new TypeError(\"invalid iv size (must be 16 bytes)\");\n }\n __classPrivateFieldSet(this, _CBC_iv, new Uint8Array(iv), \"f\");\n }\n else {\n __classPrivateFieldSet(this, _CBC_iv, new Uint8Array(16), \"f\");\n }\n __classPrivateFieldSet(this, _CBC_lastBlock, this.iv, \"f\");\n }\n get iv() { return new Uint8Array(__classPrivateFieldGet(this, _CBC_iv, \"f\")); }\n encrypt(plaintext) {\n if (plaintext.length % 16) {\n throw new TypeError(\"invalid plaintext size (must be multiple of 16 bytes)\");\n }\n const ciphertext = new Uint8Array(plaintext.length);\n for (let i = 0; i < plaintext.length; i += 16) {\n for (let j = 0; j < 16; j++) {\n __classPrivateFieldGet(this, _CBC_lastBlock, \"f\")[j] ^= plaintext[i + j];\n }\n __classPrivateFieldSet(this, _CBC_lastBlock, this.aes.encrypt(__classPrivateFieldGet(this, _CBC_lastBlock, \"f\")), \"f\");\n ciphertext.set(__classPrivateFieldGet(this, _CBC_lastBlock, \"f\"), i);\n }\n return ciphertext;\n }\n decrypt(ciphertext) {\n if (ciphertext.length % 16) {\n throw new TypeError(\"invalid ciphertext size (must be multiple of 16 bytes)\");\n }\n const plaintext = new Uint8Array(ciphertext.length);\n for (let i = 0; i < ciphertext.length; i += 16) {\n const block = this.aes.decrypt(ciphertext.subarray(i, i + 16));\n for (let j = 0; j < 16; j++) {\n plaintext[i + j] = block[j] ^ __classPrivateFieldGet(this, _CBC_lastBlock, \"f\")[j];\n __classPrivateFieldGet(this, _CBC_lastBlock, \"f\")[j] = ciphertext[i + j];\n }\n }\n return plaintext;\n }\n}\n_CBC_iv = new WeakMap(), _CBC_lastBlock = new WeakMap();\n//# sourceMappingURL=mode-cbc.js.map","// Cipher Feedback\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _CFB_instances, _CFB_iv, _CFB_shiftRegister, _CFB_shift;\nimport { ModeOfOperation } from \"./mode.js\";\nexport class CFB extends ModeOfOperation {\n constructor(key, iv, segmentSize = 8) {\n super(\"CFB\", key, CFB);\n _CFB_instances.add(this);\n _CFB_iv.set(this, void 0);\n _CFB_shiftRegister.set(this, void 0);\n // This library currently only handles byte-aligned segmentSize\n if (!Number.isInteger(segmentSize) || (segmentSize % 8)) {\n throw new TypeError(\"invalid segmentSize\");\n }\n Object.defineProperties(this, {\n segmentSize: { enumerable: true, value: segmentSize }\n });\n if (iv) {\n if (iv.length % 16) {\n throw new TypeError(\"invalid iv size (must be 16 bytes)\");\n }\n __classPrivateFieldSet(this, _CFB_iv, new Uint8Array(iv), \"f\");\n }\n else {\n __classPrivateFieldSet(this, _CFB_iv, new Uint8Array(16), \"f\");\n }\n __classPrivateFieldSet(this, _CFB_shiftRegister, this.iv, \"f\");\n }\n get iv() { return new Uint8Array(__classPrivateFieldGet(this, _CFB_iv, \"f\")); }\n encrypt(plaintext) {\n if (8 * plaintext.length % this.segmentSize) {\n throw new TypeError(\"invalid plaintext size (must be multiple of segmentSize bytes)\");\n }\n const segmentSize = this.segmentSize / 8;\n const ciphertext = new Uint8Array(plaintext);\n for (let i = 0; i < ciphertext.length; i += segmentSize) {\n const xorSegment = this.aes.encrypt(__classPrivateFieldGet(this, _CFB_shiftRegister, \"f\"));\n for (let j = 0; j < segmentSize; j++) {\n ciphertext[i + j] ^= xorSegment[j];\n }\n __classPrivateFieldGet(this, _CFB_instances, \"m\", _CFB_shift).call(this, ciphertext.subarray(i));\n }\n return ciphertext;\n }\n decrypt(ciphertext) {\n if (8 * ciphertext.length % this.segmentSize) {\n throw new TypeError(\"invalid ciphertext size (must be multiple of segmentSize bytes)\");\n }\n const segmentSize = this.segmentSize / 8;\n const plaintext = new Uint8Array(ciphertext);\n for (let i = 0; i < plaintext.length; i += segmentSize) {\n const xorSegment = this.aes.encrypt(__classPrivateFieldGet(this, _CFB_shiftRegister, \"f\"));\n for (let j = 0; j < segmentSize; j++) {\n plaintext[i + j] ^= xorSegment[j];\n }\n __classPrivateFieldGet(this, _CFB_instances, \"m\", _CFB_shift).call(this, ciphertext.subarray(i));\n }\n return plaintext;\n }\n}\n_CFB_iv = new WeakMap(), _CFB_shiftRegister = new WeakMap(), _CFB_instances = new WeakSet(), _CFB_shift = function _CFB_shift(data) {\n const segmentSize = this.segmentSize / 8;\n // Shift the register\n __classPrivateFieldGet(this, _CFB_shiftRegister, \"f\").set(__classPrivateFieldGet(this, _CFB_shiftRegister, \"f\").subarray(segmentSize));\n __classPrivateFieldGet(this, _CFB_shiftRegister, \"f\").set(data.subarray(0, segmentSize), 16 - segmentSize);\n};\n//# sourceMappingURL=mode-cfb.js.map","// Counter Mode\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _CTR_remaining, _CTR_remainingIndex, _CTR_counter;\nimport { ModeOfOperation } from \"./mode.js\";\nexport class CTR extends ModeOfOperation {\n constructor(key, initialValue) {\n super(\"CTR\", key, CTR);\n // Remaining bytes for the one-time pad\n _CTR_remaining.set(this, void 0);\n _CTR_remainingIndex.set(this, void 0);\n // The current counter\n _CTR_counter.set(this, void 0);\n __classPrivateFieldSet(this, _CTR_counter, new Uint8Array(16), \"f\");\n __classPrivateFieldGet(this, _CTR_counter, \"f\").fill(0);\n __classPrivateFieldSet(this, _CTR_remaining, __classPrivateFieldGet(this, _CTR_counter, \"f\"), \"f\"); // This will be discarded immediately\n __classPrivateFieldSet(this, _CTR_remainingIndex, 16, \"f\");\n if (initialValue == null) {\n initialValue = 1;\n }\n if (typeof (initialValue) === \"number\") {\n this.setCounterValue(initialValue);\n }\n else {\n this.setCounterBytes(initialValue);\n }\n }\n get counter() { return new Uint8Array(__classPrivateFieldGet(this, _CTR_counter, \"f\")); }\n setCounterValue(value) {\n if (!Number.isInteger(value) || value < 0 || value > Number.MAX_SAFE_INTEGER) {\n throw new TypeError(\"invalid counter initial integer value\");\n }\n for (let index = 15; index >= 0; --index) {\n __classPrivateFieldGet(this, _CTR_counter, \"f\")[index] = value % 256;\n value = Math.floor(value / 256);\n }\n }\n setCounterBytes(value) {\n if (value.length !== 16) {\n throw new TypeError(\"invalid counter initial Uint8Array value length\");\n }\n __classPrivateFieldGet(this, _CTR_counter, \"f\").set(value);\n }\n increment() {\n for (let i = 15; i >= 0; i--) {\n if (__classPrivateFieldGet(this, _CTR_counter, \"f\")[i] === 255) {\n __classPrivateFieldGet(this, _CTR_counter, \"f\")[i] = 0;\n }\n else {\n __classPrivateFieldGet(this, _CTR_counter, \"f\")[i]++;\n break;\n }\n }\n }\n encrypt(plaintext) {\n var _a, _b;\n const crypttext = new Uint8Array(plaintext);\n for (let i = 0; i < crypttext.length; i++) {\n if (__classPrivateFieldGet(this, _CTR_remainingIndex, \"f\") === 16) {\n __classPrivateFieldSet(this, _CTR_remaining, this.aes.encrypt(__classPrivateFieldGet(this, _CTR_counter, \"f\")), \"f\");\n __classPrivateFieldSet(this, _CTR_remainingIndex, 0, \"f\");\n this.increment();\n }\n crypttext[i] ^= __classPrivateFieldGet(this, _CTR_remaining, \"f\")[__classPrivateFieldSet(this, _CTR_remainingIndex, (_b = __classPrivateFieldGet(this, _CTR_remainingIndex, \"f\"), _a = _b++, _b), \"f\"), _a];\n }\n return crypttext;\n }\n decrypt(ciphertext) {\n return this.encrypt(ciphertext);\n }\n}\n_CTR_remaining = new WeakMap(), _CTR_remainingIndex = new WeakMap(), _CTR_counter = new WeakMap();\n//# sourceMappingURL=mode-ctr.js.map","import { arrayify, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, UnicodeNormalizationForm } from '@ethersproject/strings';\nimport { logger } from \"./logger.js\";\nexport function looseArrayify(hexString) {\n if (typeof (hexString) === 'string' && hexString.substring(0, 2) !== '0x') {\n hexString = '0x' + hexString;\n }\n return arrayify(hexString);\n}\nexport function zpad(value, length) {\n value = String(value);\n while (value.length < length) {\n value = '0' + value;\n }\n return value;\n}\nexport function getPassword(password) {\n if (typeof (password) === 'string') {\n return toUtf8Bytes(password, UnicodeNormalizationForm.NFKC);\n }\n return arrayify(password);\n}\nexport function spelunk(object, _path) {\n const match = _path.match(/^([a-z0-9$_.-]*)(:([a-z]+))?(!)?$/i);\n if (match == null) {\n return logger.throwArgumentError(\"invalid path\", \"path\", _path);\n }\n const path = match[1];\n const type = match[3];\n const reqd = (match[4] === \"!\");\n let cur = object;\n for (const comp of path.toLowerCase().split('.')) {\n // Search for a child object with a case-insensitive matching key\n if (Array.isArray(cur)) {\n if (!comp.match(/^[0-9]+$/)) {\n break;\n }\n cur = cur[parseInt(comp)];\n }\n else if (typeof (cur) === \"object\") {\n let found = null;\n for (const key in cur) {\n if (key.toLowerCase() === comp) {\n found = cur[key];\n break;\n }\n }\n cur = found;\n }\n else {\n cur = null;\n }\n if (cur == null) {\n break;\n }\n }\n if (reqd && cur == null) {\n logger.throwArgumentError(\"missing required value\", \"path\", path);\n }\n if (type && cur != null) {\n if (type === \"int\") {\n if (typeof (cur) === \"string\" && cur.match(/^-?[0-9]+$/)) {\n return parseInt(cur);\n }\n else if (Number.isSafeInteger(cur)) {\n return cur;\n }\n }\n if (type === \"number\") {\n if (typeof (cur) === \"string\" && cur.match(/^-?[0-9.]*$/)) {\n return parseFloat(cur);\n }\n }\n if (type === \"data\") {\n if (typeof (cur) === \"string\") {\n return looseArrayify(cur);\n }\n }\n if (type === \"array\" && Array.isArray(cur)) {\n return cur;\n }\n if (type === typeof (cur)) {\n return cur;\n }\n logger.throwArgumentError(`wrong type found for ${type} `, \"path\", path);\n }\n return cur;\n}\n/*\nexport function follow(object: any, path: string): null | string {\n let currentChild = object;\n\n for (const comp of path.toLowerCase().split('/')) {\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() === comp) {\n matchingChild = currentChild[key];\n break;\n }\n }\n\n if (matchingChild === null) { return null; }\n\n currentChild = matchingChild;\n }\n\n return currentChild;\n}\n\n// \"path/to/something:type!\"\nexport function followRequired(data: any, path: string): string {\n const value = follow(data, path);\n if (value != null) { return value; }\n return logger.throwArgumentError(\"invalid value\", `data:${ path }`,\n JSON.stringify(data));\n}\n*/\n// See: https://www.ietf.org/rfc/rfc4122.txt (Section 4.4)\nexport function uuidV4(randomBytes) {\n const bytes = logger.getBytes(randomBytes, \"randomBytes\");\n // Section: 4.1.3:\n // - time_hi_and_version[12:16] = 0b0100\n bytes[6] = (bytes[6] & 0x0f) | 0x40;\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 const value = hexlify(bytes);\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//# sourceMappingURL=utils.js.map","import { CBC, pkcs7Strip } from \"aes-js\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify } from \"@ethersproject/bytes\";\nimport { pbkdf2 } from \"@ethersproject/crypto\";\nimport { id } from \"@ethersproject/hash\";\nimport { logger } from \"./logger.js\";\nimport { getPassword, looseArrayify, spelunk } from \"./utils.js\";\nexport function isCrowdsaleJson(json) {\n try {\n const data = JSON.parse(json);\n if (data.encseed) {\n return true;\n }\n }\n catch (error) { }\n return false;\n}\n// See: https://github.com/ethereum/pyethsaletool\nexport function decryptCrowdsaleJson(json, _password) {\n const data = JSON.parse(json);\n const password = getPassword(_password);\n // Ethereum Address\n const address = getAddress(spelunk(data, \"ethaddr:string!\"));\n // Encrypted Seed\n const encseed = looseArrayify(spelunk(data, \"encseed:string!\"));\n if (!encseed || (encseed.length % 16) !== 0) {\n logger.throwArgumentError(\"invalid encseed\", \"json\", json);\n }\n const key = arrayify(pbkdf2(password, password, 2000, 32, \"sha256\")).slice(0, 16);\n const iv = encseed.slice(0, 16);\n const encryptedSeed = encseed.slice(16);\n // Decrypt the seed\n const aesCbc = new CBC(key, iv);\n const seed = pkcs7Strip(arrayify(aesCbc.decrypt(encryptedSeed)));\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 return { address, privateKey: id(seedHex) };\n}\n//# sourceMappingURL=json-crowdsale.js.map","export function pkcs7Pad(data) {\n const padder = 16 - (data.length % 16);\n const result = new Uint8Array(data.length + padder);\n result.set(data);\n for (let i = data.length; i < result.length; i++) {\n result[i] = padder;\n }\n return result;\n}\nexport function pkcs7Strip(data) {\n if (data.length < 16) {\n throw new TypeError('PKCS#7 invalid length');\n }\n const padder = data[data.length - 1];\n if (padder > 16) {\n throw new TypeError('PKCS#7 padding byte out of range');\n }\n const length = data.length - padder;\n for (let i = 0; i < padder; i++) {\n if (data[length + i] !== padder) {\n throw new TypeError('PKCS#7 invalid padding byte');\n }\n }\n return new Uint8Array(data.subarray(0, length));\n}\n//# sourceMappingURL=padding.js.map","// Output Feedback\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _OFB_iv, _OFB_lastPrecipher, _OFB_lastPrecipherIndex;\nimport { ModeOfOperation } from \"./mode.js\";\nexport class OFB extends ModeOfOperation {\n constructor(key, iv) {\n super(\"OFB\", key, OFB);\n _OFB_iv.set(this, void 0);\n _OFB_lastPrecipher.set(this, void 0);\n _OFB_lastPrecipherIndex.set(this, void 0);\n if (iv) {\n if (iv.length % 16) {\n throw new TypeError(\"invalid iv size (must be 16 bytes)\");\n }\n __classPrivateFieldSet(this, _OFB_iv, new Uint8Array(iv), \"f\");\n }\n else {\n __classPrivateFieldSet(this, _OFB_iv, new Uint8Array(16), \"f\");\n }\n __classPrivateFieldSet(this, _OFB_lastPrecipher, this.iv, \"f\");\n __classPrivateFieldSet(this, _OFB_lastPrecipherIndex, 16, \"f\");\n }\n get iv() { return new Uint8Array(__classPrivateFieldGet(this, _OFB_iv, \"f\")); }\n encrypt(plaintext) {\n var _a, _b;\n if (plaintext.length % 16) {\n throw new TypeError(\"invalid plaintext size (must be multiple of 16 bytes)\");\n }\n const ciphertext = new Uint8Array(plaintext);\n for (let i = 0; i < ciphertext.length; i++) {\n if (__classPrivateFieldGet(this, _OFB_lastPrecipherIndex, \"f\") === 16) {\n __classPrivateFieldSet(this, _OFB_lastPrecipher, this.aes.encrypt(__classPrivateFieldGet(this, _OFB_lastPrecipher, \"f\")), \"f\");\n __classPrivateFieldSet(this, _OFB_lastPrecipherIndex, 0, \"f\");\n }\n ciphertext[i] ^= __classPrivateFieldGet(this, _OFB_lastPrecipher, \"f\")[__classPrivateFieldSet(this, _OFB_lastPrecipherIndex, (_b = __classPrivateFieldGet(this, _OFB_lastPrecipherIndex, \"f\"), _a = _b++, _b), \"f\"), _a];\n }\n return ciphertext;\n }\n decrypt(ciphertext) {\n if (ciphertext.length % 16) {\n throw new TypeError(\"invalid ciphertext size (must be multiple of 16 bytes)\");\n }\n return this.encrypt(ciphertext);\n }\n}\n_OFB_iv = new WeakMap(), _OFB_lastPrecipher = new WeakMap(), _OFB_lastPrecipherIndex = new WeakMap();\n//# sourceMappingURL=mode-ofb.js.map","import { CTR } from \"aes-js\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify, concat, hexlify } from \"@ethersproject/bytes\";\nimport { keccak256, pbkdf2, randomBytes, scrypt, scryptSync } from \"@ethersproject/crypto\";\nimport { computeAddress } from \"@ethersproject/transaction\";\nimport { logger } from \"./logger.js\";\nimport { getPassword, spelunk, uuidV4, zpad } from \"./utils.js\";\nimport { version } from \"./_version.js\";\nconst defaultPath = \"m/44'/60'/0'/0/0\";\nexport function isKeystoreJson(json) {\n try {\n const data = JSON.parse(json);\n const version = ((data.version != null) ? parseInt(data.version) : 0);\n if (version === 3) {\n return true;\n }\n }\n catch (error) { }\n return false;\n}\nfunction decrypt(data, key, ciphertext) {\n const cipher = spelunk(data, \"crypto.cipher:string\");\n if (cipher === \"aes-128-ctr\") {\n const iv = spelunk(data, \"crypto.cipherparams.iv:data!\");\n const aesCtr = new CTR(key, iv);\n return hexlify(aesCtr.decrypt(ciphertext));\n }\n return logger.throwError(\"unsupported cipher\", \"UNSUPPORTED_OPERATION\", {\n operation: \"decrypt\"\n });\n}\nfunction getAccount(data, _key) {\n const key = logger.getBytes(_key);\n const ciphertext = spelunk(data, \"crypto.ciphertext:data!\");\n const computedMAC = hexlify(keccak256(concat([key.slice(16, 32), ciphertext]))).substring(2);\n if (computedMAC !== spelunk(data, \"crypto.mac:string!\").toLowerCase()) {\n return logger.throwArgumentError(\"incorrect password\", \"password\", \"[ REDACTED ]\");\n }\n const privateKey = decrypt(data, key.slice(0, 16), ciphertext);\n const address = computeAddress(privateKey);\n if (data.address) {\n let check = data.address.toLowerCase();\n if (check.substring(0, 2) !== \"0x\") {\n check = \"0x\" + check;\n }\n if (getAddress(check) !== address) {\n logger.throwArgumentError(\"keystore address/privateKey mismatch\", \"address\", data.address);\n }\n }\n const account = { address, privateKey };\n // Version 0.1 x-ethers metadata must contain an encrypted mnemonic phrase\n const version = spelunk(data, \"x-ethers.version:string\");\n if (version === \"0.1\") {\n const mnemonicKey = key.slice(32, 64);\n const mnemonicCiphertext = spelunk(data, \"x-ethers.mnemonicCiphertext:data!\");\n const mnemonicIv = spelunk(data, \"x-ethers.mnemonicCounter:data!\");\n const mnemonicAesCtr = new CTR(mnemonicKey, mnemonicIv);\n account.mnemonic = {\n path: (spelunk(data, \"x-ethers.path:string\") || defaultPath),\n locale: (spelunk(data, \"x-ethers.locale:string\") || \"en\"),\n entropy: hexlify(arrayify(mnemonicAesCtr.decrypt(mnemonicCiphertext)))\n };\n }\n return account;\n}\nfunction getKdfParams(data) {\n const kdf = spelunk(data, \"crypto.kdf:string\");\n if (kdf && typeof (kdf) === \"string\") {\n const throwError = function (name, value) {\n return logger.throwArgumentError(\"invalid key-derivation function parameters\", name, value);\n };\n if (kdf.toLowerCase() === \"scrypt\") {\n const salt = spelunk(data, \"crypto.kdfparams.salt:data!\");\n const N = spelunk(data, \"crypto.kdfparams.n:int!\");\n const r = spelunk(data, \"crypto.kdfparams.r:int!\");\n const p = spelunk(data, \"crypto.kdfparams.p:int!\");\n // Check for all required parameters\n if (!N || !r || !p) {\n return throwError(\"kdf\", kdf);\n }\n // Make sure N is a power of 2\n if ((N & (N - 1)) !== 0) {\n return throwError(\"N\", N);\n }\n const dkLen = spelunk(data, \"crypto.kdfparams.dklen:int!\");\n if (dkLen !== 32) {\n return throwError(\"dklen\", dkLen);\n }\n return { name: \"scrypt\", salt, N, r, p, dkLen: 64 };\n }\n else if (kdf.toLowerCase() === \"pbkdf2\") {\n const salt = spelunk(data, \"crypto.kdfparams.salt:data!\");\n const prf = spelunk(data, \"crypto.kdfparams.prf:string!\");\n const algorithm = prf.split(\"-\").pop();\n if (algorithm !== \"sha256\" && algorithm !== \"sha512\") {\n return throwError(\"prf\", prf);\n }\n const count = spelunk(data, \"crypto.kdfparams.c:int!\");\n const dkLen = spelunk(data, \"crypto.kdfparams.dklen:int!\");\n if (dkLen !== 32) {\n throwError(\"dklen\", dkLen);\n }\n return { name: \"pbkdf2\", salt, count, dkLen, algorithm };\n }\n }\n return logger.throwArgumentError(\"unsupported key-derivation function\", \"kdf\", kdf);\n}\nexport function decryptKeystoreJsonSync(json, _password) {\n const data = JSON.parse(json);\n const password = getPassword(_password);\n const params = getKdfParams(data);\n if (params.name === \"pbkdf2\") {\n const { salt, count, dkLen, algorithm } = params;\n const key = pbkdf2(password, salt, count, dkLen, algorithm);\n return getAccount(data, key);\n }\n else if (params.name === \"scrypt\") {\n const { salt, N, r, p, dkLen } = params;\n const key = scryptSync(password, salt, N, r, p, dkLen);\n return getAccount(data, key);\n }\n throw new Error(\"unreachable\");\n}\nfunction stall(duration) {\n return new Promise((resolve) => { setTimeout(() => { resolve(); }, duration); });\n}\nexport async function decryptKeystoreJson(json, _password, progress) {\n const data = JSON.parse(json);\n const password = getPassword(_password);\n const params = getKdfParams(data);\n if (params.name === \"pbkdf2\") {\n if (progress) {\n progress(0);\n await stall(0);\n }\n const { salt, count, dkLen, algorithm } = params;\n const key = pbkdf2(password, salt, count, dkLen, algorithm);\n if (progress) {\n progress(1);\n await stall(0);\n }\n return getAccount(data, key);\n }\n else if (params.name === \"scrypt\") {\n const { salt, N, r, p, dkLen } = params;\n const key = await scrypt(password, salt, N, r, p, dkLen, progress);\n return getAccount(data, key);\n }\n throw new Error(\"unreachable\");\n}\nexport async function encryptKeystoreJson(account, password, options, progressCallback) {\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 // Check the mnemonic (if any) matches the private key\n /*\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 // 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) {\n options = {};\n }\n const privateKey = logger.getBytes(account.privateKey, \"privateKey\");\n const passwordBytes = getPassword(password);\n /*\n let mnemonic: null | Mnemonic = null;\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 mnemonic = Mnemonic.from(\n }\n */\n // Check/generate the salt\n const salt = (options.salt != null) ? logger.getBytes(options.salt, \"options.slat\") : randomBytes(32);\n // Override initialization vector\n const iv = (options.iv != null) ? logger.getBytes(options.iv, \"options.iv\") : randomBytes(16);\n if (iv.length !== 16) {\n logger.throwArgumentError(\"invalid options.iv\", \"options.iv\", options.iv);\n }\n // Override the uuid\n const uuidRandom = (options.uuid != null) ? logger.getBytes(options.uuid, \"options.uuid\") : randomBytes(16);\n if (uuidRandom.length !== 16) {\n logger.throwArgumentError(\"invalid options.uuid\", \"options.uuid\", options.iv);\n }\n if (uuidRandom.length !== 16) {\n throw new Error(\"invalid uuid\");\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 N = options.scrypt.N;\n }\n if (options.scrypt.r) {\n r = options.scrypt.r;\n }\n if (options.scrypt.p) {\n 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 const _key = await scrypt(passwordBytes, salt, N, r, p, 64, progressCallback);\n const key = arrayify(_key);\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 // Encrypt the private key\n const aesCtr = new CTR(derivedKey, iv);\n const ciphertext = arrayify(aesCtr.encrypt(privateKey));\n // Compute the message authentication code, used to check the password\n const mac = keccak256(concat([macPrefix, ciphertext]));\n // See: https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition\n const data = {\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 // If we have a mnemonic, encrypt it into the JSON wallet\n if (account.mnemonic) {\n const client = (options.client != null) ? options.client : `ethers/${version}`;\n const path = account.mnemonic.path || defaultPath;\n const locale = account.mnemonic.locale || \"en\";\n const mnemonicKey = key.slice(32, 64);\n const entropy = logger.getBytes(account.mnemonic.entropy, \"account.mnemonic.entropy\");\n const mnemonicIv = randomBytes(16);\n const mnemonicAesCtr = new CTR(mnemonicKey, mnemonicIv);\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 const gethFilename = (\"UTC--\" + timestamp + \"--\" + data.address);\n data[\"x-ethers\"] = {\n client, gethFilename, path, locale,\n mnemonicCounter: hexlify(mnemonicIv).substring(2),\n mnemonicCiphertext: hexlify(mnemonicCiphertext).substring(2),\n version: \"0.1\"\n };\n }\n return JSON.stringify(data);\n}\n//# sourceMappingURL=json-keystore.js.map","var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Wallet_mnemonic;\nimport { isHexString } from \"@ethersproject/bytes\";\nimport { randomBytes } from \"@ethersproject/crypto\";\nimport { SigningKey } from \"@ethersproject/signing-key\";\nimport { computeAddress } from \"@ethersproject/transaction\";\nimport { BaseWallet } from \"./base-wallet.js\";\nimport { HDNodeWallet } from \"./hdwallet.js\";\nimport { decryptCrowdsaleJson, isCrowdsaleJson } from \"./json-crowdsale.js\";\nimport { decryptKeystoreJson, decryptKeystoreJsonSync, isKeystoreJson } from \"./json-keystore.js\";\nimport { logger } from \"./logger.js\";\nimport { Mnemonic } from \"./mnemonic.js\";\nfunction tryWallet(value) {\n try {\n if (!value || !value.signingKey) {\n return null;\n }\n const key = trySigningKey(value.signingKey);\n if (key == null || computeAddress(key.publicKey) !== value.address) {\n return null;\n }\n if (value.mnemonic) {\n const wallet = HDNodeWallet.fromMnemonic(value.mnemonic);\n if (wallet.privateKey !== key.privateKey) {\n return null;\n }\n }\n return value;\n }\n catch (e) {\n console.log(e);\n }\n return null;\n}\n// Try using value as mnemonic to derive the defaultPath HDodeWallet\nfunction tryMnemonic(value) {\n try {\n if (value == null || typeof (value.phrase) !== \"string\" ||\n typeof (value.password) !== \"string\" ||\n value.wordlist == null) {\n return null;\n }\n return HDNodeWallet.fromPhrase(value.phrase, value.password, null, value.wordlist);\n }\n catch (error) {\n console.log(error);\n }\n return null;\n}\nfunction trySigningKey(value) {\n try {\n if (!value || !isHexString(value.privateKey, 32)) {\n return null;\n }\n const key = value.privateKey;\n if (SigningKey.computePublicKey(key) !== value.publicKey) {\n return null;\n }\n return new SigningKey(key);\n }\n catch (e) {\n console.log(e);\n }\n return null;\n}\nfunction stall(duration) {\n return new Promise((resolve) => { setTimeout(() => { resolve(); }, duration); });\n}\nexport class Wallet extends BaseWallet {\n constructor(key, provider) {\n let signingKey = null;\n let mnemonic = null;\n // A normal private key\n if (typeof (key) === \"string\") {\n signingKey = new SigningKey(key);\n }\n // Try Wallet\n if (signingKey == null) {\n const wallet = tryWallet(key);\n if (wallet) {\n signingKey = wallet.signingKey;\n mnemonic = wallet.mnemonic || null;\n }\n }\n // Try Mnemonic, with the defaultPath wallet\n if (signingKey == null) {\n const wallet = tryMnemonic(key);\n if (wallet) {\n signingKey = wallet.signingKey;\n mnemonic = wallet.mnemonic || null;\n }\n }\n // A signing key\n if (signingKey == null) {\n signingKey = trySigningKey(key);\n }\n if (signingKey == null) {\n logger.throwArgumentError(\"invalid key\", \"key\", \"[ REDACTED ]\");\n }\n super(signingKey, provider);\n _Wallet_mnemonic.set(this, void 0);\n __classPrivateFieldSet(this, _Wallet_mnemonic, mnemonic, \"f\");\n }\n // Store this in a getter to reduce visibility in console.log\n get mnemonic() { return __classPrivateFieldGet(this, _Wallet_mnemonic, \"f\"); }\n connect(provider) {\n return new Wallet(this, provider);\n }\n async encrypt(password, options, progressCallback) {\n throw new Error(\"TODO\");\n }\n encryptSync(password, options) {\n throw new Error(\"TODO\");\n }\n static async fromEncryptedJson(json, password, progress) {\n let account = null;\n if (isKeystoreJson(json)) {\n account = await decryptKeystoreJson(json, password, progress);\n }\n else if (isCrowdsaleJson(json)) {\n if (progress) {\n progress(0);\n await stall(0);\n }\n account = decryptCrowdsaleJson(json, password);\n if (progress) {\n progress(1);\n await stall(0);\n }\n }\n else {\n return logger.throwArgumentError(\"invalid JSON wallet\", \"json\", \"[ REDACTED ]\");\n }\n const wallet = new Wallet(account.privateKey);\n if (wallet.address !== account.address) {\n logger.throwArgumentError(\"address/privateKey mismatch\", \"json\", \"[ REDACTED ]\");\n }\n // @TODO: mnemonic\n return wallet;\n }\n static fromEncryptedJsonSync(json, password) {\n let account = null;\n if (isKeystoreJson(json)) {\n account = decryptKeystoreJsonSync(json, password);\n }\n else if (isCrowdsaleJson(json)) {\n account = decryptCrowdsaleJson(json, password);\n }\n else {\n return logger.throwArgumentError(\"invalid JSON wallet\", \"json\", \"[ REDACTED ]\");\n }\n const wallet = new Wallet(account.privateKey);\n if (wallet.address !== account.address) {\n logger.throwArgumentError(\"address/privateKey mismatch\", \"json\", \"[ REDACTED ]\");\n }\n // @TODO: mnemonic\n return wallet;\n }\n static createRandom(provider, password, wordlist) {\n return new Wallet(Mnemonic.fromEntropy(randomBytes(16), password, wordlist), provider);\n }\n static fromMnemonic(mnemonic, provider) {\n return new Wallet(mnemonic, provider);\n }\n static fromPhrase(phrase, provider, password = \"\", wordlist) {\n return new Wallet(Mnemonic.fromPhrase(phrase, password, wordlist), provider);\n }\n}\n_Wallet_mnemonic = new WeakMap();\n//# sourceMappingURL=wallet.js.map","export const version = \"ethers@6.0.0-beta.9\";\n//# sourceMappingURL=_version.js.map"],"names":["async","resolveProperties","value","keys","Object","Promise","all","map","k","resolve","reduce","accum","v","index","checkType","type","types","split","t","trim","i","length","Error","defineProperties","target","values","defaults","key","fallback","undefined","defineProperty","enumerable","writable","_EventPayload_listener","__classPrivateFieldSet","this","receiver","state","kind","f","TypeError","has","call","set","__classPrivateFieldGet","get","EventPayload","constructor","emitter","listener","filter","off","getStore","store","setStore","isFrozen","isError","error","code","isCallException","WeakMap","_Logger_instances","_Logger_getBytes","_Logger_log","LogLevel","LogLevels","debug","default","info","warning","_logLevel","_globalLogger","_normalizeForms","form","normalize","check","String","fromCharCode","push","defineReadOnly","object","name","maxValue","ErrorConstructors","INVALID_ARGUMENT","NUMERIC_FAULT","RangeError","BUFFER_OVERRUN","Logger","version","add","makeError","message","details","JSON","stringify","join","throwError","throwArgumentError","argument","assert","condition","assertArgument","assertIntegerArgument","lower","upper","Number","isInteger","assertSafeUint53","operation","fault","assertNormalize","indexOf","assertPrivate","givenGuard","guard","className","method","assertArgumentCount","count","expectedCount","getBytes","getBytesCopy","getNumber","BigInt","e","getBigInt","args","DEBUG","INFO","warn","WARNING","static","logLevel","level","toLowerCase","globalLogger","WeakSet","copy","Uint8Array","match","result","offset","parseInt","substring","console","log","apply","logger","_TokenString_instances","_TokenString_offset","_TokenString_tokens","_TokenString_subTokenString","_ParamType_instances","_ParamType_walkAsync","FormatType","setify","items","Set","forEach","freeze","_kwVisib","KwVisib","_kwTypes","KwTypes","_kwModifiers","KwModifiers","Keywords","SimpleTokens","regexWhitespace","RegExp","regexNumber","regexIdentifier","regexType","TokenString","tokens","slice","clone","reset","popKeyword","allowed","top","peek","text","pop","popType","popParen","popParams","link","linkNext","peekKeyword","peekType","_a","toString","token","lex","brackets","commas","cur","depth","linkBack","suffix","allowSingle","included","consumeName","keyword","consumeKeywords","keywords","consumeParams","allowIndexed","ParamType","fromTokens","consumeGas","consumeEoi","from","to","assign","regexArrayType","verifyBasicType","size","_guard","internal","Symbol","for","ParamTypeInternal","baseType","indexed","components","arrayLength","arrayChildren","format","sighash","json","isTuple","c","parse","isArray","comp","full","isIndexable","walk","process","Array","promises","obj","isParamType","arrayMatch","comps","bracket","FragmentType","setValue","childType","param","then","Fragment","inputs","fromString","fromObject","ConstructorFragment","ErrorFragment","EventFragment","FunctionFragment","StructFragment","NamedFragment","super","joinParams","params","p","input","anonymous","event","payable","gas","stateMutability","outputs","function","constant","o","mutability","modifiers","consumeMutability","struct","nibbles","BN_0","toBigInt","_value","toNumber","toHex","_width","width","toArray","hex","BN_1","fromTwos","toTwos","mask","_bits","bits","_FixedNumber_instances","_FixedNumber_value","_FixedNumber_checkFormat","_constructorGuard","NegativeOne","throwFault","zeros","getMultiplier","decimals","formatFixed","_decimals","multiplier","multiplierStr","negative","fraction","parseFixed","whole","wei","FixedFormat","constructorGuard","signed","_multiplier","defaultValue","FixedNumber","_isFixedNumber","addUnsafe","other","a","b","fromValue","subUnsafe","mulUnsafe","divUnsafe","floor","hasFraction","isNegative","ONE","toFormat","ceiling","round","factor","bump","BUMP","isZero","toHexString","toUnsafeFloat","parseFloat","fixedFormat","numeric","decimal","fromBytes","Alphabet","Lookup","getAlpha","letter","BN_58","encodeBase58","decodeBase58","names","formatUnits","unit","parseUnits","formatEther","parseEther","ether","isHexString","isBytesLike","BN_8","BN_255","arrayify","data","unshift","_noCopyArrayify","decodeBase64","textData","Buffer","encodeBase64","HexCharacters","hexlify","bytes","quantity","concat","datas","d","dataLength","dataSlice","start","end","buffer","stripZerosLeft","zeroPad","left","fill","zeroPadValue","zeroPadBytes","_Result_instances","_Result_indices","_Result_throwError","_Writer_instances","_Writer_data","_Writer_dataLength","_Writer_writeData","_Reader_instances","_Reader_data","_Reader_offset","_Reader_peekBytes","WordSize","Padding","passProperties","Result","Map","Proxy","prop","item","Reflect","getValue","wrapped","Coder","localName","dynamic","_throwError","Writer","appendWriter","writer","writeBytes","paddingOffset","writeValue","writeUpdatableValue","Reader","allowLoose","consumed","subReader","readBytes","loose","readValue","readIndex","alignedLength","Math","ceil","u32","arr","Uint32Array","byteOffset","byteLength","createView","DataView","rotr","word","shift","padStart","nextTick","nodeRequire","module","require","bind","setImmediate","setTimeout","asyncLoop","iters","tick","cb","ts","Date","now","diff","toBytes","str","TextEncoder","encode","utf8ToBytes","assertNumber","n","isSafeInteger","assertHash","hash","create","outputLen","blockLen","Hash","_cloneInto","checkOpts","def","_opts","prototype","wrapConstructor","hashConstructor","hashC","update","digest","tmp","HMAC","_key","finished","destroyed","iHash","pad","oHash","buf","digestInto","out","destroy","getPrototypeOf","hmac","pbkdf2","password","salt","opts","dkLen","DK","PRF","PRFSalt","_password","_salt","asyncTick","pbkdf2Init","prfW","view","u","ti","pos","Ti","subarray","setInt32","ui","pbkdf2Output","SHA2","padOffset","isLE","len","take","min","dataView","roundClean","setBigUint64","_32n","_u32_max","wh","wl","h","l","setUint32","oview","res","Chi","Maj","SHA256_K","IV","SHA256_W","SHA256","A","B","C","D","E","F","G","H","getUint32","W15","W2","s0","s1","T1","T2","sha256","U32_MASK64","fromBig","le","lst","Ah","Al","shrSH","s","shrSL","rotrSH","rotrSL","rotrBH","rotrBL","Bh","Bl","add3L","Cl","add3H","low","Ch","add4L","Dl","add4H","Dh","add5L","El","add5H","Eh","SHA512_Kh","SHA512_Kl","u64.split","SHA512_W_H","SHA512_W_L","SHA512","Fh","Fl","Gh","Gl","Hh","Hl","W15h","W15l","s0h","u64.rotrSH","u64.shrSH","s0l","u64.rotrSL","u64.shrSL","W2h","W2l","s1h","u64.rotrBH","s1l","u64.rotrBL","SUMl","u64.add4L","SUMh","u64.add4H","sigma1h","sigma1l","CHIh","T1ll","u64.add5L","T1h","u64.add5H","T1l","sigma0h","sigma0l","MAJh","MAJl","u64.add","All","u64.add3L","u64.add3H","SHA512_256","SHA384","sha512","anyGlobal","self","window","global","getGlobal","crypto","msCrypto","createHash","algo","locked","_computeHmac","algorithm","_algo","createHmac","__computeHmac","computeHmac","_data","_","lock","register","func","SHA3_PI","SHA3_ROTL","_SHA3_IOTA","_0n","_1n","_2n","_7n","_256n","_0x71n","R","x","y","j","SHA3_IOTA_H","SHA3_IOTA_L","rotlH","u64.rotlBH","u64.rotlSH","rotlL","u64.rotlBL","u64.rotlSL","Keccak","enableXOF","rounds","posOut","state32","keccak","idx1","idx0","B0","B1","Th","Tl","curH","curL","PI","keccakP","finish","writeInto","xofInto","xof","gen","keccak_256","genShake","hashCons","msg","wrapConstructorWithOpts","_keccak256","__keccak256","keccak256","Rho","Id","Pi","idxL","idxR","shifts","shiftsL","idx","shiftsR","Kl","Kr","rotl","group","z","BUF","RIPEMD160","h0","h1","h2","h3","h4","al","ar","bl","br","cl","cr","dl","dr","el","er","rGroup","hbl","hbr","rl","rr","sl","sr","tl","tr","ripemd160","_ripemd160","noble_ripemd160","__ripemd160","_pbkdf2","iterations","keylen","pbkdf2Sync","__pbkdf2","_randomBytes","getRandomValues","crypto_random","__randomBytes","randomBytes","XorAndSalsa","prev","pi","ii","oi","y00","y01","y02","y03","y04","y05","y06","y07","y08","y09","y10","y11","y12","y13","y14","y15","x00","x01","x02","x03","x04","x05","x06","x07","x08","x09","x10","x11","x12","x13","x14","x15","BlockMix","r","head","tail","scryptInit","maxmem","N","onProgress","blockSize","blockSize32","memUsed","B32","V","blockMixCb","totalBlockMix","callbackPer","max","blockMixCnt","scryptOutput","lockedSync","lockedAsync","_scryptAsync","passwd","_nobleAsync","_scryptSync","_nobleSync","__scryptAsync","__scryptSync","scrypt","_passwd","progress","scryptSync","_sha256","_sha512","__sha256","__sha512","locked256","locked512","BN_36","getChecksumAddress","address","chars","expanded","charCodeAt","hashed","toUpperCase","ibanLookup","ibanChecksum","block","checksum","Base36","getAddress","fromBase36","getIcapAddress","base36","arrayifyInteger","_encode","payload","child","encodeRlp","hexlifyByte","unarrayifyInteger","_decodeChildren","childOffset","decoded","_decode","checkOffset","lengthLength","decodeRlp","getCreateAddress","tx","nonceHex","nonce","getCreate2Address","_from","_initCodeHash","initCodeHash","isAddressable","isAddress","resolveAddress","resolver","resolveName","_Typed_options","_gaurd","Typed","_typedSymbol","gaurd","options","minValue","isBigInt","isData","isString","tupleName","isTyped","AddressCoder","dereference","decode","reader","AnonymousCoder","coder","pack","coders","arrayValues","unique","staticWriter","dynamicWriter","updateFuncs","dynamicOffset","updateFunc","baseOffset","unpack","baseReader","offsetReader","fromItems","ArrayCoder","defaultChild","BooleanCoder","DynamicBytesCoder","BytesCoder","FixedBytesCoder","Empty","NullCoder","BN_MAX_UINT256","NumberCoder","maxUintValue","bounds","UnicodeNormalizationForm","Utf8ErrorReason","ignoreFunc","reason","output","badCodepoint","BAD_PREFIX","UNEXPECTED_CONTINUE","OVERRUN","exports","Utf8ErrorFuncs","ignore","replace","OVERLONG","getUtf8CodePoints","_bytes","onError","extraLength","overlongMask","nextChar","MISSING_CONTINUE","OUT_OF_RANGE","UTF16_SURROGATE","toUtf8Bytes","current","c2","pair","escapeChar","_toEscapedUtf8String","codePoint","_toUtf8String","codePoints","toUtf8String","toUtf8CodePoints","formatBytes32String","parseBytes32String","createTable","_func","lo","createRangeTable","hi","matchMap","ranges","range","Table_A_1_ranges","Table_B_1_flags","Table_B_2_ranges","Table_B_2_lut_abs","Table_B_2_lut_rel","Table_B_2_complex","Table_C_ranges","nameprep","codes","codesTableB2","codepoint","_nameprepTableB2","NFKC","StringCoder","TupleCoder","uniqueNames","_AbiCoder_instances","_AbiCoder_getCoder","paramTypeBytes","paramTypeNumber","defaultAbiCoder","getDefaultValue","id","Zeros","Partition","isValidName","namehash","partition","dnsEncode","messagePrefix","hashMessage","regexBytes","regexArray","_pack","solidityPacked","tight","solidityPackedKeccak256","solidityPackedSha256","_TypedDataEncoder_instances","_TypedDataEncoder_types","_TypedDataEncoder_fullTypes","_TypedDataEncoder_encoderCache","_TypedDataEncoder_getEncoder","padding","BN__1","hexTrue","hexFalse","domainFieldTypes","chainId","verifyingContract","domainFieldNames","checkString","domainChecks","getBaseEncoder","boundsUpper","boundsLower","hexPadRight","encodeType","fields","TypedDataEncoder","links","parents","subtypes","field","primaryTypes","primaryType","checkCircular","found","subtype","delete","st","sort","getEncoder","encoder","encodeData","hashStruct","_visit","callback","visit","domain","domainFields","EIP712Domain","hashDomain","ensCache","domainValues","domainTypes","typesWithDomain","subEncoder","encodedType","_Interface_instances","_Interface_errors","_Interface_events","_Interface_functions","_Interface_abiCoder","_Interface_getFunction","_Interface_getEvent","LogDescription","fragment","topic","signature","TransactionDescription","selector","ErrorDescription","Indexed","_isIndexed","PanicReasons","BuiltinErrors","Interface","fragments","abi","getAbiCoder","bucket","deploy","getFunctionName","getFunction","getEventName","getEvent","getError","getSelector","matching","getEventTopic","_decodeParams","_encodeParams","encodeDeploy","decodeErrorResult","encodeErrorResult","decodeFunctionData","encodeFunctionData","decodeFunctionResult","errorArgs","errorName","errorSignature","builtin","transaction","encodeFunctionResult","functionFragment","encodeFilterTopics","eventFragment","topics","encodeTopic","encodeEventLog","dataTypes","dataValues","decodeEventLog","eventTopic","nonIndexed","resultIndexed","resultNonIndexed","nonIndexedIndex","indexedIndex","parseTransaction","parseLog","parseError","hexData","forceUnique","lastValue","valueLength","allowOptions","splice","lastArg","matchStr","m","_FetchResponse_props","_FetchResponse_error","FetchResponse","statusCode","statusMessage","headers","body","request","bodyText","response","bodyJson","iterator","next","done","makeServerError","throwThrottleError","stall","throttle","getHeader","hasBody","ok","assertOk","getUrl","req","timeout","protocol","url","credentials","allowInsecureAuthentication","init","Headers","resp","fetch","arrayBuffer","status","statusText","_FetchRequest_props","FetchRequest","allowInsecure","gzip","bodyType","allowGzip","setHeader","clearHeaders","setCredentials","username","redirect","location","delay","duration","getTime","lockGateways","fetchData","connection","conn","attempts","throttleLimit","slotInterval","throttleSlotInterval","retryFunc","throttleRetry","preflightRequest","processResponse","t0","retryAfter","trunc","random","pow","setGateway","gateway","setIpfsGateway","setArGateway","_EnsResolver_supports2544","_EnsResolver_getResolver","HashZero","parseBytes","parseString","numPad","padded","bytesPad","encodeBytes","byteCount","getIpfsLink","MulticoinProviderPlugin","validate","proivder","supportsCoinType","coinType","matcherIpfs","matchers","EnsResolver","provider","catch","parameters","addrData","enableCcipRead","supportsWildcard","_fetch","getNetwork","formatter","callAddress","coinPlugin","plugin","plugins","encodeAddress","keyBytes","calldata","hexBytes","ipfs","scheme","swarm","_getAvatar","linkage","avatar","getText","owner","addr","tokenId","tokenOwner","balance","metadataUrl","metadata","imageUrl","image","currentName","network","ensPlugin","getPlugin","_Signature_props","BN_2","BN_27","BN_28","BN_35","Zero","Signature","networkV","legacyChainId","getChainId","yParity","yParityAndS","compactSerialized","serialized","toJSON","_type","bv","sig","getNormalizedV","_v","_3n","_8n","POW_2_256","CURVE","P","Gx","Gy","beta","weistrass","x2","mod","x3","USE_ENDOMORPHISM","JacobianPoint","Point","points","toInv","nums","scratch","inverted","invert","acc","num","reduceRight","invertBatch","toAffine","toAffineBatch","fromAffine","equals","X1","Y1","Z1","X2","Y2","Z2","Z1Z1","Z2Z2","U1","U2","S1","S2","negate","double","X3","Y3","Z3","ZERO","HH","HHH","subtract","multiplyUnsafe","scalar","normalizeScalar","P0","k1neg","k1","k2neg","k2","splitScalarEndo","k1p","k2p","precomputeWindow","W","windows","base","wNAF","affinePoint","BASE","_WINDOW_SIZE","precomputes","pointPrecomputes","normalizeZ","windowSize","maxNumber","shiftBy","wbits","pr","cached","abs","multiply","point","fake","f1p","f2p","invZ","iz1","iz2","iz3","ax","ay","_setWindowSize","isShort","bytesToNumber","isValidFieldElement","_6n","_11n","_22n","_23n","_44n","_88n","b2","b3","b6","pow2","b9","b11","b22","b44","b88","b176","b220","b223","t1","t2","sqrtMod","isYOdd","assertValidity","ensureBytes","header","fromCompressedHex","fromUncompressedHex","privateKey","normalizePrivateKey","msgHash","recovery","delta","truncateHash","fromDER","fromCompact","normalizeSignature","prefix","fromHex","numTo32bStr","rinv","u1","u2","Q","multiplyAndAddUnsafe","toRawBytes","isCompressed","hexToBytes","toHexX","toRawX","aP","bQ","sum","sliceDER","parseDERInt","bytesToHex","isUint8a","hexToNumber","sBytes","rBytesLeft","parseDERSignature","isWithinCurveOrder","hasHighS","HALF","normalizeS","toDERRawBytes","toDERHex","sHex","numberToHexUnpadded","rHex","rLen","sLen","toCompactRawBytes","toCompactHex","concatBytes","arrays","every","hexes","uint8a","array","hexByte","byte","isNaN","power","number","modulo","divNearest","POW_2_128","a1","b1","a2","c1","HmacDrbg","counter","utils","hmacSha256","hmacSync","hmacSha256Sync","incr","seed","reseedSync","generateSync","kmdToSig","kBytes","q","isPub","getSharedSecret","privateA","publicB","publicKey","bits2int","bits2octets","z1","z2","int2octets","signSync","privKey","extraEntropy","seedArgs","initSigArgs","drbg","recSig","canonical","der","recovered","finalizeSig","node","web","isValidPrivateKey","hashToPrivateKey","numTo32b","bytesLength","randomPrivateKey","subtle","messages","ckey","importKey","sign","sha256Sync","precompute","_SigningKey_privateKey","SigningKey","computePublicKey","compressedPublicKey","sigDer","recid","secp256k1.signSync","secp256k1.Signature","computeShardSecret","pubKey","secp256k1.getSharedSecret","compressed","fromPrivateKey","secp256k1.getPublicKey","pub","secp256k1.Point","fromSignature","secp256k1.recoverPublicKey","p0","p1","pub0","pub1","accessSetify","storageKeys","storageKey","accessListify","localeCompare","computeAddress","recoverAddress","recoverPublicKey","_Transaction_props","BN_MAX_UINT","handleAddress","handleData","handleAccessList","handleNumber","handleUint","formatNumber","formatAccessList","_serializeLegacy","gasPrice","gasLimit","legacy","getChainIdV","_parseEipSignature","serialize","_serializeEip1559","maxPriorityFeePerGas","maxFeePerGas","accessList","_serializeEip2930","Transaction","typeName","unsignedHash","unsignedSerialized","fromPublicKey","isSigned","inferTypes","hasGasPrice","hasFee","hasAccessList","isLegacy","isBerlin","isLondon","_parseLegacy","_parseEip2930","_parseEip1559","_Block_transactions","_TransactionReceipt_logs","toJson","FeeData","Block","dummyProvider","transactions","timestamp","parentHash","difficulty","gasUsed","miner","extraData","baseFeePerGas","date","getTransaction","isMined","orphanedEvent","orphan","Log","transactionHash","blockHash","blockNumber","removed","transactionIndex","getBlock","getTransactionReceipt","removedEvent","TransactionReceipt","logs","contractAddress","logsBloom","cumulativeGasUsed","effectiveGasPrice","byzantium","root","fee","getBlockNumber","createRemovedTransactionFilter","reorderedEvent","createReorderedTransactionFilter","TransactionResponse","confirms","waitForTransaction","fail","blockTag","position","signedTx","blockHashOrBlockTag","_Formatter_format","_Formatter_baseBlock","Formatter","bigNumber","uint256","arrayOf","fromBlock","allowNull","toBlock","transactionRequest","transactionResponse","blockWithTransactions","boolean","receipt","filterLog","allowFalsish","ifFalse","ifNull","_hexstring","dataOrLength","altNames","srcKey","altKey","nv","storageSlot","NetworkPlugin","GasCostPlugin","effectiveBlock","costs","props","nullish","EnsPlugin","targetNetwork","MaxPriorityFeePlugin","priorityFee","_Network_props","Networks","defaultFormatter","Network","_chainId","attachPlugin","getPlugins","basename","computeIntrinsicGas","txBase","txCreate","txDataZero","txDataNonzero","txAccessListAddress","txAccessListStorageKey","networkFunc","custom","ensAddress","ensNetwork","nameOrChainId","existing","_PollingBlockSubscriber_instances","_PollingBlockSubscriber_provider","_PollingBlockSubscriber_poller","_PollingBlockSubscriber_interval","_PollingBlockSubscriber_blockNumber","_PollingBlockSubscriber_poll","_OnBlockSubscriber_provider","_OnBlockSubscriber_poll","_PollingOrphanSubscriber_filter","_PollingTransactionSubscriber_hash","_PollingEventSubscriber_instances","_PollingEventSubscriber_provider","_PollingEventSubscriber_filter","_PollingEventSubscriber_poller","_PollingEventSubscriber_blockNumber","_PollingEventSubscriber_poll","PollingBlockSubscriber","pollingInterval","_setTimeout","stop","_clearTimeout","pause","dropWhilePaused","resume","emit","OnBlockSubscriber","_poll","on","PollingOrphanSubscriber","PollingTransactionSubscriber","PollingEventSubscriber","getLogs","_AbstractProvider_instances","_AbstractProvider_subs","_AbstractProvider_plugins","_AbstractProvider_pausedState","_AbstractProvider_networkPromise","_AbstractProvider_anyNetwork","_AbstractProvider_performCache","_AbstractProvider_nextTimer","_AbstractProvider_timers","_AbstractProvider_disableCcipRead","_AbstractProvider_perform","_AbstractProvider_call","_AbstractProvider_getBlock","_AbstractProvider_hasSub","_AbstractProvider_getSub","getTag","UnmanagedSubscriber","concisify","getSubscription","_event","tag","addresses","addAddress","AbstractProvider","_network","disableCcipRead","urls","sender","errorMessages","href","errorMessage","_wrapTransaction","_detectNetwork","detectNetwork","networkPromise","expected","actual","priorityFeePlugin","getPriorityFee","_request","_tx","_getTransaction","_getBlockTag","_address","_blockTag","_position","lookup","addBlockTag","_filter","_getFilter","_getProvider","fromName","getResolver","getAvatar","reject","timer","clearTimeout","once","timerId","_b","paused","time","_forEachSubscriber","sub","subscriber","_getSubscriber","_recoverSubscriber","oldSub","newSub","started","listeners","total","removeAllListeners","_parseString","_parseBytes","perform","_perform","attempt","txSender","ccipArgs","urlsOffset","urlsLength","urlsData","parseOffchainLookup","ccipResult","ccipReadFetch","includeTransactions","emitArgs","subscription","addressableMap","nameMap","empty","_AbstractSigner_instances","_AbstractSigner_checkProvider","_AbstractSigner_fromify","_VoidSigner_instances","_VoidSigner_throwUnsupported","_WrappedSigner_signer","AbstractSigner","getBalanceOf","getTransactionCountOf","estimateGas","getTransactionCount","txObj","populateTransaction","broadcastTransaction","signTransaction","actions","VoidSigner","connect","WrappedSigner","signer","sendTransaction","signMessage","signTypedData","shown","showThrottleMessage","service","_FilterIdSubscriber_instances","_FilterIdSubscriber_provider","_FilterIdSubscriber_filterIdPromise","_FilterIdSubscriber_poller","_FilterIdSubscriber_network","_FilterIdSubscriber_poll","_FilterIdSubscriber_teardown","_FilterIdEventSubscriber_event","FilterIdSubscriber","_subscribe","_emitResults","_recover","filterId","send","filterIdPromise","FilterIdEventSubscriber","results","FilterIdPendingSubscriber","_JsonRpcApiProvider_nextId","_JsonRpcApiProvider_options","_JsonRpcProvider_connect","_JsonRpcProvider_pollingInterval","Primitive","deepCopy","getLowerCase","defaultOptions","polling","batchMaxSize","batchStallTime","JsonRpcSigner","getFeeData","_to","hexTx","getRpcTransaction","sendUncheckedTransaction","timeouts","checkTx","_message","populated","resolveNames","getPayload","JsonRpcApiProvider","_getOptions","_setOptions","prepareRequest","jsonrpc","accounts","account","dstKey","getRpcRequest","signedTransaction","getRpcError","spelunkData","_spelunkMessage","spelunkMessage","feeData","JsonRpcProvider","isPollable","StaticJsonRpcProvider","defaultApiKey","AnkrProvider","apiKey","getConnection","getHost","isCommunityResource","AlchemyProvider","CloudflareProvider","EtherscanPluginId","EtherscanProvider","communityApiKey","getBaseUrl","baseUrl","query","getPostUrl","getPostData","apikey","post","_getTransactionPostData","maxFeePerGs","_checkError","action","txhash","postData","ethusd","defaultProjectId","InfuraProvider","projectId","projectSecret","defaultAppIds","homestead","ropsten","rinkeby","goerli","normalizeApiKey","_appId","applicationSecretKey","loadBalancer","community","applicationId","PocketProvider","_secretKey","_loadBalancer","_FallbackProvider_instances","_FallbackProvider_configs","_FallbackProvider_height","_FallbackProvider_initialSyncPromise","_FallbackProvider_getNextConfig","_FallbackProvider_addRunner","_FallbackProvider_initialSync","_FallbackProvider_checkQuorum","_FallbackProvider_waitForQuorum","defaultConfig","stallTimeout","priority","weight","defaultState","requests","lateResponses","errorResponses","outOfSync","unsupportedEvents","rollingDuration","score","_updateNumber","_totalTime","checkQuorum","quorum","tally","normal","bestResult","bestWeight","getMedian","mid","FallbackProvider","providers","eventQuorum","eventWorkers","providerConfigs","running","runner","configs","allConfigs","shuffle","config","didBump","staller","dt","initialSync","waitForSync","height","mode","getFuzzyMode","interesting","newRunners","race","_WebSocket","WebSocket","_SocketSubscriber_provider","_SocketSubscriber_filter","_SocketSubscriber_filterId","_SocketSubscriber_paused","_SocketSubscriber_emitPromise","_SocketEventSubscriber_logFilter","_SocketEventSubscriber_formatter","_SocketProvider_callbacks","_SocketProvider_ready","_SocketProvider_subs","_SocketProvider_pending","SocketSubscriber","_register","_handleMessage","emitPromise","_emit","SocketBlockSubscriber","SocketPendingSubscriber","SocketEventSubscriber","logFilter","SocketProvider","pending","promise","_write","_WebSocketProvider_websocket","WebSocketProvider","websocket","onopen","_start","onmessage","_processMessage","getDefaultProvider","alchemy","ankr","cloudflare","etherscan","infura","pocket","secretKey","appId","IpcSocketProvider","_ContractTransactionReceipt_interface","_ContractTransactionResponse_interface","EventLog","iface","interface","eventName","eventSignature","ContractTransactionReceipt","ContractTransactionResponse","wait","ContractEventPayload","contract","_log","_PreparedTopicFilter_filter","canResolve","PreparedTopicFilter","getRunner","resolvedArgs","walkAsync","getTopicFilter","feature","getProvider","copyOverrides","arg","overrides","bigIntKeys","numberKeys","enableCcipReadEnabled","customData","copyRequest","WrappedMethod","Function","_WrappedMethodBase","_contract","thisArg","getFragment","staticCall","_runner","resolveArgs","staticCallResult","WrappedEvent","_WrappedEventBase","internalValues","getInternal","getSubTag","hasSub","subs","getSub","lastEmit","resultPromise","passArgs","BaseContract","_deployTx","addrPromise","deployTx","filters","_prop","getCode","deploymentTransaction","getDeployedCode","checkCode","Contract","_ContractBase","subsChrs","Word","unfold","words","sep","initial","decodeOwl","clumps","leftover","semi","Wordlist","locale","mnemonic","_WordlistOwl_instances","_WordlistOwl_data","_WordlistOwl_checksum","_WordlistOwl_words","_WordlistOwl_loadWords","WordlistOwl","_decodeWords","getWord","getWordIndex","langEn","wordlists","en","_WordlistOwlA_accent","WordlistOwlA","accent","_accent","accents","posOffset","positions","flood","decodeBits","charCode","regex","decodeOwlA","getUpperMask","mnemonicToEntropy","wordlist","entropy","bit","entropyBits","checksumMask","entropyToMnemonic","indices","remainingBits","checksumBits","Mnemonic","phrase","computeSeed","NFKD","_entropy","_BaseWallet_signingKey","BaseWallet","signingKey","btx","_HDNodeWallet_fromSeed","_HDNodeWalletManager_root","defaultPath","MasterSecret","HardenedBit","zpad","encodeBase58Check","ser_I","chainCode","I","IL","IR","derivePath","path","component","deriveChild","HDNodeWallet","parentFingerprint","fingerprint","extendedKey","hasPath","neuter","HDNodeVoidWallet","_index","ki","fromPhrase","fromEntropy","_seed","Ki","_addPoints","HDNodeWalletManager","getSigner","getAccountPath","_AES_key","_AES_Kd","_AES_Ke","numberOfRounds","rcon","S","Si","T3","T4","T5","T6","T7","T8","U3","U4","convertToInt32","AES","roundKeyCount","KC","tk","tt","rconpointer","encrypt","plaintext","decrypt","ciphertext","ModeOfOperation","cls","aes","_CBC_iv","_CBC_lastBlock","CBC","iv","_CTR_remaining","_CTR_remainingIndex","_CTR_counter","CTR","initialValue","setCounterValue","setCounterBytes","MAX_SAFE_INTEGER","increment","crypttext","looseArrayify","hexString","getPassword","spelunk","_path","reqd","isCrowdsaleJson","encseed","decryptCrowdsaleJson","encryptedSeed","padder","pkcs7Strip","seedHex","isKeystoreJson","getAccount","mnemonicKey","mnemonicCiphertext","mnemonicIv","mnemonicAesCtr","getKdfParams","kdf","prf","_Wallet_mnemonic","trySigningKey","Wallet","wallet","fromMnemonic","tryWallet","tryMnemonic","progressCallback","encryptSync","decryptKeystoreJson","decryptKeystoreJsonSync"],"mappings":"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AE1T,EAAG,GAC/BwH,cAAcxH,GAAK,OAAO0T,GAAE1T,EAAG,GAC/BwH,cAAcxH,GAAK,OAAO0T,GAAE1T,EAAG,GAC/BwH,cAAcxH,GAAK,OAAO0T,GAAE1T,EAAG,GAC/BwH,cAAcxH,GAAK,OAAO0T,GAAE1T,EAAG,GAC/BwH,cAAcxH,GAAK,OAAO0T,GAAE1T,EAAG,GAC/BwH,cAAcxH,GAAK,OAAO0T,GAAE1T,EAAG,GAC/BwH,cAAcxH,GAAK,OAAO0T,GAAE1T,EAAG,GAC/BwH,cAAcxH,GAAK,OAAO0T,GAAE1T,EAAG,GAC/BwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,OAAO0T,GAAE1T,EAAG,IAChCwH,eAAexH,GAAK,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AAM,GAAM,GAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,KAEtLC,GAAI,CAAC,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,EAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,EAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,EAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAC//CC,GAAK,CAAC,GAAM,EAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,EAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,KAEhgDlmD,GAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAC1/FC,GAAK,CAAC,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,EAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAC1/FkmD,GAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAC1/FC,GAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAE1/FC,GAAK,CAAC,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,EAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,GAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,GAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,GAAK,CAAC,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,SAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,YAE1/Fj3B,GAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,GAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/Fi3B,GAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,GAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WA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"} |