{"version":3,"file":"index.42a32fa5.js","sources":["../../../node_modules/@ethersproject/properties/lib.esm/_version.js","../../../node_modules/@ethersproject/properties/lib.esm/index.js","../../../node_modules/js-sha3/src/sha3.js","../../../node_modules/@ethersproject/keccak256/lib.esm/index.js","../../../node_modules/@ethersproject/rlp/lib.esm/_version.js","../../../node_modules/@ethersproject/rlp/lib.esm/index.js","../../../node_modules/@ethersproject/address/lib.esm/_version.js","../../../node_modules/@ethersproject/address/lib.esm/index.js","../../../node_modules/@ethersproject/constants/lib.esm/bignumbers.js","../../../node_modules/@ethersproject/strings/lib.esm/_version.js","../../../node_modules/@ethersproject/strings/lib.esm/utf8.js","../../../node_modules/@ethersproject/hash/lib.esm/id.js","../../../node_modules/@ethersproject/abstract-provider/lib.esm/_version.js","../../../node_modules/@ethersproject/abstract-provider/lib.esm/index.js","../../../node_modules/@ethersproject/abstract-signer/lib.esm/_version.js","../../../node_modules/@ethersproject/abstract-signer/lib.esm/index.js","../../../node_modules/minimalistic-assert/index.js","../../../node_modules/inherits/inherits_browser.js","../../../node_modules/hash.js/lib/hash/utils.js","../../../node_modules/hash.js/lib/hash/common.js","../../../node_modules/hash.js/lib/hash/sha/common.js","../../../node_modules/hash.js/lib/hash/sha/1.js","../../../node_modules/hash.js/lib/hash/sha/256.js","../../../node_modules/hash.js/lib/hash/sha/224.js","../../../node_modules/hash.js/lib/hash/sha/512.js","../../../node_modules/hash.js/lib/hash/sha/384.js","../../../node_modules/hash.js/lib/hash/sha.js","../../../node_modules/hash.js/lib/hash/ripemd.js","../../../node_modules/hash.js/lib/hash/hmac.js","../../../node_modules/hash.js/lib/hash.js","../../../node_modules/@ethersproject/signing-key/lib.esm/elliptic.js","../../../node_modules/@ethersproject/signing-key/lib.esm/_version.js","../../../node_modules/@ethersproject/signing-key/lib.esm/index.js","../../../node_modules/@ethersproject/transactions/lib.esm/_version.js","../../../node_modules/@ethersproject/transactions/lib.esm/index.js"],"sourcesContent":["export const version = \"properties/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport function defineReadOnly(object, name, value) {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n// Crawl up the constructor chain to find a static method\nexport function getStatic(ctor, key) {\n for (let i = 0; i < 32; i++) {\n if (ctor[key]) {\n return ctor[key];\n }\n if (!ctor.prototype || typeof (ctor.prototype) !== \"object\") {\n break;\n }\n ctor = Object.getPrototypeOf(ctor.prototype).constructor;\n }\n return null;\n}\nexport function resolveProperties(object) {\n return __awaiter(this, void 0, void 0, function* () {\n const promises = Object.keys(object).map((key) => {\n const value = object[key];\n return Promise.resolve(value).then((v) => ({ key: key, value: v }));\n });\n const results = yield Promise.all(promises);\n return results.reduce((accum, result) => {\n accum[(result.key)] = result.value;\n return accum;\n }, {});\n });\n}\nexport function checkProperties(object, properties) {\n if (!object || typeof (object) !== \"object\") {\n logger.throwArgumentError(\"invalid object\", \"object\", object);\n }\n Object.keys(object).forEach((key) => {\n if (!properties[key]) {\n logger.throwArgumentError(\"invalid object key - \" + key, \"transaction:\" + key, object);\n }\n });\n}\nexport function shallowCopy(object) {\n const result = {};\n for (const key in object) {\n result[key] = object[key];\n }\n return result;\n}\nconst opaque = { bigint: true, boolean: true, \"function\": true, number: true, string: true };\nfunction _isFrozen(object) {\n // Opaque objects are not mutable, so safe to copy by assignment\n if (object === undefined || object === null || opaque[typeof (object)]) {\n return true;\n }\n if (Array.isArray(object) || typeof (object) === \"object\") {\n if (!Object.isFrozen(object)) {\n return false;\n }\n const keys = Object.keys(object);\n for (let i = 0; i < keys.length; i++) {\n let value = null;\n try {\n value = object[keys[i]];\n }\n catch (error) {\n // If accessing a value triggers an error, it is a getter\n // designed to do so (e.g. Result) and is therefore \"frozen\"\n continue;\n }\n if (!_isFrozen(value)) {\n return false;\n }\n }\n return true;\n }\n return logger.throwArgumentError(`Cannot deepCopy ${typeof (object)}`, \"object\", object);\n}\n// Returns a new copy of object, such that no properties may be replaced.\n// New properties may be added only to objects.\nfunction _deepCopy(object) {\n if (_isFrozen(object)) {\n return object;\n }\n // Arrays are mutable, so we need to create a copy\n if (Array.isArray(object)) {\n return Object.freeze(object.map((item) => deepCopy(item)));\n }\n if (typeof (object) === \"object\") {\n const result = {};\n for (const key in object) {\n const value = object[key];\n if (value === undefined) {\n continue;\n }\n defineReadOnly(result, key, deepCopy(value));\n }\n return result;\n }\n return logger.throwArgumentError(`Cannot deepCopy ${typeof (object)}`, \"object\", object);\n}\nexport function deepCopy(object) {\n return _deepCopy(object);\n}\nexport class Description {\n constructor(info) {\n for (const key in info) {\n this[key] = deepCopy(info[key]);\n }\n }\n}\n//# sourceMappingURL=index.js.map","/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n","\"use strict\";\nimport sha3 from \"js-sha3\";\nimport { arrayify } from \"@ethersproject/bytes\";\nexport function keccak256(data) {\n return '0x' + sha3.keccak_256(arrayify(data));\n}\n//# sourceMappingURL=index.js.map","export const version = \"rlp/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\n//See: https://github.com/ethereum/wiki/wiki/RLP\nimport { arrayify, hexlify, isBytesLike } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction arrayifyInteger(value) {\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value >>= 8;\n }\n return 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 _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 if (!isBytesLike(object)) {\n logger.throwArgumentError(\"RLP object must be BytesLike\", \"object\", object);\n }\n const data = Array.prototype.slice.call(arrayify(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}\nexport function encode(object) {\n return hexlify(_encode(object));\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\", Logger.errors.BUFFER_OVERRUN, {});\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\", Logger.errors.BUFFER_OVERRUN, {});\n }\n // Array with extra length prefix\n if (data[offset] >= 0xf8) {\n const lengthLength = data[offset] - 0xf7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data short segment too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data long segment too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n return _decodeChildren(data, offset, offset + 1 + lengthLength, lengthLength + length);\n }\n else if (data[offset] >= 0xc0) {\n const length = data[offset] - 0xc0;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n return _decodeChildren(data, offset, offset + 1, length);\n }\n else if (data[offset] >= 0xb8) {\n const lengthLength = data[offset] - 0xb7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const result = hexlify(data.slice(offset + 1 + lengthLength, offset + 1 + lengthLength + length));\n return { consumed: (1 + lengthLength + length), result: result };\n }\n else if (data[offset] >= 0x80) {\n const length = data[offset] - 0x80;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n const result = hexlify(data.slice(offset + 1, offset + 1 + length));\n return { consumed: (1 + length), result: result };\n }\n return { consumed: 1, result: hexlify(data[offset]) };\n}\nexport function decode(data) {\n const bytes = arrayify(data);\n const decoded = _decode(bytes, 0);\n if (decoded.consumed !== bytes.length) {\n logger.throwArgumentError(\"invalid rlp data\", \"data\", data);\n }\n return decoded.result;\n}\n//# sourceMappingURL=index.js.map","export const version = \"address/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify, concat, hexDataLength, hexDataSlice, isHexString, stripZeros } from \"@ethersproject/bytes\";\nimport { BigNumber, _base16To36, _base36To16 } from \"@ethersproject/bignumber\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { encode } from \"@ethersproject/rlp\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\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// Shims for environments that are missing some required constants and functions\nconst MAX_SAFE_INTEGER = 0x1fffffffffffff;\nfunction log10(x) {\n if (Math.log10) {\n return Math.log10(x);\n }\n return Math.log(x) / Math.LN10;\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)\nconst safeDigits = Math.floor(log10(MAX_SAFE_INTEGER));\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;\nexport function getAddress(address) {\n let result = null;\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 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 // Maybe ICAP? (we only support direct mode)\n }\n else 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 result = _base36To16(address.substring(4));\n while (result.length < 40) {\n result = \"0\" + result;\n }\n result = getChecksumAddress(\"0x\" + result);\n }\n else {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n return result;\n}\nexport function isAddress(address) {\n try {\n getAddress(address);\n return true;\n }\n catch (error) { }\n return false;\n}\nexport function getIcapAddress(address) {\n let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n while (base36.length < 30) {\n base36 = \"0\" + base36;\n }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n// http://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed\nexport function getContractAddress(transaction) {\n let from = null;\n try {\n from = getAddress(transaction.from);\n }\n catch (error) {\n logger.throwArgumentError(\"missing from address\", \"transaction\", transaction);\n }\n const nonce = stripZeros(arrayify(BigNumber.from(transaction.nonce).toHexString()));\n return getAddress(hexDataSlice(keccak256(encode([from, nonce])), 12));\n}\nexport function getCreate2Address(from, salt, initCodeHash) {\n if (hexDataLength(salt) !== 32) {\n logger.throwArgumentError(\"salt must be 32 bytes\", \"salt\", salt);\n }\n if (hexDataLength(initCodeHash) !== 32) {\n logger.throwArgumentError(\"initCodeHash must be 32 bytes\", \"initCodeHash\", initCodeHash);\n }\n return getAddress(hexDataSlice(keccak256(concat([\"0xff\", getAddress(from), salt, initCodeHash])), 12));\n}\n//# sourceMappingURL=index.js.map","import { BigNumber } from \"@ethersproject/bignumber\";\nconst NegativeOne = ( /*#__PURE__*/BigNumber.from(-1));\nconst Zero = ( /*#__PURE__*/BigNumber.from(0));\nconst One = ( /*#__PURE__*/BigNumber.from(1));\nconst Two = ( /*#__PURE__*/BigNumber.from(2));\nconst WeiPerEther = ( /*#__PURE__*/BigNumber.from(\"1000000000000000000\"));\nconst MaxUint256 = ( /*#__PURE__*/BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"));\nconst MinInt256 = ( /*#__PURE__*/BigNumber.from(\"-0x8000000000000000000000000000000000000000000000000000000000000000\"));\nconst MaxInt256 = ( /*#__PURE__*/BigNumber.from(\"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"));\nexport { NegativeOne, Zero, One, Two, WeiPerEther, MaxUint256, MinInt256, MaxInt256, };\n//# sourceMappingURL=bignumbers.js.map","export const version = \"strings/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\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);\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 bytes = arrayify(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.checkNormalize();\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 arrayify(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 { keccak256 } from \"@ethersproject/keccak256\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nexport function id(text) {\n return keccak256(toUtf8Bytes(text));\n}\n//# sourceMappingURL=id.js.map","export const version = \"abstract-provider/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { isHexString } from \"@ethersproject/bytes\";\nimport { Description, defineReadOnly, resolveProperties } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n;\n;\n//export type CallTransactionable = {\n// call(transaction: TransactionRequest): Promise;\n//};\nexport class ForkEvent extends Description {\n static isForkEvent(value) {\n return !!(value && value._isForkEvent);\n }\n}\nexport class BlockForkEvent extends ForkEvent {\n constructor(blockHash, expiry) {\n if (!isHexString(blockHash, 32)) {\n logger.throwArgumentError(\"invalid blockHash\", \"blockHash\", blockHash);\n }\n super({\n _isForkEvent: true,\n _isBlockForkEvent: true,\n expiry: (expiry || 0),\n blockHash: blockHash\n });\n }\n}\nexport class TransactionForkEvent extends ForkEvent {\n constructor(hash, expiry) {\n if (!isHexString(hash, 32)) {\n logger.throwArgumentError(\"invalid transaction hash\", \"hash\", hash);\n }\n super({\n _isForkEvent: true,\n _isTransactionForkEvent: true,\n expiry: (expiry || 0),\n hash: hash\n });\n }\n}\nexport class TransactionOrderForkEvent extends ForkEvent {\n constructor(beforeHash, afterHash, expiry) {\n if (!isHexString(beforeHash, 32)) {\n logger.throwArgumentError(\"invalid transaction hash\", \"beforeHash\", beforeHash);\n }\n if (!isHexString(afterHash, 32)) {\n logger.throwArgumentError(\"invalid transaction hash\", \"afterHash\", afterHash);\n }\n super({\n _isForkEvent: true,\n _isTransactionOrderForkEvent: true,\n expiry: (expiry || 0),\n beforeHash: beforeHash,\n afterHash: afterHash\n });\n }\n}\n///////////////////////////////\n// Exported Abstracts\nexport class Provider {\n constructor() {\n logger.checkAbstract(new.target, Provider);\n defineReadOnly(this, \"_isProvider\", true);\n }\n getFeeData() {\n return __awaiter(this, void 0, void 0, function* () {\n const { block, gasPrice } = yield resolveProperties({\n block: this.getBlock(\"latest\"),\n gasPrice: this.getGasPrice().catch((error) => {\n // @TODO: Why is this now failing on Calaveras?\n //console.log(error);\n return null;\n })\n });\n let lastBaseFeePerGas = null, 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 lastBaseFeePerGas = block.baseFeePerGas;\n maxPriorityFeePerGas = BigNumber.from(\"1500000000\");\n maxFeePerGas = block.baseFeePerGas.mul(2).add(maxPriorityFeePerGas);\n }\n return { lastBaseFeePerGas, maxFeePerGas, maxPriorityFeePerGas, gasPrice };\n });\n }\n // Alias for \"on\"\n addListener(eventName, listener) {\n return this.on(eventName, listener);\n }\n // Alias for \"off\"\n removeListener(eventName, listener) {\n return this.off(eventName, listener);\n }\n static isProvider(value) {\n return !!(value && value._isProvider);\n }\n}\n//# sourceMappingURL=index.js.map","export const version = \"abstract-signer/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { defineReadOnly, resolveProperties, shallowCopy } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nconst allowedTransactionKeys = [\n \"accessList\", \"ccipReadEnabled\", \"chainId\", \"customData\", \"data\", \"from\", \"gasLimit\", \"gasPrice\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"nonce\", \"to\", \"type\", \"value\"\n];\nconst forwardErrors = [\n Logger.errors.INSUFFICIENT_FUNDS,\n Logger.errors.NONCE_EXPIRED,\n Logger.errors.REPLACEMENT_UNDERPRICED,\n];\n;\n;\nexport class Signer {\n ///////////////////\n // Sub-classes MUST call super\n constructor() {\n logger.checkAbstract(new.target, Signer);\n defineReadOnly(this, \"_isSigner\", true);\n }\n ///////////////////\n // Sub-classes MAY override these\n getBalance(blockTag) {\n return __awaiter(this, void 0, void 0, function* () {\n this._checkProvider(\"getBalance\");\n return yield this.provider.getBalance(this.getAddress(), blockTag);\n });\n }\n getTransactionCount(blockTag) {\n return __awaiter(this, void 0, void 0, function* () {\n this._checkProvider(\"getTransactionCount\");\n return yield this.provider.getTransactionCount(this.getAddress(), blockTag);\n });\n }\n // Populates \"from\" if unspecified, and estimates the gas for the transaction\n estimateGas(transaction) {\n return __awaiter(this, void 0, void 0, function* () {\n this._checkProvider(\"estimateGas\");\n const tx = yield resolveProperties(this.checkTransaction(transaction));\n return yield this.provider.estimateGas(tx);\n });\n }\n // Populates \"from\" if unspecified, and calls with the transaction\n call(transaction, blockTag) {\n return __awaiter(this, void 0, void 0, function* () {\n this._checkProvider(\"call\");\n const tx = yield resolveProperties(this.checkTransaction(transaction));\n return yield this.provider.call(tx, blockTag);\n });\n }\n // Populates all fields in a transaction, signs it and sends it to the network\n sendTransaction(transaction) {\n return __awaiter(this, void 0, void 0, function* () {\n this._checkProvider(\"sendTransaction\");\n const tx = yield this.populateTransaction(transaction);\n const signedTx = yield this.signTransaction(tx);\n return yield this.provider.sendTransaction(signedTx);\n });\n }\n getChainId() {\n return __awaiter(this, void 0, void 0, function* () {\n this._checkProvider(\"getChainId\");\n const network = yield this.provider.getNetwork();\n return network.chainId;\n });\n }\n getGasPrice() {\n return __awaiter(this, void 0, void 0, function* () {\n this._checkProvider(\"getGasPrice\");\n return yield this.provider.getGasPrice();\n });\n }\n getFeeData() {\n return __awaiter(this, void 0, void 0, function* () {\n this._checkProvider(\"getFeeData\");\n return yield this.provider.getFeeData();\n });\n }\n resolveName(name) {\n return __awaiter(this, void 0, void 0, function* () {\n this._checkProvider(\"resolveName\");\n return yield this.provider.resolveName(name);\n });\n }\n // Checks a transaction does not contain invalid keys and if\n // no \"from\" is provided, populates it.\n // - does NOT require a provider\n // - adds \"from\" is not present\n // - returns a COPY (safe to mutate the result)\n // By default called from: (overriding these prevents it)\n // - call\n // - estimateGas\n // - populateTransaction (and therefor sendTransaction)\n checkTransaction(transaction) {\n for (const key in transaction) {\n if (allowedTransactionKeys.indexOf(key) === -1) {\n logger.throwArgumentError(\"invalid transaction key: \" + key, \"transaction\", transaction);\n }\n }\n const tx = shallowCopy(transaction);\n if (tx.from == null) {\n tx.from = this.getAddress();\n }\n else {\n // Make sure any provided address matches this signer\n tx.from = Promise.all([\n Promise.resolve(tx.from),\n this.getAddress()\n ]).then((result) => {\n if (result[0].toLowerCase() !== result[1].toLowerCase()) {\n logger.throwArgumentError(\"from address mismatch\", \"transaction\", transaction);\n }\n return result[0];\n });\n }\n return tx;\n }\n // Populates ALL keys for a transaction and checks that \"from\" matches\n // this Signer. Should be used by sendTransaction but NOT by signTransaction.\n // By default called from: (overriding these prevents it)\n // - sendTransaction\n //\n // Notes:\n // - We allow gasPrice for EIP-1559 as long as it matches maxFeePerGas\n populateTransaction(transaction) {\n return __awaiter(this, void 0, void 0, function* () {\n const tx = yield resolveProperties(this.checkTransaction(transaction));\n if (tx.to != null) {\n tx.to = Promise.resolve(tx.to).then((to) => __awaiter(this, void 0, void 0, function* () {\n if (to == null) {\n return null;\n }\n const address = yield this.resolveName(to);\n if (address == null) {\n logger.throwArgumentError(\"provided ENS name resolves to null\", \"tx.to\", to);\n }\n return address;\n }));\n // Prevent this error from causing an UnhandledPromiseException\n tx.to.catch((error) => { });\n }\n // Do not allow mixing pre-eip-1559 and eip-1559 properties\n const hasEip1559 = (tx.maxFeePerGas != null || tx.maxPriorityFeePerGas != null);\n if (tx.gasPrice != null && (tx.type === 2 || hasEip1559)) {\n logger.throwArgumentError(\"eip-1559 transaction do not support gasPrice\", \"transaction\", transaction);\n }\n else if ((tx.type === 0 || tx.type === 1) && hasEip1559) {\n logger.throwArgumentError(\"pre-eip-1559 transaction do not support maxFeePerGas/maxPriorityFeePerGas\", \"transaction\", transaction);\n }\n if ((tx.type === 2 || tx.type == null) && (tx.maxFeePerGas != null && tx.maxPriorityFeePerGas != null)) {\n // Fully-formed EIP-1559 transaction (skip getFeeData)\n tx.type = 2;\n }\n else if (tx.type === 0 || tx.type === 1) {\n // Explicit Legacy or EIP-2930 transaction\n // Populate missing gasPrice\n if (tx.gasPrice == null) {\n tx.gasPrice = this.getGasPrice();\n }\n }\n else {\n // We need to get fee data to determine things\n const feeData = yield this.getFeeData();\n if (tx.type == null) {\n // We need to auto-detect the intended type of this transaction...\n if (feeData.maxFeePerGas != null && feeData.maxPriorityFeePerGas != null) {\n // The network supports EIP-1559!\n // Upgrade transaction from null to eip-1559\n tx.type = 2;\n if (tx.gasPrice != null) {\n // Using legacy gasPrice property on an eip-1559 network,\n // so use gasPrice as both fee properties\n const gasPrice = tx.gasPrice;\n delete tx.gasPrice;\n tx.maxFeePerGas = gasPrice;\n tx.maxPriorityFeePerGas = gasPrice;\n }\n else {\n // Populate missing fee data\n if (tx.maxFeePerGas == null) {\n tx.maxFeePerGas = feeData.maxFeePerGas;\n }\n if (tx.maxPriorityFeePerGas == null) {\n tx.maxPriorityFeePerGas = feeData.maxPriorityFeePerGas;\n }\n }\n }\n else if (feeData.gasPrice != null) {\n // Network doesn't support EIP-1559...\n // ...but they are trying to use EIP-1559 properties\n if (hasEip1559) {\n logger.throwError(\"network does not support EIP-1559\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"populateTransaction\"\n });\n }\n // Populate missing fee data\n if (tx.gasPrice == null) {\n tx.gasPrice = feeData.gasPrice;\n }\n // Explicitly set untyped transaction to legacy\n tx.type = 0;\n }\n else {\n // getFeeData has failed us.\n logger.throwError(\"failed to get consistent fee data\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"signer.getFeeData\"\n });\n }\n }\n else if (tx.type === 2) {\n // Explicitly using EIP-1559\n // Populate missing fee data\n if (tx.maxFeePerGas == null) {\n tx.maxFeePerGas = feeData.maxFeePerGas;\n }\n if (tx.maxPriorityFeePerGas == null) {\n tx.maxPriorityFeePerGas = feeData.maxPriorityFeePerGas;\n }\n }\n }\n if (tx.nonce == null) {\n tx.nonce = this.getTransactionCount(\"pending\");\n }\n if (tx.gasLimit == null) {\n tx.gasLimit = this.estimateGas(tx).catch((error) => {\n if (forwardErrors.indexOf(error.code) >= 0) {\n throw error;\n }\n return logger.throwError(\"cannot estimate gas; transaction may fail or may require manual gas limit\", Logger.errors.UNPREDICTABLE_GAS_LIMIT, {\n error: error,\n tx: tx\n });\n });\n }\n if (tx.chainId == null) {\n tx.chainId = this.getChainId();\n }\n else {\n tx.chainId = Promise.all([\n Promise.resolve(tx.chainId),\n this.getChainId()\n ]).then((results) => {\n if (results[1] !== 0 && results[0] !== results[1]) {\n logger.throwArgumentError(\"chainId address mismatch\", \"transaction\", transaction);\n }\n return results[0];\n });\n }\n return yield resolveProperties(tx);\n });\n }\n ///////////////////\n // Sub-classes SHOULD leave these alone\n _checkProvider(operation) {\n if (!this.provider) {\n logger.throwError(\"missing provider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: (operation || \"_checkProvider\")\n });\n }\n }\n static isSigner(value) {\n return !!(value && value._isSigner);\n }\n}\nexport class VoidSigner extends Signer {\n constructor(address, provider) {\n super();\n defineReadOnly(this, \"address\", address);\n defineReadOnly(this, \"provider\", provider || null);\n }\n getAddress() {\n return Promise.resolve(this.address);\n }\n _fail(message, operation) {\n return Promise.resolve().then(() => {\n logger.throwError(message, Logger.errors.UNSUPPORTED_OPERATION, { operation: operation });\n });\n }\n signMessage(message) {\n return this._fail(\"VoidSigner cannot sign messages\", \"signMessage\");\n }\n signTransaction(transaction) {\n return this._fail(\"VoidSigner cannot sign transactions\", \"signTransaction\");\n }\n _signTypedData(domain, types, value) {\n return this._fail(\"VoidSigner cannot sign typed data\", \"signTypedData\");\n }\n connect(provider) {\n return new VoidSigner(this.address, provider);\n }\n}\n//# sourceMappingURL=index.js.map","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","import BN from 'bn.js';\nimport hash from 'hash.js';\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createCommonjsModule(fn, basedir, module) {\n\treturn module = {\n\t\tpath: basedir,\n\t\texports: {},\n\t\trequire: function (path, base) {\n\t\t\treturn commonjsRequire(path, (base === undefined || base === null) ? module.path : base);\n\t\t}\n\t}, fn(module, module.exports), module.exports;\n}\n\nfunction getDefaultExportFromNamespaceIfPresent (n) {\n\treturn n && Object.prototype.hasOwnProperty.call(n, 'default') ? n['default'] : n;\n}\n\nfunction getDefaultExportFromNamespaceIfNotNamed (n) {\n\treturn n && Object.prototype.hasOwnProperty.call(n, 'default') && Object.keys(n).length === 1 ? n['default'] : n;\n}\n\nfunction getAugmentedNamespace(n) {\n\tif (n.__esModule) return n;\n\tvar a = Object.defineProperty({}, '__esModule', {value: true});\n\tObject.keys(n).forEach(function (k) {\n\t\tvar d = Object.getOwnPropertyDescriptor(n, k);\n\t\tObject.defineProperty(a, k, d.get ? d : {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn n[k];\n\t\t\t}\n\t\t});\n\t});\n\treturn a;\n}\n\nfunction commonjsRequire () {\n\tthrow new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs');\n}\n\nvar minimalisticAssert = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n\nvar utils_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n});\n\nvar utils_1$1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar utils = exports;\n\n\n\n\nutils.assert = minimalisticAssert;\nutils.toArray = utils_1.toArray;\nutils.zero2 = utils_1.zero2;\nutils.toHex = utils_1.toHex;\nutils.encode = utils_1.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n});\n\n'use strict';\n\n\n\nvar getNAF = utils_1$1.getNAF;\nvar getJSF = utils_1$1.getJSF;\nvar assert$1 = utils_1$1.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nvar base = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert$1(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert$1(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils_1$1.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert$1(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert$1(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils_1$1.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n\nvar inherits_browser = createCommonjsModule(function (module) {\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n };\n}\n});\n\n'use strict';\n\n\n\n\n\n\nvar assert$2 = utils_1$1.assert;\n\nfunction ShortCurve(conf) {\n base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits_browser(ShortCurve, base);\nvar short_1 = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert$2(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits_browser(Point, base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits_browser(JPoint, base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nvar curve_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar curve = exports;\n\ncurve.base = base;\ncurve.short = short_1;\ncurve.mont = /*RicMoo:ethers:require(./mont)*/(null);\ncurve.edwards = /*RicMoo:ethers:require(./edwards)*/(null);\n});\n\nvar curves_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar curves = exports;\n\n\n\n\n\nvar assert = utils_1$1.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve_1.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve_1.edwards(options);\n else\n this.curve = new curve_1.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = /*RicMoo:ethers:require(./precomputed/secp256k1)*/(null).crash();\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n});\n\n'use strict';\n\n\n\n\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils_1.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils_1.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils_1.toArray(options.pers, options.persEnc || 'hex');\n minimalisticAssert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nvar hmacDrbg = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils_1.toArray(entropy, entropyEnc);\n add = utils_1.toArray(add, addEnc);\n\n minimalisticAssert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils_1.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils_1.encode(res, enc);\n};\n\n'use strict';\n\n\n\nvar assert$3 = utils_1$1.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nvar key = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert$3(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert$3(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert$3(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n\n'use strict';\n\n\n\n\nvar assert$4 = utils_1$1.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert$4(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nvar signature = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils_1$1.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils_1$1.encode(res, enc);\n};\n\n'use strict';\n\n\n\n\n\nvar rand = /*RicMoo:ethers:require(brorand)*/(function() { throw new Error('unsupported'); });\nvar assert$5 = utils_1$1.assert;\n\n\n\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert$5(Object.prototype.hasOwnProperty.call(curves_1, options),\n 'Unknown curve ' + options);\n\n options = curves_1[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves_1.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nvar ec = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new key(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return key.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return key.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new hmacDrbg({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new hmacDrbg({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature$1, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature$1 = new signature(signature$1, 'hex');\n\n // Perform primitive values validation\n var r = signature$1.r;\n var s = signature$1.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature$1, j, enc) {\n assert$5((3 & j) === j, 'The recovery param is more than two bits');\n signature$1 = new signature(signature$1, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature$1.r;\n var s = signature$1.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature$1.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature$1, Q, enc) {\n signature$1 = new signature(signature$1, enc);\n if (signature$1.recoveryParam !== null)\n return signature$1.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature$1, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n\nvar elliptic_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = /*RicMoo:ethers*/{ version: \"6.5.4\" }.version;\nelliptic.utils = utils_1$1;\nelliptic.rand = /*RicMoo:ethers:require(brorand)*/(function() { throw new Error('unsupported'); });\nelliptic.curve = curve_1;\nelliptic.curves = curves_1;\n\n// Protocols\nelliptic.ec = ec;\nelliptic.eddsa = /*RicMoo:ethers:require(./elliptic/eddsa)*/(null);\n});\n\nvar EC$1 = elliptic_1.ec;\n\nexport { EC$1 as EC };\n//# sourceMappingURL=elliptic.js.map\n","export const version = \"signing-key/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { EC } from \"./elliptic\";\nimport { arrayify, hexDataLength, hexlify, hexZeroPad, splitSignature } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nlet _curve = null;\nfunction getCurve() {\n if (!_curve) {\n _curve = new EC(\"secp256k1\");\n }\n return _curve;\n}\nexport class SigningKey {\n constructor(privateKey) {\n defineReadOnly(this, \"curve\", \"secp256k1\");\n defineReadOnly(this, \"privateKey\", hexlify(privateKey));\n if (hexDataLength(this.privateKey) !== 32) {\n logger.throwArgumentError(\"invalid private key\", \"privateKey\", \"[[ REDACTED ]]\");\n }\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n defineReadOnly(this, \"publicKey\", \"0x\" + keyPair.getPublic(false, \"hex\"));\n defineReadOnly(this, \"compressedPublicKey\", \"0x\" + keyPair.getPublic(true, \"hex\"));\n defineReadOnly(this, \"_isSigningKey\", true);\n }\n _addPoint(other) {\n const p0 = getCurve().keyFromPublic(arrayify(this.publicKey));\n const p1 = getCurve().keyFromPublic(arrayify(other));\n return \"0x\" + p0.pub.add(p1.pub).encodeCompressed(\"hex\");\n }\n signDigest(digest) {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const digestBytes = arrayify(digest);\n if (digestBytes.length !== 32) {\n logger.throwArgumentError(\"bad digest length\", \"digest\", digest);\n }\n const signature = keyPair.sign(digestBytes, { canonical: true });\n return splitSignature({\n recoveryParam: signature.recoveryParam,\n r: hexZeroPad(\"0x\" + signature.r.toString(16), 32),\n s: hexZeroPad(\"0x\" + signature.s.toString(16), 32),\n });\n }\n computeSharedSecret(otherKey) {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const otherKeyPair = getCurve().keyFromPublic(arrayify(computePublicKey(otherKey)));\n return hexZeroPad(\"0x\" + keyPair.derive(otherKeyPair.getPublic()).toString(16), 32);\n }\n static isSigningKey(value) {\n return !!(value && value._isSigningKey);\n }\n}\nexport function recoverPublicKey(digest, signature) {\n const sig = splitSignature(signature);\n const rs = { r: arrayify(sig.r), s: arrayify(sig.s) };\n return \"0x\" + getCurve().recoverPubKey(arrayify(digest), rs, sig.recoveryParam).encode(\"hex\", false);\n}\nexport function computePublicKey(key, compressed) {\n const bytes = arrayify(key);\n if (bytes.length === 32) {\n const signingKey = new SigningKey(bytes);\n if (compressed) {\n return \"0x\" + getCurve().keyFromPrivate(bytes).getPublic(true, \"hex\");\n }\n return signingKey.publicKey;\n }\n else if (bytes.length === 33) {\n if (compressed) {\n return hexlify(bytes);\n }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(false, \"hex\");\n }\n else if (bytes.length === 65) {\n if (!compressed) {\n return hexlify(bytes);\n }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(true, \"hex\");\n }\n return logger.throwArgumentError(\"invalid public or private key\", \"key\", \"[REDACTED]\");\n}\n//# sourceMappingURL=index.js.map","export const version = \"transactions/5.7.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, hexConcat, hexDataLength, hexDataSlice, hexlify, hexZeroPad, isBytesLike, splitSignature, stripZeros, } from \"@ethersproject/bytes\";\nimport { Zero } from \"@ethersproject/constants\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { checkProperties } from \"@ethersproject/properties\";\nimport * as RLP from \"@ethersproject/rlp\";\nimport { computePublicKey, recoverPublicKey } from \"@ethersproject/signing-key\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport var TransactionTypes;\n(function (TransactionTypes) {\n TransactionTypes[TransactionTypes[\"legacy\"] = 0] = \"legacy\";\n TransactionTypes[TransactionTypes[\"eip2930\"] = 1] = \"eip2930\";\n TransactionTypes[TransactionTypes[\"eip1559\"] = 2] = \"eip1559\";\n})(TransactionTypes || (TransactionTypes = {}));\n;\n///////////////////////////////\nfunction handleAddress(value) {\n if (value === \"0x\") {\n return null;\n }\n return getAddress(value);\n}\nfunction handleNumber(value) {\n if (value === \"0x\") {\n return Zero;\n }\n return BigNumber.from(value);\n}\n// Legacy Transaction Fields\nconst transactionFields = [\n { name: \"nonce\", maxLength: 32, numeric: true },\n { name: \"gasPrice\", maxLength: 32, numeric: true },\n { name: \"gasLimit\", maxLength: 32, numeric: true },\n { name: \"to\", length: 20 },\n { name: \"value\", maxLength: 32, numeric: true },\n { name: \"data\" },\n];\nconst allowedTransactionKeys = {\n chainId: true, data: true, gasLimit: true, gasPrice: true, nonce: true, to: true, type: true, value: true\n};\nexport function computeAddress(key) {\n const publicKey = computePublicKey(key);\n return getAddress(hexDataSlice(keccak256(hexDataSlice(publicKey, 1)), 12));\n}\nexport function recoverAddress(digest, signature) {\n return computeAddress(recoverPublicKey(arrayify(digest), signature));\n}\nfunction formatNumber(value, name) {\n const result = stripZeros(BigNumber.from(value).toHexString());\n if (result.length > 32) {\n logger.throwArgumentError(\"invalid length for \" + name, (\"transaction:\" + name), value);\n }\n return result;\n}\nfunction accessSetify(addr, storageKeys) {\n return {\n address: getAddress(addr),\n storageKeys: (storageKeys || []).map((storageKey, index) => {\n if (hexDataLength(storageKey) !== 32) {\n logger.throwArgumentError(\"invalid access list storageKey\", `accessList[${addr}:${index}]`, storageKey);\n }\n return storageKey.toLowerCase();\n })\n };\n}\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[] ]\", `value[${index}]`, set);\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}\nfunction formatAccessList(value) {\n return accessListify(value).map((set) => [set.address, set.storageKeys]);\n}\nfunction _serializeEip1559(transaction, signature) {\n // If there is an explicit gasPrice, make sure it matches the\n // EIP-1559 fees; otherwise they may not understand what they\n // think they are setting in terms of fee.\n if (transaction.gasPrice != null) {\n const gasPrice = BigNumber.from(transaction.gasPrice);\n const maxFeePerGas = BigNumber.from(transaction.maxFeePerGas || 0);\n if (!gasPrice.eq(maxFeePerGas)) {\n logger.throwArgumentError(\"mismatch EIP-1559 gasPrice != maxFeePerGas\", \"tx\", {\n gasPrice, maxFeePerGas\n });\n }\n }\n const fields = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.maxPriorityFeePerGas || 0, \"maxPriorityFeePerGas\"),\n formatNumber(transaction.maxFeePerGas || 0, \"maxFeePerGas\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to) : \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n return hexConcat([\"0x02\", RLP.encode(fields)]);\n}\nfunction _serializeEip2930(transaction, signature) {\n const fields = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.gasPrice || 0, \"gasPrice\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to) : \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n return hexConcat([\"0x01\", RLP.encode(fields)]);\n}\n// Legacy Transactions and EIP-155\nfunction _serialize(transaction, signature) {\n checkProperties(transaction, allowedTransactionKeys);\n const raw = [];\n transactionFields.forEach(function (fieldInfo) {\n let value = transaction[fieldInfo.name] || ([]);\n const options = {};\n if (fieldInfo.numeric) {\n options.hexPad = \"left\";\n }\n value = arrayify(hexlify(value, options));\n // Fixed-width field\n if (fieldInfo.length && value.length !== fieldInfo.length && value.length > 0) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n // Variable-width (with a maximum)\n if (fieldInfo.maxLength) {\n value = stripZeros(value);\n if (value.length > fieldInfo.maxLength) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n }\n raw.push(hexlify(value));\n });\n let chainId = 0;\n if (transaction.chainId != null) {\n // A chainId was provided; if non-zero we'll use EIP-155\n chainId = transaction.chainId;\n if (typeof (chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid transaction.chainId\", \"transaction\", transaction);\n }\n }\n else if (signature && !isBytesLike(signature) && signature.v > 28) {\n // No chainId provided, but the signature is signing with EIP-155; derive chainId\n chainId = Math.floor((signature.v - 35) / 2);\n }\n // We have an EIP-155 transaction (chainId was specified and non-zero)\n if (chainId !== 0) {\n raw.push(hexlify(chainId)); // @TODO: hexValue?\n raw.push(\"0x\");\n raw.push(\"0x\");\n }\n // Requesting an unsigned transaction\n if (!signature) {\n return RLP.encode(raw);\n }\n // The splitSignature will ensure the transaction has a recoveryParam in the\n // case that the signTransaction function only adds a v.\n const sig = splitSignature(signature);\n // We pushed a chainId and null r, s on for hashing only; remove those\n let v = 27 + sig.recoveryParam;\n if (chainId !== 0) {\n raw.pop();\n raw.pop();\n raw.pop();\n v += chainId * 2 + 8;\n // If an EIP-155 v (directly or indirectly; maybe _vs) was provided, check it!\n if (sig.v > 28 && sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n }\n else if (sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n raw.push(hexlify(v));\n raw.push(stripZeros(arrayify(sig.r)));\n raw.push(stripZeros(arrayify(sig.s)));\n return RLP.encode(raw);\n}\nexport function serialize(transaction, signature) {\n // Legacy and EIP-155 Transactions\n if (transaction.type == null || transaction.type === 0) {\n if (transaction.accessList != null) {\n logger.throwArgumentError(\"untyped transactions do not support accessList; include type: 1\", \"transaction\", transaction);\n }\n return _serialize(transaction, signature);\n }\n // Typed Transactions (EIP-2718)\n switch (transaction.type) {\n case 1:\n return _serializeEip2930(transaction, signature);\n case 2:\n return _serializeEip1559(transaction, signature);\n default:\n break;\n }\n return logger.throwError(`unsupported transaction type: ${transaction.type}`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"serializeTransaction\",\n transactionType: transaction.type\n });\n}\nfunction _parseEipSignature(tx, fields, serialize) {\n try {\n const recid = handleNumber(fields[0]).toNumber();\n if (recid !== 0 && recid !== 1) {\n throw new Error(\"bad recid\");\n }\n tx.v = recid;\n }\n catch (error) {\n logger.throwArgumentError(\"invalid v for transaction type: 1\", \"v\", fields[0]);\n }\n tx.r = hexZeroPad(fields[1], 32);\n tx.s = hexZeroPad(fields[2], 32);\n try {\n const digest = keccak256(serialize(tx));\n tx.from = recoverAddress(digest, { r: tx.r, s: tx.s, recoveryParam: tx.v });\n }\n catch (error) { }\n}\nfunction _parseEip1559(payload) {\n const transaction = RLP.decode(payload.slice(1));\n if (transaction.length !== 9 && transaction.length !== 12) {\n logger.throwArgumentError(\"invalid component count for transaction type: 2\", \"payload\", hexlify(payload));\n }\n const maxPriorityFeePerGas = handleNumber(transaction[2]);\n const maxFeePerGas = handleNumber(transaction[3]);\n const tx = {\n type: 2,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n maxPriorityFeePerGas: maxPriorityFeePerGas,\n maxFeePerGas: maxFeePerGas,\n gasPrice: null,\n gasLimit: handleNumber(transaction[4]),\n to: handleAddress(transaction[5]),\n value: handleNumber(transaction[6]),\n data: transaction[7],\n accessList: accessListify(transaction[8]),\n };\n // Unsigned EIP-1559 Transaction\n if (transaction.length === 9) {\n return tx;\n }\n tx.hash = keccak256(payload);\n _parseEipSignature(tx, transaction.slice(9), _serializeEip1559);\n return tx;\n}\nfunction _parseEip2930(payload) {\n const transaction = RLP.decode(payload.slice(1));\n if (transaction.length !== 8 && transaction.length !== 11) {\n logger.throwArgumentError(\"invalid component count for transaction type: 1\", \"payload\", hexlify(payload));\n }\n const tx = {\n type: 1,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n gasPrice: handleNumber(transaction[2]),\n gasLimit: handleNumber(transaction[3]),\n to: handleAddress(transaction[4]),\n value: handleNumber(transaction[5]),\n data: transaction[6],\n accessList: accessListify(transaction[7])\n };\n // Unsigned EIP-2930 Transaction\n if (transaction.length === 8) {\n return tx;\n }\n tx.hash = keccak256(payload);\n _parseEipSignature(tx, transaction.slice(8), _serializeEip2930);\n return tx;\n}\n// Legacy Transactions and EIP-155\nfunction _parse(rawTransaction) {\n const transaction = RLP.decode(rawTransaction);\n if (transaction.length !== 9 && transaction.length !== 6) {\n logger.throwArgumentError(\"invalid raw transaction\", \"rawTransaction\", rawTransaction);\n }\n const tx = {\n nonce: handleNumber(transaction[0]).toNumber(),\n gasPrice: handleNumber(transaction[1]),\n gasLimit: handleNumber(transaction[2]),\n to: handleAddress(transaction[3]),\n value: handleNumber(transaction[4]),\n data: transaction[5],\n chainId: 0\n };\n // Legacy unsigned transaction\n if (transaction.length === 6) {\n return tx;\n }\n try {\n tx.v = BigNumber.from(transaction[6]).toNumber();\n }\n catch (error) {\n // @TODO: What makes snese to do? The v is too big\n return tx;\n }\n tx.r = hexZeroPad(transaction[7], 32);\n tx.s = hexZeroPad(transaction[8], 32);\n if (BigNumber.from(tx.r).isZero() && BigNumber.from(tx.s).isZero()) {\n // EIP-155 unsigned transaction\n tx.chainId = tx.v;\n tx.v = 0;\n }\n else {\n // Signed Transaction\n tx.chainId = Math.floor((tx.v - 35) / 2);\n if (tx.chainId < 0) {\n tx.chainId = 0;\n }\n let recoveryParam = tx.v - 27;\n const raw = transaction.slice(0, 6);\n if (tx.chainId !== 0) {\n raw.push(hexlify(tx.chainId));\n raw.push(\"0x\");\n raw.push(\"0x\");\n recoveryParam -= tx.chainId * 2 + 8;\n }\n const digest = keccak256(RLP.encode(raw));\n try {\n tx.from = recoverAddress(digest, { r: hexlify(tx.r), s: hexlify(tx.s), recoveryParam: recoveryParam });\n }\n catch (error) { }\n tx.hash = keccak256(rawTransaction);\n }\n tx.type = null;\n return tx;\n}\nexport function parse(rawTransaction) {\n const payload = arrayify(rawTransaction);\n // Legacy and EIP-155 Transactions\n if (payload[0] > 0x7f) {\n return _parse(payload);\n }\n // Typed Transaction (EIP-2718)\n switch (payload[0]) {\n case 1:\n return _parseEip2930(payload);\n case 2:\n return _parseEip1559(payload);\n default:\n break;\n }\n return logger.throwError(`unsupported transaction type: ${payload[0]}`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"parseTransaction\",\n transactionType: payload[0]\n });\n}\n//# sourceMappingURL=index.js.map"],"names":["version","__awaiter","this","thisArg","_arguments","P","generator","adopt","value","resolve","reject","fulfilled","step","e","rejected","result","logger","Logger","defineReadOnly","object","name","getStatic","ctor","key","i","resolveProperties","promises","v","accum","checkProperties","properties","shallowCopy","opaque","_isFrozen","keys","_deepCopy","item","deepCopy","Description","info","INPUT_ERROR","FINALIZE_ERROR","WINDOW","root","WEB_WORKER","NODE_JS","global","COMMON_JS","module","ARRAY_BUFFER","HEX_CHARS","SHAKE_PADDING","CSHAKE_PADDING","KECCAK_PADDING","PADDING","SHIFT","RC","BITS","SHAKE_BITS","OUTPUT_TYPES","CSHAKE_BYTEPAD","obj","createOutputMethod","bits","padding","outputType","message","Keccak","createShakeOutputMethod","outputBits","createCshakeOutputMethod","n","s","methods","createKmacOutputMethod","createOutputMethods","method","createMethod","type","createShakeMethod","createCshakeMethod","w","createKmacMethod","Kmac","algorithms","methodNames","algorithm","j","methodName","newMethodName","notString","blocks","byteCount","length","blockCount","index","code","f","x","right","o","bytes","str","strs","paddingBytes","zeros","outputBlocks","extraBytes","hex","block","buffer","array","offset","h","l","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","b10","b11","b12","b13","b14","b15","b16","b17","b18","b19","b20","b21","b22","b23","b24","b25","b26","b27","b28","b29","b30","b31","b32","b33","b34","b35","b36","b37","b38","b39","b40","b41","b42","b43","b44","b45","b46","b47","b48","b49","keccak256","data","sha3","arrayify","arrayifyInteger","unarrayifyInteger","_encode","payload","child","isBytesLike","encode","hexlify","_decodeChildren","childOffset","decoded","_decode","lengthLength","decode","getChecksumAddress","address","isHexString","chars","expanded","hashed","MAX_SAFE_INTEGER","log10","ibanLookup","safeDigits","ibanChecksum","c","checksum","getAddress","_base36To16","getContractAddress","transaction","from","nonce","stripZeros","BigNumber","hexDataSlice","NegativeOne","Zero","One","MaxUint256","UnicodeNormalizationForm","Utf8ErrorReason","errorFunc","reason","output","badCodepoint","ignoreFunc","replaceFunc","Utf8ErrorFuncs","getUtf8CodePoints","onError","extraLength","overlongMask","res","nextChar","toUtf8Bytes","form","pair","_toUtf8String","codePoints","codePoint","toUtf8String","toUtf8CodePoints","id","text","ForkEvent","Provider","gasPrice","error","lastBaseFeePerGas","maxFeePerGas","maxPriorityFeePerGas","eventName","listener","allowedTransactionKeys","forwardErrors","Signer","blockTag","tx","signedTx","to","hasEip1559","feeData","results","operation","VoidSigner","provider","domain","types","minimalisticAssert","assert","val","msg","inherits_browserModule","superCtor","TempCtor","require$$0","inherits","require$$1","utils","isSurrogatePair","toArray","enc","p","toHex","zero2","htonl","toHex32","endian","zero8","word","join32","start","end","len","k","split32","m","rotr32","b","rotl32","sum32","a","sum32_3","sum32_4","d","sum32_5","sum64","buf","pos","ah","al","bh","bl","lo","hi","sum64_hi","sum64_lo","sum64_4_hi","ch","cl","dh","dl","carry","sum64_4_lo","sum64_5_hi","eh","el","sum64_5_lo","rotr64_hi","num","r","rotr64_lo","shr64_hi","shr64_lo","BlockHash","common","t","ft_1","y","z","ch32","p32","maj32","s0_256","s1_256","g0_256","g1_256","shaCommon","require$$2","sha1_K","SHA1","_1","W","require$$3","sha256_K","SHA256","_256","g","T1","T2","SHA224","_224","sha512_K","SHA512","_512","c0_hi","g1_512_hi","c0_lo","g1_512_lo","c1_hi","c1_lo","c2_hi","g0_512_hi","c2_lo","g0_512_lo","c3_hi","c3_lo","fh","fl","gh","gl","hh","hl","s1_512_hi","s1_512_lo","ch64_hi","ch64_lo","c4_hi","c4_lo","T1_hi","T1_lo","s0_512_hi","s0_512_lo","maj64_hi","maj64_lo","T2_hi","T2_lo","xh","xl","yh","yl","zh","zl","SHA384","_384","sha","require$$4","RIPEMD160","ripemd","A","B","C","D","E","Ah","Bh","Ch","Dh","Eh","T","K","rh","Kh","sh","Hmac","hash","hmac","exports","createCommonjsModule","fn","basedir","path","base","commonjsRequire","utils_1","arr","utils_1$1","getNAF","naf","ws","mod","getJSF","k1","k2","jsf","d1","d2","m8","m14","m24","u1","u2","cachedProperty","computer","parseBytes","intFromLE","BN","assert$1","BaseCurve","conf","adjustCount","doubles","I","repr","nafW","nafPoints","wnd","acc","defW","points","coeffs","jacobianResult","wndWidth","max","comb","ja","jb","tmp","zero","BasePoint","curve","compact","power","precomputed","dbl","inherits_browser","assert$2","ShortCurve","short_1","beta","lambda","betas","lambdas","basis","vec","red","tinv","ntinv","l1","l2","aprxSqrt","u","x1","y1","x2","y2","a0","a1","a2","prevR","q","len1","len2","v1","v2","p1","p2","q1","q2","odd","isOdd","point","ax","rhs","npoints","ncoeffs","split","Point","isRed","pre","endoMul","obj2point","nx","ny","ys1","dyinv","_precompute","negate","JPoint","zinv","zinv2","ay","pz2","z2","s1","s2","h2","h3","nz","pow","jx","jy","jz","jz4","jyd","jx2","jyd2","jyd4","t1","t2","dny","xx","yy","yyyy","yyyy8","delta","gamma","alpha","beta4","beta8","ggamma8","jy2","jxd4","jyd8","zz","mm","ee","yyu4","kbase","z3","pz3","zs","rx","xc","curve_1","curves_1","curves","PresetCurve","options","defineCurve","HmacDRBG","entropy","pers","hmacDrbg","seed","kmac","entropyEnc","add","addEnc","temp","assert$3","KeyPair","ec","pub","priv","signature","assert$4","Signature","Position","getLength","initial","octetLen","off","rmPadding","rlen","slen","constructLength","octets","backHalf","rand","assert$5","EC","drbg","ns2","truncOnly","bkey","ns1","iter","kp","kpX","recoveryParam","signature$1","sinv","isYOdd","isSecondKey","rInv","Q","Qprime","elliptic_1","elliptic","EC$1","_curve","getCurve","SigningKey","privateKey","hexDataLength","keyPair","other","p0","digest","digestBytes","splitSignature","hexZeroPad","otherKey","otherKeyPair","computePublicKey","recoverPublicKey","sig","rs","compressed","signingKey","TransactionTypes","handleAddress","handleNumber","computeAddress","publicKey","recoverAddress","formatNumber","accessSetify","addr","storageKeys","storageKey","accessListify","set","formatAccessList","_serializeEip1559","fields","hexConcat","RLP.encode","_serializeEip2930","_parseEipSignature","serialize","recid","_parseEip1559","RLP.decode","_parseEip2930","_parse","rawTransaction","raw","parse"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34]}