1 line
1.1 MiB
1 line
1.1 MiB
{"version":3,"file":"ethers.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","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","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","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","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","WordSize","bounds","UnicodeNormalizationForm","Utf8ErrorReason","ignoreFunc","reason","output","badCodepoint","BAD_PREFIX","UNEXPECTED_CONTINUE","OVERRUN","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","secp256k1.utils","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","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","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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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,KAEhgDjmD,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/FimD,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/Fh3B,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/Fg3B,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,WAAY,UAAY,SAAY,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,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAChgG,SAASC,GAAehyD,GACpB,MAAMzO,EAAS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"} |